From 161edfd2a50595021d9bfe303ed7f1b26893b862 Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期五, 29 十一月 2024 12:12:15 +0800
Subject: [PATCH] 数据授权
---
Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/dataView.vue | 114 ++++++++++++++++++++++++++++++++++++-
Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/index.vue | 20 +++---
Source/plt-web/plt-web-ui/src/api/authority/ui/dataAuthor.js | 28 +++++++++
3 files changed, 148 insertions(+), 14 deletions(-)
diff --git a/Source/plt-web/plt-web-ui/src/api/authority/ui/dataAuthor.js b/Source/plt-web/plt-web-ui/src/api/authority/ui/dataAuthor.js
new file mode 100644
index 0000000..a6b5b23
--- /dev/null
+++ b/Source/plt-web/plt-web-ui/src/api/authority/ui/dataAuthor.js
@@ -0,0 +1,28 @@
+import request from "@/router/axios";
+
+// 鍒楄〃鏌ヨ
+export function getData(typeName) {
+ return request({
+ url: "/api/dataAuthController/getData",
+ method: "get",
+ params: {
+ typeName
+ }
+ });
+}
+//鏂板銆佷慨鏀�
+export const saveGrand = (params) => {
+ return request({
+ url: '/api/dataAuthController/saveGrand',
+ method: 'post',
+ params: params
+ })
+}
+// 鍒犻櫎
+export function delGrand(params) {
+ return request({
+ url: "/api/dataAuthController/delGrand",
+ method: "delete",
+ params
+ })
+}
diff --git a/Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/dataView.vue b/Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/dataView.vue
index d12fd89..cb054cb 100644
--- a/Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/dataView.vue
+++ b/Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/dataView.vue
@@ -4,7 +4,7 @@
<el-tab-pane>
<span slot="label"><i class="el-icon-s-custom"></i> 涓讳綋</span>
<div v-if="!readOnly" style="margin-bottom: 10px;">
- <el-button plain size="mini" type="primary" @click="userHandler">閫変腑鐢ㄦ埛</el-button>
+ <el-button plain size="mini" type="primary" @click="userHandler">閫夋嫨鐢ㄦ埛</el-button>
<el-button plain size="mini" type="primary" @click="roleHandler">閫夋嫨瑙掕壊</el-button>
<el-button plain size="mini" type="primary" @click="deptHandler">閫夋嫨鐢ㄦ埛缁�</el-button>
</div>
@@ -91,8 +91,30 @@
</el-tab-pane>
<el-tab-pane>
<span slot="label"><i class="el-icon-s-tools"></i> 鎿嶄綔</span>
+ <fieldset :style="'width:99.5%;height: '+(height/2+20)+'px;margin-bottom:10px;'">
+ <legend> 涓�鑸搷浣� </legend>
+ <div>
+ <avue-checkbox :disabled="readOnly" key="actionCheck" :all="!readOnly" v-model="actionForm" placeholder="璇烽�夋嫨鍐呭" :dic="actionDic"></avue-checkbox>
+ </div>
+ </fieldset>
+ <fieldset :style="'width:99.5%;height: '+(height/2-30)+'px;'">
+ <legend> 鍏崇郴鍜岃穬杩� </legend>
+ <div>
+ <avue-checkbox :disabled="readOnly" key="linkActionCheck" :all="!readOnly" v-model="linkactionForm" placeholder="璇烽�夋嫨鍐呭" :dic="linkactionDic"></avue-checkbox>
+ </div>
+ </fieldset>
</el-tab-pane>
</el-tabs>
+ <!-- 閫夋嫨鐢ㄦ埛绌挎妗� -->
+ <transfer ref="usertransfer" :left-role-data="leftUserData" :right-role-data="rightUserData"
+ :transferTitle="['鏈�夋嫨鐢ㄦ埛','宸查�夋嫨鐢ㄦ埛']" title="涓讳綋娣诲姞鐢ㄦ埛"
+ @transferSend="userSendHandler">
+ </transfer>
+ <!-- 閫夋嫨鐢ㄦ埛绌挎妗� -->
+ <transfer ref="roletransfer" :left-role-data="leftRoleData" :right-role-data="rightRoleData"
+ :transferTitle="['鐜版湁瑙掕壊','鎷ユ湁瑙掕壊']" title="娣诲姞瑙掕壊"
+ @transferSend="roleSendHandler">
+ </transfer>
</div>
</template>
@@ -101,6 +123,7 @@
import formQueryDialog from "@/views/modelingMenu/queryTemplate/linkTypeQuery/formQueryDialog.vue";
import {queryTemplateListByAttr} from "@/api/queryTemplate/queryDefine";
import {getCriteria} from "@/api/queryTemplate/linkTypeQuery";
+import {listUserByRoleOid, listUserUnInRoleOid, saveRight} from "@/api/system/role/api";
export default {
name: "dataView",
@@ -124,9 +147,17 @@
type: Number,
default: 400
},
+ actionDic:{
+ type: Object,
+ default: {}
+ }
},
data() {
return {
+ leftUserData: [], // 閫夋嫨鎴愬憳绌挎妗嗗乏渚у垵濮嬫暟鎹�
+ rightUserData: [], // 閫夋嫨鎴愬憳绌挎妗嗗彸渚у垵濮嬫暟鎹�
+ leftRoleData: [], // 閫夋嫨瑙掕壊绌挎妗嗗乏渚у垵濮嬫暟鎹�
+ rightRoleData: [], // 閫夋嫨瑙掕壊绌挎妗嗗彸渚у垵濮嬫暟鎹�
mainData:[],
tableLoading: false,
mainOption: {
@@ -255,6 +286,16 @@
queryTree:{},
//鏅�氭煡璇㈡潯浠�
queryCondition:[],
+ actionForm:[],//涓�鑸搷浣滈�変腑鍊�
+ actionDic:[],//涓�鑸搷浣滈�変腑椤�
+ linkactionForm:[],//鍏崇郴鍜岃穬杩侀�変腑鍊�
+ linkactionDic:[{
+ label:'閫夐」111',
+ value:0
+ },{
+ label:'閫夐」222',
+ value:1
+ }]//鍏崇郴鍜岃穬杩侀�変腑椤�
}
},
created() {
@@ -270,16 +311,81 @@
},
immediate: true,
deep: true
- }
+ },
+ actionMap:{
+ handler(val) {
+ this.actionDic=[{
+ label:'閫夐」1',
+ value:0
+ },{
+ label:'閫夐」2',
+ value:1
+ }];
+ },
+ immediate: true,
+ deep: true
+ },
},
methods: {
//閫変腑鐢ㄦ埛
userHandler(){
+ Promise.all([
+ listUserUnInRoleOid({pkRole: this.selectList.oid}),
+ listUserByRoleOid({pkRole: this.selectList.oid})
+ ]).then(([unInRoleRes, byRoleRes]) => {
+ if (unInRoleRes.data.code === 200 && byRoleRes.data.code === 200) {
+ const leftData = [...unInRoleRes.data.data, ...byRoleRes.data.data];
+ // 缁勮濂界┛姊鍙敤鏁版嵁
+ this.leftUserData = leftData.map(item => {
+ return {
+ name: item.name + `(${item.id})`,
+ oid: item.oid
+ }
+ })
+ this.rightUserData = byRoleRes.data.data.map(item => item.oid);
+ this.$refs.usertransfer.visible = true;
+ }
+ });
+ },
+
+ // 閫変腑鐢ㄦ埛绌挎妗嗗洖濉�
+ userSendHandler(row) {
+ row.forEach((item,index)=>{
+ this.authData.push({
+ type:'user',
+ ...item
+ })
+ })
},
//閫夋嫨瑙掕壊
roleHandler(){
-
+ Promise.all([
+ listUserUnInRoleOid({pkRole: this.selectList.oid}),
+ listUserByRoleOid({pkRole: this.selectList.oid})
+ ]).then(([unInRoleRes, byRoleRes]) => {
+ if (unInRoleRes.data.code === 200 && byRoleRes.data.code === 200) {
+ const leftData = [...unInRoleRes.data.data, ...byRoleRes.data.data];
+ // 缁勮濂界┛姊鍙敤鏁版嵁
+ this.leftRoleData = leftData.map(item => {
+ return {
+ name: item.name + `(${item.id})`,
+ oid: item.oid
+ }
+ })
+ this.rightRoleData = byRoleRes.data.data.map(item => item.oid);
+ this.$refs.transfer.visible = true;
+ }
+ });
+ },
+ // 閫夋嫨瑙掕壊绌挎妗嗗洖濉�
+ roleSendHandler(row) {
+ row.forEach((item,index)=>{
+ this.authData.push({
+ type:'role',
+ ...item
+ })
+ })
},
//閫夋嫨鐢ㄦ埛缁�
deptHandler(){
@@ -430,7 +536,7 @@
<style lang="scss" scoped>
::v-deep {
- .el-radio {
+ .el-radio ,.el-checkbox{
margin-right: 30px;
}
}
diff --git a/Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/index.vue b/Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/index.vue
index 9334a69..3ed864f 100644
--- a/Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/index.vue
@@ -35,7 +35,7 @@
</template>
</avue-crud>
<div style="margin-top: 15px;">
- <data-view key="dataView" :btmNode="nodeRow" :data="viewData" :readOnly="true" :height="clientHeight-260-220"></data-view>
+ <data-view key="dataView" :btmNode="nodeRow" :data="viewData" :actionDic="actionMap" :readOnly="true" :height="clientHeight-260-220"></data-view>
</div>
<!-- 鏂板 && 缂栬緫 -->
<el-dialog
@@ -47,7 +47,7 @@
width="70%"
@close="addDialogClose">
<div>
- <data-view key="editView" :btmNode="nodeRow" :data="viewData" :readOnly="false" :height="clientHeight-340"></data-view>
+ <data-view ref="editView" key="editView" :btmNode="nodeRow" :data="viewData" :actionDic="actionMap" :readOnly="false" :height="clientHeight-340"></data-view>
</div>
<span slot="footer" class="dialog-footer">
<el-button size="small" type="primary" @click="addDialogSavaHandler">纭� 瀹�</el-button>
@@ -84,10 +84,9 @@
import {getBizTree} from "@/api/UI/uiDefine";
import basicOption from "@/util/basic-option";
import dataView from "./dataView";
-import {getTypeActionByType} from "@/api/authority/ui/typeAction";
+import {getData,saveGrand,delGrand} from "@/api/authority/ui/dataAuthor";
import func from "@/util/func";
import {getUsedEnumList} from "@/api/modeling/enumType/api";
-import {deleteTemplate, saveTemplate, updateTemplate} from "@/api/queryTemplate/queryDefine";
export default {
name: "index",
components:{dataView},
@@ -138,7 +137,8 @@
viewData:{},
title: '',
visible: false,
- form:{}
+ form:{},
+ actionMap:{}
}
},
created() {
@@ -163,12 +163,13 @@
}
},
getTableList() {
- getTypeActionByType({
+ getData({
'typeName': this.nodeRow.attributes.name,
}).then(res => {
- this.data = res.data.data;
+ this.data = res.data.obj.rowList;
this.$refs.crud.clearSelection();
this.tableLoading = false;
+ this.actionMap=res.data.obj.actionMap
})
},
handleRefresh() {
@@ -227,7 +228,6 @@
this.checkViewData = this.checkViewDataSearch;
return done();
}
- ;
this.checkViewData = this.checkViewData.filter(item => {
return item.source && item.source.includes(source);
@@ -256,7 +256,7 @@
},
// 鏂板缂栬緫淇濆瓨
addDialogSavaHandler() {
- saveTemplate(this.viewData).then(res => {
+ saveGrand(this.viewData).then(res => {
if (res.data.code === 200) {
this.$message.success(res.data.obj);
this.getTableList();
@@ -279,7 +279,7 @@
cancelButtonText: '鍙栨秷',
type: 'warning'
}).then(() => {
- deleteTemplate({name:this.templateForm}).then(res => {
+ delGrand({name:this.templateForm}).then(res => {
if (res.data.code === 200) {
this.$message.success(res.data.obj);
this.getTableList();
--
Gitblit v1.9.3