From 14f7d39b1885442de42bdd81806774151baddd4f Mon Sep 17 00:00:00 2001
From: zhangwei <1504152376@qq.com>
Date: 星期二, 22 七月 2025 15:37:03 +0800
Subject: [PATCH] 'ts报红部分解决'

---
 src/router/modules/remaining.ts         |    2 
 .vscode/settings.json                   |    2 
 src/views/login/index.vue               |   28 +-
 src/api/upload/index.ts                 |   13 -
 src/store/modules/user.ts               |    6 
 src/api/register/index.ts               |   25 +-
 src/api/user.ts                         |   27 +++
 src/api/types.ts                        |   19 ++
 src/views/home/component/myFooter.vue   |    6 
 src/views/home/index.vue                |    6 
 src/views/register/registernav.vue      |   11 -
 src/views/item/component/editDialog.vue |  284 ++++++++++++++++++++++++----------
 tsconfig.json                           |    2 
 src/views/register/index.vue            |   11 
 src/api/mine.ts                         |   17 +
 src/api/login/index.ts                  |    9 
 16 files changed, 310 insertions(+), 158 deletions(-)

diff --git a/.vscode/settings.json b/.vscode/settings.json
index 388b96f..7b0ec58 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -40,4 +40,6 @@
     "v-ripple"
   ],
   "vscodeCustomCodeColor.highlightValueColor": "#b392f0",
+  // "typescript.tsdk": "node_modules/typescript/lib",
+  "vetur.validation.script": false
 }
\ No newline at end of file
diff --git a/src/api/login/index.ts b/src/api/login/index.ts
index b853982..aeeafbc 100644
--- a/src/api/login/index.ts
+++ b/src/api/login/index.ts
@@ -7,11 +7,10 @@
 
 import { http } from "@/utils/http";
 import { baseUrlApi } from "../util";
-type Result = {
-  success: boolean;
-  data: Array<any>;
-};
+import type { Result } from "../types";
 
 export const login = (data?: object) => {
-  return http.request("post", baseUrlApi("/api/auth/loginPhone"), { data });
+  return http.request<Result>("post", baseUrlApi("/api/auth/loginPhone"), {
+    data
+  });
 };
diff --git a/src/api/mine.ts b/src/api/mine.ts
index 84ee178..f18be93 100644
--- a/src/api/mine.ts
+++ b/src/api/mine.ts
@@ -7,17 +7,22 @@
 
 import { http } from "@/utils/http";
 import { baseUrlApi } from "./util";
-type Result = {
-  success: boolean;
-  data: Array<any>;
-};
+import type { Result } from "./types";
 
 // 鑾峰彇涓汉涓績鏁版嵁
 export const cusExtendInfo = (data?: object) => {
-  return http.request("post", baseUrlApi("/api/customer/cusExtendInfo"), { data });
+  return http.request<Result>(
+    "post",
+    baseUrlApi("/api/customer/cusExtendInfo"),
+    {
+      data
+    }
+  );
 };
 
 // 淇敼涓汉涓績鏁版嵁
 export const changeCusExtend = (data?: object) => {
-  return http.request("post", baseUrlApi("/api/customer/changeCusExtend"), { data });
+  return http.request("post", baseUrlApi("/api/customer/changeCusExtend"), {
+    data
+  });
 };
diff --git a/src/api/register/index.ts b/src/api/register/index.ts
index 0c7e2a2..8e407e1 100644
--- a/src/api/register/index.ts
+++ b/src/api/register/index.ts
@@ -8,13 +8,10 @@
 
 import { http } from "@/utils/http";
 import { baseUrlApi } from "../util";
-type Result = {
-  success: boolean;
-  data: Array<any>;
-};
+import type { Result, CaptchaResult } from "../types";
 
 export const register = (data?: object) => {
-  return http.request(
+  return http.request<Result>(
     "post",
     baseUrlApi("/api/customer/customerRegistration"),
     { data }
@@ -22,7 +19,7 @@
 };
 
 export const captcha = () => {
-  return http.request<Result>("get", baseUrlApi("/api/zCSMS/captcha"));
+  return http.request<CaptchaResult>("get", baseUrlApi("/api/zCSMS/captcha"));
 };
 
 //鑾峰彇瑙掕壊
@@ -31,8 +28,8 @@
 };
 
 // 鑾峰彇鎵嬫満楠岃瘉鐮�
-export const phoneNumberCode = (params?: object) => {
-  return http.request(
+export const phoneNumberCode = params => {
+  return http.request<Result>(
     "post",
     baseUrlApi(
       `/api/zCSMS/sendSMS/${params.phone}/${params.code}/${params.codeId}`
@@ -42,7 +39,7 @@
 
 // 娉ㄥ唽瑙掕壊鐢ㄦ埛璧勬枡
 export const createrExRolsInformation = (data?: object) => {
-  return http.request(
+  return http.request<Result>(
     "post",
     baseUrlApi("/api/customer/createrExRolsInformation"),
     { data }
@@ -51,7 +48,11 @@
 
 // 鑾峰彇浼佷笟绫诲瀷
 export const enterpriseTypes = (data?: object) => {
-  return http.request("post", baseUrlApi("/api/customer/enterpriseTypes"), {
-    data
-  });
+  return http.request<Result>(
+    "post",
+    baseUrlApi("/api/customer/enterpriseTypes"),
+    {
+      data
+    }
+  );
 };
diff --git a/src/api/types.ts b/src/api/types.ts
new file mode 100644
index 0000000..81776b8
--- /dev/null
+++ b/src/api/types.ts
@@ -0,0 +1,19 @@
+export type Result = {
+  success: boolean;
+  result: Array<any>;
+  code: string | number;
+  message: string;
+};
+
+type captchaImg = {
+  expirySeconds: number;
+  message: string;
+  img: string;
+  id: string;
+};
+
+export type CaptchaResult = {
+  success: boolean;
+  result: captchaImg;
+  code: string | number;
+};
diff --git a/src/api/upload/index.ts b/src/api/upload/index.ts
index 004e73c..de0fae2 100644
--- a/src/api/upload/index.ts
+++ b/src/api/upload/index.ts
@@ -2,25 +2,22 @@
  * 锛堜笉寤鸿鍐欐垚 request.post(xxx)锛屽洜涓鸿繖鏍� post 鏃讹紝鏃犳硶 params 涓� data 鍚屾椂浼犲弬锛�
  *
  * 涓婁紶api鎺ュ彛闆嗗悎
- * @method register 娉ㄥ唽
- * @method captcha 鑾峰彇楠岃瘉鐮�
  */
 
 import { http } from "@/utils/http";
 import { baseUrlApi } from "../util";
-type Result = {
-  success: boolean;
-  data: Array<any>;
-};
+import type { Result } from "../types";
 
 //涓婁紶鍜岃瘑鍒惀涓氭墽鐓�
 export const upBizLicense = (data?: object) => {
-  return http.request("post", baseUrlApi("/api/upFile/upBizLicense"), { data });
+  return http.request<Result>("post", baseUrlApi("/api/upFile/upBizLicense"), {
+    data
+  });
 };
 
 // 涓婁紶韬唤璇�
 export const uploadIdCord = (params?: object) => {
-  return http.request("post", baseUrlApi("/api/upFile/uploadIdCord"), {
+  return http.request<Result>("post", baseUrlApi("/api/upFile/uploadIdCord"), {
     params
   });
 };
diff --git a/src/api/user.ts b/src/api/user.ts
index d4c3352..638e201 100644
--- a/src/api/user.ts
+++ b/src/api/user.ts
@@ -23,6 +23,29 @@
   };
 };
 
+export type LoginResult = {
+  success: boolean;
+  code: string | number;
+  result: {
+    /** 澶村儚 */
+    avatar: string;
+    /** 鐢ㄦ埛鍚� */
+    username: string;
+    /** 鏄电О */
+    nickname: string;
+    /** 褰撳墠鐧诲綍鐢ㄦ埛鐨勮鑹� */
+    exRoles: Array<string>;
+    /** 鎸夐挳绾у埆鏉冮檺 */
+    permissions: Array<string>;
+    /** `token` */
+    accessToken: string;
+    /** 鐢ㄤ簬璋冪敤鍒锋柊`accessToken`鐨勬帴鍙f椂鎵�闇�鐨刞token` */
+    refreshToken: string;
+    /** `accessToken`鐨勮繃鏈熸椂闂达紙鏍煎紡'xxxx/xx/xx xx:xx:xx'锛� */
+    expires: Date;
+  };
+};
+
 export type RefreshTokenResult = {
   success: boolean;
   data: {
@@ -37,7 +60,9 @@
 
 /** 鐧诲綍 */
 export const getLogin = (data?: object) => {
-  return http.request("post", baseUrlApi("/api/auth/loginPhone"), { data });
+  return http.request<LoginResult>("post", baseUrlApi("/api/auth/loginPhone"), {
+    data
+  });
   // return http.request<UserResult>("post", "/login", { data });
 };
 
diff --git a/src/router/modules/remaining.ts b/src/router/modules/remaining.ts
index db20f3d..c783e76 100644
--- a/src/router/modules/remaining.ts
+++ b/src/router/modules/remaining.ts
@@ -13,7 +13,7 @@
   // },
   {
     path: "/index",
-    name: "Main",
+    name: "MainPage",
     component: () => import("@/views/home/index.vue"),
     meta: {
       title: "棣栭〉",
diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts
index 3afc5e6..1912e18 100644
--- a/src/store/modules/user.ts
+++ b/src/store/modules/user.ts
@@ -8,7 +8,7 @@
   storageLocal
 } from "../utils";
 import {
-  type UserResult,
+  type LoginResult,
   type RefreshTokenResult,
   getLogin,
   refreshTokenApi
@@ -65,11 +65,9 @@
     },
     /** 鐧诲叆 */
     async loginByUsername(data) {
-      return new Promise<UserResult>((resolve, reject) => {
+      return new Promise<LoginResult>((resolve, reject) => {
         getLogin(data)
           .then(data => {
-            console.log(data, "杩欐槸浠�涔堬紵");
-
             if (data?.code == 200) setToken(data.result);
             resolve(data);
           })
diff --git a/src/views/home/component/myFooter.vue b/src/views/home/component/myFooter.vue
index 4fce8dc..984ecba 100644
--- a/src/views/home/component/myFooter.vue
+++ b/src/views/home/component/myFooter.vue
@@ -43,7 +43,11 @@
   </div>
 </template>
 
-<script lang="ts"></script>
+<script lang="ts" setup>
+defineOptions({
+  name: "MyFooter"
+});
+</script>
 
 <style lang="scss" scoped>
 .myfooter {
diff --git a/src/views/home/index.vue b/src/views/home/index.vue
index 0b2c4fa..db1493e 100644
--- a/src/views/home/index.vue
+++ b/src/views/home/index.vue
@@ -394,9 +394,9 @@
 
 <script lang="ts" setup>
 import { onMounted, ref, computed, reactive } from "vue";
-import myFooter from "./component/myFooter.vue";
+import MyFooter from "./component/myFooter.vue";
 import { useUserStoreHook } from "@/store/modules/user";
-import { exRole } from "@/api/register/index.ts";
+import { exRole } from "@/api/register/index";
 import { storageLocal, isString, isIncludeAllChildren } from "@pureadmin/utils";
 
 import { getToken } from "@/utils/auth";
@@ -409,7 +409,7 @@
 // 璁块棶 state 灞炴��
 // console.log(userStore.roles,'-'); // 鐩存帴鑾峰彇鍊�
 defineOptions({
-  name: "Main"
+  name: "MainPage"
 });
 let activeName = ref("first");
 /** 瑙掕壊锛堝鏋滄樀绉颁负绌哄垯鏄剧ず鐢ㄦ埛鍚嶏級 */
diff --git a/src/views/item/component/editDialog.vue b/src/views/item/component/editDialog.vue
index b54d199..ada8be4 100644
--- a/src/views/item/component/editDialog.vue
+++ b/src/views/item/component/editDialog.vue
@@ -1,41 +1,49 @@
 锘�<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';
+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 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,
+  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: '閮ㄥ垎鎴愮珛' },
+  { 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' }],
+  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" }
+  ]
 });
 
 // 椤甸潰鍔犺浇鏃�
@@ -43,41 +51,45 @@
 
 // 鎵撳紑寮圭獥
 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);
+  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;
+  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',
-			});
-		}
-	});
+  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)
-	}
+const changeComplaints = (index: any, txt: String) => {
+  if (txt == "add") {
+    state.ruleForm.complaints.splice(index + 1, 0, { itemDescription: "" });
+  } else {
+    state.ruleForm.complaints.splice(index, 1);
+  }
 };
 
 //灏嗗睘鎬ф垨鑰呭嚱鏁版毚闇茬粰鐖剁粍浠�
@@ -85,101 +97,203 @@
 </script>
 <template>
   <div class="procurementComplaint-container">
-    <el-dialog v-model="state.showDialog" :width="900" draggable :close-on-click-modal="false">
+    <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 :model="state.ruleForm" ref="ruleFormRef" label-width="auto" :rules="rules">
+      <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-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-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-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-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-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
+              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-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-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">
+          <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
+                :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
+                :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-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-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-button type="primary" @click="changeComplaints(index, 'add')"
+                >+</el-button
+              >
             </el-col>
-            <el-col :xs="1" :sm="1" :md="1" :lg="1" :xl="1" class="mb20"
-              v-if="state.ruleForm.complaints&&state.ruleForm.complaints.length>1">
-              <el-button type="primary" @click="changeComplaints(index)">-</el-button>
+            <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" />
+            <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 @click="submit" type="primary" v-reclick="1000">纭� 瀹�</el-button>
+          <el-button @click="() => (state.showDialog = false)">鍙� 娑�</el-button>
+          <el-button v-reclick="1000" type="primary" @click="submit"
+            >纭� 瀹�</el-button
+          >
         </span>
       </template>
     </el-dialog>
@@ -188,6 +302,6 @@
 <style lang="scss" scoped>
 :deep(.el-select),
 :deep(.el-input-number) {
-	width: 100%;
+  width: 100%;
 }
-</style>
\ No newline at end of file
+</style>
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index aebcc27..6fdd381 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -30,7 +30,7 @@
 // import darkIcon from "@/assets/svg/dark.svg?component";
 import Lock from "~icons/ri/lock-fill";
 import User from "~icons/ri/user-3-fill";
-import { captcha, phoneNumberCode, exRole } from "@/api/register/index.ts";
+import { captcha, phoneNumberCode, exRole } from "@/api/register/index";
 
 defineOptions({
   name: "Login"
@@ -50,11 +50,8 @@
 // 鑾峰彇楠岃瘉鐮�
 const getCaptcha = async () => {
   // if (!state.captchaEnabled) return;
-
   state.ruleForm.code = "";
   const res = await captcha();
-  console.log(res);
-
   state.captchaImage = "data:text/html;base64," + res.result?.img;
   state.expirySeconds = res.result?.expirySeconds;
   state.ruleForm.codeId = res.result?.id;
@@ -66,9 +63,8 @@
     nickName: "",
     phone: "",
     phoneVCode: "",
-    // tenantId: props.tenantInfo.id,
     code: "",
-    codeId: 0,
+    codeId: "",
     email: "",
     exRoleCode: ""
   },
@@ -133,6 +129,7 @@
 
   // 鑾峰彇楠岃瘉鐮�
   getCaptcha();
+
   exRole().then(res => {
     state.roleList = res.result;
     const role = route.query;
@@ -141,7 +138,7 @@
     } else {
       state.nowRole = state.roleList[0];
     }
-    state.ruleForm.exRoleCode = state.nowRole?.code;
+    state.ruleForm.exRoleCode = state.nowRole.code;
   });
   // 娉ㄥ唽楠岃瘉鐮佽繃鏈熻鏃跺櫒
   // if (state.captchaEnabled) {
@@ -167,24 +164,25 @@
   if (!formEl) return;
   await formEl.validate(valid => {
     if (valid) {
+      let obj = {
+        phone: state.ruleForm.phone,
+        code: state.ruleForm.phoneVCode,
+        exRuleCode: state.ruleForm.exRoleCode
+      };
       loading.value = true;
       useUserStoreHook()
-        .loginByUsername({
-          phone: state.ruleForm.phone,
-          code: state.ruleForm.phoneVCode,
-          exRuleCode: state.ruleForm.exRoleCode
-        })
+        .loginByUsername(obj)
         .then(res => {
           if (res.code == 200) {
             // 鑾峰彇鍚庣璺敱
             return initRouter().then(() => {
-              console.log(res, "=-=-=-=");
-              if (!res.result.exRoles.hasFlsh) {
+              console.log(res, "=-=-=-=", res.result.exRoles[0].hasFlsh);
+              if (!res.result.exRoles[0].hasFlsh) {
                 disabled.value = true;
                 router
                   .replace({
                     name: "RegisterNav",
-                    query: { code: res?.result?.exRoles.code }
+                    query: { code: res.result.exRoles[0].code }
                   })
                   .then(() => {
                     message("鐧诲綍鎴愬姛", { type: "success" });
diff --git a/src/views/register/index.vue b/src/views/register/index.vue
index 7de31f3..e904c46 100644
--- a/src/views/register/index.vue
+++ b/src/views/register/index.vue
@@ -121,7 +121,7 @@
                     <span
                       id="suffix-span-2"
                       ref="spanRef"
-                      @click="sendValidationCode(state.ruleForm.phone)"
+                      @click="sendValidationCode"
                     >
                       鑾峰彇楠岃瘉鐮�
                     </span>
@@ -172,7 +172,7 @@
   phoneNumberCode,
   register,
   exRole
-} from "@/api/register/index.ts";
+} from "@/api/register/index";
 import { useRoute, useRouter } from "vue-router";
 import { message } from "@/utils/message";
 defineOptions({
@@ -191,7 +191,7 @@
     phoneVCode: "",
     // tenantId: props.tenantInfo.id,
     code: "",
-    codeId: 0,
+    codeId: "",
     email: "",
     exRoleCode: ""
   },
@@ -300,11 +300,8 @@
 // 鑾峰彇楠岃瘉鐮�
 const getCaptcha = async () => {
   // if (!state.captchaEnabled) return;
-
   state.ruleForm.code = "";
   const res = await captcha();
-  console.log(res);
-
   state.captchaImage = "data:text/html;base64," + res.result?.img;
   state.expirySeconds = res.result?.expirySeconds;
   state.ruleForm.codeId = res.result?.id;
@@ -316,7 +313,7 @@
 const spanRef = ref();
 const submitForm = async (formEl: FormInstance | undefined) => {
   if (!formEl) return;
-  await formEl.validate((valid, fields) => {
+  await formEl.validate(valid => {
     if (valid) {
       state.ruleForm.account = state.ruleForm.phone;
       register(state.ruleForm).then(res => {
diff --git a/src/views/register/registernav.vue b/src/views/register/registernav.vue
index 917e7df..71e7ddf 100644
--- a/src/views/register/registernav.vue
+++ b/src/views/register/registernav.vue
@@ -412,7 +412,7 @@
 import {
   enterpriseTypes,
   createrExRolsInformation
-} from "@/api/register/index.ts";
+} from "@/api/register/index";
 import { cloneDeep } from "@pureadmin/utils";
 import { getToken } from "@/utils/auth";
 import { useRoute, useRouter } from "vue-router";
@@ -485,13 +485,6 @@
     enterpriseType: [
       { required: true, message: "璇烽�夋嫨浼佷笟绫诲瀷", trigger: "change" }
     ],
-    // transactionCode: [
-    //   { required: true, message: "璇疯緭鍏ヤ氦鏄撲富浣撲唬鐮�", trigger: "blur" },
-    //   { min: 1, message: "浜ゆ槗涓讳綋浠g爜鏈�灏忛暱搴︿负1", trigger: "blur" }
-    // ],
-    // transactionName: [
-    //   { required: true, message: "璇疯緭鍏ヤ氦鏄撲富浣撳悕绉�", trigger: "blur" }
-    // ],
     businessLicense: [
       { required: true, message: "璇蜂笂浼犺惀涓氭墽鐓�", trigger: "change" }
     ],
@@ -604,7 +597,7 @@
   } else {
     state.ruleForm.transactionCode = route.query.code;
   }
-  // 浼佷笟绫诲瀷
+
   let res = await enterpriseTypes();
   state.enterpriseList = res?.result;
 });
diff --git a/tsconfig.json b/tsconfig.json
index 4cbdd39..833a13f 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -2,7 +2,7 @@
   "compilerOptions": {
     "target": "ESNext",
     "module": "ESNext",
-    "moduleResolution": "bundler",
+    "moduleResolution": "node",
     "strict": false,
     "strictFunctionTypes": false,
     "noImplicitThis": true,

--
Gitblit v1.9.1