From dcde4b33fa739b09486c39faade9ed19b29a6d7a Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 03 八月 2026 14:58:35 +0800
Subject: [PATCH] feat(srm): 优化供应商选择组件功能
---
src/views/mes/pro/feedback/index.vue | 76 ++++++++++++++++++++++++++++++++-----
1 files changed, 65 insertions(+), 11 deletions(-)
diff --git a/src/views/mes/pro/feedback/index.vue b/src/views/mes/pro/feedback/index.vue
index 04c8508..b60997e 100644
--- a/src/views/mes/pro/feedback/index.vue
+++ b/src/views/mes/pro/feedback/index.vue
@@ -2,10 +2,10 @@
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import type { MesProFeedbackApi } from '#/api/mes/pro/feedback';
-import { DocAlert, Page, useVbenModal } from '..\..\..\..\packages\effects\common-ui\src';
-import { MesProFeedbackStatusEnum } from '..\..\..\..\packages\constants\src';
-import { useUserStore } from '..\..\..\..\packages\stores\src';
-import { downloadFileFromBlobPart } from '..\..\..\..\packages\utils\src';
+import { Page, useVbenModal } from '@vben/common-ui';
+import { MesProFeedbackStatusEnum } from '@vben/constants';
+import { useUserStore } from '@vben/stores';
+import { downloadFileFromBlobPart } from '@vben/utils';
import { Button, message } from 'ant-design-vue';
@@ -15,10 +15,16 @@
exportFeedback,
getFeedbackPage,
} from '#/api/mes/pro/feedback';
+import { getWorkOrder } from '#/api/mes/pro/workorder';
import { $t } from '#/locales';
+
+import { ref } from 'vue';
import { useGridColumns, useGridFormSchema } from './data';
import Form from './modules/form.vue';
+import QuickFeedbackForm from '../workorder-center/modules/quick-feedback.vue';
+import BatchFeedbackForm from './modules/batch-feedback.vue';
+import ArchiveDetail from '#/views/mes/pd/archive/modules/detail.vue';
const userStore = useUserStore();
const currentUserId = userStore.userInfo?.id; // 褰撳墠鐧诲綍鐢ㄦ埛 ID锛岀敤浜庡鎵逛汉鏉冮檺鍒ゆ柇
@@ -27,6 +33,18 @@
connectedComponent: Form,
destroyOnClose: true,
});
+
+const [QuickFeedbackModal, quickFeedbackModalApi] = useVbenModal({
+ connectedComponent: QuickFeedbackForm,
+ destroyOnClose: true,
+});
+
+const [BatchFeedbackModal, batchFeedbackModalApi] = useVbenModal({
+ connectedComponent: BatchFeedbackForm,
+ destroyOnClose: true,
+});
+
+const archiveDetailRef = ref<InstanceType<typeof ArchiveDetail>>();
/** 鍒锋柊琛ㄦ牸 */
function handleRefresh() {
@@ -40,7 +58,7 @@
/** 缂栬緫鐢熶骇鎶ュ伐 */
function handleEdit(row: MesProFeedbackApi.Feedback) {
- formModalApi.setData({ formType: 'update', id: row.id }).open();
+ formModalApi.setData({ formType: 'update', id: row.id, showSubmitButton: false }).open();
}
/** 鎻愪氦鐢熶骇鎶ュ伐 */
@@ -79,6 +97,27 @@
downloadFileFromBlobPart({ fileName: '鐢熶骇鎶ュ伐.xls', source: data });
}
+/** 鏌ョ湅褰掓。 */
+async function handleArchive(row: MesProFeedbackApi.Feedback) {
+ if (!row.workOrderId) return;
+ try {
+ const workOrder = await getWorkOrder(row.workOrderId);
+ archiveDetailRef.value?.open(workOrder.productCode);
+ } catch {
+ message.error('鑾峰彇宸ュ崟淇℃伅澶辫触');
+ }
+}
+
+/** 蹇�熸姤宸� */
+function handleQuickCreate() {
+ quickFeedbackModalApi.setData({}).open();
+}
+
+/** 鎵归噺鎶ュ伐 */
+function handleBatchCreate() {
+ batchFeedbackModalApi.setData({}).open();
+}
+
const [Grid, gridApi] = useVbenVxeGrid({
formOptions: { schema: useGridFormSchema() },
gridOptions: {
@@ -104,13 +143,9 @@
<template>
<Page auto-content-height>
- <template #doc>
- <DocAlert
- title="銆愮敓浜с�戠敓浜ф姤宸�"
- url="https://doc.iocoder.cn/mes/pro/feedback/"
- />
- </template>
<FormModal @success="handleRefresh" />
+ <QuickFeedbackModal @success="handleRefresh" />
+ <BatchFeedbackModal @success="handleRefresh" />
<Grid table-title="鐢熶骇鎶ュ伐鍒楄〃">
<template #toolbar-tools>
<TableAction
@@ -121,6 +156,19 @@
icon: ACTION_ICON.ADD,
auth: ['mes:pro-feedback:create'],
onClick: handleCreate,
+ },
+ {
+ label: '蹇�熸姤宸�',
+ type: 'primary',
+ icon: ACTION_ICON.ADD,
+ auth: ['mes:pro-feedback:create'],
+ onClick: handleQuickCreate,
+ },
+ {
+ label: '鎵归噺鎶ュ伐',
+ type: 'primary',
+ auth: ['mes:pro-feedback:create'],
+ onClick: handleBatchCreate,
},
{
label: $t('ui.actionTitle.export'),
@@ -174,9 +222,15 @@
confirm: handleDelete.bind(null, row),
},
},
+ {
+ label: '褰掓。',
+ type: 'link',
+ onClick: handleArchive.bind(null, row),
+ },
]"
/>
</template>
</Grid>
+ <ArchiveDetail ref="archiveDetailRef" />
</Page>
</template>
--
Gitblit v1.9.3