Jelajahi Sumber

主管任务审批

zhujindu 6 bulan lalu
induk
melakukan
b547744152

+ 6 - 0
src/router/index.js

@@ -447,6 +447,12 @@ const router = new VueRouter({
           component: () => import('@/views/week/SUPTaskApproval/index.vue'),
           meta: { title: '主管任务审批', keepAlive: true },
         },
+        {
+          path: '/SUPTaskApprovalDetail',
+          name: 'SUPTaskApprovalDetail',
+          component: () => import('@/views/week/SUPTaskApproval/SUPTaskApprovalDetail.vue'),
+          meta: { title: '主管任务审批详情', keepAlive: true },
+        },
       ],
     },
     {

+ 443 - 0
src/views/week/SUPTaskApproval/SUPTaskApprovalDetail.vue

@@ -0,0 +1,443 @@
+<template>
+  <div v-if="info">
+    <!--        顶部条-->
+    <div class="navBarTOP">
+      <van-nav-bar
+        class="navBar"
+        :title="info.summaryTaskName"
+        left-arrow
+        @click-left="onClickLeft" />
+    </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">
+      <detailItem
+        :collectionItemLists="collectionItemLists"
+        :approvalStatus="info.approvalStatus"
+        ref="detailItem"></detailItem>
+    </div>
+    <br />
+    <div class="approvalRemarh" v-if="source == 'SUPTaskApproval' && info.approvalStatus == '1'">
+      <div class="approvalLabel">审批意见</div>
+      <div class="remark">
+        <van-field
+          v-model="approvalMessage"
+          rows="3"
+          type="textarea"
+          placeholder="请输入审批意见" />
+      </div>
+    </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="submitApproval">
+          提交审批
+        </van-button>
+      </div>
+    </template>
+    <template v-if="source == 'SUPTaskApproval' && info.approvalStatus == '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 />
+  </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 detailItem from './detailItem';
+import { writeAgainCustomAnswer } from '@/api/week';
+import { changeApproval } from '@/api/SUPTaskApproval.js';
+export default {
+  name: 'daily',
+  components: { deleteUploadImg, detailItem },
+  data() {
+    return {
+      info: null,
+      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',
+      collectionItemLists: [],
+      writeAgain: false,
+      approvalMessage: '',
+      source: '',
+      //
+    };
+  },
+  activated() {
+    this.source = this.$route.query.source || '';
+    this.powerGrade = localStorage.getItem('powerGrade');
+    this.getDetailById();
+    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 && 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;
+        this.writeAgain = res.data.customItemList.some((item) => {
+          return item.allowWriteAgain;
+        });
+
+        this.collectionItemLists = res.data.customItemList;
+      });
+    },
+    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() {
+      if (this.source == 'SUPTaskApproval') {
+        this.$router.replace({
+          path: '/SUPTaskApproval',
+          query: {
+            tabVal: this.info.approvalStatus == '1' ? '1' : '2',
+          },
+        });
+      } else {
+        this.$router.replace({
+          path: '/VisitSummary',
+        });
+      }
+    },
+    onSubmit() {
+      let collectionAnswerlisd = this.$refs.detailItem.collectionAnswerlisd;
+      let collectionItemList = this.$refs.detailItem.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.allowWriteAgain);
+      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.$toast('操作成功!');
+            this.$router.replace({
+              path: '/VisitSummary',
+            });
+          } else {
+            this.$toast(res.msg);
+          }
+        })
+        .catch((err) => {
+          this.$toast(err.msg);
+        });
+    },
+    approvalStoreFun(type) {
+      if (type == 'pass') {
+        this.changeApprovalFun('1');
+      } else {
+        if (this.approvalMessage != '') {
+          this.changeApprovalFun('2');
+        } else {
+          this.$notify({ type: 'warning', message: '请输入审批意见' });
+        }
+      }
+    },
+    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',
+          });
+        }
+      });
+    },
+  },
+};
+</script>
+<style scoped lang="scss">
+.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;
+}
+.bottomBtn {
+  position: fixed;
+  bottom: 0;
+  z-index: 10;
+  height: 50px;
+  width: 100%;
+  display: flex;
+  flex-direction: row;
+  justify-content: space-around;
+  .van-button {
+    /* flex: 1; */
+    width: 40%;
+  }
+}
+.approvalRemarh {
+  width: 94%;
+  margin: 0px auto;
+  border-radius: 6px;
+  margin-bottom: 40px;
+  .approvalLabel {
+    font-size: 14px;
+    padding: 5px 0;
+  }
+}
+</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>

+ 926 - 0
src/views/week/SUPTaskApproval/detailItem.vue

@@ -0,0 +1,926 @@
+<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 }}
+            </template>
+          </van-cell>
+          <van-field
+            v-model="item.answerValue"
+            :placeholder="item.customName"
+            type="number"
+            :disabled="setDisabled(item)"
+            @input="numberFn(item, index)"></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 == 'rq'" 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"
+            clickable
+            name="calendar"
+            placeholder="点击选择日期"
+            readonly
+            :disabled="setDisabled(item)"
+            @click="showCalendarClick(index)" />
+          <p style="color: #444; font-size: 12px; margin: 0; padding: 10px 0; text-align: right">
+            {{ item.remark }}
+          </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
+              :isDelete="false"
+              :imgs="item.fileInfoList"
+              :isEdit="item.allowWriteAgain"></delete-upload-img>
+            <upload-img
+              v-if="!setDisabled(item)"
+              :uploadid="uploadid2"
+              @newimgarr="newimgarr1"
+              imgText="上传照片"
+              :indexImg="index"
+              :customId="item.customId"
+              :summaryId="item.summaryId"
+              :allowWriteAgain="!setDisabled(item)"
+              @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
+            :disabled="setDisabled(item)"
+            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 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>
+              <span v-if="item.isMust == 0" class="van-f-red">*</span>{{ item.customName }}
+            </template>
+          </van-cell>
+          <z-checkbox
+            :disabled="setDisabled(item)"
+            :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
+            :disabled="setDisabled(item)"
+            :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, getDeptsByUser } 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 [];
+      },
+    },
+    approvalStatus: {
+      type: String,
+      default: '',
+    },
+    source: {
+      type: String,
+      default: '',
+    },
+  },
+  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: '',
+      activaFlag: true,
+    };
+  },
+  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: {
+    setDisabled(item) {
+      if (this.approvalStatus == '3' && this.source == 'VisitSummary') {
+        return false;
+      } else {
+        return true;
+      }
+    },
+    showCalendarClick(val) {
+      if (!val.allowWriteAgain) return;
+      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.collectionItemList[q].answerType == 'dq' ||
+            this.collectionItemList[q].answerType == 'xsb') &&
+          this.activaFlag
+        ) {
+          debugger;
+          this.activaFlag = false;
+          if (this.collectionItemList[q].answerType == 'xsb') {
+            this.getDeptsBy(this.collectionItemList[q].answerValue);
+            this.getDeptInfo(
+              'dept',
+              this.collectionItemList[q].answerType,
+              this.collectionItemList[q].answerValue
+            );
+          } else {
+            this.getDeptInfo(
+              'dept',
+              this.collectionItemList[q].answerType,
+              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' &&
+          this.collectionItemList[q].fileInfoList
+        ) {
+          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 == 'dq') {
+        this.deptForm.parentId = this.companyCode;
+      } else if (grade == 'xsb') {
+        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.companyList.find((item) => item.deptName == 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.regionList.find((item) => item.deptName == 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.deptName == 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;
+          }
+        }
+      });
+    },
+    getDeptsBy(answerValue) {
+      getDeptsByUser().then((res) => {
+        if (res.data && res.code == 200) {
+          let arr = [];
+          res.data.forEach((val) => {
+            arr.push({
+              ancestors: val.ancestors || '',
+              deptCode: val.deptCode || '',
+              deptId: val.deptId || '',
+              deptLevel: val.deptLevel || '',
+              deptName: val.deptName || '',
+              parentId: val.parentId || '',
+            });
+          });
+          this.deptList = arr;
+          if (answerValue) {
+            let findCompany = this.regionList.find((item) => item.deptCode == answerValue);
+            // this.onSalesDepartmentConfirm(findCompany);
+          } else {
+            this.onSalesDepartmentConfirm(this.deptList[0]);
+          }
+        }
+      });
+    },
+    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 },
+          });
+        }
+      }
+    },
+    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;
+      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');
+        }
+      }
+    },
+    onregionConfirm(val) {
+      this.RegionShow = false;
+      this.companyCode = val.deptId;
+      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 == 'xsb') {
+          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');
+        }
+      }
+    },
+    onSalesDepartmentConfirm(val) {
+      this.SalesDepartmentShow = false;
+      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>

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

@@ -72,7 +72,6 @@ export default {
           userSummaryId: row.userSummaryId,
           summaryApprovalId: row.summaryApprovalId,
           source: 'SUPTaskApproval',
-          approvalType: this.tabVal,
         },
       });
     },

+ 4 - 6
src/views/week/VisitSummaryDetail.vue

@@ -47,7 +47,7 @@
         ref="componVisitSummary"></componVisitSummary>
     </div>
     <br />
-    <div class="approvalRemarh" v-if="source == 'SUPTaskApproval' && approvalType == '1'">
+    <div class="approvalRemarh" v-if="source == 'SUPTaskApproval' && info.approvalStatus == '1'">
       <div class="approvalLabel">审批意见</div>
       <div class="remark">
         <van-field
@@ -66,12 +66,12 @@
         </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 class="submitBtn" block type="info" color="#0057ba" @click="submitApproval">
           提交审批
         </van-button>
       </div>
     </template>
-    <template v-if="source == 'SUPTaskApproval' && approvalType == '1'">
+    <template v-if="source == 'SUPTaskApproval' && info.approvalStatus == '1'">
       <div class="bottomBtn">
         <van-button color="red" round @click="approvalStoreFun('Nopass')">拒绝</van-button>
         <van-button type="primary" round @click="approvalStoreFun('pass')">通过</van-button>
@@ -125,13 +125,11 @@ export default {
       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;
@@ -211,7 +209,7 @@ export default {
         this.$router.replace({
           path: '/SUPTaskApproval',
           query: {
-            tabVal: this.approvalType,
+            tabVal: this.info.approvalStatus == '1' ? '1' : '2',
           },
         });
       } else {

+ 858 - 0
src/views/week/allowWriteAgainSummary.vue

@@ -0,0 +1,858 @@
+<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 }}
+            </template>
+          </van-cell>
+          <!-- allowWriteAgain 是否允许补填 true/false -->
+          <van-field
+            v-model="item.answerValue"
+            :placeholder="item.customName"
+            type="number"
+            :disabled="!item.allowWriteAgain"
+            @input="numberFn(item, index)"></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 == 'rq'" 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"
+            clickable
+            name="calendar"
+            placeholder="点击选择日期"
+            readonly
+            :disabled="!item.allowWriteAgain"
+            @click="showCalendarClick(index)" />
+          <p style="color: #444; font-size: 12px; margin: 0; padding: 10px 0; text-align: right">
+            {{ item.remark }}
+          </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
+              :isDelete="false"
+              :imgs="item.fileInfoList"
+              :isEdit="item.allowWriteAgain"></delete-upload-img>
+            <upload-img
+              v-if="item.allowWriteAgain"
+              :uploadid="uploadid2"
+              @newimgarr="newimgarr1"
+              imgText="上传照片"
+              :indexImg="index"
+              :customId="item.customId"
+              :summaryId="item.summaryId"
+              :allowWriteAgain="item.allowWriteAgain"
+              @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
+            :disabled="!item.allowWriteAgain"
+            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
+            :disabled="!item.allowWriteAgain"
+            :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
+            :disabled="!item.allowWriteAgain"
+            :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, getDeptsByUser } 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 [];
+      },
+    },
+    approvalStatus: {
+      type: String,
+      default: '',
+    },
+    source: {
+      type: String,
+      default: '',
+    },
+  },
+  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: '',
+      activaFlag: true,
+    };
+  },
+  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) {
+      if (!val.allowWriteAgain) return;
+      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.collectionItemList[q].answerType == 'dq' ||
+        //     this.collectionItemList[q].answerType == 'xsb') &&
+        //   this.activaFlag
+        // ) {
+        //   this.activaFlag = false;
+        //   if (this.collectionItemList[q].answerType == 'xsb') {
+        //     this.getDeptsBy(this.collectionItemList[q].answerValue);
+        //     this.getDeptInfo(
+        //       'dept',
+        //       this.collectionItemList[q].answerType,
+        //       this.collectionItemList[q].answerValue
+        //     );
+        //   } else {
+        //     this.getDeptInfo(
+        //       'dept',
+        //       this.collectionItemList[q].answerType,
+        //       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' &&
+          this.collectionItemList[q].fileInfoList
+        ) {
+          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 == 'dq') {
+        this.deptForm.parentId = this.companyCode;
+      } else if (grade == 'xsb') {
+        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.companyList.find((item) => item.deptName == 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.regionList.find((item) => item.deptName == 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.deptName == 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;
+          }
+        }
+      });
+    },
+    getDeptsBy(answerValue) {
+      getDeptsByUser().then((res) => {
+        if (res.data && res.code == 200) {
+          let arr = [];
+          res.data.forEach((val) => {
+            arr.push({
+              ancestors: val.ancestors || '',
+              deptCode: val.deptCode || '',
+              deptId: val.deptId || '',
+              deptLevel: val.deptLevel || '',
+              deptName: val.deptName || '',
+              parentId: val.parentId || '',
+            });
+          });
+          this.deptList = arr;
+          if (answerValue) {
+            let findCompany = this.regionList.find((item) => item.deptCode == answerValue);
+            // this.onSalesDepartmentConfirm(findCompany);
+          } else {
+            this.onSalesDepartmentConfirm(this.deptList[0]);
+          }
+        }
+      });
+    },
+    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 },
+          });
+        }
+      }
+    },
+    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;
+      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');
+        }
+      }
+    },
+    onregionConfirm(val) {
+      this.RegionShow = false;
+      this.companyCode = val.deptId;
+      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 == 'xsb') {
+          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');
+        }
+      }
+    },
+    onSalesDepartmentConfirm(val) {
+      this.SalesDepartmentShow = false;
+      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>

+ 20 - 7
src/views/week/componVisitSummary.vue

@@ -13,7 +13,7 @@
             v-model="item.answerValue"
             :placeholder="item.customName"
             type="number"
-            :disabled="!item.allowWriteAgain"
+            :disabled="setDisabled(item)"
             @input="numberFn(item, index)"></van-field>
           <p style="color: #444; font-size: 12px; margin: 0; padding: 10px 0; text-align: right">
             {{ item.remark }}
@@ -31,7 +31,7 @@
             name="calendar"
             placeholder="点击选择日期"
             readonly
-            :disabled="!item.allowWriteAgain"
+            :disabled="setDisabled(item)"
             @click="showCalendarClick(index)" />
           <p style="color: #444; font-size: 12px; margin: 0; padding: 10px 0; text-align: right">
             {{ item.remark }}
@@ -52,14 +52,14 @@
               :imgs="item.fileInfoList"
               :isEdit="item.allowWriteAgain"></delete-upload-img>
             <upload-img
-              v-if="item.allowWriteAgain"
+              v-if="!setDisabled(item)"
               :uploadid="uploadid2"
               @newimgarr="newimgarr1"
               imgText="上传照片"
               :indexImg="index"
               :customId="item.customId"
               :summaryId="item.summaryId"
-              :allowWriteAgain="item.allowWriteAgain"
+              :allowWriteAgain="!setDisabled(item)"
               @click="imgClick(item, index)"></upload-img>
           </van-row>
         </div>
@@ -70,7 +70,7 @@
             </template>
           </van-cell>
           <van-field
-            :disabled="!item.allowWriteAgain"
+            :disabled="setDisabled(item)"
             v-model="item.answerValue"
             :formatter="formatter"
             :placeholder="item.customName"></van-field>
@@ -160,7 +160,7 @@
             </template>
           </van-cell>
           <z-checkbox
-            :disabled="!item.allowWriteAgain"
+            :disabled="setDisabled(item)"
             :answerType="item.answerType"
             :checkboxval="item.answerValue"
             :collectionType="item.customOptionList"
@@ -175,7 +175,7 @@
             </template>
           </van-cell>
           <z-radio
-            :disabled="!item.allowWriteAgain"
+            :disabled="setDisabled(item)"
             :answerType="item.answerType"
             :collectionType="item.collectionType"
             :radio="item.answerValue"
@@ -261,6 +261,10 @@ export default {
       type: String,
       default: '',
     },
+    source: {
+      type: String,
+      default: '',
+    },
   },
   data() {
     return {
@@ -338,6 +342,15 @@ export default {
     },
   },
   methods: {
+    setDisabled(item) {
+      if (this.approvalStatus == '3' && this.source == 'VisitSummary') {
+        return false;
+      } else if ((!this.approvalStatus || this.approvalStatus == '1') && item.allowWriteAgain) {
+        return false;
+      } else {
+        return true;
+      }
+    },
     showCalendarClick(val) {
       if (!val.allowWriteAgain) return;
       this.dateIndex = val;