refactor(dict): 优化字典管理页面的状态显示和删除逻辑
- 将状态显示逻辑从组件配置移至模板中,提高代码可读性 - 重构删除逻辑,使用 `removeRow` 替代 `removeId` 和 `dict`,简化代码结构 - 更新国际化文件,添加“状态”字段的翻译
This commit is contained in:
parent
721731500a
commit
c975adb431
@ -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<SelectOption[]>([]);
|
||||
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<any>(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,
|
||||
|
||||
@ -90,8 +90,20 @@
|
||||
:tree-node="col.treeNode"
|
||||
:width="col.width"
|
||||
>
|
||||
<template #default="{ row }" v-if="col.slots && col.slots.default">
|
||||
<component :is="col.slots.default({ row })"></component>
|
||||
<template #default="{ row }" v-if="col.field === 'status'">
|
||||
{{ statusDicts.find(s => s.number === String(row.status))?.name || (row.status === 1 ? '生效' : '失效') }}
|
||||
</template>
|
||||
<template #default="{ row }" v-else-if="col.title === $t('entity.action.actions')">
|
||||
<div class="btn-group">
|
||||
<router-link :to="{ name: 'DictEdit', params: { id: row.id } }" class="btn btn-primary btn-sm">
|
||||
<font-awesome-icon icon="pencil-alt" />
|
||||
<span class="d-none d-md-inline">{{ $t('entity.action.edit') }}</span>
|
||||
</router-link>
|
||||
<button @click="prepareDelete(row)" class="btn btn-danger btn-sm" data-cy="entityDeleteButton">
|
||||
<font-awesome-icon icon="times" />
|
||||
<span class="d-none d-md-inline">{{ $t('entity.action.delete') }}</span>
|
||||
</button>
|
||||
</div>
|
||||
</template>
|
||||
</vxe-column>
|
||||
</vxe-table>
|
||||
@ -132,7 +144,7 @@
|
||||
<!-- 删除确认对话框 -->
|
||||
<b-modal ref="deleteDialog" id="deleteDialog" :title="$t('entity.delete.title')" @ok="deleteDict">
|
||||
<div class="modal-body">
|
||||
<p id="jhi-delete-dict-heading" v-text="$t('jewpmsApp.dict.delete.question', { param: dict.name })"></p>
|
||||
<p id="jhi-delete-dict-heading" v-text="$t('jewpmsApp.dict.delete.question', { param: removeRow.name })"></p>
|
||||
</div>
|
||||
</b-modal>
|
||||
</div>
|
||||
|
||||
@ -18,6 +18,7 @@
|
||||
"email": "电子邮箱",
|
||||
"website": "公司网站",
|
||||
"remark": "备注",
|
||||
"status": "状态",
|
||||
"actions": "操作"
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user