Admin.NET/FZCZTB.TSCL.Application/Service/ADPenalty/ADPenaltyService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Admin.NET/FZCZTB.TSCL.Application/Service/ADPenalty/Dto/ADPenaltyDto.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Admin.NET/FZCZTB.TSCL.Application/Service/ADPenalty/Dto/ADPenaltyInput.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Admin.NET/FZCZTB.TSCL.Application/Service/ADPenalty/Dto/ADPenaltyOutput.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Web/src/api/ADPenalty/aDPenalty.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Web/src/views/ADPenalty/aDPenalty/component/editDialog.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Web/src/views/ADPenalty/aDPenalty/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Admin.NET/FZCZTB.TSCL.Application/Service/ADPenalty/ADPenaltyService.cs
New file @@ -0,0 +1,131 @@ // Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 // // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! using Admin.NET.Core.Service; using Microsoft.AspNetCore.Http; using Furion.DatabaseAccessor; using Furion.FriendlyException; using Mapster; using SqlSugar; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using Microsoft.AspNetCore.Mvc; using Admin.NET.Core; using Admin.NET.Application; using Furion.DynamicApiController; using FZCZTB.NET.MD; using Furion.DependencyInjection; namespace FZCZTB.TSCL.Application; /// <summary> /// 行政处罚服务 🧩 /// </summary> [ApiDescriptionSettings(ApplicationConst.GroupName, Order = 100)] public class ADPenaltyService : IDynamicApiController, ITransient { private readonly SqlSugarRepository<ADPenalty> _aDPenaltyRep; public ADPenaltyService(SqlSugarRepository<ADPenalty> aDPenaltyRep) { _aDPenaltyRep = aDPenaltyRep; } /// <summary> /// 分页查询行政处罚 🔖 /// </summary> /// <param name="input"></param> /// <returns></returns> [DisplayName("分页查询行政处罚")] [ApiDescriptionSettings(Name = "Page"), HttpPost] public async Task<SqlSugarPagedList<ADPenaltyOutput>> Page(PageADPenaltyInput input) { input.Keyword = input.Keyword?.Trim(); var query = _aDPenaltyRep.AsQueryable() .WhereIF(!string.IsNullOrWhiteSpace(input.Keyword), u => u.Parties.Contains(input.Keyword) || u.CaseReason.Contains(input.Keyword) || u.DisposalDecision.Contains(input.Keyword) || u.SupervisionDepartment.Contains(input.Keyword)) .WhereIF(!string.IsNullOrWhiteSpace(input.Parties), u => u.Parties.Contains(input.Parties.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.CaseReason), u => u.CaseReason.Contains(input.CaseReason.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.DisposalDecision), u => u.DisposalDecision.Contains(input.DisposalDecision.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.SupervisionDepartment), u => u.SupervisionDepartment.Contains(input.SupervisionDepartment.Trim())) .WhereIF(input.DecisionDateRange?.Length == 2, u => u.DecisionDate >= input.DecisionDateRange[0] && u.DecisionDate <= input.DecisionDateRange[1]) .Select<ADPenaltyOutput>(); return await query.OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize); } /// <summary> /// 获取行政处罚详情 ℹ️ /// </summary> /// <param name="input"></param> /// <returns></returns> [DisplayName("获取行政处罚详情")] [ApiDescriptionSettings(Name = "Detail"), HttpGet] public async Task<ADPenalty> Detail([FromQuery] QueryByIdADPenaltyInput input) { return await _aDPenaltyRep.GetFirstAsync(u => u.Id == input.Id); } /// <summary> /// 增加行政处罚 ➕ /// </summary> /// <param name="input"></param> /// <returns></returns> [DisplayName("增加行政处罚")] [ApiDescriptionSettings(Name = "Add"), HttpPost] public async Task<bool> Add(AddADPenaltyInput input) { var entity = input.Adapt<ADPenalty>(); entity.Id = Guid.NewGuid(); return await _aDPenaltyRep.InsertAsync(entity) ; } /// <summary> /// 更新行政处罚 ✏️ /// </summary> /// <param name="input"></param> /// <returns></returns> [DisplayName("更新行政处罚")] [ApiDescriptionSettings(Name = "Update"), HttpPost] public async Task Update(UpdateADPenaltyInput input) { var entity = input.Adapt<ADPenalty>(); await _aDPenaltyRep.AsUpdateable(entity) .IgnoreColumns(u => new { u.Url, }) .ExecuteCommandAsync(); } /// <summary> /// 删除行政处罚 ❌ /// </summary> /// <param name="input"></param> /// <returns></returns> [DisplayName("删除行政处罚")] [ApiDescriptionSettings(Name = "Delete"), HttpPost] public async Task Delete(DeleteADPenaltyInput input) { var entity = await _aDPenaltyRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002); await _aDPenaltyRep.DeleteAsync(entity); //假删除 //await _aDPenaltyRep.DeleteAsync(entity); //真删除 } /// <summary> /// 批量删除行政处罚 ❌ /// </summary> /// <param name="input"></param> /// <returns></returns> [DisplayName("批量删除行政处罚")] [ApiDescriptionSettings(Name = "BatchDelete"), HttpPost] public async Task<bool> BatchDelete([Required(ErrorMessage = "主键列表不能为空")]List<DeleteADPenaltyInput> input) { var exp = Expressionable.Create<ADPenalty>(); foreach (var row in input) exp = exp.Or(it => it.Id == row.Id); var list = await _aDPenaltyRep.AsQueryable().Where(exp.ToExpression()).ToListAsync(); return await _aDPenaltyRep.DeleteAsync(list); //假删除 //return await _aDPenaltyRep.DeleteAsync(list); //真删除 } } Admin.NET/FZCZTB.TSCL.Application/Service/ADPenalty/Dto/ADPenaltyDto.cs
New file @@ -0,0 +1,79 @@ // Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 // // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! namespace FZCZTB.TSCL.Application; /// <summary> /// 行政处罚输出参数 /// </summary> public class ADPenaltyDto { /// <summary> /// id /// </summary> public Guid Id { get; set; } /// <summary> /// 决定日期 /// </summary> public DateTime DecisionDate { get; set; } /// <summary> /// 当事人信息 /// </summary> public string? Parties { get; set; } /// <summary> /// 案由描述 /// </summary> public string? CaseReason { get; set; } /// <summary> /// 处理决定内容 /// </summary> public string? DisposalDecision { get; set; } /// <summary> /// 采购监督部门名称 /// </summary> public string? SupervisionDepartment { get; set; } /// <summary> /// 创建时间 /// </summary> public DateTime? CreateTime { get; set; } /// <summary> /// 更新时间 /// </summary> public DateTime? UpdateTime { get; set; } /// <summary> /// 创建者Id /// </summary> public long? CreateUserId { get; set; } /// <summary> /// 创建者姓名 /// </summary> public string? CreateUserName { get; set; } /// <summary> /// 修改者Id /// </summary> public long? UpdateUserId { get; set; } /// <summary> /// 修改者姓名 /// </summary> public string? UpdateUserName { get; set; } /// <summary> /// 线上地址 /// </summary> public string? Url { get; set; } } Admin.NET/FZCZTB.TSCL.Application/Service/ADPenalty/Dto/ADPenaltyInput.cs
New file @@ -0,0 +1,179 @@ // Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 // // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! using Admin.NET.Core; using System.ComponentModel.DataAnnotations; using Magicodes.ExporterAndImporter.Core; using Magicodes.ExporterAndImporter.Excel; namespace FZCZTB.TSCL.Application; /// <summary> /// 行政处罚基础输入参数 /// </summary> public class ADPenaltyBaseInput { /// <summary> /// id /// </summary> public virtual Guid Id { get; set; } /// <summary> /// 决定日期 /// </summary> [Required(ErrorMessage = "决定日期不能为空")] public virtual DateTime DecisionDate { get; set; } /// <summary> /// 当事人信息 /// </summary> public virtual string? Parties { get; set; } /// <summary> /// 案由描述 /// </summary> public virtual string? CaseReason { get; set; } /// <summary> /// 处理决定内容 /// </summary> public virtual string? DisposalDecision { get; set; } /// <summary> /// 采购监督部门名称 /// </summary> public virtual string? SupervisionDepartment { get; set; } } /// <summary> /// 行政处罚分页查询输入参数 /// </summary> public class PageADPenaltyInput : BasePageInput { /// <summary> /// 决定日期范围 /// </summary> public DateTime?[] DecisionDateRange { get; set; } /// <summary> /// 当事人信息 /// </summary> public string? Parties { get; set; } /// <summary> /// 案由描述 /// </summary> public string? CaseReason { get; set; } /// <summary> /// 处理决定内容 /// </summary> public string? DisposalDecision { get; set; } /// <summary> /// 采购监督部门名称 /// </summary> public string? SupervisionDepartment { get; set; } } /// <summary> /// 行政处罚增加输入参数 /// </summary> public class AddADPenaltyInput { /// <summary> /// 决定日期 /// </summary> [Required(ErrorMessage = "决定日期不能为空")] public DateTime DecisionDate { get; set; } /// <summary> /// 当事人信息 /// </summary> [MaxLength(255, ErrorMessage = "当事人信息字符长度不能超过255")] public string? Parties { get; set; } /// <summary> /// 案由描述 /// </summary> public string? CaseReason { get; set; } /// <summary> /// 处理决定内容 /// </summary> public string? DisposalDecision { get; set; } /// <summary> /// 采购监督部门名称 /// </summary> [MaxLength(255, ErrorMessage = "采购监督部门名称字符长度不能超过255")] public string? SupervisionDepartment { get; set; } } /// <summary> /// 行政处罚删除输入参数 /// </summary> public class DeleteADPenaltyInput { /// <summary> /// id /// </summary> [Required(ErrorMessage = "id不能为空")] public Guid Id { get; set; } } /// <summary> /// 行政处罚更新输入参数 /// </summary> public class UpdateADPenaltyInput { /// <summary> /// id /// </summary> [Required(ErrorMessage = "id不能为空")] public Guid Id { get; set; } /// <summary> /// 决定日期 /// </summary> [Required(ErrorMessage = "决定日期不能为空")] public DateTime DecisionDate { get; set; } /// <summary> /// 当事人信息 /// </summary> [MaxLength(255, ErrorMessage = "当事人信息字符长度不能超过255")] public string? Parties { get; set; } /// <summary> /// 案由描述 /// </summary> public string? CaseReason { get; set; } /// <summary> /// 处理决定内容 /// </summary> public string? DisposalDecision { get; set; } /// <summary> /// 采购监督部门名称 /// </summary> [MaxLength(255, ErrorMessage = "采购监督部门名称字符长度不能超过255")] public string? SupervisionDepartment { get; set; } } /// <summary> /// 行政处罚主键查询输入参数 /// </summary> public class QueryByIdADPenaltyInput : DeleteADPenaltyInput { } Admin.NET/FZCZTB.TSCL.Application/Service/ADPenalty/Dto/ADPenaltyOutput.cs
New file @@ -0,0 +1,79 @@ // Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 // // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! using Magicodes.ExporterAndImporter.Core; namespace FZCZTB.TSCL.Application; /// <summary> /// 行政处罚输出参数 /// </summary> public class ADPenaltyOutput { /// <summary> /// id /// </summary> public Guid Id { get; set; } /// <summary> /// 决定日期 /// </summary> public DateTime DecisionDate { get; set; } /// <summary> /// 当事人信息 /// </summary> public string? Parties { get; set; } /// <summary> /// 案由描述 /// </summary> public string? CaseReason { get; set; } /// <summary> /// 处理决定内容 /// </summary> public string? DisposalDecision { get; set; } /// <summary> /// 采购监督部门名称 /// </summary> public string? SupervisionDepartment { get; set; } /// <summary> /// 创建时间 /// </summary> public DateTime? CreateTime { get; set; } /// <summary> /// 更新时间 /// </summary> public DateTime? UpdateTime { get; set; } /// <summary> /// 创建者Id /// </summary> public long? CreateUserId { get; set; } /// <summary> /// 创建者姓名 /// </summary> public string? CreateUserName { get; set; } /// <summary> /// 修改者Id /// </summary> public long? UpdateUserId { get; set; } /// <summary> /// 修改者姓名 /// </summary> public string? UpdateUserName { get; set; } /// <summary> /// 线上地址 /// </summary> public string? Url { get; set; } } Web/src/api/ADPenalty/aDPenalty.ts
New file @@ -0,0 +1,50 @@ import {useBaseApi} from '/@/api/base'; // 行政处罚接口服务 export const useADPenaltyApi = () => { const baseApi = useBaseApi("aDPenalty"); return { // 分页查询行政处罚 page: baseApi.page, // 查看行政处罚详细 detail: baseApi.detail, // 新增行政处罚 add: baseApi.add, // 更新行政处罚 update: baseApi.update, // 删除行政处罚 delete: baseApi.delete, // 批量删除行政处罚 batchDelete: baseApi.batchDelete, } } // 行政处罚实体 export interface ADPenalty { // id id: string; // 决定日期 decisionDate?: string; // 当事人信息 parties: string; // 案由描述 caseReason: string; // 处理决定内容 disposalDecision: string; // 采购监督部门名称 supervisionDepartment: string; // 创建时间 createTime: string; // 更新时间 updateTime: string; // 创建者Id createUserId: number; // 创建者姓名 createUserName: string; // 修改者Id updateUserId: number; // 修改者姓名 updateUserName: string; // 线上地址 url: string; } Web/src/views/ADPenalty/aDPenalty/component/editDialog.vue
New file @@ -0,0 +1,117 @@ <script lang="ts" name="aDPenalty" setup> import { ref, reactive, onMounted } from "vue"; import { ElMessage } from "element-plus"; import type { FormRules } from "element-plus"; import { formatDate } from '/@/utils/formatTime'; import { useADPenaltyApi } from '/@/api/ADPenalty/aDPenalty'; //父级传递来的函数,用于回调 const emit = defineEmits(["reloadTable"]); const aDPenaltyApi = useADPenaltyApi(); const ruleFormRef = ref(); const state = reactive({ title: '', loading: false, showDialog: false, ruleForm: {} as any, stores: {}, dropdownData: {} as any, }); // 自行添加其他规则 const rules = ref<FormRules>({ decisionDate: [{required: true, message: '请选择决定日期!', trigger: 'change',},], }); // 页面加载时 onMounted(async () => { }); // 打开弹窗 const openDialog = async (row: any, title: string) => { state.title = title; row = row ?? { }; state.ruleForm = row.id ? await aDPenaltyApi.detail(row.id).then(res => res.data.result) : JSON.parse(JSON.stringify(row)); state.showDialog = true; }; // 关闭弹窗 const closeDialog = () => { emit("reloadTable"); state.showDialog = false; }; // 提交 const submit = async () => { ruleFormRef.value.validate(async (isValid: boolean, fields?: any) => { if (isValid) { let values = state.ruleForm; await aDPenaltyApi[state.ruleForm.id ? 'update' : 'add'](values); closeDialog(); } else { ElMessage({ message: `表单有${Object.keys(fields).length}处验证失败,请修改后再提交`, type: "error", }); } }); }; //将属性或者函数暴露给父组件 defineExpose({ openDialog }); </script> <template> <div class="aDPenalty-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="parties"> <el-input v-model="state.ruleForm.parties" placeholder="请输入当事人信息" maxlength="255" 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="caseReason"> <el-input v-model="state.ruleForm.caseReason" placeholder="请输入案由描述" 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="disposalDecision"> <el-input v-model="state.ruleForm.disposalDecision" placeholder="请输入处理决定内容" 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="supervisionDepartment"> <el-input v-model="state.ruleForm.supervisionDepartment" 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%; } </style> Web/src/views/ADPenalty/aDPenalty/index.vue
New file @@ -0,0 +1,174 @@ <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'; 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: 'createTime', // 默认的排序字段 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="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.parties" 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.caseReason" 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.disposalDecision" 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.supervisionDepartment" 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="'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" 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='决定日期' show-overflow-tooltip /> <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' 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('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>