浏览代码

处理履职进度出现 nan的问题

jiawuxian 1 年之前
父节点
当前提交
0776988f1e
共有 1 个文件被更改,包括 747 次插入741 次删除
  1. 747 741
      src/views/menu/resumption/detail.vue

+ 747 - 741
src/views/menu/resumption/detail.vue

@@ -20,7 +20,7 @@
                   <div class="title">NFC</div>
                   <div class="content">
                     <span class="con_num ok">已扫 {{ yesList.length }}</span>
-                    <span class="con_num no">未扫 {{ noList.length}}</span>
+                    <span class="con_num no">未扫 {{ noList.length }}</span>
                   </div>
                 </div>
               </van-col>
@@ -29,18 +29,7 @@
         </van-panel>
       </div>
       <div class="progress">
-        <van-progress
-          :percentage="
-            (
-              ((resumptionData.yesPointNums + yesList.length) /
-                (resumptionData.yesPointNums +
-                  resumptionData.noPointNums +
-                  yesList.length +
-                  noList.length)) *
-              100
-            ).toFixed(2)
-          "
-        />
+        <van-progress :percentage="calcProgress" />
       </div>
       <!--   检查区域   -->
       <div class="card">
@@ -66,15 +55,25 @@
           <van-tabs>
             <van-tab title="未扫描" name="b">
               <van-list finished-text="没有更多了" @load="onLoad">
-                <van-cell v-for="item in sheetNoList" :key="item.nfcCode" :label="areasMap[item.areaId] " :title="item.nfcName">
+                <van-cell
+                  v-for="item in sheetNoList"
+                  :key="item.nfcCode"
+                  :label="areasMap[item.areaId]"
+                  :title="item.nfcName"
+                >
                   <!-- <img :src="require('../../../assets/svg/NFC.svg')" class="nfc-icon"/>-->
-                  <span >{{item.pointScan === 1?'必扫':'可选'}}</span>
+                  <span>{{ item.pointScan === 1 ? '必扫' : '可选' }}</span>
                 </van-cell>
               </van-list>
             </van-tab>
             <van-tab title="已扫描" name="a">
               <van-list finished-text="没有更多了" @load="onLoad">
-                <van-cell v-for="item in sheetYesList" :key="item.nfcCode"  :label="areasMap[item.areaId]" :title="item.nfcName">
+                <van-cell
+                  v-for="item in sheetYesList"
+                  :key="item.nfcCode"
+                  :label="areasMap[item.areaId]"
+                  :title="item.nfcName"
+                >
                   <span style="color: green">已完成</span>
                 </van-cell>
               </van-list>
@@ -94,9 +93,11 @@
                 <div>
                   <span style="display: inline-block; color: #26850c">{{ areaYesList.length }}</span>
                   <span style="display: inline-block; color: #0e0e0e">/</span>
-                  <span style="display: inline-block; color: #0e0e0e">{{ areaNoList.length + areaYesList.length}}</span>
+                  <span style="display: inline-block; color: #0e0e0e">{{
+                    areaNoList.length + areaYesList.length
+                  }}</span>
                 </div>
-                <img :src="require('../../../assets/svg/NFC.svg')" class="nfc-icon"  />
+                <img :src="require('../../../assets/svg/NFC.svg')" class="nfc-icon" />
               </template>
             </van-cell>
           </van-col>
@@ -104,8 +105,12 @@
             <van-cell>
               <div class="okAll">
                 <!--                <van-button type="default" icon="checked" size="small" @click="changeSwitch">一键正常</van-button>-->
-                <span  v-for="(va, i) in areas" :key="va.areaId">
-                  <van-radio-group  v-if="va.areaId === areaId"  v-model="selectRadio[va.areaId]" @change="changeAreaSwitch(va.areaId)">
+                <span v-for="(va, i) in areas" :key="va.areaId">
+                  <van-radio-group
+                    v-if="va.areaId === areaId"
+                    v-model="selectRadio[va.areaId]"
+                    @change="changeAreaSwitch(va.areaId)"
+                  >
                     <van-radio name="1" icon-size="20px">一键正常</van-radio>
                   </van-radio-group>
                 </span>
@@ -143,7 +148,7 @@
             title-style="min-width:80%"
           >
             <template #title>
-              <pre style="font-weight: bold">{{ item.itemName}}</pre>
+              <pre style="font-weight: bold">{{ item.itemName }}</pre>
             </template>
             <div v-for="(point, index) in item.points" :key="index">
               <van-cell>
@@ -181,9 +186,11 @@
                 </template>
               </van-cell>
               <van-cell-group v-show="point.resValue">
-
                 <van-field
-                  :rules="[{ required: enable, message: '请输入情况描述' },{validator, message: '输入长度200字符以内'}]"
+                  :rules="[
+                    { required: enable, message: '请输入情况描述' },
+                    { validator, message: '输入长度200字符以内' }
+                  ]"
                   :required="enable"
                   v-model="point.resRemark"
                   :readonly="!enable"
@@ -209,7 +216,6 @@
                 >
                   <template #input>
                     <div class="upload-box">
-
                       <uploader :maxCount="5" v-if="enable" v-model="point.imgs" />
                       <van-cell v-else>
                         <div
@@ -241,7 +247,7 @@
         </van-collapse>
       </div>
 
-      <div class="bottomClass" v-if="enable" v-show="showButton" >
+      <div class="bottomClass" v-if="enable" v-show="showButton">
         <van-row>
           <van-col span="8">
             <van-button type="primary" @click="clickNFC">扫描NFC</van-button>
@@ -261,821 +267,821 @@
 </template>
 
 <script>
-  import { ImagePreview, Dialog } from 'vant'
-  import NavBar from '@/components/NavBar/index.vue'
-  import Uploader from '@/components/upload/gxuploader.vue'
-  import SelectCell from '@/components/selectCell/index.vue'
-  import { getDict } from '@/api/toConsult'
-  import { saveTask, taskDetail } from '@/views/menu/resumption/api'
-  import NfcPopup from '@/components/nfcPopup/gxmore'
-  import { imgUrl } from '@/utils'
-  import dayjs from 'dayjs'
-  import { mapGetters } from 'vuex'
-  import { ref } from 'vue'
-  import {uploadBase64} from "@/api/public";
+import { ImagePreview, Dialog } from 'vant'
+import NavBar from '@/components/NavBar/index.vue'
+import Uploader from '@/components/upload/gxuploader.vue'
+import SelectCell from '@/components/selectCell/index.vue'
+import { getDict } from '@/api/toConsult'
+import { saveTask, taskDetail } from '@/views/menu/resumption/api'
+import NfcPopup from '@/components/nfcPopup/gxmore'
+import { imgUrl } from '@/utils'
+import dayjs from 'dayjs'
+import { mapGetters } from 'vuex'
+import { ref } from 'vue'
+import { uploadBase64 } from '@/api/public'
 
-  export default {
-    components: {
-      SelectCell,
-      Uploader,
-      NavBar,
-      NfcPopup,
-      imgUrl,
-      [Dialog.Component.name]: Dialog.Component
-    },
-    data() {
-      return {
-        areaColor: {
-          // 已完成
-          complete: '#26850c',
-          // 未开始
-          noOpen: '#1989fa',
-          // 进行中
-          loading: '#ffa500'
-        },
-        NFCnums: 0,
-        yesNFCnums: 0,
-        currentImgNFC: [],
-        areaId: null,
-        resumptionData: {},
-        areas: [],
-        areasMap: {},
-        checks: [],
-        nfcs: [],
-        selectRadio: {},
-        total_show: false,
-        enable: false,
-        activeNames: [],
-        dayList: [15, 30, 90, 180],
-        yesList: [],
-        noList: [],
-        areaYesList:[],
-        areaNoList:[],
-        sheetYesList: [],
-        sheetNoList: [],
-        loading: false,
-        finished: false,
-        selectArea: null,
-        showButton:true,
-        preViewImages: {
-          images: [],
-          startPosition: 0
-        },
-        timer:null,
+export default {
+  components: {
+    SelectCell,
+    Uploader,
+    NavBar,
+    NfcPopup,
+    imgUrl,
+    [Dialog.Component.name]: Dialog.Component
+  },
+  data() {
+    return {
+      areaColor: {
+        // 已完成
+        complete: '#26850c',
+        // 未开始
+        noOpen: '#1989fa',
+        // 进行中
+        loading: '#ffa500'
+      },
+      NFCnums: 0,
+      yesNFCnums: 0,
+      currentImgNFC: [],
+      areaId: null,
+      resumptionData: {},
+      areas: [],
+      areasMap: {},
+      checks: [],
+      nfcs: [],
+      selectRadio: {},
+      total_show: false,
+      enable: false,
+      activeNames: [],
+      dayList: [15, 30, 90, 180],
+      yesList: [],
+      noList: [],
+      areaYesList: [],
+      areaNoList: [],
+      sheetYesList: [],
+      sheetNoList: [],
+      loading: false,
+      finished: false,
+      selectArea: null,
+      showButton: true,
+      preViewImages: {
+        images: [],
+        startPosition: 0
+      },
+      timer: null
+    }
+  },
+  computed: {
+    ...mapGetters(['id']),
+    calcProgress() {
+      let p = (
+        ((this.resumptionData.yesPointNums + this.yesList.length) /
+          (this.resumptionData.yesPointNums + this.resumptionData.noPointNums + this.yesList.length + this.noList.length)) *
+        100
+      ).toFixed(2)
+      
+      if (window.isNaN(p)) return 0
+
+      return p
+    }
+  },
+  mounted() {
+    this.getResumptionData()
+    window.openNFCScanCallBack = this.openNFCScanCallBack
+  },
+  created() {
+    getDict('rectification_deadline').then(res => {
+      let { data } = res
+      this.dayList = data
+    })
+  },
+  methods: {
+    showButtoFun(vel) {
+      if (val === 1) {
+        this.showButton = false
+      }
+      if (val === 2) {
+        this.showButton = true
       }
     },
-    computed: {
-      ...mapGetters(['id'])
-    },
-    mounted() {
-      this.getResumptionData();
-      window.openNFCScanCallBack = this.openNFCScanCallBack;
+    //长度校验
+    validator(val) {
+      let len = val.length
+      if (len > 200) {
+        this.$toast.fail('问题情况输入长度不能超过200')
+        return false
+      } else {
+        return true
+      }
     },
-    created() {
-      getDict('rectification_deadline').then(res => {
-        let { data } = res
-        this.dayList = data
+    checkNFC() {
+      this.useNFC()
+      this.$toast.loading({
+        duration: 0, // 持续展示 toast
+        position: 'top',
+        forbidClick: true,
+        message: '请靠近NFC标签,进行扫描!'
       })
-    },
-    methods: {
-      showButtoFun(vel){
-        if( val === 1){
-          this.showButton = false;
-        }
-        if(val === 2){
-          this.showButton = true;
-        }
-      },
-      //长度校验
-      validator(val) {
-        let len = val.length;
-        if( len > 200) {
-          this.$toast.fail('问题情况输入长度不能超过200');
-          return false
-        }else {
-          return true
-        }
-      },
-      checkNFC(){
-        this.useNFC();
-        this.$toast.loading({
-          duration: 0, // 持续展示 toast
-          position: 'top',
-          forbidClick: true,
-          message: '请靠近NFC标签,进行扫描!',
-        });
 
-        let second = 15;
-        this.timer = setInterval(() => {
-          second--;
-          if(!second){
-            this.$toast.clear();
-            clearInterval(this.timer);
-            this.$toast({
-              type:"fail",
-              position:"top",
-              message: '未扫描到任何信息!',
-            });
-          }
-        }, 1000);
-
-      },
-      openNFCScanCallBack(nfcStr){
-        clearInterval(this.timer);
-        let nfcCode = '';
-        try{
-          let nfc = JSON.parse(nfcStr);
-          nfcCode =  nfc.content;
-        }catch (e) {
-          nfcCode = nfcStr.content;
+      let second = 15
+      this.timer = setInterval(() => {
+        second--
+        if (!second) {
+          this.$toast.clear()
+          clearInterval(this.timer)
+          this.$toast({
+            type: 'fail',
+            position: 'top',
+            message: '未扫描到任何信息!'
+          })
         }
-        this.checkNfcFilter(nfcCode);
-      },
-      checkNfcFilter(nfcCode){
-        let areaId = null;
-        let checkOk =  false;
-        this.nfcs.forEach(v => {
-          if(v.nfcCode === nfcCode){
-            areaId = v.areaId;
-            this.switchArea(areaId);
-            if(v.status === 1){
-              // this.$toast.fail('NFC点位:' + v.nfcName + '已扫描,请勿重复扫描!');
-              this.$toast({
-                type:"fail",
-                message:'NFC点位:' + v.nfcName + '已扫描,请勿重复扫描!',
-                position:"top"
-              })
-
-              throw new Error('NFC点位:' + v.nfcName + '已扫描,请勿重复扫描!');
-            }
-            v.status = 1
-            v.scanMethod = 2
-            v.submitTime = dayjs().format('YYYY-MM-DD HH:mm:ss')
-            v.submitBy = this.id
-            // this.$toast.success('NFC点位:' + v.nfcName + '扫描成功!');
+      }, 1000)
+    },
+    openNFCScanCallBack(nfcStr) {
+      clearInterval(this.timer)
+      let nfcCode = ''
+      try {
+        let nfc = JSON.parse(nfcStr)
+        nfcCode = nfc.content
+      } catch (e) {
+        nfcCode = nfcStr.content
+      }
+      this.checkNfcFilter(nfcCode)
+    },
+    checkNfcFilter(nfcCode) {
+      let areaId = null
+      let checkOk = false
+      this.nfcs.forEach(v => {
+        if (v.nfcCode === nfcCode) {
+          areaId = v.areaId
+          this.switchArea(areaId)
+          if (v.status === 1) {
+            // this.$toast.fail('NFC点位:' + v.nfcName + '已扫描,请勿重复扫描!');
             this.$toast({
-              type:"success",
-              message:'NFC点位:' + v.nfcName + '扫描成功!',
-              position:"top"
+              type: 'fail',
+              message: 'NFC点位:' + v.nfcName + '已扫描,请勿重复扫描!',
+              position: 'top'
             })
 
-            checkOk = true;
+            throw new Error('NFC点位:' + v.nfcName + '已扫描,请勿重复扫描!')
           }
-        });
-        this.updateNFC(1,nfcCode);
-        if(!checkOk){
-          // this.$toast.fail(nfcCode + ",不在本次履职范围内!");
+          v.status = 1
+          v.scanMethod = 2
+          v.submitTime = dayjs().format('YYYY-MM-DD HH:mm:ss')
+          v.submitBy = this.id
+          // this.$toast.success('NFC点位:' + v.nfcName + '扫描成功!');
           this.$toast({
-            type:"fail",
-            message:"此NFC标签,不在本次履职范围内!",
-            position:"top"
+            type: 'success',
+            message: 'NFC点位:' + v.nfcName + '扫描成功!',
+            position: 'top'
           })
+
+          checkOk = true
         }
-        this.validateArea(areaId)
-      },
-      switchArea(areaId){
-        this.areas.forEach((area, i) => {
-          if (areaId === area.areaId) {
-            this.activeArea(area, i)
-          }
+      })
+      this.updateNFC(1, nfcCode)
+      if (!checkOk) {
+        // this.$toast.fail(nfcCode + ",不在本次履职范围内!");
+        this.$toast({
+          type: 'fail',
+          message: '此NFC标签,不在本次履职范围内!',
+          position: 'top'
         })
-      },
-      useNFC(){
-        let system = this.isAndroidOrIos();
-        const parms = {
-          "iOS_SessionType":"0"
-        };
-        if(system === 1){
-          //android
-          // 判断当前环境是是否存在 js桥 'sap'
-          const hasSap = window.hasOwnProperty('sap');
-          if (hasSap) {
-            // 判断是否存在方法 ?preview
-            const fun = sap.hasOwnProperty('openNFCScan');
-            if (fun) {
-              sap.openNFCScan(JSON.stringify(parms));
-            }
-          }
+      }
+      this.validateArea(areaId)
+    },
+    switchArea(areaId) {
+      this.areas.forEach((area, i) => {
+        if (areaId === area.areaId) {
+          this.activeArea(area, i)
         }
-
-        if(system === 2){
-          //ios
-          // 判断 ios是否存在方法 preview
-          const fun = window.webkit.messageHandlers.hasOwnProperty('openNFCScan')
+      })
+    },
+    useNFC() {
+      let system = this.isAndroidOrIos()
+      const parms = {
+        iOS_SessionType: '0'
+      }
+      if (system === 1) {
+        //android
+        // 判断当前环境是是否存在 js桥 'sap'
+        const hasSap = window.hasOwnProperty('sap')
+        if (hasSap) {
+          // 判断是否存在方法 ?preview
+          const fun = sap.hasOwnProperty('openNFCScan')
           if (fun) {
-            window.webkit.messageHandlers.openNFCScan.postMessage(JSON.stringify(parms))
+            sap.openNFCScan(JSON.stringify(parms))
           }
         }
-      },
-      isAndroidOrIos(){
-        const urls = navigator.userAgent;
-        let isAndroid = urls.indexOf('Android') > -1 || urls.indexOf('Linux') > -1;
-        let isIos = !!urls.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
-        if(isAndroid){
-          return 1;
-        }
-        if(isIos){
-          return 2;
+      }
+
+      if (system === 2) {
+        //ios
+        // 判断 ios是否存在方法 preview
+        const fun = window.webkit.messageHandlers.hasOwnProperty('openNFCScan')
+        if (fun) {
+          window.webkit.messageHandlers.openNFCScan.postMessage(JSON.stringify(parms))
         }
-      },
-      preViewNFC(i) {
-        this.preViewImages.images = this.currentImgNFC.map(v => imgUrl(v.img))
-        this.preViewImages.startPosition = i
-        ImagePreview(this.preViewImages)
-      },
-      clickWarnImage(arr, i) {
-        this.preViewImages.images = arr.map(v => imgUrl(v.imgPath))
-        this.preViewImages.startPosition = i
-        ImagePreview(this.preViewImages)
-      },
-      getResumptionData() {
-        let data = {
-          taskId: this.$route.query.id,
-          taskDate: this.$route.query.taskDate
+      }
+    },
+    isAndroidOrIos() {
+      const urls = navigator.userAgent
+      let isAndroid = urls.indexOf('Android') > -1 || urls.indexOf('Linux') > -1
+      let isIos = !!urls.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)
+      if (isAndroid) {
+        return 1
+      }
+      if (isIos) {
+        return 2
+      }
+    },
+    preViewNFC(i) {
+      this.preViewImages.images = this.currentImgNFC.map(v => imgUrl(v.img))
+      this.preViewImages.startPosition = i
+      ImagePreview(this.preViewImages)
+    },
+    clickWarnImage(arr, i) {
+      this.preViewImages.images = arr.map(v => imgUrl(v.imgPath))
+      this.preViewImages.startPosition = i
+      ImagePreview(this.preViewImages)
+    },
+    getResumptionData() {
+      let data = {
+        taskId: this.$route.query.id,
+        taskDate: this.$route.query.taskDate
+      }
+      taskDetail(data).then(res => {
+        let { taskId, taskName, yesPointNums, noPointNums, yesNFCNums, noNFCNums, status } = res.data
+        this.resumptionData = {
+          taskId,
+          taskName,
+          yesPointNums,
+          noPointNums,
+          yesNFCNums,
+          noNFCNums,
+          status
         }
-        taskDetail(data).then(res => {
-          let { taskId, taskName, yesPointNums, noPointNums, yesNFCNums, noNFCNums, status } = res.data
-          this.resumptionData = {
-            taskId,
-            taskName,
-            yesPointNums,
-            noPointNums,
-            yesNFCNums,
-            noNFCNums,
-            status
-          }
-          this.enable = this.resumptionData.status === 1 || this.resumptionData.status === 2
-          this.checks = res.data.checks
-          this.nfcs = res.data.nfcs
-          this.areas = res.data.areas
-          let obj = {};
-          let tts = {};
-          res.data.areas.forEach(function(v,i){
-            obj[v.areaId] = v.areaName;
-            tts[v.areaId] = 0;
-          });
-          this.selectArea = tts;
-          this.areasMap = obj;
-          this.activeArea(this.areas[0], 0)
-          this.openCollapseItems()
-          this.updateNFC(0);
-          this.validateAreaAll();
+        this.enable = this.resumptionData.status === 1 || this.resumptionData.status === 2
+        this.checks = res.data.checks
+        this.nfcs = res.data.nfcs
+        this.areas = res.data.areas
+        let obj = {}
+        let tts = {}
+        res.data.areas.forEach(function (v, i) {
+          obj[v.areaId] = v.areaName
+          tts[v.areaId] = 0
         })
-      },
-      openCollapseItems() {
-        let len = this.checks.length
-        for (let i = 0; i < len; i++) {
-          let title = this.checks[i].itemName
-          this.activeNames.push(title)
-        }
-      },
-      changeAreaSwitch(areaId) {
-        let num = 0;
-        let total = 0;
-        for (let i = 0; i < this.checks.length; i++) {
-          total = total + this.checks[i].points.length;
-          for (let j = 0; j < this.checks[i].points.length; j++) {
-            if(this.checks[i].areaId === areaId){
-              this.checks[i].points[j].dataStatus = 2
+        this.selectArea = tts
+        this.areasMap = obj
+        this.activeArea(this.areas[0], 0)
+        this.openCollapseItems()
+        this.updateNFC(0)
+        this.validateAreaAll()
+      })
+    },
+    openCollapseItems() {
+      let len = this.checks.length
+      for (let i = 0; i < len; i++) {
+        let title = this.checks[i].itemName
+        this.activeNames.push(title)
+      }
+    },
+    changeAreaSwitch(areaId) {
+      let num = 0
+      let total = 0
+      for (let i = 0; i < this.checks.length; i++) {
+        total = total + this.checks[i].points.length
+        for (let j = 0; j < this.checks[i].points.length; j++) {
+          if (this.checks[i].areaId === areaId) {
+            this.checks[i].points[j].dataStatus = 2
+            num++
+          } else {
+            if (this.checks[i].points[j].dataStatus === 2) {
               num++
-            }else{
-              if(this.checks[i].points[j].dataStatus === 2){
-                num++
-              }
             }
           }
         }
-        this.resumptionData.yesPointNums = num
-        this.resumptionData.noPointNums = total - num
-        this.validateAreaAll();
-        this.openCollapseItems()
-      },
-      changeSwitch() {
-        let num = 0;
-        let total = 0;
-        for (let i = 0; i < this.checks.length; i++) {
-          total = total + this.checks[i].points.length;
-          for (let j = 0; j < this.checks[i].points.length; j++) {
-            if(this.checks[i].areaId === this.areaId){
-              this.checks[i].points[j].dataStatus = 2
+      }
+      this.resumptionData.yesPointNums = num
+      this.resumptionData.noPointNums = total - num
+      this.validateAreaAll()
+      this.openCollapseItems()
+    },
+    changeSwitch() {
+      let num = 0
+      let total = 0
+      for (let i = 0; i < this.checks.length; i++) {
+        total = total + this.checks[i].points.length
+        for (let j = 0; j < this.checks[i].points.length; j++) {
+          if (this.checks[i].areaId === this.areaId) {
+            this.checks[i].points[j].dataStatus = 2
+            num++
+          } else {
+            if (this.checks[i].points[j].dataStatus === 2) {
               num++
-            }else{
-              if(this.checks[i].points[j].dataStatus === 2){
-                num++
-              }
             }
           }
         }
-        this.resumptionData.yesPointNums = num
-        this.resumptionData.noPointNums = total - num
-        this.validateAreaAll();
-        this.openCollapseItems()
-      },
-      validateAreaAll() {
-
-        this.areas.forEach((item, index) => {
-          this.validateArea(item.areaId)
-        })
-      },
-      changeCurrentSwitch(areaId) {
-        this.resumptionData.yesPointNums = this.resumptionData.yesPointNums + 1
-        this.resumptionData.noPointNums = this.resumptionData.noPointNums - 1
-        this.validateArea(areaId)
-      },
-      validateArea(areaId) {
-        //检查项数量
-        let total = 0;
-        //完成检查项数量
-        let yes = 0;
-        let loading = 0
-        //完成NFC扫描的数量
-        let nfc_num = 0;
-        let nfc_no = 0;
-        this.checks.forEach(item => {
-          let pointList = item.points
-          pointList.forEach(point => {
-            if (item.areaId === areaId) {
-              total++
-              if (point.dataStatus === 2) {
-                yes++
-                if(point.resValue === 1){
-                  if(point.resRemark === null || point.resRemark === "" || point.rectificationDeadline === null){
-                    loading++;
-                  }
+      }
+      this.resumptionData.yesPointNums = num
+      this.resumptionData.noPointNums = total - num
+      this.validateAreaAll()
+      this.openCollapseItems()
+    },
+    validateAreaAll() {
+      this.areas.forEach((item, index) => {
+        this.validateArea(item.areaId)
+      })
+    },
+    changeCurrentSwitch(areaId) {
+      this.resumptionData.yesPointNums = this.resumptionData.yesPointNums + 1
+      this.resumptionData.noPointNums = this.resumptionData.noPointNums - 1
+      this.validateArea(areaId)
+    },
+    validateArea(areaId) {
+      //检查项数量
+      let total = 0
+      //完成检查项数量
+      let yes = 0
+      let loading = 0
+      //完成NFC扫描的数量
+      let nfc_num = 0
+      let nfc_no = 0
+      this.checks.forEach(item => {
+        let pointList = item.points
+        pointList.forEach(point => {
+          if (item.areaId === areaId) {
+            total++
+            if (point.dataStatus === 2) {
+              yes++
+              if (point.resValue === 1) {
+                if (point.resRemark === null || point.resRemark === '' || point.rectificationDeadline === null) {
+                  loading++
                 }
               }
             }
-          });
-          this.nfcs.forEach(nfc => {
-            if(areaId === nfc.areaId){
-              nfc_num++;
-              if(nfc.status === 0){
-                nfc_no++;
-              }
+          }
+        })
+        this.nfcs.forEach(nfc => {
+          if (areaId === nfc.areaId) {
+            nfc_num++
+            if (nfc.status === 0) {
+              nfc_no++
             }
-          });
-        });
-
-        // 0:未开始,2:进行中,1已完成
-        let areaStatus = '0'
-        if (total === yes &&  nfc_no === 0) {
-          //检查项完成检查,nfc完成扫描,或者没有nfc扫描
-          areaStatus = '1'
-          if(loading > 0){
-            areaStatus = '2'
           }
-        } else if ( yes === 0 && nfc_no === nfc_num  ) {
-          //检查项完成检查项为0,nfc也没动
-          areaStatus = '0'
-        } else {
+        })
+      })
+
+      // 0:未开始,2:进行中,1已完成
+      let areaStatus = '0'
+      if (total === yes && nfc_no === 0) {
+        //检查项完成检查,nfc完成扫描,或者没有nfc扫描
+        areaStatus = '1'
+        if (loading > 0) {
           areaStatus = '2'
         }
+      } else if (yes === 0 && nfc_no === nfc_num) {
+        //检查项完成检查项为0,nfc也没动
+        areaStatus = '0'
+      } else {
+        areaStatus = '2'
+      }
 
-        this.areas.forEach((item, index) => {
-          if (item.areaId === areaId) {
-            this.areas[index].areaStatus = areaStatus
-          }
-        })
-      },
-      clickNFC() {
-        let arr = this.nfcs.filter(item => {
-          return item.areaId === this.areaId && item.status === 0
-        })
+      this.areas.forEach((item, index) => {
+        if (item.areaId === areaId) {
+          this.areas[index].areaStatus = areaStatus
+        }
+      })
+    },
+    clickNFC() {
+      let arr = this.nfcs.filter(item => {
+        return item.areaId === this.areaId && item.status === 0
+      })
 
-        if (arr.length > 0) {
-          let nfcs = []
-          for (const nfc of arr) {
-            let pro = {}
-            pro.checkName = nfc.nfcName
-            pro.nfccdoe = nfc.nfcCode
-            nfcs.push(pro)
-          }
-          this.$refs.NfcPopup.show(nfcs)
-        }else{
-          this.$toast.fail({
-            message: '该区域没有需要扫描的NFC!',
-            position: 'top'
-          })
+      if (arr.length > 0) {
+        let nfcs = []
+        for (const nfc of arr) {
+          let pro = {}
+          pro.checkName = nfc.nfcName
+          pro.nfccdoe = nfc.nfcCode
+          nfcs.push(pro)
         }
-      },
-      cancelImg(imgItem) {
-        this.updateNFC(2,imgItem.nfcCode,imgItem);
-        this.validateArea(this.areaId)
-      },
-      changeNfcImg(imgItem) {
-        this.updateNFC(1,imgItem.nfcCode,imgItem);
-        this.validateArea(this.areaId);
-      },
-      updateNFC(type,nfcCode,imgItem){
-        //type 1 表示新增加扫描的数据,2 表示新增未扫描的数量,0 未做任何操作
-        //nfcCode 代表扫描和减少的nfc数据。
-        //更新全局nfc已扫描 和未扫描
-        this.yesList = [];
-        this.noList = [];
-        this.areaYesList = [];
-        this.areaNoList = [];
-        this.nfcs.forEach(item => {
-          if(type === 1){
-            //新增扫描到的标签
-            if(nfcCode === item.nfcCode){
-              item.status = 1
-              item.submitTime = dayjs().format('YYYY-MM-DD HH:mm:ss')
-              item.submitBy = this.id
-              if(imgItem){
-                item.scanMethod = 1
-                //拍照NFC特殊处理
-                item.img = imgItem.url
-                this.currentImgNFC.push(item)
-              }else{
-                item.scanMethod = 0
-              }
+        this.$refs.NfcPopup.show(nfcs)
+      } else {
+        this.$toast.fail({
+          message: '该区域没有需要扫描的NFC!',
+          position: 'top'
+        })
+      }
+    },
+    cancelImg(imgItem) {
+      this.updateNFC(2, imgItem.nfcCode, imgItem)
+      this.validateArea(this.areaId)
+    },
+    changeNfcImg(imgItem) {
+      this.updateNFC(1, imgItem.nfcCode, imgItem)
+      this.validateArea(this.areaId)
+    },
+    updateNFC(type, nfcCode, imgItem) {
+      //type 1 表示新增加扫描的数据,2 表示新增未扫描的数量,0 未做任何操作
+      //nfcCode 代表扫描和减少的nfc数据。
+      //更新全局nfc已扫描 和未扫描
+      this.yesList = []
+      this.noList = []
+      this.areaYesList = []
+      this.areaNoList = []
+      this.nfcs.forEach(item => {
+        if (type === 1) {
+          //新增扫描到的标签
+          if (nfcCode === item.nfcCode) {
+            item.status = 1
+            item.submitTime = dayjs().format('YYYY-MM-DD HH:mm:ss')
+            item.submitBy = this.id
+            if (imgItem) {
+              item.scanMethod = 1
+              //拍照NFC特殊处理
+              item.img = imgItem.url
+              this.currentImgNFC.push(item)
+            } else {
+              item.scanMethod = 0
             }
           }
-          if(type === 2){
-            //新增未扫描的标签
-            if(nfcCode === item.nfcCode){
-              item.status = 0
-              item.scanMethod = null
-              item.submitTime = null
-              item.submitBy = null
-              if(item.img){
-                //拍照NFC特殊处理
-                item.img = null;
-                this.currentImgNFC = this.currentImgNFC.filter(v => {
-                  return v.nfcCode !== item.nfcCode
-                })
-              }
+        }
+        if (type === 2) {
+          //新增未扫描的标签
+          if (nfcCode === item.nfcCode) {
+            item.status = 0
+            item.scanMethod = null
+            item.submitTime = null
+            item.submitBy = null
+            if (item.img) {
+              //拍照NFC特殊处理
+              item.img = null
+              this.currentImgNFC = this.currentImgNFC.filter(v => {
+                return v.nfcCode !== item.nfcCode
+              })
             }
           }
-          //扫描到nfc
-          if(item.status === 1){
-            this.yesList.push(item);
-            if(this.areaId === item.areaId){
-              this.areaYesList.push(item);
-            }
-          }else{
-            this.noList.push(item);
-            if(this.areaId === item.areaId){
-              this.areaNoList.push(item);
-            }
+        }
+        //扫描到nfc
+        if (item.status === 1) {
+          this.yesList.push(item)
+          if (this.areaId === item.areaId) {
+            this.areaYesList.push(item)
+          }
+        } else {
+          this.noList.push(item)
+          if (this.areaId === item.areaId) {
+            this.areaNoList.push(item)
           }
-
-        });
-
-      },
-      showDetail(data) {
-        if(data === 1){
-          this.sheetYesList = this.yesList;
-          this.sheetNoList = this.noList;
-        }else{
-          this.sheetNoList = this.areaNoList;
-          this.sheetYesList = this.areaYesList;
         }
-        this.total_show = true
-      },
-      onLoad() {
-
-      },
-      //点击区域
-      clickArea(area, index) {
-        this.activeArea(area, index)
-      },
-      //选中区域时数据变更
-      activeArea(area, index) {
-        //获取当前选中区域
-        this.areaId = area.areaId
-        this.updateNFC(0);
-        //设置选中样式
-        this.$nextTick(() => {
-          let doms = document.getElementsByClassName('check-area')
-          Array.prototype.forEach.call(doms, item => {
-            item.classList.remove('active')
-          })
-          doms[index].classList.add('active')
+      })
+    },
+    showDetail(data) {
+      if (data === 1) {
+        this.sheetYesList = this.yesList
+        this.sheetNoList = this.noList
+      } else {
+        this.sheetNoList = this.areaNoList
+        this.sheetYesList = this.areaYesList
+      }
+      this.total_show = true
+    },
+    onLoad() {},
+    //点击区域
+    clickArea(area, index) {
+      this.activeArea(area, index)
+    },
+    //选中区域时数据变更
+    activeArea(area, index) {
+      //获取当前选中区域
+      this.areaId = area.areaId
+      this.updateNFC(0)
+      //设置选中样式
+      this.$nextTick(() => {
+        let doms = document.getElementsByClassName('check-area')
+        Array.prototype.forEach.call(doms, item => {
+          item.classList.remove('active')
         })
-        let nfcs = 0
-        let current = []
-        let yesNum = 0;
-        for (let i = 0; i < this.nfcs.length; i++) {
-          let nfc = this.nfcs[i]
-          let areaId = nfc.areaId
-          if (areaId === area.areaId) {
-            nfcs++
-            if (nfc.status === 1) {
-              yesNum++;
-            }
-            if (nfc.img) {
-              current.push(nfc)
-            }
+        doms[index].classList.add('active')
+      })
+      let nfcs = 0
+      let current = []
+      let yesNum = 0
+      for (let i = 0; i < this.nfcs.length; i++) {
+        let nfc = this.nfcs[i]
+        let areaId = nfc.areaId
+        if (areaId === area.areaId) {
+          nfcs++
+          if (nfc.status === 1) {
+            yesNum++
+          }
+          if (nfc.img) {
+            current.push(nfc)
           }
         }
-        this.currentImgNFC = current
-        this.yesNFCnums = yesNum;
-        this.NFCnums = nfcs
-        this.selectArea = area
-      },
-      //保存数据
-      resumptionDataSave() {
-        //组装数据
-        let data = {}
-        data.taskId = this.resumptionData.taskId
-        data.checks = this.checks
-        data.nfcs = this.nfcs
-        data.subType = 1
-        saveTask(data).then(res => {
-          this.$toast('保存成功');
+      }
+      this.currentImgNFC = current
+      this.yesNFCnums = yesNum
+      this.NFCnums = nfcs
+      this.selectArea = area
+    },
+    //保存数据
+    resumptionDataSave() {
+      //组装数据
+      let data = {}
+      data.taskId = this.resumptionData.taskId
+      data.checks = this.checks
+      data.nfcs = this.nfcs
+      data.subType = 1
+      saveTask(data).then(res => {
+        this.$toast('保存成功')
+      })
+    },
+    submitResumptionData() {
+      //备份数据
+      let bakNfcs = this.nfcs
+      let bakChecks = this.checks
+      try {
+        //验证数据
+        let subNFCS = []
+        let noNfc = this.nfcs.filter((item, index) => {
+          if (item.status === 1) {
+            subNFCS.push(item)
+          }
+          if (item.status === 0 && item.pointScan === 1) {
+            return true
+          }
         })
-      },
-      submitResumptionData() {
-        //备份数据
-        let bakNfcs = this.nfcs;
-        let bakChecks = this.checks;
-        try{
-          //验证数据
-          let subNFCS = [];
-          let noNfc = this.nfcs.filter((item, index) => {
-            if(item.status === 1){
-              subNFCS.push(item);
-            }
-            if(item.status === 0 && item.pointScan === 1){
-              return true;
-            }
+        if (noNfc.length > 0) {
+          Dialog.alert({
+            message: 'NFC标签还未扫描完成,请完成后提交!'
           })
-          if (noNfc.length > 0) {
-            Dialog.alert({
-              message: 'NFC标签还未扫描完成,请完成后提交!'
-            })
-            throw new Error('NFC标签还未扫描完成,请完成后提交!')
-            return
-          }
+          throw new Error('NFC标签还未扫描完成,请完成后提交!')
+          return
+        }
 
-          for (let i = 0; i < this.checks.length; i++) {
-            for (let j = 0; j < this.checks[i].points.length; j++) {
-              let point =  this.checks[i].points[j];
-              let item = this.checks[i];
-              if(point.resValue === 0){
-                this.checks[i].points[j].rectificationDeadline = null;
-                //this.checks[i].points[j].imgs = [];
-                this.checks[i].points[j].resRemark = null;
+        for (let i = 0; i < this.checks.length; i++) {
+          for (let j = 0; j < this.checks[i].points.length; j++) {
+            let point = this.checks[i].points[j]
+            let item = this.checks[i]
+            if (point.resValue === 0) {
+              this.checks[i].points[j].rectificationDeadline = null
+              //this.checks[i].points[j].imgs = [];
+              this.checks[i].points[j].resRemark = null
+            }
+            if (point.dataStatus === 1) {
+              if (point.required === 0) {
+                //如果不是必填内容
+                this.checks[i].points[j].dataStatus = 2
+                this.checks[i].points[j].resValue = 0
+              } else {
+                Dialog.alert({
+                  message: '存在未编辑完成履职项,无法提交!'
+                })
+                throw new Error('还有未完成的内容,请先完成再提交')
               }
-              if (point.dataStatus === 1) {
-                if( point.required === 0){
-                  //如果不是必填内容
-                  this.checks[i].points[j].dataStatus = 2
-                  this.checks[i].points[j].resValue = 0
-                }else{
-                  Dialog.alert({
-                    message: '存在未编辑完成履职项,无法提交!'
+            } else {
+              if (point.resValue === 1) {
+                if (!point.rectificationDeadline) {
+                  this.changeSwitch()
+                  this.areas.forEach((area, i) => {
+                    if (area.areaId === item.areaId) {
+                      this.activeArea(area, i)
+                      //切换后验证表单
+                      this.$refs.resumption_form.validate()
+                      this.$toast.fail({
+                        message: '请选择整改期限!',
+                        position: 'top'
+                      })
+                    }
                   })
-                  throw new Error('还有未完成的内容,请先完成再提交')
+                  throw new Error('存在未编辑完成履职项,无法提交')
                 }
-              } else {
-                if (point.resValue === 1) {
-                  if (!point.rectificationDeadline) {
-                    this.changeSwitch()
-                    this.areas.forEach((area, i) => {
-                      if (area.areaId === item.areaId) {
-                        this.activeArea(area, i)
-                        //切换后验证表单
-                        this.$refs.resumption_form.validate()
-                        this.$toast.fail({
-                          message: '请选择整改期限!',
-                          position: 'top'
-                        })
-                      }
-                    })
-                    throw new Error('存在未编辑完成履职项,无法提交')
-                  }
-                  if(!point.resRemark){
-                    this.changeSwitch()
-                    this.areas.forEach((area, i) => {
-                      if (area.areaId === item.areaId) {
-                        this.activeArea(area, i)
-                        //切换后验证表单
-                        this.$refs.resumption_form.validate()
-                        this.$toast.fail({
-                          message: '请完成异常情况的信息填写!',
-                          position: 'top'
-                        })
-                      }
-                    })
-                    throw new Error('存在未编辑完成履职项,无法提交')
-                  }
-                  // if(point.imgs.length < 1){
-                  //   this.changeSwitch()
-                  //   this.areas.forEach((area, i) => {
-                  //     if (area.areaId === item.areaId) {
-                  //       this.activeArea(area, i)
-                  //       //切换后验证表单
-                  //       this.$refs.resumption_form.validate()
-                  //       this.$toast.fail({
-                  //         message: '请拍照上传异常图片!',
-                  //         position: 'top'
-                  //       })
-                  //       throw new Error('请上传异常图片!');
-                  //     }
-                  //   })
-                  // }
+                if (!point.resRemark) {
+                  this.changeSwitch()
+                  this.areas.forEach((area, i) => {
+                    if (area.areaId === item.areaId) {
+                      this.activeArea(area, i)
+                      //切换后验证表单
+                      this.$refs.resumption_form.validate()
+                      this.$toast.fail({
+                        message: '请完成异常情况的信息填写!',
+                        position: 'top'
+                      })
+                    }
+                  })
+                  throw new Error('存在未编辑完成履职项,无法提交')
                 }
+                // if(point.imgs.length < 1){
+                //   this.changeSwitch()
+                //   this.areas.forEach((area, i) => {
+                //     if (area.areaId === item.areaId) {
+                //       this.activeArea(area, i)
+                //       //切换后验证表单
+                //       this.$refs.resumption_form.validate()
+                //       this.$toast.fail({
+                //         message: '请拍照上传异常图片!',
+                //         position: 'top'
+                //       })
+                //       throw new Error('请上传异常图片!');
+                //     }
+                //   })
+                // }
               }
-
             }
           }
-          let data = {}
-          data.taskId = this.resumptionData.taskId
-          data.checks = this.checks
-          data.nfcs = subNFCS
-          data.subType = 2
+        }
+        let data = {}
+        data.taskId = this.resumptionData.taskId
+        data.checks = this.checks
+        data.nfcs = subNFCS
+        data.subType = 2
 
-          saveTask(data).then(res => {
-            this.$toast('提交成功');
-            /*this.$router.replace({
+        saveTask(data).then(res => {
+          this.$toast('提交成功')
+          /*this.$router.replace({
               path: '/resumption',
               name: 'resumption',
               params:{event:'refresh'}
             });*/
-            this.$router.go(-1);
-          })
-        }catch(e){
-          this.nfcs = bakNfcs;
-          this.checks = bakChecks;
-        }
-
+          this.$router.go(-1)
+        })
+      } catch (e) {
+        this.nfcs = bakNfcs
+        this.checks = bakChecks
       }
     }
   }
+}
 </script>
 
 <style lang="scss" scoped>
-  .van-progress {
-    z-index: 999;
-    width: 98%;
-    left: 6px;
-    right: 6px;
-  }
+.van-progress {
+  z-index: 999;
+  width: 98%;
+  left: 6px;
+  right: 6px;
+}
 
-  .page_box {
-    height: calc(100vh - 60px);
-    overflow: scroll;
-  }
+.page_box {
+  height: calc(100vh - 60px);
+  overflow: scroll;
+}
 
-  .content {
-    padding: 16px 16px 10px;
-  }
+.content {
+  padding: 16px 16px 10px;
+}
 
-  .panel {
-    background-color: white;
-    border-radius: 10px;
-    border: 1px solid #ffffff;
-    display: flex;
-    flex-direction: column;
-    box-shadow: 0 8px 12px #ebedf0;
-    margin-bottom: 10px;
+.panel {
+  background-color: white;
+  border-radius: 10px;
+  border: 1px solid #ffffff;
+  display: flex;
+  flex-direction: column;
+  box-shadow: 0 8px 12px #ebedf0;
+  margin-bottom: 10px;
 
-    .van-cell__title {
-      font-weight: bold;
-    }
+  .van-cell__title {
+    font-weight: bold;
   }
+}
 
+.soc_resumption .van-cell__title {
+  min-width: 80% !important;
+}
+.van-cell__title span {
+  text-align: left;
+  word-break: break-all;
+}
 
-  .soc_resumption .van-cell__title {
-    min-width: 80% !important;
-  }
-  .van-cell__title span {
-    text-align: left;
-    word-break: break-all;
-  }
+.total_panel {
+  text-align: center;
 
+  .title {
+    padding-top: 10px;
+  }
 
-  .total_panel {
-    text-align: center;
+  .content {
+    padding-top: 10px;
+    padding-bottom: 10px;
 
-    .title {
-      padding-top: 10px;
+    .con_num {
+      padding: 15px;
     }
 
-    .content {
-      padding-top: 10px;
-      padding-bottom: 10px;
-
-      .con_num {
-        padding: 15px;
-      }
-
-      .ok {
-        color: #26850c;
-      }
+    .ok {
+      color: #26850c;
+    }
 
-      .no {
-        color: #98632d;
-      }
+    .no {
+      color: #98632d;
     }
   }
+}
 
-  .card {
-    box-shadow: 0 10px 10px #eaeaea;
-  }
+.card {
+  box-shadow: 0 10px 10px #eaeaea;
+}
 
-  .van-popup {
-    height: 50%;
-  }
+.van-popup {
+  height: 50%;
+}
 
-  .check-area {
-    //background-color: #f1f1f1;
-    text-align: center;
-    margin: 10px;
-    padding: 20px;
-    //color: #aaa;
-    border-radius: 6px;
-    justify-content: space-between;
-    align-items: center;
-    box-shadow: 0 2px 6px #ddd;
-    position: relative;
-    height: 80px;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    .ysj {
-      position: absolute;
-      right: 5px;
-      top: 5px;
-    }
+.check-area {
+  //background-color: #f1f1f1;
+  text-align: center;
+  margin: 10px;
+  padding: 20px;
+  //color: #aaa;
+  border-radius: 6px;
+  justify-content: space-between;
+  align-items: center;
+  box-shadow: 0 2px 6px #ddd;
+  position: relative;
+  height: 80px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  .ysj {
+    position: absolute;
+    right: 5px;
+    top: 5px;
   }
+}
 
-  .active {
-    background-color: #bdbdbd;
-    color: #333;
-  }
+.active {
+  background-color: #bdbdbd;
+  color: #333;
+}
 
-  .complete {
-    color: #fff;
-    background-color: #1989fa;
-  }
+.complete {
+  color: #fff;
+  background-color: #1989fa;
+}
 
-  .nfc-icon {
-    width: 50px;
-    height: 50px;
-    margin-left: 20px;
-  }
+.nfc-icon {
+  width: 50px;
+  height: 50px;
+  margin-left: 20px;
+}
 
-  .bottomClass {
-    position: fixed;
-    width: 100%;
-    bottom: 0;
-    z-index: 999;
-    background: #ebedf0;
-    text-align: center;
+.bottomClass {
+  position: fixed;
+  width: 100%;
+  bottom: 0;
+  z-index: 999;
+  background: #ebedf0;
+  text-align: center;
 
-    .van-button {
-      width: 95%;
-      margin-top: 10px;
-    }
+  .van-button {
+    width: 95%;
+    margin-top: 10px;
   }
+}
 
-  .okAll {
-    background-color: #fff;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    height: 50px;
-  }
+.okAll {
+  background-color: #fff;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  height: 50px;
+}
 
-  .nfc-img {
-    display: inline-block;
-    width: 160px;
-    height: 160px;
-    margin: 0 10px;
-    position: relative;
+.nfc-img {
+  display: inline-block;
+  width: 160px;
+  height: 160px;
+  margin: 0 10px;
+  position: relative;
 
-    > img {
-      width: 100%;
-      height: 100%;
-      border: none;
-    }
-
-    > span {
-      position: absolute;
-      padding: 0 10px;
-      bottom: 0;
-      left: 0;
-      display: block;
-      width: 100%;
-      background-color: rgba(0, 0, 0, 0.2);
-      color: #eaeaea;
-      font-size: 5px;
-      overflow: hidden;
-      text-overflow: ellipsis;
-      line-height: 30px;
-      white-space: break-spaces;
-      height: 30px;
-    }
+  > img {
+    width: 100%;
+    height: 100%;
+    border: none;
+  }
 
-    .cancel_icon {
-      position: absolute;
-      font-size: 30px;
-      right: 5px;
-      top: 2px;
-    }
+  > span {
+    position: absolute;
+    padding: 0 10px;
+    bottom: 0;
+    left: 0;
+    display: block;
+    width: 100%;
+    background-color: rgba(0, 0, 0, 0.2);
+    color: #eaeaea;
+    font-size: 5px;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    line-height: 30px;
+    white-space: break-spaces;
+    height: 30px;
+  }
 
+  .cancel_icon {
+    position: absolute;
+    font-size: 30px;
+    right: 5px;
+    top: 2px;
   }
+}
 </style>