# Conflicts:
#	src/views/gratefulteacher/LecturerManagement.vue
This commit is contained in:
zhangsir
2024-05-13 20:01:56 +08:00
18 changed files with 467 additions and 394 deletions

View File

@@ -121,4 +121,9 @@ export const deleteCourse = (data) => http.post('/activityApi/examine/deleteCour
export const addCourse = (data) => http.post('/activityApi/examine/addCourse',data) export const addCourse = (data) => http.post('/activityApi/examine/addCourse',data)
//保存导入的教师信息 //保存导入的教师信息
export const saveTeacher = (data) => http.post('/activityApi/teacher/saveTeacher',data) export const saveTeacher = (data) => http.post('/activityApi/teacher/saveTeacher',data)
//退回初稿或终稿
export const backDraft = (data) => http.post('/activityApi/examine/rejected',data)
//获取教师详情
export const getDataById = (data) => http.post('/activityApi/teacher/getDataById',data)
//获取认证状态
export const getCertificationProcess = (data) => http.post('/activityApi/teacher/getCertificationProcess',data)

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 834 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -96,7 +96,7 @@
</div> </div>
<div class="cancel" style="margin-left: 15px"></div> <div class="cancel" style="margin-left: 15px"></div>
</div> </div>
<div class="defeat"> <div class="defeat" v-if="errorIds.length > 0">
<div class="detext" @click="downloadEeeorData"> <div class="detext" @click="downloadEeeorData">
下载失败数据 下载失败数据
</div> </div>
@@ -232,6 +232,9 @@ export default {
teacherIds:state.successIds teacherIds:state.successIds
}).then(res=>{ }).then(res=>{
console.log(res,'res') console.log(res,'res')
if(res.code == 200){
ctx.emit("AddImpStuvisibleClose", state.isAddStudent);
}
}) })
state.successIds = [] state.successIds = []
state.errorIds = [] state.errorIds = []
@@ -246,7 +249,7 @@ export default {
state.downloadErrUrl = ""; state.downloadErrUrl = "";
ctx.emit("update:AddImpStuvisible", false); ctx.emit("update:AddImpStuvisible", false);
// 通知父组件重新获取学员列表 // 通知父组件重新获取学员列表
ctx.emit("AddImpStuvisibleClose", state.isAddStudent); // ctx.emit("AddImpStuvisibleClose", state.isAddStudent);
state.isAddStudent = false; state.isAddStudent = false;
}; };
@@ -327,8 +330,8 @@ export default {
// 下载失败数据 // 下载失败数据
const downloadEeeorData = () => { const downloadEeeorData = () => {
if (state.downloadErrUrl !== "") { if (state.errorIds.length !== 0) {
window.open(`/activityApi/teacher/errorExport?ids=${state.errorIds}`); window.open(`/activityApi/teacher/errorExport?ids=${state.errorIds.join(',')}`);
} }
}; };

View File

@@ -128,6 +128,15 @@ const OnlineLearning = async () => {
} }
}) })
} }
//创建认证
const createData = () => {
createParam.value = {
name: '',
description: '',
cover: '',
}
visible.value = true
}
//删除数据 //删除数据
const deleteReview = (record) =>{ const deleteReview = (record) =>{
dialog({ dialog({
@@ -202,6 +211,7 @@ console.log(999);
} }
//重置 //重置
const handleRest = ()=>{ const handleRest = ()=>{
searchValue.value = null
getlist() getlist()
} }
@@ -367,7 +377,7 @@ function handleOper(record, type, status = "") {
<div class="btns" @click="centerDialogVisible=true"> <div class="btns" @click="centerDialogVisible=true">
<div class="btn btn3"> <div class="btn btn3">
<div class="search"></div> <div class="search"></div>
<div class="btnText" @click="visible=true">创建认证</div> <div class="btnText" @click="createData">创建认证</div>
</div> </div>
</div> </div>

View File

@@ -1,10 +1,10 @@
<script setup> <script setup >
import { ref, reactive, onMounted, computed } from 'vue' import { ref,reactive,onMounted,computed } from 'vue'
import { message } from 'ant-design-vue'; import { message } from 'ant-design-vue';
import AddInstructor from './AddInstructor.vue' import AddInstructor from './AddInstructor.vue'
import LeadInstructor from './LeadInstructor.vue' import LeadInstructor from './LeadInstructor.vue'
import { useRoute, useRouter } from 'vue-router' import { useRoute, useRouter } from 'vue-router'
import { getTeacherList, deleTeTeacher, getReview, delreview, reviewdetail, reviewSave, endreview, addTeacher, editreview } from '@/api/examineApi.js' import {getTeacherList,deleTeTeacher,getReview,delreview,reviewdetail,reviewSave,endreview,addTeacher,editreview,backDraft,getDataById,getCertificationProcess} from '@/api/examineApi.js'
import dialog from "@/utils/dialog"; import dialog from "@/utils/dialog";
// import QrCode from './QrCode.vue' // import QrCode from './QrCode.vue'
import ViewReview from './ViewReview.vue' import ViewReview from './ViewReview.vue'
@@ -35,13 +35,13 @@ const CancelReview = ()=>{
const namelist = ref([]) const namelist = ref([])
//表格点击时间 //表格点击时间
const rowClick = (record) => { const rowClick = (record) => {
return { return {
onClick: () => { onClick: () => {
namelist.value.push(record.teacherName) namelist.value.push(record.teacherName)
console.log(record); console.log(record);
console.log(namelist.value); console.log(namelist.value);
}, },
} }
} }
@@ -70,11 +70,11 @@ const startReviewSave = async () => {
}).then(res => { }).then(res => {
console.log(res); console.log(res);
message.info('添加成功'); message.info('添加成功');
rwname.value = null rwname.value = null
InitiateReviewShow.value = false InitiateReviewShow.value = false
getReviewList() getReviewList()
return return
}).catch(err => { }).catch(err => {
@@ -221,6 +221,17 @@ const columnsTeacher = [
dataIndex: 'reviewTime', dataIndex: 'reviewTime',
}, },
] ]
//认证流程
const attestation = [
{name:'初稿已上传',success:'su3.png',error:'',initial:''},
{name:'线上学习已完成',success:'su4.png',error:'',initial:'s1.png'},
{name:'线下辅导已完成',success:'su5.png',error:'',initial:'s2.png'},
{name:'终稿已上传',success:'su1.png',error:'',initial:'s3.png'},
{name:'认证未通过',success:'su2.png',error:'e1.png',initial:'s4.png'},
{name:'线下辅导已完成',success:'su5.png',error:'',initial:'s2.png'},
{name:'终稿已上传',success:'su1.png',error:'',initial:'s3.png'},
{name:'认证',success:'su2.png',error:'e1.png',initial:'s4.png'},
]
//老师重置 //老师重置
const resetTeacher = () => { const resetTeacher = () => {
addTeacherList() addTeacherList()
@@ -352,7 +363,7 @@ const searchReview = async () => {
// return message.info('搜索内容不能为空'); // return message.info('搜索内容不能为空');
// } // }
// console.log(reviewValue.value.trim().length); // console.log(reviewValue.value.trim().length);
const res = await getReview({ const res = await getReview({
pageNo: ReviewPageNo.value, pageNo: ReviewPageNo.value,
@@ -405,36 +416,53 @@ function handleOper(record, type, status = "") {
}); });
} }
//搜索教师 //搜索教师
const SearchTeachers = async () => { const SearchTeachers =async()=>{
const res = await getTeacherList({ const res = await getTeacherList({
PageNo: 1, pageNo: 1,
PageSize: 8, pageSize: 8,
examineId: route.query.id.toString(), examineId: route.query.id,
secondResult: value2.value.toString(), secondResult: value2.value,
reviewResult: value.value.toString(), reviewResult:value.value,
keyWord: value3.value.toString() keyWord:value3.value
}) })
total.value = res.data.total
data.value = res.data.records
if(value2.value=='1'){
getTeacher2()
}
} }
//重置教师 //重置教师
const handleRest = () => { const handleRest=()=>{
value2.value = null
value.value = null
value3.value = null
getTeacher() getTeacher()
getTeacher2()
}
//刷新列表
const translateTeacher = (flag) => {
handleRest()
}
const translate = (flag) => {
handleRest()
} }
//2次认证 //2次认证
const total2 = ref(null) const total2 = ref(null)
const data2 = ref([]) const data2 = ref([])
//教师列表2 //教师列表2
const getTeacher2 = async () => { const getTeacher2 =async()=>{
const res = await getTeacherList({ const res = await getTeacherList({
PageNo: 1, pageNo: 1,
PageSize: 8, pageSize: 8,
examineId: route.query.id.toString(), examineId: route.query.id.toString(),
secondResult: '0', secondResult: '1',
reviewResult:value.value,
}) keyWord:value3.value
console.log(res, 'resaaaa') })
total2.value = res.data.total console.log(res,'resaaaa')
data2.value = res.data.records total2.value = res.data.total
data2.value = res.data.records
} }
//讲师列表 //讲师列表
const total = ref(null) const total = ref(null)
@@ -446,16 +474,16 @@ const onChangeTeacher = (pageNo, pageSize) => {
getTeacher() getTeacher()
}; };
//教师列表 //教师列表
const getTeacher = async () => { const getTeacher =async()=>{
const res = await getTeacherList({ const res = await getTeacherList({
PageNo: current1.value, pageNo: current1.value,
PageSize: 8, pageSize: 8,
examineId: route.query.id.toString(), examineId: route.query.id.toString(),
secondResult: "0" secondResult: "0"
}) })
console.log(res, 'resaaaa') console.log(res,'resaaaa')
total.value = res.data.total total.value = res.data.total
data.value = res.data.records data.value = res.data.records
} }
// 提交 // 提交
@@ -473,7 +501,7 @@ onMounted(() => {
} }
getTeacher() getTeacher()
getReviewList() getReviewList()
// getTeacher2() getTeacher2()
}) })
const activeName = ref('first') const activeName = ref('first')
const ViewReviewShow = ref(null) const ViewReviewShow = ref(null)
@@ -571,6 +599,52 @@ const twiceolumns = [
key: 'action', key: 'action',
}, },
]; ];
const twiceolumnsOne = [
{
title: '序号',
dataIndex: 'index',
key: 'index',
customRender: ({ text,record,index }) => index + 1
},
{
title: '评委姓名',
dataIndex: 'judgesName',
key: 'judgesName',
},
{
title: '评委工号',
dataIndex: 'judgesWorkNum',
key: 'judgesWorkNum',
},
{
title: '评分',
dataIndex: 'score',
key: 'score',
},
];
const twiceolumnsTwo = [
{
title: '序号',
dataIndex: 'index',
key: 'index',
customRender: ({ text,record,index }) => index + 1
},
{
title: '评委姓名',
dataIndex: 'judgesName',
key: 'judgesName',
},
{
title: '评委工号',
dataIndex: 'judgesWorkNum',
key: 'judgesWorkNum',
},
{
title: '评分',
dataIndex: 'score',
key: 'score',
},
]
const selectedRowKeysList = ref(null) const selectedRowKeysList = ref(null)
const rowSelection = { const rowSelection = {
onChange: async (selectedRowKeys, selectedRows) => { onChange: async (selectedRowKeys, selectedRows) => {
@@ -593,7 +667,7 @@ const teacherRowSelection = {
// 使用Set数据结构进行数组去重 // 使用Set数据结构进行数组去重
let uniqueArr = [...new Set(arr.value)]; let uniqueArr = [...new Set(arr.value)];
console.log(uniqueArr); // 去重后的数组 console.log(uniqueArr); // 去重后的数组
selectedRows.forEach((item, index) => { selectedRows.forEach((item, index) => {
teacherNames.value.push(item.teacherName) teacherNames.value.push(item.teacherName)
}) })
@@ -617,10 +691,49 @@ const delVisible = ref(false)
const activeKey = ref('1'); const activeKey = ref('1');
const showViewInstructor = ref(false) const showViewInstructor =ref(false)
const show = () => { const techerDetail = ref(null)
showViewInstructor.value = true const processData = ref()
const show= async (record)=>{
showViewInstructor.value=true
await getDataById({teacherId:record.teacherId}).then(res=>{
console.log(res,'res')
if(res.code == 200){
console.log(res.data,'data')
techerDetail.value = res.data
}
})
await getCertificationProcess({teacherId:record.teacherId}).then(res=>{
console.log(res,'getCertificationProcess')
processData = res.data
})
}
const returnPage = (record) => {
console.log(record,'record')
dialog({
content: "确定退回初稿吗?",
ok:()=>{
backDraft({
teacherId:record.id,
version:0
}).then(res=>{
console.log(res,'res')
})
}
});
}
const returnPageTwo = (record) => {
dialog({
content: "确定退回初稿吗?",
ok:()=>{
backDraft({
teacherId:record.id,
version:1
}).then(res=>{
console.log(res,'res')
})
}
});
} }
const InitiateReviewShow = ref(false) const InitiateReviewShow = ref(false)
//二维码显示 //二维码显示
@@ -689,183 +802,183 @@ const vwtext = ref(null)
</a-select> </a-select>
</div> </div>
<div class="select" style="margin-left: 15px;"> <div class="select" style="margin-left: 15px;">
<a-select v-model:value="value2" style="width: 270px; border-radius: 8px" placeholder="请选择二次认证"> <a-select v-model:value="value2" style="width: 270px; border-radius: 8px" placeholder="请选择二次认证" >
<a-select-option value="1"></a-select-option> <a-select-option value="1"></a-select-option>
<a-select-option value="0"></a-select-option> <a-select-option value="0"></a-select-option>
</a-select> </a-select>
</div> </div>
<div style="display: flex; margin-left: 20px"> <div style="display: flex; margin-left: 20px">
<div class="btn btn1" @click="SearchTeachers()"> <div class="btn btn1" @click="SearchTeachers()">
<div class="search"></div> <div class="search"></div>
<div class="btnText">搜索</div> <div class="btnText">搜索</div>
</div>
<div class="btn btn2" style="width: 105px" @click="handleRest">
<div class="search"></div>
<div class="btnText">重置</div>
</div>
</div> </div>
<div class="btn btn2" style="width: 105px" @click="handleRest"> </div>
<div class="search"></div>
<div class="btnText">重置</div> <div style="display: flex; align-items: center; margin-top: 15px;margin-bottom: 15px;">
<div class="btns" style="margin-left: 15px;">
<proj-check-ship @finash="translate">
<div class="btn btn3">
<div class="search"></div>
<div class="btnText" @click="Tecvisible=true">添加讲师</div>
</div>
</proj-check-ship>
</div>
<div class="btns" style="margin-left: 15px;">
<div class="btn btn3">
<div class="search"></div>
<div class="btnText" @click="AddImpStuvisible=true">导入讲师</div>
</div>
</div> </div>
</div> <a-button type="primary" @click="exportExcel" style="color: #fff ;background-color: #4ea6ff; width: 100px; height: 40px; border-radius: 8px;margin-left: 15px; padding-left: 10px;">导出讲师</a-button>
</div> <a-button type="primary" @click="batchhandleOper()" style="width: 100px; height: 40px; border-radius: 8px;margin-left: 12px; padding-left: 10px;" ghost>批量删除</a-button>
</div>
<!-- 表格 -->
<div style="display: flex; flex-direction: column;margin-left: 15px">
<div class="table">
<a-table :row-selection="rowSelection" row-key="id" :columns="columns" :data-source="data" :scroll="{ x: 1000 }" :pagination="false">
<template #headerCell="{ column }">
<template v-if="column.key === 'name'">
<span>
姓名
</span>
</template>
</template>
<div style="display: flex; align-items: center; margin-top: 15px;margin-bottom: 15px;"> <template #bodyCell="{ column, record }">
<div class="btns" style="margin-left: 15px;"> <template v-if="column.key === 'name'">
<proj-check-ship> <a>
<div class="btn btn3"> {{ record.name }}
<div class="search"></div> </a>
<div class="btnText" @click="Tecvisible = true">添加讲师</div> </template>
</div>
</proj-check-ship> <template v-else-if="column.key === 'draftStatus'">
<span>
{{ text===1?'未开始':(text===2?'进行中':'已完成') }}
</span>
</template>
<template v-else-if="column.key === 'onlineLearning'">
<span>
{{ text===1?'未开始':(text===2?'进行中':'已完成') }}
</span>
</template> <template v-else-if="column.key === 'offlineTutoring'">
<span>
{{ text===1?'未开始':(text===2?'进行中':'已完成') }}
</span>
</template> <template v-else-if="column.key === 'endStatus'">
<span>
{{ text===1?'未开始':(text===2?'进行中':'已完成') }}
</span>
</template>
<template v-else-if="column.key === 'reviewResult'">
<span>
{{ text===1?'未开始':(text===2?'进行中':'已完成') }}
</span>
</template>
<template v-else-if="column.key === 'action'">
<span style="text-align: center;">
<a style="margin-right: 7px;" @click="show(record)">
查看
</a>
<a v-if="record.draftStatus == 0" style="margin-right: 7px;" @click="returnPage(record)">
退回初稿
</a>
<a style="color: #de2139" @click="handleOper(record, 'del')">删除</a>
</span>
</template>
</template>
</a-table>
</div>
</div>
<div style="text-align: center; margin-top: 18px;">
<a-pagination :showSizeChanger="false" v-model:current="current1" show-quick-jumper :total="total" @change="onChangeTeacher" />
</div>
<div style="height: 1px; width: 100%; background-color: #eceff4; margin-top: 15px;margin-left: 14px;"></div>
<div style="margin-left: 14px; margin-top: 15px;margin-bottom: 12px;" >二次认证</div>
<div style="display: flex; flex-direction: column;margin-left: 15px">
<div class="table">
<a-table :row-selection="rowSelection" row-key="id" :columns="twiceolumns" :data-source="data2" :scroll="{ x: 1000 }" :pagination="false">
<template #headerCell="{ column }">
<template v-if="column.key === '姓名'">
<span>
姓名
</span>
</template>
</template>
</div> <template #bodyCell="{ column, record,text }">
<div class="btns" style="margin-left: 15px;"> <template v-if="column.key === 'name'">
<div class="btn btn3"> <a>
<div class="search"></div> {{ record.name }}
<div class="btnText" @click="AddImpStuvisible = true">导入讲师</div> </a>
</div> </template>
</div>
<a-button type="primary" <template v-else-if="column.key === 'draftStatus'">
style="color: #fff ;background-color: #4ea6ff; width: 100px; height: 40px; border-radius: 8px;margin-left: 15px; padding-left: 10px;">导出讲师</a-button> <span>
<a-button type="primary" @click="batchhandleOper()" {{ text===1?'未开始':(text===2?'进行中':'已完成') }}
style="width: 100px; height: 40px; border-radius: 8px;margin-left: 12px; padding-left: 10px;" </span>
ghost>批量删除</a-button> </template>
</div> <template v-else-if="column.key === 'onlineLearning'">
<!-- 表格 --> <span>
<div style="display: flex; flex-direction: column;margin-left: 15px"> {{ text===1?'未开始':(text===2?'进行中':'已完成') }}
<div class="table"> </span>
<a-table :row-selection="rowSelection" row-key="id" :columns="columns" :data-source="data" </template> <template v-else-if="column.key === 'offlineTutoring'">
:scroll="{ x: 1000 }" :pagination="false"> <span>
<template #headerCell="{ column }"> {{ text===1?'未开始':(text===2?'进行中':'已完成') }}
<template v-if="column.key === 'name'"> </span>
<span> </template> <template v-else-if="column.key === 'endStatus'">
姓名 <span>
</span> {{ text===1?'未开始':(text===2?'进行中':'已完成') }}
</template> </span>
</template> </template>
<template v-else-if="column.key === 'reviewResult'">
<template #bodyCell="{ column, record }"> <span>
<template v-if="column.key === 'name'"> {{ text===1?'未开始':(text===2?'进行中':'已完成') }}
<a> </span>
{{ record.name }} </template>
</a> <template v-else-if="column.key === 'action'">
</template> <span style="text-align: center;">
<template v-else-if="column.key === 'draftStatus'"> <a style="margin-right: 7px;">
<span> 查看
{{ text === 1 ? '未开始' : (text === 2 ? '进行中' : '已完成') }} </a>
</span> <a v-if="record.draftStatus == 0" style="margin-right: 7px;" @click="returnPageTwo(record)">
</template> 退回终稿
<template v-else-if="column.key === 'onlineLearning'"> </a>
<span> <a style="color: #de2139">删除</a>
{{ text === 1 ? '未开始' : (text === 2 ? '进行中' : '已完成') }} </span>
</span> </template>
</template> <template v-else-if="column.key === 'offlineTutoring'"> </template>
<span> </a-table>
{{ text === 1 ? '未开始' : (text === 2 ? '进行中' : '已完成') }} </div>
</span> </div>
</template> <template v-else-if="column.key === 'endStatus'">
<span>
{{ text === 1 ? '未开始' : (text === 2 ? '进行中' : '已完成') }}
</span>
</template>
<template v-else-if="column.key === 'reviewResult'">
<span>
{{ text === 1 ? '未开始' : (text === 2 ? '进行中' : '已完成') }}
</span>
</template>
<template v-else-if="column.key === 'action'">
<span style="text-align: center;">
<a style="margin-right: 7px;" @click="show()">
查看
</a>
<a style="margin-right: 7px;" @click="show()">
退回初搞
</a>
<a style="color: #de2139" @click="handleOper(record, 'del')">删除</a>
</span>
</template>
</template>
</a-table>
</div>
</div>
<div style="text-align: center; margin-top: 18px;">
<a-pagination :showSizeChanger="false" v-model:current="current1" show-quick-jumper :total="total"
@change="onChangeTeacher" />
</div>
<div style="height: 1px; width: 100%; background-color: #eceff4; margin-top: 15px;margin-left: 14px;"></div>
<div style="margin-left: 14px; margin-top: 15px;margin-bottom: 12px;">二次认证</div>
<div style="display: flex; flex-direction: column;margin-left: 15px">
<div class="table">
<a-table :row-selection="rowSelection" row-key="id" :columns="twiceolumns" :data-source="data2"
:scroll="{ x: 1000 }" :pagination="false">
<template #headerCell="{ column }">
<template v-if="column.key === '姓名'">
<span>
姓名
</span>
</template>
</template>
<template #bodyCell="{ column, record, text }">
<template v-if="column.key === 'name'">
<a>
{{ record.name }}
</a>
</template>
<template v-else-if="column.key === 'draftStatus'">
<span>
{{ text === 1 ? '未开始' : (text === 2 ? '进行中' : '已完成') }}
</span>
</template>
<template v-else-if="column.key === 'onlineLearning'">
<span>
{{ text === 1 ? '未开始' : (text === 2 ? '进行中' : '已完成') }}
</span>
</template> <template v-else-if="column.key === 'offlineTutoring'">
<span>
{{ text === 1 ? '未开始' : (text === 2 ? '进行中' : '已完成') }}
</span>
</template> <template v-else-if="column.key === 'endStatus'">
<span>
{{ text === 1 ? '未开始' : (text === 2 ? '进行中' : '已完成') }}
</span>
</template>
<template v-else-if="column.key === 'reviewResult'">
<span>
{{ text === 1 ? '未开始' : (text === 2 ? '进行中' : '已完成') }}
</span>
</template>
<template v-else-if="column.key === 'action'">
<span style="text-align: center;">
<a style="margin-right: 7px;">
查看
</a>
<a style="color: #de2139">删除</a>
</span>
</template>
</template>
</a-table>
</div>
</div>
</div> </div>
<LeadInstructor :imprtlecturer='imprtlecturer' @CloseImprt="showImprtlecturer"></LeadInstructor> <!-- <LeadInstructor :imprtlecturer='imprtlecturer' @CloseImprt="showImprtlecturer"></LeadInstructor>
<AddInstructor :AddSwitch="AddSwitch" @myClick="handleChildEmit"></AddInstructor> <AddInstructor :AddSwitch="AddSwitch" @myClick="handleChildEmit"></AddInstructor>
<proj-check-ship> <proj-check-ship>
<a-button class="cus-btn" style="background: #4ea6ff; color: #fff"> <a-button class="cus-btn" style="background: #4ea6ff; color: #fff">
<template #icon><img style="margin-right: 10px" <template #icon
src="../../assets/images/courseManage/add0.png" /></template> ><img
添加学员 style="margin-right: 10px"
</a-button> src="../../assets/images/courseManage/add0.png"
</proj-check-ship> /></template>
<!-- 导入学员抽屉 --> 添加学员
<imp-stu v-model:AddImpStuvisible="AddImpStuvisible" /> </a-button>
</a-tab-pane> </proj-check-ship> -->
<!-- 导入讲师抽屉 -->
<imp-stu @AddImpStuvisibleClose="translateTeacher" v-model:AddImpStuvisible="AddImpStuvisible" :courseId="route.query.id"/>
</a-tab-pane>
<a-tab-pane key="2" tab="发起评审" force-render> <a-tab-pane key="2" tab="发起评审" force-render>
<!-- <QrCode ></QrCode> --> <!-- <QrCode ></QrCode> -->
@@ -922,7 +1035,7 @@ const vwtext = ref(null)
<a v-if="record.examineResult === 0" style="margin-right: 7px;" <a v-if="record.examineResult === 0" style="margin-right: 7px;"
@click="handleMenuClick(record.reviewName, record.reviewTime.slice(0, 7), record)">二维码</a> @click="handleMenuClick(record.reviewName, record.reviewTime.slice(0, 7), record)">二维码</a>
<div> <div>
<a style="margin-right: 7px;" <a style="margin-right: 7px;"
@click='getreviewdetail({ reviewId: record.id, examineId: route.query.id }), vwtext = record.id'>查看</a> @click='getreviewdetail({ reviewId: record.id, examineId: route.query.id }), vwtext = record.id'>查看</a>
@@ -1057,7 +1170,7 @@ const vwtext = ref(null)
<div class="ch" ></div> <div class="ch" ></div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
@@ -1071,178 +1184,115 @@ const vwtext = ref(null)
<div class="drawerMain"> <div class="drawerMain">
<div class="header"> <div class="header">
<div class="headerTitle">查看讲师</div> <div class="headerTitle">查看讲师</div>
<img style="width: 29px; height: 29px; cursor: pointer" src="../../assets/images/basicinfo/close.png" <img v-if="techerDetail?.avatar" style="width: 29px; height: 29px; cursor: pointer" :src="techerDetail?.avatar"/>
@click="closeDrawer" /> <img
v-else
style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png"
/>
</div> </div>
<div> <div >
<div style="display: flex;width: 100%; height: 88px;"> <div style="display: flex;width: 100%; height: 88px;">
<div> <div>
<img src="../../assets/2.png" alt=""> <img src="../../assets/2.png" alt="">
</div> </div>
<div style="margin-left: 18px;"> <div style="margin-left: 18px;">
<div style="font-size: 18px;font-weight: 500;color: #333333;line-height: 25px;font-style: normal;">张三 <div style="font-size: 18px;font-weight: 500;color: #333333;line-height: 25px;font-style: normal;">{{techerDetail?.teacherName}} {{techerDetail?.workNo}}<span style="margin-left: 8px;"> 01011098</span></div>
<span style="margin-left: 8px;"> 01011098</span></div> <div style="font-size: 14px;color: #979797;margin-top: 12px;">{{techerDetail?.orgName}}</div>
<div style="font-size: 14px;color: #979797;margin-top: 12px;">后台(业务支援体系)/BOEU/企划中心/数据资产部数据资产部</div> <div style="font-size: 14px;color: #979797;">{{techerDetail?.orgPath}} {{techerDetail?.bandCode}}</div>
<div style="font-size: 14px;color: #979797;">产品企划岗 Band 1</div> </div>
</div>
</div>
<div style="margin-top: 24px">
<div style="display:flex;">
<div style="padding-left:16px; width: 136px;height: 56px;background: #FFFFFF;border: 1px solid #F0F6FC;line-height: 56px;">认证课程名称</div>
<div style="width: 559px;height: 56px;line-height: 56px;border: 1px solid #F0F6FC;padding-left:16px;">{{techerDetail?.courseName}}</div>
<div style="width: 136px;height: 56px;line-height: 56px;background: #FFFFFF;border: 1px solid #F0F6FC;padding-left:16px;">课程内容分类</div>
<div style="width: 342px;height: 56px;line-height: 56px;border: 1px solid #F0F6FC;padding-left:16px;">{{techerDetail?.courseContent}}</div>
</div> </div>
<div style="margin-top: 24px"> <div style="display:flex;">
<div style="display:flex;"> <div style="padding-left:16px; width: 136px;height: 56px;background: #FFFFFF;border: 1px solid #F0F6FC;line-height: 56px;">课程简介</div>
<div <div style="width: 559px;height: 56px;line-height: 56px;border: 1px solid #F0F6FC;padding-left:16px;">{{techerDetail?.courseIntroduction}}</div>
style="padding-left:16px; width: 136px;height: 56px;background: #FFFFFF;border: 1px solid #F0F6FC;line-height: 56px;">
认证课程名称</div>
<div style="width: 559px;height: 56px;line-height: 56px;border: 1px solid #F0F6FC;padding-left:16px;">
关于提升学习能力
</div>
<div
style="width: 136px;height: 56px;line-height: 56px;background: #FFFFFF;border: 1px solid #F0F6FC;padding-left:16px;">
课程内容分类</div>
<div style="width: 342px;height: 56px;line-height: 56px;border: 1px solid #F0F6FC;padding-left:16px;">影响力
</div>
</div> </div>
<div style="display:flex;"> <div style="display:flex;">
<div <div style="padding-left:16px; width: 136px;height: 56px;background: #FFFFFF;border: 1px solid #F0F6FC;line-height: 56px;">课程终稿</div>
style="padding-left:16px; width: 136px;height: 56px;background: #FFFFFF;border: 1px solid #F0F6FC;line-height: 56px;"> <div style="width: 559px;height: 56px;line-height: 56px;border: 1px solid #F0F6FC;padding-left:16px;">
课程简介</div> <img src="" alt="">
<div style="width: 559px;height: 56px;line-height: 56px;border: 1px solid #F0F6FC;padding-left:16px;"> 学习能力提升课件.pptx
这是我的认证课程关于提升学习能力的课程</div> <a href="">下载</a>
</div>
<div style="width: 136px;height: 56px;line-height: 56px;background: #FFFFFF;border: 1px solid #F0F6FC;padding-left:16px;">上传时间</div>
</div> <div style="width: 342px;height: 56px;line-height: 56px;border: 1px solid #F0F6FC;padding-left:16px;">{{techerDetail?.uploadTime}}</div>
<div style="display:flex;">
<div
style="padding-left:16px; width: 136px;height: 56px;background: #FFFFFF;border: 1px solid #F0F6FC;line-height: 56px;">
课程终稿</div>
<div style="width: 559px;height: 56px;line-height: 56px;border: 1px solid #F0F6FC;padding-left:16px;">
<img src="" alt="">
学习能力提升课件.pptx
<a href="">下载</a>
</div>
<div
style="width: 136px;height: 56px;line-height: 56px;background: #FFFFFF;border: 1px solid #F0F6FC;padding-left:16px;">
上传时间</div>
<div style="width: 342px;height: 56px;line-height: 56px;border: 1px solid #F0F6FC;padding-left:16px;">
2024.04.10 20:58</div>
</div> </div>
</div> </div>
<div style='font-size: 18px;font-weight: 500;margin-top: 39px;'> <div style='font-size: 18px;font-weight: 500;margin-top: 39px;'>
认证流程 认证流程
</div> </div>
<div <div style="margin-top: 13px; height: 125px;width: 100%;display: flex;align-items: center;justify-content: center;" >
style="margin-top: 13px; height: 125px;width: 100%;display: flex;align-items: center;justify-content: center;"> <div class="step_box" v-for="item in 5">
<div style="display: flex;width: 70px;height: 78px;flex-direction: column;align-items: center"> <div v-if="item != 1" style="height: 1px;width: 81px;background-color: #DEDEDE;"></div>
<img src="../../assets/8.png" alt=""> <div style="display: flex;width: 70px;height: 78px;flex-direction: column;align-items: center">
<div style="color: #409EFF;font-size: 14px;">初稿已上传</div> <img src="../../assets/8.png" alt="">
</div> <div style="color: #409EFF;font-size: 14px;">初稿已上传</div>
<div style="height: 1px;width: 81px;background-color: #DEDEDE;"></div> </div>
<div style="display: flex;width: 70px;height: 78px;flex-direction: column;align-items: center"> </div>
<img src="../../assets/8.png" alt=""> <!-- <div style="display: flex;width: 70px;height: 78px;flex-direction: column;align-items: center">
<div style="color: #409EFF;font-size: 14px;">初稿已上传</div> <img src="../../assets/8.png" alt="">
</div> <div style="color: #409EFF;font-size: 14px;">初稿已上传</div>
<div style="height: 1px;width: 81px;background-color: #DEDEDE;"></div> </div>
<div style="display: flex;width: 70px;height: 78px;flex-direction: column;align-items: center"> <div style="height: 1px;width: 81px;background-color: #DEDEDE;"></div>
<img src="../../assets/8.png" alt=""> <div style="display: flex;width: 70px;height: 78px;flex-direction: column;align-items: center">
<div style="color: #409EFF;font-size: 14px;">初稿已上传</div> <img src="../../assets/8.png" alt="">
</div> <div style="color: #409EFF;font-size: 14px;">初稿已上传</div>
<div style="height: 1px;width: 81px;background-color: #DEDEDE;"></div> </div>
<div style="display: flex;width: 70px;height: 78px;flex-direction: column;align-items: center"> <div style="height: 1px;width: 81px;background-color: #DEDEDE;"></div>
<img src="../../assets/8.png" alt=""> <div style="display: flex;width: 70px;height: 78px;flex-direction: column;align-items: center">
<div style="color: #409EFF;font-size: 14px;">初稿已上传</div> <img src="../../assets/8.png" alt="">
</div> <div style="color: #409EFF;font-size: 14px;">初稿已上传</div>
<div style="height: 1px;width: 81px;background-color: #DEDEDE;"></div> </div>
<div style="display: flex;width: 70px;height: 78px;flex-direction: column;align-items: center"> <div style="height: 1px;width: 81px;background-color: #DEDEDE;"></div>
<img src="../../assets/8.png" alt=""> <div style="display: flex;width: 70px;height: 78px;flex-direction: column;align-items: center">
<div style="color: #409EFF;font-size: 14px;">初稿已上传</div> <img src="../../assets/8.png" alt="">
</div> <div style="color: #409EFF;font-size: 14px;">初稿已上传</div>
<div style="height: 1px;width: 81px;background-color: #DEDEDE;"></div> </div>
<div style="display: flex;width: 70px;height: 78px;flex-direction: column;align-items: center"> <div style="height: 1px;width: 81px;background-color: #DEDEDE;"></div>
<img src="../../assets/8.png" alt=""> <div style="display: flex;width: 70px;height: 78px;flex-direction: column;align-items: center">
<div style="color: #409EFF;font-size: 14px;">初稿已上传</div> <img src="../../assets/8.png" alt="">
</div> <div style="color: #409EFF;font-size: 14px;">初稿已上传</div>
<div style="height: 1px;width: 81px;background-color: #DEDEDE;"></div> </div>
<div style="display: flex;width: 70px;height: 78px;flex-direction: column;align-items: center"> <div style="height: 1px;width: 81px;background-color: #DEDEDE;"></div>
<img src="../../assets/8.png" alt=""> <div style="display: flex;width: 70px;height: 78px;flex-direction: column;align-items: center">
<div style="color: #409EFF;font-size: 14px;">初稿已上传</div> <img src="../../assets/8.png" alt="">
</div> <div style="color: #409EFF;font-size: 14px;">初稿已上传</div>
<div style="height: 1px;width: 81px;background-color: #DEDEDE;"></div> </div>
<div style="height: 1px;width: 81px;background-color: #DEDEDE;"></div>
<div style="display: flex;width: 70px;height: 78px;flex-direction: column;align-items: center"> <div style="display: flex;width: 70px;height: 78px;flex-direction: column;align-items: center">
<img src="../../assets/8.png" alt=""> <img src="../../assets/8.png" alt="">
<div style="color: #409EFF;font-size: 14px;">初稿已上传</div> <div style="color: #409EFF;font-size: 14px;">初稿已上传</div>
</div> </div> -->
</div> </div>
<div style="font-size: 14px;margin-bottom: 15px;">评委打分信息表</div> <div style="font-size: 14px;margin-bottom: 15px;">评委打分信息表</div>
<div> <div>
<a-table :columns="twiceolumns" :data-source="data" :scroll="{ x: 1000 }" :pagination="false"> <a-table :columns="twiceolumnsOne" :data-source="techerDetail?.firstList" :scroll="{ x: 1000 }" :pagination="false">
<template #headerCell="{ column }">
<template v-if="column.key === 'name'">
<span>
姓名
</span>
</template>
</template>
<template #bodyCell="{ column, record }"> </a-table>
<template v-if="column.key === 'name'"> </div>
<a> <div style="font-size: 14px;margin-bottom: 19px;margin-top: 40px;font-size: 18px;font-weight: 500;">二次认证</div>
{{ record.name }} <div style="font-size: 14px;margin-bottom: 15px;">评委打分信息表</div>
</a> <div>
</template> <a-table :columns="twiceolumnsTwo" :data-source="techerDetail?.secondList" :scroll="{ x: 1000 }" :pagination="false">
<template v-else-if="column.key === 'tags'"> </a-table>
<span> </div>
<a-tag v-for="tag in record.tags" :key="tag" <div>
:color="tag === 'loser' ? 'volcano' : tag.length > 5 ? 'geekblue' : 'green'">
{{ tag.toUpperCase() }}
</a-tag>
</span>
</template>
<template v-else-if="column.key === 'action'">
</template>
</template>
</a-table>
</div>
<div style="font-size: 14px;margin-bottom: 19px;margin-top: 40px;font-size: 18px;font-weight: 500;">二次认证</div>
<div style="font-size: 14px;margin-bottom: 15px;">评委打分信息表</div>
<div>
<a-table :columns="twiceolumns" :data-source="data" :scroll="{ x: 1000 }" :pagination="false">
<template #headerCell="{ column }">
<template v-if="column.key === 'name'">
<span>
姓名
</span>
</template>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'name'">
<a>
{{ record.name }}
</a>
</template>
<template v-else-if="column.key === 'tags'">
<span>
<a-tag v-for="tag in record.tags" :key="tag"
:color="tag === 'loser' ? 'volcano' : tag.length > 5 ? 'geekblue' : 'green'">
{{ tag.toUpperCase() }}
</a-tag>
</span>
</template>
<template v-else-if="column.key === 'action'">
</template>
</template>
</a-table>
</div>
<div>
</div> </div>
</div> </div>
@@ -1336,7 +1386,6 @@ const vwtext = ref(null)
:deep(.ant-table-tbody > tr > td) { :deep(.ant-table-tbody > tr > td) {
text-align: center; text-align: center;
} }
.btn1 { .btn1 {
.search { .search {
width: 15px; width: 15px;
@@ -1353,9 +1402,9 @@ const vwtext = ref(null)
} }
} }
.btn1:active { .btn1:active {
background: #0982ff; background: #0982ff;
} }
.btn2:active { .btn2:active {
background: rgba(64, 158, 255, 0.2); background: rgba(64, 158, 255, 0.2);
@@ -1432,7 +1481,7 @@ const vwtext = ref(null)
color: rgba(56, 139, 225, 1); color: rgba(56, 139, 225, 1);
font-size: 12px; font-size: 12px;
position: relative; position: relative;
.ch { .ch {
position: absolute; position: absolute;
width: 18px; width: 18px;
@@ -1442,7 +1491,13 @@ const vwtext = ref(null)
top: -8px; top: -8px;
} }
} }
// :deep(.ant-form-item-label){ // :deep(.ant-form-item-label){
// text-align: left; // text-align: left;
// }</style> // }
.step_box{
display: flex;
justify-content: center;
align-items: center;
}
</style>

View File

@@ -651,7 +651,7 @@ const route = useRoute()
deleteDepSelect(); deleteDepSelect();
emit("finash", true); emit("finash", true);
message.info('添加成功'); message.info('添加成功');
}); });
// saveStu({ // saveStu({
// targetId: props.id, // targetId: props.id,