提交专业力必修

This commit is contained in:
Pengxiansen
2025-01-23 14:51:49 +08:00
parent d0176acb45
commit 990380ac1a
23 changed files with 2226 additions and 2238 deletions

View File

@@ -1,7 +1,7 @@
<!-- eslint-disable vue/no-use-v-if-with-v-for -->
<template>
<a-drawer
:visible="Seevisible"
:visible="seevisible"
class="drawerStyle seestu"
placement="right"
width="70%"
@@ -23,50 +23,38 @@
<div class="portrait">
<img
style="width: 80px; height: 80px; border-radius: 50%"
v-if="info?.studentAvatar"
v-if="info?.avatar"
:src="
info?.studentAvatar.includes('upload')
? info?.studentAvatar
: '/upload' + info?.studentAvatar
info?.avatar.includes('upload')
? info?.avatar
: '/upload' + info?.avatar
"
alt=""
/>
<img v-else src="../../assets/images/studentimg/character.png" />
</div>
<div class="stumation">
<div class="stuname">{{ info.studentName }}</div>
<div class="stuname">{{ info.username }}</div>
<div class="stugangw">
{{ info.studentJobName }} {{ info.studentBandCode }}
{{ info.stdPositionName }}
</div>
<div class="stugangw">归属组织 {{ info.orgName }}</div>
</div>
</div>
<div style="display: flex; align-items: center; margin-right: 207px">
<!-- <div class="sortbox">
<div class="sortname">进度排名</div>
<div class="sortnub">
<span class="nub1">{{ info.processRankingOrder || 0 }}</span>
<span class="total">/{{ info.processRankingBase || 0 }}</span>
</div>
</div> -->
<!-- <a-divider type="vertical" style="
height: 49px;
margin-left: 34px;
background-color: rgba(170, 166, 166, 0.3);
"/> -->
<div class="sortbox" style="margin-left: 34px">
<div class="sortname">完成必修</div>
<div class="sortnub">
<span class="nub1">{{ info.finishReqTaskNum || 0 }}</span>
<span class="total">/{{ info.reqTaskNum || 0 }}</span>
<span class="nub1">{{
info.requiredCompletionNumber || 0
}}</span>
<span class="total">/{{ info.requiredNumber || 0 }}</span>
</div>
</div>
</div>
</div>
<!-- <div class="secondrow">
<div class="rowleft">{{ info?.projectInfo?.name }}</div>
</div> -->
<div class="mainbox">
<div class="main_title">{{ info?.growName }}</div>
<div class="main_title">任务列表</div>
<a-collapse
style="border: 1px solid #ddeeff; border-radius: 6px"
v-model:activeKey="stageListActive"
@@ -82,172 +70,192 @@
/>
<div></div>
</template>
<div
class="rowclass"
v-for="(item, key) in info?.growStudentDetailTaskBoList"
:key="key"
>
<div class="leftclass">
<div>
<img
:src="
item.taskType === 1
? require('../../assets/images/leveladd/zai.png')
: item.taskType === 2
? require('../../assets/images/leveladd/mian.png')
: item.taskType === 3
? require('../../assets/images/leveladd/an.png')
: item.taskType === 4
? require('../../assets/images/leveladd/zuo.png')
: item.taskType === 5
? require('../../assets/images/leveladd/kao.png')
: item.taskType === 6
? require('../../assets/images/leveladd/zhi.png')
: item.taskType === 7
? require('../../assets/images/leveladd/wai.png')
: item.taskType === 8
? require('../../assets/images/leveladd/tao.png')
: item.taskType === 9
? require('../../assets/images/leveladd/huo.png')
: item.taskType === 10
? require('../../assets/images/leveladd/ce.png')
: item.taskType === 11
? require('../../assets/images/leveladd/diao.png')
: item.taskType === 12
? require('../../assets/images/leveladd/tou.png')
: item.taskType === 13
? require('../../assets/images/leveladd/xiangmu.png')
: null
"
/>
</div>
<div class="text1">{{ item.taskTypeName }}</div>
<div class="text2" :title="item.taskName">
{{ item.taskName }}
</div>
</div>
<div class="begin_time">
<div class="text1">开始时间</div>
<div class="text1">
{{ item?.taskBeginTime?.split(".")[0] || "-" }}
</div>
</div>
<div class="begin_time">
<div class="text1">完成时间</div>
<div class="text1">
{{ item?.taskFinishTime?.split(".")[0] || "-" }}
</div>
</div>
<div style="display: flex; align-items: center">
<div class="alreadyclass">
<div class="alimg">
<img
:src="
item.status === 1
? require('../../assets/images/studentimg/complete.png')
: require('../../assets/images/studentimg/notice.png')
"
/>
</div>
<div class="altext">
{{
item.taskFinishStatus === 2
? "进行中"
: item.taskFinishStatus === 1
? "已完成"
: "未开始"
}}
</div>
</div>
<!-- <div v-if="true" class="biit">
<div class="altext">标记已完成</div>
<div style="text-align: center;">
<a-switch size="small" v-model:checked="checked"/>
</div>
</div>
<div v-else style="width: 70px;"></div> -->
</div>
</div>
</a-collapse>
<a-table
:columns="columns"
:data-source="info.studentTasksList"
:pagination="false"
>
<template #courseType="{ record }">
<div
style="
display: flex;
align-items: center;
justify-content: center;
"
>
<img
:src="
record.courseType == 1
? require('../../assets/images/leveladd/zai.png')
: record.courseType == 2
? require('../../assets/images/leveladd/mian.png')
: record.courseType == 3
? require('../../assets/images/leveladd/an.png')
: record.courseType == 4
? require('../../assets/images/leveladd/zuo.png')
: record.courseType == 5
? require('../../assets/images/leveladd/kao.png')
: record.courseType == 6
? require('../../assets/images/leveladd/zhi.png')
: record.courseType == 7
? require('../../assets/images/leveladd/wai.png')
: record.courseType == 8
? require('../../assets/images/leveladd/tao.png')
: record.courseType == 9
? require('../../assets/images/leveladd/huo.png')
: record.courseType == 10
? require('../../assets/images/leveladd/ce.png')
: record.courseType == 11
? require('../../assets/images/leveladd/diao.png')
: record.courseType == 12
? require('../../assets/images/leveladd/tou.png')
: record.courseType == 13
? require('../../assets/images/leveladd/xiangmu.png')
: null
"
/>
<div style="padding-left: 12px">
{{ TASK_TYPE[record.courseType].name }}
</div>
</div>
</template>
<template #action="{ record }">
<template
v-if="
record.completionStatus == 2 && checkGrowthPer(permissions)
"
>
<a-button type="link" @click="setPermissions(record)"
>标记已完成</a-button
>
</template>
<template v-else>
<div>--</div>
</template>
</template>
</a-table>
</div>
</div>
<div class="btnn">
<button class="btn2" @click="closeDrawer">关闭</button>
</div>
</div>
<pro-mess v-model:Provisible="Provisible" />
</a-drawer>
</template>
<script>
import { reactive, toRefs, watch } from "vue";
// import ProMess from "./ProMess.vue";
import { reactive, toRefs, watch, ref } from "vue";
import { getGrowStudentDetail } from "@/api/growthpath";
import { message } from "ant-design-vue";
import { TASK_TYPE } from "@/utils/constGrown";
import { checkGrowthPer } from "@/utils/utils";
export default {
name: "SeeStu",
components: {},
props: {
Seevisible: {
type: Boolean,
default: false,
},
studentId: {
type: Number,
default: null,
},
growId: {
type: Number,
default: null,
},
certificateNum: {
type: Number,
default: null,
},
permissions: String,
},
setup(props, ctx) {
const state = reactive({
checked: false,
seevisible: false,
loading: false,
info: {},
Provisible: false,
stageListActive: 0,
rank: {
total: 0,
current: 0,
finishCompulsoryNum: 0,
totalCompulsoryNum: 0,
certNum: 0,
TASK_TYPE: TASK_TYPE,
});
const columns = ref([
{
title: "类型",
dataIndex: "courseType",
key: "courseType",
width: 80,
align: "center",
ellipsis: true,
slots: { customRender: "courseType" },
},
});
watch([() => props.studentId, () => props.growId], () => {
check();
});
const closeDrawer = () => {
ctx.emit("update:Seevisible", false);
};
const showProMess = () => {
state.Provisible = true;
};
const check = () => {
{
title: "任务名称",
dataIndex: "taskName",
key: "taskName",
width: 80,
align: "center",
ellipsis: true,
},
{
title: "必修/选修",
dataIndex: "taskType",
key: "taskType",
width: 30,
align: "center",
ellipsis: true,
customRender: ({ record: { taskType } }) =>
({
1: "必修",
2: "选修",
}[taskType]),
},
{
title: "开始时间",
dataIndex: "startTime",
key: "startTime",
width: 50,
align: "center",
ellipsis: true,
},
{
title: "完成时间",
dataIndex: "finishTime",
key: "finishTime",
width: 50,
align: "center",
},
{
title: "任务状态",
dataIndex: "completionStatus",
key: "completionStatus",
width: 30,
align: "center",
customRender: ({ record: { completionStatus } }) =>
({
2: "进行中",
1: "已完成",
0: "未开始",
}[completionStatus]),
},
{
title: "操作",
dataIndex: "operation",
key: "operation",
width: 50,
align: "center",
slots: { customRender: "action" },
},
]);
const openDrawer = (row) => {
state.seevisible = true;
state.loading = true;
props.growId &&
props.studentId &&
getGrowStudentDetail({ growId: props.growId, sid: props.studentId })
.then((res) => {
state.loading = false;
state.info = res.data.data;
})
.catch((err) => {
state.loading = false;
message.error(err.data.msg);
});
getGrowStudentDetail({ id: row.id })
.then((res) => {
state.loading = false;
state.info = res.data.data;
})
.catch((err) => {
state.loading = false;
message.error(err.data.msg);
});
};
const closeDrawer = () => {
state.seevisible = false;
};
return {
...toRefs(state),
closeDrawer,
showProMess,
openDrawer,
columns,
checkGrowthPer,
};
},
};
@@ -268,6 +276,18 @@ export default {
padding: 0;
}
}
.ant-table-row .ant-table-cell {
height: 48px;
font-size: 14px;
font-weight: 400;
color: #4f5156;
line-height: 29px;
padding: 0px;
}
.ant-table-thead tr th {
font-size: 14px;
}
.drawerMain {
min-width: 600px;