@gct-paas/word 0.1.57 → 0.1.59
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/DataManager.d.ts +4 -1
- package/dist/core/data/derived-fields.d.ts +9 -1
- package/dist/core/data/enrichers/id-enricher.d.ts +9 -0
- package/dist/core/data/pipeline-logger.d.ts +1 -1
- package/dist/domain/field/field-props-schema-type.d.ts +7 -3
- package/dist/domain/table/runtime/engines/linkage-engine.d.ts +1 -1
- package/dist/index.es.js +203 -106
- package/dist/runtime/interface/fetchers.d.ts +0 -2
- package/dist/runtime/renderer/dropdowns/components/tables/columns/columns.d.ts +4 -3
- package/dist/runtime/renderer/dropdowns/components/tables/component/base-vxe-table.vue.d.ts +2 -0
- package/dist/runtime/renderer/dropdowns/components/tables/composables/useTableDropdown.d.ts +2 -0
- package/dist/runtime/renderer/dropdowns/components/tables/rdo-table-dropdown.vue.d.ts +3 -0
- package/dist/runtime/renderer/dropdowns/components/tables/strategy/selectStrategy.d.ts +3 -1
- package/dist/runtime/renderer/dropdowns/components/tables/table-dropdown.vue.d.ts +3 -0
- package/dist/suites/edhr/manifest/field/_common_/basic.d.ts +5 -1
- package/dist/word.css +10 -10
- package/package.json +1 -1
|
@@ -85,6 +85,7 @@ export declare class DataManager {
|
|
|
85
85
|
private scheduleLayout;
|
|
86
86
|
getLabelPath(path: JsonPath): JsonPath;
|
|
87
87
|
getHrefPath(path: JsonPath): JsonPath;
|
|
88
|
+
getIdPath(path: JsonPath): JsonPath;
|
|
88
89
|
getFieldRuntimeSpecificConfigKeys(): string[];
|
|
89
90
|
getRuntimeSpecificConfig(): [string, FieldRuntimeSpecificConfig][];
|
|
90
91
|
setRuntimeSpecificConfig(entries: any): void;
|
|
@@ -121,6 +122,8 @@ export declare class DataManager {
|
|
|
121
122
|
getLabel<T = any>(path: JsonPath): T | undefined;
|
|
122
123
|
/** 获取与 value 并存的超链接 href;无或不可链时为 null/undefined */
|
|
123
124
|
getHref<T = string>(path: JsonPath): T | null | undefined;
|
|
125
|
+
/** 获取与 value 并存的批次唯一标识;老数据可能为空 */
|
|
126
|
+
getId<T = string>(path: JsonPath): T | null | undefined;
|
|
124
127
|
/** 子表数组路径下未软删行数 */
|
|
125
128
|
countActiveSubtableRows(arrayPath: JsonPath): number;
|
|
126
129
|
/**
|
|
@@ -328,7 +331,7 @@ export declare class DataManager {
|
|
|
328
331
|
* @param runtimeValuePath 版面解析后的具体路径(可选)
|
|
329
332
|
*/
|
|
330
333
|
removeFieldBindingData(designValuePath: JsonPath, runtimeValuePath?: JsonPath): void;
|
|
331
|
-
/** 收集与字段绑定相关的路径(含 value / label / href 及通配符变体) */
|
|
334
|
+
/** 收集与字段绑定相关的路径(含 value / label / href / id 及通配符变体) */
|
|
332
335
|
private collectFieldBindingPaths;
|
|
333
336
|
/** 收集可从 rawData 删除的具体路径(跳过含通配符的设计路径) */
|
|
334
337
|
private collectConcreteRawDataPaths;
|
|
@@ -2,11 +2,19 @@
|
|
|
2
2
|
export declare const LABEL_SUFFIX = "_lb_";
|
|
3
3
|
/** 与 rawData 并存的外链 href 后缀(超链接字段) */
|
|
4
4
|
export declare const HREF_SUFFIX = "_href_";
|
|
5
|
+
/** 与 rawData 并存的 id 后缀(批次字段,如 material_no_ → material_no__id_) */
|
|
6
|
+
export declare const ID_SUFFIX = "_id_";
|
|
5
7
|
/** 版面超链接文字颜色 */
|
|
6
8
|
export declare const HYPERLINK_TEXT_COLOR = "#0563c1";
|
|
7
9
|
export declare function getLabelPath(path: string): string;
|
|
8
10
|
export declare function getHrefPath(path: string): string;
|
|
9
|
-
|
|
11
|
+
export declare function getIdPath(path: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* 是否为批次 companion id 路径(以 `__id_` 结尾)。
|
|
14
|
+
* 在于判断用了 endsWith('_id_'):product_id_、warehouse_id_ 也会命中。改成只认以 __id_ 结尾
|
|
15
|
+
*/
|
|
16
|
+
export declare function isCompanionIdPath(path: string): boolean;
|
|
17
|
+
/** 派生数据路径(label / href / companion id),不参与 changedMap / 业务副作用 */
|
|
10
18
|
export declare function isDerivedDataPath(path: string): boolean;
|
|
11
19
|
/** 子表行内仅前端使用、不参与提交的字段 */
|
|
12
20
|
export declare const ROW_RUNTIME_META_KEYS: Set<string>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Doc } from '../../view/Doc';
|
|
2
|
+
import { WidgetMeta } from '../../widget/widget-meta';
|
|
3
|
+
import { DataEnricherRegistration } from '../enricher-types';
|
|
4
|
+
type IdEnricherOptions = Omit<DataEnricherRegistration, 'enrich'> & {
|
|
5
|
+
doc: Doc;
|
|
6
|
+
widgetMeta: WidgetMeta;
|
|
7
|
+
};
|
|
8
|
+
export declare function createIdEnricher(reg: IdEnricherOptions): DataEnricherRegistration;
|
|
9
|
+
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EmitSource } from './emit-source';
|
|
2
|
-
export type PipelineLogNS = 'data.emit' | 'pipeline.hydrate' | 'pipeline.onChange' | 'pipeline.deps' | 'enricher.label' | 'enricher.hyperlink' | 'pipeline.afterFlush' | 'table.runtime' | 'init.lifecycle' | 'submit.prepare';
|
|
2
|
+
export type PipelineLogNS = 'data.emit' | 'pipeline.hydrate' | 'pipeline.onChange' | 'pipeline.deps' | 'enricher.label' | 'enricher.hyperlink' | 'enricher.id' | 'pipeline.afterFlush' | 'table.runtime' | 'init.lifecycle' | 'submit.prepare';
|
|
3
3
|
export type PipelineLogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
4
4
|
export interface PipelineLogEvent {
|
|
5
5
|
ns: PipelineLogNS;
|
|
@@ -39,7 +39,7 @@ export interface JoinRule {
|
|
|
39
39
|
export interface ApiRule {
|
|
40
40
|
type: 'api';
|
|
41
41
|
/** 请求函数 key */
|
|
42
|
-
fetcher: 'ref' | '
|
|
42
|
+
fetcher: 'ref' | 'rdo2ref' | 'ref2lot2sn';
|
|
43
43
|
/** 仅主模型字段可发起请求 */
|
|
44
44
|
onlyMainModelFieldsCanRequest: boolean;
|
|
45
45
|
/** 失败时的默认 label */
|
|
@@ -65,7 +65,11 @@ export interface HyperlinkRule {
|
|
|
65
65
|
export interface LabelRule {
|
|
66
66
|
type: 'label';
|
|
67
67
|
}
|
|
68
|
-
|
|
68
|
+
/** 值变化后补全批次唯一标识(companion `_id_` 字段) */
|
|
69
|
+
export interface IdRule {
|
|
70
|
+
type: 'id';
|
|
71
|
+
}
|
|
72
|
+
export type ValueChangeRule = HyperlinkRule | LabelRule | IdRule;
|
|
69
73
|
/** 将 manifest 中的 onValueChangeRule 规范为数组 */
|
|
70
74
|
export declare function normalizeValueChangeRules(rule?: ValueChangeRule | ValueChangeRule[]): ValueChangeRule[];
|
|
71
75
|
export type ComputedRule = PriorityRule | ResolveRule | MapRule | JoinRule | ApiRule;
|
|
@@ -74,6 +78,6 @@ export interface FieldComputedConfig {
|
|
|
74
78
|
propRules?: Record<string, ComputedRule>;
|
|
75
79
|
/** 写入 dataManager 的派生规则 */
|
|
76
80
|
defaultValueRule?: ComputedRule;
|
|
77
|
-
/** 填报值变化后的 enrich(超链接 _href_、展示标签 _lb_) */
|
|
81
|
+
/** 填报值变化后的 enrich(超链接 _href_、展示标签 _lb_、批次 _id_) */
|
|
78
82
|
onValueChangeRule?: ValueChangeRule | ValueChangeRule[];
|
|
79
83
|
}
|
|
@@ -62,6 +62,6 @@ export declare class LinkageEngine {
|
|
|
62
62
|
buildFillFromOption(ctx: TableRuntimeContext, fieldKey: string, rowIndex: number, selectedOption: Record<string, unknown>): Record<string, unknown>;
|
|
63
63
|
/** 将单条 FieldOptionFillDef 映射写入 updates */
|
|
64
64
|
private applyOptionFillDef;
|
|
65
|
-
/**
|
|
65
|
+
/** 构建字段清空更新对象(同时清值、_lb_ 标签与 companion _id_) */
|
|
66
66
|
private buildClearUpdates;
|
|
67
67
|
}
|
package/dist/index.es.js
CHANGED
|
@@ -33385,6 +33385,7 @@ function normalizeValueChangeRules(rule) {
|
|
|
33385
33385
|
}
|
|
33386
33386
|
const LABEL_SUFFIX = "_lb_";
|
|
33387
33387
|
const HREF_SUFFIX = "_href_";
|
|
33388
|
+
const ID_SUFFIX = "_id_";
|
|
33388
33389
|
const HYPERLINK_TEXT_COLOR = "#0563c1";
|
|
33389
33390
|
function getLabelPath(path) {
|
|
33390
33391
|
return path + LABEL_SUFFIX;
|
|
@@ -33392,8 +33393,14 @@ function getLabelPath(path) {
|
|
|
33392
33393
|
function getHrefPath(path) {
|
|
33393
33394
|
return path + HREF_SUFFIX;
|
|
33394
33395
|
}
|
|
33396
|
+
function getIdPath(path) {
|
|
33397
|
+
return path + ID_SUFFIX;
|
|
33398
|
+
}
|
|
33399
|
+
function isCompanionIdPath(path) {
|
|
33400
|
+
return path.endsWith("_" + ID_SUFFIX);
|
|
33401
|
+
}
|
|
33395
33402
|
function isDerivedDataPath(path) {
|
|
33396
|
-
return path.endsWith(LABEL_SUFFIX) || path.endsWith(HREF_SUFFIX);
|
|
33403
|
+
return path.endsWith(LABEL_SUFFIX) || path.endsWith(HREF_SUFFIX) || isCompanionIdPath(path);
|
|
33397
33404
|
}
|
|
33398
33405
|
const ROW_RUNTIME_META_KEYS = /* @__PURE__ */ new Set([
|
|
33399
33406
|
"row_source_",
|
|
@@ -34167,7 +34174,7 @@ const apiFetchers = {
|
|
|
34167
34174
|
cachePrefix: "lot2sn",
|
|
34168
34175
|
cacheTTL: 5 * 60 * 1e3,
|
|
34169
34176
|
fetchDataList: async (params) => {
|
|
34170
|
-
const { queryData = {}, pageNo = 1, pageSize = 20 } = params;
|
|
34177
|
+
const { queryData = {}, exp, pageNo = 1, pageSize = 20 } = params;
|
|
34171
34178
|
const result = await api.apaas.modelComprehensive.postBizServiceModelCategoryModelKeyBsKey(
|
|
34172
34179
|
{
|
|
34173
34180
|
modelCategory: API_CONFIG.ENTITY_CATEGORY,
|
|
@@ -34176,6 +34183,7 @@ const apiFetchers = {
|
|
|
34176
34183
|
},
|
|
34177
34184
|
{},
|
|
34178
34185
|
{
|
|
34186
|
+
exp,
|
|
34179
34187
|
query: queryData,
|
|
34180
34188
|
pageSize,
|
|
34181
34189
|
pageNo
|
|
@@ -34188,28 +34196,6 @@ const apiFetchers = {
|
|
|
34188
34196
|
totalCount: totalCount || 0
|
|
34189
34197
|
};
|
|
34190
34198
|
},
|
|
34191
|
-
fetchOne: async (id) => {
|
|
34192
|
-
if (!id) return {};
|
|
34193
|
-
const result = await api.apaas.modelComprehensive.postBizServiceModelCategoryModelKeyBsKey(
|
|
34194
|
-
{
|
|
34195
|
-
modelCategory: API_CONFIG.ENTITY_CATEGORY,
|
|
34196
|
-
modelKey: API_CONFIG.LOT_DEFAULTS.modelKey,
|
|
34197
|
-
bsKey: API_CONFIG.LOT_DEFAULTS.bsKey
|
|
34198
|
-
},
|
|
34199
|
-
{},
|
|
34200
|
-
{
|
|
34201
|
-
query: { "name_.like": id },
|
|
34202
|
-
pageSize: 20,
|
|
34203
|
-
pageNo: 1
|
|
34204
|
-
}
|
|
34205
|
-
);
|
|
34206
|
-
const { data = [], totalPage, dict, totalCount } = result || {};
|
|
34207
|
-
return {
|
|
34208
|
-
data: transformSourceDataList(data || [], dict) || [],
|
|
34209
|
-
totalPage,
|
|
34210
|
-
totalCount: totalCount || 0
|
|
34211
|
-
};
|
|
34212
|
-
},
|
|
34213
34199
|
transformers: {
|
|
34214
34200
|
toOptions(items) {
|
|
34215
34201
|
const transformer = createTransformer("name_", "name_");
|
|
@@ -34336,11 +34322,7 @@ const apiFetchers = {
|
|
|
34336
34322
|
cachePrefix: "productRdo2ref",
|
|
34337
34323
|
cacheTTL: 5 * 60 * 1e3,
|
|
34338
34324
|
fetchDataList: async (params) => {
|
|
34339
|
-
const {
|
|
34340
|
-
queryData = {},
|
|
34341
|
-
pageNo = 1,
|
|
34342
|
-
pageSize = 20
|
|
34343
|
-
} = params;
|
|
34325
|
+
const { queryData = {}, pageNo = 1, pageSize = 20 } = params;
|
|
34344
34326
|
const result = await api.apaas.modelComprehensive.postBizServiceGeneralModelCategoryModelKeyBsKey(
|
|
34345
34327
|
{
|
|
34346
34328
|
modelCategory: API_CONFIG.ENTITY_CATEGORY,
|
|
@@ -34374,20 +34356,12 @@ function fieldNeedsLabelEnrichment(fieldType, manifest2) {
|
|
|
34374
34356
|
if (rules2.some((rule) => rule.type === "label")) return true;
|
|
34375
34357
|
return false;
|
|
34376
34358
|
}
|
|
34377
|
-
function getRowPathFromFieldPath(path) {
|
|
34378
|
-
const parsed = parseValuePath(path);
|
|
34379
|
-
if (!parsed.isSubTable) return "$";
|
|
34380
|
-
const normalized = path.replace(/^\$\./, "");
|
|
34381
|
-
const lastDot = normalized.lastIndexOf(".");
|
|
34382
|
-
if (lastDot < 0) return "$";
|
|
34383
|
-
return `$.${normalized.slice(0, lastDot)}`;
|
|
34384
|
-
}
|
|
34385
34359
|
function getDictFieldKey(path, fieldBinding) {
|
|
34386
34360
|
const parsed = parseValuePath(path);
|
|
34387
34361
|
return parsed.fieldKey || getLastSegment(fieldBinding.fieldLink) || "";
|
|
34388
34362
|
}
|
|
34389
34363
|
function readDictLabel(dataManager, path, fieldBinding, value, dictFieldKey) {
|
|
34390
|
-
const rowPath =
|
|
34364
|
+
const rowPath = getBeforeBracket(path);
|
|
34391
34365
|
const row = rowPath ? dataManager.get(rowPath) : dataManager.getRawData();
|
|
34392
34366
|
const fieldKey = dictFieldKey || getDictFieldKey(path, fieldBinding);
|
|
34393
34367
|
const dict = row?._DICT?.[fieldKey];
|
|
@@ -34435,7 +34409,7 @@ async function readApiLabel(strategy, value, fieldBinding, loadFieldByKey) {
|
|
|
34435
34409
|
refModelKey: fieldInfo?.bindInfo
|
|
34436
34410
|
};
|
|
34437
34411
|
try {
|
|
34438
|
-
const isSingle = strategy.fetcher === "rdo2ref" || strategy.fetcher === "ref2lot2sn"
|
|
34412
|
+
const isSingle = strategy.fetcher === "rdo2ref" || strategy.fetcher === "ref2lot2sn";
|
|
34439
34413
|
const result = isSingle ? await fetcher.getOptionById(String(value), params) : await fetcher.getOptionByIds(getValue$1(value, true), params);
|
|
34440
34414
|
const list = Array.isArray(result) ? result : result ? [result] : [];
|
|
34441
34415
|
const labels = list.map((item) => item?.label).filter(Boolean);
|
|
@@ -35691,13 +35665,14 @@ class LinkageEngine {
|
|
|
35691
35665
|
if (isBlank(value)) return;
|
|
35692
35666
|
updates[`${rowPath}.${def.toField}`] = value;
|
|
35693
35667
|
}
|
|
35694
|
-
/**
|
|
35668
|
+
/** 构建字段清空更新对象(同时清值、_lb_ 标签与 companion _id_) */
|
|
35695
35669
|
buildClearUpdates(rowPath, clearFieldKeys) {
|
|
35696
35670
|
const updates = {};
|
|
35697
35671
|
for (const clearFieldKey of clearFieldKeys) {
|
|
35698
35672
|
const fieldPath = `${rowPath}.${clearFieldKey}`;
|
|
35699
35673
|
updates[fieldPath] = void 0;
|
|
35700
35674
|
updates[getLabelPath(fieldPath)] = void 0;
|
|
35675
|
+
updates[getIdPath(fieldPath)] = void 0;
|
|
35701
35676
|
}
|
|
35702
35677
|
return updates;
|
|
35703
35678
|
}
|
|
@@ -36067,6 +36042,7 @@ const NS_LABEL = {
|
|
|
36067
36042
|
"pipeline.deps": "依赖刷新",
|
|
36068
36043
|
"enricher.label": "标签增强",
|
|
36069
36044
|
"enricher.hyperlink": "超链接增强",
|
|
36045
|
+
"enricher.id": "批次内置ID",
|
|
36070
36046
|
"pipeline.afterFlush": "业务收尾",
|
|
36071
36047
|
"table.runtime": "业务子表",
|
|
36072
36048
|
"init.lifecycle": "文档初始化",
|
|
@@ -36345,6 +36321,76 @@ function createHyperlinkEnricher(reg) {
|
|
|
36345
36321
|
}
|
|
36346
36322
|
};
|
|
36347
36323
|
}
|
|
36324
|
+
function resolveProductId(doc, path) {
|
|
36325
|
+
const dataManager = doc.dataManager;
|
|
36326
|
+
const rowPath = getBeforeBracket(path);
|
|
36327
|
+
if (rowPath) {
|
|
36328
|
+
const row = dataManager.get(rowPath);
|
|
36329
|
+
const productId = row?.product_id_;
|
|
36330
|
+
return productId != null && productId !== "" ? String(productId) : void 0;
|
|
36331
|
+
}
|
|
36332
|
+
const fromParams = doc.paramsConfig?.productId ?? doc.paramsConfig?.product_id_;
|
|
36333
|
+
return fromParams != null && fromParams !== "" ? String(fromParams) : void 0;
|
|
36334
|
+
}
|
|
36335
|
+
function shouldPreservePersistedId(dataManager, valuePath, ctx) {
|
|
36336
|
+
if (ctx?.batchSource !== "hydrate") return false;
|
|
36337
|
+
if (ctx.oldValue !== ctx.newValue) return false;
|
|
36338
|
+
return isPresent(dataManager.get(getIdPath(valuePath)));
|
|
36339
|
+
}
|
|
36340
|
+
function extractCompanionId(result) {
|
|
36341
|
+
if (result == null || result === "" || result === false) return null;
|
|
36342
|
+
if (typeof result === "string" || typeof result === "number") return String(result);
|
|
36343
|
+
if (typeof result === "object") {
|
|
36344
|
+
const record = result;
|
|
36345
|
+
const id = record.id_ ?? record.id;
|
|
36346
|
+
return id != null && id !== "" ? String(id) : null;
|
|
36347
|
+
}
|
|
36348
|
+
return null;
|
|
36349
|
+
}
|
|
36350
|
+
async function resolveLotCompanionId(path, value, productId) {
|
|
36351
|
+
if (value == null || value === "") return null;
|
|
36352
|
+
try {
|
|
36353
|
+
const result = await api.apaas.modelComprehensive.postBizServiceModelCategoryModelKeyBsKey(
|
|
36354
|
+
{
|
|
36355
|
+
bsKey: "biz_get_single_production_identification",
|
|
36356
|
+
modelKey: "em_production_identification",
|
|
36357
|
+
modelCategory: "entity"
|
|
36358
|
+
},
|
|
36359
|
+
{
|
|
36360
|
+
name_: value,
|
|
36361
|
+
...productId ? { product_id_: productId } : {}
|
|
36362
|
+
},
|
|
36363
|
+
{}
|
|
36364
|
+
);
|
|
36365
|
+
return extractCompanionId(result);
|
|
36366
|
+
} catch {
|
|
36367
|
+
return null;
|
|
36368
|
+
}
|
|
36369
|
+
}
|
|
36370
|
+
function createIdEnricher(reg) {
|
|
36371
|
+
const { doc, widgetMeta, ...rest } = reg;
|
|
36372
|
+
return {
|
|
36373
|
+
...rest,
|
|
36374
|
+
id: rest.id || `id:${rest.valuePathTemplate}`,
|
|
36375
|
+
enrich: async (path, value, ctx) => {
|
|
36376
|
+
const dataManager = doc.dataManager;
|
|
36377
|
+
const idPath = getIdPath(path);
|
|
36378
|
+
if (shouldPreservePersistedId(dataManager, path, ctx)) return;
|
|
36379
|
+
if (value == null || value === "") {
|
|
36380
|
+
return { [idPath]: null };
|
|
36381
|
+
}
|
|
36382
|
+
if (isPresent(dataManager.get(idPath))) return;
|
|
36383
|
+
const productId = resolveProductId(doc, path);
|
|
36384
|
+
const id = await withRequestCache.handleRequest(
|
|
36385
|
+
"id_enrich_resolve",
|
|
36386
|
+
{ path, value, productId },
|
|
36387
|
+
({ path: reqPath, value: reqValue, productId: reqProductId }) => resolveLotCompanionId(reqPath, reqValue, reqProductId),
|
|
36388
|
+
30 * 1e3
|
|
36389
|
+
);
|
|
36390
|
+
return { [idPath]: id };
|
|
36391
|
+
}
|
|
36392
|
+
};
|
|
36393
|
+
}
|
|
36348
36394
|
class Hooks {
|
|
36349
36395
|
/**
|
|
36350
36396
|
* @callback HookCallback
|
|
@@ -84101,6 +84147,17 @@ function buildFieldEnricherRegistrations(instances, ctx, doc) {
|
|
|
84101
84147
|
})
|
|
84102
84148
|
);
|
|
84103
84149
|
}
|
|
84150
|
+
if (valueChangeRules.some((rule) => rule.type === "id")) {
|
|
84151
|
+
regs.push(
|
|
84152
|
+
createIdEnricher({
|
|
84153
|
+
id: `id:${valuePath}`,
|
|
84154
|
+
valuePathTemplate: valuePath,
|
|
84155
|
+
match: createValuePathMatcher(valuePath),
|
|
84156
|
+
doc,
|
|
84157
|
+
widgetMeta: instance2.widgetMeta
|
|
84158
|
+
})
|
|
84159
|
+
);
|
|
84160
|
+
}
|
|
84104
84161
|
if (fieldNeedsLabelEnrichment(fieldMeta.fieldType, manifest2)) {
|
|
84105
84162
|
const enricherProps = resolveEnricherWidgetProps(instance2, manifest2);
|
|
84106
84163
|
regs.push(
|
|
@@ -84169,7 +84226,12 @@ function collectSubtableRowEnrichPaths(instances, subFieldKey, rowIndexes) {
|
|
|
84169
84226
|
if (parsed.parentFieldKey !== subFieldKey) continue;
|
|
84170
84227
|
for (const rowIndex of uniqueIndexes) {
|
|
84171
84228
|
paths.add(
|
|
84172
|
-
replacePathIndexPlaceholders({
|
|
84229
|
+
replacePathIndexPlaceholders({
|
|
84230
|
+
templatePath: valuePath,
|
|
84231
|
+
n: rowIndex,
|
|
84232
|
+
y: rowIndex,
|
|
84233
|
+
x: rowIndex
|
|
84234
|
+
})
|
|
84173
84235
|
);
|
|
84174
84236
|
}
|
|
84175
84237
|
}
|
|
@@ -85159,9 +85221,10 @@ const optionsMapEnumConfig = {
|
|
|
85159
85221
|
};
|
|
85160
85222
|
const labelOnValueChangeRule = { type: "label" };
|
|
85161
85223
|
const hyperlinkOnValueChangeRule = { type: "hyperlink" };
|
|
85162
|
-
const
|
|
85224
|
+
const idOnValueChangeRule = { type: "id" };
|
|
85225
|
+
const hyperlinkAndIdOnValueChangeRules = [
|
|
85163
85226
|
hyperlinkOnValueChangeRule,
|
|
85164
|
-
|
|
85227
|
+
idOnValueChangeRule
|
|
85165
85228
|
];
|
|
85166
85229
|
function mergeCheckTableItemInfosIntoDefaults(defaultsMap, region, infos, layoutColumnCount) {
|
|
85167
85230
|
applySubFieldDefaults(defaultsMap, region, infos, layoutColumnCount ?? 0);
|
|
@@ -101033,7 +101096,7 @@ class PostChangePipeline {
|
|
|
101033
101096
|
}
|
|
101034
101097
|
}
|
|
101035
101098
|
if (Object.keys(updates).length) {
|
|
101036
|
-
const enrichLogNs = enricherIds.some((id) => id.startsWith("label")) ? "enricher.label" : "enricher.hyperlink";
|
|
101099
|
+
const enrichLogNs = enricherIds.some((id) => id.startsWith("label")) ? "enricher.label" : enricherIds.some((id) => id.startsWith("id")) ? "enricher.id" : "enricher.hyperlink";
|
|
101037
101100
|
createPipelineLogger(enrichLogNs, { batchId, path }).debug(
|
|
101038
101101
|
`写回增强字段:${Object.keys(updates).join("、")}`,
|
|
101039
101102
|
{ enricherId: enricherIds.join(","), keys: Object.keys(updates) }
|
|
@@ -101230,6 +101293,9 @@ class DataManager {
|
|
|
101230
101293
|
getHrefPath(path) {
|
|
101231
101294
|
return getHrefPath(path);
|
|
101232
101295
|
}
|
|
101296
|
+
getIdPath(path) {
|
|
101297
|
+
return getIdPath(path);
|
|
101298
|
+
}
|
|
101233
101299
|
getFieldRuntimeSpecificConfigKeys() {
|
|
101234
101300
|
return [...this.fieldRuntimeConfigByPath.keys()];
|
|
101235
101301
|
}
|
|
@@ -101423,6 +101489,10 @@ class DataManager {
|
|
|
101423
101489
|
getHref(path) {
|
|
101424
101490
|
return this.get(this.getHrefPath(path));
|
|
101425
101491
|
}
|
|
101492
|
+
/** 获取与 value 并存的批次唯一标识;老数据可能为空 */
|
|
101493
|
+
getId(path) {
|
|
101494
|
+
return this.get(this.getIdPath(path));
|
|
101495
|
+
}
|
|
101426
101496
|
/** 子表数组路径下未软删行数 */
|
|
101427
101497
|
countActiveSubtableRows(arrayPath) {
|
|
101428
101498
|
const rows = this.getByPath(this.rawData, arrayPath);
|
|
@@ -102476,9 +102546,14 @@ class DataManager {
|
|
|
102476
102546
|
}
|
|
102477
102547
|
this.removeFieldDependencies(designValuePath);
|
|
102478
102548
|
}
|
|
102479
|
-
/** 收集与字段绑定相关的路径(含 value / label / href 及通配符变体) */
|
|
102549
|
+
/** 收集与字段绑定相关的路径(含 value / label / href / id 及通配符变体) */
|
|
102480
102550
|
collectFieldBindingPaths(designValuePath) {
|
|
102481
|
-
const bases = [
|
|
102551
|
+
const bases = [
|
|
102552
|
+
designValuePath,
|
|
102553
|
+
getLabelPath(designValuePath),
|
|
102554
|
+
getHrefPath(designValuePath),
|
|
102555
|
+
getIdPath(designValuePath)
|
|
102556
|
+
];
|
|
102482
102557
|
const wildcardKeys = new Set(bases.map((path) => this.convertPathToWildcard(path)));
|
|
102483
102558
|
const result = new Set(bases);
|
|
102484
102559
|
const scanTargets = [
|
|
@@ -102501,15 +102576,19 @@ class DataManager {
|
|
|
102501
102576
|
paths.add(path);
|
|
102502
102577
|
paths.add(getLabelPath(path));
|
|
102503
102578
|
paths.add(getHrefPath(path));
|
|
102579
|
+
paths.add(getIdPath(path));
|
|
102504
102580
|
}
|
|
102505
102581
|
return [...paths];
|
|
102506
102582
|
}
|
|
102507
102583
|
/** 移除字段注册的组件依赖 */
|
|
102508
102584
|
removeFieldDependencies(designValuePath) {
|
|
102509
102585
|
const wildcardKeys = new Set(
|
|
102510
|
-
[
|
|
102511
|
-
|
|
102512
|
-
|
|
102586
|
+
[
|
|
102587
|
+
designValuePath,
|
|
102588
|
+
getLabelPath(designValuePath),
|
|
102589
|
+
getHrefPath(designValuePath),
|
|
102590
|
+
getIdPath(designValuePath)
|
|
102591
|
+
].map((path) => this.convertPathToWildcard(path))
|
|
102513
102592
|
);
|
|
102514
102593
|
const nodes = this.collectDepNodes();
|
|
102515
102594
|
const removedKeys = /* @__PURE__ */ new Set();
|
|
@@ -110011,11 +110090,14 @@ function transformTreeData(options = [], currentValue) {
|
|
|
110011
110090
|
});
|
|
110012
110091
|
return { data: treeData, highlightIdx };
|
|
110013
110092
|
}
|
|
110014
|
-
function transformLotData(options = [], currentValue) {
|
|
110093
|
+
function transformLotData(options = [], currentValue, currentId) {
|
|
110015
110094
|
const highlightIdx = { index: [] };
|
|
110016
110095
|
const values = Array.isArray(currentValue) ? currentValue.filter((v) => !isNil(v)) : [currentValue].filter((v) => !isNil(v));
|
|
110096
|
+
const preferId = !!currentId;
|
|
110017
110097
|
const showOptions = (options || []).map((item, index2) => {
|
|
110018
|
-
|
|
110098
|
+
const matchedById = preferId && item._item?.id_ === currentId;
|
|
110099
|
+
const matchedByValue = !preferId && values.includes(item.value);
|
|
110100
|
+
if (matchedById || matchedByValue) {
|
|
110019
110101
|
highlightIdx.index.push(index2);
|
|
110020
110102
|
}
|
|
110021
110103
|
return {
|
|
@@ -121338,12 +121420,7 @@ const manifest$F = {
|
|
|
121338
121420
|
...commonDefaultProps
|
|
121339
121421
|
},
|
|
121340
121422
|
computed: {
|
|
121341
|
-
|
|
121342
|
-
type: "api",
|
|
121343
|
-
fetcher: "lot2sn",
|
|
121344
|
-
onlyMainModelFieldsCanRequest: true
|
|
121345
|
-
},
|
|
121346
|
-
onValueChangeRule: labelOnValueChangeRule
|
|
121423
|
+
onValueChangeRule: idOnValueChangeRule
|
|
121347
121424
|
}
|
|
121348
121425
|
};
|
|
121349
121426
|
const __vite_glob_0_24 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
@@ -121964,12 +122041,7 @@ const manifest$f = {
|
|
|
121964
122041
|
...commonDefaultProps
|
|
121965
122042
|
},
|
|
121966
122043
|
computed: {
|
|
121967
|
-
|
|
121968
|
-
type: "api",
|
|
121969
|
-
fetcher: "lot2sn",
|
|
121970
|
-
onlyMainModelFieldsCanRequest: true
|
|
121971
|
-
},
|
|
121972
|
-
onValueChangeRule: [...hyperlinkAndLabelOnValueChangeRules]
|
|
122044
|
+
onValueChangeRule: [...hyperlinkAndIdOnValueChangeRules]
|
|
121973
122045
|
}
|
|
121974
122046
|
};
|
|
121975
122047
|
const __vite_glob_0_50 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
@@ -122117,12 +122189,7 @@ const manifest$9 = {
|
|
|
122117
122189
|
...commonDefaultProps
|
|
122118
122190
|
},
|
|
122119
122191
|
computed: {
|
|
122120
|
-
|
|
122121
|
-
type: "api",
|
|
122122
|
-
fetcher: "lot2sn",
|
|
122123
|
-
onlyMainModelFieldsCanRequest: true
|
|
122124
|
-
},
|
|
122125
|
-
onValueChangeRule: [...hyperlinkAndLabelOnValueChangeRules]
|
|
122192
|
+
onValueChangeRule: [...hyperlinkAndIdOnValueChangeRules]
|
|
122126
122193
|
}
|
|
122127
122194
|
};
|
|
122128
122195
|
const __vite_glob_0_56 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
@@ -122253,6 +122320,9 @@ const filterFn = (f) => {
|
|
|
122253
122320
|
].includes(f.key)) {
|
|
122254
122321
|
return false;
|
|
122255
122322
|
}
|
|
122323
|
+
if (f.createType === "BUILTIN" && f.key && isCompanionIdPath(f.key) && f.type === FIELD_TYPE.TEXT) {
|
|
122324
|
+
return false;
|
|
122325
|
+
}
|
|
122256
122326
|
return true;
|
|
122257
122327
|
};
|
|
122258
122328
|
const FieldIconFallbackMap = {
|
|
@@ -126697,6 +126767,7 @@ const _sfc_main$1v = /* @__PURE__ */ defineComponent({
|
|
|
126697
126767
|
{ label: "记录模式", value: MaterialConsumptionPatternEnum.RECORD }
|
|
126698
126768
|
];
|
|
126699
126769
|
const props = __props;
|
|
126770
|
+
const isBomGranted = ref(false);
|
|
126700
126771
|
const regionRef = computed(
|
|
126701
126772
|
() => props.widget.findRegionById(props.active.context.regionId)
|
|
126702
126773
|
);
|
|
@@ -126712,8 +126783,8 @@ const _sfc_main$1v = /* @__PURE__ */ defineComponent({
|
|
|
126712
126783
|
regionType: "material-consume-table"
|
|
126713
126784
|
});
|
|
126714
126785
|
onMounted(async () => {
|
|
126715
|
-
|
|
126716
|
-
if (
|
|
126786
|
+
isBomGranted.value = await queryIsBomGranted();
|
|
126787
|
+
if (isBomGranted.value && regionProps.value && !regionProps.value.material_consumption_pattern_) {
|
|
126717
126788
|
regionProps.value.material_consumption_pattern_ = MaterialConsumptionPatternEnum.BOM;
|
|
126718
126789
|
}
|
|
126719
126790
|
});
|
|
@@ -126746,7 +126817,8 @@ const _sfc_main$1v = /* @__PURE__ */ defineComponent({
|
|
|
126746
126817
|
]),
|
|
126747
126818
|
_: 1
|
|
126748
126819
|
}),
|
|
126749
|
-
|
|
126820
|
+
isBomGranted.value ? (openBlock(), createBlock(unref(GctFormItem), {
|
|
126821
|
+
key: 0,
|
|
126750
126822
|
inline: false,
|
|
126751
126823
|
label: "物料消耗模式"
|
|
126752
126824
|
}, {
|
|
@@ -126758,8 +126830,8 @@ const _sfc_main$1v = /* @__PURE__ */ defineComponent({
|
|
|
126758
126830
|
}, null, 8, ["modelValue"])
|
|
126759
126831
|
]),
|
|
126760
126832
|
_: 1
|
|
126761
|
-
}),
|
|
126762
|
-
|
|
126833
|
+
})) : createCommentVNode("", true),
|
|
126834
|
+
createVNode(unref(GctFormItem), null, {
|
|
126763
126835
|
label: withCtx(() => [..._cache[5] || (_cache[5] = [
|
|
126764
126836
|
createElementVNode("div", { class: "form-custom-label" }, " 人为指定物料 ", -1)
|
|
126765
126837
|
])]),
|
|
@@ -126773,7 +126845,7 @@ const _sfc_main$1v = /* @__PURE__ */ defineComponent({
|
|
|
126773
126845
|
])
|
|
126774
126846
|
]),
|
|
126775
126847
|
_: 1
|
|
126776
|
-
})
|
|
126848
|
+
}),
|
|
126777
126849
|
unref(regionProps).personal_bom_enabled_ ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
126778
126850
|
createElementVNode("div", _hoisted_4$o, [
|
|
126779
126851
|
createVNode(BomEntryEditor, {
|
|
@@ -126805,7 +126877,7 @@ const _sfc_main$1v = /* @__PURE__ */ defineComponent({
|
|
|
126805
126877
|
};
|
|
126806
126878
|
}
|
|
126807
126879
|
});
|
|
126808
|
-
const MaterialConsumeTablePanel = /* @__PURE__ */ _export_sfc(_sfc_main$1v, [["__scopeId", "data-v-
|
|
126880
|
+
const MaterialConsumeTablePanel = /* @__PURE__ */ _export_sfc(_sfc_main$1v, [["__scopeId", "data-v-c6970c00"]]);
|
|
126809
126881
|
const schema$9 = createTablePanelSchema("material-consume-table.basic", MaterialConsumeTablePanel);
|
|
126810
126882
|
const schema$8 = createTablePanelSchema("fixed-table.basic", BoundedSubTablePanel);
|
|
126811
126883
|
const _sfc_main$1u = /* @__PURE__ */ defineComponent({
|
|
@@ -136024,6 +136096,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
|
136024
136096
|
columns: {},
|
|
136025
136097
|
tableData: {},
|
|
136026
136098
|
modelValue: {},
|
|
136099
|
+
selectedId: {},
|
|
136027
136100
|
loading: { type: Boolean },
|
|
136028
136101
|
height: { default: "100%" },
|
|
136029
136102
|
autoResize: { type: Boolean, default: true },
|
|
@@ -136056,6 +136129,9 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
|
136056
136129
|
return result;
|
|
136057
136130
|
});
|
|
136058
136131
|
const rowClassName = ({ row }) => {
|
|
136132
|
+
if (props.selectedId) {
|
|
136133
|
+
return row._item?.id_ === props.selectedId ? "row--active" : "";
|
|
136134
|
+
}
|
|
136059
136135
|
return selectedIds.value.has(row.__VALUE__) ? "row--active" : "";
|
|
136060
136136
|
};
|
|
136061
136137
|
const onCellClick = ({ row }) => {
|
|
@@ -136127,7 +136203,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
|
136127
136203
|
};
|
|
136128
136204
|
}
|
|
136129
136205
|
});
|
|
136130
|
-
const BaseVxeTable = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-
|
|
136206
|
+
const BaseVxeTable = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-c169ed2c"]]);
|
|
136131
136207
|
const DEVICE_TYPE_MODEL_KEY = "em_device_type";
|
|
136132
136208
|
const ENTITY_CATEGORY = "entity";
|
|
136133
136209
|
const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
@@ -136431,35 +136507,39 @@ function shouldEnableLinkage(doc, clickedFieldType, clickedKey) {
|
|
|
136431
136507
|
return key === clickedKey && fieldMeta.fieldType === targetLinkedFieldType;
|
|
136432
136508
|
});
|
|
136433
136509
|
}
|
|
136434
|
-
function buildLikeQuery(fields2, keyword, query) {
|
|
136435
|
-
|
|
136436
|
-
|
|
136437
|
-
|
|
136438
|
-
|
|
136439
|
-
|
|
136510
|
+
function buildLikeQuery(fields2, keyword, query = {}) {
|
|
136511
|
+
const resultQuery = {
|
|
136512
|
+
...query
|
|
136513
|
+
};
|
|
136514
|
+
const queryExp = Object.keys(query);
|
|
136515
|
+
let likeExp = "";
|
|
136516
|
+
if (keyword?.trim()) {
|
|
136517
|
+
fields2.forEach((field) => {
|
|
136518
|
+
const key = field.includes(".") ? field : `${field}.iLike`;
|
|
136519
|
+
resultQuery[key] = keyword;
|
|
136520
|
+
});
|
|
136521
|
+
likeExp = `OR(${fields2.map((field) => field.includes(".") ? field : `${field}.iLike`).join(",")})`;
|
|
136440
136522
|
}
|
|
136441
|
-
const
|
|
136442
|
-
|
|
136443
|
-
|
|
136444
|
-
|
|
136445
|
-
|
|
136446
|
-
|
|
136447
|
-
|
|
136448
|
-
|
|
136449
|
-
|
|
136450
|
-
|
|
136451
|
-
|
|
136452
|
-
return { queryData, exp };
|
|
136523
|
+
const baseExp = queryExp.length ? `OR(${queryExp.join(",")})` : "";
|
|
136524
|
+
let exp = "";
|
|
136525
|
+
if (baseExp && likeExp) {
|
|
136526
|
+
exp = `AND(${baseExp},${likeExp})`;
|
|
136527
|
+
} else {
|
|
136528
|
+
exp = baseExp || likeExp;
|
|
136529
|
+
}
|
|
136530
|
+
return {
|
|
136531
|
+
queryData: resultQuery,
|
|
136532
|
+
exp
|
|
136533
|
+
};
|
|
136453
136534
|
}
|
|
136454
136535
|
const selectStrategyMap = {
|
|
136455
136536
|
[FIELD_TYPE.MATERIAL_NO]: {
|
|
136456
136537
|
columnsKey: "lot-sn",
|
|
136457
136538
|
fetcher: "lot2sn",
|
|
136458
136539
|
allowManualInput: true,
|
|
136540
|
+
persistOptionId: true,
|
|
136459
136541
|
buildQuery({ keyword, extraParams }) {
|
|
136460
|
-
return buildLikeQuery(["name_"], keyword, {
|
|
136461
|
-
...extraParams
|
|
136462
|
-
});
|
|
136542
|
+
return buildLikeQuery(["name_"], keyword, { "product_id_.isNotNull": null, ...extraParams });
|
|
136463
136543
|
},
|
|
136464
136544
|
transform: transformLotData
|
|
136465
136545
|
},
|
|
@@ -136467,8 +136547,9 @@ const selectStrategyMap = {
|
|
|
136467
136547
|
columnsKey: "lot-sn",
|
|
136468
136548
|
fetcher: "lot2sn",
|
|
136469
136549
|
allowManualInput: true,
|
|
136470
|
-
|
|
136471
|
-
|
|
136550
|
+
persistOptionId: true,
|
|
136551
|
+
buildQuery({ keyword, extraParams }) {
|
|
136552
|
+
return buildLikeQuery(["name_"], keyword, { "product_id_.isNotNull": null, ...extraParams });
|
|
136472
136553
|
},
|
|
136473
136554
|
transform: transformLotData
|
|
136474
136555
|
},
|
|
@@ -136476,8 +136557,9 @@ const selectStrategyMap = {
|
|
|
136476
136557
|
columnsKey: "lot-sn",
|
|
136477
136558
|
fetcher: "lot2sn",
|
|
136478
136559
|
allowManualInput: true,
|
|
136479
|
-
|
|
136480
|
-
|
|
136560
|
+
persistOptionId: true,
|
|
136561
|
+
buildQuery({ keyword, extraParams }) {
|
|
136562
|
+
return buildLikeQuery(["name_"], keyword, { "product_id_.isNotNull": null, ...extraParams });
|
|
136481
136563
|
},
|
|
136482
136564
|
transform: transformLotData
|
|
136483
136565
|
},
|
|
@@ -136687,6 +136769,11 @@ function useTableDropdown(props, searchFilters) {
|
|
|
136687
136769
|
const strategy = computed(() => getSelectStrategy(widgetProps.value, fieldMeta.value?.fieldType));
|
|
136688
136770
|
const isDeviceField = computed(() => fieldInfo.value?.type === FIELD_TYPE.DEVICE);
|
|
136689
136771
|
const columns2 = computed(() => getColumns(strategy.value.columnsKey, strategy.value.isTree));
|
|
136772
|
+
const selectedId = computed(() => {
|
|
136773
|
+
if (!runtimeValuePath.value) return void 0;
|
|
136774
|
+
const id = docInst.value.dataManager.get(getIdPath(runtimeValuePath.value));
|
|
136775
|
+
return id != null && id !== "" ? String(id) : void 0;
|
|
136776
|
+
});
|
|
136690
136777
|
const businessLinkage = computed(
|
|
136691
136778
|
() => new TableRuntime(docInst.value).resolveSelectLinkage({
|
|
136692
136779
|
subFieldKey: fieldMeta.value?.subFieldKey,
|
|
@@ -136799,7 +136886,7 @@ function useTableDropdown(props, searchFilters) {
|
|
|
136799
136886
|
pageNo,
|
|
136800
136887
|
pageSize
|
|
136801
136888
|
});
|
|
136802
|
-
const info = transform(res.options ?? [], props.modelValue);
|
|
136889
|
+
const info = transform(res.options ?? [], props.modelValue, selectedId.value);
|
|
136803
136890
|
return {
|
|
136804
136891
|
data: info.data || [],
|
|
136805
136892
|
totalPage: Number(res?.totalPage ?? 0),
|
|
@@ -136808,6 +136895,7 @@ function useTableDropdown(props, searchFilters) {
|
|
|
136808
136895
|
};
|
|
136809
136896
|
};
|
|
136810
136897
|
const allowManualInput = computed(() => strategy.value.allowManualInput ?? false);
|
|
136898
|
+
const persistOptionId = computed(() => !!strategy.value.persistOptionId);
|
|
136811
136899
|
return {
|
|
136812
136900
|
fetcher,
|
|
136813
136901
|
columns: columns2,
|
|
@@ -136818,7 +136906,9 @@ function useTableDropdown(props, searchFilters) {
|
|
|
136818
136906
|
enableLinkage,
|
|
136819
136907
|
clearValuePath,
|
|
136820
136908
|
allowManualInput,
|
|
136821
|
-
isDeviceField
|
|
136909
|
+
isDeviceField,
|
|
136910
|
+
selectedId,
|
|
136911
|
+
persistOptionId
|
|
136822
136912
|
};
|
|
136823
136913
|
}
|
|
136824
136914
|
const _hoisted_1$7 = { class: "table-dropdown" };
|
|
@@ -136854,7 +136944,9 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
136854
136944
|
columns: columns2,
|
|
136855
136945
|
fetcher: baseFetcher,
|
|
136856
136946
|
allowManualInput,
|
|
136857
|
-
isDeviceField
|
|
136947
|
+
isDeviceField,
|
|
136948
|
+
selectedId,
|
|
136949
|
+
persistOptionId
|
|
136858
136950
|
} = useTableDropdown(props, searchFilters);
|
|
136859
136951
|
const fetcher = (opts) => baseFetcher({ ...opts, deviceTypeId: deviceTypeId.value });
|
|
136860
136952
|
const showManualInputBtn = computed(() => allowManualInput.value && !!keyword.value?.trim());
|
|
@@ -136889,6 +136981,10 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
136889
136981
|
const onChangeSelect = (row) => {
|
|
136890
136982
|
const { __VALUE__ } = row || {};
|
|
136891
136983
|
const data = setValue(__VALUE__ ? __VALUE__ : void 0, runtimeValuePath.value);
|
|
136984
|
+
if (persistOptionId.value) {
|
|
136985
|
+
const idPath = getIdPath(runtimeValuePath.value);
|
|
136986
|
+
Object.assign(data, setValue(row?._item?.id_ ?? void 0, idPath));
|
|
136987
|
+
}
|
|
136892
136988
|
if (clearValuePath.value) {
|
|
136893
136989
|
const clearData = setValue(void 0, clearValuePath.value);
|
|
136894
136990
|
Object.assign(data, clearData);
|
|
@@ -136987,10 +137083,11 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
136987
137083
|
columns: unref(columns2),
|
|
136988
137084
|
tableData: unref(tableData),
|
|
136989
137085
|
modelValue: __props.modelValue,
|
|
137086
|
+
selectedId: unref(selectedId),
|
|
136990
137087
|
loading: unref(loading),
|
|
136991
137088
|
"show-row-selection-mode": "",
|
|
136992
137089
|
onChangeSelect
|
|
136993
|
-
}, null, 8, ["columns", "tableData", "modelValue", "loading"]),
|
|
137090
|
+
}, null, 8, ["columns", "tableData", "modelValue", "selectedId", "loading"]),
|
|
136994
137091
|
unref(hasData) ? (openBlock(), createBlock(paginationControl, {
|
|
136995
137092
|
key: 2,
|
|
136996
137093
|
pagination: unref(pagination),
|
|
@@ -81,6 +81,4 @@ export declare const apiFetchers: {
|
|
|
81
81
|
/** 产品但要 ref */
|
|
82
82
|
productRdo2ref: APIFetcher;
|
|
83
83
|
};
|
|
84
|
-
/** 清除指定类型的缓存 */
|
|
85
|
-
export declare function clearApiFetcherCache(type: 'dept' | 'user' | 'ref' | 'lot2sn' | 'ref2lot2sn' | 'all'): void;
|
|
86
84
|
export type { FetcherConfig, RequestParams, OptionResult, Option };
|
|
@@ -34,15 +34,16 @@ export declare function transformTreeData(options?: any[], currentValue?: string
|
|
|
34
34
|
* 用于批次/表格数据场景,将原始数据转换为表格行数据
|
|
35
35
|
*
|
|
36
36
|
* @param options - 原始选项数据
|
|
37
|
-
* @param currentValue -
|
|
37
|
+
* @param currentValue - 当前选中的值(批次号 name)
|
|
38
|
+
* @param currentId - companion `_id_`;有值时优先按 id 高亮,老数据无 id 时回退 name
|
|
38
39
|
* @returns 转换后的数据和高亮索引
|
|
39
40
|
*
|
|
40
41
|
* @example
|
|
41
42
|
* ```typescript
|
|
42
|
-
* const { data, highlightIdx } = transformLotData(options, 'lot-123');
|
|
43
|
+
* const { data, highlightIdx } = transformLotData(options, 'lot-123', 'id-xxx');
|
|
43
44
|
* ```
|
|
44
45
|
*/
|
|
45
|
-
export declare function transformLotData(options?: Option[], currentValue?: string | string[]): {
|
|
46
|
+
export declare function transformLotData(options?: Option[], currentValue?: string | string[], currentId?: string): {
|
|
46
47
|
data: any[];
|
|
47
48
|
highlightIdx: {
|
|
48
49
|
index: number[];
|
|
@@ -19,4 +19,6 @@ export declare function useTableDropdown(props: any, searchFilters?: MaybeRef<Ta
|
|
|
19
19
|
clearValuePath: import('vue').ComputedRef<string | undefined>;
|
|
20
20
|
allowManualInput: import('vue').ComputedRef<boolean>;
|
|
21
21
|
isDeviceField: import('vue').ComputedRef<boolean>;
|
|
22
|
+
selectedId: import('vue').ComputedRef<string | undefined>;
|
|
23
|
+
persistOptionId: import('vue').ComputedRef<boolean>;
|
|
22
24
|
};
|
|
@@ -202,6 +202,7 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {
|
|
|
202
202
|
readonly columns: any[];
|
|
203
203
|
readonly tableData: any[];
|
|
204
204
|
readonly modelValue?: string | undefined;
|
|
205
|
+
readonly selectedId?: string | undefined;
|
|
205
206
|
readonly loading: boolean;
|
|
206
207
|
readonly height?: string | undefined;
|
|
207
208
|
readonly autoResize?: boolean | undefined;
|
|
@@ -241,6 +242,7 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {
|
|
|
241
242
|
columns: any[];
|
|
242
243
|
tableData: any[];
|
|
243
244
|
modelValue?: string;
|
|
245
|
+
selectedId?: string;
|
|
244
246
|
loading: boolean;
|
|
245
247
|
height?: string;
|
|
246
248
|
autoResize?: boolean;
|
|
@@ -287,6 +289,7 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {
|
|
|
287
289
|
columns: any[];
|
|
288
290
|
tableData: any[];
|
|
289
291
|
modelValue?: string;
|
|
292
|
+
selectedId?: string;
|
|
290
293
|
loading: boolean;
|
|
291
294
|
height?: string;
|
|
292
295
|
autoResize?: boolean;
|
|
@@ -26,8 +26,10 @@ export interface SelectStrategy {
|
|
|
26
26
|
clearFieldId?: string;
|
|
27
27
|
/** 搜索无匹配时允许将输入关键字作为值写入 */
|
|
28
28
|
allowManualInput?: boolean;
|
|
29
|
+
/** 下拉选中时同步写入 companion `_id_`(批次字段) */
|
|
30
|
+
persistOptionId?: boolean;
|
|
29
31
|
buildQuery?: (ctx: SelectQueryContext) => SelectQueryResult;
|
|
30
|
-
transform: (options: any[], value?: string) => any;
|
|
32
|
+
transform: (options: any[], value?: string, currentId?: string) => any;
|
|
31
33
|
}
|
|
32
34
|
/**
|
|
33
35
|
* 判断指定字段是否需要开启【报废/不良】分类 ->原因单向数据联动
|
|
@@ -197,6 +197,7 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {
|
|
|
197
197
|
readonly columns: any[];
|
|
198
198
|
readonly tableData: any[];
|
|
199
199
|
readonly modelValue?: string | undefined;
|
|
200
|
+
readonly selectedId?: string | undefined;
|
|
200
201
|
readonly loading: boolean;
|
|
201
202
|
readonly height?: string | undefined;
|
|
202
203
|
readonly autoResize?: boolean | undefined;
|
|
@@ -236,6 +237,7 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {
|
|
|
236
237
|
columns: any[];
|
|
237
238
|
tableData: any[];
|
|
238
239
|
modelValue?: string;
|
|
240
|
+
selectedId?: string;
|
|
239
241
|
loading: boolean;
|
|
240
242
|
height?: string;
|
|
241
243
|
autoResize?: boolean;
|
|
@@ -282,6 +284,7 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {
|
|
|
282
284
|
columns: any[];
|
|
283
285
|
tableData: any[];
|
|
284
286
|
modelValue?: string;
|
|
287
|
+
selectedId?: string;
|
|
285
288
|
loading: boolean;
|
|
286
289
|
height?: string;
|
|
287
290
|
autoResize?: boolean;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ComponentDependency } from '../../../../shared/panel/modules/field-dependency-module/types';
|
|
2
|
-
import { MapRule, PriorityRule, ResolveRule, HyperlinkRule, LabelRule } from '../../../../../domain/field/field-props-schema-type';
|
|
2
|
+
import { MapRule, PriorityRule, ResolveRule, HyperlinkRule, LabelRule, IdRule } from '../../../../../domain/field/field-props-schema-type';
|
|
3
3
|
import { FieldNodeRenderers } from '../../../../../domain/widget/component-type';
|
|
4
4
|
export declare const commonDefaultRenderers: FieldNodeRenderers;
|
|
5
5
|
export declare const commonDefaultProps: {
|
|
@@ -78,5 +78,9 @@ export declare const optionsMapEnumConfig: MapRule;
|
|
|
78
78
|
export declare const labelOnValueChangeRule: LabelRule;
|
|
79
79
|
/** 值变化后补全可点击 _href_ */
|
|
80
80
|
export declare const hyperlinkOnValueChangeRule: HyperlinkRule;
|
|
81
|
+
/** 值变化后补全批次唯一标识 _id_ */
|
|
82
|
+
export declare const idOnValueChangeRule: IdRule;
|
|
81
83
|
/** 同时补全 _href_ 与 _lb_(如批次号等追溯字段) */
|
|
82
84
|
export declare const hyperlinkAndLabelOnValueChangeRules: readonly [HyperlinkRule, LabelRule];
|
|
85
|
+
/** 批次号:补全 _href_ 与 _id_ */
|
|
86
|
+
export declare const hyperlinkAndIdOnValueChangeRules: readonly [HyperlinkRule, IdRule];
|
package/dist/word.css
CHANGED
|
@@ -10539,22 +10539,22 @@ svg.portrait-icon[data-v-8bdb451e] {
|
|
|
10539
10539
|
.bom-entry-item .iconfont.btn-item[data-v-f070d621] {
|
|
10540
10540
|
margin-right: 8px;
|
|
10541
10541
|
}
|
|
10542
|
-
.panel-material-consume-table[data-v-
|
|
10542
|
+
.panel-material-consume-table[data-v-c6970c00] {
|
|
10543
10543
|
position: relative;
|
|
10544
10544
|
}
|
|
10545
|
-
.panel-material-consume-table .container[data-v-
|
|
10545
|
+
.panel-material-consume-table .container[data-v-c6970c00] {
|
|
10546
10546
|
padding: 16px;
|
|
10547
10547
|
}
|
|
10548
|
-
.panel-material-consume-table .form-custom-label[data-v-
|
|
10548
|
+
.panel-material-consume-table .form-custom-label[data-v-c6970c00] {
|
|
10549
10549
|
display: inline-flex;
|
|
10550
10550
|
align-items: center;
|
|
10551
10551
|
gap: 4px;
|
|
10552
10552
|
}
|
|
10553
|
-
.panel-material-consume-table .form-custom-label .icon[data-v-
|
|
10553
|
+
.panel-material-consume-table .form-custom-label .icon[data-v-c6970c00] {
|
|
10554
10554
|
cursor: pointer;
|
|
10555
10555
|
vertical-align: text-top;
|
|
10556
10556
|
}
|
|
10557
|
-
.panel-material-consume-table .content[data-v-
|
|
10557
|
+
.panel-material-consume-table .content[data-v-c6970c00] {
|
|
10558
10558
|
display: flex;
|
|
10559
10559
|
align-items: center;
|
|
10560
10560
|
justify-content: flex-end;
|
|
@@ -10562,7 +10562,7 @@ svg.portrait-icon[data-v-8bdb451e] {
|
|
|
10562
10562
|
line-height: 22px;
|
|
10563
10563
|
width: 100%;
|
|
10564
10564
|
}
|
|
10565
|
-
.panel-material-consume-table .entries-container[data-v-
|
|
10565
|
+
.panel-material-consume-table .entries-container[data-v-c6970c00] {
|
|
10566
10566
|
padding: 6px 0;
|
|
10567
10567
|
}
|
|
10568
10568
|
.add-ds-btn[data-v-444003bd] {
|
|
@@ -12501,7 +12501,7 @@ svg.portrait-icon[data-v-8bdb451e] {
|
|
|
12501
12501
|
width: 100%;
|
|
12502
12502
|
height: 248px;
|
|
12503
12503
|
}
|
|
12504
|
-
.base-vxe-table-wrapper[data-v-
|
|
12504
|
+
.base-vxe-table-wrapper[data-v-c169ed2c] {
|
|
12505
12505
|
display: flex;
|
|
12506
12506
|
flex-direction: column;
|
|
12507
12507
|
flex: 1;
|
|
@@ -12509,10 +12509,10 @@ svg.portrait-icon[data-v-8bdb451e] {
|
|
|
12509
12509
|
width: 800px;
|
|
12510
12510
|
height: 360px;
|
|
12511
12511
|
}
|
|
12512
|
-
.base-vxe-table-wrapper[data-v-
|
|
12512
|
+
.base-vxe-table-wrapper[data-v-c169ed2c] .dropdown-vxe-table .row--active {
|
|
12513
12513
|
background: #e6f7ff;
|
|
12514
12514
|
}
|
|
12515
|
-
.base-vxe-table-wrapper .vxe-grid-empty-word[data-v-
|
|
12515
|
+
.base-vxe-table-wrapper .vxe-grid-empty-word[data-v-c169ed2c] {
|
|
12516
12516
|
display: flex;
|
|
12517
12517
|
flex-direction: column;
|
|
12518
12518
|
align-items: center;
|
|
@@ -12520,7 +12520,7 @@ svg.portrait-icon[data-v-8bdb451e] {
|
|
|
12520
12520
|
color: rgba(0, 0, 0, 0.45);
|
|
12521
12521
|
margin: 32px 0;
|
|
12522
12522
|
}
|
|
12523
|
-
.base-vxe-table-wrapper .vxe-grid-empty-word > img[data-v-
|
|
12523
|
+
.base-vxe-table-wrapper .vxe-grid-empty-word > img[data-v-c169ed2c] {
|
|
12524
12524
|
width: 60px;
|
|
12525
12525
|
margin-bottom: 12px;
|
|
12526
12526
|
}
|