From c975adb4314a3bbfeffb2961165d9de854253076 Mon Sep 17 00:00:00 2001 From: user Date: Fri, 21 Mar 2025 22:13:47 +0800 Subject: [PATCH] =?UTF-8?q?refactor(dict):=20=E4=BC=98=E5=8C=96=E5=AD=97?= =?UTF-8?q?=E5=85=B8=E7=AE=A1=E7=90=86=E9=A1=B5=E9=9D=A2=E7=9A=84=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=98=BE=E7=A4=BA=E5=92=8C=E5=88=A0=E9=99=A4=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将状态显示逻辑从组件配置移至模板中,提高代码可读性 - 重构删除逻辑,使用 `removeRow` 替代 `removeId` 和 `dict`,简化代码结构 - 更新国际化文件,添加“状态”字段的翻译 --- .../app/entities/dict/dict.component.ts | 89 +++++-------------- src/main/webapp/app/entities/dict/dict.vue | 18 +++- src/main/webapp/i18n/zh-cn/company.json | 1 + 3 files changed, 39 insertions(+), 69 deletions(-) diff --git a/src/main/webapp/app/entities/dict/dict.component.ts b/src/main/webapp/app/entities/dict/dict.component.ts index 4a6684a..100e3f8 100644 --- a/src/main/webapp/app/entities/dict/dict.component.ts +++ b/src/main/webapp/app/entities/dict/dict.component.ts @@ -6,7 +6,6 @@ import buildPaginationQuery from '@/shared/sort/sorts'; import VueSelect from '@/shared/components/vue-select.vue'; import type { SelectOption } from '@/shared/components/vue-select.vue'; import JhiSortIndicator from '@/shared/sort/jhi-sort-indicator.vue'; -import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'; export default defineComponent({ compatConfig: { MODE: 3 }, @@ -44,19 +43,7 @@ export default defineComponent({ // 父级字典选项 const numberOptions = ref([]); const isLoadingNumberOptions = ref(false); - - const dict = ref({ - id: null, - number: '', - parentNumber: '', - name: '', - property: '', - remark: '', - status: '1', - sortNo: 0, - version: 0, - }); - const removeId = ref(null); + const removeRow = ref(null); const deleteDialog = ref(null); // 分页相关变量 @@ -82,6 +69,11 @@ export default defineComponent({ field: 'name', sortable: true, }, + { + title: t$('jewpmsApp.dict.parentNumber'), + field: 'parentNumber', + visible: false, + }, { title: t$('jewpmsApp.dict.property'), field: 'property', @@ -91,12 +83,6 @@ export default defineComponent({ title: t$('jewpmsApp.dict.status'), field: 'status', sortable: true, - slots: { - default: ({ row }) => { - const statusDict = statusDicts.value.find(s => s.number === String(row.status)); - return statusDict?.name || (row.status === 1 ? '生效' : '失效'); - }, - }, }, { title: t$('jewpmsApp.dict.remark'), @@ -110,31 +96,6 @@ export default defineComponent({ { title: t$('entity.action.actions'), width: 160, - slots: { - default: ({ row }) => { - return [ - h('div', { class: 'btn-group' }, [ - h( - 'router-link', - { - to: { name: 'DictEdit', params: { id: row.id } }, - class: 'btn btn-primary btn-sm', - }, - [h(FontAwesomeIcon, { icon: 'pencil-alt' }), h('span', { class: 'd-none d-md-inline' }, t$('entity.action.edit'))], - ), - h( - 'button', - { - class: 'btn btn-danger btn-sm', - onClick: () => prepareDelete(row), - 'data-cy': 'entityDeleteButton', - }, - [h(FontAwesomeIcon, { icon: 'times' }), h('span', { class: 'd-none d-md-inline' }, t$('entity.action.delete'))], - ), - ]), - ]; - }, - }, }, ]; @@ -204,15 +165,17 @@ export default defineComponent({ try { const params = Object.fromEntries([ // 基础参数 - ...Object.keys(dict.value).flatMap(key => [ - [`${key}[name]`, ''], - ...(key === 'parentNumber' - ? [ - [`${key}[op]`, 'IFNULL'], - [`${key}[value]`, ''], - ] - : []), - ]), + ...columns + .filter(col => col.field !== undefined) + .flatMap(col => [ + [`${col.field}[name]`, ''], + ...(col.field === 'parentNumber' + ? [ + [`${col.field}[op]`, 'IFNULL'], + [`${col.field}[value]`, ''], + ] + : []), + ]), // 过滤参数 ...(showFilter.value ? Object.entries(filterParams.value) @@ -262,22 +225,17 @@ export default defineComponent({ }; const prepareDelete = (row: any) => { - removeId.value = row.id; - dict.value = { ...row }; - if (deleteDialog.value) { - deleteDialog.value.show(); - } + removeRow.value = { ...row }; + if (deleteDialog.value) deleteDialog.value.show(); }; const deleteDict = async () => { try { - await axios.delete(`api/dicts/${removeId.value}`); + await axios.delete(`api/dicts/${removeRow.value.id}`); alertService.showInfo(t$('jewpmsApp.dict.deleted')); - removeId.value = null; + removeRow.value.id = null; handleSyncList(); - if (deleteDialog.value) { - deleteDialog.value.hide(); - } + if (deleteDialog.value) deleteDialog.value.hide(); } catch (e) { alertService.showHttpError(e); } @@ -288,8 +246,7 @@ export default defineComponent({ return { isFetching, dicts, - dict, - removeId, + removeRow, deleteDialog, columns, page, diff --git a/src/main/webapp/app/entities/dict/dict.vue b/src/main/webapp/app/entities/dict/dict.vue index ba762f0..9208cf7 100644 --- a/src/main/webapp/app/entities/dict/dict.vue +++ b/src/main/webapp/app/entities/dict/dict.vue @@ -90,8 +90,20 @@ :tree-node="col.treeNode" :width="col.width" > -