Procházet zdrojové kódy

主管任务审批

zhujindu před 6 měsíci
rodič
revize
f89cf92f84

+ 10 - 1
src/api/SUPTaskApproval.js

@@ -1,6 +1,6 @@
 import request from '@/utils/request';
 
-// 获取拜访照片AI识别异常,待审批列表。 失败异常照片需要部主管审批
+// 主管审批列表接口
 export function getSummaryApprovalList(query) {
   return request({
     url: '/mobile/summaryMobile/getSummaryApprovalList',
@@ -8,3 +8,12 @@ export function getSummaryApprovalList(query) {
     params: query,
   });
 }
+
+// 主管任务审批接口
+export function changeApproval(data) {
+  return request({
+    url: '/mobile/summaryMobile/changeApproval',
+    method: 'post',
+    data,
+  });
+}

+ 7 - 1
src/views/week/SUPTaskApproval/index.vue

@@ -36,6 +36,7 @@ export default {
     };
   },
   created() {
+    this.tabVal = this.$route.query.tabVal || '1';
     this.getApprovalList();
   },
   methods: {
@@ -67,7 +68,12 @@ export default {
     approveFn(row) {
       this.$router.push({
         path: '/VisitSummaryDetail',
-        query: { userSummaryId: row.userSummaryId },
+        query: {
+          userSummaryId: row.userSummaryId,
+          summaryApprovalId: row.summaryApprovalId,
+          source: 'SUPTaskApproval',
+          approvalType: this.tabVal,
+        },
       });
     },
   },

+ 7 - 7
src/views/week/VisitSummary.vue

@@ -75,10 +75,10 @@
               <div class="info">提交时间:{{ item.createTime }}</div>
             </div>
           </van-cell>
-          <div class="approvalStatusBtn">
-            <van-button type="primary">主要按钮</van-button>
-            <!-- <van-button type="info">信息按钮</van-button>
-            <van-button color="red">危险按钮</van-button> -->
+          <div class="approvalStatusBtn" v-if="item.approvalStatus">
+            <van-button type="primary" v-if="item.approvalStatus == '2'">审批通过</van-button>
+            <van-button type="info" v-if="item.approvalStatus == '1'">提交待审批</van-button>
+            <van-button color="red" v-if="item.approvalStatus == '3'">拒绝待提交</van-button>
           </div>
         </div>
         <van-empty v-if="list.length == 0" />
@@ -341,7 +341,7 @@ export default {
       this.formData.regionId = this.regionCode; // 大区id,必传  Long类型
       this.formData.deptId = this.deptCode; // 部门id,如果为周报或日报为必传  Long类型
       this.formData.userId = this.userCode; // 业务员id,如果为日报为必传      Long类型
-      this.formData.approvalStatus = this.approvalStatus.value; // 业务员id,如果为日报为必传      Long类型
+      this.formData.approvalStatus = this.approvalStatus.value;
       queryHistorySummaryList(this.formData).then((res) => {
         loading1.clear();
         if (res.code == 200) {
@@ -485,7 +485,7 @@ export default {
     dailyFn(row) {
       this.$router.push({
         path: '/VisitSummaryDetail',
-        query: { userSummaryId: row.userSummaryId },
+        query: { userSummaryId: row.userSummaryId, source: 'VisitSummary' },
       });
     },
     onClickLeft() {
@@ -678,7 +678,7 @@ export default {
   }
   .approvalStatusBtn {
     position: absolute;
-    top: 10px;
+    bottom: 17px;
     right: 10px;
   }
 }

+ 63 - 37
src/views/week/VisitSummaryDetail.vue

@@ -1,5 +1,5 @@
 <template>
-  <div>
+  <div v-if="info">
     <!--        顶部条-->
     <div class="navBarTOP">
       <van-nav-bar
@@ -43,10 +43,11 @@
       style="background-color: #fff; width: 94%; margin: 0px auto; border-radius: 6px">
       <componVisitSummary
         :collectionItemLists="collectionItemLists"
+        :approvalStatus="info.approvalStatus"
         ref="componVisitSummary"></componVisitSummary>
     </div>
     <br />
-    <div class="approvalRemarh">
+    <div class="approvalRemarh" v-if="source == 'SUPTaskApproval' && approvalType == '1'">
       <div class="approvalLabel">审批意见</div>
       <div class="remark">
         <van-field
@@ -56,15 +57,26 @@
           placeholder="请输入审批意见" />
       </div>
     </div>
-    <div class="bottomBtn">
-      <van-button color="red" round @click="approvalStoreFun('Nopass')">拒绝</van-button>
-      <van-button type="primary" round @click="approvalStoreFun('pass')">通过</van-button>
-    </div>
-    <div class="tc" style="padding: 0 16px" v-if="writeAgain">
-      <van-button class="submitBtn" block type="info" color="#0057ba" @click="onSubmit">
-        补填保存
-      </van-button>
-    </div>
+    <!-- 从查询列表来 -->
+    <!-- approvalStatus//1-待审批 2-审批通过 3-拒绝待提交 -->
+    <template v-if="source == 'VisitSummary'">
+      <div class="tc" style="padding: 0 16px" v-if="writeAgain && !info.approvalStatus">
+        <van-button class="submitBtn" block type="info" color="#0057ba" @click="onSubmit">
+          补填保存
+        </van-button>
+      </div>
+      <div class="tc" style="padding: 0 16px" v-if="info.approvalStatus == '3'">
+        <van-button class="submitBtn" block type="info" color="#0057ba" @click="onSubmit">
+          提交审批
+        </van-button>
+      </div>
+    </template>
+    <template v-if="source == 'SUPTaskApproval' && approvalType == '1'">
+      <div class="bottomBtn">
+        <van-button color="red" round @click="approvalStoreFun('Nopass')">拒绝</van-button>
+        <van-button type="primary" round @click="approvalStoreFun('pass')">通过</van-button>
+      </div>
+    </template>
     <br />
     <br />
     <br />
@@ -81,12 +93,13 @@ import { ImagePreview } from 'vant';
 import deleteUploadImg from '@/components/deleteUploadImg';
 import componVisitSummary from '@/views/week/componVisitSummary';
 import { writeAgainCustomAnswer } from '@/api/week';
+import { changeApproval } from '@/api/SUPTaskApproval.js';
 export default {
   name: 'daily',
   components: { deleteUploadImg, componVisitSummary },
   data() {
     return {
-      info: {},
+      info: null,
       zw: zw,
       tm: tm,
       ry: ry,
@@ -111,10 +124,14 @@ export default {
       collectionItemLists: [],
       writeAgain: false,
       approvalMessage: '',
+      source: '',
+      approvalType: '',
       //
     };
   },
   activated() {
+    this.source = this.$route.query.source || '';
+    this.approvalType = this.$route.query.approvalType || '';
     this.powerGrade = localStorage.getItem('powerGrade');
     this.getDetailById();
     this.num = 0;
@@ -190,9 +207,18 @@ export default {
       // });
     },
     onClickLeft() {
-      this.$router.replace({
-        path: '/VisitSummary',
-      });
+      if (this.source == 'SUPTaskApproval') {
+        this.$router.replace({
+          path: '/SUPTaskApproval',
+          query: {
+            tabVal: this.approvalType,
+          },
+        });
+      } else {
+        this.$router.replace({
+          path: '/VisitSummary',
+        });
+      }
     },
     onSubmit() {
       let collectionAnswerlisd = this.$refs.componVisitSummary.collectionAnswerlisd;
@@ -236,31 +262,30 @@ export default {
     },
     approvalStoreFun(type) {
       if (type == 'pass') {
-        for (var c = 0; c < this.collectionAnswerlisd.length; c++) {
-          for (var b = 0; b < this.collectionItemList.length; b++) {
-            if (this.collectionAnswerlisd[c].id == this.collectionItemList[b].customId) {
-              this.collectionItemList[b].customOptionList = this.collectionAnswerlisd[c].value;
-            }
-          }
+        this.changeApprovalFun('1');
+      } else {
+        if (this.approvalMessage != '') {
+          this.changeApprovalFun('2');
+        } else {
+          this.$notify({ type: 'warning', message: '请输入审批意见' });
         }
-        if (this.flagclick) {
-          this.flagclick = false;
-          this.timer = null;
-          this.timer = setTimeout(() => {
-            this.flagclick = true;
-          }, 2000);
-          insertCustomAnswer({
-            userSummaryId: this.userSummaryId, //	Long	用户总结id,如果为新增则不填,编辑则必填
-            summaryId: this.summaryId, //Long	主管任务id
-            customItemList: this.collectionItemList, //List<Object>	答案列表
-          }).then((res) => {
-            if (res.code == 200) {
-              this.$router.go(-1);
-            }
+      }
+    },
+    changeApprovalFun(approvalStatus) {
+      this.toastLoading(0, '加载中...', true);
+      changeApproval({
+        summaryApprovalId: this.$route.query.summaryApprovalId || '', //	Long	主管任务审批id
+        userSummaryId: this.$route.query.userSummaryId, //	Long	主管任务填写主键id
+        approvalStatus: approvalStatus, //	string	审批状态:1-通过 2-拒绝
+        approvalOpinion: this.approvalMessage, //	string	审批意见,如果审批状态为拒绝则不能为空
+      }).then((res) => {
+        this.toastLoading().clear();
+        if (res.code == 200) {
+          this.$router.replace({
+            path: '/SUPTaskApproval',
           });
         }
-      } else {
-      }
+      });
     },
   },
 };
@@ -332,6 +357,7 @@ export default {
   width: 94%;
   margin: 0px auto;
   border-radius: 6px;
+  margin-bottom: 40px;
   .approvalLabel {
     font-size: 14px;
     padding: 5px 0;

+ 79 - 14
src/views/week/componVisitSummary.vue

@@ -78,20 +78,81 @@
             {{ item.remark }}
           </p>
         </div>
-        <div
-          class="formLabel z-cell z-cells z-celly"
-          v-if="item.answerType == 'gs' || item.answerType == 'dq' || item.answerType == 'xsb'">
-          <van-cell>
-            <template #title
-              >{{ index + 1 }}.{{ item.customName }}
-              <span
-                style="color: #444; font-size: 12px; margin: 0; padding: 10px 0; text-align: right"
-                >{{ item.remark }}</span
-              ></template
-            >
-          </van-cell>
-          <p class="mg0">{{ item.answerValue }}</p>
-        </div>
+        <template v-if="approvalStatus == '3'">
+          <div v-if="item.answerType == 'gs'" class="formLabel z-cell" @click="regionClick(index)">
+            <van-cell>
+              <template #title>
+                <span v-if="item.isMust == 0" class="van-f-red">*</span>{{ item.customName }}
+              </template>
+            </van-cell>
+            <van-field
+              readonly
+              v-model="item.answerValue"
+              :formatter="formatter"
+              :placeholder="item.customName"></van-field>
+            <p style="color: #444; font-size: 12px; margin: 0; padding: 10px 0; text-align: right">
+              {{ item.remark }}
+            </p>
+          </div>
+          <div
+            v-if="item.answerType == 'dq'"
+            class="formLabel z-cell"
+            @click="SalesRegionClick(index)">
+            <van-cell>
+              <template #title>
+                <span v-if="item.isMust == 0" class="van-f-red">*</span>{{ item.customName }}
+              </template>
+            </van-cell>
+            <van-field
+              readonly
+              v-model="item.answerValue"
+              :formatter="formatter"
+              :placeholder="item.customName"></van-field>
+            <p style="color: #444; font-size: 12px; margin: 0; padding: 10px 0; text-align: right">
+              {{ item.remark }}
+            </p>
+          </div>
+          <div
+            v-if="item.answerType == 'xsb'"
+            class="formLabel z-cell"
+            @click="SalesDepartmentClick(index)">
+            <van-cell>
+              <template #title>
+                <span v-if="item.isMust == 0" class="van-f-red">*</span>{{ item.customName }}
+              </template>
+            </van-cell>
+            <van-field
+              readonly
+              v-model="item.answerValue"
+              :formatter="formatter"
+              :placeholder="item.customName"></van-field>
+            <p style="color: #444; font-size: 12px; margin: 0; padding: 10px 0; text-align: right">
+              {{ item.remark }}
+            </p>
+          </div>
+        </template>
+        <template v-else>
+          <div
+            class="formLabel z-cell z-cells z-celly"
+            v-if="item.answerType == 'gs' || item.answerType == 'dq' || item.answerType == 'xsb'">
+            <van-cell>
+              <template #title
+                >{{ index + 1 }}.{{ item.customName }}
+                <span
+                  style="
+                    color: #444;
+                    font-size: 12px;
+                    margin: 0;
+                    padding: 10px 0;
+                    text-align: right;
+                  "
+                  >{{ item.remark }}</span
+                ></template
+              >
+            </van-cell>
+            <p class="mg0">{{ item.answerValue }}</p>
+          </div>
+        </template>
         <div v-if="item.answerType == 'duox'" class="formLabel z-cell">
           <van-cell>
             <template #title>
@@ -196,6 +257,10 @@ export default {
         return [];
       },
     },
+    approvalStatus: {
+      type: String,
+      default: '',
+    },
   },
   data() {
     return {