From cab65fb3807f35bcfb1764956de53ba515ec997c Mon Sep 17 00:00:00 2001 From: sheng <905537351@qq.com> Date: Wed, 24 Jun 2026 23:14:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=94=A8=E6=88=B7=E4=BA=A7?= =?UTF-8?q?=E7=BA=BF=E5=92=8C=E5=B7=A5=E5=8E=82=E5=8C=BA=E5=9F=9F=E5=88=86?= =?UTF-8?q?=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../production-master-data/factory-area.js | 2 +- .../production-master-data/production-line.js | 2 +- .../factory-model/factory-area/index.vue | 40 +++++++++++++++---- .../factory-model/production-line/index.vue | 21 +++++++--- .../user-management/user/index.vue | 21 +++++++--- 5 files changed, 67 insertions(+), 19 deletions(-) diff --git a/src/api/production-master-data/factory-area.js b/src/api/production-master-data/factory-area.js index 18fa5981..57141320 100644 --- a/src/api/production-master-data/factory-area.js +++ b/src/api/production-master-data/factory-area.js @@ -4,7 +4,7 @@ const BASE = 'production_configuration/factory_model/factory_area/' function apiParams (method, data = {}) { return { - method: `production_master_data_factory_model_factory_area_${method}`, + method: `production_configuration_factory_model_factory_area_${method}`, platform: 'background', ...data } diff --git a/src/api/production-master-data/production-line.js b/src/api/production-master-data/production-line.js index 2c7acd82..3864b2cb 100644 --- a/src/api/production-master-data/production-line.js +++ b/src/api/production-master-data/production-line.js @@ -4,7 +4,7 @@ const BASE = 'production_configuration/factory_model/factory_line/' function apiParams (method, data = {}) { return { - method: `production_master_data_factory_model_factory_line_${method}`, + method: `production_configuration_factory_model_factory_line_${method}`, platform: 'background', ...data } diff --git a/src/views/production-master-data/factory-model/factory-area/index.vue b/src/views/production-master-data/factory-model/factory-area/index.vue index 2751f1f6..468605f0 100644 --- a/src/views/production-master-data/factory-model/factory-area/index.vue +++ b/src/views/production-master-data/factory-model/factory-area/index.vue @@ -25,11 +25,12 @@ :loading="loading" :toolbar-buttons="toolbarButtons" :row-buttons="rowButtons" - :pagination="null" + :pagination="pagination" :table-attrs="tableAttrs" help-url="/help/factory-area" :help-text="$t(ckey('help'))" auto-height + @page-change="onPageChange" @selection-change="onSelect" > @@ -82,6 +83,7 @@ export default { editId: '', handleType: 'create', search: { code: '', name: '' }, + pagination: { current: 1, size: 10, total: 0 }, tableAttrs: { defaultExpandAll: true, treeProps: { children: 'children', hasChildren: 'hasChildren' } }, formData: { code: '', name: '', parent_id: '', remark: '' }, rules: { @@ -138,11 +140,22 @@ export default { return '' }, normalizeResponse (res) { - const data = res && res.data !== undefined ? res.data : res - if (Array.isArray(data)) return { list: data, total: data.length } - if (data && Array.isArray(data.list)) return { list: data.list, total: Number(data.count || data.total || data.list.length) } - if (data && Array.isArray(data.data)) return { list: data.data, total: Number(data.count || data.total || data.data.length) } - if (data && data.data && Array.isArray(data.data.data)) return { list: data.data.data, total: Number(data.data.count || data.data.total || data.data.data.length) } + const getTotal = (source, fallback) => { + if (!source) return fallback + const total = source.count ?? source.total ?? source.total_count ?? source.record_count + const value = Number(total) + return Number.isNaN(value) ? fallback : value + } + const containers = [res, res && res.data, res && res.data && res.data.data].filter(Boolean) + for (const item of containers) { + if (Array.isArray(item)) { + return { list: item, total: getTotal(res, item.length) } + } + const list = item.data || item.list || item.rows || item.records || item.items + if (Array.isArray(list)) { + return { list, total: getTotal(item, getTotal(res, list.length)) } + } + } return { list: [], total: 0 } }, normalizeNode (row, level = 0) { @@ -185,19 +198,31 @@ export default { async fetchData () { this.loading = true try { - const res = await getFactoryAreaList({ ...this.search, page_no: 1, page_size: 10000 }) + const res = await getFactoryAreaList({ + ...this.search, + page_no: this.pagination.current, + page_size: this.pagination.size + }) const data = this.normalizeResponse(res) this.rawAreaData = data.list this.tableData = this.buildTree(data.list) + this.pagination.total = data.total } finally { this.loading = false } }, onSearch () { + this.pagination.current = 1 this.fetchData() }, onReset () { this.search = { code: '', name: '' } + this.pagination.current = 1 + this.fetchData() + }, + onPageChange (page) { + this.pagination.current = page.current + this.pagination.size = page.size this.fetchData() }, onSelect (rows) { @@ -251,6 +276,7 @@ export default { const ok = await this.confirmAction(this.key('confirm_delete'), () => deleteFactoryArea({ id: [this.getId(row)] })) if (!ok) return this.$message.success(this.$t(this.key('operation_success'))) + this.pagination.current = Math.min(this.pagination.current, Math.ceil((this.pagination.total - 1) / this.pagination.size) || 1) this.fetchData() }, async handleExport () { diff --git a/src/views/production-master-data/factory-model/production-line/index.vue b/src/views/production-master-data/factory-model/production-line/index.vue index 932d5684..5e04e05a 100644 --- a/src/views/production-master-data/factory-model/production-line/index.vue +++ b/src/views/production-master-data/factory-model/production-line/index.vue @@ -176,11 +176,22 @@ export default { }, methods: { normalizeResponse (res) { - const data = res && res.data !== undefined ? res.data : res - if (Array.isArray(data)) return { list: data, total: data.length } - if (data && Array.isArray(data.list)) return { list: data.list, total: Number(data.count || data.total || data.list.length) } - if (data && Array.isArray(data.data)) return { list: data.data, total: Number(data.count || data.total || data.data.length) } - if (data && data.data && Array.isArray(data.data.data)) return { list: data.data.data, total: Number(data.data.count || data.data.total || data.data.data.length) } + const getTotal = (source, fallback) => { + if (!source) return fallback + const total = source.count ?? source.total ?? source.total_count ?? source.record_count + const value = Number(total) + return Number.isNaN(value) ? fallback : value + } + const containers = [res, res && res.data, res && res.data && res.data.data].filter(Boolean) + for (const item of containers) { + if (Array.isArray(item)) { + return { list: item, total: getTotal(res, item.length) } + } + const list = item.data || item.list || item.rows || item.records || item.items + if (Array.isArray(list)) { + return { list, total: getTotal(item, getTotal(res, list.length)) } + } + } return { list: [], total: 0 } }, async initAreaOptions () { diff --git a/src/views/system-administration/user-management/user/index.vue b/src/views/system-administration/user-management/user/index.vue index 034097eb..91fa80d6 100644 --- a/src/views/system-administration/user-management/user/index.vue +++ b/src/views/system-administration/user-management/user/index.vue @@ -319,11 +319,22 @@ export default { } catch { /* 忽略 */ } }, normalizeResponse (res) { - const data = res && res.data !== undefined ? res.data : res - if (Array.isArray(data)) return { list: data, total: data.length } - if (data && Array.isArray(data.list)) return { list: data.list, total: Number(data.count || data.total || data.list.length) } - if (data && Array.isArray(data.data)) return { list: data.data, total: Number(data.count || data.total || data.data.length) } - if (data && data.data && Array.isArray(data.data.data)) return { list: data.data.data, total: Number(data.data.count || data.data.total || data.data.data.length) } + const getTotal = (source, fallback) => { + if (!source) return fallback + const total = source.count ?? source.total ?? source.total_count ?? source.record_count + const value = Number(total) + return Number.isNaN(value) ? fallback : value + } + const containers = [res, res && res.data, res && res.data && res.data.data].filter(Boolean) + for (const item of containers) { + if (Array.isArray(item)) { + return { list: item, total: getTotal(res, item.length) } + } + const list = item.data || item.list || item.rows || item.records || item.items + if (Array.isArray(list)) { + return { list, total: getTotal(item, getTotal(res, list.length)) } + } + } return { list: [], total: 0 } }, async fetchData () {