From 933f7c55bdf0f84b1c780de715c7d477df8ab052 Mon Sep 17 00:00:00 2001 From: quanyawei <401863037@qq.com> Date: Fri, 06 Sep 2024 13:44:17 +0800 Subject: [PATCH] fix: 责任单位修改 --- src/views/toCarryOutLegislativeReforms/components/workOrderInformation.vue | 515 +++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 424 insertions(+), 91 deletions(-) diff --git a/src/views/toCarryOutLegislativeReforms/components/workOrderInformation.vue b/src/views/toCarryOutLegislativeReforms/components/workOrderInformation.vue index dbc6a35..9783157 100644 --- a/src/views/toCarryOutLegislativeReforms/components/workOrderInformation.vue +++ b/src/views/toCarryOutLegislativeReforms/components/workOrderInformation.vue @@ -1,37 +1,137 @@ <template> <div> - <el-dialog :title="dialogData.title" top="30px" :visible.sync="visible" width="900px" center :before-close="close"> - <div slot="title" class="titBox"> + <el-dialog + :title="dialogData.title" + top="30px" + :visible.sync="visible" + width="900px" + center + :before-close="close" + > + <div + slot="title" + class="titBox" + > <div>{{ parentFormData.allocationNum }}</div> <div>{{ dialogData.title }}</div> </div> <div> - <div v-if="dialogData.pageType !=='delay'" class="stepsList"> - <el-steps :space="200" :active="parentFormData.approveList.length+1" align-center> - <el-step v-for="(item,index) in setepList" :key="index" :title="'' + item.createName + ' ' + item.stateName" :description="item.createTime" /> + <div + v-if="dialogData.pageType !=='delay'" + class="stepsList" + > + <el-steps + :space="200" + :active="activeLeng" + align-center + > + <el-step + v-for="(item,index) in setepList" + :key="index" + :title="'' + item.createName + ' ' + item.stateName" + :description="item.createTime" + /> </el-steps> </div> <div class="inforData"> - <el-descriptions title="������������" :column="parseInt('4')"> - <el-descriptions-item label="������������" label-class-name="itemSpan">{{ parentFormData.escalationTime }}</el-descriptions-item> - <el-descriptions-item label="������������" label-class-name="itemSpan">{{ unitIdFormatter }}</el-descriptions-item> - <el-descriptions-item label="������������" label-class-name="itemSpan">{{ polluteTypeFormatter }}</el-descriptions-item> - <el-descriptions-item label="������������" label-class-name="itemSpan">{{ dictObj.changeEnum[parentFormData.changeType] }}</el-descriptions-item> - <el-descriptions-item label="������������" label-class-name="itemSpan">{{ parentFormData.changeDay }}</el-descriptions-item> - <el-descriptions-item label="������������" label-class-name="itemSpan">{{ updataUnitIdFormatter }}</el-descriptions-item> - <el-descriptions-item label="���������" label-class-name="itemSpan">{{ parentFormData.escalationName }}</el-descriptions-item> + <el-descriptions + title="������������" + > + <el-descriptions-item + label="������������" + label-class-name="itemSpan" + > + {{ parentFormData.escalationTime }} + </el-descriptions-item> + <el-descriptions-item + label="������������" + label-class-name="itemSpan" + > + {{ unitIdFormatter }} + </el-descriptions-item> + <el-descriptions-item + label="������������" + label-class-name="itemSpan" + > + {{ polluteTypeFormatter }} + </el-descriptions-item> + <el-descriptions-item + label="������������" + label-class-name="itemSpan" + > + {{ dictObj.changeEnum[parentFormData.changeType] }} + </el-descriptions-item> + <el-descriptions-item + label="������������" + label-class-name="itemSpan" + > + {{ parentFormData.changeDay }} + </el-descriptions-item> + <el-descriptions-item + label="������������" + label-class-name="itemSpan" + > + {{ updataUnitIdFormatter }} + </el-descriptions-item> + <el-descriptions-item + label="���������" + label-class-name="itemSpan" + > + {{ parentFormData.escalationName }} + </el-descriptions-item> + <el-descriptions-item + label="������������" + label-class-name="itemSpan" + > + {{ dictObj.emphasisEnum[parentFormData.keyPoint] }} + </el-descriptions-item> </el-descriptions> - <el-descriptions :column="parseInt('2')"> - <el-descriptions-item label="������������" label-class-name="itemSpan">{{ parentFormData.pollutePosition }}</el-descriptions-item> - <el-descriptions-item label="������������" label-class-name="itemSpan">{{ dictObj.emphasisEnum[parentFormData.keyPoint] }}</el-descriptions-item> + <el-descriptions> + <el-descriptions-item + label="������������" + label-class-name="itemSpan" + > + {{ parentFormData.pollutePosition }} + <i + v-if="parentFormData.latitude&&parentFormData.longitude" + style="color:#409EFF;margin-left:10px;font-size:18px;cursor:pointer" + class="el-icon-location-outline" + @click="toMap" + /> + </el-descriptions-item> </el-descriptions> <el-descriptions :column="parseInt('1')"> - <el-descriptions-item label="������������" label-class-name="itemSpan" :content-style="{'width': '80%'}">{{ parentFormData.problemDescribe }}</el-descriptions-item> - <el-descriptions-item label="������" label-class-name="itemSpan" :content-style="{'width': '80%'}"> + <el-descriptions-item + label="������������" + label-class-name="itemSpan" + :content-style="{'width': '80%'}" + > + {{ parentFormData.problemDescribe }} + </el-descriptions-item> + <el-descriptions-item + label="������" + label-class-name="itemSpan" + :content-style="{'width': '80%'}" + > <div> - <div v-for="(file,index) in fileBaseListCover" :key="file.id+index" class="block"> - <el-image v-if="file.fileType ===1" style="width: 100px; height: 100px" :src="file.url" :preview-src-list="getPreviewImages(file.id,fileBaseList)" :initial-index="index" /> - <video v-else :src="file.url" style="width: 100px; height: 100px" @click="openVideo(file)"> + <div + v-for="(file,index) in fileBaseListCover" + :key="file.id+index" + class="block" + > + <el-image + v-if="file.fileType ===1" + style="width: 100px; height: 100px" + :src="file.url" + :preview-src-list="getPreviewImages(file.id,fileBaseList)" + :initial-index="index" + /> + <video + v-else + :src="file.url" + style="width: 100px; height: 100px" + @click="openVideo(file)" + > ������������������������ video ��������� </video> </div> @@ -40,29 +140,55 @@ </el-descriptions> </div> <!-- ������������������ --> - <div v-if="dialogData.pageType ==='work'" class="rectification"> + <div + v-if="dialogData.pageType ==='work'" + class="rectification" + > <div> - <el-form label-width="90px" class="demo-form-inline"> + <el-form + label-width="90px" + class="demo-form-inline" + > <div style="display: flex;"> - <el-form-item label="������������:"> + <el-form-item + label="������������:" + > <el-radio-group v-model="workForme.isChange"> - <el-radio :label="1">���</el-radio> - <el-radio :label="0">���</el-radio> + <el-radio :label="1"> + ��� + </el-radio> + <el-radio :label="0"> + ��� + </el-radio> </el-radio-group> </el-form-item> <el-form-item label="���������:"> - <el-input v-model="workForme.changeName" size="mini" placeholder="������������������" /> + <el-input + v-model="workForme.changeName" + size="mini" + placeholder="������������������" + /> </el-form-item> </div> <el-form-item label="������������:"> - <el-input v-model="workForme.changeDescribe" type="textarea" :autosize="{ minRows: 2, maxRows: 4}" placeholder="���������������" /> + <el-input + v-model="workForme.changeDescribe" + type="textarea" + :autosize="{ minRows: 2, maxRows: 4}" + placeholder="���������������" + /> </el-form-item> <el-row> - <el-form-item label="������:"> - <uploadFile :upload-url="uploadTermExcelUrl" :sys-code="dialogData.sysCode" /> + <el-form-item + label="������:" + class="isChangeFile" + > + <uploadFile + :upload-url="uploadTermExcelUrl" + :sys-code="dialogData.sysCode" + /> </el-form-item> </el-row> - </el-form> </div> </div> @@ -71,26 +197,62 @@ <el-row class="rectificationContent"> <el-col :span="12"> <div class="grid-content bg-purple" /> - <el-descriptions title="������������" :column="parseInt('2')"> - <el-descriptions-item label="������������" label-class-name="itemSpan">{{ dictObj.yesOrNo[parentFormData.isChange] }}</el-descriptions-item> - <el-descriptions-item label="���������" label-class-name="itemSpan">{{ parentFormData.changeName }}</el-descriptions-item> + <el-descriptions + title="������������" + :column="parseInt('2')" + > + <el-descriptions-item + label="������������" + label-class-name="itemSpan" + > + {{ dictObj.yesOrNo[parentFormData.isChange] }} + </el-descriptions-item> + <el-descriptions-item + label="���������" + label-class-name="itemSpan" + > + {{ parentFormData.changeName }} + </el-descriptions-item> </el-descriptions> <el-descriptions :column="parseInt('1')"> - <el-descriptions-item label="������������" label-class-name="itemSpan">{{ parentFormData.changeDescribe }}</el-descriptions-item> + <el-descriptions-item + label="������������" + label-class-name="itemSpan" + > + {{ parentFormData.changeDescribe }} + </el-descriptions-item> </el-descriptions> </el-col> <el-col :span="12"> <div class="grid-content bg-purple-light" /> <el-row> - <el-col :span="3" style="margin-top: 40px;font-size: 15px;color: #101010;"> + <el-col + :span="3" + style="margin-top: 40px;font-size: 15px;color: #101010;" + > <div class="grid-content bg-purple" />��������� </el-col> <el-col :span="21"> <div class="grid-content bg-purple-light" /> <div> - <div v-for="(file,index) in fileChangeListCover" :key="file.id+index" class="block"> - <el-image v-if="file.fileType ===1" style="width: 100px; height: 100px" :src="file.url" :preview-src-list="getPreviewImages(file.id,fileChangeList)" :initial-index="index" /> - <video v-else :src="file.url" style="width: 100px; height: 100px" @click="openVideo(file)"> + <div + v-for="(file,index) in fileChangeListCover" + :key="file.id+index" + class="block" + > + <el-image + v-if="file.fileType ===1" + style="width: 100px; height: 100px" + :src="file.url" + :preview-src-list="getPreviewImages(file.id,fileChangeList)" + :initial-index="index" + /> + <video + v-else + :src="file.url" + style="width: 100px; height: 100px" + @click="openVideo(file)" + > ������������������������ video ��������� </video> </div> @@ -105,26 +267,57 @@ <el-row class="rectificationContent"> <el-col :span="12"> <div class="grid-content bg-purple" /> - <el-descriptions title="������������" :column="2"> - <el-descriptions-item label="������������" label-class-name="itemSpan">{{ parentFormData.checkScore }}</el-descriptions-item> + <el-descriptions + title="������������" + :column="2" + > + <el-descriptions-item + label="������������" + label-class-name="itemSpan" + > + {{ parentFormData.checkScore }} + </el-descriptions-item> </el-descriptions> <el-descriptions :column="1"> - <el-descriptions-item label="������" label-class-name="itemSpan">{{ parentFormData.checkDescribe }}</el-descriptions-item> + <el-descriptions-item + label="������" + label-class-name="itemSpan" + > + {{ parentFormData.checkDescribe }} + </el-descriptions-item> </el-descriptions> </el-col> <el-col :span="12"> <div class="grid-content bg-purple-light" /> <el-row> - <el-col :span="3" style="margin-top: 40px;font-size: 15px;color: #101010;"> + <el-col + :span="3" + style="margin-top: 40px;font-size: 15px;color: #101010;" + > <div class="grid-content bg-purple" />��������� </el-col> <el-col :span="21"> <div class="grid-content bg-purple-light" /> <div> <div> - <div v-for="(file,index) in fileApproveListCover" :key="file.id+index" class="block"> - <el-image v-if="file.fileType ===1" style="width: 100px; height: 100px" :src="file.url" :preview-src-list="getPreviewImages(file.id,fileApproveList)" :initial-index="index" /> - <video v-else :src="file.url" style="width: 100px; height: 100px" @click="openVideo(file)"> + <div + v-for="(file,index) in fileApproveListCover" + :key="file.id+index" + class="block" + > + <el-image + v-if="file.fileType ===1" + style="width: 100px; height: 100px" + :src="file.url" + :preview-src-list="getPreviewImages(file.id,fileApproveList)" + :initial-index="index" + /> + <video + v-else + :src="file.url" + style="width: 100px; height: 100px" + @click="openVideo(file)" + > ������������������������ video ��������� </video> </div> @@ -140,23 +333,54 @@ <el-row class="rectificationContent"> <el-col :span="12"> <div class="grid-content bg-purple" /> - <el-descriptions title="������������" :column="1"> - <el-descriptions-item label="������������" label-class-name="itemSpan">{{ parentFormData.extensionNum }}</el-descriptions-item> - <el-descriptions-item label="������������" label-class-name="itemSpan">{{ parentFormData.remake }}</el-descriptions-item> + <el-descriptions + title="������������" + :column="1" + > + <el-descriptions-item + label="������������" + label-class-name="itemSpan" + > + {{ parentFormData.extensionNum }} + </el-descriptions-item> + <el-descriptions-item + label="������������" + label-class-name="itemSpan" + > + {{ parentFormData.remake }} + </el-descriptions-item> </el-descriptions> </el-col> <el-col :span="12"> <div class="grid-content bg-purple-light" /> <el-row> - <el-col :span="3" style="margin-top: 40px;font-size: 15px;color: #101010;"> + <el-col + :span="3" + style="margin-top: 40px;font-size: 15px;color: #101010;" + > <div class="grid-content bg-purple" />��������� </el-col> <el-col :span="21"> <div class="grid-content bg-purple-light" /> <div> - <div v-for="(file,index) in fileDelayListCover" :key="file.id+index" class="block"> - <el-image v-if="file.fileType ===1" style="width: 100px; height: 100px" :src="file.url" :preview-src-list="getPreviewImages(file.id,fileDelayList)" :initial-index="index" /> - <video v-else :src="file.url" style="width: 100px; height: 100px" @click="openVideo(file)"> + <div + v-for="(file,index) in fileDelayListCover" + :key="file.id+index" + class="block" + > + <el-image + v-if="file.fileType ===1" + style="width: 100px; height: 100px" + :src="file.url" + :preview-src-list="getPreviewImages(file.id,fileDelayList)" + :initial-index="index" + /> + <video + v-else + :src="file.url" + style="width: 100px; height: 100px" + @click="openVideo(file)" + > ������������������������ video ��������� </video> </div> @@ -167,45 +391,131 @@ </el-row> </div> <!-- ������������ --> - <div v-if="dialogData.pageType ==='approve'" class="examineAndApprove"> - <el-form label-width="90px" :model="rectificationFromData" class="demo-form-inline"> + <div + v-if="dialogData.pageType ==='approve'" + class="examineAndApprove" + > + <el-form + label-width="90px" + :model="rectificationFromData" + class="demo-form-inline" + > <el-form-item label="������������:"> - <el-input v-model="approveForm.checkScore" style="width: 120px;" size="mini" /> + <el-input + v-model="approveForm.checkScore" + style="width: 120px;" + size="mini" + /> </el-form-item> <el-form-item label="������:"> - <el-input v-model="approveForm.checkDescribe" type="textarea" :autosize="{ minRows: 2, maxRows: 4}" placeholder="���������������" /> + <el-input + v-model="approveForm.checkDescribe" + type="textarea" + :autosize="{ minRows: 2, maxRows: 4}" + placeholder="���������������" + /> </el-form-item> <el-form-item label="������:"> - <uploadFile :upload-url="uploadTermExcelUrl" :sys-code="dialogData.sysCode" /> + <uploadFile + :upload-url="uploadTermExcelUrl" + :sys-code="dialogData.sysCode" + /> </el-form-item> </el-form> </div> <!-- ������������ --> - <div v-if="dialogData.pageType ==='delay' && ( dialogData.pageState ==='approve')" class="examineAndApprove"> - <el-form label-width="90px" :model="rectificationFromData" class="demo-form-inline"> + <div + v-if="dialogData.pageType ==='delay' && ( dialogData.pageState ==='approve')" + class="examineAndApprove" + > + <el-form + label-width="90px" + :model="rectificationFromData" + class="demo-form-inline" + > <el-form-item label="������������:"> - <el-input v-model="delayForm.extensionNum" style="width: 200px;" /> + <el-input + v-model="delayForm.extensionNum" + style="width: 200px;" + /> </el-form-item> <el-form-item label="������������:"> - <el-input v-model="delayForm.remake" type="textarea" :autosize="{ minRows: 2, maxRows: 4}" placeholder="���������������" /> + <el-input + v-model="delayForm.remake" + type="textarea" + :autosize="{ minRows: 2, maxRows: 4}" + placeholder="���������������" + /> </el-form-item> <el-form-item label="������:"> - <uploadFile :upload-url="uploadTermExcelUrl" :sys-code="dialogData.sysCode" /> + <uploadFile + :upload-url="uploadTermExcelUrl" + :sys-code="dialogData.sysCode" + /> </el-form-item> </el-form> </div> </div> - <div slot="footer" class="dialog-footer"> - <el-button @click="close()">������</el-button> - <el-button v-if="dialogData.pageType ==='approve'" type="danger" @click="handleSubmit(50)">������</el-button> - <el-button v-if="dialogData.pageType ==='delay'&& dialogData.pageState ==='edit'" type="danger" @click="handleDelaySubmit(50)">������</el-button> - <el-button v-if="dialogData.pageType ==='delay'&& dialogData.pageState ==='edit'" type="primary" @click="handleDelaySubmit(40)">������</el-button> - <el-button v-if="dialogData.pageType !=='detail'&& dialogData.pageState ==='approve'" type="primary" @click="handleSubmit(40)">������</el-button> + <el-alert + v-if="parentFormData.isInvalid===1" + title="���������" + type="warning" + show-icon + :description="`���������${parentFormData.invalidReason}`" + :closable="false" + /> + <div + slot="footer" + class="dialog-footer" + > + <el-button @click="close()"> + ������ + </el-button> + <el-button + v-if="dialogData.pageType ==='approve'" + type="danger" + @click="handleSubmit(50)" + > + ������ + </el-button> + <el-button + v-if="dialogData.pageType ==='delay'&& dialogData.pageState ==='edit'" + type="danger" + @click="handleDelaySubmit(50)" + > + ������ + </el-button> + <el-button + v-if="dialogData.pageType ==='delay'&& dialogData.pageState ==='edit'" + type="primary" + @click="handleDelaySubmit(40)" + > + ������ + </el-button> + <el-button + v-if="dialogData.pageType !=='detail'&& dialogData.pageState ==='approve'" + type="primary" + @click="handleSubmit(40)" + > + ������ + </el-button> </div> </el-dialog> - <el-dialog :visible.sync="videoVisible" width="600px" :modal-append-to-body="false" :destroy-on-close="true" @close="handleCancel"> + <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 /> + <video + ref="video" + style="width: 300px;height: 500px" + :src="dialogImageUrl" + controls + autoplay + /> </div> </el-dialog> </div> @@ -222,14 +532,15 @@ uploadFile }, props: { + isToMap: { type: Boolean, required: true, default: false }, dialogData: { type: Object, default: () => {} }, visible: { type: Boolean, required: true } }, - data() { + data () { return { centerDialogVisible: true, workForme: { - isChange: 0, + isChange: 1, changeName: '', changeDescribe: '' }, @@ -270,15 +581,16 @@ fileDelayListCover: [], fileDelayList: [], videoVisible: false, - dialogImageUrl: '' + dialogImageUrl: '', + activeLeng: 1 } }, computed: { - uploadTermExcelUrl() { + uploadTermExcelUrl () { return `${requestObj.baseUrl}/file/upload` }, - parentFormData() { - console.log('parentFormData.approveList', this.dialogData.parentFormData) + parentFormData () { + console.log('parentFormData.approveList', this.dialogData) return this.dialogData.parentFormData }, updataUnitIdFormatter: function () { @@ -303,33 +615,38 @@ ) return data ? data.dataValue : '' }, - setepList() { + setepList () { const leng = this.dialogData.parentFormData.approveList.length let data = _.cloneDeep(this.dialogData.parentFormData.approveList) - if (leng === 1) { data = [...data, ...this.setepListAdd.set1] + // eslint-disable-next-line vue/no-side-effects-in-computed-properties + this.activeLeng = 1 } if (leng === 2) { data = [...data, ...this.setepListAdd.set2] + // eslint-disable-next-line vue/no-side-effects-in-computed-properties + this.activeLeng = 2 } if (leng === 3) { data = [...data, ...this.setepListAdd.set3] + // eslint-disable-next-line vue/no-side-effects-in-computed-properties + this.activeLeng = 4 } - console.log('data', leng) + console.log('datadata', data) return data } }, watch: { parentFormData: { - handler(newVal) { + handler (newVal) { this.searchthisFileList(newVal) }, deep: true, immediate: true } }, - created() { + created () { const name = this.$store.state.user.name this.workForme.changeName = name this.getContaminateList() @@ -347,7 +664,10 @@ }) }, methods: { - getPreviewImages(index, list) { + toMap () { + this.$emit('update:isToMap', true) + }, + getPreviewImages (index, list) { let startIndex = 0 const chechList = _.cloneDeep(list) chechList.forEach((item, i) => { @@ -363,16 +683,16 @@ var remain = imgList.splice(0, startIndex) return start.concat(remain) }, - openVideo(item) { + openVideo (item) { console.log('item', item) this.dialogImageUrl = item.url this.videoVisible = true }, - handleCancel() { + handleCancel () { this.dialogImageUrl = '' this.videoVisible = false }, - searchthisFileList(newVal) { + searchthisFileList (newVal) { if (newVal.fileBaseList && newVal.fileBaseList.length > 0) { newVal.fileBaseList.forEach(item => { if (item.fileType === 1) { @@ -450,11 +770,11 @@ }) } }, - close() { + close () { this.$emit('update:visible', false) }, // ������������������list - getUnitList() { + getUnitList () { this.$request({ url: '/allocation/unit', method: 'get' @@ -462,7 +782,7 @@ this.unitList = res.data }) }, - handleDelaySubmit(state) { + handleDelaySubmit (state) { this.$request({ url: '/allocationExtension/check', method: 'get', @@ -479,12 +799,18 @@ } }) }, - handleSubmit(state) { + handleSubmit (state) { + console.log(state) + console.log(this.fileList) // ������ let api = '/allocation/change' let data = {} console.log('this.dialogData.pageType', this.dialogData.pageType) if (this.dialogData.pageType === 'work') { + if (!this.fileList.length) { + this.$message.error('���������������������') + return false + } api = '/allocation/change' data = { allocationId: this.dialogData.parentFormData.allocationId, @@ -521,7 +847,7 @@ } }) }, - getContaminateList() { + getContaminateList () { this.$request({ url: '/allocation/contaminate', method: 'get' @@ -573,4 +899,11 @@ display: inline-block; margin-right: 10px; } +.isChangeFile{ + /deep/.el-form-item__label:before { + content: "*"; + color: #f56c6c; + margin-right: 4px; +} +} </style> -- Gitblit v1.8.0