Skip to content

Commit a41e4a5

Browse files
committed
fix(view): 全部选中问题
1 parent 62a55b4 commit a41e4a5

File tree

4 files changed

+296
-76
lines changed

4 files changed

+296
-76
lines changed

admin/src/api/user.js

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
11
import request from '@/utils/request'
22

3-
export function getUser(params) {
3+
export function getList(params) {
44
return request({
55
url: '/api/user',
66
method: 'get',
77
params
88
})
99
}
1010

11+
export function getRole() {
12+
return request.get('/api/permissions/create')
13+
}
14+
15+
export function postAdd(params) {
16+
return request.post('/api/user', params)
17+
}
18+
1119
export function postUser(params) {
1220
return request.post('/api/user', params)
1321
}
@@ -20,10 +28,22 @@ export function postEditUser(id, params) {
2028
return request.patch('/api/user/' + id, params)
2129
}
2230

23-
export function deleteUser(id) {
31+
export function deleteAct(id) {
2432
return request.delete('/api/user/' + id)
2533
}
2634

2735
export function postEditPassword(params) {
2836
return request.post('/api/user_password', params)
2937
}
38+
39+
/**
40+
* 搜索 api_param
41+
* @param params
42+
*/
43+
export function search(params) {
44+
return request({
45+
url: '/api/api_user_search',
46+
method: 'get',
47+
params
48+
})
49+
}

admin/src/views/role/edit.vue

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010

1111
<el-form-item label="新增角色赋值权限" prop="roles">
1212
<template>
13+
<el-checkbox v-model="checkAll" @change="CheckAll">全选</el-checkbox>
14+
<div style="margin: 15px 0;"/>
1315
<el-checkbox-group v-model="form.checkedPermissions" @change="PerChange">
1416
<el-checkbox v-for="permission in form.permissions" :label="permission.id" :key="permission.id">{{ permission.name }}</el-checkbox>
1517
</el-checkbox-group>
@@ -25,16 +27,18 @@
2527
</template>
2628

2729
<script>
28-
import { postEdit, edit, getPermission } from '@/api/role'
30+
import { postEdit, edit } from '@/api/role'
2931
3032
export default {
3133
data() {
3234
return {
35+
checkAll: false,
36+
isIndeterminate: true,
37+
3338
form: {
3439
name: '',
3540
checkedPermissions: [],
3641
permissions: [],
37-
isIndeterminate: true,
3842
loading: false
3943
},
4044
rules: {
@@ -48,26 +52,35 @@ export default {
4852
created() {
4953
this.id = this.$route.params.id
5054
this.getData(this.id)
51-
this.fetchData()
55+
// this.fetchData()
5256
},
5357
methods: {
5458
getData(id) {
5559
edit(id).then(response => {
5660
this.loading = false
5761
if (response.code === 200) {
58-
this.form.name = response.data.name
62+
this.form.name = response.data.role.name
63+
this.form.permissions = response.data.permissions
64+
this.form.checkedPermissions = response.data.checkedPermissions
65+
66+
// 是否全选中
67+
if (this.form.permissions.length === this.form.checkedPermissions.length) {
68+
this.checkAll = true
69+
}
5970
} else {
6071
this.$message.error(response.reason)
6172
}
6273
})
6374
},
64-
fetchData() {
65-
this.listLoading = true
66-
getPermission().then(response => {
67-
console.log(response.data)
68-
this.form.permissions = response.data.permissions
69-
this.listLoading = false
70-
})
75+
CheckAll(val) {
76+
this.form.checkedPermissions = []
77+
if (val) {
78+
for (let i = 0, len = this.form.permissions.length; i < len; i++) {
79+
this.form.checkedPermissions.push(this.form.permissions[i].id)
80+
}
81+
}
82+
83+
this.isIndeterminate = false
7184
},
7285
PerChange(value) {
7386
const checkedCount = value.length

admin/src/views/user/add.vue

Lines changed: 83 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,49 @@
11
<template>
22
<div class="app-container">
3-
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
4-
<el-form-item label="接口名称" prop="name">
5-
<el-input v-model="form.name"/>
3+
<el-form ref="form" :model="form" :rules="rules" label-width="220px">
4+
<el-form-item label="用户名称" prop="name">
5+
<el-col :span="10">
6+
<el-input v-model="form.name"/>
7+
</el-col>
8+
<el-col :span="14"/>
69
</el-form-item>
7-
<el-form-item label="接口地址" prop="url">
8-
<el-input v-model="form.url"/>
9-
</el-form-item>
10-
<el-form-item label="接口参数" prop="param">
11-
<el-input v-model="form.param"/>
12-
<span>(多个参数请用英文 , 分割;如: realname,mobile,idcard)</span>
13-
</el-form-item>
14-
<el-form-item label="结果集 result" prop="result">
15-
<el-input v-model="form.result"/>
16-
<span>(多个参数请用英文 , 分割;如: res,msg)</span>
10+
11+
<el-form-item label="用户邮箱" prop="email">
12+
<el-col :span="10">
13+
<el-input v-model="form.email"/>
14+
</el-col>
15+
<el-col :span="14"/>
1716
</el-form-item>
18-
<el-form-item label="是否处理" prop="is_need">
19-
<el-switch v-model="form.is_need"/>
20-
<br>
21-
<span>(开启后,输出的 Excel 最后一栏将根据 result 字段 res 1 展示一致 2 不一致)</span>
17+
18+
<el-form-item label="密码" prop="password">
19+
<el-col :span="10">
20+
<el-input v-model="form.password" type="password"/>
21+
</el-col>
22+
<el-col :span="14"/>
2223
</el-form-item>
23-
<el-form-item label="网址" prop="website">
24-
<el-input v-model="form.website"/>
24+
25+
<el-form-item label="确认密码" prop="checkPass">
26+
<el-col :span="10">
27+
<el-input v-model="form.checkPass" type="password"/>
28+
</el-col>
29+
<el-col :span="14"/>
2530
</el-form-item>
26-
<el-form-item label="请求方式" prop="method">
27-
<!--<el-input v-model="form.method"/>-->
28-
<el-select v-model="form.method" placeholder="请选择接口" value-key="name">
29-
<el-option key="1" label="get" value="get">
30-
<span style="float: left; color: #8492a6; font-size: 13px">get</span>
31-
</el-option>
32-
<el-option key="2" label="post" value="post">
33-
<span style="float: left; color: #8492a6; font-size: 13px">post</span>
34-
</el-option>
35-
</el-select>
31+
32+
<el-form-item label="路由" prop="route">
33+
<el-col :span="10">
34+
<el-input v-model="form.route"/>
35+
</el-col>
36+
<el-col :span="14"/>
3637
</el-form-item>
37-
<el-form-item label="是否启用">
38-
<el-switch v-model="form.state"/>
38+
39+
<el-form-item label="赋值角色" prop="roles">
40+
<template>
41+
<el-checkbox-group v-model="form.checkedRoles" @change="handleCheckedRolesChange">
42+
<el-checkbox v-for="role in form.roles" :label="role.id" :key="role.id">{{ role.name }}</el-checkbox>
43+
</el-checkbox-group>
44+
</template>
3945
</el-form-item>
46+
4047
<el-form-item>
4148
<el-button type="primary" @click="onSubmit('form')">提交</el-button>
4249
<el-button @click="resetForm('form')">重置</el-button>
@@ -46,43 +53,69 @@
4653
</template>
4754

4855
<script>
49-
import { postAdd } from '@/api/api_param'
56+
import { postAdd, getRole } from '@/api/user'
5057
5158
export default {
5259
data() {
60+
const validatePass = (rule, value, callback) => {
61+
if (value === '') {
62+
callback(new Error('请输入密码'))
63+
} else {
64+
if (this.form.password !== '') {
65+
this.$refs.form.validateField('checkPass')
66+
}
67+
callback()
68+
}
69+
}
70+
const validatePass2 = (rule, value, callback) => {
71+
if (value === '') {
72+
callback(new Error('请再次输入密码'))
73+
} else if (value !== this.form.password) {
74+
callback(new Error('两次输入密码不一致!'))
75+
} else {
76+
callback()
77+
}
78+
}
5379
return {
5480
form: {
5581
name: '',
56-
url: '',
57-
param: '',
58-
result: '',
59-
is_need: false,
60-
state: true,
61-
website: '',
62-
method: 'get',
82+
email: '',
83+
password: '',
84+
checkedRoles: [],
85+
roles: [],
86+
isIndeterminate: true,
6387
loading: false
6488
},
6589
rules: {
6690
name: [
6791
{ required: true, message: '请输入名称', trigger: 'blur' }
6892
],
69-
url: [
70-
{ required: true, message: '请输入接口地址', trigger: 'blur' }
71-
],
72-
param: [
73-
{ required: true, message: '请输入接口参数', trigger: 'blur' }
93+
password: [
94+
{ validator: validatePass, trigger: 'blur' }
7495
],
75-
result: [
76-
{ required: true, message: '请输入结果集 result', trigger: 'blur' }
77-
],
78-
is_need: [
79-
{ required: true, message: '请选择是否处理', trigger: 'blur' }
96+
checkPass: [
97+
{ validator: validatePass2, trigger: 'blur' }
8098
]
8199
},
82-
redirect: '/api_param/index'
100+
redirect: '/user'
83101
}
84102
},
103+
created() {
104+
this.fetchData()
105+
},
85106
methods: {
107+
fetchData() {
108+
this.listLoading = true
109+
getRole().then(response => {
110+
console.log(response.data)
111+
this.form.roles = response.data.roles
112+
this.listLoading = false
113+
})
114+
},
115+
handleCheckedRolesChange(value) {
116+
const checkedCount = value.length
117+
this.isIndeterminate = checkedCount > 0 && checkedCount < this.form.roles.length
118+
},
86119
onSubmit(form) {
87120
console.log(this.form)
88121
this.$refs[form].validate((valid) => {
@@ -126,4 +159,3 @@ export default {
126159
text-align: center;
127160
}
128161
</style>
129-

0 commit comments

Comments
 (0)