Ver código fonte

Merge branch 'master' of http://8.136.199.33:3000/eta_front/eta_front

cxmo 5 meses atrás
pai
commit
f5864f05db

+ 58 - 10
src/api/http.js

@@ -1,6 +1,16 @@
 "use strict";
 import axios from "axios";
 import bus from "./bus.js";
+let store=null
+// 异步加载store模块 不异步加载的话,@/api/modules/oldApi.js的导入导出写法会有问题
+import('@/vuex/index.js')
+.then(module => {
+  store=module.default
+})
+.catch(err => {
+  console.error(err,'vuex加载错误');
+});
+
 axios.defaults.withCredentials = true;
 axios.defaults.timeout = 0;
 axios.interceptors.request.use(
@@ -43,16 +53,29 @@ function getData(val, url) {
   return val;
 }
 
-function checkStatus(response) {
+function errorMsgShow(closableErrMsg,msg){
+  if(closableErrMsg){
+    let messageHint = bus.$message.error({
+      message:msg,
+      duration:0,
+      showClose:true
+    })
+    store.mutations.PUSH_CLOSABLE_HINT(store.state,messageHint)
+  }else{
+    bus.$message.error(msg);
+  }
+}
+
+function checkStatus(response,closableErrMsg) {
   //处理响应数据
   if (response && response.status === 200) {
     // loading,如果http状态码正常,则直接返回数据
     let res = bus.$parseData(response);
     if (!res) {
-      bus.$message.error("服务器开了个小差");
+      errorMsgShow(closableErrMsg,'服务器开了个小差')
       return false;
     } else if (res.Ret == 403) {
-      bus.$message.error(res.Msg);
+      errorMsgShow(closableErrMsg,res.Msg)
     } else if (res.Ret === 408) {
       localStorage.setItem("auth", "")
       localStorage.setItem("loginTime", "")
@@ -66,14 +89,19 @@ function checkStatus(response) {
     }
     return res;
   } else {
-    bus.$message.error("网络异常");
+    errorMsgShow(closableErrMsg,'网络异常')
     return false;
   }
 }
 
-function checkCode(res) {
-  bus.$message.error("网络异常");
+function checkCode(res,closableErrMsg) {
+  errorMsgShow(closableErrMsg,'网络异常')
 }
+
+function isFormData(obj) {
+  return typeof obj === 'object' && obj instanceof FormData;
+}
+
 // 请求时间需要过长,取消限制
 const cancelTimeoutUrlPost = ["/cloud_disk/resource/upload"];
 
@@ -81,6 +109,16 @@ export default {
   post(url, data) {
     //post请求方式
     let timeout = cancelTimeoutUrlPost.includes(url) ? 0 : 600000;
+    // 自定义参数
+    /**
+     * closableErrMsg123 -- 错误提示需要时可关闭类型的
+     */
+    let closableErrMsg=false
+    if(data){
+      // 区分formData格式
+      closableErrMsg = isFormData(data)?!!data.get('closableErrMsg123'):!!data.closableErrMsg123
+      isFormData(data)?data.delete('closableErrMsg123'):(data.closableErrMsg123=undefined)
+    }
     return axios({
       method: "post",
       url: url,
@@ -90,13 +128,23 @@ export default {
       headers: { "Content-Type": "application/json; charset=utf-8" },
     })
       .then((response) => {
-        return checkStatus(response);
+        return checkStatus(response,closableErrMsg);
       })
       .catch((res) => {
-        return checkCode(res);
+        return checkCode(res,closableErrMsg);
       });
   },
   get(url, data, responseType = "json") {
+    // 自定义参数
+    /**
+     * closableErrMsg123 -- 错误提示需要时可关闭类型的
+     */
+    let closableErrMsg=false
+    if(data){
+      closableErrMsg = !!data.closableErrMsg123
+      data.closableErrMsg123=undefined
+    }
+
     //get请求方式
     return axios({
       method: "get",
@@ -123,10 +171,10 @@ export default {
         if(responseType==='blob'){
           return response
         }
-        return checkStatus(response);
+        return checkStatus(response,closableErrMsg);
       })
       .catch((res) => {
-        return checkCode(res);
+        return checkCode(res,closableErrMsg);
       });
   },
   Base64,

+ 2 - 0
src/lang/modules/Slides/pptList.js

@@ -14,6 +14,7 @@ export const listEn = {
   select_user_btn: "Select user",
   add_my_directory: "Add My Directory",
   creation_time: "Creation time",
+  update_time: "Update time",
   author_info: "Author",
   time_info: "Time",
   operation_info: "Operation",
@@ -136,6 +137,7 @@ export const listZh = {
   select_user_btn: "选择用户",
   add_my_directory: "添加我的目录",
   creation_time: "创建时间",
+  update_time: "更新时间",
   author_info: "作者",
   time_info: "时间",
   operation_info: "操作",

+ 4 - 2
src/lang/modules/systemManage/BaseConfig.js

@@ -67,7 +67,8 @@ export const BaseConfigEn = {
     resource_label02:'Image Type',
     report_title:"Report Title",
     report_author:"Report Author",
-    report_creation_time:"Creation Time",
+    // report_creation_time:"Creation Time",
+    report_release_time:"Release Time",
     select_layout:"Select Layout",
     edit_layout:"Edit Layout",
     completed_step:"Completed Step",
@@ -169,7 +170,8 @@ export const BaseConfigZh = {
     resource_label02:'图片类型',
     report_title:"研报标题",
     report_author:"研报作者",
-    report_creation_time:"创建时间",
+    // report_creation_time:"创建时间",
+    report_release_time:"发布时间",
     select_layout:"选择版图",
     edit_layout:"编辑版图",
     completed_step:"已完成步骤",

+ 10 - 0
src/styles/element-ui.scss

@@ -64,3 +64,13 @@ $--font-path: '~element-ui/lib/theme-chalk/fonts';
   max-height: 100vh;
   overflow-y: auto;
 }
+.el-message--error{
+  .el-message__closeBtn{
+    color: $danger-btn-color;
+  }
+}
+.el-message--success{
+  .el-message__closeBtn{
+    color: $--color-success;
+  }
+}

+ 56 - 13
src/views/datasheet_manage/customAnalysis/list.vue

@@ -245,6 +245,7 @@
                 ref="sheetRef"
                 v-if="sheetConfigOpt.data"
                 :option="sheetConfigOpt"
+                @updated="hasChange=true"
               />
             </div>
           </template>
@@ -427,6 +428,8 @@ export default {
       saveTime:"",
 
       isEdbReFreshLoading: false,//指标刷新
+      // 内容是否更新
+      hasChange:false,
     };
   },
   watch: {
@@ -443,6 +446,7 @@ export default {
       this.sheetAllcellData = [],//全部单元格数据 分页push
       this.dataToalPage = 0;
       this.sheetConfigOpt.data = null;
+      this.hasChange=false
       newval && this.getDetailHandle();
     },
 
@@ -677,7 +681,10 @@ export default {
       this.handleDownloadResource(url,filename)
     },
     /* 保存表格 */
-    saveHandle: _.debounce(async function () {
+    saveHandle: _.debounce(function () {
+      this.saveApi()
+    }, 300),
+    async saveApi(){
       luckysheet.exitEditMode();
       let data = luckysheet.getAllSheets();
 
@@ -692,6 +699,7 @@ export default {
       let img = getSheetImage(data[0]);
       const form = new FormData();
       form.append("Image", img);
+      form.append("closableErrMsg123", true);
       const { Data } = await sheetInterface.uploadImg(form);
 
       data.luckysheet_select_save = [];
@@ -703,14 +711,16 @@ export default {
         ExcelClassifyId,
         ExcelImage: Data.ResourceUrl,
         Content: JSON.stringify(data),
+        closableErrMsg123:true
       });
       this.loading.close();
-      if (res.Ret !== 200) return;
+      if (res.Ret !== 200) return false;
+      this.hasChange=false
       this.saveTime = this.$moment().format('YYYY-MM-DD HH:mm:ss')
-      this.$message.success(this.$t('MsgPrompt.saved_msg'));
+      this.shouldClosedHintshow(this.$t('MsgPrompt.saved_msg'))
       this.getTreeData();
-    }, 300),
-
+      return true
+    },
     /* 获取表格列表 */
     getPublicList() {
       sheetInterface
@@ -854,15 +864,31 @@ export default {
     },
 
     /* 刷新表格 */
-    refreshSheet: _.debounce(async function() {
+    refreshSheet: _.debounce(function() {
       if(this.isEdbReFreshLoading) return
-      
-      this.isEdbReFreshLoading = true;
-      let res = await sheetInterface.sheetAnalysisInterface.sheetRefresh({ExcelInfoId: this.sheetDetailInfo.ExcelInfoId})
+      //退出编辑模式,让文本框失焦 
+      luckysheet.exitEditMode();
+      // 保存逻辑延后 让hasChange取得正确的值
+      setTimeout(async()=>{
+        this.isEdbReFreshLoading = true;
+        let res={}
+        // 内容有改变 刷新前需要先保存
+        if(this.hasChange){
+          let saveSuccess = await this.saveApi()
+          if(!saveSuccess){
+            // 没保存成功
+            this.isEdbReFreshLoading = false;
+            return
+          }
+          res = await sheetInterface.sheetAnalysisInterface.sheetRefresh({ExcelInfoId: this.sheetDetailInfo.ExcelInfoId,closableErrMsg123:true})
+        }else{
+          res = await sheetInterface.sheetAnalysisInterface.sheetRefresh({ExcelInfoId: this.sheetDetailInfo.ExcelInfoId,closableErrMsg123:true})
+        }
 
-      this.isEdbReFreshLoading = false;
-      if(res.Ret !== 200) return 
-      this.$message.success(res.Msg)
+        this.isEdbReFreshLoading = false;
+        if(res.Ret !== 200) return 
+        this.shouldClosedHintshow(res.Msg)
+      })
     },300),
 
     /* 重绘右侧区域宽度 */
@@ -899,7 +925,22 @@ export default {
         code: this.sheetDetailInfo.UniqueCode 
       }});
     },
-
+    shouldClosedHintshow(msg){
+      let messageHint=this.$message.success({
+        message:msg,
+        duration:0,
+        showClose:true
+      })
+      this.$store.commit('PUSH_CLOSABLE_HINT',messageHint)
+    },
+    closeHint(){
+      // console.log(this.$store.state.closableHints,'closableHints');
+      if(!(this.$store.state.closableHints && this.$store.state.closableHints.length>0)) return 
+      this.$store.state.closableHints.map(hint =>{
+        hint.close()
+      })
+      this.$store.commit('CLEAR_CLOSABLE_HINT')
+    }
   },
   mounted() {
     if (this.$route.query.code) {
@@ -913,9 +954,11 @@ export default {
     }
 
     window.addEventListener("resize", this.reloadRightWid);
+    document.addEventListener("click", this.closeHint);
   },
   destroyed() {
     window.removeEventListener("resize", this.reloadRightWid);
+    document.removeEventListener("click", this.closeHint);
   },
 };
 </script>

+ 9 - 9
src/views/ppt_manage/newVersion/pptCatalog.vue

@@ -227,7 +227,7 @@
               :style="item.BackgroundImg?{background: `no-repeat top/cover url('${item.BackgroundImg}')`}:{}">
                 <span>{{item.Title}}</span>
               </div>
-              <span style="font-size:14px;">{{$t('Slides.creation_time')}}:{{$moment(item.PptCreateTime).format('YYYY-MM-DD')}}</span>
+              <span style="font-size:14px;">{{$t('Slides.creation_time')}}:{{$moment(item.PptModifyTime).format('YYYY-MM-DD')}}</span>
             </div> -->
             <div class="list-item" 
                 v-for="item in catalogPPTList" :key="item.PptId"
@@ -242,12 +242,10 @@
                     </span>
                 </div>
                 <div class="item-foot" style="margin-bottom:0;">
-                    <span style="font-size:14px;">{{$t('Slides.creation_time')}}:{{$moment(item.PptCreateTime).format('YYYY-MM-DD')}}</span>
-                    <img
-                        v-if="treeName==='private'&&selectNode"
-                        src="~@/assets/img/ppt_m/move_ico2.png"
-                        style="width: 14px; height: 14px; margin-right: 8px"
-                    />
+                  <el-tooltip :content="$t('Slides.update_time')" placement='top' :enterable="false">
+                    <span class="item-update-item">{{$moment(item.PptModifyTime).format('YYYY-MM-DD HH:mm:ss')}}</span>
+                  </el-tooltip>
+                  <span>{{ $i18n.locale == 'zh'?`${item.PptPage}页`:`P${item.PptPage}` }}</span>
                 </div>
             </div>
           </draggable>
@@ -1596,9 +1594,11 @@ export default {
             margin-bottom: 10px;
             font-size: 16px;
             span{
-              flex:1;
-              overflow: hidden;
+              font-size:14px;
               white-space: nowrap;
+            }
+            .item-update-item{
+              overflow: hidden;
               text-overflow: ellipsis;
             }
             img{

+ 11 - 6
src/views/ppt_manage/newVersion/pptEnCatalog.vue

@@ -222,7 +222,7 @@
               :style="item.BackgroundImg?{background: `no-repeat top/cover url('${item.BackgroundImg}')`}:{}">
                 <span>{{item.Title}}</span>
               </div>
-              <span style="font-size:14px;">{{$t('Slides.creation_time')}}:{{$moment(item.PptCreateTime).format('YYYY-MM-DD')}}</span>
+              <span style="font-size:14px;">{{$t('Slides.creation_time')}}:{{$moment(item.PptModifyTime).format('YYYY-MM-DD')}}</span>
             </div> -->
             <div class="list-item" 
                 v-for="item in catalogPPTList" :key="item.PptId"
@@ -237,12 +237,15 @@
                     </span>
                 </div>
                 <div class="item-foot" style="margin-bottom:0;">
-                    <span style="font-size:14px;">{{$t('Slides.creation_time')}}:{{$moment(item.PptCreateTime).format('YYYY-MM-DD')}}</span>
-                    <img
+                    <el-tooltip :content="$t('Slides.update_time')" placement='top' :enterable="false">
+                      <span class="item-update-item">{{$moment(item.PptModifyTime).format('YYYY-MM-DD HH:mm:ss')}}</span>
+                    </el-tooltip>
+                    <span>{{ $i18n.locale == 'zh'?`${item.PptPage}页`:`P${item.PptPage}` }}</span>
+                    <!-- <img
                         v-if="treeName==='private'&&selectNode"
                         src="~@/assets/img/ppt_m/move_ico2.png"
                         style="width: 14px; height: 14px; margin-right: 8px"
-                    />
+                    /> -->
                 </div>
             </div>
           </draggable>
@@ -1484,9 +1487,11 @@ export default {
             margin-bottom: 10px;
             font-size: 16px;
             span{
-              flex:1;
-              overflow: hidden;
+              font-size:14px;
               white-space: nowrap;
+            }
+            .item-update-item{
+              overflow: hidden;
               text-overflow: ellipsis;
             }
             img{

+ 5 - 3
src/views/report_manage/reportdtl.vue

@@ -3,7 +3,8 @@
 		<header>{{reportInfo.Title}}</header>
 		<div style="padding:0 35px 0; box-sizing:border-box; color:#666; font-size:24px; overflow:hidden;">
 		  <span>{{$route.query.fromPage=='strategyReport'?'Horizon Insights FICC Team':reportInfo.Author}}</span>
-		  <span style="float:right;">{{reportInfo.PublishTime}}</span>
+			<!-- 已发布、已通过展示发布时间 -->
+		  <span style="float:right;" v-if="[2,6].includes(reportInfo.State)">{{reportInfo.PublishTime}}</span>
 		</div>
 		
 		<!-- 英文版摘要+overview -->
@@ -87,9 +88,10 @@
 					}
 					
 					if(this.$route.query.fromPage == 'en'){
-						str=`${baseUrl}/reportshare_crm_report_en?code=${this.$route.query.code}&flag=${waterMarkStr}`
+						// 加 & 是防止影响到上一个参数
+						str=`${baseUrl}/reportshare_crm_report_en?code=${this.$route.query.code}&flag=${waterMarkStr}& ${this.reportInfo.Title}`
 					}else{
-						str=`${baseUrl}/reportshare_crm_report?code=${this.$route.query.code}&flag=${waterMarkStr}`
+						str=`${baseUrl}/reportshare_crm_report?code=${this.$route.query.code}&flag=${waterMarkStr}& ${this.reportInfo.Title}`
 					}
 				}
 				

+ 1 - 3
src/views/smartReport/editReport.vue

@@ -371,7 +371,7 @@ export default {
             layoutBaseInfo:{
                 研报标题:'',
                 研报作者:'',
-                创建时间:''
+                创建时间:'', //一开始定义的是创建时间,后改为发布时间
             }
         }
     },
@@ -802,7 +802,6 @@ export default {
                     this.reportInfo.Title=params.Title
                     this.layoutBaseInfo['研报标题']=params.Title
                     this.layoutBaseInfo['研报作者']=params.Author
-                    this.layoutBaseInfo['创建时间']=params.CreateTime
                     this.showReportBaseInfo=false
                 }
             })
@@ -842,7 +841,6 @@ export default {
                     this.bgColor=res.Data.CanvasColor
                     this.layoutBaseInfo['研报标题']=res.Data.Title
                     this.layoutBaseInfo['研报作者']=res.Data.Author
-                    this.layoutBaseInfo['创建时间']=res.Data.CreateTime
                     this.$nextTick(()=>{
                         this.contentChange=false
                     })

+ 5 - 9
src/views/smartReport/reportDetail.vue

@@ -22,7 +22,7 @@
                 <header>{{reportInfo.Title}}</header>
                 <div style=" box-sizing:border-box; color:#666; font-size:24px; overflow:hidden;">
                     <span>{{ reportInfo.Author}}</span>
-                    <span style="float:right;">{{reportInfo.CreateTime}}</span>
+                    <span style="float:right;" v-if="[2,6].includes(reportInfo.State)">{{reportInfo.PublishTime}}</span>
                 </div>
             </div>
             <div class="abstract" v-if="reportInfo && !!reportInfo.NeedSplice">
@@ -90,7 +90,8 @@ export default {
 			let str=''
 			const baseUrl= localStorage.getItem('dynamicOutLinks') ? JSON.parse(localStorage.getItem('dynamicOutLinks')).ReportViewUrl : '';
 			if(this.$route.query.code){
-				str=`${baseUrl}/reportshare_smart_report?code=${this.$route.query.code}`
+                // 加 & 是防止影响到上一个参数
+				str=`${baseUrl}/reportshare_smart_report?code=${this.$route.query.code}& ${this.reportInfo && this.reportInfo.Title}`
 			}
 			return str
 		},
@@ -143,16 +144,11 @@ export default {
                 if(res.Ret===200){
                     this.reportInfo=res.Data || {}
                     this.headImgStyle=this.reportInfo.HeadStyle?JSON.parse(this.reportInfo.HeadStyle):[]
-                    this.headImgStyle.map(st =>{
-                        st.value=st.value || st.label
-                    })
                     this.endImgStyle=this.reportInfo.EndStyle?JSON.parse(this.reportInfo.EndStyle):[]
-                    this.endImgStyle.map(st =>{
-                        st.value=st.value || st.label
-                    })
                     this.layoutBaseInfo['研报标题']=this.reportInfo.Title
                     this.layoutBaseInfo['研报作者']=this.reportInfo.Author
-                    this.layoutBaseInfo['创建时间']=this.reportInfo.CreateTime
+                    // 已发布已通过的报告才显示发布时间
+                    this.layoutBaseInfo['创建时间']=[2,6].includes(this.reportInfo.State)?this.reportInfo.PublishTime:''
                     if(this.$route.query.type==='preview'){
                        this.content=sessionStorage.getItem('smartReportContent')
                        this.bgColor=sessionStorage.getItem('smartReportContentBg')

+ 6 - 4
src/views/system_manage/components/addUserDialog.vue

@@ -9,7 +9,8 @@
         <el-form @submit.native.prevent :model="userForm" :rules="userRule" ref="userForm" label-width="160px"
             class="demo-ruleForm" style="marginTop:15px;">
             <el-form-item :label="$t('SystemManage.DepartManage.user_login_accout')" prop="account">
-                <el-input v-model="userForm.account" :placeholder="$t('SystemManage.DepartManage.user_add_placeholder01')" :disabled="userForm.disabledForm" clearable>
+                <el-input v-model="userForm.account" :placeholder="$t('SystemManage.DepartManage.user_add_placeholder01')" 
+                :disabled="userForm.disabledForm || userForm.isAdminEdit" clearable>
                 </el-input>
             </el-form-item>
             <el-form-item :label="$t('SystemManage.DepartManage.user_login_pwd')" prop="pwd" v-if="userForm.title == $t('SystemManage.DepartManage.user_add_btn')">
@@ -17,7 +18,8 @@
                     :type="userForm.title == $t('SystemManage.DepartManage.user_add_btn') ? 'text' : 'password' " clearable></el-input>
             </el-form-item>
             <el-form-item :label="$t('SystemManage.DepartManage.user_table_name')" prop="name">
-                <el-input v-model="userForm.name" :placeholder="$t('SystemManage.DepartManage.user_add_placeholder03')"  clearable>
+                <el-input v-model="userForm.name" :placeholder="$t('SystemManage.DepartManage.user_add_placeholder03')"  clearable
+                :disabled="userForm.isAdminEdit">
                 </el-input>
             </el-form-item>
             <el-form-item :label="$t('SystemManage.DepartManage.user_table_mobile')" prop="mobile" class="mobile-input-item">
@@ -46,7 +48,7 @@
                 <el-input :disabled="hasEmployeeNo" v-model="userForm.employeeNumber" :placeholder="$t('SystemManage.DepartManage.user_add_placeholder07')"></el-input>
             </el-form-item>
             <el-form-item :label="$t('SystemManage.DepartManage.user_role')" prop="role">
-                <el-select v-model="userForm.role" :placeholder="$t('SystemManage.DepartManage.user_role')" :disabled="userForm.disabledForm" @change="roleChange">
+                <el-select v-model="userForm.role" :placeholder="$t('SystemManage.DepartManage.user_role')" :disabled="userForm.disabledForm || userForm.isAdminEdit" @change="roleChange">
                     <el-option v-for="item in roleArr" :key="item.RoleId" :label="item.RoleName" :value="item.RoleId">
                     </el-option>
                 </el-select>
@@ -66,7 +68,7 @@
                         :cityInfo="userForm.city"
                         @selected="selectRegion"/>
             </el-form-item>
-            <el-form-item :label="$t('SystemManage.DepartManage.user_table_status')" prop="status">
+            <el-form-item :label="$t('SystemManage.DepartManage.user_table_status')" prop="status" v-if="!userForm.isAdminEdit">
                 <el-radio-group v-model="userForm.status" :disabled="userForm.disabledStatus">
                     <el-radio :label="1">{{$t('SystemManage.DepartManage.user_table_status_open')}}</el-radio>
                     <el-radio :label="0">{{$t('SystemManage.DepartManage.user_table_status_ban')}}</el-radio>

+ 9 - 4
src/views/system_manage/components/smartReportImgSet.vue

@@ -215,9 +215,13 @@ export default {
             },
             step:1,
             steps:[this.$t('SystemManage.BaseConfig.select_layout'),this.$t('SystemManage.BaseConfig.edit_layout')],
+            /**
+             * value不能变 
+             * 一开始定义为创建时间,后面改为发布时间
+             */
             layoutOptions:[{value:'研报标题',label:this.$t('SystemManage.BaseConfig.report_title')},//研报标题
                             {value:'研报作者',label:this.$t('SystemManage.BaseConfig.report_author')},//研报作者
-                            {value:'创建时间',label:this.$t('SystemManage.BaseConfig.report_creation_time')}],//创建时间
+                            {value:'创建时间',label:this.$t('SystemManage.BaseConfig.report_release_time')}],//发布时间
             layoutItems:[],
             // currentLayout:{},
             layoutFont:{
@@ -479,8 +483,8 @@ export default {
                 try {
                     this.layoutItems=this.formData.layout?JSON.parse(this.formData.layout).map(it =>{
                         return {
-                            value:it.value || it.label,
-                            label:this.convertLabel(it.value || it.label),
+                            value:it.value,
+                            label:this.convertLabel(it.value),
                             x:this.percent2Number(it.left,backgroundWidth),
                             y:this.percent2Number(it.top,backgroundGHeight),
                             z:1,
@@ -782,7 +786,8 @@ export default {
         }
     }
     .layout-background{
-        background-color: #D9D9D9;
+        // background-color: #D9D9D9;
+        border: solid 1px #D9D9D9;
         margin-left: 43px;
         width: 400px;
         text-align: center;

+ 2 - 1
src/views/system_manage/departManage.vue

@@ -124,7 +124,7 @@
 								<span v-permission="permissionBtn.sysDepartPermission.sysDepart_moveGroup"
 									class="editsty" @click.stop="moveDepart(scope.row)">{{$t('SystemManage.DepartManage.user_table_move_group')}}</span>
 								<span v-permission="permissionBtn.sysDepartPermission.sysDepart_enable"
-									class="editsty" 
+									class="editsty" v-if="scope.row.AdminName != 'admin'"
 									@click.stop="handleChangeStatus(scope.row)"
 								>{{scope.row.Enabled===0?$t('SystemManage.DepartManage.user_table_status_open'):$t('SystemManage.DepartManage.user_table_status_ban')}}</span>
 								<!-- <span v-permission="permissionBtn.sysDepartPermission.sysDepart_del"
@@ -1245,6 +1245,7 @@ export default {
 				title:this.$t('SystemManage.DepartManage.user_edit_btn'),
 				admin_id:item.AdminId,
 				account:item.AdminName,
+				isAdminEdit:item.AdminName=="admin",
 				pwd:item.Password,
 				employeeNumber:item.EmployeeId,
 				// oldPwd:item.Password,

+ 1 - 1
src/views/system_manage/roleManage.vue

@@ -42,7 +42,7 @@
 					<template slot-scope="scope"> <span>{{scope.row.RoleType}}</span> </template>
 				</el-table-column>
 				<el-table-column :label="$t('Table.column_operations')" align="center">
-					<template slot-scope="scope">
+					<template slot-scope="scope" v-if="scope.row.RoleName!='admin'">
 						<div style="color:#4099ef; font-size:24px;">
 							<!-- <span v-permission="permissionBtn.sysDepartPermission.sysRole_settingAuth"
 								class="editsty" @click.stop="getAuthDetail(scope.row)" style="marginRight:20px;">查看权限</span> -->

+ 1 - 1
src/vuex/index.js

@@ -34,8 +34,8 @@ const state = {
   hasTrialUserPermisson:false,
   permissionRoute:[], //用于需要验证是否有某个菜单的权限
   baseInfo:{},
-
   lang: localStorage.getItem('i18n') || 'zh',//全局语言版本 zh en
+  closableHints:[], //可关闭的信息提示
 };
 
 export default {

+ 9 - 2
src/vuex/mutations.js

@@ -81,10 +81,17 @@ const mutations = {
   SET_BASE_INFO(state,obj) {
     state.baseInfo={...state.baseInfo,...obj};
   },
-
   SET_LANG(state,lang) {
     state.lang = lang;
-  }
+  },
+  //添加可关闭的信息提示
+  PUSH_CLOSABLE_HINT(state,hintObj) {
+    state.closableHints.push(hintObj)
+  },
+  //清空可关闭的信息提示
+  CLEAR_CLOSABLE_HINT(state) {
+    state.closableHints=[]
+  },
 };
 
 export default mutations;