From fa2c9bd08d1c28e6403d9ad92614a251872bbb68 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期六, 18 七月 2026 14:52:36 +0800
Subject: [PATCH] 银川 1.销售订单页面展示字段修改 2.客户选择弹框复用调整 3.未使用菜单整理 4.发货通知、销售退货展示字段和操作权限判断修改

---
 src/api/erp/sale/order/index.ts                        |    2 
 src/api/mes/wm/salesnotice/index.ts                    |    2 
 src/views/erp/sale/order/index.vue                     |    8 +
 src/views/wls/salesnotice/index.vue                    |   35 ++++----
 src/views/wls/salesnotice/modules/form.vue             |   12 ---
 src/views/wls/salesnotice/components/select.vue        |    2 
 src/views/wls/salesnotice/data.ts                      |   52 ++----------
 src/views/basicData/mdm/index.vue                      |   36 +++++++-
 src/views/wls/salesnotice/components/select-dialog.vue |    8 +-
 src/views/erp/sale/order/data.ts                       |   19 +---
 src/views/wls/productsales/data.ts                     |   28 +++++-
 src/views/wls/returnsales/data.ts                      |   30 ++++++-
 12 files changed, 127 insertions(+), 107 deletions(-)

diff --git a/src/api/erp/sale/order/index.ts b/src/api/erp/sale/order/index.ts
index 7983b30..61a9cd6 100644
--- a/src/api/erp/sale/order/index.ts
+++ b/src/api/erp/sale/order/index.ts
@@ -16,6 +16,7 @@
     status: number; // 鐘舵��
     remark: string; // 澶囨敞
     outCount: number; // 閿�鍞嚭搴撴暟閲�
+    outStatus?: number; // 鍑哄簱鐘舵�侊細0-鏈嚭搴擄紝1-閮ㄥ垎鍑哄簱锛�2-鍏ㄩ儴鍑哄簱
     fileUrl?: string; // 闄勪欢鍦板潃
     inCount?: number; // 閲囪喘鍏ュ簱鏁伴噺
     returnCount: number; // 閿�鍞��璐ф暟閲�
@@ -27,6 +28,7 @@
     contractNo?: string; // CRM 鍚堝悓鍗曞彿
     needProduction?: number; // 鏄惁闇�瑕佺敓浜э細0-涓嶉渶瑕侊紝1-闇�瑕�
     hasSalesNotice?: boolean; // 鏄惁宸茬敓鎴愬彂璐ч�氱煡鍗�
+    canCreateSalesNotice?: boolean; // 鏄惁鍙互鐢熸垚鍙戣揣閫氱煡鍗�
     items?: SaleOrderItem[]; // 閿�鍞鍗曚骇鍝佹槑缁嗗垪琛�
   }
 
diff --git a/src/api/mes/wm/salesnotice/index.ts b/src/api/mes/wm/salesnotice/index.ts
index 6bb0ab8..66fe8af 100644
--- a/src/api/mes/wm/salesnotice/index.ts
+++ b/src/api/mes/wm/salesnotice/index.ts
@@ -9,7 +9,7 @@
     code?: string; // 閫氱煡鍗曠紪鍙�
     name?: string; // 閫氱煡鍗曞悕绉�
     saleOrderId?: number; // 閿�鍞鍗曠紪鍙�
-    salesOrderCode?: string; // 閿�鍞鍗曠紪鍙�
+    saleOrderCode?: string; // 閿�鍞鍗曠紪鍙�
     clientId?: number; // 瀹㈡埛缂栧彿
     clientCode?: string; // 瀹㈡埛缂栫爜
     clientName?: string; // 瀹㈡埛鍚嶇О
diff --git a/src/views/basicData/mdm/index.vue b/src/views/basicData/mdm/index.vue
index 7f87556..4cc1c42 100644
--- a/src/views/basicData/mdm/index.vue
+++ b/src/views/basicData/mdm/index.vue
@@ -3,7 +3,7 @@
 import type { MdmItemApi } from '#/api/mdm/item';
 import type { MesMdItemTypeApi } from '#/api/mes/md/item/type';
 
-import { ref } from 'vue';
+import { computed, ref } from 'vue';
 
 import { confirm, Page, useVbenModal } from '#/packages/effects/common-ui/src';
 import { downloadFileFromBlobPart, isEmpty } from '#/packages/utils/src';
@@ -33,6 +33,34 @@
 
 // 鍒嗙被鍒楄〃缂撳瓨
 const categoryList = ref<MesMdItemTypeApi.ItemType[]>([]);
+
+const TAG_COLORS = [
+  'green',
+  'orange',
+  'blue',
+  'purple',
+  'cyan',
+  'magenta',
+  'geekblue',
+  'volcano',
+  'gold',
+  'lime',
+] as const;
+
+/** 鍒嗙被ID 鈫� 棰滆壊鏄犲皠锛堝熀浜庡垎绫诲湪鍒楄〃涓殑绱㈠紩寰幆鍒嗛厤锛� */
+const categoryColorMap = computed(() => {
+  const map = new Map<number, string>();
+  categoryList.value.forEach((item, index) => {
+    map.set(item.id!, TAG_COLORS[index % TAG_COLORS.length]!);
+  });
+  return map;
+});
+
+/** 鑾峰彇鍒嗙被Tag棰滆壊 */
+function getCategoryColor(categoryId?: number): string {
+  if (!categoryId) return '';
+  return categoryColorMap.value.get(categoryId) || '';
+}
 
 /** 鑾峰彇鍒嗙被鍚嶇О */
 function getCategoryName(categoryId?: number) {
@@ -196,11 +224,7 @@
         />
       </template>
       <template #categoryName="{ row }">
-        <Tag v-if="row.categoryId === 1" color="green">{{ getCategoryName(row.categoryId) }}</Tag>
-        <Tag v-else-if="row.categoryId === 2" color="orange">{{ getCategoryName(row.categoryId) }}</Tag>
-        <Tag v-else-if="row.categoryId === 3" color="blue">{{ getCategoryName(row.categoryId) }}</Tag>
-        <Tag v-else-if="row.categoryId === 4" color="purple">{{ getCategoryName(row.categoryId) }}</Tag>
-        <Tag v-else-if="row.categoryId === 5" color="cyan">{{ getCategoryName(row.categoryId) }}</Tag>
+        <Tag v-if="getCategoryColor(row.categoryId)" :color="getCategoryColor(row.categoryId)">{{ getCategoryName(row.categoryId) }}</Tag>
         <span v-else>{{ getCategoryName(row.categoryId) }}</span>
       </template>
       <template #isBatchManaged="{ row }">
diff --git a/src/views/erp/sale/order/data.ts b/src/views/erp/sale/order/data.ts
index 0cf418a..d43126c 100644
--- a/src/views/erp/sale/order/data.ts
+++ b/src/views/erp/sale/order/data.ts
@@ -371,8 +371,9 @@
       componentProps: {
         options: [
           { label: '鏈嚭搴�', value: 0 },
-          { label: '閮ㄥ垎鍑哄簱', value: 1 },
-          { label: '鍏ㄩ儴鍑哄簱', value: 2 },
+          { label: '宸查鐣�', value: 1 },
+          { label: '閮ㄥ垎鍑哄簱', value: 2 },
+          { label: '鍏ㄩ儴鍑哄簱', value: 3 },
         ],
         placeholder: '璇烽�夋嫨鍑哄簱鐘舵��',
         allowClear: true,
@@ -445,16 +446,10 @@
       minWidth: 120,
     },
     {
-      field: 'outCount',
-      title: '鍑哄簱鏁伴噺',
-      formatter: 'formatAmount3',
-      minWidth: 120,
-    },
-    {
-      field: 'returnCount',
-      title: '閫�璐ф暟閲�',
-      formatter: 'formatAmount3',
-      minWidth: 120,
+      field: 'outStatus',
+      title: '鍑哄簱鐘舵��',
+      minWidth: 100,
+      slots: { default: 'outStatus' },
     },
     {
       field: 'totalProductPrice',
diff --git a/src/views/erp/sale/order/index.vue b/src/views/erp/sale/order/index.vue
index 355551e..4e83fce 100644
--- a/src/views/erp/sale/order/index.vue
+++ b/src/views/erp/sale/order/index.vue
@@ -260,6 +260,12 @@
         <Tag v-if="row.needProduction === 1" color="success">鏄�</Tag>
         <Tag v-else color="default">鍚�</Tag>
       </template>
+      <template #outStatus="{ row }">
+        <Tag v-if="row.outStatus === 0" color="default">鏈嚭搴�</Tag>
+        <Tag v-else-if="row.outStatus === 1" color="processing">宸查鐣�</Tag>
+        <Tag v-else-if="row.outStatus === 2" color="warning">閮ㄥ垎鍑哄簱</Tag>
+        <Tag v-else-if="row.outStatus === 3" color="success">鍏ㄩ儴鍑哄簱</Tag>
+      </template>
       <template #actions="{ row }">
         <TableAction
           :actions="[
@@ -327,7 +333,7 @@
               type: 'link',
               icon: 'ant-design:file-protect-outlined',
               auth: ['mes:wm-sales-notice:create'],
-              ifShow: () => row.status === 20 && !row.hasSalesNotice,
+              ifShow: () => row.status === 20 && row.canCreateSalesNotice,
               onClick: handleGenerateNotice.bind(null, row),
             },
             {
diff --git a/src/views/wls/productsales/data.ts b/src/views/wls/productsales/data.ts
index a99cee4..ed70c62 100644
--- a/src/views/wls/productsales/data.ts
+++ b/src/views/wls/productsales/data.ts
@@ -19,9 +19,10 @@
 import { Button } from 'ant-design-vue';
 
 import { z } from '#/adapter/form';
+import CrmCustomerSelect from '#/components/crm-customer-select.vue';
 import { generateAutoCode } from '#/api/mes/md/autocode/record';
+import { ErpSaleOrderSelect } from '#/views/erp/sale/order/components';
 import { getRangePickerDefaultProps } from '#/utils';
-import { MdClientSelect } from '#/views/mes/md/client/components';
 import { MdItemSelect } from '#/views/mes/md/item/components';
 import { WmMaterialStockSelect } from '#/views/wls/materialstock/components';
 import {
@@ -139,12 +140,29 @@
     },
     {
       fieldName: 'salesOrderCode',
-      label: '閿�鍞鍗曠紪鍙�',
       component: 'Input',
+      dependencies: {
+        triggerFields: [''],
+        show: () => false,
+      },
+    },
+    {
+      fieldName: 'saleOrderId',
+      label: '閿�鍞鍗曠紪鍙�',
+      component: markRaw(ErpSaleOrderSelect),
       componentProps: {
         disabled: isHeaderReadonly(formType),
-        placeholder: '璇疯緭鍏ラ攢鍞鍗曠紪鍙�',
+        placeholder: '璇烽�夋嫨閿�鍞鍗�',
+        onChange: (item: any) => {
+          if (formApi) {
+            formApi.setFieldValue('salesOrderCode', item?.no ?? '');
+            if (item?.customerId) {
+              formApi.setFieldValue('clientId', item.customerId);
+            }
+          }
+        },
       },
+      rules: 'selectRequired',
     },
     {
       fieldName: 'salesDate',
@@ -162,7 +180,7 @@
     {
       fieldName: 'clientId',
       label: '瀹㈡埛',
-      component: markRaw(MdClientSelect),
+      component: markRaw(CrmCustomerSelect),
       componentProps: {
         disabled: isHeaderReadonly(formType),
         placeholder: '璇烽�夋嫨瀹㈡埛',
@@ -269,7 +287,7 @@
     {
       fieldName: 'clientId',
       label: '瀹㈡埛',
-      component: markRaw(MdClientSelect),
+      component: markRaw(CrmCustomerSelect),
       componentProps: {
         placeholder: '璇烽�夋嫨瀹㈡埛',
       },
diff --git a/src/views/wls/returnsales/data.ts b/src/views/wls/returnsales/data.ts
index e926283..4c983da 100644
--- a/src/views/wls/returnsales/data.ts
+++ b/src/views/wls/returnsales/data.ts
@@ -12,8 +12,9 @@
 import { Button } from 'ant-design-vue';
 
 import { z } from '#/adapter/form';
+import CrmCustomerSelect from '#/components/crm-customer-select.vue';
 import { generateAutoCode } from '#/api/mes/md/autocode/record';
-import { MdClientSelect } from '#/views/mes/md/client/components';
+import { ErpSaleOrderSelect } from '#/views/erp/sale/order/components';
 import { MdItemSelect } from '#/views/mes/md/item/components';
 import { WmBatchSelect } from '#/views/wls/batch/components';
 import {
@@ -88,16 +89,33 @@
     },
     {
       fieldName: 'salesOrderCode',
-      label: '閿�鍞鍗曞彿',
       component: 'Input',
-      componentProps: {
-        placeholder: '璇疯緭鍏ラ攢鍞鍗曞彿',
+      dependencies: {
+        triggerFields: [''],
+        show: () => false,
       },
+    },
+    {
+      fieldName: 'saleOrderId',
+      label: '閿�鍞鍗曞彿',
+      component: markRaw(ErpSaleOrderSelect),
+      componentProps: {
+        placeholder: '璇烽�夋嫨閿�鍞鍗�',
+        onChange: (item: any) => {
+          if (formApi) {
+            formApi.setFieldValue('salesOrderCode', item?.no ?? '');
+            if (item?.customerId) {
+              formApi.setFieldValue('clientId', item.customerId);
+            }
+          }
+        },
+      },
+      rules: 'selectRequired',
     },
     {
       fieldName: 'clientId',
       label: '瀹㈡埛',
-      component: markRaw(MdClientSelect),
+      component: markRaw(CrmCustomerSelect),
       componentProps: {
         placeholder: '璇烽�夋嫨瀹㈡埛',
       },
@@ -172,7 +190,7 @@
     {
       fieldName: 'clientId',
       label: '瀹㈡埛',
-      component: markRaw(MdClientSelect),
+      component: markRaw(CrmCustomerSelect),
       componentProps: {
         placeholder: '璇烽�夋嫨瀹㈡埛',
       },
diff --git a/src/views/wls/salesnotice/components/select-dialog.vue b/src/views/wls/salesnotice/components/select-dialog.vue
index 8c5c8ef..3205536 100644
--- a/src/views/wls/salesnotice/components/select-dialog.vue
+++ b/src/views/wls/salesnotice/components/select-dialog.vue
@@ -12,7 +12,7 @@
 
 import { useVbenVxeGrid } from '#/adapter/vxe-table';
 import { getSalesNoticePage } from '#/api/mes/wm/salesnotice';
-import { MdClientSelect } from '#/views/mes/md/client/components';
+import CrmCustomerSelect from '#/components/crm-customer-select.vue';
 
 const emit = defineEmits<{
   selected: [rows: MesWmSalesNoticeApi.SalesNotice[]];
@@ -46,7 +46,7 @@
       },
     },
     {
-      fieldName: 'salesOrderCode',
+      fieldName: 'saleOrderCode',
       label: '閿�鍞鍗曠紪鍙�',
       component: 'Input',
       componentProps: {
@@ -57,7 +57,7 @@
     {
       fieldName: 'clientId',
       label: '瀹㈡埛',
-      component: markRaw(MdClientSelect),
+      component: markRaw(CrmCustomerSelect),
       componentProps: {
         placeholder: '璇烽�夋嫨瀹㈡埛',
       },
@@ -102,7 +102,7 @@
       minWidth: 150,
     },
     {
-      field: 'salesOrderCode',
+      field: 'saleOrderCode',
       title: '閿�鍞鍗曠紪鍙�',
       minWidth: 140,
     },
diff --git a/src/views/wls/salesnotice/components/select.vue b/src/views/wls/salesnotice/components/select.vue
index ee19d2c..744b348 100644
--- a/src/views/wls/salesnotice/components/select.vue
+++ b/src/views/wls/salesnotice/components/select.vue
@@ -119,7 +119,7 @@
           <div>缂栧彿锛歿{ selectedItem.code || '-' }}</div>
           <div>鍚嶇О锛歿{ selectedItem.name || '-' }}</div>
           <div>瀹㈡埛锛歿{ selectedItem.clientName || '-' }}</div>
-          <div>閿�鍞鍗曪細{{ selectedItem.salesOrderCode || '-' }}</div>
+          <div>閿�鍞鍗曪細{{ selectedItem.saleOrderCode || '-' }}</div>
         </div>
       </template>
       <Input
diff --git a/src/views/wls/salesnotice/data.ts b/src/views/wls/salesnotice/data.ts
index fcadf3c..e295707 100644
--- a/src/views/wls/salesnotice/data.ts
+++ b/src/views/wls/salesnotice/data.ts
@@ -8,23 +8,22 @@
 import {
   DICT_TYPE,
   MesAutoCodeRuleCode,
-  MesWmSalesNoticeOutStatusEnum,
 } from '@vben/constants';
 
-import { Button, Tag } from 'ant-design-vue';
+import { Button } from 'ant-design-vue';
 
 import { z } from '#/adapter/form';
 import { generateAutoCode } from '#/api/mes/md/autocode/record';
+import CrmCustomerSelect from '#/components/crm-customer-select.vue';
 import { ErpSaleOrderSelect } from '#/views/erp/sale/order/components';
-import { MdClientSelect } from '#/views/mes/md/client/components';
 import { MdItemSelect } from '#/views/mes/md/item/components';
 
 /** 琛ㄥ崟绫诲瀷 */
-export type FormType = 'create' | 'detail' | 'finish' | 'update';
+export type FormType = 'create' | 'detail' | 'update';
 
-/** 琛ㄥ崟澶撮儴鏄惁鍙锛堣鎯呫�佹墽琛屽嚭搴撴�侊級 */
+/** 琛ㄥ崟澶撮儴鏄惁鍙锛堣鎯呮�侊級 */
 function isHeaderReadonly(formType: FormType): boolean {
-  return formType === 'detail' || formType === 'finish';
+  return formType === 'detail';
 }
 
 /** 鏂板/淇敼鐨勮〃鍗� */
@@ -93,35 +92,17 @@
         onChange: (item: any) => {
           if (item?.customerId && formApi) {
             formApi.setFieldValue('clientId', item.customerId);
-            formApi.setFieldValue('clientName', item.customerName);
           }
         },
       },
     },
     {
-      fieldName: 'clientName',
-      label: '',
-      component: 'Input',
-      dependencies: {
-        triggerFields: [''],
-        show: () => false,
-      },
-    },
-    {
       fieldName: 'clientId',
       label: '瀹㈡埛',
-      component: markRaw(MdClientSelect),
+      component: markRaw(CrmCustomerSelect),
       componentProps: {
         placeholder: '璇烽�夋嫨瀹㈡埛',
         disabled: true,
-      },
-      dependencies: {
-        triggerFields: ['clientName'],
-        componentProps: (values) => ({
-          placeholder: '璇烽�夋嫨瀹㈡埛',
-          disabled: true,
-          clientName: values.clientName as string,
-        }),
       },
       rules: 'selectRequired',
     },
@@ -196,7 +177,7 @@
       },
     },
     {
-      fieldName: 'salesOrderCode',
+      fieldName: 'saleOrderCode',
       label: '閿�鍞鍗曠紪鍙�',
       component: 'Input',
       componentProps: {
@@ -207,7 +188,7 @@
     {
       fieldName: 'clientId',
       label: '瀹㈡埛',
-      component: markRaw(MdClientSelect),
+      component: markRaw(CrmCustomerSelect),
       componentProps: {
         placeholder: '璇烽�夋嫨瀹㈡埛',
       },
@@ -230,7 +211,7 @@
       minWidth: 150,
     },
     {
-      field: 'salesOrderCode',
+      field: 'saleOrderCode',
       title: '閿�鍞鍗曠紪鍙�',
       minWidth: 140,
     },
@@ -273,20 +254,7 @@
       field: 'outStatus',
       title: '鍑哄簱鐘舵��',
       minWidth: 100,
-      cellRender: {
-        name: 'CellTag',
-        props: {
-          formatter: ({ row }: { row: MesWmSalesNoticeApi.SalesNotice }) => {
-            const statusMap: Record<number, { color: string; label: string }> = {
-              [MesWmSalesNoticeOutStatusEnum.NONE]: { color: 'default', label: '鏈嚭搴�' },
-              [MesWmSalesNoticeOutStatusEnum.PARTIAL]: { color: 'warning', label: '閮ㄥ垎鍑哄簱' },
-              [MesWmSalesNoticeOutStatusEnum.ALL]: { color: 'success', label: '鍏ㄩ儴鍑哄簱' },
-            };
-            const status = statusMap[row.outStatus ?? MesWmSalesNoticeOutStatusEnum.NONE];
-            return { color: status?.color, label: status?.label ?? '鏈嚭搴�' };
-          },
-        },
-      },
+      slots: { default: 'outStatus' },
     },
     {
       title: '鎿嶄綔',
diff --git a/src/views/wls/salesnotice/index.vue b/src/views/wls/salesnotice/index.vue
index db5f8a5..a4c4590 100644
--- a/src/views/wls/salesnotice/index.vue
+++ b/src/views/wls/salesnotice/index.vue
@@ -3,10 +3,10 @@
 import type { MesWmSalesNoticeApi } from '#/api/mes/wm/salesnotice';
 
 import { Page, useVbenModal } from '@vben/common-ui';
-import { MesWmSalesNoticeStatusEnum } from '@vben/constants';
+import { MesWmSalesNoticeOutStatusEnum, MesWmSalesNoticeStatusEnum } from '@vben/constants';
 import { downloadFileFromBlobPart } from '@vben/utils';
 
-import { Button, message } from 'ant-design-vue';
+import { Button, message, Tag } from 'ant-design-vue';
 
 import { useRouter } from 'vue-router';
 
@@ -29,6 +29,17 @@
 
 const router = useRouter();
 
+const outStatusLabelMap: Record<number, string> = {
+  [MesWmSalesNoticeOutStatusEnum.NONE]: '鏈嚭搴�',
+  [MesWmSalesNoticeOutStatusEnum.PARTIAL]: '閮ㄥ垎鍑哄簱',
+  [MesWmSalesNoticeOutStatusEnum.ALL]: '鍏ㄩ儴鍑哄簱',
+};
+const outStatusColorMap: Record<number, string> = {
+  [MesWmSalesNoticeOutStatusEnum.NONE]: 'default',
+  [MesWmSalesNoticeOutStatusEnum.PARTIAL]: 'warning',
+  [MesWmSalesNoticeOutStatusEnum.ALL]: 'success',
+};
+
 /** 鍒锋柊琛ㄦ牸 */
 function handleRefresh() {
   gridApi.query();
@@ -49,20 +60,14 @@
   formModalApi.setData({ formType: 'update', id: row.id }).open();
 }
 
-/** 鎵ц鍑哄簱 */
-function handleFinish(row: MesWmSalesNoticeApi.SalesNotice) {
-  formModalApi.setData({ formType: 'finish', id: row.id }).open();
-}
-
 /** 鐢熸垚閿�鍞嚭搴撳崟 */
 async function handleGenerateProductSales(row: MesWmSalesNoticeApi.SalesNotice) {
   try {
     const productSalesId = await generateProductSales(row.id!);
     message.success('鐢熸垚閿�鍞嚭搴撳崟鎴愬姛');
-    // 璺宠浆鍒伴攢鍞嚭搴撳崟椤甸潰
     router.push({
-      path: '/wls/product-sales',
-      query: { id: productSalesId },
+      name: 'MesWmProductSales',
+      query: { id: String(productSalesId) },
     });
   } catch (e) {
     console.error(e);
@@ -150,6 +155,9 @@
           {{ row.code }}
         </Button>
       </template>
+      <template #outStatus="{ row }">
+        <Tag :color="outStatusColorMap[row.outStatus ?? 0]">{{ outStatusLabelMap[row.outStatus ?? 0] }}</Tag>
+      </template>
       <template #actions="{ row }">
         <TableAction
           :actions="[
@@ -180,13 +188,6 @@
               auth: ['mes:wm-product-sales:create'],
               ifShow: row.status === MesWmSalesNoticeStatusEnum.APPROVED,
               onClick: handleGenerateProductSales.bind(null, row),
-            },
-            {
-              label: '鎵ц鍑哄簱',
-              type: 'link',
-              auth: ['mes:wm-sales-notice:update'],
-              ifShow: row.status === MesWmSalesNoticeStatusEnum.APPROVED,
-              onClick: handleFinish.bind(null, row),
             },
           ]"
         />
diff --git a/src/views/wls/salesnotice/modules/form.vue b/src/views/wls/salesnotice/modules/form.vue
index a351b94..bf6d825 100644
--- a/src/views/wls/salesnotice/modules/form.vue
+++ b/src/views/wls/salesnotice/modules/form.vue
@@ -30,7 +30,6 @@
   // 鏄惁涓虹紪杈戞ā寮忥紙鍙繚瀛橈級
   ['create', 'update'].includes(formType.value),
 );
-const isFinish = computed(() => formType.value === 'finish'); // 鏄惁涓烘墽琛屽嚭搴撴ā寮�
 const canSubmit = computed(
   () =>
     // 鏄惁鍙彁浜�
@@ -40,9 +39,6 @@
 const getTitle = computed(() => {
   if (formType.value === 'detail') {
     return $t('ui.actionTitle.view', ['鍙戣揣閫氱煡鍗�']);
-  }
-  if (formType.value === 'finish') {
-    return '鎵ц鍑哄簱';
   }
   return formType.value === 'update'
     ? $t('ui.actionTitle.edit', ['鍙戣揣閫氱煡鍗�'])
@@ -85,11 +81,6 @@
   } finally {
     modalApi.unlock();
   }
-}
-
-/** 鎵ц鍑哄簱锛堝悗绔殏鏈疄鐜帮紝鎻愮ず鐢ㄦ埛锛� */
-function handleFinish() {
-  message.info('鎵ц鍑哄簱鍔熻兘鏆傛椂涓嶆敮鎸侊紝鏁鏈熷緟锛�');
 }
 
 const [Modal, modalApi] = useVbenModal({
@@ -173,9 +164,6 @@
         >
           <Button type="primary">鎻愪氦</Button>
         </Popconfirm>
-        <Button v-if="isFinish" type="primary" @click="handleFinish">
-          鎵ц鍑哄簱
-        </Button>
       </div>
     </template>
   </Modal>

--
Gitblit v1.9.3