@since2006/pages 2026.4.1 → 2026.4.2
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/es/index.js +11 -9
- package/dist/es/src/app/org/OrgIndex.vue.js +7 -0
- package/dist/es/src/app/org/OrgIndex.vue2.js +278 -0
- package/dist/es/src/app/org/OrgTree.vue.js +182 -0
- package/dist/es/src/app/org/OrgTree.vue2.js +4 -0
- package/dist/es/src/app/org/RolePanel.vue.js +7 -0
- package/dist/es/src/app/org/RolePanel.vue2.js +157 -0
- package/dist/es/src/app/org/UserTableList.vue.js +7 -0
- package/dist/es/src/app/org/UserTableList.vue2.js +246 -0
- package/dist/es/src/app/org/api.js +175 -0
- package/dist/es/src/app/org/assets/cube.svg.js +4 -0
- package/dist/es/src/app/org/assets/division.svg.js +4 -0
- package/dist/es/src/app/org/assets/nopos.svg.js +4 -0
- package/dist/es/src/app/org/assets/plugin.svg.js +4 -0
- package/dist/es/src/app/org/assets/unit.svg.js +4 -0
- package/dist/es/src/app/org/assets/user.svg.js +4 -0
- package/dist/es/src/app/org/index.js +6 -0
- package/dist/es/src/app/org/menu/DeptMenu.vue.js +54 -0
- package/dist/es/src/app/org/menu/DeptMenu.vue2.js +4 -0
- package/dist/es/src/app/org/menu/OrgMenu.vue.js +73 -0
- package/dist/es/src/app/org/menu/OrgMenu.vue2.js +4 -0
- package/dist/es/src/app/org/menu/PermMenu.vue.js +55 -0
- package/dist/es/src/app/org/menu/PermMenu.vue2.js +4 -0
- package/dist/es/src/app/org/menu/PosMenu.vue.js +45 -0
- package/dist/es/src/app/org/menu/PosMenu.vue2.js +4 -0
- package/dist/es/src/app/org/menu/RoleMenu.vue.js +55 -0
- package/dist/es/src/app/org/menu/RoleMenu.vue2.js +4 -0
- package/dist/es/src/app/org/menu/TreeNodeMenu.js +15 -0
- package/dist/es/src/app/org/modal/DeptAddModal.vue.js +143 -0
- package/dist/es/src/app/org/modal/DeptAddModal.vue2.js +4 -0
- package/dist/es/src/app/org/modal/DeptEditModal.vue.js +133 -0
- package/dist/es/src/app/org/modal/DeptEditModal.vue2.js +4 -0
- package/dist/es/src/app/org/modal/OrgAddModal.vue.js +171 -0
- package/dist/es/src/app/org/modal/OrgAddModal.vue2.js +4 -0
- package/dist/es/src/app/org/modal/OrgEditModal.vue.js +161 -0
- package/dist/es/src/app/org/modal/OrgEditModal.vue2.js +4 -0
- package/dist/es/src/app/org/modal/OrgModals.vue.js +274 -0
- package/dist/es/src/app/org/modal/OrgModals.vue2.js +4 -0
- package/dist/es/src/app/org/modal/PermAddModal.vue.js +145 -0
- package/dist/es/src/app/org/modal/PermAddModal.vue2.js +4 -0
- package/dist/es/src/app/org/modal/PermEditModal.vue.js +135 -0
- package/dist/es/src/app/org/modal/PermEditModal.vue2.js +4 -0
- package/dist/es/src/app/org/modal/PosAddModal.vue.js +131 -0
- package/dist/es/src/app/org/modal/PosAddModal.vue2.js +4 -0
- package/dist/es/src/app/org/modal/PosEditModal.vue.js +122 -0
- package/dist/es/src/app/org/modal/PosEditModal.vue2.js +4 -0
- package/dist/es/src/app/org/modal/RoleAddModal.vue.js +145 -0
- package/dist/es/src/app/org/modal/RoleAddModal.vue2.js +4 -0
- package/dist/es/src/app/org/modal/RoleAddUserModal.vue.js +7 -0
- package/dist/es/src/app/org/modal/RoleAddUserModal.vue2.js +129 -0
- package/dist/es/src/app/org/modal/RoleEditModal.vue.js +161 -0
- package/dist/es/src/app/org/modal/RoleEditModal.vue2.js +4 -0
- package/dist/es/src/app/org/modal/UserAddModal.vue.js +570 -0
- package/dist/es/src/app/org/modal/UserAddModal.vue3.js +5 -0
- package/dist/es/src/app/org/modal/UserEditModal.vue.js +726 -0
- package/dist/es/src/app/org/modal/UserEditModal.vue3.js +5 -0
- package/dist/es/src/app/org/modal/UserPermModal.vue.js +72 -0
- package/dist/es/src/app/org/modal/UserPermModal.vue2.js +4 -0
- package/dist/es/src/app/org/modal/UserPosAddModal.vue.js +136 -0
- package/dist/es/src/app/org/modal/UserPosAddModal.vue2.js +4 -0
- package/dist/es/src/app/org/modal/UserPosMoveModal.vue.js +108 -0
- package/dist/es/src/app/org/modal/UserPosMoveModal.vue2.js +4 -0
- package/dist/es/src/index.js +9 -7
- package/dist/es/style.css +1 -1
- package/dist/lib/index.js +1 -1
- package/dist/lib/src/app/org/OrgIndex.vue.js +1 -0
- package/dist/lib/src/app/org/OrgIndex.vue2.js +2 -0
- package/dist/lib/src/app/org/OrgTree.vue.js +1 -0
- package/dist/lib/src/app/org/OrgTree.vue2.js +1 -0
- package/dist/lib/src/app/org/RolePanel.vue.js +1 -0
- package/dist/lib/src/app/org/RolePanel.vue2.js +1 -0
- package/dist/lib/src/app/org/UserTableList.vue.js +1 -0
- package/dist/lib/src/app/org/UserTableList.vue2.js +1 -0
- package/dist/lib/src/app/org/api.js +1 -0
- package/dist/lib/src/app/org/assets/cube.svg.js +1 -0
- package/dist/lib/src/app/org/assets/division.svg.js +1 -0
- package/dist/lib/src/app/org/assets/nopos.svg.js +1 -0
- package/dist/lib/src/app/org/assets/plugin.svg.js +1 -0
- package/dist/lib/src/app/org/assets/unit.svg.js +1 -0
- package/dist/lib/src/app/org/assets/user.svg.js +1 -0
- package/dist/lib/src/app/org/index.js +1 -0
- package/dist/lib/src/app/org/menu/DeptMenu.vue.js +1 -0
- package/dist/lib/src/app/org/menu/DeptMenu.vue2.js +1 -0
- package/dist/lib/src/app/org/menu/OrgMenu.vue.js +1 -0
- package/dist/lib/src/app/org/menu/OrgMenu.vue2.js +1 -0
- package/dist/lib/src/app/org/menu/PermMenu.vue.js +1 -0
- package/dist/lib/src/app/org/menu/PermMenu.vue2.js +1 -0
- package/dist/lib/src/app/org/menu/PosMenu.vue.js +1 -0
- package/dist/lib/src/app/org/menu/PosMenu.vue2.js +1 -0
- package/dist/lib/src/app/org/menu/RoleMenu.vue.js +1 -0
- package/dist/lib/src/app/org/menu/RoleMenu.vue2.js +1 -0
- package/dist/lib/src/app/org/menu/TreeNodeMenu.js +1 -0
- package/dist/lib/src/app/org/modal/DeptAddModal.vue.js +1 -0
- package/dist/lib/src/app/org/modal/DeptAddModal.vue2.js +1 -0
- package/dist/lib/src/app/org/modal/DeptEditModal.vue.js +1 -0
- package/dist/lib/src/app/org/modal/DeptEditModal.vue2.js +1 -0
- package/dist/lib/src/app/org/modal/OrgAddModal.vue.js +1 -0
- package/dist/lib/src/app/org/modal/OrgAddModal.vue2.js +1 -0
- package/dist/lib/src/app/org/modal/OrgEditModal.vue.js +1 -0
- package/dist/lib/src/app/org/modal/OrgEditModal.vue2.js +1 -0
- package/dist/lib/src/app/org/modal/OrgModals.vue.js +1 -0
- package/dist/lib/src/app/org/modal/OrgModals.vue2.js +1 -0
- package/dist/lib/src/app/org/modal/PermAddModal.vue.js +1 -0
- package/dist/lib/src/app/org/modal/PermAddModal.vue2.js +1 -0
- package/dist/lib/src/app/org/modal/PermEditModal.vue.js +1 -0
- package/dist/lib/src/app/org/modal/PermEditModal.vue2.js +1 -0
- package/dist/lib/src/app/org/modal/PosAddModal.vue.js +1 -0
- package/dist/lib/src/app/org/modal/PosAddModal.vue2.js +1 -0
- package/dist/lib/src/app/org/modal/PosEditModal.vue.js +1 -0
- package/dist/lib/src/app/org/modal/PosEditModal.vue2.js +1 -0
- package/dist/lib/src/app/org/modal/RoleAddModal.vue.js +1 -0
- package/dist/lib/src/app/org/modal/RoleAddModal.vue2.js +1 -0
- package/dist/lib/src/app/org/modal/RoleAddUserModal.vue.js +1 -0
- package/dist/lib/src/app/org/modal/RoleAddUserModal.vue2.js +1 -0
- package/dist/lib/src/app/org/modal/RoleEditModal.vue.js +1 -0
- package/dist/lib/src/app/org/modal/RoleEditModal.vue2.js +1 -0
- package/dist/lib/src/app/org/modal/UserAddModal.vue.js +1 -0
- package/dist/lib/src/app/org/modal/UserAddModal.vue3.js +1 -0
- package/dist/lib/src/app/org/modal/UserEditModal.vue.js +1 -0
- package/dist/lib/src/app/org/modal/UserEditModal.vue3.js +1 -0
- package/dist/lib/src/app/org/modal/UserPermModal.vue.js +1 -0
- package/dist/lib/src/app/org/modal/UserPermModal.vue2.js +1 -0
- package/dist/lib/src/app/org/modal/UserPosAddModal.vue.js +1 -0
- package/dist/lib/src/app/org/modal/UserPosAddModal.vue2.js +1 -0
- package/dist/lib/src/app/org/modal/UserPosMoveModal.vue.js +1 -0
- package/dist/lib/src/app/org/modal/UserPosMoveModal.vue2.js +1 -0
- package/dist/lib/src/index.js +1 -1
- package/dist/lib/style.css +1 -1
- package/package.json +2 -1
package/dist/es/index.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import * as t from "./src/index.js";
|
|
2
|
-
import { AccessLogList as p, AuditLogList as
|
|
3
|
-
import { AttachmentIndex as
|
|
2
|
+
import { AccessLogList as p, AuditLogList as d, ErrorLogList as i, LoginLogList as s, OperationLogList as a } from "./src/app/log/index.js";
|
|
3
|
+
import { AttachmentIndex as m } from "./src/app/attachment/index.js";
|
|
4
4
|
import { DictIndex as c, DictPanel as I } from "./src/app/dict/index.js";
|
|
5
5
|
import { MetadataIndex as l } from "./src/app/metadata/index.js";
|
|
6
6
|
import { ModuleIndex as A } from "./src/app/module/index.js";
|
|
7
7
|
import { OpenApiAppIndex as h, OpenApiLogIndex as D } from "./src/app/openapi/index.js";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { OrgIndex as M } from "./src/app/org/index.js";
|
|
9
|
+
import { ScheduleIndex as b } from "./src/app/schedule/index.js";
|
|
10
|
+
import { StatusIndex as v } from "./src/app/system/index.js";
|
|
10
11
|
const r = {
|
|
11
12
|
install: (e) => {
|
|
12
13
|
Object.values(t).forEach((o) => e.use(o));
|
|
@@ -14,18 +15,19 @@ const r = {
|
|
|
14
15
|
};
|
|
15
16
|
export {
|
|
16
17
|
p as AccessLogList,
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
m as AttachmentIndex,
|
|
19
|
+
d as AuditLogList,
|
|
19
20
|
c as DictIndex,
|
|
20
21
|
I as DictPanel,
|
|
21
|
-
|
|
22
|
+
i as ErrorLogList,
|
|
22
23
|
s as LoginLogList,
|
|
23
24
|
l as MetadataIndex,
|
|
24
25
|
A as ModuleIndex,
|
|
25
26
|
h as OpenApiAppIndex,
|
|
26
27
|
D as OpenApiLogIndex,
|
|
27
28
|
a as OperationLogList,
|
|
28
|
-
M as
|
|
29
|
-
b as
|
|
29
|
+
M as OrgIndex,
|
|
30
|
+
b as ScheduleIndex,
|
|
31
|
+
v as StatusIndex,
|
|
30
32
|
r as default
|
|
31
33
|
};
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import { defineComponent as h, ref as s, reactive as I, resolveComponent as r, openBlock as C, createElementBlock as ee, createVNode as n, withCtx as l, createElementVNode as m, unref as k, createTextVNode as u, toDisplayString as oe, createBlock as P, createCommentVNode as q, toRaw as ne } from "vue";
|
|
2
|
+
import { RocketTwoTone as te, UserOutlined as le, UserAddOutlined as se, UserDeleteOutlined as re } from "@ant-design/icons-vue";
|
|
3
|
+
import { message as y, Modal as ae } from "ant-design-vue";
|
|
4
|
+
import ue from "./OrgTree.vue.js";
|
|
5
|
+
import de from "./UserTableList.vue.js";
|
|
6
|
+
import ce from "./modal/OrgModals.vue.js";
|
|
7
|
+
import ie from "./modal/RoleAddUserModal.vue.js";
|
|
8
|
+
import me from "./modal/UserPermModal.vue.js";
|
|
9
|
+
import { removeUsersFromRole as pe } from "./api.js";
|
|
10
|
+
const ve = { style: { "margin-bottom": "16px" } }, fe = { class: "ant-pro-table-list-toolbar" }, _e = { class: "ant-pro-table-list-toolbar-container" }, ge = { class: "ant-pro-table-list-toolbar-left" }, ye = { style: { color: "red" } }, Ue = { class: "ant-pro-table-list-toolbar-right" }, Ie = /* @__PURE__ */ h({
|
|
11
|
+
__name: "OrgIndex",
|
|
12
|
+
setup(ke) {
|
|
13
|
+
const w = s(), U = s(), O = s("未选择"), f = s(), a = s(), _ = I({
|
|
14
|
+
key: void 0,
|
|
15
|
+
nodeType: void 0,
|
|
16
|
+
nodeId: void 0,
|
|
17
|
+
action: void 0
|
|
18
|
+
}), p = I({
|
|
19
|
+
query: void 0,
|
|
20
|
+
status: void 0
|
|
21
|
+
}), M = s([]), T = s(!1), b = s(!1), N = s(""), S = s(""), v = s([]), L = () => {
|
|
22
|
+
console.log("组织机构树加载完成");
|
|
23
|
+
}, $ = ({ nodeType: o, nodeId: e, nodeInfo: t }) => {
|
|
24
|
+
console.log("选中节点:", { type: o, id: e, nodeInfo: t }), console.log("当前queryParams:", p), O.value = `${o} - ${e}`, f.value = o, a.value = e, M.value = K(t);
|
|
25
|
+
}, A = ({ nodeType: o, nodeId: e, action: t }) => {
|
|
26
|
+
_.key = Date.now(), _.nodeType = o, _.nodeId = e, _.action = t, console.log("右键菜单点击:", { nodeType: o, nodeId: e, action: t });
|
|
27
|
+
}, B = (o, e) => {
|
|
28
|
+
var t;
|
|
29
|
+
e.action === "addUser" ? x() : (console.log("Modal 操作成功,刷新树节点:", o), (t = w.value) == null || t.reloadTreeNode(o));
|
|
30
|
+
}, D = () => {
|
|
31
|
+
console.log("添加用户至角色:", { nodeType: f.value, nodeId: a.value }), T.value = !0;
|
|
32
|
+
}, V = (o) => {
|
|
33
|
+
console.log("用户编辑:", o);
|
|
34
|
+
}, E = (o, e) => {
|
|
35
|
+
console.log("用户权限编辑:", o, e), N.value = o, S.value = e, b.value = !0;
|
|
36
|
+
}, j = (o, e) => {
|
|
37
|
+
console.log("用户状态变更:", o, e);
|
|
38
|
+
}, F = () => {
|
|
39
|
+
console.log("重载用户列表");
|
|
40
|
+
}, z = () => {
|
|
41
|
+
console.log("角色用户管理成功"), x();
|
|
42
|
+
}, G = () => {
|
|
43
|
+
console.log("用户权限管理成功"), x();
|
|
44
|
+
}, x = () => {
|
|
45
|
+
var o;
|
|
46
|
+
console.log("用户列表发生变化,刷新用户表格"), (o = U.value) == null || o.loadUserList();
|
|
47
|
+
}, H = (o, e) => {
|
|
48
|
+
console.log("用户选择变化:", { selectedRowKeys: o, selectedRows: e }), v.value = e;
|
|
49
|
+
}, J = () => {
|
|
50
|
+
if (v.value.length === 0) {
|
|
51
|
+
y.warning("请先选择要移除的用户");
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (!a.value) {
|
|
55
|
+
y.warning("请先选择一个角色");
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const o = v.value.map((e) => e.name).join("、");
|
|
59
|
+
ae.confirm({
|
|
60
|
+
title: "确认移除用户角色",
|
|
61
|
+
content: `确定要从当前角色中移除以下用户吗?
|
|
62
|
+
${o}`,
|
|
63
|
+
okText: "确认",
|
|
64
|
+
cancelText: "取消",
|
|
65
|
+
onOk: async () => {
|
|
66
|
+
var e, t;
|
|
67
|
+
try {
|
|
68
|
+
const d = v.value.map((g) => g.id), c = await pe({
|
|
69
|
+
roleId: a.value,
|
|
70
|
+
userIds: d
|
|
71
|
+
});
|
|
72
|
+
c.code === 200 ? (y.success("移除成功"), v.value = [], (e = U.value) == null || e.clearSelection(), (t = U.value) == null || t.loadUserList()) : y.error(c.msg || "移除失败");
|
|
73
|
+
} catch (d) {
|
|
74
|
+
console.error("移除用户角色失败:", d), y.error("移除失败");
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}, K = (o) => {
|
|
79
|
+
const e = [];
|
|
80
|
+
let t = o;
|
|
81
|
+
if (!t)
|
|
82
|
+
return [];
|
|
83
|
+
do {
|
|
84
|
+
const d = t.title || ne(t.node).title;
|
|
85
|
+
if (e.push(d), t = t.parent, !t)
|
|
86
|
+
break;
|
|
87
|
+
} while (t.parent);
|
|
88
|
+
return e.length > 0 && e[e.length - 1] === "组织架构" && e.pop(), e.reverse(), e;
|
|
89
|
+
};
|
|
90
|
+
return (o, e) => {
|
|
91
|
+
const t = r("a-col"), d = r("a-input"), c = r("a-form-item"), g = r("a-select-option"), Q = r("a-select"), R = r("a-button"), W = r("a-form"), X = r("a-space"), Y = r("a-row"), Z = r("a-card");
|
|
92
|
+
return C(), ee("div", null, [
|
|
93
|
+
n(Z, { "body-style": { padding: "14px" } }, {
|
|
94
|
+
default: l(() => [
|
|
95
|
+
n(Y, null, {
|
|
96
|
+
default: l(() => [
|
|
97
|
+
n(t, {
|
|
98
|
+
sm: 5,
|
|
99
|
+
md: 4
|
|
100
|
+
}, {
|
|
101
|
+
default: l(() => [
|
|
102
|
+
m("div", ve, [
|
|
103
|
+
m("h3", null, [
|
|
104
|
+
n(k(te)),
|
|
105
|
+
e[4] || (e[4] = u(" 组织架构 ", -1))
|
|
106
|
+
])
|
|
107
|
+
]),
|
|
108
|
+
n(ue, {
|
|
109
|
+
ref_key: "orgTreeRef",
|
|
110
|
+
ref: w,
|
|
111
|
+
onTreeLoad: L,
|
|
112
|
+
onNodeClick: $,
|
|
113
|
+
onMenuClick: A
|
|
114
|
+
}, null, 512)
|
|
115
|
+
]),
|
|
116
|
+
_: 1
|
|
117
|
+
}),
|
|
118
|
+
n(t, {
|
|
119
|
+
sm: 19,
|
|
120
|
+
md: 20
|
|
121
|
+
}, {
|
|
122
|
+
default: l(() => [
|
|
123
|
+
m("div", fe, [
|
|
124
|
+
m("div", _e, [
|
|
125
|
+
m("div", ge, [
|
|
126
|
+
n(W, { layout: "inline" }, {
|
|
127
|
+
default: l(() => [
|
|
128
|
+
n(c, null, {
|
|
129
|
+
default: l(() => [
|
|
130
|
+
n(d, {
|
|
131
|
+
value: p.query,
|
|
132
|
+
"onUpdate:value": e[0] || (e[0] = (i) => p.query = i),
|
|
133
|
+
placeholder: "查询用户",
|
|
134
|
+
style: { width: "160px" }
|
|
135
|
+
}, {
|
|
136
|
+
prefix: l(() => [
|
|
137
|
+
n(k(le))
|
|
138
|
+
]),
|
|
139
|
+
_: 1
|
|
140
|
+
}, 8, ["value"])
|
|
141
|
+
]),
|
|
142
|
+
_: 1
|
|
143
|
+
}),
|
|
144
|
+
n(c, null, {
|
|
145
|
+
default: l(() => [
|
|
146
|
+
n(Q, {
|
|
147
|
+
value: p.status,
|
|
148
|
+
"onUpdate:value": e[1] || (e[1] = (i) => p.status = i),
|
|
149
|
+
placeholder: "状态",
|
|
150
|
+
"allow-clear": ""
|
|
151
|
+
}, {
|
|
152
|
+
default: l(() => [
|
|
153
|
+
n(g, { value: "0" }, {
|
|
154
|
+
default: l(() => [...e[5] || (e[5] = [
|
|
155
|
+
u("正常", -1)
|
|
156
|
+
])]),
|
|
157
|
+
_: 1
|
|
158
|
+
}),
|
|
159
|
+
n(g, { value: "2" }, {
|
|
160
|
+
default: l(() => [...e[6] || (e[6] = [
|
|
161
|
+
u("出差", -1)
|
|
162
|
+
])]),
|
|
163
|
+
_: 1
|
|
164
|
+
}),
|
|
165
|
+
n(g, { value: "4" }, {
|
|
166
|
+
default: l(() => [...e[7] || (e[7] = [
|
|
167
|
+
u("休假", -1)
|
|
168
|
+
])]),
|
|
169
|
+
_: 1
|
|
170
|
+
})
|
|
171
|
+
]),
|
|
172
|
+
_: 1
|
|
173
|
+
}, 8, ["value"])
|
|
174
|
+
]),
|
|
175
|
+
_: 1
|
|
176
|
+
}),
|
|
177
|
+
n(c, null, {
|
|
178
|
+
default: l(() => [
|
|
179
|
+
n(R, {
|
|
180
|
+
type: "primary",
|
|
181
|
+
"html-type": "submit"
|
|
182
|
+
}, {
|
|
183
|
+
default: l(() => [...e[8] || (e[8] = [
|
|
184
|
+
u("查询", -1)
|
|
185
|
+
])]),
|
|
186
|
+
_: 1
|
|
187
|
+
})
|
|
188
|
+
]),
|
|
189
|
+
_: 1
|
|
190
|
+
}),
|
|
191
|
+
n(c, null, {
|
|
192
|
+
default: l(() => [
|
|
193
|
+
e[9] || (e[9] = u(" 当前列表: ", -1)),
|
|
194
|
+
m("span", ye, oe(M.value.join(" -> ")), 1)
|
|
195
|
+
]),
|
|
196
|
+
_: 1
|
|
197
|
+
})
|
|
198
|
+
]),
|
|
199
|
+
_: 1
|
|
200
|
+
})
|
|
201
|
+
]),
|
|
202
|
+
m("div", Ue, [
|
|
203
|
+
n(X, { align: "center" }, {
|
|
204
|
+
default: l(() => [
|
|
205
|
+
f.value === "R" && a.value !== "0" ? (C(), P(R, {
|
|
206
|
+
key: 0,
|
|
207
|
+
type: "primary",
|
|
208
|
+
onClick: D
|
|
209
|
+
}, {
|
|
210
|
+
default: l(() => [
|
|
211
|
+
n(k(se)),
|
|
212
|
+
e[10] || (e[10] = u(" 添加用户至角色 ", -1))
|
|
213
|
+
]),
|
|
214
|
+
_: 1
|
|
215
|
+
})) : q("", !0),
|
|
216
|
+
f.value === "R" && a.value !== "0" && v.value.length > 0 ? (C(), P(R, {
|
|
217
|
+
key: 1,
|
|
218
|
+
type: "primary",
|
|
219
|
+
danger: "",
|
|
220
|
+
onClick: J
|
|
221
|
+
}, {
|
|
222
|
+
default: l(() => [
|
|
223
|
+
n(k(re)),
|
|
224
|
+
e[11] || (e[11] = u(" 移除用户角色 ", -1))
|
|
225
|
+
]),
|
|
226
|
+
_: 1
|
|
227
|
+
})) : q("", !0)
|
|
228
|
+
]),
|
|
229
|
+
_: 1
|
|
230
|
+
})
|
|
231
|
+
])
|
|
232
|
+
])
|
|
233
|
+
]),
|
|
234
|
+
n(de, {
|
|
235
|
+
ref_key: "userTableListRef",
|
|
236
|
+
ref: U,
|
|
237
|
+
"node-type": f.value,
|
|
238
|
+
"node-id": a.value,
|
|
239
|
+
"query-params": p,
|
|
240
|
+
onUserEdit: V,
|
|
241
|
+
onUserPerm: E,
|
|
242
|
+
onUserBlock: j,
|
|
243
|
+
onReload: F,
|
|
244
|
+
onSelectionChange: H
|
|
245
|
+
}, null, 8, ["node-type", "node-id", "query-params"])
|
|
246
|
+
]),
|
|
247
|
+
_: 1
|
|
248
|
+
})
|
|
249
|
+
]),
|
|
250
|
+
_: 1
|
|
251
|
+
})
|
|
252
|
+
]),
|
|
253
|
+
_: 1
|
|
254
|
+
}),
|
|
255
|
+
n(ce, {
|
|
256
|
+
"context-menu": _,
|
|
257
|
+
onSuccess: B
|
|
258
|
+
}, null, 8, ["context-menu"]),
|
|
259
|
+
n(ie, {
|
|
260
|
+
open: T.value,
|
|
261
|
+
"onUpdate:open": e[2] || (e[2] = (i) => T.value = i),
|
|
262
|
+
"role-id": a.value || "",
|
|
263
|
+
onSuccess: z
|
|
264
|
+
}, null, 8, ["open", "role-id"]),
|
|
265
|
+
n(me, {
|
|
266
|
+
open: b.value,
|
|
267
|
+
"onUpdate:open": e[3] || (e[3] = (i) => b.value = i),
|
|
268
|
+
"user-id": N.value,
|
|
269
|
+
"user-name": S.value,
|
|
270
|
+
onSuccess: G
|
|
271
|
+
}, null, 8, ["open", "user-id", "user-name"])
|
|
272
|
+
]);
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
export {
|
|
277
|
+
Ie as default
|
|
278
|
+
};
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { defineComponent as z, ref as h, resolveComponent as m, openBlock as r, createElementBlock as c, createVNode as x, withCtx as f, createElementVNode as Q, toDisplayString as j, createBlock as R, resolveDynamicComponent as F, toRaw as w, createCommentVNode as G, unref as d } from "vue";
|
|
2
|
+
import { queryAllOrgPanel as H, getOrgPanel as C } from "./api.js";
|
|
3
|
+
import J from "./menu/TreeNodeMenu.js";
|
|
4
|
+
import X from "./assets/nopos.svg.js";
|
|
5
|
+
import Y from "./assets/unit.svg.js";
|
|
6
|
+
import Z from "./assets/division.svg.js";
|
|
7
|
+
import b from "./assets/user.svg.js";
|
|
8
|
+
import $ from "./assets/plugin.svg.js";
|
|
9
|
+
import ee from "./assets/cube.svg.js";
|
|
10
|
+
const te = ["src"], ne = ["src"], oe = ["src"], ae = ["src"], le = ["src"], re = ["src"], se = ["src"], ge = /* @__PURE__ */ z({
|
|
11
|
+
__name: "OrgTree",
|
|
12
|
+
emits: ["treeLoad", "nodeClick", "menuClick"],
|
|
13
|
+
setup(ce, { expose: M, emit: S }) {
|
|
14
|
+
const y = (t) => t ? t.map((e) => ({
|
|
15
|
+
key: e.id,
|
|
16
|
+
title: e.name,
|
|
17
|
+
isLeaf: !e.hasChildren,
|
|
18
|
+
iconName: e.icon,
|
|
19
|
+
type: e.type,
|
|
20
|
+
seqNo: e.seqNo
|
|
21
|
+
})) : [], T = (t) => t ? t.map((e) => ({
|
|
22
|
+
key: e.id,
|
|
23
|
+
title: e.name,
|
|
24
|
+
isLeaf: !e.hasChildren,
|
|
25
|
+
iconName: e.icon,
|
|
26
|
+
type: e.type,
|
|
27
|
+
seqNo: e.seqNo,
|
|
28
|
+
children: T(e.children)
|
|
29
|
+
})) : [], D = (t) => {
|
|
30
|
+
const e = [];
|
|
31
|
+
return t.forEach((n) => {
|
|
32
|
+
e.push(n.key), n.children && n.children.length > 0 && e.push(...D(n.children));
|
|
33
|
+
}), e;
|
|
34
|
+
}, g = S, L = h(""), q = (t) => {
|
|
35
|
+
if (!t) {
|
|
36
|
+
N();
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
H(t).then((e) => {
|
|
40
|
+
e.code === 200 && (s.value = T(e.data), l.value = D(s.value), u.value = []);
|
|
41
|
+
});
|
|
42
|
+
}, l = h([]), u = h([]), s = h([]), v = h(null), O = async (t) => {
|
|
43
|
+
if (v.value = t, t.dataRef.children)
|
|
44
|
+
return;
|
|
45
|
+
const e = await C(t.dataRef.key);
|
|
46
|
+
e.code === 200 && (t.dataRef.children = y(e.data), s.value = [...s.value]);
|
|
47
|
+
}, P = (t) => {
|
|
48
|
+
l.value = t;
|
|
49
|
+
}, W = (t, e) => {
|
|
50
|
+
t.length === 1 && g("treeLoad");
|
|
51
|
+
}, B = (t, e) => {
|
|
52
|
+
const n = w(e.node.dataRef), o = l.value.includes(n.key);
|
|
53
|
+
if (n.isLeaf || (e.selected ? o || l.value.push(n.key) : o && (l.value = l.value.filter((_) => _ !== n.key))), t.length === 0) {
|
|
54
|
+
v.value = null;
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
v.value = e.node;
|
|
58
|
+
const i = w(e.node.dataRef).key.split("_"), a = e.node.dataRef.type, k = i[1];
|
|
59
|
+
g("nodeClick", { nodeType: a, nodeId: k, nodeInfo: e.node });
|
|
60
|
+
}, N = async () => {
|
|
61
|
+
const t = await C();
|
|
62
|
+
t.code === 200 && (s.value = y(t.data), t.data.length > 0 && (l.value = [t.data[0].id]));
|
|
63
|
+
}, U = (t) => t === "org_block" ? null : J[t.split("_")[0]] || null, V = ({ key: t }, e) => {
|
|
64
|
+
const n = t.split("_")[0];
|
|
65
|
+
let o = t.split("_")[1];
|
|
66
|
+
o === "0" && (o = ""), g("menuClick", { nodeType: n, nodeId: o, action: e });
|
|
67
|
+
}, A = async (t) => {
|
|
68
|
+
console.log("reloadTreeNode: ", t);
|
|
69
|
+
const e = await C(t);
|
|
70
|
+
if (e.code === 200) {
|
|
71
|
+
const n = [...s.value];
|
|
72
|
+
E(n, t, y(e.data)), s.value = n;
|
|
73
|
+
}
|
|
74
|
+
}, E = (t, e, n) => {
|
|
75
|
+
t.forEach((o) => {
|
|
76
|
+
if (o.key === e) {
|
|
77
|
+
o.isLeaf = n.length === 0;
|
|
78
|
+
const p = K([o], 0);
|
|
79
|
+
u.value.length > 0 && (u.value = u.value.filter((i) => !p.includes(i))), u.value.length > 0 && (l.value = l.value.filter((i) => !p.includes(i))), o.children = n;
|
|
80
|
+
} else
|
|
81
|
+
o.children && E(o.children, e, n);
|
|
82
|
+
});
|
|
83
|
+
}, K = (t, e) => {
|
|
84
|
+
let n = [];
|
|
85
|
+
return t.forEach((o) => {
|
|
86
|
+
e > 0 && n.push(o.key), o.children && (n = n.concat(K(o.children, ++e)));
|
|
87
|
+
}), n;
|
|
88
|
+
};
|
|
89
|
+
return N(), M({ reloadTreeNode: A }), (t, e) => {
|
|
90
|
+
const n = m("a-input-search"), o = m("a-menu"), p = m("a-dropdown"), i = m("a-tree");
|
|
91
|
+
return r(), c("div", null, [
|
|
92
|
+
x(n, {
|
|
93
|
+
value: L.value,
|
|
94
|
+
"onUpdate:value": e[0] || (e[0] = (a) => L.value = a),
|
|
95
|
+
placeholder: "搜索节点",
|
|
96
|
+
"allow-clear": "",
|
|
97
|
+
size: "small",
|
|
98
|
+
style: { "margin-bottom": "8px", width: "180px" },
|
|
99
|
+
onSearch: q
|
|
100
|
+
}, null, 8, ["value"]),
|
|
101
|
+
x(i, {
|
|
102
|
+
showIcon: "",
|
|
103
|
+
expandedKeys: l.value,
|
|
104
|
+
loadedKeys: u.value,
|
|
105
|
+
loadData: O,
|
|
106
|
+
treeData: s.value,
|
|
107
|
+
onExpand: P,
|
|
108
|
+
onSelect: B,
|
|
109
|
+
onLoad: W
|
|
110
|
+
}, {
|
|
111
|
+
icon: f(({ key: a }) => [
|
|
112
|
+
a.startsWith("org_block") ? (r(), c("img", {
|
|
113
|
+
key: 0,
|
|
114
|
+
src: d(X),
|
|
115
|
+
style: { width: "16px", height: "16px" },
|
|
116
|
+
alt: ""
|
|
117
|
+
}, null, 8, te)) : a.startsWith("org_") ? (r(), c("img", {
|
|
118
|
+
key: 1,
|
|
119
|
+
src: d(Y),
|
|
120
|
+
style: { width: "16px", height: "16px" },
|
|
121
|
+
alt: ""
|
|
122
|
+
}, null, 8, ne)) : a.startsWith("dept_") ? (r(), c("img", {
|
|
123
|
+
key: 2,
|
|
124
|
+
src: d(Z),
|
|
125
|
+
style: { width: "16px", height: "16px" },
|
|
126
|
+
alt: ""
|
|
127
|
+
}, null, 8, oe)) : a.startsWith("pos_") ? (r(), c("img", {
|
|
128
|
+
key: 3,
|
|
129
|
+
src: d(b),
|
|
130
|
+
style: { width: "16px", height: "16px" },
|
|
131
|
+
alt: ""
|
|
132
|
+
}, null, 8, ae)) : a === "perm_0" ? (r(), c("img", {
|
|
133
|
+
key: 4,
|
|
134
|
+
src: d($),
|
|
135
|
+
style: { width: "16px", height: "16px" },
|
|
136
|
+
alt: ""
|
|
137
|
+
}, null, 8, le)) : a === "role_0" ? (r(), c("img", {
|
|
138
|
+
key: 5,
|
|
139
|
+
src: d(b),
|
|
140
|
+
style: { width: "16px", height: "16px" },
|
|
141
|
+
alt: ""
|
|
142
|
+
}, null, 8, re)) : (r(), c("img", {
|
|
143
|
+
key: 6,
|
|
144
|
+
src: d(ee),
|
|
145
|
+
style: { width: "16px", height: "16px" },
|
|
146
|
+
alt: ""
|
|
147
|
+
}, null, 8, se))
|
|
148
|
+
]),
|
|
149
|
+
title: f(({ key: a, title: k, dataRef: _ }) => [
|
|
150
|
+
x(p, {
|
|
151
|
+
trigger: ["contextmenu"],
|
|
152
|
+
placement: "bottom",
|
|
153
|
+
arrow: ""
|
|
154
|
+
}, {
|
|
155
|
+
overlay: f(() => [
|
|
156
|
+
a !== "org_block" ? (r(), R(o, {
|
|
157
|
+
key: 0,
|
|
158
|
+
onClick: ({ key: I }) => V(_, I)
|
|
159
|
+
}, {
|
|
160
|
+
default: f(() => [
|
|
161
|
+
(r(), R(F(U(a)), {
|
|
162
|
+
"tree-node": w(_)
|
|
163
|
+
}, null, 8, ["tree-node"]))
|
|
164
|
+
]),
|
|
165
|
+
_: 2
|
|
166
|
+
}, 1032, ["onClick"])) : G("", !0)
|
|
167
|
+
]),
|
|
168
|
+
default: f(() => [
|
|
169
|
+
Q("span", null, j(k), 1)
|
|
170
|
+
]),
|
|
171
|
+
_: 2
|
|
172
|
+
}, 1024)
|
|
173
|
+
]),
|
|
174
|
+
_: 1
|
|
175
|
+
}, 8, ["expandedKeys", "loadedKeys", "treeData"])
|
|
176
|
+
]);
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
export {
|
|
181
|
+
ge as default
|
|
182
|
+
};
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { defineComponent as H, watch as $, ref as o, onMounted as G, resolveComponent as v, openBlock as p, createElementBlock as J, createVNode as L, withDirectives as O, withCtx as Q, createTextVNode as W, vShow as X, createElementVNode as K, createBlock as S, createCommentVNode as P, unref as Y } from "vue";
|
|
2
|
+
import { Empty as Z } from "ant-design-vue";
|
|
3
|
+
import { http as b } from "@since2006/utils";
|
|
4
|
+
const ee = { class: "permission-tree" }, ae = ["innerHTML"], re = /* @__PURE__ */ H({
|
|
5
|
+
__name: "RolePanel",
|
|
6
|
+
props: {
|
|
7
|
+
modelValue: {
|
|
8
|
+
type: Array,
|
|
9
|
+
default: () => []
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
emits: ["update:modelValue"],
|
|
13
|
+
setup(V, { emit: D }) {
|
|
14
|
+
const R = (a = null) => {
|
|
15
|
+
let e = "/api/v1/permission/query_all_roles";
|
|
16
|
+
return a && (e = `${e}?query=${encodeURIComponent(a)}`), b.get(e);
|
|
17
|
+
}, N = () => b.get("/api/v1/permission/get_all_roles"), w = V, M = D;
|
|
18
|
+
$(
|
|
19
|
+
() => w.modelValue,
|
|
20
|
+
(a) => {
|
|
21
|
+
i.value = a, l.value = a;
|
|
22
|
+
}
|
|
23
|
+
);
|
|
24
|
+
const s = o(!1), m = o(""), i = o([]), f = o([]), y = o([]), l = o([]), u = o([]), k = o([]), n = o([]), g = o("");
|
|
25
|
+
o(0), G(() => {
|
|
26
|
+
T();
|
|
27
|
+
});
|
|
28
|
+
const T = async () => {
|
|
29
|
+
try {
|
|
30
|
+
const a = await N();
|
|
31
|
+
if (a.code === 200) {
|
|
32
|
+
f.value = _(a.data);
|
|
33
|
+
const e = [];
|
|
34
|
+
x(e, a.data), y.value = e;
|
|
35
|
+
}
|
|
36
|
+
} catch (a) {
|
|
37
|
+
console.error("加载权限列表失败:", a);
|
|
38
|
+
}
|
|
39
|
+
}, j = (a) => {
|
|
40
|
+
l.value = [...a.checked], h();
|
|
41
|
+
}, B = (a, e) => {
|
|
42
|
+
const t = e.node.dataRef.key;
|
|
43
|
+
l.value.includes(t) ? l.value = l.value.filter((r) => r !== t) : l.value = [...l.value, ...a], h();
|
|
44
|
+
}, I = (a) => {
|
|
45
|
+
a && R(a).then((e) => {
|
|
46
|
+
if (e.code === 200) {
|
|
47
|
+
u.value = _(e.data), n.value = [...l.value];
|
|
48
|
+
const t = [];
|
|
49
|
+
E(t, e.data), k.value = [...t], s.value = !0;
|
|
50
|
+
}
|
|
51
|
+
}).catch((e) => {
|
|
52
|
+
console.error("搜索角色失败:", e);
|
|
53
|
+
});
|
|
54
|
+
}, q = () => {
|
|
55
|
+
s.value = !1, m.value = "", u.value = [];
|
|
56
|
+
}, A = (a, e) => {
|
|
57
|
+
e.checked ? (n.value = [...a.checked], l.value = C([...l.value, ...n.value])) : (n.value = n.value.filter(
|
|
58
|
+
(t) => t !== e.node.dataRef.key
|
|
59
|
+
), l.value = l.value.filter((t) => t !== e.node.dataRef.key)), h();
|
|
60
|
+
}, F = (a, e) => {
|
|
61
|
+
e.selected && a.length > 0 ? (n.value = [...n.value, ...a], l.value = C([...l.value, ...n.value])) : (n.value = n.value.filter(
|
|
62
|
+
(t) => t !== e.node.dataRef.key
|
|
63
|
+
), l.value = l.value.filter((t) => t !== e.node.dataRef.key)), h();
|
|
64
|
+
}, U = (a) => {
|
|
65
|
+
k.value = a;
|
|
66
|
+
}, E = (a, e) => {
|
|
67
|
+
e && e.forEach((t) => {
|
|
68
|
+
t.hasChildren && (a.push(t.id), E(a, t.children));
|
|
69
|
+
});
|
|
70
|
+
}, C = (a) => {
|
|
71
|
+
const e = a.concat();
|
|
72
|
+
for (let t = 0; t < e.length; ++t)
|
|
73
|
+
for (let r = t + 1; r < e.length; ++r)
|
|
74
|
+
e[t] === e[r] && e.splice(r--, 1);
|
|
75
|
+
return e;
|
|
76
|
+
}, _ = (a) => a ? a.map((e) => ({
|
|
77
|
+
key: e.id,
|
|
78
|
+
title: e.name,
|
|
79
|
+
isLeaf: !e.hasChildren,
|
|
80
|
+
children: _(e.children)
|
|
81
|
+
})) : [], x = (a, e) => {
|
|
82
|
+
e && e.forEach((t) => {
|
|
83
|
+
a[t.id] = { key: t.id, title: t.name, isLeaf: !t.hasChildren }, t.hasChildren && x(a, t.children);
|
|
84
|
+
});
|
|
85
|
+
}, h = () => {
|
|
86
|
+
const a = [];
|
|
87
|
+
a.push("原拥有: " + i.value.length);
|
|
88
|
+
let e = 0, t = 0;
|
|
89
|
+
const r = [], d = [];
|
|
90
|
+
i.value.forEach((c) => {
|
|
91
|
+
l.value.includes(c) || (t++, d.push(y.value[c].title));
|
|
92
|
+
}), l.value.forEach((c) => {
|
|
93
|
+
i.value.includes(c) || (e++, r.push(y.value[c].title));
|
|
94
|
+
}), (e > 0 || t > 0) && a.push(' <span style="color:#2a9d90">+' + e + "</span>"), t > 0 && a.push(' <span style="color:#e76e50">-' + t + "</span>"), (e > 0 || t > 0) && (a.push('<div style="">'), e > 0 && (a.push('<div><span style="color:#2a9d90">新增</span>:'), a.push(r.join(", ")), a.push("</div>")), t > 0 && (a.push('<div><span style="color:#e76e50">移除</span>:'), a.push(d.join(", ")), a.push("</div>")), a.push("</div>")), g.value = a.join(""), M("update:modelValue", l.value);
|
|
95
|
+
};
|
|
96
|
+
return (a, e) => {
|
|
97
|
+
const t = v("a-input-search"), r = v("a-button"), d = v("a-tree"), c = v("a-empty");
|
|
98
|
+
return p(), J("div", null, [
|
|
99
|
+
L(t, {
|
|
100
|
+
value: m.value,
|
|
101
|
+
"onUpdate:value": e[0] || (e[0] = (z) => m.value = z),
|
|
102
|
+
size: "middle",
|
|
103
|
+
placeholder: "搜索角色名称",
|
|
104
|
+
style: { width: "190px" },
|
|
105
|
+
onSearch: I
|
|
106
|
+
}, null, 8, ["value"]),
|
|
107
|
+
O(L(r, {
|
|
108
|
+
size: "middle",
|
|
109
|
+
onClick: q,
|
|
110
|
+
class: "search-back-button"
|
|
111
|
+
}, {
|
|
112
|
+
default: Q(() => [...e[1] || (e[1] = [
|
|
113
|
+
W(" 返回 ", -1)
|
|
114
|
+
])]),
|
|
115
|
+
_: 1
|
|
116
|
+
}, 512), [
|
|
117
|
+
[X, s.value]
|
|
118
|
+
]),
|
|
119
|
+
K("div", ee, [
|
|
120
|
+
!s.value && f.value.length > 0 ? (p(), S(d, {
|
|
121
|
+
key: 0,
|
|
122
|
+
checkable: "",
|
|
123
|
+
defaultExpandAll: "",
|
|
124
|
+
checkStrictly: "",
|
|
125
|
+
checkedKeys: l.value,
|
|
126
|
+
treeData: f.value,
|
|
127
|
+
onCheck: j,
|
|
128
|
+
onSelect: B
|
|
129
|
+
}, null, 8, ["checkedKeys", "treeData"])) : P("", !0),
|
|
130
|
+
s.value && u.value.length > 0 ? (p(), S(d, {
|
|
131
|
+
key: 1,
|
|
132
|
+
checkable: "",
|
|
133
|
+
checkStrictly: "",
|
|
134
|
+
expandedKeys: k.value,
|
|
135
|
+
checkedKeys: n.value,
|
|
136
|
+
treeData: u.value,
|
|
137
|
+
onCheck: A,
|
|
138
|
+
onSelect: F,
|
|
139
|
+
onExpand: U
|
|
140
|
+
}, null, 8, ["expandedKeys", "checkedKeys", "treeData"])) : P("", !0),
|
|
141
|
+
s.value && u.value.length === 0 ? (p(), S(c, {
|
|
142
|
+
key: 2,
|
|
143
|
+
description: "未找到相关角色",
|
|
144
|
+
image: Y(Z).PRESENTED_IMAGE_SIMPLE
|
|
145
|
+
}, null, 8, ["image"])) : P("", !0),
|
|
146
|
+
K("div", {
|
|
147
|
+
innerHTML: g.value,
|
|
148
|
+
class: "text"
|
|
149
|
+
}, null, 8, ae)
|
|
150
|
+
])
|
|
151
|
+
]);
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
export {
|
|
156
|
+
re as default
|
|
157
|
+
};
|