From 3c4d241b9ef0d14a0cea5cd69b7919dfba1d14c5 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 24 七月 2026 16:17:15 +0800
Subject: [PATCH] 银川 1.销售订单生产状态不匹配, 2.采购订单中没有退货状态字段,筛选项有退货状态 3.采购申请添加查看订单、查看审批功能 4.物料管理与mes产品管理的联动逻辑修改
---
src/views/basicData/mdm/data.ts | 111 +++++++++++++++++++++++++++++++++++++------------------
1 files changed, 75 insertions(+), 36 deletions(-)
diff --git a/src/views/basicData/mdm/data.ts b/src/views/basicData/mdm/data.ts
index bbde65a..953b9f2 100644
--- a/src/views/basicData/mdm/data.ts
+++ b/src/views/basicData/mdm/data.ts
@@ -1,16 +1,40 @@
-import type { VbenFormSchema } from "#/adapter/form";
+import type { VbenFormApi, VbenFormSchema } from "#/adapter/form";
import type { VxeTableGridOptions } from "#/adapter/vxe-table";
+
+import { h } from 'vue';
import { CommonStatusEnum, DICT_TYPE } from "#/packages/constants/src";
import { getDictOptions } from "#/packages/effects/hooks/src";
import { z } from '#/adapter/form';
+import { generateAutoCode } from '#/api/mes/md/autocode/record';
+import { MesAutoCodeRuleCode } from '@vben/constants';
import { getItemTypeSimpleList } from '#/api/mes/md/item/type';
import { getUnitPage } from '#/api/mdm/unit';
+
+import { Button } from 'ant-design-vue';
// 缂撳瓨鍗曚綅鍒楄〃
let unitListCache: any[] | null = null;
let unitListPromise: Promise<any[]> | null = null;
+
+/** 灏嗘墎骞冲垎绫诲垪琛ㄨ浆涓� TreeSelect 鎵�闇�鐨勬爲褰㈢粨鏋� */
+export function buildCategoryTree(list: any[]): any[] {
+ const map = new Map<number, any>();
+ const roots: any[] = [];
+ for (const item of list) {
+ map.set(item.id, { label: item.name, value: item.id, children: [] });
+ }
+ for (const item of list) {
+ const node = map.get(item.id)!;
+ if (item.parentId && map.has(item.parentId)) {
+ map.get(item.parentId)!.children.push(node);
+ } else {
+ roots.push(node);
+ }
+ }
+ return roots;
+}
/** 鑾峰彇鍗曚綅鍒楄〃锛堝甫缂撳瓨锛� */
async function getUnitListCached() {
@@ -29,8 +53,13 @@
return unitListPromise;
}
+/** 娓呴櫎鍗曚綅鍒楄〃缂撳瓨 */
+export function clearUnitListCache() {
+ unitListCache = null;
+}
+
/** 鏂板/淇敼鐨勮〃鍗� */
-export function useFormSchema(): VbenFormSchema[] {
+export function useFormSchema(formApi?: VbenFormApi, categoryTreeData: any[] = []): VbenFormSchema[] {
return [
{
component: "Input",
@@ -45,9 +74,24 @@
fieldName: "code",
label: "鐗╂枡缂栫爜",
componentProps: {
+ maxLength: 64,
placeholder: "璇疯緭鍏ョ墿鏂欑紪鐮�",
},
- rules: "required",
+ rules: z.string().min(1, '鐗╂枡缂栫爜涓嶈兘涓虹┖').max(64),
+ suffix: () =>
+ h(
+ Button,
+ {
+ type: 'default',
+ onClick: async () => {
+ const code = await generateAutoCode(
+ MesAutoCodeRuleCode.MD_ITEM_CODE,
+ );
+ await formApi?.setFieldValue('code', code);
+ },
+ },
+ { default: () => '鐢熸垚' },
+ ),
},
{
component: "Input",
@@ -59,19 +103,16 @@
rules: "required",
},
{
- component: "ApiSelect",
+ component: "TreeSelect",
fieldName: "categoryId",
label: "鐗╂枡鍒嗙被",
rules: "selectRequired",
componentProps: {
placeholder: "璇烽�夋嫨鐗╂枡鍒嗙被",
allowClear: true,
- api: async () => {
- const res = await getItemTypeSimpleList();
- return res || [];
- },
- labelField: "name",
- valueField: "id",
+ treeDefaultExpandAll: true,
+ treeData: categoryTreeData,
+ fieldNames: { label: 'label', value: 'value', children: 'children' },
},
},
{
@@ -233,17 +274,6 @@
fieldName: 'isBatchManaged',
label: '鎵规绠$悊',
defaultValue: false,
- componentProps: {
- class: "w-auto",
- checkedChildren: "鏄�",
- unCheckedChildren: "鍚�",
- },
- rules: z.boolean().default(false),
- },
- {
- component: "Switch",
- fieldName: "syncMes",
- label: "鍚屾鍒� MES",
componentProps: {
class: "w-auto",
checkedChildren: "鏄�",
@@ -511,27 +541,36 @@
},
},
{
- field: "isBatchManaged",
- title: "鎵规绠$悊",
- minWidth: 80,
- slots: { default: "isBatchManaged" },
- },
- {
- field: "status",
- title: "鐘舵��",
- minWidth: 80,
- cellRender: {
- name: "CellDict",
- props: { type: DICT_TYPE.COMMON_STATUS },
- },
- },
- {
field: "createTime",
title: "鍒涘缓鏃堕棿",
minWidth: 180,
formatter: "formatDateTime",
},
{
+ field: "isBatchManaged",
+ title: "鎵规绠$悊",
+ width: 80,
+ fixed: "right",
+ slots: { default: "isBatchManaged" },
+ },
+ {
+ field: "syncedMes",
+ title: "鍚屾鐘舵��",
+ width: 90,
+ fixed: "right",
+ slots: { default: "syncedMes" },
+ },
+ {
+ field: "status",
+ title: "鐘舵��",
+ width: 80,
+ fixed: "right",
+ cellRender: {
+ name: "CellDict",
+ props: { type: DICT_TYPE.COMMON_STATUS },
+ },
+ },
+ {
title: "鎿嶄綔",
width: 180,
fixed: "right",
--
Gitblit v1.9.3