Browse Source

优化角色权限详情页处理

zhangqiOMG 2 years ago
parent
commit
8d36f90cc5

+ 6 - 3
src/HManagement/archives_sc/list/modules/edit.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
-    <div class="container normal-panel normal-margin">
-      <el-button type="warning" size="small" icon="el-icon-s-claim" style="background:#FA8C16" @click="onSubmit">保 存</el-button>
+    <div v-if="!store.state.pageOnlyRead" class="container normal-panel normal-margin">
+      <el-button type="warning" size="small" icon="el-icon-s-claim" style="background:#FA8C16" @click="onSubmit" :loading="store.state.loading">保 存</el-button>
     </div>
     <div style="overflow-x:hidden">
       <el-row :gutter="16">
@@ -69,7 +69,7 @@
           </div>
           <!-- 附件列表 -->
           <div class="container normal-panel">
-            <attachmentList :attinfos="form.attinfos" @onSuccess="selectDetail">
+            <attachmentList :attinfos="form.attinfos" @onSuccess="selectDetail" :onlyread="store.state.pageOnlyRead">
               <upload slot="upload" :folderid="folderid" :bindData="{ownertable:'SAT_COURSEWARE',ownerid:form.sat_coursewareid,usetype:'default'}" @onSuccess="onSubmit"></upload>
             </attachmentList>
           </div>
@@ -87,6 +87,7 @@ import upload from '@/components/upload/hw_obs_upload.vue'
 import previewImage from '@/components/previewImage/index.vue'
 import attachmentList from '@/components/attachment_list/index.vue'
 import scopeOfauth from '@/components/scopeOfAuthority/index.vue'
+import store from '@/store'
 export default {
   components:{
     upload,
@@ -96,6 +97,7 @@ export default {
   },
   data () {
     return {
+      store,
       rules:{
         title: [
           { required: true, message: '请输入课程名称', trigger: 'blur' },
@@ -153,6 +155,7 @@ export default {
         e.sat_courseware_classid === res.data.sat_courseware_classid_1?this.options2 = e.children:''
       })
       this.queryFileLink()
+      this.form.status === '发布'?store.state.pageOnlyRead = true:store.state.pageOnlyRead = false
     },
     // 分类查询
     async coursewareclass () {

+ 1 - 1
src/HManagement/archvies_mag/modules/add.vue

@@ -48,7 +48,7 @@ export default {
       this.authData = param
     },
     async createFolderComplete (folder) {
-      let id = this.$route.query.id?this.$route.query.id:JSON.parse(sessionStorage.getItem('folderid')).appfolderid
+      let id = this.$route.query.id?this.$route.query.id:JSON.parse(sessionStorage.getItem('folderid')).salematerialfolderid
       this.params.content.parentid = id
       this.params.content.foldername = folder.document
       const res = await this.$api.requested(this.params)

+ 1 - 1
src/HManagement/archvies_mag/modules/list.vue

@@ -83,7 +83,7 @@ export default {
       this.queryAttachment(this.params.content.parentid)
     },
     async queryAttachment () {
-      this.params.content.parentid = this.$route.query.id?this.$route.query.id:JSON.parse(sessionStorage.getItem('folderid')).appfolderid
+      this.params.content.parentid = this.$route.query.id?this.$route.query.id:JSON.parse(sessionStorage.getItem('folderid')).salematerialfolderid
       const res = await this.$api.requested(this.params)
       res.data.map(e=>{
         e.postfix  = e.postfix.toUpperCase()

+ 7 - 5
src/HManagement/notice/list/modules/edit_notice.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
-    <div class="container normal-panel normal-margin">
-      <el-button type="warning" size="small" icon="el-icon-s-claim" @click="onSubmit">保 存</el-button>
+    <div v-if="!store.state.pageOnlyRead" class="container normal-panel normal-margin">
+      <el-button type="warning" size="small" icon="el-icon-s-claim" @click="onSubmit" :loading="store.state.loading">保 存</el-button>
     </div>
     <div style="overflow-x:hidden">
       <el-row :gutter="16">
@@ -65,7 +65,7 @@
             </el-row>
           </div>
           <div class="container normal-panel normal-margin">
-            <attachmentList :attinfos="attinfo_video" @onSuccess="queryNoticeMain">
+            <attachmentList :attinfos="attinfo_video" @onSuccess="queryNoticeMain" :onlyread="store.state.pageOnlyRead">
               <p slot="title">视频附件</p>
               <upload slot="upload" accept=".mp4,.ogg,.webm" :folderid="folderid"
                 :bindData="{ ownertable: 'sat_notice', ownerid: form.sat_noticeid, usetype: 'default' }"
@@ -73,7 +73,7 @@
             </attachmentList>
           </div>
           <div class="container normal-panel normal-margin">
-            <attachmentList :attinfos="attinfo_attachment" @onSuccess="queryNoticeMain">
+            <attachmentList :attinfos="attinfo_attachment" @onSuccess="queryNoticeMain" :onlyread="store.state.pageOnlyRead">
               <upload slot="upload" :folderid="folderid"
                 :bindData="{ ownertable: 'sat_notice', ownerid: form.sat_noticeid, usetype: 'default' }"
                 @onSuccess="onUploadSuccess"></upload>
@@ -100,6 +100,7 @@ import previewImage from '@/components/previewImage/index.vue'
 import attachmentList from '@/components/attachment_list/index.vue'
 import scopeOfauth from '@/components/scopeOfAuthority/index.vue'
 import myEditor from '@/components/my-editor/Editor.vue'
+import store from '@/store'
 import {
   weBtoa
 } from "@/utils/weapp-jwt";
@@ -113,6 +114,7 @@ export default {
   },
   data() {
     return {
+      store,
       folderid: JSON.parse(sessionStorage.getItem('folderid')).appfolderid,
       rules: {
         title: [
@@ -189,7 +191,7 @@ export default {
         }
       })
       this.form = Object.assign({}, this.form, res.data)
-
+      this.form.status === '发布'?store.state.pageOnlyRead = true:store.state.pageOnlyRead = false
       this.queryFileLink()
       this.queryNoticeClass()
     },

+ 2 - 2
src/HManagement/roleManage/modules/cancel_auth.vue

@@ -3,7 +3,7 @@
     <el-popconfirm
       title="确定取消吗?"
       @confirm="delete_appauth('func')">
-      <el-button slot="reference" type="text" size="small">删 除</el-button>
+      <p style="color:#3874F6" slot="reference">删 除</p>
     </el-popconfirm>
   </div>
 </template>
@@ -21,7 +21,7 @@ export default {
         "systemapps": [
           {
             "systemappid": this.data.systemappid,
-            "optionids": [this.data.optionid],
+            "optionids": this.data.optionid,
             "hiddenfields":[]
           }
         ]

+ 72 - 6
src/HManagement/roleManage/modules/edit_role.vue

@@ -26,16 +26,36 @@
           <div class="mb-16">
             <auth :data="{roleid:roleid}" @onSuccess="roleMain"></auth>
           </div>
-          <tableLayout :layout="tablecols" :data="roleMainInfo.apps" :opwidth="200" :custom="false" @rowClick="appoptionselect">
+          <el-collapse>
+            <el-collapse-item title="筛选" name="1">
+              <el-row class="normal-margin">
+                <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">全选</el-checkbox>
+                <div style="margin: 15px 0;"></div>
+                <el-checkbox-group v-model="checkModuleList"  @change="handleCheckedCitiesChange">
+                  <el-col style="margin-bottom:5px" :span="6"  v-for="item in modulesList" :key="item.index">
+                    <el-checkbox :label="item"></el-checkbox>
+                  </el-col>
+                </el-checkbox-group>
+              </el-row>
+            </el-collapse-item>
+          </el-collapse>
+          <tableLayout :layout="tablecols" :data="apps" :custom="false" height="500px" @rowClick="appoptionselect">
           </tableLayout>
         </el-col>
         <el-col :span="12">
           <el-row :gutter="40">
             <el-col :span="12">
               <p class="title">功能</p>
-              <div class="flex-align-center flex-between option-item" v-for="item in appoptions" :key="item.index">
-                <p>{{item.optionname}}</p>
-                <cancelAuth :data="{roleid:roleid,systemappid:active_systemappid,optionid:item.optionid}" @onSuccess="roleMain"></cancelAuth>
+              <el-row>
+                <el-checkbox-group v-model="checkedApps">
+                  <el-col class="normal-margin" v-for="item in appoptions" :key="item.rowindex">
+                    <el-checkbox :label="item.optionid">{{item.optionname}}</el-checkbox>
+                  </el-col>
+                </el-checkbox-group>
+              </el-row>
+              <div class="flex-align-center flex-between option-item">
+                <el-checkbox :indeterminate="isIndeterminate2" v-model="checkAll2" @change="handleCheckAllChange2">全选</el-checkbox>
+                <cancelAuth v-if="checkedApps.length > 0" :data="{roleid:roleid,systemappid:active_systemappid,optionid:checkedApps}" @onSuccess="roleMain"></cancelAuth>
               </div>
             </el-col>
             <el-col :span="12">
@@ -66,6 +86,10 @@ export default {
   },
   data () {
     return{
+      isIndeterminate:false,
+      isIndeterminate2:false,
+      checkAll: true,
+      checkAll2: false,
       rules:{
         rolename: [
           { required: true, message: '请输入角色名称', trigger: 'blur' },
@@ -87,6 +111,10 @@ export default {
       tablecols:[],
       appoptions:[],
       hiddenfields:[],
+      modulesList:[],
+      checkModuleList:[],
+      apps:[],
+      checkedApps:[],
       roleid:0,
       active_systemappid:''
     }
@@ -110,6 +138,7 @@ export default {
 
       //显示默认授权信息,一般默认信息为第一条数据
       this.appoptionselect(res.data.apps[0])
+      this.filterModules()
     },
     async usertype () {
       let param = {
@@ -155,7 +184,43 @@ export default {
           }
         })
       })
-    }
+    },
+    //遍历权限模块用于筛选
+    filterModules () {
+      let arr = this.roleMainInfo.apps.map(e=>{
+        return e.systemmodulename
+      })
+      this.modulesList = this.checkModuleList = [...new Set(arr)]
+      this.filterApps()
+    },
+    handleCheckAllChange(val) {
+      this.checkModuleList = val ? this.modulesList : [];
+      this.isIndeterminate = false;
+      this.filterApps()
+    },
+    handleCheckedCitiesChange(value) {
+      let checkedCount = value.length;
+      this.checkAll = checkedCount === this.modulesList.length;
+      this.isIndeterminate = checkedCount > 0 && checkedCount < this.modulesList.length;
+      this.filterApps()
+    },
+    filterApps () {
+      let arr = []
+      this.roleMainInfo.apps.forEach(app => {
+        this.checkModuleList.filter(e=>{
+          if (e === app.systemmodulename) {
+            arr.push(app)
+          }
+        })
+      });
+      
+      this.apps = arr
+    },
+    handleCheckAllChange2 (val) {
+      let arr = this.appoptions.map(e=>{return e.optionid})
+      this.checkedApps = val ? arr : [];
+      this.isIndeterminate2 = false;
+    },
   },
   mounted () {
     // 获取应用表结构
@@ -190,6 +255,7 @@ export default {
 .option-item{
   color:#333333;
   font-size: 14px;
-  border-bottom:1px solid #f1f2f3
+  border-top:1px solid #f1f2f3;
+  padding-top:16px;
 }
 </style>

+ 0 - 2
src/HManagement/roleManage/modules/role_details.vue

@@ -81,8 +81,6 @@ export default {
   },
   methods:{
     async roleMain () {
-      console.log(11111);
-      
       const res = await this.$api.requested({
         "classname": "webmanage.role.role",
         "method": "query_roleMain",

+ 3 - 3
src/HManagement/submit/list/modules/submit_edit.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <div class="container normal-panel normal-margin">
+    <div v-if="!store.state.pageOnlyRead" class="container normal-panel normal-margin">
       <el-button type="warning" size="small" icon="el-icon-s-claim" style="background:#FA8C16" @click="onSubmit">保 存</el-button>
     </div>
     <div style="overflow-x:hidden">
@@ -64,7 +64,7 @@
             </el-row>
           </div>
           <div class="container normal-panel normal-margin">
-            <attachmentList :attinfos="form.attinfos" @onSuccess="querySubmitMain">
+            <attachmentList :attinfos="form.attinfos" @onSuccess="querySubmitMain" :onlyread="store.state.pageOnlyRead">
               <upload slot="upload" :folderid="folderid" :bindData="{ownertable:'sat_submiteditmodel',ownerid:form.sat_submiteditmodelid,usetype:'default'}" @onSuccess="onSubmit"></upload>
             </attachmentList>
           </div>
@@ -90,6 +90,7 @@ export default {
   },
   data () {
     return {
+      store,
       folderid:JSON.parse(sessionStorage.getItem('folderid')).appfolderid,
       defaultData:{},
       rules:{
@@ -139,7 +140,6 @@ export default {
       if (this.form.istextrequired === 1) {this.form.type.push('文字提报')}
 
       this.form.status === '发布'?store.state.pageOnlyRead = true:store.state.pageOnlyRead = false
-      console.log(this.form.status,store.state.pageOnlyRead,'-----')
     },
     onSubmit () {
       this.$refs['form'].validate(async (valid) => {

+ 5 - 6
src/SManagement/orderclue/components/move.vue

@@ -75,12 +75,11 @@ export default {
     followAction () {
       this.param.content.sat_orderclueid = this.data
       this.$api.requested(this.param).then( res => {
-        this.tool.showMessage(res)
-        this.dialogVisible = false
-        this.$emit('updataList')
-        this.param.content.sa_agent_hrid = ''
-        console.log(2222);
-        
+        this.tool.showMessage(res,()=>{
+          this.dialogVisible = false
+          this.$emit('updataList')
+          this.param.content.sa_agent_hrid = ''
+        })
       })
     }
   }

+ 1 - 1
src/components/attachment_list/index.vue

@@ -5,7 +5,7 @@
         <slot name="title"></slot>
       </div>
       <p v-else>附件列表</p>
-      <slot name="upload"></slot>
+      <slot v-if="!onlyread" name="upload"></slot>
     </div>
     <el-table
       :header-cell-style="{background:'#EEEEEE',color:'#333'}" 

+ 0 - 1
src/components/my-editor/Editor.vue

@@ -52,7 +52,6 @@ export default Vue.extend({
           let ext = file.name.substr(file.name.indexOf('.') + 1)
           //资源上传请求配置
           let uploadRequest = {
-              "accesstoken": "4a6559d45d2a4c6e0ebac2c803344106",
               "classname": "system.attachment.huawei.OBS",
               "method": "getFileName",
               "content": {