Prechádzať zdrojové kódy

Merge branch 'feature_20250415_公装主管任务' into uat(dev)

zhujindu 8 mesiacov pred
rodič
commit
3e80c011ae

+ 0 - 1
src/api/index.js

@@ -565,7 +565,6 @@ export function getSummaryMobilo(query) {
   return request({
     url: '/mobile/summaryMobile/' + query.userSummaryId,
     method: 'get',
-    params: query,
   });
 }
 

+ 8 - 0
src/api/week.js

@@ -17,3 +17,11 @@ export function setPhotoMethod(query) {
     params: query,
   });
 }
+
+export function writeAgainCustomAnswer(data) {
+  return request({
+    url: '/mobile/summaryMobile/writeAgainCustomAnswer',
+    method: 'post',
+    data,
+  });
+}

+ 42 - 33
src/components/zCheckbox2.vue

@@ -3,8 +3,12 @@
     <div>
       <div class="checkbox">
         <van-checkbox-group v-model="zSelectValuec" @change="checkboxclick">
-          <van-checkbox :name="item.customOptionId+''" v-for="(item,index) in zCheckboxcolumns" :key="index"
-                        shape="square">{{ item.customOption }}
+          <van-checkbox
+            :name="item.customOptionId + ''"
+            v-for="(item, index) in zCheckboxcolumns"
+            :key="index"
+            shape="square"
+            >{{ item.customOption }}
           </van-checkbox>
         </van-checkbox-group>
       </div>
@@ -14,59 +18,65 @@
 
 <script>
 export default {
-  name: "zSelect",
+  name: 'zSelect',
   props: {
     zCheckboxcolumns: [],
-    checkboxval: "",
-    textc: "",
+    checkboxval: '',
+    textc: '',
     rules: false,
-    answerType: "",
-    collectionType: ""
+    answerType: '',
+    collectionType: '',
   },
   data() {
     return {
       zSelect: false,
-      zSelectValuec: ""
-    }
+      zSelectValuec: '',
+    };
   },
   created() {
-
-    this.checkboxvalFn()
+    this.checkboxvalFn();
   },
   methods: {
     checkboxvalFn() {
-      if (this.checkboxval == "" || this.checkboxval == undefined) {
-        this.zSelectValuec = []
+      if (this.checkboxval == '' || this.checkboxval == undefined) {
+        this.zSelectValuec = [];
       } else {
-        this.zSelectValuec = this.checkboxval.split(",")
+        this.zSelectValuec = this.checkboxval.split(',');
       }
     },
     checkboxclick(value) {
-      var typeval = [...this.zCheckboxcolumns]
-      for (var k = 0; k < typeval.length; k++) {
-        for (var kk = 0; kk < value.length; kk++) {
-          if (typeval[k].customOptionId == value[kk]) {
-            typeval[k].value="Y"
-          }
+      var typeval = [...this.zCheckboxcolumns];
+      typeval.forEach((item) => {
+        if (value.includes(item.customOptionId + '')) {
+          item.value = 'Y';
+        } else {
+          item.value = 'N';
         }
-      }
+      });
+      // for (var k = 0; k < typeval.length; k++) {
+      //   for (var kk = 0; kk < value.length; kk++) {
+      //     if (typeval[k].customOptionId == value[kk]) {
+      //       typeval[k].value = 'Y';
+      //     }
+      //   }
+      // }
       let datalist = {
         id: this.textc,
-        value: typeval
-      }
-      this.zSelectValuec = value
-      this.$emit('zSelectVal', datalist)
-      this.zSelect = false
-    }
-  }
-}
+        value: typeval,
+      };
+      this.zSelectValuec = value;
+      this.$emit('zSelectVal', datalist);
+      this.zSelect = false;
+    },
+  },
+};
 </script>
 
 <style scoped>
 .van-f-red {
   color: red;
   width: 4px;
-  display: inline-block
+  display: inline-block;
 }
 
 .zSelect .z-cell {
@@ -76,9 +86,8 @@ export default {
 
 /*.checkbox{padding: 10px 16px 0 16px;background-color: white;}*/
 .checkbox .van-checkbox {
-  padding-bottom: 10px
+  padding-bottom: 10px;
 }
-
 </style>
 <style>
 .checkbox .van-checkbox__icon .van-icon {
@@ -90,4 +99,4 @@ export default {
   color: #1989fa;
   background-color: #fff;
 }
-</style>
+</style>

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 444 - 350
src/views/week/VisitSummaryAdd.vue


+ 360 - 0
src/views/week/VisitSummaryDetail copy.vue

@@ -0,0 +1,360 @@
+<template>
+  <div>
+    <!--        顶部条-->
+    <div class="navBarTOP">
+      <van-nav-bar class="navBar" :title="info.summaryTaskName" left-arrow @click-left="onClickLeft"/>
+      <!--      <p style="text-align: right;margin-right: 16px;color: #1e5398;">{{title}}</p>-->
+    </div>
+    <div class="lineGrey"></div>
+    <div class="lineGrey"></div>
+    <div class="lineGrey"></div>
+    <div class="lineGrey"></div>
+    <div class="lineGrey"></div>
+    <div class="lineGrey" style="height:6px;"></div>
+    <!--        主体内容-->
+    <div class="container linep" style="background-color: #fff;width: 94%; margin: 0px auto; border-radius: 6px;padding: 10px">
+      <div style="padding:4px 0">
+        <van-icon :name="ry" size="16"  style="float: left"/>
+        <span>&nbsp;{{info.nickName}} - {{info.postName}}</span>
+      </div>
+      <div style="padding:4px 0">
+        <van-icon :name="zw" size="16" style="float: left"/>
+        <span >&nbsp;所属部门:{{info.deptName}}</span>
+      </div>
+      <div style="padding:4px 0">
+        <van-icon :name="tm" size="16"  style="float: left"/>
+        <span >&nbsp;提交时间:{{info.createTime}}</span>
+      </div>
+    </div>
+    <div class="lineGrey"></div>
+    <div class="container linep" style="background-color: #fff;width: 94%; margin: 0px auto; border-radius: 6px;">
+      <van-form ref="tabstoreVal">
+        <div v-for="(item,index) in info.customItemList" :key="index">
+          <div class="formLabel z-cell z-cells z-celly" v-if="item.answerType=='sz' || item.answerType=='rq'||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>
+          <div class="formLabel z-cell z-cells z-celly" v-if="item.answerType=='zp'">
+            <van-cell>
+              <template #title>{{ index + 1 }}.{{ item.customName }}</template>
+            </van-cell>
+            <delete-upload-img :imgs="item.fileInfoList"></delete-upload-img>
+          </div>
+          <div class="formLabel z-cell z-cells z-celly" v-if="item.answerType=='wb'">
+            <van-cell>
+              <template #title>{{ index + 1 }}.{{ item.customName }}</template>
+            </van-cell>
+            <div class="selesetText">
+              <p class="mg0">{{ item.answerValue }}</p>
+            </div>
+            <p style="color: #444;font-size: 12px;margin: 0;padding:10px 0;text-align: right">{{ item.remark }}</p>
+            <delete-upload-img :imgs="item.fileInfoList"></delete-upload-img>
+          </div>
+          <div class="formLabel z-cell z-cells z-celly" v-if="item.answerType=='duox'">
+            <van-cell>
+              <template #title>{{ index + 1 }}.{{ item.customName }}</template>
+            </van-cell>
+            <div class="selesetText">
+              <div class="mg0" v-for="(item1,index1) in item.customOptionList" :key="index1">
+              <p style="color:#0057ba" v-if="item1.checked">
+                <i style="border: 1px solid #0057ba;margin-right: 10px;border-radius:2px;padding: 2px" class="van-icon van-icon-success"></i>
+                <span >{{ item1.customOption }}</span>
+              </p>
+              <p v-if="!item1.checked">
+                <i style="border: 1px solid #ccc;margin-right: 10px;border-radius:2px;color:#fff;padding: 2px" class="van-icon van-icon-success"></i>
+                <span >{{ item1.customOption }}</span>
+              </p>
+              </div>
+            </div>
+          </div>
+          <div class="formLabel z-cell z-cells z-celly" v-if="item.answerType=='dx'">
+            <van-cell>
+              <template #title>
+                {{ index + 1 }}.{{ item.customName }}
+              </template>
+            </van-cell>
+            <div class="selesetText">
+              <div class="mg0" v-for="(item2,index2) in item.customOptionList" :key="index2">
+                <p style="color:#0057ba" v-if="item2.checked">
+                  <i style="border: 1px solid #0057ba;border-radius:40px;margin-right: 10px;padding: 2px" class="van-icon van-icon-success"></i>
+                  <span >{{ item2.customOption }}</span>
+                </p>
+                <p v-if="!item2.checked">
+                  <i style="border: 1px solid #ccc;border-radius:40px;margin-right: 10px;color:#fff;padding: 2px" class="van-icon van-icon-success"></i>
+                  <span >{{ item2.customOption }}</span>
+                </p>
+              </div>
+            </div>
+            <delete-upload-img :imgs="item.fileInfoList"></delete-upload-img>
+          </div>
+        </div>
+      </van-form>
+
+    </div>
+    <br>
+    <br>
+    <br>
+  </div>
+</template>
+
+<script>
+import history from "@/assets/Icon/history.png";
+import tm from "@/assets/Icon/tm.png";
+import zw from "@/assets/Icon/zw.png";
+import ry from "@/assets/Icon/ry.png";
+import {getSummaryMobilo} from "@/api/index";
+import {ImagePreview} from "vant";
+import deleteUploadImg from "@/components/deleteUploadImg";
+export default {
+  name: "daily",
+  components: {deleteUploadImg},
+  data() {
+    return {
+      info:{},
+      zw:zw,
+      tm:tm,
+      ry:ry,
+      show: true,
+      num: 0,
+      todayGoal: {},
+      progressWidth: 0,
+      history: history,
+      imgArr: [],
+      activeNames: ['1', '2', '3', '4', '5', '6', '7', '8', '10',"16","17"],
+      value: "2",
+      message: "",
+      powerGrade:"",
+      Content:"",
+      Content2:"",
+      reportTargetAll:{},
+      reportContents:[{dayContent:""}],
+      reportTarget:{},
+      successContent:"",
+      imgList:[],
+      type:"-1"
+      //
+    }
+  },
+  created() {
+    this.powerGrade= localStorage.getItem("powerGrade")
+    this.getDetailById()
+  },
+  watch:{
+    $route(to,from){
+      this.powerGrade= localStorage.getItem("powerGrade")
+      if(to.path=="/dailyDetails"){
+        this.getDetailById()
+      }
+      // &&from.path=="/dailyApprovalList"
+      // if(to.path=="/dailyDetails"&&from.path=="/myHistoricalDaily"){
+      //   this.getDetailById()
+      // }
+    }
+  },
+  activated() {
+    this.num = 0;
+    this.userTodayPlanNum()
+  },
+  methods: {
+    pviewFn(val,imgVal){
+      var imgList=[]
+      var photos=this.reportTarget.photos[val].photos
+      for(let i=0;i<photos.length;i++){imgList.push(photos[i].fileUrl)};
+      ImagePreview({images: imgList, startPosition: imgVal});
+    },
+    submint(){
+      this.$router.push({
+        path: "/daily",
+        query: {reportId:this.$route.query.reportId,temporaryShow:"N"}
+      })
+    },
+    getDetailById(){
+      let loading1=this.$toast.loading({
+        duration: 0,
+        message: '加载中...',
+        forbidClick: true,
+      });
+      getSummaryMobilo({userSummaryId:this.$route.query.userSummaryId}).then(res=>{
+        loading1.clear()
+        this.reportTargetAll=res.data.reportTargetAll
+        this.info=res.data
+        this.type=res.data.userType
+        if(res.data.status==3){
+          this.successContent=res.data.successContent
+        }else{
+          this.successContent=res.data.failContent
+        }
+        if(res.data.reportContents.length>0){
+          this.Content=res.data.reportContents[0].dayContent
+          if(res.data.reportContents.length>1){
+            this.Content2=res.data.reportContents[1].dayContent
+          }else{
+            this.Content2=""
+          }
+        }else{
+          this.Content=""
+          this.Content2=""
+        }
+        this.reportContents=res.data.reportContents
+        var imgList=[]
+        if(res.data.photos!=null){
+          for(var k=0;k<res.data.photos.length;k++){
+            imgList.push(res.data.photos[k].fileUrl+"")
+          }
+        }
+        this.imgList=imgList
+      })
+    },
+    userTodayPlanNum() {
+      userTodayPlanNum().then(res => {
+        if (res.code == 200) {
+          this.todayGoal = res.data
+          this.progressWidth = (this.todayGoal.finishNum / this.todayGoal.planNum) * 100 + "%"
+          localStorage.setItem("nickName", res.data.user.nickName)
+          localStorage.setItem("storeType", res.data.user.type)
+        } else {
+          this.$toast.fail(res.msg)
+        }
+      })
+    },
+    onClickLeft() {
+      this.$router.go(-1)
+    }
+  }
+}
+</script>
+<style scoped>
+.container {
+  background-color: white;
+}
+
+.van-f-red {
+  color: red;
+  width: 8px;
+  display: inline-block;
+  line-height: 26px;
+}
+
+.formLabel {
+  margin: 0 16px;
+  border-bottom: 1px solid #f1f1f1
+}
+
+.formLabel .van-cell {
+  padding: 10px 0
+}
+
+.formLabel .van-cell::after {
+  border: 0
+}
+
+.formLabel .van-field {
+  border: 1px solid #f1f1f1;
+  padding: 6px;
+  width: 100%;
+  border-radius: 4px;
+  overflow: hidden
+}
+
+.formLabel .van-field__control {
+  padding: 0 10px
+}
+
+.formLabel .formLabeltitle {
+  position: absolute;
+  top: 8px;
+}
+
+.z-checkbox .van-radio {
+  padding: 6px 0;
+}
+.z-celly .van-cell__title{
+  font-weight: initial;
+  font-size: 14px;
+}
+</style>
+<style>
+.table-headermd {
+  font-size: 1.2rem;
+  text-align: center;
+  position: initial;
+  width: 94% !important;
+  margin: 0 auto;
+  border-right: 0;
+}
+
+.table-headermd .el-table__header,
+.table-headermd .el-table__body {
+  width: 100% !important;
+}
+
+.table-headermd col {
+  width: 5.8rem;
+}
+
+.table-headermd col:nth-child(2),
+.table-headermd col:nth-child(4),
+.table-headermd col:nth-child(3) {
+  width: 5rem;
+}
+
+.table-headermd .van-cell {
+  padding: 0 4px;
+  height: 100%
+}
+
+.table-headermd th.el-table__cell > .cell {
+  padding: 0 4px
+}
+
+.table-headermd th.el-table__cell {
+  background-color: #1989fa;
+  color: #fff;
+}
+
+.table-headermd .el-table__cell {
+  padding: 4px 0;
+}
+
+.table-headermd .tipTitle {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  display: -webkit-box;
+  -webkit-box-orient: vertical;
+  -webkit-line-clamp: 2;
+}
+
+.table-headermd::before {
+  height: 0
+}
+
+.f-right {
+  text-align: right;
+  margin: 0
+}
+
+.mg0 {
+  margin: 6px 10px;
+  color: #909090;
+  font-size: 14px;
+}
+
+.selesetText {
+  margin-bottom: 16px;
+}
+
+.z-cells .van-cell__title {
+  font-weight: bold;
+  color: #4a4a4a;
+}
+
+.z-cells .van-cell {
+  padding-bottom: 0
+}
+
+</style>

+ 180 - 180
src/views/week/VisitSummaryDetail.vue

@@ -2,7 +2,11 @@
   <div>
     <!--        顶部条-->
     <div class="navBarTOP">
-      <van-nav-bar class="navBar" :title="info.summaryTaskName" left-arrow @click-left="onClickLeft"/>
+      <van-nav-bar
+        class="navBar"
+        :title="info.summaryTaskName"
+        left-arrow
+        @click-left="onClickLeft" />
       <!--      <p style="text-align: right;margin-right: 16px;color: #1e5398;">{{title}}</p>-->
     </div>
     <div class="lineGrey"></div>
@@ -10,223 +14,220 @@
     <div class="lineGrey"></div>
     <div class="lineGrey"></div>
     <div class="lineGrey"></div>
-    <div class="lineGrey" style="height:6px;"></div>
+    <div class="lineGrey" style="height: 6px"></div>
     <!--        主体内容-->
-    <div class="container linep" style="background-color: #fff;width: 94%; margin: 0px auto; border-radius: 6px;padding: 10px">
-      <div style="padding:4px 0">
-        <van-icon :name="ry" size="16"  style="float: left"/>
-        <span>&nbsp;{{info.nickName}} - {{info.postName}}</span>
+    <div
+      class="container linep"
+      style="
+        background-color: #fff;
+        width: 94%;
+        margin: 0px auto;
+        border-radius: 6px;
+        padding: 10px;
+      ">
+      <div style="padding: 4px 0">
+        <van-icon :name="ry" size="16" style="float: left" />
+        <span>&nbsp;{{ info.nickName }} - {{ info.postName }}</span>
       </div>
-      <div style="padding:4px 0">
-        <van-icon :name="zw" size="16" style="float: left"/>
-        <span >&nbsp;所属部门:{{info.deptName}}</span>
+      <div style="padding: 4px 0">
+        <van-icon :name="zw" size="16" style="float: left" />
+        <span>&nbsp;所属部门:{{ info.deptName }}</span>
       </div>
-      <div style="padding:4px 0">
-        <van-icon :name="tm" size="16"  style="float: left"/>
-        <span >&nbsp;提交时间:{{info.createTime}}</span>
+      <div style="padding: 4px 0">
+        <van-icon :name="tm" size="16" style="float: left" />
+        <span>&nbsp;提交时间:{{ info.createTime }}</span>
       </div>
     </div>
     <div class="lineGrey"></div>
-    <div class="container linep" style="background-color: #fff;width: 94%; margin: 0px auto; border-radius: 6px;">
-      <van-form ref="tabstoreVal">
-        <div v-for="(item,index) in info.customItemList" :key="index">
-          <div class="formLabel z-cell z-cells z-celly" v-if="item.answerType=='sz' || item.answerType=='rq'||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>
-          <div class="formLabel z-cell z-cells z-celly" v-if="item.answerType=='zp'">
-            <van-cell>
-              <template #title>{{ index + 1 }}.{{ item.customName }}</template>
-            </van-cell>
-            <delete-upload-img :imgs="item.fileInfoList"></delete-upload-img>
-          </div>
-          <div class="formLabel z-cell z-cells z-celly" v-if="item.answerType=='wb'">
-            <van-cell>
-              <template #title>{{ index + 1 }}.{{ item.customName }}</template>
-            </van-cell>
-            <div class="selesetText">
-              <p class="mg0">{{ item.answerValue }}</p>
-            </div>
-            <p style="color: #444;font-size: 12px;margin: 0;padding:10px 0;text-align: right">{{ item.remark }}</p>
-            <delete-upload-img :imgs="item.fileInfoList"></delete-upload-img>
-          </div>
-          <div class="formLabel z-cell z-cells z-celly" v-if="item.answerType=='duox'">
-            <van-cell>
-              <template #title>{{ index + 1 }}.{{ item.customName }}</template>
-            </van-cell>
-            <div class="selesetText">
-              <div class="mg0" v-for="(item1,index1) in item.customOptionList" :key="index1">
-              <p style="color:#0057ba" v-if="item1.checked">
-                <i style="border: 1px solid #0057ba;margin-right: 10px;border-radius:2px;padding: 2px" class="van-icon van-icon-success"></i>
-                <span >{{ item1.customOption }}</span>
-              </p>
-              <p v-if="!item1.checked">
-                <i style="border: 1px solid #ccc;margin-right: 10px;border-radius:2px;color:#fff;padding: 2px" class="van-icon van-icon-success"></i>
-                <span >{{ item1.customOption }}</span>
-              </p>
-              </div>
-            </div>
-          </div>
-          <div class="formLabel z-cell z-cells z-celly" v-if="item.answerType=='dx'">
-            <van-cell>
-              <template #title>
-                {{ index + 1 }}.{{ item.customName }}
-              </template>
-            </van-cell>
-            <div class="selesetText">
-              <div class="mg0" v-for="(item2,index2) in item.customOptionList" :key="index2">
-                <p style="color:#0057ba" v-if="item2.checked">
-                  <i style="border: 1px solid #0057ba;border-radius:40px;margin-right: 10px;padding: 2px" class="van-icon van-icon-success"></i>
-                  <span >{{ item2.customOption }}</span>
-                </p>
-                <p v-if="!item2.checked">
-                  <i style="border: 1px solid #ccc;border-radius:40px;margin-right: 10px;color:#fff;padding: 2px" class="van-icon van-icon-success"></i>
-                  <span >{{ item2.customOption }}</span>
-                </p>
-              </div>
-            </div>
-            <delete-upload-img :imgs="item.fileInfoList"></delete-upload-img>
-          </div>
-        </div>
-      </van-form>
-
+    <div
+      class="container linep"
+      style="background-color: #fff; width: 94%; margin: 0px auto; border-radius: 6px">
+      <componVisitSummary
+        :collectionItemLists="collectionItemLists"
+        ref="componVisitSummary"></componVisitSummary>
     </div>
-    <br>
-    <br>
-    <br>
+    <br />
+    <div class="tc" style="padding: 0 16px" v-if="writeAgain">
+      <van-button class="submitBtn" block type="info" color="#0057ba" @click="onSubmit">
+        补填保存
+      </van-button>
+    </div>
+    <br />
+    <br />
+    <br />
   </div>
 </template>
 
 <script>
-import history from "@/assets/Icon/history.png";
-import tm from "@/assets/Icon/tm.png";
-import zw from "@/assets/Icon/zw.png";
-import ry from "@/assets/Icon/ry.png";
-import {getSummaryMobilo} from "@/api/index";
-import {ImagePreview} from "vant";
-import deleteUploadImg from "@/components/deleteUploadImg";
+import history from '@/assets/Icon/history.png';
+import tm from '@/assets/Icon/tm.png';
+import zw from '@/assets/Icon/zw.png';
+import ry from '@/assets/Icon/ry.png';
+import { getSummaryMobilo } from '@/api/index';
+import { ImagePreview } from 'vant';
+import deleteUploadImg from '@/components/deleteUploadImg';
+import componVisitSummary from '@/views/week/componVisitSummary';
+import { writeAgainCustomAnswer } from '@/api/week';
 export default {
-  name: "daily",
-  components: {deleteUploadImg},
+  name: 'daily',
+  components: { deleteUploadImg, componVisitSummary },
   data() {
     return {
-      info:{},
-      zw:zw,
-      tm:tm,
-      ry:ry,
+      info: {},
+      zw: zw,
+      tm: tm,
+      ry: ry,
       show: true,
       num: 0,
       todayGoal: {},
       progressWidth: 0,
       history: history,
       imgArr: [],
-      activeNames: ['1', '2', '3', '4', '5', '6', '7', '8', '10',"16","17"],
-      value: "2",
-      message: "",
-      powerGrade:"",
-      Content:"",
-      Content2:"",
-      reportTargetAll:{},
-      reportContents:[{dayContent:""}],
-      reportTarget:{},
-      successContent:"",
-      imgList:[],
-      type:"-1"
+      activeNames: ['1', '2', '3', '4', '5', '6', '7', '8', '10', '16', '17'],
+      value: '2',
+      message: '',
+      powerGrade: '',
+      Content: '',
+      Content2: '',
+      reportTargetAll: {},
+      reportContents: [{ dayContent: '' }],
+      reportTarget: {},
+      successContent: '',
+      imgList: [],
+      type: '-1',
+      collectionItemLists: [],
+      writeAgain: false,
       //
-    }
+    };
   },
   created() {
-    this.powerGrade= localStorage.getItem("powerGrade")
-    this.getDetailById()
+    this.powerGrade = localStorage.getItem('powerGrade');
+    this.getDetailById();
   },
-  watch:{
-    $route(to,from){
-      this.powerGrade= localStorage.getItem("powerGrade")
-      if(to.path=="/dailyDetails"){
-        this.getDetailById()
+  watch: {
+    $route(to, from) {
+      this.powerGrade = localStorage.getItem('powerGrade');
+      if (to.path == '/dailyDetails') {
+        this.getDetailById();
       }
       // &&from.path=="/dailyApprovalList"
       // if(to.path=="/dailyDetails"&&from.path=="/myHistoricalDaily"){
       //   this.getDetailById()
       // }
-    }
+    },
   },
   activated() {
     this.num = 0;
-    this.userTodayPlanNum()
+    this.userTodayPlanNum();
   },
   methods: {
-    pviewFn(val,imgVal){
-      var imgList=[]
-      var photos=this.reportTarget.photos[val].photos
-      for(let i=0;i<photos.length;i++){imgList.push(photos[i].fileUrl)};
-      ImagePreview({images: imgList, startPosition: imgVal});
+    pviewFn(val, imgVal) {
+      var imgList = [];
+      var photos = this.reportTarget.photos[val].photos;
+      for (let i = 0; i < photos.length; i++) {
+        imgList.push(photos[i].fileUrl);
+      }
+      ImagePreview({ images: imgList, startPosition: imgVal });
     },
-    submint(){
+    submint() {
       this.$router.push({
-        path: "/daily",
-        query: {reportId:this.$route.query.reportId,temporaryShow:"N"}
-      })
+        path: '/daily',
+        query: { reportId: this.$route.query.reportId, temporaryShow: 'N' },
+      });
     },
-    getDetailById(){
-      let loading1=this.$toast.loading({
+    getDetailById() {
+      let loading1 = this.$toast.loading({
         duration: 0,
         message: '加载中...',
         forbidClick: true,
       });
-      getSummaryMobilo({userSummaryId:this.$route.query.userSummaryId}).then(res=>{
-        loading1.clear()
-        this.reportTargetAll=res.data.reportTargetAll
-        this.info=res.data
-        this.type=res.data.userType
-        if(res.data.status==3){
-          this.successContent=res.data.successContent
-        }else{
-          this.successContent=res.data.failContent
+      getSummaryMobilo({ userSummaryId: this.$route.query.userSummaryId }).then((res) => {
+        loading1.clear();
+        this.reportTargetAll = res.data.reportTargetAll;
+        this.info = res.data;
+        this.type = res.data.userType;
+        if (res.data.status == 3) {
+          this.successContent = res.data.successContent;
+        } else {
+          this.successContent = res.data.failContent;
         }
-        if(res.data.reportContents.length>0){
-          this.Content=res.data.reportContents[0].dayContent
-          if(res.data.reportContents.length>1){
-            this.Content2=res.data.reportContents[1].dayContent
-          }else{
-            this.Content2=""
+        if (res.data.reportContents && res.data.reportContents.length > 0) {
+          this.Content = res.data.reportContents[0].dayContent;
+          if (res.data.reportContents.length > 1) {
+            this.Content2 = res.data.reportContents[1].dayContent;
+          } else {
+            this.Content2 = '';
           }
-        }else{
-          this.Content=""
-          this.Content2=""
+        } else {
+          this.Content = '';
+          this.Content2 = '';
         }
-        this.reportContents=res.data.reportContents
-        var imgList=[]
-        if(res.data.photos!=null){
-          for(var k=0;k<res.data.photos.length;k++){
-            imgList.push(res.data.photos[k].fileUrl+"")
+        this.reportContents = res.data.reportContents;
+        var imgList = [];
+        if (res.data.photos != null) {
+          for (var k = 0; k < res.data.photos.length; k++) {
+            imgList.push(res.data.photos[k].fileUrl + '');
           }
         }
-        this.imgList=imgList
-      })
+        this.imgList = imgList;
+        this.writeAgain = res.data.customItemList.some((item) => {
+          return item.writeAgain === '1';
+        });
+
+        this.collectionItemLists = res.data.customItemList;
+      });
     },
     userTodayPlanNum() {
-      userTodayPlanNum().then(res => {
+      // userTodayPlanNum().then((res) => {
+      //   if (res.code == 200) {
+      //     this.todayGoal = res.data;
+      //     this.progressWidth = (this.todayGoal.finishNum / this.todayGoal.planNum) * 100 + '%';
+      //     localStorage.setItem('nickName', res.data.user.nickName);
+      //     localStorage.setItem('storeType', res.data.user.type);
+      //   } else {
+      //     this.$toast.fail(res.msg);
+      //   }
+      // });
+    },
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+    onSubmit() {
+      let collectionAnswerlisd = this.$refs.componVisitSummary.collectionAnswerlisd;
+      let collectionItemList = this.$refs.componVisitSummary.collectionItemList;
+      for (var c = 0; c < collectionAnswerlisd.length; c++) {
+        for (var b = 0; b < collectionItemList.length; b++) {
+          if (collectionAnswerlisd[c].id == collectionItemList[b].customId) {
+            collectionItemList[b].customOptionList = collectionAnswerlisd[c].value;
+          }
+        }
+      }
+      // 获取所有可以补填的题
+      let customItemList = collectionItemList.filter((item) => item.writeAgain);
+      console.log(customItemList);
+      // // 照片
+      // let zpDataList = customItemList.find((item) => item.answerType == 'zp');
+      // if (zpDataList) {
+      //   let fileIdList = [];
+      //   zpDataList.fileInfoList.forEach((item) => {
+      //     fileIdList.push(item.id);
+      //   });
+      //   zpDataList.fileIdList = fileIdList;
+      // }
+      writeAgainCustomAnswer({
+        userSummaryId: this.$route.query.userSummaryId,
+        customItemList: customItemList,
+      }).then((res) => {
         if (res.code == 200) {
-          this.todayGoal = res.data
-          this.progressWidth = (this.todayGoal.finishNum / this.todayGoal.planNum) * 100 + "%"
-          localStorage.setItem("nickName", res.data.user.nickName)
-          localStorage.setItem("storeType", res.data.user.type)
-        } else {
-          this.$toast.fail(res.msg)
+          this.$toast('操作成功!');
+          this.$router.replace({
+            path: '/VisitSummary',
+          });
         }
-      })
+      });
     },
-    onClickLeft() {
-      this.$router.go(-1)
-    }
-  }
-}
+  },
+};
 </script>
 <style scoped>
 .container {
@@ -242,15 +243,15 @@ export default {
 
 .formLabel {
   margin: 0 16px;
-  border-bottom: 1px solid #f1f1f1
+  border-bottom: 1px solid #f1f1f1;
 }
 
 .formLabel .van-cell {
-  padding: 10px 0
+  padding: 10px 0;
 }
 
 .formLabel .van-cell::after {
-  border: 0
+  border: 0;
 }
 
 .formLabel .van-field {
@@ -258,11 +259,11 @@ export default {
   padding: 6px;
   width: 100%;
   border-radius: 4px;
-  overflow: hidden
+  overflow: hidden;
 }
 
 .formLabel .van-field__control {
-  padding: 0 10px
+  padding: 0 10px;
 }
 
 .formLabel .formLabeltitle {
@@ -273,7 +274,7 @@ export default {
 .z-checkbox .van-radio {
   padding: 6px 0;
 }
-.z-celly .van-cell__title{
+.z-celly .van-cell__title {
   font-weight: initial;
   font-size: 14px;
 }
@@ -305,11 +306,11 @@ export default {
 
 .table-headermd .van-cell {
   padding: 0 4px;
-  height: 100%
+  height: 100%;
 }
 
 .table-headermd th.el-table__cell > .cell {
-  padding: 0 4px
+  padding: 0 4px;
 }
 
 .table-headermd th.el-table__cell {
@@ -330,12 +331,12 @@ export default {
 }
 
 .table-headermd::before {
-  height: 0
+  height: 0;
 }
 
 .f-right {
   text-align: right;
-  margin: 0
+  margin: 0;
 }
 
 .mg0 {
@@ -354,7 +355,6 @@ export default {
 }
 
 .z-cells .van-cell {
-  padding-bottom: 0
+  padding-bottom: 0;
 }
-
-</style>
+</style>

+ 809 - 0
src/views/week/componVisitSummary.vue

@@ -0,0 +1,809 @@
+<template>
+  <div class="componVisitSummary">
+    <van-form ref="tabstoreVal">
+      <div v-for="(item, index) in collectionItemList" :key="index">
+        <div v-if="item.answerType == 'sz'" class="formLabel z-cell">
+          <van-cell>
+            <template #title>
+              <span v-if="item.isMust == 0" class="van-f-red">*</span>{{ item.customName
+              }}<span style="font-size: 12px; color: #888">{{ item.remark }}</span>
+            </template>
+          </van-cell>
+          <van-field
+            v-model="item.answerValue"
+            :placeholder="item.customName"
+            type="number"
+            @input="numberFn(item, index)"></van-field>
+        </div>
+        <div v-if="item.answerType == 'rq'" class="formLabel z-cell">
+          <van-cell>
+            <template #title>
+              <span v-if="item.isMust == 0" class="van-f-red">*</span>{{ item.customName
+              }}<span style="font-size: 14px; color: #ccc">{{ item.remark }}</span>
+            </template>
+          </van-cell>
+          <van-field
+            v-model="item.answerValue"
+            clickable
+            name="calendar"
+            placeholder="点击选择日期"
+            readonly
+            @click="showCalendarClick(index)" />
+          <p
+            style="color: #444; font-size: 12px; margin: 0; padding: 10px 0; text-align: right"></p>
+        </div>
+        <div v-if="item.answerType == 'zp'" class="formLabel z-cell">
+          <van-cell>
+            <template #title>
+              <span v-if="item.isMust == 0" class="van-f-red">*</span>{{ item.customName }}
+            </template>
+          </van-cell>
+          <van-row gutter="10" style="margin-bottom: 10px">
+            <p style="margin-top: 0">
+              <span style="font-size: 12px; color: #888">{{ item.remark }}</span>
+            </p>
+            <delete-upload-img :imgs="item.fileInfoList"></delete-upload-img>
+            <upload-img
+              :uploadid="uploadid2"
+              @newimgarr="newimgarr1"
+              imgText="上传照片"
+              :indexImg="index"
+              :customId="item.customId"
+              :summaryId="item.summaryId"
+              @click="imgClick(item, index)"></upload-img>
+          </van-row>
+        </div>
+        <div v-if="item.answerType == 'wb'" class="formLabel z-cell">
+          <van-cell>
+            <template #title>
+              <span v-if="item.isMust == 0" class="van-f-red">*</span>{{ item.customName }}
+            </template>
+          </van-cell>
+          <van-field
+            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
+          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>
+        <div v-if="item.answerType == 'duox'" class="formLabel z-cell">
+          <van-cell>
+            <template #title>
+              <span v-if="item.isMust == 0" class="van-f-red">*</span>{{ item.customName }}
+            </template>
+          </van-cell>
+          <z-checkbox
+            :answerType="item.answerType"
+            :checkboxval="item.answerValue"
+            :collectionType="item.customOptionList"
+            :textc="item.customId"
+            :zCheckboxcolumns="item.customOptionList"
+            @zSelectVal="zSelectVal"></z-checkbox>
+        </div>
+        <div v-if="item.answerType == 'dx'" class="formLabel z-cell">
+          <van-cell>
+            <template #title>
+              <span v-if="item.isMust == 0" class="van-f-red">*</span>{{ item.customName }}
+            </template>
+          </van-cell>
+          <z-radio
+            :answerType="item.answerType"
+            :collectionType="item.collectionType"
+            :radio="item.answerValue"
+            :textc="item.customId"
+            :zRadiocolumns="item.customOptionList"
+            @zSelectVal="zSelectVal"></z-radio>
+        </div>
+        <br />
+      </div>
+    </van-form>
+    <van-calendar
+      v-model="showCalendar"
+      @confirm="onConfirm"
+      color="#0057ba"
+      :min-date="minDate"
+      :max-date="maxDate"
+      :show-confirm="false" />
+    <van-popup v-model="RegionShow" capture position="bottom">
+      <van-picker
+        :columns="companyList"
+        show-toolbar
+        value-key="deptName"
+        @cancel="RegionShow = false"
+        @confirm="onregionConfirm" />
+    </van-popup>
+    <van-popup v-model="SalesRegionShow" capture position="bottom">
+      <van-picker
+        :columns="regionList"
+        show-toolbar
+        value-key="deptName"
+        @cancel="SalesRegionShow = false"
+        @confirm="onSalesRegionConfirm" />
+    </van-popup>
+    <van-popup v-model="SalesDepartmentShow" capture position="bottom">
+      <van-picker
+        :columns="deptList"
+        show-toolbar
+        value-key="deptName"
+        @cancel="SalesDepartmentShow = false"
+        @confirm="onSalesDepartmentConfirm" />
+    </van-popup>
+    <van-popup v-model="StartTimeShow" capture position="bottom">
+      <van-datetime-picker
+        v-model="strtcurrentDate"
+        :max-date="strtmaxDate"
+        :min-date="strtminDate"
+        title="选择查找开始时间"
+        type="date"
+        @cancel="StartTimeShow = false"
+        @confirm="onStartTimeConfirm" />
+    </van-popup>
+    <van-popup v-model="EndTimeShow" capture position="bottom">
+      <van-datetime-picker
+        v-model="endcurrentDate"
+        :max-date="endmaxDate"
+        :min-date="endminDate"
+        title="选择查找结束时间"
+        type="date"
+        @cancel="EndTimeShow = false"
+        @confirm="onEndTimeConfirm" />
+    </van-popup>
+  </div>
+</template>
+
+<script>
+import { insertCustomAnswer, getSummaryMobileDeptInfo } from '@/api/index';
+import zRadio from '@/components/zRadio2';
+import zCheckbox from '@/components/zCheckbox2';
+import uploadImg from '@/components/uploadVTask';
+import deleteUploadImg from '@/components/deleteUploadImg2';
+
+export default {
+  name: 'MyHistoricalWeekly',
+  components: { zRadio, zCheckbox, uploadImg, deleteUploadImg },
+  props: {
+    collectionItemLists: {
+      type: Array,
+      default() {
+        return [];
+      },
+    },
+  },
+  data() {
+    return {
+      RegionShow: false,
+      SalesRegionShow: false,
+      SalesDepartmentShow: false,
+      StaffShow: false,
+      StartTimeShow: false,
+      dateIndex: '',
+      EndTimeShow: false,
+      uploadid2: 'uploadid2',
+      PhotoTypeList: [{ text: '009', value: '09' }],
+      strtminDate: new Date(2022, 0, 1),
+      endminDate: new Date(2022, 0, 1),
+      minDate: new Date(2020, 0, 1),
+      maxDate: new Date(2090, 0, 31),
+      strtmaxDate: new Date(),
+      endmaxDate: new Date(),
+      strtcurrentDate: new Date(),
+      endcurrentDate: new Date(),
+      companyName: '全部公司',
+      deptName: '全部销售部',
+      regionName: '全部大区',
+      userName: '全部',
+      companyCode: '',
+      deptCode: '',
+      regionCode: '',
+      userCode: '',
+      companyList: [],
+      title: '',
+      deptList: [],
+      regionList: [],
+      userList: [],
+      deptForm: { type: '', parentId: '' },
+      list: [],
+      loading: false,
+      finished: true,
+      showCalendar: false,
+      formData: {
+        type: '2', // 汇报类型或入口 1-下属业务员日报 2-下属销售部主管周报 3-下属大区主管半月报
+        companyId: '', // 公司id,必传 Long类型
+        regionId: '', // 大区id,必传  Long类型
+        deptId: '', // 部门id,如果为周报或日报为必传  Long类型
+        userId: '', // 业务员id,如果为日报为必传      Long类型
+        startTime: '', // 开始时间,必传  格式:yyyy-MM-dd  String类型
+        endTime: '', // 结束时间,必传  格式:yyyy-MM-dd  String类型
+        pageNum: 1, // 当前页码  int类型
+        pageSize: 10, // 当前每页条数  int类型
+      },
+      tableList: [],
+      collectionItemList: [],
+      collectionAnswerlisd: [],
+      flagclick: true,
+      index: '',
+    };
+  },
+  created() {
+    this.formData.startTime = this.getThreeDaysAgo();
+    this.strtcurrentDate = new Date(this.getThreeDaysAgo());
+    this.formData.endTime = this.parseTime(new Date(), '{y}-{m}-{d}') + '';
+    this.endminDate = new Date(this.GetPreMonthDay(this.parseTime(new Date(), '{y}-{m}-{d}'), 2));
+    this.powerGrade = localStorage.getItem('powerGrade');
+    this.title = this.$route.query.title;
+    this.regionCode = '';
+  },
+  watch: {
+    collectionItemLists: {
+      handler(val) {
+        // this.collectionItemList = JSON.parse(JSON.stringify(this.collectionItemLists));
+        this.setCollectionItemLists();
+      },
+      deep: true,
+      immediate: true,
+    },
+  },
+  methods: {
+    showCalendarClick(val) {
+      this.dateIndex = val;
+      this.showCalendar = true;
+    },
+    formatDate(date) {
+      var Month = date.getMonth() + 1;
+      var Day = date.getDate();
+      if (Month < 10) {
+        Month = '0' + Month;
+      }
+      if (Day < 10) {
+        Day = '0' + Day;
+      }
+      return `${date.getFullYear()}-${Month}-${Day}`;
+    },
+    onConfirm(date) {
+      this.showCalendar = false;
+      this.collectionItemList[this.dateIndex].answerValue = this.formatDate(date);
+    },
+    formatter(value) {
+      return value.replace(
+        /[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/gi,
+        ''
+      );
+    },
+    numberFn(val, index) {
+      if (!/^[+-]?\d*\.{0,1}\d{0,1}$/.test(this.collectionItemList[index].answerValue)) {
+        this.collectionItemList[index].answerValue = this.collectionItemList[
+          index
+        ].answerValue.replace(
+          /\.\d{2,}$/,
+          this.collectionItemList[index].answerValue.substr(
+            this.collectionItemList[index].answerValue.indexOf('.'),
+            3
+          )
+        );
+      }
+    },
+    zSelectVal(value) {
+      console.log(value);
+      var collectionAnswerlisd = this.collectionAnswerlisd;
+      if (collectionAnswerlisd.length > 0) {
+        var num = 0;
+        for (var a = 0; a < collectionAnswerlisd.length; a++) {
+          if (collectionAnswerlisd[a].id == value.id) {
+            collectionAnswerlisd[a] = value;
+            num = 0;
+          } else {
+            num = 1;
+          }
+        }
+        if (num > 0) {
+          collectionAnswerlisd.push(value);
+        }
+      } else {
+        collectionAnswerlisd.push(value);
+      }
+      this.collectionAnswerlisd = collectionAnswerlisd;
+    },
+    imgClick(val, index) {
+      this.collectionId = val.collectionId + '';
+      this.indeximg = index;
+      this.show = true;
+    },
+    newimgarr1(val) {
+      if (
+        this.collectionItemList[val.index].fileInfoList == null ||
+        this.collectionItemList[val.index].fileInfoList == undefined
+      ) {
+        this.collectionItemList[val.index].fileInfoList = [];
+        this.collectionItemList[val.index].fileIdList = [];
+      }
+      this.collectionItemList[val.index].fileInfoList.push(val);
+      this.collectionItemList[val.index].fileIdList.push(val.id);
+    },
+    dateFn(val) {
+      return val.slice(0, 4) + '-' + val.slice(4, 6) + '-' + val.slice(6, 8);
+    },
+    onLoad() {},
+    onSubmit() {
+      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;
+          }
+        }
+      }
+      if (this.flagclick) {
+        this.flagclick = false;
+        this.timer = null;
+        this.timer = setTimeout(() => {
+          this.flagclick = true;
+        }, 2000);
+        insertCustomAnswer(this.collectionItemList).then((res) => {
+          if (res.code == 200) {
+            this.$router.go(-1);
+          }
+        });
+      }
+    },
+    setCollectionItemLists() {
+      this.collectionItemList = [];
+      this.collectionAnswerlisd = [];
+      this.collectionItemList = JSON.parse(JSON.stringify(this.collectionItemLists));
+      for (var q = 0; q < this.collectionItemList.length; q++) {
+        this.collectionItemList[q].answerName = undefined;
+        // 公司
+        // if (this.collectionItemList[q].answerType == 'gs') {
+        //   this.getDeptInfo('dept', 'gs', this.collectionItemList[q].answerValue);
+        // }
+        // 单选
+        if (this.collectionItemList[q].answerType == 'dx') {
+          let findCustom = this.collectionItemList[q].customOptionList.find((item) => item.checked);
+          if (findCustom) {
+            this.collectionItemList[q].answerValue = findCustom.customOptionId + '';
+          }
+        }
+        // 多选
+        if (this.collectionItemList[q].answerType == 'duox') {
+          let findCustom = [];
+          this.collectionItemList[q].customOptionList.forEach((item) => {
+            if (item.checked) {
+              findCustom.push(item.customOptionId + '');
+            }
+          });
+          if (findCustom) {
+            this.collectionItemList[q].answerValue = findCustom.join(',');
+          }
+        }
+        // 照片
+        if (this.collectionItemList[q].answerType == 'zp') {
+          let fileIdList = [];
+          this.collectionItemList[q].fileInfoList.forEach((item) => {
+            fileIdList.push(item.id);
+          });
+          this.collectionItemList[q].fileIdList = fileIdList;
+        }
+      }
+    },
+    getThreeDaysAgo() {
+      let myDate = new Date();
+      let lw = new Date(myDate - 1000 * 60 * 60 * 24 * 14); //最后一个数字30可改,30天的意思
+      let lastY = lw.getFullYear();
+      let lastM = lw.getMonth() + 1;
+      let lastD = lw.getDate();
+      let startData =
+        lastY + '-' + (lastM < 10 ? '0' + lastM : lastM) + '-' + (lastD < 10 ? '0' + lastD : lastD); //三十天之前日期
+      return startData;
+    },
+    GetPreMonthDay(date, monthNum, type) {
+      var dateArr = date.split('-');
+      var year = dateArr[0]; //获取当前日期的年份
+      var month = dateArr[1]; //获取当前日期的月份
+      var day = dateArr[2]; //获取当前日期的日
+      var days = new Date(year, month, 0);
+      days = days.getDate(); //获取当前日期中月的天数
+      var year2 = year;
+      var month2 = parseInt(month) - monthNum;
+      if (month2 <= 0) {
+        var absM = Math.abs(month2);
+        year2 = parseInt(year2) - Math.ceil(absM / 12 == 0 ? 1 : parseInt(absM) / 12);
+        month2 = 12 - (absM % 12);
+      }
+      var day2 = day;
+      var days2 = new Date(year2, month2, 0);
+      days2 = days2.getDate();
+      if (day2 > days2) {
+        day2 = days2;
+      }
+      if (month2 < 10) {
+        month2 = '0' + month2;
+      }
+      var t2 = '';
+      if (monthNum > 0) {
+        t2 = year2 + '-' + month2 + '-01';
+      } else {
+        if (type == 'end') {
+          var Months = new Date().getMonth() + 1;
+          var days111 = new Date().getDate();
+          if (Months < 10) {
+            Months = '0' + Months;
+          }
+          if (days111 < 10) {
+            days111 = '0' + days111;
+          }
+          if (parseInt(month2) >= new Date().getMonth() + 1) {
+            t2 = year2 + '-' + Months + '-' + days111;
+          } else {
+            var daysd = this.getMonthDays(year2, month2);
+            t2 = year2 + '-' + month2 + '-' + daysd;
+          }
+        } else {
+          t2 = year2 + '-' + month2 + '-' + day2;
+        }
+      }
+      return t2;
+    },
+    getMonthDays(year, month) {
+      var stratDate = new Date(year, month - 1, 1),
+        endData = new Date(year, month, 1);
+      var days = (endData - stratDate) / (1000 * 60 * 60 * 24);
+      return days;
+    },
+    getDeptInfo(type, grade, answerValue) {
+      this.deptForm.type = type;
+      if (grade == '1') {
+        this.deptForm.parentId = this.companyCode;
+      } else if (grade == '2') {
+        this.deptForm.parentId = this.regionCode;
+      } else {
+        this.deptForm.type = '';
+        this.deptForm.parentId = '';
+      }
+      getSummaryMobileDeptInfo(this.deptForm).then((res) => {
+        if (grade == 'dq') {
+          if (res.data.region != null) {
+            this.regionList = res.data.region;
+            if (answerValue) {
+              let findCompany = this.regionList.find((item) => item.deptCode == answerValue);
+              this.onSalesRegionConfirm(findCompany);
+            } else {
+              this.onSalesRegionConfirm(this.regionList[0]);
+            }
+          }
+        } else if (grade == 'xsb') {
+          if (res.data.dept != null) {
+            this.deptList = res.data.dept;
+            if (answerValue) {
+              let findCompany = this.deptList.find((item) => item.deptCode == answerValue);
+              this.onSalesDepartmentConfirm(findCompany);
+            } else {
+              this.onSalesDepartmentConfirm(this.deptList[0]);
+            }
+          }
+        } else if (grade == 'gs') {
+          this.companyList = res.data.company;
+          if (answerValue) {
+            let findCompany = this.companyList.find((item) => item.deptCode == answerValue);
+            this.onregionConfirm(findCompany);
+          } else {
+            this.onregionConfirm(this.companyList[0]);
+          }
+          if (res.data.dept != null) {
+            this.deptList = res.data.dept;
+          }
+          if (res.data.region != null) {
+            this.regionList = res.data.region;
+          }
+        }
+      });
+    },
+    dailyFn(row) {
+      if (row.status != '0') {
+        if (row.status == -1) {
+          var dayTime = row.showDate;
+          var times = new Date(
+            dayTime.slice(0, 4) + '-' + dayTime.slice(4, 6) + '-' + dayTime.slice(6, 8)
+          ).getTime();
+          var time = new Date('2022-08-25').getTime();
+          if (times < time) {
+            this.$dialog.alert({
+              title: '系统提示',
+              message: '非常抱歉,8月25日前历史报告数据不存在',
+            });
+          } else {
+            this.$router.push({
+              path: '/weeklyHistoricalDetils',
+              query: { reportId: row.id },
+            });
+          }
+        } else {
+          this.$router.push({
+            path: '/weeklyHistoricalDetils',
+            query: { reportId: row.id },
+          });
+        }
+      }
+    },
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+    regionClick(val) {
+      // if(this.powerGrade>4){
+      this.index = val;
+      this.RegionShow = true;
+      // }
+    },
+    SalesRegionClick(val) {
+      this.index = val;
+      this.SalesRegionShow = true;
+    },
+    SalesDepartmentClick(val) {
+      this.index = val;
+      this.SalesDepartmentShow = true;
+    },
+    StaffClick() {
+      this.StaffShow = true;
+    },
+    StartTimeClick() {
+      this.StartTimeShow = true;
+    },
+    EndTimeClick() {
+      this.EndTimeShow = true;
+    },
+    onSalesRegionConfirm(val) {
+      this.SalesRegionShow = false;
+      this.regionCode = val.deptId;
+      if (this.index != '') {
+        this.collectionItemList[this.index].answerName = val.deptName;
+        this.collectionItemList[this.index].answerValue = val.deptCode;
+      } else {
+        for (var k1 = 0; k1 < this.collectionItemList.length; k1++) {
+          if (this.collectionItemList[k1].answerType == 'xsb') {
+            this.collectionItemList[k1].answerName = '';
+            this.collectionItemList[k1].answerValue = '';
+          }
+          if (this.collectionItemList[k1].answerType == 'dq') {
+            this.collectionItemList[k1].answerName = val.deptName;
+            this.collectionItemList[k1].answerValue = val.deptCode;
+          }
+          if (this.collectionItemList[k1].answerType == 'xsb' && val.deptId != '') {
+            this.getDeptInfo('dept', 'xsb', this.collectionItemList[k1].answerValue);
+          }
+        }
+      }
+      // if (val.deptId != '') {
+      //   this.getDeptInfo('dept', 'xsb');
+      // }
+    },
+    onregionConfirm(val) {
+      this.RegionShow = false;
+      this.companyCode = val.deptId;
+      if (this.index != '') {
+        this.collectionItemList[this.index].answerName = val.deptName;
+        this.collectionItemList[this.index].answerValue = val.deptCode;
+      } else {
+        for (var k1 = 0; k1 < this.collectionItemList.length; k1++) {
+          if (
+            this.collectionItemList[k1].answerType == 'xsb' ||
+            this.collectionItemList[k1].answerType == 'dq'
+          ) {
+            this.collectionItemList[k1].answerName = '';
+            this.collectionItemList[k1].answerValue = '';
+          }
+          if (this.collectionItemList[k1].answerType == 'gs') {
+            this.collectionItemList[k1].answerName = val.deptName;
+            this.collectionItemList[k1].answerValue = val.deptCode;
+          }
+          if (this.collectionItemList[k1].answerType == 'dq') {
+            this.getDeptInfo('dept', 'dq', this.collectionItemList[k1].answerValue);
+          }
+        }
+      }
+    },
+    onSalesDepartmentConfirm(val) {
+      this.SalesDepartmentShow = false;
+      if (this.index != '') {
+        this.collectionItemList[this.index].answerName = val.deptName;
+        this.collectionItemList[this.index].answerValue = val.deptCode;
+      } else {
+        for (var k1 = 0; k1 < this.collectionItemList.length; k1++) {
+          if (this.collectionItemList[k1].answerType == 'xsb') {
+            this.collectionItemList[k1].answerName = val.deptName;
+            this.collectionItemList[k1].answerValue = val.deptCode;
+          }
+        }
+      }
+    },
+    onStartTimeConfirm(val) {
+      this.formData.startTime = this.parseTime(new Date(val), '{y}-{m}-{d}') + '';
+      this.StartTimeShow = false;
+      this.endminDate = new Date(val);
+      this.endmaxDate = new Date(this.GetPreMonthDay(this.formData.startTime, -2, 'end'));
+      if (
+        new Date(this.formData.startTime).getTime() > new Date(this.formData.endTime).getTime() ||
+        new Date(this.endmaxDate).getTime() < new Date(this.formData.endTime).getTime()
+      ) {
+        this.formData.endTime = this.parseTime(new Date(val), '{y}-{m}-{d}') + '';
+        this.endcurrentDate = this.GetPreMonthDay(this.formData.startTime, -2);
+      }
+      this.list = [];
+      this.formData.pageNum = 1;
+    },
+    onEndTimeConfirm(val) {
+      this.formData.endTime = this.parseTime(new Date(val), '{y}-{m}-{d}');
+      this.strtmaxDate = new Date(val);
+      if (new Date(this.formData.startTime).getTime() > new Date(this.formData.endTime).getTime()) {
+        this.formData.startTime = this.formData.endTime;
+      }
+      this.list = [];
+      this.formData.pageNum = 1;
+      this.EndTimeShow = false;
+    },
+  },
+};
+</script>
+<style scoped lang="scss">
+.componVisitSummary {
+  .van-f-red {
+    color: red;
+    width: 8px;
+    display: inline-block;
+    line-height: 26px;
+  }
+
+  .formLabel {
+    margin: 0 16px;
+    border-bottom: 1px solid #f1f1f1;
+  }
+
+  .formLabel .van-cell {
+    padding: 10px 0;
+  }
+
+  .formLabel .van-cell::after {
+    border: 0;
+  }
+
+  .formLabel .van-field {
+    border: 1px solid #f1f1f1;
+    padding: 6px;
+    width: 100%;
+    border-radius: 4px;
+    overflow: hidden;
+  }
+
+  .formLabel .van-field__control {
+    padding: 0 10px;
+  }
+
+  .formLabel .formLabeltitle {
+    position: absolute;
+    top: 8px;
+  }
+
+  .lineGrey {
+    height: 10px;
+    width: 100%;
+    background: #f1f1f1;
+  }
+
+  .z-checkbox .van-radio {
+    padding: 6px 0;
+  }
+
+  .z-cell .van-cell__title {
+    font-size: 16px;
+  }
+}
+</style>
+<style>
+.table-headermd {
+  font-size: 12px;
+  text-align: center;
+  position: initial;
+  width: 98% !important;
+  margin: 0 auto;
+  border-right: 0;
+}
+
+.table-headermd .el-table__header,
+.table-headermd .el-table__body {
+  width: 100% !important;
+}
+
+/*.table-headermd col {width: 6.8rem;}*/
+.table-headermd col:nth-child(4) {
+  width: 5.6rem;
+}
+
+.table-headermd col:nth-child(2),
+.table-headermd col:nth-child(3) {
+  width: 4.6rem;
+}
+
+.table-headermd .van-cell {
+  padding: 0 4px;
+  height: 100%;
+}
+
+.table-headermd th.el-table__cell > .cell {
+  padding: 0 4px;
+  text-align: center;
+}
+
+.table-headermd th.el-table__cell:first-child > .cell {
+  text-align: left;
+}
+
+.table-headermd th.el-table__cell {
+  background-color: #1989fa;
+  color: #fff;
+}
+
+.table-headermd .el-table__cell {
+  padding: 4px 0;
+}
+
+.table-headermd.el-table .cell {
+  padding: 0;
+}
+
+.table-headermd .tipTitle {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  display: -webkit-box;
+  -webkit-box-orient: vertical;
+  -webkit-line-clamp: 2;
+}
+
+.table-headermd::before {
+  height: 0;
+}
+
+.xing {
+  color: red;
+  padding-left: 4px;
+}
+
+.formLabel .van-radio__label,
+.formLabel .van-checkbox__label {
+  font-size: 1.4rem;
+}
+
+.table-headermd .cell,
+.el-table--border .el-table__cell:first-child .cell {
+  padding: 0 4px;
+}
+
+.van-dialog__confirm,
+.van-dialog__confirm:active {
+  color: #1989fa;
+}
+
+.navBarTOP {
+  position: fixed;
+  width: 100%;
+  z-index: 2;
+  top: 0;
+}
+
+.isTableMust {
+  padding: 4px;
+  color: #999;
+  margin: 0;
+  margin-top: -10px;
+}
+</style>