From e5525dfd621b7c335225517c9c64dbf0b3b482dd Mon Sep 17 00:00:00 2001 From: Ky10 <7703482+ky10_code@user.noreply.gitee.com> Date: Thu, 14 Nov 2024 18:32:28 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat(work):=20=E6=B7=BB=E5=8A=A0=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E9=85=8D=E7=BD=AE=E5=8A=9F=E8=83=BD-=20=E5=9C=A8?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E5=8F=B0=E9=A1=B5=E9=9D=A2=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E9=85=8D=E7=BD=AE=E5=85=A5=E5=8F=A3=20-=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=B3=BB=E7=BB=9F=E9=85=8D=E7=BD=AE=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E8=B7=AF=E5=BE=84=E5=92=8C=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/system/config.ts | 109 +++++++++++++++++++++++++++++++ src/pages/work/system/config.vue | 23 +++++++ 2 files changed, 132 insertions(+) create mode 100644 src/api/system/config.ts create mode 100644 src/pages/work/system/config.vue diff --git a/src/api/system/config.ts b/src/api/system/config.ts new file mode 100644 index 0000000..b86b0da --- /dev/null +++ b/src/api/system/config.ts @@ -0,0 +1,109 @@ +// import request from "@/utils/request"; +import request from "@/utils/request"; + +const CONFIG_BASE_URL = "/api/v1/config"; + +const ConfigAPI = { + /** 获取系统配置分页数据 */ + getPage(queryParams: ConfigPageQuery) { + return request>({ + url: `${CONFIG_BASE_URL}/page`, + method: "GET", + data: queryParams, + }); + }, + /** + * 获取系统配置表单数据 + * + * @param id ConfigID + * @returns Config表单数据 + */ + getFormData(id: number) { + return request({ + url: `${CONFIG_BASE_URL}/${id}/form`, + method: "GET", + }); + }, + + /** 添加系统配置*/ + add(data: ConfigForm) { + return request({ + url: `${CONFIG_BASE_URL}`, + method: "POST", + data: data, + }); + }, + + /** + * 更新系统配置 + * + * @param id ConfigID + * @param data Config表单数据 + */ + update(id: number, data: ConfigForm) { + return request({ + url: `${CONFIG_BASE_URL}/${id}`, + method: "PUT", + data: data, + }); + }, + + /** + * 删除系统配置 + * + * @param ids 系统配置ID + */ + deleteById(id: number) { + return request({ + url: `${CONFIG_BASE_URL}/${id}`, + method: "DELETE", + }); + }, + + refreshCache() { + return request({ + url: `${CONFIG_BASE_URL}`, + method: "POST", + header: { + "Content-Type": "application/json", + "X-HTTP-Method-Override": "PATCH", + }, + }); + }, +}; + +export default ConfigAPI; + +/** $系统配置分页查询参数 */ +export interface ConfigPageQuery extends PageQuery { + /** 搜索关键字 */ + keywords?: string; +} + +/** 系统配置表单对象 */ +export interface ConfigForm { + /** 主键 */ + id?: number; + /** 配置名称 */ + configName?: string; + /** 配置键 */ + configKey?: string; + /** 配置值 */ + configValue?: string; + /** 描述、备注 */ + remark?: string; +} + +/** 系统配置分页对象 */ +export interface ConfigPageVO { + /** 主键 */ + id?: number; + /** 配置名称 */ + configName?: string; + /** 配置键 */ + configKey?: string; + /** 配置值 */ + configValue?: string; + /** 描述、备注 */ + remark?: string; +} diff --git a/src/pages/work/system/config.vue b/src/pages/work/system/config.vue new file mode 100644 index 0000000..72c275e --- /dev/null +++ b/src/pages/work/system/config.vue @@ -0,0 +1,23 @@ + + + + + From d2ead8fd565fb4a8e7b6ef5f6e2d9f418231e62d Mon Sep 17 00:00:00 2001 From: Ky10 <7703482+ky10_code@user.noreply.gitee.com> Date: Sat, 16 Nov 2024 20:16:36 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat(system):=20=E6=B7=BB=E5=8A=A0=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E9=85=8D=E7=BD=AE=E5=8A=9F=E8=83=BD-=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E7=B3=BB=E7=BB=9F=E9=85=8D=E7=BD=AE=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=92=8C=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD=20-=20=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E9=85=8D=E7=BD=AE=E5=88=97=E8=A1=A8=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E3=80=81=E7=AD=9B=E9=80=89=E3=80=81=E6=B7=BB=E5=8A=A0=E3=80=81?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=92=8C=E5=88=A0=E9=99=A4=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=20-=20=E6=B7=BB=E5=8A=A0=E9=85=8D=E7=BD=AE=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2-=20=E4=BC=98=E5=8C=96=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E5=88=B7=E6=96=B0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/system/config.ts | 9 +- src/pages.json | 12 ++ src/pages/work/index.vue | 1 + src/pages/work/system/config.vue | 23 --- src/pages/work/system/config/config.vue | 260 ++++++++++++++++++++++++ src/pages/work/system/config/item.vue | 223 ++++++++++++++++++++ 6 files changed, 498 insertions(+), 30 deletions(-) delete mode 100644 src/pages/work/system/config.vue create mode 100644 src/pages/work/system/config/config.vue create mode 100644 src/pages/work/system/config/item.vue diff --git a/src/api/system/config.ts b/src/api/system/config.ts index b86b0da..fb42cde 100644 --- a/src/api/system/config.ts +++ b/src/api/system/config.ts @@ -1,4 +1,3 @@ -// import request from "@/utils/request"; import request from "@/utils/request"; const CONFIG_BASE_URL = "/api/v1/config"; @@ -62,12 +61,8 @@ const ConfigAPI = { refreshCache() { return request({ - url: `${CONFIG_BASE_URL}`, - method: "POST", - header: { - "Content-Type": "application/json", - "X-HTTP-Method-Override": "PATCH", - }, + url: `${CONFIG_BASE_URL}/refresh`, + method: "PUT", }); }, }; diff --git a/src/pages.json b/src/pages.json index 94219a7..239921b 100644 --- a/src/pages.json +++ b/src/pages.json @@ -54,6 +54,18 @@ "style": { "navigationBarTitleText": "日志管理" } + }, + { + "path": "pages/work/system/config/config", + "style": { + "navigationBarTitleText": "系统配置" + } + }, + { + "path": "pages/work/system/config/item", + "style": { + "navigationBarTitleText": "配置详情" + } } ], "globalStyle": { diff --git a/src/pages/work/index.vue b/src/pages/work/index.vue index ab6fe46..03b9e17 100644 --- a/src/pages/work/index.vue +++ b/src/pages/work/index.vue @@ -51,6 +51,7 @@ const gridList = reactive([ { icon: "/static/icons/config.png", title: "系统配置", + url: "/pages/work/system/config/config", }, { icon: "/static/icons/notice.png", diff --git a/src/pages/work/system/config.vue b/src/pages/work/system/config.vue deleted file mode 100644 index 72c275e..0000000 --- a/src/pages/work/system/config.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - - - diff --git a/src/pages/work/system/config/config.vue b/src/pages/work/system/config/config.vue new file mode 100644 index 0000000..57df655 --- /dev/null +++ b/src/pages/work/system/config/config.vue @@ -0,0 +1,260 @@ + + + + diff --git a/src/pages/work/system/config/item.vue b/src/pages/work/system/config/item.vue new file mode 100644 index 0000000..f83e1b9 --- /dev/null +++ b/src/pages/work/system/config/item.vue @@ -0,0 +1,223 @@ + + + + From 7aab3030970f1e8e024ebd62e8c7a25742b6ab8a Mon Sep 17 00:00:00 2001 From: Ky10 <7703482+ky10_code@user.noreply.gitee.com> Date: Sat, 16 Nov 2024 21:20:03 +0800 Subject: [PATCH 3/4] =?UTF-8?q?feat(system):=20=E4=BC=98=E5=8C=96=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E9=A1=B5=E9=9D=A2=E5=8A=A0=E8=BD=BD=E6=9B=B4=E5=A4=9A?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加加载更多组件并实现分页加载功能 - 动态设置页面标题为新增或编辑配置 - 优化数据加载逻辑,实现自动加载下一页 --- src/pages/work/system/config/config.vue | 21 +++++++++++++++------ src/pages/work/system/config/item.vue | 4 ++++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/pages/work/system/config/config.vue b/src/pages/work/system/config/config.vue index 57df655..5b6b6d4 100644 --- a/src/pages/work/system/config/config.vue +++ b/src/pages/work/system/config/config.vue @@ -4,7 +4,7 @@ - + 配置名称:{{ item.configName }} @@ -61,6 +61,7 @@ + @@ -88,10 +89,9 @@ import ConfigAPI, { ConfigPageVO, ConfigForm, ConfigPageQuery } from "@/api/syst import { DropMenuItemExpose } from "wot-design-uni/components/wd-drop-menu-item/types"; import { LoadMoreState } from "wot-design-uni/components/wd-loadmore/types"; +const state = ref("loading"); // 加载状态 loading, finished:, error const loading = ref(false); -const selectIds = ref([]); const total = ref(0); -const loadMoreState = ref("loading"); const queryParams = reactive({ pageNum: 1, pageSize: 10, @@ -132,14 +132,23 @@ function handleOpened() { } function handleQuery() { - loading.value = true; + state.value = "loading"; ConfigAPI.getPage(queryParams) .then((data) => { pageData.value = data.list; total.value = data.total; + // 计算当前已加载的条数 + const loadedCount = queryParams.pageNum * queryParams.pageSize; + + // 判断是否需要加载下一页 + if (loadedCount < total.value) { + queryParams.pageNum++; + // 调用 handleQuery 继续加载下一页 + handleQuery(); + } }) .finally(() => { - loading.value = false; + state.value = "finished"; }); } diff --git a/src/pages/work/system/config/item.vue b/src/pages/work/system/config/item.vue index f83e1b9..58001d7 100644 --- a/src/pages/work/system/config/item.vue +++ b/src/pages/work/system/config/item.vue @@ -153,6 +153,10 @@ const item = ref(null); // 获取传递的参数 onLoad((options) => { console.log("接收到参数:", options); + const title = options && options.item ? "编辑配置" : "新增配置"; + uni.setNavigationBarTitle({ + title: title, + }); if (options && options.item) { try { item.value = JSON.parse(decodeURIComponent(options.item)); From da7f04b7ad87d3492ea24d97ebc0e26f4d428620 Mon Sep 17 00:00:00 2001 From: Ky10 <7703482+ky10_code@user.noreply.gitee.com> Date: Sat, 16 Nov 2024 21:24:33 +0800 Subject: [PATCH 4/4] =?UTF-8?q?feat(system):=20=E4=BC=98=E5=8C=96=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E9=A1=B5=E9=9D=A2=E6=95=B0=E6=8D=AE=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除自动加载下一页的功能 - 添加触底事件处理,实现手动加载更多数据 - 优化代码结构,提高可读性和维护性 --- src/pages/work/system/config/config.vue | 26 ++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/pages/work/system/config/config.vue b/src/pages/work/system/config/config.vue index 5b6b6d4..91d2556 100644 --- a/src/pages/work/system/config/config.vue +++ b/src/pages/work/system/config/config.vue @@ -131,21 +131,29 @@ function handleOpened() { console.log("下拉菜单已打开"); } +/** + * 触底事件 + */ +onReachBottom(() => { + queryParams.pageNum++; + handleQuery(); +}); + function handleQuery() { state.value = "loading"; ConfigAPI.getPage(queryParams) .then((data) => { pageData.value = data.list; total.value = data.total; - // 计算当前已加载的条数 - const loadedCount = queryParams.pageNum * queryParams.pageSize; - - // 判断是否需要加载下一页 - if (loadedCount < total.value) { - queryParams.pageNum++; - // 调用 handleQuery 继续加载下一页 - handleQuery(); - } + // // 计算当前已加载的条数 + // const loadedCount = queryParams.pageNum * queryParams.pageSize; + // + // // 判断是否需要加载下一页 + // if (loadedCount < total.value) { + // queryParams.pageNum++; + // // 调用 handleQuery 继续加载下一页 + // handleQuery(); + // } }) .finally(() => { state.value = "finished";