vue3-admin-gpt 1.0.0

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 (118) hide show
  1. package/.env.development +14 -0
  2. package/.env.production +14 -0
  3. package/LICENSE +21 -0
  4. package/README.en.md +106 -0
  5. package/README.md +104 -0
  6. package/build-zip.cjs +53 -0
  7. package/cli.js +110 -0
  8. package/jsconfig.json +9 -0
  9. package/package.json +92 -0
  10. package/public/index.html +20 -0
  11. package/public/robots.txt +2 -0
  12. package/rspack.config.js +282 -0
  13. package/rspack.js +162 -0
  14. package/src/App.vue +9 -0
  15. package/src/api/icon.js +9 -0
  16. package/src/api/router.js +9 -0
  17. package/src/api/table.js +25 -0
  18. package/src/api/tree.js +9 -0
  19. package/src/api/user.js +34 -0
  20. package/src/assets/error_images/401.png +0 -0
  21. package/src/assets/error_images/404.png +0 -0
  22. package/src/assets/error_images/cloud.png +0 -0
  23. package/src/assets/login_images/background.jpg +0 -0
  24. package/src/assets/logo.png +0 -0
  25. package/src/assets/qr_logo/lqr_logo.png +0 -0
  26. package/src/assets/vuejs-fill.svg +4 -0
  27. package/src/components/VabPageHeader/index.vue +133 -0
  28. package/src/config/index.js +7 -0
  29. package/src/config/net.config.js +20 -0
  30. package/src/config/permission.js +136 -0
  31. package/src/config/setting.config.js +62 -0
  32. package/src/config/settings.js +6 -0
  33. package/src/config/theme.config.js +14 -0
  34. package/src/layouts/EmptyLayout.vue +3 -0
  35. package/src/layouts/components/VabAppMain/index.vue +109 -0
  36. package/src/layouts/components/VabAvatar/index.vue +255 -0
  37. package/src/layouts/components/VabBreadcrumb/index.vue +61 -0
  38. package/src/layouts/components/VabFullScreen/index.vue +61 -0
  39. package/src/layouts/components/VabLogo/index.vue +94 -0
  40. package/src/layouts/components/VabNav/index.vue +176 -0
  41. package/src/layouts/components/VabSide/components/VabMenuItem.vue +80 -0
  42. package/src/layouts/components/VabSide/components/VabSideItem.vue +100 -0
  43. package/src/layouts/components/VabSide/components/VabSubmenu.vue +56 -0
  44. package/src/layouts/components/VabSide/index.vue +123 -0
  45. package/src/layouts/components/VabTabs/index.vue +500 -0
  46. package/src/layouts/components/VabTheme/index.vue +603 -0
  47. package/src/layouts/components/VabTop/index.vue +286 -0
  48. package/src/layouts/export.js +29 -0
  49. package/src/layouts/index.vue +339 -0
  50. package/src/main.js +40 -0
  51. package/src/plugins/echarts.js +4 -0
  52. package/src/plugins/index.js +44 -0
  53. package/src/plugins/support.js +16 -0
  54. package/src/router/index.js +400 -0
  55. package/src/store/index.js +26 -0
  56. package/src/store/modules/errorLog.js +27 -0
  57. package/src/store/modules/routes.js +60 -0
  58. package/src/store/modules/settings.js +73 -0
  59. package/src/store/modules/table.js +22 -0
  60. package/src/store/modules/tabsBar.js +109 -0
  61. package/src/store/modules/user.js +131 -0
  62. package/src/styles/element-variables.scss +13 -0
  63. package/src/styles/loading.scss +345 -0
  64. package/src/styles/nav-icons.scss +52 -0
  65. package/src/styles/normalize.scss +353 -0
  66. package/src/styles/spinner/dots.css +68 -0
  67. package/src/styles/spinner/gauge.css +104 -0
  68. package/src/styles/spinner/inner-circles.css +51 -0
  69. package/src/styles/spinner/plus.css +341 -0
  70. package/src/styles/themes/default.scss +1 -0
  71. package/src/styles/transition.scss +18 -0
  72. package/src/styles/vab.scss +476 -0
  73. package/src/styles/variables.scss +69 -0
  74. package/src/utils/accessToken.js +56 -0
  75. package/src/utils/eventBus.js +8 -0
  76. package/src/utils/handleRoutes.js +100 -0
  77. package/src/utils/index.js +231 -0
  78. package/src/utils/message.js +67 -0
  79. package/src/utils/pageTitle.js +11 -0
  80. package/src/utils/password.js +43 -0
  81. package/src/utils/permission.js +19 -0
  82. package/src/utils/request.js +187 -0
  83. package/src/utils/static.js +81 -0
  84. package/src/utils/vab.js +218 -0
  85. package/src/utils/validate.js +48 -0
  86. package/src/views/401.vue +302 -0
  87. package/src/views/404.vue +302 -0
  88. package/src/views/demo/index.vue +591 -0
  89. package/src/views/index/index.vue +1489 -0
  90. package/src/views/login/index.vue +456 -0
  91. package/src/views/register/index.vue +524 -0
  92. package/src/views/vab/calendar.vue +488 -0
  93. package/src/views/vab/campaign.vue +1006 -0
  94. package/src/views/vab/chart.vue +189 -0
  95. package/src/views/vab/customer.vue +666 -0
  96. package/src/views/vab/editor.vue +84 -0
  97. package/src/views/vab/form.vue +151 -0
  98. package/src/views/vab/help.vue +390 -0
  99. package/src/views/vab/icon.vue +113 -0
  100. package/src/views/vab/knowledge.vue +820 -0
  101. package/src/views/vab/nested/menu1/menu2/menu3.vue +29 -0
  102. package/src/views/vab/nested/menu1/menu2.vue +33 -0
  103. package/src/views/vab/nested/menu1.vue +33 -0
  104. package/src/views/vab/nested.vue +97 -0
  105. package/src/views/vab/notification.vue +416 -0
  106. package/src/views/vab/order.vue +507 -0
  107. package/src/views/vab/permissions.vue +214 -0
  108. package/src/views/vab/product.vue +724 -0
  109. package/src/views/vab/project.vue +559 -0
  110. package/src/views/vab/settings.vue +319 -0
  111. package/src/views/vab/statistics.vue +431 -0
  112. package/src/views/vab/table.vue +110 -0
  113. package/src/views/vab/task.vue +613 -0
  114. package/src/views/vab/team.vue +662 -0
  115. package/src/views/vab/tree.vue +44 -0
  116. package/src/views/vab/upload.vue +180 -0
  117. package/src/views/vab/vue3Demo/index.vue +103 -0
  118. package/src/views/vab/workflow.vue +863 -0
@@ -0,0 +1,214 @@
1
+ <template>
2
+ <div class="permissions-container">
3
+ <el-card shadow="never">
4
+ <el-tabs v-model="activeTab">
5
+ <el-tab-pane label="角色权限" name="role">
6
+ <el-table :data="roles" style="width: 100%" row-key="id">
7
+ <el-table-column prop="name" label="角色名称" width="180" />
8
+ <el-table-column label="权限">
9
+ <template #default="{ row }">
10
+ <el-tag
11
+ v-for="permission in row.permissions"
12
+ :key="permission"
13
+ style="margin-right: 10px"
14
+ >
15
+ {{ permissionMap[permission] || permission }}
16
+ </el-tag>
17
+ </template>
18
+ </el-table-column>
19
+ <el-table-column label="操作" width="180">
20
+ <template #default="{ row }">
21
+ <el-button type="text" @click="editRole(row)">编辑</el-button>
22
+ <el-button type="text" @click="deleteRole(row)">删除</el-button>
23
+ </template>
24
+ </el-table-column>
25
+ </el-table>
26
+ </el-tab-pane>
27
+ <el-tab-pane label="用户管理" name="user">
28
+ <el-table :data="users" style="width: 100%" row-key="id">
29
+ <el-table-column prop="name" label="用户名" width="180" />
30
+ <el-table-column label="角色">
31
+ <template #default="{ row }">
32
+ <el-tag
33
+ v-for="role in row.roles"
34
+ :key="role"
35
+ style="margin-right: 10px"
36
+ >
37
+ {{ roleMap[role] || role }}
38
+ </el-tag>
39
+ </template>
40
+ </el-table-column>
41
+ <el-table-column prop="email" label="邮箱" width="200" />
42
+ <el-table-column label="操作" width="180">
43
+ <template #default="{ row }">
44
+ <el-button type="text" @click="editUser(row)">编辑</el-button>
45
+ <el-button type="text" @click="deleteUser(row)">删除</el-button>
46
+ </template>
47
+ </el-table-column>
48
+ </el-table>
49
+ </el-tab-pane>
50
+ </el-tabs>
51
+ </el-card>
52
+
53
+ <!-- 角色编辑对话框 -->
54
+ <el-dialog v-model="roleDialogVisible" title="编辑角色" width="500px">
55
+ <el-form :model="currentRole" label-width="80px">
56
+ <el-form-item label="角色名称">
57
+ <el-input v-model="currentRole.name" />
58
+ </el-form-item>
59
+ <el-form-item label="权限">
60
+ <el-checkbox-group v-model="currentRole.permissions">
61
+ <el-checkbox
62
+ v-for="(label, key) in permissionMap"
63
+ :key="key"
64
+ :label="key"
65
+ >
66
+ {{ label }}
67
+ </el-checkbox>
68
+ </el-checkbox-group>
69
+ </el-form-item>
70
+ </el-form>
71
+ <template #footer>
72
+ <span class="dialog-footer">
73
+ <el-button @click="roleDialogVisible = false">取消</el-button>
74
+ <el-button type="primary" @click="saveRole">保存</el-button>
75
+ </span>
76
+ </template>
77
+ </el-dialog>
78
+
79
+ <!-- 用户编辑对话框 -->
80
+ <el-dialog v-model="userDialogVisible" title="编辑用户" width="500px">
81
+ <el-form :model="currentUser" label-width="80px">
82
+ <el-form-item label="用户名">
83
+ <el-input v-model="currentUser.name" />
84
+ </el-form-item>
85
+ <el-form-item label="邮箱">
86
+ <el-input v-model="currentUser.email" />
87
+ </el-form-item>
88
+ <el-form-item label="角色">
89
+ <el-checkbox-group v-model="currentUser.roles">
90
+ <el-checkbox
91
+ v-for="(label, key) in roleMap"
92
+ :key="key"
93
+ :label="key"
94
+ >
95
+ {{ label }}
96
+ </el-checkbox>
97
+ </el-checkbox-group>
98
+ </el-form-item>
99
+ </el-form>
100
+ <template #footer>
101
+ <span class="dialog-footer">
102
+ <el-button @click="userDialogVisible = false">取消</el-button>
103
+ <el-button type="primary" @click="saveUser">保存</el-button>
104
+ </span>
105
+ </template>
106
+ </el-dialog>
107
+ </div>
108
+ </template>
109
+
110
+ <script>
111
+ export default {
112
+ name: "Permissions",
113
+ data() {
114
+ return {
115
+ activeTab: "role",
116
+ roleDialogVisible: false,
117
+ userDialogVisible: false,
118
+ currentRole: {
119
+ id: "",
120
+ name: "",
121
+ permissions: [],
122
+ },
123
+ currentUser: {
124
+ id: "",
125
+ name: "",
126
+ email: "",
127
+ roles: [],
128
+ },
129
+ roles: [
130
+ {
131
+ id: "1",
132
+ name: "管理员",
133
+ permissions: ["user:create", "user:edit", "user:delete", "role:assign"],
134
+ },
135
+ {
136
+ id: "2",
137
+ name: "编辑者",
138
+ permissions: ["user:create", "user:edit"],
139
+ },
140
+ {
141
+ id: "3",
142
+ name: "访客",
143
+ permissions: [],
144
+ },
145
+ ],
146
+ users: [
147
+ {
148
+ id: "1",
149
+ name: "张三",
150
+ email: "zhangsan@example.com",
151
+ roles: ["1"],
152
+ },
153
+ {
154
+ id: "2",
155
+ name: "李四",
156
+ email: "lisi@example.com",
157
+ roles: ["2"],
158
+ },
159
+ {
160
+ id: "3",
161
+ name: "王五",
162
+ email: "wangwu@example.com",
163
+ roles: ["3"],
164
+ },
165
+ ],
166
+ permissionMap: {
167
+ "user:create": "创建用户",
168
+ "user:edit": "编辑用户",
169
+ "user:delete": "删除用户",
170
+ "role:assign": "分配角色",
171
+ },
172
+ roleMap: {
173
+ "1": "管理员",
174
+ "2": "编辑者",
175
+ "3": "访客",
176
+ },
177
+ };
178
+ },
179
+ methods: {
180
+ editRole(role) {
181
+ this.currentRole = { ...role };
182
+ this.roleDialogVisible = true;
183
+ },
184
+ deleteRole(role) {
185
+ this.$message.warning(`删除角色: ${role.name}`);
186
+ },
187
+ saveRole() {
188
+ this.$message.success("角色保存成功");
189
+ this.roleDialogVisible = false;
190
+ },
191
+ editUser(user) {
192
+ this.currentUser = { ...user };
193
+ this.userDialogVisible = true;
194
+ },
195
+ deleteUser(user) {
196
+ this.$message.warning(`删除用户: ${user.name}`);
197
+ },
198
+ saveUser() {
199
+ this.$message.success("用户保存成功");
200
+ this.userDialogVisible = false;
201
+ },
202
+ },
203
+ };
204
+ </script>
205
+
206
+ <style lang="scss" scoped>
207
+ .permissions-container {
208
+ padding: 20px;
209
+
210
+ .el-tag {
211
+ margin-bottom: 5px;
212
+ }
213
+ }
214
+ </style>