278 lines
6.1 KiB
Vue
278 lines
6.1 KiB
Vue
<template>
|
||
<view class="detail-container">
|
||
<view class="content-wrapper">
|
||
<!-- 评分标准 -->
|
||
<view class="form-section">
|
||
<view class="section-title">评分标准</view>
|
||
<view class="standard-text">
|
||
1.一二年级考核语文、数学两个学科。平行班教学质量评价差距均在2分内的,按一...
|
||
</view>
|
||
</view>
|
||
|
||
<!-- 考核评价 -->
|
||
<view class="detail-item">
|
||
<text class="detail-label">考核评价</text>
|
||
<text class="detail-value">{{ detailData.evaluationType }}</text>
|
||
</view>
|
||
|
||
<!-- 积分类型 -->
|
||
<view class="detail-item">
|
||
<text class="detail-label">积分类型</text>
|
||
<text class="detail-value">{{ detailData.scoreType }}</text>
|
||
</view>
|
||
|
||
<!-- 积分分值 -->
|
||
<view class="detail-item">
|
||
<text class="detail-label">积分分值</text>
|
||
<text class="detail-value">{{ detailData.scoreValue }}</text>
|
||
</view>
|
||
|
||
<!-- 考核处室 -->
|
||
<view class="detail-item">
|
||
<text class="detail-label">考核处室</text>
|
||
<text class="detail-value">{{ detailData.department }}</text>
|
||
</view>
|
||
|
||
<!-- 考核时间 -->
|
||
<view class="detail-item">
|
||
<text class="detail-label">考核时间</text>
|
||
<text class="detail-value">{{ detailData.evaluationDate }}</text>
|
||
</view>
|
||
|
||
<!-- 考核打分 -->
|
||
<view class="detail-item">
|
||
<text class="detail-label">考核打分</text>
|
||
<text class="detail-value">{{ detailData.score }}</text>
|
||
</view>
|
||
|
||
<!-- 证明材料 -->
|
||
<view class="detail-item file-section" v-if="detailData.files.length > 0">
|
||
<text class="detail-label">证明材料</text>
|
||
<view class="file-list">
|
||
<view
|
||
class="file-item"
|
||
v-for="(file, index) in detailData.files"
|
||
:key="index"
|
||
@click="previewFile(file)"
|
||
>
|
||
<uni-icons type="paperplane" size="16" color="#409eff" />
|
||
<text class="file-name">{{ file.name }}</text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
<!-- 转手机端按钮 -->
|
||
<view class="bottom-actions">
|
||
<button class="mobile-btn" @click="goBack">返回</button>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</template>
|
||
|
||
<script lang="ts" setup>
|
||
import { ref, onMounted } from "vue";
|
||
|
||
interface DetailData {
|
||
evaluationType: string;
|
||
scoreType: string;
|
||
scoreValue: number | string;
|
||
department: string;
|
||
evaluationDate: string;
|
||
score: number | string;
|
||
files: Array<{ name: string; url: string }>;
|
||
}
|
||
|
||
// 详情数据
|
||
const detailData = ref<DetailData>({
|
||
evaluationType: "考核评价",
|
||
scoreType: "加分",
|
||
scoreValue: 1,
|
||
department: "教科处",
|
||
evaluationDate: "2025-06-08",
|
||
score: 90,
|
||
files: [
|
||
{ name: "教学成果证明.pdf", url: "/files/certificate.pdf" },
|
||
{ name: "获奖证书.jpg", url: "/files/award.jpg" },
|
||
],
|
||
});
|
||
|
||
// 返回上一页
|
||
const goBack = () => {
|
||
uni.navigateBack();
|
||
};
|
||
|
||
// 预览文件
|
||
const previewFile = (file: { name: string; url: string }) => {
|
||
// 根据文件类型进行预览
|
||
const ext = file.name.split(".").pop()?.toLowerCase();
|
||
|
||
if (["jpg", "jpeg", "png", "gif"].includes(ext || "")) {
|
||
// 图片预览
|
||
uni.previewImage({
|
||
urls: [file.url],
|
||
current: file.url,
|
||
});
|
||
} else {
|
||
// 其他文件类型提示下载
|
||
uni.showModal({
|
||
title: "提示",
|
||
content: `是否下载文件: ${file.name}?`,
|
||
success: (res) => {
|
||
if (res.confirm) {
|
||
// TODO: 实现文件下载逻辑
|
||
uni.showToast({
|
||
title: "开始下载",
|
||
icon: "success",
|
||
});
|
||
}
|
||
},
|
||
});
|
||
}
|
||
};
|
||
|
||
// 转手机端
|
||
const transferToMobile = () => {
|
||
uni.showModal({
|
||
title: "提示",
|
||
content: "确定要转到手机端处理吗?",
|
||
success: (res) => {
|
||
if (res.confirm) {
|
||
// TODO: 实现转手机端逻辑
|
||
uni.showToast({
|
||
title: "已转至手机端",
|
||
icon: "success",
|
||
});
|
||
}
|
||
},
|
||
});
|
||
};
|
||
|
||
onMounted(() => {
|
||
// 页面加载时可以获取详情数据
|
||
console.log("页面加载完成");
|
||
});
|
||
</script>
|
||
|
||
<style scoped lang="scss">
|
||
.detail-container {
|
||
min-height: 100vh;
|
||
background-color: #f5f5f5;
|
||
}
|
||
|
||
.content-wrapper {
|
||
padding: 30rpx 30rpx 40rpx;
|
||
}
|
||
|
||
.form-section {
|
||
background-color: #ffffff;
|
||
border-radius: 16rpx;
|
||
padding: 30rpx;
|
||
margin-bottom: 20rpx;
|
||
|
||
.section-title {
|
||
font-size: 32rpx;
|
||
font-weight: bold;
|
||
color: #333;
|
||
margin-bottom: 20rpx;
|
||
}
|
||
|
||
.standard-text {
|
||
font-size: 28rpx;
|
||
color: #666;
|
||
line-height: 1.6;
|
||
}
|
||
}
|
||
|
||
.detail-item {
|
||
display: flex;
|
||
align-items: center;
|
||
background-color: #ffffff;
|
||
border-radius: 16rpx;
|
||
padding: 30rpx;
|
||
margin-bottom: 20rpx;
|
||
|
||
.detail-label {
|
||
font-size: 28rpx;
|
||
color: #333;
|
||
width: 160rpx;
|
||
flex-shrink: 0;
|
||
}
|
||
|
||
.detail-value {
|
||
flex: 1;
|
||
font-size: 28rpx;
|
||
color: #333;
|
||
text-align: right;
|
||
}
|
||
}
|
||
|
||
.file-section {
|
||
flex-direction: column;
|
||
align-items: flex-start;
|
||
|
||
.detail-label {
|
||
margin-bottom: 20rpx;
|
||
}
|
||
|
||
.file-list {
|
||
width: 100%;
|
||
|
||
.file-item {
|
||
display: flex;
|
||
align-items: center;
|
||
padding: 15rpx 20rpx;
|
||
background-color: #f5f5f5;
|
||
border-radius: 8rpx;
|
||
margin-bottom: 10rpx;
|
||
cursor: pointer;
|
||
|
||
&:hover {
|
||
background-color: #e6f7ff;
|
||
}
|
||
|
||
uni-icons {
|
||
margin-right: 10rpx;
|
||
}
|
||
|
||
.file-name {
|
||
font-size: 26rpx;
|
||
color: #333;
|
||
flex: 1;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
white-space: nowrap;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
.bottom-actions {
|
||
position: fixed;
|
||
bottom: 0;
|
||
left: 0;
|
||
right: 0;
|
||
padding: 20rpx 30rpx;
|
||
padding-bottom: calc(20rpx + env(safe-area-inset-bottom));
|
||
background-color: #ffffff;
|
||
border-top: 1rpx solid #eee;
|
||
|
||
.mobile-btn {
|
||
width: 100%;
|
||
height: 88rpx;
|
||
background-color: #ff4757;
|
||
color: #ffffff;
|
||
font-size: 32rpx;
|
||
font-weight: bold;
|
||
border-radius: 44rpx;
|
||
border: none;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
|
||
&:active {
|
||
background-color: #ff3742;
|
||
}
|
||
}
|
||
}
|
||
</style>
|