register.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. <template>
  2. <div id="register">
  3. <el-row>
  4. <el-col :span="24" class="style">
  5. <el-col :span="24" class="top">
  6. <top></top>
  7. </el-col>
  8. <el-col :span="24" class="menu">
  9. <div class="w_1200">
  10. <menus></menus>
  11. </div>
  12. </el-col>
  13. <el-col :span="24" class="main">
  14. <div class="w_1200">
  15. <el-col :span="24" class="info">
  16. <el-col :span="24" class="top">
  17. 注册
  18. </el-col>
  19. <el-col :span="24" class="form">
  20. <el-form :model="form" :rules="rules" ref="form" label-width="100px" class="demo-ruleForm">
  21. <el-form-item label="姓名" prop="name">
  22. <el-input v-model="form.name" placeholder="请输入姓名"></el-input>
  23. </el-form-item>
  24. <el-form-item label="手机号" prop="phone">
  25. <el-input v-model="form.phone" placeholder="请输入手机号"></el-input>
  26. </el-form-item>
  27. <el-form-item label="密码" prop="passwd">
  28. <el-input v-model="form.passwd" placeholder="请输入密码" show-password></el-input>
  29. </el-form-item>
  30. <el-form-item label="用户类别" prop="type">
  31. <el-radio-group v-model="form.type">
  32. <el-radio label="3">普通用户</el-radio>
  33. <el-radio label="0">超级管理员</el-radio>
  34. <el-radio label="1">管理员</el-radio>
  35. <el-radio label="2">专家</el-radio>
  36. </el-radio-group>
  37. </el-form-item>
  38. <el-form-item label="性别" prop="gender" v-if="form.type == '0' || form.type == '1' || form.type == '2'">
  39. <el-radio-group v-model="form.gender">
  40. <el-radio label="0">女</el-radio>
  41. <el-radio label="1">男</el-radio>
  42. </el-radio-group>
  43. </el-form-item>
  44. <el-form-item label="家庭住址" prop="address" v-if="form.type == '0' || form.type == '1' || form.type == '2'">
  45. <el-input v-model="form.address" placeholder="请输入家庭住址"></el-input>
  46. </el-form-item>
  47. <el-form-item label="身份证号" prop="id_number" v-if="form.type == '0' || form.type == '1' || form.type == '2'">
  48. <el-input v-model="form.id_number" placeholder="请输入身份证号"></el-input>
  49. </el-form-item>
  50. <el-form-item label="所在部门" prop="dept_id" v-if="form.type == '0' || form.type == '1'">
  51. <el-select v-model="form.dept_id" filterable @change="selectChild">
  52. <el-option v-for="(item, index) in deptList" :key="index" :value="item.id" :label="item.name"></el-option>
  53. </el-select>
  54. </el-form-item>
  55. <el-form-item label="担任职务" prop="level_id" v-if="form.type == '0' || form.type == '1'">
  56. <el-select v-model="form.level_id" filterable @change="selectChild">
  57. <el-option v-for="(item, index) in levelList" :key="index" :value="item.id" :label="item.name"></el-option>
  58. </el-select>
  59. </el-form-item>
  60. <el-form-item label="邮箱" prop="email" v-if="form.type == '2'">
  61. <el-input v-model="form.email" placeholder="请输入邮箱"></el-input>
  62. </el-form-item>
  63. <el-form-item label="头像" prop="img_url" v-if="form.type == '2'">
  64. <upload :limit="1" :data="form.img_url" type="img_url" :url="'/files/imgpath/upload'" @upload="uploadSuccess"></upload>
  65. </el-form-item>
  66. <el-form-item label="出生" prop="birthday" v-if="form.type == '2'">
  67. <el-date-picker v-model="form.birthday" type="date" placeholder="选择日期" value-format="yyyy-MM-dd"> </el-date-picker>
  68. </el-form-item>
  69. <el-form-item label="职称级别" prop="level" v-if="form.type == '2'">
  70. <el-input v-model="form.level" placeholder="请输入职称级别"></el-input>
  71. </el-form-item>
  72. <el-form-item label="职称名称" prop="levelname" v-if="form.type == '2'">
  73. <el-input v-model="form.levelname" placeholder="请输入职称名称"></el-input>
  74. </el-form-item>
  75. <el-form-item label="职务" prop="position" v-if="form.type == '2'">
  76. <el-input v-model="form.position" placeholder="请输入职务"></el-input>
  77. </el-form-item>
  78. <el-form-item label="院校" prop="school" v-if="form.type == '2'">
  79. <el-input v-model="form.school" placeholder="请输入院校"></el-input>
  80. </el-form-item>
  81. <el-form-item label="学历" prop="education" v-if="form.type == '2'">
  82. <el-select v-model="form.education" placeholder="请选择学历要求">
  83. <el-option v-for="(item, index) in edu_list" :key="index" :label="item.name" :value="item.name"></el-option>
  84. </el-select>
  85. </el-form-item>
  86. <el-form-item label="学位" prop="degree" v-if="form.type == '2'">
  87. <el-select v-model="form.degree" placeholder="请选择学位">
  88. <el-option v-for="(item, index) in degree_list" :key="index" :label="item.name" :value="item.name"></el-option>
  89. </el-select>
  90. </el-form-item>
  91. <el-form-item label="专业" prop="major" v-if="form.type == '2'">
  92. <el-input v-model="form.major" placeholder="请输入专业"></el-input>
  93. </el-form-item>
  94. <el-form-item label="从事专业" prop="profession" v-if="form.type == '2'">
  95. <el-input v-model="form.profession" placeholder="请输入从事专业"></el-input>
  96. </el-form-item>
  97. <el-form-item label="项目" prop="project" v-if="form.type == '2'">
  98. <el-input v-model="form.project" placeholder="请输入项目"></el-input>
  99. </el-form-item>
  100. <el-form-item label="学术成就" prop="academic" v-if="form.type == '2'">
  101. <el-input v-model="form.academic" placeholder="请输入学术成就"></el-input>
  102. </el-form-item>
  103. <el-form-item label="工作简介" prop="resume" v-if="form.type == '2'">
  104. <el-input v-model="form.resume" type="textarea" placeholder="请输入工作简介"></el-input>
  105. </el-form-item>
  106. <el-col :span="24" style="text-align:center;">
  107. <el-button type="primary" @click="submitForm('form')">注册</el-button>
  108. <!-- <el-button @click="resetForm('ruleForm')">重置</el-button> -->
  109. </el-col>
  110. </el-form>
  111. </el-col>
  112. </el-col>
  113. </div>
  114. </el-col>
  115. <el-col :span="24" class="foot">
  116. <div class="w_1200">
  117. <foot></foot>
  118. </div>
  119. </el-col>
  120. </el-col>
  121. </el-row>
  122. </div>
  123. </template>
  124. <script>
  125. import top from '@/layout/common/top.vue';
  126. import menus from '@/layout/common/menus.vue';
  127. import foot from '@/layout/common/foot.vue';
  128. import upload from '@/components/uploadone.vue';
  129. import { mapState, createNamespacedHelpers } from 'vuex';
  130. export default {
  131. name: 'register',
  132. props: {},
  133. components: {
  134. top,
  135. menus,
  136. foot,
  137. upload,
  138. },
  139. data: function() {
  140. return {
  141. form: {
  142. type: '3',
  143. },
  144. rules: {
  145. name: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
  146. phone: [{ required: true, message: '请输入手机号', trigger: 'blur' }],
  147. passwd: [{ required: true, message: '请输入密码', trigger: 'blur' }],
  148. gender: [{ required: true, message: '请输入性别', trigger: 'blur' }],
  149. address: [{ required: false, message: '请输入住址', trigger: 'blur' }],
  150. id_number: [{ required: false, message: '请输入身份证号', trigger: 'blur' }],
  151. dept_id: [{ required: true, message: '请输入部门', trigger: 'blur' }],
  152. level_id: [{ required: true, message: '请输入职务', trigger: 'blur' }],
  153. email: [{ required: false, message: '请输入邮箱', trigger: 'blur' }],
  154. img_url: [{ required: false, message: '请输入头像', trigger: 'blur' }],
  155. birthday: [{ required: false, message: '请输入出生日期', trigger: 'blur' }],
  156. level: [{ required: false, message: '请输入职称级别', trigger: 'blur' }],
  157. levelname: [{ required: false, message: '请输入职称名称', trigger: 'blur' }],
  158. position: [{ required: false, message: '请输入职务', trigger: 'blur' }],
  159. school: [{ required: false, message: '请输入院校', trigger: 'blur' }],
  160. education: [{ required: false, message: '请输入学历', trigger: 'blur' }],
  161. degree: [{ required: false, message: '请输入学位', trigger: 'blur' }],
  162. major: [{ required: false, message: '请输入专业', trigger: 'blur' }],
  163. profession: [{ required: false, message: '请输入从事专业', trigger: 'blur' }],
  164. project: [{ required: false, message: '请输入项目', trigger: 'blur' }],
  165. academic: [{ required: false, message: '请输入学术成就', trigger: 'blur' }],
  166. resume: [{ required: false, message: '请输入工作简历', trigger: 'blur' }],
  167. },
  168. // 部门
  169. deptList: [],
  170. // 职务
  171. levelList: [],
  172. // 学历
  173. edu_list: [
  174. {
  175. name: '中专及以上',
  176. },
  177. {
  178. name: '大专及以上',
  179. },
  180. {
  181. name: '本科及以上',
  182. },
  183. {
  184. name: '研究生及以上',
  185. },
  186. ],
  187. // 学位
  188. degree_list: [
  189. {
  190. name: '学士',
  191. },
  192. {
  193. name: '硕士',
  194. },
  195. {
  196. name: '博士',
  197. },
  198. {
  199. name: '其他',
  200. },
  201. ],
  202. };
  203. },
  204. created() {},
  205. methods: {
  206. submitForm(formName) {
  207. this.$refs[formName].validate(valid => {
  208. if (valid) {
  209. alert('submit!');
  210. } else {
  211. console.log('error submit!!');
  212. return false;
  213. }
  214. });
  215. },
  216. selectChild(type_id) {
  217. console.log(type_id);
  218. // let res = this.columnList.filter(fil => fil.id === product_type_id);
  219. // if (res.length > 0) {
  220. // this.$set(this.form, `product_type_name`, res[0].name);
  221. // }
  222. // this.$forceUpdate();
  223. },
  224. uploadSuccess({ type, data }) {
  225. this.$set(this.form, `${type}`, data.uri);
  226. },
  227. },
  228. computed: {
  229. ...mapState(['user']),
  230. pageTitle() {
  231. return `${this.$route.meta.title}`;
  232. },
  233. },
  234. metaInfo() {
  235. return { title: this.$route.meta.title };
  236. },
  237. };
  238. </script>
  239. <style lang="less" scoped>
  240. .w_1200 {
  241. width: 1200px;
  242. margin: 0 auto;
  243. }
  244. .style {
  245. .menu {
  246. height: 70px;
  247. margin: 0 0 10px 0;
  248. }
  249. .main {
  250. min-height: 600px;
  251. margin: 0 0 10px 0;
  252. .info {
  253. min-height: 600px;
  254. background: #fff;
  255. padding: 0 20px;
  256. .top {
  257. text-align: center;
  258. padding: 50px 0;
  259. font-size: 40px;
  260. }
  261. .form {
  262. padding: 0 0 20px 0;
  263. }
  264. }
  265. }
  266. .foot {
  267. height: 135px;
  268. }
  269. }
  270. </style>