gaoxiong 1 rok pred
rodič
commit
1a37446823
1 zmenil súbory, kde vykonal 711 pridanie a 709 odobranie
  1. 711 709
      src/views/menu/resumption/detail.vue

+ 711 - 709
src/views/menu/resumption/detail.vue

@@ -103,7 +103,7 @@
           <van-col span="8">
             <van-cell>
               <div class="okAll">
-<!--                <van-button type="default" icon="checked" size="small" @click="changeSwitch">一键正常</van-button>-->
+                <!--                <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)">
                     <van-radio name="1" icon-size="20px">一键正常</van-radio>
@@ -261,819 +261,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,
-    }
-  },
-  computed: {
-    ...mapGetters(['id'])
-  },
-  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;
-      }
+  export default {
+    components: {
+      SelectCell,
+      Uploader,
+      NavBar,
+      NfcPopup,
+      imgUrl,
+      [Dialog.Component.name]: Dialog.Component
     },
-    //长度校验
-    validator(val) {
-      let len = val.length;
-      if( len > 200) {
-        this.$toast.fail('问题情况输入长度不能超过200');
-        return false
-      }else {
-        return true
+    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,
       }
     },
-    checkNFC(){
-      this.useNFC();
-      this.$toast.loading({
-        duration: 0, // 持续展示 toast
-        position: 'top',
-        forbidClick: true,
-        message: '请靠近NFC标签,进行扫描!',
-      });
-
-      let second = 30;
-      this.timer = setInterval(() => {
-        second--;
-        if(!second){
-          this.$toast.clear();
-          clearInterval(this.timer);
-          this.$toast.fail({
-            message: '未扫描到任何信息!',
-          });
-        }
-      }, 1000);
-
+    computed: {
+      ...mapGetters(['id'])
     },
-    openNFCScanCallBack(nfcStr){
-      clearInterval(this.timer);
-      let nfcCode = '';
-      try{
-        let nfc = JSON.parse(nfcStr);
-        nfcCode =  nfc.content;
-      }catch (e) {
-        nfcCode = nfcStr.content;
-      }
-      this.checkNfcFilter(nfcCode);
+    mounted() {
+      this.getResumptionData();
+      window.openNFCScanCallBack = this.openNFCScanCallBack;
     },
-    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 + '已扫描,请勿重复扫描!');
+    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;
+        }
+      },
+      //长度校验
+      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",
-              message:'NFC点位:' + v.nfcName + '已扫描,请勿重复扫描!',
+              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;
+        }
+        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 + '扫描成功!');
+            this.$toast({
+              type:"success",
+              message:'NFC点位:' + v.nfcName + '扫描成功!',
               position:"top"
             })
 
-            throw new Error('NFC点位:' + v.nfcName + '已扫描,请勿重复扫描!');
+            checkOk = true;
           }
-          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.updateNFC(1,nfcCode);
+        if(!checkOk){
+          // this.$toast.fail(nfcCode + ",不在本次履职范围内!");
           this.$toast({
-            type:"success",
-            message:'NFC点位:' + v.nfcName + '扫描成功!',
+            type:"fail",
+            message:"此NFC标签,不在本次履职范围内!",
             position:"top"
           })
-
-          checkOk = true;
         }
-      });
-      this.updateNFC(1,nfcCode);
-      if(!checkOk){
-        // this.$toast.fail(nfcCode + ",不在本次履职范围内!");
-        this.$toast({
-          type:"fail",
-          message:nfcCode + ",不在本次履职范围内!",
-          position:"top"
+        this.validateArea(areaId)
+      },
+      switchArea(areaId){
+        this.areas.forEach((area, i) => {
+          if (areaId === area.areaId) {
+            this.activeArea(area, i)
+          }
         })
-      }
-      this.validateArea(areaId)
-    },
-    switchArea(areaId){
-      this.areas.forEach((area, i) => {
-        if (areaId === area.areaId) {
-          this.activeArea(area, i)
+      },
+      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));
+            }
+          }
         }
-      })
-    },
-    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(system === 2){
+          //ios
+          // 判断 ios是否存在方法 preview
+          const fun = window.webkit.messageHandlers.hasOwnProperty('openNFCScan')
           if (fun) {
-            sap.openNFCScan(JSON.stringify(parms));
+            window.webkit.messageHandlers.openNFCScan.postMessage(JSON.stringify(parms))
           }
         }
-      }
-
-      if(system === 2){
-        //ios
-        // 判断 ios是否存在方法 preview
-        const fun = window.webkit.messageHandlers.hasOwnProperty('openNFCScan')
-        if (fun) {
-          window.webkit.messageHandlers.openNFCScan.postMessage(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;
         }
-      }
-    },
-    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
+        if(isIos){
+          return 2;
         }
-        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();
-      })
-    },
-    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){
+      },
+      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
+          }
+          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();
+        })
+      },
+      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++
+              }
             }
           }
         }
-      }
-      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){
+        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++
+              }
             }
           }
         }
-      }
-      this.resumptionData.yesPointNums = num
-      this.resumptionData.noPointNums = total - num
-      this.validateAreaAll();
-      this.openCollapseItems()
-    },
-    validateAreaAll() {
+        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.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){
+          });
+          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){
+        // 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'
         }
-      } 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
-      })
 
-      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'
+        this.areas.forEach((item, index) => {
+          if (item.areaId === areaId) {
+            this.areas[index].areaStatus = areaStatus
+          }
         })
-      }
-    },
-    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
-            }
+      },
+      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(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
-              })
+      },
+      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
+              }
             }
           }
-        }
-        //扫描到nfc
-        if(item.status === 1){
-          this.yesList.push(item);
-          if(this.areaId === item.areaId){
-            this.areaYesList.push(item);
+          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
+                })
+              }
+            }
           }
-        }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() {
+      },
+      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')
+      },
+      //点击区域
+      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')
         })
-        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)
+        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('保存成功');
-      })
-    },
-    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;
-          }
+        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('保存成功');
         })
-        if (noNfc.length > 0) {
-          Dialog.alert({
-            message: 'NFC标签还未扫描完成,请完成后提交!'
+      },
+      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;
+            }
           })
-          throw new Error('NFC标签还未扫描完成,请完成后提交!')
-          return
-        }
+          if (noNfc.length > 0) {
+            Dialog.alert({
+              message: 'NFC标签还未扫描完成,请完成后提交!'
+            })
+            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;
-            }
-            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('还有未完成的内容,请先完成再提交')
+          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;
               }
-            } 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'
-                      })
-                    }
+              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('存在未编辑完成履职项,无法提交')
+                  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('存在未编辑完成履职项,无法提交')
+              } 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.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
+
+          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;
         }
-        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({
-            path: '/resumption',
-            name: 'resumption',
-            params:{event:'refresh'}
-          });*/
-          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;
+  .total_panel {
+    text-align: center;
 
-  .title {
-    padding-top: 10px;
-  }
+    .title {
+      padding-top: 10px;
+    }
 
-  .content {
-    padding-top: 10px;
-    padding-bottom: 10px;
+    .content {
+      padding-top: 10px;
+      padding-bottom: 10px;
 
-    .con_num {
-      padding: 15px;
-    }
+      .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;
+    }
 
-  > 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;
+    }
 
-  > 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;
+    }
 
-  .cancel_icon {
-    position: absolute;
-    font-size: 30px;
-    right: 5px;
-    top: 2px;
   }
-
-}
 </style>