Browse Source

修改导出问题,新增失败逻辑

yuanmingze 17 hours ago
parent
commit
8e89270e04

+ 38 - 7
src/views/admin/taskManagement/missionCenter.vue

@@ -15,20 +15,34 @@
         <template slot="menuLeft">
           <el-button v-if="showBtn" type="primary" size="small" @click="exportBtnFn">导 出</el-button>
         </template>
-        <template slot="menuRight">
+
+        <template slot="menuRight" v-if="userInfo.roles.includes(37)">
           <div class="right-btns">
             <div class="r-btn">
-              <el-button v-if="userInfo.roles.includes(37) && pkgDetailShow" :disabled="exportPkgDisabled" size="small" @click="downInfo(2)">{{ pkgBtnText }}</el-button>
+              <template v-if="pkgBtnErrorMsg">
+                <el-tooltip effect="dark" :content="pkgBtnErrorMsg" placement="top-start">
+                  <el-button class="error-message" disabled>生成失败<i class="el-icon-warning-outline el-icon--right"></i></el-button>
+                </el-tooltip>
+              </template>
+              <template v-else>
+                <el-button v-if="pkgDetailShow" :disabled="exportPkgDisabled" size="small" @click="downInfo(2)">{{ pkgBtnText }}</el-button>
+              </template>
               <el-button type="primary" size="small" @click="exportPersonalPackage">个人执行包数据导出</el-button>
             </div>
             <div class="r-btn">
-              <el-button v-if="userInfo.roles.includes(37) && taskDetailShow" :disabled="exportTaskDetailDisabled" size="small" @click="downInfo(1)">{{
-                taskDetailBtnText
-              }}</el-button>
+              <template v-if="taskDetailErrorMsg">
+                <el-tooltip effect="dark" :content="taskDetailErrorMsg" placement="top-start">
+                  <el-button class="error-message" disabled>生成失败<i class="el-icon-warning-outline el-icon--right"></i></el-button>
+                </el-tooltip>
+              </template>
+              <template v-else>
+                <el-button v-if="taskDetailShow" :disabled="exportTaskDetailDisabled" size="small" @click="downInfo(1)">{{ taskDetailBtnText }}</el-button>
+              </template>
               <el-button type="primary" size="small" @click="exportPersonalTaskDetails">个人任务明细数据导出</el-button>
             </div>
           </div>
         </template>
+
         <template slot="taskTypes" slot-scope="scope">
           <el-button type="text" size="small" icon="el-icon-view" @click="viewDetail(scope.row, scope.index)">查看 </el-button>
         </template>
@@ -234,9 +248,10 @@ export default {
       exportType: '',
       taskDetailUrl: '',
       exportDialogVisible: false,
+      pkgBtnErrorMsg: '',
       exportPkgDisabled: false,
       pkgUrl: '',
-
+      taskDetailErrorMsg: '',
       pkgDetailShow: false,
       pkgBtnText: '',
       exportForm: {
@@ -661,10 +676,11 @@ export default {
 
     downInfo(type) {
       let url = type == '1' ? this.taskDetailUrl : this.pkgUrl;
+      let fileName = type == '1' ? '个人任务明细数据信息.xlsx' : '个人执行包数据信息.xlsx';
       let link = document.createElement('a');
       link.style.display = 'none';
       link.href = process.env.VUE_APP_URL + url;
-      link.setAttribute('download', '用户信息.xlsx');
+      link.setAttribute('download', fileName);
       document.body.appendChild(link);
       link.click();
       document.body.removeChild(link);
@@ -722,4 +738,19 @@ export default {
   text-align: center;
   margin-top: 10px;
 }
+.error-message {
+  color: red;
+  font-weight: 600;
+
+  i {
+    font-weight: 600;
+    font-size: 14px;
+  }
+
+  &:hover {
+    background-color: #fff !important;
+    border-color: #ebeef5 !important;
+    color: red !important;
+  }
+}
 </style>

+ 26 - 6
src/views/admin/user/index.vue

@@ -31,11 +31,16 @@
         </template>
 
         <!-- 右侧菜单 -->
-        <template slot="menuRight">
+        <template slot="menuRight" v-if="userInfo?.roles?.includes(50)">
           <!-- 角色说明隐藏 -->
-          <el-button v-if="userInfo?.roles?.includes(50) && downShow" size="small" :disabled="exportUserInfoDisabled" type="primary" @click="downInfo">{{
-            exportUserInfoText
-          }}</el-button>
+          <template v-if="exportUserInfoErrorMsg">
+            <el-tooltip effect="dark" :content="exportUserInfoErrorMsg" placement="top-start">
+              <el-button class="error-message" disabled>生成失败<i class="el-icon-warning-outline el-icon--right"></i></el-button>
+            </el-tooltip>
+          </template>
+          <template v-else>
+            <el-button v-if="downShow" size="small" :disabled="exportUserInfoDisabled" type="primary" @click="downInfo">{{ exportUserInfoText }}</el-button>
+          </template>
           <el-button v-if="userInfo?.roles?.includes(50)" size="small" type="primary" @click="exportUserInfo">导出人员数据</el-button>
         </template>
         <!-- 操作栏 -->
@@ -211,6 +216,7 @@ export default {
       exportUrl: '',
       downShow: false,
       exportUserInfoDisabled: false,
+      exportUserInfoErrorMsg: '',
       hideCommunicationOfficer: true,
       dialogType: '',
       option: tableOption,
@@ -361,7 +367,6 @@ export default {
         if (res.data.code === 0) {
           this.downShow = true;
           const status = res.data.data.status;
-
           if (status === 'GENERATING') {
             this.exportUserInfoText = '数据生成中';
             this.exportUserInfoDisabled = true;
@@ -372,7 +377,7 @@ export default {
             this.exportUserInfoDisabled = false;
             return true;
           } else if (status === 'ERROR') {
-            this.exportUserInfoText = res.data.data.errorMsg || '导出失败';
+            this.exportUserInfoErrorMsg = res.data.data.errorMsg || '导出失败';
             this.exportUserInfoDisabled = true;
             return true;
           } else {
@@ -798,4 +803,19 @@ export default {
     cursor: pointer;
   }
 }
+.error-message {
+  color: red;
+  font-weight: 600;
+
+  i {
+    font-weight: 600;
+    font-size: 14px;
+  }
+
+  &:hover {
+    background-color: #fff !important;
+    border-color: #ebeef5 !important;
+    color: red !important;
+  }
+}
 </style>

+ 50 - 20
src/views/serviceManagement/serviceReviewed/index.vue

@@ -99,20 +99,32 @@
         <el-button type="primary" size="small" @click="exportBtnFn" :loading="exportLoading">导 出</el-button>
       </el-tooltip>
 
-      <div class="right-btns">
-        <div class="r-btn">
-          <el-button v-if="(userInfo.roles.includes(4) || userInfo.roles.includes(37)) && pkgDetailShow" :disabled="exportPkgDisabled" size="small" @click="downInfo(2)">{{
-            pkgBtnText
-          }}</el-button>
-          <el-button type="primary" size="small" @click="exportPersonalPackage">个人执行包数据导出</el-button>
+      <template v-if="userInfo.roles.includes(4) || userInfo.roles.includes(37)">
+        <div class="right-btns">
+          <div class="r-btn">
+            <template v-if="pkgBtnErrorMsg">
+              <el-tooltip effect="dark" :content="pkgBtnErrorMsg" placement="top-start">
+                <el-button class="error-message" disabled>生成失败<i class="el-icon-warning-outline el-icon--right"></i></el-button>
+              </el-tooltip>
+            </template>
+            <template v-else>
+              <el-button v-if="pkgDetailShow" :disabled="exportPkgDisabled" size="small" @click="downInfo(2)">{{ pkgBtnText }}</el-button>
+            </template>
+            <el-button type="primary" size="small" @click="exportPersonalPackage">个人执行包数据导出</el-button>
+          </div>
+          <div class="r-btn">
+            <template v-if="taskDetailErrorMsg">
+              <el-tooltip effect="dark" :content="taskDetailErrorMsg" placement="top-start">
+                <el-button class="error-message" disabled>生成失败<i class="el-icon-warning-outline el-icon--right"></i></el-button>
+              </el-tooltip>
+            </template>
+            <template v-else>
+              <el-button v-if="taskDetailShow" :disabled="exportTaskDetailDisabled" size="small" @click="downInfo(1)">{{ taskDetailBtnText }}</el-button>
+            </template>
+            <el-button type="primary" size="small" @click="exportPersonalTaskDetails">个人任务明细数据导出</el-button>
+          </div>
         </div>
-        <div class="r-btn">
-          <el-button v-if="(userInfo.roles.includes(4) || userInfo.roles.includes(37)) && taskDetailShow" :disabled="exportTaskDetailDisabled" size="small" @click="downInfo(1)">{{
-            taskDetailBtnText
-          }}</el-button>
-          <el-button type="primary" size="small" @click="exportPersonalTaskDetails">个人任务明细数据导出</el-button>
-        </div>
-      </div>
+      </template>
     </div>
 
     <div class="table">
@@ -240,13 +252,14 @@ export default {
     return {
       taskDetailShow: false,
       taskDetailBtnText: '',
+      taskDetailErrorMsg: '',
       exportTaskDetailDisabled: false,
       exportType: '',
       taskDetailUrl: '',
       exportDialogVisible: false,
       exportPkgDisabled: false,
       pkgUrl: '',
-
+      pkgBtnErrorMsg: '',
       pkgDetailShow: false,
       pkgBtnText: '',
       exportForm: {
@@ -497,18 +510,19 @@ export default {
         const res = await getExportResult({ type: 'TASK_DETAIL' });
         if (res.data.code === 0) {
           this.taskDetailShow = true;
-          const status = res.data.data.status;
+          let status = res.data.data.status;
+
           if (status === 'GENERATING') {
             this.taskDetailBtnText = '数据生成中';
             this.exportTaskDetailDisabled = true;
             return false;
           } else if (status === 'GENERATED') {
-            this.exportUrl = res.data.data.latestUrl;
+            this.taskDetailUrl = res.data.data.latestUrl;
             this.taskDetailBtnText = '下载数据';
             this.exportTaskDetailDisabled = false;
             return true;
           } else if (status === 'ERROR') {
-            this.taskDetailBtnText = res.data.data.errorMsg;
+            this.taskDetailErrorMsg = res.data.data.errorMsg || '生成失败,请联系管理员!';
             this.exportTaskDetailDisabled = true;
             return true;
           } else {
@@ -548,12 +562,12 @@ export default {
             this.exportPkgDisabled = true;
             return false;
           } else if (status === 'GENERATED') {
-            this.taskDetailUrl = res.data.data.latestUrl;
+            this.pkgUrl = res.data.data.latestUrl;
             this.pkgBtnText = '下载数据';
             this.exportPkgDisabled = false;
             return true;
           } else if (status === 'ERROR') {
-            this.pkgBtnText = res.data.data.errorMsg;
+            this.pkgBtnErrorMsg = res.data.data.errorMsg || '生成失败,请联系管理员!';
             this.exportPkgDisabled = true;
             return true;
           } else {
@@ -581,10 +595,11 @@ export default {
 
     downInfo(type) {
       let url = type == '1' ? this.taskDetailUrl : this.pkgUrl;
+      let fileName = type == '1' ? '个人任务明细数据信息.xlsx' : '个人执行包数据信息.xlsx';
       let link = document.createElement('a');
       link.style.display = 'none';
       link.href = process.env.VUE_APP_URL + url;
-      link.setAttribute('download', '用户信息.xlsx');
+      link.setAttribute('download', fileName);
       document.body.appendChild(link);
       link.click();
       document.body.removeChild(link);
@@ -658,4 +673,19 @@ export default {
     margin-right: 10px;
   }
 }
+.error-message {
+  color: red;
+  font-weight: 600;
+
+  i {
+    font-weight: 600;
+    font-size: 14px;
+  }
+
+  &:hover {
+    background-color: #fff !important;
+    border-color: #ebeef5 !important;
+    color: red !important;
+  }
+}
 </style>

+ 29 - 6
src/views/servicePackageMonitoring/riskEventAudit/index.vue

@@ -39,7 +39,13 @@
       <template slot="menuRight">
         <div class="right-content">
           <div class="r-btn" v-if="userInfo?.roles?.includes(53)">
+            <template v-if="exportDetailErrorMsg">
+              <el-tooltip effect="dark" :content="exportDetailErrorMsg" placement="top-start">
+                <el-button class="error-message" disabled>生成失败<i class="el-icon-warning-outline el-icon--right"></i></el-button>
+              </el-tooltip>
+            </template>
             <el-button v-if="exportDetailShow" :disabled="exportDetailDisabled" size="small" @click="downInfo">{{ exportBtnText }}</el-button>
+
             <el-button type="primary" size="small" @click="exportTask">监督任务数据导出</el-button>
           </div>
           <el-checkbox v-model="supervision" @change="checkBoxChange">只看待监督</el-checkbox>
@@ -130,6 +136,7 @@ export default {
       },
       exportDetailShow: false,
       exportDetailDisabled: false,
+      exportDetailErrorMsg: '',
       exportBtnText: '',
       tableLoading: false,
       tableOption: tableOption,
@@ -174,7 +181,7 @@ export default {
     const roles = this.userInfo.roles;
     const rolesArr = [49, 52, 53, 56];
     this.IS_JDY = roles.some((item) => rolesArr.includes(item));
-    this.getExportInfoStatus()
+    this.getExportInfoStatus();
     //
   },
 
@@ -420,12 +427,12 @@ export default {
         taskPeriod: taskPeriodResult
       });
 
-      if(res.data.code == 0) {
-        this.getExportInfoStatus()
-      } 
+      if (res.data.code == 0) {
+        this.getExportInfoStatus();
+      }
       this.handleExportDialogClose();
     },
-        // 获取导出状态 - 用户信息导出
+    // 获取导出状态 - 用户信息导出
     async getExportInfoStatus() {
       const checkStatus = async () => {
         const res = await getExportResult({ type: 'CHECK_SUP' });
@@ -443,7 +450,7 @@ export default {
             this.exportDetailDisabled = false;
             return true;
           } else if (status === 'ERROR') {
-            this.exportBtnText = res.data.data.errorMsg || '导出失败';
+            this.exportDetailErrorMsg = res.data.data.errorMsg || '导出失败';
             this.exportDetailDisabled = true;
             return true;
           } else {
@@ -550,4 +557,20 @@ export default {
     margin-right: 10px;
   }
 }
+
+.error-message {
+  color: red;
+  font-weight: 600;
+
+  i {
+    font-weight: 600;
+    font-size: 14px;
+  }
+
+  &:hover {
+    background-color: #fff !important;
+    border-color: #ebeef5 !important;
+    color: red !important;
+  }
+}
 </style>