You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

279 lines
10 KiB

  1. <template>
  2. <div class="m_container">
  3. <div class="m_content">
  4. <div class="m_msgcard">
  5. <el-avatar class="m_avater" :src="editForm.headimgurl || defaultImg">
  6. </el-avatar>
  7. <div class="m_msg">
  8. <span class="m_name">{{userInfo.username}}</span>
  9. <span class="m_dept">所在部门{{userInfo.deptName}}</span>
  10. <el-button @click="showUploadHeadimg" class="m_btn">修改头像</el-button>
  11. </div>
  12. </div>
  13. <div class="m_opercard">
  14. <div class="m_base">
  15. <h3>基本信息</h3>
  16. <el-form class="m_f m_from1" :model="editForm" label-width="120px" :rules="editFormRules" ref="editForm">
  17. <el-form-item label="用户名称" prop="username" :rules="[{required:true,message:'用户名称不能为空'}]">
  18. <el-input style="width:400px;" v-model="editForm.username" auto-complete="off"></el-input>
  19. </el-form-item>
  20. <el-form-item label="登录账号" prop="displayUserid" :rules="[{required:true,message:'登录账号不能为空'}]">
  21. <el-input style="width:400px;" v-model="editForm.displayUserid" auto-complete="off"></el-input>
  22. </el-form-item>
  23. <el-form-item label="邮箱" prop="email" :rules="[{required:true,message:'邮箱不能为空'},{validator:validateEmail}]">
  24. <el-input style="width:400px;" v-model="editForm.email" auto-complete="off"></el-input>
  25. </el-form-item>
  26. <el-form-item>
  27. <el-button type="primary" @click.native="editSubmit" :loading="editLoading">保存</el-button>
  28. </el-form-item>
  29. </el-form>
  30. </div>
  31. <div class="m_setpwd">
  32. <h3>密码设置</h3>
  33. <el-form class="m_f m_from1" :model="editForm" label-width="80px" ref="passwordForm">
  34. <el-form-item>
  35. <el-form-item label="原密码" prop="oldPassword" :rules="[{required:true,message:'原密码不能为空'}]">
  36. <el-input style="width:400px;" type="password" v-model="passwordForm.oldPassword" auto-complete="off"></el-input>
  37. </el-form-item>
  38. <el-form-item label="新密码" prop="newPassword" :rules="[{required:true,message:'新密码不能为空'}]">
  39. <el-input style="width:400px;" type="password" v-model="passwordForm.newPassword" auto-complete="off"></el-input>
  40. </el-form-item>
  41. <el-form-item>
  42. <el-button style="margin-left: 80px" type="primary" @click.native="doChangePassword" :loading="setLoading">保存</el-button>
  43. </el-form-item>
  44. </el-form-item>
  45. </el-form>
  46. </div>
  47. </div>
  48. </div>
  49. <single-shear-upload ref="uploadImg" v-show="false"
  50. :img-width="100"
  51. :img-height="100"
  52. :show-title="true"
  53. v-model="editForm.headimgurl"
  54. :branch-id="userInfo.branchId"
  55. :deptid="userInfo.deptid"
  56. :remark="userInfo.username"
  57. >
  58. <span slot="title">商品高清大图</span>
  59. </single-shear-upload>
  60. </div>
  61. <!-- <section>
  62. <el-row class="padding" v-show="changePasswordVisible==true" >
  63. <el-form :model="passwordForm" label-width="120px" ref="passwordForm">
  64. <el-form-item label="" prop="headimgurl">
  65. <el-avatar :size="100" :src="editForm.headimgurl"></el-avatar>
  66. </el-form-item>
  67. <el-form-item label="原密码" prop="oldPassword" :rules="[{required:true,message:'原密码不能为空'}]">
  68. <el-input style="width:400px;" type="password" v-model="passwordForm.oldPassword" auto-complete="off"></el-input>
  69. </el-form-item>
  70. <el-form-item label="新密码" prop="newPassword" :rules="[{required:true,message:'新密码不能为空'}]">
  71. <el-input style="width:400px;" type="password" v-model="passwordForm.newPassword" auto-complete="off"></el-input>
  72. </el-form-item>
  73. <el-form-item>
  74. <el-button type="primary" @click.native="doChangePassword" :loading="editLoading">保存</el-button>
  75. <el-button @click.native="changePasswordVisible=false" :loading="editLoading">返回</el-button>
  76. </el-form-item>
  77. </el-form>
  78. </el-row>
  79. <el-row class="padding" v-show="changePasswordVisible==false" >
  80. <el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editForm">
  81. <el-form-item label="" prop="headimgurl">
  82. <el-avatar :size="100" :src="editForm.headimgurl" @click="showUploadHeadimg"></el-avatar>
  83. <br>
  84. <el-button type="text" @click="showUploadHeadimg">更换头像</el-button>
  85. </el-form-item>
  86. <el-form-item label="" v-show="false" prop="headimgurl">
  87. <single-shear-upload ref="uploadImg"
  88. :img-width="100"
  89. :img-height="100"
  90. :show-title="true"
  91. v-model="editForm.headimgurl"
  92. :branch-id="userInfo.branchId"
  93. :deptid="userInfo.deptid"
  94. :remark="userInfo.username"
  95. >
  96. <span slot="title">商品高清大图</span>
  97. </single-shear-upload>
  98. </el-form-item>
  99. <el-form-item label="用户名称" prop="username" :rules="[{required:true,message:'用户名称不能为空'}]">
  100. <el-input style="width:400px;" v-model="editForm.username" auto-complete="off"></el-input>
  101. </el-form-item>
  102. <el-form-item label="登录账号" prop="displayUserid" :rules="[{required:true,message:'登录账号不能为空'}]">
  103. <el-input style="width:400px;" v-model="editForm.displayUserid" auto-complete="off"></el-input>
  104. </el-form-item>
  105. <el-form-item label="邮箱" prop="email" :rules="[{required:true,message:'邮箱不能为空'},{validator:validateEmail}]">
  106. <el-input style="width:400px;" v-model="editForm.email" auto-complete="off"></el-input>
  107. </el-form-item>
  108. <el-form-item>
  109. <el-button @click.native="changePasswordVisible=true" :loading="editLoading">修改密码</el-button>
  110. <el-button type="primary" @click.native="editSubmit" :loading="editLoading">保存</el-button>
  111. </el-form-item>
  112. </el-form>
  113. </el-row>
  114. </section> -->
  115. </template>
  116. <script>
  117. import { editUser,changePassword } from '@/api/mdp/sys/user';
  118. import { mapGetters } from 'vuex'
  119. import SingleShearUpload from "@/components/Image/Single/Index";
  120. import md5 from "js-md5";
  121. export default {
  122. computed: {
  123. ...mapGetters([
  124. 'userInfo'
  125. ])
  126. },
  127. props:['user'],
  128. watch: {
  129. 'user':function(data) {
  130. this.editForm=data;
  131. }
  132. },
  133. data() {
  134. var validatePhoneno = (rule, value, callback) => {
  135. if (!value) {
  136. callback();
  137. } else {
  138. if (value) {
  139. if(value.length<11 || value.length>11){
  140. callback(new Error('手机号码必须11位'));
  141. }
  142. if(!(/^1[3456789]\d{9}$/.test(value))){
  143. callback(new Error('手机号码格式不正确'));
  144. }
  145. }
  146. callback();
  147. }
  148. };
  149. var validateEmail = (rule, value, callback) => {
  150. if (value=='') {
  151. callback();
  152. } else {
  153. if (value !== '') {
  154. var reg = /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/;
  155. if(!reg.test(value)){
  156. callback(new Error('邮箱格式不正确'));
  157. }
  158. }
  159. callback();
  160. }
  161. };
  162. var validateIdCardNo = (rule, value, callback) => {
  163. if (value === ''|| value==null) {
  164. //callback(nPhonenoew Error('请输入密码'));
  165. callback();
  166. }else {
  167. if (value !== '' && value.length>15) {
  168. var reg = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
  169. if(!reg.test(value)){
  170. callback(new Error('身份证号码格式不正确'));
  171. }else{
  172. callback();
  173. }
  174. }else if(value !== '' && value.length<15){
  175. callback(new Error('请输入15位或者18位长度身份证号码'));
  176. }else{
  177. callback();
  178. }
  179. }
  180. };
  181. return {
  182. validateEmail:validateEmail,
  183. uploadHeadimgVisible:false,
  184. changePasswordVisible:false,
  185. options:{},//下拉选择框的所有静态数据
  186. editLoading: false,
  187. setLoading: false,
  188. defaultImg: 'https://www.qingqinkj.com/api/m1/arc/arc/image/qqkj_001/IM1632611467940176/IM1633550409547158.png',
  189. editFormRules: {
  190. displayUserid: [
  191. { required: true, message: '账号必填', trigger: 'blur' }
  192. ],
  193. username: [
  194. { required: true, message: '用户名称必填', trigger: 'blur' }
  195. ],
  196. email: [
  197. { validator:validateEmail, trigger: 'blur' }
  198. ]
  199. },
  200. //编辑界面数据 User sys_user
  201. editForm: {
  202. unionid:'',displayUserid:'',userid:'',locked:'',startdate:'',nickname:'',username:'',phoneno:'',password:'',salt:'',fingerpassword1:'',fingerpassword2:'',fingerpassword3:'',fingerpassword4:'',pwdtype:'',headimgurl:'',country:'',city:'',province:'',address:'',sex:'',enddate:'',districtId:'',userid:'',userAccount:'',userPwd:'',userName:'',userDesc:'',officePhoneno:'',idCardNo:'',email:''
  203. },
  204. passwordForm:{
  205. newPassword:'',oldPassword:''
  206. }
  207. }
  208. },
  209. methods: {
  210. // 取消按钮点击 父组件监听@cancel="editFormVisible=false" 监听
  211. handleCancel:function(){
  212. this.$emit('cancel');
  213. },
  214. //编辑提交User sys_user父组件监听@submit="afterEditSubmit"
  215. editSubmit: function () {
  216. this.$refs.editForm.validate((valid) => {
  217. if (valid) {
  218. this.$confirm('确认提交吗?', '提示', {}).then(() => {
  219. this.editLoading = true;
  220. let params = Object.assign({}, this.editForm);
  221. editUser(params).then((res) => {
  222. this.editLoading = false;
  223. var tips=res.data.tips;
  224. if(tips.isOk){
  225. this.$emit('submit');// @submit="afterEditSubmit"
  226. }
  227. this.$message({ message: tips.msg, type: tips.isOk?'success':'error' });
  228. }).catch(() => {
  229. this.editLoading = false;
  230. });
  231. });
  232. }
  233. });
  234. },
  235. doChangePassword(){
  236. console.log("修改密码");
  237. this.$refs.passwordForm.validate((valid) => {
  238. if (valid) {
  239. this.setLoading = true
  240. changePassword({oldPassword:md5(this.passwordForm.oldPassword),newPassword:md5(this.passwordForm.newPassword)}).then(res=>{
  241. var tips = res.data.tips;
  242. this.$message({ message: tips.msg, type: tips.isOk?'success':'error' });
  243. }).finally(r => this.setLoading = false)
  244. }
  245. })
  246. },
  247. showUploadHeadimg(){
  248. this.$refs.uploadImg.showAdd();
  249. }
  250. },
  251. components: {
  252. SingleShearUpload
  253. },
  254. mounted() {
  255. console.log(this.userInfo, "this.userInfo");
  256. this.editForm=Object.assign(this.editForm, this.userInfo);
  257. }
  258. }
  259. </script>
  260. <style lang="scss" scoped>
  261. @import './index.scss';
  262. @import '../common.scss';
  263. </style>