feat: 会议劳务/会务材料分轨审核 + 注册页标题 + 下拉空值修复
会议材料分轨 (material_audit_stage 单轨 → labor/service 双轨): - biz_meeting: labor_audit_stage/labor_compliance_approved + service_audit_stage/service_compliance_approved 四列替换原单轨两列 - StageDeriver: 单轨状态机(R/N/C0/C1/A) + 角色优先级选代表轨 + 会议物理态取两轨最小进度 - MeetingAuditStageEnum / 前端 meetingStage.js 镜像: 分轨推导 + 颜色跟随角色展示阶段(避免文案与颜色错位) - BizMeetingController/ServiceImpl/AuditLog + mapper + MeetingStageScheduler 同步分轨字段 - MeetingDetail/Meetings/doctor/executor Meetings/ManagerProjectDetail/ManagerProjectsAssign/PublicityDetail 同步双轨 其它: - 注册页 (执行单位/专家/支持单位) 加居中页标题 - DoctorDeptSelect/DoctorTitleSelect 空字符串统一 null, 避免挂载必填项飘红 - BizOrgMapper sponsor/executor options 加 status 字段 - sponsor/NewPerson 编辑态 orgName 只读
This commit is contained in:
@@ -93,7 +93,7 @@
|
||||
<!-- 右: 操作按钮 - 悬浮固定到页面最右 (按选中 tab 动态显示) -->
|
||||
<aside class="detail-actions">
|
||||
<!-- 邀请函: 立即报名 -->
|
||||
<button v-if="activeTab === 'invitation'" class="action-btn primary signup-btn" :disabled="signing || signed" @click="onSignup">
|
||||
<button v-if="activeTab === 'invitation' && canShowSignupBtn" class="action-btn primary signup-btn" :disabled="signing || signed" @click="onSignup">
|
||||
<svg class="btn-icon" viewBox="0 0 24 24" fill="currentColor" width="14" height="14">
|
||||
<path d="M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm-1 7V3.5L18.5 9H13z"/>
|
||||
</svg>
|
||||
@@ -217,6 +217,12 @@ const canShowExecutionBtn = computed(() => {
|
||||
if (!r) return true
|
||||
return r === 'executor'
|
||||
})
|
||||
// 立即报名 (专家参与邀请函): 仅专家 + 匿名可见; sponsor/executor/manager/admin 隐藏
|
||||
const canShowSignupBtn = computed(() => {
|
||||
const r = userStore.user?.role || ''
|
||||
if (!r) return true
|
||||
return r === 'doctor'
|
||||
})
|
||||
|
||||
const showQr = ref(false)
|
||||
const qrUrl = ref('')
|
||||
@@ -380,6 +386,7 @@ async function checkSigned() {
|
||||
}
|
||||
const signing = ref(false)
|
||||
async function onSignup() {
|
||||
if (!canShowSignupBtn.value) return // 防御: 防止 v-if 被绕过
|
||||
if (!loggedIn.value) {
|
||||
ElMessage.warning('请先登录系统')
|
||||
router.push('/login')
|
||||
|
||||
Reference in New Issue
Block a user