diff --git a/components.d.ts b/components.d.ts
index 35c8bac..ae7df7b 100644
--- a/components.d.ts
+++ b/components.d.ts
@@ -32,6 +32,7 @@ declare module 'vue' {
NDatePicker: typeof import('naive-ui')['NDatePicker']
NDialogProvider: typeof import('naive-ui')['NDialogProvider']
NDropdown: typeof import('naive-ui')['NDropdown']
+ NDynamicTags: typeof import('naive-ui')['NDynamicTags']
NForm: typeof import('naive-ui')['NForm']
NFormItem: typeof import('naive-ui')['NFormItem']
NFormItemGi: typeof import('naive-ui')['NFormItemGi']
@@ -50,6 +51,7 @@ declare module 'vue' {
NSpace: typeof import('naive-ui')['NSpace']
NSpin: typeof import('naive-ui')['NSpin']
NSwitch: typeof import('naive-ui')['NSwitch']
+ NTag: typeof import('naive-ui')['NTag']
NText: typeof import('naive-ui')['NText']
NThing: typeof import('naive-ui')['NThing']
NTooltip: typeof import('naive-ui')['NTooltip']
diff --git a/src/modules/HomeFront/components/CreateProjectForm.vue b/src/modules/HomeFront/components/CreateProjectForm.vue
index 3e6d1d5..c300d86 100644
--- a/src/modules/HomeFront/components/CreateProjectForm.vue
+++ b/src/modules/HomeFront/components/CreateProjectForm.vue
@@ -4,6 +4,7 @@
:model="projectFormModel"
label-placement="top"
label-width="auto"
+ class="max-h-600px overflow-y-auto"
>
@@ -79,18 +80,37 @@
- 选择成员
-
+
+
+
+
+ {{ memberListRoleItem.username }}
+
+
+ 添加
+
+
+
+
+
+
{{ JSON.stringify(projectFormModel, null, 2) }}
- {{ JSON.stringify(projectFormModel, null, 2) }}
@@ -114,6 +134,10 @@ import {
ProjectLevelMap
} from '@/modules/HomeFront/data'
+import {
+ userRoleMap
+} from '@/modules/MemberTeam/data'
+
import MemberAssignCard from '@/modules/MemberTeam/components/MemberAssignCard.vue'
defineOptions({
@@ -129,7 +153,13 @@ const projectFormModel = ref({
projectDesc: '',
startDate: null,
endDate: null,
- memberList: ''
+ memberList: {
+ teamMember: [],
+ teamLeader: [],
+ projectManager: [],
+ qualityManager: [],
+ reviewManager: []
+ }
})
@@ -238,8 +268,12 @@ const projectBasicMap = shallowRef([
}
])
-const handleSelectMembers = () => {
- const dd = window.$ModalDialog.create({
+const refMemberAsign = ref()
+const handleSelectMembers = (userRoleItem) => {
+ const _member = reactive(
+ projectFormModel.value.memberList[userRoleItem.value]
+ )
+ window.$ModalDialog.create({
title: '选择成员',
style: {
maxWidth: '650px',
@@ -248,22 +282,15 @@ const handleSelectMembers = () => {
maskClosable: false,
closeOnEsc: false,
content: () => h(
- MemberAssignCard
+ MemberAssignCard,
+ {
+ ref: refMemberAsign,
+ modelValue: _member
+ }
),
positiveText: '确定',
async onPositiveClick() {
- // const isValid = await instanceRef.value.validateRules()
- // if (!isValid) {
- // return Promise.reject()
- // }
-
- // dd.loading = true
- // dd.positiveText = '提交中..'
- // await sleep(1000)
-
- // dd.positiveText = _positiveText
- // dd.loading = false
- return Promise.reject()
+ projectFormModel.value.memberList[userRoleItem.value] = refMemberAsign.value.checkedRowsRef
}
})
}
diff --git a/src/modules/HomeFront/types/index.ts b/src/modules/HomeFront/types/index.ts
index 356971a..7332af1 100644
--- a/src/modules/HomeFront/types/index.ts
+++ b/src/modules/HomeFront/types/index.ts
@@ -1,3 +1,5 @@
+import type { TypesMemberTeam } from '@/modules/MemberTeam/types'
+
export type ProjectItem = {
id: string
project_code: string
@@ -9,6 +11,14 @@ export type ProjectItem = {
export namespace TypesHomeFront {
+ export interface MemberRoleListMap {
+ teamMember: Array
+ teamLeader: Array
+ projectManager: Array
+ qualityManager: Array
+ reviewManager: Array
+ }
+
export type TypeCreateProjectInfo = {
/**
* 项目名称
@@ -37,6 +47,6 @@ export namespace TypesHomeFront {
/**
* 成员映射表 Record
*/
- memberList: any
+ memberList: MemberRoleListMap
}
}
diff --git a/src/modules/MemberTeam/components/MemberAssignCard.vue b/src/modules/MemberTeam/components/MemberAssignCard.vue
index 21514fd..66f87ae 100644
--- a/src/modules/MemberTeam/components/MemberAssignCard.vue
+++ b/src/modules/MemberTeam/components/MemberAssignCard.vue
@@ -110,6 +110,30 @@ import MemberAvatar from './MemberAvatar.vue'
const memberTeamStore = useMemberTeamStore()
+const props = defineProps({
+ modelValue: {
+ type: Array as PropType>,
+ default() {
+ return []
+ }
+ }
+})
+
+/**
+ * 浅拷贝,防止原数据被修改
+ */
+const selectedMembers = props.modelValue.slice()
+
+/**
+ * 初始化已经勾选过的行状态
+ */
+const initSelectedMembers = () => {
+ nextTick(() => {
+ checkedRowKeysRef.value = selectedMembers.map((member) => member.userId)
+ checkedRowsRef.value = selectedMembers
+ })
+}
+initSelectedMembers()
/**
* 构造行唯一 ID
@@ -122,8 +146,16 @@ const getRowKey = (row: TypesMemberTeam.TypeMemberPerson) => row.userId
const checkedRowKeysRef = ref>([])
const checkedRowsRef = ref>([])
-const handleUpdateCheckedRows = (keys, rows: Array