perfectInfo.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <template>
  2. <view class="container">
  3. <view class="content">
  4. <view class="public_tip">温馨提示:请务必填写真实信息,您的信息我们将严格保密。</view>
  5. <formPage :formConfigList="formConfigList" @toSelect="makeUpAccount"></formPage>
  6. </view>
  7. </view>
  8. </template>
  9. <script lang="ts" setup>
  10. import { ref } from 'vue';
  11. import { onLoad } from '@dcloudio/uni-app';
  12. import { common } from '@/utils';
  13. import {
  14. addBaseMember_V3,
  15. makeUpAccount as makeUpAccountApi,
  16. delMemberInfo_V3
  17. } from '@/pagesPersonal/service/patientManagement';
  18. import formPage from '@/pagesPersonal/st1/components/formPage/formPage.vue';
  19. const app = getApp();
  20. const userAccount = ref<any>(null);
  21. const formConfigList = ref<any[]>([]);
  22. onLoad(() => {
  23. const allFormConfigList = uni.getStorageSync('formConfigList') || [];
  24. const form = allFormConfigList.filter((item: any) => item.formScene == 'ACCOUNTLOGIN' && item.isShow == 1);
  25. userAccount.value = app.globalData.userAccount;
  26. formConfigList.value = form;
  27. });
  28. // 认证
  29. const makeUpAccount = async (e: any) => {
  30. // 兼容 Vue event 和 小程序 event detail
  31. const configList = e.detail ? e.detail.formConfigList : (e.formConfigList || e);
  32. const res = await validate(configList);
  33. if (!res) return;
  34. //关系是本人-1
  35. res.relationCode = 1;
  36. const accountSn = userAccount.value.accountSn;
  37. //因验证接口一定要memberId 所以先添加
  38. let { resData } = await addBaseMember_V3({
  39. ...res,
  40. accountSn
  41. });
  42. if (resData.RespCode != 10000 || !resData.Data || !resData.Data.length) return;
  43. const memberId = resData.Data[0].memberId;
  44. const { resData: accountResData } = await makeUpAccountApi({
  45. memberId,
  46. accountSn
  47. });
  48. if (accountResData && accountResData.RespCode == 10000) {
  49. common.showToast("保存成功");
  50. uni.navigateBack();
  51. } else {
  52. await delMemberInfo_V3({
  53. accountSn: app.globalData.userAccount.accountSn,
  54. memberId: resData.Data[0].memberId,
  55. });
  56. }
  57. };
  58. // 表单验证
  59. const validate = (formConfigList: any[]) => {
  60. return new Promise<any>((resolve) => {
  61. const dataObj: any = {};
  62. formConfigList.forEach((item: any) => {
  63. if (item.vModel == "certType") {
  64. dataObj[item.vModel] = item.options[item.defValue].value;
  65. } else {
  66. dataObj[item.vModel] = item.defValue;
  67. }
  68. });
  69. for (let item of formConfigList) {
  70. // 必填验证
  71. if (item.isMust && !item.defValue) {
  72. common.showToast(item.warnMessage);
  73. resolve(false);
  74. return;
  75. }
  76. // 规则验证
  77. if (item.regularExpressions) {
  78. const reg = new RegExp(item.regularExpressions);
  79. // 非身份证的不做验证
  80. if (item.vModel == "certNum") {
  81. if (dataObj.certType != "01") {
  82. continue;
  83. }
  84. }
  85. if (!reg.test(item.defValue)) {
  86. common.showToast(item.warnMessage);
  87. resolve(false);
  88. return;
  89. }
  90. }
  91. }
  92. resolve(dataObj);
  93. });
  94. };
  95. </script>
  96. <style lang="scss" scoped>
  97. </style>