@since2006/pages 2025.8.0 → 2025.8.1

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.
Files changed (33) hide show
  1. package/dist/es/index.js +10 -8
  2. package/dist/es/src/app/module/ModuleAdd.vue.js +7 -0
  3. package/dist/es/src/app/module/ModuleAdd.vue2.js +280 -0
  4. package/dist/es/src/app/module/ModuleDetail.vue.js +133 -0
  5. package/dist/es/src/app/module/ModuleDetail.vue2.js +4 -0
  6. package/dist/es/src/app/module/ModuleEdit.vue.js +7 -0
  7. package/dist/es/src/app/module/ModuleEdit.vue2.js +283 -0
  8. package/dist/es/src/app/module/ModuleIndex.vue.js +218 -0
  9. package/dist/es/src/app/module/ModuleIndex.vue2.js +4 -0
  10. package/dist/es/src/app/module/api.js +14 -0
  11. package/dist/es/src/app/module/icon/IconSelectorModal.vue.js +7 -0
  12. package/dist/es/src/app/module/icon/IconSelectorModal.vue2.js +39 -0
  13. package/dist/es/src/app/module/index.js +9 -0
  14. package/dist/es/src/app/module/utils.js +11 -0
  15. package/dist/es/src/index.js +4 -2
  16. package/dist/es/style.css +1 -1
  17. package/dist/lib/index.js +1 -1
  18. package/dist/lib/src/app/module/ModuleAdd.vue.js +1 -0
  19. package/dist/lib/src/app/module/ModuleAdd.vue2.js +1 -0
  20. package/dist/lib/src/app/module/ModuleDetail.vue.js +1 -0
  21. package/dist/lib/src/app/module/ModuleDetail.vue2.js +1 -0
  22. package/dist/lib/src/app/module/ModuleEdit.vue.js +1 -0
  23. package/dist/lib/src/app/module/ModuleEdit.vue2.js +1 -0
  24. package/dist/lib/src/app/module/ModuleIndex.vue.js +1 -0
  25. package/dist/lib/src/app/module/ModuleIndex.vue2.js +1 -0
  26. package/dist/lib/src/app/module/api.js +1 -0
  27. package/dist/lib/src/app/module/icon/IconSelectorModal.vue.js +1 -0
  28. package/dist/lib/src/app/module/icon/IconSelectorModal.vue2.js +1 -0
  29. package/dist/lib/src/app/module/index.js +1 -0
  30. package/dist/lib/src/app/module/utils.js +1 -0
  31. package/dist/lib/src/index.js +1 -1
  32. package/dist/lib/style.css +1 -1
  33. package/package.json +2 -1
package/dist/es/index.js CHANGED
@@ -1,12 +1,14 @@
1
- import * as t from "./src/index.js";
2
- import { StatusIndex as a } from "./src/app/system/index.js";
3
- const n = {
4
- install: (e) => {
5
- for (let o in t)
6
- e.use(t[o]);
1
+ import * as e from "./src/index.js";
2
+ import { StatusIndex as d } from "./src/app/system/index.js";
3
+ import { ModuleIndex as a } from "./src/app/module/index.js";
4
+ const r = {
5
+ install: (o) => {
6
+ for (let t in e)
7
+ o.use(e[t]);
7
8
  }
8
9
  };
9
10
  export {
10
- a as StatusIndex,
11
- n as default
11
+ a as ModuleIndex,
12
+ d as StatusIndex,
13
+ r as default
12
14
  };
@@ -0,0 +1,7 @@
1
+ import o from "./ModuleAdd.vue2.js";
2
+ /* empty css */
3
+ import t from "../../../_virtual/_plugin-vue_export-helper.js";
4
+ const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-cd92ee31"]]);
5
+ export {
6
+ m as default
7
+ };
@@ -0,0 +1,280 @@
1
+ import { defineComponent as G, ref as d, reactive as H, watch as J, resolveComponent as u, openBlock as U, createBlock as N, withCtx as a, createVNode as t, resolveDynamicComponent as K, unref as q, createTextVNode as y } from "vue";
2
+ import Q from "./icon/IconSelectorModal.vue.js";
3
+ import { message as W } from "ant-design-vue";
4
+ import { SearchOutlined as X } from "@ant-design/icons-vue";
5
+ import { getModules as Y, getDocs as Z, createModule as ee } from "./api.js";
6
+ import { PermPanel as te } from "@since2006/components";
7
+ const se = /* @__PURE__ */ G({
8
+ __name: "ModuleAdd",
9
+ props: {
10
+ open: {
11
+ type: Boolean,
12
+ default: !1
13
+ },
14
+ parentId: {
15
+ type: String,
16
+ default: null
17
+ }
18
+ },
19
+ emits: ["update:open", "success", "cancel"],
20
+ setup(_, { emit: h }) {
21
+ const m = _, b = d(), p = d([]), f = d(!1), g = d([]), I = d([]), i = d({
22
+ icon: !1
23
+ }), w = {
24
+ id: "",
25
+ cateId: "",
26
+ parentId: "",
27
+ name: "",
28
+ icon: "",
29
+ path: "",
30
+ component: "",
31
+ seqNo: "",
32
+ remark: "",
33
+ state: "0",
34
+ target: !1,
35
+ permissionSummary: ""
36
+ }, l = H({ ...w }), x = {
37
+ name: [{ required: !0, message: "请填写模块名称" }],
38
+ seqNo: [{ required: !0, type: "number", message: "请填写数字类型顺序号" }]
39
+ }, v = h;
40
+ J(
41
+ () => m.open,
42
+ (n) => {
43
+ n && (D(), O());
44
+ }
45
+ );
46
+ const D = () => {
47
+ Object.assign(l, w), p.value = [];
48
+ }, L = (n, e) => e.componentOptions.children[0].text.toLowerCase().indexOf(n.toLowerCase()) >= 0, O = () => {
49
+ Y().then((n) => {
50
+ const e = [];
51
+ k(e, n.result, []), g.value = e, m.parentId && (l.parentId = m.parentId);
52
+ }), Z().then((n) => {
53
+ I.value = M(n.result);
54
+ });
55
+ }, V = () => {
56
+ i.value.icon = !0;
57
+ }, A = (n) => {
58
+ i.value.icon = !1, l.icon = n;
59
+ }, B = () => {
60
+ b.value.validateFields().then(() => {
61
+ f.value = !0;
62
+ const n = {
63
+ ...l,
64
+ target: l.target ? 1 : 0,
65
+ permIds: p.value,
66
+ seqNo: parseInt(l.seqNo)
67
+ };
68
+ ee(n).then((e) => {
69
+ W.success("添加模块成功"), v("update:open", !1), v("success", e.result.parentId);
70
+ });
71
+ }).finally((n) => {
72
+ f.value = !1;
73
+ });
74
+ }, F = () => {
75
+ v("update:open", !1);
76
+ }, k = (n, e, c) => {
77
+ e && e.forEach((r) => {
78
+ if (!c.includes(r.id)) {
79
+ const s = { value: r.id, title: r.name, children: [] };
80
+ k(s.children, r.children, c), n.push(s);
81
+ }
82
+ });
83
+ }, M = (n) => n.map((e) => ({
84
+ value: e.id,
85
+ label: e.name
86
+ }));
87
+ return (n, e) => {
88
+ const c = u("a-tree-select"), r = u("a-form-item"), s = u("a-input"), R = u("a-select"), E = u("a-input-number"), S = u("a-radio"), P = u("a-radio-group"), T = u("a-switch"), C = u("a-col"), j = u("a-row"), $ = u("a-form"), z = u("a-modal");
89
+ return U(), N(z, {
90
+ title: "添加系统模块",
91
+ width: 800,
92
+ visible: _.open,
93
+ "mask-closable": !1,
94
+ "confirm-loading": f.value,
95
+ "destroy-on-close": "",
96
+ onOk: B,
97
+ onCancel: F
98
+ }, {
99
+ default: a(() => [
100
+ t($, {
101
+ ref_key: "formRef",
102
+ ref: b,
103
+ model: l,
104
+ rules: x,
105
+ "label-col": { span: 5 },
106
+ "wrapper-col": { span: 15 }
107
+ }, {
108
+ default: a(() => [
109
+ t(j, null, {
110
+ default: a(() => [
111
+ t(C, { span: 15 }, {
112
+ default: a(() => [
113
+ t(r, { label: "上级模块" }, {
114
+ default: a(() => [
115
+ t(c, {
116
+ value: l.parentId,
117
+ "onUpdate:value": e[0] || (e[0] = (o) => l.parentId = o),
118
+ treeData: g.value,
119
+ treeDefaultExpandAll: "",
120
+ allowClear: ""
121
+ }, null, 8, ["value", "treeData"])
122
+ ]),
123
+ _: 1
124
+ }),
125
+ t(r, {
126
+ label: "模块名称",
127
+ name: "name"
128
+ }, {
129
+ default: a(() => [
130
+ t(s, {
131
+ value: l.name,
132
+ "onUpdate:value": e[1] || (e[1] = (o) => l.name = o),
133
+ placeholder: "模块名称"
134
+ }, null, 8, ["value"])
135
+ ]),
136
+ _: 1
137
+ }),
138
+ t(r, { label: "文档类别" }, {
139
+ default: a(() => [
140
+ t(R, {
141
+ value: l.cateId,
142
+ "onUpdate:value": e[2] || (e[2] = (o) => l.cateId = o),
143
+ "show-search": "",
144
+ "option-filter-prop": "children",
145
+ "filter-option": L,
146
+ options: I.value,
147
+ allowClear: ""
148
+ }, null, 8, ["value", "options"])
149
+ ]),
150
+ _: 1
151
+ }),
152
+ t(r, { label: "模块图标" }, {
153
+ default: a(() => [
154
+ t(s, {
155
+ value: l.icon,
156
+ "onUpdate:value": e[3] || (e[3] = (o) => l.icon = o),
157
+ placeholder: "点击右侧按钮选择图标"
158
+ }, {
159
+ prefix: a(() => [
160
+ (U(), N(K(l.icon), { style: { color: "#108b16" } }))
161
+ ]),
162
+ addonAfter: a(() => [
163
+ t(q(X), { onClick: V })
164
+ ]),
165
+ _: 1
166
+ }, 8, ["value"])
167
+ ]),
168
+ _: 1
169
+ }),
170
+ t(r, {
171
+ label: "顺序号",
172
+ name: "seqNo"
173
+ }, {
174
+ default: a(() => [
175
+ t(E, {
176
+ value: l.seqNo,
177
+ "onUpdate:value": e[4] || (e[4] = (o) => l.seqNo = o),
178
+ placeholder: "顺序号"
179
+ }, null, 8, ["value"])
180
+ ]),
181
+ _: 1
182
+ }),
183
+ t(r, { label: "访问路径" }, {
184
+ default: a(() => [
185
+ t(s, {
186
+ value: l.path,
187
+ "onUpdate:value": e[5] || (e[5] = (o) => l.path = o),
188
+ placeholder: "访问路径"
189
+ }, null, 8, ["value"])
190
+ ]),
191
+ _: 1
192
+ }),
193
+ t(r, { label: "模板文件" }, {
194
+ default: a(() => [
195
+ t(s, {
196
+ value: l.component,
197
+ "onUpdate:value": e[6] || (e[6] = (o) => l.component = o),
198
+ placeholder: "@/epp/module/viewName"
199
+ }, null, 8, ["value"])
200
+ ]),
201
+ _: 1
202
+ }),
203
+ t(r, { label: "是否显示" }, {
204
+ default: a(() => [
205
+ t(P, {
206
+ value: l.state,
207
+ "onUpdate:value": e[7] || (e[7] = (o) => l.state = o)
208
+ }, {
209
+ default: a(() => [
210
+ t(S, { value: "1" }, {
211
+ default: a(() => e[12] || (e[12] = [
212
+ y("显示")
213
+ ])),
214
+ _: 1
215
+ }),
216
+ t(S, { value: "0" }, {
217
+ default: a(() => e[13] || (e[13] = [
218
+ y("隐藏")
219
+ ])),
220
+ _: 1
221
+ })
222
+ ]),
223
+ _: 1
224
+ }, 8, ["value"])
225
+ ]),
226
+ _: 1
227
+ }),
228
+ t(r, { label: "打开方式" }, {
229
+ default: a(() => [
230
+ t(T, {
231
+ checked: l.target,
232
+ "onUpdate:checked": e[8] || (e[8] = (o) => l.target = o),
233
+ "checked-children": "新开窗口",
234
+ "un-checked-children": "内部窗口"
235
+ }, null, 8, ["checked"])
236
+ ]),
237
+ _: 1
238
+ }),
239
+ t(r, { label: "描述" }, {
240
+ default: a(() => [
241
+ t(s, {
242
+ value: l.remark,
243
+ "onUpdate:value": e[9] || (e[9] = (o) => l.remark = o),
244
+ placeholder: "描述"
245
+ }, null, 8, ["value"])
246
+ ]),
247
+ _: 1
248
+ })
249
+ ]),
250
+ _: 1
251
+ }),
252
+ t(C, { span: 9 }, {
253
+ default: a(() => [
254
+ t(q(te), {
255
+ modelValue: p.value,
256
+ "onUpdate:modelValue": e[10] || (e[10] = (o) => p.value = o)
257
+ }, null, 8, ["modelValue"])
258
+ ]),
259
+ _: 1
260
+ })
261
+ ]),
262
+ _: 1
263
+ })
264
+ ]),
265
+ _: 1
266
+ }, 8, ["model"]),
267
+ t(Q, {
268
+ visible: i.value.icon,
269
+ onSuccess: A,
270
+ onCancel: e[11] || (e[11] = (o) => i.value.icon = !1)
271
+ }, null, 8, ["visible"])
272
+ ]),
273
+ _: 1
274
+ }, 8, ["visible", "confirm-loading"]);
275
+ };
276
+ }
277
+ });
278
+ export {
279
+ se as default
280
+ };
@@ -0,0 +1,133 @@
1
+ import { defineComponent as _, resolveComponent as s, openBlock as a, createBlock as d, withCtx as l, createVNode as n, createTextVNode as o, toDisplayString as m, resolveDynamicComponent as C, createCommentVNode as r, createElementVNode as c, unref as f, createElementBlock as y, Fragment as k } from "vue";
2
+ import { ClickCopy as b } from "@since2006/components";
3
+ const v = { style: { color: "#a6a6a6", "margin-left": "4px" } }, D = /* @__PURE__ */ _({
4
+ __name: "ModuleDetail",
5
+ props: {
6
+ module: {}
7
+ },
8
+ setup(N) {
9
+ return (e, u) => {
10
+ const t = s("a-descriptions-item"), p = s("a-tag"), g = s("a-descriptions");
11
+ return a(), d(g, {
12
+ bordered: "",
13
+ column: 1,
14
+ labelStyle: { width: "140px", textAlign: "center" }
15
+ }, {
16
+ default: l(() => [
17
+ n(t, { label: "模块名称" }, {
18
+ default: l(() => [
19
+ o(m(e.module.name), 1)
20
+ ]),
21
+ _: 1
22
+ }),
23
+ n(t, { label: "文档类别" }, {
24
+ default: l(() => {
25
+ var i;
26
+ return [
27
+ o(m((i = e.module.cate) == null ? void 0 : i.name), 1)
28
+ ];
29
+ }),
30
+ _: 1
31
+ }),
32
+ n(t, { label: "模块图标" }, {
33
+ default: l(() => [
34
+ e.module.icon ? (a(), d(C(e.module.icon), {
35
+ key: 0,
36
+ style: { "font-size": "16px" }
37
+ })) : r("", !0),
38
+ c("span", v, m(e.module.icon), 1)
39
+ ]),
40
+ _: 1
41
+ }),
42
+ n(t, { label: "访问路径" }, {
43
+ default: l(() => [
44
+ o(m(e.module.path) + " ", 1),
45
+ e.module.path ? (a(), d(f(b), {
46
+ key: 0,
47
+ value: e.module.path
48
+ }, null, 8, ["value"])) : r("", !0)
49
+ ]),
50
+ _: 1
51
+ }),
52
+ n(t, { label: "模板文件" }, {
53
+ default: l(() => [
54
+ o(m(e.module.component) + " ", 1),
55
+ e.module.component ? (a(), d(f(b), {
56
+ key: 0,
57
+ value: e.module.component
58
+ }, null, 8, ["value"])) : r("", !0)
59
+ ]),
60
+ _: 1
61
+ }),
62
+ n(t, { label: "打开方式" }, {
63
+ default: l(() => [
64
+ e.module.target != null ? (a(), y(k, { key: 0 }, [
65
+ e.module.target === 1 ? (a(), d(p, {
66
+ key: 0,
67
+ color: "red"
68
+ }, {
69
+ default: l(() => u[0] || (u[0] = [
70
+ o("新开窗口")
71
+ ])),
72
+ _: 1
73
+ })) : (a(), d(p, { key: 1 }, {
74
+ default: l(() => u[1] || (u[1] = [
75
+ o("默认")
76
+ ])),
77
+ _: 1
78
+ }))
79
+ ], 64)) : r("", !0)
80
+ ]),
81
+ _: 1
82
+ }),
83
+ n(t, { label: "排序" }, {
84
+ default: l(() => [
85
+ o(m(e.module.seqNo), 1)
86
+ ]),
87
+ _: 1
88
+ }),
89
+ n(t, { label: "是否显示" }, {
90
+ default: l(() => [
91
+ e.module.state ? (a(), y(k, { key: 0 }, [
92
+ e.module.state === "1" ? (a(), d(p, {
93
+ key: 0,
94
+ color: "green"
95
+ }, {
96
+ default: l(() => u[2] || (u[2] = [
97
+ o("显示")
98
+ ])),
99
+ _: 1
100
+ })) : (a(), d(p, {
101
+ key: 1,
102
+ color: "red"
103
+ }, {
104
+ default: l(() => u[3] || (u[3] = [
105
+ o("隐藏")
106
+ ])),
107
+ _: 1
108
+ }))
109
+ ], 64)) : r("", !0)
110
+ ]),
111
+ _: 1
112
+ }),
113
+ n(t, { label: "访问权限" }, {
114
+ default: l(() => [
115
+ o(m(e.module.permsSummary), 1)
116
+ ]),
117
+ _: 1
118
+ }),
119
+ n(t, { label: "描述" }, {
120
+ default: l(() => [
121
+ o(m(e.module.remark), 1)
122
+ ]),
123
+ _: 1
124
+ })
125
+ ]),
126
+ _: 1
127
+ });
128
+ };
129
+ }
130
+ });
131
+ export {
132
+ D as default
133
+ };
@@ -0,0 +1,4 @@
1
+ import f from "./ModuleDetail.vue.js";
2
+ export {
3
+ f as default
4
+ };
@@ -0,0 +1,7 @@
1
+ import o from "./ModuleEdit.vue2.js";
2
+ /* empty css */
3
+ import t from "../../../_virtual/_plugin-vue_export-helper.js";
4
+ const e = /* @__PURE__ */ t(o, [["__scopeId", "data-v-266daf0e"]]);
5
+ export {
6
+ e as default
7
+ };
@@ -0,0 +1,283 @@
1
+ import { defineComponent as G, ref as i, reactive as H, watch as J, resolveComponent as r, openBlock as U, createBlock as q, withCtx as n, createVNode as t, resolveDynamicComponent as K, unref as N, createTextVNode as h } from "vue";
2
+ import Q from "./icon/IconSelectorModal.vue.js";
3
+ import { message as W } from "ant-design-vue";
4
+ import { SearchOutlined as X } from "@ant-design/icons-vue";
5
+ import { getModule as Y, getModules as Z, getDocs as ee, updateModule as te } from "./api.js";
6
+ import { PermPanel as le } from "@since2006/components";
7
+ const de = /* @__PURE__ */ G({
8
+ __name: "ModuleEdit",
9
+ props: {
10
+ open: {
11
+ type: Boolean,
12
+ default: !1
13
+ },
14
+ moduleId: {
15
+ type: String,
16
+ required: !0
17
+ }
18
+ },
19
+ emits: ["update:open", "success", "cancel"],
20
+ setup(_, { emit: y }) {
21
+ const m = _, b = i(), f = i(!1), g = i([]), I = i([]), p = i([]), c = i({
22
+ icon: !1
23
+ }), w = {
24
+ id: "",
25
+ cateId: "",
26
+ parentId: "",
27
+ name: "",
28
+ icon: "",
29
+ path: "",
30
+ component: "",
31
+ seqNo: "",
32
+ remark: "",
33
+ state: "0",
34
+ target: !1,
35
+ permissionSummary: ""
36
+ }, l = H({ ...w }), x = {
37
+ name: [{ required: !0, message: "请填写模块名称" }],
38
+ seqNo: [{ required: !0, type: "number", message: "请填写数字类型顺序号" }]
39
+ }, v = y;
40
+ J(
41
+ () => m.open,
42
+ (a) => {
43
+ a && (D(), L());
44
+ }
45
+ );
46
+ const D = () => {
47
+ Object.assign(l, w), p.value = [];
48
+ }, O = (a, e) => e.componentOptions.children[0].text.toLowerCase().indexOf(a.toLowerCase()) >= 0, L = () => {
49
+ Y(m.moduleId).then((a) => {
50
+ const e = a.result;
51
+ e.target = e.target === 1, Object.assign(l, a.result), p.value = [...a.result.permissions.map((d) => d.id)];
52
+ }), Z().then((a) => {
53
+ const e = [];
54
+ k(e, a.result, [m.moduleId]), g.value = e;
55
+ }), ee().then((a) => {
56
+ I.value = F(a.result);
57
+ });
58
+ }, V = () => {
59
+ c.value.icon = !0;
60
+ }, E = (a) => {
61
+ c.value.icon = !1, l.icon = a;
62
+ }, M = () => {
63
+ b.value.validateFields().then(() => {
64
+ f.value = !0;
65
+ const a = {
66
+ ...l,
67
+ target: l.target ? 1 : 0,
68
+ permIds: p.value,
69
+ seqNo: parseInt(l.seqNo)
70
+ };
71
+ te(a).then((e) => {
72
+ e.code === 200 && (W.success("编辑模块成功"), v("update:open", !1), v("success", e.result.id, e.result.parentId, e.result.srcParentId));
73
+ });
74
+ }).finally(() => {
75
+ f.value = !1;
76
+ });
77
+ }, B = () => {
78
+ v("update:open", !1);
79
+ }, F = (a) => a.map((e) => ({
80
+ value: e.id,
81
+ label: e.name
82
+ })), k = (a, e, d) => {
83
+ e && e.forEach((u) => {
84
+ if (!d.includes(u.id)) {
85
+ const s = { value: u.id, title: u.name, children: [] };
86
+ k(s.children, u.children, d), a.push(s);
87
+ }
88
+ });
89
+ };
90
+ return (a, e) => {
91
+ const d = r("a-tree-select"), u = r("a-form-item"), s = r("a-input"), P = r("a-select"), R = r("a-input-number"), S = r("a-radio"), j = r("a-radio-group"), A = r("a-switch"), C = r("a-col"), T = r("a-row"), $ = r("a-form"), z = r("a-modal");
92
+ return U(), q(z, {
93
+ title: "编辑系统模块",
94
+ width: 800,
95
+ visible: _.open,
96
+ "mask-closable": !1,
97
+ "confirm-loading": f.value,
98
+ "destroy-on-close": "",
99
+ onOk: M,
100
+ onCancel: B
101
+ }, {
102
+ default: n(() => [
103
+ t($, {
104
+ ref_key: "formRef",
105
+ ref: b,
106
+ model: l,
107
+ rules: x,
108
+ "label-col": { span: 5 },
109
+ "wrapper-col": { span: 15 }
110
+ }, {
111
+ default: n(() => [
112
+ t(T, null, {
113
+ default: n(() => [
114
+ t(C, { span: 15 }, {
115
+ default: n(() => [
116
+ t(u, { label: "上级模块" }, {
117
+ default: n(() => [
118
+ t(d, {
119
+ value: l.parentId,
120
+ "onUpdate:value": e[0] || (e[0] = (o) => l.parentId = o),
121
+ treeData: g.value,
122
+ treeDefaultExpandAll: "",
123
+ allowClear: ""
124
+ }, null, 8, ["value", "treeData"])
125
+ ]),
126
+ _: 1
127
+ }),
128
+ t(u, {
129
+ label: "模块名称",
130
+ name: "name"
131
+ }, {
132
+ default: n(() => [
133
+ t(s, {
134
+ value: l.name,
135
+ "onUpdate:value": e[1] || (e[1] = (o) => l.name = o),
136
+ placeholder: "模块名称"
137
+ }, null, 8, ["value"])
138
+ ]),
139
+ _: 1
140
+ }),
141
+ t(u, { label: "文档类别" }, {
142
+ default: n(() => [
143
+ t(P, {
144
+ value: l.cateId,
145
+ "onUpdate:value": e[2] || (e[2] = (o) => l.cateId = o),
146
+ "show-search": "",
147
+ "option-filter-prop": "children",
148
+ "filter-option": O,
149
+ options: I.value,
150
+ allowClear: ""
151
+ }, null, 8, ["value", "options"])
152
+ ]),
153
+ _: 1
154
+ }),
155
+ t(u, { label: "模块图标" }, {
156
+ default: n(() => [
157
+ t(s, {
158
+ value: l.icon,
159
+ "onUpdate:value": e[3] || (e[3] = (o) => l.icon = o),
160
+ placeholder: "点击右侧按钮选择图标"
161
+ }, {
162
+ prefix: n(() => [
163
+ (U(), q(K(l.icon), { style: { color: "#108b16" } }))
164
+ ]),
165
+ addonAfter: n(() => [
166
+ t(N(X), { onClick: V })
167
+ ]),
168
+ _: 1
169
+ }, 8, ["value"])
170
+ ]),
171
+ _: 1
172
+ }),
173
+ t(u, {
174
+ label: "顺序号",
175
+ name: "seqNo"
176
+ }, {
177
+ default: n(() => [
178
+ t(R, {
179
+ value: l.seqNo,
180
+ "onUpdate:value": e[4] || (e[4] = (o) => l.seqNo = o),
181
+ placeholder: "顺序号"
182
+ }, null, 8, ["value"])
183
+ ]),
184
+ _: 1
185
+ }),
186
+ t(u, { label: "访问路径" }, {
187
+ default: n(() => [
188
+ t(s, {
189
+ value: l.path,
190
+ "onUpdate:value": e[5] || (e[5] = (o) => l.path = o),
191
+ placeholder: "访问路径"
192
+ }, null, 8, ["value"])
193
+ ]),
194
+ _: 1
195
+ }),
196
+ t(u, { label: "模板文件" }, {
197
+ default: n(() => [
198
+ t(s, {
199
+ value: l.component,
200
+ "onUpdate:value": e[6] || (e[6] = (o) => l.component = o),
201
+ placeholder: "@/epp/module/viewName"
202
+ }, null, 8, ["value"])
203
+ ]),
204
+ _: 1
205
+ }),
206
+ t(u, { label: "是否显示" }, {
207
+ default: n(() => [
208
+ t(j, {
209
+ value: l.state,
210
+ "onUpdate:value": e[7] || (e[7] = (o) => l.state = o)
211
+ }, {
212
+ default: n(() => [
213
+ t(S, { value: "1" }, {
214
+ default: n(() => e[12] || (e[12] = [
215
+ h("显示")
216
+ ])),
217
+ _: 1
218
+ }),
219
+ t(S, { value: "0" }, {
220
+ default: n(() => e[13] || (e[13] = [
221
+ h("隐藏")
222
+ ])),
223
+ _: 1
224
+ })
225
+ ]),
226
+ _: 1
227
+ }, 8, ["value"])
228
+ ]),
229
+ _: 1
230
+ }),
231
+ t(u, { label: "打开方式" }, {
232
+ default: n(() => [
233
+ t(A, {
234
+ checked: l.target,
235
+ "onUpdate:checked": e[8] || (e[8] = (o) => l.target = o),
236
+ "checked-children": "新开窗口",
237
+ "un-checked-children": "内部窗口"
238
+ }, null, 8, ["checked"])
239
+ ]),
240
+ _: 1
241
+ }),
242
+ t(u, { label: "描述" }, {
243
+ default: n(() => [
244
+ t(s, {
245
+ value: l.remark,
246
+ "onUpdate:value": e[9] || (e[9] = (o) => l.remark = o),
247
+ placeholder: "描述"
248
+ }, null, 8, ["value"])
249
+ ]),
250
+ _: 1
251
+ })
252
+ ]),
253
+ _: 1
254
+ }),
255
+ t(C, { span: 9 }, {
256
+ default: n(() => [
257
+ t(N(le), {
258
+ modelValue: p.value,
259
+ "onUpdate:modelValue": e[10] || (e[10] = (o) => p.value = o)
260
+ }, null, 8, ["modelValue"])
261
+ ]),
262
+ _: 1
263
+ })
264
+ ]),
265
+ _: 1
266
+ })
267
+ ]),
268
+ _: 1
269
+ }, 8, ["model"]),
270
+ t(Q, {
271
+ visible: c.value.icon,
272
+ onSuccess: E,
273
+ onCancel: e[11] || (e[11] = (o) => c.value.icon = !1)
274
+ }, null, 8, ["visible"])
275
+ ]),
276
+ _: 1
277
+ }, 8, ["visible", "confirm-loading"]);
278
+ };
279
+ }
280
+ });
281
+ export {
282
+ de as default
283
+ };
@@ -0,0 +1,218 @@
1
+ import { defineComponent as J, ref as f, reactive as T, resolveComponent as d, openBlock as w, createElementBlock as Q, createVNode as n, withCtx as a, createElementVNode as v, unref as y, createTextVNode as g, withDirectives as x, vShow as A, createBlock as W, resolveDynamicComponent as X } from "vue";
2
+ import { message as Y } from "ant-design-vue";
3
+ import { getModulesNoCache as C, getModule as Z, deleteModule as ee } from "./api.js";
4
+ import { mapTreeData as k } from "./utils.js";
5
+ import { PlusOutlined as K, EditOutlined as oe, DeleteOutlined as te } from "@ant-design/icons-vue";
6
+ import ne from "./ModuleDetail.vue.js";
7
+ import le from "./ModuleAdd.vue.js";
8
+ import ae from "./ModuleEdit.vue.js";
9
+ const de = { class: "ant-pro-table-list-toolbar" }, se = { class: "ant-pro-table-list-toolbar-container" }, ue = { class: "ant-pro-table-list-toolbar-right" }, ge = /* @__PURE__ */ J({
10
+ __name: "ModuleIndex",
11
+ setup(re) {
12
+ const L = f(), s = f([]), b = f([]), r = f([]), u = T({
13
+ id: "",
14
+ cateId: "",
15
+ parentId: "",
16
+ icon: "",
17
+ component: "",
18
+ path: "",
19
+ seqNo: "",
20
+ remark: "",
21
+ permsSummary: ""
22
+ }), E = f(!0), i = T({
23
+ openAdd: !1,
24
+ openEdit: !1
25
+ }), M = f(!1), O = () => {
26
+ C().then((o) => {
27
+ r.value = k(o.result), h(r.value[0].key);
28
+ });
29
+ }, N = (o) => {
30
+ s.value = o;
31
+ }, B = (o) => new Promise((e) => {
32
+ if (o.dataRef.children) {
33
+ e("当前节点没有子模块");
34
+ return;
35
+ }
36
+ C(o.dataRef.key).then((t) => {
37
+ o.dataRef.children = k(t.result), r.value = [...r.value], e("获取模块数据成功");
38
+ });
39
+ }), V = (o, e) => {
40
+ const t = e.node.dataRef, l = s.value.includes(t.key);
41
+ if (t.isLeaf || (e.selected ? l || s.value.push(t.key) : l && (s.value = s.value.filter((c) => c !== t.key))), o.length === 0)
42
+ return;
43
+ const p = o[0];
44
+ h(p);
45
+ }, h = (o) => {
46
+ E.value = !0, Z(o).then((e) => {
47
+ Object.assign(u, e.result), E.value = !1;
48
+ }).catch((e) => {
49
+ console.log(e);
50
+ });
51
+ }, U = () => {
52
+ M.value = !0, i.openAdd = !0;
53
+ }, j = () => {
54
+ M.value = !1, i.openAdd = !0;
55
+ }, q = (o) => {
56
+ m(o);
57
+ }, P = () => {
58
+ i.openEdit = !0;
59
+ }, $ = (o, e, t) => {
60
+ h(o), e === t || m(t), m(e);
61
+ }, z = () => {
62
+ ee(u.id).then((o) => {
63
+ Y.success("删除成功"), m(o.result.parentId);
64
+ });
65
+ }, m = (o) => {
66
+ C(o).then((e) => {
67
+ o ? D(r.value, o, k(e.result)) : r.value = k(e.result);
68
+ });
69
+ }, D = (o, e, t) => {
70
+ o.forEach((l) => {
71
+ if (l.key === e) {
72
+ l.isLeaf = t.length === 0;
73
+ const p = S([l], 0);
74
+ b.value = b.value.filter((c) => !p.includes(c)), s.value = s.value.filter((c) => !p.includes(c)), l.children = t;
75
+ } else
76
+ l.children && D(l.children, e, t);
77
+ });
78
+ }, S = (o, e) => {
79
+ let t = [];
80
+ return o.forEach((l) => {
81
+ e > 0 && t.push(l.key), l.children && (t = t.concat(S(l.children, ++e)));
82
+ }), t;
83
+ };
84
+ return O(), (o, e) => {
85
+ const t = d("a-button"), l = d("a-popconfirm"), p = d("a-button-group"), c = d("a-space"), F = d("a-tree"), R = d("a-col"), G = d("a-skeleton"), H = d("a-row"), I = d("a-card");
86
+ return w(), Q("div", null, [
87
+ n(I, {
88
+ "body-style": { padding: "0 20px 20px 10px" },
89
+ ref_key: "fusRef",
90
+ ref: L
91
+ }, {
92
+ default: a(() => [
93
+ v("div", de, [
94
+ v("div", se, [
95
+ e[6] || (e[6] = v("div", { class: "ant-pro-table-list-toolbar-left" }, [
96
+ v("div", { class: "ant-pro-table-list-toolbar-title" }, "模块配置")
97
+ ], -1)),
98
+ v("div", ue, [
99
+ n(c, { align: "center" }, {
100
+ default: a(() => [
101
+ n(p, null, {
102
+ default: a(() => [
103
+ n(t, { onClick: U }, {
104
+ default: a(() => [
105
+ n(y(K)),
106
+ e[2] || (e[2] = g(" 添加根模块 "))
107
+ ]),
108
+ _: 1
109
+ }),
110
+ x(n(t, { onClick: j }, {
111
+ default: a(() => [
112
+ n(y(K)),
113
+ e[3] || (e[3] = g(" 添加子模块 "))
114
+ ]),
115
+ _: 1
116
+ }, 512), [
117
+ [A, u.id]
118
+ ]),
119
+ x(n(t, { onClick: P }, {
120
+ default: a(() => [
121
+ n(y(oe)),
122
+ e[4] || (e[4] = g(" 修改模块 "))
123
+ ]),
124
+ _: 1
125
+ }, 512), [
126
+ [A, u.id]
127
+ ]),
128
+ n(l, {
129
+ title: "是否确认删除模块?",
130
+ onConfirm: z
131
+ }, {
132
+ default: a(() => [
133
+ x(n(t, { danger: "" }, {
134
+ default: a(() => [
135
+ n(y(te)),
136
+ e[5] || (e[5] = g(" 删除模块 "))
137
+ ]),
138
+ _: 1
139
+ }, 512), [
140
+ [A, u.id]
141
+ ])
142
+ ]),
143
+ _: 1
144
+ })
145
+ ]),
146
+ _: 1
147
+ })
148
+ ]),
149
+ _: 1
150
+ })
151
+ ])
152
+ ])
153
+ ]),
154
+ n(H, null, {
155
+ default: a(() => [
156
+ n(R, {
157
+ sm: 5,
158
+ md: 4
159
+ }, {
160
+ default: a(() => [
161
+ n(F, {
162
+ showIcon: !0,
163
+ expandedKeys: s.value,
164
+ loadedKeys: b.value,
165
+ treeData: r.value,
166
+ onExpand: N,
167
+ loadData: B,
168
+ onSelect: V
169
+ }, {
170
+ icon: a((_) => [
171
+ (w(), W(X(_.iconName)))
172
+ ]),
173
+ _: 1
174
+ }, 8, ["expandedKeys", "loadedKeys", "treeData"])
175
+ ]),
176
+ _: 1
177
+ }),
178
+ n(R, {
179
+ sm: 19,
180
+ md: 20
181
+ }, {
182
+ default: a(() => [
183
+ n(G, { loading: E.value }, {
184
+ default: a(() => [
185
+ n(ne, { module: u }, null, 8, ["module"])
186
+ ]),
187
+ _: 1
188
+ }, 8, ["loading"])
189
+ ]),
190
+ _: 1
191
+ })
192
+ ]),
193
+ _: 1
194
+ })
195
+ ]),
196
+ _: 1
197
+ }, 512),
198
+ n(le, {
199
+ ref: "moduleAdd",
200
+ open: i.openAdd,
201
+ "onUpdate:open": e[0] || (e[0] = (_) => i.openAdd = _),
202
+ "parent-id": M.value ? null : u.id,
203
+ onSuccess: q
204
+ }, null, 8, ["open", "parent-id"]),
205
+ n(ae, {
206
+ ref: "moduleEdit",
207
+ open: i.openEdit,
208
+ "onUpdate:open": e[1] || (e[1] = (_) => i.openEdit = _),
209
+ "module-id": u.id,
210
+ onSuccess: $
211
+ }, null, 8, ["open", "module-id"])
212
+ ]);
213
+ };
214
+ }
215
+ });
216
+ export {
217
+ ge as default
218
+ };
@@ -0,0 +1,4 @@
1
+ import f from "./ModuleIndex.vue.js";
2
+ export {
3
+ f as default
4
+ };
@@ -0,0 +1,14 @@
1
+ import { http as t } from "@since2006/utils";
2
+ const l = () => t.get("/api/1/workflow/cate/get_doc_list.json"), d = (e) => t.post("/api/v2/module/create_module", e), r = (e) => t.get("/api/v2/module/get_module", { params: { id: e } }), s = () => t.get("/api/v2/module/get_cache_modules"), a = (e = null) => {
3
+ const o = {};
4
+ return e && (o.parentId = e), t.get("/api/1/module/get_modules_nocache.json", { params: o });
5
+ }, n = (e) => t.post("/api/v2/module/delete_module", { id: e }), c = (e) => t.post("/api/v2/module/update_module", e);
6
+ export {
7
+ d as createModule,
8
+ n as deleteModule,
9
+ l as getDocs,
10
+ r as getModule,
11
+ s as getModules,
12
+ a as getModulesNoCache,
13
+ c as updateModule
14
+ };
@@ -0,0 +1,7 @@
1
+ import o from "./IconSelectorModal.vue2.js";
2
+ /* empty css */
3
+ import t from "../../../../_virtual/_plugin-vue_export-helper.js";
4
+ const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-33554e43"]]);
5
+ export {
6
+ m as default
7
+ };
@@ -0,0 +1,39 @@
1
+ import { defineComponent as i, ref as r, resolveComponent as m, openBlock as f, createBlock as p, withCtx as u, createVNode as d, unref as _ } from "vue";
2
+ import { IconSelect as v } from "@since2006/components";
3
+ const x = /* @__PURE__ */ i({
4
+ __name: "IconSelectorModal",
5
+ props: {
6
+ visible: {
7
+ default: !1
8
+ }
9
+ },
10
+ emits: ["success", "cancel"],
11
+ setup(c, { emit: n }) {
12
+ const t = r(""), o = n, s = (e) => {
13
+ t.value = e, o("success", e);
14
+ }, l = () => {
15
+ o("cancel");
16
+ };
17
+ return (e, h) => {
18
+ const a = m("a-modal");
19
+ return f(), p(a, {
20
+ visible: c.visible,
21
+ width: 900,
22
+ footer: null,
23
+ onCancel: l
24
+ }, {
25
+ default: u(() => [
26
+ d(_(v), {
27
+ "class-name": "icon-selector",
28
+ "icon-font-size": "24px",
29
+ onChange: s
30
+ })
31
+ ]),
32
+ _: 1
33
+ }, 8, ["visible"]);
34
+ };
35
+ }
36
+ });
37
+ export {
38
+ x as default
39
+ };
@@ -0,0 +1,9 @@
1
+ import a from "./ModuleIndex.vue.js";
2
+ const s = (n) => (n.install = (t) => {
3
+ const e = n.name || n.__name;
4
+ t.component(e, n);
5
+ }, n), o = s(a);
6
+ export {
7
+ o as ModuleIndex,
8
+ o as default
9
+ };
@@ -0,0 +1,11 @@
1
+ const n = (a) => a ? a.map((e) => ({
2
+ key: e.id,
3
+ title: e.name,
4
+ isLeaf: !e.hasChildren,
5
+ iconName: e.icon,
6
+ type: e.type,
7
+ seqNo: e.seqNo
8
+ })) : [];
9
+ export {
10
+ n as mapTreeData
11
+ };
@@ -1,4 +1,6 @@
1
- import { StatusIndex as o } from "./app/system/index.js";
1
+ import { StatusIndex as r } from "./app/system/index.js";
2
+ import { ModuleIndex as x } from "./app/module/index.js";
2
3
  export {
3
- o as StatusIndex
4
+ x as ModuleIndex,
5
+ r as StatusIndex
4
6
  };
package/dist/es/style.css CHANGED
@@ -1 +1 @@
1
- .large-text[data-v-1f96ab02]{font-size:16px}.float-right[data-v-1f96ab02]{float:right}.margin-block[data-v-1f96ab02]{margin-top:14px}
1
+ .large-text[data-v-1f96ab02]{font-size:16px}.float-right[data-v-1f96ab02]{float:right}.margin-block[data-v-1f96ab02]{margin-top:14px}.icon-selector deep(ul) li.active[data-v-33554e43],.icon-selector deep(ul) li[data-v-33554e43]:hover{border-radius:2px;border-color:#4a4a48;background-color:#4a4a48;color:#fff;transition:all .3s;box-shadow:none}.icon-selector deep(ul) i[data-v-33554e43]{font-size:1.5rem;border:1px solid #f1f1f1;padding:.02rem;margin:.03rem;cursor:pointer}.ant-form[data-v-cd92ee31]{padding-top:20px}.permission-tree[data-v-cd92ee31],.permission-tree[data-v-266daf0e]{overflow-y:auto;overflow-x:hidden;margin-top:10px}
package/dist/lib/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./src/index.js"),u=require("./src/app/system/index.js"),i={install:t=>{for(let n in e)t.use(e[n])}};exports.StatusIndex=u.StatusIndex;exports.default=i;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./src/index.js"),u=require("./src/app/system/index.js"),d=require("./src/app/module/index.js"),i={install:t=>{for(let n in e)t.use(e[n])}};exports.StatusIndex=u.StatusIndex;exports.ModuleIndex=d.ModuleIndex;exports.default=i;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./ModuleAdd.vue2.js");;/* empty css */const u=require("../../../_virtual/_plugin-vue_export-helper.js"),t=u.default(e.default,[["__scopeId","data-v-cd92ee31"]]);exports.default=t;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),P=require("./icon/IconSelectorModal.vue.js"),R=require("ant-design-vue"),j=require("@ant-design/icons-vue"),m=require("./api.js"),E=require("@since2006/components"),$=e.defineComponent({__name:"ModuleAdd",props:{open:{type:Boolean,default:!1},parentId:{type:String,default:null}},emits:["update:open","success","cancel"],setup(v,{emit:x}){const c=v,f=e.ref(),s=e.ref([]),i=e.ref(!1),C=e.ref([]),N=e.ref([]),u=e.ref({icon:!1}),_={id:"",cateId:"",parentId:"",name:"",icon:"",path:"",component:"",seqNo:"",remark:"",state:"0",target:!1,permissionSummary:""},o=e.reactive({..._}),b={name:[{required:!0,message:"请填写模块名称"}],seqNo:[{required:!0,type:"number",message:"请填写数字类型顺序号"}]},p=x;e.watch(()=>c.open,l=>{l&&(g(),q())});const g=()=>{Object.assign(o,_),s.value=[]},k=(l,t)=>t.componentOptions.children[0].text.toLowerCase().indexOf(l.toLowerCase())>=0,q=()=>{m.getModules().then(l=>{const t=[];V(t,l.result,[]),C.value=t,c.parentId&&(o.parentId=c.parentId)}),m.getDocs().then(l=>{N.value=D(l.result)})},I=()=>{u.value.icon=!0},S=l=>{u.value.icon=!1,o.icon=l},U=()=>{f.value.validateFields().then(()=>{i.value=!0;const l={...o,target:o.target?1:0,permIds:s.value,seqNo:parseInt(o.seqNo)};m.createModule(l).then(t=>{R.message.success("添加模块成功"),p("update:open",!1),p("success",t.result.parentId)})}).finally(l=>{i.value=!1})},y=()=>{p("update:open",!1)},V=(l,t,d)=>{t&&t.forEach(n=>{if(!d.includes(n.id)){const r={value:n.id,title:n.name,children:[]};V(r.children,n.children,d),l.push(r)}})},D=l=>l.map(t=>({value:t.id,label:t.name}));return(l,t)=>{const d=e.resolveComponent("a-tree-select"),n=e.resolveComponent("a-form-item"),r=e.resolveComponent("a-input"),O=e.resolveComponent("a-select"),L=e.resolveComponent("a-input-number"),w=e.resolveComponent("a-radio"),M=e.resolveComponent("a-radio-group"),B=e.resolveComponent("a-switch"),h=e.resolveComponent("a-col"),A=e.resolveComponent("a-row"),T=e.resolveComponent("a-form"),F=e.resolveComponent("a-modal");return e.openBlock(),e.createBlock(F,{title:"添加系统模块",width:800,visible:v.open,"mask-closable":!1,"confirm-loading":i.value,"destroy-on-close":"",onOk:U,onCancel:y},{default:e.withCtx(()=>[e.createVNode(T,{ref_key:"formRef",ref:f,model:o,rules:b,"label-col":{span:5},"wrapper-col":{span:15}},{default:e.withCtx(()=>[e.createVNode(A,null,{default:e.withCtx(()=>[e.createVNode(h,{span:15},{default:e.withCtx(()=>[e.createVNode(n,{label:"上级模块"},{default:e.withCtx(()=>[e.createVNode(d,{value:o.parentId,"onUpdate:value":t[0]||(t[0]=a=>o.parentId=a),treeData:C.value,treeDefaultExpandAll:"",allowClear:""},null,8,["value","treeData"])]),_:1}),e.createVNode(n,{label:"模块名称",name:"name"},{default:e.withCtx(()=>[e.createVNode(r,{value:o.name,"onUpdate:value":t[1]||(t[1]=a=>o.name=a),placeholder:"模块名称"},null,8,["value"])]),_:1}),e.createVNode(n,{label:"文档类别"},{default:e.withCtx(()=>[e.createVNode(O,{value:o.cateId,"onUpdate:value":t[2]||(t[2]=a=>o.cateId=a),"show-search":"","option-filter-prop":"children","filter-option":k,options:N.value,allowClear:""},null,8,["value","options"])]),_:1}),e.createVNode(n,{label:"模块图标"},{default:e.withCtx(()=>[e.createVNode(r,{value:o.icon,"onUpdate:value":t[3]||(t[3]=a=>o.icon=a),placeholder:"点击右侧按钮选择图标"},{prefix:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.icon),{style:{color:"#108b16"}}))]),addonAfter:e.withCtx(()=>[e.createVNode(e.unref(j.SearchOutlined),{onClick:I})]),_:1},8,["value"])]),_:1}),e.createVNode(n,{label:"顺序号",name:"seqNo"},{default:e.withCtx(()=>[e.createVNode(L,{value:o.seqNo,"onUpdate:value":t[4]||(t[4]=a=>o.seqNo=a),placeholder:"顺序号"},null,8,["value"])]),_:1}),e.createVNode(n,{label:"访问路径"},{default:e.withCtx(()=>[e.createVNode(r,{value:o.path,"onUpdate:value":t[5]||(t[5]=a=>o.path=a),placeholder:"访问路径"},null,8,["value"])]),_:1}),e.createVNode(n,{label:"模板文件"},{default:e.withCtx(()=>[e.createVNode(r,{value:o.component,"onUpdate:value":t[6]||(t[6]=a=>o.component=a),placeholder:"@/epp/module/viewName"},null,8,["value"])]),_:1}),e.createVNode(n,{label:"是否显示"},{default:e.withCtx(()=>[e.createVNode(M,{value:o.state,"onUpdate:value":t[7]||(t[7]=a=>o.state=a)},{default:e.withCtx(()=>[e.createVNode(w,{value:"1"},{default:e.withCtx(()=>t[12]||(t[12]=[e.createTextVNode("显示")])),_:1}),e.createVNode(w,{value:"0"},{default:e.withCtx(()=>t[13]||(t[13]=[e.createTextVNode("隐藏")])),_:1})]),_:1},8,["value"])]),_:1}),e.createVNode(n,{label:"打开方式"},{default:e.withCtx(()=>[e.createVNode(B,{checked:o.target,"onUpdate:checked":t[8]||(t[8]=a=>o.target=a),"checked-children":"新开窗口","un-checked-children":"内部窗口"},null,8,["checked"])]),_:1}),e.createVNode(n,{label:"描述"},{default:e.withCtx(()=>[e.createVNode(r,{value:o.remark,"onUpdate:value":t[9]||(t[9]=a=>o.remark=a),placeholder:"描述"},null,8,["value"])]),_:1})]),_:1}),e.createVNode(h,{span:9},{default:e.withCtx(()=>[e.createVNode(e.unref(E.PermPanel),{modelValue:s.value,"onUpdate:modelValue":t[10]||(t[10]=a=>s.value=a)},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["model"]),e.createVNode(P.default,{visible:u.value.icon,onSuccess:S,onCancel:t[11]||(t[11]=a=>u.value.icon=!1)},null,8,["visible"])]),_:1},8,["visible","confirm-loading"])}}});exports.default=$;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),n=require("@since2006/components"),u={style:{color:"#a6a6a6","margin-left":"4px"}},i=e.defineComponent({__name:"ModuleDetail",props:{module:{}},setup(c){return(t,l)=>{const o=e.resolveComponent("a-descriptions-item"),a=e.resolveComponent("a-tag"),d=e.resolveComponent("a-descriptions");return e.openBlock(),e.createBlock(d,{bordered:"",column:1,labelStyle:{width:"140px",textAlign:"center"}},{default:e.withCtx(()=>[e.createVNode(o,{label:"模块名称"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.module.name),1)]),_:1}),e.createVNode(o,{label:"文档类别"},{default:e.withCtx(()=>{var r;return[e.createTextVNode(e.toDisplayString((r=t.module.cate)==null?void 0:r.name),1)]}),_:1}),e.createVNode(o,{label:"模块图标"},{default:e.withCtx(()=>[t.module.icon?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.module.icon),{key:0,style:{"font-size":"16px"}})):e.createCommentVNode("",!0),e.createElementVNode("span",u,e.toDisplayString(t.module.icon),1)]),_:1}),e.createVNode(o,{label:"访问路径"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.module.path)+" ",1),t.module.path?(e.openBlock(),e.createBlock(e.unref(n.ClickCopy),{key:0,value:t.module.path},null,8,["value"])):e.createCommentVNode("",!0)]),_:1}),e.createVNode(o,{label:"模板文件"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.module.component)+" ",1),t.module.component?(e.openBlock(),e.createBlock(e.unref(n.ClickCopy),{key:0,value:t.module.component},null,8,["value"])):e.createCommentVNode("",!0)]),_:1}),e.createVNode(o,{label:"打开方式"},{default:e.withCtx(()=>[t.module.target!=null?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[t.module.target===1?(e.openBlock(),e.createBlock(a,{key:0,color:"red"},{default:e.withCtx(()=>l[0]||(l[0]=[e.createTextVNode("新开窗口")])),_:1})):(e.openBlock(),e.createBlock(a,{key:1},{default:e.withCtx(()=>l[1]||(l[1]=[e.createTextVNode("默认")])),_:1}))],64)):e.createCommentVNode("",!0)]),_:1}),e.createVNode(o,{label:"排序"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.module.seqNo),1)]),_:1}),e.createVNode(o,{label:"是否显示"},{default:e.withCtx(()=>[t.module.state?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[t.module.state==="1"?(e.openBlock(),e.createBlock(a,{key:0,color:"green"},{default:e.withCtx(()=>l[2]||(l[2]=[e.createTextVNode("显示")])),_:1})):(e.openBlock(),e.createBlock(a,{key:1,color:"red"},{default:e.withCtx(()=>l[3]||(l[3]=[e.createTextVNode("隐藏")])),_:1}))],64)):e.createCommentVNode("",!0)]),_:1}),e.createVNode(o,{label:"访问权限"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.module.permsSummary),1)]),_:1}),e.createVNode(o,{label:"描述"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.module.remark),1)]),_:1})]),_:1})}}});exports.default=i;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./ModuleDetail.vue.js");exports.default=e.default;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./ModuleEdit.vue2.js");;/* empty css */const t=require("../../../_virtual/_plugin-vue_export-helper.js"),u=t.default(e.default,[["__scopeId","data-v-266daf0e"]]);exports.default=u;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),j=require("./icon/IconSelectorModal.vue.js"),F=require("ant-design-vue"),R=require("@ant-design/icons-vue"),c=require("./api.js"),A=require("@since2006/components"),$=e.defineComponent({__name:"ModuleEdit",props:{open:{type:Boolean,default:!1},moduleId:{type:String,required:!0}},emits:["update:open","success","cancel"],setup(v,{emit:b}){const i=v,f=e.ref(),p=e.ref(!1),C=e.ref([]),N=e.ref([]),s=e.ref([]),d=e.ref({icon:!1}),_={id:"",cateId:"",parentId:"",name:"",icon:"",path:"",component:"",seqNo:"",remark:"",state:"0",target:!1,permissionSummary:""},o=e.reactive({..._}),x={name:[{required:!0,message:"请填写模块名称"}],seqNo:[{required:!0,type:"number",message:"请填写数字类型顺序号"}]},m=b;e.watch(()=>i.open,l=>{l&&(g(),k())});const g=()=>{Object.assign(o,_),s.value=[]},q=(l,t)=>t.componentOptions.children[0].text.toLowerCase().indexOf(l.toLowerCase())>=0,k=()=>{c.getModule(i.moduleId).then(l=>{const t=l.result;t.target=t.target===1,Object.assign(o,l.result),s.value=[...l.result.permissions.map(u=>u.id)]}),c.getModules().then(l=>{const t=[];V(t,l.result,[i.moduleId]),C.value=t}),c.getDocs().then(l=>{N.value=D(l.result)})},I=()=>{d.value.icon=!0},S=l=>{d.value.icon=!1,o.icon=l},U=()=>{f.value.validateFields().then(()=>{p.value=!0;const l={...o,target:o.target?1:0,permIds:s.value,seqNo:parseInt(o.seqNo)};c.updateModule(l).then(t=>{t.code===200&&(F.message.success("编辑模块成功"),m("update:open",!1),m("success",t.result.id,t.result.parentId,t.result.srcParentId))})}).finally(()=>{p.value=!1})},y=()=>{m("update:open",!1)},D=l=>l.map(t=>({value:t.id,label:t.name})),V=(l,t,u)=>{t&&t.forEach(n=>{if(!u.includes(n.id)){const r={value:n.id,title:n.name,children:[]};V(r.children,n.children,u),l.push(r)}})};return(l,t)=>{const u=e.resolveComponent("a-tree-select"),n=e.resolveComponent("a-form-item"),r=e.resolveComponent("a-input"),O=e.resolveComponent("a-select"),M=e.resolveComponent("a-input-number"),w=e.resolveComponent("a-radio"),L=e.resolveComponent("a-radio-group"),B=e.resolveComponent("a-switch"),h=e.resolveComponent("a-col"),E=e.resolveComponent("a-row"),P=e.resolveComponent("a-form"),T=e.resolveComponent("a-modal");return e.openBlock(),e.createBlock(T,{title:"编辑系统模块",width:800,visible:v.open,"mask-closable":!1,"confirm-loading":p.value,"destroy-on-close":"",onOk:U,onCancel:y},{default:e.withCtx(()=>[e.createVNode(P,{ref_key:"formRef",ref:f,model:o,rules:x,"label-col":{span:5},"wrapper-col":{span:15}},{default:e.withCtx(()=>[e.createVNode(E,null,{default:e.withCtx(()=>[e.createVNode(h,{span:15},{default:e.withCtx(()=>[e.createVNode(n,{label:"上级模块"},{default:e.withCtx(()=>[e.createVNode(u,{value:o.parentId,"onUpdate:value":t[0]||(t[0]=a=>o.parentId=a),treeData:C.value,treeDefaultExpandAll:"",allowClear:""},null,8,["value","treeData"])]),_:1}),e.createVNode(n,{label:"模块名称",name:"name"},{default:e.withCtx(()=>[e.createVNode(r,{value:o.name,"onUpdate:value":t[1]||(t[1]=a=>o.name=a),placeholder:"模块名称"},null,8,["value"])]),_:1}),e.createVNode(n,{label:"文档类别"},{default:e.withCtx(()=>[e.createVNode(O,{value:o.cateId,"onUpdate:value":t[2]||(t[2]=a=>o.cateId=a),"show-search":"","option-filter-prop":"children","filter-option":q,options:N.value,allowClear:""},null,8,["value","options"])]),_:1}),e.createVNode(n,{label:"模块图标"},{default:e.withCtx(()=>[e.createVNode(r,{value:o.icon,"onUpdate:value":t[3]||(t[3]=a=>o.icon=a),placeholder:"点击右侧按钮选择图标"},{prefix:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.icon),{style:{color:"#108b16"}}))]),addonAfter:e.withCtx(()=>[e.createVNode(e.unref(R.SearchOutlined),{onClick:I})]),_:1},8,["value"])]),_:1}),e.createVNode(n,{label:"顺序号",name:"seqNo"},{default:e.withCtx(()=>[e.createVNode(M,{value:o.seqNo,"onUpdate:value":t[4]||(t[4]=a=>o.seqNo=a),placeholder:"顺序号"},null,8,["value"])]),_:1}),e.createVNode(n,{label:"访问路径"},{default:e.withCtx(()=>[e.createVNode(r,{value:o.path,"onUpdate:value":t[5]||(t[5]=a=>o.path=a),placeholder:"访问路径"},null,8,["value"])]),_:1}),e.createVNode(n,{label:"模板文件"},{default:e.withCtx(()=>[e.createVNode(r,{value:o.component,"onUpdate:value":t[6]||(t[6]=a=>o.component=a),placeholder:"@/epp/module/viewName"},null,8,["value"])]),_:1}),e.createVNode(n,{label:"是否显示"},{default:e.withCtx(()=>[e.createVNode(L,{value:o.state,"onUpdate:value":t[7]||(t[7]=a=>o.state=a)},{default:e.withCtx(()=>[e.createVNode(w,{value:"1"},{default:e.withCtx(()=>t[12]||(t[12]=[e.createTextVNode("显示")])),_:1}),e.createVNode(w,{value:"0"},{default:e.withCtx(()=>t[13]||(t[13]=[e.createTextVNode("隐藏")])),_:1})]),_:1},8,["value"])]),_:1}),e.createVNode(n,{label:"打开方式"},{default:e.withCtx(()=>[e.createVNode(B,{checked:o.target,"onUpdate:checked":t[8]||(t[8]=a=>o.target=a),"checked-children":"新开窗口","un-checked-children":"内部窗口"},null,8,["checked"])]),_:1}),e.createVNode(n,{label:"描述"},{default:e.withCtx(()=>[e.createVNode(r,{value:o.remark,"onUpdate:value":t[9]||(t[9]=a=>o.remark=a),placeholder:"描述"},null,8,["value"])]),_:1})]),_:1}),e.createVNode(h,{span:9},{default:e.withCtx(()=>[e.createVNode(e.unref(A.PermPanel),{modelValue:s.value,"onUpdate:modelValue":t[10]||(t[10]=a=>s.value=a)},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["model"]),e.createVNode(j.default,{visible:d.value.icon,onSuccess:S,onCancel:t[11]||(t[11]=a=>d.value.icon=!1)},null,8,["visible"])]),_:1},8,["visible","confirm-loading"])}}});exports.default=$;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),B=require("ant-design-vue"),f=require("./api.js"),m=require("./utils.js"),v=require("@ant-design/icons-vue"),P=require("./ModuleDetail.vue.js"),j=require("./ModuleAdd.vue.js"),U=require("./ModuleEdit.vue.js"),z={class:"ant-pro-table-list-toolbar"},F={class:"ant-pro-table-list-toolbar-container"},G={class:"ant-pro-table-list-toolbar-right"},H=e.defineComponent({__name:"ModuleIndex",setup(I){const w=e.ref(),a=e.ref([]),_=e.ref([]),r=e.ref([]),d=e.reactive({id:"",cateId:"",parentId:"",icon:"",component:"",path:"",seqNo:"",remark:"",permsSummary:""}),h=e.ref(!0),s=e.reactive({openAdd:!1,openEdit:!1}),C=e.ref(!1),y=()=>{f.getModulesNoCache().then(o=>{r.value=m.mapTreeData(o.result),N(r.value[0].key)})},M=o=>{a.value=o},E=o=>new Promise(t=>{if(o.dataRef.children){t("当前节点没有子模块");return}f.getModulesNoCache(o.dataRef.key).then(n=>{o.dataRef.children=m.mapTreeData(n.result),r.value=[...r.value],t("获取模块数据成功")})}),k=(o,t)=>{const n=t.node.dataRef,l=a.value.includes(n.key);if(n.isLeaf||(t.selected?l||a.value.push(n.key):l&&(a.value=a.value.filter(u=>u!==n.key))),o.length===0)return;const c=o[0];N(c)},N=o=>{h.value=!0,f.getModule(o).then(t=>{Object.assign(d,t.result),h.value=!1}).catch(t=>{console.log(t)})},b=()=>{C.value=!0,s.openAdd=!0},D=()=>{C.value=!1,s.openAdd=!0},T=o=>{i(o)},S=()=>{s.openEdit=!0},A=(o,t,n)=>{N(o),t===n||i(n),i(t)},q=()=>{f.deleteModule(d.id).then(o=>{B.message.success("删除成功"),i(o.result.parentId)})},i=o=>{f.getModulesNoCache(o).then(t=>{o?V(r.value,o,m.mapTreeData(t.result)):r.value=m.mapTreeData(t.result)})},V=(o,t,n)=>{o.forEach(l=>{if(l.key===t){l.isLeaf=n.length===0;const c=x([l],0);_.value=_.value.filter(u=>!c.includes(u)),a.value=a.value.filter(u=>!c.includes(u)),l.children=n}else l.children&&V(l.children,t,n)})},x=(o,t)=>{let n=[];return o.forEach(l=>{t>0&&n.push(l.key),l.children&&(n=n.concat(x(l.children,++t)))}),n};return y(),(o,t)=>{const n=e.resolveComponent("a-button"),l=e.resolveComponent("a-popconfirm"),c=e.resolveComponent("a-button-group"),u=e.resolveComponent("a-space"),R=e.resolveComponent("a-tree"),g=e.resolveComponent("a-col"),K=e.resolveComponent("a-skeleton"),O=e.resolveComponent("a-row"),L=e.resolveComponent("a-card");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(L,{"body-style":{padding:"0 20px 20px 10px"},ref_key:"fusRef",ref:w},{default:e.withCtx(()=>[e.createElementVNode("div",z,[e.createElementVNode("div",F,[t[6]||(t[6]=e.createElementVNode("div",{class:"ant-pro-table-list-toolbar-left"},[e.createElementVNode("div",{class:"ant-pro-table-list-toolbar-title"},"模块配置")],-1)),e.createElementVNode("div",G,[e.createVNode(u,{align:"center"},{default:e.withCtx(()=>[e.createVNode(c,null,{default:e.withCtx(()=>[e.createVNode(n,{onClick:b},{default:e.withCtx(()=>[e.createVNode(e.unref(v.PlusOutlined)),t[2]||(t[2]=e.createTextVNode(" 添加根模块 "))]),_:1}),e.withDirectives(e.createVNode(n,{onClick:D},{default:e.withCtx(()=>[e.createVNode(e.unref(v.PlusOutlined)),t[3]||(t[3]=e.createTextVNode(" 添加子模块 "))]),_:1},512),[[e.vShow,d.id]]),e.withDirectives(e.createVNode(n,{onClick:S},{default:e.withCtx(()=>[e.createVNode(e.unref(v.EditOutlined)),t[4]||(t[4]=e.createTextVNode(" 修改模块 "))]),_:1},512),[[e.vShow,d.id]]),e.createVNode(l,{title:"是否确认删除模块?",onConfirm:q},{default:e.withCtx(()=>[e.withDirectives(e.createVNode(n,{danger:""},{default:e.withCtx(()=>[e.createVNode(e.unref(v.DeleteOutlined)),t[5]||(t[5]=e.createTextVNode(" 删除模块 "))]),_:1},512),[[e.vShow,d.id]])]),_:1})]),_:1})]),_:1})])])]),e.createVNode(O,null,{default:e.withCtx(()=>[e.createVNode(g,{sm:5,md:4},{default:e.withCtx(()=>[e.createVNode(R,{showIcon:!0,expandedKeys:a.value,loadedKeys:_.value,treeData:r.value,onExpand:M,loadData:E,onSelect:k},{icon:e.withCtx(p=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(p.iconName)))]),_:1},8,["expandedKeys","loadedKeys","treeData"])]),_:1}),e.createVNode(g,{sm:19,md:20},{default:e.withCtx(()=>[e.createVNode(K,{loading:h.value},{default:e.withCtx(()=>[e.createVNode(P.default,{module:d},null,8,["module"])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},512),e.createVNode(j.default,{ref:"moduleAdd",open:s.openAdd,"onUpdate:open":t[0]||(t[0]=p=>s.openAdd=p),"parent-id":C.value?null:d.id,onSuccess:T},null,8,["open","parent-id"]),e.createVNode(U.default,{ref:"moduleEdit",open:s.openEdit,"onUpdate:open":t[1]||(t[1]=p=>s.openEdit=p),"module-id":d.id,onSuccess:A},null,8,["open","module-id"])])}}});exports.default=H;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./ModuleIndex.vue.js");exports.default=e.default;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@since2006/utils"),u=()=>t.http.get("/api/1/workflow/cate/get_doc_list.json"),l=e=>t.http.post("/api/v2/module/create_module",e),d=e=>t.http.get("/api/v2/module/get_module",{params:{id:e}}),s=()=>t.http.get("/api/v2/module/get_cache_modules"),r=(e=null)=>{const o={};return e&&(o.parentId=e),t.http.get("/api/1/module/get_modules_nocache.json",{params:o})},a=e=>t.http.post("/api/v2/module/delete_module",{id:e}),c=e=>t.http.post("/api/v2/module/update_module",e);exports.createModule=l;exports.deleteModule=a;exports.getDocs=u;exports.getModule=d;exports.getModules=s;exports.getModulesNoCache=r;exports.updateModule=c;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./IconSelectorModal.vue2.js");;/* empty css */const t=require("../../../../_virtual/_plugin-vue_export-helper.js"),u=t.default(e.default,[["__scopeId","data-v-33554e43"]]);exports.default=u;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),r=require("@since2006/components"),u=e.defineComponent({__name:"IconSelectorModal",props:{visible:{default:!1}},emits:["success","cancel"],setup(n,{emit:t}){const s=e.ref(""),c=t,l=o=>{s.value=o,c("success",o)},a=()=>{c("cancel")};return(o,d)=>{const i=e.resolveComponent("a-modal");return e.openBlock(),e.createBlock(i,{visible:n.visible,width:900,footer:null,onCancel:a},{default:e.withCtx(()=>[e.createVNode(e.unref(r.IconSelect),{"class-name":"icon-selector","icon-font-size":"24px",onChange:l})]),_:1},8,["visible"])}}});exports.default=u;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("./ModuleIndex.vue.js"),s=e=>(e.install=n=>{const u=e.name||e.__name;n.component(u,e)},e),t=s(l.default);exports.ModuleIndex=t;exports.default=t;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=a=>a?a.map(e=>({key:e.id,title:e.name,isLeaf:!e.hasChildren,iconName:e.icon,type:e.type,seqNo:e.seqNo})):[];exports.mapTreeData=r;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./app/system/index.js");exports.StatusIndex=e.StatusIndex;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./app/system/index.js"),t=require("./app/module/index.js");exports.StatusIndex=e.StatusIndex;exports.ModuleIndex=t.ModuleIndex;
@@ -1 +1 @@
1
- .large-text[data-v-1f96ab02]{font-size:16px}.float-right[data-v-1f96ab02]{float:right}.margin-block[data-v-1f96ab02]{margin-top:14px}
1
+ .large-text[data-v-1f96ab02]{font-size:16px}.float-right[data-v-1f96ab02]{float:right}.margin-block[data-v-1f96ab02]{margin-top:14px}.icon-selector deep(ul) li.active[data-v-33554e43],.icon-selector deep(ul) li[data-v-33554e43]:hover{border-radius:2px;border-color:#4a4a48;background-color:#4a4a48;color:#fff;transition:all .3s;box-shadow:none}.icon-selector deep(ul) i[data-v-33554e43]{font-size:1.5rem;border:1px solid #f1f1f1;padding:.02rem;margin:.03rem;cursor:pointer}.ant-form[data-v-cd92ee31]{padding-top:20px}.permission-tree[data-v-cd92ee31],.permission-tree[data-v-266daf0e]{overflow-y:auto;overflow-x:hidden;margin-top:10px}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@since2006/pages",
3
3
  "private": false,
4
- "version": "2025.8.0",
4
+ "version": "2025.8.1",
5
5
  "description": "基于 Ant Design Vue 的页面库",
6
6
  "type": "module",
7
7
  "main": "dist/lib/index.js",
@@ -27,6 +27,7 @@
27
27
  "dist"
28
28
  ],
29
29
  "devDependencies": {
30
+ "@since2006/components": "workspace:^",
30
31
  "@since2006/utils": "workspace:^",
31
32
  "vite-plugin-vue-setup-extend": "^0.4.0"
32
33
  }