瀏覽代碼

Merge branch 'master' of http://132.232.92.186:3000/XinXiBu/oa-system

liuhj 2 年之前
父節點
當前提交
bd99db8395
共有 1 個文件被更改,包括 205 次插入190 次删除
  1. 205 190
      src/components/child/AuthorityJob.vue

+ 205 - 190
src/components/child/AuthorityJob.vue

@@ -1,37 +1,39 @@
 <template>
-    <div>
+    <div  v-loading="loading"
+    element-loading-text="拼命加载中"
+    element-loading-spinner="el-icon-loading">
         <div class="job-box">
             <div class="job-head">
                 <div>
                     <el-select @change="Inquirechange()" v-model="value" clearable placeholder="权限模块">
-                        <el-option v-for="item in authority" :key="item.value" :label="item.label" :value="item.value">
+                        <el-option v-for="item in authority" :key="item.value" :label="item.name" :value="item.id">
                         </el-option>
                     </el-select>
                 </div>
                 <div>
-                    <el-select v-model="valuecorporation" clearable placeholder="公司">
-                        <el-option v-for="item in corporation" :key="item.value" :label="item.label" :value="item.value">
+                    <el-select @change="companyChange()" v-model="valuecorporation" clearable placeholder="公司">
+                        <el-option v-for="item in corporation" :key="item.value" :label="item.companyName" :value="item.id">
                         </el-option>
                     </el-select>
-                    <el-select v-model="valuedepartmental" clearable placeholder="部门">
-                        <el-option v-for="item in departmental" :key="item.value" :label="item.label" :value="item.value">
+                    <el-select @change="depaChange()" v-model="valuedepartmental" clearable placeholder="部门">
+                        <el-option v-for="item in departmental" :key="item.id" :label="item.depName" :value="item.id">
                         </el-option>
                     </el-select>
-                    <el-select v-model="valueposition" clearable placeholder="职位">
-                        <el-option v-for="item in position" :key="item.value" :label="item.label" :value="item.value">
+                    <el-select @change="JobChange()" v-model="valueposition" clearable placeholder="职位">
+                        <el-option v-for="item in position" :key="item.id" :label="item.jobName" :value="item.id">
                         </el-option>
                     </el-select>
-                    <el-button type="primary">保 存</el-button>
-                </div>
+                    <el-button type="primary" @click="saveAuth()">保 存</el-button>
+                </div> 
             </div>
             <div class="job-table">
                 <el-table :data="authorityLists.slice((currentPage - 1) * pageSize, currentPage * pageSize)" border
-                    @select="handleSelect" style="width: 100%">
+                    @select="handleSelect" @select-all="allchange" style="width: 100%">
                     <el-table-column type="selection" width="55">
                     </el-table-column>
-                    <el-table-column prop="title" label="权限页面" width="180">
+                    <el-table-column prop="name" label="权限页面" width="180">
                     </el-table-column>
-                    <el-table-column width="55" label="查看">
+                    <!-- <el-table-column width="55" label="查看">
                         <template slot-scope="scope">
                             <el-checkbox v-model="authorityLists[scope.$index].ck"
                                 @change="selectRadiocheck(scope.$index, scope.row)"
@@ -51,8 +53,19 @@
                                 @change="selectRadioedit(scope.$index, scope.row)"
                                 :disabled="authorityLists[scope.$index].disabled"></el-checkbox>
                         </template>
+                    </el-table-column> -->
+                    <el-table-column width="55" :label="op.functionName"  :key="op.id" v-for="op in opList">
+                        <template slot-scope="scope">
+                            <div>
+                                <el-checkbox @change='checkchange(authorityLists[scope.$index].id,op.id)'  v-if=" authorityLists[scope.$index].opList.indexOf(op.id) != -1" :value="authorityLists[scope.$index].selList.indexOf(op.id) != -1" >
+                                </el-checkbox >
+                                <el-checkbox  v-else :disabled="true" >
+                                </el-checkbox>
+                            </div>
+                        </template>
                     </el-table-column>
-                    <el-table-column width="55" label="下载">
+                   
+                    <!-- <el-table-column width="55" label="下载">
                         <template slot-scope="scope">
                             <el-checkbox v-model="authorityLists[scope.$index].xz"
                                 @change="selectRadiodown(scope.$index, scope.row)"
@@ -65,14 +78,14 @@
                                 @change="selectRadioup(scope.$index, scope.row)"
                                 :disabled="authorityLists[scope.$index].disabled"></el-checkbox>
                         </template>
-                    </el-table-column>
+                    </el-table-column> -->
                     <el-table-column prop="address" label="备注">
                     </el-table-column>
                 </el-table>
                 <div class="block">
                     <el-pagination align='center' @size-change="handleSizeChange" @current-change="handleCurrentChange"
                         :current-page="currentPage" :page-sizes="[14, 20]" :page-size="pageSize"
-                        layout="total, sizes, prev, pager, next" :total="authorityLists.length">
+                        layout="total, sizes, prev, pager, next" :total="authorityList.length">
                     </el-pagination>
                 </div>
             </div>
@@ -81,176 +94,31 @@
 </template>
 
 <script>
+import { promised, reject, resolve } from 'q';
+
 export default {
     data() {
         return {
-            authority: [{
-                value: '1',
-                label: '人事'
-            },
-            {
-                value: '2',
-                label: '国交'
-            },
-            {
-                value: '3',
-                label: '财务'
-            },
-            {
-                value: '4',
-                label: '报批'
-            },
-            {
-                value: '5',
-                label: '酒店'
-            }],
+            authority: [],
             value: '',
-
-            corporation: [{
-                value: '选项1',
-                label: '四川'
-            },
-            {
-                value: '选项2',
-                label: '成都'
-            }
-            ],
+            corporation: [],
             valuecorporation: '',
 
-            departmental: [{
-                value: '选项1',
-                label: '信息部'
-            },
-            {
-                value: '选项2',
-                label: '市场部'
-            }
-            ],
-            valuedepartmental: '',
+            departmental: [], //部门数据
+            valuedepartmental: '', //部门val
 
-            position: [{
-                value: '选项1',
-                label: '后端'
-            },
-            {
-                value: '选项2',
-                label: 'UI'
-            }
-            ],
-            valueposition: '',
+            position: [], //职位数据
+            valueposition: '',//职位val
 
             authorityLists: [],
-            authorityList: [
-                {
-                    title: "人事权限1",
-                    moduleId: "1",
-                    ck: false,
-                    sc: false,
-                    bj: true,
-                    xz: false,
-                    scc: false
-                },
-                {
-                    title: "人事权限2",
-                    moduleId: "1"
-                },
-                {
-                    title: "人事权限3",
-                    moduleId: "1"
-                },
-                {
-                    title: "人事权限4",
-                    moduleId: "1"
-                },
-                {
-                    title: "人事权限5",
-                    moduleId: "1"
-                },
-                {
-                    title: "国交权限1",
-                    moduleId: "2"
-                },
-                {
-                    title: "国交权限2",
-                    moduleId: "2"
-                },
-                {
-                    title: "国交权限3",
-                    moduleId: "2"
-                },
-                {
-                    title: "国交权限4",
-                    moduleId: "2"
-                },
-                {
-                    title: "国交权限5",
-                    moduleId: "2"
-                },
-                {
-                    title: "财务权限1",
-                    moduleId: "3"
-                },
-                {
-                    title: "财务权限2",
-                    moduleId: "3"
-                },
-                {
-                    title: "财务权限3",
-                    moduleId: "3"
-                },
-                {
-                    title: "财务权限4",
-                    moduleId: "3"
-                },
-                {
-                    title: "财务权限5",
-                    moduleId: "3"
-                },
-                {
-                    title: "报批权限1",
-                    moduleId: "4"
-                },
-                {
-                    title: "报批权限2",
-                    moduleId: "4"
-                },
-                {
-                    title: "报批权限3",
-                    moduleId: "4"
-                },
-                {
-                    title: "报批权限4",
-                    moduleId: "4"
-                },
-                {
-                    title: "报批权限5",
-                    moduleId: "4"
-                },
-                {
-                    title: "酒店权限1",
-                    moduleId: "5"
-                },
-                {
-                    title: "酒店权限2",
-                    moduleId: "5"
-                },
-                {
-                    title: "酒店权限3",
-                    moduleId: "5"
-                },
-                {
-                    title: "酒店权限4",
-                    moduleId: "5"
-                },
-                {
-                    title: "酒店权限5",
-                    moduleId: "5"
-                }
-            ],
+            authorityList: [],
             currentPage: 1, // 当前页码
             pageSize: 14,// 每页的数据条数
             stateArr: [],
             selectedAccount: [],
+            PathUrl:'http://localhost:5256',
+            opList :[],//操作方式
+            loading:true,
         }
     },
     methods: {
@@ -263,26 +131,19 @@ export default {
         handleCurrentChange(val) {
             this.currentPage = val;
         },
+        //模块下拉框
         Inquirechange() {
-            console.log(this.value)
-            var newarr = [];
-            if (this.input == "") {
-                newarr = this.authorityList;
-            } else {
-                for (var i = 0; i < this.authorityList.length; i++) {
-                    if (this.authorityList[i].moduleId.includes(this.value)) {
-                        newarr.push(this.authorityList[i]);
-                    }
-                }
-            }
-            this.authorityLists = newarr;
+            this.currentPage = 1;
+            this.pageload(this.value);
         },
         //多选框选中方法
         handleSelect(selection, row) {
-            console.log(selection)
-            this.stateArr[this.currentPage - 1] = selection
-            this.selectedAccount = this.stateArr.flat()
-            console.log(this.selectedAccount)
+            console.log(selection,row)
+            if (selection.length > 0) {
+                row.selList = this.opList.map(x => x.id);
+            }else{
+                row.selList = [];
+            }
         },
         selectRadiocheck(index, row) {
             console.log(index)
@@ -300,9 +161,163 @@ export default {
         selectRadioup(index, row) {
             console.log(index, row)
         },
+        pageload(moduleId){
+            var that = this;
+            //初始化界面数据
+            this.$axios.post(this.PathUrl + '/api/System/GetAuth', {
+                "pageSize": this.pageSize,
+                "currentPage": this.currentPage,
+                "moduleId":moduleId,
+            }, {
+                headers: {
+                    'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1laWRlbnRpZmllciI6IkZ1dHVyZSIsImV4cCI6MTY3OTU0MjgwNSwiaXNzIjoiT0FTeXN0ZW0uY29tIiwiYXVkIjoiT0FTeXN0ZW0uY29tIn0.iy5SUInq1p3yjZultRPyzCa2ekLeepSdMLxvPwXY6MI',
+                }
+            }).then(resp => {
+                if (resp.data.code == 200) {
+                    that.authority = resp.data.data.setDataResult; //模块数据
+                    that.corporation = resp.data.data.companyDataResult; //公司数据
+                    that.authorityList = resp.data.data.systemMenuPermissionData; //页面数据(默认权限页面)
+                    that.authorityLists = that.authorityList;
+                    that.opList = resp.data.data.pageOperation; //操作方式
+                    that.loading =false;
+                }
+            }).then(suc=>{
+                if(this.valueposition != ''){
+                    this.JobChange();
+                }
+            })
+        },
+        //公司下拉框
+        companyChange(){
+            this.valuedepartmental = ''; //清空数据
+            this.valueposition = '';
+            this.position = [];
+            this.departmental = [];
+            var that = this;
+            //初始化界面数据
+            this.$axios.post(this.PathUrl + '/api/System/QueryDepartmentList', {
+                "CompanyId": this.valuecorporation,
+                "PortType": 1,
+            }, {
+                headers: {
+                    'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1laWRlbnRpZmllciI6IkZ1dHVyZSIsImV4cCI6MTY3OTU0MjgwNSwiaXNzIjoiT0FTeXN0ZW0uY29tIiwiYXVkIjoiT0FTeXN0ZW0uY29tIn0.iy5SUInq1p3yjZultRPyzCa2ekLeepSdMLxvPwXY6MI',
+                }
+            }).then(resp => {
+                console.log(resp);
+                if (resp.data.code == 200) {
+                    that.departmental = resp.data.data;
+                }
+            })
+
+        },
+        //部门下拉框
+        depaChange(){
+            var that = this;
+            this.position = [], //职位数据
+            this.valueposition = '',//职位val
+            //初始化界面数据
+            this.$axios.post(this.PathUrl + '/api/System/QueryJobPost', {
+                "CompanyId": this.valuecorporation,
+                "DepId":this.valuedepartmental,
+                "PortType": 1,
+            }, {
+                headers: {
+                    'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1laWRlbnRpZmllciI6IkZ1dHVyZSIsImV4cCI6MTY3OTU0MjgwNSwiaXNzIjoiT0FTeXN0ZW0uY29tIiwiYXVkIjoiT0FTeXN0ZW0uY29tIn0.iy5SUInq1p3yjZultRPyzCa2ekLeepSdMLxvPwXY6MI',
+                }
+            }).then(resp => {
+                console.log(resp);
+                if (resp.data.code == 200) {
+                    that.position =  resp.data.data;
+                }
+            })
+        },
+        //保存权限
+        saveAuth(){
+            var that = this;
+
+            if(this.valueposition == ''){
+                this.$message.error('请选择职位!');
+                return;  
+            }
+
+            var savejob = [];
+            this.authorityLists.forEach(item=>{
+                savejob.push({
+                    SmId:item.id,
+                    FIds:item.selList,
+                });
+            })
+            console.log(savejob);
+            //初始化界面数据
+            this.$axios.post(this.PathUrl + '/api/System/SaveJobAuth', {
+                "Jpid": this.valueposition,
+                "Savejobs": savejob,
+            }, {
+                headers: {
+                    'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1laWRlbnRpZmllciI6IkZ1dHVyZSIsImV4cCI6MTY3OTU0MjgwNSwiaXNzIjoiT0FTeXN0ZW0uY29tIiwiYXVkIjoiT0FTeXN0ZW0uY29tIn0.iy5SUInq1p3yjZultRPyzCa2ekLeepSdMLxvPwXY6MI',
+                }
+            }).then(resp => {
+                console.log(resp);
+                if (resp.data.code == 200) {
+                    this.$message({
+                        message: '保存成功!',
+                        type: 'success'
+                    });
+                }else{
+                    this.$message.error('保存失败!'+ resp.data.msg);
+                }
+            })
+        },
+        //职位下拉获取权限
+        JobChange(){
+            let val = this.value == '' ? 13 :this.value;
+            var that = this;
+            //初始化界面数据
+            this.$axios.post(this.PathUrl + '/api/System/QueryJobAuth', {
+                "jobid": this.valueposition,
+                "moduleId":val,
+            }, {
+                headers: {
+                    'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1laWRlbnRpZmllciI6IkZ1dHVyZSIsImV4cCI6MTY3OTU0MjgwNSwiaXNzIjoiT0FTeXN0ZW0uY29tIiwiYXVkIjoiT0FTeXN0ZW0uY29tIn0.iy5SUInq1p3yjZultRPyzCa2ekLeepSdMLxvPwXY6MI',
+                }
+            }).then(resp => {
+                console.log(resp);
+                if (resp.data.code == 200) {
+                    that.authorityList = resp.data.data; //页面数据(默认权限页面)
+                    that.authorityLists = that.authorityList;
+                }
+            })
+        },
+        //全选
+        allchange(selection){
+            let that = this;
+
+            if (selection.length > 0) {
+                selection.forEach(item => {
+                    item.selList = that.opList.map(x => x.id);
+                });
+
+            }else{
+                this.authorityLists.forEach(item => {
+                    item.selList = [];
+                });
+            }
+        },
+        checkchange(rowid, linid) {
+            this.authorityLists.forEach(item => {
+                if (item.id == rowid) {
+                    if(item.selList.indexOf(linid) == -1){
+                        item.selList.push(linid);
+                    }else{
+                        item.selList.splice(item.selList.indexOf(linid), 1)
+                    }
+                }
+            });
+            console.warn(this.authorityLists);
+        }
     },
     mounted() {
-        this.authorityLists = this.authorityList
+        this.pageload(13);
     }
 }
 </script>