From b027a6a6749f51b45fb0593b260a1d4d9cd77932 Mon Sep 17 00:00:00 2001 From: 田源 <lastanimals@163.com> Date: 星期三, 04 十二月 2024 11:40:16 +0800 Subject: [PATCH] 表单定义切换源对象清空选择模板、查询模板&&切换搜索类型清空链接类型、选择模板、查询模板 --- Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/dataView.vue | 184 +++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 165 insertions(+), 19 deletions(-) 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..fe69008 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> @@ -53,7 +53,7 @@ :formData="form" @getFormData="getFormData"> </basic-form> - <el-container v-if="!readOnly"> + <el-container v-if="!readOnly && (form.ruleType=='1' || form.ruleType=='3')"> <el-aside style="width:350px"> <fieldset> <legend> 鍊欓�夋潯浠� </legend> @@ -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-10)+'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 v-if="0" :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,8 @@ import formQueryDialog from "@/views/modelingMenu/queryTemplate/linkTypeQuery/formQueryDialog.vue"; import {queryTemplateListByAttr} from "@/api/queryTemplate/queryDefine"; import {getCriteria} from "@/api/queryTemplate/linkTypeQuery"; +import {listUserByUserType} from "@/api/system/user/api"; +import {listUserByRoleOid, listUserUnInRoleOid, saveRight} from "@/api/system/role/api"; export default { name: "dataView", @@ -112,7 +136,7 @@ default: {} }, //閫変腑琛屾暟鎹� - data: { + selectRow: { type: Object, default: {} }, @@ -124,9 +148,17 @@ type: Number, default: 400 }, + actionMap:{ + type: Object, + default: {} + } }, data() { return { + leftUserData: [], // 閫夋嫨鎴愬憳绌挎妗嗗乏渚у垵濮嬫暟鎹� + rightUserData: [], // 閫夋嫨鎴愬憳绌挎妗嗗彸渚у垵濮嬫暟鎹� + leftRoleData: [], // 閫夋嫨瑙掕壊绌挎妗嗗乏渚у垵濮嬫暟鎹� + rightRoleData: [], // 閫夋嫨瑙掕壊绌挎妗嗗彸渚у垵濮嬫暟鎹� mainData:[], tableLoading: false, mainOption: { @@ -141,6 +173,7 @@ height: this.height-80, tip:false, size:'mini', + highlightCurrentRow:true, column: [{ label: ' 鍒嗙被', prop: 'type', @@ -168,6 +201,8 @@ tip:false, showHeader:false, size:'mini', + highlightCurrentRow:true, + align:'left', column: [{ label: '鍚嶇О', prop: 'name' @@ -175,7 +210,7 @@ }, formItems:[{ label: '瑙勫垯鍚嶇О', - prop: 'qtName', + prop: 'ruleName', type: 'input', span:8, labelWidth: 100, @@ -187,31 +222,47 @@ }] }, { label: '瑙勫垯绫诲瀷', - prop: 'version', + prop: 'ruleType', type: 'select', span:6, labelWidth:110, disabled:this.readOnly, dicData: [{ label: '鍏ㄩ儴鍏佽', - value: 1 + value: '0' }, { label: '鍏佽鏉冮檺', - value: 2 + value: '1', + disabled:true }, { label: '鍏ㄩ儴鎷掔粷', - value: 3 + value: '2' }, { label: '鎷掔粷鏉冮檺', - value: 7 + value: '3', + disabled:true }], - value: 1 + value: '0' }], form:{ btmName:'', qtName: '', levelFlag:0,//0:鏅�氭煡璇㈡ā鏉�; 1:楂樼骇鏌ヨ妯℃澘" - queryTemplate:{} + queryTemplate:{},//瀹綋涓煡璇㈡潯浠� + "ID": "",//鏁版嵁鐨処D + "roles": "",//鏄剧ず鍒版巿鏉冧富浣撶晫闈紝瑙掕壊鍚嶇О锛屽涓娇鐢ㄩ�楀彿鍒嗛殧 + "userGroups": "",//鏄剧ず鍒版巿鏉冧富浣撶晫闈紝閮ㄩ棬鍚嶇О锛屽涓娇鐢ㄩ�楀彿鍒嗛殧 + "users": "",//鏄剧ず鍒版巿鏉冧富浣撶晫闈紝鐢ㄦ埛鍚嶇О锛屽涓娇鐢ㄩ�楀彿鍒嗛殧 + "expToSQL": "",//姝ゅ涓哄厑璁告潈闄愭垨鎷掔粷鏉冮檺闇�濉厖鐨勬暟鎹紝鏆傛椂涓嶅仛澶勭悊锛屼负绌哄瓧绗︿覆鍗冲彲 + "identifier": "terminology_query",//涓氬姟绫诲瀷锛坱erminology锛�+涓嬪垝绾匡紙_锛�+鎿嶄綔鍖虹殑涓�鑸搷浣滅殑鎸夐挳鑻辨枃鍚嶇О锛坬uery锛�,澶氫釜鎸夐挳鐨勮瘽鏄鏉℃暟鎹笉鏄娇鐢ㄩ�楀彿鍒嗛殧 + "isGrand": 49, //姝ゅ涓烘搷浣滃尯鐨勪竴鑸搷浣滅殑鎸夐挳鏄惁涓洪�夋嫨鎯呭喌锛屾湭閫変腑鍊间负48锛岄�変腑涓�49锛岃繖閲屾槸灏�0鍜�1杞负浜哹yte鍊硷紝鎵�浠ヤ负48锛�49 + "lexpToSQL": "",//姝ゅ涓哄厑璁告潈闄愭垨鎷掔粷鏉冮檺闇�濉厖鐨勬暟鎹紝鏆傛椂涓嶅仛澶勭悊锛屼负绌哄瓧绗︿覆鍗冲彲 + "lruleText": "",//姝ゅ涓哄厑璁告潈闄愭垨鎷掔粷鏉冮檺闇�濉厖鐨勬暟鎹紝鏆傛椂涓嶅仛澶勭悊锛屼负绌哄瓧绗︿覆鍗冲彲 + "lseniorRuleText": "",//姝ゅ涓哄厑璁告潈闄愭垨鎷掔粷鏉冮檺闇�濉厖鐨勬暟鎹紝鏆傛椂涓嶅仛澶勭悊锛屼负绌哄瓧绗︿覆鍗冲彲 + "ruleName": "assssss",//瑙勫垯鍚嶇О + "ruleText": "",//姝ゅ涓哄厑璁告潈闄愭垨鎷掔粷鏉冮檺闇�濉厖鐨勬暟鎹紝鏆傛椂涓嶅仛澶勭悊锛屼负绌哄瓧绗︿覆鍗冲彲 + "ruleType": "2",//0鍏ㄩ儴鍏佽锛�1鍏佽鏉冮檺锛�2鍏ㄩ儴鎷掔粷锛�3鎷掔粷鏉冮檺锛岀敱浜庢殏鏃跺彧鍋氬叏閮ㄥ厑璁镐笌鍏ㄩ儴鎷掔粷锛屾墍浠ユ殏鏃跺彲浠ヤ笉鐢ㄧ + "seniorRuleText": "",//姝ゅ涓哄厑璁告潈闄愭垨鎷掔粷鏉冮檺闇�濉厖鐨勬暟鎹紝鏆傛椂涓嶅仛澶勭悊锛屼负绌哄瓧绗︿覆鍗冲彲 }, radioForm:0, radioDic:[{ @@ -255,31 +306,126 @@ queryTree:{}, //鏅�氭煡璇㈡潯浠� queryCondition:[], + actionForm:[],//涓�鑸搷浣滈�変腑鍊� + actionDic:[],//涓�鑸搷浣滈�変腑椤� + linkactionForm:[],//鍏崇郴鍜岃穬杩侀�変腑鍊� + linkactionDic:[]//鍏崇郴鍜岃穬杩侀�変腑椤� } }, created() { - + listUserByUserType().then(res => { + if(typeof res.data == 'string'){ + res.data=eval('('+res.data +')') + } + // 缁勮濂界┛姊鍙敤鏁版嵁 + this.leftUserData = res.data.data.map(item => { + return { + name: item.name + `(${item.id})`, + oid: item.oid + } + }) + this.rightUserData = []; + }) }, watch: { - data:{ + selectRow:{ handler(val) { - if(val && val.oid){ - this.getTemp(true); - this.getTemp(false) + this.authData=[]; + if(val && val.rules){ + //this.getTemp(true); + //this.getTemp(false) + //鏋勫缓鎺堟潈涓讳綋鏁版嵁 + if(val.rules.users){ + val.rules.users.split(',').forEach((item,i)=>{ + if(item){ + this.authData.push({ + name:'{'+item+', '+item+', user}' + }) + } + }) + } + if(val.rules.roles){ + val.rules.roles.split(',').forEach((item,i)=>{ + if(item){ + this.authData.push({ + name:'{'+item+', '+item+', role}' + }) + } + }) + } + if(val.rules.userGroups){ + val.rules.userGroups.split(',').forEach((item,i)=>{ + if(item){ + this.authData.push({ + name:'{'+item+', '+item+', userGroup}' + }) + } + }) + } } }, immediate: true, deep: true - } + }, + actionMap:{ + handler(val) { + this.actionDic=[]; + if(val){ + for(var i in val){ + this.actionDic.push({ + label:i, + value:val[i] + }) + } + }; + }, + immediate: true, + deep: true + }, }, methods: { //閫変腑鐢ㄦ埛 userHandler(){ + 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 +576,7 @@ <style lang="scss" scoped> ::v-deep { - .el-radio { + .el-radio ,.el-checkbox{ margin-right: 30px; } } -- Gitblit v1.9.3