Browse Source

设置数据权限

Karsa 1 year ago
parent
commit
f3eeeecdd5

+ 57 - 0
src/api/modules/setApi.js

@@ -529,6 +529,63 @@ const operateAuthInterface = {
 	 */
 	 */
 	getUserStatistic: params => {
 	getUserStatistic: params => {
 		return http.get('/datamanage/edb_chart/count',params)
 		return http.get('/datamanage/edb_chart/count',params)
+	},
+
+	/**
+	 * 设置涉密分类
+	 * @param {*} params 
+	 * "Source": 3,
+		"SubSource": 0,
+		"ClassifyIdList": []
+	 * @returns 
+	 */
+	setPermissionClassify: params => {
+		return http.post('/datamanage/edb_chart/classify/permission/is_permission/set',params)
+	},
+
+	/**
+	 * 设置分类权限
+	 * @param {*} params 
+	 * Source SubSource UserList[] ClassifyIdList[]
+	 * @returns 
+	 */
+	setClassifyAuth: params => {
+		return http.post('/datamanage/edb_chart/classify/permission/set',params)
+	},
+
+	/**
+	 * 设置数据权限
+	 * @param {*} params  
+	 * Source 
+	 * SubSource 
+	 * UserId 
+	 * DataIdList 
+	 * NoDataIdList 
+	 * UserList 
+	 * IsSelectAll 
+	 * ClassifyId 
+	 * Keyword
+	 */
+	setDataAuth: params => {
+		return http.post('/datamanage/edb_chart/permission/set',params)
+	},
+
+	/**
+	 * 根据用户获取权限分类
+	 * @param {*} params Source SubSource UserId
+	 * @returns 
+	 */
+	getSecretClassifyByUser: params => {
+		return http.get('/datamanage/edb_chart/classify/permission/show_by_user',params)
+	},
+	
+	/**
+	 * 根据数据获取权限用户
+	 * @param {*} params  Source SubSource DataId
+	 * @returns 
+	 */
+	getAuthUserByData: params => {
+		return http.get('/datamanage/edb_chart/permission/show_by_data',params)
 	}
 	}
 }
 }
 
 

+ 173 - 40
src/components/notificationMsg.vue

@@ -1,52 +1,155 @@
 <template>
 <template>
     <!-- 消息通知 -->
     <!-- 消息通知 -->
-    <el-popover
-        placement="bottom"
-        width="443"
-        trigger="click" v-model="visible">
-        <div class="notifation-wrap">
-            <!-- 防止tabs在popover前渲染,会导致tab选中状态不正确 -->
-            <el-tabs v-model="activeName" v-if="visible">
-                <el-tab-pane :label="`${$t('AprrovalPage.research_approval_btn')}(${UnreadTotal})`" name="first"></el-tab-pane>
-            </el-tabs>
-            <div class="massage-list" v-if="visible">
-                <div class="message-item" :class="{'IsRead':item.IsRead}" v-for="item in msgList" :key="item.Id" @click="readMsg(item)">
-                    <span class="icon">
-                        <img :src="require(`@/assets/img/approve_m/${approveState[item.ApproveState]||'process'}-msg.svg`)" alt="">
-                    </span>
-                    <div class="info">
-                        <div class="head">
-                            <span class="title">{{item.Content}}</span>
-                            <span class="time">{{item.CreateTime}}</span>
+    <div>
+        <el-popover
+            placement="bottom"
+            width="443"
+            trigger="click" v-model="visible">
+            <div class="notifation-wrap">
+                <!-- 防止tabs在popover前渲染,会导致tab选中状态不正确 -->
+                <el-tabs v-model="activeName" v-if="visible" @tab-click="getMsgList">
+                    <el-tab-pane :label="`${$t('AprrovalPage.research_approval_btn')}(${UnreadTotal})`" name="first"></el-tab-pane>
+                    <el-tab-pane :label="`资产数据`" name="second"></el-tab-pane>
+                </el-tabs>
+                <div class="massage-list" v-if="visible">
+                    <div class="message-item" :class="{'IsRead':item.IsRead}" v-for="item in msgList" :key="item.Id" @click="readMsg(item)">
+                        <span class="icon">
+                            <img :src="require(`@/assets/img/approve_m/${approveState[item.ApproveState]||'process'}-msg.svg`)" alt="">
+                        </span>
+                        <div class="info">
+                            <div class="head">
+                                <span class="title">{{item.Content}}</span>
+                                <span class="time">{{item.CreateTime}}</span>
+                            </div>
+                            <div class="content">{{item.Remark||''}}&nbsp;</div>
                         </div>
                         </div>
-                        <div class="content">{{item.Remark||''}}&nbsp;</div>
                     </div>
                     </div>
+                    <tableNoData v-if="!msgList.length" :text="$t('AprrovalPage.no_news_yet')"></tableNoData>
                 </div>
                 </div>
-                <tableNoData v-if="!msgList.length" :text="$t('AprrovalPage.no_news_yet')"></tableNoData>
+                <el-button type="text" class="close-btn" @click="visible=false">{{$t('AprrovalPage.close_btn')}}</el-button>
             </div>
             </div>
-            <el-button type="text" class="close-btn" @click="visible=false">{{$t('AprrovalPage.close_btn')}}</el-button>
-        </div>
-        <span slot="reference" @click="visible = !visible" class="msg-btn">
-            <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
-                <path d="M16.7344 15.4904L15.2941 12.9564V7.84847C15.2941 5.89142 13.8231 3.77337 11.6786 2.99732C11.5741 1.96012 10.8811 1.20374 9.97287 1.20374C9.06595 1.20374 8.37036 1.96014 8.26717 2.99732C6.12392 3.77337 4.65292 5.8914 4.65292 7.84847V12.9564L3.14258 15.6146C3.04183 15.7903 3.04429 16.0054 3.14504 16.1799C3.24581 16.3544 3.43263 16.4601 3.63415 16.4601H7.22871C7.49293 17.7357 8.62233 18.6967 9.97289 18.6967C11.3247 18.6967 12.4541 17.7357 12.7171 16.4601H16.3116C16.3215 16.4601 16.3288 16.4601 16.3374 16.4601C16.6508 16.4601 16.904 16.2082 16.904 15.8948C16.904 15.7362 16.8401 15.5925 16.7344 15.4904ZM9.97287 2.33803C10.1769 2.33803 10.3415 2.49286 10.4472 2.7239C10.2899 2.70792 10.1375 2.67106 9.97287 2.67106C9.8082 2.67106 9.65583 2.70792 9.49851 2.7239C9.60422 2.49284 9.76889 2.33803 9.97287 2.33803ZM9.97287 17.5636C9.25396 17.5636 8.65303 17.1016 8.41951 16.4601H11.5262C11.2927 17.1015 10.693 17.5636 9.97287 17.5636ZM4.60745 15.3282L5.71102 13.3853C5.76015 13.3017 5.78719 13.2034 5.78719 13.1051V7.84847C5.78719 5.93934 7.57648 3.80413 9.97287 3.80413C12.3692 3.80413 14.161 5.93934 14.161 7.84847V13.1051C14.161 13.2034 14.1868 13.3017 14.2347 13.3853L15.3395 15.3282H4.60745Z" fill="currentColor"/>
-            </svg>
-            <div class="unread" v-if="UnreadTotal">{{UnreadTotal>99?'99+':UnreadTotal}}</div>
-        </span>
-    </el-popover>
+            <span slot="reference" @click="visible = !visible" class="msg-btn">
+                <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+                    <path d="M16.7344 15.4904L15.2941 12.9564V7.84847C15.2941 5.89142 13.8231 3.77337 11.6786 2.99732C11.5741 1.96012 10.8811 1.20374 9.97287 1.20374C9.06595 1.20374 8.37036 1.96014 8.26717 2.99732C6.12392 3.77337 4.65292 5.8914 4.65292 7.84847V12.9564L3.14258 15.6146C3.04183 15.7903 3.04429 16.0054 3.14504 16.1799C3.24581 16.3544 3.43263 16.4601 3.63415 16.4601H7.22871C7.49293 17.7357 8.62233 18.6967 9.97289 18.6967C11.3247 18.6967 12.4541 17.7357 12.7171 16.4601H16.3116C16.3215 16.4601 16.3288 16.4601 16.3374 16.4601C16.6508 16.4601 16.904 16.2082 16.904 15.8948C16.904 15.7362 16.8401 15.5925 16.7344 15.4904ZM9.97287 2.33803C10.1769 2.33803 10.3415 2.49286 10.4472 2.7239C10.2899 2.70792 10.1375 2.67106 9.97287 2.67106C9.8082 2.67106 9.65583 2.70792 9.49851 2.7239C9.60422 2.49284 9.76889 2.33803 9.97287 2.33803ZM9.97287 17.5636C9.25396 17.5636 8.65303 17.1016 8.41951 16.4601H11.5262C11.2927 17.1015 10.693 17.5636 9.97287 17.5636ZM4.60745 15.3282L5.71102 13.3853C5.76015 13.3017 5.78719 13.2034 5.78719 13.1051V7.84847C5.78719 5.93934 7.57648 3.80413 9.97287 3.80413C12.3692 3.80413 14.161 5.93934 14.161 7.84847V13.1051C14.161 13.2034 14.1868 13.3017 14.2347 13.3853L15.3395 15.3282H4.60745Z" fill="currentColor"/>
+                </svg>
+                <div class="unread" v-if="UnreadTotal">{{UnreadTotal>99?'99+':UnreadTotal}}</div>
+            </span>
+        </el-popover>
+        
+        <m-dialog
+            :show.sync="isOpenAuthDia"
+            width="650px"
+            title="权限变更详情"
+            @close="isOpenAuthDia = false"
+        >
+            <div class="notice-auth-box">
+                <div class="main">
+
+                    <div class="left">
+                        <ul class="data-types">
+                            <li v-for="item in tabs" :key="item.key">{{item.label}}</li>
+                        </ul>
+                    </div>
+
+                    <div class="right">
+                        <label>ETA指标库</label>
+
+                        <el-table
+                            :data="tableData"
+                            ref="table"
+                            element-loading-text="加载中..."
+                            v-loading="tableLoading"
+                            border
+                            style="margin:20px 0"
+                        >
+                            <el-table-column
+                                v-for="item in tableColums"
+                                :key="item.label"
+                                :label="item.label"
+                                :prop="item.key"
+                                :width="item.widthsty"
+                                :min-width="item.minwidthsty"
+                                align="center"
+                            >
+                                <template slot-scope="{row}">
+
+                                    <span>{{ row[item.key] }}</span>
+                                </template>
+                            </el-table-column>
+                            
+                            <div slot="empty" style="padding: 20px 0">
+                                <tableNoData :text="$t('Table.prompt_slogan')" size="mini"/>
+                            </div>
+                        </el-table>
+                    </div>
+                </div>
+                
+                <div class="dia-bot">
+                    <el-button
+                    type="primary"
+                    style="margin-right: 60px"
+                    @click="confirmTransferHandle"
+                    >{{$t('Dialog.confirm_save_btn')}}</el-button
+                    >
+                    <el-button type="primary" plain @click="isOpenAuthDia"
+                    >{{$t('Dialog.cancel_btn')}}</el-button
+                    >
+                </div>
+            </div>
+        </m-dialog>
+    </div>
 </template>
 </template>
 
 
 <script>
 <script>
 import {approveInterence} from '@/api/modules/approve.js';
 import {approveInterence} from '@/api/modules/approve.js';
+import mDialog from './mDialog.vue';
 export default {
 export default {
+    components: { mDialog },
     data() {
     data() {
         this.approveState=['','process','passed','reject','return',]
         this.approveState=['','process','passed','reject','return',]
         return {
         return {
             activeName:'first',
             activeName:'first',
             visible:false,
             visible:false,
             msgList:[],
             msgList:[],
-            UnreadTotal:0
+            UnreadTotal:0,
+
+            //详情弹窗
+            isOpenAuthDia: false,
+            detailInfo: {
+                type: 1
+            }
         };
         };
     },
     },
+    computed: {
+        tabs(){
+            const tabs = [
+                { label: this.$t('SystemManage.OperateAuth.tab01'), key: 1 },
+                { label: this.$t('SystemManage.OperateAuth.tab02'), key: 2 },
+                { label: this.$t('SystemManage.OperateAuth.tab03'), key: 3 },
+                { label: this.$t('SystemManage.OperateAuth.tab04'), key: 4 },
+                { label: this.$t('SystemManage.OperateAuth.tab05'), key: 5 },
+                { label: this.$t('SystemManage.OperateAuth.tab06'), key: 6 },
+            ]
+            return tabs
+        },
+        tableColums() {
+            const clomusMap = {
+                5: [
+                    { label: this.$t('SystemManage.OperateAuth.table_col_name01'),key: 'Name' },
+                    { label: '操作时间',key: 'UpdateTime' },
+                ],
+                6: [
+                    { label: this.$t('SystemManage.OperateAuth.table_col_sheet_name'),key: 'Name' },
+                    { label: '操作时间',key: 'UpdateTime' },
+                ],
+            }
+            return clomusMap[this.detailInfo.type] ? clomusMap[this.detailInfo.type] 
+                : [
+                    { label: this.$t('SystemManage.OperateAuth.table_col_name05'),key: 'Name' },
+                    { label: '操作时间',key: 'UpdateTime' },
+                ]
+        },
+    },
     watch:{
     watch:{
         visible(val){
         visible(val){
             if(val){
             if(val){
@@ -72,15 +175,17 @@ export default {
                 }
                 }
             })
             })
         },
         },
-        getMsgList(){
-            approveInterence.getApproveMsgList({
-                CurrentIndex:1,
-                PageSize:1000
-            }).then(res=>{
-                if(res.Ret!==200) return 
-                this.msgList = res.Data.List||[]
-                this.UnreadTotal = res.Data.UnreadTotal||0
-            })
+        async getMsgList(){
+            let res = this.activeName === 'first' 
+                ? await approveInterence.getApproveMsgList({
+                    CurrentIndex:1,
+                    PageSize:1000
+                })
+                :  null
+
+            if(res.Ret!==200) return 
+            this.msgList = res.Data.List||[]
+            this.UnreadTotal = res.Data.UnreadTotal||0
         }
         }
     }
     }
 };
 };
@@ -143,4 +248,32 @@ export default {
         font-size: 12px;
         font-size: 12px;
     }
     }
 }
 }
-</style>
+.notice-auth-box {
+    .main {
+        display: flex;
+        .left {
+            flex-shrink: 0;
+            margin-right: 10px;
+            .data-types {
+                li {
+                    padding: 5px 0;
+                    margin-bottom: 10px;
+
+                    border-bottom: 1px solid transparent;
+                    &.act {
+                        border-color: #0052D9;
+                    }
+                }
+            }
+        }
+        .right {
+            flex: 1;
+        }
+    }
+    .dia-bot {
+        display: flex;
+        justify-content: center;
+        margin-top: 30px;
+    }
+}
+</style>

+ 5 - 5
src/lang/modules/systemManage/OperateAuth.js

@@ -57,8 +57,8 @@ export const OperateAuthEn = {
 
 
     /* 转移弹窗 */
     /* 转移弹窗 */
     transfer_title1:'Full Asset Transfer',
     transfer_title1:'Full Asset Transfer',
-    transfer_title1:'Bulk Asset Transfer Setup',
-    transfer_title1:'Set Asset Transfer',
+    transfer_title2:'Bulk Asset Transfer Setup',
+    transfer_title3:'Set Asset Transfer',
 
 
     /* 分类加密弹窗 */
     /* 分类加密弹窗 */
     label_open:'Public',
     label_open:'Public',
@@ -106,7 +106,7 @@ export const OperateAuthZh = {
     permission_title02:'批量权限设置',
     permission_title02:'批量权限设置',
     invisible_users:'不可见用户',
     invisible_users:'不可见用户',
     permission_confirm_msg:'是否确认删除该用户的不可见权限?',
     permission_confirm_msg:'是否确认删除该用户的不可见权限?',
-    set_success:'置成功',
+    set_success:'置成功',
     placeholder05:'新创建人不能为空',
     placeholder05:'新创建人不能为空',
 
 
     
     
@@ -125,8 +125,8 @@ export const OperateAuthZh = {
 
 
     /* 转移弹窗 */
     /* 转移弹窗 */
     transfer_title1:'全量资产转移',
     transfer_title1:'全量资产转移',
-    transfer_title1:'批量设置资产转移',
-    transfer_title1:'设置资产转移',
+    transfer_title2:'批量设置资产转移',
+    transfer_title3:'设置资产转移',
 
 
     /* 分类加密弹窗 */
     /* 分类加密弹窗 */
     label_open:'公开',
     label_open:'公开',

+ 3 - 2
src/views/ppt_manage/newVersion/components/editor/InsertCharts.vue

@@ -115,11 +115,12 @@ export default {
         this.$message.warning(this.$t('MsgPrompt.select_category'));
         this.$message.warning(this.$t('MsgPrompt.select_category'));
         return;
         return;
       }
       }
-      if (this.list.length == 0) {
+      let filterList = this.list.filter(_ =>_.HaveOperaAuth)
+      if (filterList.length == 0) {
         this.$message.warning(this.$t('Slides.no_charts_category_msg') );
         this.$message.warning(this.$t('Slides.no_charts_category_msg') );
         return;
         return;
       }
       }
-      this.$emit("handleImportMyChart", this.list);
+      this.$emit("handleImportMyChart", filterList);
     }, 1000),
     }, 1000),
 
 
     handleClickItem(item) {
     handleClickItem(item) {

+ 46 - 41
src/views/predictEdb_manage/components/edbDetail.vue

@@ -1,46 +1,51 @@
 <template>
 <template>
-    <div class="edb-detail-wrap" v-show="edbData.DataList">
-        <chartInfo
-            :edbData="edbData"
-            :lang="lang"
-            :isAllowEditLimit="isAllowEditLimit"
-            @refreshData="refreshData"
-            ref="chartInfo"
-        />
-        <div class="info" style="display: flex;justify-content: flex-end;">
-          <!--   <span>数据来源:{{edbData.EdbInfo.SourceName}}</span> -->
-            <span><!-- 添加人 -->{{$t('Edb.creater')}}:{{edbData.EdbInfo.SysUserRealName}}</span>
-        </div>
-        <ul
-            class="value-ul"
-            v-show="showData&&dataList.length"
-            >
-            <li class="value-item" style="background-color: #EBEFF6;">
-                <span style="width:240px">{{$t('Edb.Detail.e_date')}}({{$t('Edb.Detail.e_fre')}}:{{EdbData.Frequency}})</span>
-                <span style="flex:1;">{{$t('Edb.Detail.e_value')}}<!-- 值 --></span>
-            </li>
-            <li
-                class="value-item"
-                v-for="item in dataList.slice(0,3)"
-                :key="item.EdbDataId"
-            >
-                <span class="value-label date" style="width:240px">
-                    <span style="position: relative;">
-                        <i class="new-tag" v-if="EdbData.LatestDate===item.DataTime"></i>
-                        {{ item.DataTime }}
-                    </span>
-                </span>
-                <span
-                    :class="['value-label',{'predict-act': item.isPredic}]"
-                    style="flex:1;"
+    <div>
+        <div class="edb-detail-wrap" v-show="edbData.DataList&&edbData.EdbInfo.HaveOperaAuth">
+            <chartInfo
+                :edbData="edbData"
+                :lang="lang"
+                :isAllowEditLimit="isAllowEditLimit"
+                @refreshData="refreshData"
+                ref="chartInfo"
+            />
+            <div class="info" style="display: flex;justify-content: flex-end;">
+            <!--   <span>数据来源:{{edbData.EdbInfo.SourceName}}</span> -->
+                <span><!-- 添加人 -->{{$t('Edb.creater')}}:{{edbData.EdbInfo.SysUserRealName}}</span>
+            </div>
+            <ul
+                class="value-ul"
+                v-show="showData&&dataList.length"
                 >
                 >
-                    <span :class="['value-style',{'predict-act': item.isPredic}]">{{item.Value}}</span>
-                </span
+                <li class="value-item" style="background-color: #EBEFF6;">
+                    <span style="width:240px">{{$t('Edb.Detail.e_date')}}({{$t('Edb.Detail.e_fre')}}:{{EdbData.Frequency}})</span>
+                    <span style="flex:1;">{{$t('Edb.Detail.e_value')}}<!-- 值 --></span>
+                </li>
+                <li
+                    class="value-item"
+                    v-for="item in dataList.slice(0,3)"
+                    :key="item.EdbDataId"
                 >
                 >
-            </li>
-            <li class="nodata value-item" v-if="!dataList.length"><!-- 暂无数据 -->{{$t('Table.prompt_slogan')}}</li>
-        </ul>
+                    <span class="value-label date" style="width:240px">
+                        <span style="position: relative;">
+                            <i class="new-tag" v-if="EdbData.LatestDate===item.DataTime"></i>
+                            {{ item.DataTime }}
+                        </span>
+                    </span>
+                    <span
+                        :class="['value-label',{'predict-act': item.isPredic}]"
+                        style="flex:1;"
+                    >
+                        <span :class="['value-style',{'predict-act': item.isPredic}]">{{item.Value}}</span>
+                    </span
+                    >
+                </li>
+                <li class="nodata value-item" v-if="!dataList.length"><!-- 暂无数据 -->{{$t('Table.prompt_slogan')}}</li>
+            </ul>
+
+
+        </div>
 
 
+        <noDataAuth v-if="!edbData.EdbInfo.HaveOperaAuth" :text="$t('MsgPrompt.no_edb_auth')"/>
     </div>
     </div>
 </template>
 </template>
 
 
@@ -137,7 +142,7 @@ export default {
                     edb_nameEn: res.Data.EdbInfo.EdbNameEn,
                     edb_nameEn: res.Data.EdbInfo.EdbNameEn,
                     userid: res.Data.EdbInfo.SysUserId
                     userid: res.Data.EdbInfo.SysUserId
                 })
                 })
-                this.$emit('setOpera',res.Data.Button)
+                this.$emit('setOpera',{button:res.Data.Button,detail:res.Data.EdbInfo})
 
 
                 this.$emit('setCurrentClassify',res.Data.ClassifyList||[])
                 this.$emit('setCurrentClassify',res.Data.ClassifyList||[])
                 //更新图片
                 //更新图片
@@ -148,7 +153,7 @@ export default {
                         this.setChartImage()
                         this.setChartImage()
                     })
                     })
                 }
                 }
-                this.getData()
+                this.edbData.EdbInfo.HaveOperaAuth && this.getData()
             })
             })
         },
         },
         refreshData(type=''){
         refreshData(type=''){

+ 87 - 87
src/views/predictEdb_manage/predictEdb.vue

@@ -199,97 +199,93 @@
 				<!-- 详情 -->
 				<!-- 详情 -->
 				<div class="edb-detail-wrapper main-min-width" v-if="select_id&&!showAssociateChart&&!showAssociateComputeData">
 				<div class="edb-detail-wrapper main-min-width" v-if="select_id&&!showAssociateChart&&!showAssociateComputeData">
 
 
-					<!-- 有指标权限 -->
-					<template>
-						<div class="detail-header">
-							<el-tabs v-model="activeTab" @tab-click="changeShowType">
-								<el-tab-pane :label="$t('Edb.trend_chart_tab')" name="Chart">
-								</el-tab-pane>
-								<el-tab-pane :label="$t('Edb.data_detail_tab')" name="Data">
-								</el-tab-pane>
-							</el-tabs>
-							<div class="edb-tool-icon edb-tool" style="align-items: center;">
-								<el-button 
-									v-permission="permissionBtn.predictEdbPermission.edbPreData_update"
-									type="text" 
-									@click="updateEdbPartHandle"
-								><!-- 刷新 -->{{$t('Edb.detail_refresh_btn')}}</el-button>
-								<el-button 
-									type="text" 
-									@click="editEdbHandle('')" 
-									v-if="edbButton.OpButton&&isEdbBtnShow('edbPreData_edit')"
-								><!-- 编辑 -->{{$t('Edb.detail_edit_btn')}}</el-button>
-								<el-button 
-									type="text" 
-									@click="saveEdbHandle" 
-									v-if="detail_show_chart&&isEdbBtnShow('edbPreData_save')"
-								><!-- 保存 -->{{$t('Edb.detail_save_btn')}}</el-button>
-								<el-button 
-									v-permission="permissionBtn.predictEdbPermission.edbPreData_edbSource"
-									type="text" 
-									@click="toHistoryPage(select_id,$route.matched);lookEdbId=select_id"
-								><!-- 指标溯源 -->{{$t('Edb.detail_trace_btn')}}</el-button>
-
-								<el-popover 
-									v-if="showPopover"
-									placement="bottom-end" 
-									trigger="hover"
-									popper-class="edb-tool-popover"
-									width="300" style="display: inline-block;"
-								>
-									<div class="edb-tool-wrap">
-										<el-button 
-											v-permission="permissionBtn.predictEdbPermission.edbPreData_enNameSetting"
-											type="text" 
-											@click="clickEdbNameHandle" 
-											v-if="currentLang==='ch'||!edb_nameEn"
-										>
-											{{$t('Edb.detail_en_btn')}}<!-- 设置英文名称 -->
-										</el-button>
-										<el-button 
-											v-permission="permissionBtn.predictEdbPermission.edbPreData_recalcu"
-											type="text" 
-											@click="updateEdbHandle"
-										>{{$t('Edb.detail_recalculate_btn')}}<!-- 重新计算 --></el-button>
-										<el-button 
-											class="deletesty" 
-											@click="delEdbHandle" 
-											type="text"
-											v-if="edbButton.DeleteButton&&isEdbBtnShow('edbPreData_del')"
-										>{{$t('Edb.detail_del_btn')}}<!-- 删除 --></el-button>
-										<el-button 
-											v-permission="permissionBtn.predictEdbPermission.edbPreData_copyData"
-											type="text" 
-											@click="copyData"
-										>{{$t('Edb.detail_copydata_btn')}}<!-- 复制数据 --></el-button>
-									</div>
-									<div class="edb-btn" slot="reference">
-										<el-button type="text">{{$t('Edb.detail_more_btn')}}<!-- 更多操作 --></el-button>
-										<i class="el-icon-more" style="font-size: 14px;transform: rotate(90deg);cursor: pointer;color: #3375e1;"/>
-									</div>
-								</el-popover>
-							</div>
+					<div class="detail-header" v-if="predictEdbInfo.HaveOperaAuth">
+						<el-tabs v-model="activeTab" @tab-click="changeShowType">
+							<el-tab-pane :label="$t('Edb.trend_chart_tab')" name="Chart">
+							</el-tab-pane>
+							<el-tab-pane :label="$t('Edb.data_detail_tab')" name="Data">
+							</el-tab-pane>
+						</el-tabs>
+						<div class="edb-tool-icon edb-tool" style="align-items: center;">
+							<el-button 
+								v-permission="permissionBtn.predictEdbPermission.edbPreData_update"
+								type="text" 
+								@click="updateEdbPartHandle"
+							><!-- 刷新 -->{{$t('Edb.detail_refresh_btn')}}</el-button>
+							<el-button 
+								type="text" 
+								@click="editEdbHandle('')" 
+								v-if="edbButton.OpButton&&isEdbBtnShow('edbPreData_edit')"
+							><!-- 编辑 -->{{$t('Edb.detail_edit_btn')}}</el-button>
+							<el-button 
+								type="text" 
+								@click="saveEdbHandle" 
+								v-if="detail_show_chart&&isEdbBtnShow('edbPreData_save')"
+							><!-- 保存 -->{{$t('Edb.detail_save_btn')}}</el-button>
+							<el-button 
+								v-permission="permissionBtn.predictEdbPermission.edbPreData_edbSource"
+								type="text" 
+								@click="toHistoryPage(select_id,$route.matched);lookEdbId=select_id"
+							><!-- 指标溯源 -->{{$t('Edb.detail_trace_btn')}}</el-button>
+
+							<el-popover 
+								v-if="showPopover"
+								placement="bottom-end" 
+								trigger="hover"
+								popper-class="edb-tool-popover"
+								width="300" style="display: inline-block;"
+							>
+								<div class="edb-tool-wrap">
+									<el-button 
+										v-permission="permissionBtn.predictEdbPermission.edbPreData_enNameSetting"
+										type="text" 
+										@click="clickEdbNameHandle" 
+										v-if="currentLang==='ch'||!edb_nameEn"
+									>
+										{{$t('Edb.detail_en_btn')}}<!-- 设置英文名称 -->
+									</el-button>
+									<el-button 
+										v-permission="permissionBtn.predictEdbPermission.edbPreData_recalcu"
+										type="text" 
+										@click="updateEdbHandle"
+									>{{$t('Edb.detail_recalculate_btn')}}<!-- 重新计算 --></el-button>
+									<el-button 
+										class="deletesty" 
+										@click="delEdbHandle" 
+										type="text"
+										v-if="edbButton.DeleteButton&&isEdbBtnShow('edbPreData_del')"
+									>{{$t('Edb.detail_del_btn')}}<!-- 删除 --></el-button>
+									<el-button 
+										v-permission="permissionBtn.predictEdbPermission.edbPreData_copyData"
+										type="text" 
+										@click="copyData"
+									>{{$t('Edb.detail_copydata_btn')}}<!-- 复制数据 --></el-button>
+								</div>
+								<div class="edb-btn" slot="reference">
+									<el-button type="text">{{$t('Edb.detail_more_btn')}}<!-- 更多操作 --></el-button>
+									<i class="el-icon-more" style="font-size: 14px;transform: rotate(90deg);cursor: pointer;color: #3375e1;"/>
+								</div>
+							</el-popover>
 						</div>
 						</div>
+					</div>
 
 
-						<!--  -->
-						<div class="detail-wrap">
+					<!--  -->
+					<div class="detail-wrap">
+						
+						<component 
+							:is="detail_show_chart?'edbDetail':'childData'"
+							:id="select_id"
+							:lang="currentLang" 
+							:isAllowEditLimit="isEdbBtnShow('edbPreData_editLimit')"
+							ref="detailComponentRef"
 							
 							
-							<component 
-								:is="detail_show_chart?'edbDetail':'childData'"
-								:id="select_id"
-								:lang="currentLang" 
-								:isAllowEditLimit="isEdbBtnShow('edbPreData_editLimit')"
-								ref="detailComponentRef"
-								
-								@updateTit="setNameBack"
-								@setCurrentClassify="setCurrentClassify"
-								@setOpera="(obj) => { edbButton = obj }"
-								@openEnNameDia="openEnNameDia"
-							/>
-						</div>
-					</template>
+							@updateTit="setNameBack"
+							@setCurrentClassify="setCurrentClassify"
+							@setOpera="({button,detail}) => { edbButton = button;predictEdbInfo=detail }"
+							@openEnNameDia="openEnNameDia"
+						/>
+					</div>
 
 
-					<!-- <noDataAuth v-else :text="$t('MsgPrompt.no_edb_auth')"/> -->
 				</div>
 				</div>
 
 
 				<!-- 列表 -->
 				<!-- 列表 -->
@@ -680,6 +676,8 @@ export default {
 			showAssociateComputeData:false,//显示指标关联的引用计算指标
 			showAssociateComputeData:false,//显示指标关联的引用计算指标
 
 
 			activeTab:'',
 			activeTab:'',
+
+			predictEdbInfo: {},
 		};
 		};
 	},
 	},
 	computed: {
 	computed: {
@@ -720,6 +718,8 @@ export default {
 		select_id(newval) {
 		select_id(newval) {
 			this.detail_show_chart = true;
 			this.detail_show_chart = true;
 			this.activeTab='Chart'
 			this.activeTab='Chart'
+
+			if(this.predictEdbInfo.HaveOperaAuth) return
 			this.$nextTick(()=>{
 			this.$nextTick(()=>{
 				//切换为曲线图 重置选择状态
 				//切换为曲线图 重置选择状态
 				if(this.$refs.detailComponentRef){
 				if(this.$refs.detailComponentRef){

+ 3 - 2
src/views/report_manage/components/importMyChart.vue

@@ -103,11 +103,12 @@ export default {
                 this.$message.warning(this.$t('ReportManage.ReportList.please_select_category'))
                 this.$message.warning(this.$t('ReportManage.ReportList.please_select_category'))
                 return
                 return
             }
             }
-            if(this.list.length==0){
+            let filterList = this.list.filter(_ =>_.HaveOperaAuth)
+            if(filterList.length==0){
                 this.$message.warning(this.$t('ReportManage.ReportList.no_chart_msg'))
                 this.$message.warning(this.$t('ReportManage.ReportList.no_chart_msg'))
                 return
                 return
             }
             }
-            this.$emit('handleImportMyChart',this.list)
+            this.$emit('handleImportMyChart',filterList)
             setTimeout(() => {
             setTimeout(() => {
                 this.CurrentIndex=1
                 this.CurrentIndex=1
                 this.list=[]
                 this.list=[]

+ 3 - 2
src/views/smartReport/components/ImportMyETAChart.vue

@@ -100,11 +100,12 @@ export default {
                 this.$message.warning(this.$t('ReportManage.ReportList.please_select_category'))
                 this.$message.warning(this.$t('ReportManage.ReportList.please_select_category'))
                 return
                 return
             }
             }
-            if(this.list.length==0){
+             let filterList = this.list.filter(_ =>_.HaveOperaAuth)
+            if(filterList.length==0){
                 this.$message.warning(this.$t('ReportManage.ReportList.no_chart_msg'))
                 this.$message.warning(this.$t('ReportManage.ReportList.no_chart_msg'))
                 return
                 return
             }
             }
-            this.$emit('handleImportMyChart',this.list)
+            this.$emit('handleImportMyChart',filterList)
             setTimeout(() => {
             setTimeout(() => {
                 this.CurrentIndex=1
                 this.CurrentIndex=1
                 this.list=[]
                 this.list=[]

+ 93 - 21
src/views/system_manage/components/opearAuthSetDia.vue

@@ -12,16 +12,20 @@
   >
   >
     <div class="main">
     <div class="main">
       <div class="header">
       <div class="header">
+        <div v-if="form.type==='single'" style="margin-bottom:15px;">
+          {{form.dataName}}
+        </div>
+
         <el-cascader
         <el-cascader
           v-model="selectUserIds"
           v-model="selectUserIds"
           ref="userRef"
           ref="userRef"
           :options="userList"
           :options="userList"
           :props="{
           :props="{
-            value: 'AdminId',
-            label: 'RealName',
-            children: 'ChildrenList',
+            value: 'ItemId',
+            label: 'ItemName',
+            children: 'Children',
+            emitPath: false,
             multiple: true,
             multiple: true,
-            emitPath: false
           }"
           }"
           collapse-tags
           collapse-tags
           :show-all-levels="false"
           :show-all-levels="false"
@@ -32,7 +36,7 @@
           style="width:300px"
           style="width:300px"
         />
         />
 
 
-        <div class="checked-user scroll-cont" :style="`height:${form.type==='classify'?100:240}px`">
+        <div class="checked-user scroll-cont" :style="`height:${form.type==='classify'?100:210}px`">
           <el-tag
           <el-tag
             v-for="tag in selectUserList"
             v-for="tag in selectUserList"
             :key="tag.label"
             :key="tag.label"
@@ -65,12 +69,17 @@
         <div class="scroll-cont classify-section">
         <div class="scroll-cont classify-section">
           <el-tree
           <el-tree
             :data="classifyList"
             :data="classifyList"
+            ref="clssifyTreeRef"
             :props="{
             :props="{
               label: 'ClassifyName',
               label: 'ClassifyName',
               children: 'Child',
               children: 'Child',
+              disabled: function(data) {
+                return data.IsJoinPermission===0
+              }
             }"
             }"
             show-checkbox
             show-checkbox
             node-key="ClassifyId"
             node-key="ClassifyId"
+            :empty-text="$t('Table.prompt_slogan')"
           />
           />
         </div>
         </div>
         <p v-html="$i18n.locale==='en'?classifyTipsEn:classifyTips"></p>
         <p v-html="$i18n.locale==='en'?classifyTipsEn:classifyTips"></p>
@@ -106,8 +115,9 @@ export default {
   watch: {
   watch: {
     isShow(nval) {
     isShow(nval) {
       if(!nval) return
       if(!nval) return
-        
+      
       this.form.type==='classify'&&this.getClassifyList()
       this.form.type==='classify'&&this.getClassifyList()
+      this.form.type==='single'&& this.getDataAuthUser()
     }
     }
   },
   },
   data() {
   data() {
@@ -117,8 +127,8 @@ export default {
 
 
       titleMap: {
       titleMap: {
         'classify': /* '按分类设置权限' */this.$t('SystemManage.OperateAuth.classify_set_btn'),
         'classify': /* '按分类设置权限' */this.$t('SystemManage.OperateAuth.classify_set_btn'),
-        'multiple': /* '批量设置数据权限' */this.$t('SystemManage.OperateAuth.classify_set_btn'),
-        'single': /* '设置数据权限' */this.$t('SystemManage.OperateAuth.classify_set_btn'),
+        'multiple': /* '批量设置数据权限' */this.$t('SystemManage.OperateAuth.title_batch_set_auth'),
+        'single': /* '设置数据权限' */this.$t('SystemManage.OperateAuth.title_single_set_auth'),
       },
       },
 
 
       currentTab: 3,
       currentTab: 3,
@@ -140,7 +150,7 @@ export default {
 
 
       operateAuthInterface.getClassificationBySource({
       operateAuthInterface.getClassificationBySource({
         Source: Number(this.currentTab),
         Source: Number(this.currentTab),
-         SubSource: Number(this.currentTab) === 6 ? Number(this.currentSubTab) : 0
+        SubSource: Number(this.currentTab) === 6 ? Number(this.currentSubTab) : 0
       }).then(res => {
       }).then(res => {
         if(res.Ret == 200){
         if(res.Ret == 200){
           this.classifyList = res.Data.List || []
           this.classifyList = res.Data.List || []
@@ -158,24 +168,50 @@ export default {
         })
         })
     },
     },
 
 
-    /* 选中分类 */
-    checkClassify(a,b,c) {
-
-      console.log(a,b,c)
-      console.log(this.$refs.clssifyTreeRef.getCheckedNodes(false,true))
-    },
-
     /* 选择用户 */
     /* 选择用户 */
     checkUser() {
     checkUser() {
       let selectUser = this.$refs.userRef.getCheckedNodes(true);
       let selectUser = this.$refs.userRef.getCheckedNodes(true);
-
       let arr = []
       let arr = []
-      arr = selectUser.length&&selectUser.map(_ => ({
+      arr = selectUser.length?selectUser.map(_ => ({
         label: _.label,
         label: _.label,
         value: _.value
         value: _.value
-      }))
-
+      })):[]
       this.selectUserList = arr.filter(_ => this.selectUserIds.includes(_.value))
       this.selectUserList = arr.filter(_ => this.selectUserIds.includes(_.value))
+      
+      //一个人时默认选中有权限分类
+      if(this.selectUserIds.length===1&&this.$refs.clssifyTreeRef) this.getOwnAuthClassify()
+    },
+
+    /* 获取用户的权限分类 */
+    async getOwnAuthClassify() {
+      const res = await operateAuthInterface.getSecretClassifyByUser({
+        Source: Number(this.currentTab),
+        SubSource: Number(this.currentTab) === 6 ? Number(this.currentSubTab) : 0,
+        UserId: Number(this.selectUserIds[0])
+      })
+      if(res.Ret !== 200) return
+
+      res.Data && this.$nextTick(() => {
+        this.$refs.clssifyTreeRef.setCheckedKeys(res.Data)
+      })
+    },
+
+    /* 获取数据的权限用户 */
+    async getDataAuthUser() {
+      const res = await operateAuthInterface.getAuthUserByData({
+        Source: Number(this.currentTab),
+        SubSource: Number(this.currentTab) === 6 ? Number(this.currentSubTab) : 0,
+        DataId: Number(this.form.params.DataIdList[0])
+      })
+
+      if(res.Ret !== 200) return
+
+      if(res.Data && res.Data.length){
+        this.selectUserIds = res.Data
+        this.$nextTick(() => {
+          this.checkUser()
+        })
+      }
     },
     },
 
 
     removeUser(val) {
     removeUser(val) {
@@ -185,14 +221,50 @@ export default {
       this.selectUserIds = this.selectUserIds.filter(_ => _!==val)
       this.selectUserIds = this.selectUserIds.filter(_ => _!==val)
     },
     },
 
 
-    saveHandle() {
+    async saveHandle() {
       if(!this.selectUserIds.length) return this.$message.warning(/* '请选择用户' */this.$t('SystemManage.OperateAuth.placeholder04'))
       if(!this.selectUserIds.length) return this.$message.warning(/* '请选择用户' */this.$t('SystemManage.OperateAuth.placeholder04'))
+
+      this.form.type==='classify' 
+        ? this.setClassifyAuthHandle()
+        : this.setDataAuthHandle()
+    },
+
+    //设置分类权限
+    async setClassifyAuthHandle() {
+      let checkedArr = this.$refs.clssifyTreeRef.getCheckedNodes()
+        .filter(_ =>_.IsJoinPermission===1).map(_=>_.ClassifyId);
+
+      let params = {
+        Source: Number(this.currentTab),
+        SubSource: Number(this.currentTab) === 6 ? Number(this.currentSubTab) : 0,
+        UserList: this.selectUserIds.map(_=>Number(_)),
+        ClassifyIdList: checkedArr
+      }
+
+      const res = await operateAuthInterface.setClassifyAuth(params)
+
+      if(res.Ret !==200 ) return
+      this.$message.success(/* '设置成功' */this.$t('SystemManage.OperateAuth.set_success'))
+    },
+
+    //设置指标权限
+    async setDataAuthHandle() {
+      let params = {
+        UserList: this.selectUserIds.map(_=>Number(_)),
+        ...this.form.params
+      }
+      const res = await operateAuthInterface.setDataAuth(params)
+
+      if(res.Ret !==200 ) return
+
+      this.$message.success(/* '设置成功' */this.$t('SystemManage.OperateAuth.set_success'))
       this.cancelHandle()
       this.cancelHandle()
     },
     },
 
 
     cancelHandle() {
     cancelHandle() {
       this.selectUserIds = []
       this.selectUserIds = []
       this.selectUserList = []
       this.selectUserList = []
+      this.$refs.clssifyTreeRef&&this.$refs.clssifyTreeRef.setCheckedKeys([])
       this.currentTab = 3
       this.currentTab = 3
       this.$emit('update:isShow',false)
       this.$emit('update:isShow',false)
     }
     }

+ 51 - 9
src/views/system_manage/components/setClassifySecretDia.vue

@@ -36,25 +36,27 @@
             }"
             }"
             :expand-on-click-node="false"
             :expand-on-click-node="false"
             node-key="ClassifyId"
             node-key="ClassifyId"
+            :empty-text="$t('Table.prompt_slogan')"
           >
           >
             <div class="classify-item" slot-scope="{ data }">
             <div class="classify-item" slot-scope="{ data }">
               <span>{{data.ClassifyName}}</span>
               <span>{{data.ClassifyName}}</span>
 
 
-              <el-dropdown style="margin-right: 10px" @command="handleCommand" trigger="click">
+              <el-dropdown style="margin-right: 10px" @command="handleOperate" trigger="click">
                 <span class="el-dropdown-link  el-dropdown-link-img">
                 <span class="el-dropdown-link  el-dropdown-link-img">
-                    <!-- <img src="~@/assets/img/chart_m/Group.png" v-if="item.IsPublic === 0"> -->
-                    <img src="~@/assets/img/chart_m/User.png">
+                    <img src="~@/assets/img/chart_m/Group.png" v-if="data.IsJoinPermission">
+                    <img src="~@/assets/img/chart_m/User.png" v-else>
                 </span>
                 </span>
                 <el-dropdown-menu slot="dropdown">
                 <el-dropdown-menu slot="dropdown">
                   <el-dropdown-item 
                   <el-dropdown-item 
-                    :command="{key:'own',data}" 
-                    :class="data.IsPublic === 0 ? 'el-dropdown-menu-item-chat-act' : ''"
+                    :command="{key:'public',data}" 
+                    :style="data.IsJoinPermission === 0 ? 'color:#0052D9' : ''"
                     class="el-dropdown-menu-item-chat"
                     class="el-dropdown-menu-item-chat"
                   >
                   >
                     <!-- 公开 -->{{$t('SystemManage.OperateAuth.label_open')}}
                     <!-- 公开 -->{{$t('SystemManage.OperateAuth.label_open')}}
                   </el-dropdown-item>
                   </el-dropdown-item>
-                  <el-dropdown-item 
-                    class="el-dropdown-menu-item-chat"
+                  <el-dropdown-item
+                    :command="{key:'private',data}" 
+                    :style="data.IsJoinPermission === 1 ? 'color:#0052D9' : ''"
                   >
                   >
                     <!-- 私密 -->{{$t('SystemManage.OperateAuth.label_secret')}}
                     <!-- 私密 -->{{$t('SystemManage.OperateAuth.label_secret')}}
                   </el-dropdown-item>
                   </el-dropdown-item>
@@ -66,7 +68,7 @@
     </div>
     </div>
 
 
     <div class="dia-bot">
     <div class="dia-bot">
-      <el-button type="primary" style="margin-right:20px" @click="cancelHandle">{{$t('Dialog.confirm_btn')}}</el-button>
+      <el-button type="primary" style="margin-right:20px" @click="setSecretHandle">{{$t('Dialog.confirm_btn')}}</el-button>
       <el-button type="primary" plain @click="cancelHandle">{{$t('Dialog.cancel_btn')}}</el-button>
       <el-button type="primary" plain @click="cancelHandle">{{$t('Dialog.cancel_btn')}}</el-button>
     </div>
     </div>
 
 
@@ -127,6 +129,46 @@ export default {
         })
         })
     },
     },
 
 
+    handleOperate({key,data}) {
+      data.IsJoinPermission = key==='private' ? 1 : 0;
+    },
+
+    async setSecretHandle() {
+      let ClassifyIdList = this.findSecretArr()
+      const res = await operateAuthInterface.setPermissionClassify({
+        Source: Number(this.currentTab),
+        SubSource: Number(this.currentTab)===6?Number(this.currentSubTab):0,
+        ClassifyIdList
+      })
+
+      if(res.Ret !== 200) return 
+      this.$message.success(/* '设置成功' */this.$t('SystemManage.OperateAuth.set_success'))
+    },
+
+    //找出设置私密的所有分类
+    findSecretArr() {
+      let arr = []
+
+      function traverse(node) {
+        if (node.IsJoinPermission === 1) {
+          arr.push(node);
+        }
+
+        if (node.Child && node.Child.length) {
+          node.Child.forEach(child => {
+            traverse(child);
+          });
+        }
+      }
+
+      this.classifyList.forEach(item => {
+        traverse(item);
+      });
+      // console.log(arr)
+
+      return arr.map(_ => _.ClassifyId)
+    },
+
     cancelHandle() {
     cancelHandle() {
       this.currentTab = 3
       this.currentTab = 3
       this.$emit('update:isShow',false)
       this.$emit('update:isShow',false)
@@ -143,7 +185,7 @@ export default {
   }
   }
 
 
 .classify-section{
 .classify-section{
-  max-height: 200px;
+  max-height: 250px;
 }
 }
 
 
 .classify-item {
 .classify-item {

+ 36 - 20
src/views/system_manage/dataOperaAuth.vue

@@ -13,9 +13,9 @@
           v-model="searchForm.user"
           v-model="searchForm.user"
           :options="userList"
           :options="userList"
           :props="{
           :props="{
-            value: 'AdminId',
-            label: 'RealName',
-            children: 'ChildrenList',
+            value: 'ItemId',
+            label: 'ItemName',
+            children: 'Children',
             emitPath: false
             emitPath: false
           }"
           }"
           collapse-tags
           collapse-tags
@@ -210,9 +210,9 @@
               v-model="transferForm.creatorIds"
               v-model="transferForm.creatorIds"
               :options="userList"
               :options="userList"
               :props="{
               :props="{
-                value: 'AdminId',
-                label: 'RealName',
-                children: 'ChildrenList',
+                value: 'ItemId',
+                label: 'ItemName',
+                children: 'Children',
                 emitPath: false,
                 emitPath: false,
                 multiple:true
                 multiple:true
               }"
               }"
@@ -233,10 +233,10 @@
               v-model="transferForm.newUser"
               v-model="transferForm.newUser"
               :options="userList"
               :options="userList"
               :props="{
               :props="{
-                value: 'AdminId',
-                label: 'RealName',
-                children: 'ChildrenList',
-                emitPath: false
+                value: 'ItemId',
+                label: 'ItemName',
+                children: 'Children',
+                emitPath: false,
               }"
               }"
               collapse-tags
               collapse-tags
               :show-all-levels="false"
               :show-all-levels="false"
@@ -286,7 +286,7 @@
 </template>
 </template>
 <script>
 <script>
 import { operateAuthInterface,departInterence } from '@/api/modules/setApi';
 import { operateAuthInterface,departInterence } from '@/api/modules/setApi';
-import {dataBaseInterface} from '@/api/modules/chartApi'
+import {dataAuthInterface} from '@/api/modules/dataApi.js'
 import mPage from '@/components/mPage.vue';
 import mPage from '@/components/mPage.vue';
 import mDialog from '@/components/mDialog.vue'
 import mDialog from '@/components/mDialog.vue'
 import opearAuthSetDia from './components/opearAuthSetDia.vue';
 import opearAuthSetDia from './components/opearAuthSetDia.vue';
@@ -409,6 +409,7 @@ export default {
       isSetAuthDia: false,
       isSetAuthDia: false,
       authForm: {
       authForm: {
         type:'',//分类设置 批量设置 单设置
         type:'',//分类设置 批量设置 单设置
+        ids:[],
       },
       },
 
 
       /* 设置加密分类弹窗 */
       /* 设置加密分类弹窗 */
@@ -449,12 +450,12 @@ export default {
     },
     },
 
 
      /* 获取用户列表 */
      /* 获取用户列表 */
-    getUserList() {
-      dataBaseInterface.getEdbChartAdminList({Source: 3}).then(res=>{
-        if(res.Ret !== 200) return
-
-        this.userList = res.Data || []
-      })
+    async getUserList() {
+      
+      const res = await dataAuthInterface.userSearch();
+      if (res.Ret !== 200) return
+      
+      this.userList = res.Data || []
     },
     },
 
 
     /* 获取用户的资产数量 */
     /* 获取用户的资产数量 */
@@ -712,10 +713,25 @@ export default {
     },
     },
 
 
     /* 设置可见权限 分类设置 单设置 批量设置*/
     /* 设置可见权限 分类设置 单设置 批量设置*/
-    setAuthHandle({},type='single') {
-      if(type === 'multiple' && !this.checkedList.length) return this.$message.warning(this.$t('SystemManage.OperateAuth.msg01'))
+    setAuthHandle({ DataId,Name },type='single') {
+      if(type === 'multiple' && !this.checkedList.length&&!this.isSelectAll) return this.$message.warning(this.$t('SystemManage.OperateAuth.msg01'))
       
       
-      this.authForm.type = type;
+      let checked = type === 'single' ? [ DataId ] : this.checkedList.map(_ => _.DataId)
+
+      this.authForm = {
+        type,
+        dataName: Name,
+        params: type!=='classify' ? {
+          Source: this.default_tab,
+          SubSource: this.default_tab === 6 ? Number(this.default_sub_tab) : 0,
+          DataIdList: (this.isSelectAll&&type==='multiple') ? [] : checked,
+          NoDataIdList: (this.isSelectAll&&type==='multiple') ? checked : [],
+          Keyword:this.searchForm.key_word,
+          UserId:this.searchForm.user||0,
+          Classify:this.searchForm.classifys.join(','),
+          IsSelectAll:(this.isSelectAll&&type==='multiple') ? true : false
+        } : null
+      }
       this.isSetAuthDia = true
       this.isSetAuthDia = true
     },
     },