用户管理
用户列表
1 表格内数据的显示
接口 http://kg.zhaodashen.cn/mt/admin/users/index.jsp
参数 pagenum pagesize uname start_time end_time
a 定义接口
b 将接口参数写成对象方便后期搜索 以及分页调用
params: {
pagenum: 1,
pagesize: 5,
uname: "",
start_time: "",
end_time: "",
},
c 调用接口 请求数据
created() {
this.init();
},
init() {
getUsersApi(this.params).then((res) => {
// 表格数据
this.tableData = res.data.list;
// 分页的最大页数
this.tableDataTotal = parseFloat(res.data.total);
});
},
后台返回数据
2 分页
分页组件自带的函数
点击第几页进行跳转
handleCurrentChange(val) {
this.params.pagenum = val;
this.init();
console.log(`当前页: ${val}`);
},
3关键字查询
直接给input绑定数据
点击调用接口
<el-input v-model="params.uname">
<el-button slot="append" icon="el-icon-search" @click="init()">
</el-button>
</el-input>
4 日期搜索
在绑定数据
监听time
watch: {
time(newTime, oldTime) {
// console.log(newTime);
if (newTime != null && newTime.length == 2) {
this.params.start_time = newTime[0];
this.params.end_time = newTime[1];
this.init();
} else {
this.params.start_time = "";
this.params.end_time = "";
this.init();
}
},
},
5 删除
接口 http://kg.zhaodashen.cn/mt/admin/users/delete.jsp
参数 user_id
给删除按钮绑定点击事件
click: (row) => {
this.delFn(row.user_id);
},
delFn(row) {
this.confirmFn(async () => {
let res = await deleteUsersApi({ user_id: row });
if (res.meta.state == 200) {
this.$message.success(res.meta.msg);
this.init();
} else {
this.$message.error(res.meta.msg);
}
});
},
6 修改用户信息
1 表单数据的回显
点击修改用户后出现表单 内容根据当前行数据显示
点击获取当前行数据
将数据传入子 弹框
讲数据继续传给封装的form 组件
**注意当前行数据的字段要和我们封装的字段一样 不然数据无法显示
点击修改用户获取当前行数据
click: (row) => {
this.dialogState = true;
// this.passwd_answer = row.passwd_answer;
// this.passwd_question = row.passwd_question;
this.row = row;
console.log(row);
},
传给子
<UsersEdit :state="dialogState" @close="dialogState = false" :row="row" />
传给我们封装的form
<zc-form
v-if="state"
:width="80"
:formItem="formItem"
:formBtns="formBtns"
:row="row"
></zc-form>
2 修改用户
接口 http://kg.zhaodashen.cn/mt/admin/users/update.jsp
参数 user_id username password question answer mobile sex
点击创建请求接口 函数处理
click: async (formData) => {
let res = await putUsersApi(formData);
if (res.meta.state == 200) {
this.$message.success(res.meta.msg);
this.$parent.$parent.$parent.init();
this.$parent.$parent.$parent.state = false;
} else {
this.$message.error(res.meta.msg);
}
console.log(res);
},
7 分配角色
1 弹框数据回显
和上面的数据回显一样,就是父传子数据
2 角色下拉框接口请求
接口 http://kg.zhaodashen.cn/mt/admin/roles/index.jsp
参数 无
async created() {
let res = await getRolesApi();
if (res.meta.state == 200) {
this.formItem[2].payload = res.data.map((item) => {
return {
label: item.role_name,
value: item.role_id,
};
});
}
},
3 分配角色接口
接口 http://kg.zhaodashen.cn/mt/admin/users/assign.jsp
参数 user_id role_id
click: async (formData) => {
let res = await postCreateUsersApi(formData);
if (res.meta.state == 200) {
this.$message.success(res.meta.msg);
this.$parent.$parent.$parent.init();
this.$parent.$parent.$parent.state = false;
} else {
this.$message.error(res.meta.msg);
}
},
给用户分配角色 给角色分配权限
用户创建
获取数据 请求接口
接口 http://kg.zhaodashen.cn/mt/admin/users/create.jsp
参数 username password mobile question answer
click: async (formData) => {
let res = await postCreateUsersApi(formData);
if (res.meta.state == 200) {
this.$message.success(res.meta.msg);
this.$parent.$parent.$parent.init();
this.$parent.$parent.$parent.state = false;
} else {
this.$message.error(res.meta.msg);
}
},
角色管理
角色列表
接口 http://kg.zhaodashen.cn/mt/admin/roles/index.jsp
参数 无
1 角色列表数据
a 定义接口
export const getRolesApi = (params) => {
return request({
url: "/roles/index.jsp",
method: "get",
params,
});
};
b 请求接口
created() {
this.init();
},
methods: {
async init() {
let res = await getRolesApi();
// console.log(res);
this.tableData = res.data;
},
}
c 使用接口数据渲染到页面
2 删除角色
接口 http://kg.zhaodashen.cn/mt/admin/roles/delete.jsp
参数 role_id
a 定义接口
export const deleteRolesApi = (params) => {
return request({
url: "/roles/delete.jsp",
method: "delete",
params,
});
};
b 使用接口
给删除按钮绑定点击事件
click: (row) => {
this.delFn(row.role_id);
},
函数内调用接口
delFn(role_id) {
this.confirmFn(async () => {
// this.$message.success("等待请求接口");
let res = await deleteRolesApi({ role_id });
if (res.meta.state == 200) {
this.$message.success(res.meta.msg);
this.init();
} else {
}
});
},
3 编辑角色
3.1 编辑数据回显
思路 点击编辑 将当前行数据传递给子 对话框 在子中 在将数据传递给封装的form组件 注意字段的对应
click: (row) => {
this.RoleEditState = true;
this.row = row;
console.log(row);
},
将数据层层传递
RoleEdit在Role组件内 zc-form在RoleEdit组件内
<!-- 角色编辑 -->
<RoleEdit
:state="RoleEditState"
@close="RoleEditState = false"
:row="row"
:init="init"
/>
<!-- 角色编辑 -->
<zc-form
:width="80"
:formItem="formItem"
:formBtns="formBtns"
:row="row"
></zc-form>
3.2 角色编辑
接口 http://kg.zhaodashen.cn/mt/admin/roles/update.jsp
参数 role_id role_name role_describe
1定义接口
export const updateRolesApi = (params) => {
return request({
url: "/roles/update.jsp",
method: "put",
data: qs.stringify(params),
});
};
2 请求接口
给创建绑定点击事件 传递接口需要的参数
click: async (formData) => {
let res = await updateRolesApi(formData);
if (res.meta.state == 200) {
this.$message.success(res.meta.msg);
this.init();
this.close();
} else {
this.$message.error(res.meta.msg);
}
},
4 分配权限
4.1 分配权限-权限列表显示
接口 http://kg.zhaodashen.cn/mt/admin/auth/index.jsp
参数 无
a 定义接口
export const getAuthApi = () => {
return request({
url: "/auth/index.jsp",
method: "get",
});
};
b 请求接口 渲染数据
async created() {
let res = await getAuthApi();
if (res.meta.state == 200) {
this.treeData = res.data;
} else {
this.$message.error(res.meta.msg);
}
},
接口数据
4.2 权限的状态回显
关键就是传递的row 里面有el-tree 需要的值
node-key="auth_id"
:default-checked-keys="
row.auth_ids_son ? row.auth_ids_son.split(',') : []
"
4.3 分配权限
定义接口 http://kg.zhaodashen.cn/mt/admin/roles/assign.jsp
请求接口 这里关键是对 参数的处理 role_id auth_ids auth_ids_son
export const putAssignRolesApi = (params) => {
return request({
url: "/roles/assign.jsp",
method: "put",
data: qs.stringify(params),
});
};
先选好分配的权限
获取选中的节点
对参数进行处理
async submitFn() {
let chooseData = this.$refs.tree.getCheckedNodes();
console.log(chooseData, 11111111111);
let allFatherSonIds = [];
let allSonIds = [];
chooseData.forEach((item) => {
// 找到子元素
if (item.auth_pid != 0) {
allFatherSonIds.push(item.auth_id);
allFatherSonIds.push(item.auth_pid);
allSonIds.push(item.auth_id);
}
});
//去重
allFatherSonIds = [...new Set(allFatherSonIds)];
let res = await putAssignRolesApi({
role_id: this.row.role_id,
auth_ids: allFatherSonIds.join(","),
auth_ids_son: allSonIds.join(","),
});
this.init();
this.close();
},
角色创建
接口 http://kg.zhaodashen.cn/mt/admin/roles/create.jsp
参数 role_name role_describe
定义接口
export const postRolesApi = (params) => {
return request({
url: "/roles/create.jsp",
method: "post",
data: qs.stringify(params),
});
};
请求接口
点击创建 收集参数 请求接口
click: async (formData) => {
let res = await postRolesApi(formData);
console.log(res);
if (res.meta.state == 201) {
this.$message.success(res.meta.msg);
this.$router.push("/roles");
} else {
this.$message.error(res.meta.msg);
}
},
权限管理
权限列表
1 获取权限列表 上面已描述
2 删除
接口 http://kg.zhaodashen.cn/mt/admin/auth/delete.jsp
参数 auth_id
定义接口
export const deleteAuthApi = (params) => {
return request({
url: "/auth/delete.jsp",
method: "delete",
params,
});
};
请求接口
给删除按钮绑定点击事件 请求接口
async delFn(node, data) {
console.log(node, data);
// this.$message.warning("等待接口");
let res = await deleteAuthApi({ auth_id: data.auth_id });
if (res.meta.state == 200) {
this.$message.success(res.meta.msg);
this.init();
}
},
3 编辑状态数据回显
给编辑按钮绑定点击事件 传递当前行数据
auths 父 editAuth子组件 zc-form 子组件
edit(node, data) {
this.authRow = data;
this.authRow.keep_alive =
this.authRow.keep_alive == 0 ? "不缓存" : "缓存";
if (data.auth_pid != 0) {
this.authRow.father = data.auth_pname + "_" + data.auth_pid;
}
this.authState = true;
},
<editAuth
:state="authState"
@close="authState = false"
:authRow="authRow"
/>
<zc-form
v-if="state"
:width="140"
:formItem="formItem"
:formBtns="formBtns"
:row="authRow"
></zc-form>
所属权限下拉数据
getAuthApi().then((res) => {
this.formItem[2].payload = res.data.map((item, index) => {
return {
//value这样写 因为后续我们需要参数
value: item.auth_pname + "_" + item.auth_pid,
label: item.auth_name,
};
});
});
5 对权限的编辑
接口 http://kg.zhaodashen.cn/mt/admin/auth/update.jsp
参数 auth_id / auth_name / auth_pid / auth_pname / url / keep_alive / component
定义接口
export const putAuthApi = (params) => {
return request({
url: "/auth/update.jsp",
method: "put",
data: qs.stringify(params),
});
};
主要就是对参数的处理
关键是 value的值 的拼接 然后再取出
click: async (formData) => {
let res = await putAuthApi(formData);
formData.auth_pid = formData.father
? formData.father.split("_")[0]
: "";
formData.auth_pname = formData.father
? formData.father.split("_")[1]
: "";
if (res.meta.state == 200) {
this.$message.success(res.meta.msg);
} else {
this.$message.error(res.meta.msg);
}
},
},
权限创建
接口 http://kg.zhaodashen.cn/mt/admin/auth/create.jsp
参数 auth_name / auth_pid / auth_pname / url / keep_alive / component
定义接口
export const postAuthApi = (params) => {
return request({
url: "/auth/create.jsp",
method: "post",
data: qs.stringify(params),
});
};
请求接口
click: async (formData) => {
formData.auth_pid = formData.father? formData.father.split("_")[0]: "";
formData.auth_pname = formData.father ? formData.father.split("_")[1]: "";
let res = await postAuthApi(formData);
console.log(res);
if (res.meta.state == 201) {
this.$message.success(res.meta.msg);
} else {
this.$message.error(res.meta.msg);
}
},
},
将我们写的串起来
1 创建角色
2 用户创建
3 给用户分配角色
4 修改用户
5 修改角色
6 给角色分配权限
权限这快主要和动态路由相关 我们后期再说