@sunny-base/effects 0.0.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.
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # @effects 业务功能模块
2
+
3
+ 此目录包含与业务逻辑紧密相关但具有通用性的公共业务模块。
4
+
5
+ ## 目录说明
6
+
7
+ 这里的模块虽然涉及具体的业务场景,但设计上支持抽离和复用。旨在为不同应用提供标准化的业务功能组件。
8
+
9
+ ## 规划
10
+
11
+ 后续计划将这些模块打包并发布到 NPM 仓库,以便进行统一的版本管理和分发。
package/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export * from './user/api/user.js';
2
+ import UserQuery from './user/UserQuery.vue';
3
+ export { UserQuery };
4
+
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@sunny-base/effects",
3
+ "version": "0.0.1",
4
+ "publishConfig": {
5
+ "access": "public"
6
+ },
7
+ "main": "./index.js",
8
+ "module": "./index.js",
9
+ "types": "./index.js",
10
+ "exports": {
11
+ ".": "./index.js"
12
+ },
13
+ "scripts": {
14
+ "lint": "eslint ."
15
+ },
16
+ "peerDependencies": {
17
+ "vue": "2.7.14",
18
+ "element-ui": "2.15.13",
19
+ "sunnygroup-components": "^1.0.261"
20
+ },
21
+ "dependencies": {
22
+ "@config/tailwind-config": "workspace:^",
23
+ "@core/ui": "workspace:*",
24
+ "@core/utils": "workspace:*"
25
+ },
26
+ "devDependencies": {
27
+ "autoprefixer": "^10.4.19",
28
+ "postcss": "^8.4.38"
29
+ }
30
+ }
@@ -0,0 +1,359 @@
1
+ <template>
2
+ <div class="userManagement commonQueryDiv">
3
+ <kunkka-ux-grid
4
+ ref="kunkka-ux-grid"
5
+ :scrollY="scrollY"
6
+ :scrollX="scrollX"
7
+ v-bind="userManagement.tableAttrs"
8
+ @toggleToolbarClick="toggleToolbarClick"
9
+ @selection-change="toggleSelectRow"
10
+ @row-dblclick="toggleDblclickRow"
11
+ />
12
+ <!-- 新增修改弹窗 -->
13
+ <KunkkaModal
14
+ ref="userModal"
15
+ width="415px"
16
+ :visible.sync="userManagement.dialog.visible"
17
+ :can-fullscreen="true"
18
+ :show-close="false"
19
+ :close-on-click-modal="false"
20
+ :title="userManagement.dialog.title"
21
+ @ok="handleOk"
22
+ >
23
+ <kunkka-form
24
+ ref="kunkka-form"
25
+ :form="userManagement.dialog.form"
26
+ :model="userManagement.dialog.model"
27
+ :events="userManagement.dialog.events"
28
+ label-width="100px"
29
+ :lg="24"
30
+ :gutter="20"
31
+ :show-message="false"
32
+ @inputSearchClick="inputSearchClick"
33
+ />
34
+ </KunkkaModal>
35
+
36
+ <!-- 用户授权弹窗 -->
37
+ <KunkkaModal
38
+ ref="userAuthorizationModal"
39
+ :visible.sync="userManagement.userAuthorization.visible"
40
+ :can-fullscreen="true"
41
+ :show-close="false"
42
+ :title="userManagement.userAuthorization.title"
43
+ @ok="handleUserAuthorizationOk"
44
+ >
45
+ <user-authorization
46
+ v-if="userManagement.userAuthorization.visible"
47
+ ref="userAuthorization"
48
+ />
49
+ </KunkkaModal>
50
+
51
+ <!-- mac地址绑定弹窗 -->
52
+ <KunkkaModal
53
+ ref="macAddressModal"
54
+ :visible.sync="userManagement.macAddress.visible"
55
+ :can-fullscreen="true"
56
+ :show-close="false"
57
+ :title="userManagement.macAddress.title"
58
+ @ok="handleMacAddressOk"
59
+ >
60
+ <mac-address
61
+ v-if="userManagement.macAddress.visible"
62
+ :table-data="userManagement.macAddress.tableData"
63
+ />
64
+ </KunkkaModal>
65
+
66
+ <!-- 数据权限配置弹窗 -->
67
+ <KunkkaModal
68
+ ref="otherAuthModal"
69
+ width="950px"
70
+ :height="500"
71
+ :visible.sync="userManagement.otherAuth.visible"
72
+ :can-fullscreen="true"
73
+ :show-close="false"
74
+ :title="userManagement.otherAuth.title"
75
+ @ok="handleOtherAuthOk"
76
+ >
77
+ <other-auth
78
+ v-if="userManagement.otherAuth.visible"
79
+ :table-data="userManagement.otherAuth.tableData"
80
+ />
81
+ </KunkkaModal>
82
+
83
+ <!-- 用户详情弹窗 -->
84
+ <KunkkaModal
85
+ ref="userDetailModal"
86
+ :visible.sync="userManagement.userDetail.visible"
87
+ :can-fullscreen="true"
88
+ :show-close="false"
89
+ :title="userManagement.userDetail.title"
90
+ @ok="handleUserDetailOk"
91
+ >
92
+ <user-detail
93
+ v-if="userManagement.userDetail.visible"
94
+ :table-data="userManagement.userDetail.tableData"
95
+ :form-data="userManagement.userDetail.formData"
96
+ />
97
+ </KunkkaModal>
98
+ <!-- 资源国际化配置 -->
99
+ <!-- <i18nDataDialog /> -->
100
+
101
+ <kunkka-search-dialog
102
+ ref="kunkka-search-dialog"
103
+ @submitAction="submitAction"
104
+ />
105
+
106
+ <!-- 导出组件 -->
107
+ <exportDialog />
108
+
109
+ <!-- 导入弹窗 -->
110
+ <importDialog />
111
+ </div>
112
+ </template>
113
+ <script>
114
+ /* eslint-disable no-async-promise-executor */
115
+ import { mapGetters } from 'vuex'
116
+ import list from '@/mixins/list'
117
+ import UserAuthorization from './compontents/UserAuthorization'
118
+ import UserDetail from './compontents/UserDetail'
119
+ import MacAddress from './compontents/MacAddress'
120
+ import otherAuth from './compontents/otherAuth'
121
+ // import i18nDataDialog from '@/components/i18nDataDialog'
122
+ export default {
123
+ name: 'UserManagement',
124
+ components: {
125
+ UserAuthorization,
126
+ // i18nDataDialog,
127
+ UserDetail,
128
+ MacAddress,
129
+ otherAuth
130
+ },
131
+ mixins: [list],
132
+ data() {
133
+ return {
134
+ name: 'userManagement',
135
+ dialogTyep: '',
136
+ scrollY: {
137
+ gt: -1
138
+ },
139
+ scrollX: {
140
+ gt: -1
141
+ }
142
+
143
+ }
144
+ },
145
+ computed: {
146
+ ...mapGetters(['userManagement', 'theme'])
147
+ },
148
+ mounted: function() {
149
+ this.$store.dispatch('userManagement/aaa', 'FEC-00001')
150
+ },
151
+ methods: {
152
+ // 表格按钮回调
153
+ toggleToolbarClick: function(data) {
154
+ const { handle, label } = data.item
155
+ this.dialogType = handle
156
+ switch (handle) {
157
+ case 'userManagement/add':
158
+ this.currentUserResourcesGroupBycArea({ modnumb: '3f95df09-9f9b-4b28-807d-d6d056ae295f' }).then((res) => {
159
+ this.userManagement.dialog.title = `用户管理-${label}`
160
+ this.userManagement.dialog.form = res.resFieldList.createForm
161
+ this.userManagement.dialog.model = { nMainAccount: '1', nOuterUser: '0' }
162
+ this.$nextTick(() => {
163
+ this.$refs['kunkka-form'].$refs['kunkkaForm'].clearValidate()
164
+ })
165
+ })
166
+ break
167
+ case 'userManagement/update':
168
+ this.currentUserResourcesGroupBycArea({ modnumb: '3f95df09-9f9b-4b28-807d-d6d056ae295f' }).then((res) => {
169
+ this.userManagement.dialog.title = `用户管理-${label}`
170
+ this.userManagement.dialog.form = res.resFieldList.createForm
171
+ })
172
+ break
173
+ case 'userManagement/auth':
174
+ this.userManagement.userAuthorization.title = `用户管理-${label}`
175
+ this.userManagement.userAuthorization.visible = true
176
+ break
177
+ case 'userManagement/macBind':
178
+ this.userManagement.macAddress.title = `用户管理-${label}`
179
+ this.userManagement.macAddress.visible = true
180
+ break
181
+ case 'userManagement/otherAuth':
182
+ this.userManagement.otherAuth.title = `用户管理-${label}`
183
+ this.userManagement.otherAuth.visible = true
184
+ break
185
+ default:
186
+ break
187
+ }
188
+ },
189
+ // 下面是inputSearchClick方法,用于弹出查询界面
190
+ inputSearchClick(data) {
191
+ if (data.prop === 'cWork') {
192
+ this.$refs['kunkka-search-dialog'].openInit({
193
+ cNum: this.userManagement.dialog.model.nMainAccount === '0' ? 'INNER_PART_WORK_OPT' : 'INNER_WORK_OPT', // 查询框编号
194
+ selection: false // false为单选,true为多选
195
+ })
196
+ }
197
+ },
198
+ // 下面是回调事件,row为选取的行
199
+ submitAction(row) {
200
+ this.$set(this.userManagement.dialog.model, 'cUsername', row.LASTNAME)
201
+ this.$set(this.userManagement.dialog.model, 'cWork', row.WORKCODE)
202
+ this.$set(this.userManagement.dialog.model, 'cDeptnum', row.DEPTCODE)
203
+ this.$set(this.userManagement.dialog.model, 'cDeptname', row.DEPTNAME)
204
+ },
205
+ // 选择行事件
206
+ toggleSelectRow: function(row) {
207
+ const self = this
208
+ self[self.name].selectRow = row
209
+ },
210
+ // 双击行事件
211
+ toggleDblclickRow: function(row) {
212
+ this.$store.dispatch('userManagement/detail', row).then(() => {
213
+ this.userManagement.userDetail.title = `用户管理-详情`
214
+ this.userManagement.userDetail.visible = true
215
+ })
216
+ },
217
+ // 弹窗确定回调
218
+ handleOk() {
219
+ this.$refs.userModal.changeOkLoading(true)
220
+ if (this.dialogType === 'userManagement/add') {
221
+ this.$store.dispatch('userManagement/addSave').then(() => {
222
+ this.userManagement.dialog.visible = false
223
+ }).finally(() => {
224
+ this.$refs.userModal.changeOkLoading(false)
225
+ })
226
+ } else if (this.dialogType === 'userManagement/update') {
227
+ this.$store.dispatch('userManagement/updateSave').then(() => {
228
+ this.userManagement.dialog.visible = false
229
+ }).finally(() => {
230
+ this.$refs.userModal.changeOkLoading(false)
231
+ })
232
+ }
233
+ },
234
+ async handleUserAuthorizationOk() {
235
+ this.$refs.userAuthorizationModal.changeOkLoading(true)
236
+ const jsonStr = {
237
+ authorizedNumb: this.userManagement.selectRow[0].cUsernumb,
238
+ authUserRoleList: this.$refs.userAuthorization.getData()
239
+ }
240
+ const nSensitiveLength = _.filter(this.$refs.userAuthorization.getData(), ['nSensitive', 1]).length
241
+ if (nSensitiveLength > 0) {
242
+ await this.$confirm('存在敏感角色授权, 是否继续?', '提示', {
243
+ confirmButtonText: '确定',
244
+ cancelButtonText: '取消',
245
+ type: 'warning'
246
+ }).then(() => {
247
+ }).catch(() => {
248
+ return
249
+ })
250
+ }
251
+ this.$store.dispatch('userManagement/saveAuth', jsonStr).then(() => {
252
+ this.userManagement.userAuthorization.visible = false
253
+ }).finally(() => {
254
+ this.$refs.userAuthorizationModal.changeOkLoading(false)
255
+ })
256
+ },
257
+ handleMacAddressOk() {
258
+ this.$refs.macAddressModal.changeOkLoading(true)
259
+ if (this.userManagement.macAddress.tableData.every(ele => { return ele.cMac && ele.cMacdesc }) === false) {
260
+ this.$message.info('请将mac地址/描述填写完整')
261
+ this.$refs.macAddressModal.changeOkLoading(false)
262
+ return false
263
+ }
264
+ const jsonStr = {
265
+ authUserMacList: this.userManagement.macAddress.tableData,
266
+ authUserMac: { cUsernumb: this.userManagement.selectRow[0].cUsernumb }
267
+ }
268
+ this.$store.dispatch('userManagement/saveMac', jsonStr).then(() => {
269
+ this.userManagement.macAddress.visible = false
270
+ }).finally(() => {
271
+ this.$refs.macAddressModal.changeOkLoading(false)
272
+ })
273
+ },
274
+ handleOtherAuthOk() {
275
+ this.$refs.otherAuthModal.changeOkLoading(true)
276
+ // check ALL先初期全部舍弃,都为false
277
+ this.userManagement.otherAuth.tableData.forEach(element => {
278
+ element.allCheck = false
279
+ })
280
+ const jsonStr = {
281
+ authUser: { id: this.userManagement.selectRow[0].id },
282
+ userExresAuthBOList: this.userManagement.otherAuth.tableData
283
+ }
284
+ this.$store.dispatch('userManagement/saveOtherAuth', jsonStr).then(() => {
285
+ this.userManagement.otherAuth.visible = false
286
+ }).finally(() => {
287
+ this.$refs.otherAuthModal.changeOkLoading(false)
288
+ })
289
+ },
290
+ handleUserDetailOk() {
291
+ this.userManagement.userDetail.visible = false
292
+ },
293
+ state_init() {
294
+ const cAdminColumns = this.userManagement.tableAttrs.columns.find(el => { return el.field === 'cAdmin' })
295
+ cAdminColumns.slots = {
296
+ default: ({ row, column, rowIndex }, h) => {
297
+ var opts = column.params.optionlist.find(op => {
298
+ return row[column.property] == op.cKeynumb // eslint-disable-line
299
+ })
300
+ return [
301
+ <el-tag key={rowIndex} type={ row[column.property] === '0' ? 'success' : '' } title={opts ? opts.cKeyname : row[column.property]}>{ opts ? opts.cKeyname : row[column.property] }</el-tag>
302
+ ]
303
+ }
304
+ }
305
+ const nMainAccount = this.userManagement.tableAttrs.columns.find(el => { return el.field === 'nMainAccount' })
306
+ nMainAccount.slots = {
307
+ default: ({ row, column, rowIndex }, h) => {
308
+ var opts = column.params.optionlist.find(op => {
309
+ return row[column.property] == op.cKeynumb // eslint-disable-line
310
+ })
311
+ return [
312
+ <el-tag key={rowIndex} type={ row[column.property] === 1 ? 'primary' : 'info' } title={opts ? opts.cKeyname : row[column.property]}>{ opts ? opts.cKeyname : row[column.property] }</el-tag>
313
+ ]
314
+ }
315
+ }
316
+ const nOuterUser = this.userManagement.tableAttrs.columns.find(el => { return el.field === 'nOuterUser' })
317
+ nOuterUser.slots = {
318
+ default: ({ row, column, rowIndex }, h) => {
319
+ var opts = column.params.optionlist.find(op => {
320
+ return row[column.property] == op.cKeynumb // eslint-disable-line
321
+ })
322
+ return [
323
+ <el-tag key={rowIndex} type={ row[column.property] === 1 ? 'primary' : 'info' } title={opts ? opts.cKeyname : row[column.property]}>{ opts ? opts.cKeyname : row[column.property] }</el-tag>
324
+ ]
325
+ }
326
+ }
327
+ const cSign = this.userManagement.tableAttrs.columns.find(el => { return el.field === 'cSign' })
328
+ cSign.slots = {
329
+ default: ({ row, column, rowIndex }, h) => {
330
+ return [
331
+ <vxe-switch key={rowIndex} v-model={row[column.property]} open-label='是' open-value='0' close-label='否' close-value='1' disabled></vxe-switch>
332
+ ]
333
+ }
334
+ }
335
+ this.$refs['kunkka-ux-grid'].$refs['kunkka-ux-grid'].loadColumn(this.userManagement.tableAttrs.columns)
336
+ },
337
+ aaa(data) {
338
+ this.$message.success(data)
339
+ },
340
+ // 数据国际化重写这个方法
341
+ renderI18nDataDialog(model, prop, { schema }) {
342
+ if (!schema.cEntityTable) {
343
+ this.$message.error('请配置后端实体表表名')
344
+ return false
345
+ }
346
+ if (!schema.cEntityTable) {
347
+ this.$message.error('请配置后端实体表列名')
348
+ return false
349
+ }
350
+ this.$store.dispatch('i18nDataDialog/showBusinessData', {
351
+ 'nDataId': this.userManagement.dialog.model.id,
352
+ 'cTable': schema.cEntityTable,
353
+ 'cColumnName': schema.cEntityCol
354
+ // cDataKey: prop
355
+ })
356
+ }
357
+ }
358
+ }
359
+ </script>
@@ -0,0 +1,57 @@
1
+ import { request } from '@core/utils'
2
+
3
+ export function login(data) {
4
+ return request({
5
+ url: '/base-auth/login',
6
+ method: 'post',
7
+ data,
8
+ params: data
9
+ })
10
+ }
11
+
12
+ export function logout() {
13
+ return request({
14
+ url: '/base-auth/logout',
15
+ method: 'post'
16
+ })
17
+ }
18
+
19
+ export function getInfo(data) {
20
+ return request({
21
+ url: '/core/contact/getCurrentUserAndResources',
22
+ method: 'post',
23
+ data
24
+ })
25
+ }
26
+
27
+ export function getGyUuid(data) {
28
+ return request({
29
+ url: '/core/assSysSetting/getGyUuid',
30
+ method: 'post',
31
+ data
32
+ })
33
+ }
34
+
35
+ export function updatePwd(data) {
36
+ return request({
37
+ url: '/core/authUser/updatePwd',
38
+ method: 'post',
39
+ data
40
+ })
41
+ }
42
+
43
+ export function findAllUser(data) {
44
+ return request({
45
+ url: '/core/authUser/findAllUser',
46
+ method: 'post',
47
+ data
48
+ })
49
+ }
50
+
51
+ export function changeAccount(data) {
52
+ return request({
53
+ url: '/changeAccount',
54
+ method: 'post',
55
+ data
56
+ })
57
+ }
@@ -0,0 +1,77 @@
1
+ <template>
2
+ <div class="macAddressDialog">
3
+ <div>
4
+ <el-card class="table-card">
5
+ <div class="table-handle">
6
+ <div style="margin-bottom: 5px;">
7
+ <el-button icon="iconfont icon-add" class="icon-base-btn" @click="add">新增</el-button>
8
+ </div>
9
+ </div>
10
+ <el-table
11
+ :data="tableData"
12
+ height="200px"
13
+ style="width: 100%"
14
+ stripe
15
+ :show-overflow-tooltip="true"
16
+ class="addTable autoHeightTable"
17
+ border
18
+ >
19
+ <el-table-column label="mac地址">
20
+ <template slot-scope="scope">
21
+ <el-input v-model="scope.row.cMac" />
22
+ </template>
23
+ </el-table-column>
24
+ <el-table-column label="mac地址描述">
25
+ <template slot-scope="scope">
26
+ <el-input v-model="scope.row.cMacdesc" />
27
+ </template>
28
+ </el-table-column>
29
+ <el-table-column label="登记人">
30
+ <template slot-scope="scope">
31
+ {{ scope.row.cCreateusername }}
32
+ </template>
33
+ </el-table-column>
34
+ <el-table-column label="登记时间">
35
+ <template slot-scope="scope">
36
+ {{ scope.row.dDate }}
37
+ </template>
38
+ </el-table-column>
39
+ <el-table-column label="操作" width="90" align="center">
40
+ <template slot-scope="scope">
41
+ <el-button icon="iconfont icon-del" class="icon-btn" type="danger" @click="del(scope)">删除</el-button>
42
+ </template>
43
+ </el-table-column>
44
+ </el-table>
45
+ </el-card>
46
+ </div>
47
+ </div>
48
+ </template>
49
+ <script>
50
+ export default {
51
+ name: 'MacAddress',
52
+ components: {
53
+
54
+ },
55
+ props: {
56
+ tableData: {
57
+ type: Array,
58
+ default: () => { return [] }
59
+ }
60
+ },
61
+ data() {
62
+ return {
63
+ name: 'macAddress'
64
+ }
65
+ },
66
+ mounted() {},
67
+ methods: {
68
+ add() {
69
+ this.$store.dispatch('userManagement/addMac')
70
+ },
71
+ del(scope) {
72
+ this.$store.dispatch('userManagement/delMac', scope.$index)
73
+ }
74
+ }
75
+ }
76
+ </script>
77
+
@@ -0,0 +1,203 @@
1
+ <template>
2
+ <div class="userAuthDialog">
3
+ <div>
4
+ <el-row :gutter="10" class="padding0px5px">
5
+ <kunkka-form
6
+ ref="sunnyopticalForm"
7
+ :sm="12"
8
+ :lg="12"
9
+ :gutter="25"
10
+ :name="name"
11
+ :form="userAuthorization.conditions"
12
+ :model="userAuthorization.model"
13
+ />
14
+ </el-row>
15
+ <el-card class="table-card">
16
+ <div style="margin-bottom: 5px;">
17
+ <el-button icon="iconfont icon-add" class="icon-base-btn" @click="add">新增</el-button>
18
+ </div>
19
+ <el-table
20
+ :data="userAuthorization.value"
21
+ height="200px"
22
+ style="width: 100%"
23
+ stripe
24
+ :show-overflow-tooltip="true"
25
+ class="addTable autoHeightTable"
26
+ border
27
+ >
28
+ <el-table-column label="角色编号">
29
+ <template slot-scope="scope">
30
+ {{ scope.row.cRolenumb }}
31
+ </template>
32
+ </el-table-column>
33
+ <el-table-column label="角色名称" width="200">
34
+ <template slot-scope="scope">
35
+ {{ scope.row.cRolename }}
36
+ </template>
37
+ </el-table-column>
38
+ <el-table-column label="敏感角色" width="100">
39
+ <template slot-scope="scope">
40
+ <el-tag :type="scope.row.nSensitive===1?'danger':'info'">{{ scope.row.nSensitive | filterSelect(selectOpts.nYesNo) }}</el-tag>
41
+ </template>
42
+ </el-table-column>
43
+ <el-table-column label="所属系统" width="100">
44
+ <template slot-scope="scope">
45
+ {{ filterSelect(scope.row.cSystem, selectOpts.systemOpts) }}
46
+ </template>
47
+ </el-table-column>
48
+ <el-table-column label="删除" width="90" align="center">
49
+ <template slot-scope="scope">
50
+ <el-button icon="iconfont icon-del" class="icon-btn" type="danger" @click="del(scope)">删除</el-button>
51
+ </template>
52
+ </el-table-column>
53
+ </el-table>
54
+ </el-card>
55
+ </div>
56
+ <!-- 角色查询弹窗 -->
57
+ <kunkka-search-dialog
58
+ ref="kunkka-search-dialog"
59
+ @submitAction="submitAction"
60
+ />
61
+ </div>
62
+ </template>
63
+ <script>
64
+ import { mapGetters } from 'vuex'
65
+ import { queryAllPageList } from '@/api/userManagement'
66
+ import { filterSelect } from '@/mixins/configurationFile/utils'
67
+ import selectOpts from '@/utils/select-options'
68
+ export default {
69
+ name: 'UserAuthorization',
70
+ components: {
71
+
72
+ },
73
+ mixins: [
74
+
75
+ ],
76
+ props: {},
77
+ data() {
78
+ return {
79
+ name: 'userAuthorization',
80
+ selectOpts
81
+ }
82
+ },
83
+ computed: {
84
+ ...mapGetters(['userAuthorization'])
85
+ },
86
+ created() {
87
+ this.userAuthorization.conditions = [
88
+ { label: '用户编号', components: 'Input', prop: 'cUsernumb', disabled: true, show: true },
89
+ { label: '用户姓名', components: 'Input', prop: 'cUsername', disabled: true, show: true }
90
+ ]
91
+ },
92
+ mounted: function() {},
93
+ methods: {
94
+ // 按钮点击事件回调
95
+ add() {
96
+ this.$refs['kunkka-search-dialog'].openInit({
97
+ selection: true, // 多选
98
+ cTitle: '系统角色权限查询', // 标题名称
99
+ api: this.apiFunction, // 接口
100
+ fetchPath: { listField: 'result.records', totalField: 'result.total' }, // api返回格式取值路径变更
101
+ conditions: [
102
+ {
103
+ components: 'Input',
104
+ label: '角色编号',
105
+ prop: 'cRolenumb',
106
+ placeholder: '请输入内容',
107
+ clearable: true,
108
+ required: false,
109
+ lg: 12
110
+ },
111
+ {
112
+ components: 'Input',
113
+ label: '角色名称',
114
+ prop: 'cRolename',
115
+ placeholder: '请输入内容',
116
+ clearable: true,
117
+ required: false,
118
+ lg: 12
119
+ }
120
+ ], // 查询表单配置项
121
+ tableCols: [
122
+ { field: 'cRolenumb', title: '角色编号' },
123
+ { field: 'cRolename', title: '角色名称' },
124
+ {
125
+ field: 'nSensitive',
126
+ title: '敏感角色',
127
+ params: {
128
+ optionlist: selectOpts.nYesNo
129
+ },
130
+ slots: {
131
+ default: ({ row, column, rowIndex }, h) => {
132
+ var opts = column.params.optionlist.find(op => {
133
+ return row[column.property] == op.cKeynumb // eslint-disable-line
134
+ })
135
+ return (row[column.property] !== null)
136
+ ? [
137
+ <el-tag key={rowIndex} type={ row[column.property] === 1 ? 'danger' : 'info' } title={opts ? opts.cKeyname : row[column.property]}>{ opts ? opts.cKeyname : row[column.property] }</el-tag>
138
+ ]
139
+ : []
140
+ }
141
+ }
142
+ }
143
+ ], // 查询表格配置项
144
+ nRows: 200 // 分页返回数目
145
+ })
146
+ },
147
+ apiFunction(data) {
148
+ return new Promise((resolve, reject) => {
149
+ const jsonStr = {
150
+ pageNo: data.pageNo,
151
+ pageSize: data.pageSize,
152
+ authRole: {
153
+ cRolenumb: data.cRolenumb ? data.cRolenumb : '',
154
+ cRolename: data.cRolename ? data.cRolename : ''
155
+ }
156
+ }
157
+ queryAllPageList(jsonStr)
158
+ .then(response => {
159
+ resolve(response)
160
+ })
161
+ .catch(error => {
162
+ reject(error)
163
+ })
164
+ })
165
+ },
166
+ del(scope) {
167
+ this.userAuthorization.value.splice(scope.$index, 1)
168
+ },
169
+ // 角色查询确认
170
+ submitAction(selections) {
171
+ selections.forEach((item) => {
172
+ // eslint-disable-next-line no-undef
173
+ if (_.findIndex(this.userAuthorization.value, (ele) => { return ele.nRoleid === item.id }) > -1) {
174
+ this.$message.info(`${item.cRolename}已存在`)
175
+ } else {
176
+ this.userAuthorization.value.push({
177
+ nRoleid: item.id,
178
+ cSystem: item.cSystem,
179
+ cRolename: item.cRolename,
180
+ cRolenumb: item.cRolenumb,
181
+ nSensitive: item.nSensitive
182
+ })
183
+ }
184
+ })
185
+ },
186
+ // 获取角色
187
+ getData() {
188
+ return this.userAuthorization.value
189
+ },
190
+ filterSelect
191
+ }
192
+ }
193
+ </script>
194
+ <style lang="scss">
195
+ .userAuthDialog {
196
+ .el-dialog__body {
197
+ padding: 10px !important;
198
+ }
199
+ .el-dialog__footer {
200
+ padding: 0 10px 10px 10px !important;
201
+ }
202
+ }
203
+ </style>
@@ -0,0 +1,136 @@
1
+ <template>
2
+ <div>
3
+ <div class="userDtMain">
4
+ <el-form ref="form" :model="formModel" :inline="true" label-width="100px">
5
+ <el-form-item label="用户编号">
6
+ <el-input v-model="formModel.cUsernumb" disabled />
7
+ </el-form-item>
8
+ <el-form-item label="用户姓名">
9
+ <el-input v-model="formModel.cUsername" disabled />
10
+ </el-form-item>
11
+ <el-form-item label="邮箱">
12
+ <el-input v-model="formModel.cEmail" disabled />
13
+ </el-form-item>
14
+ <el-form-item label="手机号">
15
+ <el-input v-model="formModel.cPhone" disabled />
16
+ </el-form-item>
17
+ <el-form-item label="所属部门">
18
+ <el-input v-model="formModel.cDeptname" disabled />
19
+ </el-form-item>
20
+ <el-form-item label="所属岗位">
21
+ <el-input v-model="formModel.cJobname" disabled />
22
+ </el-form-item>
23
+ </el-form>
24
+ <el-tabs v-model="activeName" type="border-card">
25
+ <el-tab-pane label="角色权限" name="role">
26
+ <el-table
27
+ class="addTable autoHeightTable"
28
+ :data="userRoleList"
29
+ :height="defaultHeight"
30
+ stripe
31
+ :show-overflow-tooltip="true"
32
+ border
33
+ >
34
+ <el-table-column label="角色编号">
35
+ <template slot-scope="scope">
36
+ {{ scope.row.cRolenumb }}
37
+ </template>
38
+ </el-table-column>
39
+ <el-table-column label="角色名称" width="200">
40
+ <template slot-scope="scope">
41
+ {{ scope.row.cRolename }}
42
+ </template>
43
+ </el-table-column>
44
+ <el-table-column label="所属系统" width="100">
45
+ <template slot-scope="scope">
46
+ {{ scope.row.cSystem |filterSelect(selectOpts.systemOpts) }}
47
+ </template>
48
+ </el-table-column>
49
+ <el-table-column label="敏感角色" width="100">
50
+ <template slot-scope="scope">
51
+ <el-tag :type="scope.row.nSensitive===1?'danger':'info'">{{ scope.row.nSensitive | filterSelect(selectOpts.nYesNo) }}</el-tag>
52
+ </template>
53
+ </el-table-column>
54
+ </el-table>
55
+ </el-tab-pane>
56
+ </el-tabs>
57
+ </div>
58
+ </div>
59
+ </template>
60
+
61
+ <script>
62
+ import selectOpts from '@/utils/select-options'
63
+ export default {
64
+ components: {
65
+
66
+ },
67
+ props: {
68
+ tableData: {
69
+ type: Array,
70
+ default: () => { return [] }
71
+ },
72
+ formData: {
73
+ type: Object,
74
+ default: () => { return {} }
75
+ }
76
+ },
77
+ data() {
78
+ return {
79
+ activeName: 'role',
80
+ defaultHeight: 200,
81
+ // 角色
82
+ userRoleList: this.tableData,
83
+ // 基本信息
84
+ formModel: this.formData,
85
+ selectOpts
86
+ }
87
+ },
88
+ mounted: function() {
89
+ this.$nextTick(() => {
90
+ this.nodeExpand()
91
+ })
92
+ },
93
+ methods: {
94
+ // 树
95
+ renderContent(h, { node, data }) {
96
+ let className = ''
97
+ if (node.childNodes.length === 0) {
98
+ className = 'especially'
99
+ }
100
+ return (
101
+ <div class={className}>
102
+ {data.label}
103
+ </div>
104
+ )
105
+ },
106
+ nodeExpand() {
107
+ var classDomList = document.getElementsByClassName('especially')
108
+ this.$nextTick(() => {
109
+ for (var i = 0; i < classDomList.length; i++) {
110
+ classDomList[i].parentNode.style.cssText = 'float: left'
111
+ classDomList[i].parentNode.className = 'el-tree-node__content option-wrapper'
112
+ classDomList[i].parentNode.parentNode.parentNode.style.marginLeft = '50px'
113
+ }
114
+ })
115
+ },
116
+ dis() {
117
+ return true
118
+ }
119
+ }
120
+ }
121
+ </script>
122
+
123
+ <style lang="scss">
124
+ .userDtMain {
125
+ padding: 0 5px;
126
+
127
+ .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner {
128
+ background-color: #409EFF !important;
129
+ border-color: #409EFF !important;
130
+ }
131
+ .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after {
132
+ border-color: #FFF !important;
133
+ }
134
+ }
135
+ .option-wrapper { padding: 0 !important; }
136
+ </style>
@@ -0,0 +1,109 @@
1
+ <template>
2
+ <div class="macAddressDialog">
3
+ <div>
4
+ <table
5
+ class="otherAuthTable"
6
+ >
7
+ <caption />
8
+ <th class="th1">页签</th>
9
+ <th class="th2">默认全选</th>
10
+ <th class="th3">选项</th>
11
+ <tr v-for="(item, index) in tableData" :key="index">
12
+ <td class="tr1">{{ item.parname }}</td>
13
+ <td class="tr2"><el-checkbox v-model="item.allCheck" @change="allCheck(item.allCheck,item.authExresList)">是</el-checkbox></td>
14
+ <td class="tr3">
15
+ <el-checkbox v-for="(item2, index2) in item.authExresList" :key="index2" v-model="item2.check" @change="otherAuthChange">{{ item2.cExresnum + '-'+ item2.cExresname }}<span v-if="item2.cOrg" style="color:#24b77b">[{{ item2.cOrg }}]</span></el-checkbox>
16
+ </td>
17
+ </tr>
18
+ </table>
19
+ </div>
20
+ </div>
21
+ </template>
22
+ <script>
23
+ export default {
24
+ name: 'OtherAuth',
25
+ components: {
26
+
27
+ },
28
+ props: {
29
+ tableData: {
30
+ type: Array,
31
+ default: () => { return [] }
32
+ }
33
+ },
34
+ data() {
35
+ return {
36
+ name: 'otherAuth'
37
+ }
38
+ },
39
+ mounted() {},
40
+ methods: {
41
+ otherAuthChange: function() {
42
+ this.$forceUpdate()
43
+ },
44
+ allCheck: function(allCheck, authExresList) {
45
+ authExresList.forEach(element => {
46
+ element.check = allCheck
47
+ })
48
+ }
49
+ }
50
+ }
51
+ </script>
52
+ <style lang="scss" scoped>
53
+ tr.elx-body--row { cursor: pointer;}
54
+ .otherAuthTable {
55
+ width: 100%;
56
+ text-align: center;
57
+ border-spacing: 0;
58
+ border-top: 1px solid #000;
59
+ border-right: 1px solid #000;
60
+ border-left: 1px solid #000;
61
+ }
62
+ .otherAuthTable td {
63
+ padding: 10px;
64
+ border-bottom: 1px solid #000;
65
+ border-right: 1px solid #000;
66
+ }
67
+ .otherAuthTable .el-checkbox {
68
+ margin-bottom: 5px
69
+ }
70
+ .th1 {
71
+ height: 40px;
72
+ line-height: 40px;
73
+ width: 9%;
74
+ text-align: center;
75
+ border-bottom: 1px solid #000;
76
+ border-right: 1px solid #000;
77
+ }
78
+ .th2 {
79
+ height: 40px;
80
+ line-height: 40px;
81
+ width: 9%;
82
+ text-align: center;
83
+ border-bottom: 1px solid #000;
84
+ border-right: 1px solid #000;
85
+ }
86
+ .th3 {
87
+ height: 40px;
88
+ line-height: 40px;
89
+ width: 82%;
90
+ text-align: center;
91
+ border-bottom: 1px solid #000;
92
+ border-right: 1px solid #000;
93
+ }
94
+ .tr1{
95
+ height: 40px;
96
+ width: 9%;
97
+ text-align: center;
98
+ }
99
+ .tr2 {
100
+ height: 40px;
101
+ width: 9%;
102
+ text-align: center;
103
+ }
104
+ .tr3 {
105
+ height: 40px;
106
+ width: 82%;
107
+ text-align: center;
108
+ }
109
+ </style>