personal.vue 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  1. <template>
  2. <!-- 个人资料 -->
  3. <view>
  4. <u-navbar title="个人资料" autoBack placeholder></u-navbar>
  5. <view class="card_form">
  6. <x-form ref="personage" :userType="userType" :list="list" :model="model" :rules="rules"
  7. @clientele="clientele"></x-form>
  8. </view>
  9. </view>
  10. </template>
  11. <script>
  12. export default {
  13. data() {
  14. return {
  15. list: [{
  16. field: 'name',
  17. label: '姓名',
  18. placeholder: '请输入姓名',
  19. type: 'input',
  20. disabled: true,
  21. required: true,
  22. }, {
  23. field: 'idCard',
  24. label: '身份证号',
  25. placeholder: '请输入身份证号',
  26. type: 'input',
  27. disabled: true,
  28. required: true,
  29. }, {
  30. field: 'phone',
  31. label: '电话',
  32. placeholder: '请输入电话',
  33. type: 'input',
  34. required: true,
  35. }, {
  36. field: 'description',
  37. label: '备注',
  38. placeholder: '请输入备注',
  39. type: 'textarea',
  40. }, {
  41. field: 'line',
  42. label: '《燃气从业资格证》信息',
  43. type: 'line',
  44. }, {
  45. field: 'lines',
  46. label: '《道路运输从业人员从业资格证》信息',
  47. type: 'line',
  48. }, {
  49. field: 'certificateNo',
  50. label: '证书编号',
  51. placeholder: '请输入证书编号',
  52. type: 'input',
  53. required: true,
  54. }, {
  55. field: 'issueAuthority',
  56. label: '发证机关',
  57. placeholder: '请输入发证机关',
  58. type: 'input',
  59. required: true,
  60. }, {
  61. field: 'remarks',
  62. label: '备注',
  63. placeholder: '请输入备注',
  64. type: 'textarea',
  65. }, {
  66. field: 'imgUrl',
  67. label: '燃气从业资格证',
  68. placeholder: '请上传燃气从业资格证',
  69. type: 'upload',
  70. required: true,
  71. }, {
  72. field: 'imgUrls',
  73. label: '道路运输从业人员从业资格证',
  74. placeholder: '请上传道路运输从业人员从业资格证',
  75. type: 'upload',
  76. required: true,
  77. }],
  78. model: {
  79. name: '',
  80. idCard: '',
  81. phone: '',
  82. description: '',
  83. certificateNo: '',
  84. issueAuthority: '',
  85. remarks: '',
  86. imgUrl: '',
  87. imgUrls: '',
  88. },
  89. rules: {
  90. 'name': {
  91. type: 'string',
  92. required: true,
  93. message: '请输入姓名',
  94. trigger: ['blur', 'change']
  95. },
  96. 'idCard': {
  97. type: 'string',
  98. required: true,
  99. message: '请输入身份证号码',
  100. trigger: ['blur', 'change']
  101. },
  102. 'phone': {
  103. type: 'string',
  104. required: true,
  105. message: '请输入电话号码',
  106. trigger: ['blur', 'change']
  107. },
  108. 'certificateNo': {
  109. type: 'string',
  110. required: true,
  111. message: '请输入证书编号',
  112. trigger: ['blur', 'change']
  113. },
  114. 'issueAuthority': {
  115. type: 'string',
  116. required: true,
  117. message: '请输入发证机关',
  118. trigger: ['blur', 'change']
  119. },
  120. 'imgUrl': {
  121. type: 'string',
  122. required: true,
  123. message: '请上传燃气从业资格证',
  124. trigger: ['blur', 'change']
  125. },
  126. 'imgUrls': {
  127. type: 'string',
  128. required: true,
  129. message: '请上传燃气从业资格证',
  130. trigger: ['blur', 'change']
  131. },
  132. },
  133. userInfo: {},
  134. userType: 5,
  135. }
  136. },
  137. onLoad() {
  138. this.getLayout()
  139. },
  140. mounted() {
  141. this.getUser()
  142. },
  143. methods: {
  144. getLayout() {
  145. this.list.forEach(value => {
  146. if (this.userType == 3) {
  147. if (value.field == 'imgUrls' || value.field == 'lines') {
  148. value.visible = true
  149. } else {
  150. value.visible = false
  151. }
  152. } else if (this.userType == 4) {
  153. if (value.field == 'imgUrl' || value.field == 'line') {
  154. value.visible = true
  155. } else {
  156. value.visible = false
  157. }
  158. } else {
  159. if (['imgUrl', 'imgUrls', 'line', 'lines', 'certificateNo', 'issueAuthority',
  160. 'issueAuthority', 'remarks',
  161. ].includes(value.field)) {
  162. value.visible = true
  163. } else {
  164. value.visible = false
  165. }
  166. }
  167. })
  168. },
  169. getUser() {
  170. this.$api.get('/api/user/profile').then(res => {
  171. if (res.code == 200) {
  172. const param = res.data.user
  173. this.userInfo = param
  174. this.$nextTick(() => {
  175. this.userType = param.provUser.userType
  176. this.getLayout()
  177. this.model.name = param.provUser.name
  178. this.model.idCard = param.provUser.idCard
  179. this.model.phone = param.provUser.phone
  180. this.model.description = param.provUser.description
  181. if (this.userType == 3) {
  182. this.model.certificateNo = param.provStoreUserBindCertificate.certificateNo
  183. this.model.issueAuthority = param.provStoreUserBindCertificate
  184. .issueAuthority
  185. this.model.imgUrl = param.provStoreUserBindCertificate.imgUrl
  186. if (param.provStoreUserBindCertificate.remarks) {
  187. this.model.remarks = param.provStoreUserBindCertificate.remarks
  188. } else {
  189. this.model.remarks = ''
  190. }
  191. } else if (this.userType == 4) {
  192. this.model.certificateNo = param.provTruckUserBindCertificate.certificateNo
  193. this.model.issueAuthority = param.provTruckUserBindCertificate
  194. .issueAuthority
  195. this.model.imgUrls = param.provTruckUserBindCertificate.imgUrl
  196. if (param.provTruckUserBindCertificate.remarks) {
  197. this.model.remarks = param.provTruckUserBindCertificate.remarks
  198. } else {
  199. this.model.remarks = ''
  200. }
  201. }
  202. let arrImg = []
  203. let arrImg1 = []
  204. if (param.provStoreUserBindCertificate.imgUrl && this.userType == 3) {
  205. arrImg = param.provStoreUserBindCertificate.imgUrl.split(',')
  206. } else if (param.provTruckUserBindCertificate.imgUrl && this.userType == 4) {
  207. arrImg = param.provTruckUserBindCertificate.imgUrl.split(',')
  208. }
  209. arrImg.forEach(item => {
  210. let arr = {
  211. thumb: this.$baseUrl + item,
  212. url: this.$baseUrl + item,
  213. }
  214. arrImg1.push(arr)
  215. })
  216. this.$refs.personage.fileList1 = arrImg1
  217. })
  218. // console.log(this.model, 26)
  219. }
  220. })
  221. },
  222. // 修改个人信息
  223. clientele() {
  224. let param = {
  225. id: this.userInfo.id,
  226. roleId: this.userInfo.roleId,
  227. provUser: {
  228. name: this.model.name,
  229. cmpCode: this.model.cmpCode,
  230. phone: this.model.phone,
  231. description: this.model.description,
  232. },
  233. provStoreUserBindCertificate: {
  234. certificateNo: this.model.certificateNo,
  235. issueAuthority: this.model.issueAuthority,
  236. imgUrl: this.model.imgUrl,
  237. remarks: this.model.remarks,
  238. },
  239. provTruckUserBindCertificate: {
  240. certificateNo: this.model.certificateNo,
  241. issueAuthority: this.model.issueAuthority,
  242. imgUrl: this.model.imgUrls,
  243. remarks: this.model.remarks,
  244. }
  245. }
  246. if (this.model.addressImg != undefined) {
  247. param.provTruckUserBindCertificate.imgUrl = this.model.addressImg
  248. }
  249. if (this.userType == 3) {
  250. delete param.provTruckUserBindCertificate
  251. } else if (this.userType == 4) {
  252. delete param.provStoreUserBindCertificate
  253. }
  254. uni.showLoading({
  255. mask: true,
  256. });
  257. uni.hideLoading();
  258. this.$api.put('/api/sys-user', param).then(res => {
  259. if (res.code == 200) {
  260. this.getUser()
  261. uni.$u.toast(res.msg)
  262. }
  263. uni.hideLoading();
  264. }).catch(() => {
  265. uni.hideLoading();
  266. })
  267. },
  268. eliminateImge(img) {
  269. let arr = img.split(',')
  270. console.log(img,arr,1)
  271. let imgArr = []
  272. arr.forEach(item => {
  273. let img = item.split(this.$baseUrl)
  274. imgArr.push(img[1])
  275. })
  276. let imgList = imgArr.join()
  277. console.log(imgList,26)
  278. return imgList
  279. }
  280. }
  281. }
  282. </script>
  283. <style lang="scss">
  284. .card_form {
  285. margin: 10rpx 40rpx;
  286. }
  287. </style>