haiwei-module-admin 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 (100) hide show
  1. package/package.json +54 -0
  2. package/src/api/components/account.js +58 -0
  3. package/src/api/components/auditInfo.js +30 -0
  4. package/src/api/components/auth.js +47 -0
  5. package/src/api/components/cache.js +16 -0
  6. package/src/api/components/config.js +34 -0
  7. package/src/api/components/file.js +41 -0
  8. package/src/api/components/log.js +22 -0
  9. package/src/api/components/menu.js +68 -0
  10. package/src/api/components/mime.js +10 -0
  11. package/src/api/components/module.js +18 -0
  12. package/src/api/components/permission.js +25 -0
  13. package/src/api/components/role.js +73 -0
  14. package/src/api/components/tool.js +29 -0
  15. package/src/api/index.js +13 -0
  16. package/src/components/config-admin/index.vue +47 -0
  17. package/src/components/enum-checkbox/index.vue +31 -0
  18. package/src/components/enum-radio/index.vue +31 -0
  19. package/src/components/enum-select/index.vue +31 -0
  20. package/src/components/file-download/index.vue +81 -0
  21. package/src/components/file-img/index.vue +55 -0
  22. package/src/components/file-upload/index.vue +140 -0
  23. package/src/components/file-upload-img/index.vue +263 -0
  24. package/src/components/index.js +10 -0
  25. package/src/components/login-mode-select/index.vue +11 -0
  26. package/src/components/module-select/index.vue +11 -0
  27. package/src/components/platform-select/index.vue +28 -0
  28. package/src/components/role-select/index.vue +11 -0
  29. package/src/components/upload-mixins.js +127 -0
  30. package/src/config/index.js +18 -0
  31. package/src/index.js +69 -0
  32. package/src/main.js +5 -0
  33. package/src/module.js +10 -0
  34. package/src/routes/index.js +3 -0
  35. package/src/store/index.js +4 -0
  36. package/src/views/account/components/save/index.vue +65 -0
  37. package/src/views/account/index/cols.js +50 -0
  38. package/src/views/account/index/index.vue +127 -0
  39. package/src/views/account/index/page.js +57 -0
  40. package/src/views/auditInfo/components/details/index.vue +64 -0
  41. package/src/views/auditInfo/index/cols.js +63 -0
  42. package/src/views/auditInfo/index/index.vue +118 -0
  43. package/src/views/auditInfo/index/page.js +34 -0
  44. package/src/views/button/permission-bind/index.vue +50 -0
  45. package/src/views/cache/index/cols.js +10 -0
  46. package/src/views/cache/index/index.vue +64 -0
  47. package/src/views/cache/index/page.js +29 -0
  48. package/src/views/config/index.vue +43 -0
  49. package/src/views/config/library/components/auth/index.vue +165 -0
  50. package/src/views/config/library/components/component/index.vue +149 -0
  51. package/src/views/config/library/components/path/index.vue +45 -0
  52. package/src/views/config/library/components/quartz/index.vue +66 -0
  53. package/src/views/config/library/components/system/index.vue +58 -0
  54. package/src/views/config/library/form-mixins.js +25 -0
  55. package/src/views/config/library/index.vue +76 -0
  56. package/src/views/config/module/index.vue +64 -0
  57. package/src/views/config/page.js +21 -0
  58. package/src/views/file/index/cols.js +53 -0
  59. package/src/views/file/index/index.vue +52 -0
  60. package/src/views/file/index/page.js +42 -0
  61. package/src/views/home/components/bottom/index.vue +217 -0
  62. package/src/views/home/components/top-left/index.vue +43 -0
  63. package/src/views/home/components/top-right/index.vue +148 -0
  64. package/src/views/home/index.vue +27 -0
  65. package/src/views/home/page.js +15 -0
  66. package/src/views/icon/index.vue +92 -0
  67. package/src/views/icon/page.js +15 -0
  68. package/src/views/log/login-log/cols.js +43 -0
  69. package/src/views/log/login-log/index.vue +86 -0
  70. package/src/views/log/login-log/page.js +27 -0
  71. package/src/views/menu/components/add/components/link/index.vue +106 -0
  72. package/src/views/menu/components/add/components/mixins.js +83 -0
  73. package/src/views/menu/components/add/components/node/index.vue +53 -0
  74. package/src/views/menu/components/add/components/route/index.vue +122 -0
  75. package/src/views/menu/components/add/index.vue +86 -0
  76. package/src/views/menu/components/edit/components/link/index.vue +106 -0
  77. package/src/views/menu/components/edit/components/mixins.js +80 -0
  78. package/src/views/menu/components/edit/components/node/index.vue +53 -0
  79. package/src/views/menu/components/edit/components/route/index.vue +122 -0
  80. package/src/views/menu/components/edit/index.vue +95 -0
  81. package/src/views/menu/components/tree/index.vue +153 -0
  82. package/src/views/menu/index/cols.js +46 -0
  83. package/src/views/menu/index/index.vue +175 -0
  84. package/src/views/menu/index/page.js +48 -0
  85. package/src/views/mime/components/save/index.vue +45 -0
  86. package/src/views/mime/index/cols.js +16 -0
  87. package/src/views/mime/index/index.vue +55 -0
  88. package/src/views/mime/index/page.js +42 -0
  89. package/src/views/module/components/page-list/index.vue +234 -0
  90. package/src/views/module/components/permission-list/cols.js +36 -0
  91. package/src/views/module/components/permission-list/index.vue +90 -0
  92. package/src/views/module/index/index.vue +226 -0
  93. package/src/views/module/index/page.js +21 -0
  94. package/src/views/role/components/menu-bind/index.vue +85 -0
  95. package/src/views/role/components/page-bind/index.vue +221 -0
  96. package/src/views/role/components/platform-bind/index.vue +105 -0
  97. package/src/views/role/components/save/index.vue +45 -0
  98. package/src/views/role/components/tree/index.vue +112 -0
  99. package/src/views/role/index/index.vue +67 -0
  100. package/src/views/role/index/page.js +64 -0
@@ -0,0 +1,45 @@
1
+ <template>
2
+ <nm-form-dialog ref="form" v-bind="form" v-on="on" :visible.sync="visible_">
3
+ <el-row>
4
+ <el-col :span="20" :offset="1">
5
+ <el-form-item label="扩展名:" prop="ext">
6
+ <el-input v-model="form.model.ext" clearable />
7
+ </el-form-item>
8
+ <el-form-item label="值:" prop="value">
9
+ <el-input v-model="form.model.value" clearable />
10
+ </el-form-item>
11
+ </el-col>
12
+ </el-row>
13
+ </nm-form-dialog>
14
+ </template>
15
+ <script>
16
+ import { mixins } from 'netmodular-ui'
17
+
18
+ // 接口
19
+ const { add, edit, update } = $api.admin.mime
20
+
21
+ export default {
22
+ mixins: [mixins.formSave],
23
+ data() {
24
+ return {
25
+ title: 'MIME',
26
+ actions: {
27
+ add,
28
+ edit,
29
+ update
30
+ },
31
+ form: {
32
+ width: '40%',
33
+ model: {
34
+ ext: '',
35
+ value: ''
36
+ },
37
+ rules: {
38
+ ext: [{ required: true, message: '请输入扩展名' }],
39
+ value: [{ required: true, message: '请输入值' }]
40
+ }
41
+ }
42
+ }
43
+ }
44
+ }
45
+ </script>
@@ -0,0 +1,16 @@
1
+ export default [
2
+ {
3
+ name: 'id',
4
+ label: '编号',
5
+ width: 250,
6
+ show: false
7
+ },
8
+ {
9
+ name: 'ext',
10
+ label: '扩展名'
11
+ },
12
+ {
13
+ name: 'value',
14
+ label: '值'
15
+ }
16
+ ]
@@ -0,0 +1,55 @@
1
+ <template>
2
+ <nm-container>
3
+ <nm-list ref="list" v-bind="list">
4
+ <!--查询条件-->
5
+ <template v-slot:querybar>
6
+ <el-form-item label="扩展名:" prop="ext">
7
+ <el-input v-model="list.model.ext" clearable />
8
+ </el-form-item>
9
+ </template>
10
+
11
+ <!--按钮-->
12
+ <template v-slot:querybar-buttons>
13
+ <nm-button v-bind="buttons.add" @click="add" />
14
+ </template>
15
+
16
+ <!--操作列-->
17
+ <template v-slot:col-operation="{ row }">
18
+ <nm-button v-bind="buttons.edit" @click="edit(row)" />
19
+ <nm-button-delete v-bind="buttons.del" :id="row.id" :action="removeAction" @success="refresh" />
20
+ </template>
21
+ </nm-list>
22
+
23
+ <!--编辑-->
24
+ <save-page :id="curr.id" :visible.sync="dialog.save" @success="refresh" />
25
+ </nm-container>
26
+ </template>
27
+ <script>
28
+ import { mixins } from 'netmodular-ui'
29
+ import page from './page'
30
+ import cols from './cols'
31
+ import SavePage from '../components/save'
32
+
33
+ // 接口
34
+ const api = $api.admin.mime
35
+
36
+ export default {
37
+ name: page.name,
38
+ mixins: [mixins.list],
39
+ components: { SavePage },
40
+ data() {
41
+ return {
42
+ list: {
43
+ title: page.title,
44
+ cols,
45
+ action: api.query,
46
+ model: {
47
+ ext: ''
48
+ }
49
+ },
50
+ removeAction: api.remove,
51
+ buttons: page.buttons
52
+ }
53
+ }
54
+ }
55
+ </script>
@@ -0,0 +1,42 @@
1
+ /** 页面信息 */
2
+ const page = new (function() {
3
+ this.title = 'MIME'
4
+ this.icon = 'media'
5
+ this.name = 'admin_mime'
6
+ this.path = '/admin/mime'
7
+
8
+ // 关联权限
9
+ this.permissions = [`${this.name}_query_get`]
10
+
11
+ this.buttons = {
12
+ add: {
13
+ text: '添加',
14
+ type: 'success',
15
+ code: `${this.name}_add`,
16
+ icon: 'add',
17
+ permissions: [`${this.name}_add_post`]
18
+ },
19
+ edit: {
20
+ text: '编辑',
21
+ type: 'text',
22
+ icon: 'edit',
23
+ code: `${this.name}_edit`,
24
+ permissions: [`${this.name}_edit_get`, `${this.name}_update_post`]
25
+ },
26
+ del: {
27
+ text: '删除',
28
+ type: 'text',
29
+ icon: 'delete',
30
+ code: `${this.name}_del`,
31
+ permissions: [`${this.name}_delete_delete`]
32
+ }
33
+ }
34
+ })()
35
+
36
+ /** 路由信息 */
37
+ export const route = {
38
+ page,
39
+ component: () => import(/* webpackChunkName: "Admin.Mime" */ './index')
40
+ }
41
+
42
+ export default page
@@ -0,0 +1,234 @@
1
+ <template>
2
+ <nm-dialog v-bind="dialog" :visible.sync="visible_">
3
+ <template v-slot:title> 页面列表({{ module.name }}) </template>
4
+ <div class="nm-module-page-list">
5
+ <section class="left">
6
+ <el-tabs ref="pageTab" v-model="pageTab" tab-position="left" style="height: 100%;">
7
+ <el-tab-pane v-for="page in pages" :key="page.code" :name="page.code" :label="page.name">
8
+ <span slot="label"><nm-icon :name="page.icon" /> {{ page.name }}</span>
9
+ </el-tab-pane>
10
+ </el-tabs>
11
+ </section>
12
+ <section class="right">
13
+ <nm-tabs>
14
+ <el-tabs type="card">
15
+ <el-tab-pane>
16
+ <span slot="label"><i class="el-icon-date"></i> 详情</span>
17
+ <nm-scrollbar style="height:100%">
18
+ <el-divider content-position="left">页面信息</el-divider>
19
+ <el-form>
20
+ <el-row>
21
+ <el-col :span="10" :offset="1">
22
+ <el-form-item label="标题:">
23
+ <span>{{ page.name }} </span>
24
+ </el-form-item>
25
+ </el-col>
26
+ <el-col :span="10">
27
+ <el-form-item label="图标:">
28
+ <nm-icon class="nm-size-25" :name="page.icon" />
29
+ </el-form-item>
30
+ </el-col>
31
+ </el-row>
32
+ <el-row>
33
+ <el-col :span="10" :offset="1">
34
+ <el-form-item label="路由名称:">
35
+ <span>{{ page.code }} </span>
36
+ </el-form-item>
37
+ </el-col>
38
+ <el-col :span="10">
39
+ <el-form-item label="路由路径:">
40
+ <span>{{ page.path }} </span>
41
+ </el-form-item>
42
+ </el-col>
43
+ </el-row>
44
+ <el-row>
45
+ <el-col :span="10" :offset="1">
46
+ <el-form-item label="路由缓存:">
47
+ <span><el-switch :value="page.cache" disabled> </el-switch> </span>
48
+ </el-form-item>
49
+ </el-col>
50
+ <el-col :span="10">
51
+ <el-form-item label="框架内:">
52
+ <span><el-switch :value="page.frameIn" disabled> </el-switch> </span>
53
+ </el-form-item>
54
+ </el-col>
55
+ </el-row>
56
+ <el-row>
57
+ <el-col :span="10" :offset="1">
58
+ <el-form-item label="权限验证:">
59
+ <span><el-switch :value="!page.noPermission" disabled> </el-switch> </span>
60
+ </el-form-item>
61
+ </el-col>
62
+ </el-row>
63
+ </el-form>
64
+ <el-divider content-position="left">关联权限</el-divider>
65
+ <el-table :data="pagePermissions" border stripe size="mini" style="width: 100%">
66
+ <el-table-column prop="name" label="名称" width="180" align="center"> </el-table-column>
67
+ <el-table-column prop="controller" label="控制器" width="120" align="center"> </el-table-column>
68
+ <el-table-column prop="action" label="方法" align="center"> </el-table-column>
69
+ <el-table-column prop="httpMethod" label="请求方式" width="70" align="center">
70
+ <template slot-scope="scope">
71
+ {{ getHttpMethodName(scope.row.httpMethod) }}
72
+ </template>
73
+ </el-table-column>
74
+ <el-table-column prop="code" label="编码" align="center" show-overflow-tooltip> </el-table-column>
75
+ </el-table>
76
+ </nm-scrollbar>
77
+ </el-tab-pane>
78
+ <el-tab-pane>
79
+ <span slot="label"><i class="el-icon-date"></i> 按钮</span>
80
+ <nm-box page>
81
+ <el-table :data="buttons" border stripe size="mini" style="width: 100%;">
82
+ <el-table-column prop="text" label="名称" align="center" width="100"> </el-table-column>
83
+ <el-table-column prop="icon" label="图标" align="center" width="100">
84
+ <template v-slot="scope">
85
+ <nm-icon v-if="scope.row.icon" :name="scope.row.icon" class="nm-size-18" />
86
+ </template>
87
+ </el-table-column>
88
+ <el-table-column prop="code" label="编码" align="center"> </el-table-column>
89
+ <el-table-column prop="permissions" label="关联权限" align="center">
90
+ <template v-slot="scope">
91
+ <p v-for="p in scope.row.permissions" :key="p">{{ p }}</p>
92
+ </template>
93
+ </el-table-column>
94
+ </el-table>
95
+ </nm-box>
96
+ </el-tab-pane>
97
+ </el-tabs>
98
+ </nm-tabs>
99
+ </section>
100
+ </div>
101
+ </nm-dialog>
102
+ </template>
103
+ <script>
104
+ import { mapState } from 'vuex'
105
+ import { mixins } from 'netmodular-ui'
106
+
107
+ const { queryByCodes } = $api.admin.permission
108
+
109
+ export default {
110
+ mixins: [mixins.visible],
111
+ data() {
112
+ return {
113
+ dialog: {
114
+ icon: 'permission',
115
+ width: '900px',
116
+ height: '80%',
117
+ noScrollbar: true
118
+ },
119
+ pageTab: '',
120
+ page: {
121
+ name: '',
122
+ code: '',
123
+ icon: '',
124
+ path: '',
125
+ permissions: [],
126
+ buttons: []
127
+ },
128
+ pagePermissions: [],
129
+ buttons: []
130
+ }
131
+ },
132
+ props: {
133
+ module: Object
134
+ },
135
+ computed: {
136
+ ...mapState('app/page', { allPages: s => s.pages }),
137
+ pages() {
138
+ if (!this.module.code) return []
139
+ return this.allPages.filter(m => m.moduleCode.toLowerCase() === this.module.code.toLowerCase())
140
+ }
141
+ },
142
+ methods: {
143
+ getHttpMethodName(httpMethod) {
144
+ switch (httpMethod) {
145
+ case 0:
146
+ return 'GET'
147
+ case 1:
148
+ return 'PUT'
149
+ case 2:
150
+ return 'POST'
151
+ case 3:
152
+ return 'DELETE'
153
+ case 4:
154
+ return 'HEAD'
155
+ case 5:
156
+ return 'OPTIONS'
157
+ case 6:
158
+ return 'TRACE'
159
+ case 7:
160
+ return 'PATCH'
161
+ }
162
+ }
163
+ },
164
+ watch: {
165
+ pages(val) {
166
+ if (val.length > 0) {
167
+ this.pageTab = val[0].code
168
+ } else {
169
+ this.pageTab = ''
170
+ }
171
+ },
172
+ pageTab(val) {
173
+ this.pagePermissions = []
174
+ this.buttons = []
175
+ if (val) this.page = this.pages.find(m => m.code === val)
176
+ if (!this.page) {
177
+ this.page = {
178
+ name: '',
179
+ code: '',
180
+ icon: '',
181
+ permissions: [],
182
+ buttons: []
183
+ }
184
+ } else {
185
+ queryByCodes(this.page.permissions).then(data => {
186
+ if (data) {
187
+ this.pagePermissions = data
188
+ }
189
+ })
190
+
191
+ if (this.page.buttons) {
192
+ for (let key in this.page.buttons) {
193
+ this.buttons.push(this.page.buttons[key])
194
+ }
195
+ }
196
+ }
197
+ }
198
+ }
199
+ }
200
+ </script>
201
+ <style lang="scss">
202
+ .nm-module-page-list {
203
+ display: flex;
204
+ flex-direction: row;
205
+ align-items: stretch;
206
+ height: 100%;
207
+
208
+ .left {
209
+ flex-shrink: 0;
210
+ .el-tabs__header {
211
+ margin-right: 0;
212
+ }
213
+ .el-tabs__item {
214
+ text-align: left !important;
215
+ }
216
+ }
217
+ .right {
218
+ flex-grow: 1;
219
+
220
+ .el-tab-pane {
221
+ box-sizing: border-box;
222
+
223
+ .el-scrollbar__view {
224
+ padding: 10px 20px;
225
+ }
226
+ }
227
+ }
228
+ }
229
+ .left-pane {
230
+ .el-tabs__content {
231
+ display: none;
232
+ }
233
+ }
234
+ </style>
@@ -0,0 +1,36 @@
1
+ export default [
2
+ {
3
+ name: 'id',
4
+ label: '编号',
5
+ show: false,
6
+ width: 260
7
+ },
8
+ {
9
+ name: 'name',
10
+ label: '名称'
11
+ },
12
+ {
13
+ name: 'moduleCode',
14
+ label: '模块编码',
15
+ show: false
16
+ },
17
+ {
18
+ name: 'controller',
19
+ label: '控制器',
20
+ width: '120'
21
+ },
22
+ {
23
+ name: 'action',
24
+ label: '方法'
25
+ },
26
+ {
27
+ name: 'httpMethod',
28
+ label: '请求方式',
29
+ width: '80'
30
+ },
31
+ {
32
+ name: 'code',
33
+ label: '唯一编码',
34
+ width: '300'
35
+ }
36
+ ]
@@ -0,0 +1,90 @@
1
+ <template>
2
+ <nm-list-dialog v-bind="dialog" :visible.sync="visible_" @open="onOpen">
3
+ <template v-slot:title> 接口权限列表({{ module.name }}) </template>
4
+ <nm-list ref="list" v-bind="list">
5
+ <!--查询条件-->
6
+ <template v-slot:querybar>
7
+ <el-form-item label="名称:" prop="name">
8
+ <el-input v-model="list.model.name" clearable />
9
+ </el-form-item>
10
+ </template>
11
+
12
+ <template v-slot:col-httpMethod="{ row }"> {{ getHttpMethodName(row.httpMethod) }} </template>
13
+ </nm-list>
14
+ </nm-list-dialog>
15
+ </template>
16
+ <script>
17
+ import { mixins } from 'netmodular-ui'
18
+ import cols from './cols'
19
+ const { query } = $api.admin.permission
20
+
21
+ export default {
22
+ mixins: [mixins.visible],
23
+ data() {
24
+ return {
25
+ dialog: {
26
+ icon: 'permission',
27
+ width: '900px'
28
+ },
29
+ list: {
30
+ cols,
31
+ noHeader: true,
32
+ noOperation: true,
33
+ action: this.query,
34
+ queryOnCreated: false,
35
+ noFooter: true,
36
+ model: {
37
+ name: ''
38
+ }
39
+ },
40
+ rows: []
41
+ }
42
+ },
43
+ props: {
44
+ module: Object
45
+ },
46
+ methods: {
47
+ refresh() {
48
+ query({ moduleCode: this.module.code }).then(rows => {
49
+ this.rows = rows
50
+ this.$refs.list.refresh()
51
+ })
52
+ },
53
+ query() {
54
+ const name = this.list.model.name
55
+ const rows = name ? this.rows.filter(m => m.name.includes(name)) : this.rows
56
+ return new Promise(resolve => {
57
+ resolve({
58
+ rows: rows,
59
+ total: rows.length
60
+ })
61
+ })
62
+ },
63
+ onOpen() {
64
+ this.list.model.name = ''
65
+ this.list.model.moduleCode = this.module.code
66
+ this.refresh()
67
+ },
68
+ getHttpMethodName(httpMethod) {
69
+ switch (httpMethod) {
70
+ case 0:
71
+ return 'GET'
72
+ case 1:
73
+ return 'PUT'
74
+ case 2:
75
+ return 'POST'
76
+ case 3:
77
+ return 'DELETE'
78
+ case 4:
79
+ return 'HEAD'
80
+ case 5:
81
+ return 'OPTIONS'
82
+ case 6:
83
+ return 'TRACE'
84
+ case 7:
85
+ return 'PATCH'
86
+ }
87
+ }
88
+ }
89
+ }
90
+ </script>