From 4008c7e22c9c01eb653b04f934990486df622654 Mon Sep 17 00:00:00 2001 From: username@email.com <yzy2002yzy@163.com> Date: 星期一, 14 七月 2025 12:21:35 +0800 Subject: [PATCH] Merge branch 'master' of http://47.108.235.38:8080/r/FZCZTB --- Web/src/views/ADPenalty/aDPenalty/index.vue | 185 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 185 insertions(+), 0 deletions(-) diff --git a/Web/src/views/ADPenalty/aDPenalty/index.vue b/Web/src/views/ADPenalty/aDPenalty/index.vue new file mode 100644 index 0000000..e414120 --- /dev/null +++ b/Web/src/views/ADPenalty/aDPenalty/index.vue @@ -0,0 +1,185 @@ +锘�<script lang="ts" setup name="aDPenalty"> +import { ref, reactive, onMounted } from "vue"; +import { auth } from '/@/utils/authFunction'; +import { ElMessageBox, ElMessage } from "element-plus"; +import { downloadStreamFile } from "/@/utils/download"; +import { useADPenaltyApi } from '/@/api/ADPenalty/aDPenalty'; +import editDialog from '/@/views/ADPenalty/aDPenalty/component/editDialog.vue' +import printDialog from '/@/views/system/print/component/hiprint/preview.vue' +import ModifyRecord from '/@/components/table/modifyRecord.vue'; +import commonFunction from "/@/utils/commonFunction"; + +const { dateFormatYMD } = commonFunction(); +const aDPenaltyApi = useADPenaltyApi(); +const printDialogRef = ref(); +const editDialogRef = 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: 'decisionDate', // 榛樿鐨勬帓搴忓瓧娈� + order: 'descending', // 鎺掑簭鏂瑰悜 + descStr: 'descending', // 闄嶅簭鎺掑簭鐨勫叧閿瓧绗� + }, + tableData: [], +}); + +// 椤甸潰鍔犺浇鏃� +onMounted(async () => { +}); + +// 鏌ヨ鎿嶄綔 +const handleQuery = async (params: any = {}) => { + state.tableLoading = true; + state.tableParams = Object.assign(state.tableParams, params); + const result = await aDPenaltyApi.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(); +}; + +// 鍒犻櫎 +const delADPenalty = (row: any) => { + ElMessageBox.confirm(`纭畾瑕佸垹闄ゅ悧?`, "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", + }).then(async () => { + await aDPenaltyApi.delete({ id: row.id }); + handleQuery(); + ElMessage.success("鍒犻櫎鎴愬姛"); + }).catch(() => {}); +}; + +// 鎵归噺鍒犻櫎 +const batchDelADPenalty = () => { + ElMessageBox.confirm(`纭畾瑕佸垹闄�${state.selectData.length}鏉¤褰曞悧?`, "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", + }).then(async () => { + await aDPenaltyApi.batchDelete(state.selectData.map(u => ({ id: u.id }) )).then(res => { + ElMessage.success(`鎴愬姛鎵归噺鍒犻櫎${res.data.result}鏉¤褰昤); + handleQuery(); + }); + }).catch(() => {}); +}; + +handleQuery(); +</script> +<template> + <div class="aDPenalty-container" v-loading="state.exportLoading"> + <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-form-item> + </el-col> --> + <el-col :xs="24" :sm="12" :md="12" :lg="4" :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.parties" 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.supervisionDepartment" 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.caseReason" 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.disposalDecision" clearable placeholder="璇疯緭鍏ュ鐞嗗喅瀹�"/> + </el-form-item> + </el-col> + + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" 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="'aDPenalty: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="batchDelADPenalty" :disabled="state.selectData.length == 0" v-auth="'aDPenalty:batchDelete'"> 鍒犻櫎 </el-button> + <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="editDialogRef.openDialog(null, '鏂板琛屾斂澶勭綒')" v-auth="'aDPenalty:add'"> 鏂板 </el-button> + </el-button-group> + </el-form-item> + </el-col> + </el-row> + </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" :default-sort="{ prop: 'decisionDate', order: 'descending' }" tooltip-effect="light" row-key="id" @sort-change="sortChange" border> + <el-table-column type="selection" width="40" align="center" v-if="auth('aDPenalty:batchDelete') || auth('aDPenalty:export')" /> + <el-table-column type="index" label="搴忓彿" width="55" align="center"/> + <el-table-column prop='decisionDate' label='鍐冲畾鏃ユ湡' width="90" show-overflow-tooltip sortable > + <template #default="{ row }"> + <span>{{dateFormatYMD(null,null,row.decisionDate)}}</span> + </template> + </el-table-column> + <el-table-column prop='parties' label='褰撲簨浜�' show-overflow-tooltip /> + <el-table-column prop='caseReason' label='妗堢敱' show-overflow-tooltip /> + <el-table-column prop='disposalDecision' label='澶勭悊鍐冲畾' show-overflow-tooltip /> + <el-table-column prop='supervisionDepartment' width="130" label='閲囪喘鐩戠潱閮ㄩ棬' show-overflow-tooltip /> + <el-table-column prop='url' label='绾夸笂鍦板潃' show-overflow-tooltip > + <template #default="{ row }"> + <el-link underline :href='row.url' target='_blank'>{{row.url}}</el-link> + </template> + </el-table-column> + <!-- <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="80" align="center" fixed="right" show-overflow-tooltip v-if="auth('aDPenalty:update') || auth('aDPenalty:delete')"> + <template #default="scope"> + <el-button icon="ele-Edit" size="small" text type="primary" @click="editDialogRef.openDialog(scope.row, '缂栬緫琛屾斂澶勭綒')" v-auth="'aDPenalty:update'"> </el-button> + <el-button icon="ele-Delete" size="small" text type="primary" @click="delADPenalty(scope.row)" v-auth="'aDPenalty: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 /> + <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%; +} +</style> \ No newline at end of file -- Gitblit v1.9.1