| | |
| | | |
| | | async function approve() { |
| | | if (!detail.value) return |
| | | await ElMessageBox.confirm('确认通过该升级申请?通过后将更新持卡人等级。', '审核通过', { type: 'warning' }) |
| | | const target = detail.value.targetLevel ? `「${detail.value.targetLevel}」` : '申请等级' |
| | | await ElMessageBox.confirm( |
| | | `确认通过该升级申请?系统不会自动修改持卡人等级,通过后请到「持卡人管理」手动把该持卡人等级改为${target}。`, |
| | | '审核通过', |
| | | { type: 'warning' }, |
| | | ) |
| | | await process('已通过') |
| | | } |
| | | |
| | |
| | | processing.value = true |
| | | try { |
| | | detail.value = await auditUpgradeApplication(detail.value.id, status, remark) |
| | | ElMessage.success(status === '已通过' ? '升级申请已通过' : '升级申请已驳回') |
| | | ElMessage.success( |
| | | status === '已通过' |
| | | ? '升级申请已通过,请到「持卡人管理」手动修改该持卡人的等级' |
| | | : '升级申请已驳回', |
| | | ) |
| | | } finally { |
| | | processing.value = false |
| | | } |
| | |
| | | <div>申请时间:<strong>{{ formatDate(detail.applyTime) }}</strong></div> |
| | | <div class="full-line">申请理由:<strong>{{ text(detail.applyReason) }}</strong></div> |
| | | </div> |
| | | <div v-for="honor in (detail.honors || [])" :key="honor.id" class="honor-block"> |
| | | <div v-for="honor in (detail.honors || [])" :key="honor.id" class="upgrade-detail-grid honor-block"> |
| | | <div>新获得的荣誉称号/大奖项:<strong>{{ text(honor.honorName) }}</strong></div> |
| | | <div>获得时间:<strong>{{ text(honor.obtainedDate) }}</strong></div> |
| | | <div class="honor-images"> |
| | | <div class="honor-images full-line"> |
| | | <el-image |
| | | v-if="imageUrl(honor)" |
| | | :src="resolveImageUrl(imageUrl(honor))" |
| | |
| | | </section> |
| | | <section v-if="detail" class="upgrade-detail-actions"> |
| | | <template v-if="pending"> |
| | | <el-button type="primary" :loading="processing" @click="approve">处理</el-button> |
| | | <el-button type="danger" :loading="processing" @click="reject">审核不通过</el-button> |
| | | <el-button v-permission="'admin.upgrade-applications.audit'" type="primary" :loading="processing" @click="approve">处理</el-button> |
| | | <el-button v-permission="'admin.upgrade-applications.audit'" type="danger" :loading="processing" @click="reject">审核不通过</el-button> |
| | | </template> |
| | | <span v-else>审核结果:{{ text(detail.status) }}<template v-if="detail.auditRemark">({{ detail.auditRemark }})</template></span> |
| | | </section> |
| | |
| | | .upgrade-detail-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px 36px; padding: 18px; background: #f5f6f8; color: #606266; } |
| | | .upgrade-detail-grid strong { color: #303133; font-weight: 500; } |
| | | .full-line { grid-column: 1 / -1; } |
| | | .honor-block { margin-top: 14px; padding: 16px; background: #f5f6f8; color: #606266; } |
| | | .honor-images { display: flex; gap: 20px; min-height: 130px; margin-top: 14px; } |
| | | .honor-block { margin-top: 14px; } |
| | | .honor-images { display: flex; gap: 20px; align-items: flex-start; } |
| | | .honor-image { width: 150px; height: 110px; background: #e9eaec; cursor: zoom-in; } |
| | | .honor-images span { display: flex; align-items: center; justify-content: center; width: 150px; height: 110px; color: #909399; background: #e9eaec; } |
| | | .upgrade-detail-actions { display: flex; align-items: center; gap: 12px; padding: 18px 0; } |