|
@@ -39,6 +39,46 @@
|
|
/>
|
|
/>
|
|
</a-form-item>
|
|
</a-form-item>
|
|
<a-form-item
|
|
<a-form-item
|
|
|
|
+ name="projectId"
|
|
|
|
+ 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-form-item>
|
|
|
|
+ <a-form-item
|
|
|
|
+ name="roleId"
|
|
|
|
+ label="项目角色"
|
|
|
|
+ :rules="[{ required: true, message: '请选择项目角色' }]"
|
|
|
|
+ >
|
|
|
|
+ <a-select
|
|
|
|
+ v-model:value="editMember.roleId"
|
|
|
|
+ placeholder="请选择项目角色"
|
|
|
|
+ >
|
|
|
|
+ <a-select-option
|
|
|
|
+ v-for="role in roleOptions"
|
|
|
|
+ :key="role.roleId"
|
|
|
|
+ :value="role.roleId"
|
|
|
|
+ >{{ role.roleName }}</a-select-option
|
|
|
|
+ >
|
|
|
|
+ </a-select>
|
|
|
|
+ </a-form-item>
|
|
|
|
+ <a-form-item name="ddUserName" label="绑定账号">
|
|
|
|
+ <a-input
|
|
|
|
+ v-model:value="editMember.ddUserName"
|
|
|
|
+ placeholder="请输入当前用户绑定的钉钉账号"
|
|
|
|
+ />
|
|
|
|
+ </a-form-item>
|
|
|
|
+ <a-form-item
|
|
name="remark"
|
|
name="remark"
|
|
label="备注"
|
|
label="备注"
|
|
:rules="[{ required: false, max: 50, message: '备注最多50字' }]"
|
|
:rules="[{ required: false, max: 50, message: '备注最多50字' }]"
|
|
@@ -49,16 +89,17 @@
|
|
style="height: 104px; resize: none"
|
|
style="height: 104px; resize: none"
|
|
placeholder="请输入备注,最多50字"
|
|
placeholder="请输入备注,最多50字"
|
|
/>
|
|
/>
|
|
- <!-- <a-input v-model:value="editMember.remark" placeholder="请输入备注" /> -->
|
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
</a-form>
|
|
</a-form>
|
|
</a-modal>
|
|
</a-modal>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script lang="ts" setup>
|
|
<script lang="ts" setup>
|
|
-import { ref, defineProps, toRaw } from 'vue'
|
|
|
|
|
|
+import { ref, defineProps, toRaw, onMounted, computed } from 'vue'
|
|
|
|
+import { fetchProjects, fetchRoles } from '@/api'
|
|
|
|
+import router from '@/router'
|
|
|
|
|
|
-import type { Member } from '@/api'
|
|
|
|
|
|
+import type { Member, Project, Role } from '@/api'
|
|
import type { FormInstance } from 'ant-design-vue'
|
|
import type { FormInstance } from 'ant-design-vue'
|
|
|
|
|
|
export type EditMember = PartialPart<Member, 'teamId'>
|
|
export type EditMember = PartialPart<Member, 'teamId'>
|
|
@@ -71,8 +112,21 @@ const props = defineProps<{
|
|
onCancel: () => void
|
|
onCancel: () => void
|
|
}>()
|
|
}>()
|
|
|
|
|
|
|
|
+const projectOptions = ref<Pick<Project, 'projectId' | 'projectName'>[]>([])
|
|
|
|
+const roleOptions = ref<Pick<Role, 'roleId' | 'roleName'>[]>()
|
|
|
|
+const currentProjectId = computed(() =>
|
|
|
|
+ Number(router.currentRoute.value.params.id)
|
|
|
|
+)
|
|
const editMember = ref<EditMember>(
|
|
const editMember = ref<EditMember>(
|
|
- props.member ? { ...props.member } : { userName: '', remark: '' }
|
|
|
|
|
|
+ props.member
|
|
|
|
+ ? { ...props.member }
|
|
|
|
+ : {
|
|
|
|
+ userName: '',
|
|
|
|
+ remark: '',
|
|
|
|
+ roleId: null as unknown as number,
|
|
|
|
+ ddUserName: '',
|
|
|
|
+ projectId: currentProjectId.value
|
|
|
|
+ }
|
|
)
|
|
)
|
|
const fromRef = ref<FormInstance>()
|
|
const fromRef = ref<FormInstance>()
|
|
const visible = ref(true)
|
|
const visible = ref(true)
|
|
@@ -81,10 +135,19 @@ const saveHandler = async () => {
|
|
await fromRef.value?.validate()
|
|
await fromRef.value?.validate()
|
|
await props.onSave({
|
|
await props.onSave({
|
|
...toRaw(editMember.value),
|
|
...toRaw(editMember.value),
|
|
- remark: editMember.value.remark || ''
|
|
|
|
|
|
+ remark: editMember.value.remark || '',
|
|
|
|
+ ddUserName: editMember.value.ddUserName || ''
|
|
})
|
|
})
|
|
visible.value = false
|
|
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
|
|
|
|
+})
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|