From 1d8ffe35090c3e541dc2e0d9a26a4ef1c853d3b1 Mon Sep 17 00:00:00 2001 From: wangting <675591594@qq.com> Date: 星期五, 27 九月 2024 18:10:20 +0800 Subject: [PATCH] UI授权 --- Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/UIDialog.vue | 143 ++++++++++++++++++++++++++++ Source/plt-web/plt-web-ui/src/api/authority/ui/uiAuthor.js | 19 +++ Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue | 109 ++++++++++++++++----- Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/index.vue | 16 ++ Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/formDialog.vue | 4 5 files changed, 260 insertions(+), 31 deletions(-) diff --git a/Source/plt-web/plt-web-ui/src/api/authority/ui/uiAuthor.js b/Source/plt-web/plt-web-ui/src/api/authority/ui/uiAuthor.js new file mode 100644 index 0000000..9d3b1dc --- /dev/null +++ b/Source/plt-web/plt-web-ui/src/api/authority/ui/uiAuthor.js @@ -0,0 +1,19 @@ +import request from '@/router/axios'; + +// 鍔熻兘妯″潡鏌ヨ +export function getUIAuthor(params) { + return request({ + url: "/api/uiManagerController/getUIAuthor", + method: "get", + params + }); +} + +//鎺堟潈 +export const authorizedUI = (params) => { + return request({ + url: '/api/uiManagerController/authorizedUI', + method: 'post', + data: params + }) +} diff --git a/Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/UIDialog.vue b/Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/UIDialog.vue new file mode 100644 index 0000000..255cce2 --- /dev/null +++ b/Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/UIDialog.vue @@ -0,0 +1,143 @@ +<template> + <el-dialog v-dialogDrag + :title="dialog.title" + :visible.sync="dialog.showDialog" + width="1000px" + :append-to-body="true" + class="avue-dialog" + :destroy-on-close="true" + :close-on-click-modal="false" + @close="cancelDialog"> + <el-aside> + <basic-container> + <avue-tree ref="tree" :data="treeData" :option="treeOption" @node-click="nodeClick"> + <span slot-scope="{ node, data }" class="el-tree-node__label"> + <span style="font-size: 15px"> + <i class="el-icon-user-solid"></i> + {{ (node || {}).label }} + </span> + </span> + </avue-tree> + </basic-container> + </el-aside> + + <el-main> + <basic-container> + <avue-tree ref="uiTree" :data="uiTreeData" :option="uiTreeOption"> + <span slot-scope="{ node, data }" class="el-tree-node__label"> + <span style="font-size: 15px"> + <i class="el-icon-user-solid"></i> + {{ (node || {}).label }} + </span> + </span> + </avue-tree> + </basic-container> + </el-main> + <div class="dialog-footer avue-dialog__footer"> + <el-button type="primary" plain size="small" @click="submitDialog" >鎺堟潈</el-button> + <el-button type="primary" plain size="small" @click="clearValue" >閲嶇疆</el-button> + <el-button size="small" @click="cancelDialog">鍙� 娑�</el-button> + </div> + </el-dialog> +</template> + +<script> +import {gridRoles} from '@/api/system/role/api' +import {getUIAuthor,authorizedUI} from "@/api/authority/ui/uiAuthor"; + +export default { +name: "UIDialog", + data() { + return { + dialog: { + showDialog: false, + title: "UI鎺堟潈", + loading: false, + type: "add", + }, + type:'',//涓氬姟绫诲瀷 + context:'',//UI涓婁笅鏂嘽ode + treeOption: { + height: '500px', + menu: false, + addBtn: false, + props: { + label: 'name', + value: 'oid', + children: 'children' + } + }, + nodeRow: {}, + treeData: [], + uiTreeOption: { + height: '500px', + menu: false, + addBtn: false, + filter:false, + props: { + label: 'name', + value: 'oid', + children: 'children' + } + }, + uiTreeData: [], + } + }, + methods:{ + openDialog(type,context) { + this.type=type; + this.context=context; + this.dialog.showDialog = true; + this.getTreeList() + + }, + cancelDialog() { + this.dialog.loading = false; + this.dialog.showDialog = false; + }, + getTreeList() { + const loading = this.$loading({}); + gridRoles().then(res => { + this.treeData = res.data.data; + loading.close(); + }).catch(error=>{ + loading.close(); + }) + }, + // 瑙掕壊鐐瑰嚮 + nodeClick(row) { + this.nodeRow = row; + + const loading = this.$loading({}); + getUIAuthor().then(res => { + this.uiTreeData = res.data.data; + loading.close(); + }).catch(error=>{ + loading.close(); + }) + }, + submitDialog() { + this.$refs.form.validate((valid) => { + if (valid) { + const formData={} + authorizedUI(formData).then(res => { + if (res.data.success) { + this.$message.success("淇濆瓨鎴愬姛"); + this.cancelDialog(); + } + }); + } else { + return false; + } + }); + }, + clearValue(){ + this.$refs.uiTree.setCheckedNodes([]) + } + } +} +</script> + +<style scoped> + +</style> diff --git a/Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue b/Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue index 308c333..e29f4a0 100644 --- a/Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue +++ b/Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue @@ -1,33 +1,17 @@ <template> <el-container> - <el-aside> <basic-container> - <div ref="TreeBox" style="height: calc(100vh - 144px);!important;"> - <div class="headerCon"> - <el-button icon="el-icon-plus" plain size="small" type="primary" @click="addClickHandler">鍒涘缓 - </el-button> - <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editClickHandler">淇敼 - </el-button> - <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delClickHandler">鍒犻櫎 - </el-button> - <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">瀵煎嚭 - </el-button> - <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="uploadClickHandler">瀵煎叆 - </el-button> - <el-button class="smallBtn" plain size="small" type="primary" - @click="checkViewClickHandler">鏌ョ湅浣跨敤鑼冨洿 - </el-button> - </div> + <div ref="TreeBox" style="height: calc(100vh - 154px);!important;"> <!-- 宸︿晶鏍� --> - <div style="height: calc(100vh - 280px);"> + <div style="height: calc(100vh - 200px);"> <avue-tree :data="treeData" :option="treeOption" @node-click="nodeClick"> - <span slot-scope="{ node, data }" class="el-tree-node__label"> - <span style="font-size: 15px"> - <i class="el-icon-s-promotion"></i> - {{ (node || {}).label }} - </span> - </span> + <span slot-scope="{ node, data }" class="el-tree-node__label"> + <span style="font-size: 15px"> + <i class="el-icon-user-solid"></i> + {{ (node || {}).label }} + </span> + </span> </avue-tree> </div> </div> @@ -43,8 +27,83 @@ </template> <script> +import {gridRoles} from "@/api/system/role/api"; +import {getUIAuthor,authorizedUI} from "@/api/authority/ui/uiAuthor"; + export default { - name: "index" + name: "index", + data() { + return { + type:'',//涓氬姟绫诲瀷 + treeOption: { + height: '500px', + menu: false, + addBtn: false, + props: { + label: 'name', + value: 'oid', + children: 'children' + } + }, + nodeRow: {}, + treeData: [], + uiTreeOption: { + height: '500px', + menu: false, + addBtn: false, + filter:false, + props: { + label: 'name', + value: 'oid', + children: 'children' + } + }, + uiTreeData: [], + } + }, + created() { + this.getTreeList() + }, + methods:{ + getTreeList() { + const loading = this.$loading({}); + gridRoles().then(res => { + this.treeData = res.data.data; + loading.close(); + }).catch(error=>{ + loading.close(); + }) + }, + // 瑙掕壊鐐瑰嚮 + nodeClick(row) { + this.nodeRow = row; + const loading = this.$loading({}); + getUIAuthor().then(res => { + this.uiTreeData = res.data.data; + loading.close(); + }).catch(error=>{ + loading.close(); + }) + }, + saveHandler() { + this.$refs.form.validate((valid) => { + if (valid) { + const formData={} + authorizedUI(formData).then(res => { + if (res.data.success) { + this.$message.success("淇濆瓨鎴愬姛"); + this.cancelDialog(); + } + }); + } else { + return false; + } + }); + }, + clearValue(){ + this.$refs.uiTree.setCheckedNodes([]) + } + } } </script> diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/formDialog.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/formDialog.vue index 3490a9d..23931d1 100644 --- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/formDialog.vue +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/queryTemplate/linkTypeQuery/formDialog.vue @@ -98,15 +98,11 @@ dialog: { showDialog: false, title: "鍒涘缓", - submitTxt: "淇濆瓨", - submitIcon: "el-icon-check", loading: false, type: "add", }, crudDialog: { showDialog: false, - submitTxt: "淇濆瓨", - submitIcon: "el-icon-check", }, formItems:[{ label: '鏌ヨ妯℃澘鍚嶇О', diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/index.vue index 4870af7..9a6bc20 100644 --- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/index.vue +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/index.vue @@ -38,7 +38,7 @@ <el-button icon="el-icon-delete" plain size="small" type="danger" @click="delHandler">鍒犻櫎</el-button>--> <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">瀵煎嚭</el-button> <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadClickHandler">瀵煎叆</el-button> - <el-button icon="el-icon-place" plain size="small" type="primary" @click="">鎺堟潈</el-button> + <el-button icon="el-icon-place" plain size="small" type="primary" @click="uiAuthorHandler">鎺堟潈</el-button> </template> <template slot="menu" slot-scope="scope"> <el-button icon="el-icon-edit" size="small" type="text" @click="rowEditBtnClick(scope.row)">缂栬緫 @@ -126,6 +126,7 @@ <!-- 瀵煎叆 --> <upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" :tipList="tipList" :fileData="fileData" title="瀵煎叆" @updata="getTableList" @upfaildata="upFail"></upload-file> + <!--椤电绐楀彛--> <el-dialog v-dialogDrag :title="dialog.title" :visible.sync="dialog.showDialog" @@ -137,6 +138,8 @@ @close="dialog.showDialog=false"> <pl-show :uiDefineData="dialog.uiDefineData"></pl-show> </el-dialog> + <!--ui鎺堟潈--> + <ui-author ref="uiAuthor"></ui-author> </el-main> </el-container> @@ -147,9 +150,10 @@ import basicOption from "@/util/basic-option"; import func from "@/util/func"; import plShow from "@/views/modelingMenu/ui/uiDefine/rightRegion/plShow"; +import uiAuthor from "@/views/authority/ui/uiAuthorization/UIDialog" export default { name: "index", - components:{plShow}, + components:{plShow,uiAuthor}, data() { return { dialog: { @@ -581,6 +585,14 @@ upFail(response){ }, + //ui鎺堟潈 + uiAuthorHandler(){ + if (this.selectList.length!=1) { + this.$message.error('璇烽�夋嫨涓�鏉℃暟鎹�'); + return; + } + this.$refs.uiAuthor.openDialog(this.nodeRow.attributes.name,this.selectList[0].plCode); + }, // 缂栬緫鎸夐挳 rowEditBtnClick(row) { this.form={ -- Gitblit v1.9.3