|
@@ -39,31 +39,20 @@
|
|
|
/>
|
|
|
</a-form-item>
|
|
|
<a-form-item
|
|
|
- name="projectId"
|
|
|
- label="邀请项目"
|
|
|
- :rules="[{ required: true, message: '请选择由我创建的项目' }]"
|
|
|
+ name="nickName"
|
|
|
+ label="成员名称"
|
|
|
+ :rules="[{ required: true, message: '请输入成员名称' }]"
|
|
|
>
|
|
|
- <a-select
|
|
|
- v-model:value="editMember.projectId"
|
|
|
- placeholder="请选择由我创建的项目"
|
|
|
- >
|
|
|
- <a-select-option
|
|
|
- v-for="project in projectOptions"
|
|
|
- :key="project.projectId"
|
|
|
- :value="project.projectId"
|
|
|
- >{{ project.projectName }}</a-select-option
|
|
|
- >
|
|
|
- </a-select>
|
|
|
+ <a-input
|
|
|
+ v-model:value="editMember.nickName"
|
|
|
+ placeholder="请输入成员名称"
|
|
|
+ />
|
|
|
</a-form-item>
|
|
|
<a-form-item
|
|
|
- name="roleId"
|
|
|
label="项目角色"
|
|
|
:rules="[{ required: true, message: '请选择项目角色' }]"
|
|
|
>
|
|
|
- <a-select
|
|
|
- v-model:value="editMember.roleId"
|
|
|
- placeholder="请选择项目角色"
|
|
|
- >
|
|
|
+ <a-select v-model:value="currentRole" placeholder="请选择项目角色">
|
|
|
<a-select-option
|
|
|
v-for="role in roleOptions"
|
|
|
:key="role.roleId"
|
|
@@ -72,10 +61,10 @@
|
|
|
>
|
|
|
</a-select>
|
|
|
</a-form-item>
|
|
|
- <a-form-item name="ddUserName" label="绑定账号">
|
|
|
+ <a-form-item name="bindAccount" label="绑定账号" :rules="[phoneRule]">
|
|
|
<a-input
|
|
|
- v-model:value="editMember.ddUserName"
|
|
|
- placeholder="请输入当前用户绑定的钉钉账号"
|
|
|
+ v-model:value="editMember.bindAccount"
|
|
|
+ placeholder="请输入当前用户绑定的手机号"
|
|
|
/>
|
|
|
</a-form-item>
|
|
|
<a-form-item
|
|
@@ -96,13 +85,14 @@
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
import { ref, defineProps, toRaw, onMounted, computed } from 'vue'
|
|
|
-import { fetchProjects, fetchRoles } from '@/api'
|
|
|
+import { fetchRoleSelects } from '@/api'
|
|
|
import router from '@/router'
|
|
|
+import { phoneRule } from '@/views/system/shared'
|
|
|
|
|
|
-import type { Member, Project, Role } from '@/api'
|
|
|
+import type { Role, SetMemberProps } from '@/api'
|
|
|
import type { FormInstance } from 'ant-design-vue'
|
|
|
|
|
|
-export type EditMember = PartialPart<Member, 'teamId'>
|
|
|
+export type EditMember = PartialPart<SetMemberProps, 'projectId'>
|
|
|
|
|
|
defineOptions<{ name: 'edit-member' }>()
|
|
|
|
|
@@ -112,7 +102,7 @@ const props = defineProps<{
|
|
|
onCancel: () => void
|
|
|
}>()
|
|
|
|
|
|
-const projectOptions = ref<Pick<Project, 'projectId' | 'projectName'>[]>([])
|
|
|
+const currentRole = ref<number>()
|
|
|
const roleOptions = ref<Pick<Role, 'roleId' | 'roleName'>[]>()
|
|
|
const currentProjectId = computed(() =>
|
|
|
Number(router.currentRoute.value.params.id)
|
|
@@ -122,31 +112,32 @@ const editMember = ref<EditMember>(
|
|
|
? { ...props.member }
|
|
|
: {
|
|
|
userName: '',
|
|
|
+ nickName: '',
|
|
|
remark: '',
|
|
|
- roleId: null as unknown as number,
|
|
|
- ddUserName: '',
|
|
|
- projectId: currentProjectId.value
|
|
|
+ roles: [],
|
|
|
+ bindAccount: ''
|
|
|
}
|
|
|
)
|
|
|
+
|
|
|
+currentRole.value = editMember.value.roles[0]
|
|
|
+
|
|
|
const fromRef = ref<FormInstance>()
|
|
|
const visible = ref(true)
|
|
|
|
|
|
const saveHandler = async () => {
|
|
|
+ console.log(editMember.value)
|
|
|
await fromRef.value?.validate()
|
|
|
await props.onSave({
|
|
|
...toRaw(editMember.value),
|
|
|
remark: editMember.value.remark || '',
|
|
|
- ddUserName: editMember.value.ddUserName || ''
|
|
|
+ bindAccount: editMember.value.bindAccount || '',
|
|
|
+ roles: currentRole.value ? [currentRole.value] : []
|
|
|
})
|
|
|
visible.value = false
|
|
|
}
|
|
|
|
|
|
onMounted(async () => {
|
|
|
- const allParams = { pageNum: 1, pageSize: 100000 }
|
|
|
- projectOptions.value = (await fetchProjects(allParams)).list
|
|
|
- roleOptions.value = (
|
|
|
- await fetchRoles({ ...allParams, projectId: currentProjectId.value })
|
|
|
- ).list
|
|
|
+ roleOptions.value = await fetchRoleSelects(currentProjectId.value)
|
|
|
})
|
|
|
</script>
|
|
|
|