Jelajahi Sumber

新增搜索

yuanmingze 5 bulan lalu
induk
melakukan
2eec47aa63

+ 1 - 1
package.json

@@ -17,7 +17,7 @@
     "@vxe-ui/core": "3",
     "avue-plugin-map": "^1.0.1",
     "avue-plugin-ueditor": "^0.2.18",
-    "axios": "^1.7.9",
+    "axios": "^0.21.1",
     "benz-amr-recorder": "^1.1.5",
     "bignumber.js": "^9.1.2",
     "classlist-polyfill": "^1.2.0",

+ 11 - 47
pnpm-lock.yaml

@@ -25,10 +25,10 @@ importers:
         version: 1.0.1
       avue-plugin-ueditor:
         specifier: ^0.2.18
-        version: 0.2.18(axios@1.7.9)(element-ui@2.15.14(vue@2.7.16))(vue@2.7.16)
+        version: 0.2.18(axios@0.21.4)(element-ui@2.15.14(vue@2.7.16))(vue@2.7.16)
       axios:
-        specifier: ^1.7.9
-        version: 1.7.9
+        specifier: ^0.21.1
+        version: 0.21.4
       benz-amr-recorder:
         specifier: ^1.1.5
         version: 1.1.5
@@ -106,7 +106,7 @@ importers:
         version: 2.7.16
       vue-axios:
         specifier: ^3.5.2
-        version: 3.5.2(axios@1.7.9)(vue@2.7.16)
+        version: 3.5.2(axios@0.21.4)(vue@2.7.16)
       vue-clipboard2:
         specifier: ^0.3.3
         version: 0.3.3
@@ -1382,9 +1382,6 @@ packages:
   async@2.6.4:
     resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==}
 
-  asynckit@0.4.0:
-    resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
-
   at-least-node@1.0.0:
     resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==}
     engines: {node: '>= 4.0.0'}
@@ -1410,8 +1407,8 @@ packages:
     resolution: {integrity: sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==}
     deprecated: Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410
 
-  axios@1.7.9:
-    resolution: {integrity: sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==}
+  axios@0.21.4:
+    resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==}
 
   babel-helper-vue-jsx-merge-props@2.0.3:
     resolution: {integrity: sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==}
@@ -1664,10 +1661,6 @@ packages:
   colorette@2.0.20:
     resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
 
-  combined-stream@1.0.8:
-    resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
-    engines: {node: '>= 0.8'}
-
   commander@2.20.3:
     resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
 
@@ -2104,10 +2097,6 @@ packages:
     resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
     engines: {node: '>= 0.4'}
 
-  delayed-stream@1.0.0:
-    resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
-    engines: {node: '>=0.4.0'}
-
   delegate@3.2.0:
     resolution: {integrity: sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==}
 
@@ -2486,10 +2475,6 @@ packages:
     resolution: {integrity: sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==}
     engines: {node: '>=4.0'}
 
-  form-data@4.0.1:
-    resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==}
-    engines: {node: '>= 6'}
-
   forwarded@0.2.0:
     resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
     engines: {node: '>= 0.6'}
@@ -3751,9 +3736,6 @@ packages:
     resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
     engines: {node: '>= 0.10'}
 
-  proxy-from-env@1.1.0:
-    resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
-
   prr@1.0.1:
     resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==}
 
@@ -6470,8 +6452,6 @@ snapshots:
     dependencies:
       lodash: 4.17.21
 
-  asynckit@0.4.0: {}
-
   at-least-node@1.0.0: {}
 
   autoprefixer@10.4.20(postcss@8.4.49):
@@ -6493,9 +6473,9 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  avue-plugin-ueditor@0.2.18(axios@1.7.9)(element-ui@2.15.14(vue@2.7.16))(vue@2.7.16):
+  avue-plugin-ueditor@0.2.18(axios@0.21.4)(element-ui@2.15.14(vue@2.7.16))(vue@2.7.16):
     dependencies:
-      axios: 1.7.9
+      axios: 0.21.4
       element-ui: 2.15.14(vue@2.7.16)
       vue: 2.7.16
       vue-cropper: 0.6.5
@@ -6508,11 +6488,9 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  axios@1.7.9:
+  axios@0.21.4:
     dependencies:
       follow-redirects: 1.15.9(debug@4.4.0)
-      form-data: 4.0.1
-      proxy-from-env: 1.1.0
     transitivePeerDependencies:
       - debug
 
@@ -6815,10 +6793,6 @@ snapshots:
 
   colorette@2.0.20: {}
 
-  combined-stream@1.0.8:
-    dependencies:
-      delayed-stream: 1.0.0
-
   commander@2.20.3: {}
 
   commander@7.2.0: {}
@@ -7094,8 +7068,6 @@ snapshots:
       has-property-descriptors: 1.0.2
       object-keys: 1.1.1
 
-  delayed-stream@1.0.0: {}
-
   delegate@3.2.0: {}
 
   depd@1.1.2: {}
@@ -7549,12 +7521,6 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  form-data@4.0.1:
-    dependencies:
-      asynckit: 0.4.0
-      combined-stream: 1.0.8
-      mime-types: 2.1.35
-
   forwarded@0.2.0: {}
 
   frac@1.1.2: {}
@@ -8696,8 +8662,6 @@ snapshots:
       forwarded: 0.2.0
       ipaddr.js: 1.9.1
 
-  proxy-from-env@1.1.0: {}
-
   prr@1.0.1:
     optional: true
 
@@ -9471,9 +9435,9 @@ snapshots:
       v-click-outside-x: 3.7.1
       vue: 2.7.16
 
-  vue-axios@3.5.2(axios@1.7.9)(vue@2.7.16):
+  vue-axios@3.5.2(axios@0.21.4)(vue@2.7.16):
     dependencies:
-      axios: 1.7.9
+      axios: 0.21.4
       vue: 2.7.16
 
   vue-clipboard2@0.3.3:

File diff ditekan karena terlalu besar
+ 1 - 1597
public/cdn/axios/1.0.0/axios.min.js


File diff ditekan karena terlalu besar
+ 0 - 0
public/cdn/axios/1.0.0/axios.min.map


+ 17 - 0
src/api/serviceManagement/servicesToBeReviewed/index.js

@@ -60,3 +60,20 @@ export function checkSingleApi(data) {
     data: data
   });
 }
+
+// 批量审核
+export function taskV2CheckBatchApi(data) {
+  return request({
+    url: ' /admin/task/v2/check/batch',
+    method: 'post',
+    data: data
+  });
+}
+
+// 获取积分包
+export function getPkgV2Api() {
+  return request({
+    url: ' /admin/pkg/avail',
+    method: 'get'
+  });
+}

+ 40 - 39
src/components/taskDetail/index.vue

@@ -4,7 +4,7 @@
     <!--    <img v-if="showImg" mode="widthFix" class="poster-img" :src="taskInfo.shareImgUrl" />-->
     <el-image v-if="showImg" style="width: 100px; height: 100px" :src="taskInfo.shareImgUrl" :preview-src-list="[taskInfo.shareImgUrl]"> </el-image>
     <template v-if="configList && configList.length > 0">
-      <div style="max-height: 270px;overflow: auto">
+      <div style="max-height: 270px; overflow: auto">
         <div v-for="item in configList" :key="item.id" class="field-box">
           <template v-if="item.taskFiledType == 'domain' || item.taskFiledType == 'select' || item.taskFiledType == 'tree'">
             <div class="title-value">{{ item.taskFiledValue }}:</div>
@@ -26,7 +26,7 @@
               {{ wmTaskContent[item.taskFiledKey] || '--' }}
             </div>
             <template v-if="getMapShow(item)">
-              <div id="container" style="width:100%; height:300px"></div>
+              <div id="container" style="width: 100%; height: 300px"></div>
             </template>
             <!-- 用temp17存储打卡图片 -->
             <div v-if="item.taskFiledType == 'mapwithimg' && !!wmTaskContent['temp17']" class="location-img">
@@ -51,10 +51,10 @@
             </div>
           </template>
           <!-- 签名 -->
-          <div v-if="item.taskFiledType == 'sign'" class="divline" style="width:100%; height: 15px;background-color:#E9E9E9;margin-bottom: 5px;"></div>
+          <div v-if="item.taskFiledType == 'sign'" class="divline" style="width: 100%; height: 15px; background-color: #e9e9e9; margin-bottom: 5px"></div>
           <template v-if="item.taskFiledType == 'sign'">
             <div class="upload-field">
-              <div class="field-text" :class="{required: item.isMustfill == '1'}">{{ item.taskFiledValue }}:</div>
+              <div class="field-text" :class="{ required: item.isMustfill == '1' }">{{ item.taskFiledValue }}:</div>
               <!-- 上传组件 -->
               <div class="img-box">
                 <el-image
@@ -68,10 +68,10 @@
             </div>
           </template>
           <!-- 图片上传 -->
-          <div v-if="item.taskFiledType == 'img'" class="divline" style="width:100%; height: 15px;background-color:#E9E9E9;margin-bottom: 5px;"></div>
+          <div v-if="item.taskFiledType == 'img'" class="divline" style="width: 100%; height: 15px; background-color: #e9e9e9; margin-bottom: 5px"></div>
           <template v-if="item.taskFiledType == 'img'">
             <div class="upload-field">
-              <div class="field-text" :class="{required: item.isMustfill == '1'}">
+              <div class="field-text" :class="{ required: item.isMustfill == '1' }">
                 {{ item.taskFiledValue }}:
                 <!-- {{ getImgList(wmTaskContent[item.taskFiledKey], item) }} -->
               </div>
@@ -87,7 +87,7 @@
           <!-- 文件类型 -->
           <template v-if="item.taskFiledType === 'fileurl'">
             <div class="upload-field">
-              <div class="field-text" :class="{required: item.isMustfill == '1'}">
+              <div class="field-text" :class="{ required: item.isMustfill == '1' }">
                 {{ item.taskFiledValue }}:
                 {{ getFileList(wmTaskContent[item.taskFiledKey], item) }}
               </div>
@@ -100,7 +100,12 @@
                       :key="index"
                       class="img-item"
                       :src="iItem.url"
-                      :preview-src-list="getPreviewList(item.fileList.map(ele => ele.url), index)"
+                      :preview-src-list="
+                        getPreviewList(
+                          item.fileList.map((ele) => ele.url),
+                          index
+                        )
+                      "
                     >
                     </el-image>
                   </template>
@@ -134,14 +139,14 @@
           <!-- 长文本 -->
           <template v-if="item.taskFiledType == 'longtext'">
             <div class="longtext-box">
-              <div class="field-text" :class="{required: item.isMustfill == '1'}">{{ item.taskFiledValue }}:</div>
+              <div class="field-text" :class="{ required: item.isMustfill == '1' }">{{ item.taskFiledValue }}:</div>
               <textarea class="textarea-box" :disabled="true" :value="wmTaskContent[item.taskFiledKey] || '--'" :maxlength="item.taskFiledMaxsize" @input="onInput" />
             </div>
           </template>
         </div>
       </div>
     </template>
-    <div style="padding:10px;font-size: 20px" v-else-if="taskTypeId == 8 || taskTypeId == 9 || taskTypeId == 10 || taskTypeId == 11">
+    <div style="padding: 10px; font-size: 20px" v-else-if="taskTypeId == 8 || taskTypeId == 9 || taskTypeId == 10 || taskTypeId == 11">
       <div v-if="taskInfo">转发时间: {{ taskInfo.createTime || '' }}</div>
       <div>文章标题:{{ title }}</div>
       <div>获得积分:+{{ score }}</div>
@@ -152,14 +157,10 @@
     </div>
     <div class="sign-in-box" v-if="taskTypeId == 5 || taskTypeId == 6 || taskTypeId == 33">
       <div v-for="(item, index) in signInLog" :key="index">
-        <div style="color: #2689ff;padding-bottom: 20px">
-          拜访记录:
-        </div>
+        <div style="color: #2689ff; padding-bottom: 20px">拜访记录:</div>
         <div>{{ item.signEntName }} {{ item.signDate }} 打卡</div>
         <template v-if="item.userSignDetail">
-          <div style="color: #2689ff;padding: 20px 0">
-            拜访明细:
-          </div>
+          <div style="color: #2689ff; padding: 20px 0">拜访明细:</div>
           <div class="detail-info">
             <ul>
               <li v-if="item.userSignDetail.drug.length > 0">
@@ -172,10 +173,10 @@
               <li
                 v-if="
                   item.signEntType == '1' &&
-                    item.userSignDetail &&
-                    item.userSignDetail.templateType !== 'TEMPLATE2' &&
-                    item.userSignDetail.detail &&
-                    item.userSignDetail.detail.length > 0
+                  item.userSignDetail &&
+                  item.userSignDetail.templateType !== 'TEMPLATE2' &&
+                  item.userSignDetail.detail &&
+                  item.userSignDetail.detail.length > 0
                 "
               >
                 <span>拜访科室:</span>
@@ -242,7 +243,7 @@ import commonApi from '@/api/taskDetail/common';
 import provinces from '@/util/lib/province';
 import citys from '@/util/lib/city';
 import areas from '@/util/lib/area';
-import {handleDown} from '@/util/util';
+import { handleDown } from '@/util/util';
 import request from '@/router/axios';
 
 export default {
@@ -358,7 +359,7 @@ export default {
       const convert = () => {
         // 将给定的地址转换为坐标位置
         const address = this.address;
-        this.geocoder.getLocation({address}).then(result => {
+        this.geocoder.getLocation({ address }).then((result) => {
           this.removeMarker();
           this.$nextTick(() => {
             this.markerLayer.updateGeometries([
@@ -409,7 +410,7 @@ export default {
     },
     // 如果为拜访类型,那么获取拜访的列表
     async getSignInfoByTaskId(id) {
-      const {data} = await taskApi.getSignInfoByTaskId({id});
+      const { data } = await taskApi.getSignInfoByTaskId({ id });
       this.signInLog = data.data;
     },
     // 获取地址
@@ -480,16 +481,16 @@ export default {
         let dArr = value.split(',');
         let descName = '';
         let descObj = {};
-        dArr.forEach(dItem => {
+        dArr.forEach((dItem) => {
           // 查找对应医院
           if (this.dictList.hospital_service && this.dictList.hospital_service.length > 0) {
-            descObj = this.dictList.hospital_service.find(hItem => {
+            descObj = this.dictList.hospital_service.find((hItem) => {
               return dItem == hItem.value;
             });
           }
           if (!descObj) {
             // 查找对应公司
-            descObj = this.dictList.distribution_service.find(hItem => {
+            descObj = this.dictList.distribution_service.find((hItem) => {
               return dItem == hItem.value;
             });
           }
@@ -509,8 +510,8 @@ export default {
         let resStr = '';
         if (!value) return '--';
         let vArr = value.split(',');
-        vArr.forEach(vItem => {
-          resItem = itemList.find(lItem => {
+        vArr.forEach((vItem) => {
+          resItem = itemList.find((lItem) => {
             return lItem.value == value;
           });
           if (resItem) {
@@ -543,16 +544,16 @@ export default {
       let dArr = value.split(',');
       let descName = '';
       let descObj = {};
-      dArr.forEach(dItem => {
+      dArr.forEach((dItem) => {
         // 查找对药企
         if (this.dictList.ent_service && this.dictList.ent_service.length > 0) {
-          descObj = this.dictList.ent_service.find(hItem => {
+          descObj = this.dictList.ent_service.find((hItem) => {
             return dItem == hItem.value;
           });
         }
         if (!descObj) {
           // 查找对应公司
-          descObj = this.dictList.distribution_service.find(hItem => {
+          descObj = this.dictList.distribution_service.find((hItem) => {
             return dItem == hItem.value;
           });
         }
@@ -579,7 +580,7 @@ export default {
       if (!uArr) return '';
       let imgList = [];
       let previewList = [];
-      uArr.forEach(uItem => {
+      uArr.forEach((uItem) => {
         let type = '无 ';
         if (uItem.includes(';1')) {
           type = '拍照';
@@ -606,7 +607,7 @@ export default {
       const parseFileList = JSON.parse(jsonStr);
       if (!parseFileList) return '';
       let fileList = [];
-      parseFileList.forEach(fileItem => {
+      parseFileList.forEach((fileItem) => {
         fileList.push({
           fileName: fileItem.fileName,
           url: process.env.VUE_APP_URL + fileItem.url
@@ -621,7 +622,7 @@ export default {
         url: item.url,
         method: 'get',
         responseType: 'blob'
-      }).then(response => {
+      }).then((response) => {
         // 处理返回的文件流
         const blob = response.data;
         const link = document.createElement('a');
@@ -629,7 +630,7 @@ export default {
         link.download = item.fileName;
         document.body.appendChild(link);
         link.click();
-        window.setTimeout(function() {
+        window.setTimeout(function () {
           URL.revokeObjectURL(blob);
           document.body.removeChild(link);
         }, 0);
@@ -639,7 +640,7 @@ export default {
     async getTaskInfoById(id) {
       try {
         const res = await taskApi.getTaskInfoById(id);
-        const {data} = res.data;
+        const { data } = res.data;
         this.wmTaskContent = data.wmTaskContent;
         this.taskInfo = data.taskInfo;
         this.title = data.title;
@@ -652,7 +653,7 @@ export default {
           this.$emit('getSurveyTaskInfoById', id);
         }
         let shareTypeArr = this.$enum.getValueDescList('SHARE_TYPE_ENUM');
-        let arr = shareTypeArr.map(item => {
+        let arr = shareTypeArr.map((item) => {
           return item.value;
         });
         if (arr.includes(Number(data.taskType))) {
@@ -689,10 +690,10 @@ export default {
       this.taskTypeId = value;
       try {
         let res = await commonApi.getTaskContentConfigByTaskTypeId(value);
-        let {config, dict} = res.data.data;
+        let { config, dict } = res.data.data;
         this.configList = config;
         this.dictList = dict;
-        this.configList.forEach(item => {
+        this.configList.forEach((item) => {
           item.taskFiledType = item.taskFiledType.trim();
           if (item.taskFiledType == 'img') {
             let imgArr = this.getImgList(this.wmTaskContent[item.taskFiledKey], item);

+ 4 - 67
src/views/serviceManagement/servicesToBeReviewed/components/TaskDetail.vue

@@ -16,7 +16,7 @@
           <template v-if="item.taskFiledType === 'area'">
             <div class="title-value">{{ item.taskFiledValue }}:</div>
             <div class="desc-value">
-              {{ getAddress(item) }}
+              {{ wmTaskContent[item.taskFiledKey] || '--' }}
             </div>
           </template>
           <!-- 文字输入 -->
@@ -105,49 +105,6 @@ export default {
   },
 
   methods: {
-    // 获取地址
-    getAddress(item) {
-      if (item.taskFiledType == 'area') {
-        let e = this.wmTaskContent[item.taskFiledKey];
-        if (!e) return '--';
-        let arr = e.split(',');
-        let provincesName = '';
-        let provincesIndex = '';
-        let cityName = '';
-        let cityIndex = '';
-        let areasName = '';
-        // 如果为数字,方形,不为数组则展示
-        var n = parseInt(arr[0]);
-        // 如果不为数字,则返回
-        if (isNaN(n)) {
-          return arr[0];
-        }
-        if (arr[0]) {
-          provinces.map((v, k) => {
-            if (v.value + '0000' == arr[0]) {
-              provincesName = v.label;
-              provincesIndex = k;
-            }
-          });
-        }
-        if (arr[1]) {
-          citys[provincesIndex].map((v, k) => {
-            if (v.value + '00' == arr[1]) {
-              cityName = v.label;
-              cityIndex = k;
-            }
-          });
-        }
-        if (arr[2]) {
-          areas[provincesIndex][cityIndex].map((v, k) => {
-            if (v.value == arr[2]) {
-              areasName = v.label;
-            }
-          });
-        }
-        return `${provincesName}-${cityName}-${areasName}`;
-      }
-    },
     // 获取详情
     getDesc(item) {
       // 拜访类任务
@@ -213,26 +170,6 @@ export default {
       return [imgList, previewList];
     },
 
-    // 下载文件
-    downloadFn(item) {
-      request({
-        url: item.url,
-        method: 'get',
-        responseType: 'blob'
-      }).then((response) => {
-        // 处理返回的文件流
-        const blob = response.data;
-        const link = document.createElement('a');
-        link.href = URL.createObjectURL(blob);
-        link.download = item.fileName;
-        document.body.appendChild(link);
-        link.click();
-        window.setTimeout(function () {
-          URL.revokeObjectURL(blob);
-          document.body.removeChild(link);
-        }, 0);
-      });
-    },
     // 获取任务详情
     async getTaskInfoById(id) {
       try {
@@ -273,10 +210,10 @@ export default {
     },
     getInfo(id) {
       this.getTaskInfoById(id);
+    },
+    mounted() {
+      this.getTaskInfoById(this.id);
     }
-  },
-  mounted() {
-    //
   }
 };
 </script>

+ 67 - 15
src/views/serviceManagement/servicesToBeReviewed/index.vue

@@ -70,6 +70,13 @@
               </el-select>
             </el-form-item>
           </el-col>
+          <el-col :span="6">
+            <el-form-item label="上游服务包名称">
+              <el-select v-model="searchFrom.pkgIds" placeholder="请选择省份" class="w100" clearable filterable>
+                <el-option v-for="(item, index) in relPkgNameArr" :key="index" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+          </el-col>
           <el-col :span="2">
             <div class="search-btns">
               <el-button type="success" @click="clickBtn">搜索</el-button>
@@ -108,6 +115,7 @@
         <vxe-table-column type="seq" title="序号" width="100"></vxe-table-column>
         <vxe-table-column field="taskNumber" title="服务编号" width="200"></vxe-table-column>
         <vxe-table-column field="cycle" title="服务包周期" width="200"> </vxe-table-column>
+        <vxe-table-column field="relPkgName" title="上游服务包名称" width="200"> </vxe-table-column>
         <vxe-table-column field="pkgName" title="服务包名称" width="200"></vxe-table-column>
         <vxe-table-column field="taskTypeName" title="服务类型" width="200"></vxe-table-column>
         <vxe-table-column field="taskScore" title="服务分值" width="100"></vxe-table-column>
@@ -141,7 +149,7 @@
 
     <!-- 审核弹窗 -->
     <el-dialog title="审核" :close-on-click-modal="false" :visible.sync="reviewDialog" top="12vh" width="50%" :before-close="handleClose" center>
-      <div class="reviewContent">
+      <div class="reviewContent" v-loading="loading">
         <div class="check-tips">审核令牌有效期为3分钟,请在【{{ expireTime }}】前完成审核操作,如果失效,请重新打开弹窗。</div>
         <div class="review-detail" v-if="singleFlag">
           <div class="teskDetailsty">服务详情</div>
@@ -175,7 +183,7 @@
       </div>
       <span slot="footer" class="dialog-footer">
         <el-button @click="handleClose">取 消</el-button>
-        <el-button type="primary" @click="checkForm">确 定</el-button>
+        <el-button type="primary" @click="checkForm" v-loading="loading">确 定</el-button>
       </span>
     </el-dialog>
   </basic-container>
@@ -189,7 +197,9 @@ import {
   getDrug2Avail,
   getUserV2Avail,
   getTaskV2TokenApi,
-  checkSingleApi
+  checkSingleApi,
+  taskV2CheckBatchApi,
+  getPkgV2Api
 } from '@/api/serviceManagement/servicesToBeReviewed/index.js';
 import { tableOptin } from './index.js';
 import { getDictType } from '@/api/common';
@@ -214,6 +224,8 @@ export default {
       drugListArr: [],
       userListArr: [],
       currDrugList: [],
+      relPkgNameArr: {},
+      searchLoading: false,
       drugDisabled: true,
       abbreviationsProvincesList: abbreviationsProvinces,
       nodeId: '',
@@ -227,6 +239,7 @@ export default {
         vendorId: '',
         salesId: '',
         skuId: '',
+        pkgIds: '',
         taskStatus: 3
       },
       totalNum: 0,
@@ -247,6 +260,7 @@ export default {
       },
       singleFlag: false,
       checkIds: [],
+      loading: false,
       currentTaskId: '',
       reviewToken: '',
       expireTime: ''
@@ -315,12 +329,26 @@ export default {
       getUserV2Avail().then((res) => {
         this.userListArr = res.data.data;
       });
-
       getDrug2Avail().then((res) => {
         this.drugListArr = res.data.data;
       });
+      getPkgV2Api().then((res) => {
+        let arr = [];
+        let data = res.data.data;
+        for (let key in data) {
+          let obj = {
+            label: key,
+            value: data[key]
+          };
+          arr.push(obj);
+        }
+
+        this.relPkgNameArr = arr;
+      });
     },
     async getList() {
+      this.totalNum = 0;
+      this.totalScore = 0;
       this.tableLoading = true;
       const obj = Object.assign(
         {
@@ -359,6 +387,7 @@ export default {
         vendorId: '',
         salesId: '',
         skuId: '',
+        pkgIds: '',
         taskStatus: 3
       };
       this.searchFrom.nodeId = this.nodeId;
@@ -409,12 +438,8 @@ export default {
     },
     async reviewBtn(row) {
       this.currentTaskId = row.taskId;
-      const tokenRes = await getTaskV2TokenApi({ taskIds: [row.taskId] });
-      if (tokenRes.data.code !== 0 || !tokenRes.data.data?.token) {
-        return this.$message.error('获取token失败');
-      }
-      this.reviewToken = tokenRes.data.data.token;
-      this.expireTime = tokenRes.data.data.expireTime;
+
+      await this.getToken([row.taskId]);
       this.reviewDialog = true;
       this.singleFlag = true;
 
@@ -446,11 +471,21 @@ export default {
       });
     },
 
-    allClick() {
+    async getToken(taskIds) {
+      const tokenRes = await getTaskV2TokenApi({ taskIds: taskIds });
+      if (tokenRes.data.code !== 0 || !tokenRes.data.data?.token) {
+        return this.$message.error('获取token失败');
+      }
+      this.reviewToken = tokenRes.data.data.token;
+      this.expireTime = tokenRes.data.data.expireTime;
+    },
+
+    async allClick() {
       if (!this.checkIds.length) {
         return this.$message.error('请选择待审核数据');
       }
       this.singleFlag = false;
+      await this.getToken(this.checkIds);
       this.reviewDialog = true;
     },
     // 快捷审核
@@ -503,12 +538,29 @@ export default {
           nodeId: nodeId
         };
         res = await checkSingleApi(obj);
-        if (res.data.code === 0 && res.data.data) {
-          this.$message.success('审核成功!');
-          this.getList();
-          this.handleClose();
+      } else {
+        this.loading = true;
+        let obj = {
+          token: this.reviewToken,
+          taskIds: this.checkIds,
+          checkResult: this.taskForm.checkResult,
+          checkMessage: this.taskForm.checkMessage,
+          nodeId: nodeId
+        };
+        try {
+          res = await taskV2CheckBatchApi(obj);
+          this.loading = false;
+        } catch (err) {
+          this.loading = false;
+          console.log('err', err);
         }
       }
+
+      if (res.data.code === 0 && res.data.data) {
+        this.$message.success('审核成功!');
+        this.getList();
+        this.handleClose();
+      }
     }
   }
 };

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini