From 4ebc73199bcd4b23739a2e1d22c372e8081310c5 Mon Sep 17 00:00:00 2001 From: 王恒 <318726284@qq.com> Date: 星期五, 18 七月 2025 17:55:29 +0800 Subject: [PATCH] '完善筛选项' --- src/views/system/manage/index.vue | 232 ++++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 144 insertions(+), 88 deletions(-) diff --git a/src/views/system/manage/index.vue b/src/views/system/manage/index.vue index d452151..95ef6f9 100644 --- a/src/views/system/manage/index.vue +++ b/src/views/system/manage/index.vue @@ -10,13 +10,13 @@ <el-input v-model="queryParams.planNo" placeholder="璇疯緭鍏ヨ鍒掔紪鍙�" clearable style="width: 200px" @keyup.enter="handleQuery" /> </el-form-item> - <el-form-item label="鎵ф硶鍗曚綅" prop="companyUser"> - <el-input v-model="queryParams.companyUser" placeholder="璇疯緭鍏ユ墽娉曞崟浣�" clearable style="width: 200px" + <el-form-item label="鎵ф硶鍗曚綅" prop="executiveSection"> + <el-input v-model="queryParams.executiveSection" placeholder="璇疯緭鍏ユ墽娉曞崟浣�" clearable style="width: 200px" @keyup.enter="handleQuery" /> </el-form-item> <el-form-item label="鎵ф硶鏃堕棿" style="width: 290px"> - <el-date-picker v-model="dateRange" value-format="YYYY-MM-DD" type="daterange" range-separator="-" - start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡"></el-date-picker> + <el-date-picker v-model="dateRange" value-format="YYYY-MM" type="monthrange" range-separator="-" + start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" @change="changeDateHandler"></el-date-picker> </el-form-item> <el-form-item> <el-button type="primary" icon="Search" @click="handleQuery">鎼滅储</el-button> @@ -29,21 +29,24 @@ <el-button type="primary" plain icon="Plus" @click="handleAdd()" v-hasPermi="['system:dept:add']">鏂板</el-button> </el-col> <el-col :span="1.5"> - <el-button type="info" plain icon="Upload" @click="handleImport" + <el-button type="warning" plain icon="Upload" @click="handleImport" v-hasPermi="['system:user:import']">瀵煎叆</el-button> </el-col> <el-col :span="1.5"> - <el-button type="primary" plain icon="Download" @click="downLoadCode">瀵煎嚭</el-button> + <el-button type="success" plain icon="Download" @click="downLoadCode">瀵煎嚭</el-button> </el-col> <el-col :span="1.5"> - <el-button type="primary" plain icon="Download" @click="downLoadCode">鍙戣捣缁煎悎鏌ヤ竴娆�</el-button> + <el-button type="primary" plain icon="View" @click="downLoadCode">鍙戣捣缁煎悎鏌ヤ竴娆�</el-button> </el-col> </el-row> + <!-- @selection-change="handleSelectionChange" --> <el-table v-if="refreshTable" v-loading="loading" :data="deptList" row-key="companyId" - :default-expand-all="isExpandAll" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" - @selection-change="handleSelectionChange"> - <el-table-column type="selection" width="55" align="center" /> + :default-expand-all="isExpandAll" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"> + <!-- <el-table-column type="selection" width="55" align="center" /> --> + <el-table-column prop="planNo" label="搴忓彿" width="55"> + <template #default="scope">{{ scope.$index + 1 }}</template> + </el-table-column> <el-table-column prop="planNo" label="璁″垝缂栧彿" width="180"></el-table-column> <el-table-column prop="planName" label="璁″垝鍚嶇О" width="180"></el-table-column> <el-table-column prop="makeOrgName" label="鍒跺畾鏈烘瀯" width="180"></el-table-column> @@ -56,9 +59,9 @@ <el-table-column prop="planFrequency" label="璁″垝棰戞" width="180"></el-table-column> <el-table-column prop="planMonth" label="璁″垝鏈堜唤" width="180"></el-table-column> <el-table-column prop="planStatus" label="鐘舵��" width="180"></el-table-column> - <el-table-column label="鎿嶄綔" align="center" fixed="right" class-name="small-padding fixed-width" width="240"> + <el-table-column label="鎿嶄綔" align="center" fixed="right" class-name="small-padding fixed-width" width="180"> <template #default="scope"> - <el-link type="info" @click="createQrcodeHandler(scope.row)">鏌ョ湅</el-link> + <el-link type="info" @click="handleView(scope.row)">鏌ョ湅</el-link> <el-divider direction="vertical" /> <el-link type="primary" @click="handleAdd(scope.row)">缂栬緫</el-link> <el-divider direction="vertical" /> @@ -74,32 +77,44 @@ <el-form ref="deptRef" :model="form" :rules="rules" label-width="140px"> <el-row :gutter="20"> <el-col :span="12"> + <el-form-item label="璁″垝缂栧彿" prop="planNo"> + <el-input v-model="form.planNo" placeholder="璇疯緭鍏ヨ鍒掑悕绉�" /> + </el-form-item> + </el-col> + <el-col :span="12"> <el-form-item label="璁″垝鍚嶇О" prop="planName"> <el-input v-model="form.planName" placeholder="璇疯緭鍏ヨ鍒掑悕绉�" /> </el-form-item> </el-col> + </el-row> + <el-row :gutter="20"> <el-col :span="12"> <el-form-item label="鍒跺畾璁″垝鐨勬満鏋�" prop="makeOrgName"> <el-input v-model="form.makeOrgName" placeholder="璇疯緭鍏ュ埗瀹氳鍒掔殑鏈烘瀯" /> </el-form-item> </el-col> - </el-row> - <el-row :gutter="20"> <el-col :span="12"> <el-form-item label="琚鏌ョ殑瀵硅薄" prop="checkdObject"> <el-input v-model="form.checkdObject" placeholder="璇疯緭鍏ヨ妫�鏌ョ殑瀵硅薄" /> </el-form-item> </el-col> + </el-row> + <el-row :gutter="20"> <el-col :span="12"> <el-form-item label="缁熶竴绀句細淇$敤浠g爜" prop="unifiedSocialCreditCode"> <el-input v-model="form.unifiedSocialCreditCode" placeholder="璇疯緭鍏ョ粺涓�绀句細淇$敤浠g爜" /> </el-form-item> </el-col> + <el-col :span="12"> + <el-form-item label="鎵�灞炶涓�" prop="industry"> + <el-input v-model="form.industry" placeholder="璇疯緭鍏ユ墍灞炶涓�" /> + </el-form-item> + </el-col> </el-row> <el-row :gutter="20"> <el-col :span="12"> - <el-form-item label="琛屼笟" prop="industry"> - <el-input v-model="form.industry" placeholder="璇疯緭鍏ヨ涓�" /> + <el-form-item label="妫�鏌ユ柟寮�" prop="executiveSection"> + <el-input v-model="form.checkdType" placeholder="璇疯緭鍏ユ鏌ユ柟寮�" /> </el-form-item> </el-col> <el-col :span="12"> @@ -117,19 +132,24 @@ </el-row> <el-row :gutter="20"> <el-col :span="12"> + <el-form-item label="璁″垝鏈堜唤" prop="planMonth"> + <el-date-picker v-model="form.planMonth" type="month" format="YYYY-MM" value-format="YYYY-MM" + placeholder="璇烽�夋嫨璁″垝鏈堜唤" /> + </el-form-item> + </el-col> + <el-col :span="12"> <el-form-item label="璁″垝棰戠巼" prop="planFrequency"> <el-input v-model="form.planFrequency" placeholder="璇疯緭鍏ヨ鍒掗鐜�" /> </el-form-item> </el-col> + </el-row> + <el-row :gutter="20"> <el-col :span="12"> - <el-form-item label="璁″垝鏈堜唤" prop="planMonth"> - <el-input v-model="form.planMonth" placeholder="璇疯緭鍏ヨ鍒掓湀浠�" /> + <el-form-item label="鐘舵��" prop="planStatus"> + <el-input v-model="form.planStatus" placeholder="璇疯緭鍏ョ姸鎬�" /> </el-form-item> </el-col> </el-row> - <!-- <el-form-item label="鐘舵��"> - <el-switch v-model="form.companyStatus" :active-value="0" :inactive-value="1"></el-switch> - </el-form-item> --> </el-form> <template #footer> <div class="dialog-footer"> @@ -138,9 +158,6 @@ </div> </template> </el-dialog> - <exportRecord ref="exportRecordCom" :recordRow="recordRow" @uploadList="getList"></exportRecord> - <judgeCom ref="judgeComRef" @upload="getList"></judgeCom> - <createQrcode ref="createQrcodeRef"></createQrcode> <!-- 璁″垝瀵煎叆瀵硅瘽妗� --> <el-dialog :title="upload.title" v-model="upload.open" width="400px" append-to-body> @@ -165,25 +182,62 @@ </div> </template> </el-dialog> + + <!-- 璁″垝璇︾粏 --> + <el-dialog title="璁″垝璇︽儏" v-model="planOpen" width="700px" append-to-body> + <el-form label-width="140px"> + <el-row> + <el-col :span="12"> + <el-form-item label="璁″垝缂栧彿锛�">{{ planDetail.planNo }}</el-form-item> + <el-form-item label="璁″垝鍚嶇О锛�">{{ planDetail.planName }}</el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鍒跺畾璁″垝鐨勬満鏋勶細">{{ planDetail.makeOrgName }}</el-form-item> + <el-form-item label="琚鏌ョ殑瀵硅薄锛�">{{ planDetail.checkdObject }}</el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="缁熶竴绀句細淇$敤浠g爜锛�">{{ planDetail.unifiedSocialCreditCode }}</el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鎵�灞炶涓氾細">{{ planDetail.industry }}</el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="妫�鏌ユ柟寮忥細">{{ planDetail.checkdType }}</el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鎵ц绉戝锛�">{{ planDetail.executiveSection }}</el-form-item> + </el-col> + <el-col :span="24"> + <el-form-item label="妫�鏌ュ唴瀹癸細">{{ planDetail.checkdContent }}</el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="璁″垝鏈堜唤锛�">{{ planDetail.planMonth }}</el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="璁″垝棰戠巼锛�">{{ planDetail.planFrequency }}</el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鐘舵�侊細">{{ planDetail.planStatus }}</el-form-item> + </el-col> + </el-row> + </el-form> + <template #footer> + <div class="dialog-footer"> + <el-button @click="planOpen = false; planDetail = {}">鍏� 闂�</el-button> + </div> + </template> + </el-dialog> </div> </template> <script setup name="Dept"> import { getToken } from "@/utils/auth"; -import { - listCompany, - addCompany, - updStatus, - delCompany, - updateCompany, - getCompany -} from "@/api/system/company/company"; -import { listManage ,exportTemplate} from "@/api/system/manage"; +import { listManage, addManage, getManage, updateManage, delManage, exportTemplate, exportManage } from "@/api/system/manage"; + import { computed } from "vue"; -import { judgeStatus, companyStatus, scopeList } from '@/utils/mapList/index.ts' import useSettingsStore from "@/store/modules/settings"; -import {download as downloadHttp, download} from '@/utils/request'; // 涓嬭浇鏂囦欢 -const thcolor = computed(() => useSettingsStore().theme); +// import { download } from '@/utils/request'; // 涓嬭浇鏂囦欢 +import { download as downloadHttp } from '@/utils/request' const { proxy } = getCurrentInstance(); const { sys_normal_disable } = proxy.useDict("sys_normal_disable"); const deptList = ref([]); @@ -191,36 +245,24 @@ const loading = ref(true); const showSearch = ref(true); const title = ref(""); -const deptOptions = ref([]); const isExpandAll = ref(false); const refreshTable = ref(true); -const exporttem = ref() -const exportRecordCom = ref() -const judgeComRef = ref() -const createQrcodeRef = ref() -const options = reactive({ - companyStatus: [ - { - label: '姝e父', - value: 0 - }, - { - label: '绂佺敤', - value: 1 - }, - ], -}) +const planOpen = ref(false); +const planDetail = ref({}); +const dateRange = ref([]); const data = reactive({ form: {}, queryParams: { planNo: '', planName: '', + executiveSection: '', value1: '', pageNum: 1, pageSize: 10, total: 1 }, rules: { + planNo: [{ required: true, message: "璁″垝缂栧彿涓嶈兘涓虹┖", trigger: "blur" }], planName: [{ required: true, message: "璁″垝鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }], makeOrgName: [{ required: true, message: "鍒跺畾璁″垝鐨勬満鏋勪笉鑳戒负绌�", trigger: "blur" }], checkdObject: [{ required: true, message: "琚鏌ュ璞′笉鑳戒负绌�", trigger: "blur" }], @@ -230,8 +272,16 @@ executiveSection: [{ required: true, message: "鎵ц绉戝涓嶈兘涓虹┖", trigger: "blur" }], planFrequency: [{ required: true, message: "璁″垝棰戞涓嶈兘涓虹┖", trigger: "blur" }], planMonth: [{ required: true, message: "璁″垝鏈堜唤涓嶈兘涓虹┖", trigger: "blur" }], + checkdType: [{ required: true, message: "妫�鏌ユ柟寮忎笉鑳戒负绌�", trigger: "blur" }], + planStatus: [{ required: true, message: "鐘舵�佷笉鑳戒负绌�", trigger: "blur" }], }, }); + +// 鏈堜唤閫夋嫨 +const changeDateHandler = (value) => { + data.queryParams.planMonthStart = value[0] + data.queryParams.planMonthEnd = value[1] +} /*** 璁″垝瀵煎叆鍙傛暟 */ const upload = reactive({ @@ -263,8 +313,7 @@ getList(); }; const { queryParams, form, rules } = toRefs(data); -const recordRow = ref([]) -/** 鏌ヨ浼佷笟鍒楄〃 */ +/** 鏌ヨ璁″垝鍒楄〃 */ function getList() { loading.value = true; listManage(queryParams.value).then((response) => { @@ -282,6 +331,7 @@ /** 琛ㄥ崟閲嶇疆 */ function reset() { form.value = { + planNo: '', // 璁″垝缂栧彿 planName: '', // 璁″垝鍚嶇О makeOrgName: '', // 鍒跺畾鏈烘瀯 checkdObject: '', // 琚鏌ュ璞� @@ -291,6 +341,8 @@ executiveSection: '', // 鎵ц绉戝 planFrequency: '', // 璁″垝棰戞 planMonth: '', // 璁″垝鏈堜唤 + checkdType: '', // 妫�鏌ユ柟寮� + planStatus: '', // 鐘舵�� }; proxy.resetForm("deptRef"); } @@ -302,25 +354,39 @@ /** 閲嶇疆鎸夐挳鎿嶄綔 */ function resetQuery() { queryRef.value.resetFields(); + dateRange.value = []; + queryParams.value = { + planNo: '', // 璁″垝缂栧彿 + planName: '', // 璁″垝鍚嶇О + executiveSection: '', // 鎵ф硶鍗曚綅 + planMonthStart: '', // 璁″垝寮�濮嬫湀浠� + planMonthEnd: '', // 璁″垝缁撴潫鏈堜唤 + } handleQuery(); } function getDetails(id) { - getCompany(id).then((response) => { + getManage(id).then((response) => { form.value = response.data; open.value = true; - // title.value = "鏌ョ湅浼佷笟"; }); } + +/** 璇︾粏鎸夐挳鎿嶄綔 */ +function handleView(row) { + planOpen.value = true; + planDetail.value = row + planOpen.value = true; +} + /** 鏂板鎸夐挳鎿嶄綔 */ function handleAdd(row) { if (row) { - // form.value = row title.value = "缂栬緫璁″垝"; - getDetails(row.companyId) + getDetails(row.id) } else { - form.value = { - companyStatus: 0 - } + // form.value = { + // companyStatus: 0 + // } title.value = "娣诲姞璁″垝"; open.value = true; } @@ -330,14 +396,14 @@ function submitForm() { proxy.$refs["deptRef"].validate((valid) => { if (valid) { - if (form.value.companyId != undefined) { - updateCompany(form.value).then((response) => { + if (form.value.id != undefined) { + updateManage(form.value).then((response) => { proxy.$modal.msgSuccess("淇敼鎴愬姛"); open.value = false; getList(); }); } else { - addCompany(form.value).then((response) => { + addManage(form.value).then((response) => { proxy.$modal.msgSuccess("鏂板鎴愬姛"); open.value = false; getList(); @@ -351,7 +417,7 @@ proxy.$modal .confirm('鏄惁纭鍒犻櫎璇ユ暟鎹�?') .then(function () { - return delCompany({ delId: row.companyId }); + return delManage(row.id); }) .then(() => { getList(); @@ -382,31 +448,21 @@ } - -// 淇敼浼佷笟淇℃伅 -function changeCompanyNews(row, event) { - if (loading.value) { - return - } - updStatus(row).then(val => { - proxy.$modal.msgSuccess("淇敼鎴愬姛"); - getList(); +// let valueArr = [] +function downLoadCode() { + exportManage().then(val => { + downloadHttp('/tool/file/download', { + fileName: val.msg, + delete: true + }, "璁″垝淇℃伅.xlsx") }) } -function createQrcodeHandler(row) { - createQrcodeRef.value.openDialog(row) -} -let valueArr = [] -function downLoadCode() { - download('/system/company/downloadQrcode', { - companyIds: valueArr.join() - }, "浼佷笟鍥剧墖.zip") -} -function handleSelectionChange(e) { - console.log(e) - valueArr = e.map(item => item.companyId) -} + +// function handleSelectionChange(e) { +// valueArr = e.map(item => item.id) +// } + getList(); function selectableFun(e) { console.log(e) -- Gitblit v1.9.1