| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602 |
- <template>
- <div id="">
- <a-table
- ref="pblmDataTable"
- :row-selection="{
- columnWidth: 60,
- selectedRowKeys: selectedRowKeys,
- onChange: handleSelectionChange
- }"
- :columns="columns"
- :data-source="tableSetting.data"
- :rowClassName="tableRowClassName"
- :loading="loading"
- :pagination="false"
- row-key="id"
- style="width: 100%;"
- :style="{height: height + 'px'}"
- class="mainTable"
- :scroll="{x: 'max-content', y: height - 60}"
- bordered>
- <template #bodyCell="{ column, record }">
- <template v-if="column.dataIndex === 'fileNoNumber'">
- <span style="position: relative;">
- <span>{{ record.fileNoNumber }}</span>
- </span>
- </template>
- <template v-else-if="column.dataIndex === 'inspPblmDesc'">
- <a-tooltip placement="top">
- <template #title>
- <span>{{ record.inspPblmDesc }}</span>
- </template>
- <span class="ellipsis200">{{ record.inspPblmDesc }}</span>
- </a-tooltip>
- </template>
- <template v-else-if="column.dataIndex === 'nm'">
- <a-tooltip placement="top">
- <template #title>
- <span>{{ record.nm }}</span>
- </template>
- <span class="ellipsis100">{{ record.nm }}</span>
- </a-tooltip>
- </template>
- <template v-else-if="column.dataIndex === 'pblmSource'">
- <a-tooltip placement="top">
- <template #title>
- <span>{{ record.pblmSource }}</span>
- </template>
- <span class="ellipsis200">{{ record.pblmSource }}</span>
- </a-tooltip>
- </template>
- <template v-else-if="column.dataIndex === 'zgMemo'">
- <a-tooltip placement="top">
- <template #title>
- <span>{{ record.zgMemo }}</span>
- </template>
- <span class="ellipsis200">{{ record.zgMemo }}</span>
- </a-tooltip>
- </template>
- <template v-else-if="column.dataIndex === 'dutyDept'">
- <a-tooltip placement="top">
- <template #title>
- <span>{{ record.dutyDept }}</span>
- </template>
- <span class="ellipsis200">{{ record.dutyDept }}</span>
- </a-tooltip>
- </template>
- <template v-else-if="column.dataIndex === 'objType'">
- <a-tooltip placement="top">
- <template #title>
- <span>{{ record.objType }}</span>
- </template>
- <span class="ellipsis200">{{ record.objType }}</span>
- </a-tooltip>
- </template>
- <template v-else-if="column.dataIndex === 'zgNotes'">
- <a-tooltip placement="top">
- <template #title>
- <span>{{ record.zgNotes }}</span>
- </template>
- <span class="ellipsis250">{{ record.zgNotes }}</span>
- </a-tooltip>
- </template>
- <template v-else-if="column.dataIndex === 'reviewStatus'">
- <a-tooltip placement="top">
- <template #title>
- <span>{{ record.reviewStatus }}</span>
- </template>
- <span class="ellipsis200">{{ record.reviewStatus }}</span>
- </a-tooltip>
- </template>
- <template v-else-if="column.dataIndex === 'reviewTm'">
- <a-tooltip placement="top">
- <template #title>
- <span>{{ record.reviewTm }}</span>
- </template>
- <span class="ellipsis200">{{ record.reviewTm }}</span>
- </a-tooltip>
- </template>
- <template v-else-if="column.dataIndex === 'action'">
- <a-button @click.stop="showPblmDetailDialog(record)" type="link">查看</a-button>
- <a-button @click.stop="handleAppeal(record.id,record.stat)" type="link">申诉</a-button>
- </template>
- </template>
- </a-table>
- <a-pagination
- show-size-changer
- :pageSize="tableSetting.pagination.pageSize"
- @update:pageSize="val => { tableSetting.pagination.pageSize = val }"
- :total="tableSetting.pagination.pblmCount"
- :page-size-options="['10','20','50','100']"
- :show-total="total => `共${total}条`"
- @showSizeChange="handleSizeChange"
- @change="handlePageNumChange"
- style="margin-top: 35px;"
- />
- <a-modal
- v-model:visible="changeSupervisionVisible"
- v-if="changeSupervisionVisible"
- width="90%"
- @cancel="closeModal"
- @after-close="closeModal"
- title="整改问题查看"
- class="outerDialog custom_dialog">
- <cqsssh v-if="changeSupervisionVisible" :isNotShow="true" :msgNo="curRow.id" :isModel="true" @closeModel="closeModel"></cqsssh>
- </a-modal>
- <a-modal
- title="超期整改申诉"
- v-model:visible="showAppeal"
- @ok="submitAppeal"
- @cancel="showAppeal = false"
- width="50%"
- :confirm-loading="confirmLoading">
- <a-form :model="appealForm" ref="appealRef" :label-col="{span: 6}" :wrapper-col="{span: 18}" :rules="rules">
- <a-form-item label="申诉说明" prop="appealContent">
- <a-input v-model:value="appealForm.appealContent" type="textarea" autocomplete="off" placeholder="申诉说明" allow-clear/>
- </a-form-item>
- <a-form-item label="申诉附件">
- <a-upload-dragger
- name="file"
- :multiple="true"
- :file-list="fileList"
- :action="appealUrl"
- :show-upload-list="true"
- @change="handleChange"
- >
- <p class="ant-upload-drag-icon">
- <a-icon type="plus-square" />
- </p>
- <p>把文件拖入指定区域,完成上传,同样支持点击上传。</p>
- </a-upload-dragger>
- </a-form-item>
- <a-form-item label="附件">
- <a-table
- bordered
- :data-source="fileArray"
- :columns="columns4"
- style="width: 100%;margin: 0 auto;">
- <template #bodyCell="{ column, record, index }">
- <template v-if="column.dataIndex === 'action'">
- <a-button size="small" @click="removeFile(record.id, index)" type="danger">删除</a-button>
- <a-button size="small" @click="downloadFile(record.id,record.fileName)">下载</a-button>
- </template>
- </template>
- </a-table>
- </a-form-item>
- </a-form>
- </a-modal>
- </div>
- </template>
- <script>
- import moment from 'moment';
- import { deleteFileById } from '@/api/duChaAPI';
- import request from '@/utils/gw_ajax_request';
- import pblmRectifyTimeLine from '@/views/PblmRectify/Components/pblmRectifyTimeLine.vue';
- import pblmRectifyTimeLineOver from '@/views/PblmRectify/Components/pblmRectifyTimeLineOver.vue';
- import upload from '@/widgets/uploadFile.vue';
- import { formatDateTime2 } from '../../../utils/gw_date';
- import pblmMonthlyReport from '../../PblmRectifyMonthlyReport/Components/pblmMonthlyReport.vue';
- import {
- distributePblmToSjdw,
- formatWorkflowStat,
- savePblmDelayInfo,
- savePblmRectifyInfo,
- savePblmRectifyInfoX,
- } from '../Common/rectify_api';
- import { formatDeadLineDate } from '../Common/rectify_date';
- import cqsssh from './cqsssh.vue';
- import pblmDelayInfo from './pblmDelayInfo.vue';
- import pblmDetail from './pblmDetail.vue';
- import pblmRectifyEdit from './pblmRectifyEdit.vue';
- import pblmRectifyInfo from './pblmRectifyInfo.vue';
- export default {
- props: {
- pblmTableSetting: {
- type: Object,
- default: () => {
- return {
- currentFllow: '',
- isYwcs: false,
- isJc: false,
- isShowBtn: false,
- isEditVisible: '',
- adType: '',
- cType: '',
- data: [], // 主数据源
- pagination: {
- pageSize: 10,
- pageNum: 1,
- pblmCount: 0,
- }, // 翻页相关配置项
- height: 470,
- currentPblmId: '', // 当前选中的问题的ID
- currentPblmFileNoNumber: '', // 当前选中的问题的编号
- currentPblmWorkflowStat: '', // 当前选中的问题的流程状态
- selectedPblms: [], // 多选模式下选中的所有问题集合
- multiSelect: true, // 是否出现行复选框
- enablePblmRectifyInfo: false, // 是否在操作栏显示输入整改信息按钮
- showWorkflowStat: true, // 是否显示整改状态,默认显示
- enableMonthlyReport: false,
- isZGZWTBtn: false,
- ifChao: null,
- };
- },
- },
- isJdcjbr: {
- type: Boolean,
- default: false,
- },
- isGDXH: {
- type: Boolean,
- default: false,
- },
- },
- data() {
- return {
- showAppeal: false,
- confirmLoading: false,
- appealForm: {
- appealContent: '',
- },
- fileList: [],
- bizId: '',
- rules: {
- appealContent: [
- { required: true, message: '申诉说明不能为空', trigger: 'change' },
- ],
- },
- fileArray: [],
- currentId: '',
- columns4: [
- {
- title: '文件名',
- dataIndex: 'fileName',
- align: 'center',
- },
- {
- title: '操作',
- dataIndex: 'action',
- align: 'center',
- },
- ],
- moment,
- curRow: {},
- curData: {},
- showEdit: false,
- showPblmDetail: false, // 是否显示问题详情
- showPblmRectifyInfo: false, // 是否显示整改内容输入窗体
- showPblmDelayInfo: false, // 是否显示整改内容输入窗体
- showPblmMonthlyReportDialog: false, // 是否显示整改进度月报输入窗体
- tableSetting: this.pblmTableSetting,
- height: window.innerHeight - 400,
- loading: false,
- selectedRowKeys: [],
- columns: [
- {
- title: '问题编码',
- dataIndex: 'fileNoNumber',
- width: 80,
- fixed: 'left',
- align: 'center',
- },
- {
- title: '问题',
- dataIndex: 'inspPblmDesc',
- width: 200,
- fixed: 'left',
- align: 'center',
- },
- {
- title: '工程名称',
- dataIndex: 'nm',
- width: 100,
- fixed: 'left',
- align: 'center',
- },
- {
- title: '问题来源',
- dataIndex: 'pblmSource',
- width: 200,
- fixed: 'left',
- align: 'center',
- },
- {
- title: '问题印发文件名',
- dataIndex: 'zgMemo',
- width: 200,
- align: 'center',
- },
- {
- title: '县(市、区)',
- dataIndex: 'adName',
- width: 120,
- align: 'center',
- },
- {
- title: '设区市/直管县',
- dataIndex: 'upAdName',
- width: 120,
- align: 'center',
- },
- {
- title: '责任处室',
- dataIndex: 'dutyDept',
- width: 200,
- align: 'center',
- },
- {
- title: '问题归类',
- dataIndex: 'objType',
- width: 200,
- align: 'center',
- },
- {
- title: '超期记录',
- dataIndex: 'zgNotes',
- width: 250,
- align: 'center',
- },
- {
- title: '申述审核状态',
- dataIndex: 'reviewStatus',
- width: 200,
- align: 'center',
- },
- {
- title: '审核日期',
- dataIndex: 'reviewTm',
- width: 200,
- align: 'center',
- },
- {
- title: '申诉通道',
- dataIndex: 'ifOpen',
- width: 100,
- align: 'center',
- },
- {
- title: '操作',
- dataIndex: 'action',
- width: 200,
- align: 'center',
- fixed: 'right',
- },
- ],
- readOnlyRole: localStorage.getItem('readOnlyRole'),
- changeSupervisionVisible: false,
- };
- },
- components: {
- upload,
- pblmRectifyTimeLine,
- pblmRectifyTimeLineOver,
- pblmDetail,
- pblmRectifyInfo,
- pblmDelayInfo,
- pblmRectifyEdit,
- pblmMonthlyReportInfo: pblmMonthlyReport,
- cqsssh,
- },
- computed: {
- formatDateTime() {
- return formatDateTime2;
- },
- formatDeadLineDate() {
- return formatDeadLineDate;
- },
- formatWorkflowStat() {
- return formatWorkflowStat;
- },
- appealUrl() {
- return process.env.NODE_ENV === 'development'
- ? `/pdcApi/file/insert?bizId=${this.bizId}&bizType=2`
- : `/modular-dev-source/7446637943aa4c50b5d69c814517fca0/pdcApi/file/insert?bizId=${this.bizId}&bizType=2`;
- },
- },
- created() {
- console.log(this.isJdcjbr, 'isJdcjbr');
- if (typeof this.pblmTableSetting.showWorkflowStat === undefined) {
- this.pblmTableSetting.showWorkflowStat = true;
- }
- },
- methods: {
- clearSelection() {
- this.selectedRowKeys = [];
- this.tableSetting.selectedPblms = [];
- },
- closeModel() {
- this.changeSupervisionVisible = false;
- },
- downloadFile(downloadFiles, fileName) {
- request
- .get(`file/downFile/` + downloadFiles, { responseType: 'arraybuffer' })
- .then((res) => {
- const blob = new Blob([res], { type: 'application/vnd.ms-excel' });
- const objectUrl = URL.createObjectURL(blob);
- // window.location.href = objectUrl;
- const link = document.createElement('a');
- link.href = objectUrl;
- link.download = fileName; // 文件名
- link.click(); // 下载文件
- URL.revokeObjectURL(objectUrl); // 释放内存
- });
- },
- removeFile(id, index) {
- this.$confirm({
- title: '提示',
- content: '此操作将永久删除该文件, 是否继续?',
- okType: 'warning',
- onOk: () => {
- deleteFileById(id, this.userId).then((res) => {
- if (res.success) {
- this.getFileList(this.currentId);
- } else {
- this.failInfo();
- }
- });
- },
- });
- },
- handleChange(info) {
- this.fileList = info.fileList;
- const status = info.file.status;
- if (status === 'done') {
- this.$message.success(`${info.file.name}上传成功!`);
- } else if (status === 'error') {
- this.$message.error(`${info.file.name}上传失败,请联系管理员!`);
- }
- },
- handleAppeal(id, stat) {
- if (stat == '1') {
- return this.$message.info('正在申诉中...');
- } else if (stat == '3') {
- return this.$message.info('申诉通道已被监督处关闭,无法申诉!');
- }
- this.bizId = id;
- this.showAppeal = true;
- this.getFileList(id);
- },
- getFileList(id) {
- const params = {
- id,
- };
- this.currentId = id;
- request
- .post(`/bis/insp/BisInspZgPblmRecord/getAuditListInfo`, params)
- .then((res) => {
- this.fileArray = res.data.gwComFiles;
- });
- },
- submitAppeal() {
- this.$refs.appealRef.validate((valid) => {
- if (valid) {
- this.confirmLoading = true;
- const params = {
- id: this.bizId,
- appealContent: this.appealForm.appealContent,
- };
- request
- .post(`/bis/insp/BisInspZgPblmRecord/overdueStatementAudit`, params)
- .then((res) => {
- if (res.success) {
- this.confirmLoading = false;
- this.$message.success('申诉成功!');
- this.appealForm.appealContent = '';
- this.showAppeal = false;
- this.fileList = [];
- } else {
- this.$message.warning(res.message);
- }
- });
- } else {
- return false;
- }
- });
- },
- tableRowClassName(record) {
- if (record.isJcFlow == '1') {
- return 'success-jcflow';
- }
- return '';
- },
- handleSizeChange(current, size) {
- this.tableSetting.pagination.pageSize = size;
- // 触发父组件更新主数据源数据(主要将分页信息传回)
- this.$emit('sizeChange', {
- pageSize: this.tableSetting.pagination.pageSize,
- });
- },
- handleSelectionChange(val, row) {
- this.selectedRowKeys = val;
- this.tableSetting.selectedPblms = row;
- this.$emit('selectionChange', {
- selectedPblms: this.tableSetting.selectedPblms,
- });
- },
- handlePageNumChange(item) {
- this.tableSetting.pagination.pageNum = item;
- // 触发父组件更新主数据源数据(主要将分页信息传回)
- this.$emit('pageChange', {
- pageNum: this.tableSetting.pagination.pageNum,
- });
- },
- closePblmDetailDialog(id) {
- this.tableSetting.currentPblmId = '';
- this.tableSetting.currentPblmWorkflowStat = '';
- this.showPblmDetail = false;
- },
- showPblmDetailDialog(row) {
- this.changeSupervisionVisible = true;
- this.curRow = row;
- },
- closeModal() {
- this.changeSupervisionVisible = false;
- },
- },
- };
- </script>
- <style lang='less' scoped>
- :deep(.ant-table-pagination ) {
- float: left;
- }
- /deep/ .ant-table-thead>tr>th,
- /deep/ .ant-table-tbody>tr>td {
- padding: 0;
- height: 45px;
- }
- .ellipsis200 {
- display: block;
- width: 198px;
- text-overflow: ellipsis;
- white-space: nowrap;
- overflow: hidden;
- }
- .ellipsis100 {
- display: block;
- width: 98px;
- text-overflow: ellipsis;
- white-space: nowrap;
- overflow: hidden;
- }
- .ellipsis120 {
- display: block;
- width: 118px;
- text-overflow: ellipsis;
- white-space: nowrap;
- overflow: hidden;
- }
- .ellipsis250 {
- display: block;
- width: 248px;
- text-overflow: ellipsis;
- white-space: nowrap;
- overflow: hidden;
- }
- :deep(.success-jcflow ) {
- background: #bbf5ff !important;
- }
- :deep(.ant-table-scroll ) {
- position: relative;
- z-index: 1;
- }
- /deep/.ant-table-fixed-left,
- :deep(.ant-table-fixed-right ) {
- z-index: 2;
- }
- .overFlow {
- width: 15px;
- height: 15px;
- position: absolute;
- z-index: 100000;
- top: 15px;
- left: -20px;
- opacity: 0;
- }
- .overFlow:hover {
- opacity: 1;
- }
- </style>
|