index.vue 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. <template>
  2. <div>
  3. <!-- 我的信息 -->
  4. <div class="content">
  5. <el-tabs v-model="activeInfoName">
  6. <!-- 个人信息 -->
  7. <el-tab-pane label="个人信息" name="info">
  8. <el-form ref="dataForm" :rules="rules" :model="temp1" label-width="100px">
  9. <el-form-item label="用户编码:" prop="loginId">
  10. <el-input style="width: 40%; margin-right: 40px"
  11. v-model.trim="temp1.loginId" readonly></el-input>
  12. </el-form-item>
  13. <el-form-item label="用户名:" prop="userName">
  14. <el-input style="width: 40%; margin-right: 40px"
  15. placeholder="请输入用户名"
  16. v-model.trim="temp1.userName"></el-input>
  17. </el-form-item>
  18. <!-- <el-form-item label="机构:" prop="orgName">
  19. <el-input style="width: 40%; margin-right: 40px"
  20. v-model="temp1.orgName"></el-input>
  21. </el-form-item> -->
  22. <!-- <el-form-item label="年龄:" prop="age">
  23. <el-input style="width: 40%; margin-right: 40px"
  24. v-model.trim="temp1.age"
  25. placeholder="请输入"></el-input>
  26. </el-form-item> -->
  27. <!-- <el-form-item label="性别:" prop="gend">
  28. <el-select
  29. style="width: 40%; margin-right: 40px"
  30. v-model="temp1.gend"
  31. placeholder="请选择性别"
  32. >
  33. <el-option
  34. v-for="item in shiOptions"
  35. :key="item.value"
  36. :label="item.label"
  37. :value="item.label"
  38. >
  39. </el-option>
  40. </el-select>
  41. </el-form-item> -->
  42. <el-form-item label="联系方式:" prop="coninfo">
  43. <el-input style="width: 40%; margin-right: 40px"
  44. v-model.trim="temp1.coninfo"
  45. placeholder="请输入联系方式"></el-input>
  46. </el-form-item>
  47. <!-- <el-form-item label="身份证号:" prop="idCard">
  48. <el-input style="width: 40%; margin-right: 40px"
  49. v-model.trim="temp1.idCard"
  50. placeholder="请输入身份证号"></el-input>
  51. </el-form-item> -->
  52. <el-form-item label="邮箱号:" prop="email">
  53. <el-input style="width: 40%; margin-right: 40px"
  54. v-model.trim="temp1.email"
  55. maxlength="40"
  56. placeholder="请输入邮箱号"></el-input>
  57. </el-form-item>
  58. <!-- <el-form-item label="部门:" prop="dept">
  59. <el-input style="width: 40%; margin-right: 40px"
  60. v-model.trim="temp1.dept"
  61. placeholder="请输入部门"></el-input>
  62. </el-form-item>
  63. <el-form-item label="所学专业:" prop="proftech">
  64. <el-input style="width: 40%; margin-right: 40px"
  65. v-model.trim="temp1.proftech"
  66. placeholder="请输入所学专业"></el-input>
  67. </el-form-item>
  68. <el-form-item label="职称:" prop="profttl">
  69. <el-input style="width: 40%; margin-right: 40px"
  70. v-model.trim="temp1.profttl"
  71. placeholder="请输入职称"></el-input>
  72. </el-form-item> -->
  73. </el-form>
  74. <div style="margin-top:40px;margin-left:10%">
  75. <el-button type="primary" @click="handleClick()"
  76. style="width: 10%;">提交</el-button>
  77. </div>
  78. </el-tab-pane>
  79. </el-tabs>
  80. </div>
  81. </div>
  82. </template>
  83. <script>
  84. import { getInfo,QueryUserInfo,UserCentUpdt } from "@/api/user";
  85. export default {
  86. data() {
  87. return {
  88. // 个人信息的状态
  89. activeInfoName: "info",
  90. // 个人信息
  91. temp1: {
  92. userName:"",
  93. loginId:"",
  94. age:"",
  95. gend:"",
  96. coninfo:"",
  97. email:"",
  98. },
  99. shiOptions: [
  100. { value: "0", label: "男" },
  101. { value: "1", label: "女" },
  102. ],
  103. rules: {
  104. userName: [
  105. {
  106. required: true,
  107. message: "用户名称不能为空",
  108. trigger: "blur",
  109. },
  110. {
  111. min: 2,
  112. max: 20,
  113. message: "用户名称长度必须介于 2 和 20 之间",
  114. trigger: "blur",
  115. },
  116. ],
  117. age: [
  118. {
  119. required: true,
  120. message: "年龄不能为空",
  121. trigger: "blur",
  122. },
  123. {
  124. pattern: /^(?:[1-9][0-9]?|1[01][0-9]|120)$/,
  125. message: "请输入正确的格式",
  126. trigger: "blur",
  127. },
  128. ],
  129. idCard: [
  130. {
  131. required: true,
  132. message: "身份证号不能为空",
  133. trigger: "blur",
  134. },
  135. {
  136. pattern: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/,
  137. message: "请输入正确的身份证格式",
  138. trigger: "blur",
  139. },
  140. ],
  141. email: [
  142. {
  143. required: true,
  144. message: "邮箱不能为空",
  145. trigger: "blur",
  146. },
  147. {
  148. pattern: /^([a-zA-Z0-9]+[-_\.]?)+@[a-zA-Z0-9]+\.[a-z]+$/,
  149. message: "请输入正确的邮箱格式",
  150. trigger: "blur",
  151. },
  152. ],
  153. gend: [
  154. {
  155. required: false,
  156. message: "性别不能为空",
  157. trigger: "change",
  158. },
  159. ],
  160. coninfo: [
  161. {
  162. required: true,
  163. message: "联系方式不能为空",
  164. trigger: "blur",
  165. },
  166. {
  167. pattern: /^1(?:3\d|4[4-9]|5[0-35-9]|6[67]|7[013-8]|8\d|9\d)\d{8}$/,
  168. message: "请输入正确的格式",
  169. trigger: "blur",
  170. },
  171. ],
  172. dept: [
  173. {
  174. required: false,
  175. message: "部门不能为空",
  176. trigger: "blur",
  177. },
  178. ],
  179. proftech: [
  180. {
  181. required: false,
  182. message: "所学专业不能为空",
  183. trigger: "blur",
  184. },
  185. ],
  186. profttl: [
  187. {
  188. required: false,
  189. message: "职称不能为空",
  190. trigger: "blur",
  191. },
  192. ],
  193. },
  194. loginId:"",
  195. };
  196. },
  197. created() {
  198. this.getInfoList();
  199. },
  200. methods: {
  201. // 获取个人信息列表
  202. getInfoList() {
  203. getInfo().then((response) => {
  204. let data = response.data.userContext;
  205. this.temp1.loginId = data.loginId;
  206. QueryUserInfo({id:data.loginId}).then((res) => {
  207. this.temp1.userName = res.data.userName
  208. // this.temp1.age = res.data.age
  209. this.temp1.gend = res.data.gend
  210. this.temp1.coninfo = res.data.coninfo
  211. this.temp1.email = res.data.email
  212. });
  213. });
  214. },
  215. // 提交
  216. handleClick(){
  217. this.$refs["dataForm"].validate((valid) => {
  218. if (valid) {
  219. this.$confirm("确认提交", "提示", {
  220. confirmButtonText: "确定",
  221. cancelButtonText: "取消",
  222. type: "warning",
  223. }).then(() => {
  224. UserCentUpdt(this.temp1).then((res)=>{
  225. this.$message.success("修改成功");
  226. localStorage.clear();
  227. this.$store.dispatch('user/resetToken');
  228. this.$router.push(`/login`);
  229. // let aa = this.$store.getters.visitedViews;
  230. // let bb = this.$route.path;
  231. // let view = aa.filter(function (obj) {
  232. // return obj.path == bb;
  233. // });
  234. // this.$store.dispatch("tagsView/delView", view[0]);
  235. // this.$router.push("/homePage/dashboard");
  236. }).catch((e)=>{
  237. })
  238. });
  239. }
  240. });
  241. }
  242. },
  243. };
  244. </script>
  245. <style lang="scss" scoped>
  246. .content {
  247. width: 100%;
  248. height: 100vh;
  249. background: #fff no-repeat;
  250. background-attachment: fixed;
  251. box-sizing: border-box;
  252. background-size: 100% 100%;
  253. }
  254. ::v-deep .el-tabs{
  255. margin: 20px;
  256. }
  257. ::v-deep .el-textarea__inner{
  258. max-height: 150px;
  259. }
  260. </style>