From 31ae6e156657aa2ce8e35a228a77f0618bee5282 Mon Sep 17 00:00:00 2001 From: zhanghua <314079846@qq.com> Date: 星期四, 08 十二月 2022 16:21:30 +0800 Subject: [PATCH] 视频功能修改 --- src/views/intelligentPatrol/studyJudge/index.vue | 276 ++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 171 insertions(+), 105 deletions(-) diff --git a/src/views/intelligentPatrol/studyJudge/index.vue b/src/views/intelligentPatrol/studyJudge/index.vue index e5fcded..f0c9402 100644 --- a/src/views/intelligentPatrol/studyJudge/index.vue +++ b/src/views/intelligentPatrol/studyJudge/index.vue @@ -1,14 +1,13 @@ <template> <div class="study-judge"> <div class="study-judge-header"> - <span>鎮ㄦ湁1111鏉″緟瀹℃牳鎶ヨ淇℃伅,浠婃棩绔嬫0鏉�,鍐嶅涔�0鏉�</span> + <span>鎮ㄦ湁{{ eventList.length }}鏉″緟瀹℃牳鎶ヨ淇℃伅,浠婃棩绔嬫0鏉�,鍐嶅涔爗{ countData.review }}鏉�</span> </div> <div class="study-judge-main"> - <!-- sjm:study-judge-main --> <div class="sjm-header"> <div class="sjm-header-left"> - <span class="moni-name">鐩戞帶鐐逛綅鍚嶇О:涓崕璺疿X璺彛 </span> - <span class="moni-area">涓崕琛楅亾鍖哄煙</span> + <span class="moni-name">鐩戞帶鐐逛綅鍚嶇О: {{ currentEvent.name }} </span> + <span class="moni-area">{{ currentEvent.street }}</span> </div> <div class="sjm-header-right"> <el-button size="small">瀹炴椂棰勮</el-button> @@ -17,22 +16,10 @@ </div> <div class="sjm-content"> <div class="sjm-content-left"> - <div class="img-item"> + <div class="img-item" v-for="(item, index) in imageList" :key="item.id"> <span>鎶ヨ鍥剧墖</span> - <img - src="https://axure-file.lanhuapp.com/90466432-c999-4bf0-80b8-ee3f96a2099e__67d4d15bfc501319f8377f2ce37bf441.svg" - alt=""> - <span>鎶ヨ鏃堕棿锛�2022-09-08 14:23:34</span> - </div> - <div class="img-item"> - <img - src="https://axure-file.lanhuapp.com/90466432-c999-4bf0-80b8-ee3f96a2099e__67d4d15bfc501319f8377f2ce37bf441.svg" - alt=""> - </div> - <div class="img-item"> - <img - src="https://axure-file.lanhuapp.com/90466432-c999-4bf0-80b8-ee3f96a2099e__67d4d15bfc501319f8377f2ce37bf441.svg" - alt=""> + <img :src="item"> + <span v-if="index === 0">鎶ヨ鏃堕棿锛歿{ currentEvent.alarmTime }}</span> </div> </div> <div class="sjm-content-center"> @@ -44,12 +31,12 @@ <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.number }}</span> + <span>{{ currentEvent.code }}</span> </el-form-item> <el-form-item label="浜嬩欢绛夌骇:"> - <span>{{ currentEvent.level }}</span> + <span>{{ currentEvent.grade }}</span> </el-form-item> <el-form-item label="棣栨鎶ヨ鏃堕棿:"> <span>{{ currentEvent.firstTime }}</span> @@ -60,99 +47,115 @@ <el-form-item label="鎸佺画鏃堕棿:"> <span>{{ currentEvent.conntinueTime }}</span> </el-form-item> + <el-form-item label="鍏宠仈搴楅摵" prop="store"> + <el-select v-model="eventInfoData.store" @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="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-group v-model="eventInfoData.advice"> <el-radio :label="item.id" v-for="item in adviceList" :key="item.id">{{ item.label }}</el-radio> </el-radio-group> </el-form-item> - <el-form-item label="闂绫诲瀷:" prop="type"> - <el-input v-model="currentEvent.type" placeholder="璇烽�夋嫨闂绫诲瀷"></el-input> + <el-form-item label="澶х被鍚嶇О:" prop="categoryId"> + <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="bigKind"> - <el-input v-model="currentEvent.bigKind" placeholder="璇烽�夋嫨澶х被鍚嶇О"></el-input> - </el-form-item> - <el-form-item label="灏忕被鍚嶇О:" prop="smallKind"> - <el-input v-model="currentEvent.smallKind" placeholder="璇烽�夋嫨灏忕被鍚嶇О"></el-input> + <el-form-item label="灏忕被鍚嶇О:" prop="typeId"> + <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="澶囨敞:"> - <el-input type="textarea" :rows="5" v-model="currentEvent.tip"></el-input> + <el-form-item label="澶囨敞:" prop="description"> + <el-input type="textarea" :rows="5" v-model="eventInfoData.description"></el-input> </el-form-item> <el-form-item> - <el-button>涓婁竴鏉�</el-button> + <el-button :disabled="currentPage === 1" @click="pageChange('prev')">涓婁竴鏉�</el-button> <el-button @click.native.prevent="handleConfirm">纭</el-button> - <el-button>涓嬩竴鏉�</el-button> + <el-button @click="pageChange('next')">涓嬩竴鏉�</el-button> </el-form-item> </el-form> </div> </div> </div> </div> + <el-dialog :visible="isShowDialog" title="璋冨害淇℃伅"> + <MyDispatch v-if="isShowDialog" :mytype="1" @confirmInspection="handleConfirm" :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 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 }) => { + this.storeList = list; + }) + .catch(err => { + this.$message.error(err) + }) + + baseInfo.getCategoryList() + .then(res => { + this.categoryOptions = res; + }) + .catch(err => this.$message.error(err)) + + baseInfo.getTypeList() + .then(res => { + this.typeList = res; + }) + .catch(err => this.$message.error(err)) + }, data() { - const validateAdvice = (rule,value,callback)=>{ - if(value){ - callback() - }else{ - callback(new Error('澶勭悊鎰忚涓嶈兘涓虹┖')) + const validateCarNumber = (rule, value, callback) => { + if (value) { + if (validateCarNum(value)) { + callback(); + } else { + callback(new Error('璇疯緭鍏ユ纭殑杞︾墝鍙�')); + } + } else { + callback(); } - } - const validateType = (rule,value,callback)=>{ - if(value){ - callback() - }else{ - callback(new Error('闂绫诲瀷涓嶈兘涓虹┖')) - } - } - const validateBigKind = (rule,value,callback)=>{ - console.log(value) - if(value){ - callback() - }else{ - callback(new Error('澶х被鍚嶇О涓嶈兘涓虹┖')) - } - } - const validateSmallKind = (rule,value,callback)=>{ - if(value){ - callback() - }else{ - callback(new Error('灏忕被鍚嶇О涓嶈兘涓虹┖')) - } - } - const validateCarNumber = (rule,value,callback)=>{ - if(value){ - callback() - }else{ - callback(new Error('杞︾墝鍙蜂笉鑳戒负绌�')) - } - } + }; return { - currentEvent: { - number: '1233123414141414', - level: '涓�鑸簨浠�', - firstTime: '2022/09/23 12:00:00', - recentTime: '2022/09/23/ 12:00:00', - conntinueTime: '0灏忔椂10鍒嗛挓', - advice: null, - type: '', - bigKind: '', - smallKind: '', - carNumber: '', - tip: '' + eventList: [], + countData: { + review: 0 }, + currentEvent: {}, adviceList: [ { - id: 1, + id: 2, label: '涓婃姤', }, { - id: 2, + id: 6, label: '璋冨害', }, { @@ -164,47 +167,111 @@ label: '鏆備笉澶勭悊', }, ], + eventInfoData: null, rules:{ advice:[ { - trigger:'blur',validator:validateAdvice + required: true, trigger:['blur', 'change'], message: '澶勭悊鎰忚涓嶈兘涓虹┖' }, ], - type:[ + categoryId:[ { - trigger:'blur',validator:validateType + required: true, trigger:['blur', 'change'], message: '澶х被鍚嶇О涓嶈兘涓虹┖' } ], - bigKind:[ + typeId:[ { - trigger:'blur',validator:validateBigKind + required: true, trigger:['blur', 'change'], message: '灏忕被鍚嶇О涓嶈兘涓虹┖' } ], - smallKind:[ - { - trigger:'blur',validator:validateSmallKind - } - ], - carNumber:[ - { - trigger:'blur',validator:validateCarNumber - } - ] - } + carNumber:[{ trigger:['blur', 'change'], validator: validateCarNumber }] + }, + imageList: [], + currentPage: 1, + categoryOptions: [], + typeOptions: [], + storeList: [], + typeList: [], + isShowDialog: false } }, methods:{ + pageChange(type) { + if (type === 'next') { + this.currentPage += 1; + } else { + this.currentPage -= 1; + } + this.getInspectionData(); + }, + + getInspectionData() { + basecase.getInspectionData({ current: this.currentPage }) + .then(({ records }) => { + this.eventList = records; + this.currentEvent = this.eventList[0]; + if (this.currentEvent?.picData) { + this.imageList = this.currentEvent.picData.split(',').map(item => `${FILE_ORIGINAL_URL}${item}`); + } + }) + .catch(err => this.$message.error(err)) + }, + // 纭鐐瑰嚮浜嬩欢 handleConfirm(){ - console.log(this.$refs.currentEvent) this.$refs.currentEvent.validate((flag)=>{ - console.log(flag) if(flag){ + this.eventInfoData.baseId = this.currentEvent.code; - }else{ - return false + // 璋冨害 + if (this.eventInfoData.advice === 6) { + this.isShowDialog = true; + } else { + this.confirmInspection(); + } + } else { + this.$message.warning('璇锋鏌ュ繀濉」'); } }) + }, + + initEventParams() { + this.eventInfoData = { + baseId: null, + store: null, + advice: null, + categoryId: null, + typeId: null, + carNumber: null, + description: null, + linkShop: 0, + shopName: null + } + }, + + categoryChange(id) { + this.typeOptions = this.typeList.filter(type => type.parentId === id); + }, + + confirmInspection(data) { + basecase.confirmInspection({ ...this.eventInfoData, ...data }) + .then(() => { + this.$message.success('鎿嶄綔鎴愬姛'); + this.getInspectionData(); + this.initEventParams(); + }) + .catch(err => this.$message.error(err)) + }, + + closeDialog() { + this.isShowDialog = false; + }, + + selectStoreChange(id) { + const selectedStore = this.storeList.find(store => store.id === id); + this.eventInfoData.shopName = selectedStore.storeName; + this.eventInfoData.linkShop = 1; + return selectedStore; } } } @@ -281,7 +348,6 @@ .el-form { ::v-deep .el-form-item { - // margin-bottom: 10px; } ::v-deep .el-form-item__label { -- Gitblit v1.8.0