From 9083fd270cd172f998eb2dd3dfae59187a70cb1a Mon Sep 17 00:00:00 2001 From: quanyawei <401863037@qq.com> Date: Sat, 07 Oct 2023 09:31:11 +0800 Subject: [PATCH] Merge branch 'feature_1.0' --- src/views/toCarryOutLegislativeReforms/reform/index.vue | 502 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 502 insertions(+), 0 deletions(-) diff --git a/src/views/toCarryOutLegislativeReforms/reform/index.vue b/src/views/toCarryOutLegislativeReforms/reform/index.vue new file mode 100644 index 0000000..ea5f8c4 --- /dev/null +++ b/src/views/toCarryOutLegislativeReforms/reform/index.vue @@ -0,0 +1,502 @@ +<template> + <div class="main"> + <div> + <searchBar v-if="searchType" :search-type="'reform'" @handleSearch="handleSearch" @handleAdd="handleOpenDialog(null,'add')" /> + <newWorkOrder + v-if="centerDialogVisible" + ref="newWorkOrder" + :parent-form-data="parentFormData" + :title="title" + :page-state="pageState" + :visible.sync="centerDialogVisible" + @handleSubmit="newHandleSubmit" + /> + <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> + + </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> + </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&&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 class="pagina"> + <el-pagination + background + :current-page="pagination.currentPage" + :page-sizes="pagination.pageSizes" + :page-size="pagination.pageSize" + :total="pagination.totalCount" + 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" /> + <el-dialog + title="������" + :visible.sync="dialogVisible" + width="600px" + :before-close="handleClose" + center + > + <div> + <el-form label-width="100px"> + <el-form-item label="���������������" style="margin-right: 30px;"> + <el-input + v-model="invalidReason" + type="textarea" + :autosize="{ minRows: 2, maxRows: 10}" + placeholder="���������������" + /> + </el-form-item> + </el-form> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="handleClose">��� ���</el-button> + <el-button type="primary" @click="handleInvalid">��� ���</el-button> + </span> + </el-dialog> + </div> +</template> + +<script> +import searchBar from '@/views/toCarryOutLegislativeReforms/components/queryForm' +import newWorkOrder from '@/views/toCarryOutLegislativeReforms/components/newWorkOrder' +import workOrderInformation from '@/views/toCarryOutLegislativeReforms/components/workOrderInformation' +export default { + components: { + searchBar, + newWorkOrder, + workOrderInformation + }, + data() { + return { + errorClass: 'errorClass', + searchType: 'reform', + pagination: { + currentPage: 1, + // ������������������������������������������(���������������������������) + totalCount: 0, + // ������������������������������ + pageSizes: [10, 20, 30, 40], + // ������������������������������������������ + pageSize: 10 + }, + formData: {}, + tableData: [ + ], + dialogData: { + title: '������', + parentFormData: {}, + pageState: 'work' + }, + pageStats: 'add', + workOrdinDialogVisible: false, + centerDialogVisible: false, + dialogVisible: false, + unitList: [], + polluteList: [], + Dic: JSON.parse(localStorage.getItem('dict')), + dictObj: JSON.parse(localStorage.getItem('dictObj')), + parentFormData: {}, + pageState: 'add', + invalidReason: '', + slectRow: {}, + title: '', + searchData: { + isInvalid: 0 + } + } + }, + + created() { + this.handleSearch() + this.getUnitList() + this.getContaminateList() + }, + methods: { + handleCancel(row) { + this.dialogVisible = true + this.slectRow = row + }, + handleClose() { + this.dialogVisible = false + }, + handleInvalid() { + this.$request({ + url: '/allocation/invalid', + method: 'get', + params: { + id: this.slectRow.allocationId, + invalidReason: this.invalidReason + } + }).then((res) => { + if (res.code === 0) { + this.$message({ + message: '������������', + type: 'success' + }) + this.dialogVisible = false + } else { + this.$message.error(res.message) + } + }) + }, + // ������ + handleOpenDialog(row, type) { + this.pageState = type + this.parentFormData = {} + if (type === 'add') { + this.title = '���������������' + this.centerDialogVisible = true + } else { + this.title = '���������������' + this.$request({ + url: '/allocation/detail', + method: 'get', + params: { + id: row.allocationId + } + }).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) + return data ? data.unitName : '' + }, + 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) + return data ? data.dataValue : '' + }, + investigationTypeFormatter(val) { + return this.dictObj.investigationEnum[val.investigationType] + }, + stateFormatter(val) { + console.log('valval', val) + return this.dictObj.allocationApproveEnum[val.state] + }, + isInvalidFormatter(val) { + return this.dictObj.yesOrNo[val.isInvalid] + }, + // ������������������list + getUnitList() { + this.$request({ + url: '/allocation/unit', + method: 'get' + }).then((res) => { + if (res.code === 0) { + this.unitList = res.data + } else { + this.$message.error(res.message) + } + }) + }, + getContaminateList() { + this.$request({ + url: '/allocation/contaminate', + method: 'get' + }).then((res) => { + if (res.code === 0) { + this.polluteList = res.data + } else { + this.$message.error(res.message) + } + }) + }, + handeleSumit() { + this.handleSearch() + }, + // ������ + newHandleSubmit(obj) { + console.log(obj) + console.log(this.parentFormData) + let api = '/allocation/insert' + if (this.pageState !== 'add') { + api = '/allocation/update' + // obj.fileBaseList = [...this.parentFormData.fileBaseList, ... obj.fileBaseList] + } + this.$request({ + url: api, + method: 'post', + data: { + ...obj + } + }).then((res) => { + if (res.code === 0) { + this.centerDialogVisible = false + + this.handleSearch() + } else { + this.$message.error(res.message) + } + }) + }, + handleSearch(obj) { + this.searchData.isInvalid = 0 + if (obj) { + this.searchData = obj + } + this.$request({ + url: '/allocation/page', + method: 'post', + data: { + ...this.searchData, + 'page': this.pagination + } + }).then((res) => { + if (res.code === 0) { + this.tableData = res.data.list + this.pagination.totalCount = res.data.page.totalNum + } else { + this.$message.error(res.message) + } + }) + }, + // ������ + // ��������������������� + handleSizeChange(val) { + // ��������������������������� + this.pagination.pageSize = val + // ��������������������������������������������������������������������������� + this.pagination.currentPage = 1 + this.handleSearch() + }, + // ��������������� + handleCurrentChange(val) { + // ��������������������� + this.pagination.currentPage = val + this.handleSearch() + // console.log(val) + }, + openWorkOrdinDialog(row, type) { + this.$request({ + url: '/allocation/detail', + method: 'get', + params: { + id: row.allocationId + } + }).then((res) => { + this.parentFormData = res.data + this.workOrdinDialogVisible = true + if (type === 'work') { + this.dialogData = { + title: '���������������', + parentFormData: res.data, + pageType: 'work', + pageState: 'approve', + sysCode: '1010202' + } + } else if (type === 'approve') { + this.dialogData = { + title: '���������������', + parentFormData: res.data, + pageType: 'approve', + pageState: 'approve', + sysCode: '1010203' + } + } else if (type === 'detail') { + this.dialogData = { + title: '���������', + parentFormData: res.data, + pageType: 'detail' + } + } else if (type === 'delay') { + this.dialogData = { + title: '���������������', + parentFormData: res.data, + pageType: 'delay', + pageState: 'approve', + sysCode: '1251701' + } + } + }) + } + } +} +</script> + +<style scoped lang="scss"> +.main{ + padding: 20px; + padding-top: 0px; + height: 100%; + overflow: overlay; +} +.tab { + margin-top: 0px; + /deep/ .el-tag{ + font-size: 16px; + } +} +// /deep/ .el-table__body-wrapper { +// overflow: scroll; +// position: relative; +// overflow-x: hidden; +// max-height: 400px; +// } +.pagina{ + margin-top: 10px; +} +/deep/ .el-table__row{ + font-size: 18px; +} +.el-pagination { + padding: 0; + .el-select{ + /deep/.el-input{ + margin:0; + } + } + +} +.errorClass{ + color: red; +} +</style> -- Gitblit v1.8.0