@gct-paas/word 0.1.74-beta.20 → 0.1.74-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/data/enrichers/build-field-enrichers.d.ts +1 -1
- package/dist/core/data/enrichers/lot-parent-label-enricher.d.ts +13 -0
- package/dist/domain/field/field-type.d.ts +4 -0
- package/dist/domain/table/business/material/types.d.ts +41 -0
- package/dist/domain/table/business/preprocess/pretreatment-list/profile/field-keys.d.ts +5 -5
- package/dist/index.es.js +10845 -5197
- package/dist/runtime/canvas/table/render/material-consume/bom-validator.d.ts +141 -18
- package/dist/runtime/canvas/table/render/material-consume/context-key.d.ts +4 -0
- package/dist/runtime/canvas/table/render/material-consume/index.d.ts +1 -0
- package/dist/runtime/canvas/table/render/material-consume/material-consume-group-merge.d.ts +19 -0
- package/dist/runtime/canvas/table/render/material-consume/material-consume-table-controller.d.ts +79 -20
- package/dist/runtime/canvas/table/render/material-consume/material-consume.util.d.ts +2 -3
- package/dist/runtime/canvas/table/render/material-consume/product-id-query.d.ts +31 -0
- package/dist/runtime/canvas/table/render/material-consume/scan-fill.d.ts +13 -0
- package/dist/runtime/canvas/table/render/material-consume/scan-validator.d.ts +192 -0
- package/dist/runtime/canvas/table/render/material-consume/service.d.ts +6 -0
- package/dist/runtime/canvas/table/render/material-consume/transform.d.ts +12 -0
- package/dist/runtime/renderer/dialogs/field-hyperlink/open-field-hyperlink.d.ts +0 -22
- package/dist/runtime/renderer/dropdowns/components/tables/columns/business/biz.d.ts +11 -0
- package/dist/runtime/renderer/dropdowns/components/tables/columns/columns.d.ts +4 -2
- package/dist/runtime/renderer/dropdowns/components/tables/strategy/selectStrategy.d.ts +3 -1
- package/dist/suites/edhr/component/resolve-field-render-colors.d.ts +4 -0
- package/dist/suites/edhr/panel-schema/data-init/material-consume-object/bom-validator.d.ts +52 -0
- package/dist/suites/edhr/panel-schema/data-init/material-consume-object/index.d.ts +2 -0
- package/dist/suites/edhr/panel-schema/data-init/material-consume-object/use-tmpl-bom.d.ts +13 -0
- package/dist/suites/edhr/panel-schema/data-init/object-init/object-init.vue.d.ts +7 -5
- package/dist/utils/adapters/TriggerUtil.d.ts +1 -1
- package/dist/word.css +69 -66
- package/package.json +1 -1
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { IBomEntry, IMaterialConsumeData } from '../../../../../domain/table/business/material/types';
|
|
2
|
+
/**
|
|
3
|
+
* 扫码校验与填充
|
|
4
|
+
* 对应 scan-validation-logic.md
|
|
5
|
+
* 独立于 bom-validator.ts,只依赖 types 中的 IBomEntry / IMaterialConsumeData
|
|
6
|
+
*/
|
|
7
|
+
/** 横线下方三种扫码场景 */
|
|
8
|
+
export declare enum ScanBizScenario {
|
|
9
|
+
/** 有 BOM,按顺序上料,同时只有一组可编辑 */
|
|
10
|
+
HAS_BOM_SEQUENTIAL = "has_bom_sequential",
|
|
11
|
+
/** 有 BOM,不按顺序上料,所有行可编辑 */
|
|
12
|
+
HAS_BOM_FREE = "has_bom_free",
|
|
13
|
+
/** 没有 BOM,所有行可编辑 */
|
|
14
|
+
NO_BOM = "no_bom"
|
|
15
|
+
}
|
|
16
|
+
/** 填充动作:新增行 / 回填空物料 / 回填空批次 */
|
|
17
|
+
export type ScanFillAction = 'append' | 'fillEmptyProduct' | 'fillEmptyLot';
|
|
18
|
+
export interface ScanValidatorOptions {
|
|
19
|
+
/** 是否按顺序上料 */
|
|
20
|
+
enableSequenceLoading: boolean;
|
|
21
|
+
/** BOM 明细列表,场景三可传空数组 */
|
|
22
|
+
bomEntries?: IBomEntry[];
|
|
23
|
+
/** 场景三:无 BOM 时是否按批次上料。有 BOM 时以明细 type_ 为准 */
|
|
24
|
+
byLotEnabled?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/** 填充成功后的表数据与动作 */
|
|
27
|
+
export interface ScanFillResult {
|
|
28
|
+
table: IMaterialConsumeData[];
|
|
29
|
+
groupSwitched: boolean;
|
|
30
|
+
fillAction: ScanFillAction;
|
|
31
|
+
}
|
|
32
|
+
/** 对齐 materialCheck 返回项 */
|
|
33
|
+
export interface ScanCheckItem {
|
|
34
|
+
materialId: string;
|
|
35
|
+
materialNo?: string;
|
|
36
|
+
productionIdentificationName: string;
|
|
37
|
+
}
|
|
38
|
+
export type ResolveScanCandidatesResult = {
|
|
39
|
+
status: 'single';
|
|
40
|
+
row: IMaterialConsumeData;
|
|
41
|
+
} | {
|
|
42
|
+
status: 'needSelect';
|
|
43
|
+
candidates: IMaterialConsumeData[];
|
|
44
|
+
};
|
|
45
|
+
/** handleScan 返回:多条待选,或已填充 */
|
|
46
|
+
export type HandleScanResult = {
|
|
47
|
+
status: 'needSelect';
|
|
48
|
+
candidates: IMaterialConsumeData[];
|
|
49
|
+
} | ({
|
|
50
|
+
status: 'filled';
|
|
51
|
+
} & ScanFillResult);
|
|
52
|
+
/**
|
|
53
|
+
* 把扫码接口一条结果转成表行。
|
|
54
|
+
* extra 可带数量、有效期等;物料/批次默认取接口字段,extra 可覆盖。
|
|
55
|
+
*/
|
|
56
|
+
export declare function toScanRow(item: ScanCheckItem, extra?: Partial<IMaterialConsumeData>): IMaterialConsumeData;
|
|
57
|
+
/**
|
|
58
|
+
* 取一组允许出现的物料 id:主料,以及开启替代料时的替代料。
|
|
59
|
+
* 用于判断某物料是否属于该 BOM 明细组。
|
|
60
|
+
*/
|
|
61
|
+
export declare function getGroupProductIds(entry: IBomEntry): string[];
|
|
62
|
+
/**
|
|
63
|
+
* 按物料 id 找到所属 BOM 明细(主料或替代料命中即返回)。
|
|
64
|
+
* 找不到说明物料不在当前 BOM 中。
|
|
65
|
+
*/
|
|
66
|
+
export declare function findEntryByProductId(entries: IBomEntry[], productId: string): IBomEntry | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* 三个场景共用的第一步:把接口返回列表收成单条 scanRow。
|
|
69
|
+
* - 0 条:抛错
|
|
70
|
+
* - 1 条:直接作为 scanRow
|
|
71
|
+
* - 多条:返回 needSelect,由调用方弹窗;本函数不改表、不跑后续校验
|
|
72
|
+
*/
|
|
73
|
+
export declare function resolveScanCandidates(rows: IMaterialConsumeData[]): ResolveScanCandidatesResult;
|
|
74
|
+
/**
|
|
75
|
+
* 按「有无 BOM 明细 + 是否按顺序上料」判定场景。
|
|
76
|
+
* 不使用人为指定 / BOM 模式 / 记录模式。
|
|
77
|
+
*/
|
|
78
|
+
export declare function resolveScanScenario(options: {
|
|
79
|
+
enableSequenceLoading: boolean;
|
|
80
|
+
bomEntries?: IBomEntry[];
|
|
81
|
+
}): ScanBizScenario;
|
|
82
|
+
/**
|
|
83
|
+
* 通用校验 1:扫码物料是否出现在 BOM 明细(主料或替代料)中。
|
|
84
|
+
* 场景三无 BOM,不调用本函数。找不到则抛错。
|
|
85
|
+
*/
|
|
86
|
+
export declare function validateInBom(row: IMaterialConsumeData, entries: IBomEntry[]): void;
|
|
87
|
+
/** 判断物料 id 是否属于该 BOM 组(主料或已启用的替代料) */
|
|
88
|
+
export declare function isMemberOfGroup(productId: string | undefined, entry: IBomEntry): boolean;
|
|
89
|
+
/**
|
|
90
|
+
* 通用校验 2:物料是否允许写入目标组。
|
|
91
|
+
* 查看 / 未开替代料:必须是主料。
|
|
92
|
+
* 整批替代:组内已有物料时必须与之一致。
|
|
93
|
+
* 混用替代:必须是主料或替代料。
|
|
94
|
+
*/
|
|
95
|
+
export declare function assertMaterialInGroup(productId: string | undefined, entry: IBomEntry, groupRows?: IMaterialConsumeData[]): void;
|
|
96
|
+
/**
|
|
97
|
+
* 通用校验 3:按批次上料且开启混批时,同一组同一物料的不同批次数不能超过 lot_mixing_times_。
|
|
98
|
+
* includeIncomingLot 为 true 时,把即将写入的批次也算进去,避免先插入再超限。
|
|
99
|
+
*/
|
|
100
|
+
export declare function validateLotMixingForProduct(row: IMaterialConsumeData, groupRows: IMaterialConsumeData[], entry: IBomEntry, includeIncomingLot?: boolean): void;
|
|
101
|
+
/**
|
|
102
|
+
* 通用校验 4:有效期为空则跳过;有效期当天结束仍早于现在则视为过期并抛错。
|
|
103
|
+
*/
|
|
104
|
+
export declare function checkExpiration(row: IMaterialConsumeData): void;
|
|
105
|
+
/**
|
|
106
|
+
* 通用校验 5:开启数量校验时,同一组所有物料的上料之和 vs 组需求量。
|
|
107
|
+
* diff = 上料之和 - 需求量。eq:diff === 0;gte:diff >= 0;lte:diff <= 0;
|
|
108
|
+
* bounds:min <= diff <= max。
|
|
109
|
+
* 不按顺序上料且规则为 eq 时,允许 diff < 0(少上料),diff > 0 仍抛错。
|
|
110
|
+
*/
|
|
111
|
+
export declare function validateQtyForGroup(groupRows: IMaterialConsumeData[], entry: IBomEntry, sequential?: boolean): Promise<void>;
|
|
112
|
+
/**
|
|
113
|
+
* 整组校验:切组前先对每一行走必填 + 通用 2、3、4,再整组跑一次通用 5。
|
|
114
|
+
* 任一项失败则中断,不切组、不填充。
|
|
115
|
+
*/
|
|
116
|
+
export declare function validateGroupRows(groupRows: IMaterialConsumeData[], entry: IBomEntry, sequential?: boolean): Promise<void>;
|
|
117
|
+
/**
|
|
118
|
+
* 物料消耗表扫码校验与填充。
|
|
119
|
+
* 对应 scan-validation-logic.md;不依赖 bom-validator.ts。
|
|
120
|
+
*/
|
|
121
|
+
export declare class BomEntriesValidator {
|
|
122
|
+
private options;
|
|
123
|
+
constructor(options: ScanValidatorOptions);
|
|
124
|
+
/** 当前配置对应的扫码场景 */
|
|
125
|
+
get scenario(): ScanBizScenario;
|
|
126
|
+
/** BOM 明细,无 BOM 时为空数组 */
|
|
127
|
+
get entries(): IBomEntry[];
|
|
128
|
+
/** 按 sort_num_ 排序后的 BOM 明细,用于顺序上料定位当前组 / 下一组 */
|
|
129
|
+
get sortedEntries(): IBomEntry[];
|
|
130
|
+
/**
|
|
131
|
+
* 扫码总入口。
|
|
132
|
+
* 入参可为单条或接口返回的多条;不修改入参 table。
|
|
133
|
+
* 多条时返回 needSelect(调用方弹窗后再以选中的一条调用);
|
|
134
|
+
* 单条则按场景走校验和填充,返回 filled。
|
|
135
|
+
* TODO: 待处理 — 尚未接入 Controller / 选择弹窗
|
|
136
|
+
*/
|
|
137
|
+
handleScan(scanInput: IMaterialConsumeData | IMaterialConsumeData[], table: IMaterialConsumeData[]): Promise<HandleScanResult>;
|
|
138
|
+
/**
|
|
139
|
+
* 场景一:有 BOM 且按顺序上料。仅当前编辑组可写。
|
|
140
|
+
* 属于当前组:通用 2(含整批)→ 通用 3 → 填充。
|
|
141
|
+
* 不属于:前面组报错,否则切下一组。
|
|
142
|
+
*/
|
|
143
|
+
private runScenario1;
|
|
144
|
+
/** 扫码物料属于前面组:已在表中 → 请勿重复上料;非必须且不在表中 → 请按顺序上料 */
|
|
145
|
+
private assertNotPreviousGroup;
|
|
146
|
+
/**
|
|
147
|
+
* 顺序上料切组:非必须且表中没有时,物料属于该组则收下,否则继续往后。
|
|
148
|
+
* 目标组不在表中:在当前组下方插入空行再填充。
|
|
149
|
+
*/
|
|
150
|
+
private switchToNextGroup;
|
|
151
|
+
/** 在当前组最后一行下方插入目标组空占位行 */
|
|
152
|
+
private insertEmptyGroupBelow;
|
|
153
|
+
/**
|
|
154
|
+
* 场景二:有 BOM 但不按顺序。所有行可编辑,不切组。
|
|
155
|
+
* 表中没有该组:通用 2、3 后表末追加。有则通用 2、3 后走填充。
|
|
156
|
+
*/
|
|
157
|
+
private runScenario2;
|
|
158
|
+
/**
|
|
159
|
+
* 场景三:没有 BOM。只校验有效期,不跑通用 1/2/3。
|
|
160
|
+
* 优先填空物料行,其次按批次填「有物料无批次」行,否则表末新增。
|
|
161
|
+
*/
|
|
162
|
+
private runScenario3;
|
|
163
|
+
/**
|
|
164
|
+
* 顺序上料时定位「当前编辑组」在排序后 BOM 中的下标。
|
|
165
|
+
* 1. 编辑行有物料或 bom_entry_id_:按现逻辑匹配
|
|
166
|
+
* 2. 未初始化:取表中最后一组已出现(已确认)明细的序号,当前组 = BOM 下一条
|
|
167
|
+
* 3. 表里还没有任何组:第一组
|
|
168
|
+
*/
|
|
169
|
+
private resolveCurrentGroupIndex;
|
|
170
|
+
/**
|
|
171
|
+
* 从表尾往前找最后一组已出现的 BOM 明细(已确认且有物料或 bom_entry_id_)。
|
|
172
|
+
* 找不到返回 -1。
|
|
173
|
+
*/
|
|
174
|
+
private findLastAppearedGroupIndex;
|
|
175
|
+
/** 表中是否已有该 BOM 组(有物料行或带 bom_entry_id_ 的空行) */
|
|
176
|
+
private groupExistsInTable;
|
|
177
|
+
/**
|
|
178
|
+
* 收集空物料行下标。extra 可再限制范围(如仅当前编辑组、或匹配 bom_entry_id_)。
|
|
179
|
+
*/
|
|
180
|
+
private collectEmptyProductIndexes;
|
|
181
|
+
/**
|
|
182
|
+
* 收集某 BOM 组在表中的范围:组成员行、空物料行、空批次行,以及默认插入位置。
|
|
183
|
+
* editingGroup 为 true 时,未确认的空物料行也算进该组。
|
|
184
|
+
*/
|
|
185
|
+
private collectGroupScope;
|
|
186
|
+
/**
|
|
187
|
+
* 切组时改编辑态:当前组行确认(禁用),目标组行取消确认(可编辑)。
|
|
188
|
+
*/
|
|
189
|
+
private applyGroupEditState;
|
|
190
|
+
}
|
|
191
|
+
/** 创建扫码校验器实例 */
|
|
192
|
+
export declare function createBomValidator(options: ScanValidatorOptions): BomEntriesValidator;
|
|
@@ -18,6 +18,10 @@ export declare function materialCheck(params: {
|
|
|
18
18
|
bom_entries_: any;
|
|
19
19
|
/** 工序id */
|
|
20
20
|
operation_id_: string;
|
|
21
|
+
/** 唯一码 */
|
|
22
|
+
unique_code_: any;
|
|
23
|
+
/** 是否启用条码解析 */
|
|
24
|
+
bar_code_enabled_: boolean;
|
|
21
25
|
}): Promise<{
|
|
22
26
|
/** 物料id */
|
|
23
27
|
materialId: string;
|
|
@@ -62,3 +66,5 @@ export declare function judgeUnique(opts: {
|
|
|
62
66
|
}): Promise<boolean>;
|
|
63
67
|
/** 是否有BOM授权 */
|
|
64
68
|
export declare function queryIsBomGranted(): Promise<any>;
|
|
69
|
+
/** 查批次锁定记录(最新一条) */
|
|
70
|
+
export declare function getLotLockedReason(production_identification_id_: string): Promise<string>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** 将源数据转换为子表数据 */
|
|
2
|
+
declare function transformSourceData2SubTable(data: any, dict?: {},
|
|
3
|
+
/** 默认值 */
|
|
4
|
+
defaultData?: any): {
|
|
5
|
+
_DICT: object;
|
|
6
|
+
_OPCT: object;
|
|
7
|
+
[key: string]: any;
|
|
8
|
+
}[];
|
|
9
|
+
export declare const transformUtils: {
|
|
10
|
+
transformSourceData2SubTable: typeof transformSourceData2SubTable;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
@@ -1,24 +1,2 @@
|
|
|
1
1
|
import { Doc, WidgetMeta } from '../../../../core';
|
|
2
|
-
import { BusinessSubTableType } from '../../../../domain/table/types';
|
|
3
|
-
/** 填报只读超链接字段点击 → 宿主打开追溯弹框 */
|
|
4
|
-
interface OpenFieldHyperlinkModalOptions {
|
|
5
|
-
/** 展示值(批次号等) */
|
|
6
|
-
materialNo?: string;
|
|
7
|
-
/** 字段 manifest 类型(如 material_no);同类型可能对应不同业务弹框,需配合 fieldKey/tableType */
|
|
8
|
-
fieldType?: string;
|
|
9
|
-
/** enrich 写入的 _href_(可能为空,如 newHrefSuffix 静态链) */
|
|
10
|
-
href?: string | null;
|
|
11
|
-
/** 业务字段 key,如 production_container_id_ / material_container_no_ */
|
|
12
|
-
fieldKey?: string;
|
|
13
|
-
/** 业务表类型,如 pretreatment-list;主表字段为空 */
|
|
14
|
-
tableType?: BusinessSubTableType;
|
|
15
|
-
/** 子表字段 key(子模型挂载点) */
|
|
16
|
-
subFieldKey?: string;
|
|
17
|
-
/** 子表行号 */
|
|
18
|
-
rowIndex?: number;
|
|
19
|
-
/** 运行时 valuePath */
|
|
20
|
-
valuePath?: string;
|
|
21
|
-
}
|
|
22
|
-
export declare function resolveOpenFieldHyperlinkModalOptions(doc: Doc, widgetMeta: WidgetMeta, runtimeValuePath: string): OpenFieldHyperlinkModalOptions;
|
|
23
2
|
export declare function openFieldHyperlinkModal(doc: Doc, widgetMeta: WidgetMeta, runtimeValuePath: string): Promise<void>;
|
|
24
|
-
export {};
|
|
@@ -20,3 +20,14 @@ export declare const bizMfgOrderColumns: ({
|
|
|
20
20
|
field: string;
|
|
21
21
|
minWidth: number;
|
|
22
22
|
})[];
|
|
23
|
+
export declare const materialContainerColumns: ({
|
|
24
|
+
field: string;
|
|
25
|
+
type: string;
|
|
26
|
+
minWidth: number;
|
|
27
|
+
width: number;
|
|
28
|
+
showOverflow: boolean;
|
|
29
|
+
} | {
|
|
30
|
+
title: string;
|
|
31
|
+
field: string;
|
|
32
|
+
minWidth: number;
|
|
33
|
+
})[];
|
|
@@ -10,6 +10,8 @@ export declare function getColumns(key: string, displayFields: IDisplayField[],
|
|
|
10
10
|
* 根据列配置和行数据返回格式化后的值
|
|
11
11
|
*/
|
|
12
12
|
export declare function renderWithFormatter(column?: any, row?: any): any;
|
|
13
|
+
/** LOT/SN 下拉项的展示名称;related_child 对外展示父批次名称。 */
|
|
14
|
+
export declare function getLotDisplayLabel(item: any): string;
|
|
13
15
|
/**
|
|
14
16
|
* 树形数据转换
|
|
15
17
|
* 用于 RDO 场景,将平层数据转换为树形结构
|
|
@@ -35,7 +37,7 @@ export declare function transformTreeData(options?: any[], currentValue?: string
|
|
|
35
37
|
* 用于批次/表格数据场景,将原始数据转换为表格行数据
|
|
36
38
|
*
|
|
37
39
|
* @param options - 原始选项数据
|
|
38
|
-
* @param currentValue -
|
|
40
|
+
* @param currentValue - 当前选中的值(普通批次为 name,生产批次为 id)
|
|
39
41
|
* @param currentId - companion `_id_`;有值时优先按 id 高亮,老数据无 id 时回退 name
|
|
40
42
|
* @returns 转换后的数据和高亮索引
|
|
41
43
|
*
|
|
@@ -44,7 +46,7 @@ export declare function transformTreeData(options?: any[], currentValue?: string
|
|
|
44
46
|
* const { data, highlightIdx } = transformLotData(options, 'lot-123', 'id-xxx');
|
|
45
47
|
* ```
|
|
46
48
|
*/
|
|
47
|
-
export declare function transformLotData(options?: Option[], currentValue?: string | string[], currentId?: string): {
|
|
49
|
+
export declare function transformLotData(options?: Option[], currentValue?: string | string[], currentId?: string, displayRelatedParent?: boolean): {
|
|
48
50
|
data: any[];
|
|
49
51
|
highlightIdx: {
|
|
50
52
|
index: number[];
|
|
@@ -36,6 +36,8 @@ export interface SelectStrategy {
|
|
|
36
36
|
allowManualInput?: boolean;
|
|
37
37
|
/** 下拉选中时同步写入 companion `_id_`(批次字段) */
|
|
38
38
|
persistOptionId?: boolean;
|
|
39
|
+
/** 是否将 related_child 的展示名称切换为父批次名称 */
|
|
40
|
+
displayRelatedParent?: boolean;
|
|
39
41
|
/**
|
|
40
42
|
* 将 option `id_` 写入行内指定字段(如 `inventory_id_`),用于多库存行唯一回显
|
|
41
43
|
* @see SelectSourceDef.optionIdField
|
|
@@ -44,7 +46,7 @@ export interface SelectStrategy {
|
|
|
44
46
|
/** biz 请求体与 pageNo/pageSize 平铺,不走 query/exp(由 searchStyle === 'param' 推导) */
|
|
45
47
|
flatRequestBody?: boolean;
|
|
46
48
|
buildQuery?: (ctx: SelectQueryContext) => SelectQueryResult;
|
|
47
|
-
transform: (options: any[], value?: string, currentId?: string) => any;
|
|
49
|
+
transform: (options: any[], value?: string, currentId?: string, displayRelatedParent?: boolean) => any;
|
|
48
50
|
/** 如下拉 value/label 与 fetcher 默认不同 */
|
|
49
51
|
optionMapping?: {
|
|
50
52
|
value?: string;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export type FieldRenderColors = {
|
|
2
2
|
color: string;
|
|
3
3
|
background: string;
|
|
4
|
+
/** 超链接下划线颜色(文字颜色可能被校验色覆盖) */
|
|
5
|
+
underlineColor?: string;
|
|
4
6
|
};
|
|
5
7
|
/**
|
|
6
8
|
* 统一字段画布配色:校验异常红 + 打印 / 禁用 / 只读 / 可编辑
|
|
@@ -15,4 +17,6 @@ export declare function resolveFieldRenderColors(input: {
|
|
|
15
17
|
/** 有值文本在打印/只读时使用的字色 */
|
|
16
18
|
textColor?: string;
|
|
17
19
|
variant: 'text' | 'placeholder';
|
|
20
|
+
/** 是否按超链接展示。超链接文字无校验时使用链接蓝色。 */
|
|
21
|
+
hyperlink?: boolean;
|
|
18
22
|
}): FieldRenderColors;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { FormInstBomResponse } from '@gct-paas/api/apaas';
|
|
2
|
+
/** 物料消耗对象字段信息 */
|
|
3
|
+
export interface IMaterialConsumeObjectInfo {
|
|
4
|
+
/** 对象字段key */
|
|
5
|
+
objectField: string;
|
|
6
|
+
/** 对象字段名称(仅用于展示) */
|
|
7
|
+
objectFieldName?: string;
|
|
8
|
+
/** 子表字段key */
|
|
9
|
+
subFields?: Record<string, {
|
|
10
|
+
used: boolean;
|
|
11
|
+
key: string;
|
|
12
|
+
[key: string]: any;
|
|
13
|
+
}>;
|
|
14
|
+
}
|
|
15
|
+
/** 物料消耗对象中参与提交数量校验的上料数量字段。 */
|
|
16
|
+
export declare function getObjectBomQtyFieldKeys(objectFieldList?: IMaterialConsumeObjectInfo[]): string[];
|
|
17
|
+
/**
|
|
18
|
+
* 物料消耗对象扫码:按对象 BOM 配置校验扫码物料是否允许
|
|
19
|
+
* - 无 belongingObject / 无配置:跳过
|
|
20
|
+
* - personal_bom_enabled_:人为指定物料,直接通过
|
|
21
|
+
* - 否则用实例 bomEntries 校验(仅主料;开启替代料时才含替代料)
|
|
22
|
+
*/
|
|
23
|
+
export declare function validateObjectBomForScan(opts: {
|
|
24
|
+
formInstBom?: FormInstBomResponse | null;
|
|
25
|
+
belongingObject?: string;
|
|
26
|
+
productId?: string;
|
|
27
|
+
}): void;
|
|
28
|
+
/**
|
|
29
|
+
* 物料消耗对象物料批下拉:未开人为指定时,限制为 BOM 主料 + 已开替代料的替代料
|
|
30
|
+
* - 无需过滤时返回 null(无 belongingObject / 无配置 / 人为指定)
|
|
31
|
+
* - 无候选时用占位 id,避免空数组被后端当成不筛选
|
|
32
|
+
*/
|
|
33
|
+
export declare function getObjectBomMaterialLotQuery(opts: {
|
|
34
|
+
formInstBom?: FormInstBomResponse | null;
|
|
35
|
+
belongingObject?: string;
|
|
36
|
+
}): {
|
|
37
|
+
'product_id_.versionIn': string[];
|
|
38
|
+
} | null;
|
|
39
|
+
/**
|
|
40
|
+
* 表单提交:校验所有物料消耗对象的数量 vs 需求数量
|
|
41
|
+
* - 开了数量校验且需求数量有值才校验
|
|
42
|
+
* - 人为指定:用 objectBom.entries_[0];否则用 bomEntries 中与对象物料匹配的明细
|
|
43
|
+
* - 失败返回与物料消耗表 submitValidate 同类的 field/message 结构
|
|
44
|
+
*/
|
|
45
|
+
export declare function validateObjectBomQtyOnSubmit(opts: {
|
|
46
|
+
formState: Record<string, any>;
|
|
47
|
+
objectFieldList?: IMaterialConsumeObjectInfo[];
|
|
48
|
+
formInstBom?: FormInstBomResponse | null;
|
|
49
|
+
}): Promise<{
|
|
50
|
+
field: string;
|
|
51
|
+
message: string;
|
|
52
|
+
} | null>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ComputedRef, MaybeRef } from 'vue';
|
|
2
|
+
import { FormTmplBomController } from '../../../../../runtime/canvas/table/render/material-consume';
|
|
3
|
+
import { FormInstBomResponse } from '@gct-paas/api/apaas';
|
|
4
|
+
/**
|
|
5
|
+
* 当前页 FormTmplBomController 的 provide / inject
|
|
6
|
+
* - document-paper 中 provide 当前页控制器
|
|
7
|
+
* - 主模型字段等通过 injectController / injectFormInstBom 读取
|
|
8
|
+
*/
|
|
9
|
+
export declare function useTmplBom(): {
|
|
10
|
+
provideController: (c: MaybeRef<FormTmplBomController | undefined>) => MaybeRef<FormTmplBomController | undefined>;
|
|
11
|
+
injectController: () => ComputedRef<FormTmplBomController | undefined>;
|
|
12
|
+
injectFormInstBom: () => ComputedRef<FormInstBomResponse | null | undefined>;
|
|
13
|
+
};
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
type __VLS_Props = {
|
|
2
|
-
|
|
3
|
-
onChange: (list: any[]) => void;
|
|
2
|
+
objects: any[];
|
|
4
3
|
};
|
|
5
|
-
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
5
|
+
"update:objects": (...args: any[]) => void;
|
|
6
|
+
}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
7
|
+
"onUpdate:objects"?: ((...args: any[]) => any) | undefined;
|
|
8
|
+
}>, {
|
|
9
|
+
objects: any[];
|
|
8
10
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
9
11
|
export default _default;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type TriggerName = 'OPEN_COMMON_CONFIRM_MODAL' | 'OPEN_DOC_SIGNATURE_RULE_CONFIG_MODAL' | 'OPEN_DATA_INIT_DATASOURCE_FORM_MODEL_MODAL' | 'OPEN_DATA_INIT_DATASOURCE_INPUT_PARAMS_MODAL' | 'OPEN_DATA_INIT_DATASOURCE_OUTPUT_PARAMS_MODAL' | '
|
|
1
|
+
export type TriggerName = 'OPEN_COMMON_CONFIRM_MODAL' | 'OPEN_DOC_SIGNATURE_RULE_CONFIG_MODAL' | 'OPEN_DATA_INIT_DATASOURCE_FORM_MODEL_MODAL' | 'OPEN_DATA_INIT_DATASOURCE_INPUT_PARAMS_MODAL' | 'OPEN_DATA_INIT_DATASOURCE_OUTPUT_PARAMS_MODAL' | 'OPEN_FIELD_HYPERLINK_MODAL' | 'OPEN_FIELD_ONLINE_FORM_TMPL_MODAL' | 'OPEN_DISPLAY_FIELDS_TRANSFER_MODAL' | 'OPEN_QUICK_FILL_MODAL' | 'OPEN_CHECK_TABLE_DS_MODAL' | 'OPEN_COMMON_BUSINESS_TABLE_SCAN_MODAL' | 'OPEN_COMMON_BUSINESS_TABLE_MULTI_ROWS_MODAL' | 'OPEN_E_SOP_VIEW_MODAL' | 'OPEN_FORMULA_EDITOR_MODAL';
|
|
2
2
|
export type TriggerHandler = (name: TriggerName, options?: any) => Promise<any>;
|
|
3
3
|
interface TriggerUtilHandlers {
|
|
4
4
|
handle?: TriggerHandler;
|