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