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 @@ - - - - - - - - - {{ t('table.luckyPeopleNumber') }}: - {{ alreadyPersonList.length }} - - - - - - {{ t('table.detail') }}: - - - - - - - - - - - - - - - - - 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 ? `` : '-' + }, + }, + { + 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 @@ + + + + + + + + + {{ t('table.luckyPeopleNumber') }}: + {{ alreadyPersonList.length }} + + + + + + {{ t('table.detail') }}: + + + + + + + + + + + + + + + + + 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 @@ + + + Login options + + + + Remember me + +
{{ t('table.detail') }}: