From 83af3dd309889489f541fc8e21894c9f79e5788c Mon Sep 17 00:00:00 2001
From: zhangwei <1504152376@qq.com>
Date: 星期五, 22 八月 2025 16:09:58 +0800
Subject: [PATCH] 用户管理

---
 src/views/mine/index.vue |  872 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 869 insertions(+), 3 deletions(-)

diff --git a/src/views/mine/index.vue b/src/views/mine/index.vue
index d7028b4..0bb79f7 100644
--- a/src/views/mine/index.vue
+++ b/src/views/mine/index.vue
@@ -1,11 +1,877 @@
-<script setup lang="ts">
+<script setup lang="tsx">
+import { message } from "@/utils/message";
+import { useNav } from "@/layout/hooks/useNav";
+import { useUserStoreHook } from "@/store/modules/user";
+import type { FormInstance, FormRules, UploadProps } from "element-plus";
+import { cloneDeep } from "@pureadmin/utils";
+import { onMounted, reactive, ref, watch, computed, onBeforeUpdate } from "vue";
+import { getToken } from "@/utils/auth";
+const { route } = useNav();
+import { baseUrlApi } from "@/api/util";
+import { cusExtendInfo, changeCusExtend } from "@/api/mine";
+import { Edit } from "@element-plus/icons-vue";
+import { enterpriseTypes } from "@/api/register/index";
+import { initRouter, getTopMenu, handleAliveRoute } from "@/router/utils";
+const isManager = useUserStoreHook().isManager;
+import { type CusExtendDto } from "@/utils/auth";
+const ruleFormRef = ref<FormInstance>();
+const isLoading = ref(false);
+const showDialog = ref(false);
+const nowRole = computed(() => {
+  if (!state?.ruleForm?.exRoles) {
+    return {};
+  }
+  let nowRoleLiet;
+  let obj = {};
+  let nowRole = useUserStoreHook()?.nowRole;
+  if (state?.ruleForm?.exRoles.length > 1) {
+    nowRoleLiet = state.ruleForm.exRoles.find(item => {
+      return item.exRoleId == nowRole.id;
+    });
+    obj = Object.assign(nowRole, nowRoleLiet);
+  } else {
+    obj = Object.assign(nowRole, state.ruleForm.exRoles[0]);
+  }
+  return obj;
+});
+const userInfo = computed<CusExtendDto>(() => {
+  let obj = useUserStoreHook().enterpriseInfo;
+  return obj;
+});
+const state = reactive({
+  userInfo: useUserStoreHook().enterpriseInfo,
+  headers: {
+    // Accept: "application/json, text/plain, */*",
+    // "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
+    // "X-Requested-With": "XMLHttpRequest",
+    Authorization: `Bearer ${getToken()?.accessToken}`
+  },
+  isShowPassword: false,
+  ruleForm: {
+    // 涓婚敭锛堝敮涓�鏍囪瘑锛�
+    id: null, // integer($int64)锛屽彲绌�
+    // 浼佷笟绫诲瀷锛堜粠棰勮浼佷笟绫诲瀷鍒楄〃涓�夋嫨锛�
+    enterpriseType: null, // string锛屽彲绌�
+    // 浜ゆ槗涓讳綋浠g爜锛堝悓瑙掕壊浠g爜锛屼笉鍙┖锛屾渶灏忛暱搴︿负1锛�
+    transactionCode: "", // string锛屽繀濉�
+    // 浜ゆ槗涓讳綋鍚嶇О
+    transactionName: "", // string锛屽彲绌�
+    // 钀ヤ笟鎵х収鏂囦欢璺緞
+    businessLicense: null, // string锛屽彲绌�
+    // 浼佷笟鍚嶇О
+    enterpriseName: null, // string锛屽彲绌�
+    // 缁熶竴绀句細淇$敤浠g爜
+    unifiedSocialCreditCode: null, // string锛屽彲绌�
+    // 娉ㄥ唽璧勯噾锛堝崟浣嶏細涓囧厓锛�
+    registeredCapital: null, // number($double)锛屽彲绌�
+    // 娉曞畾浠h〃浜哄鍚�
+    legalRepresentativeName: null, // string锛屽彲绌�
+    // 娉曞畾浠h〃浜鸿韩浠借瘉鏂囦欢璺緞
+    legalRepresentativeIdCard: null, // string锛屽彲绌�
+    // 娉曞畾浠h〃浜鸿韩浠借瘉鍙风爜
+    legalRepresentativeIdNumber: null, // string锛屽彲绌�
+    // 娉曞畾浠h〃浜鸿仈绯荤數璇�
+    legalRepresentativePhone: null, // string($tel)锛屽彲绌�
+    // 浼佷笟浣忔墍锛堜笅鎷夐�夋嫨锛屾殏浠ュ瓧绗︿覆鎺ユ敹锛�
+    residence: null, // string锛屽彲绌�
+    // 浼佷笟鑱旂郴鐢佃瘽
+    enterprisePhone: null, // string($tel)锛屽彲绌�
+    // 浼佷笟鎴愮珛鏃堕棿锛堟牸寮忕ず渚嬶細2025-07-08 14:56:54锛�
+    establishmentTime: null, // string($date-time)锛屽彲绌�
+    // 浼佷笟涓昏惀涓氬姟
+    mainBusiness: null, // string锛屽彲绌�
+    // 浼佷笟閭
+    enterpriseEmail: null, // string锛屽彲绌�
+    // 涓氬姟缁忓姙浜哄鍚�
+    operatorName: null, // string锛屽彲绌�
+    // 涓氬姟缁忓姙浜鸿韩浠借瘉鏂囦欢璺緞鎴栨爣璇嗭紙涓婁紶鍚庡瓨鍌ㄤ俊鎭級
+    operatorIdCard: null, // string锛屽彲绌�
+    // 涓氬姟缁忓姙浜鸿韩浠借瘉鍙风爜
+    operatorIdNumber: null, // string锛屽彲绌�
+    // 涓氬姟缁忓姙浜鸿仈绯荤數璇�
+    operatorPhone: null, // string($tel)锛屽彲绌�
+    // 浼佷笟寮�鎴疯
+    bankName: null, // string锛屽彲绌�
+    // 浼佷笟閾惰璐﹀彿
+    bankAccount: null, // string锛屽彲绌�
+    bankAccountIMG: null,
+    exRoles: null
+  },
+  enterpriseList: [],
+  type: "",
+  rules: {
+    enterpriseType: [
+      { required: true, message: "璇烽�夋嫨浼佷笟绫诲瀷", trigger: "change" }
+    ],
+    businessLicense: [
+      { required: true, message: "璇蜂笂浼犺惀涓氭墽鐓�", trigger: "change" }
+    ],
+    enterpriseName: [
+      { required: true, message: "璇疯緭鍏ヤ紒涓氬悕绉�", trigger: "blur" }
+    ],
+    unifiedSocialCreditCode: [
+      { required: true, message: "璇疯緭鍏ョ粺涓�绀句細淇$敤浠g爜", trigger: "blur" }
+    ],
+    registeredCapital: [
+      { required: true, message: "璇疯緭鍏ユ敞鍐岃祫閲�", trigger: "blur" }
+    ],
+    legalRepresentativeName: [
+      { required: true, message: "璇疯緭鍏ユ硶瀹氫唬琛ㄤ汉濮撳悕", trigger: "blur" }
+    ],
+    legalRepresentativeIdCard: [
+      { required: true, message: "璇蜂笂浼犳硶瀹氫唬琛ㄤ汉韬唤璇�", trigger: "change" }
+    ],
+    legalRepresentativeIdNumber: [
+      {
+        required: true,
+        message: "璇疯緭鍏ユ硶瀹氫唬琛ㄤ汉韬唤璇佸彿鐮�",
+        trigger: "blur"
+      }
+    ],
+    legalRepresentativePhone: [
+      { required: true, message: "璇疯緭鍏ユ硶瀹氫唬琛ㄤ汉鑱旂郴鐢佃瘽", trigger: "blur" },
+      {
+        type: "string",
+        pattern: /^1[3-9]\d{9}$/,
+        message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜",
+        trigger: "blur"
+      }
+    ],
+    residence: [
+      { required: true, message: "璇烽�夋嫨浼佷笟浣忔墍", trigger: "change" }
+    ],
+    enterprisePhone: [
+      { required: true, message: "璇疯緭鍏ヤ紒涓氳仈绯荤數璇�", trigger: "blur" },
+      {
+        type: "string",
+        pattern: /^1[3-9]\d{9}$/,
+        message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜",
+        trigger: "blur"
+      }
+    ],
+    establishmentTime: [
+      { required: true, message: "璇烽�夋嫨浼佷笟鎴愮珛鏃堕棿", trigger: "change" }
+    ],
+    mainBusiness: [
+      { required: true, message: "璇疯緭鍏ヤ紒涓氫富钀ヤ笟鍔�", trigger: "blur" }
+    ],
+    enterpriseEmail: [
+      { required: true, message: "璇疯緭鍏ヤ紒涓氶偖绠�", trigger: "blur" },
+      { type: "email", message: "璇疯緭鍏ユ纭殑閭鍦板潃", trigger: "blur" }
+    ],
+    operatorName: [
+      { required: true, message: "璇疯緭鍏ヤ笟鍔$粡鍔炰汉濮撳悕", trigger: "blur" }
+    ],
+    operatorIdCard: [
+      { required: true, message: "璇蜂笂浼犱笟鍔$粡鍔炰汉韬唤璇�", trigger: "change" }
+    ],
+    operatorIdNumber: [
+      {
+        required: true,
+        message: "璇疯緭鍏ヤ笟鍔$粡鍔炰汉韬唤璇佸彿鐮�",
+        trigger: "blur"
+      }
+    ],
+    operatorPhone: [
+      { required: true, message: "璇疯緭鍏ヤ笟鍔$粡鍔炰汉鑱旂郴鐢佃瘽", trigger: "blur" },
+      {
+        type: "string",
+        pattern: /^1[3-9]\d{9}$/,
+        message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜",
+        trigger: "blur"
+      }
+    ],
+    bankName: [
+      { required: true, message: "璇疯緭鍏ヤ紒涓氬紑鎴疯", trigger: "blur" }
+    ],
+    bankAccount: [
+      { required: true, message: "璇疯緭鍏ヤ紒涓氶摱琛岃处鍙�", trigger: "blur" }
+    ]
+  },
+  loading: {
+    signIn: false
+  },
+  captchaImage: "",
+  rotateVerifyVisible: false,
+  // rotateVerifyImg: verifyImg,
+  // rotateVerifyImg: themeConfig.value.logoUrl,
+  secondVerEnabled: false,
+  // captchaEnabled: false,
+  isPassRotate: false,
+  capsLockVisible: false,
+  hideTenantForLogin: false,
+  expirySeconds: 60, // 楠岃瘉鐮佽繃鏈熸椂闂�
+  phoneSeconds: 0, // 鎵嬫満楠岃瘉鐮佸�掕鏃�
+  roleList: [],
+  showDialog: false,
+  srcList: []
+});
+onMounted(async () => {
+  state.ruleForm = cloneDeep(state.userInfo);
+  state.ruleForm.enterpriseType = state.ruleForm.enterpriseType.split(",");
+  // nowRole.value = useUserStoreHook()?.nowRole;
+  if (nowRole.value) {
+    state.ruleForm.transactionCode = nowRole.value.code;
+    // let nowRoleLiet;
+    // if (state.ruleForm.exRoles.length > 1) {
+    //   nowRoleLiet = state.ruleForm.exRoles.find(item => {
+    //     return item.exRoleId == nowRole.value.id;
+    //   });
+    //   nowRole.value = Object.assign(nowRole.value, nowRoleLiet);
+    // } else {
+    //   nowRole.value = Object.assign(nowRole.value, state.ruleForm.exRoles[0]);
+    // }
+    // state.userInfo.transactionName = nowRole.value.name;
+  } else {
+    state.ruleForm.transactionCode = route.query.code as string;
+    // state.userInfo.enterpriseTypeName = route.query.name;
+  }
+  let restypes = await enterpriseTypes();
+  state.enterpriseList = restypes?.result;
+});
+const showPreview = ref(false);
+const showImg = (name: string | number) => {
+  showPreview.value = true;
+  state.srcList = [state.ruleForm[name]];
+};
+const isLeaf = data => {
+  data.forEach(item => {
+    if (!item.child) {
+      item.leaf = true;
+    }
+  });
+};
+const loadNode = (node, resolve) => {
+  if (node.level === 0) {
+    isLeaf(node.data);
+    return resolve(node.data);
+  } else if (node.level > 0 && node.data.child) {
+    isLeaf(node.data.child);
+    return resolve(node.data.child);
+  } else {
+    return resolve([]);
+  }
+};
+
+// const showImg = name => {
+//   addDialog({
+//     width: "40%",
+//     title: "鏌ョ湅钀ヤ笟鎵х収",
+//     contentRenderer: () => <img src={state.userInfo[name]} />, // jsx 璇硶 锛堟敞鎰忓湪.vue鏂囦欢鍚敤jsx璇硶锛岄渶瑕佸湪script寮�鍚痩ang="tsx"锛�
+//     closeCallBack: ({ options, args }) => {
+//       // options.props 鏄搷搴斿紡鐨�
+//       // const { formInline } = options.props as FormProps;
+//       // const text = `濮撳悕锛�${formInline.user} 鍩庡競锛�${formInline.region}`;
+//       if (args?.command === "cancel") {
+//         // 鎮ㄧ偣鍑讳簡鍙栨秷鎸夐挳
+//         // active.value -= 1;
+//       } else if (args?.command === "sure") {
+//       } else {
+//       }
+//     }
+//   });
+// };
+const handleAvatarSuccess: UploadProps["onSuccess"] = (
+  response,
+  uploadFile
+) => {
+  if (response.code == "200") {
+    // state.ruleForm.businessLicense = URL.createObjectURL(uploadFile.raw!);
+    let res = response.result;
+    state.ruleForm.businessLicense = res.url; // 钀ヤ笟鎵х収鏂囦欢璺緞
+    state.ruleForm.enterpriseName = res.info.Name; // 浼佷笟鍚嶇О
+    state.ruleForm.unifiedSocialCreditCode = res.info.RegNum; // 缁熶竴绀句細淇$敤浠g爜
+    state.ruleForm.registeredCapital = res.info.Capital; // 娉ㄥ唽璧勯噾锛堝崟浣嶏細涓囧厓锛�
+    state.ruleForm.legalRepresentativeName = res.info.Person; // 娉曞畾浠h〃浜哄鍚�
+    state.ruleForm.establishmentTime = res.info.SetDate; // 浼佷笟鎴愮珛鏃堕棿锛堟牸寮忕ず渚嬶細2025-07-08 14:56:54锛�
+    state.ruleForm.residence = res.info.Address; // 浼佷笟浣忔墍锛堜笅鎷夐�夋嫨锛屾殏浠ュ瓧绗︿覆鎺ユ敹锛�
+    state.ruleForm.mainBusiness = res.info.Business; // 浼佷笟涓昏惀涓氬姟
+  } else {
+    message(response.message, {
+      type: "error"
+    });
+  }
+  isLoading.value = false;
+};
+const handleAvatarSuccessLegalRepresentative: UploadProps["onSuccess"] = (
+  response,
+  uploadFile
+) => {
+  console.log(response);
+  if (response.code == "200") {
+    // state.ruleForm.businessLicense = URL.createObjectURL(uploadFile.raw!);
+    let res = response.result;
+    state.ruleForm.legalRepresentativeIdCard = res.url; // 娉曞畾浠h〃浜鸿韩浠借瘉鏂囦欢璺緞
+    state.ruleForm.legalRepresentativeIdNumber = res.info.IdNum; // 娉曞畾浠h〃浜鸿韩浠借瘉鍙风爜
+  } else {
+    message(response.message, {
+      type: "error"
+    });
+  }
+  isLoading.value = false;
+};
+
+const handleAvatarSuccessOperator: UploadProps["onSuccess"] = (
+  response,
+  uploadFile
+) => {
+  if (response.code == "200") {
+    // state.ruleForm.businessLicense = URL.createObjectURL(uploadFile.raw!);
+    let res = response.result;
+    state.ruleForm.operatorName = res.info.Name; // 涓氬姟缁忓姙浜哄鍚�
+    state.ruleForm.operatorIdCard = res.url; // 涓氬姟缁忓姙浜鸿韩浠借瘉鏂囦欢璺緞鎴栨爣璇嗭紙涓婁紶鍚庡瓨鍌ㄤ俊鎭級
+    state.ruleForm.operatorIdNumber = res.info.IdNum; // 涓氬姟缁忓姙浜鸿韩浠借瘉鍙风爜
+  } else {
+    message(response.message, {
+      type: "error"
+    });
+  }
+  isLoading.value = false;
+};
+
+const beforeAvatarUpload: UploadProps["beforeUpload"] = rawFile => {
+  isLoading.value = true;
+  // if (rawFile.type !== "image/jpeg") {
+  //   message(`璇蜂笂浼爅peg绫诲瀷鐨勫浘鐗嘸, {
+  //     type: "error"
+  //   });
+  //   return false;
+  // } else if (rawFile.size / 1024 / 1024 > 2) {
+  //   message(`鍥剧墖澶у皬涓嶈兘瓒呰繃 2MB锛乣, {
+  //     type: "error"
+  //   });
+  //   return false;
+  // }
+  return true;
+};
+// 鎻愪氦淇敼浼佷笟娉ㄥ唽淇℃伅
+const modifyData = async () => {
+  let obj = cloneDeep(state.ruleForm);
+  obj.enterpriseType = state.ruleForm.enterpriseType.join(",");
+  let res = await changeCusExtend(obj);
+  if (res.code == "200") {
+    showDialog.value = false;
+    await useUserStoreHook().changeLogoInExRule({
+      ruleCode: useUserStoreHook().nowRole.code
+    });
+    initRouter();
+    message("淇敼鎴愬姛锛�", {
+      type: "success"
+    });
+  } else {
+    message(res.message, {
+      type: "error"
+    });
+  }
+};
+
+const handlebankAccountIMG: UploadProps["onSuccess"] = (
+  response,
+  uploadFile
+) => {
+  if (response.code == "200") {
+    // state.ruleForm.businessLicense = URL.createObjectURL(uploadFile.raw!);
+    state.ruleForm.bankAccountIMG = response.result;
+  } else {
+    message(response.message, {
+      type: "error"
+    });
+  }
+  isLoading.value = false;
+};
+
 defineOptions({
   name: "mine"
 });
 </script>
 
 <template>
-  <div>鎴戞槸涓汉涔嬪績</div>
+  <div>
+    <el-descriptions
+      v-if="state.userInfo.enterpriseName"
+      class="margin-top"
+      title=""
+      :column="3"
+      border
+    >
+      <!-- <template #extra>
+      <el-button type="primary">Operation</el-button>
+    </template> -->
+      <el-descriptions-item :span="3">
+        <template #label>
+          <div class="cell-item">浜ゆ槗涓讳綋</div>
+        </template>
+        {{ nowRole?.name }}
+        <el-tag v-if="nowRole.steps == 2" type="success">瀹℃牳宸查�氳繃 </el-tag>
+        <el-tag v-else-if="nowRole.steps == 3" type="danger"
+          >璧勬枡鏈�氳繃
+        </el-tag>
+        <el-tag v-else type="warning">璧勬枡瀹℃牳涓� </el-tag>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <div class="cell-item">浼佷笟鍚嶇О</div>
+        </template>
+        {{ userInfo.enterpriseName }}
+
+        <span @click="showImg('businessLicense')">
+          <el-link type="primary" underline>鏌ョ湅钀ヤ笟鎵х収</el-link>
+        </span>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <div class="cell-item">缁熶竴绀句細淇$敤浠g爜</div>
+        </template>
+        {{ userInfo.unifiedSocialCreditCode }}
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <div class="cell-item">娉ㄥ唽璧勯噾</div>
+        </template>
+        {{ userInfo.registeredCapital }}
+      </el-descriptions-item>
+      <el-descriptions-item :span="2">
+        <template #label>
+          <div class="cell-item">浼佷笟绫诲瀷</div>
+        </template>
+        {{ userInfo.enterpriseType }}
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <div class="cell-item">浣忔墍鍦�</div>
+        </template>
+        {{ userInfo.residence }}
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <div class="cell-item">鑱旂郴鐢佃瘽</div>
+        </template>
+        {{ userInfo.enterprisePhone }}
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <div class="cell-item">鎴愮珛鏃堕棿</div>
+        </template>
+        {{ userInfo.establishmentTime }}
+      </el-descriptions-item>
+      <el-descriptions-item :span="2">
+        <template #label>
+          <div class="cell-item">鐢靛瓙閭</div>
+        </template>
+        {{ userInfo.enterpriseEmail }}
+      </el-descriptions-item>
+      <el-descriptions-item :span="3" label-width="100">
+        <template #label>
+          <div class="cell-item">涓昏惀涓氬姟</div>
+        </template>
+        {{ userInfo.mainBusiness }}
+      </el-descriptions-item>
+
+      <el-descriptions-item>
+        <template #label>
+          <div class="cell-item">娉曞畾浠h〃浜�</div>
+        </template>
+        {{ userInfo.legalRepresentativeName }}
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <div class="cell-item">韬唤璇�</div>
+        </template>
+        {{ userInfo.legalRepresentativeIdNumber }}
+        <span @click="showImg('legalRepresentativeIdCard')">
+          <el-link type="primary" underline>鏌ョ湅韬唤璇�</el-link>
+        </span>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <div class="cell-item">鑱旂郴鐢佃瘽</div>
+        </template>
+        {{ userInfo.legalRepresentativePhone }}
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <div class="cell-item">涓氬姟缁忓姙浜�</div>
+        </template>
+        {{ userInfo.operatorName }}
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <div class="cell-item">韬唤璇�</div>
+        </template>
+        {{ userInfo.operatorIdNumber }}
+        <span style="margin-right: auto" @click="showImg('operatorIdCard')">
+          <el-link type="primary" underline>鏌ョ湅韬唤璇�</el-link>
+        </span>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <div class="cell-item">鑱旂郴鐢佃瘽</div>
+        </template>
+        {{ userInfo.operatorPhone }}
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <div class="cell-item">寮�鎴烽摱琛�</div>
+        </template>
+        {{ userInfo.bankName }}
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <div class="cell-item">閾惰璐﹀彿</div>
+        </template>
+        {{ userInfo.bankAccount }}
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <div class="cell-item">閾惰鏀舵浜岀淮鐮�</div>
+        </template>
+        <span style="margin-right: auto" @click="showImg('bankAccountIMG')">
+          <el-link type="primary" underline>鏌ョ湅浜岀淮鐮�</el-link>
+        </span>
+      </el-descriptions-item>
+    </el-descriptions>
+    <div v-if="isManager" class="m-5">
+      <el-button type="primary" :icon="Edit" @click="() => (showDialog = true)"
+        >淇敼璧勬枡</el-button
+      >
+    </div>
+    <el-dialog
+      v-model="showDialog"
+      title="淇敼璧勬枡"
+      :width="1500"
+      draggable
+      :close-on-click-modal="false"
+    >
+      <div v-loading="isLoading" class="flex justify-center mt-5">
+        <el-form
+          ref="ruleFormRef"
+          style="width: 95%"
+          :model="state.ruleForm"
+          :rules="state.rules"
+          label-width="auto"
+        >
+          <el-row>
+            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+              <el-form-item label="浼佷笟绫诲瀷" prop="enterpriseType">
+                <el-tree-select
+                  v-model="state.ruleForm.enterpriseType"
+                  :data="state.enterpriseList"
+                  multiple
+                  node-key="name"
+                  :render-after-expand="false"
+                  show-checkbox
+                  check-strictly
+                  check-on-click-node
+                  :load="loadNode"
+                  lazy
+                  :props="{ label: 'name', children: 'child', isLeaf: 'leaf' }"
+                />
+                <!-- <el-select
+                v-model="state.ruleForm.enterpriseType"
+                placeholder="璇烽�夋嫨"
+                clearable
+                multiple
+              >
+                <el-option
+                  v-for="item in state.enterpriseList"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select> -->
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row><div class="baseclass">鍩烘湰璧勬枡</div></el-row>
+          <!-- <el-row>
+            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+              <el-form-item label="浜ゆ槗涓讳綋">
+                <el-input
+                  v-model="state.ruleForm.transactionName"
+                  placeholder="璇疯緭鍏�"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row> -->
+          <el-row>
+            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+              <el-form-item label="钀ヤ笟鎵х収" prop="businessLicense">
+                <el-upload
+                  :action="`${baseUrlApi('/api/upFile/upBizLicense')}`"
+                  :show-file-list="false"
+                  :on-success="handleAvatarSuccess"
+                  :before-upload="beforeAvatarUpload"
+                  :headers="state.headers"
+                >
+                  <img
+                    v-if="state.ruleForm.businessLicense"
+                    :src="state.ruleForm.businessLicense"
+                    width="80px"
+                    height="50px"
+                  />
+                  <el-button v-else type="primary">涓婁紶</el-button>
+                </el-upload>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+              <el-form-item label="浼佷笟鍚嶇О" prop="enterpriseName">
+                <el-input
+                  v-model="state.ruleForm.enterpriseName"
+                  disabled
+                  placeholder="璇疯緭鍏�"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
+              <el-form-item
+                label="缁熶竴绀句細淇$敤浠g爜"
+                prop="unifiedSocialCreditCode"
+              >
+                <el-input
+                  v-model="state.ruleForm.unifiedSocialCreditCode"
+                  disabled
+                  placeholder="璇疯緭鍏�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
+              <el-form-item label="娉ㄥ唽璧勯噾" prop="registeredCapital">
+                <el-input
+                  v-model="state.ruleForm.registeredCapital"
+                  disabled
+                  placeholder="璇疯緭鍏�"
+                >
+                  <template #append>涓囧厓</template></el-input
+                >
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="24" :md="24" :lg="8" :xl="8">
+              <el-form-item label="娉曞畾浠h〃浜�" prop="legalRepresentativeName">
+                <el-input
+                  v-model="state.ruleForm.legalRepresentativeName"
+                  disabled
+                  placeholder="璇疯緭鍏�"
+                />
+              </el-form-item>
+            </el-col>
+
+            <el-col :xs="24" :sm="24" :md="24" :lg="16" :xl="16">
+              <el-form-item label="浣忔墍鍦�" prop="residence">
+                <el-input
+                  v-model="state.ruleForm.residence"
+                  disabled
+                  placeholder="璇疯緭鍏�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
+              <el-form-item label="鎴愮珛鏃堕棿" prop="establishmentTime">
+                <el-input
+                  v-model="state.ruleForm.establishmentTime"
+                  disabled
+                  placeholder="璇疯緭鍏�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+              <el-form-item label="涓昏惀涓氬姟" prop="mainBusiness">
+                <el-input
+                  v-model="state.ruleForm.mainBusiness"
+                  disabled
+                  placeholder="璇疯緭鍏�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
+              <el-form-item label="鑱旂郴鐢佃瘽" prop="enterprisePhone">
+                <el-input
+                  v-model="state.ruleForm.enterprisePhone"
+                  placeholder="璇疯緭鍏�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
+              <el-form-item label="閭" prop="enterpriseEmail">
+                <el-input
+                  v-model="state.ruleForm.enterpriseEmail"
+                  placeholder="璇疯緭鍏�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
+              <el-form-item label="寮�鎴疯" prop="bankName">
+                <el-input
+                  v-model="state.ruleForm.bankName"
+                  placeholder="璇疯緭鍏�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="24" :md="24" :lg="16" :xl="16">
+              <el-form-item label="閾惰璐﹀彿" prop="bankAccount">
+                <el-input
+                  v-model="state.ruleForm.bankAccount"
+                  placeholder="璇疯緭鍏�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+              <el-form-item label="寮�鎴疯鏀舵浜岀淮鐮�" prop="bankAccountIMG">
+                <el-upload
+                  :action="`${baseUrlApi('/api/upFile/file')}`"
+                  :show-file-list="false"
+                  :on-success="handlebankAccountIMG"
+                  :before-upload="beforeAvatarUpload"
+                  :headers="state.headers"
+                >
+                  <img
+                    v-if="state.ruleForm.bankAccountIMG"
+                    :src="state.ruleForm.bankAccountIMG"
+                    width="85.6px"
+                    height="5.4px"
+                  />
+                  <el-button v-else type="primary">涓婁紶</el-button>
+                </el-upload>
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row>
+            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+              <el-form-item label="娉曞畾浠h〃浜�" prop="legalRepresentativeIdCard">
+                <el-upload
+                  :action="`${baseUrlApi('/api/upFile/uploadIdCord?PageName=FRONT')}`"
+                  :show-file-list="false"
+                  :on-success="handleAvatarSuccessLegalRepresentative"
+                  :before-upload="beforeAvatarUpload"
+                  :headers="state.headers"
+                >
+                  <img
+                    v-if="state.ruleForm.legalRepresentativeIdCard"
+                    :src="state.ruleForm.legalRepresentativeIdCard"
+                    width="85.6px"
+                    height="5.4px"
+                  />
+                  <el-button v-else type="primary">涓婁紶韬唤璇�</el-button>
+                </el-upload>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
+              <el-form-item label="濮撳悕" prop="legalRepresentativeName">
+                <el-input
+                  v-model="state.ruleForm.legalRepresentativeName"
+                  disabled
+                  placeholder="璇疯緭鍏�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
+              <el-form-item label="韬唤璇�" prop="legalRepresentativeIdNumber">
+                <el-input
+                  v-model="state.ruleForm.legalRepresentativeIdNumber"
+                  disabled
+                  placeholder="璇疯緭鍏�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
+              <el-form-item label="鑱旂郴鐢佃瘽" prop="legalRepresentativePhone">
+                <el-input
+                  v-model="state.ruleForm.legalRepresentativePhone"
+                  placeholder="璇疯緭鍏�"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+              <el-form-item label="涓氬姟缁忓姙浜�" prop="operatorIdCard">
+                <el-upload
+                  :action="`${baseUrlApi('/api/upFile/uploadIdCord?PageName=FRONT')}`"
+                  :show-file-list="false"
+                  :on-success="handleAvatarSuccessOperator"
+                  :before-upload="beforeAvatarUpload"
+                  :headers="state.headers"
+                >
+                  <img
+                    v-if="state.ruleForm.operatorIdCard"
+                    :src="state.ruleForm.operatorIdCard"
+                    width="85.6px"
+                    height="5.4px"
+                  />
+                  <el-button v-else type="primary">涓婁紶韬唤璇�</el-button>
+                </el-upload>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
+              <el-form-item label="濮撳悕" prop="operatorName">
+                <el-input
+                  v-model="state.ruleForm.operatorName"
+                  disabled
+                  placeholder="璇疯緭鍏�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
+              <el-form-item label="韬唤璇�" prop="operatorIdNumber">
+                <el-input
+                  v-model="state.ruleForm.operatorIdNumber"
+                  disabled
+                  placeholder="璇疯緭鍏�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
+              <el-form-item label="鑱旂郴鐢佃瘽" prop="operatorPhone">
+                <el-input
+                  v-model="state.ruleForm.operatorPhone"
+                  placeholder="璇疯緭鍏�"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+      </div>
+      <template #footer>
+        <span class="dialog-footer">
+          <el-button @click="() => (showDialog = false)">鍙� 娑�</el-button>
+          <el-button type="primary" :disabled="isLoading" @click="modifyData"
+            >纭� 瀹�</el-button
+          >
+        </span>
+      </template>
+    </el-dialog>
+    <el-image-viewer
+      v-if="showPreview"
+      :url-list="state.srcList"
+      show-progress
+      @close="showPreview = false"
+    />
+  </div>
 </template>
 
-<style lang="sass" scoped></style>
+<style lang="scss">
+.el-descriptions {
+  margin-top: 20px;
+}
+.cell-item {
+  display: flex;
+  align-items: center;
+}
+.flex-between {
+  height: 100%;
+  display: flex;
+  justify-content: space-between;
+}
+.element {
+  position: absolute;
+  right: 0;
+}
+</style>

--
Gitblit v1.9.1