From e0ec0403645eb0e467025814d1c6c6e790b586d2 Mon Sep 17 00:00:00 2001
From: Oliver <1070107765@qq.com>
Date: 星期一, 12 十二月 2022 18:08:12 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/views/intelligentPatrol/studyJudge/index.vue |  178 ++++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 122 insertions(+), 56 deletions(-)

diff --git a/src/views/intelligentPatrol/studyJudge/index.vue b/src/views/intelligentPatrol/studyJudge/index.vue
index 9364d2b..79c9dbd 100644
--- a/src/views/intelligentPatrol/studyJudge/index.vue
+++ b/src/views/intelligentPatrol/studyJudge/index.vue
@@ -1,13 +1,16 @@
 <template>
   <div class="study-judge">
     <div class="study-judge-header">
-      <span>鎮ㄦ湁{{ eventList.length }}鏉″緟瀹℃牳鎶ヨ淇℃伅,浠婃棩绔嬫0鏉�,鍐嶅涔爗{ countData.review }}鏉�</span>
+      <span>鎮ㄦ湁{{ countData.review }}鏉″緟瀹℃牳鎶ヨ淇℃伅,浠婃棩绔嬫{{ countData.register }}鏉�,鍐嶅涔爗{
+          countData.study
+        }}鏉�</span>
     </div>
     <div class="study-judge-main">
       <div class="sjm-header">
         <div class="sjm-header-left">
           <span class="moni-name">鐩戞帶鐐逛綅鍚嶇О: {{ currentEvent.name }} </span>
           <span class="moni-area">{{ currentEvent.street }}</span>
+          <span>{{ currentEvent.address }}</span>
         </div>
         <div class="sjm-header-right">
           <el-button size="small">瀹炴椂棰勮</el-button>
@@ -31,7 +34,7 @@
               <span>鎶ヨ璁板綍</span>
               <span>涔卞仠涔辨斁杩濇硶鍗犻亾</span>
             </div>
-            <el-form ref="currentEvent" label-width="120px" :model="currentEvent" :rules="rules">
+            <el-form ref="currentEvent" label-width="120px" :model="eventInfoData" :rules="rules">
               <el-form-item label="浜嬩欢缂栧彿:">
                 <span>{{ currentEvent.code }}</span>
               </el-form-item>
@@ -39,42 +42,44 @@
                 <span>{{ currentEvent.grade }}</span>
               </el-form-item>
               <el-form-item label="棣栨鎶ヨ鏃堕棿:">
-                <span>{{ currentEvent.firstTime }}</span>
+                <span>{{ currentEvent.alarmTime }}</span>
               </el-form-item>
               <el-form-item label="鏈�杩戞姤璀︽椂闂�:">
-                <span>{{ currentEvent.recentTime }}</span>
+                <span>{{ currentEvent.currentAlarmTime }}</span>
               </el-form-item>
               <el-form-item label="鎸佺画鏃堕棿:">
                 <span>{{ currentEvent.conntinueTime }}</span>
               </el-form-item>
               <el-form-item label="鍏宠仈搴楅摵" prop="store">
-                <el-select v-model="currentEvent.store" placeholder="璇烽�夋嫨鍏宠仈搴楅摵">
-                  <el-option v-for="store in storeList" :value="store.id" :label="store.storeName" :key="store.id" />
+                <el-select v-model="eventInfoData.store" clearable @change="selectStoreChange"
+                           placeholder="璇烽�夋嫨鍏宠仈搴楅摵">
+                  <el-option v-for="store in storeList" :value="store.id" :label="store.storeName" :key="store.id"/>
                 </el-select>
               </el-form-item>
-              <el-form-item v-if="currentEvent.store" label="搴楅摵寰楀垎:">
-                <span>{{ getStoreScore(currentEvent.store) }}</span>
+              <el-form-item v-if="eventInfoData.store" label="搴楅摵寰楀垎:">
+                <span>{{ selectStoreChange(eventInfoData.store).storeScore }}</span>
               </el-form-item>
-              <el-form-item label="澶勭悊鎰忚:" prop="advice">
-                <el-radio-group v-model="currentEvent.advice">
-                  <el-radio :label="item.id" v-for="item in adviceList" :key="item.id">{{ item.label }}</el-radio>
+              <el-form-item label="澶勭悊鎰忚:" prop="state">
+                <el-radio-group v-model="eventInfoData.state">
+                  <el-radio :label="item.id" v-for="item in stateList" :key="item.id">{{ item.label }}</el-radio>
                 </el-radio-group>
               </el-form-item>
               <el-form-item label="澶х被鍚嶇О:" prop="categoryId">
-                <el-select v-model="currentEvent.categoryId" placeholder="璇烽�夋嫨澶х被鍚嶇О" @change="categoryChange">
-                  <el-option v-for="category in categoryOptions" :key="category.id" :value="category.id" :label="category.name" />
+                <el-select v-model="eventInfoData.categoryId" placeholder="璇烽�夋嫨澶х被鍚嶇О" @change="categoryChange">
+                  <el-option v-for="category in categoryOptions" :key="category.id" :value="category.id"
+                             :label="category.name"/>
                 </el-select>
               </el-form-item>
               <el-form-item label="灏忕被鍚嶇О:" prop="typeId">
-                <el-select v-model="currentEvent.typeId" placeholder="璇烽�夋嫨灏忕被鍚嶇О">
-                  <el-option v-for="type in typeOptions" :key="type.id" :value="type.id" :label="type.name" />
+                <el-select v-model="eventInfoData.typeId" placeholder="璇烽�夋嫨灏忕被鍚嶇О">
+                  <el-option v-for="type in typeOptions" :key="type.id" :value="type.id" :label="type.name"/>
                 </el-select>
               </el-form-item>
               <el-form-item label="杞︾墝鍙�:" prop="carNumber">
-                <el-input v-model="currentEvent.carNumber" placeholder="璇峰~鍐欒溅鐗屽彿鐮�"></el-input>
+                <el-input v-model="eventInfoData.carNumber" placeholder="璇峰~鍐欒溅鐗屽彿鐮�"></el-input>
               </el-form-item>
               <el-form-item label="澶囨敞:" prop="description">
-                <el-input type="textarea" :rows="5" v-model="currentEvent.description"></el-input>
+                <el-input type="textarea" :rows="5" v-model="eventInfoData.description"></el-input>
               </el-form-item>
               <el-form-item>
                 <el-button :disabled="currentPage === 1" @click="pageChange('prev')">涓婁竴鏉�</el-button>
@@ -86,26 +91,34 @@
         </div>
       </div>
     </div>
+    <el-dialog :visible="isShowDialog" title="璋冨害淇℃伅">
+      <MyDispatch v-if="isShowDialog" :mytype="1" @getDispatchData="confirmInspection" :isGetData="true"
+                  @changeDialog="closeDialog"></MyDispatch>
+    </el-dialog>
   </div>
 </template>
 
 <script>
 import basecase from "@/api/operate/basecase";
 import baseInfo from "@/api/baseInfo";
-import { getStoreInfoList } from "@/api/operate/storeManagement";
-import { FILE_ORIGINAL_URL } from "@/utils";
-import { validateCarNum } from "@/utils/validate";
+import {getStoreInfoList} from "@/api/operate/storeManagement";
+import {FILE_ORIGINAL_URL} from "@/utils";
+import {validateCarNum} from "@/utils/validate";
+import MyDispatch from '@/components/dispatch';
 
 export default {
+  components: {MyDispatch},
   created() {
     this.getInspectionData();
+    this.initEventParams();
     basecase.getInspectionCountData()
         .then(res => {
           this.countData = res;
         })
         .catch(err => this.$message.error(err))
-    getStoreInfoList({ current: 1, size: 100 })
-        .then(({ list }) => {
+
+    getStoreInfoList({current: 1, size: 100})
+        .then(({list}) => {
           this.storeList = list;
         })
         .catch(err => {
@@ -127,27 +140,29 @@
   data() {
     const validateCarNumber = (rule, value, callback) => {
       if (value) {
-        const result = validateCarNum(value);
-        if (result) {
+        if (validateCarNum(value)) {
           callback();
         } else {
           callback(new Error('璇疯緭鍏ユ纭殑杞︾墝鍙�'));
         }
+      } else {
+        callback();
       }
     };
     return {
-      eventList: [],
       countData: {
-        review: 0
+        study: 0,
+        review: 0,
+        register: 0
       },
       currentEvent: {},
-      adviceList: [
+      stateList: [
         {
-          id: 1,
+          id: 2,
           label: '涓婃姤',
         },
         {
-          id: 2,
+          id: 6,
           label: '璋冨害',
         },
         {
@@ -159,33 +174,35 @@
           label: '鏆備笉澶勭悊',
         },
       ],
-      rules:{
-        advice:[
+      eventInfoData: null,
+      rules: {
+        state: [
           {
-            required: true, trigger:['blur', 'change'], message: '澶勭悊鎰忚涓嶈兘涓虹┖'
+            required: true, trigger: ['blur'], message: '澶勭悊鎰忚涓嶈兘涓虹┖'
           },
         ],
-        categoryId:[
+        categoryId: [
           {
-            required: true, trigger:['blur', 'change'], message: '澶х被鍚嶇О涓嶈兘涓虹┖'
+            required: true, trigger: ['blur'], message: '澶х被鍚嶇О涓嶈兘涓虹┖'
           }
         ],
-        typeId:[
+        typeId: [
           {
-            required: true, trigger:['blur', 'change'], message: '灏忕被鍚嶇О涓嶈兘涓虹┖'
+            required: true, trigger: ['blur'], message: '灏忕被鍚嶇О涓嶈兘涓虹┖'
           }
         ],
-        carNumber:[{ trigger:['blur', 'change'], validator: validateCarNumber }]
+        carNumber: [{trigger: ['blur', 'change'], validator: validateCarNumber}]
       },
       imageList: [],
       currentPage: 1,
       categoryOptions: [],
       typeOptions: [],
       storeList: [],
-      typeList: []
+      typeList: [],
+      isShowDialog: false
     }
   },
-  methods:{
+  methods: {
     pageChange(type) {
       if (type === 'next') {
         this.currentPage += 1;
@@ -196,39 +213,87 @@
     },
 
     getInspectionData() {
-      basecase.getInspectionData({ current: this.currentPage })
-          .then(({ records }) => {
-            this.eventList = records;
-            this.currentEvent = this.eventList[0];
+      basecase.getInspectionData({current: this.currentPage})
+          .then(({records}) => {
+            this.currentEvent = records[0];
             if (this.currentEvent?.picData) {
               this.imageList = this.currentEvent.picData.split(',').map(item => `${FILE_ORIGINAL_URL}${item}`);
+            }
+            if (this.currentEvent?.alarmTime || this.currentEvent?.currentAlarmTime) {
+              const {alarmTime, currentAlarmTime} = this.currentEvent;
+              const continueAlarmTime = new Date().getTime() -
+                  (currentAlarmTime ? new Date(currentAlarmTime).getTime() : new Date(alarmTime).getTime());
+              const CONTINUE_DAY = continueAlarmTime / 1000 / 60 / 60 / 24;
+              const CONTINUE_HOURS = (CONTINUE_DAY - parseInt(CONTINUE_DAY)) * 24;
+              this.currentEvent.conntinueTime = `${parseInt(CONTINUE_DAY)}澶�${parseInt(CONTINUE_HOURS)}灏忔椂`;
             }
           })
           .catch(err => this.$message.error(err))
     },
 
     // 纭鐐瑰嚮浜嬩欢
-    handleConfirm(){
-      this.$refs.currentEvent.validate((flag)=>{
-        if(flag){
-          basecase.confirmInspection(this.currentEvent)
-              .then(() => {
-                this.$message.success('鎿嶄綔鎴愬姛');
-                this.getInspectionData();
-              })
-              .catch(err => this.$message.error(err))
+    handleConfirm() {
+      this.$refs.currentEvent.validate((flag) => {
+        if (flag) {
+          this.eventInfoData.baseId = this.currentEvent.baseId;
+
+          // 璋冨害
+          if (this.eventInfoData.state === 6) {
+            this.isShowDialog = true;
+          } else {
+            this.confirmInspection();
+          }
         } else {
           this.$message.warning('璇锋鏌ュ繀濉」');
         }
       })
     },
 
+    initEventParams() {
+      this.eventInfoData = {
+        baseId: null,
+        store: null,
+        state: null,
+        categoryId: null,
+        typeId: null,
+        carNumber: null,
+        description: null,
+        linkShop: 0,
+        shopName: null
+      }
+    },
+
     categoryChange(id) {
       this.typeOptions = this.typeList.filter(type => type.parentId === id);
     },
 
-    getStoreScore(storeId) {
-      return this.storeList.find(store => store.id === storeId).storeScore;
+    confirmInspection(data) {
+      const eventParams = Object.assign({}, this.eventInfoData);
+      delete eventParams.store;
+      basecase.confirmInspection({...eventParams, ...data})
+          .then(() => {
+            this.$message.success('鎿嶄綔鎴愬姛');
+            this.getInspectionData();
+            this.initEventParams();
+          })
+          .catch(err => this.$message.error(err))
+    },
+
+    closeDialog() {
+      this.isShowDialog = false;
+    },
+
+    selectStoreChange(id) {
+      if (id === "") {
+        this.eventInfoData.shopName = null
+        this.eventInfoData.linkShop = 0
+        this.eventInfoData.store = null
+        return
+      }
+      const selectedStore = this.storeList.find(store => store.id === id);
+      this.eventInfoData.shopName = selectedStore.id;
+      this.eventInfoData.linkShop = 1;
+      return selectedStore;
     }
   }
 }
@@ -239,6 +304,7 @@
   text-align: left;
   color: #4b9bb7;
   padding: 20px;
+
   .study-judge-header {
     line-height: 8vh;
   }
@@ -288,7 +354,7 @@
           }
         }
 
-        .img-item+.img-item {
+        .img-item + .img-item {
           margin-top: 2vh;
         }
       }
@@ -316,4 +382,4 @@
     color: #4b9bb7;
   }
 }
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.8.0