From 9251f709dc2a0d278ef2c0cdd76a244bfefc5784 Mon Sep 17 00:00:00 2001 From: quanyawei <401863037@qq.com> Date: Thu, 12 Sep 2024 13:15:53 +0800 Subject: [PATCH] fix: 责任单位修改 --- src/views/toCarryOutLegislativeReforms/reform/index.vue | 1053 ++++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 844 insertions(+), 209 deletions(-) diff --git a/src/views/toCarryOutLegislativeReforms/reform/index.vue b/src/views/toCarryOutLegislativeReforms/reform/index.vue index df6afda..2c2257c 100644 --- a/src/views/toCarryOutLegislativeReforms/reform/index.vue +++ b/src/views/toCarryOutLegislativeReforms/reform/index.vue @@ -1,176 +1,297 @@ <template> - <div class="main"> + <div + v-loading="loading" + class="main" + > <div> - <searchBar v-if="searchType" :search-type="'reform'" @handleSearch="handleSearch" @handleAdd="handleOpenDialog(null,'add')" /> + <searchBar + v-if="searchType" + :search-type="'reform'" + :initialization-data="initializationData" + @handleSearch="handleSearchBut" + @handleAdd="handleOpenDialog(null, 'add')" + /> <newWorkOrder v-if="centerDialogVisible" ref="newWorkOrder" + :is-to-map.sync="isToMap" :parent-form-data="parentFormData" :title="title" :page-state="pageState" :visible.sync="centerDialogVisible" @handleSubmit="newHandleSubmit" /> + <!-- <el-divider></el-divider> --> <div class="tab"> - <el-table - size="mini" - :data="tableData" - border - max-height="680" - style="width: 100%" - :header-cell-style="{ - color: '#101111', fontSize: '16px' - }" - > - <el-table-column - type="index" - label="������" - width="60px" - align="center" - /> - <el-table-column - align="center" - > - <template slot="header"> - <div>������</div> - <div>������������</div> - </template> - <template slot-scope="scope"> - <div> {{ scope.row.allocationNum }}</div> - <div> {{ scope.row.escalationTime }}</div> + <div class="exportBox"> + <div>������������</div> + <div> + <el-button + type="primary" + size="mini" + @click="handleOpenDialog(null, 'add')" + > + ������ + </el-button> + <el-button + :disabled="!(selectionRows.length>0)" + type="info" + size="mini" + @click="isNowDonw" + > + ������ + </el-button> + </div> + </div> - </template> - </el-table-column> - <el-table-column - align="center" - prop="unitId" - label="������������" - :formatter="unitIdFormatter" - /> - <el-table-column - align="center" - prop="polluteType" - label="������������" - width="120px" - :formatter="polluteTypeFormatter" - /> - <el-table-column - align="center" - > - <template slot="header"> - <div>������������</div> - <div>������������</div> - </template> - <template slot-scope="scope"> - <div> {{ dictObj.changeEnum[scope.row.changeType] }}</div> - <div v-show="scope.row.changeType && scope.row.changeType===2" :class="[Number(scope.row.residueDay) < 0 ? errorClass : '']"> - <span v-if="Number(scope.row.residueDay) < 0"> - ������ {{ Math.abs(scope.row.residueDay) }}��� - </span> - <span v-else> - {{ scope.row.residueDay }}��� - </span> - + <div style="position: relative;"> + <div> + <div v-if="sealList.length>0"> + <div + v-for="(item,index) in sealList" + :key="index" + :style="{'height':item.styleHeight}" + > + <div + v-if="item.isInvalid===1" + class="yingzhang" + > + <div class="seal-red"> + ��������� + </div> + </div> </div> - </template> - </el-table-column> - <el-table-column - align="center" - prop="investigationType" - label="������������" - width="100px" - :formatter="investigationTypeFormatter" - /> - <el-table-column - align="center" - prop="state" - width="100px" - label="������������" - > - <template slot-scope="scope"> - <el-tag v-if="scope.row.state===40" type="success"> - {{ stateFormatter(scope.row) }} - </el-tag> - <el-tag v-if="scope.row.state===50" type="danger"> - {{ stateFormatter(scope.row) }} - </el-tag> - <el-tag v-if="scope.row.state===9" type="info"> - {{ stateFormatter(scope.row) }} - </el-tag> - <el-tag v-if="scope.row.state===20" type="warning"> - {{ stateFormatter(scope.row) }} - </el-tag> - <el-tag v-if="scope.row.state===10" type="warning"> - {{ stateFormatter(scope.row) }} - </el-tag> - <el-tag v-if="scope.row.state===30" type="warning"> - {{ stateFormatter(scope.row) }} - </el-tag> - </template> - </el-table-column> - <el-table-column - align="center" - prop="isInvalid" - label="������������" - width="60px" - :formatter="isInvalidFormatter" - /> - <el-table-column - align="center" - > - <template slot="header"> - <div>������������</div> - <div>���������</div> - </template> - <template slot-scope="scope"> - <div> {{ scope.row.escalationName }}</div> - <div> {{ updatUnitIdFormatter(scope.row) }}</div> - - </template> - </el-table-column> - <el-table-column - align="center" - > - <template slot="header"> - <div>���������</div> - <div>������������</div> - </template> - <template slot-scope="scope"> - <div>{{ scope.row.updateName }}</div> - <div>{{ scope.row.updateTime }}</div> - </template> - </el-table-column> - <el-table-column - align="center" - prop="createTime" - width="100px" - label="������" - > - <template slot-scope="scope"> - <el-button type="text" size="medium" @click="openWorkOrdinDialog(scope.row,'detail')">������</el-button> - <el-button v-if="scope.row.state===9" type="text" size="medium" @click="handleOpenDialog(scope.row,'edit')">������</el-button> - <el-button v-if="scope.row.state>30&&scope.row.isInvalid===0" type="text" size="medium" @click="handleCancel(scope.row)">������</el-button> - <el-button v-if="scope.row.state===20" type="text" size="medium" @click="openWorkOrdinDialog(scope.row,'work')">������</el-button> - <el-button v-if="scope.row.state===30" type="text" size="medium" @click="openWorkOrdinDialog(scope.row,'approve')">������</el-button> - <el-button v-if="scope.row.state===20&&scope.row.changeType===2&&scope.row.applyState===0" type="text" size="medium" @click="openWorkOrdinDialog(scope.row,'delay')">������������</el-button> - </template> - </el-table-column> - </el-table> + </div> + </div> + <div style="position: absolute;top:0;width: 100%;"> + <el-table + size="mini" + :data="tableData" + border + style="width: 100%" + :header-cell-style="{ + color: '#101111', + fontSize: '16px' + }" + @selection-change="handleSelectionChange" + > + <el-table-column + type="selection" + width="40" + align="center" + /> + <el-table-column + type="index" + label="������" + width="60px" + align="center" + /> + <el-table-column align="center"> + <template slot="header"> + <div>������</div> + <div>������������</div> + </template> + <template slot-scope="scope"> + <div>{{ scope.row.allocationNum }}</div> + <div>{{ scope.row.escalationTime }}</div> + </template> + </el-table-column> + <el-table-column + align="center" + prop="unitId" + label="������������" + width="150px" + :formatter="unitIdFormatter" + /> + <el-table-column + align="center" + prop="polluteType" + label="������������" + width="120px" + :formatter="polluteTypeFormatter" + /> + <el-table-column align="center"> + <template slot="header"> + <div>������������</div> + <div>������������</div> + </template> + <template slot-scope="scope"> + <div>{{ dictObj.changeEnum[scope.row.changeType] }}</div> + <div + v-show="scope.row.changeType && scope.row.changeType === 2" + :class="[Number(scope.row.residueDay) < 0 ? errorClass : '']" + > + <span v-if="Number(scope.row.residueDay) < 0"> + ������ {{ Math.abs(scope.row.residueDay) }}��� + </span> + <span v-else> {{ scope.row.residueDay }}��� </span> + </div> + </template> + </el-table-column> + <el-table-column + align="center" + prop="investigationType" + label="������������" + width="100px" + :formatter="investigationTypeFormatter" + /> + <el-table-column + align="center" + prop="state" + width="100px" + label="������������" + > + <template slot-scope="scope"> + <el-tag + v-if="scope.row.state === 40" + type="success" + > + {{ stateFormatter(scope.row) }} + </el-tag> + <el-tag + v-if="scope.row.state === 50" + type="danger" + > + {{ stateFormatter(scope.row) }} + </el-tag> + <el-tag + v-if="scope.row.state === 9" + type="info" + > + {{ stateFormatter(scope.row) }} + </el-tag> + <el-tag + v-if="scope.row.state === 20" + type="warning" + > + {{ stateFormatter(scope.row) }} + </el-tag> + <el-tag + v-if="scope.row.state === 10" + type="warning" + > + {{ stateFormatter(scope.row) }} + </el-tag> + <el-tag + v-if="scope.row.state === 30" + type="warning" + > + {{ stateFormatter(scope.row) }} + </el-tag> + </template> + </el-table-column> + <!-- <el-table-column align="center" prop="isInvalid" label="������������" width="60px" :formatter="isInvalidFormatter" /> --> + <el-table-column + align="center" + width="150px" + > + <template slot="header"> + <div>������������</div> + <div>���������</div> + </template> + <template slot-scope="scope"> + <div>{{ scope.row.escalationName }}</div> + <div>{{ updatUnitIdFormatter(scope.row) }}</div> + </template> + </el-table-column> + <el-table-column align="center"> + <template slot="header"> + <div>���������</div> + <div>������������</div> + </template> + <template slot-scope="scope"> + <div>{{ scope.row.updateName }}</div> + <div>{{ scope.row.updateTime }}</div> + </template> + </el-table-column> + <el-table-column + align="center" + prop="createTime" + min-width="100px" + label="������" + > + <template slot-scope="scope"> + <el-button + type="text" + size="medium" + @click="openWorkOrdinDialog(scope.row, 'detail')" + > + ������ + </el-button> + <el-button + v-if="scope.row.isCode==='1'" + type="text" + size="medium" + @click="openEditDialog(scope.row)" + > + ������������ + </el-button> + <el-button + v-if="scope.row.state === 9" + type="text" + size="medium" + @click="handleOpenDialog(scope.row, 'edit')" + > + ������ + </el-button> + <el-button + v-if="scope.row.state > 30 && scope.row.isInvalid === 0" + type="text" + size="medium" + @click="handleCancel(scope.row)" + > + ������ + </el-button> + <el-button + v-if="scope.row.state === 20" + type="text" + size="medium" + @click="openWorkOrdinDialog(scope.row, 'work')" + > + ������ + </el-button> + <el-button + v-if="scope.row.state === 30 && scope.row.isApprove === 1" + type="text" + size="medium" + @click="openWorkOrdinDialog(scope.row, 'approve')" + > + ������ + </el-button> + <el-button + v-if="scope.row.state === 20 && scope.row.changeType === 2 &&scope.row.applyState === 0" + type="text" + size="medium" + @click="openWorkOrdinDialog(scope.row, 'delay')" + > + ������������ + </el-button> + </template> + </el-table-column> + </el-table> + </div> + </div> </div> <div class="pagina"> <el-pagination background :current-page="pagination.currentPage" :page-sizes="pagination.pageSizes" - :page-size="pagination.PageSize" + :page-size="pagination.pageSize" :total="pagination.totalCount" - layout="sizes,prev, pager, next, jumper" + layout="total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange" @current-change="handleCurrentChange" /> </div> </div> - <workOrderInformation v-if="workOrdinDialogVisible" :dialog-data="dialogData" :visible.sync="workOrdinDialogVisible" @handeleSumit="handeleSumit" /> + <workOrderInformation + v-if="workOrdinDialogVisible" + :dialog-data="dialogData" + :is-to-map.sync="isToMap" + :visible.sync="workOrdinDialogVisible" + @handeleSumit="handeleSumit" + /> <el-dialog title="������" :visible.sync="dialogVisible" @@ -180,36 +301,205 @@ > <div> <el-form label-width="100px"> - <el-form-item label="���������������" style="margin-right: 30px;"> + <el-form-item + label="���������������" + style="margin-right: 30px" + > <el-input v-model="invalidReason" type="textarea" - :autosize="{ minRows: 2, maxRows: 10}" + :autosize="{ minRows: 2, maxRows: 10 }" placeholder="���������������" /> </el-form-item> </el-form> </div> - <span slot="footer" class="dialog-footer"> + <span + slot="footer" + class="dialog-footer" + > <el-button @click="handleClose">��� ���</el-button> - <el-button type="primary" @click="handleInvalid">��� ���</el-button> + <el-button + type="primary" + @click="handleInvalid" + >��� ���</el-button> </span> </el-dialog> + <el-dialog + v-if="dialogEditVisible" + title="������" + :visible.sync="dialogEditVisible" + width="800px" + top="5vh" + :before-close="handleClose" + center + > + <el-descriptions title="������������"> + <template slot="extra"> + <div> + {{ editEscalationUnitData.allocationNum }} + </div> + </template> + <el-descriptions-item + label="������������" + label-class-name="itemSpan" + > + {{ editEscalationUnitData.escalationTime }} + </el-descriptions-item> + <el-descriptions-item + label="������������" + label-class-name="itemSpan" + > + {{ updataUnitIdFormatter }} + </el-descriptions-item> + <el-descriptions-item + label="������������" + label-class-name="itemSpan" + > + {{ polluteTypeeDITFormatter }} + </el-descriptions-item> + <el-descriptions-item + label="������������" + label-class-name="itemSpan" + > + {{ dictObj.changeEnum[editEscalationUnitData.changeType] }} + </el-descriptions-item> + <el-descriptions-item + label="������������" + label-class-name="itemSpan" + > + {{ editEscalationUnitData.changeDay || 0 }} ��� + </el-descriptions-item> + <el-descriptions-item + label="������������" + label-class-name="itemSpan" + > + {{ updataEscalationUnitIdFormatter }} + </el-descriptions-item> + <el-descriptions-item + label="���������" + label-class-name="itemSpan" + > + {{ editEscalationUnitData.escalationName }} + </el-descriptions-item> + <el-descriptions-item + label="������������" + label-class-name="itemSpan" + > + {{ editEscalationUnitData.pollutePosition }} + </el-descriptions-item> + </el-descriptions> + <el-divider /> + <div> + <p class="editTile"> + ������������ + </p> + <el-form + :inline="true" + class="demo-form-inline" + > + <el-form-item label="������������:"> + <el-select + v-model="formInEdit.unitId" + size="small" + clearable + placeholder="���������" + > + <el-option + v-for="item in unitList" + :key="item.unitId" + :label="item.unitName" + :value="item.unitId" + /> + </el-select> + </el-form-item> + <el-form-item label="������������:"> + <el-select + v-model="formInEdit.polluteType" + size="small" + clearable + placeholder="���������" + > + <el-option + v-for="item in polluteList" + :key="item.dataKey" + :label="item.dataValue" + :value="item.dataKey" + /> + </el-select> + </el-form-item> + </el-form> + </div> + <el-collapse> + <el-collapse-item + title="������������" + name="1" + > + <div class="block"> + <el-timeline> + <el-timeline-item + v-for="(activity, index) in operatingLog" + :key="index" + :color="'#0bbd87'" + :timestamp="activity.createTime" + > + <div v-if="activity.content"> + ���������: {{ activity.userName }} + </div> + <div v-if="activity.content"> + ������������: {{ activity.content }} + </div> + <div v-if="activity.polluteType"> + ������������: {{ activity.polluteType }} + </div> + </el-timeline-item> + </el-timeline> + </div> + </el-collapse-item> + </el-collapse> + + <span + slot="footer" + class="dialog-footer" + > + <el-button @click="handleClose">��� ���</el-button> + <el-button + type="primary" + @click="handleEditChange" + >��� ���</el-button> + </span> + </el-dialog> + <mapContainer + v-if="isToMap" + :visible.sync="isToMap" + @addressAndLnt="getaddressAndLnt" + /> </div> </template> <script> +// import { mixins } from './downLoadNotice' +import axios from 'axios' +import _ from 'lodash' +import qs from 'qs' import searchBar from '@/views/toCarryOutLegislativeReforms/components/queryForm' +import mapContainer from '@/views/toCarryOutLegislativeReforms/components/locationMap' import newWorkOrder from '@/views/toCarryOutLegislativeReforms/components/newWorkOrder' import workOrderInformation from '@/views/toCarryOutLegislativeReforms/components/workOrderInformation' export default { components: { searchBar, newWorkOrder, + mapContainer, workOrderInformation }, - data() { + // mixins: [mixins], + data () { return { + loading: false, + isToMap: false, + selectionRows: [], + position: [], errorClass: 'errorClass', searchType: 'reform', pagination: { @@ -217,13 +507,12 @@ // ������������������������������������������(���������������������������) totalCount: 0, // ������������������������������ - pageSizes: [10, 20, 30, 40], + pageSizes: [10, 50, 100, 200], // ������������������������������������������ pageSize: 10 }, formData: {}, - tableData: [ - ], + tableData: [], dialogData: { title: '������', parentFormData: {}, @@ -233,32 +522,278 @@ workOrdinDialogVisible: false, centerDialogVisible: false, dialogVisible: false, + dialogEditVisible: false, unitList: [], polluteList: [], Dic: JSON.parse(localStorage.getItem('dict')), dictObj: JSON.parse(localStorage.getItem('dictObj')), parentFormData: {}, pageState: 'add', + mapType: 'edit', invalidReason: '', + address: '', slectRow: {}, - title: '' + title: '', + searchData: { + isInvalid: 0 + }, + editEscalationUnitData: {}, + formInEdit: { + polluteType: '', + unitId: '' + }, + operatingLog: [], + sealList: [] } }, - - created() { - this.handleSearch() + computed: { + updataEscalationUnitIdFormatter: function () { + const data = this.unitList.find( + item => + item && item.unitId === this.editEscalationUnitData.escalationUnitId + ) + return data ? data.unitName : '' + }, + updataUnitIdFormatter: function () { + const data = this.unitList.find( + item => item && item.unitId === this.editEscalationUnitData.unitId + ) + return data ? data.unitName : '' + }, + polluteTypeeDITFormatter: function () { + const data = this.polluteList.find( + item => + item && + parseInt(item.dataKey) === this.editEscalationUnitData.polluteType + ) + return data ? data.dataValue : '' + }, + initializationData () { + return this.$route.query + } + }, + watch: { + isToMap (newVal, oldVal) { + this.isToMap = newVal + } + }, + created () { + if (Object.entries(this.$route.query).length === 0) { + this.handleSearch({ isInvalid: 0, state: [9, 20, 30] }) + } else { + let state = [] + let changeType = null + let startTime = this.initializationData.startTime + let endTime = this.initializationData.endTime + if (this.initializationData.type === 'total') { + state = [] + } else if (this.initializationData.type === 'unComplete') { + state = [9, 20, 30] + } else if (this.initializationData.type === 'complete') { + state = [40] + } else if (this.initializationData.type === 'overdue') { + state = [] + changeType = 2 + } + this.handleSearch({ isInvalid: 0, state: state, changeType: changeType, startTime: startTime, endTime: endTime }) + } this.getUnitList() this.getContaminateList() }, + // mounted () { + // console.log('this.$route.query', this.$route.query) + // this.initializationData = this.$route.query + // }, methods: { - handleCancel(row) { + getaddressAndLnt (position, address) { + if (this.mapType === 'edit') { + this.$refs.newWorkOrder.formData.pollutePosition = address + this.position = position + } + }, + handleSelectionChange (rows) { + console.log(rows) + this.selectionRows = rows + }, + isNowDonw () { + this.$confirm('������������������������������?', '������', { + confirmButtonText: '������������', + cancelButtonText: '������������', + distinguishCancelAndClose: true, + type: 'warning' + }) + .then(() => { + this.loading = true + this.exportData() + }) + .catch(action => { + if (action === 'cancel') { + this.loading = false + this.exportData() + } else { + this.loading = false + } + }) + }, + exportData () { + // this.dowOrgFile('���������������.xlsx') + let that = this + const CancelToken = axios.CancelToken + let cancel + let timer + const totalSize = this.selectionRows.length * 1024 * 1024 + const uniSign = new Date().getTime() + '' // ��������������������������������������������������������������������������������������������� + if (this.loading) { + timer = setTimeout(() => { + cancel() + this.loading = false + this.$message.error('���������������������������������������������') + }, 300000) + } + + // this.loading = true + this.$request({ + url: '/allocation/listExcel', + method: 'get', + responseType: 'blob', + params: { + id: this.selectionRows.map(item => item.allocationId) + }, + cancelToken: new CancelToken(function executor (c) { + cancel = c + }), + onDownloadProgress (progress) { + console.log('onDownloadProgress', progress) + const loaded = progress.loaded + // progress������������loaded������������������������������total������������������������������������������ + let downProgress = Math.round((loaded / totalSize) * 100) + console.log('downProgress', downProgress) + // ������������������������������������������������������������vuex������������ + if (!that.loading) { + that.$store.commit('downLoadProgress/SET_PROGRESS', { + path: uniSign, + progress: downProgress + }) + } + }, + paramsSerializer: params => { + return qs.stringify(params, { + indices: false + }) + } + }) + .then(res => { + clearTimeout(timer) + console.log('������������', res) + if (res.code === -1) { + this.$message.error(res.message) + } else { + if (!that.loading) { + that.$store.commit('downLoadProgress/SET_PROGRESS', { + path: uniSign, + progress: 100 + }) + } + this.getOutExcel('���������������.xlsx', res) + } + }) + .catch(err => { + clearTimeout(timer) + console.log('������������', err) + this.loading = false + }) + }, + getOutExcel (fileName, res) { + const blob = new Blob([res], { type: 'application/x-xls' }) + if (window.navigator.msSaveOrOpenBlob) { + // ������ IE & EDGE + this.loading = false + navigator.msSaveBlob(blob, fileName) + } else { + const link = document.createElement('a') + // ������������������������URL������ + const url = window.URL || window.webkitURL || window.moxURL + // ������������������ + link.href = url.createObjectURL(blob) + // ������������������ + link.download = fileName + // ������������������ + link.click() + // ������������������������ + url.revokeObjectURL(link.href) + this.$message({ + showClose: true, + duration: 0, + message: '���������������', + type: 'success' + }) + this.loading = false + } + }, + openEditDialog (row) { + this.editEscalationUnitData = row + this.dialogEditVisible = true + this.$request({ + url: '/allocation/getLog', + method: 'get', + params: { + allocationNum: this.editEscalationUnitData.allocationNum + } + }) + .then(res => { + this.operatingLog = res.data + }) + .catch(err => { + this.$message.error(err.message) + console.log('������Region������') + console.log(err) + }) + }, + handleCancel (row) { this.dialogVisible = true this.slectRow = row }, - handleClose() { + handleClose () { this.dialogVisible = false + this.dialogEditVisible = false }, - handleInvalid() { + handleEditChange () { + if (this.formInEdit.polluteType === '' && this.formInEdit.unitId === '') { + this.$message({ + message: '���������������������', + type: 'error' + }) + return + } + this.$request({ + url: '/allocation/updataUnit', + method: 'get', + params: { + id: this.editEscalationUnitData.allocationId, + ...this.formInEdit + } + }) + .then(res => { + if (res.code === 0) { + this.$message({ + message: '������������', + type: 'success' + }) + this.dialogEditVisible = false + this.formInEdit = { + polluteType: '', + unitId: '' + } + this.handleSearch() + } + }) + .catch(err => { + this.$message.error(err.message) + console.log('������Region������') + console.log(err) + }) + }, + handleInvalid () { this.$request({ url: '/allocation/invalid', method: 'get', @@ -266,7 +801,7 @@ id: this.slectRow.allocationId, invalidReason: this.invalidReason } - }).then((res) => { + }).then(res => { if (res.code === 0) { this.$message({ message: '������������', @@ -279,12 +814,13 @@ }) }, // ������ - handleOpenDialog(row, type) { + handleOpenDialog (row, type) { this.pageState = type this.parentFormData = {} if (type === 'add') { this.title = '���������������' this.centerDialogVisible = true + this.mapType = 'edit' } else { this.title = '���������������' this.$request({ @@ -293,41 +829,46 @@ params: { id: row.allocationId } - }).then((res) => { + }).then(res => { this.parentFormData = res.data console.log(this.parentFormData) this.centerDialogVisible = true }) } }, - updatUnitIdFormatter(val) { - const data = this.unitList.find(item => item && item.unitId === val.escalationUnitId) + updatUnitIdFormatter (val) { + const data = this.unitList.find( + item => item && item.unitId === val.escalationUnitId + ) return data ? data.unitName : '' }, - unitIdFormatter(val) { - const data = this.unitList.find(item => item && item.unitId === val.unitId) + unitIdFormatter (val) { + const data = this.unitList.find( + item => item && item.unitId === val.unitId + ) return data ? data.unitName : '' }, - polluteTypeFormatter(val) { - const data = this.polluteList.find(item => item && parseInt(item.dataKey) === val.polluteType) + polluteTypeFormatter (val) { + const data = this.polluteList.find( + item => item && parseInt(item.dataKey) === val.polluteType + ) return data ? data.dataValue : '' }, - investigationTypeFormatter(val) { + investigationTypeFormatter (val) { return this.dictObj.investigationEnum[val.investigationType] }, - stateFormatter(val) { - console.log('valval', val) + stateFormatter (val) { return this.dictObj.allocationApproveEnum[val.state] }, - isInvalidFormatter(val) { + isInvalidFormatter (val) { return this.dictObj.yesOrNo[val.isInvalid] }, // ������������������list - getUnitList() { + getUnitList () { this.$request({ url: '/allocation/unit', method: 'get' - }).then((res) => { + }).then(res => { if (res.code === 0) { this.unitList = res.data } else { @@ -335,11 +876,11 @@ } }) }, - getContaminateList() { + getContaminateList () { this.$request({ url: '/allocation/contaminate', method: 'get' - }).then((res) => { + }).then(res => { if (res.code === 0) { this.polluteList = res.data } else { @@ -347,11 +888,11 @@ } }) }, - handeleSumit() { + handeleSumit () { this.handleSearch() }, // ������ - newHandleSubmit(obj) { + newHandleSubmit (obj) { console.log(obj) console.log(this.parentFormData) let api = '/allocation/insert' @@ -359,13 +900,21 @@ api = '/allocation/update' // obj.fileBaseList = [...this.parentFormData.fileBaseList, ... obj.fileBaseList] } + let latitude = '' + let longitude = '' + if (this.position.length > 0) { + latitude = this.position[1] + longitude = this.position[0] + } this.$request({ url: api, method: 'post', data: { + 'latitude': latitude, + 'longitude': longitude, ...obj } - }).then((res) => { + }).then(res => { if (res.code === 0) { this.centerDialogVisible = false @@ -375,18 +924,49 @@ } }) }, - handleSearch(obj) { + handleSearchBut (obj) { + const pageSize = this.pagination.pageSize + this.pagination = { + currentPage: 1, + // ������������������������������������������(���������������������������) + totalCount: 0, + // ������������������������������ + pageSizes: [10, 50, 100, 200], + // ������������������������������������������ + pageSize: pageSize + } + this.handleSearch(obj) + }, + handleSearch (obj) { + this.selectionRows = [] + if (obj) { + this.searchData = obj + } this.$request({ url: '/allocation/page', method: 'post', data: { - ...obj, - 'page': this.pagination + ...this.searchData, + page: this.pagination } - }).then((res) => { + }).then(res => { if (res.code === 0) { this.tableData = res.data.list + this.sealList = _.cloneDeep(res.data.list) || [] + this.sealList.unshift({ isInvalid: 0 }) + this.sealList.forEach(item => { + item.styleHeight = null + }) this.pagination.totalCount = res.data.page.totalNum + this.$nextTick(() => { + const rows = this.$el.querySelectorAll('table tr') + for (let i = 0; i < rows.length; i++) { + const row = rows[i] + const height = row.getBoundingClientRect().height + this.sealList[i]['styleHeight'] = height + 'px' + } + this.$forceUpdate() + }) } else { this.$message.error(res.message) } @@ -394,26 +974,30 @@ }, // ������ // ��������������������� - handleSizeChange(val) { + handleSizeChange (val) { // ��������������������������� - this.pagination.PageSize = val + console.log('345') + this.pagination.pageSize = val // ��������������������������������������������������������������������������� this.pagination.currentPage = 1 + this.handleSearch() }, // ��������������� - handleCurrentChange(val) { + handleCurrentChange (val) { // ��������������������� + console.log('123') this.pagination.currentPage = val + this.handleSearch() // console.log(val) }, - openWorkOrdinDialog(row, type) { + openWorkOrdinDialog (row, type) { this.$request({ url: '/allocation/detail', method: 'get', params: { id: row.allocationId } - }).then((res) => { + }).then(res => { this.parentFormData = res.data this.workOrdinDialogVisible = true if (type === 'work') { @@ -433,8 +1017,11 @@ sysCode: '1010203' } } else if (type === 'detail') { + this.mapType = 'view' + this.position = [res.data.longitude, res.data.latitude] + this.address = res.data.pollutePosition this.dialogData = { - title: '���������', + title: '���������������', parentFormData: res.data, pageType: 'detail' } @@ -454,17 +1041,18 @@ </script> <style scoped lang="scss"> -.main{ - padding: 20px; - padding-top: 0px; - height: 100%; - overflow: overlay; +.main { + padding: 20px; + padding-top: 0px; + height: 100%; + overflow: overlay; } .tab { - margin-top: 0px; - /deep/ .el-tag{ - font-size: 16px; - } + min-height: 160px; + margin-top: 0px; + /deep/ .el-tag { + font-size: 16px; + } } // /deep/ .el-table__body-wrapper { // overflow: scroll; @@ -472,22 +1060,69 @@ // overflow-x: hidden; // max-height: 400px; // } -.pagina{ - margin-top: 10px; +.pagina { + margin-top: 10px; } -/deep/ .el-table__row{ +/deep/ .el-table__row { font-size: 18px; } .el-pagination { padding: 0; - .el-select{ - /deep/.el-input{ - margin:0; + .el-select { + /deep/.el-input { + margin: 0; } } - } -.errorClass{ +.errorClass { color: red; } +.editTile { + color: #303133; + font-size: 16px; + font-weight: 700; +} +/deep/.el-collapse-item__header { + color: #303133; + font-size: 16px; + font-weight: 700; +} +.exportBox { + font-weight: 700; + font-size: 18px; + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 10px; +} +.yingzhang { + position: relative; + + .seal-red { + position: absolute; + left: 85px; + top: 18px; + z-index: 999; + // top: -85px; + display: inline-block; + border: solid 2px #e93e00; + border-radius: 0.2em; + color: #e24c06; + font-size: 19px; + line-height: 1; + opacity: 0; + padding: 0.1em 0.5em; + text-transform: uppercase; + opacity: 0; + transform: rotate(-2deg) scale(5); + animation: seal 0.3s cubic-bezier(0.6, 0.04, 0.98, 0.335) forwards; + } + + @keyframes seal { + 100% { + opacity: 0.75; + transform: rotate(-15deg) scale(1); + } + } +} </style> -- Gitblit v1.8.0