From c2e8526f8f857be5e3a8c6f2b39c5efd424de33e Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 15 十月 2026 11:50:24 +0800
Subject: [PATCH] refactor(auth): 优化认证逻辑和界面组件结构
---
src/views/mes/pro/workorder-center/index.vue | 59 ++++++++++++++++++-----------------------------------------
1 files changed, 18 insertions(+), 41 deletions(-)
diff --git a/src/views/mes/pro/workorder-center/index.vue b/src/views/mes/pro/workorder-center/index.vue
index 99ada7d..c8f8f0a 100644
--- a/src/views/mes/pro/workorder-center/index.vue
+++ b/src/views/mes/pro/workorder-center/index.vue
@@ -1,6 +1,6 @@
<script lang="ts" setup>
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
-import type { MesProWorkOrderApi, TaskInfo } from '#/api/mes/pro/workorder';
+import type { MesProWorkOrderApi, TaskInfo, WorkOrderProgress } from '#/api/mes/pro/workorder';
import { ref } from 'vue';
import { useRouter } from 'vue-router';
@@ -16,19 +16,24 @@
getWorkOrderProgress,
checkAndAutoFinishWorkOrder,
} from '#/api/mes/pro/workorder';
-import { previewAutoGenerate, autoGenerateTasks } from '#/api/mes/pro/task';
import ArchiveDetail from '#/views/mes/pd/archive/modules/detail.vue';
import { useGridColumns, useGridFormSchema, useTaskGridColumns } from './data';
import QuickFeedbackForm from './modules/quick-feedback.vue';
-import SchedulePreviewModal from './modules/schedule-preview.vue';
+import AutoSchedule from '../task/modules/auto-schedule.vue';
defineOptions({ name: 'WorkorderCenter' });
-const archiveDetailRef = ref<InstanceType<typeof ArchiveDetail>>();
+const archiveVisible = ref(false);
+const archiveProductCode = ref('');
+
+function handleArchive(row: MesProWorkOrderApi.WorkOrder) {
+ archiveProductCode.value = row.productCode ?? '';
+ archiveVisible.value = true;
+}
const router = useRouter();
-const progressData = ref<MesProWorkOrderApi.WorkOrderProgress | null>(null);
+const progressData = ref<WorkOrderProgress | null>(null);
const activeProcessKeys = ref<string[]>([]);
const expandedRowId = ref<number | null>(null);
@@ -38,7 +43,7 @@
});
const [SchedulePreviewModalWrap, schedulePreviewModalApi] = useVbenModal({
- connectedComponent: SchedulePreviewModal,
+ connectedComponent: AutoSchedule,
destroyOnClose: true,
});
@@ -107,27 +112,9 @@
.open();
}
-/** 涓�閿帓浜ч瑙� */
-async function handleSchedulePreview(row: MesProWorkOrderApi.WorkOrder) {
- try {
- const preview = await previewAutoGenerate({ workOrderId: row.id! });
- schedulePreviewModalApi
- .setData({ workOrder: row, preview })
- .open();
- } catch {
- message.error('鑾峰彇鎺掍骇棰勮澶辫触');
- }
-}
-
-/** 鎵ц涓�閿帓浜� */
-async function handleScheduleExecute(row: MesProWorkOrderApi.WorkOrder) {
- try {
- const result = await autoGenerateTasks({ workOrderId: row.id! });
- message.success(`鎺掍骇鎴愬姛锛岀敓鎴� ${result.taskIds?.length || 0} 涓换鍔);
- handleRefresh();
- } catch {
- message.error('鎺掍骇澶辫触');
- }
+/** 涓庣敓浜ф帓浜у叡鐢ㄦ牎楠屻�侀瑙堝拰鎵ц娴佺▼銆� */
+function handleSchedulePreview(row: MesProWorkOrderApi.WorkOrder) {
+ schedulePreviewModalApi.setData({ workOrderIds: [row.id!] }).open();
}
const [Grid, gridApi] = useVbenVxeGrid({
@@ -193,26 +180,16 @@
<TableAction
:actions="[
{
- label: '鎺掍骇棰勮',
- type: 'link',
- auth: ['mes:pro-task:create'],
- ifShow: row.quantityScheduled < row.quantity,
- onClick: handleSchedulePreview.bind(null, row),
- },
- {
label: '涓�閿帓浜�',
type: 'link',
auth: ['mes:pro-task:create'],
- ifShow: row.quantityScheduled < row.quantity,
- popConfirm: {
- title: '纭涓�閿帓浜э紵灏嗘寜鐓у伐鑹鸿矾绾胯嚜鍔ㄧ敓鎴愪换鍔°��',
- confirm: handleScheduleExecute.bind(null, row),
- },
+ ifShow: (row.quantityScheduled ?? 0) < (row.quantity ?? 0),
+ onClick: handleSchedulePreview.bind(null, row),
},
{
label: '褰掓。',
type: 'link',
- onClick: () => archiveDetailRef.value?.open(row.productCode),
+ onClick: () => handleArchive(row),
},
]"
/>
@@ -316,6 +293,6 @@
</Collapse.Panel>
</Collapse>
</Card>
- <ArchiveDetail ref="archiveDetailRef" />
+ <ArchiveDetail :visible="archiveVisible" :product-code="archiveProductCode" @update:visible="archiveVisible = $event" />
</Page>
</template>
--
Gitblit v1.9.3