liujiayin пре 3 година
родитељ
комит
15e692d8b4

+ 159 - 0
src/views/permissions/details/fileEchart.vue

@@ -0,0 +1,159 @@
+<template>
+    <div>
+        <div style="text-align: center">
+            <!--表头-->
+            <div class="form-header">
+                <div class="title ibps-tc">用户查阅文件授权</div>
+            </div>
+            <el-transfer style="text-align: left; display: inline-block" v-model="permissionFilesKey" filterable
+                :render-content="renderFunc" :titles="['受限文件', '可查阅文件']" :button-texts="['受限', '可查阅']" :format="{
+                    noChecked: '${total}',
+                    hasChecked: '${checked}/${total}'
+                }" @change="handleChange" :data="allFiles">
+            </el-transfer>
+        </div>
+    </div>
+</template>
+
+
+
+
+<script>
+import { getLmitedFile, getUserByFile, saveUserByFile } from '@/api/permission/file'
+
+export default {
+    props: {
+        id: {
+            type: [String, Number]
+        },
+    },
+    data() {
+        return {
+            idT: '',
+            allFilesDatas: [],// 所有受控文件,与个人无关
+            allFiles: [],
+            noPermissionFiles: [],
+            permissionFiles: [],
+            permissionFilesKey: [],
+            renderFunc(h, option) {
+                return <span>{option.label}</span>;
+            }
+        };
+    },
+
+    methods: {
+        handleChange(value, direction, movedKeys) {
+            let paramsDatas = []
+            for (let i of value) {
+                let paramsData = {}
+                let filterDatas = this.allFilesDatas.filter(item => item.wenJianId == i)
+                paramsData["yongHuId"] = this.idT
+                paramsData["wenJianId"] = filterDatas[0].wenJianId
+                paramsData["wenJianMingChe"] = filterDatas[0].wenJianMingChe
+                paramsDatas.push(paramsData)
+            }
+            saveUserByFile(paramsDatas).then(res => {
+            }).catch(res => {
+            })
+        },
+        getFormData(id) {
+            getLmitedFile(id).then(res => {
+                for (let i of res.variables.data) {
+                    this.allFilesDatas.push(i)
+                    let fileData = {}
+                    fileData["key"] = i.wenJianId
+                    fileData["label"] = i.wenJianMingChe
+                    fileData["yongHuId"] = id
+                    this.noPermissionFiles.push(fileData)
+                    this.allFiles.push(fileData)
+                }
+            }).catch(res => {
+            })
+            getUserByFile(id).then(res => {
+                for (let i of res.variables.data) {
+                    this.allFilesDatas.push(i)
+                    let filterFile = {}
+                    filterFile["key"] = i.wenJianId
+                    filterFile["label"] = i.wenJianMingChe
+                    filterFile["yongHuId"] = id
+                    this.permissionFiles.push(filterFile)
+                    this.permissionFilesKey.push(i.wenJianId)
+                    this.allFiles.push(filterFile)
+
+                }
+            }).catch(res => {
+            })
+        },
+    },
+    watch: {
+        id: {
+            immediate: true,
+            handler: function (val, oldVal) {
+                this.allFilesDatas = []
+                this.permissionFiles = []
+                this.noPermissionFiles = []
+                this.allFiles = []
+                this.permissionFilesKey = []
+                this.idT = val
+                this.getFormData(val)
+            },
+        }
+    }
+};
+</script>
+  
+
+<style  scoped lang="less">
+.form-header {
+    border-bottom: 1px solid #2b34410d;
+    margin-bottom: 5px;
+
+    .title {
+        font-size: 16px;
+        font-weight: bold;
+        color: #222;
+        text-align: left;
+        padding: 8px 10px 10px;
+        margin: 0;
+    }
+
+    .desc {
+        word-wrap: break-word;
+        word-break: normal;
+        text-indent: 0;
+        line-height: 1.6;
+        margin: 0 0 11px;
+        padding: 3px 30px 8px;
+    }
+}
+
+.transfer-footer {
+    margin-left: 20px;
+    padding: 6px 5px;
+}
+
+/deep/.el-transfer {
+    width: 100%;
+}
+
+/deep/ .el-transfer-panel {
+    width: 40%;
+}
+
+/deep/ .el-transfer__buttons {
+    width: 10%;
+    padding: 0 10px;
+}
+
+/deep/ .el-transfer-panel__body {
+    height: auto;
+}
+
+/deep/.el-transfer-panel__list {
+    height: 650px;
+}
+
+/deep/ .el-button {
+    width: 100%;
+}
+</style>

+ 87 - 0
src/views/permissions/file_permission/filePermission.vue

@@ -0,0 +1,87 @@
+<template>
+  <ibps-layout ref="layout">
+    <div slot="west">
+      <div class="box">
+        <p class="title">用户信息</p>
+        <el-input placeholder="输入关键字进行过滤" v-model="filterText">
+        </el-input>
+        <div class="treeDiv">
+          <el-tree ref="tree" :data="peopleData" :props="defaultProps" @node-click="handleNodeClick"
+            :filter-node-method="filterNode"></el-tree>
+        </div>
+      </div>
+      <ibps-container :margin-left="205 + 'px'" class="page">
+        <detail v-if="show === 'detail'" :id="orgId" />
+        <el-alert v-else :closable="false" title="尚未指定一个人员" type="warning" show-icon style="height:50px;" />
+      </ibps-container>
+
+    </div>
+  </ibps-layout>
+</template>
+<script>
+import { getAllUserInfor } from '@/api/permission/page'
+import FixHeight from '@/mixins/height'
+import Detail from '../details/fileEchart.vue'
+
+
+export default {
+  components: {
+    Detail,
+  },
+  mixins: [FixHeight],
+  data() {
+    return {
+      show: '',
+      rightsArr: ['join', 'delete'],
+      rowHandle: true,
+      width: 230,
+      height: document.clientHeight,
+      orgId: '',
+      orgName: '',
+
+      peopleData: [],
+      filterText: '',
+      defaultProps: {
+        children: 'children',
+        label: 'label'
+      }
+    }
+  },
+  mounted() {
+    this.loadNode()
+  },
+  methods: {
+    loadNode(node, resolve) {
+      this.loading = true
+      getAllUserInfor().then(res => {
+        this.loading = false
+        for (let i of res.variables.data) {
+          let data = {}
+          data["id"] = i.id_
+          data["label"] = i.name_
+          this.peopleData.push(data)
+        }
+      }).catch(res => {
+        this.loading = false
+      })
+    },
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.label.indexOf(value) !== -1;
+    },
+    handleNodeClick(data) {
+      if (data.id === 0 || data.id === '0') {
+        this.show = 'empty'
+        return
+      }
+      this.orgId = data.id
+      this.show = 'detail'
+    },
+
+  }
+}
+</script>
+<style lang="scss" >
+
+</style>
+