| | |
| | | <script lang="ts" setup name="procurementComplaint"> |
| | | import { ref, reactive, onMounted } from "vue"; |
| | | import { ref, reactive, onMounted } from 'vue'; |
| | | import { auth } from '/@/utils/authFunction'; |
| | | import { ElMessageBox, ElMessage } from "element-plus"; |
| | | import { downloadStreamFile } from "/@/utils/download"; |
| | | import { ElMessageBox, ElMessage } from 'element-plus'; |
| | | import { downloadStreamFile } from '/@/utils/download'; |
| | | import { useProcurementComplaintApi } from '/@/api/fb_p_complaints/procurementComplaint'; |
| | | import editDialog from '/@/views/fb_p_complaints/procurementComplaint/component/editDialog.vue' |
| | | import printDialog from '/@/views/system/print/component/hiprint/preview.vue' |
| | | import editDialog from '/@/views/fb_p_complaints/procurementComplaint/component/editDialog.vue'; |
| | | import printDialog from '/@/views/system/print/component/hiprint/preview.vue'; |
| | | import ModifyRecord from '/@/components/table/modifyRecord.vue'; |
| | | import ImportData from "/@/components/table/importData.vue"; |
| | | import ImportData from '/@/components/table/importData.vue'; |
| | | |
| | | const procurementComplaintApi = useProcurementComplaintApi(); |
| | | const printDialogRef = ref(); |
| | |
| | | }); |
| | | |
| | | // 页面加载时 |
| | | onMounted(async () => { |
| | | }); |
| | | onMounted(async () => {}); |
| | | |
| | | // 查询操作 |
| | | const handleQuery = async (params: any = {}) => { |
| | | state.tableLoading = true; |
| | | state.tableParams = Object.assign(state.tableParams, params); |
| | | const result = await procurementComplaintApi.page(Object.assign(state.tableQueryParams, state.tableParams)).then(res => res.data.result); |
| | | const result = await procurementComplaintApi.page(Object.assign(state.tableQueryParams, state.tableParams)).then((res) => res.data.result); |
| | | state.tableParams.total = result?.total; |
| | | state.tableData = result?.items ?? []; |
| | | state.tableLoading = false; |
| | |
| | | |
| | | // 删除 |
| | | const delProcurementComplaint = (row: any) => { |
| | | ElMessageBox.confirm(`确定要删除吗?`, "提示", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }).then(async () => { |
| | | ElMessageBox.confirm(`确定要删除吗?`, '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning', |
| | | }) |
| | | .then(async () => { |
| | | await procurementComplaintApi.delete({ id: row.id }); |
| | | handleQuery(); |
| | | ElMessage.success("删除成功"); |
| | | }).catch(() => {}); |
| | | ElMessage.success('删除成功'); |
| | | }) |
| | | .catch(() => {}); |
| | | }; |
| | | |
| | | // 批量删除 |
| | | const batchDelProcurementComplaint = () => { |
| | | ElMessageBox.confirm(`确定要删除${state.selectData.length}条记录吗?`, "提示", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }).then(async () => { |
| | | await procurementComplaintApi.batchDelete(state.selectData.map(u => ({ id: u.id }) )).then(res => { |
| | | ElMessageBox.confirm(`确定要删除${state.selectData.length}条记录吗?`, '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning', |
| | | }) |
| | | .then(async () => { |
| | | await procurementComplaintApi.batchDelete(state.selectData.map((u) => ({ id: u.id }))).then((res) => { |
| | | ElMessage.success(`成功批量删除${res.data.result}条记录`); |
| | | handleQuery(); |
| | | }); |
| | | }).catch(() => {}); |
| | | }) |
| | | .catch(() => {}); |
| | | }; |
| | | |
| | | // 导出数据 |
| | |
| | | try { |
| | | state.exportLoading = true; |
| | | if (command === 'select') { |
| | | const params = Object.assign({}, state.tableQueryParams, state.tableParams, { selectKeyList: state.selectData.map(u => u.id) }); |
| | | await procurementComplaintApi.exportData(params).then(res => downloadStreamFile(res)); |
| | | const params = Object.assign({}, state.tableQueryParams, state.tableParams, { selectKeyList: state.selectData.map((u) => u.id) }); |
| | | await procurementComplaintApi.exportData(params).then((res) => downloadStreamFile(res)); |
| | | } else if (command === 'current') { |
| | | const params = Object.assign({}, state.tableQueryParams, state.tableParams); |
| | | await procurementComplaintApi.exportData(params).then(res => downloadStreamFile(res)); |
| | | await procurementComplaintApi.exportData(params).then((res) => downloadStreamFile(res)); |
| | | } else if (command === 'all') { |
| | | const params = Object.assign({}, state.tableQueryParams, state.tableParams, { page: 1, pageSize: 99999999 }); |
| | | await procurementComplaintApi.exportData(params).then(res => downloadStreamFile(res)); |
| | | await procurementComplaintApi.exportData(params).then((res) => downloadStreamFile(res)); |
| | | } |
| | | } finally { |
| | | state.exportLoading = false; |
| | | } |
| | | } |
| | | }; |
| | | |
| | | handleQuery(); |
| | | </script> |
| | |
| | | <el-card shadow="hover" :body-style="{ paddingBottom: '0' }"> |
| | | <el-form :model="state.tableQueryParams" ref="queryForm" labelWidth="90"> |
| | | <el-row> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10"> |
| | | <el-form-item label="关键字"> |
| | | <el-input v-model="state.tableQueryParams.keyword" clearable placeholder="请输入模糊查询关键字"/> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="5" :xl="4" class="mb10"> |
| | | <el-form-item label="决定日期"> |
| | | <el-date-picker type="daterange" v-model="state.tableQueryParams.decisionDateRange" |
| | | value-format="YYYY-MM-DD HH:mm:ss" start-placeholder="开始日期" end-placeholder="结束日期" |
| | | :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> |
| | | <el-form-item label="项目编号"> |
| | | <el-input v-model="state.tableQueryParams.projectCode" clearable placeholder="请输入项目编号"/> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="4" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> |
| | | <el-form-item label="项目名称"> |
| | | <el-input v-model="state.tableQueryParams.projectName" clearable placeholder="请输入项目名称"/> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> |
| | | <el-form-item label="决定日期"> |
| | | <el-date-picker type="daterange" v-model="state.tableQueryParams.decisionDateRange" value-format="YYYY-MM-DD HH:mm:ss" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" /> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="4" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> |
| | | <el-form-item label="项目编号"> |
| | | <el-input v-model="state.tableQueryParams.projectCode" clearable placeholder="请输入项目编号" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="4" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> |
| | | <el-form-item label="采购人"> |
| | | <el-input v-model="state.tableQueryParams.purchaser" clearable placeholder="请输入采购人"/> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="4" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> |
| | | <el-form-item label="采购代理机构"> |
| | | <el-input v-model="state.tableQueryParams.procurementAgency" clearable placeholder="请输入采购代理机构"/> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="5" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> |
| | | <el-form-item label="采购监督部门"> |
| | | <el-input v-model="state.tableQueryParams.procurementSupervisionDepartment" clearable |
| | | placeholder="请输入采购监督部门" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="4" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> |
| | | <el-form-item label="投诉人"> |
| | | <el-input v-model="state.tableQueryParams.complainant" clearable placeholder="请输入投诉人"/> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> |
| | | <el-form-item label="采购监督部门"> |
| | | <el-input v-model="state.tableQueryParams.procurementSupervisionDepartment" clearable placeholder="请输入采购监督部门"/> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="4" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> |
| | | <el-form-item label="投诉事项"> |
| | | <el-input v-model="state.tableQueryParams.keyword" clearable placeholder="请输入投诉事项" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> |
| | | <el-form-item label="线上地址"> |
| | | <el-input v-model="state.tableQueryParams.url" clearable placeholder="请输入线上地址"/> |
| | | <!-- <el-col :xs="24" :sm="12" :md="12" :lg="4" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> |
| | | <el-form-item label="是否成立"> |
| | | <el-select v-model="state.tableQueryParams.status" placeholder="请选择" clearable> |
| | | <el-option label="是" :value="200" /> |
| | | <el-option label="否" :value="400" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-col> --> |
| | | |
| | | <!-- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10"> |
| | | <el-form-item label="关键字"> |
| | | <el-input v-model="state.tableQueryParams.keyword" clearable placeholder="请输入模糊查询关键字"/> |
| | | </el-form-item> |
| | | </el-col> --> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10"> |
| | | <el-form-item > |
| | | <el-button-group style="display: flex; align-items: center;"> |
| | | <el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'procurementComplaint:page'" v-reclick="1000"> 查询 </el-button> |
| | | <el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'procurementComplaint:page'" |
| | | v-reclick="1000"> 查询 </el-button> |
| | | <el-button icon="ele-Refresh" @click="() => state.tableQueryParams = {}"> 重置 </el-button> |
| | | <el-button icon="ele-ZoomIn" @click="() => state.showAdvanceQueryUI = true" v-if="!state.showAdvanceQueryUI" style="margin-left:5px;"> 高级查询 </el-button> |
| | | <el-button icon="ele-ZoomOut" @click="() => state.showAdvanceQueryUI = false" v-if="state.showAdvanceQueryUI" style="margin-left:5px;"> 隐藏 </el-button> |
| | | <el-button type="danger" style="margin-left:5px;" icon="ele-Delete" @click="batchDelProcurementComplaint" :disabled="state.selectData.length == 0" v-auth="'procurementComplaint:batchDelete'"> 删除 </el-button> |
| | | <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="editDialogRef.openDialog(null, '新增政府采购投诉数据处理')" v-auth="'procurementComplaint:add'"> 新增 </el-button> |
| | | <el-dropdown :show-timeout="70" :hide-timeout="50" @command="exportProcurementComplaintCommand"> |
| | | <el-button type="primary" style="margin-left:5px;" icon="ele-FolderOpened" v-reclick="20000" v-auth="'procurementComplaint:export'"> 导出 </el-button> |
| | | <el-button icon="ele-ZoomIn" @click="() => state.showAdvanceQueryUI = true" |
| | | v-if="!state.showAdvanceQueryUI" style="margin-left:5px;"> 高级查询 </el-button> |
| | | <el-button icon="ele-ZoomOut" @click="() => state.showAdvanceQueryUI = false" |
| | | v-if="state.showAdvanceQueryUI" style="margin-left:5px;"> 隐藏 </el-button> |
| | | <el-button type="danger" style="margin-left:5px;" icon="ele-Delete" |
| | | @click="batchDelProcurementComplaint" :disabled="state.selectData.length == 0" |
| | | v-auth="'procurementComplaint:batchDelete'"> 删除 </el-button> |
| | | <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" |
| | | @click="editDialogRef.openDialog(null, '新增政府采购投诉数据处理')" v-auth="'procurementComplaint:add'"> 新增 |
| | | </el-button> |
| | | <!-- <el-dropdown :show-timeout="70" :hide-timeout="50" @command="exportProcurementComplaintCommand"> |
| | | <el-button type="primary" style="margin-left:5px;" icon="ele-FolderOpened" v-reclick="20000" |
| | | v-auth="'procurementComplaint:export'"> 导出 </el-button> |
| | | <template #dropdown> |
| | | <el-dropdown-menu> |
| | | <el-dropdown-item command="select" :disabled="state.selectData.length == 0">导出选中</el-dropdown-item> |
| | | <el-dropdown-item command="select" |
| | | :disabled="state.selectData.length == 0">导出选中</el-dropdown-item> |
| | | <el-dropdown-item command="current">导出本页</el-dropdown-item> |
| | | <el-dropdown-item command="all">导出全部</el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </template> |
| | | </el-dropdown> |
| | | <el-button type="warning" style="margin-left:5px;" icon="ele-MostlyCloudy" @click="importDataRef.openDialog()" v-auth="'procurementComplaint:import'"> 导入 </el-button> |
| | | <el-button type="warning" style="margin-left:5px;" icon="ele-MostlyCloudy" |
| | | @click="importDataRef.openDialog()" v-auth="'procurementComplaint:import'"> 导入 </el-button> --> |
| | | </el-button-group> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-form> |
| | | </el-card> |
| | | <el-card class="full-table" shadow="hover" style="margin-top: 5px"> |
| | | <el-table :data="state.tableData" @selection-change="(val: any[]) => { state.selectData = val; }" style="width: 100%" v-loading="state.tableLoading" tooltip-effect="light" row-key="id" @sort-change="sortChange" border> |
| | | <el-table-column type="selection" width="40" align="center" v-if="auth('procurementComplaint:batchDelete') || auth('procurementComplaint:export')" /> |
| | | <el-table :data="state.tableData" @selection-change="(val: any[]) => { state.selectData = val; }" |
| | | style="width: 100%" v-loading="state.tableLoading" tooltip-effect="light" row-key="id" @sort-change="sortChange" |
| | | border> |
| | | <el-table-column type="selection" width="40" align="center" |
| | | v-if="auth('procurementComplaint:batchDelete') || auth('procurementComplaint:export')" /> |
| | | <el-table-column type="index" label="序号" width="55" align="center"/> |
| | | <el-table-column prop='projectCode' label='项目编号' show-overflow-tooltip /> |
| | | <el-table-column prop='projectName' label='项目名称' show-overflow-tooltip /> |
| | | <el-table-column prop='decisionDate' label='决定日期' show-overflow-tooltip /> |
| | | <el-table-column prop='projectName' label='项目名称' show-overflow-tooltip /> |
| | | <el-table-column prop='projectCode' label='项目编号' show-overflow-tooltip /> |
| | | <el-table-column prop='purchaser' label='采购人' show-overflow-tooltip /> |
| | | <el-table-column prop='procurementAgency' label='采购代理机构' show-overflow-tooltip /> |
| | | <el-table-column prop='complainant' label='投诉人' show-overflow-tooltip /> |
| | | <el-table-column prop='procurementSupervisionDepartment' label='采购监督部门' show-overflow-tooltip /> |
| | | <!-- <el-table-column prop='complaints' label='是否成立' show-overflow-tooltip /> --> |
| | | <el-table-column prop='url' label='线上地址' show-overflow-tooltip /> |
| | | <el-table-column label="修改记录" width="100" align="center" show-overflow-tooltip> |
| | | <template #default="scope"> |
| | | <ModifyRecord :data="scope.row" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="操作" width="140" align="center" fixed="right" show-overflow-tooltip v-if="auth('procurementComplaint:update') || auth('procurementComplaint:delete')"> |
| | | <el-table-column label="操作" width="140" align="center" fixed="right" show-overflow-tooltip |
| | | v-if="auth('procurementComplaint:update') || auth('procurementComplaint:delete')"> |
| | | <template #default="scope"> |
| | | <el-button icon="ele-Edit" size="small" text type="primary" @click="editDialogRef.openDialog(scope.row, '编辑政府采购投诉数据处理')" v-auth="'procurementComplaint:update'"> 编辑 </el-button> |
| | | <el-button icon="ele-Delete" size="small" text type="primary" @click="delProcurementComplaint(scope.row)" v-auth="'procurementComplaint:delete'"> 删除 </el-button> |
| | | <el-button icon="ele-Edit" size="small" text type="primary" |
| | | @click="editDialogRef.openDialog(scope.row, '编辑政府采购投诉数据处理')" v-auth="'procurementComplaint:update'"> 编辑 |
| | | </el-button> |
| | | <el-button icon="ele-Delete" size="small" text type="primary" @click="delProcurementComplaint(scope.row)" |
| | | v-auth="'procurementComplaint:delete'"> 删除 </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination |
| | | v-model:currentPage="state.tableParams.page" |
| | | v-model:page-size="state.tableParams.pageSize" |
| | | <el-pagination v-model:currentPage="state.tableParams.page" v-model:page-size="state.tableParams.pageSize" |
| | | @size-change="(val: any) => handleQuery({ pageSize: val })" |
| | | @current-change="(val: any) => handleQuery({ page: val })" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :page-sizes="[10, 20, 50, 100, 200, 500]" |
| | | :total="state.tableParams.total" |
| | | size="small" |
| | | background /> |
| | | <ImportData ref="importDataRef" :import="procurementComplaintApi.importData" :download="procurementComplaintApi.downloadTemplate" v-auth="'procurementComplaint:import'" @refresh="handleQuery"/> |
| | | @current-change="(val: any) => handleQuery({ page: val })" layout="total, sizes, prev, pager, next, jumper" |
| | | :page-sizes="[10, 20, 50, 100, 200, 500]" :total="state.tableParams.total" size="small" background /> |
| | | <ImportData ref="importDataRef" :import="procurementComplaintApi.importData" |
| | | :download="procurementComplaintApi.downloadTemplate" v-auth="'procurementComplaint:import'" |
| | | @refresh="handleQuery" /> |
| | | <printDialog ref="printDialogRef" :title="'打印政府采购投诉数据处理'" @reloadTable="handleQuery" /> |
| | | <editDialog ref="editDialogRef" @reloadTable="handleQuery" /> |
| | | </el-card> |
| | | </div> |
| | | </template> |
| | | <style scoped> |
| | | :deep(.el-input), :deep(.el-select), :deep(.el-input-number) { |
| | | :deep(.el-input), |
| | | :deep(.el-select), |
| | | :deep(.el-input-number) { |
| | | width: 100%; |
| | | } |
| | | </style> |