feat(sj_1.0.0): 优化组关闭

This commit is contained in:
opensnail 2024-04-29 09:06:51 +08:00
parent 499addd805
commit 00ed549761
3 changed files with 18 additions and 28 deletions

View File

@ -68,9 +68,8 @@ export function translateOptions2(options: string[]) {
* tag Color * tag Color
* *
* @param index * @param index
* @param total
*/ */
export function tagColor(index: number, total: number = 5) { export function tagColor(index: number) {
const tagMap: Record<number, NaiveUI.ThemeColor> = { const tagMap: Record<number, NaiveUI.ThemeColor> = {
0: 'error', 0: 'error',
1: 'info', 1: 'info',
@ -79,5 +78,5 @@ export function tagColor(index: number, total: number = 5) {
4: 'default' 4: 'default'
}; };
return tagMap[index % total]; return tagMap[index % 5];
} }

View File

@ -1,5 +1,5 @@
<script setup lang="tsx"> <script setup lang="tsx">
import { NButton, NSwitch, NTag } from 'naive-ui'; import { NButton, NTag } from 'naive-ui';
import { ref } from 'vue'; import { ref } from 'vue';
import { fetchGetGroupConfigList, fetchUpdateGroupStatus } from '@/service/api'; import { fetchGetGroupConfigList, fetchUpdateGroupStatus } from '@/service/api';
import { $t } from '@/locales'; import { $t } from '@/locales';
@ -7,6 +7,7 @@ import { useAppStore } from '@/store/modules/app';
import { useTable, useTableOperate } from '@/hooks/common/table'; import { useTable, useTableOperate } from '@/hooks/common/table';
import { groupConfigIdModeRecord, yesOrNoRecord } from '@/constants/business'; import { groupConfigIdModeRecord, yesOrNoRecord } from '@/constants/business';
import { tagColor } from '@/utils/common'; import { tagColor } from '@/utils/common';
import StatusSwitch from '@/components/common/status-switch.vue';
import GroupOperateDrawer from './modules/group-operate-drawer.vue'; import GroupOperateDrawer from './modules/group-operate-drawer.vue';
import GroupDetailDrawer from './modules/group-detail-drawer.vue'; import GroupDetailDrawer from './modules/group-detail-drawer.vue';
import GroupSearch from './modules/group-search.vue'; import GroupSearch from './modules/group-search.vue';
@ -14,7 +15,6 @@ import GroupSearch from './modules/group-search.vue';
const appStore = useAppStore(); const appStore = useAppStore();
/** 组状态 Switch 的 loading 状态 */ /** 组状态 Switch 的 loading 状态 */
const statusSwithLoading = ref(false);
const detailData = ref(); const detailData = ref();
const detailVisible = defineModel<boolean>('detailVisible', { const detailVisible = defineModel<boolean>('detailVisible', {
default: false default: false
@ -58,15 +58,16 @@ const { columns, columnChecks, data, getData, loading, mobilePagination, searchP
align: 'center', align: 'center',
width: 80, width: 80,
render: row => { render: row => {
return ( const fetchFn = async (groupStatus: Api.Common.EnableStatusNumber, callback: () => void) => {
<NSwitch const { error } = await fetchUpdateGroupStatus({ groupName: row.groupName, groupStatus: row.groupStatus });
v-model:value={row.groupStatus} if (!error) {
v-model:loading={statusSwithLoading.value} row.groupStatus = groupStatus;
checkedValue={1} window.$message?.success($t('common.updateSuccess'));
uncheckedValue={0} }
onUpdateValue={() => handleUpdateValue(row)} callback();
></NSwitch> };
);
return <StatusSwitch v-model:value={row.groupStatus} onFetch={fetchFn} />;
} }
}, },
{ {
@ -108,7 +109,7 @@ const { columns, columnChecks, data, getData, loading, mobilePagination, searchP
const label = $t(yesOrNoRecord[row.initScene!]); const label = $t(yesOrNoRecord[row.initScene!]);
return <NTag type={tagColor(row.initScene!, 2)}>{label}</NTag>; return <NTag type={tagColor(row.initScene!)}>{label}</NTag>;
} }
}, },
{ {
@ -152,16 +153,6 @@ const {
function edit(id: string) { function edit(id: string) {
handleEdit(id); handleEdit(id);
} }
async function handleUpdateValue(group: Api.GroupConfig.GroupConfig) {
statusSwithLoading.value = true;
try {
await fetchUpdateGroupStatus({ groupName: group.groupName, groupStatus: group.groupStatus });
} finally {
await getData();
statusSwithLoading.value = false;
}
}
</script> </script>
<template> <template>

View File

@ -35,7 +35,7 @@ watch(
</NDescriptions> </NDescriptions>
<NDescriptions label-placement="top" bordered :column="6"> <NDescriptions label-placement="top" bordered :column="6">
<NDescriptionsItem :label="$t('page.groupConfig.groupStatus')"> <NDescriptionsItem :label="$t('page.groupConfig.groupStatus')">
<NTag :type="tagColor(rowData?.groupStatus!, 2)">{{ $t(groupConfigStatusRecord[rowData?.groupStatus!]) }}</NTag> <NTag :type="tagColor(rowData?.groupStatus!)">{{ $t(groupConfigStatusRecord[rowData?.groupStatus!]) }}</NTag>
</NDescriptionsItem> </NDescriptionsItem>
</NDescriptions> </NDescriptions>
<NDescriptions label-placement="top" bordered :column="6"> <NDescriptions label-placement="top" bordered :column="6">
@ -43,7 +43,7 @@ watch(
</NDescriptions> </NDescriptions>
<NDescriptions label-placement="top" bordered :column="6"> <NDescriptions label-placement="top" bordered :column="6">
<NDescriptionsItem :label="$t('page.groupConfig.idGeneratorMode')"> <NDescriptionsItem :label="$t('page.groupConfig.idGeneratorMode')">
<NTag :type="tagColor(rowData?.idGeneratorMode!, 2)"> <NTag :type="tagColor(rowData?.idGeneratorMode!)">
{{ $t(groupConfigIdModeRecord[rowData?.idGeneratorMode!]) }} {{ $t(groupConfigIdModeRecord[rowData?.idGeneratorMode!]) }}
</NTag> </NTag>
</NDescriptionsItem> </NDescriptionsItem>
@ -55,7 +55,7 @@ watch(
</NDescriptions> </NDescriptions>
<NDescriptions label-placement="top" bordered :column="6"> <NDescriptions label-placement="top" bordered :column="6">
<NDescriptionsItem :label="$t('page.groupConfig.initScene')"> <NDescriptionsItem :label="$t('page.groupConfig.initScene')">
<NTag :type="tagColor(rowData?.initScene!, 2)">{{ $t(yesOrNoRecord[rowData?.initScene!]) }}</NTag> <NTag :type="tagColor(rowData?.initScene!)">{{ $t(yesOrNoRecord[rowData?.initScene!]) }}</NTag>
</NDescriptionsItem> </NDescriptionsItem>
</NDescriptions> </NDescriptions>
<NDescriptions label-placement="top" bordered :column="6"> <NDescriptions label-placement="top" bordered :column="6">