Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 26 additions & 26 deletions .eslintrc-auto-import.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,16 @@
"ComponentPublicInstance": true,
"ComponentPublicInstanceCostom": true,
"ComputedRef": true,
"ConfigProviderProps": true,
"DataTableColumns": true,
"DataTableRowKey": true,
"DropdownOption": true,
"EffectScope": true,
"FormInst": true,
"GlobalThemeOverrides": true,
"InjectionKey": true,
"LocationQuery": true,
"MenuOption": true,
"NavigationFailure": true,
"NavigationGuard": true,
"PropType": true,
Expand All @@ -18,6 +25,7 @@
"RouteParams": true,
"RouteRecordName": true,
"RouteRecordRaw": true,
"StoreActions": true,
"VNode": true,
"_": true,
"asyncComputed": true,
Expand Down Expand Up @@ -153,6 +161,10 @@
"useCloned": true,
"useColorMode": true,
"useConfirmDialog": true,
"useCostAnalysisStore": true,
"useCostBudgetStore": true,
"useCostCollectionStore": true,
"useCostDistributeStore": true,
"useCounter": true,
"useCssModule": true,
"useCssVar": true,
Expand Down Expand Up @@ -182,6 +194,7 @@
"useEventBus": true,
"useEventListener": true,
"useEventSource": true,
"useExampleComponentStore": true,
"useEyeDropper": true,
"useFavicon": true,
"useFetch": true,
Expand All @@ -193,6 +206,7 @@
"useFullscreen": true,
"useGamepad": true,
"useGeolocation": true,
"useHomeFrontStore": true,
"useIdle": true,
"useImage": true,
"useInfiniteScroll": true,
Expand All @@ -206,8 +220,13 @@
"useLocalStorage": true,
"useMagicKeys": true,
"useManualRefHistory": true,
"useMaterialBackupStore": true,
"useMaterialPrepareStore": true,
"useMaterialReviewStore": true,
"useMediaControls": true,
"useMediaQuery": true,
"useMemberAccessStore": true,
"useMemberTeamStore": true,
"useMemoize": true,
"useMemory": true,
"useMessage": true,
Expand All @@ -217,6 +236,7 @@
"useMousePressed": true,
"useMutationObserver": true,
"useNavigatorLanguage": true,
"useNestedLevelStore": true,
"useNetwork": true,
"useNotification": true,
"useNow": true,
Expand All @@ -237,9 +257,11 @@
"usePreferredLanguages": true,
"usePreferredReducedMotion": true,
"usePrevious": true,
"useProjectStore": true,
"useRafFn": true,
"useRefHistory": true,
"useResizeObserver": true,
"useResultStore": true,
"useRoute": true,
"useRouter": true,
"useScreenOrientation": true,
Expand Down Expand Up @@ -279,6 +301,8 @@
"useToggle": true,
"useTransition": true,
"useUrlSearchParams": true,
"useUserAccountStore": true,
"useUserAccountStoreWithOut": true,
"useUserMedia": true,
"useVModel": true,
"useVModels": true,
Expand All @@ -292,6 +316,7 @@
"useWindowFocus": true,
"useWindowScroll": true,
"useWindowSize": true,
"useWorkPlatform": true,
"uuidv4": true,
"watch": true,
"watchArray": true,
Expand All @@ -308,31 +333,6 @@
"watchThrottled": true,
"watchTriggerable": true,
"watchWithFilter": true,
"whenever": true,
"DataTableColumns": true,
"useWorkPlatform": true,
"FormInst": true,
"GlobalThemeOverrides": true,
"DropdownOption": true,
"ConfigProviderProps": true,
"MenuOption": true,
"DataTableRowKey": true,
"useCostAnalysisStore": true,
"useCostBudgetStore": true,
"useCostCollectionStore": true,
"useCostDistributeStore": true,
"useExampleComponentStore": true,
"useHomeFrontStore": true,
"useMaterialBackupStore": true,
"useMaterialPrepareStore": true,
"useMaterialReviewStore": true,
"useMemberAccessStore": true,
"useMemberTeamStore": true,
"useNestedLevelStore": true,
"useProjectStore": true,
"useResultStore": true,
"useUserAccountStore": true,
"useUserAccountStoreWithOut": true,
"StoreActions": true
"whenever": true
}
}
3 changes: 3 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ module.exports = {
'@typescript-eslint/indent': ['error', 2, { SwitchCase: 1 }],
'@typescript-eslint/explicit-module-boundary-types': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-namespace': [
'off'
],
'@typescript-eslint/member-delimiter-style': [
'error',
{
Expand Down
1 change: 0 additions & 1 deletion components.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ declare module 'vue' {
export interface GlobalComponents {
404: typeof import('./src/components/404.vue')['default']
Avatar: typeof import('./src/components/Navigation/Avatar.vue')['default']
AvatarUpload: typeof import('./src/components/AvatarUpload/index.vue')['default']
ChangeTheme: typeof import('./src/components/Navigation/ChangeTheme.vue')['default']
Footer: typeof import('./src/components/Footer/index.vue')['default']
FullScreen: typeof import('./src/components/Navigation/FullScreen.vue')['default']
Expand Down
18 changes: 2 additions & 16 deletions src/modules/MemberTeam/data/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import {
} from '@vicons/fluent'

import memberAvatar from '@/assets/images/member-avatar.png'
import type { TypesMemberTeam } from '@/modules/MemberTeam/types'

// 随机获取数组中某一项
function getRandomValueFromArray<T>(arr: Array<T>): T {
Expand Down Expand Up @@ -105,21 +106,6 @@ export const findUserStatusMapByRankName = (targetStatus) => {
}



export interface TypeMemberPerson {
username: string
roleId: string
userId: string
avatar: string
email: string
phone: string
rank: string
/**
* 1活跃, 0停用
*/
memberStatus: number | null | undefined
}

/**
* 构造一份成员列表的假数据
*/
Expand All @@ -138,7 +124,7 @@ export const memberTeamList = Array.from({ length: 100 }).map((_, index) => {
avatar: memberAvatar,
email: `${userId}@admin.com`,
memberStatus: Math.random() > 0.5 ? 0 : 1
} as TypeMemberPerson
} as TypesMemberTeam.TypeMemberPerson
})


Expand Down
17 changes: 9 additions & 8 deletions src/modules/MemberTeam/pages/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ import {
findUserRoleMapByRankName,
findUserStatusMapByRankName
} from '@/modules/MemberTeam/data'
import type { TypeMemberPerson } from '@/modules/MemberTeam/data'
import type { TypesMemberTeam } from '@/modules/MemberTeam/types'

import {
MoreVertical20Regular as IconMoreVertical20Regular,
NotepadPerson24Regular as IconNotepadPerson24Regular,
Expand All @@ -66,16 +67,16 @@ const router = useTabRouter()
/**
* 构造行唯一 ID
*/
const getRowKey = (row: TypeMemberPerson) => row.userId
const getRowKey = (row: TypesMemberTeam.TypeMemberPerson) => row.userId

/**
* 选中行
*/
const checkedRowKeysRef = ref<Array<DataTableRowKey>>([])
const checkedRowsRef = ref<Array<TypeMemberPerson>>([])
const checkedRowsRef = ref<Array<TypesMemberTeam.TypeMemberPerson>>([])

const handleUpdateCheckedRows = (keys, rows: Array<object>) => {
checkedRowsRef.value = rows as Array<TypeMemberPerson>
checkedRowsRef.value = rows as Array<TypesMemberTeam.TypeMemberPerson>
}


Expand Down Expand Up @@ -131,7 +132,7 @@ const renderIcon = (icon: Component, className = '') => {
}


const goToMemberTeamPreview = (row: TypeMemberPerson) => {
const goToMemberTeamPreview = (row: TypesMemberTeam.TypeMemberPerson) => {
router.push({
name: 'MemberTeamPreview',
params: {
Expand All @@ -140,7 +141,7 @@ const goToMemberTeamPreview = (row: TypeMemberPerson) => {
}, `成员查看-${row.username}`)
}

const createActionsColumns = (row: TypeMemberPerson) => {
const createActionsColumns = (row: TypesMemberTeam.TypeMemberPerson) => {
return h(
NDropdown,
{
Expand Down Expand Up @@ -209,7 +210,7 @@ const createActionsColumns = (row: TypeMemberPerson) => {
)
}

const columns: DataTableColumns<TypeMemberPerson> = [
const columns: DataTableColumns<TypesMemberTeam.TypeMemberPerson> = [
{
type: 'selection',
fixed: 'left'
Expand Down Expand Up @@ -337,7 +338,7 @@ const columns: DataTableColumns<TypeMemberPerson> = [
}
]

const tableData = ref<Array<TypeMemberPerson>>([])
const tableData = ref<Array<TypesMemberTeam.TypeMemberPerson>>([])

tableData.value = memberTeamList

Expand Down
24 changes: 19 additions & 5 deletions src/modules/MemberTeam/pages/preview.vue
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,26 @@
</template>

<script lang="ts" setup>
import AvatarUpload from '@/modules/MemberTeam/components/AvatarUpload.vue'
import { NRadioGroup, NRadio, NSelect, NButton } from 'naive-ui'
import { sleep } from '@/utils/request'

import type { TypeMemberPerson } from '../data'
import { userRoleMap, userRankMap, findMemberInfoById, userStatusMap } from '../data'
import {
NRadioGroup,
NRadio,
NSelect,
NButton
} from 'naive-ui'

import AvatarUpload from '@/modules/MemberTeam/components/AvatarUpload.vue'

import {
userRoleMap,
userRankMap,
findMemberInfoById,
userStatusMap
} from '@/modules/MemberTeam/data'
import type { TypesMemberTeam } from '@/modules/MemberTeam/types'



/**
* MemberTeamPreview 成员管理-成员信息查看
Expand All @@ -95,7 +109,7 @@ const router = useRouter()
const disabledForm = ref(true)


const memberFormModel = ref<TypeMemberPerson>({
const memberFormModel = ref<TypesMemberTeam.TypeMemberPerson>({
username: '',
roleId: '',
userId: '',
Expand Down
96 changes: 96 additions & 0 deletions src/modules/MemberTeam/types/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
/**
* 方法一
*/

// 定义:
/**
* 团队成员
*/
export namespace TypesMemberTeam {
/**
* 团队成员-个人信息
*/
export interface TypeMemberPerson {
username: string
roleId: string
userId: string
avatar: string
email: string
phone: string
rank: string
/**
* 1活跃, 0停用
*/
memberStatus: number | null | undefined
}
}


// 使用时:

/**
import type { TypesMemberTeam } from '@/modules/MemberTeam/types'

const a: TypesMemberTeam.TypeMemberPerson = {
username: '',
roleId: '',
userId: '',
avatar: '',
email: '',
phone: '',
rank: '',
memberStatus: undefined
}
console.log(a)
*/



/** ------------------------- 分割线 ------------------------- */


/**
* 方法二 (不太推荐,会导致循环引用)
*/
// 需要 auto-import 定义:dirs: ['./src/modules/**/types']

// /**
// * 团队成员-个人信息
// */
// export interface TypeMemberPerson {
// username: string
// roleId: string
// userId: string
// avatar: string
// email: string
// phone: string
// rank: string
// /**
// * 1活跃, 0停用
// */
// memberStatus: number | null | undefined
// }

// /**
// * 团队成员
// */
// export * as TypesMemberTeam from '.'
// export as namespace TypesMemberTeam

// 使用时:

/**
* 无需引入即可使用

const a: TypesMemberTeam.TypeMemberPerson = {
username: '',
roleId: '',
userId: '',
avatar: '',
email: '',
phone: '',
rank: '',
memberStatus: undefined
}
console.log(a)
*/