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