From 019b6cf4ccaa06fc5ca8f5dc5663975eb027d360 Mon Sep 17 00:00:00 2001 From: zhangwei <1504152376@qq.com> Date: 星期三, 04 六月 2025 15:15:16 +0800 Subject: [PATCH] 前端-政府采购投诉数据处理管理 --- Web/index.html | 2 Web/src/stores/themeConfig.ts | 10 Web/src/views/fb_p_complaints/procurementComplaint/component/editDialog.vue | 198 +++++++++++++-------- Web/.env.development | 2 Web/package.json | 2 Web/src/views/fb_p_complaints/procurementComplaint/index.vue | 315 +++++++++++++++++++--------------- 6 files changed, 299 insertions(+), 230 deletions(-) diff --git a/Web/.env.development b/Web/.env.development index 4ffd553..28f2943 100644 --- a/Web/.env.development +++ b/Web/.env.development @@ -2,7 +2,7 @@ ENV = development # 鏈湴鐜鎺ュ彛鍦板潃 -VITE_API_URL = http://localhost:5005 +VITE_API_URL = http://192.168.0.36:5005 # 鐧婚檰鐣岄潰榛樿鐢ㄦ埛 VITE_DEFAULT_USER = superadmin diff --git a/Web/index.html b/Web/index.html index 64a8ea2..2457d44 100644 --- a/Web/index.html +++ b/Web/index.html @@ -7,7 +7,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" media="print" href="/print-lock.css" /> <link rel="icon" id="favicon" href="data:;base64,=" /> - <title>Admin.NET</title> + <title>闈炴斂閲囨嫑鏍囬噰璐氦鏄撶鐞嗗钩鍙�</title> </head> <body> diff --git a/Web/package.json b/Web/package.json index 350fae1..bf10bd1 100644 --- a/Web/package.json +++ b/Web/package.json @@ -3,7 +3,7 @@ "type": "module", "version": "2.4.33", "lastBuildTime": "2025.06.03", - "description": "Admin.NET 绔欏湪宸ㄤ汉鑲╄唨涓婄殑 .NET 閫氱敤鏉冮檺寮�鍙戞鏋�", + "description": "闈炴斂閲囨嫑鏍囬噰璐氦鏄撶鐞嗗钩鍙�", "author": "zuohuaijun", "license": "MIT", "scripts": { diff --git a/Web/src/stores/themeConfig.ts b/Web/src/stores/themeConfig.ts index 9ab38be..52e2ca5 100644 --- a/Web/src/stores/themeConfig.ts +++ b/Web/src/stores/themeConfig.ts @@ -102,7 +102,7 @@ // 鏄惁寮�鍚按鍗� isWatermark: true, // 姘村嵃鏂囨 - watermarkText: 'Admin.NET', + watermarkText: '', /** * 鍏跺畠璁剧疆 @@ -135,13 +135,13 @@ * 鍏ㄥ眬缃戠珯鏍囬 / 鍓爣棰� */ // 缃戠珯涓绘爣棰橈紙鑿滃崟瀵艰埅銆佹祻瑙堝櫒褰撳墠缃戦〉鏍囬锛� - globalTitle: 'Admin.NET', + globalTitle: '闈炴斂閲囨嫑鏍囬噰璐氦鏄撶鐞嗗钩鍙�', // 缃戠珯鍓爣棰橈紙鐧诲綍椤甸《閮ㄦ枃瀛楋級 - globalViceTitle: 'Admin.NET', + globalViceTitle: '闈炴斂閲囨嫑鏍囬噰璐氦鏄撶鐞嗗钩鍙�', // 缃戠珯鍓爣棰橈紙鐧诲綍椤甸《閮ㄦ枃瀛楋級 - globalViceTitleMsg: '绔欏湪宸ㄤ汉鑲╄唨涓婄殑 .NET 閫氱敤鏉冮檺寮�鍙戞鏋�', + globalViceTitleMsg: '闈炴斂閲囨嫑鏍囬噰璐氦鏄撶鐞嗗钩鍙�', // 鐗堟潈鍜屽妗堟枃瀛� - copyright: 'Copyright 漏 2021-present Admin.NET All rights reserved.', + copyright: 'Copyright 漏 2021-present All rights reserved.', // 榛樿鍒濆璇█锛屽彲閫夊��"<zh-cn|en|zh-tw>"锛岄粯璁� zh-cn globalI18n: 'zh-cn', // 榛樿鍏ㄥ眬缁勪欢澶у皬锛屽彲閫夊��"<large|'default'|small>"锛岄粯璁� 'large' diff --git a/Web/src/views/fb_p_complaints/procurementComplaint/component/editDialog.vue b/Web/src/views/fb_p_complaints/procurementComplaint/component/editDialog.vue index 3bad527..dbc3eae 100644 --- a/Web/src/views/fb_p_complaints/procurementComplaint/component/editDialog.vue +++ b/Web/src/views/fb_p_complaints/procurementComplaint/component/editDialog.vue @@ -1,12 +1,13 @@ 锘�<script lang="ts" name="procurementComplaint" setup> -import { ref, reactive, onMounted } from "vue"; -import { ElMessage } from "element-plus"; -import type { FormRules } from "element-plus"; +import { ref, reactive, onMounted } from 'vue'; +import { ElMessage } from 'element-plus'; +import type { FormRules } from 'element-plus'; import { formatDate } from '/@/utils/formatTime'; import { useProcurementComplaintApi } from '/@/api/fb_p_complaints/procurementComplaint'; +import { log } from 'console'; //鐖剁骇浼犻�掓潵鐨勫嚱鏁帮紝鐢ㄤ簬鍥炶皟 -const emit = defineEmits(["reloadTable"]); +const emit = defineEmits(['reloadTable']); const procurementComplaintApi = useProcurementComplaintApi(); const ruleFormRef = ref(); @@ -14,35 +15,37 @@ title: '', loading: false, showDialog: false, - ruleForm: {} as any, + ruleForm: { + complaints: [{ itemDescription: '' }], + } as any, stores: {}, dropdownData: {} as any, }); // 鑷娣诲姞鍏朵粬瑙勫垯 const rules = ref<FormRules>({ - projectCode: [{required: true, message: '璇烽�夋嫨椤圭洰缂栧彿锛�', trigger: 'blur',},], - projectName: [{required: true, message: '璇烽�夋嫨椤圭洰鍚嶇О锛�', trigger: 'blur',},], - decisionDate: [{required: true, message: '璇烽�夋嫨鍐冲畾鏃ユ湡锛�', trigger: 'change',},], - purchaser: [{required: true, message: '璇烽�夋嫨閲囪喘浜猴紒', trigger: 'blur',},], - procurementAgency: [{required: true, message: '璇烽�夋嫨閲囪喘浠g悊鏈烘瀯锛�', trigger: 'blur',},], + projectCode: [{ required: true, message: '璇烽�夋嫨椤圭洰缂栧彿锛�', trigger: 'blur' }], + projectName: [{ required: true, message: '璇烽�夋嫨椤圭洰鍚嶇О锛�', trigger: 'blur' }], + decisionDate: [{ required: true, message: '璇烽�夋嫨鍐冲畾鏃ユ湡锛�', trigger: 'change' }], + purchaser: [{ required: true, message: '璇烽�夋嫨閲囪喘浜猴紒', trigger: 'blur' }], + procurementAgency: [{ required: true, message: '璇烽�夋嫨閲囪喘浠g悊鏈烘瀯锛�', trigger: 'blur' }], }); // 椤甸潰鍔犺浇鏃� -onMounted(async () => { -}); +onMounted(async () => {}); // 鎵撳紑寮圭獥 const openDialog = async (row: any, title: string) => { state.title = title; - row = row ?? { }; - state.ruleForm = row.id ? await procurementComplaintApi.detail(row.id).then(res => res.data.result) : JSON.parse(JSON.stringify(row)); + row = row ?? { complaints: [{ itemDescription: '' }] }; + state.ruleForm = row.id ? await procurementComplaintApi.detail(row.id).then((res) => res.data.result) : JSON.parse(JSON.stringify(row)); state.showDialog = true; + console.log(state.ruleForm.complaints, state.ruleForm.complaints.length); }; // 鍏抽棴寮圭獥 const closeDialog = () => { - emit("reloadTable"); + emit('reloadTable'); state.showDialog = false; }; @@ -56,81 +59,116 @@ } else { ElMessage({ message: `琛ㄥ崟鏈�${Object.keys(fields).length}澶勯獙璇佸け璐ワ紝璇蜂慨鏀瑰悗鍐嶆彁浜, - type: "error", + type: 'error', }); } }); +}; + +const changeComplaints = (txt:String) => { + if (txt=='add') { + state.ruleForm.complaints.push({ + itemDescription: '', + }); + } else { + state.ruleForm.complaints.pop(); + console.log(state.ruleForm.complaints); + + } }; //灏嗗睘鎬ф垨鑰呭嚱鏁版毚闇茬粰鐖剁粍浠� defineExpose({ openDialog }); </script> <template> - <div class="procurementComplaint-container"> - <el-dialog v-model="state.showDialog" :width="800" draggable :close-on-click-modal="false"> - <template #header> - <div style="color: #fff"> - <span>{{ state.title }}</span> - </div> - </template> - <el-form :model="state.ruleForm" ref="ruleFormRef" label-width="auto" :rules="rules"> - <el-row :gutter="35"> - <el-form-item v-show="false"> - <el-input v-model="state.ruleForm.id" /> - </el-form-item> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" > - <el-form-item label="椤圭洰缂栧彿" prop="projectCode"> - <el-input v-model="state.ruleForm.projectCode" placeholder="璇疯緭鍏ラ」鐩紪鍙�" maxlength="50" show-word-limit clearable /> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" > - <el-form-item label="椤圭洰鍚嶇О" prop="projectName"> - <el-input v-model="state.ruleForm.projectName" placeholder="璇疯緭鍏ラ」鐩悕绉�" maxlength="200" show-word-limit clearable /> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" > - <el-form-item label="鍐冲畾鏃ユ湡" prop="decisionDate"> - <el-date-picker v-model="state.ruleForm.decisionDate" type="date" placeholder="鍐冲畾鏃ユ湡" /> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" > - <el-form-item label="閲囪喘浜�" prop="purchaser"> - <el-input v-model="state.ruleForm.purchaser" placeholder="璇疯緭鍏ラ噰璐汉" maxlength="100" show-word-limit clearable /> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" > - <el-form-item label="閲囪喘浠g悊鏈烘瀯" prop="procurementAgency"> - <el-input v-model="state.ruleForm.procurementAgency" placeholder="璇疯緭鍏ラ噰璐唬鐞嗘満鏋�" maxlength="100" show-word-limit clearable /> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" > - <el-form-item label="鎶曡瘔浜�" prop="complainant"> - <el-input v-model="state.ruleForm.complainant" placeholder="璇疯緭鍏ユ姇璇変汉" maxlength="100" show-word-limit clearable /> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" > - <el-form-item label="閲囪喘鐩戠潱閮ㄩ棬" prop="procurementSupervisionDepartment"> - <el-input v-model="state.ruleForm.procurementSupervisionDepartment" placeholder="璇疯緭鍏ラ噰璐洃鐫i儴闂�" maxlength="100" show-word-limit clearable /> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" > - <el-form-item label="绾夸笂鍦板潃" prop="url"> - <el-input v-model="state.ruleForm.url" placeholder="璇疯緭鍏ョ嚎涓婂湴鍧�" maxlength="255" show-word-limit clearable /> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button @click="() => state.showDialog = false">鍙� 娑�</el-button> - <el-button @click="submit" type="primary" v-reclick="1000">纭� 瀹�</el-button> - </span> - </template> - </el-dialog> - </div> + <div class="procurementComplaint-container"> + <el-dialog v-model="state.showDialog" :width="800" draggable :close-on-click-modal="false"> + <template #header> + <div style="color: #fff"> + <span>{{ state.title }}</span> + </div> + </template> + <el-form :model="state.ruleForm" ref="ruleFormRef" label-width="auto" :rules="rules"> + <el-row :gutter="35"> + <el-form-item v-show="false"> + <el-input v-model="state.ruleForm.id" /> + </el-form-item> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> + <el-form-item label="鍐冲畾鏃ユ湡" prop="decisionDate"> + <el-date-picker v-model="state.ruleForm.decisionDate" type="date" placeholder="璇烽�夋嫨鍐冲畾鏃ユ湡" /> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> + <el-form-item label="椤圭洰鍚嶇О" prop="projectName"> + <el-input v-model="state.ruleForm.projectName" placeholder="璇疯緭鍏ラ」鐩悕绉�" maxlength="200" show-word-limit + clearable /> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> + <el-form-item label="椤圭洰缂栧彿" prop="projectCode"> + <el-input v-model="state.ruleForm.projectCode" placeholder="璇疯緭鍏ラ」鐩紪鍙�" maxlength="50" show-word-limit + clearable /> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> + <el-form-item label="閲囪喘浜�" prop="purchaser"> + <el-input v-model="state.ruleForm.purchaser" placeholder="璇疯緭鍏ラ噰璐汉" maxlength="100" show-word-limit + clearable /> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> + <el-form-item label="閲囪喘浠g悊鏈烘瀯" prop="procurementAgency"> + <el-input v-model="state.ruleForm.procurementAgency" placeholder="璇疯緭鍏ラ噰璐唬鐞嗘満鏋�" maxlength="100" + show-word-limit clearable /> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> + <el-form-item label="閲囪喘鐩戠潱閮ㄩ棬" prop="procurementSupervisionDepartment"> + <el-input v-model="state.ruleForm.procurementSupervisionDepartment" placeholder="璇疯緭鍏ラ噰璐洃鐫i儴闂�" + maxlength="100" show-word-limit clearable /> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> + <el-form-item label="鎶曡瘔浜�" prop="complainant"> + <el-input v-model="state.ruleForm.complainant" placeholder="璇疯緭鍏ユ姇璇変汉" maxlength="100" show-word-limit + clearable /> + </el-form-item> + </el-col> + <template v-for="(item,index) in state.ruleForm.complaints" :key="index"> + <el-col :xs="24" :sm="12" :md="12" :lg="21" :xl="12" class="mb20"> + <el-form-item :label="`鎶曡瘔浜嬮」${index==0?'':index}`" prop="complaints"> + <el-input v-model="item.itemDescription" :placeholder="`璇疯緭鍏ユ姇璇変簨椤�${index==0?'':index}`" maxlength="255" + show-word-limit clearable /> + </el-form-item> + </el-col> + </template> + <el-col :xs="24" :sm="12" :md="12" :lg="1" :xl="12" class="mb20"> + <el-button type="primary" @click="changeComplaints('add')">+</el-button> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="1" :xl="12" class="mb20" + v-if="state.ruleForm.complaints&&state.ruleForm.complaints.length>1"> + <el-button type="primary" @click="changeComplaints">-</el-button> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> + <el-form-item label="绾夸笂鍦板潃" prop="url"> + <el-input v-model="state.ruleForm.url" placeholder="璇疯緭鍏ョ嚎涓婂湴鍧�" maxlength="255" show-word-limit clearable /> + </el-form-item> + </el-col> + + </el-row> + </el-form> + <template #footer> + <span class="dialog-footer"> + <el-button @click="() => state.showDialog = false">鍙� 娑�</el-button> + <el-button @click="submit" type="primary" v-reclick="1000">纭� 瀹�</el-button> + </span> + </template> + </el-dialog> + </div> </template> <style lang="scss" scoped> -:deep(.el-select), :deep(.el-input-number) { - width: 100%; +:deep(.el-select), +:deep(.el-input-number) { + width: 100%; } </style> \ No newline at end of file diff --git a/Web/src/views/fb_p_complaints/procurementComplaint/index.vue b/Web/src/views/fb_p_complaints/procurementComplaint/index.vue index 0650757..9eab2ca 100644 --- a/Web/src/views/fb_p_complaints/procurementComplaint/index.vue +++ b/Web/src/views/fb_p_complaints/procurementComplaint/index.vue @@ -1,176 +1,201 @@ 锘�<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(); const editDialogRef = ref(); const importDataRef = ref(); const state = reactive({ - exportLoading: false, - tableLoading: false, - stores: {}, - showAdvanceQueryUI: false, - dropdownData: {} as any, - selectData: [] as any[], - tableQueryParams: {} as any, - tableParams: { - page: 1, - pageSize: 20, - total: 0, - field: 'createTime', // 榛樿鐨勬帓搴忓瓧娈� - order: 'descending', // 鎺掑簭鏂瑰悜 - descStr: 'descending', // 闄嶅簭鎺掑簭鐨勫叧閿瓧绗� - }, - tableData: [], + exportLoading: false, + tableLoading: false, + stores: {}, + showAdvanceQueryUI: false, + dropdownData: {} as any, + selectData: [] as any[], + tableQueryParams: {} as any, + tableParams: { + page: 1, + pageSize: 20, + total: 0, + field: 'createTime', // 榛樿鐨勬帓搴忓瓧娈� + order: 'descending', // 鎺掑簭鏂瑰悜 + descStr: 'descending', // 闄嶅簭鎺掑簭鐨勫叧閿瓧绗� + }, + tableData: [], }); // 椤甸潰鍔犺浇鏃� -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); - state.tableParams.total = result?.total; - state.tableData = result?.items ?? []; - state.tableLoading = false; + 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); + state.tableParams.total = result?.total; + state.tableData = result?.items ?? []; + state.tableLoading = false; }; // 鍒楁帓搴� const sortChange = async (column: any) => { - state.tableParams.field = column.prop; - state.tableParams.order = column.order; - await handleQuery(); + state.tableParams.field = column.prop; + state.tableParams.order = column.order; + await handleQuery(); }; // 鍒犻櫎 const delProcurementComplaint = (row: any) => { - ElMessageBox.confirm(`纭畾瑕佸垹闄ゅ悧?`, "鎻愮ず", { - confirmButtonText: "纭畾", - cancelButtonText: "鍙栨秷", - type: "warning", - }).then(async () => { - await procurementComplaintApi.delete({ id: row.id }); - handleQuery(); - ElMessage.success("鍒犻櫎鎴愬姛"); - }).catch(() => {}); + ElMessageBox.confirm(`纭畾瑕佸垹闄ゅ悧?`, '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning', + }) + .then(async () => { + await procurementComplaintApi.delete({ id: row.id }); + handleQuery(); + 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 => { - ElMessage.success(`鎴愬姛鎵归噺鍒犻櫎${res.data.result}鏉¤褰昤); - handleQuery(); - }); - }).catch(() => {}); + 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(() => {}); }; // 瀵煎嚭鏁版嵁 const exportProcurementComplaintCommand = async (command: string) => { - 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)); - } else if (command === 'current') { - const params = Object.assign({}, state.tableQueryParams, state.tableParams); - 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)); - } - } finally { - state.exportLoading = false; - } -} + 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)); + } else if (command === 'current') { + const params = Object.assign({}, state.tableQueryParams, state.tableParams); + 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)); + } + } finally { + state.exportLoading = false; + } +}; handleQuery(); </script> <template> <div class="procurementComplaint-container" v-loading="state.exportLoading"> - <el-card shadow="hover" :body-style="{ paddingBottom: '0' }"> + <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-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="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="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="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="4" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> + <el-form-item label="閲囪喘浠g悊鏈烘瀯"> + <el-input v-model="state.tableQueryParams.procurementAgency" clearable placeholder="璇疯緭鍏ラ噰璐唬鐞嗘満鏋�" /> + </el-form-item> + </el-col> + <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="璇疯緭鍏ラ噰璐洃鐫i儴闂�" /> + </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="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="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 :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" 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-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-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.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-form-item label="閲囪喘浠g悊鏈烘瀯"> - <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-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="璇疯緭鍏ラ噰璐洃鐫i儴闂�"/> - </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-form-item> - </el-col> + </el-col> --> <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10"> - <el-form-item > + <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> @@ -178,47 +203,53 @@ </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-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 :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='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='閲囪喘浠g悊鏈烘瀯' 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" - @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"/> + <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" /> <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) { - width: 100%; +:deep(.el-input), +:deep(.el-select), +:deep(.el-input-number) { + width: 100%; } </style> \ No newline at end of file -- Gitblit v1.9.1