Enroll.vue 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  1. <template>
  2. <div class="enroll-all">
  3. <div class="enroll-form-box">
  4. <div class="enroll-title">员工注册</div>
  5. <el-form
  6. :model="ruleForm"
  7. :rules="rules"
  8. ref="ruleForm"
  9. label-width="100px"
  10. class="demo-ruleForm"
  11. >
  12. <div class="form-li">
  13. <el-form-item label="中文名称" prop="mandarinName">
  14. <el-input v-model="ruleForm.mandarinName"></el-input>
  15. </el-form-item>
  16. <el-form-item label="英文名称" prop="eflName">
  17. <el-input v-model="ruleForm.eflName"></el-input>
  18. </el-form-item>
  19. </div>
  20. <div class="form-li">
  21. <el-form-item label="邮箱" prop="email">
  22. <el-input v-model="ruleForm.email"></el-input>
  23. </el-form-item>
  24. <el-form-item label="性别" prop="sex">
  25. <el-radio-group v-model="ruleForm.sex">
  26. <el-radio label="男"></el-radio>
  27. <el-radio label="女"></el-radio>
  28. </el-radio-group>
  29. </el-form-item>
  30. </div>
  31. <div class="form-li">
  32. <el-form-item label="手机号" prop="phone">
  33. <el-input v-model="ruleForm.phone"></el-input>
  34. </el-form-item>
  35. <el-form-item label="紧急电话" prop="urgentphone">
  36. <el-input v-model="ruleForm.urgentphone"></el-input>
  37. </el-form-item>
  38. </div>
  39. <div class="form-li">
  40. <el-form-item label="密码" prop="pass">
  41. <el-input v-model="ruleForm.pass"></el-input>
  42. </el-form-item>
  43. <el-form-item label="确认密码" prop="checkPass">
  44. <el-input v-model="ruleForm.checkPass"></el-input>
  45. </el-form-item>
  46. </div>
  47. <div class="form-li">
  48. <el-form-item label="身份证号" prop="IDnumber">
  49. <el-input v-model="ruleForm.IDnumber"></el-input>
  50. </el-form-item>
  51. <el-form-item label="出生日期" prop="datebirth">
  52. <el-input v-model="ruleForm.datebirth"></el-input>
  53. </el-form-item>
  54. </div>
  55. <div class="form-li">
  56. <el-form-item label="学历" prop="educated">
  57. <el-input v-model="ruleForm.educated"></el-input>
  58. </el-form-item>
  59. <el-form-item label="专业" prop="specialized">
  60. <el-input v-model="ruleForm.specialized"></el-input>
  61. </el-form-item>
  62. <el-form-item label="毕业院校" prop="school">
  63. <el-input v-model="ruleForm.school"></el-input>
  64. </el-form-item>
  65. <el-form-item label="统招/成教" prop="recruitment">
  66. <el-input v-model="ruleForm.recruitment"></el-input>
  67. </el-form-item>
  68. <el-form-item label="婚姻状况" prop="maritalstatus">
  69. <el-input v-model="ruleForm.maritalstatus"></el-input>
  70. </el-form-item>
  71. <el-form-item label="家庭地址" prop="address">
  72. <el-input v-model="ruleForm.address"></el-input>
  73. </el-form-item>
  74. </div>
  75. <div class="form-li">
  76. <el-form-item label="所属公司" prop="corporation">
  77. <el-select
  78. v-model="ruleForm.corporation"
  79. placeholder="请选择所属公司"
  80. >
  81. <el-option label="A" value="A"></el-option>
  82. <el-option label="B" value="B"></el-option>
  83. </el-select>
  84. </el-form-item>
  85. <el-form-item label="所属部门" prop="division">
  86. <el-select v-model="ruleForm.division" placeholder="请选择所属部门">
  87. <el-option label="A" value="A"></el-option>
  88. <el-option label="B" value="B"></el-option>
  89. </el-select>
  90. </el-form-item>
  91. </div>
  92. <el-form-item label="工作经历" prop="desc">
  93. <el-input type="textarea" v-model="ruleForm.desc"></el-input>
  94. </el-form-item>
  95. <div class="enroll-btn">
  96. <el-button type="primary" @click="submitForm('ruleForm')"
  97. >立即注册</el-button
  98. >
  99. <el-button @click="resetForm('ruleForm')">重置</el-button>
  100. </div>
  101. </el-form>
  102. </div>
  103. </div>
  104. </template>
  105. <script>
  106. export default {
  107. data() {
  108. var validatePass = (rule, value, callback) => {
  109. if (value === "") {
  110. callback(new Error("请输入密码"));
  111. } else {
  112. if (this.ruleForm.checkPass !== "") {
  113. this.$refs.ruleForm.validateField("checkPass");
  114. }
  115. callback();
  116. }
  117. };
  118. var validatePass2 = (rule, value, callback) => {
  119. if (value === "") {
  120. callback(new Error("请再次输入密码"));
  121. } else if (value !== this.ruleForm.pass) {
  122. callback(new Error("两次输入密码不一致!"));
  123. } else {
  124. callback();
  125. }
  126. };
  127. return {
  128. ruleForm: {
  129. mandarinName: "",
  130. eflName: "",
  131. sex: "",
  132. email: "",
  133. phone: "",
  134. urgentphone: "",
  135. pass: "",
  136. checkPass: "",
  137. IDnumber: "",
  138. educated: "",
  139. specialized: "",
  140. school: "",
  141. recruitment: "",
  142. datebirth: "",
  143. maritalstatus: "",
  144. address: "",
  145. corporation: "",
  146. division: "",
  147. desc: "",
  148. },
  149. rules: {
  150. mandarinName: [
  151. { required: true, message: "中文名称", trigger: "blur" },
  152. { min: 2, max: 6, message: "长度在 3 到 5 个字符", trigger: "blur" },
  153. ],
  154. eflName: [
  155. { required: true, message: "英文名称", trigger: "blur" },
  156. { min: 0, max: 10, message: "长度在 3 到 5 个字符", trigger: "blur" },
  157. ],
  158. sex: [{ required: true, message: "请选择性别", trigger: "change" }],
  159. email: [
  160. { required: true, message: "请输入邮箱地址", trigger: "blur" },
  161. {
  162. type: "email",
  163. message: "请输入正确的邮箱地址",
  164. trigger: ["blur", "change"],
  165. },
  166. ],
  167. phone: [
  168. { required: true, message: "手机号必填", trigger: "blur" },
  169. {
  170. pattern: /^1[3456789]\d{9}$/,
  171. message: "手机号码格式不正确",
  172. trigger: "blur",
  173. },
  174. ],
  175. urgentphone: [
  176. { required: true, message: "紧急号码必填", trigger: "blur" },
  177. {
  178. pattern: /^1[3456789]\d{9}$/,
  179. message: "紧急号码格式不正确",
  180. trigger: "blur",
  181. },
  182. ],
  183. pass: [
  184. { required: true, validator: validatePass, trigger: "blur" },
  185. {
  186. min: 6,
  187. max: 18,
  188. message: "长度在 6 到 18 个字符",
  189. trigger: "blur",
  190. },
  191. ],
  192. checkPass: [
  193. { required: true, validator: validatePass2, trigger: "blur" },
  194. {
  195. min: 6,
  196. max: 18,
  197. message: "长度在 6 到 18 个字符",
  198. trigger: "blur",
  199. },
  200. ],
  201. IDnumber: [
  202. { required: true, message: "请填写证件号码", trigger: "blur" },
  203. {
  204. pattern:
  205. /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$)/,
  206. message: "证件号码格式有误!",
  207. trigger: "blur",
  208. },
  209. ],
  210. datebirth: [
  211. {
  212. required: true,
  213. message: "请填写证件号码匹配出生日期",
  214. trigger: "blur",
  215. },
  216. ],
  217. educated: [{ required: true, message: "请填写学历", trigger: "blur" }],
  218. specialized: [
  219. { required: true, message: "请填写专业", trigger: "blur" },
  220. ],
  221. school: [
  222. { required: true, message: "请填写毕业院校", trigger: "blur" },
  223. ],
  224. recruitment: [
  225. { required: true, message: "请填写统招/成教", trigger: "blur" },
  226. ],
  227. maritalstatus: [
  228. { required: true, message: "请填写婚姻状况", trigger: "blur" },
  229. ],
  230. address: [
  231. { required: true, message: "请填写家庭地址", trigger: "blur" },
  232. ],
  233. corporation: [
  234. { required: true, message: "请选择所属公司", trigger: "change" },
  235. ],
  236. division: [
  237. { required: true, message: "请选择所属部门", trigger: "change" },
  238. ],
  239. desc: [{ required: true, message: "请填写工作经历", trigger: "blur" }],
  240. },
  241. };
  242. },
  243. methods: {
  244. submitForm(formName) {
  245. this.$refs[formName].validate((valid) => {
  246. if (valid) {
  247. alert("submit!");
  248. } else {
  249. console.log("error submit!!");
  250. return false;
  251. }
  252. });
  253. },
  254. resetForm(formName) {
  255. this.$refs[formName].resetFields();
  256. },
  257. },
  258. mounted() {},
  259. };
  260. </script>
  261. <style>
  262. body {
  263. margin: 0;
  264. padding: 0;
  265. }
  266. .enroll-all {
  267. background-color: #f1f1f1;
  268. padding-top: 100px;
  269. height: 900px;
  270. /*background-image: url("../assets/back.png");*/
  271. /*background-repeat: no-repeat;*/
  272. /*background-size: 100% 100%;*/
  273. }
  274. .enroll-form-box {
  275. width: 800px;
  276. margin: 0 auto;
  277. box-shadow: 0 0 5px #0005;
  278. padding: 20px 20px 20px 0px;
  279. border-radius: 5px;
  280. background-color: #fff;
  281. }
  282. .enroll-title {
  283. text-align: center;
  284. font-size: 26px;
  285. font-weight: 600;
  286. color: #555;
  287. margin-bottom: 20px;
  288. }
  289. .form-li {
  290. display: flex;
  291. flex-wrap: wrap;
  292. }
  293. .form-li > div {
  294. width: 50%;
  295. }
  296. .el-select {
  297. width: 100%;
  298. }
  299. .enroll-btn {
  300. text-align: center;
  301. }
  302. </style>