提交 cf226cf6 authored 作者: 龙菲's avatar 龙菲

角色管理

上级 3e183f69
...@@ -88,6 +88,16 @@ export function upadateUser(data) { ...@@ -88,6 +88,16 @@ export function upadateUser(data) {
}) })
} }
// 删除用户
export function deleteUser(data) {
return request({
url: '/sys/user',
method: 'delete',
data
})
}
// 以用户行为统计排序分页查询资源 // 以用户行为统计排序分页查询资源
export function getListByPageSort(data) { export function getListByPageSort(data) {
return request({ return request({
...@@ -106,3 +116,44 @@ export function getBarMap(params) { ...@@ -106,3 +116,44 @@ export function getBarMap(params) {
}) })
} }
// 增加角色
export function addRole(data) {
return request({
url: '/sys/role',
method: 'post',
data
})
}
// 修改角色
export function upadateRole(data) {
return request({
url: 'sys/role',
method: 'put',
data
})
}
// 删除角色
export function deleteRole(id) {
return request({
url: '/sys/role/'+id,
method: 'delete',
})
}
// 获取所有目录菜单树
export function getPermissionTreeAll(params) {
return request({
url: '/sys/permission/tree/all',
method: 'get',
params
})
}
export function getPermissionById(id) {
return request({
url: `/sys/permission/${id}`,
method: 'get',
})
}
import { import {
login, login,
logout, logout,
getMenu getMenu,
getPermissionTreeAll
} from '@/api/user' } from '@/api/user'
import { import {
getToken, getToken,
...@@ -25,6 +26,7 @@ const getDefaultState = () => { ...@@ -25,6 +26,7 @@ const getDefaultState = () => {
menu: getLocalMenu(), menu: getLocalMenu(),
name: '', name: '',
avatar: '', avatar: '',
permissionTree: []
} }
} }
...@@ -48,7 +50,10 @@ const mutations = { ...@@ -48,7 +50,10 @@ const mutations = {
}, },
SET_MENU: (state, menu) => { SET_MENU: (state, menu) => {
state.menu = menu state.menu = menu
} },
SET_PERMISSION_TREE_ALL: (state, permissionTree) => {
state.permissionTree = permissionTree
},
} }
const actions = { const actions = {
...@@ -143,7 +148,7 @@ const actions = { ...@@ -143,7 +148,7 @@ const actions = {
} }
return obj return obj
} }
commit('SET_MENU', menuObj) commit('SET_MENU', menuObj)
setLocalMenu(menuObj) setLocalMenu(menuObj)
resolve() resolve()
...@@ -153,6 +158,19 @@ const actions = { ...@@ -153,6 +158,19 @@ const actions = {
}) })
}, },
// 获取权限树所有
getPermissionTreeAll({
commit
}) {
return new Promise(resolve => {
getPermissionTreeAll().then(res => {
commit('SET_PERMISSION_TREE_ALL', res.data)
resolve(res.data)
}).catch(err => {
reject(err)
})
})
},
} }
......
...@@ -8,6 +8,7 @@ export const title = [{ ...@@ -8,6 +8,7 @@ export const title = [{
prop: "keyword", prop: "keyword",
label: "关键词", label: "关键词",
columnAlign: 'center', columnAlign: 'center',
showOverFlowToolTip: true,
}, },
{ {
prop: "type", prop: "type",
......
...@@ -13,51 +13,16 @@ ...@@ -13,51 +13,16 @@
</div> </div>
<div class="dialog-content"> <div class="dialog-content">
<el-form :model="dialogForm" class="basic-info"> <el-form :model="dialogForm" class="basic-info">
<el-form-item label="名称" :label-width="formLabelWidth"> <el-form-item label="角色名称" :label-width="formLabelWidth">
<el-input <el-input
v-model="dialogForm.name" v-model="dialogForm.name"
autocomplete="off" autocomplete="off"
placeholder="请输入文献名称" placeholder="请输入角色名称"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="作者" :label-width="formLabelWidth">
<el-input
v-model="dialogForm.authors"
autocomplete="off"
placeholder="请输入作者"
></el-input>
</el-form-item>
<el-form-item label="文献来源" :label-width="formLabelWidth">
<el-input
v-model="dialogForm.source"
autocomplete="off"
placeholder="请输入文献来源"
></el-input>
</el-form-item>
<el-form-item label="出版/发布日期" :label-width="formLabelWidth">
<el-date-picker
style="width: 100%"
v-model="dialogForm.date"
type="date"
placeholder="请选择出版/发布日期"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
<el-form-item label="状态" :label-width="formLabelWidth"> <el-form-item label="状态" :label-width="formLabelWidth">
<el-switch v-model="status"> </el-switch> <el-switch v-model="status"> </el-switch>
</el-form-item> </el-form-item>
<el-form-item label="文件" :label-width="formLabelWidth">
<ManualUploader
:files="files"
:fileLimit="1"
:fileSize="50"
listType="text"
:fileType="['pdf']"
ref="pdf"
/>
</el-form-item>
<el-form-item label="备注" :label-width="formLabelWidth"> <el-form-item label="备注" :label-width="formLabelWidth">
<el-input <el-input
type="textarea" type="textarea"
...@@ -68,6 +33,15 @@ ...@@ -68,6 +33,15 @@
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="权限" :label-width="formLabelWidth">
<el-tree
:data="permissionTree"
show-checkbox
:props="props"
@check-change="handleCheckChange"
>
</el-tree>
</el-form-item>
</el-form> </el-form>
</div> </div>
<div class="dialog-footer"> <div class="dialog-footer">
...@@ -80,15 +54,9 @@ ...@@ -80,15 +54,9 @@
</template> </template>
<script> <script>
import { addLiterature, editLiterature } from "@/api/literature"; import { addRole, editRole, getPermissionTreeAll,getPermissionById } from "@/api/user";
import ManualUploader from "@/components/Uploader/ManualUploader.vue";
import { mapGetters } from "vuex";
import { uploadFile } from "@/utils/file";
export default { export default {
name: "InfoEditDialog", name: "InfoEditDialog",
components: {
ManualUploader,
},
props: { props: {
visible: { visible: {
type: Boolean, type: Boolean,
...@@ -100,29 +68,27 @@ export default { ...@@ -100,29 +68,27 @@ export default {
}, },
}, },
computed: { computed: {
...mapGetters(["userInfo"]),
title() { title() {
if (this.dialogForm.literatureId) { if (this.dialogForm.id) {
return "修改文献"; return "修改角色信息";
} else { } else {
return "添加文献"; return "添加新角色";
} }
}, },
}, },
watch: { watch: {
form: { form: {
handler: function (value) { handler: function (value) {
debugger
let that = this; let that = this;
that.dialogForm = JSON.parse(JSON.stringify(value)); that.dialogForm = JSON.parse(JSON.stringify(value));
// 编辑状态 // 编辑状态
if (that.dialogForm.literatureId) { if (that.dialogForm.id) {
// 回填状态 // 回填状态
that.status = Boolean(Number(that.dialogForm.status)); that.status = Boolean(Number(that.dialogForm.status));
// 回填文件
if (that.dialogForm.files) { // let perm = await getPermissionById
that.files = that.dialogForm.files; that.getPer()
}
} }
}, },
immediate: true, immediate: true,
...@@ -143,8 +109,21 @@ export default { ...@@ -143,8 +109,21 @@ export default {
status: false, status: false,
files: [], //文献文件 files: [], //文献文件
dialogVisible: false, dialogVisible: false,
permissionTree: [],
props: {
value: "id",
label: "title",
children: "children",
checkStrictly: true,
},
}; };
}, },
async created() {
let res = await getPermissionTreeAll();
this.permissionTree = res.data
console.log(this.permissionTree);
// console.log(res);
},
methods: { methods: {
handlePreview({ type, file }) { handlePreview({ type, file }) {
console.log(type, file); console.log(type, file);
...@@ -160,30 +139,16 @@ export default { ...@@ -160,30 +139,16 @@ export default {
async handleSubmit() { async handleSubmit() {
let params = JSON.parse(JSON.stringify(this.dialogForm)); let params = JSON.parse(JSON.stringify(this.dialogForm));
// 回填文件
let file = this.$refs.pdf.getFiles();
let formData = new FormData();
if (file[0].status == "ready") {
formData.append("files", file[0].raw);
let upLoadRes = await uploadFile(formData);
if (upLoadRes.code == 0) {
params.pdfFile = upLoadRes.data[0].fileId;
} else {
this.$message.error("上传失败!:" + upLoadRes.data.msg);
}
} else if (file[0].status == "success") {
params.pdfFile = file[0].fileId;
}
// 修改状态 // 修改状态
params.status = this.status ? 1 : 0; params.status = this.status ? 1 : 0;
if (params.literatureId) { if (params.literatureId) {
let res = await editLiterature(params); let res = await editRole(params);
if (res.code == 0) { if (res.code == 0) {
this.$message.success("修改成功!"); this.$message.success("修改成功!");
this.reload(); this.reload();
} }
} else { } else {
let res = await addLiterature(params); let res = await addRole(params);
if (res.code == 0) { if (res.code == 0) {
this.$message.success("添加成功!"); this.$message.success("添加成功!");
this.reload(); this.reload();
...@@ -204,6 +169,16 @@ export default { ...@@ -204,6 +169,16 @@ export default {
}) })
.catch((_) => {}); .catch((_) => {});
}, },
handleCheckChange(data, checked, indeterminate) {
console.log(data, checked, indeterminate);
},
async getPer(){
let res = await getPermissionById(this.dialogForm.id)
debugger
console.log(res);
}
}, },
}; };
</script> </script>
......
...@@ -38,6 +38,14 @@ ...@@ -38,6 +38,14 @@
clearable clearable
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="昵称" :label-width="formLabelWidth">
<el-input
v-model="dialogForm.nickName"
autocomplete="off"
placeholder="请输入昵称"
clearable
></el-input>
</el-form-item>
<el-form-item label="真实姓名" :label-width="formLabelWidth"> <el-form-item label="真实姓名" :label-width="formLabelWidth">
<el-input <el-input
v-model="dialogForm.realName" v-model="dialogForm.realName"
...@@ -49,7 +57,7 @@ ...@@ -49,7 +57,7 @@
<el-form-item label="所属部门" :label-width="formLabelWidth"> <el-form-item label="所属部门" :label-width="formLabelWidth">
<el-cascader <el-cascader
style="width: 100%" style="width: 100%"
v-model="dialogForm.deptNo" v-model="dialogForm.deptId"
:options="orgTreeData" :options="orgTreeData"
:props="optionProps" :props="optionProps"
placeholder="请选择所属部门" placeholder="请选择所属部门"
...@@ -113,6 +121,8 @@ export default { ...@@ -113,6 +121,8 @@ export default {
if (that.dialogForm.id) { if (that.dialogForm.id) {
// 回填状态 // 回填状态
that.status = Boolean(Number(that.dialogForm.status)); that.status = Boolean(Number(that.dialogForm.status));
// 回填部门
that.dialogForm.deptId = [that.dialogForm.deptId];
} }
}, },
immediate: true, immediate: true,
...@@ -132,7 +142,7 @@ export default { ...@@ -132,7 +142,7 @@ export default {
data() { data() {
var validatePass = (rule, value, callback) => { var validatePass = (rule, value, callback) => {
if (value === "") { if (value === "") {
callback(new Error("请输入密码")); callback(new Error("请输入密码"));
} else { } else {
var pattern = var pattern =
/^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\W_!@#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z\\W_!@#$%^&*`~()-+=]+$)(?![0-9\\W_!@#$%^&*`~()-+=]+$)[a-zA-Z0-9\\W_!@#$%^&*`~()-+=]{8,30}$/; /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\W_!@#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z\\W_!@#$%^&*`~()-+=]+$)(?![0-9\\W_!@#$%^&*`~()-+=]+$)[a-zA-Z0-9\\W_!@#$%^&*`~()-+=]{8,30}$/;
...@@ -142,7 +152,7 @@ export default { ...@@ -142,7 +152,7 @@ export default {
"密码长度至少8位,至少含数字,大写字母,小写字母,特殊符其中三种" "密码长度至少8位,至少含数字,大写字母,小写字母,特殊符其中三种"
) )
); );
} }
callback(); callback();
} }
}; };
...@@ -247,7 +257,11 @@ export default { ...@@ -247,7 +257,11 @@ export default {
// 修改状态 // 修改状态
params.status = this.status ? 1 : 0; params.status = this.status ? 1 : 0;
console.log(22, params); console.log(22, params);
return; // return;
// 处理馆藏单位
if (params.deptId instanceof Array) {
params.deptId = params.deptId[params.deptId.length - 1];
}
if (params.id) { if (params.id) {
let res = await upadateUser(params); let res = await upadateUser(params);
if (res.code == 0) { if (res.code == 0) {
......
差异被折叠。
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论