47f54494 by 张猛

考试名称

1 parent a37d3794
<template>
<view>
<scroll-view scroll-y class="detail-content">
<scroll-view class="detail-content" scroll-y>
<!-- 考段基本信息 -->
<view class="card">
<view class="card-header">
......@@ -10,7 +10,7 @@
</view>
<view class="card-body">
<view class="info-row">
<text class="label">名称</text>
<text class="label">名称</text>
<text class="value">{{ form.name || '' }}</text>
</view>
<view class="info-row">
......@@ -38,15 +38,15 @@
<text class="label">考段地点</text>
<text class="value">{{ form.address || '--' }}</text>
</view>
<view class="info-row" v-if="userType == '2' || userType == '1'">
<view v-if="userType == '2' || userType == '1'" class="info-row">
<text class="label">总金额</text>
<text class="value text-red">¥{{ (Number(form.totalAmount) || 0).toFixed(2) }}</text>
</view>
</view>
</view>
<!-- 收货地址 -->
<view class="card" v-if="addressForm.name || addressForm.phone || addressForm.address">
<view v-if="addressForm.name || addressForm.phone || addressForm.address" class="card">
<view class="card-header">
<view class="header-left">收货地址</view>
</view>
......@@ -65,7 +65,7 @@
</view>
</view>
</view>
<!-- 考生信息(完全去字段名,匹配参考图布局) -->
<view class="card">
<view class="card-header">
......@@ -74,33 +74,33 @@
{{ tablePersonInfo.total || 0 }}
</view>
</view>
<!-- 级别统计 -->
<view class="level-summary" v-if="tablePersonInfo.levelArr?.length > 0">
<view class="level-tag" v-for="l in tablePersonInfo.levelArr" :key="l.level">
<view v-if="tablePersonInfo.levelArr?.length > 0" class="level-summary">
<view v-for="l in tablePersonInfo.levelArr" :key="l.level" class="level-tag">
{{ szToHz(l.level) }}{{ l.num }}
</view>
</view>
<!-- 加载状态 -->
<view v-if="loading" class="state-tip">加载中...</view>
<view v-else-if="list.length === 0" class="state-tip">暂无考生信息</view>
<!-- 考生列表(去字段名,美观布局) -->
<view class="student-list" v-else>
<view class="student-card" v-for="n in list" :key="n.id">
<view v-else class="student-list">
<view v-for="n in list" :key="n.id" class="student-card">
<view class="student-top">
<view class="student-name">
<text class="name">{{ n.realName || '--' }}</text>
<text class="unit">{{ n.memName || '' }}</text>
</view>
<view class="pass-tag" :class="n.isPass == 1 ? 'pass' : 'fail'">
<view :class="n.isPass == 1 ? 'pass' : 'fail'" class="pass-tag">
{{ n.isPass == 1 ? '通过' : '未通过' }}
</view>
</view>
<view class="student-info">
<view class="info-col">
<text class="info-text" >{{ n.idcCode || '--' }}</text>
<text class="info-text">{{ n.idcCode || '--' }}</text>
</view>
<view class="info-col">
<text class="info-text">{{ !n.levelOld || n.levelOld == 0 ? '十级' : szToHz(n.levelOld) + '级' }}</text>
......@@ -108,33 +108,33 @@
<view class="info-col">
<text class="info-text">{{ n.levelNew ? szToHz(n.levelNew) + '级' : '--' }}</text>
</view>
<view class="info-col" v-if="userType == '2' || userType == '1'">
<view v-if="userType == '2' || userType == '1'" class="info-col">
<text class="info-text text-red">¥{{ (Number(n.examFee) || 0).toFixed(2) }}</text>
</view>
</view>
</view>
</view>
<!-- 加载更多 -->
<view class="load-more" v-if="list.length > 0 && hasMore" @click="loadMore">
<view v-if="list.length > 0 && hasMore" class="load-more" @click="loadMore">
{{ loadingMore ? '加载中...' : '加载更多' }}
</view>
<!-- <view class="no-more" v-if="!hasMore && list.length > 0">没有更多了</view> -->
</view>
<!-- 审核记录 -->
<view class="h3-padding">审核记录</view>
<view class="wBox">
<view v-if="loadingAudit" class="state-tip">加载中...</view>
<view v-else-if="recordList.length === 0" class="state-tip">暂无审核记录</view>
<view class="stepItem" v-else v-for="(n, index) in recordList" :key="index">
<view v-for="(n, index) in recordList" v-else :key="index" class="stepItem">
<view class="time">{{ n.auditTime || '待审批' }}</view>
<view class="content">
<view class="status">
<text v-if="n.auditResult==1" class="text-success">审核通过</text>
<text v-else-if="n.auditResult==0" class="text-danger">审核拒绝</text>
<text v-else class="text-primary">审核中</text>
<text v-else class="text-primary">审核中</text>
</view>
<view class="deptName">{{ n.auditDeptName || n.deptName || '--' }}</view>
<view v-if="n.auditMsg">备注:{{ n.auditMsg }}</view>
......@@ -148,9 +148,9 @@
<script setup>
import * as api from '@/common/api.js'
import _ from 'underscore'
import { ref } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
import { szToHz } from '@/common/utils.js'
import {ref} from 'vue'
import {onLoad} from '@dcloudio/uni-app'
import {szToHz} from '@/common/utils.js'
const app = getApp()
const userType = ref('')
......@@ -174,7 +174,7 @@ let examType = ref('2')
onLoad((option) => {
if (!option.examId) {
uni.showToast({ title: '参数错误', icon: 'none' })
uni.showToast({title: '参数错误', icon: 'none'})
setTimeout(() => uni.navigateBack(), 1500)
return
}
......@@ -186,7 +186,7 @@ onLoad((option) => {
})
function initData() {
uni.showLoading({ title: '加载中' })
uni.showLoading({title: '加载中'})
userType.value = app.globalData.userType || '3'
getForm()
getList()
......@@ -200,12 +200,12 @@ function getForm() {
form.value = res.data || {}
addressForm.value = res.data?.postAddress || {}
} else {
uni.showToast({ title: res.msg || '获取详情失败', icon: 'none' })
uni.showToast({title: res.msg || '获取详情失败', icon: 'none'})
}
}).catch(err => {
uni.hideLoading()
console.error('getForm error:', err)
uni.showToast({ title: '网络请求失败', icon: 'none' })
uni.showToast({title: '网络请求失败', icon: 'none'})
})
}
......@@ -235,7 +235,7 @@ function getList() {
function calcPersonInfo(rows) {
if (!rows || rows.length === 0) {
tablePersonInfo.value = { total: 0, levelArr: [] }
tablePersonInfo.value = {total: 0, levelArr: []}
return
}
const total = rows.length
......@@ -246,7 +246,7 @@ function calcPersonInfo(rows) {
if (temp) {
temp.num++
} else {
levelArr.push({ level: d.levelNew, num: 1 })
levelArr.push({level: d.levelNew, num: 1})
}
})
tablePersonInfo.value = {
......@@ -288,7 +288,7 @@ function loadMore() {
function getAuditResultText(result, statusStr) {
if (statusStr) return statusStr
const map = { 0: '审核拒绝', 1: '审核通过' }
const map = {0: '审核拒绝', 1: '审核通过'}
return map[result] || '审核中'
}
......@@ -314,7 +314,7 @@ function goBack() {
}
</script>
<style scoped lang="scss">
<style lang="scss" scoped>
// 颜色变量 - 小程序主色系
$primary-color: #e8341d;
$success-color: #52c41a;
......@@ -343,7 +343,7 @@ $content-gap: 24rpx; // 统一内容边距
position: sticky;
top: 0;
z-index: 100;
.back-btn {
width: 40rpx;
height: 40rpx;
......@@ -351,13 +351,13 @@ $content-gap: 24rpx; // 统一内容边距
align-items: center;
justify-content: center;
}
.nav-title {
font-size: 32rpx;
font-weight: 500;
color: $text-primary;
}
.placeholder {
width: 40rpx;
}
......@@ -390,11 +390,11 @@ $content-gap: 24rpx; // 统一内容边距
// display: flex;
padding: 16rpx;
border-bottom: 1rpx dashed #eee;
&:last-child {
border-bottom: none;
}
.time {
width: 80%;
font-size: 22rpx;
......@@ -402,21 +402,21 @@ $content-gap: 24rpx; // 统一内容边距
flex-shrink: 0;
padding-top: 4rpx;
}
.content {
flex: 1;
.status {
font-size: 28rpx;
font-weight: 600;
margin-bottom: 6rpx;
}
.deptName {
font-size: 26rpx;
color: #666;
}
view {
font-size: 24rpx;
color: #999;
......@@ -439,13 +439,13 @@ $content-gap: 24rpx; // 统一内容边距
align-items: center;
padding: 24rpx $content-gap 20rpx;
border-bottom: 1rpx solid $border-color;
.header-left {
font-size: 30rpx;
font-weight: 600;
color: $text-primary;
}
.header-right {
font-size: 26rpx;
color: $primary-color;
......@@ -464,18 +464,18 @@ $content-gap: 24rpx; // 统一内容边距
align-items: center;
padding: 18rpx 0;
border-bottom: 1rpx solid #f5f5f5;
&:last-child {
border-bottom: none;
}
.label {
font-size: 28rpx;
color: $text-placeholder;
flex-shrink: 0;
width: 170rpx;
}
.value {
font-size: 28rpx;
color: $text-primary;
......@@ -494,7 +494,7 @@ $content-gap: 24rpx; // 统一内容边距
padding: 20rpx $content-gap;
// background: #fff5f5;
border-bottom: 1rpx solid $border-color;
.level-tag {
font-size: 24rpx;
color: $primary-color;
......@@ -523,40 +523,40 @@ $content-gap: 24rpx; // 统一内容边距
margin-top: 16rpx;
border: 1rpx solid $border-color;
// border-left: 4rpx solid $primary-color;
.student-top {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20rpx;
.student-name {
.name {
font-size: 32rpx;
font-weight: 600;
color: $text-primary;
}
.unit {
font-size: 24rpx;
color: $text-placeholder;
margin-left: 16rpx;
}
}
.pass-tag {
font-size: 24rpx;
padding: 6rpx 16rpx;
border-radius: 20rpx;
flex-shrink: 0;
font-weight: 500;
&.pass {
background: rgba($success-color, 0.1);
color: $success-color;
border: 1rpx solid rgba($success-color, 0.2);
}
&.fail {
background: rgba($danger-color, 0.1);
color: $danger-color;
......@@ -564,18 +564,18 @@ $content-gap: 24rpx; // 统一内容边距
}
}
}
// 考生信息去字段名,4列等宽布局
.student-info {
display: flex;
justify-content: space-between;
align-items: center;
gap: 12rpx;
.info-col {
flex: 1;
text-align: center;
.info-text {
font-size: 28rpx;
color: $text-primary;
......@@ -608,4 +608,4 @@ $content-gap: 24rpx; // 统一内容边距
.text-green {
color: $success-color !important;
}
</style>
\ No newline at end of file
</style>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!