履约验收

This commit is contained in:
吴红兵
2026-02-24 18:16:00 +08:00
parent d34d8d7e54
commit cdbd7147e9
3 changed files with 115 additions and 22 deletions

View File

@@ -74,13 +74,53 @@
</el-col>
</template>
<el-col :span="12" class="mb20">
<el-form-item label="验收地点" prop="acceptAddress">
<el-input v-model="form.acceptAddress" placeholder="请输入验收地点" :disabled="readonly" />
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-form-item label="存在问题及改进意见" prop="question">
<el-input
v-model="form.question"
type="textarea"
:rows="2"
placeholder="请输入存在问题及改进意见"
:disabled="readonly"
/>
</el-form-item>
</el-col>
<!-- 验收小组 -->
<el-col :span="12">
<el-form-item label="验收小组" prop="acceptTeam">
<div class="team-list">
<div v-for="(m, idx) in form.acceptTeam" :key="idx" class="team-row">
<el-input v-model="m.name" placeholder="姓名" size="small" style="width:120px" :disabled="readonly" />
<el-input v-model="m.deptName" placeholder="部门" size="small" style="width:160px" :disabled="readonly" />
<el-select
v-model="m.roleType"
placeholder="身份"
size="small"
style="width: 130px; margin-right: 8px"
:disabled="readonly"
@change="(val) => onRoleChange(idx, val as string)"
>
<el-option label="组长(校内)" value="LEADER_IN" />
<el-option label="组长(校外)" value="LEADER_OUT" />
<el-option label="组员(校内)" value="MEMBER_IN" />
<el-option label="组员(校外)" value="MEMBER_OUT" />
</el-select>
<template v-if="m.roleType === 'LEADER_IN' || m.roleType === 'MEMBER_IN'">
<org-selector
v-model:orgList="m.userList"
type="user"
:multiple="false"
@update:orgList="(list: any[]) => onTeamUserChange(idx, list)"
/>
</template>
<template v-else>
<el-input v-model="m.name" placeholder="姓名" size="small" style="width:120px" :disabled="readonly" />
<el-input v-model="m.deptName" placeholder="单位/部门" size="small" style="width:160px" :disabled="readonly" />
</template>
<el-button v-if="!readonly && form.acceptTeam.length > 3" type="danger" link size="small" @click="removeTeam(idx)">删除</el-button>
</div>
<el-button v-if="!readonly" type="primary" link size="small" @click="addTeam">+ 增加成员</el-button>
@@ -149,11 +189,13 @@ const form = reactive({
acceptDate: '',
acceptContents: [] as any[],
acceptTeam: [
{ name: '', deptCode: '', deptName: '' },
{ name: '', deptCode: '', deptName: '' },
{ name: '', deptCode: '', deptName: '' },
{ name: '', deptCode: '', deptName: '', roleType: '' },
{ name: '', deptCode: '', deptName: '', roleType: '' },
{ name: '', deptCode: '', deptName: '', roleType: '' },
] as any[],
templateFileIds: [] as string[],
acceptAddress: '',
question: '',
remark: '',
...props.modelValue,
})
@@ -197,7 +239,7 @@ watch(() => form.templateFileIds, (arr) => {
}, { immediate: true, deep: true })
const addTeam = () => {
form.acceptTeam.push({ name: '', deptCode: '', deptName: '' })
form.acceptTeam.push({ name: '', deptCode: '', deptName: '', roleType: '' })
}
const removeTeam = (idx: number) => {
@@ -212,6 +254,7 @@ const onCopyFromBatch = (n: number | null) => {
name: m.name || '',
deptCode: m.deptCode || '',
deptName: m.deptName || '',
roleType: m.roleType || '',
}))
}
copyFromBatch.value = null
@@ -222,6 +265,37 @@ const rules: FormRules = {
acceptDate: [{ required: true, message: '请选择验收日期', trigger: 'change' }],
}
const onRoleChange = (idx: number, val: string) => {
const isLeader = val === 'LEADER_IN' || val === 'LEADER_OUT'
if (isLeader) {
const hasOtherLeader = form.acceptTeam.some((m, i) =>
i !== idx && (m.roleType === 'LEADER_IN' || m.roleType === 'LEADER_OUT')
)
if (hasOtherLeader) {
// 只能有一个组长
form.acceptTeam[idx].roleType = ''
return
}
}
}
const onTeamUserChange = (idx: number, list: any[]) => {
const m = form.acceptTeam[idx]
if (!m) return
if (list && list.length) {
const u = list[0]
m.name = u.name || u.realName || ''
m.deptCode = u.deptCode || u.commonDeptCode || ''
m.deptName = u.deptName || u.commonDeptName || ''
m.userList = list
} else {
m.name = ''
m.deptCode = ''
m.deptName = ''
m.userList = []
}
}
const validate = () => formRef.value?.validate()
defineExpose({ validate, form })