From d0bc24aa385535a38b9cbb9e704b0b9b4c649651 Mon Sep 17 00:00:00 2001
From: lzhe <lzhe@example.com>
Date: 星期一, 03 六月 2024 11:01:05 +0800
Subject: [PATCH] 1
---
src/views/console/system/data-scope-manager.vue | 226 +++++++++++++++++++++++++++++++-------------------------
1 files changed, 126 insertions(+), 100 deletions(-)
diff --git a/src/views/console/system/data-scope-manager.vue b/src/views/console/system/data-scope-manager.vue
index 37ac3d9..1c0d827 100644
--- a/src/views/console/system/data-scope-manager.vue
+++ b/src/views/console/system/data-scope-manager.vue
@@ -2,18 +2,18 @@
* @Author: lzhe lzhe@example.com
* @Date: 2024-03-26 10:28:33
* @LastEditors: lzhe lzhe@example.com
- * @LastEditTime: 2024-04-17 18:02:12
+ * @LastEditTime: 2024-05-02 22:20:47
* @FilePath: /smart-web/src/views/master/person/main/index.vue
* @Description: 杩欐槸榛樿璁剧疆,璇疯缃甡customMade`, 鎵撳紑koroFileHeader鏌ョ湅閰嶇疆 杩涜璁剧疆: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template>
<div class="dict-main">
- <el-form :inline="true" :model="searchData" abel-width="120px">
+ <el-form :inline="true" :model="searchData" label-width="80px">
<el-form-item label="鏉冮檺鍚嶇О">
- <el-input v-model="searchData.name" placeholder="鏉冮檺鍚嶇О" clearable />
+ <el-input v-model="searchData.deptName" placeholder="鏉冮檺鍚嶇О" clearable />
</el-form-item>
<el-form-item label="鏉冮檺鎻忚堪">
- <el-input v-model="searchData.code" placeholder="鏉冮檺鎻忚堪" clearable></el-input>
+ <el-input v-model="searchData.deptName" placeholder="鏉冮檺鎻忚堪" clearable></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="searchclick">鎼滅储</el-button>
@@ -22,26 +22,42 @@
</el-form>
<div>
<div style="margin-bottom: 12px;">
- <el-button type="primary">娣诲姞</el-button>
+ <el-button type="primary" @click="addData">娣诲姞</el-button>
<el-button type="danger" @click="delData">鍒犻櫎</el-button>
<el-button type="primary" @click="addAuthority">鏉冮檺璁剧疆</el-button>
</div>
<div class="dict-table">
- <el-table ref="multipleTableRef" :data="tableData" border row-key="id" style="width: 100%" class="multipleTableRef" @selection-change="handleSelectionChange" :tree-props="{ children: 'children', hasChildren: 'has' }">
+ <el-table ref="multipleTableRef" :data="tableData" border row-key="id" style="width: 100%" class="multipleTableRef" @selection-change="handleSelectionChange" lazy
+ :load="tableLoad" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" default-expand-all>
<el-table-column type="selection" width="55" />
- <el-table-column prop="test" label="鏉冮檺鍚嶇О"></el-table-column>
- <el-table-column prop="test" label="鏉冮檺鎻忚堪"></el-table-column>
- <el-table-column prop="test" label="鏉冮檺绫诲瀷"></el-table-column>
- <el-table-column prop="test" label="鎺掑簭"></el-table-column>
- <el-table-column fixed="right" label="鎿嶄綔">
+ <el-table-column prop="deptName" label="鏉冮檺鍚嶇О"></el-table-column>
+ <el-table-column prop="fullName" label="鏉冮檺鎻忚堪"></el-table-column>
+ <el-table-column prop="deptCategoryName" label="鏉冮檺绫诲瀷"></el-table-column>
+ <el-table-column prop="sort" label="鎺掑簭"></el-table-column>
+ <el-table-column fixed="right" label="鎿嶄綔" width="280">
<template #default="scope">
- <el-button text type="primary" size="small" @click="showDrawer(scope.row, scope.$index)">鏉冮檺閰嶇疆</el-button>
+ <el-button text type="primary" size="small" @click="table_show(scope.row, scope.$index)">鏌ョ湅</el-button>
+ <el-button text type="primary" size="small" @click="table_edit(scope.row, scope.$index)">缂栬緫</el-button>
+ <el-button text type="primary" size="small" @click="table_del(scope.row, scope.$index)">鍒犻櫎</el-button>
+ <el-button text type="primary" size="small" @click="table_edit(scope.row, scope.$index,'fixed')">鏂板瀛愰」</el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
- <save-dialog v-if="dialog.save" ref="saveDialog" :scopeTypeNameList="scopeTypeNameList" :tableRow="tableRow" @success="addDatascopeSuccess" @closed="dialog.save=false"></save-dialog>
+ <save-dialog v-if="dialog.save" ref="saveDialog" :deptCategoryList="deptCategoryList" :parentIdList ="parentIdList" @success="addDatascopeSuccess" @closed="dialog.save=false"></save-dialog>
+
+ <el-dialog title="鏉冮檺閰嶇疆" v-model="authorityVisible" :width="800" destroy-on-close>
+ <el-tabs type="border-card">
+ <el-tab-pane label="鏁版嵁鏉冮檺">
+ <el-tree ref="authorityTree" :data="authorityTreeData" :props="{ label: 'title',children: 'children'}" node-key="id" show-checkbox @check-change="treeHandleCheckChange" :default-checked-keys="treeCheck" />
+ </el-tab-pane>
+ </el-tabs>
+ <template #footer>
+ <el-button @click="authorityVisible=false" >鍙� 娑�</el-button>
+ <el-button type="primary" :loading="authoritySaveing" @click="authoritySubmit">纭畾</el-button>
+ </template>
+ </el-dialog>
</div>
</template>
<script>
@@ -55,6 +71,10 @@
name: "datascope",
data(){
return {
+ treeCheck: [],
+ authorityTreeData: [],
+ authoritySaveing: false,
+ authorityVisible: false,
scopeTypeNameList: [],
dialog: {
save: false
@@ -77,57 +97,112 @@
size: 10
},
searchData: {
- name: "",
- code: "",
- belongApplication: "",
- parentId: ""
+ deptName: "",
+ fullName: "",
+ parentId: "0"
},
dialog: {
save: false,
allocation: false
},
tableData: [],
- drawerTableData: [],
rowId: "",
- tableRow: {}
+ tableRow: {},
+ parentIdList: [],
+ deptCategoryList: []
}
},
created(){
},
mounted(){
- this.getscopeTypeNameList();//瑙勫垯鍒嗙被鏋氫妇
this.searchBtn();
+ this.getDictionary();
+ this.getParentIdList();
},
components: {
...ElementPlusIconsVue,saveDialog
},
methods: {
- getscopeTypeNameList() { //瑙勫垯鍒嗙被鏋氫妇
- this.$HTTP.get("/api/blade-system/dict/dictionary?code=data_scope_type").then(res=> {
+ treeHandleCheckChange() {
+
+ },
+ authoritySubmit() {
+ var obj = {
+ dataScopeIds: this.$refs.authorityTree.getCheckedKeys(),
+ deptId: this.selectId
+ }
+ this.authoritySaveing = true;
+ this.$HTTP.post("/api/blade-system/data-scope-manager/grant",obj).then(res=> {
+ this.authoritySaveing = false;
if(res.code == 200) {
- this.scopeTypeNameList = res.data;
+ this.authorityVisible = false;
+ this.$message.success("鎿嶄綔鎴愬姛");
+ this.searchClearBtn();
+ }else {
+ this.$alert(res.message, "鎻愮ず", {type: 'error'});
+ }
+ })
+ },
+ tableLoad(row,treeNode,resolve) {
+ this.$HTTP.get(`/api/blade-system/data-scope-manager/lazy-list?parentId=${row.id}`).then(res=> {
+ if(res.code == 200) {
+ resolve(res.data);
+ }
+ })
+ },
+ getParentIdList() {
+ this.$HTTP.get("/api/blade-system/data-scope-manager/tree").then(res=> {
+ if(res.code == 200) {
+ this.parentIdList = res.data;
+ }
+ })
+ },
+ getDictionary() {
+ this.$HTTP.get("/api/blade-system/dict/dictionary?code=data_scope_category").then(res=> {
+ if(res.code == 200) {
+ this.deptCategoryList = res.data;
}
})
},
addDatascopeSuccess() {
- this.drawerSearchclick();
+ this.searchclick();
},
+ //娣诲姞
addData(){
- this.dialog.save = true
+ this.dialog.save = true;
this.$nextTick(() => {
- this.$refs.saveDialog.open()
+ this.$refs.saveDialog.open(this.parentIdList,this.deptCategoryList);
+ })
+ },
+ getTreeSelect(id) {
+ this.$HTTP.get(`/api/blade-system/data-scope-manager/grant-select?deptId=${id}`).then(res=> {
+ if(res.code == 200) {
+ this.treeCheck = res.data;
+ }
})
},
addAuthority() {
- this.$message({
- message: '鍙兘閫夋嫨涓�鏉℃暟鎹�',
- type: 'warning'
- });
+ if(this.selection.length != 1) {
+ this.$message({
+ message: '鍙兘閫夋嫨涓�鏉℃暟鎹�',
+ type: 'warning'
+ });
+ return;
+ }
+ this.selectId = this.selection[0].id;
+ this.treeCheck = [];
+ this.$HTTP.get("/api/blade-system/menu/grant-tree").then(res=> {
+ if(res.code == 200) {
+ this.authorityTreeData = res.data.dataScope;
+ this.getTreeSelect(this.selectId);
+ this.authorityVisible = true;
+ }
+ })
},
// 鍒犻櫎
delData() {
- if(this.drawerSelection.length == 0) {
+ if(this.selection.length == 0) {
this.$message({
message: '璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�',
type: 'warning'
@@ -135,34 +210,32 @@
return;
}
var selStr = "";
- this.drawerSelection.map(item=> {
+ this.selection.map(item=> {
selStr += item.id + ","
})
selStr = selStr.replace(/,$/, '');
var that = this;
- this.$HTTP.post("/api/blade-system/data-scope/remove?ids="+selStr).then(res=> {
+ this.$HTTP.post("/api/blade-system/data-scope-manager/remove?ids="+selStr).then(res=> {
if(res.code == 200) {
that.$message.success("鎿嶄綔鎴愬姛");
- that.drawerSearchclick();
+ that.searchclick();
}
})
},
- table_edit(row){ //缂栬緫
+ table_edit(row,index,fixed){ //缂栬緫
this.dialog.save = true
- this.$HTTP.get("/api/blade-system/data-scope/detail?id="+row.id).then(res=> {
- if(res.code == 200) {
- this.dialog.save = true;
- this.$nextTick(() => {
- this.$refs.saveDialog.open('edit').setData(res.data);
- })
+ this.$nextTick(() => {
+ if(fixed) { //鍒ゆ柇鏂板瀛愰」
+ row.fixed = "fixed";
}
+ this.$refs.saveDialog.open(this.parentIdList,this.deptCategoryList,'edit').setData(row)
})
},
//鏌ョ湅
table_show(row){ //鏌ョ湅
this.dialog.save = true
this.$nextTick(() => {
- this.$refs.saveDialog.open('show').setData(row)
+ this.$refs.saveDialog.open(this.parentIdList,this.deptCategoryList,'show').setData(row)
})
},
table_del(row) {
@@ -170,20 +243,16 @@
this.$confirm(`纭畾灏嗛�夋嫨鏁版嵁鍒犻櫎?`, '', {
type: 'warning'
}).then(() => {
- this.$HTTP.post("/api/blade-system/data-scope/remove?ids="+row.id).then(res=> {
+ this.$HTTP.post("/api/blade-system/data-scope-manager/remove?ids="+row.id).then(res=> {
if(res.code == 200) {
that.$message.success("鎿嶄綔鎴愬姛");
- that.drawerSearchclick();
+ that.searchBtn();
}
})
}).catch(() => {
})
},
- handleClose(done) {
- this.drawerTableData = [];
- done();
- },
exportFile(row,index){
window.open(row.link);
},
@@ -192,9 +261,8 @@
},
searchClearBtn() {
this.searchData = {
- name: "",
- code: "",
- belongApplication: "",
+ deptName: "",
+ fullName: "",
parentId: ""
}
this.searchBtn();
@@ -202,33 +270,7 @@
showDrawer(row){
this.rowId = row.id;
this.tableRow = row; //鍚庨潰缁勪欢浼氱敤鍒�
- this.drawerSearchclick();
this.drawer = true;
- },
- drawerSearchclick() {
- var obj = {};
- for(var key in this.drawerSearchData) {
- if(this.drawerSearchData[key]) {
- obj[key] = this.drawerSearchData[key];
- }
- }
- obj.menuId = this.rowId;
- this.$HTTP.get("/api/blade-system/data-scope/list?"+this.$TOOL.qsStringify(obj)).then(res=> {
- if(res.code == 200) {
- this.drawerTableData = res.data.records;
- this.drawerTotal = res.data.total;
- }
- })
- },
- drawerSearchClearBtn() {
- this.drawerSearchData = {
- scopeName: "",
- resourceCode: "",
- menuId: this.rowId,
- current: 1,
- size: 10
- }
- this.drawerSearchclick();
},
searchclick() {
this.searchBtn();
@@ -240,31 +282,15 @@
obj[key] = this.searchData[key];
}
}
- // this.$HTTP.get("/api/blade-system/menu/lazy-menu-list",obj).then(res=> {
- // if(res.code == 200) {
- // this.tableData = res.data;
- // }
- // })
+ this.tableData = [];
+ this.$HTTP.get("/api/blade-system/data-scope-manager/lazy-list?" + this.$TOOL.qsStringify(obj)).then(res=> {
+ if(res.code == 200) {
+ this.tableData = res.data;
+ }
+ })
},
handleSelectionChange(selection) {
this.selection = selection;
- },
- drawerHandleSelectionChange(selection) {
- this.drawerSelection = selection;
- },
- changeDepartment() {
- this.departmentVisible = true;
- },
- handleSizeChange(val) {
- console.log(`姣忛〉 ${val} 鏉);
- this.drawerSearchData.current = "1";
- this.drawerSearchData.size = val;
- this.drawerSearchclick();
- },
- handleCurrentChange(val) {
- console.log(`褰撳墠椤�: ${val}`);
- this.drawerSearchData.current = val;
- this.drawerSearchclick();
}
}
}
@@ -299,7 +325,7 @@
margin-bottom: 8px;
}
.attachSize {
- color:#3b8e8e;
+ color:#409eff;
padding: 0 10px;
font-size: 12px;
background-color: #ebf4f4;
--
Gitblit v1.9.3