From 79406a48bdad7665d1bd5ebfd07ed2dcdcf4114b Mon Sep 17 00:00:00 2001 From: quanyawei <401863037@qq.com> Date: Tue, 14 Nov 2023 14:00:36 +0800 Subject: [PATCH] Merge branch 'feature_1.0' --- src/views/toCarryOutLegislativeReforms/components/newWorkOrder.vue | 223 +++++++++++++++++++++++++++++++------------------------ 1 files changed, 127 insertions(+), 96 deletions(-) diff --git a/src/views/toCarryOutLegislativeReforms/components/newWorkOrder.vue b/src/views/toCarryOutLegislativeReforms/components/newWorkOrder.vue index e8784e7..00edb41 100644 --- a/src/views/toCarryOutLegislativeReforms/components/newWorkOrder.vue +++ b/src/views/toCarryOutLegislativeReforms/components/newWorkOrder.vue @@ -1,18 +1,16 @@ <template> <div> - <el-dialog :title="title" :visible.sync="visible" width="900px" center :before-close="close"> + <el-dialog :title="title" :visible.sync="visible" top="30px" width="900px" center :before-close="close"> + <div slot="title" class="titBox"> + <div>{{ parentFormData.allocationNum }}</div> + <div>{{ title }}</div> + </div> <div> - <el-form ref="ruleForm" :disabled="pageState==='detail'" label-width="100px" :model="formData" class="demo-form-inline" :rules="rules"> + <el-form ref="ruleForm" :disabled="pageState === 'detail'" label-width="120px" :model="formData" class="demo-form-inline" :rules="rules"> <el-row> <el-col :span="12"> <el-form-item label="���������������" prop="escalationTime" class="span"> - <el-date-picker - v-model="formData.escalationTime" - value-format="yyyy-MM-dd" - size="small" - type="date" - placeholder="������������" - /> + <el-date-picker v-model="formData.escalationTime" value-format="yyyy-MM-dd" size="small" type="date" placeholder="������������" /> </el-form-item> </el-col> <el-col :span="12"> @@ -25,24 +23,14 @@ <el-col :span="12"> <el-form-item label="���������������" prop="unitId" class="span"> <el-select v-model="formData.unitId" placeholder="���������" size="small"> - <el-option - v-for="item in unitList" - :key="item.unitId" - :label="item.unitName" - :value="item.unitId" - /> + <el-option v-for="item in unitList" :key="item.unitId" :label="item.unitName" :value="item.unitId" /> </el-select> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="���������������" prop="polluteType" class="span"> <el-select v-model="formData.polluteType" placeholder="���������" size="small"> - <el-option - v-for="item in polluteList" - :key="item.dataKey" - :label="item.dataValue" - :value="item.dataKey" - /> + <el-option v-for="item in polluteList" :key="item.dataKey" :label="item.dataValue" :value="item.dataKey" /> </el-select> </el-form-item> </el-col> @@ -51,18 +39,13 @@ <el-col :span="12"> <el-form-item label="���������������" prop="changeType" class="span"> <el-select v-model="formData.changeType" placeholder="���������" size="small" @change="changeEnumList"> - <el-option - v-for="item in Dic.changeEnum" - :key="item.value" - :label="item.name" - :value="item.value" - /> + <el-option v-for="item in Dic.changeEnum" :key="item.value" :label="item.name" :value="item.value" /> </el-select> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="���������������" prop="changeDay" class="span"> - <el-input-number v-model="formData.changeDay" :disabled="formData.changeType===1" :min="0" label="���������" /> + <el-input-number v-model="formData.changeDay" :disabled="formData.changeType === 1" :min="0" label="���������" /> <!-- <el-input v-model.number="formData.changeDay" :disabled="formData.changeType===1" type="text" placeholder="���������" size="small" /> --> </el-form-item> </el-col> @@ -71,12 +54,7 @@ <el-col :span="12"> <el-form-item label="���������������" prop="escalationUnitId" class="span"> <el-select v-model="formData.escalationUnitId" placeholder="���������" size="small"> - <el-option - v-for="item in unitList" - :key="item.unitId" - :label="item.unitName" - :value="item.unitId" - /> + <el-option v-for="item in unitList" :key="item.unitId" :label="item.unitName" :value="item.unitId" /> </el-select> </el-form-item> </el-col> @@ -90,8 +68,17 @@ <el-col :span="24"> <el-form-item label="���������������" prop="investigationType" class="span"> <el-radio-group v-model="formData.investigationType" size="small"> - <el-radio v-for="(item) in Dic.investigationEnum" :key="item.value" :label="item.value">{{ item.name }}</el-radio> + <el-radio v-for="item in Dic.investigationEnum" :key="item.value" :label="item.value">{{ item.name }}</el-radio> </el-radio-group> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="24"> + <el-form-item label="���������������������" prop="keyPoint" class="span"> + <el-checkbox-group v-model="formData.keyPoint" :max="1" size="small"> + <el-checkbox v-for="item in Dic.emphasisEnum" :label="item.value" :key="item.value">{{ item.name }}</el-checkbox> + </el-checkbox-group> </el-form-item> </el-col> </el-row> @@ -103,41 +90,31 @@ <el-row> <el-form-item label="���������"> <div> - <div v-if="pageState==='edit'"> - <div v-for="(file,index) in fileBaseListCover" :key="file.fileId+index" class="block"> - <el-image - v-if="file.fileType ===1" - style="width: 100px; height: 100px" - :src="file.url" - :preview-src-list="fileBaseList" - :initial-index="index" - /> + <div v-if="pageState === 'edit'"> + <div v-for="(file, index) in fileBaseListCover" :key="file.fileId + index" class="block"> + <el-image v-if="file.fileType === 1" style="width: 100px; height: 100px" :src="file.url" :preview-src-list=" + getPreviewImages(file.fileId, fileBaseList) + " :initial-index="index" /> <video v-else :src="file.url" style="width: 100px; height: 100px" @click="openVideo(file)"> ������������������������ video ��������� </video> </div> </div> </div> - <uploadFile v-if="pageState!=='detail'" :upload-url="uploadTermExcelUrl" :sys-code="sysCode" /> + <uploadFile v-if="pageState !== 'detail'" :upload-url="uploadTermExcelUrl" :sys-code="sysCode" /> </el-form-item> </el-row> </el-form> </div> <div slot="footer" class="dialog-footer"> <el-button @click="close">������</el-button> - <el-button v-if="pageState!=='detail'" type="info" @click="handleSubmit('9')">������</el-button> - <el-button v-if="pageState!=='detail'" type="primary" @click="handleSubmit('10')">������</el-button> + <el-button v-if="pageState !== 'detail'" type="info" @click="handleSubmit('9')">������</el-button> + <el-button v-if="pageState !== 'detail'" type="primary" @click="handleSubmit('10')">������</el-button> </div> </el-dialog> <el-dialog :visible.sync="videoVisible" width="600px" :modal-append-to-body="false" :destroy-on-close="true" @close="handleCancel"> - <div style="text-align: center;"> - <video - ref="video" - style="width: 300px;height: 500px" - :src="dialogImageUrl" - controls - autoplay - /> + <div style="text-align: center"> + <video ref="video" style="width: 300px; height: 500px" :src="dialogImageUrl" controls autoplay /> </div> </el-dialog> </div> @@ -147,6 +124,7 @@ import uploadFile from '@/components/UploadExcel/index' import bus from '@/Bus' import requestObj from '@/utils/request' +import _ from 'lodash' export default { components: { uploadFile }, props: { @@ -159,8 +137,14 @@ return { videoVisible: false, formData: { + unitId: '', + escalationUnitId: '', + changeType: '', + polluteType: '', + escalationTime: new Date(), fileBaseList: [], escalationName: '', + keyPoint: [], changeDay: 0, investigationType: 1 }, @@ -187,9 +171,7 @@ changeType: [ { required: true, message: '���������������������', trigger: 'change' } ], - changeDay: [ - { required: true, message: '���������������', trigger: 'blur' } - ], + changeDay: [{ required: true, message: '���������������', trigger: 'blur' }], escalationUnitId: [ { required: true, message: '���������������������', trigger: 'change' } ], @@ -211,15 +193,26 @@ } }, watch: { - 'pageState': { + pageState: { handler(newVal) { if (this.pageState === 'edit') { - if (this.parentFormData.fileBaseList && this.parentFormData.fileBaseList.length > 0) { + if ( + this.parentFormData.fileBaseList && + this.parentFormData.fileBaseList.length > 0 + ) { this.parentFormData.fileBaseList.forEach(item => { + if (item.fileType === 1) { + this.fileBaseList.push( + `${requestObj.baseUrl}file/preview/${item.fileId}` + ) // ������ + } // const srcApi = item.fileType === 1 ? api + 'preview/' : api + 'preview/cover/' - this.fileBaseList.push(`${requestObj.baseUrl}/file/preview/${item.fileId}`) // ������ + // this.fileBaseList.push(`${requestObj.baseUrl}file/preview/${item.fileId}`) // ������ this.fileBaseListCover.push({ - url: item.fileType === 1 ? `${requestObj.baseUrl}/file/preview/cover/${item.fileId}` : `${requestObj.baseUrl}/file/preview/${item.fileId}`, + url: + item.fileType === 1 + ? `${requestObj.baseUrl}file/preview/cover/${item.fileId}` + : `${requestObj.baseUrl}file/preview/${item.fileId}`, fileType: item.fileType, fileId: item.fileId, fileName: item.fileName @@ -233,22 +226,15 @@ immediate: true } }, - created() { - console.log('oldValue', this.parentFormData) - if (!(JSON.stringify(this.parentFormData) === '{}')) { - this.formData = this.parentFormData - this.formData.polluteType = String(this.parentFormData.polluteType) - } else { - const name = this.$store.state.user.name - this.formData.escalationName = name - } - + async created() { this.getUnitList() - this.getContaminateList() + + console.log('oldValue', this.parentFormData) + bus.$on('changeFileAfterList', (type, fileList) => { this.formData.fileBaseList = [] if (fileList.length > 0) { - fileList.map((item) => { + fileList.map(item => { if (item.response) { console.log('item.response.data', item.response.data) this.formData.fileBaseList.push(item.response.data) @@ -258,6 +244,25 @@ }) }, methods: { + getPreviewImages(index, list) { + let startIndex = 0 + const chechList = _.cloneDeep(list) + chechList.forEach((item, i) => { + const str = item.substring(item.lastIndexOf('/') + 1) + console.log('str', str) + if (Number(str) === Number(index)) { + startIndex = i + } + }) + + console.log('index', index) + console.log('startIndex', startIndex) + var imgList = [...list] + if (index === 0) return imgList + var start = imgList.splice(startIndex) + var remain = imgList.splice(0, startIndex) + return start.concat(remain) + }, openVideo(item) { console.log('item', item) this.dialogImageUrl = item.url @@ -277,20 +282,35 @@ this.$request({ url: '/allocation/unit', method: 'get' - }).then((res) => { + }).then(res => { this.unitList = res.data + this.getContaminateList() }) }, getContaminateList() { this.$request({ url: '/allocation/contaminate', method: 'get' - }).then((res) => { + }).then(res => { this.polluteList = res.data + if (!(JSON.stringify(this.parentFormData) === '{}')) { + this.formData = this.parentFormData + this.formData.polluteType = String(this.parentFormData.polluteType) + this.formData.keyPoint = this.parentFormData.keyPoint + ? [Number(this.parentFormData.keyPoint)] + : [] + } else { + const name = this.$store.state.user.name + this.formData.escalationName = name + this.formData.changeType = this.Dic.changeEnum[0].value + this.formData.unitId = this.unitList[0].unitId + this.formData.escalationUnitId = this.unitList[0].unitId + this.formData.polluteType = this.polluteList[0].dataKey + } }) }, close() { - this.$nextTick(function() { + this.$nextTick(function () { this.$refs.ruleForm.resetFields() }) this.$emit('update:visible', false) @@ -306,7 +326,9 @@ }) } this.formData.state = val - this.$refs.ruleForm.validate((valid) => { + this.formData.keyPoint = + this.formData.keyPoint.length > 0 ? this.formData.keyPoint[0] : '' + this.$refs.ruleForm.validate(valid => { if (valid) { // this.formData.fileBaseList = [...this.parentFormData.fileBaseList, this.formData.fileBaseList] this.$emit('handleSubmit', this.formData) @@ -320,36 +342,45 @@ </script> <style lang="scss" scoped> +.titBox { + position: relative; + font-size: 18px; + div:first-child { + position: absolute; + left: 10px; + } + div { + display: inline-block; + } +} .block { - display: inline-block !important; - margin-right: 10px; + display: inline-block !important; + margin-right: 10px; } .textBox { - display: flex; - justify-content: space-between; - margin-left: 15px; + display: flex; + justify-content: space-between; + margin-left: 15px; } -.el-dialog__body>div { - border-bottom: 1px dashed rgba(187, 187, 187, 1); +.el-dialog__body > div { + border-bottom: 1px dashed rgba(187, 187, 187, 1); } -.span{ +.span { /deep/.el-form-item__content { - - div { - width: 100%; - } + div { + width: 100%; + } } } .textare { - /deep/.el-form-item__content { - width: 800px; + /deep/.el-form-item__content { + width: 800px; - div { - width: 100%; - } + div { + width: 100%; } } - +} </style> -- Gitblit v1.8.0