From 2801f5c8ceb1b7ddb77e79d757160c5cb89ff067 Mon Sep 17 00:00:00 2001
From: zhangwei <1504152376@qq.com>
Date: 星期一, 04 八月 2025 17:11:39 +0800
Subject: [PATCH] 个人资料更改

---
 /dev/null                            |  461 ---------------------------
 src/views/register/registernav.vue   |    4 
 src/views/mine/index.vue             |  127 ++++---
 src/views/system/dept/utils/hook.tsx |   21 
 src/utils/auth.ts                    |  131 +++++++
 src/store/modules/user.ts            |   12 
 src/store/types.ts                   |    8 
 src/api/mine.ts                      |   14 
 src/views/system/dept/utils/rule.ts  |  217 +++++++++++
 src/App.vue                          |    5 
 src/views/system/dept/form.vue       |    4 
 11 files changed, 449 insertions(+), 555 deletions(-)

diff --git a/src/App.vue b/src/App.vue
index d7af416..5fdc24a 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -29,5 +29,10 @@
 import { useUserStoreHook } from "@/store/modules/user";
 onMounted(() => {
   useUserStoreHook().getRoleList();
+  if (useUserStoreHook().nowRole.code) {
+    useUserStoreHook().changeLogoInExRule({
+      ruleCode: useUserStoreHook().nowRole.code
+    });
+  }
 });
 </script>
diff --git a/src/api/mine.ts b/src/api/mine.ts
index f18be93..459ba8d 100644
--- a/src/api/mine.ts
+++ b/src/api/mine.ts
@@ -8,10 +8,10 @@
 import { http } from "@/utils/http";
 import { baseUrlApi } from "./util";
 import type { Result } from "./types";
-
+import type { ResponseEnterprise } from "@/utils/auth";
 // 鑾峰彇涓汉涓績鏁版嵁
 export const cusExtendInfo = (data?: object) => {
-  return http.request<Result>(
+  return http.request<ResponseEnterprise>(
     "post",
     baseUrlApi("/api/customer/cusExtendInfo"),
     {
@@ -22,7 +22,11 @@
 
 // 淇敼涓汉涓績鏁版嵁
 export const changeCusExtend = (data?: object) => {
-  return http.request("post", baseUrlApi("/api/customer/changeCusExtend"), {
-    data
-  });
+  return http.request<Result>(
+    "post",
+    baseUrlApi("/api/customer/changeCusExtend"),
+    {
+      data
+    }
+  );
 };
diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts
index 152e9ec..2dce682 100644
--- a/src/store/modules/user.ts
+++ b/src/store/modules/user.ts
@@ -17,6 +17,7 @@
 import { useMultiTagsStoreHook } from "./multiTags";
 import {
   type DataInfo,
+  type ResponseEnterprise,
   setToken,
   setRoleListInfo,
   setNowRole,
@@ -26,6 +27,7 @@
 } from "@/utils/auth";
 import { exRole } from "@/api/register/index";
 import { cusExtendInfo } from "@/api/mine";
+import type { nowRoleType } from "@/store/types";
 
 export const useUserStore = defineStore("pure-user", {
   state: (): userType => ({
@@ -47,7 +49,7 @@
     // 浼佷笟璧勬枡
     enterpriseInfo:
       storageLocal().getItem<DataInfo<number>>("enterpriseInfo") ?? {},
-    nowRole: storageLocal().getItem<DataInfo<number>>("nowRole") ?? {},
+    nowRole: storageLocal().getItem<nowRoleType>("nowRole") ?? {},
     rolesList: storageLocal().getItem<DataInfo<number>>("rolesList") ?? []
   }),
   actions: {
@@ -68,7 +70,7 @@
       this.exRoles = exRoles;
     },
     /** 瀛樺偍瑙掕壊褰撳墠瑙掕壊 */
-    SET_NOW_ROLE(nowRole: object) {
+    SET_NOW_ROLE(nowRole: nowRoleType) {
       this.nowRole = nowRole;
     },
     /** 瀛樺偍瑙掕壊鍒楄〃 */
@@ -153,12 +155,12 @@
       });
     },
     async getCusExtendInfo() {
-      return new Promise<LoginResult>((resolve, reject) => {
+      return new Promise<ResponseEnterprise>((resolve, reject) => {
         cusExtendInfo()
           .then(data => {
-            data.result.username = data.result.enterpriseName;
+            setEnterpriseInfo(data.result);
             if (data?.code == 200) {
-              setEnterpriseInfo(data.result);
+              data.result.username = data.result?.enterpriseName;
               resolve(data);
             }
           })
diff --git a/src/store/types.ts b/src/store/types.ts
index 5d7e060..6f92baa 100644
--- a/src/store/types.ts
+++ b/src/store/types.ts
@@ -36,6 +36,12 @@
   hiddenSideBar: boolean;
 };
 
+export type nowRoleType = {
+  code: string;
+  name: string;
+  hasFlsh: boolean;
+};
+
 export type userType = {
   avatar?: string;
   username?: string;
@@ -45,6 +51,6 @@
   isRemembered?: boolean;
   loginDay?: number;
   enterpriseInfo: object;
-  nowRole: object;
+  nowRole: nowRoleType;
   rolesList: object;
 };
diff --git a/src/utils/auth.ts b/src/utils/auth.ts
index bf688e0..d4646a5 100644
--- a/src/utils/auth.ts
+++ b/src/utils/auth.ts
@@ -1,6 +1,7 @@
 import Cookies from "js-cookie";
 import { useUserStoreHook } from "@/store/modules/user";
 import { storageLocal, isString, isIncludeAllChildren } from "@pureadmin/utils";
+import type { nowRoleType } from "@/store/types";
 
 export interface DataInfo<T> {
   /** token */
@@ -19,6 +20,130 @@
   exRoles?: Array<string>;
   /** 褰撳墠鐧诲綍鐢ㄦ埛鐨勬寜閽骇鍒潈闄� */
   permissions?: Array<string>;
+}
+/**
+ * AdminResult_CusExtendDto锛屽叏灞�杩斿洖缁撴灉
+ */
+export interface ResponseEnterprise {
+  /**
+   * 鐘舵�佺爜
+   */
+  code?: number;
+  /**
+   * 闄勫姞鏁版嵁
+   */
+  extras?: null;
+  /**
+   * 閿欒淇℃伅
+   */
+  message?: null | string;
+  result?: CusExtendDto;
+  /**
+   * 鏃堕棿
+   */
+  time?: Date;
+  /**
+   * 绫诲瀷success銆亀arning銆乪rror
+   */
+  type?: null | string;
+}
+
+/**
+ * CusExtendDto锛岀敤鎴疯鑹茶祫鏂�
+ */
+export interface CusExtendDto {
+  /**
+   * 浼佷笟閾惰璐﹀彿
+   */
+  bankAccount?: null | string;
+  /**
+   * 浼佷笟寮�鎴疯
+   */
+  bankName?: null | string;
+  /**
+   * 钀ヤ笟鎵х収鏂囦欢璺緞
+   */
+  businessLicense?: null | string;
+  /**
+   * 浼佷笟閭
+   */
+  enterpriseEmail?: null | string;
+  /**
+   * 浼佷笟鍚嶇О
+   */
+  enterpriseName?: null | string;
+  /**
+   * 浼佷笟鑱旂郴鐢佃瘽
+   */
+  enterprisePhone?: null | string;
+  /**
+   * 浼佷笟绫诲瀷 浠庝紒涓氱被鍨嬩腑閫夋嫨 鏉ユ簮浼佷笟绫诲瀷
+   */
+  enterpriseType?: null | string;
+  /**
+   * 浼佷笟鎴愮珛鏃堕棿
+   */
+  establishmentTime?: Date;
+  /**
+   * 涓婚敭
+   */
+  id?: number | null;
+  /**
+   * 娉曞畾浠h〃浜鸿韩浠借瘉鏂囦欢璺緞
+   */
+  legalRepresentativeIdCard?: null | string;
+  /**
+   * 娉曞畾浠h〃浜鸿韩浠借瘉鍙风爜
+   */
+  legalRepresentativeIdNumber?: null | string;
+  /**
+   * 娉曞畾浠h〃浜哄鍚�
+   */
+  legalRepresentativeName?: null | string;
+  /**
+   * 娉曞畾浠h〃浜鸿仈绯荤數璇�
+   */
+  legalRepresentativePhone?: null | string;
+  /**
+   * 浼佷笟涓昏惀涓氬姟
+   */
+  mainBusiness?: null | string;
+  /**
+   * 涓氬姟缁忓姙浜鸿韩浠借瘉鏂囦欢璺緞鎴栨爣璇嗭紙涓婁紶鍚庡瓨鍌ㄤ俊鎭級
+   */
+  operatorIdCard?: null | string;
+  /**
+   * 涓氬姟缁忓姙浜鸿韩浠借瘉鍙风爜
+   */
+  operatorIdNumber?: null | string;
+  /**
+   * 涓氬姟缁忓姙浜哄鍚�
+   */
+  operatorName?: null | string;
+  /**
+   * 涓氬姟缁忓姙浜鸿仈绯荤數璇�
+   */
+  operatorPhone?: null | string;
+  /**
+   * 娉ㄥ唽璧勯噾锛堝崟浣嶏細涓囧厓 锛�
+   */
+  registeredCapital?: null | string;
+  /**
+   * 浼佷笟浣忔墍锛堜笅鎷夐�夋嫨锛岄渶缁撳悎瀹為檯鍙�夊�硷紝鍏堝瓧绗︿覆鎺ユ敹 锛�
+   */
+  residence?: null | string;
+  /**
+   * 浜ゆ槗涓讳綋 浠g爜 鍚岃鑹蹭唬鐮�
+   */
+  transactionCode: string;
+  /**
+   * 浜ゆ槗涓讳綋鍚嶇О
+   */
+  transactionName?: null | string;
+  /**
+   * 缁熶竴绀句細淇$敤浠g爜
+   */
+  unifiedSocialCreditCode?: null | string;
 }
 
 export const userKey = "user-info";
@@ -115,7 +240,7 @@
   }
 }
 
-export function setEnterpriseInfo(data: DataInfo<Date>) {
+export function setEnterpriseInfo(data: CusExtendDto) {
   useUserStoreHook().SET_ENTERPRISEINFO(data);
   useUserStoreHook().SET_USERNAME(data.enterpriseName);
   storageLocal().setItem("enterpriseInfo", data);
@@ -124,12 +249,12 @@
   storageLocal().setItem(userKey, obj);
 }
 
-export function setRoleListInfo(data: DataInfo<Date>) {
+export function setRoleListInfo(data: DataInfo<string>) {
   useUserStoreHook().SET_ROLES_LIST(data);
   storageLocal().setItem("rolesList", data);
 }
 
-export function setNowRole(data: DataInfo<Date>) {
+export function setNowRole(data: nowRoleType) {
   const list = storageLocal().getItem<DataInfo<number>>(userKey)?.exRoles ?? [];
   if (list.length > 0) {
     const obj = list.find(item => {
diff --git a/src/views/item/component/editDialog.vue b/src/views/item/component/editDialog.vue
deleted file mode 100644
index 56984a3..0000000
--- a/src/views/item/component/editDialog.vue
+++ /dev/null
@@ -1,307 +0,0 @@
-锘�<script lang="ts" name="procurementComplaint" setup>
-import { ref, reactive, onMounted } from "vue";
-import { ElMessage } from "element-plus";
-import type { FormRules } from "element-plus";
-import { formatDate } from "/@/utils/formatTime";
-import { useProcurementComplaintApi } from "/@/api/fb_p_complaints/procurementComplaint";
-import { log } from "console";
-
-//鐖剁骇浼犻�掓潵鐨勫嚱鏁帮紝鐢ㄤ簬鍥炶皟
-const emit = defineEmits(["reloadTable"]);
-const procurementComplaintApi = useProcurementComplaintApi();
-const ruleFormRef = ref();
-
-const state = reactive({
-  title: "",
-  loading: false,
-  showDialog: false,
-  ruleForm: {
-    complaints: [{ itemDescription: "" }]
-  } as any,
-  stores: {},
-  dropdownData: {} as any
-});
-
-const handlingStatus = [
-  { value: 0, label: "鍏跺畠" },
-  { value: 1, label: "鎴愮珛" },
-  { value: 2, label: "椹冲洖" },
-  { value: 3, label: "閮ㄥ垎鎴愮珛" }
-];
-
-// 鑷娣诲姞鍏朵粬瑙勫垯
-const rules = ref<FormRules>({
-  projectCode: [
-    { required: true, message: "璇烽�夋嫨椤圭洰缂栧彿锛�", trigger: "blur" }
-  ],
-  projectName: [
-    { required: true, message: "璇烽�夋嫨椤圭洰鍚嶇О锛�", trigger: "blur" }
-  ],
-  decisionDate: [
-    { required: true, message: "璇烽�夋嫨鍐冲畾鏃ユ湡锛�", trigger: "change" }
-  ],
-  purchaser: [{ required: true, message: "璇烽�夋嫨閲囪喘浜猴紒", trigger: "blur" }],
-  procurementAgency: [
-    { required: true, message: "璇烽�夋嫨閲囪喘浠g悊鏈烘瀯锛�", trigger: "blur" }
-  ]
-});
-
-// 椤甸潰鍔犺浇鏃�
-onMounted(async () => {});
-
-// 鎵撳紑寮圭獥
-const openDialog = async (row: any, title: string) => {
-  state.title = title;
-  row = row ?? { complaints: [{ itemDescription: "" }] };
-  state.ruleForm = row.id
-    ? await procurementComplaintApi.detail(row.id).then(res => res.data.result)
-    : JSON.parse(JSON.stringify(row));
-  state.showDialog = true;
-  console.log(state.ruleForm.complaints, state.ruleForm.complaints.length);
-};
-
-// 鍏抽棴寮圭獥
-const closeDialog = () => {
-  emit("reloadTable");
-  state.showDialog = false;
-};
-
-// 鎻愪氦
-const submit = async () => {
-  ruleFormRef.value.validate(async (isValid: boolean, fields?: any) => {
-    if (isValid) {
-      let values = state.ruleForm;
-      await procurementComplaintApi[state.ruleForm.id ? "update" : "add"](
-        values
-      );
-      closeDialog();
-    } else {
-      ElMessage({
-        message: `琛ㄥ崟鏈�${Object.keys(fields).length}澶勯獙璇佸け璐ワ紝璇蜂慨鏀瑰悗鍐嶆彁浜,
-        type: "error"
-      });
-    }
-  });
-};
-
-const changeComplaints = (index: any, txt: String) => {
-  if (txt == "add") {
-    state.ruleForm.complaints.splice(index + 1, 0, { itemDescription: "" });
-  } else {
-    state.ruleForm.complaints.splice(index, 1);
-  }
-};
-
-//灏嗗睘鎬ф垨鑰呭嚱鏁版毚闇茬粰鐖剁粍浠�
-defineExpose({ openDialog });
-</script>
-<template>
-  <div class="procurementComplaint-container">
-    <el-dialog
-      v-model="state.showDialog"
-      :width="900"
-      draggable
-      :close-on-click-modal="false"
-    >
-      <template #header>
-        <div style="color: #fff">
-          <span>{{ state.title }}</span>
-        </div>
-      </template>
-      <el-form
-        ref="ruleFormRef"
-        :model="state.ruleForm"
-        label-width="auto"
-        :rules="rules"
-      >
-        <el-row :gutter="35">
-          <el-form-item v-show="false">
-            <el-input v-model="state.ruleForm.id" />
-          </el-form-item>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="鍐冲畾鏃ユ湡" prop="decisionDate">
-              <el-date-picker
-                v-model="state.ruleForm.decisionDate"
-                type="date"
-                placeholder="璇烽�夋嫨鍐冲畾鏃ユ湡"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="椤圭洰鍚嶇О" prop="projectName">
-              <el-input
-                v-model="state.ruleForm.projectName"
-                placeholder="璇疯緭鍏ラ」鐩悕绉�"
-                maxlength="200"
-                show-word-limit
-                clearable
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="椤圭洰缂栧彿" prop="projectCode">
-              <el-input
-                v-model="state.ruleForm.projectCode"
-                placeholder="璇疯緭鍏ラ」鐩紪鍙�"
-                maxlength="50"
-                show-word-limit
-                clearable
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="閲囪喘浜�" prop="purchaser">
-              <el-input
-                v-model="state.ruleForm.purchaser"
-                placeholder="璇疯緭鍏ラ噰璐汉"
-                maxlength="100"
-                show-word-limit
-                clearable
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="閲囪喘浠g悊鏈烘瀯" prop="procurementAgency">
-              <el-input
-                v-model="state.ruleForm.procurementAgency"
-                placeholder="璇疯緭鍏ラ噰璐唬鐞嗘満鏋�"
-                maxlength="100"
-                show-word-limit
-                clearable
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item
-              label="閲囪喘鐩戠潱閮ㄩ棬"
-              prop="procurementSupervisionDepartment"
-            >
-              <el-input
-                v-model="state.ruleForm.procurementSupervisionDepartment"
-                placeholder="璇疯緭鍏ラ噰璐洃鐫i儴闂�"
-                maxlength="100"
-                show-word-limit
-                clearable
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="鎶曡瘔浜�" prop="complainant">
-              <el-input
-                v-model="state.ruleForm.complainant"
-                placeholder="璇疯緭鍏ユ姇璇変汉"
-                maxlength="100"
-                show-word-limit
-                clearable
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="绾夸笂鍦板潃" prop="url">
-              <el-input
-                v-model="state.ruleForm.url"
-                placeholder="璇疯緭鍏ョ嚎涓婂湴鍧�"
-                maxlength="255"
-                show-word-limit
-                clearable
-              />
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row :gutter="20">
-          <template
-            v-for="(item, index) in state.ruleForm.complaints"
-            :key="index"
-          >
-            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
-              <el-form-item
-                :label="`鎶曡瘔浜嬮」${index == 0 ? '' : index}`"
-                prop="complaints"
-              >
-                <el-input
-                  v-model="item.itemDescription"
-                  type="textarea"
-                  :placeholder="`璇疯緭鍏ユ姇璇変簨椤�${index == 0 ? '' : index}`"
-                  maxlength="1000"
-                  show-word-limit
-                  clearable
-                />
-              </el-form-item>
-            </el-col>
-            <el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12" class="">
-              <el-form-item
-                :label="`澶勭悊鎻忚堪${index == 0 ? '' : index}`"
-                prop="complaints"
-              >
-                <el-input
-                  v-model="item.handlingResult"
-                  type="textarea"
-                  :placeholder="`璇疯緭鍏ュ鐞嗘弿杩�${index == 0 ? '' : index}`"
-                  maxlength="1000"
-                  show-word-limit
-                  clearable
-                />
-              </el-form-item>
-            </el-col>
-            <el-col :xs="6" :sm="6" :md="6" :lg="6" :xl="6" class="mb20">
-              <el-form-item
-                :label="`鎶曡瘔鐘舵��${index == 0 ? '' : index}`"
-                prop="complaints"
-              >
-                <el-select v-model="item.handlingStatus">
-                  <el-option
-                    v-for="item in handlingStatus"
-                    :key="item.value"
-                    :label="item.label"
-                    :value="item.value"
-                  />
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :xs="1" :sm="1" :md="1" :lg="1" :xl="1" class="mb20">
-              <el-button type="primary" @click="changeComplaints(index, 'add')"
-                >+</el-button
-              >
-            </el-col>
-            <el-col
-              v-if="
-                state.ruleForm.complaints &&
-                state.ruleForm.complaints.length > 1
-              "
-              :xs="1"
-              :sm="1"
-              :md="1"
-              :lg="1"
-              :xl="1"
-              class="mb20"
-            >
-              <el-button type="primary" @click="changeComplaints(index)"
-                >-</el-button
-              >
-            </el-col>
-            <el-divider
-              v-if="
-                state.ruleForm.complaints &&
-                state.ruleForm.complaints.length > 1
-              "
-            />
-          </template>
-        </el-row>
-      </el-form>
-      <template #footer>
-        <span class="dialog-footer">
-          <el-button @click="() => (state.showDialog = false)">鍙� 娑�</el-button>
-          <el-button  type="primary" @click="submit"
-            >纭� 瀹�</el-button
-          >
-        </span>
-      </template>
-    </el-dialog>
-  </div>
-</template>
-<style lang="scss" scoped>
-:deep(.el-select),
-:deep(.el-input-number) {
-  width: 100%;
-}
-</style>
diff --git a/src/views/item/index.vue b/src/views/item/index.vue
deleted file mode 100644
index c733f4c..0000000
--- a/src/views/item/index.vue
+++ /dev/null
@@ -1,461 +0,0 @@
-锘�<script lang="ts" setup name="procurementComplaint">
-import { ref, reactive, onMounted } from "vue";
-import { ElMessageBox, ElMessage } from "element-plus";
-// import { downloadStreamFile } from "@/utils/download";
-// import { useProcurementComplaintApi } from "/@/api/fb_p_complaints/procurementComplaint";
-import { shouyeOrder } from "@/api/item/index";
-// import editDialog from "/@/views/fb_p_complaints/procurementComplaint/component/editDialog.vue";
-// import printDialog from "/@/views/system/print/component/hiprint/preview.vue";
-import ModifyRecord from "/@/components/table/modifyRecord.vue";
-// import ImportData from "/@/components/table/importData.vue";
-// import commonFunction from "@/utils/commonFunction";
-
-// const { dateFormatYMD } = commonFunction();
-// const procurementComplaintApi = useProcurementComplaintApi();
-const printDialogRef = ref();
-const editDialogRef = ref();
-const importDataRef = ref();
-const state = reactive({
-  exportLoading: false,
-  tableLoading: false,
-  stores: {},
-  showAdvanceQueryUI: false,
-  dropdownData: {} as any,
-  selectData: [] as any[],
-  tableQueryParams: {} as any,
-  tableParams: {
-    page: 1,
-    pageSize: 20,
-    total: 0,
-    field: "decisionDate", // 榛樿鐨勬帓搴忓瓧娈�
-    order: "descending", // 鎺掑簭鏂瑰悜
-    descStr: "descending" // 闄嶅簭鎺掑簭鐨勫叧閿瓧绗�
-  },
-  tableData: []
-});
-
-// 椤甸潰鍔犺浇鏃�
-onMounted(async () => {
-  handleQuery();
-});
-
-// 鏌ヨ鎿嶄綔
-const handleQuery = async (params: any = {}) => {
-  state.tableLoading = true;
-  state.tableParams = Object.assign(state.tableParams, params);
-  const result = await shouyeOrder();
-  console.log(result);
-
-  // .page(Object.assign(state.tableQueryParams, state.tableParams))
-  // .then(res => res.data.result);
-  state.tableParams.total = result?.total;
-  state.tableData = result?.items ?? [];
-  state.tableLoading = false;
-};
-
-// 鍒楁帓搴�
-const sortChange = async (column: any) => {
-  state.tableParams.field = column.prop;
-  state.tableParams.order = column.order;
-  await handleQuery();
-};
-
-// 鍒犻櫎
-const delProcurementComplaint = (row: any) => {
-  ElMessageBox.confirm(`纭畾瑕佸垹闄ゅ悧?`, "鎻愮ず", {
-    confirmButtonText: "纭畾",
-    cancelButtonText: "鍙栨秷",
-    type: "warning"
-  })
-    .then(async () => {
-      await procurementComplaintApi.delete({ id: row.id });
-      handleQuery();
-      ElMessage.success("鍒犻櫎鎴愬姛");
-    })
-    .catch(() => {});
-};
-
-// 鎵归噺鍒犻櫎
-const batchDelProcurementComplaint = () => {
-  ElMessageBox.confirm(
-    `纭畾瑕佸垹闄�${state.selectData.length}鏉¤褰曞悧?`,
-    "鎻愮ず",
-    {
-      confirmButtonText: "纭畾",
-      cancelButtonText: "鍙栨秷",
-      type: "warning"
-    }
-  )
-    .then(async () => {
-      await procurementComplaintApi
-        .batchDelete(state.selectData.map(u => ({ id: u.id })))
-        .then(res => {
-          ElMessage.success(`鎴愬姛鎵归噺鍒犻櫎${res.data.result}鏉¤褰昤);
-          handleQuery();
-        });
-    })
-    .catch(() => {});
-};
-handleQuery();
-</script>
-<template>
-  <div v-loading="state.exportLoading" class="procurementComplaint-container">
-    <el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
-      <el-form ref="queryForm" :model="state.tableQueryParams" labelWidth="90">
-        <el-row>
-          <el-col :xs="24" :sm="12" :md="12" :lg="5" :xl="4" class="mb10">
-            <el-form-item label="鍐冲畾鏃ユ湡">
-              <el-date-picker
-                v-model="state.tableQueryParams.decisionDateRange"
-                type="daterange"
-                value-format="YYYY-MM-DD HH:mm:ss"
-                start-placeholder="寮�濮嬫棩鏈�"
-                end-placeholder="缁撴潫鏃ユ湡"
-                :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col
-            v-if="state.showAdvanceQueryUI"
-            :xs="24"
-            :sm="12"
-            :md="12"
-            :lg="4"
-            :xl="4"
-            class="mb10"
-          >
-            <el-form-item label="椤圭洰鍚嶇О">
-              <el-input
-                v-model="state.tableQueryParams.projectName"
-                clearable
-                placeholder="璇疯緭鍏ラ」鐩悕绉�"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col
-            v-if="state.showAdvanceQueryUI"
-            :xs="24"
-            :sm="12"
-            :md="12"
-            :lg="4"
-            :xl="4"
-            class="mb10"
-          >
-            <el-form-item label="椤圭洰缂栧彿">
-              <el-input
-                v-model="state.tableQueryParams.projectCode"
-                clearable
-                placeholder="璇疯緭鍏ラ」鐩紪鍙�"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col
-            v-if="state.showAdvanceQueryUI"
-            :xs="24"
-            :sm="12"
-            :md="12"
-            :lg="4"
-            :xl="4"
-            class="mb10"
-          >
-            <el-form-item label="閲囪喘浜�">
-              <el-input
-                v-model="state.tableQueryParams.purchaser"
-                clearable
-                placeholder="璇疯緭鍏ラ噰璐汉"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col
-            v-if="state.showAdvanceQueryUI"
-            :xs="24"
-            :sm="12"
-            :md="12"
-            :lg="4"
-            :xl="4"
-            class="mb10"
-          >
-            <el-form-item label="閲囪喘浠g悊鏈烘瀯">
-              <el-input
-                v-model="state.tableQueryParams.procurementAgency"
-                clearable
-                placeholder="璇疯緭鍏ラ噰璐唬鐞嗘満鏋�"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col
-            v-if="state.showAdvanceQueryUI"
-            :xs="24"
-            :sm="12"
-            :md="12"
-            :lg="5"
-            :xl="4"
-            class="mb10"
-          >
-            <el-form-item label="閲囪喘鐩戠潱閮ㄩ棬">
-              <el-input
-                v-model="
-                  state.tableQueryParams.procurementSupervisionDepartment
-                "
-                clearable
-                placeholder="璇疯緭鍏ラ噰璐洃鐫i儴闂�"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col
-            v-if="state.showAdvanceQueryUI"
-            :xs="24"
-            :sm="12"
-            :md="12"
-            :lg="4"
-            :xl="4"
-            class="mb10"
-          >
-            <el-form-item label="鎶曡瘔浜�">
-              <el-input
-                v-model="state.tableQueryParams.complainant"
-                clearable
-                placeholder="璇疯緭鍏ユ姇璇変汉"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col
-            v-if="state.showAdvanceQueryUI"
-            :xs="24"
-            :sm="12"
-            :md="12"
-            :lg="4"
-            :xl="4"
-            class="mb10"
-          >
-            <el-form-item label="鎶曡瘔浜嬮」">
-              <el-input
-                v-model="state.tableQueryParams.keyword"
-                clearable
-                placeholder="璇疯緭鍏ユ姇璇変簨椤�"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col
-            v-if="state.showAdvanceQueryUI"
-            :xs="24"
-            :sm="12"
-            :md="12"
-            :lg="4"
-            :xl="4"
-            class="mb10"
-          >
-            <el-form-item label="鏄惁鎴愮珛">
-              <el-select
-                v-model="state.tableQueryParams.status"
-                placeholder="璇烽�夋嫨"
-                clearable
-              >
-                <el-option label="鎴愮珛" value="Valid" />
-                <el-option label="椹冲洖" value="Rejected" />
-                <el-option label="鍏跺畠" value="Other" />
-              </el-select>
-            </el-form-item>
-          </el-col>
-
-          <!-- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
-            <el-form-item label="鍏抽敭瀛�">
-              <el-input v-model="state.tableQueryParams.keyword" clearable placeholder="璇疯緭鍏ユā绯婃煡璇㈠叧閿瓧"/>
-            </el-form-item>
-          </el-col> -->
-          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
-            <el-form-item>
-              <el-button-group style="display: flex; align-items: center">
-                <el-button type="primary" icon="Search" @click="handleQuery">
-                  鏌ヨ
-                </el-button>
-                <el-button
-                  icon="ele-Refresh"
-                  @click="() => (state.tableQueryParams = {})"
-                >
-                  閲嶇疆
-                </el-button>
-                <!-- <el-button
-                  v-if="!state.showAdvanceQueryUI"
-                  icon="ele-ZoomIn"
-                  style="margin-left: 5px"
-                  @click="() => (state.showAdvanceQueryUI = true)"
-                >
-                  楂樼骇鏌ヨ
-                </el-button> -->
-                <el-button
-                  v-if="state.showAdvanceQueryUI"
-                  icon="ele-ZoomOut"
-                  style="margin-left: 5px"
-                  @click="() => (state.showAdvanceQueryUI = false)"
-                >
-                  闅愯棌
-                </el-button>
-                <el-button
-                  type="danger"
-                  style="margin-left: 5px"
-                  icon="Delete"
-                  :disabled="state.selectData.length == 0"
-                  @click="batchDelProcurementComplaint"
-                >
-                  鍒犻櫎
-                </el-button>
-                <el-button
-                  type="primary"
-                  style="margin-left: 5px"
-                  icon="ele-Plus"
-                  @click="
-                    editDialogRef.openDialog(null, '鏂板鏀垮簻閲囪喘鎶曡瘔鏁版嵁澶勭悊')
-                  "
-                >
-                  鏂板
-                </el-button>
-                <!-- <el-dropdown :show-timeout="70" :hide-timeout="50" @command="exportProcurementComplaintCommand">
-                  <el-button type="primary" style="margin-left:5px;" icon="ele-FolderOpened" 
-                    v-auth="'procurementComplaint:export'"> 瀵煎嚭 </el-button>
-                  <template #dropdown>
-                    <el-dropdown-menu>
-                      <el-dropdown-item command="select"
-                        :disabled="state.selectData.length == 0">瀵煎嚭閫変腑</el-dropdown-item>
-                      <el-dropdown-item command="current">瀵煎嚭鏈〉</el-dropdown-item>
-                      <el-dropdown-item command="all">瀵煎嚭鍏ㄩ儴</el-dropdown-item>
-                    </el-dropdown-menu>
-                  </template>
-                </el-dropdown>
-                <el-button type="warning" style="margin-left:5px;" icon="ele-MostlyCloudy"
-                  @click="importDataRef.openDialog()" v-auth="'procurementComplaint:import'"> 瀵煎叆 </el-button> -->
-              </el-button-group>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
-    </el-card>
-    <el-card class="full-table" shadow="hover" style="margin-top: 5px">
-      <el-table
-        v-loading="state.tableLoading"
-        :data="state.tableData"
-        :default-sort="{ prop: 'decisionDate', order: 'descending' }"
-        style="width: 100%"
-        tooltip-effect="light"
-        row-key="id"
-        border
-        @selection-change="
-          (val: any[]) => {
-            state.selectData = val;
-          }
-        "
-        @sort-change="sortChange"
-      >
-        <el-table-column type="selection" width="40" align="center" />
-        <el-table-column type="index" label="搴忓彿" width="55" align="center" />
-        <el-table-column
-          prop="decisionDate"
-          label="鍐冲畾鏃ユ湡"
-          width="90"
-          show-overflow-tooltip
-          sortable
-        >
-          <template #default="{ row }">
-            <span>{{ row.decisionDate }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column
-          prop="projectName"
-          label="椤圭洰鍚嶇О"
-          show-overflow-tooltip
-        />
-        <el-table-column
-          prop="projectCode"
-          label="椤圭洰缂栧彿"
-          width="135"
-          show-overflow-tooltip
-        />
-        <el-table-column
-          prop="purchaser"
-          label="閲囪喘浜�"
-          show-overflow-tooltip
-        />
-        <el-table-column
-          prop="procurementAgency"
-          label="閲囪喘浠g悊鏈烘瀯"
-          show-overflow-tooltip
-        />
-        <el-table-column
-          prop="complainant"
-          label="鎶曡瘔浜�"
-          show-overflow-tooltip
-        />
-        <el-table-column
-          prop="procurementSupervisionDepartment"
-          label="閲囪喘鐩戠潱閮ㄩ棬"
-          width="140"
-          show-overflow-tooltip
-        />
-        <!-- <el-table-column prop='complaints' label='鏄惁鎴愮珛' show-overflow-tooltip /> -->
-        <el-table-column prop="url" label="绾夸笂鍦板潃" show-overflow-tooltip>
-          <template #default="{ row }">
-            <el-link underline :href="row.url" target="_blank">{{
-              row.url
-            }}</el-link>
-          </template>
-        </el-table-column>
-        <!-- <el-table-column label="淇敼璁板綍" width="100" align="center" show-overflow-tooltip>
-          <template #default="scope">
-            <ModifyRecord :data="scope.row" />
-          </template>
-        </el-table-column> -->
-        <el-table-column
-          label="鎿嶄綔"
-          width="70"
-          align="center"
-          fixed="right"
-          show-overflow-tooltip
-        >
-          <template #default="scope">
-            <el-button
-              icon="ele-Edit"
-              size="small"
-              text
-              type="primary"
-              @click="
-                editDialogRef.openDialog(scope.row, '缂栬緫鏀垮簻閲囪喘鎶曡瘔鏁版嵁澶勭悊')
-              "
-            />
-            <el-button
-              icon="ele-Delete"
-              size="small"
-              text
-              type="primary"
-              @click="delProcurementComplaint(scope.row)"
-            />
-          </template>
-        </el-table-column>
-      </el-table>
-      <el-pagination
-        v-model:currentPage="state.tableParams.page"
-        v-model:page-size="state.tableParams.pageSize"
-        layout="total, sizes, prev, pager, next, jumper"
-        :page-sizes="[10, 20, 50, 100, 200, 500]"
-        :total="state.tableParams.total"
-        size="small"
-        background
-        @size-change="(val: any) => handleQuery({ pageSize: val })"
-        @current-change="(val: any) => handleQuery({ page: val })"
-      />
-
-      <printDialog
-        ref="printDialogRef"
-        :title="'鎵撳嵃鏀垮簻閲囪喘鎶曡瘔鏁版嵁澶勭悊'"
-        @reloadTable="handleQuery"
-      />
-      <editDialog ref="editDialogRef" @reloadTable="handleQuery" />
-    </el-card>
-  </div>
-</template>
-<style scoped>
-:deep(.el-input),
-:deep(.el-select),
-:deep(.el-input-number) {
-  width: 100%;
-}
-</style>
diff --git a/src/views/mine/index.vue b/src/views/mine/index.vue
index 9e9b734..48649b8 100644
--- a/src/views/mine/index.vue
+++ b/src/views/mine/index.vue
@@ -4,25 +4,23 @@
 import { useUserStoreHook } from "@/store/modules/user";
 import type { FormInstance, FormRules, UploadProps } from "element-plus";
 import { cloneDeep } from "@pureadmin/utils";
-import { onMounted, reactive, ref, watch } from "vue";
+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 {
-  addDialog,
-  closeDialog,
-  updateDialog,
-  closeAllDialog
-} from "@/components/ReDialog";
-
 const ruleFormRef = ref<FormInstance>();
 const isLoading = ref(false);
 const showDialog = ref(false);
-const nowRole = ref({});
+const nowRole = computed(() => {
+  return useUserStoreHook()?.nowRole;
+});
+const userInfo = computed(() => {
+  let obj = useUserStoreHook().enterpriseInfo;
+  return obj;
+});
 const state = reactive({
   userInfo: useUserStoreHook().enterpriseInfo,
   headers: {
@@ -40,7 +38,7 @@
     // 浜ゆ槗涓讳綋浠g爜锛堝悓瑙掕壊浠g爜锛屼笉鍙┖锛屾渶灏忛暱搴︿负1锛�
     transactionCode: "", // string锛屽繀濉�
     // 浜ゆ槗涓讳綋鍚嶇О
-    transactionName: null, // string锛屽彲绌�
+    transactionName: "", // string锛屽彲绌�
     // 钀ヤ笟鎵х収鏂囦欢璺緞
     businessLicense: null, // string锛屽彲绌�
     // 浼佷笟鍚嶇О
@@ -186,24 +184,28 @@
   expirySeconds: 60, // 楠岃瘉鐮佽繃鏈熸椂闂�
   phoneSeconds: 0, // 鎵嬫満楠岃瘉鐮佸�掕鏃�
   roleList: [],
-  showDialog: false
+  showDialog: false,
+  srcList: []
 });
 onMounted(async () => {
   state.ruleForm = cloneDeep(state.userInfo);
   state.ruleForm.enterpriseType = state.ruleForm.enterpriseType.split(",");
-  nowRole.value = useUserStoreHook()?.nowRole;
-  console.log(nowRole.value);
+  // nowRole.value = useUserStoreHook()?.nowRole;
   if (nowRole.value) {
     state.ruleForm.transactionCode = nowRole.value.code;
-    state.userInfo.transactionName = nowRole.value.name;
+    // state.userInfo.transactionName = nowRole.value.name;
   } else {
     state.ruleForm.transactionCode = route.query.code;
     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) {
@@ -223,24 +225,24 @@
   }
 };
 
-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 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
@@ -321,7 +323,9 @@
   let res = await changeCusExtend(obj);
   if (res.code == "200") {
     showDialog.value = false;
-    await useUserStoreHook().getCusExtendInfo();
+    await useUserStoreHook().changeLogoInExRule({
+      ruleCode: useUserStoreHook().nowRole.code
+    });
     message("淇敼鎴愬姛锛�", {
       type: "success"
     });
@@ -338,7 +342,13 @@
 
 <template>
   <div>
-    <el-descriptions class="margin-top" title="" :column="3" border>
+    <el-descriptions
+      v-if="state.userInfo.enterpriseName"
+      class="margin-top"
+      title=""
+      :column="3"
+      border
+    >
       <!-- <template #extra>
       <el-button type="primary">Operation</el-button>
     </template> -->
@@ -346,14 +356,15 @@
         <template #label>
           <div class="cell-item">浜ゆ槗涓讳綋</div>
         </template>
-        {{ state.userInfo.transactionName }}
-        <el-tag v-if="!nowRole.hasFlsh" type="danger">璧勬枡瀹℃牳涓� </el-tag>
+        {{ nowRole?.name }}
+        <el-tag v-if="nowRole?.hasFlsh" type="success">瀹℃牳宸查�氳繃 </el-tag>
+        <el-tag v-else type="danger">璧勬枡瀹℃牳涓� </el-tag>
       </el-descriptions-item>
       <el-descriptions-item>
         <template #label>
           <div class="cell-item">浼佷笟鍚嶇О</div>
         </template>
-        {{ state.userInfo.enterpriseName }}
+        {{ userInfo.enterpriseName }}
 
         <span @click="showImg('businessLicense')">
           <el-link type="primary" underline>鏌ョ湅钀ヤ笟鎵х収</el-link>
@@ -363,62 +374,62 @@
         <template #label>
           <div class="cell-item">缁熶竴绀句細淇$敤浠g爜</div>
         </template>
-        {{ state.userInfo.unifiedSocialCreditCode }}
+        {{ userInfo.unifiedSocialCreditCode }}
       </el-descriptions-item>
       <el-descriptions-item>
         <template #label>
           <div class="cell-item">娉ㄥ唽璧勯噾</div>
         </template>
-        {{ state.userInfo.registeredCapital }}
+        {{ userInfo.registeredCapital }}
       </el-descriptions-item>
       <el-descriptions-item :span="2">
         <template #label>
           <div class="cell-item">浼佷笟绫诲瀷</div>
         </template>
-        {{ state.userInfo.enterpriseType }}
+        {{ userInfo.enterpriseType }}
       </el-descriptions-item>
       <el-descriptions-item>
         <template #label>
           <div class="cell-item">浣忔墍鍦�</div>
         </template>
-        {{ state.userInfo.residence }}
+        {{ userInfo.residence }}
       </el-descriptions-item>
       <el-descriptions-item>
         <template #label>
           <div class="cell-item">鑱旂郴鐢佃瘽</div>
         </template>
-        {{ state.userInfo.legalRepresentativePhone }}
+        {{ userInfo.legalRepresentativePhone }}
       </el-descriptions-item>
       <el-descriptions-item>
         <template #label>
           <div class="cell-item">鎴愮珛鏃堕棿</div>
         </template>
-        {{ state.userInfo.establishmentTime }}
+        {{ userInfo.establishmentTime }}
       </el-descriptions-item>
       <el-descriptions-item :span="2">
         <template #label>
           <div class="cell-item">鐢靛瓙閭</div>
         </template>
-        {{ state.userInfo.enterpriseEmail }}
+        {{ userInfo.enterpriseEmail }}
       </el-descriptions-item>
       <el-descriptions-item :span="3" label-width="100">
         <template #label>
           <div class="cell-item">涓昏惀涓氬姟</div>
         </template>
-        {{ state.userInfo.mainBusiness }}
+        {{ userInfo.mainBusiness }}
       </el-descriptions-item>
 
       <el-descriptions-item>
         <template #label>
           <div class="cell-item">娉曞畾浠h〃浜�</div>
         </template>
-        {{ state.userInfo.legalRepresentativeName }}
+        {{ userInfo.legalRepresentativeName }}
       </el-descriptions-item>
       <el-descriptions-item>
         <template #label>
           <div class="cell-item">韬唤璇�</div>
         </template>
-        {{ state.userInfo.legalRepresentativeIdNumber }}
+        {{ userInfo.legalRepresentativeIdNumber }}
         <span @click="showImg('legalRepresentativeIdCard')">
           <el-link type="primary" underline>鏌ョ湅韬唤璇�</el-link>
         </span>
@@ -427,19 +438,19 @@
         <template #label>
           <div class="cell-item">鑱旂郴鐢佃瘽</div>
         </template>
-        {{ state.userInfo.legalRepresentativePhone }}
+        {{ userInfo.legalRepresentativePhone }}
       </el-descriptions-item>
       <el-descriptions-item>
         <template #label>
           <div class="cell-item">涓氬姟缁忓姙浜�</div>
         </template>
-        {{ state.userInfo.operatorName }}
+        {{ userInfo.operatorName }}
       </el-descriptions-item>
       <el-descriptions-item>
         <template #label>
           <div class="cell-item">韬唤璇�</div>
         </template>
-        {{ state.userInfo.operatorIdNumber }}
+        {{ userInfo.operatorIdNumber }}
         <span style="margin-right: auto" @click="showImg('operatorIdCard')">
           <el-link type="primary" underline>鏌ョ湅韬唤璇�</el-link>
         </span>
@@ -448,19 +459,19 @@
         <template #label>
           <div class="cell-item">鑱旂郴鐢佃瘽</div>
         </template>
-        {{ state.userInfo.operatorPhone }}
+        {{ userInfo.operatorPhone }}
       </el-descriptions-item>
       <el-descriptions-item>
         <template #label>
           <div class="cell-item">寮�鎴烽摱琛�</div>
         </template>
-        {{ state.userInfo.bankName }}
+        {{ userInfo.bankName }}
       </el-descriptions-item>
       <el-descriptions-item>
         <template #label>
           <div class="cell-item">閾惰璐﹀彿</div>
         </template>
-        {{ state.userInfo.bankAccount }}
+        {{ userInfo.bankAccount }}
       </el-descriptions-item>
     </el-descriptions>
     <div class="m-5">
@@ -761,6 +772,12 @@
         </span>
       </template>
     </el-dialog>
+    <el-image-viewer
+      v-if="showPreview"
+      :url-list="state.srcList"
+      show-progress
+      @close="showPreview = false"
+    />
   </div>
 </template>
 
diff --git a/src/views/register/registernav.vue b/src/views/register/registernav.vue
index 1ccf111..0ab30ee 100644
--- a/src/views/register/registernav.vue
+++ b/src/views/register/registernav.vue
@@ -608,7 +608,7 @@
   roleList: []
 });
 const toWelcome = () => {
-  router.replace("welcome");
+  router.replace("mine");
 };
 // 椤甸潰鍒濆鍖�
 onMounted(async () => {
@@ -703,7 +703,7 @@
     await useUserStoreHook().changeLogoInExRule({
       ruleCode: state.ruleForm.transactionCode
     });
-    await useUserStoreHook().getCusExtendInfo();
+    // await useUserStoreHook().getCusExtendInfo();
     active.value = 3;
   } else {
     message(res.message, {
diff --git a/src/views/system/dept/form.vue b/src/views/system/dept/form.vue
index d652539..de51a19 100644
--- a/src/views/system/dept/form.vue
+++ b/src/views/system/dept/form.vue
@@ -113,7 +113,7 @@
         </el-form-item>
       </re-col>
       <re-col :value="6" :xs="24" :sm="24">
-        <el-form-item label="閲囪喘鏂瑰紡">
+        <el-form-item label="閲囪喘鏂瑰紡" prop="caigoufangshi">
           <el-select
             v-model="newFormInline.caigoufangshi"
             placeholder="璇烽�夋嫨閲囪喘鏂瑰紡"
@@ -351,7 +351,7 @@
         </el-form-item>
       </re-col>
       <re-col :value="6" :xs="24" :sm="24">
-        <el-form-item label="鑱旂郴浜轰汉" prop="dailiLianxiren">
+        <el-form-item label="鑱旂郴浜�" prop="dailiLianxiren">
           <el-input
             v-model="newFormInline.dailiLianxiren"
             clearable
diff --git a/src/views/system/dept/utils/hook.tsx b/src/views/system/dept/utils/hook.tsx
index 70bc46e..bb68750 100644
--- a/src/views/system/dept/utils/hook.tsx
+++ b/src/views/system/dept/utils/hook.tsx
@@ -231,8 +231,8 @@
           toubiaobaozhengjin: row?.toubiaobaozhengjin ?? null, // 鎶曟爣淇濊瘉閲戯紙鍙�夛級
           lianhetitoubiao: row?.lianhetitoubiao ?? null, // 鑱斿悎浣撴姇鏍囷紙鍙�夛級
           kaibiaofangshi: row?.kaibiaofangshi ?? null, // 寮�鏍囨柟寮忥紙鍙�夛級
-          shifoufenbao: row?.shifoufenbao ?? false, // 鏄惁鍒嗗寘锛堝彲閫夛級
-          shifoutuisongxuanchuan: row?.shifoutuisongxuanchuan ?? true, // 鏄惁鎺ㄩ�佸浼狅紙鍙�夛級
+          shifoufenbao: row?.shifoufenbao ?? "false", // 鏄惁鍒嗗寘锛堝彲閫夛級
+          shifoutuisongxuanchuan: row?.shifoutuisongxuanchuan ?? "true", // 鏄惁鎺ㄩ�佸浼狅紙鍙�夛級
           caigourenmingcheng: row?.caigourenmingcheng ?? null, // 閲囪喘浜哄悕绉帮紙鍙�夛級
           xingzhengquyu: row?.xingzhengquyu.split(",") ?? [], // 琛屾斂鍖哄煙锛堝彲閫夛級
           xingzhengquyuName: row?.xingzhengquyuName ?? null, // 琛屾斂鍖哄煙鍚嶇О锛堝彲閫夛級
@@ -258,9 +258,10 @@
       draggable: true,
       fullscreen: deviceDetection(),
       fullscreenIcon: true,
+      sureBtnLoading: true,
       closeOnClickModal: false,
       contentRenderer: () => h(editForm, { ref: formRef, formInline: null }),
-      beforeSure: (done, { options }) => {
+      beforeSure: (done, { options, closeLoading }) => {
         const FormRef = formRef.value.getRef();
         const curData = cloneDeep(options.props.formInline as FormItemProps);
         async function chores() {
@@ -279,14 +280,14 @@
             done(); // 鍏抽棴寮规
             onSearch(); // 鍒锋柊琛ㄦ牸鏁版嵁
           } else {
+            closeLoading();
             message(res.message, {
               type: "error"
             });
           }
         }
-        FormRef.validate(valid => {
+        FormRef.validate((valid, obj) => {
           if (valid) {
-            console.log("curData", curData);
             // 琛ㄥ崟瑙勫垯鏍¢獙閫氳繃
             if (title === "鏂板") {
               // 瀹為檯寮�鍙戝厛璋冪敤鏂板鎺ュ彛锛屽啀杩涜涓嬮潰鎿嶄綔
@@ -295,6 +296,16 @@
               // 瀹為檯寮�鍙戝厛璋冪敤淇敼鎺ュ彛锛屽啀杩涜涓嬮潰鎿嶄綔
               chores();
             }
+          } else {
+            closeLoading();
+            const fail = [];
+            for (const key in obj) {
+              fail.push(obj[key][0].message);
+            }
+            message(fail[0], {
+              type: "warning"
+            });
+            return false;
           }
         });
       }
diff --git a/src/views/system/dept/utils/rule.ts b/src/views/system/dept/utils/rule.ts
index b20bf67..3e6edbc 100644
--- a/src/views/system/dept/utils/rule.ts
+++ b/src/views/system/dept/utils/rule.ts
@@ -4,8 +4,207 @@
 
 /** 鑷畾涔夎〃鍗曡鍒欐牎楠� */
 export const formRules = reactive(<FormRules>{
-  name: [{ required: true, message: "閮ㄩ棬鍚嶇О涓哄繀濉」", trigger: "blur" }],
-  phone: [
+  // 椤圭洰缂栧彿锛堝繀濉級
+  projectCode: [
+    { required: true, message: "璇疯緭鍏ラ」鐩紪鍙�", trigger: "blur" },
+    { max: 50, message: "椤圭洰缂栧彿闀垮害涓嶈兘瓒呰繃50涓瓧绗�", trigger: "blur" }
+  ],
+  // 椤圭洰鍚嶇О锛堝繀濉級
+  projectName: [
+    { required: true, message: "璇疯緭鍏ラ」鐩悕绉�", trigger: "blur" },
+    { max: 200, message: "椤圭洰鍚嶇О闀垮害涓嶈兘瓒呰繃200涓瓧绗�", trigger: "blur" }
+  ],
+  // 琛屼笟鍝佺洰锛堝彲閫夛紝浣嗛�夋嫨鏃堕渶鏍¢獙锛�
+  hangyepinmu: [
+    { required: true, message: "璇烽�夋嫨琛屼笟鍝佺洰", trigger: "blur" },
+    { type: "string", message: "琛屼笟鍝佺洰鏍煎紡涓嶆纭�", trigger: "change" }
+  ],
+  // 閲囪喘鏂瑰紡锛堝彲閫夛紝浣嗛�夋嫨鏃堕渶鏍¢獙锛�
+  caigoufangshi: [
+    { required: true, message: "璇烽�夋嫨閲囪喘鏂瑰紡", trigger: "blur" },
+    { type: "string", message: "閲囪喘鏂瑰紡鏍煎紡涓嶆纭�", trigger: "change" }
+  ],
+  // 閲囪喘棰勭畻锛堝彲閫夛紝闇�涓烘暟瀛楋級
+  caigouyusuan: [
+    { required: true, message: "璇疯緭鍏ラ噰璐绠�", trigger: "blur" },
+    { type: "number", message: "閲囪喘棰勭畻蹇呴』涓烘暟瀛�", trigger: "blur" },
+    { min: 0, message: "閲囪喘棰勭畻涓嶈兘涓鸿礋鏁�", trigger: "blur" }
+  ],
+  // 瀹氭爣瑙勫垯锛堝彲閫夛級
+  dingbiaoguize: [
+    { required: true, message: "璇烽�夋嫨瀹氭爣瑙勫垯", trigger: "blur" },
+    { type: "string", message: "瀹氭爣瑙勫垯鏍煎紡涓嶆纭�", trigger: "change" }
+  ],
+  // 鎶ュ悕璐癸紙鍙�夛紝闇�涓烘暟瀛楋級
+  baomingfei: [
+    { required: true, message: "璇疯緭鍏ユ姤鍚嶈垂", trigger: "blur" },
+    { type: "number", message: "鎶ュ悕璐瑰繀椤讳负鏁板瓧", trigger: "blur" },
+    { min: 0, message: "鎶ュ悕璐逛笉鑳戒负璐熸暟", trigger: "blur" }
+  ],
+  // 鎶曟爣淇濊瘉閲戯紙鍙�夛紝闇�涓烘暟瀛楋級
+  toubiaobaozhengjin: [
+    { required: true, message: "璇疯緭鍏ユ姇鏍囦繚璇侀噾璐�", trigger: "blur" },
+    { type: "number", message: "鎶曟爣淇濊瘉閲戝繀椤讳负鏁板瓧", trigger: "blur" },
+    { min: 0, message: "鎶曟爣淇濊瘉閲戜笉鑳戒负璐熸暟", trigger: "blur" }
+  ],
+  // 鑱斿悎浣撴姇鏍囷紙鍙�夛紝闇�涓哄竷灏斿�硷級
+  lianhetitoubiao: [
+    { required: true, message: "璇烽�夋嫨鑱斿悎浣撴姇鏍�", trigger: "blur" }
+    // { type: "boolean", message: "鑱斿悎浣撴姇鏍囧繀椤讳负甯冨皵鍊�", trigger: "change" }
+  ],
+  // 寮�鏍囨柟寮忥紙鍙�夛級
+  kaibiaofangshi: [
+    { required: true, message: "璇烽�夋嫨寮�鏍囨柟寮�", trigger: "blur" }
+    // { type: "string", message: "寮�鏍囨柟寮忔牸寮忎笉姝g‘", trigger: "change" }
+  ],
+  // 鏄惁鍒嗗寘锛堝彲閫夛紝闇�涓哄竷灏斿�硷級
+  shifoufenbao: [
+    { required: true }
+    // { type: "boolean", message: "鏄惁鍒嗗寘蹇呴』涓哄竷灏斿��", trigger: "change" }
+  ],
+  // 鏄惁鎺ㄩ�佸浼狅紙鍙�夛紝闇�涓哄竷灏斿�硷級
+  shifoutuisongxuanchuan: [
+    { required: true }
+    // { type: "boolean", message: "鏄惁鎺ㄩ�佸浼犲繀椤讳负甯冨皵鍊�", trigger: "change" }
+  ],
+  // 閲囪喘浜哄悕绉帮紙鍙�夛級
+  caigourenmingcheng: [
+    { required: true, message: "璇疯緭鍏ラ噰璐汉鍚嶇О", trigger: "blur" },
+    { max: 100, message: "閲囪喘浜哄悕绉伴暱搴︿笉鑳借秴杩�100涓瓧绗�", trigger: "blur" }
+  ],
+  // 琛屾斂鍖哄煙锛堝彲閫夛紝闇�涓烘暟缁勶級
+  xingzhengquyu: [
+    { required: true, message: "璇烽�夋嫨琛屾斂鍖哄煙", trigger: "blur" },
+    { type: "array", message: "琛屾斂鍖哄煙蹇呴』涓烘暟缁勬牸寮�", trigger: "change" }
+  ],
+  // 琛屾斂鍖哄煙鍚嶇О锛堝彲閫夛級
+  xingzhengquyuName: [
+    { required: false },
+    { max: 100, message: "琛屾斂鍖哄煙鍚嶇О闀垮害涓嶈兘瓒呰繃100涓瓧绗�", trigger: "blur" }
+  ],
+  // 鏈烘瀯浠g爜锛堝彲閫夛紝楠岃瘉鏍煎紡锛�
+  jigoudaima: [
+    { required: true, message: "璇疯緭鍏ユ満鏋勪唬鐮�", trigger: "blur" },
+    {
+      pattern: /^[A-Z0-9]{8}-[A-Z0-9]{1}$/,
+      message: "鏈烘瀯浠g爜鏍煎紡涓嶆纭�",
+      trigger: "blur"
+    }
+  ],
+  // 浠g爜绫诲瀷锛堝彲閫夛級
+  daimaleixing: [
+    { required: true, message: "璇烽�夋嫨浠g爜绫诲瀷", trigger: "blur" },
+    { type: "string", message: "浠g爜绫诲瀷鏍煎紡涓嶆纭�", trigger: "change" }
+  ],
+  // 鑱旂郴浜猴紙鍙�夛級
+  lianxiren: [
+    { required: true, message: "璇疯緭鍏ヨ仈绯讳汉", trigger: "blur" },
+    { max: 50, message: "鑱旂郴浜哄鍚嶉暱搴︿笉鑳借秴杩�50涓瓧绗�", trigger: "blur" }
+  ],
+  // 鑱旂郴鐢佃瘽锛堝彲閫夛紝楠岃瘉鎵嬫満鍙锋牸寮忥級
+  lianxidianhua: [
+    { required: true, message: "璇疯緭鍏ヨ仈绯讳汉鐢佃瘽", trigger: "blur" },
+    {
+      pattern: /^1[3-9]\d{9}$/,
+      message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜",
+      trigger: "blur"
+    }
+  ],
+  // 閫氫俊鍦板潃锛堝彲閫夛級
+  tongxindizhi: [
+    { required: true, message: "璇疯緭鍏ラ�氫俊鍦板潃", trigger: "blur" },
+    { max: 200, message: "閫氫俊鍦板潃闀垮害涓嶈兘瓒呰繃200涓瓧绗�", trigger: "blur" }
+  ],
+  // 鐢靛瓙閭欢锛堝彲閫夛紝楠岃瘉閭鏍煎紡锛�
+  dianziyoujian: [
+    { required: true, message: "璇疯緭鍏ョ數瀛愰偖浠�", trigger: "blur" },
+    { type: "email", message: "璇疯緭鍏ユ纭殑閭鍦板潃", trigger: "blur" }
+  ],
+  // 椤圭洰缁忓姙浜猴紙鍙�夛級
+  xiangmujingbanren: [
+    { required: true, message: "璇疯緭鍏ラ」鐩粡鍔炰汉", trigger: "blur" },
+    { max: 50, message: "椤圭洰缁忓姙浜哄鍚嶉暱搴︿笉鑳借秴杩�50涓瓧绗�", trigger: "blur" }
+  ],
+  // 鑱屽姟锛堝彲閫夛級
+  zhiwu: [
+    { required: true, message: "璇疯緭鍏ヨ亴鍔�", trigger: "blur" },
+    { max: 50, message: "鑱屽姟鍚嶇О闀垮害涓嶈兘瓒呰繃50涓瓧绗�", trigger: "blur" }
+  ],
+  // 缁忓姙浜虹數璇濓紙鍙�夛紝楠岃瘉鎵嬫満鍙锋牸寮忥級
+  jingbanrendianhua: [
+    { required: true, message: "璇疯緭鍏ョ粡鍔炰汉鐢佃瘽", trigger: "blur" },
+    {
+      pattern: /^1[3-9]\d{9}$/,
+      message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜",
+      trigger: "blur"
+    }
+  ],
+  // 浠g悊鏈烘瀯鍚嶇О锛堝彲閫夛級
+  dailijigoumingcheng: [
+    { required: true, message: "璇疯緭鍏ヤ唬鐞嗘満鏋勫悕绉�", trigger: "blur" },
+    { max: 100, message: "浠g悊鏈烘瀯鍚嶇О闀垮害涓嶈兘瓒呰繃100涓瓧绗�", trigger: "blur" }
+  ],
+  // 浠g悊鏈烘瀯鑱旂郴浜猴紙鍙�夛級
+  dailiLianxiren: [
+    { required: true, message: "璇疯緭鍏ヨ仈绯讳汉", trigger: "blur" },
+    {
+      max: 50,
+      message: "鑱旂郴浜哄鍚嶉暱搴︿笉鑳借秴杩�50涓瓧绗�",
+      trigger: "blur"
+    }
+  ],
+  // 浠g悊鏈烘瀯鑱旂郴鐢佃瘽锛堝彲閫夛紝楠岃瘉鎵嬫満鍙锋牸寮忥級
+  dailiLianxidianhua: [
+    { required: true, message: "璇疯緭鍏ヨ仈绯荤數璇�", trigger: "blur" },
+    {
+      pattern: /^1[3-9]\d{9}$/,
+      message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜",
+      trigger: "blur"
+    }
+  ],
+  // 浠g悊鏈烘瀯鐢靛瓙閭欢锛堝彲閫夛紝楠岃瘉閭鏍煎紡锛�
+  dailiDianziyoujian: [
+    { required: true, message: "璇疯緭鍏ョ數瀛愰偖浠�", trigger: "blur" },
+    { type: "email", message: "璇疯緭鍏ユ纭殑閭鍦板潃", trigger: "blur" },
+    {
+      validator: (rule, value, callback) => {
+        if (value === "") {
+          callback();
+        } else if (!isEmail(value)) {
+          callback(new Error("璇疯緭鍏ユ纭殑閭鏍煎紡"));
+        } else {
+          callback();
+        }
+      },
+      trigger: "blur"
+    }
+  ],
+  // 浠g悊鏈烘瀯閫氫俊鍦板潃锛堝彲閫夛級
+  dailiTongxindizhi: [
+    { required: true, message: "璇疯緭鍏ラ�氫俊鍦板潃", trigger: "blur" },
+    {
+      max: 200,
+      message: "閫氫俊鍦板潃闀垮害涓嶈兘瓒呰繃200涓瓧绗�",
+      trigger: "blur"
+    }
+  ],
+  // 浠g悊鏈烘瀯椤圭洰缁忕悊锛堝彲閫夛級
+  dailiXiangmujingli: [
+    { required: true, message: "璇疯緭鍏ラ」鐩粡鐞�", trigger: "blur" },
+    {
+      max: 50,
+      message: "椤圭洰缁忕悊濮撳悕闀垮害涓嶈兘瓒呰繃50涓瓧绗�",
+      trigger: "blur"
+    }
+  ],
+  // 浠g悊鏈烘瀯椤圭洰缁忕悊鑱旂郴鐢佃瘽锛堝彲閫夛紝楠岃瘉鎵嬫満鍙锋牸寮忥級
+  dailijingliLianxidianhua: [
+    { required: true, message: "璇疯緭鍏ヨ仈绯荤數璇�", trigger: "blur" },
+    {
+      pattern: /^1[3-9]\d{9}$/,
+      message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜",
+      trigger: "blur"
+    },
     {
       validator: (rule, value, callback) => {
         if (value === "") {
@@ -18,20 +217,6 @@
       },
       trigger: "blur"
       // trigger: "click" // 濡傛灉鎯冲湪鐐瑰嚮纭畾鎸夐挳鏃惰Е鍙戣繖涓牎楠岋紝trigger 璁剧疆鎴� click 鍗冲彲
-    }
-  ],
-  email: [
-    {
-      validator: (rule, value, callback) => {
-        if (value === "") {
-          callback();
-        } else if (!isEmail(value)) {
-          callback(new Error("璇疯緭鍏ユ纭殑閭鏍煎紡"));
-        } else {
-          callback();
-        }
-      },
-      trigger: "blur"
     }
   ]
 });

--
Gitblit v1.9.1