From f10cf167372f2d8c4c0e14f42f361d7ab96d8347 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期五, 03 七月 2026 13:59:00 +0800
Subject: [PATCH] Merge branch 'dev_pro2.0' of http://114.132.189.42:9002/r/mom-pro2-before into dev_pro2.0
---
src/views/mes/pd/project/modules/version-change/data.ts | 167 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 167 insertions(+), 0 deletions(-)
diff --git a/src/views/mes/pd/project/modules/version-change/data.ts b/src/views/mes/pd/project/modules/version-change/data.ts
new file mode 100644
index 0000000..e4756cc
--- /dev/null
+++ b/src/views/mes/pd/project/modules/version-change/data.ts
@@ -0,0 +1,167 @@
+import type { VbenFormApi, VbenFormSchema } from '#/adapter/form';
+import type { VxeTableGridOptions } from '#/adapter/vxe-table';
+
+import { h } from 'vue';
+
+import { DICT_TYPE, MesAutoCodeRuleCode } from '#/packages/constants/src';
+import { getDictOptions } from '#/packages/effects/hooks/src';
+
+import { Button } from 'ant-design-vue';
+
+import { generateAutoCode } from '#/api/mes/md/autocode/record';
+import { isPdMockEnabled } from '#/api/mes/pd/mock/enabled';
+import { mockNextCode } from '#/api/mes/pd/mock/utils';
+
+export type VersionChangeFormType = 'create' | 'detail' | 'update';
+
+export function useVersionChangeGridFormSchema(): VbenFormSchema[] {
+ return [
+ {
+ fieldName: 'code',
+ label: '鍙樻洿鍗曞彿',
+ component: 'Input',
+ componentProps: { placeholder: '璇疯緭鍏ュ彉鏇村崟鍙�' },
+ },
+ {
+ fieldName: 'changeType',
+ label: '鍙樻洿绫诲瀷',
+ component: 'Select',
+ componentProps: {
+ allowClear: true,
+ options: getDictOptions(DICT_TYPE.MES_PD_VERSION_CHANGE_TYPE, 'number'),
+ placeholder: '璇烽�夋嫨鍙樻洿绫诲瀷',
+ },
+ },
+ ];
+}
+
+export function useVersionChangeGridColumns(
+ showAction = true,
+): VxeTableGridOptions['columns'] {
+ const columns: VxeTableGridOptions['columns'] = [
+ { field: 'code', title: '鍙樻洿鍗曞彿', minWidth: 130 },
+ {
+ field: 'changeType',
+ title: '鍙樻洿绫诲瀷',
+ minWidth: 100,
+ cellRender: {
+ name: 'CellDict',
+ props: { type: DICT_TYPE.MES_PD_VERSION_CHANGE_TYPE },
+ },
+ },
+ { field: 'fromVersion', title: '鍘熺増鏈�', minWidth: 90 },
+ { field: 'toVersion', title: '鏂扮増鏈�', minWidth: 90 },
+ { field: 'applicantName', title: '鐢宠浜�', minWidth: 100 },
+ {
+ field: 'createTime',
+ title: '鐢宠鏃堕棿',
+ minWidth: 160,
+ formatter: 'formatDateTime',
+ },
+ ];
+
+ if (showAction) {
+ columns.push({
+ field: 'action',
+ title: '鎿嶄綔',
+ width: 180,
+ fixed: 'right',
+ slots: { default: 'actions' },
+ });
+ }
+
+ return columns;
+}
+
+export function useVersionChangeFormSchema(
+ formType: VersionChangeFormType,
+ formApi?: VbenFormApi,
+): VbenFormSchema[] {
+ const readonly = formType === 'detail';
+ return [
+ {
+ fieldName: 'id',
+ component: 'Input',
+ dependencies: { triggerFields: [''], show: () => false },
+ },
+ {
+ fieldName: 'projectId',
+ component: 'Input',
+ dependencies: { triggerFields: [''], show: () => false },
+ },
+ {
+ fieldName: 'code',
+ label: '鍙樻洿鍗曞彿',
+ component: 'Input',
+ componentProps: { disabled: readonly, placeholder: '璇疯緭鍏ュ彉鏇村崟鍙�' },
+ rules: 'required',
+ suffix:
+ formType === 'detail'
+ ? undefined
+ : () =>
+ h(
+ Button,
+ {
+ type: 'default',
+ onClick: async () => {
+ const code = isPdMockEnabled()
+ ? mockNextCode(
+ 'VC-2026',
+ Math.floor(Date.now() % 10_000),
+ )
+ : await generateAutoCode(
+ MesAutoCodeRuleCode.PD_VERSION_CODE,
+ );
+ await formApi?.setFieldValue('code', code);
+ },
+ },
+ { default: () => '鐢熸垚' },
+ ),
+ },
+ {
+ fieldName: 'changeType',
+ label: '鍙樻洿绫诲瀷',
+ component: 'Select',
+ componentProps: {
+ disabled: readonly,
+ options: getDictOptions(DICT_TYPE.MES_PD_VERSION_CHANGE_TYPE, 'number'),
+ placeholder: '璇烽�夋嫨鍙樻洿绫诲瀷',
+ },
+ rules: 'selectRequired',
+ },
+ {
+ fieldName: 'fromVersion',
+ label: '鍘熺増鏈�',
+ component: 'Input',
+ componentProps: { disabled: readonly, placeholder: '濡� V1.0' },
+ rules: 'required',
+ },
+ {
+ fieldName: 'toVersion',
+ label: '鏂扮増鏈�',
+ component: 'Input',
+ componentProps: { disabled: readonly, placeholder: '濡� V1.1' },
+ rules: 'required',
+ },
+ {
+ fieldName: 'changeReason',
+ label: '鍙樻洿鍘熷洜',
+ component: 'Textarea',
+ componentProps: { disabled: readonly, placeholder: '璇疯緭鍏ュ彉鏇村師鍥�', rows: 2 },
+ rules: 'required',
+ },
+ {
+ fieldName: 'changeContent',
+ label: '鍙樻洿鍐呭',
+ component: 'Textarea',
+ componentProps: { disabled: readonly, placeholder: '璇疯緭鍏ュ彉鏇村唴瀹�', rows: 4 },
+ rules: 'required',
+ },
+ {
+ fieldName: 'remark',
+ label: '澶囨敞',
+ component: 'Textarea',
+ componentProps: { disabled: readonly, placeholder: '璇疯緭鍏ュ娉�', rows: 2 },
+ },
+ ];
+}
--
Gitblit v1.9.3