提交1
This commit is contained in:
parent
9fe8dd2880
commit
15c65bd49f
@ -175,12 +175,19 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/view/routine/JiFenPingJia",
|
||||
"path": "pages/view/routine/JiFenPingJia/JiFenPingJia",
|
||||
"style": {
|
||||
"navigationBarTitleText": "积分评价",
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/view/routine/JiFenPingJia/detail",
|
||||
"style": {
|
||||
"navigationBarTitleText": "评价详情",
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/view/routine/kefuxuncha/KeFuXunCha",
|
||||
"style": {
|
||||
@ -390,6 +397,20 @@
|
||||
"navigationBarTitleText": "zhujiaoDetails"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/view/routine/RengJiaoRengZhi/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "任教任职",
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/view/routine/GongZuoLiang/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "工作量",
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/base/groupTeaching/studentRollCall",
|
||||
"style": {
|
||||
|
||||
@ -167,27 +167,42 @@ const sections = reactive<Section[]>([
|
||||
show: true,
|
||||
path: "/pages/view/routine/JiaoXueZiYuan/index",
|
||||
},
|
||||
{
|
||||
id: "r3",
|
||||
icon: "file-list-3-fil",
|
||||
text: "活动资源",
|
||||
show: true,
|
||||
path: "/pages/view/routine/HuoDongZiYuan/index",
|
||||
},
|
||||
{
|
||||
id: "r4",
|
||||
icon: "file-paper-2-fill",
|
||||
text: "公文流转",
|
||||
show: true,
|
||||
path: "/pages/view/routine/GongWenLiuZhuan/index",
|
||||
},
|
||||
{
|
||||
id: "r5",
|
||||
icon: "file-mark-fill",
|
||||
text: "积分评价",
|
||||
show: true,
|
||||
path: "/pages/view/routine/JiFenPingJia",
|
||||
path: "/pages/view/routine/JiFenPingJia/JiFenPingJia",
|
||||
},
|
||||
// {
|
||||
// id: "r3",
|
||||
// icon: "file-list-3-fil",
|
||||
// text: "活动资源",
|
||||
// show: true,
|
||||
// path: "/pages/view/routine/HuoDongZiYuan/index",
|
||||
// },
|
||||
{
|
||||
id: "r3",
|
||||
icon: "file-list-3-fil",
|
||||
text: "工作量",
|
||||
show: true,
|
||||
path: "/pages/view/routine/GongZuoLiang/index",
|
||||
},
|
||||
// {
|
||||
// id: "r4",
|
||||
// icon: "file-paper-2-fill",
|
||||
// text: "公文流转",
|
||||
// show: true,
|
||||
// path: "/pages/view/routine/GongWenLiuZhuan/index",
|
||||
// },
|
||||
{
|
||||
id: "r4",
|
||||
icon: "file-paper-2-fill",
|
||||
text: "任教任职",
|
||||
show: true,
|
||||
path: "/pages/view/routine/RengJiaoRengZhi/index",
|
||||
},
|
||||
|
||||
{
|
||||
id: "r6",
|
||||
icon: "pass-pending-fill",
|
||||
|
||||
@ -32,14 +32,8 @@
|
||||
<template #bottom>
|
||||
<view class="flex-row items-center pb-10 pt-5">
|
||||
<u-button
|
||||
text="上一步"
|
||||
class="ml-15 mr-7"
|
||||
:plain="true"
|
||||
@click="navigateBack"
|
||||
/>
|
||||
<u-button
|
||||
text="下一步"
|
||||
class="mr-15 mr-7"
|
||||
text="提交"
|
||||
class="mx-15"
|
||||
type="primary"
|
||||
@click="submit"
|
||||
/>
|
||||
@ -258,36 +252,32 @@ function deleteMemberFamily(index: number, item: any) {
|
||||
|
||||
// 提交数据
|
||||
function submit() {
|
||||
setFile({
|
||||
...getFile,
|
||||
grRyList: map(education.xl, (item) => {
|
||||
return { ...item.value, hjlxId: "GRRY" };
|
||||
}),
|
||||
});
|
||||
navigateTo("/pages/view/hr/teacherProfile/PublicClassAwards");
|
||||
}
|
||||
|
||||
// 初始化数据
|
||||
const { getFile, setFile } = useDataStore();
|
||||
|
||||
// 处理回显数据
|
||||
if (getFile.grRyList && getFile.grRyList.length > 0) {
|
||||
education.xl = map(getFile.grRyList, (item) => {
|
||||
return { value: item };
|
||||
const grRyList = map(education.xl, (item) => {
|
||||
return { ...item.value, hjlxId: "GRRY" };
|
||||
});
|
||||
}
|
||||
|
||||
// // 初始化数据
|
||||
// const { getFile, setFile } = useDataStore();
|
||||
|
||||
// // 处理回显数据
|
||||
// if (getFile.grRyList && getFile.grRyList.length > 0) {
|
||||
// education.xl = map(getFile.grRyList, (item) => {
|
||||
// return { value: item };
|
||||
// });
|
||||
// }
|
||||
|
||||
// 页面加载时初始化
|
||||
onMounted(() => {
|
||||
if (getFile.grRyList && getFile.grRyList.length > 0) {
|
||||
// 有回显数据时,延迟初始化确保数据正确加载
|
||||
nextTick(() => {
|
||||
initEchoData();
|
||||
});
|
||||
} else {
|
||||
// 无回显数据时,只需要初始化荣誉类别
|
||||
initHonorCategories();
|
||||
}
|
||||
// if (getFile.grRyList && getFile.grRyList.length > 0) {
|
||||
// // 有回显数据时,延迟初始化确保数据正确加载
|
||||
// nextTick(() => {
|
||||
// initEchoData();
|
||||
// });
|
||||
// } else {
|
||||
// // 无回显数据时,只需要初始化荣誉类别
|
||||
// initHonorCategories();
|
||||
// }
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
@ -31,18 +31,7 @@
|
||||
</view>
|
||||
<template #bottom>
|
||||
<view class="flex-row items-center pb-10 pt-5">
|
||||
<u-button
|
||||
text="上一步"
|
||||
class="ml-15 mr-7"
|
||||
:plain="true"
|
||||
@click="navigateBack"
|
||||
/>
|
||||
<u-button
|
||||
text="提交"
|
||||
class="mr-15 mr-7"
|
||||
type="primary"
|
||||
@click="submit"
|
||||
/>
|
||||
<u-button text="提交" class="mx-15" type="primary" @click="submit" />
|
||||
</view>
|
||||
</template>
|
||||
</BasicLayout>
|
||||
@ -89,15 +78,15 @@ const baseSchema = [
|
||||
ok: (selectedIndex: number, form: any, list: any, attrs: any) => {
|
||||
const selectedCategory = list[selectedIndex];
|
||||
const formIndex = attrs.index;
|
||||
|
||||
|
||||
// 更新当前表单项的获奖级别选项
|
||||
updateAwardLevels(formIndex, selectedCategory);
|
||||
|
||||
|
||||
// 清空已选择的获奖级别(如果之前有选择的话)
|
||||
if (education.xl[formIndex].value.xm) {
|
||||
education.xl[formIndex].value.xm = "";
|
||||
}
|
||||
|
||||
|
||||
// 强制重新渲染
|
||||
forceUpdateKey.value++;
|
||||
},
|
||||
@ -113,7 +102,7 @@ const baseSchema = [
|
||||
savaKey: "id",
|
||||
open: (value: any, attrs: any, model: any) => {
|
||||
const formIndex = attrs.index;
|
||||
|
||||
|
||||
// 检查是否已选择荣誉类别
|
||||
if (!model?.hilb_id) {
|
||||
showToast({
|
||||
@ -122,10 +111,10 @@ const baseSchema = [
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// 检查是否有对应的获奖级别数据
|
||||
const awardLevels = awardLevelsMap[formIndex] || [];
|
||||
|
||||
|
||||
if (awardLevels.length === 0) {
|
||||
showToast({
|
||||
title: "该荣誉类别暂无获奖级别数据",
|
||||
@ -133,7 +122,7 @@ const baseSchema = [
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
},
|
||||
},
|
||||
@ -171,13 +160,13 @@ const baseSchema = [
|
||||
// 为每个表单项生成动态的schema
|
||||
const getSchemaForIndex = (index: number) => {
|
||||
const schema = cloneDeep(baseSchema);
|
||||
|
||||
|
||||
// 更新获奖级别的选项数据
|
||||
const hjjbField = schema.find((item) => item.field === "xm");
|
||||
if (hjjbField) {
|
||||
hjjbField.componentProps.range = awardLevelsMap[index] || [];
|
||||
}
|
||||
|
||||
|
||||
return schema;
|
||||
};
|
||||
|
||||
@ -203,14 +192,14 @@ const initHonorCategories = async () => {
|
||||
// 初始化回显数据
|
||||
const initEchoData = async () => {
|
||||
await initHonorCategories();
|
||||
|
||||
|
||||
// 为每个已有数据的表单项初始化获奖级别选项
|
||||
education.xl.forEach((formItem: any, index: number) => {
|
||||
if (formItem.value?.hilb_id) {
|
||||
const category = honorCategories.value.find(
|
||||
(cat: any) => cat.id === formItem.value.hilb_id
|
||||
);
|
||||
|
||||
|
||||
if (category) {
|
||||
// 更新获奖级别选项
|
||||
updateAwardLevels(index, category);
|
||||
@ -219,7 +208,7 @@ const initEchoData = async () => {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// 强制重新渲染以确保获奖级别能正确显示
|
||||
forceUpdateKey.value++;
|
||||
};
|
||||
@ -228,7 +217,7 @@ const initEchoData = async () => {
|
||||
function addEducation() {
|
||||
const newIndex = education.xl.length;
|
||||
education.xl.push({ value: {} });
|
||||
|
||||
|
||||
// 为新项初始化空的获奖级别选项
|
||||
awardLevelsMap[newIndex] = [];
|
||||
}
|
||||
@ -237,7 +226,7 @@ function addEducation() {
|
||||
function deleteMemberFamily(index: number, item: any) {
|
||||
// 删除对应的获奖级别数据
|
||||
delete awardLevelsMap[index];
|
||||
|
||||
|
||||
// 重新整理awardLevelsMap的键值
|
||||
const newAwardLevelsMap: Record<number, any[]> = {};
|
||||
education.xl.forEach((_: any, i: number) => {
|
||||
@ -247,10 +236,10 @@ function deleteMemberFamily(index: number, item: any) {
|
||||
newAwardLevelsMap[i - 1] = awardLevelsMap[i] || [];
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// 删除表单项
|
||||
education.xl.splice(index, 1);
|
||||
|
||||
|
||||
// 更新awardLevelsMap
|
||||
Object.keys(awardLevelsMap).forEach(
|
||||
(key: string) => delete awardLevelsMap[Number(key)]
|
||||
@ -260,36 +249,32 @@ function deleteMemberFamily(index: number, item: any) {
|
||||
|
||||
// 提交数据
|
||||
function submit() {
|
||||
setFile({
|
||||
...getFile,
|
||||
gkkRyList: map(education.xl, (item) => {
|
||||
return { ...item.value, hjlxId: "GKKHJQK" };
|
||||
}),
|
||||
});
|
||||
navigateTo("/pages/view/hr/teacherProfile/RecordMaterials");
|
||||
}
|
||||
|
||||
// 初始化数据
|
||||
const { getFile, setFile } = useDataStore();
|
||||
|
||||
// 处理回显数据
|
||||
if (getFile.gkkRyList && getFile.gkkRyList.length > 0) {
|
||||
education.xl = map(getFile.gkkRyList, (item) => {
|
||||
return { value: item };
|
||||
const gkkRyList = map(education.xl, (item) => {
|
||||
return { ...item.value, hjlxId: "GKKHJQK" };
|
||||
});
|
||||
}
|
||||
|
||||
// // 初始化数据
|
||||
// const { getFile, setFile } = useDataStore();
|
||||
|
||||
// // 处理回显数据
|
||||
// if (getFile.gkkRyList && getFile.gkkRyList.length > 0) {
|
||||
// education.xl = map(getFile.gkkRyList, (item) => {
|
||||
// return { value: item };
|
||||
// });
|
||||
// }
|
||||
|
||||
// 页面加载时初始化
|
||||
onMounted(() => {
|
||||
if (getFile.gkkRyList && getFile.gkkRyList.length > 0) {
|
||||
// 有回显数据时,延迟初始化确保数据正确加载
|
||||
nextTick(() => {
|
||||
initEchoData();
|
||||
});
|
||||
} else {
|
||||
// 无回显数据时,只需要初始化荣誉类别
|
||||
initHonorCategories();
|
||||
}
|
||||
// if (getFile.gkkRyList && getFile.gkkRyList.length > 0) {
|
||||
// // 有回显数据时,延迟初始化确保数据正确加载
|
||||
// nextTick(() => {
|
||||
// initEchoData();
|
||||
// });
|
||||
// } else {
|
||||
// // 无回显数据时,只需要初始化荣誉类别
|
||||
// initHonorCategories();
|
||||
// }
|
||||
});
|
||||
</script>
|
||||
<style>
|
||||
|
||||
0
src/pages/view/routine/GongZuoLiang/index.vue
Normal file
0
src/pages/view/routine/GongZuoLiang/index.vue
Normal file
@ -1,128 +0,0 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<uni-card :is-shadow="false" is-full>
|
||||
<view class="header">
|
||||
<text class="score">我的得分: 84</text>
|
||||
<view class="status">
|
||||
<text>我的状态: </text>
|
||||
<view class="status-indicator"></view>
|
||||
</view>
|
||||
</view>
|
||||
</uni-card>
|
||||
|
||||
<uni-card :is-shadow="false" is-full margin="10px 0 0 0">
|
||||
<view class="list-header">
|
||||
<text class="category-header">分类</text>
|
||||
<text class="value-header">分值</text>
|
||||
</view>
|
||||
<view class="list-item" v-for="(item, index) in evaluationItems" :key="index">
|
||||
<text class="category-name">{{ item.category }}</text>
|
||||
<text class="value">{{ item.value }}</text>
|
||||
</view>
|
||||
</uni-card>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref } from 'vue';
|
||||
|
||||
const evaluationItems = ref([
|
||||
{ category: '师德师风', value: 8 },
|
||||
{ category: '考勤管理', value: 4 },
|
||||
{ category: '资料上交', value: 1 },
|
||||
{ category: '教学质量', value: 1 },
|
||||
{ category: '教育科研课题', value: 8 },
|
||||
{ category: '个人材料发表和获奖', value: 9 },
|
||||
{ category: '展示交流和比赛', value: 4 },
|
||||
{ category: '工作室活动', value: 5 },
|
||||
{ category: '荣誉', value: 6 },
|
||||
{ category: '辅导学生', value: 7 },
|
||||
{ category: '安全管理', value: 2 },
|
||||
{ category: '班级常规管理', value: 7 },
|
||||
]);
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.container {
|
||||
background-color: #f8f8f8;
|
||||
min-height: 100vh;
|
||||
padding: 15px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 10px 0; // Adjusted padding
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.score {
|
||||
color: #333;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.status {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.status-indicator {
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
background-color: #4caf50; // Green color from the image
|
||||
margin-left: 8px;
|
||||
border-radius: 2px; // Slightly rounded corners
|
||||
}
|
||||
|
||||
// Remove default card padding if needed
|
||||
::v-deep .uni-card .uni-card__content {
|
||||
padding: 10px 15px !important; // Overwrite default padding
|
||||
}
|
||||
|
||||
|
||||
.list-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 10px 0; // Adjust padding as needed
|
||||
border-bottom: 1px solid #eee;
|
||||
color: #666;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.category-header {
|
||||
flex: 3; // Give more space to category
|
||||
}
|
||||
|
||||
.value-header {
|
||||
flex: 1;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.list-item {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 12px 0; // Vertical padding for spacing
|
||||
border-bottom: 1px solid #eee;
|
||||
font-size: 14px;
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none; // Remove border for the last item
|
||||
}
|
||||
}
|
||||
|
||||
.category-name {
|
||||
flex: 3; // Corresponds to header
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.value {
|
||||
flex: 1; // Corresponds to header
|
||||
text-align: right;
|
||||
color: #333;
|
||||
font-weight: 500;
|
||||
}
|
||||
</style>
|
||||
225
src/pages/view/routine/JiFenPingJia/JiFenPingJia.vue
Normal file
225
src/pages/view/routine/JiFenPingJia/JiFenPingJia.vue
Normal file
@ -0,0 +1,225 @@
|
||||
<template>
|
||||
<BasicLayout>
|
||||
<view class="container">
|
||||
<uni-card :is-shadow="false" is-full>
|
||||
<view class="header">
|
||||
<text class="score">我的得分: 84</text>
|
||||
<view class="status">
|
||||
<text>我的状态: </text>
|
||||
<view class="status-indicator"></view>
|
||||
<view class="review-count" v-if="reviewingCount > 0">
|
||||
{{ reviewingCount }}项在审核
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</uni-card>
|
||||
|
||||
<uni-card :is-shadow="false" is-full margin="10px 0 0 0">
|
||||
<view class="list-header">
|
||||
<text class="category-header">分类</text>
|
||||
<text class="value-header">分值</text>
|
||||
</view>
|
||||
<view
|
||||
class="list-item"
|
||||
v-for="(item, index) in evaluationItems"
|
||||
:key="index"
|
||||
>
|
||||
<view
|
||||
class="flex-row items-center justify-between w-full"
|
||||
@click="handleItemClick(item)"
|
||||
>
|
||||
<view class="category-name">{{ item.category }}</view>
|
||||
<view class="flex-row items-center">
|
||||
<text class="value">{{ item.value }}</text>
|
||||
<view class="review-badge" v-if="item.isUnderReview">审</view>
|
||||
<u-icon name="arrow-right" size="16" color="#999"></u-icon
|
||||
></view>
|
||||
</view>
|
||||
</view>
|
||||
</uni-card>
|
||||
</view>
|
||||
<template #bottom>
|
||||
<view class="white-bg-color py-5">
|
||||
<view class="flex-row items-center pb-10 pt-5">
|
||||
<u-button
|
||||
text="上传个人荣誉"
|
||||
class="ml-15 mr-7"
|
||||
:plain="true"
|
||||
@click="scgrry"
|
||||
/>
|
||||
<u-button
|
||||
text="上传公开课获奖"
|
||||
class="mr-15 mr-7"
|
||||
type="primary"
|
||||
@click="scgkkhj"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
</BasicLayout>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, computed } from "vue";
|
||||
|
||||
const evaluationItems = ref([
|
||||
{ category: "师德师风", value: 8, isUnderReview: false },
|
||||
{ category: "考勤管理", value: 4, isUnderReview: true },
|
||||
{ category: "资料上交", value: 1, isUnderReview: false },
|
||||
{ category: "教学质量", value: 1, isUnderReview: true },
|
||||
{ category: "教育科研课题", value: 8, isUnderReview: false },
|
||||
{ category: "个人材料发表和获奖", value: 9, isUnderReview: true },
|
||||
{ category: "展示交流和比赛", value: 4, isUnderReview: false },
|
||||
{ category: "工作室活动", value: 5, isUnderReview: false },
|
||||
{ category: "荣誉", value: 6, isUnderReview: true },
|
||||
{ category: "辅导学生", value: 7, isUnderReview: false },
|
||||
{ category: "安全管理", value: 2, isUnderReview: false },
|
||||
{ category: "班级常规管理", value: 7, isUnderReview: true },
|
||||
]);
|
||||
|
||||
// 计算正在审核的项目数量
|
||||
const reviewingCount = computed(() => {
|
||||
return evaluationItems.value.filter(item => item.isUnderReview).length;
|
||||
});
|
||||
|
||||
function handleItemClick(item: any) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/view/routine/JiFenPingJia/detail?id=${item.id}`,
|
||||
});
|
||||
}
|
||||
|
||||
function scgrry() {
|
||||
uni.navigateTo({
|
||||
url: `/pages/view/hr/teacherProfile/PersonalHonor`,
|
||||
});
|
||||
}
|
||||
|
||||
function scgkkhj() {
|
||||
uni.navigateTo({
|
||||
url: `/pages/view/hr/teacherProfile/PublicClassAwards`,
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.container {
|
||||
background-color: #f8f8f8;
|
||||
min-height: 100vh;
|
||||
padding: 15px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 10px 0; // Adjusted padding
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.score {
|
||||
color: #333;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.status {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.status-indicator {
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
background-color: #4caf50; // Green color from the image
|
||||
margin-left: 8px;
|
||||
border-radius: 2px; // Slightly rounded corners
|
||||
}
|
||||
|
||||
.review-count {
|
||||
background-color: #fff2e8;
|
||||
color: #ff6b35;
|
||||
font-size: 12px;
|
||||
padding: 2px 8px;
|
||||
border-radius: 12px;
|
||||
margin-left: 12px;
|
||||
border: 1px solid #ff6b35;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
// Remove default card padding if needed
|
||||
::v-deep .uni-card .uni-card__content {
|
||||
padding: 10px 15px !important; // Overwrite default padding
|
||||
}
|
||||
|
||||
.list-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 10px 0; // Adjust padding as needed
|
||||
border-bottom: 1px solid #eee;
|
||||
color: #666;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.category-header {
|
||||
flex: 3; // Give more space to category
|
||||
}
|
||||
|
||||
.value-header {
|
||||
flex: 1;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.list-item {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 12px 0; // Vertical padding for spacing
|
||||
border-bottom: 1px solid #eee;
|
||||
font-size: 14px;
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none; // Remove border for the last item
|
||||
}
|
||||
}
|
||||
|
||||
.category-name {
|
||||
flex: 3; // Corresponds to header
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.value {
|
||||
flex: 1; // Corresponds to header
|
||||
text-align: right;
|
||||
color: #333;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.review-badge {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background-color: #ff6b35;
|
||||
color: #ffffff;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
border-radius: 50%;
|
||||
margin-left: 8px;
|
||||
margin-right: 8px;
|
||||
animation: pulse 2s infinite;
|
||||
}
|
||||
|
||||
@keyframes pulse {
|
||||
0% {
|
||||
box-shadow: 0 0 0 0 rgba(255, 107, 53, 0.7);
|
||||
}
|
||||
70% {
|
||||
box-shadow: 0 0 0 10px rgba(255, 107, 53, 0);
|
||||
}
|
||||
100% {
|
||||
box-shadow: 0 0 0 0 rgba(255, 107, 53, 0);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
277
src/pages/view/routine/JiFenPingJia/detail.vue
Normal file
277
src/pages/view/routine/JiFenPingJia/detail.vue
Normal file
@ -0,0 +1,277 @@
|
||||
<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>
|
||||
174
src/pages/view/routine/RengJiaoRengZhi/index.vue
Normal file
174
src/pages/view/routine/RengJiaoRengZhi/index.vue
Normal file
@ -0,0 +1,174 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<view class="content">
|
||||
<!-- 党政职务 -->
|
||||
<view class="section">
|
||||
<view class="section-title">党政职务:</view>
|
||||
<view class="position-display">
|
||||
<text class="position-text" v-for="item in partyPositions" :key="item.id">
|
||||
{{ item.name }}
|
||||
</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 其他职务 -->
|
||||
<view class="section">
|
||||
<view class="section-title">其他职务</view>
|
||||
<view class="position-display">
|
||||
<text class="position-text" v-for="item in otherPositions" :key="item.id">
|
||||
{{ item.name }}
|
||||
</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 任职信息列表 -->
|
||||
<view class="info-list">
|
||||
<view class="info-item" v-for="item in teachingInfo" :key="item.key">
|
||||
<view class="info-label">{{ item.label }}</view>
|
||||
<view class="info-value">
|
||||
<text :class="{ empty: item.isEmpty }">{{ item.value }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref } from "vue";
|
||||
|
||||
// 党政职务数据
|
||||
const partyPositions = ref([
|
||||
{ id: 1, name: "党委(总支)书记" },
|
||||
{ id: 2, name: "党委(总支)副书记" },
|
||||
]);
|
||||
|
||||
// 其他职务数据
|
||||
const otherPositions = ref([{ id: 1, name: "党支部支委" }]);
|
||||
|
||||
// 任教任职信息
|
||||
const teachingInfo = ref([
|
||||
{
|
||||
key: "mainSubject",
|
||||
label: "主任学科",
|
||||
value: "音乐",
|
||||
isEmpty: false,
|
||||
},
|
||||
{
|
||||
key: "mainClass",
|
||||
label: "主任班级",
|
||||
value: "未填写",
|
||||
isEmpty: true,
|
||||
},
|
||||
{
|
||||
key: "partTimeSubject",
|
||||
label: "兼任学科",
|
||||
value: "未填写",
|
||||
isEmpty: true,
|
||||
},
|
||||
{
|
||||
key: "partTimeClass",
|
||||
label: "兼任班级",
|
||||
value: "未填写",
|
||||
isEmpty: true,
|
||||
},
|
||||
{
|
||||
key: "grade",
|
||||
label: "所属年级",
|
||||
value: "一年级(2024级)",
|
||||
isEmpty: false,
|
||||
},
|
||||
{
|
||||
key: "headTeacherClass",
|
||||
label: "所任班主任班级",
|
||||
value: "8班",
|
||||
isEmpty: false,
|
||||
},
|
||||
]);
|
||||
|
||||
// 返回上一页
|
||||
const goBack = () => {
|
||||
uni.navigateBack();
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.container {
|
||||
min-height: 100vh;
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
||||
.content {
|
||||
padding-bottom: 40rpx;
|
||||
}
|
||||
|
||||
.section {
|
||||
background-color: #ffffff;
|
||||
margin-bottom: 20rpx;
|
||||
padding: 30rpx;
|
||||
|
||||
.section-title {
|
||||
font-size: 32rpx;
|
||||
color: #333;
|
||||
font-weight: bold;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
}
|
||||
|
||||
// 职务展示
|
||||
.position-display {
|
||||
.position-text {
|
||||
display: inline-block;
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
margin-right: 20rpx;
|
||||
margin-bottom: 10rpx;
|
||||
|
||||
&:not(:last-child)::after {
|
||||
content: '、';
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 信息列表
|
||||
.info-list {
|
||||
background-color: #ffffff;
|
||||
border-radius: 16rpx;
|
||||
overflow: hidden;
|
||||
margin: 0 30rpx;
|
||||
}
|
||||
|
||||
.info-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 30rpx;
|
||||
border-bottom: 1rpx solid #f0f0f0;
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.info-label {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.info-value {
|
||||
flex: 1;
|
||||
text-align: right;
|
||||
|
||||
text {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
|
||||
&.empty {
|
||||
color: #999;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -1,17 +1,16 @@
|
||||
<template>
|
||||
<view class="page-container">
|
||||
<!-- 1. 顶部 Banner -->
|
||||
<view class="header-banner mx-15 mt-15 r-md" style="box-sizing: border-box">
|
||||
<!-- <view class="header-banner mx-15 mt-15 r-md" style="box-sizing: border-box">
|
||||
<view class="banner-text">
|
||||
<text class="banner-title">上课巡查</text>
|
||||
<text class="banner-subtitle">泸州市实验小学城西学校</text>
|
||||
</view>
|
||||
<!-- 右侧图片区域,暂时留空或用占位符 -->
|
||||
<view class="banner-image-placeholder"></view>
|
||||
</view>
|
||||
</view> -->
|
||||
|
||||
<!-- 2. 我的应用 -->
|
||||
<view class="section my-apps mt-15 px-15">
|
||||
<!-- <view class="section my-apps mt-15 px-15">
|
||||
<view class="section-title-bar">
|
||||
<view class="decorator"></view>
|
||||
<text class="title-text">我的应用</text>
|
||||
@ -20,19 +19,17 @@
|
||||
<view class="app-grid">
|
||||
<view class="app-item" @click="goToRecord">
|
||||
<view class="app-icon-wrapper record-icon">
|
||||
<!-- 暂时用背景色代替图标 -->
|
||||
</view>
|
||||
<text class="app-text">巡查记录</text>
|
||||
</view>
|
||||
<view class="app-item" @click="goToSummary">
|
||||
<view class="app-icon-wrapper summary-icon">
|
||||
<!-- 暂时用背景色代替图标 -->
|
||||
</view>
|
||||
<text class="app-text">巡查汇总</text>
|
||||
</view>
|
||||
</view>
|
||||
</uni-card>
|
||||
</view>
|
||||
</view> -->
|
||||
|
||||
<!-- 3. 巡检情况 -->
|
||||
<view class="section inspection-status flex-1 flex-col mt-15">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user