From e181f04c642204e79749af93fa921875ff6c21ba Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期二, 20 五月 2025 10:46:35 +0800
Subject: [PATCH] refactor(qms): 重构趋势图展示逻辑

---
 src/views/tool/gen/editTable.vue |  140 +++++++++++++++++++++++-----------------------
 1 files changed, 70 insertions(+), 70 deletions(-)

diff --git a/src/views/tool/gen/editTable.vue b/src/views/tool/gen/editTable.vue
index a61556c..bbb0889 100644
--- a/src/views/tool/gen/editTable.vue
+++ b/src/views/tool/gen/editTable.vue
@@ -6,24 +6,14 @@
       </el-tab-pane>
       <el-tab-pane label="瀛楁淇℃伅" name="columnInfo">
         <el-table ref="dragTable" :data="columns" row-key="columnId" :max-height="tableHeight">
-          <el-table-column label="搴忓彿" type="index" min-width="5%"/>
-          <el-table-column
-            label="瀛楁鍒楀悕"
-            prop="columnName"
-            min-width="10%"
-            :show-overflow-tooltip="true"
-          />
+          <el-table-column label="搴忓彿" type="index" min-width="5%" />
+          <el-table-column label="瀛楁鍒楀悕" prop="columnName" min-width="10%" :show-overflow-tooltip="true" />
           <el-table-column label="瀛楁鎻忚堪" min-width="10%">
             <template #default="scope">
               <el-input v-model="scope.row.columnComment"></el-input>
             </template>
           </el-table-column>
-          <el-table-column
-            label="鐗╃悊绫诲瀷"
-            prop="columnType"
-            min-width="10%"
-            :show-overflow-tooltip="true"
-          />
+          <el-table-column label="鐗╃悊绫诲瀷" prop="columnType" min-width="10%" :show-overflow-tooltip="true" />
           <el-table-column label="Java绫诲瀷" min-width="11%">
             <template #default="scope">
               <el-select v-model="scope.row.javaType">
@@ -45,22 +35,22 @@
 
           <el-table-column label="鎻掑叆" min-width="5%">
             <template #default="scope">
-              <el-checkbox true-label="1" false-label="0" v-model="scope.row.isInsert"></el-checkbox>
+              <el-checkbox v-model="scope.row.isInsert" true-value="1" false-value="0"></el-checkbox>
             </template>
           </el-table-column>
           <el-table-column label="缂栬緫" min-width="5%">
             <template #default="scope">
-              <el-checkbox true-label="1" false-label="0" v-model="scope.row.isEdit"></el-checkbox>
+              <el-checkbox v-model="scope.row.isEdit" true-value="1" false-value="0"></el-checkbox>
             </template>
           </el-table-column>
           <el-table-column label="鍒楄〃" min-width="5%">
             <template #default="scope">
-              <el-checkbox true-label="1" false-label="0" v-model="scope.row.isList"></el-checkbox>
+              <el-checkbox v-model="scope.row.isList" true-value="1" false-value="0"></el-checkbox>
             </template>
           </el-table-column>
           <el-table-column label="鏌ヨ" min-width="5%">
             <template #default="scope">
-              <el-checkbox true-label="1" false-label="0" v-model="scope.row.isQuery"></el-checkbox>
+              <el-checkbox v-model="scope.row.isQuery" true-value="1" false-value="0"></el-checkbox>
             </template>
           </el-table-column>
           <el-table-column label="鏌ヨ鏂瑰紡" min-width="10%">
@@ -79,7 +69,7 @@
           </el-table-column>
           <el-table-column label="蹇呭~" min-width="5%">
             <template #default="scope">
-              <el-checkbox true-label="1" false-label="0" v-model="scope.row.isRequired"></el-checkbox>
+              <el-checkbox v-model="scope.row.isRequired" true-value="1" false-value="0"></el-checkbox>
             </template>
           </el-table-column>
           <el-table-column label="鏄剧ず绫诲瀷" min-width="12%">
@@ -100,14 +90,10 @@
           <el-table-column label="瀛楀吀绫诲瀷" min-width="12%">
             <template #default="scope">
               <el-select v-model="scope.row.dictType" clearable filterable placeholder="璇烽�夋嫨">
-                <el-option
-                  v-for="dict in dictOptions"
-                  :key="dict.dictType"
-                  :label="dict.dictName"
-                  :value="dict.dictType">
+                <el-option v-for="dict in dictOptions" :key="dict.dictType" :label="dict.dictName" :value="dict.dictType">
                   <span style="float: left">{{ dict.dictName }}</span>
                   <span style="float: right; color: #8492a6; font-size: 13px">{{ dict.dictType }}</span>
-              </el-option>
+                </el-option>
               </el-select>
             </template>
           </el-table-column>
@@ -118,7 +104,7 @@
       </el-tab-pane>
     </el-tabs>
     <el-form label-width="100px">
-      <div style="text-align: center;margin-left:-100px;margin-top:10px;">
+      <div style="text-align: center; margin-left: -100px; margin-top: 10px">
         <el-button type="primary" @click="submitForm()">鎻愪氦</el-button>
         <el-button @click="close()">杩斿洖</el-button>
       </div>
@@ -126,73 +112,87 @@
   </el-card>
 </template>
 
-<script setup name="GenEdit">
-import { getGenTable, updateGenTable } from "@/api/tool/gen";
-import { optionselect as getDictOptionselect } from "@/api/system/dict/type";
-import basicInfoForm from "./basicInfoForm";
-import genInfoForm from "./genInfoForm";
+<script setup name="GenEdit" lang="ts">
+import { getGenTable, updateGenTable } from '@/api/tool/gen';
+import { DbColumnVO, DbTableVO } from '@/api/tool/gen/types';
+import { optionselect as getDictOptionselect } from '@/api/system/dict/type';
+import { DictTypeVO } from '@/api/system/dict/type/types';
+import BasicInfoForm from './basicInfoForm.vue';
+import GenInfoForm from './genInfoForm.vue';
+import { RouteLocationNormalized } from 'vue-router';
 
 const route = useRoute();
-const { proxy } = getCurrentInstance();
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 
-const activeName = ref("columnInfo");
-const tableHeight = ref(document.documentElement.scrollHeight - 245 + "px");
-const tables = ref([]);
-const columns = ref([]);
-const dictOptions = ref([]);
-const info = ref({});
+const activeName = ref('columnInfo');
+const tableHeight = ref(document.documentElement.scrollHeight - 245 + 'px');
+const tables = ref<DbTableVO[]>([]);
+const columns = ref<DbColumnVO[]>([]);
+const dictOptions = ref<DictTypeVO[]>([]);
+const info = ref<Partial<DbTableVO>>({});
+
+const basicInfo = ref<InstanceType<typeof BasicInfoForm>>();
+const genInfo = ref<InstanceType<typeof GenInfoForm>>();
 
 /** 鎻愪氦鎸夐挳 */
-function submitForm() {
-  const basicForm = proxy.$refs.basicInfo.$refs.basicInfoForm;
-  const genForm = proxy.$refs.genInfo.$refs.genInfoForm;
-  Promise.all([basicForm, genForm].map(getFormPromise)).then(res => {
-    const validateResult = res.every(item => !!item);
+const submitForm = () => {
+  const basicForm = basicInfo.value?.$refs.basicInfoForm;
+  const genForm = genInfo.value?.$refs.genInfoForm;
+
+  Promise.all([basicForm, genForm].map(getFormPromise)).then(async (res) => {
+    const validateResult = res.every((item) => !!item);
     if (validateResult) {
-      const genTable = Object.assign({}, info.value);
+      const genTable: any = Object.assign({}, info.value);
       genTable.columns = columns.value;
       genTable.params = {
-        treeCode: info.value.treeCode,
+        treeCode: info.value?.treeCode,
         treeName: info.value.treeName,
         treeParentCode: info.value.treeParentCode,
         parentMenuId: info.value.parentMenuId
       };
-      updateGenTable(genTable).then(res => {
-        proxy.$modal.msgSuccess(res.msg);
-        if (res.code === 200) {
-          close();
-        }
-      });
+      const response = await updateGenTable(genTable);
+      proxy?.$modal.msgSuccess(response.msg);
+      if (response.code === 200) {
+        close();
+      }
     } else {
-      proxy.$modal.msgError("琛ㄥ崟鏍¢獙鏈�氳繃锛岃閲嶆柊妫�鏌ユ彁浜ゅ唴瀹�");
+      proxy?.$modal.msgError('琛ㄥ崟鏍¢獙鏈�氳繃锛岃閲嶆柊妫�鏌ユ彁浜ゅ唴瀹�');
     }
   });
-}
-function getFormPromise(form) {
-  return new Promise(resolve => {
-    form.validate(res => {
+};
+const getFormPromise = (form: any) => {
+  return new Promise((resolve) => {
+    form.validate((res: any) => {
       resolve(res);
     });
   });
-}
-function close() {
-  const obj = { path: "/tool/gen", query: { t: Date.now(), pageNum: route.query.pageNum } };
-  proxy.$tab.closeOpenPage(obj);
-}
+};
+const close = () => {
+  const obj: RouteLocationNormalized = {
+    path: '/tool/gen',
+    fullPath: '',
+    hash: '',
+    matched: [],
+    meta: undefined,
+    name: undefined,
+    params: undefined,
+    redirectedFrom: undefined,
+    query: { t: Date.now().toString(), pageNum: route.query.pageNum }
+  };
+  proxy?.$tab.closeOpenPage(obj);
+};
 
-(() => {
-  const tableId = route.params && route.params.tableId;
+(async () => {
+  const tableId = route.params && (route.params.tableId as string);
   if (tableId) {
     // 鑾峰彇琛ㄨ缁嗕俊鎭�
-    getGenTable(tableId).then(res => {
-      columns.value = res.data.rows;
-      info.value = res.data.info;
-      tables.value = res.data.tables;
-    });
+    const res = await getGenTable(tableId);
+    columns.value = res.data.rows;
+    info.value = res.data.info;
+    tables.value = res.data.tables;
     /** 鏌ヨ瀛楀吀涓嬫媺鍒楄〃 */
-    getDictOptionselect().then(response => {
-      dictOptions.value = response.data;
-    });
+    const response = await getDictOptionselect();
+    dictOptions.value = response.data;
   }
 })();
 </script>

--
Gitblit v1.9.3