From ace14010899a80f72c8f15ac7f5b4ed474d939a7 Mon Sep 17 00:00:00 2001 From: bestlee Date: Fri, 18 Sep 2026 17:30:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=91=E5=8F=91=E8=B5=B7=E7=9A=84=E5=8F=98?= =?UTF-8?q?=E6=9B=B4=E5=88=97=E8=A1=A8=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/changeLedger/myChanges/index.vue | 194 +++++++++++++++------ src/views/my/initiateChange/index.vue | 3 +- src/views/my/myDraft/index.vue | 2 +- 3 files changed, 148 insertions(+), 51 deletions(-) diff --git a/src/views/changeLedger/myChanges/index.vue b/src/views/changeLedger/myChanges/index.vue index 0607aa2..25cba2e 100644 --- a/src/views/changeLedger/myChanges/index.vue +++ b/src/views/changeLedger/myChanges/index.vue @@ -3,6 +3,7 @@ import { ref, computed, onMounted } from 'vue'; import { Icon } from '@iconify/vue' import { useThemeStore } from '@/store/modules/theme'; import { useRouterPush } from '@/hooks/common/router'; +import { systemConfigApi } from '@/service/api/system'; import { changeLedgerListApi } from '@/service/api/changeLedger'; const { routerPushByKey } = useRouterPush(); @@ -17,7 +18,7 @@ const kw = ref(""); const typeFilter = ref("全部"); const statusFilter = ref("全部"); const durFilter = ref("全部"); -const period = ref("近一年"); + const customFrom = ref(null); const customTo = ref(null); const sort = ref<{ k: string; dir: "asc" | "desc" }>({ k: "applyTime", dir: "desc" }); @@ -70,22 +71,7 @@ const finalRows = computed(() => { default: return rows.value; } }); -const TYPE_FILTERS = ["全部", "工艺", "设备", "管理"]; -const DUR_FILTERS = ["全部", "永久", "临时"]; -const PERIOD_FILTERS = ["近一年", "近半年", "近三个月", "近一个月", "自定义"]; -const STATUS_FILTERS = ["全部", "审批中", "已批准", "实施中", "待PSSR", "待验收", "待关闭", "已关闭"]; -const sortVal = computed({ - get: () => `${sort.value.k}-${sort.value.dir}`, - set: (v: string) => { const [k, dir] = v.split("-") as [string, "asc" | "desc"]; sort.value = { k, dir }; }, -}); -const SORT_OPTS = [ - { label: "申请时间 · 最新", value: "applyTime-desc" }, - { label: "申请时间 · 最早", value: "applyTime-asc" }, - { label: "计划投用 · 最近", value: "planUse-asc" }, - { label: "计划投用 · 最晚", value: "planUse-desc" }, - { label: "状态更新 · 最新", value: "statusTime-desc" }, - { label: "状态更新 · 最早", value: "statusTime-asc" }, -]; + interface LedgerExtra { special?: ("延期" | "临时转永久" | "未实施" | "未投用")[]; actualUse?: string; planRestore?: string; extRestore?: string; closeTime?: string; @@ -433,17 +419,6 @@ const doOp = (r: any, act: string) => { window.$message?.info(`演示:下载 ${r.id} 变更申请表 / 归档包(PDF)`); }; -// 重置 -const reset = () => { - dept.value = "全部组织"; openOnly.value = false; kw.value = ""; typeFilter.value = "全部"; statusFilter.value = "全部"; - durFilter.value = "全部"; period.value = "近一年"; customFrom.value = null; customTo.value = null; - sort.value = { k: "applyTime", dir: "desc" }; - window.$message?.success("筛选条件已重置"); -}; -// 导出台账 -const exportChanges = () => { - window.$message?.success(`演示:导出台账 Excel(当前筛选 ${finalRows.value.length} 条)`); -} // 撤回弹框取消 const revokeCancel = () => { ledgerAct.value = null; @@ -464,23 +439,126 @@ const loading = ref(false); // 筛选条件 const formInfo = ref({ kw: '', - type: 0, - level: 0, - duration: 0, - status: [], + type: null, + level: null, + duration: null, + status: '',//英文逗号隔开 org_id: 1, apply_time_start: null, apply_time_end: null, - self: 1, + self: '1', }); const pagination = ref<{page: number, pageSize: number, itemCount: number}>({ page: 1, - pageSize: 3, + pageSize: 20, itemCount: 0, }) +// 变更类型列表 +const typeList = ref([{ label: "全部", value: null }]); +// 变更等级列表 +const levelList = ref([{ label: "全部", value: null }]); +// 状态选项 +const STATUS_OPTIONS = [ + { label: "全部", value: "" }, + { label: "审批中", value: "APPROVING" }, + { label: "待实施", value: "APPROVED" }, + { label: "待验收", value: "IMPLEMENTED" }, + { label: "待关闭", value: "ACCEPTED" }, + { label: "已关闭", value: "CLOSED" }, + { label: "已撤回", value: "WITHDRAWN" }, + { label: "已驳回", value: "REJECTED" }, +]; +// 排序选项 +const SORT_OPTS = [ + { label: "申请时间 · 最新", value: "apply_time,desc" }, + { label: "申请时间 · 最早", value: "apply_time,asc" }, + { label: "计划投用 · 最新", value: "plan_use_date,desc" }, + { label: "计划投用 · 最早", value: "plan_use_date,asc" }, + { label: "状态更新 · 最新", value: "status_changed_at,desc" }, + { label: "状态更新 · 最早", value: "status_changed_at,asc" }, +]; +// 时限选项 +const DUR_OPTIONS = [ + { label: "全部", value: null }, + { label: "永久", value: 1 }, + { label: "临时", value: 2 } +]; +// 时间选项 +const TIME_OPTIONS = [ + { label: "近一年", value: 'year' }, + { label: "近半年", value: 'half_year' }, + { label: "近三个月", value: 'quarter' }, + { label: "近一个月", value: 'month' }, + { label: "自定义", value: 'custom' }, +]; +// 当前选中时间范围 +const period = ref("year"); +// 是否显示全部 +const isAll = ref(true); + // 列表 const list = ref([]); +// 重置 +const reset = () => { + formInfo.value.kw = ''; + formInfo.value.type = null; + formInfo.value.level = null; + formInfo.value.duration = null; + formInfo.value.status = ''; + formInfo.value.sort = ''; + period.value = 'year'; + isAll.value = true; + window.$message?.success("筛选条件已重置"); +}; +// 导出台账 +const exportChanges = () => { + window.$message?.info('还差接口'); +} + +// 显示全部改变 +const showAll = () => { + isAll.value = !isAll.value; + if(isAll.value){ + formInfo.value.status = ''; + }else{ + formInfo.value.status = 'APPROVING,APPROVED,IMPLEMENTED,ACCEPTED,WITHDRAWN,REJECTED'; + } + pagination.value.page = 1; + getList(); +} + +// 类型选择 +const typeChoose = (val:any) => { + formInfo.value.type = val; + pagination.value.page = 1; + getList(); +} +// 时限选择 +const durChoose = (val:any) => { + formInfo.value.duration = val; + pagination.value.page = 1; + getList(); +} +// 时间范围选择 +const timeChoose = (val:string) => { + period.value = val; + pagination.value.page = 1; + getList(); +} +// 状态选择 +const statusChoose = (val:string) => { + formInfo.value.status = val; + pagination.value.page = 1; + getList(); +} +// 排序选择 +const sortChoose = (val:string) => { + formInfo.value.sort = val; + pagination.value.page = 1; + getList(); +} + // 分页改变 const pageChange = (page: number) => { pagination.value.page = page; @@ -509,8 +587,25 @@ const getList = async () => { } loading.value = false; } +// 获取配置 +const getConfig = async () => { + const {data,error} = await systemConfigApi(); + if(!error){ + // 解析 变更类型设置 + const changeTypeGroup = data.find((group:{group_key:string}) => group.group_key === 'change_type'); + if (changeTypeGroup) { + typeList.value = typeList.value.concat(changeTypeGroup.items); + } + // 解析 变更等级设置 + const changeLevelGroup = data.find((group:{group_key:string}) => group.group_key === 'change_level'); + if (changeLevelGroup) { + levelList.value = levelList.value.concat(changeLevelGroup.items); + } + } +} onMounted(() => { + getConfig(); getList(); }); @@ -529,22 +624,23 @@ onMounted(() => { 全部变更 {{ finalRows.length }} - + + 显示全部 显示未关闭 @@ -570,30 +666,30 @@ onMounted(() => {

类型 - {{ t }} + {{ t.label }}

时限 - {{ d }} + {{ d.label }}

时间 - {{ p }} - - + {{ p.label }} + + - +

状态 - {{ s }} + {{ s.label }}

排序 - +

diff --git a/src/views/my/initiateChange/index.vue b/src/views/my/initiateChange/index.vue index 50f8a9c..11560bf 100644 --- a/src/views/my/initiateChange/index.vue +++ b/src/views/my/initiateChange/index.vue @@ -312,7 +312,8 @@ const getConfig = async () => { const getTemplateConfig = async () => { const {data,error} = await templateListApi(); if(!error){ - templateList.value = data; + const result = data.filter((item:any) => item.type === 1); + templateList.value = result; } } // 获取组织列表 diff --git a/src/views/my/myDraft/index.vue b/src/views/my/myDraft/index.vue index 3a1d141..2dcd52c 100644 --- a/src/views/my/myDraft/index.vue +++ b/src/views/my/myDraft/index.vue @@ -126,7 +126,7 @@ onMounted(() => {
暂无草稿
-
在变更申请页点击右上角「保存」,即可将当前内容存为草稿
+
在发起变更页点击右下角「保存」,即可将当前内容存为草稿