@gct-paas/core-web 0.1.6-dev.6 → 0.1.6-dev.7
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/ColorPicker-DFKXqgaG.js +1 -0
- package/dist/_plugin-vue_export-helper-CGzGcWFX.js +1 -0
- package/dist/index.min.css +1 -1
- package/dist/loader.esm.min.js +1 -1
- package/dist/{monaco-editor-BTqXEIZI.js → monaco-editor-CQJ9TMzD.js} +1 -1
- package/dist/{template-1ZQd8Z1w.js → template-CXn8oAg5.js} +1 -1
- package/es/components/index.d.ts +1 -0
- package/es/components/index.mjs +2 -0
- package/es/components/paas-bpmn-log/components/approval-node.vue.mjs +2 -2
- package/es/components/paas-bpmn-log/components/approval-node.vue_vue_type_script_setup_true_lang.mjs +1 -2
- package/es/components/paas-bpmn-log/components/{approval-node.vue_vue_type_style_index_0_scoped_a88d7ef9_lang.css → approval-node.vue_vue_type_style_index_0_scoped_a8065b24_lang.css} +9 -9
- package/es/components/paas-bpmn-log/paas-bpmn-log.vue.mjs +2 -2
- package/es/components/paas-bpmn-log/paas-bpmn-log.vue_vue_type_script_setup_true_lang.mjs +1 -2
- package/es/components/paas-bpmn-log/{paas-bpmn-log.vue_vue_type_style_index_0_scoped_c85122b0_lang.css → paas-bpmn-log.vue_vue_type_style_index_0_scoped_eb574523_lang.css} +9 -9
- package/es/components/select-user-modal/deptUser.vue.d.ts +9 -0
- package/es/components/select-user-modal/deptUser.vue.mjs +7 -0
- package/es/components/select-user-modal/deptUser.vue_vue_type_script_setup_true_name_deptUser_lang.mjs +296 -0
- package/es/components/select-user-modal/deptUser.vue_vue_type_style_index_0_scoped_02dff7bf_lang.css +40 -0
- package/es/components/select-user-modal/index.d.ts +2 -0
- package/es/components/select-user-modal/index.mjs +1 -0
- package/es/components/select-user-modal/range-role.vue.d.ts +9 -0
- package/es/components/select-user-modal/range-role.vue.mjs +7 -0
- package/es/components/select-user-modal/range-role.vue_vue_type_script_setup_true_name_role_lang.mjs +137 -0
- package/es/components/select-user-modal/range-role.vue_vue_type_style_index_0_scoped_1241bcdf_lang.css +34 -0
- package/es/components/select-user-modal/select-user-modal.vue.d.ts +12 -0
- package/es/components/select-user-modal/select-user-modal.vue.mjs +7 -0
- package/es/components/select-user-modal/select-user-modal.vue_vue_type_script_setup_true_name_select-user-modal_lang.mjs +123 -0
- package/es/components/select-user-modal/select-user-modal.vue_vue_type_style_index_0_scoped_2c0f184c_lang.css +14 -0
- package/es/components/select-user-modal/userGroup.vue.d.ts +9 -0
- package/es/components/select-user-modal/userGroup.vue.mjs +7 -0
- package/es/components/select-user-modal/userGroup.vue_vue_type_script_setup_true_name_userGroup_lang.mjs +149 -0
- package/es/components/select-user-modal/userGroup.vue_vue_type_style_index_0_scoped_47d1cbaa_lang.css +19 -0
- package/es/create-app-vue.d.ts +2 -2
- package/es/create-app-vue.mjs +3 -3
- package/es/index.d.ts +1 -0
- package/es/index.mjs +5 -1
- package/es/modules/data-rules-container/index.d.ts +3 -0
- package/es/modules/data-rules-container/index.mjs +2 -0
- package/es/modules/data-rules-container/src/components/header-action.vue.d.ts +10 -0
- package/es/modules/data-rules-container/src/components/header-action.vue.mjs +7 -0
- package/es/modules/data-rules-container/src/components/header-action.vue_vue_type_script_setup_true_name_header-action_lang.mjs +36 -0
- package/es/modules/data-rules-container/src/components/header-action.vue_vue_type_style_index_0_scoped_4e281013_lang.css +32 -0
- package/es/modules/data-rules-container/src/components/ndo-select-cmp.vue.d.ts +8 -0
- package/es/modules/data-rules-container/src/components/ndo-select-cmp.vue.mjs +5 -0
- package/es/modules/data-rules-container/src/components/ndo-select-cmp.vue_vue_type_script_setup_true_lang.mjs +266 -0
- package/es/modules/data-rules-container/src/components/perm-action-node.vue.d.ts +22 -0
- package/es/modules/data-rules-container/src/components/perm-action-node.vue.mjs +7 -0
- package/es/modules/data-rules-container/src/components/perm-action-node.vue_vue_type_script_setup_true_name_perm-action-node_lang.mjs +384 -0
- package/es/modules/data-rules-container/src/components/perm-action-node.vue_vue_type_style_index_0_scoped_417c660f_lang.css +73 -0
- package/es/modules/data-rules-container/src/components/perm-root-node.vue.d.ts +3 -0
- package/es/modules/data-rules-container/src/components/perm-root-node.vue.mjs +7 -0
- package/es/modules/data-rules-container/src/components/perm-root-node.vue_vue_type_script_setup_true_name_perm-root-node_lang.mjs +61 -0
- package/es/modules/data-rules-container/src/components/perm-root-node.vue_vue_type_style_index_0_scoped_ca5c9d20_lang.css +74 -0
- package/es/modules/data-rules-container/src/components/rdo-select-cmp.vue.d.ts +11 -0
- package/es/modules/data-rules-container/src/components/rdo-select-cmp.vue.mjs +5 -0
- package/es/modules/data-rules-container/src/components/rdo-select-cmp.vue_vue_type_script_setup_true_lang.mjs +93 -0
- package/es/modules/data-rules-container/src/components/request-select-cmp.vue.d.ts +9 -0
- package/es/modules/data-rules-container/src/components/request-select-cmp.vue.mjs +5 -0
- package/es/modules/data-rules-container/src/components/request-select-cmp.vue_vue_type_script_setup_true_name_request-select-cmp_lang.mjs +117 -0
- package/es/modules/data-rules-container/src/components/request-tree-select-cmp.vue.d.ts +3 -0
- package/es/modules/data-rules-container/src/components/request-tree-select-cmp.vue.mjs +6 -0
- package/es/modules/data-rules-container/src/components/request-tree-select-cmp.vue_vue_type_script_name_gct-select_setup_true_lang.mjs +100 -0
- package/es/modules/data-rules-container/src/components/request-tree-select-cmp.vue_vue_type_style_index_0_lang.css +21 -0
- package/es/modules/data-rules-container/src/components/select-modal-cmp.vue.d.ts +32 -0
- package/es/modules/data-rules-container/src/components/select-modal-cmp.vue.mjs +5 -0
- package/es/modules/data-rules-container/src/components/select-modal-cmp.vue_vue_type_script_setup_true_name_select-modal-cmp_lang.mjs +268 -0
- package/es/modules/data-rules-container/src/components/select-more.vue.d.ts +8 -0
- package/es/modules/data-rules-container/src/components/select-more.vue.mjs +5 -0
- package/es/modules/data-rules-container/src/components/select-more.vue_vue_type_script_setup_true_lang.mjs +26 -0
- package/es/modules/data-rules-container/src/components/select-userdep-cmp.vue.d.ts +12 -0
- package/es/modules/data-rules-container/src/components/select-userdep-cmp.vue.mjs +5 -0
- package/es/modules/data-rules-container/src/components/select-userdep-cmp.vue_vue_type_script_setup_true_name_select-userdep-cmp_lang.mjs +103 -0
- package/es/modules/data-rules-container/src/components/tree-action-node.vue.d.ts +25 -0
- package/es/modules/data-rules-container/src/components/tree-action-node.vue.mjs +7 -0
- package/es/modules/data-rules-container/src/components/tree-action-node.vue_vue_type_script_setup_true_name_tree-action-node_lang.mjs +544 -0
- package/es/modules/data-rules-container/src/components/tree-action-node.vue_vue_type_style_index_0_scoped_46368089_lang.css +67 -0
- package/es/modules/data-rules-container/src/components/tree-root-node.vue.d.ts +3 -0
- package/es/modules/data-rules-container/src/components/tree-root-node.vue.mjs +7 -0
- package/es/modules/data-rules-container/src/components/tree-root-node.vue_vue_type_script_setup_true_name_tree-root-node_lang.mjs +105 -0
- package/es/modules/data-rules-container/src/components/tree-root-node.vue_vue_type_style_index_0_scoped_37e323fb_lang.css +29 -0
- package/es/modules/data-rules-container/src/components/tree-select-cmp.vue.d.ts +3 -0
- package/es/modules/data-rules-container/src/components/tree-select-cmp.vue.mjs +5 -0
- package/es/modules/data-rules-container/src/components/tree-select-cmp.vue_vue_type_script_name_gct-select_setup_true_lang.mjs +89 -0
- package/es/modules/data-rules-container/src/constant/config.d.ts +146 -0
- package/es/modules/data-rules-container/src/constant/config.mjs +548 -0
- package/es/modules/data-rules-container/src/constant/interface.d.ts +85 -0
- package/es/modules/data-rules-container/src/constant/interface.mjs +36 -0
- package/es/modules/data-rules-container/src/data-rules-container.vue.d.ts +45 -0
- package/es/modules/data-rules-container/src/data-rules-container.vue.mjs +6 -0
- package/es/modules/data-rules-container/src/data-rules-container.vue_vue_type_script_setup_true_name_data-rules-container_lang.mjs +234 -0
- package/es/modules/data-rules-container/src/data-rules-container.vue_vue_type_style_index_0_lang.css +149 -0
- package/es/modules/data-rules-container/src/field-role-container.vue.d.ts +14 -0
- package/es/modules/data-rules-container/src/field-role-container.vue.mjs +5 -0
- package/es/modules/data-rules-container/src/field-role-container.vue_vue_type_script_setup_true_name_field-role-container_lang.mjs +73 -0
- package/es/modules/data-rules-container/src/hooks/useDataRulesTree.d.ts +30 -0
- package/es/modules/data-rules-container/src/hooks/useDataRulesTree.mjs +317 -0
- package/es/modules/data-rules-container/src/hooks/useEmitter.d.ts +10 -0
- package/es/modules/data-rules-container/src/hooks/useRdoHooks.d.ts +37 -0
- package/es/modules/data-rules-container/src/hooks/useRdoHooks.mjs +144 -0
- package/es/modules/data-rules-container/src/hooks/useRole.d.ts +8 -0
- package/es/modules/data-rules-container/src/typing.d.ts +40 -0
- package/package.json +9 -9
- package/dist/ColorPicker-DGQQb8I7.js +0 -1
- package/dist/_plugin-vue_export-helper-C9hXqKoS.js +0 -1
- package/es/components/paas-bpmn-log/hooks/useObserver.mjs +0 -46
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
import { OperatorTypeEnum } from "../constant/interface.mjs";
|
|
2
|
+
import { reactive, ref, toRaw } from "vue";
|
|
3
|
+
import { isEmpty } from "lodash-es";
|
|
4
|
+
import { FIELD_TYPE, SEARCH_SERVICE, t, useUUid } from "@gct-paas/core";
|
|
5
|
+
//#region src/modules/data-rules-container/src/hooks/useDataRulesTree.ts
|
|
6
|
+
var editDataRulesTree = ref([]);
|
|
7
|
+
var showDataRulesTree = ref([]);
|
|
8
|
+
function useDataRulesTree(isReadyOnly) {
|
|
9
|
+
const { getUuidGenerate } = useUUid(ref([]), ref(""), {
|
|
10
|
+
needPrefix: true,
|
|
11
|
+
isString: false,
|
|
12
|
+
prefix: "t_"
|
|
13
|
+
});
|
|
14
|
+
const uuidGenerate = getUuidGenerate([]);
|
|
15
|
+
const transfromReactive = (data) => {
|
|
16
|
+
return data.map((item) => {
|
|
17
|
+
const node = reactive(Object.assign({}, {
|
|
18
|
+
key: item.key,
|
|
19
|
+
pid: item.pid,
|
|
20
|
+
level: item.level,
|
|
21
|
+
class: item.class
|
|
22
|
+
}, item.type === "group" ? {
|
|
23
|
+
operatorType: item.operatorType,
|
|
24
|
+
type: item.type,
|
|
25
|
+
children: reactive([])
|
|
26
|
+
} : {
|
|
27
|
+
firstRow: item.firstRow,
|
|
28
|
+
leftValue: item.leftValue,
|
|
29
|
+
operatorValue: item.operatorValue,
|
|
30
|
+
rightValue: item.rightValue
|
|
31
|
+
}));
|
|
32
|
+
if (Array.isArray(item.children)) node.children?.push(...transfromReactive(item.children));
|
|
33
|
+
return node;
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
const setPageTreeItem = (data, len) => {
|
|
37
|
+
return data.forEach((item, index) => {
|
|
38
|
+
if (Array.isArray(item.children)) {
|
|
39
|
+
item.type = "group";
|
|
40
|
+
item.class = "tree-group";
|
|
41
|
+
if (isEmpty(item.operatorType)) item.operatorType = OperatorTypeEnum.AND;
|
|
42
|
+
setPageTreeItem(item.children, item.children.length);
|
|
43
|
+
} else {
|
|
44
|
+
const filterData = data.filter((item) => !item.children);
|
|
45
|
+
if (index === 0 || index === filterData.length - 1) {
|
|
46
|
+
item.class = `${index === 0 ? "first-node" : ""} ${index === filterData.length - 1 ? "last-node" : ""}`;
|
|
47
|
+
item.firstRow = index === 0;
|
|
48
|
+
} else item.class = "";
|
|
49
|
+
item.dataLen = len;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
const addNode = ({ pid, insertId, data, isGroup = false, prevId = "" }) => {
|
|
54
|
+
if (pid === "init") {
|
|
55
|
+
const node = {
|
|
56
|
+
key: "root",
|
|
57
|
+
pid: "",
|
|
58
|
+
level: 1,
|
|
59
|
+
class: void 0,
|
|
60
|
+
operatorType: void 0,
|
|
61
|
+
type: void 0,
|
|
62
|
+
children: reactive([])
|
|
63
|
+
};
|
|
64
|
+
data.push(node);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
return data.forEach((item) => {
|
|
68
|
+
if (item.key === pid) {
|
|
69
|
+
const childrenNode = reactive(Object.assign({}, {
|
|
70
|
+
key: insertId,
|
|
71
|
+
pid: item.key,
|
|
72
|
+
level: Number(item.level) + 1,
|
|
73
|
+
class: ""
|
|
74
|
+
}, isGroup ? {
|
|
75
|
+
operatorType: void 0,
|
|
76
|
+
type: void 0,
|
|
77
|
+
children: reactive([])
|
|
78
|
+
} : {
|
|
79
|
+
firstRow: void 0,
|
|
80
|
+
leftValue: void 0,
|
|
81
|
+
operatorValue: void 0,
|
|
82
|
+
rightValue: void 0
|
|
83
|
+
}));
|
|
84
|
+
if (prevId) {
|
|
85
|
+
const index = item.children.findIndex((k) => k.key === prevId);
|
|
86
|
+
item.children.splice(index + 1, 0, childrenNode);
|
|
87
|
+
} else item.children.push(childrenNode);
|
|
88
|
+
item.children.forEach((i) => {
|
|
89
|
+
i.dataLen = item.children?.length;
|
|
90
|
+
});
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
if (item.children) addNode({
|
|
94
|
+
pid,
|
|
95
|
+
insertId,
|
|
96
|
+
data: item.children,
|
|
97
|
+
isGroup,
|
|
98
|
+
prevId
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
const deleteNode = (id, data) => {
|
|
103
|
+
return data.forEach((item, index) => {
|
|
104
|
+
if (item.key === id) {
|
|
105
|
+
data.splice(index, 1);
|
|
106
|
+
return;
|
|
107
|
+
} else if (item.children) deleteNode(id, item.children);
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
const createGroupNodes = (data, pid, isInit = false) => {
|
|
111
|
+
const uuid = uuidGenerate.next();
|
|
112
|
+
addNode({
|
|
113
|
+
pid: isInit ? "init" : pid,
|
|
114
|
+
insertId: uuid,
|
|
115
|
+
data,
|
|
116
|
+
isGroup: true
|
|
117
|
+
});
|
|
118
|
+
addNode({
|
|
119
|
+
pid: isInit ? pid : uuid,
|
|
120
|
+
insertId: isInit ? uuid : uuidGenerate.next(),
|
|
121
|
+
data
|
|
122
|
+
});
|
|
123
|
+
setPageTreeItem(data);
|
|
124
|
+
};
|
|
125
|
+
const setTree = (data) => {
|
|
126
|
+
if (!data) createGroupNodes(isReadyOnly ? showDataRulesTree.value : editDataRulesTree.value, "root", true);
|
|
127
|
+
else {
|
|
128
|
+
console.log("转换成页面想要的tree结构", JSON.parse(data));
|
|
129
|
+
if (isReadyOnly) showDataRulesTree.value = transfromReactive(JSON.parse(data));
|
|
130
|
+
else editDataRulesTree.value = transfromReactive(JSON.parse(data));
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
const addNewGroup = (id) => {
|
|
134
|
+
createGroupNodes(editDataRulesTree.value, id);
|
|
135
|
+
};
|
|
136
|
+
const deleteGroup = (id) => {
|
|
137
|
+
deleteNode(id, editDataRulesTree.value);
|
|
138
|
+
setPageTreeItem(editDataRulesTree.value);
|
|
139
|
+
};
|
|
140
|
+
const addNewRow = (pid, id) => {
|
|
141
|
+
addNode({
|
|
142
|
+
pid,
|
|
143
|
+
insertId: uuidGenerate.next(),
|
|
144
|
+
data: editDataRulesTree.value,
|
|
145
|
+
isGroup: false,
|
|
146
|
+
prevId: id
|
|
147
|
+
});
|
|
148
|
+
setPageTreeItem(editDataRulesTree.value);
|
|
149
|
+
};
|
|
150
|
+
const deleteRow = (id) => {
|
|
151
|
+
deleteNode(id, editDataRulesTree.value);
|
|
152
|
+
setPageTreeItem(editDataRulesTree.value);
|
|
153
|
+
};
|
|
154
|
+
/** 递归查找是否存在树结构中的值 */
|
|
155
|
+
const findTreePathById = (leafId, nodes) => {
|
|
156
|
+
for (let i = 0; i < nodes.length; i++) {
|
|
157
|
+
if (leafId === nodes[i].key) return nodes[i];
|
|
158
|
+
if (nodes[i].children) {
|
|
159
|
+
const findResult = findTreePathById(leafId, nodes[i].children);
|
|
160
|
+
if (findResult) return findResult;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return null;
|
|
164
|
+
};
|
|
165
|
+
const updateNodeItem = (id, attr, value, opts) => {
|
|
166
|
+
const node = findTreePathById(id, editDataRulesTree.value);
|
|
167
|
+
if (!node) return;
|
|
168
|
+
if (attr === "rightValue") {
|
|
169
|
+
if (opts?.isRest) node.rightValue = reactive(opts.defaultValues.map((val) => {
|
|
170
|
+
return { [opts.key]: val };
|
|
171
|
+
}));
|
|
172
|
+
if (opts?.key === "valueType") node[attr][opts.index] = {};
|
|
173
|
+
node[attr][opts?.index][opts?.key] = value;
|
|
174
|
+
} else node[attr] = typeof value === "object" ? reactive(value) : value;
|
|
175
|
+
if (attr === "leftValue") {
|
|
176
|
+
/** 运算符 */
|
|
177
|
+
node.operatorValue = void 0;
|
|
178
|
+
/** 右值 */
|
|
179
|
+
node.rightValue = void 0;
|
|
180
|
+
} else if (attr === "operatorValue") node.rightValue = reactive(opts?.defaultValues?.map((val) => {
|
|
181
|
+
return { [opts.key]: val };
|
|
182
|
+
}));
|
|
183
|
+
};
|
|
184
|
+
const getAllExpandedKeys = () => {
|
|
185
|
+
const list = flatten(isReadyOnly ? showDataRulesTree.value : editDataRulesTree.value, "");
|
|
186
|
+
return {
|
|
187
|
+
allExpandedKeys: list.map((item) => item.key),
|
|
188
|
+
selectFiledKeys: list.map((item) => item.leftValue?.id).filter((i) => i)
|
|
189
|
+
};
|
|
190
|
+
};
|
|
191
|
+
const flatten = (array = [], pathStr) => {
|
|
192
|
+
return [].concat(...array.map((item) => {
|
|
193
|
+
item.pathStr = `${pathStr}|${item.children ? item.operatorType : "content"}`;
|
|
194
|
+
return [].concat({
|
|
195
|
+
key: item.key,
|
|
196
|
+
pid: item.pid,
|
|
197
|
+
operatorType: item.children ? item.operatorType : "content",
|
|
198
|
+
pathStr: item.pathStr,
|
|
199
|
+
leftValue: item.leftValue,
|
|
200
|
+
operatorValue: item.operatorValue,
|
|
201
|
+
rightValue: item.rightValue
|
|
202
|
+
}, flatten(item.children || [], item.pathStr));
|
|
203
|
+
}));
|
|
204
|
+
};
|
|
205
|
+
const getExpList = (array = [], parent, type) => {
|
|
206
|
+
return [].concat(...array.map((item) => {
|
|
207
|
+
let name = "";
|
|
208
|
+
if (!item.children && item.leftValue && item.leftValue.key && item.operatorValue && item.key) {
|
|
209
|
+
name = `${item.leftValue.field_search_key || item.leftValue.key}.${item.operatorValue}:${item.key}`;
|
|
210
|
+
if (type === "filterConfig") name = `${item.leftValue.modelKey}#${item.leftValue.key}.${item.operatorValue}:${item.key}`;
|
|
211
|
+
else if (type === "businessFlow") name = `${item.leftValue.nodeKey}.${item.leftValue.modelKey}.${item.operatorValue}:${item.key}`;
|
|
212
|
+
}
|
|
213
|
+
return [].concat(item.children ? [] : item.leftValue && item.leftValue.key && item.operatorValue && item.key ? {
|
|
214
|
+
name,
|
|
215
|
+
type: parent.operatorType,
|
|
216
|
+
operatorType: item.children ? item.operatorType : "content"
|
|
217
|
+
} : [], [getExpList(item.children || [], item, type)]);
|
|
218
|
+
}));
|
|
219
|
+
};
|
|
220
|
+
const filterExpList = (array) => {
|
|
221
|
+
const list = [];
|
|
222
|
+
array.forEach((item) => {
|
|
223
|
+
if (Array.isArray(item) && item.length !== 0) list.push(filterExpList(item));
|
|
224
|
+
else if (!Array.isArray(item) && item.operatorType === "content") list.push(item);
|
|
225
|
+
});
|
|
226
|
+
return list;
|
|
227
|
+
};
|
|
228
|
+
const setExpValue = (array) => {
|
|
229
|
+
const list = [];
|
|
230
|
+
array.forEach((item, index) => {
|
|
231
|
+
if (index === 0) list.push(`#before${item.type}#`);
|
|
232
|
+
if (Array.isArray(item) && item.length !== 0) list.push(...setExpValue(item));
|
|
233
|
+
else if (!Array.isArray(item)) list.push(item.name);
|
|
234
|
+
if (index === array.length - 1) list.push("#after#");
|
|
235
|
+
});
|
|
236
|
+
return list;
|
|
237
|
+
};
|
|
238
|
+
/** 递归得到数据规则算子 */
|
|
239
|
+
const getDataRules = (type, mainModelKey) => {
|
|
240
|
+
const list = flatten(isReadyOnly ? showDataRulesTree.value : editDataRulesTree.value, "");
|
|
241
|
+
let error;
|
|
242
|
+
const query = {};
|
|
243
|
+
const varKeys = [];
|
|
244
|
+
const typeMap = {};
|
|
245
|
+
list.forEach((item) => {
|
|
246
|
+
if (item.operatorType === "content") {
|
|
247
|
+
if (isEmpty(item.leftValue) || isEmpty(item.operatorValue) || isEmpty(item.rightValue)) {
|
|
248
|
+
error = t("sys.webRender.saveTip");
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
let key = "";
|
|
252
|
+
if (type === "businessFlow") key = `${item.leftValue.nodeKey}.${item.leftValue.modelKey}.${item.operatorValue}:${item.key}`;
|
|
253
|
+
else if (type === "filterConfig") key = `${item.leftValue.modelKey}#${item.leftValue.key}.${item.operatorValue}:${item.key}`;
|
|
254
|
+
else key = `${item.leftValue.field_search_key || item.leftValue.key}.${item.operatorValue}:${item.key}`;
|
|
255
|
+
if ([SEARCH_SERVICE.ISNOTNULL, SEARCH_SERVICE.ISNULL].includes(item.operatorValue)) Object.assign(query, { [key]: null });
|
|
256
|
+
else {
|
|
257
|
+
if (item.rightValue.some((rv) => isEmpty(rv.result))) {
|
|
258
|
+
error = t("sys.webRender.saveTip");
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
const types = [];
|
|
262
|
+
const values = item.rightValue.map((kk) => {
|
|
263
|
+
types.push(kk.valueType);
|
|
264
|
+
if (kk.valueType === "SYS") varKeys.push(key);
|
|
265
|
+
if ([
|
|
266
|
+
FIELD_TYPE.USER_MULTI,
|
|
267
|
+
FIELD_TYPE.ORG_MULTI,
|
|
268
|
+
FIELD_TYPE.USER,
|
|
269
|
+
FIELD_TYPE.ORG
|
|
270
|
+
].includes(item.leftValue.type) && kk.valueType === "FIXED") {
|
|
271
|
+
const _orgs = kk?.result?.orgs?.map((org) => `ORG:${org}`) ?? [];
|
|
272
|
+
const _users = kk?.result?.users?.map((user) => `USER:${user}`) ?? [];
|
|
273
|
+
if ([FIELD_TYPE.USER, FIELD_TYPE.ORG].includes(item.leftValue.type) && [SEARCH_SERVICE.EQ, SEARCH_SERVICE.NE].includes(item.operatorValue)) return [..._orgs, ..._users]?.[0];
|
|
274
|
+
return [..._orgs, ..._users];
|
|
275
|
+
}
|
|
276
|
+
return kk?.valueType === "FIELD" ? mainModelKey ? `__F__:${mainModelKey}.${kk?.result}` : `__F__:${kk?.result.replace("$", ".")}` : kk?.result;
|
|
277
|
+
});
|
|
278
|
+
Object.assign(typeMap, { [key]: types.length === 1 ? toRaw(types[0]) : toRaw(types) });
|
|
279
|
+
Object.assign(query, { [key]: values.length === 1 ? toRaw(values[0]) : toRaw(values) });
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
if (error) return { error };
|
|
284
|
+
const explist = setExpValue(filterExpList(getExpList((isReadyOnly ? showDataRulesTree.value : editDataRulesTree.value)[0].children, (isReadyOnly ? showDataRulesTree.value : editDataRulesTree.value)[0], type)));
|
|
285
|
+
const expStr = explist.toString().replace(/#beforeAND#,/g, "AND(").replace(/#beforeOR#,/g, "OR(").replace(/,#after#/g, ")");
|
|
286
|
+
console.warn("getDataRules query", query);
|
|
287
|
+
console.warn("getDataRules varKeys", varKeys);
|
|
288
|
+
console.warn("getDataRules explist", explist);
|
|
289
|
+
console.warn("getDataRules expStr", expStr);
|
|
290
|
+
return {
|
|
291
|
+
query,
|
|
292
|
+
varKeys,
|
|
293
|
+
exp: expStr,
|
|
294
|
+
treeStr: JSON.stringify(isReadyOnly ? showDataRulesTree.value : editDataRulesTree.value),
|
|
295
|
+
typeMap
|
|
296
|
+
};
|
|
297
|
+
};
|
|
298
|
+
const resetTree = () => {
|
|
299
|
+
if (isReadyOnly) showDataRulesTree.value = [];
|
|
300
|
+
else editDataRulesTree.value = [];
|
|
301
|
+
};
|
|
302
|
+
return {
|
|
303
|
+
setTree,
|
|
304
|
+
showDataRulesTree,
|
|
305
|
+
editDataRulesTree,
|
|
306
|
+
addNewGroup,
|
|
307
|
+
addNewRow,
|
|
308
|
+
deleteGroup,
|
|
309
|
+
deleteRow,
|
|
310
|
+
updateNodeItem,
|
|
311
|
+
getDataRules,
|
|
312
|
+
resetTree,
|
|
313
|
+
getAllExpandedKeys
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
//#endregion
|
|
317
|
+
export { useDataRulesTree };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare enum EmitterEnum {
|
|
2
|
+
/** 打开编辑用户组弹框 */
|
|
3
|
+
on_edit_user_group = "on-edit-user-group",
|
|
4
|
+
on_refresh_detail = "on-refresh-detail",
|
|
5
|
+
on_delete_user_group = "on-delete-user-group"
|
|
6
|
+
}
|
|
7
|
+
export declare function useEmitter(): {
|
|
8
|
+
emitter: import('mitt').Emitter<Record<import('mitt').EventType, unknown>>;
|
|
9
|
+
EmitterEnum: typeof EmitterEnum;
|
|
10
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export declare function useAsyncOptions({ bindModelKey, modelCategory }: IObject): {
|
|
2
|
+
getChildrens: (ids?: string[]) => Promise<void>;
|
|
3
|
+
getAsyncOptions: (arg: IObject) => Promise<void>;
|
|
4
|
+
treeData: import('vue').Ref<({
|
|
5
|
+
[x: string]: any;
|
|
6
|
+
disabled?: boolean | undefined;
|
|
7
|
+
checkable?: boolean | undefined;
|
|
8
|
+
disableCheckbox?: boolean | undefined;
|
|
9
|
+
children?: /*elided*/ any[] | undefined;
|
|
10
|
+
} | {
|
|
11
|
+
[x: string]: any;
|
|
12
|
+
disabled?: boolean | undefined;
|
|
13
|
+
checkable?: boolean | undefined;
|
|
14
|
+
disableCheckbox?: boolean | undefined;
|
|
15
|
+
value?: import('ant-design-vue/lib/vc-tree-select/TreeSelect').RawValueType | undefined;
|
|
16
|
+
title?: any;
|
|
17
|
+
label?: any;
|
|
18
|
+
key?: import('ant-design-vue/lib/vc-tree-select/interface').Key | undefined;
|
|
19
|
+
children?: /*elided*/ any[] | undefined;
|
|
20
|
+
})[] | undefined, (import('ant-design-vue/lib/vc-tree-select/TreeSelect').BaseOptionType | import('ant-design-vue/lib/vc-tree-select/TreeSelect').DefaultOptionType)[] | ({
|
|
21
|
+
[x: string]: any;
|
|
22
|
+
disabled?: boolean | undefined;
|
|
23
|
+
checkable?: boolean | undefined;
|
|
24
|
+
disableCheckbox?: boolean | undefined;
|
|
25
|
+
children?: /*elided*/ any[] | undefined;
|
|
26
|
+
} | {
|
|
27
|
+
[x: string]: any;
|
|
28
|
+
disabled?: boolean | undefined;
|
|
29
|
+
checkable?: boolean | undefined;
|
|
30
|
+
disableCheckbox?: boolean | undefined;
|
|
31
|
+
value?: import('ant-design-vue/lib/vc-tree-select/TreeSelect').RawValueType | undefined;
|
|
32
|
+
title?: any;
|
|
33
|
+
label?: any;
|
|
34
|
+
key?: import('ant-design-vue/lib/vc-tree-select/interface').Key | undefined;
|
|
35
|
+
children?: /*elided*/ any[] | undefined;
|
|
36
|
+
})[] | undefined>;
|
|
37
|
+
};
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import select_more_default from "../components/select-more.vue.mjs";
|
|
2
|
+
import { h, ref } from "vue";
|
|
3
|
+
import { t } from "@gct-paas/core";
|
|
4
|
+
//#region src/modules/data-rules-container/src/hooks/useRdoHooks.ts
|
|
5
|
+
function useAsyncOptions({ bindModelKey, modelCategory }) {
|
|
6
|
+
const treeData = ref([]);
|
|
7
|
+
let searchField = "name_"?.split(",") || [];
|
|
8
|
+
async function getModelInfo() {
|
|
9
|
+
if (bindModelKey) {
|
|
10
|
+
const res = await _api.apaas.modelMeta.getInfo({ id: bindModelKey }) || {};
|
|
11
|
+
searchField = (res.displayField ? `${res.displayField},name_` : "name_")?.split(",") || [];
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
getModelInfo();
|
|
15
|
+
const getQueryDateByKeyWord = (keyword) => {
|
|
16
|
+
return searchField?.reduce((total, filedKey) => {
|
|
17
|
+
const expkey = filedKey.split(".").length > 1 ? filedKey : filedKey + ".like";
|
|
18
|
+
total[expkey] = keyword;
|
|
19
|
+
return total;
|
|
20
|
+
}, {}) || {};
|
|
21
|
+
};
|
|
22
|
+
const getExp = () => {
|
|
23
|
+
return `OR(${searchField.map((key) => `${key}.like`).join(",")})`;
|
|
24
|
+
};
|
|
25
|
+
async function getRdoAsyncOptions(arg = {}) {
|
|
26
|
+
let complete = true;
|
|
27
|
+
let optionsData = [];
|
|
28
|
+
const queryData = arg.keyword ? getQueryDateByKeyWord(arg.keyword) : {};
|
|
29
|
+
const queryExp = getExp();
|
|
30
|
+
const res = await _api.apaas.modelComprehensive.postBizServiceModelCategoryModelKeyBsKey({
|
|
31
|
+
bsKey: "rdoListByPage",
|
|
32
|
+
modelKey: bindModelKey,
|
|
33
|
+
modelCategory
|
|
34
|
+
}, {}, {
|
|
35
|
+
exp: queryExp,
|
|
36
|
+
query: queryData,
|
|
37
|
+
pageSize: 30,
|
|
38
|
+
pageNo: arg.pageNo
|
|
39
|
+
}) || {};
|
|
40
|
+
/**自定义数据源可能不存在 totalPage 默认 全部加载完成*/
|
|
41
|
+
complete = res.totalPage ? res.totalPage <= res.pageNo : true;
|
|
42
|
+
optionsData = (res?.data || []).map((i) => {
|
|
43
|
+
const rdoLabel = i.__LABEL__ || i.name_;
|
|
44
|
+
return {
|
|
45
|
+
value: i.id_,
|
|
46
|
+
title: rdoLabel,
|
|
47
|
+
_info: i.__CHILDREN__?.find((k) => k.default_),
|
|
48
|
+
full_path: h("div", [h("span", `${rdoLabel}`), h("span", { class: "gct-custom-tag ml8px" }, t("sys.default"))]),
|
|
49
|
+
children: i.__CHILDREN__?.map((j) => {
|
|
50
|
+
const versionLabel = j.__LABEL__ || j.version_;
|
|
51
|
+
return {
|
|
52
|
+
value: `${i.id_}:${j.id_}`,
|
|
53
|
+
title: h("div", [h("span", { class: "version" }, versionLabel), j.default_ ? h("span", { class: "version gct-custom-tag ml8px" }, t("sys.default")) : null]),
|
|
54
|
+
_info: { ...j },
|
|
55
|
+
full_path: h("div", [h("span", `${rdoLabel}:${versionLabel}`)])
|
|
56
|
+
};
|
|
57
|
+
})
|
|
58
|
+
};
|
|
59
|
+
});
|
|
60
|
+
return {
|
|
61
|
+
complete,
|
|
62
|
+
optionsData
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* 补全查询
|
|
67
|
+
* @param v
|
|
68
|
+
*/
|
|
69
|
+
async function getChildrens({ id_ } = {}) {
|
|
70
|
+
const [_fId, _cId] = id_?.split(":") ?? ["", ""];
|
|
71
|
+
console.log("_cId", _cId);
|
|
72
|
+
const data = (await _api.apaas.modelComprehensive.postBizServiceModelCategoryModelKeyBsKey({
|
|
73
|
+
bsKey: "rdoListVersionByRefIdsWithParent",
|
|
74
|
+
modelKey: bindModelKey,
|
|
75
|
+
modelCategory
|
|
76
|
+
}, { foreignFields: [] }, {
|
|
77
|
+
refIds: id_,
|
|
78
|
+
includeDeleted: 1
|
|
79
|
+
}) || {})?.data?.[0];
|
|
80
|
+
const rdoLabel = data.__LABEL__ || data.name_;
|
|
81
|
+
let children = [];
|
|
82
|
+
try {
|
|
83
|
+
children = (await _api.apaas.modelComprehensive.postBizServiceModelCategoryModelKeyBsKey({
|
|
84
|
+
bsKey: "rdoListVersionById",
|
|
85
|
+
modelKey: bindModelKey,
|
|
86
|
+
modelCategory
|
|
87
|
+
}, { foreignFields: [] }, { id: _fId }) || {}).data?.map((i) => {
|
|
88
|
+
const versionLabel = i.__LABEL__ || i.version_;
|
|
89
|
+
return {
|
|
90
|
+
value: `${_fId}:${i.id_}`,
|
|
91
|
+
title: h("div", [h("span", { class: "version" }, versionLabel), i.default_ ? h("span", { class: "version gct-custom-tag ml8px" }, t("sys.default")) : null]),
|
|
92
|
+
_info: { ...i },
|
|
93
|
+
full_path: h("div", [h("span", `${rdoLabel}:${versionLabel}`)])
|
|
94
|
+
};
|
|
95
|
+
});
|
|
96
|
+
} catch (error) {
|
|
97
|
+
console.error("getChildrens 获取子节点失败:", error);
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
value: _fId,
|
|
101
|
+
title: rdoLabel,
|
|
102
|
+
full_path: h("div", [h("span", `${rdoLabel}`), h("span", { class: "gct-custom-tag ml8px" }, t("sys.default"))]),
|
|
103
|
+
children
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
async function getAsyncOptions(arg) {
|
|
107
|
+
if (!arg.pageNo) arg.pageNo = 1;
|
|
108
|
+
const { optionsData, complete } = await getRdoAsyncOptions(arg);
|
|
109
|
+
if (treeData.value?.length) if (arg.pageNo > 1) treeData.value?.pop();
|
|
110
|
+
else treeData.value = [];
|
|
111
|
+
optionsData.forEach((i) => {
|
|
112
|
+
treeData.value?.push(i);
|
|
113
|
+
});
|
|
114
|
+
if (!complete) treeData.value?.push({
|
|
115
|
+
selectable: false,
|
|
116
|
+
title: () => h(select_more_default, { onNextOnce: () => {
|
|
117
|
+
arg.pageNo += 1;
|
|
118
|
+
getAsyncOptions(arg);
|
|
119
|
+
} })
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
getChildrens: async (ids = []) => {
|
|
124
|
+
try {
|
|
125
|
+
if (!Array.isArray(ids) || ids.length === 0) return;
|
|
126
|
+
for (const id_ of ids) {
|
|
127
|
+
if (!id_) continue;
|
|
128
|
+
const [_fId, _cId] = id_.split(":");
|
|
129
|
+
console.log("_cId", _cId);
|
|
130
|
+
if (treeData.value?.some((item) => item.value === _fId)) continue;
|
|
131
|
+
const row = await getChildrens({ id_ });
|
|
132
|
+
if (treeData.value?.some((item) => item.value === _fId)) continue;
|
|
133
|
+
if (row) treeData.value?.unshift(row);
|
|
134
|
+
}
|
|
135
|
+
} catch (error) {
|
|
136
|
+
console.error("getChildrens 批量加载失败:", error);
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
getAsyncOptions,
|
|
140
|
+
treeData
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
//#endregion
|
|
144
|
+
export { useAsyncOptions };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { FieldMetaDTO } from '@gct-paas/api/apaas';
|
|
2
|
+
export type LocalFieldMetaDTO = FieldMetaDTO & {
|
|
3
|
+
__bindFields: string[];
|
|
4
|
+
};
|
|
5
|
+
export interface OptionItem {
|
|
6
|
+
label: string;
|
|
7
|
+
value: string;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
type?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface ApiParams {
|
|
12
|
+
modelKey: string;
|
|
13
|
+
[key: string]: string;
|
|
14
|
+
}
|
|
15
|
+
export interface CompProps {
|
|
16
|
+
value?: string | string[];
|
|
17
|
+
api: (params: IObject) => Promise<IObject>;
|
|
18
|
+
apiParams: ApiParams;
|
|
19
|
+
filterType?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface TreeProps {
|
|
22
|
+
data: IObject;
|
|
23
|
+
/** 树的层级,从0开始 */
|
|
24
|
+
level?: number;
|
|
25
|
+
/** key */
|
|
26
|
+
id: string;
|
|
27
|
+
/** 操作类型 */
|
|
28
|
+
operatorType: string;
|
|
29
|
+
readonly: boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface IPickerCompParams {
|
|
32
|
+
modelKey?: string;
|
|
33
|
+
fieldKey?: string;
|
|
34
|
+
multiple: boolean;
|
|
35
|
+
}
|
|
36
|
+
export interface ModalCompProps {
|
|
37
|
+
supportModalType: string;
|
|
38
|
+
pickerCompParams: IPickerCompParams;
|
|
39
|
+
value: string | string[];
|
|
40
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gct-paas/core-web",
|
|
3
|
-
"version": "0.1.6-dev.
|
|
3
|
+
"version": "0.1.6-dev.7",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "paas 平台网页端核心包",
|
|
6
6
|
"loader": "dist/loader.esm.min.js",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@ant-design/icons-vue": "^6.1.0",
|
|
35
35
|
"@floating-ui/dom": "^1.7.6",
|
|
36
|
-
"@gct-paas/api": "^0.1.6-dev.
|
|
36
|
+
"@gct-paas/api": "^0.1.6-dev.5",
|
|
37
37
|
"@gct-paas/flow": "0.0.1-dev.1",
|
|
38
38
|
"@gct-paas/platform-icons": "^0.0.2",
|
|
39
39
|
"@icon-park/vue-next": "^1.4.2",
|
|
@@ -64,18 +64,18 @@
|
|
|
64
64
|
"vxe-table": "npm:@gct-paas/vxe-table@4.6.19",
|
|
65
65
|
"wujie": "^1.0.29",
|
|
66
66
|
"wujie-vue3": "^1.0.29",
|
|
67
|
-
"@gct-paas/core": "0.1.6-dev.
|
|
68
|
-
"@gct-paas/scss": "0.1.6-dev.
|
|
69
|
-
"@gct-paas/core-components": "0.1.6-dev.
|
|
67
|
+
"@gct-paas/core": "0.1.6-dev.7",
|
|
68
|
+
"@gct-paas/scss": "0.1.6-dev.7",
|
|
69
|
+
"@gct-paas/core-components": "0.1.6-dev.7"
|
|
70
70
|
},
|
|
71
71
|
"peerDependencies": {
|
|
72
|
-
"@gct-paas/api": "^0.1.6-dev.
|
|
72
|
+
"@gct-paas/api": "^0.1.6-dev.5",
|
|
73
73
|
"@types/sortablejs": "^1.15.1",
|
|
74
74
|
"vant": ">=4",
|
|
75
75
|
"vue": ">=3",
|
|
76
|
-
"@gct-paas/core": "0.1.6-dev.
|
|
77
|
-
"@gct-paas/core-components": "0.1.6-dev.
|
|
78
|
-
"@gct-paas/scss": "0.1.6-dev.
|
|
76
|
+
"@gct-paas/core": "0.1.6-dev.7",
|
|
77
|
+
"@gct-paas/core-components": "0.1.6-dev.7",
|
|
78
|
+
"@gct-paas/scss": "0.1.6-dev.7"
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
81
|
"@types/bwip-js": "^3.2.3"
|