wangting
2024-11-29 161edfd2a50595021d9bfe303ed7f1b26893b862
数据授权
已修改2个文件
已添加1个文件
162 ■■■■■ 文件已修改
Source/plt-web/plt-web-ui/src/api/authority/ui/dataAuthor.js 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/dataView.vue 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/authority/ui/dataAuthorization/index.vue 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
  })
}
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>&nbsp;一般操作 </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>&nbsp;关系和跃迁 </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;
  }
}
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();