From 665cce72733f134e3aa97d9886afa2f0aa0061ff Mon Sep 17 00:00:00 2001 From: log1997 <2694233102@qq.com> Date: Mon, 15 Dec 2025 17:06:01 +0800 Subject: [PATCH] =?UTF-8?q?refactor(personalready):=20=E2=99=BB=EF=B8=8F?= =?UTF-8?q?=20=E5=B7=B2=E4=B8=AD=E5=A5=96=E7=9A=84=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E9=87=8D=E6=9E=84=20#96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/index.ts | 4 +- src/views/Config/Person/PersonAlready.vue | 153 ------------------ .../Config/Person/PersonAlready/columns.ts | 58 +++++++ .../Config/Person/PersonAlready/index.vue | 43 +++++ .../Person/PersonAlready/useViewModel.ts | 26 +++ .../Person/{PersonConfig.vue => index.vue} | 0 src/views/Demo/index.vue | 12 ++ 7 files changed, 141 insertions(+), 155 deletions(-) delete mode 100644 src/views/Config/Person/PersonAlready.vue create mode 100644 src/views/Config/Person/PersonAlready/columns.ts create mode 100644 src/views/Config/Person/PersonAlready/index.vue create mode 100644 src/views/Config/Person/PersonAlready/useViewModel.ts rename src/views/Config/Person/{PersonConfig.vue => index.vue} (100%) diff --git a/src/router/index.ts b/src/router/index.ts index bf514fb..2fbf9b1 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -15,7 +15,7 @@ export const configRoutes = { { path: '/log-lottery/config/person', name: 'PersonConfig', - component: () => import('@/views/Config/Person/PersonConfig.vue'), + component: () => import('@/views/Config/Person/index.vue'), meta: { title: i18n.global.t('sidebar.personConfiguration'), icon: 'person', @@ -37,7 +37,7 @@ export const configRoutes = { { path: '/log-lottery/config/person/already', name: 'AlreadyPerson', - component: () => import('@/views/Config/Person/PersonAlready.vue'), + component: () => import('@/views/Config/Person/PersonAlready/index.vue'), meta: { title: i18n.global.t('sidebar.winnerList'), icon: 'already', diff --git a/src/views/Config/Person/PersonAlready.vue b/src/views/Config/Person/PersonAlready.vue deleted file mode 100644 index 117bc9f..0000000 --- a/src/views/Config/Person/PersonAlready.vue +++ /dev/null @@ -1,153 +0,0 @@ - - - - - diff --git a/src/views/Config/Person/PersonAlready/columns.ts b/src/views/Config/Person/PersonAlready/columns.ts new file mode 100644 index 0000000..9999e7a --- /dev/null +++ b/src/views/Config/Person/PersonAlready/columns.ts @@ -0,0 +1,58 @@ +import type { IPersonConfig } from '@/types/storeType' +import i18n from '@/locales/i18n' + +interface IColumnsProps { + showPrizeTime?: boolean + handleDeletePerson: (row: IPersonConfig) => void +} + +export function tableColumns(props: IColumnsProps) { + return [ + { + label: i18n.global.t('data.number'), + props: 'uid', + sort: true, + }, + { + label: i18n.global.t('data.name'), + props: 'name', + }, + { + label: i18n.global.t('data.avatar'), + props: 'avatar', + formatValue(row: any) { + return row.avatar ? `avatar` : '-' + }, + }, + { + label: i18n.global.t('data.department'), + props: 'department', + }, + { + label: i18n.global.t('data.identity'), + props: 'identity', + }, + { + label: i18n.global.t('data.prizeName'), + props: 'prizeName', + sort: true, + }, + props.showPrizeTime && { + label: i18n.global.t('data.prizeTime'), + props: 'prizeTime', + + }, + { + label: i18n.global.t('data.operation'), + actions: [ + { + label: i18n.global.t('data.removePerson'), + type: 'btn-info', + onClick: (row: IPersonConfig) => { + props.handleDeletePerson(row) + }, + }, + ], + }, + ] +} diff --git a/src/views/Config/Person/PersonAlready/index.vue b/src/views/Config/Person/PersonAlready/index.vue new file mode 100644 index 0000000..7d6fd07 --- /dev/null +++ b/src/views/Config/Person/PersonAlready/index.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/src/views/Config/Person/PersonAlready/useViewModel.ts b/src/views/Config/Person/PersonAlready/useViewModel.ts new file mode 100644 index 0000000..3b3f80b --- /dev/null +++ b/src/views/Config/Person/PersonAlready/useViewModel.ts @@ -0,0 +1,26 @@ +import type { IPersonConfig } from '@/types/storeType' +import { storeToRefs } from 'pinia' +import { ref } from 'vue' +import useStore from '@/store' +import { tableColumns } from './columns' + +export function useViewModel() { + const personConfig = useStore().personConfig + + const { getAlreadyPersonList: alreadyPersonList, getAlreadyPersonDetail: alreadyPersonDetail } = storeToRefs(personConfig) + + const isDetail = ref(false) + function handleMoveNotPerson(row: IPersonConfig) { + personConfig.moveAlreadyToNot(row) + } + + const tableColumnsList = tableColumns({ showPrizeTime: false, handleDeletePerson: handleMoveNotPerson }) + const tableColumnsDetail = tableColumns({ showPrizeTime: true, handleDeletePerson: handleMoveNotPerson }) + return { + alreadyPersonList, + alreadyPersonDetail, + isDetail, + tableColumnsList, + tableColumnsDetail, + } +} diff --git a/src/views/Config/Person/PersonConfig.vue b/src/views/Config/Person/index.vue similarity index 100% rename from src/views/Config/Person/PersonConfig.vue rename to src/views/Config/Person/index.vue diff --git a/src/views/Demo/index.vue b/src/views/Demo/index.vue index 38cf49c..2b00ec4 100644 --- a/src/views/Demo/index.vue +++ b/src/views/Demo/index.vue @@ -1,8 +1,20 @@