Files
fe-manage/src/views/gratefulteacher/LecturerManagement.vue
zhangsir 8067f402a8 细节
2024-05-21 23:00:47 +08:00

1674 lines
53 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<script setup >
import { ref,reactive,onMounted,computed,watch } from 'vue'
import { message } from 'ant-design-vue';
import AddInstructor from './AddInstructor.vue'
import LeadInstructor from './LeadInstructor.vue'
import { useRoute, useRouter } from 'vue-router'
import {getTeacherList,deleTeTeacher,getReview,delreview,reviewdetail,reviewSave,endreview,addTeacher,editreview,backDraft,getDataById,getCertificationProcess} from '@/api/examineApi.js'
import dialog from "@/utils/dialog";
// import QrCode from './QrCode.vue'
import ViewReview from './ViewReview.vue'
import EvaluationForm from "./EvaluationForm.vue"
import InitiateReview from './InitiateReview.vue'
import ProjCheckShip from "./teaAdd";
import ImpStu from './AddLevelImportTec.vue'
import qrCode from "@/utils/qrCode2";
import { useStore } from "vuex";
const route = useRoute()
const router = useRouter()
const store = useStore();
const userInfo = computed(() => store.state.userInfo)
const uploadAdmin = (admin)=>{
const roleCode = userInfo.value.roleList.map((item)=>item.roleCode)
if (admin){
return roleCode.some(t => t == admin)
}
}
console.log(route.query.id, 'idssss');
const formState = reactive({
reviewname: '',
time: '',
});
//取消评审
const CancelReview = ()=>{
rwname.value = null
formState.reviewname = ''
formState.time = ''
InitiateReviewShow.value = false;
teacherNames.value = []
teacherid.value = []
}
const namelist = ref([])
//表格点击时间
const rowClick = (record) => {
return {
onClick: () => {
namelist.value.push(record.teacherName)
console.log(record);
console.log(namelist.value);
},
}
}
const InitReview = () => {
InitiateReviewShow.value = true;
formState.reviewname = ''
formState.time = ''
rwname.value = null
teacherNames.value = []
teacherid.value = []
addTeacherList()
}
const teacherid = ref(null)
//发起评审
const startReviewSave = async () => {
if (formState.reviewname.trim()==="" ) {
formState.reviewname = ''
return message.info('请填写评审名称');
}
if (formState.time==="") {
return message.info('请填写评审时间');
}
if (!rwname.value) {
reviewSave({
"examineId": route.query.id,
"reviewName": formState.reviewname,
"reviewTime": formState.time,
"teacherIds": teacherid.value
}).then(res => {
console.log(res);
message.info('发起成功');
rwname.value = null
searchReview()
InitiateReviewShow.value = false
return
}).catch(err => {
if (err) {
console.log(err,'错误信息');
InitiateReviewShow.value = false
return message.info('添加失败');
}
})
}
if (rwname.value) {
if (formState.reviewname.trim()==="") {
return message.info('请填写评审名称');
}
if (formState.time===null) {
return message.info('请填写评审时间');
}
editreview({
"reviewId": editId.value,
"reviewName": formState.reviewname,
"reviewTime": formState.time,
"teacherIds": teacherid.value
}).then(res => {
if (res) {
searchReview()
message.info('编辑成功');
InitiateReviewShow.value = false
rwname.value = null
}
})
.catch(err=>{
console.log(err);
if (err) {
InitiateReviewShow.value = false
message.info('编辑失败');
}
})
}
}
//编辑评审
const editName = ref(null)
const editId = ref(null)
const editTime = ref(null)
const rwname = ref(null)
const rwtime = ref(null)
const editReviewSave = async (name, time, id) => {
teacherNames.value = []
teacherid.value = []
InitiateReviewShow.value = true
formState.reviewname = name
formState.time = time
rwname.value = name
editName.value = name
editId.value = id
editTime.value = time
addTeacherList()
}
const ViewReviewcolumns = reactive([
{
title: '序号',
key: 'name',
dataIndex: 'name',
},
{
title: '姓名',
key: '姓名',
dataIndex: '姓名',
},
{
title: '工号',
key: '工号',
dataIndex: '工号',
},
{
title: '认证结果',
key: '认证结果',
dataIndex: '认证结果',
},
{
title: '平均分',
key: '平均分',
dataIndex: '平均分',
},
]);
const ViewReviewdata = ref([])
const reviewcolumn = [
{
name: 'Name',
dataIndex: 'name',
key: 'name',
width: 100,
},
{
title: '评审名称',
dataIndex: 'reviewName',
key: 'reviewName',
width: 190,
ellipsis: true,
},
{
title: '认证讲师',
dataIndex: 'teacherName',
key: 'teacherName',
ellipsis: true,
width: 500,
},
{
title: '评审时间',
key: 'reviewTime',
dataIndex: 'reviewTime',
width: 200,
ellipsis: true,
},
{
title: '认证状态',
key: 'reviewResult',
dataIndex: 'reviewResult',
width: 100,
},
{
title: '操作',
key: 'action',
width: 200,
fixed: 'right',
},
];
const columnsTeacher = [
{
title: '姓名',
key: 'teacherName',
dataIndex: 'teacherName',
},
{
title: '工号',
key: 'teacherNo',
dataIndex: 'teacherNo',
},
{
title: '报名时间',
key: 'reviewTime',
dataIndex: 'reviewTime',
},
]
//下载课件
const downLoadCoures = (id) => {
console.log(id,'id')
if(id){
window.open(`/activityApi/teacher/download?coursewareId=${id}`)
}
}
//老师重置
const resetTeacher = () => {
teacherValue.value = ''
addTeacherList()
}
//老师搜索
const teacherValue = ref(null)
const SearchTeacher = async () => {
const res = await addTeacher({
"examineId": route.query.id,
"pageSize": 10,
"pageNo": teacherCurrent1.value,
"teacherSearch": teacherValue.value
})
tabledata.value = res.data.records
}
function timeChangeEnd(timeStr) {
console.log(timeStr, 'time')
formState.time = timeStr
// formData.value.endTime = timeStr;
}
//添加讲师
const addTeacherList = async () => {
const res = await addTeacher({
"examineId": route.query.id,
"pageSize": 15,
"pageNo": teacherCurrent1.value,
"teacherSearch": ""
})
console.log(res.data, 'res');
teacherTotal.value = res.data.total
tabledata.value = res.data.records
}
const teacherCurrent1 = ref(1)
//教师列表总数
const teacherTotal = ref(null)
//教师列表数据
const tabledata = ref(null)
//教师分页
const onChange3 = (pageNo) => {
teacherTotal.value = pageNo
addTeacherList()
}
//结束评审
const qrshow = ref(null)
const finishreview = async () => {
dialog({
content: "是否结束评审?",
ok: () => {
closereview()
}
});
}
const closereview = async () => {
const res = await endreview({
"reviewId": vwtext.value
})
console.log(res, 99999);
qrshow.value = res.data.show
ViewReviewShow.value = false
getReviewList()
}
const reviewdata = ref(null);
const revieTotal = ref(null)
const ReviewPageNo = ref(1)
//发起评审列表
const getReviewList = async () => {
const res = await getReview({
examineId:route.query.id,
pageNo: ReviewPageNo.value,
pageSize: 10,
reviewName: ""
})
console.log(res, 'pings');
revieTotal.value = res.data.total
reviewdata.value = res.data.records
}
//查看评审
const ViewReList = ref()
const arrayLists = ref([])
const remould = () => {
let keys = Object.keys(ViewReList.value);
arrayLists.value = keys.filter(key => Array.isArray(ViewReList.value[key]));
if(arrayLists.value.length!=0){
ViewReviewcolumns.splice(3)
arrayLists.value.forEach(arrayKey => {
if (!ViewReviewcolumns.some(column => column.key === arrayKey)) {
ViewReviewcolumns.push({
title: arrayKey,
key: arrayKey,
dataIndex: arrayKey,
});
const averageScoreColumn = ViewReviewcolumns.find(column => column.title == "平均分");
if (averageScoreColumn) {
const index = ViewReviewcolumns.indexOf(averageScoreColumn);
ViewReviewcolumns.splice(index, 1);
ViewReviewcolumns.push(averageScoreColumn);
}
}
});
for (let i = 0; i < ViewReList.value[arrayLists.value[0]].length; i++) {
const obj = {};
for (const key of arrayLists.value) {
if (ViewReList.value[key][i]===-1) {
obj[key] = null
continue;
}
obj[key] = ViewReList.value[key][i];
}
ViewReviewdata.value.push(obj);
}
}
}
//评审按钮显示
const ButtunReviewShow = ref(false)
const getreviewdetail = async (object,examineResult) => {
ButtunReviewShow.value = examineResult
ViewReviewShow.value = true
const res = await reviewdetail(object)
console.log(res, 'cscs成熟市场');
ViewReList.value = res.data
remould()
}
//删除评审
function handleOperReview(record) {
dialog({
content: "确认删除吗?数据删除后不可恢复",
ok: () => {
reviewdelete(record)
}
});
}
const reviewdelete = async (id) => {
await delreview({
reviewId: id
})
if (reviewdata.value.length == 1) {
ReviewPageNo.value = ReviewPageNo.value - 1
}
message.success('删除成功')
getReviewList()
}
//发起评审分页
const onChangeReview = (pageNo, pageSize) => {
ReviewPageNo.value = pageNo
console.log(pageNo, 1111);
getReviewList()
};
const reviewValue = ref('')
//重置评审
const resetReview = () => {
reviewValue.value=''
getReviewList()
}
//搜索评审
const searchReview = async () => {
// if ( reviewValue.value.trim().length ==0) {
// return message.info('搜索内容不能为空');
// }
// console.log(reviewValue.value.trim().length);
const res = await getReview({
examineId:route.query.id,
pageNo: ReviewPageNo.value,
pageSize: 10,
reviewName: reviewValue.value
})
reviewdata.value = res.data.records
}
//删除教师
const delteacherIds = async (id) => {
await deleTeTeacher(
{
"teacherIds": [
id
]
}
).then(res=>{
if(res.code == 200){
message.success("删除成功")
if (data.value.length == 1) {
current1.value = current1.value - 1
}
getTeacher()
getTeacher2()
}
})
}
const delteacherIdList = async () => {
await deleTeTeacher(
{ "teacherIds": selectedRowKeysList.value }
)
message.info('删除成功');
if (data.value.length == 1) {
current1.value = current1.value - 1
}
console.log(data.value.length,'sha c sss');
current1.value = 1
getTeacher()
getTeacher2()
}
//导出讲师
const exportExcel = () => {
if(data.value.length!=0||data2.value.length!=0){
window.open(`/activityApi/teacher/export?examineId=${route.query.id}`)
}else{
message.info('暂无要导出的讲师信息');
}
}
const batchhandleOper =()=>{
if (selectedRowKeysList.value.length == 0) {
message.info('请选择要删除的教师')
return
}
dialog({
content: "确认删除吗?数据删除后不可恢复",
ok: () => {
delteacherIdList()
}
});
}
function handleOper(record, type, status = "") {
dialog({
content: "确认删除吗?数据删除后不可恢复",
ok: () => {
delteacherIds(record.id)
}
});
}
//搜索教师
const SearchTeachers =async()=>{
const res = await getTeacherList({
pageNo: 1,
pageSize: 15,
examineId: route.query.id,
second: value2.value==null?'0':value2.value,
secondResult:'1',
reviewResult:value.value,
keyWord:value3.value
})
total.value = res.data.total
data.value = res.data.records
if(value2.value!=2){
getTeacher2()
}else{
data2.value = []
}
}
//重置教师
const handleRest=()=>{
value2.value = null
value.value = null
value3.value = null
getTeacher()
getTeacher2()
}
//刷新列表
const translateTeacher = (flag) => {
handleRest()
}
const translate = (flag) => {
SearchTeachers()
}
//2次认证
const total2 = ref(null)
const data2 = ref([])
//教师列表2
const getTeacher2 =async()=>{
const res = await getTeacherList({
pageNo: 1,
pageSize: 8,
examineId: route.query.id.toString(),
secondResult: '0',
reviewResult:value.value,
keyWord:value3.value
})
total2.value = res.data.total
data2.value = res.data.records
}
//讲师列表
const total = ref(null)
const data = ref([])
const current1 = ref(1);
const pageSize1 = ref(15)
const onChangeTeacher = (pageNo, pageSize) => {
current1.value = pageNo
getTeacher()
};
//教师列表
const getTeacher =async()=>{
const res = await getTeacherList({
pageNo: current1.value,
pageSize: pageSize1.value,
examineId: route.query.id.toString(),
secondResult: "1"
})
console.log(res,'resaaaa')
total.value = res.data.total
data.value = res.data.records
}
// 提交
const value = ref(null);
const value2 = ref(null);
const value3 = ref(null);
const onFinish = values => {
}
onMounted(() => {
if (route.query.lecture == 'true') {
activeKey.value = '2'
}
getTeacher()
getReviewList()
getTeacher2()
})
const activeName = ref('first')
const ViewReviewShow = ref(null)
watch(ViewReviewShow,(val)=>{
console.log(val,'val')
if(!val){
ViewReviewdata.value = []
}
})
const columns = [
{
title: '姓名',
dataIndex: 'teacherName',
key: 'teacherName',
},
{
title: '工号',
dataIndex: 'teacherNo',
key: 'teacherNo',
},
{
title: '课程名称',
dataIndex: 'courseName',
key: 'courseName',
},
{
title: '初稿状态',
dataIndex: 'draftStatus',
key: 'draftStatus',
},
{
title: '线上学习',
dataIndex: 'onlineLearning',
key: 'onlineLearning',
},
{
title: '线下辅导',
dataIndex: 'offlineTutoring',
key: 'offlineTutoring',
},
{
title: '终稿状态',
dataIndex: 'endStatus',
key: 'endStatus',
},
{
title: '认证结果',
key: 'reviewResult',
dataIndex: 'reviewResult',
},
{
title: '二次认证',
key: 'second',
dataIndex: 'second',
},
{
title: '操作',
key: 'action',
},
];
const twiceolumns = [
{
title: '姓名',
dataIndex: 'teacherName',
key: 'teacherName',
},
{
title: '工号',
dataIndex: 'teacherNo',
key: 'teacherNo',
},
{
title: '课程名称',
dataIndex: 'courseName',
key: 'courseName',
},
{
title: '初稿状态',
dataIndex: 'draftStatus',
key: 'draftStatus',
},
{
title: '线上学习状态',
dataIndex: 'onlineLearning',
key: 'onlineLearning',
},
{
title: '二次线下辅导',
dataIndex: 'offlineTutoring',
key: 'offlineTutoring',
},
{
title: '二次终稿状态',
dataIndex: 'endStatus',
key: 'endStatus',
},
{
title: '二次认证结果',
key: 'reviewResult',
dataIndex: 'reviewResult',
},
{
title: '操作',
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([])
const rowSelection = {
onChange: async (selectedRowKeys, selectedRows) => {
console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
selectedRowKeysList.value = selectedRowKeys
console.log(selectedRowKeysList.value.length);
},
};
const teacherNames =ref([])
const teacherTables = ref()
const closeTeacher = (item,i) => {
teacherNames.value.splice(i,1)
teacherid.value.splice(i,1)
}
const teacherRowSelection = computed(() =>({
selectedRowKeys: teacherid.value,
onChange: async (selectedRowKeys, selectedRows) => {
console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
teacherid.value = selectedRowKeys
teacherNames.value = selectedRows
},
}));
const AddSwitch = ref(null)
const handleChildEmit = data => {
// console.log('父组件对子组件触发自定义事件时的后续处理', data);
AddSwitch.value = data
}
const showImprtlecturer = data => imprtlecturer.value = data
const imprtlecturer = ref(null)
const delVisible = ref(false)
const activeKey = ref('1');
const showViewInstructor =ref(false)
const techerDetail = ref(null)
const processData = ref()
const attestation = ref([])
const scoreTwo = ref()
const scoreOne = ref()
const show= async (record)=>{
await getDataById({teacherId:record.teacherId}).then(res=>{
if(res.code == 200){
showViewInstructor.value=true
techerDetail.value = res.data
if(techerDetail.value.firstList){
const totalScore = techerDetail.value.firstList.reduce((acc, item) => acc + item.score, 0);
// 计算平均分
const averageScore = totalScore / techerDetail.value.firstList.length;
scoreOne.value = averageScore.toFixed(2)
}
if(techerDetail.value.secondList){
const totalScore = techerDetail.value.secondList.reduce((acc, item) => acc + item.score, 0);
// 计算平均分
const averageScore = totalScore / techerDetail.value.secondList.length;
scoreTwo.value = averageScore.toFixed(2)
}
}else{
message.error('暂无数据')
}
})
await getCertificationProcess({teacherId:record.teacherId}).then(res=>{
processData.value = res.data
//认证流程
attestation.value =[
//0: 已上传 1: 未上传 2:已退回
{name:{0:'初稿已上传',1:'初稿未上传',2:'初稿已退回'},status:processData?.value.draftStatus,images:{0:'su1.png',1:'s1.png',2:'e2.png'},color:['#409EFF','#979797','#FF4040','#31AF0D']},
{name:{0:'线上学习已完成',1:'线上学习未完成',2:'线上学习进行中'},status:processData?.value.onlineLearning,images:{0:'su2.png',1:'s2.png',2:'j1.png'},color:['#409EFF','#979797','#FFA050','#31AF0D']},
{name:{0:'线下辅导已完成',1:'线上辅导未完成',2:'线上辅导已退回'},status:processData?.value.offlineTutoring,images:{0:'su3.png',1:'s3.png',2:'e2.png'},color:['#409EFF','#979797','#FF4040','#31AF0D']},
{name:{0:'终稿已上传',1:'终稿未上传',2:'终稿已退回'},status:processData?.value.endStatus,images:{0:'su4.png',1:'s4.png',2:'e3.png'},color:['#409EFF','#979797','#FF4040','#31AF0D']},
{name:{0:'认证已通过',1:'认证未通过',2:'认证',3:'认证'},status:processData?.value.reviewResult,images:{0:'success.png',1:'e1.png',2:'s5.png',3:'s5.png',},color:['#31AF0D','#FF4040','#979797','#979797']},
]
if(processData.value.secondResult == '0'){
processData.value.draftStatus = 0
processData.value.onlineLearning = 0
processData.value.offlineTutoringOne = 0
processData.value.endStatusOne = 0
processData.value.reviewResultOne = 1
attestation.value = [
{name:{0:'初稿已上传',1:'初稿未上传',2:'初稿已退回'},status:processData?.value.draftStatus,images:{0:'su1.png',1:'s1.png',2:'e2.png'},color:['#3DA8F0','#31AF0D','#FF4040','#DEDEDE']},
{name:{0:'线上学习已完成',1:'线上学习未完成',2:'线上学习已退回'},status:processData?.value.onlineLearning,images:{0:'su2.png',1:'s2.png',2:'j1.png'},color:['#3DA8F0','#31AF0D','#FF4040','#DEDEDE']},
{name:{0:'线下辅导已完成',1:'线上辅导未完成',2:'线上辅导已退回'},status:processData?.value.offlineTutoringOne,images:{0:'su3.png',1:'s3.png',2:'e2.png'},color:['#3DA8F0','#31AF0D','#FF4040','#DEDEDE']},
{name:{0:'终稿已上传',1:'终稿未上传',2:'终稿已退回'},status:processData?.value.endStatusOne,images:{0:'su4.png',1:'s4.png',2:'e3.png'},color:['#3DA8F0','#31AF0D','#FF4040','#DEDEDE']},
{name:{0:'认证已通过',1:'认证未通过',2:'认证进行中',3:'认证已报名'},status:processData?.value.reviewResultOne,images:{0:'su5.png',2:'su5.png',1:'e1.png',3:'success.png',},color:['#3DA8F0','#FF4040','#FF4040','#DEDEDE']},
{name:{0:'线下辅导已完成',1:'线下辅导未完成',2:'线下辅导已退回'},status:processData?.value.offlineTutoring,images:{0:'su3.png',1:'s3.png',2:'e2.png'},color:['#409EFF','#979797','#FF4040','#31AF0D']},
{name:{0:'终稿已上传',1:'终稿未上传',2:'终稿已退回'},status:processData?.value.endStatus,images:{0:'su4.png',1:'s4.png',2:'e3.png'},color:['#409EFF','#979797','#FF4040','#31AF0D']},
{name:{0:'认证已通过',1:'认证未通过',2:'认证',3:'认证'},status:processData?.value.reviewResult,images:{0:'success.png',1:'e1.png',2:'s5.png',3:'s5.png',},color:['#31AF0D','#FF4040','#979797','#979797']},
]
}
console.log(attestation.value,'value')
})
}
const returnPage = (record) => {
console.log(record,'record')
dialog({
content: "确定退回初稿吗?",
ok:()=>{
backDraft({
teacherId:record.teacherId,
version:0
}).then(res=>{
message.success('退回成功')
getTeacher()
})
}
});
}
const returnPageTwo = (record) => {
dialog({
content: "确定退回终稿吗?",
ok:()=>{
backDraft({
teacherId:record.teacherId,
version:1
}).then(res=>{
if(res.code == 200){
message.success('退回成功')
getTeacher2()
}
})
}
});
}
const InitiateReviewShow = ref(false)
//二维码显示
const handleMenuClick = (name, time, record) => {
console.log(`${location.protocol}//${location.host}/mobile/pages/lecturer/certification/list?reviewId=${record.id}&judgesWorkNum=${userInfo.value.userNo}`)
qrCode({
title: "二维码",
copyAble: true,
name: route.query.time + '认证-' + name+'认证',
url: `${location.protocol}//${location.host}/mobile/pages/lecturer/certification/list?reviewId=${record.id}&judgesWorkNum=${userInfo.value.userNo}`,
});
}
//添加讲师
const Tecvisible = ref(false)
//导入讲师
const AddImpStuvisible = ref(false)
const options1 = ref([{
value: 'jack',
label: 'Jack',
}, {
value: 'lucy',
label: 'Lucy',
}, {
value: 'disabled',
label: 'Disabled',
}]);
const vwtext = ref(null)
</script>
<template>
<div style="width: 100%;">
<div class="page-top">
<div style="margin-top: -16px">
<p class="title" :style="{marginTop:route.query.description?'16px':'36px'}" :title="route.query.time">认证项目名称{{ route.query.time }}</p>
<p class="item" :title="route.query.description" style="line-height: 35px;height: 40px;" v-if="route.query.description">具体说明{{ route.query.description }}</p>
</div>
<div @click="$router.push({ path: '/instructorcertification' })" style="cursor: pointer;">
<img src="../../assets/images/projectadd/return.png" alt="">
<el-button type="primary" text style="margin-left: 10px;">返回</el-button>
</div>
</div>
<!-- 划分条线 -->
<div class="boundary"></div>
<div style="width: 100%;">
<a-tabs v-model:activeKey="activeKey"
style="margin-right: 28px; margin-left: 6px ; display: flex; flex-direction: column;">
<a-tab-pane key="1" tab="讲师管理">
<div style="display: flex; flex-direction: column;">
<div style="display: flex; align-items: center;">
<div class="select" style="margin-left: 16px;">
<a-input v-model:value="value3" style="width: 270px;height: 40px;border-radius: 8px"
placeholder="请输入姓名/工号" />
</div>
<div class="select" style="margin-left: 15px;">
<a-select v-model:value="value" allowClear style="width: 270px; border-radius: 8px" placeholder="请选择认证结果">
<a-select-option value="3">已报名</a-select-option>
<a-select-option value="2">认证中</a-select-option>
<a-select-option value="1">未通过</a-select-option>
<a-select-option value="0">已通过</a-select-option>
</a-select>
</div>
<div class="select" style="margin-left: 15px;">
<a-select v-model:value="value2" allowClear style="width: 270px; border-radius: 8px" placeholder="请选择二次认证" >
<a-select-option value="1"></a-select-option>
<a-select-option value="2"></a-select-option>
</a-select>
</div>
<div style="display: flex; margin-left: 20px">
<div class="btn btn1" @click="SearchTeachers()">
<div class="search"></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 style="display: flex; align-items: center; margin-top: 15px;margin-bottom: 15px;">
<div v-if="route.query.isView!=0" class="btns" style="margin-left: 15px;margin-bottom: 4.5px">
<proj-check-ship :type="13" :id="route.query.id" @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>
<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>
<a-button type="primary" @click="batchhandleOper()" style="width: 100px; height: 40px; border-radius: 8px;margin-left: 12px; padding-left: 10px;background-color: #4ea6ff;" >批量删除</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>
<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?'进行中':text==3?'已报名':'通过') }}
</span>
</template>
<template v-else-if="column.key === 'second'">
<span>
{{ text==0?'-':text==1?'是':'否' }}
</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&&uploadAdmin('examine-admin')" style="margin-right: 7px;" @click="returnPage(record)">
退回初稿
</a>
<a v-if="route.query.isView!=0" 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:pageSize="pageSize1" 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 v-if="data2.length>0" style="margin-left: 14px; margin-top: 15px;margin-bottom: 12px;" >二次认证</div>
<div v-if="data2.length>0" 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>
{{ '已上传' }}
</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.endStatus == 0&&uploadAdmin('examine-admin')" style="margin-right: 7px;" @click="returnPageTwo(record)">
退回终稿
</a>
<a v-if="route.query.isView!=0" style="color: #de2139" @click="handleOper(record, 'del')">删除</a>
</span>
</template>
</template>
</a-table>
</div>
</div>
</div>
<!-- <LeadInstructor :imprtlecturer='imprtlecturer' @CloseImprt="showImprtlecturer"></LeadInstructor>
<AddInstructor :AddSwitch="AddSwitch" @myClick="handleChildEmit"></AddInstructor>
<proj-check-ship>
<a-button class="cus-btn" style="background: #4ea6ff; color: #fff">
<template #icon
><img
style="margin-right: 10px"
src="../../assets/images/courseManage/add0.png"
/></template>
添加学员
</a-button>
</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>
<!-- <QrCode ></QrCode> -->
<div style="display: flex;flex-direction: column;">
<div style="display: flex; align-items: center;justify-content: space-between;margin-left: 14px;">
<div>
<a-input ref="input" v-model:value="reviewValue" maxlength="30"
style="width: 270px;height: 40px;border-radius: 8px" placeholder="请输入评审名称" />
<a-button @click="searchReview()" type="primary"
style="color: #fff ;background-color: #4ea6ff;width: 100px; height: 40px; border-radius: 8px;margin-left: 15px;">搜索</a-button>
<a-button @click="resetReview()"
style="color: #fff ;background-color: #4ea6ff; width: 100px; height: 40px; border-radius: 8px;margin-left: 12px;"
>重置</a-button>
</div>
<div v-if="route.query.isView!=0">
<a-button @click="InitReview()" type="primary" style="color: #fff ;background-color: #4ea6ff;width: 100px; height: 40px;
border-radius: 8px;margin-left: 15px; padding-left: 10px;">发起评审</a-button>
</div>
</div>
<div style="margin-left: 14px;margin-top: 20px">
<div class="table">
<a-table :columns="reviewcolumn" :data-source="reviewdata" :scroll="{ x: 1000 }" :pagination="false">
<template #headerCell="{ column }">
<template v-if="column.key === 'name'">
<span>
序号
</span>
</template>
</template>
<template #bodyCell="{ column, record, index, text }">
<template v-if="column.key === 'name'">
<span>
{{ index + 1 }}
</span>
</template>
<template v-else-if="column.key === 'reviewResult'">
<span>
{{ record.examineResult === 1 ? '已结束' : '认证中' }}
</span>
</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'">
<div style=" text-align: center;display:flex;justify-content:center">
<span style="display:flex;justify-content:end;align-self: end;width: 160px;">
<a v-if="record.examineResult === 0" style="margin-right: 7px;"
@click="handleMenuClick(record.reviewName, record.reviewTime.slice(0, 7), record)">二维码</a>
<div>
<a style="margin-right: 7px;"
@click='getreviewdetail({ reviewId: record.id, examineId: route.query.id},record.examineResult), vwtext = record.id'>查看</a>
<a v-if="record.examineResult === 0&&route.query.isView!=0" @click="editReviewSave(record.reviewName, record.reviewTime, record.id)"
style="margin-right: 7px;">
编辑
</a>
<a v-if="record.examineResult === 0||uploadAdmin('examine-admin')" @click="handleOperReview(record.id)" style="color: #de2139">删除</a>
</div>
</span>
</div>
</template>
</template>
</a-table>
</div>
<div style="text-align: center; margin-top: 18px;">
<a-pagination v-model:current="ReviewPageNo" defaultPageSize="15" show-quick-jumper :total="revieTotal"
@change="onChangeReview" />
</div>
<!-- 查看评审 -->
<a-drawer v-model:visible="ViewReviewShow" class="custom-class" :closable="false" placement="right"
width="726px">
<div class="header" style="margin-bottom: 20px;">
<div class="headerTitle">查看评审</div>
<img style="width: 29px; height: 29px; cursor: pointer" src="../../assets/images/basicinfo/close.png"
@click="ViewReviewShow = false" />
</div>
<div style="display: flex;flex-direction: column;">
<div style="font-size: 16px;"> 评审名称<span>第三场二次认证</span></div>
<div style="font-size: 16px;margin: 20px 0;"> 评审时间<span>2024.05.30 14:00</span></div>
<div style="font-size: 16px;margin-bottom: 20px;">评审结果</div>
<div>
<a-table :pagination="false" :columns="ViewReviewcolumns" :scroll="{ x: 'max-content' }" :data-source="ViewReviewdata"
class="ant-table-striped" size="middle">
<template #bodyCell="{ column, record, index, text }">
<template v-if="column.key === 'name'">
<span>
{{ index + 1 }}
</span>
</template>
<template v-else-if="column.key === '认证结果'">
<!-- <span>
{{ text === 0 ? '通过' : (text === 1 ? '未通过' : (text === 2 ? '进行中' : '已报名')) }}
</span> -->
<span :style="{ color: record.平均分 >= 80 ? '#44e778' : (record.平均分 < 80 ? '#f5222d' : '#3da8f0') }">
{{ record.平均分==null?'': record.平均分 >= 80 ? '通过' : (record.平均分 < 80 ? '未通过' : (null)) }}
</span>
</template>
<template v-else-if="column.key === '平均分'">
<span :style="{ color: text >= 80 ? '#44e778' : (text < 80 ? '#f5222d' : '#3da8f0') }">
<!-- {{ text >= 80 ? '已通过' : (text < 80 ? '未通过' : text) }} -->
{{text}}
</span>
</template>
</template>
</a-table>
</div>
<div v-if="ButtunReviewShow===0" style="align-self: center;">
<div @click="finishreview()"
style=" border-radius: 8px; color: #fff;font-weight: 900;font-size: 16px; display: flex; justify-content: center;align-items: center; width: 176px; height: 55px; margin-top: 36px;background: #3da8f0;">
结束评审并通知结果</div>
</div>
</div>
</a-drawer>
</div>
</div>
</a-tab-pane>
</a-tabs>
</div>
<!-- 发起评审 -->
<a-drawer v-model:visible="InitiateReviewShow" class="custom-class" :closable="false" placement="right"
width="726px">
<div class="header" style=" margin-bottom: 20px;">
<div class="headerTitle">{{ rwname ? '编辑评审' : '发起评审' }}</div>
<img style="width: 29px; height: 29px; cursor: pointer" src="../../assets/images/basicinfo/close.png"
@click="InitiateReviewShow = false, rwname = null" />
</div>
<div style="display: flex;flex-direction: column;">
<div style="display: flex;">
<div style="display: flex;flex-direction: column;">
<a-form :model="formState" name="basic" :label-col="{ span: 5 }" :wrapper-col="{ span: 16 }"
autocomplete="off" @finish="onFinish" @finishFailed="onFinishFailed">
<a-form-item style="margin-top: 29px;" label="评审名称" :rules="[{ required: true, message: '请填写评审名称' }]">
<a-input showCount="ture" maxlength="50" placeholder="请输入评审名称" v-model:value="formState.reviewname" />
</a-form-item>
<a-form-item label="评审时间" :rules="[{ required: true, message: '请填写评审时间' }]">
<a-date-picker v-model:value="formState.time" placeholder="请选择评审时间" :show-time="{ format: 'HH:mm' }"
:format="['YYYY-MM-DD HH:mm']" valueFormat="YYYY-MM-DD HH:mm" @change="timeChangeEnd" />
</a-form-item>
<div>选择讲师</div>
<div style="width: 430px; height: 1px;background-color: #e2e0e0;margin-top: 8px;"></div>
<div style="display: flex;margin-top: 13px;">
<a-input v-model:value="teacherValue" placeholder="请输入姓名/工号" style="width: 150px;" />
<a-button @click="SearchTeacher()" type="primary"
style="width: 70px; height: 31px; border-radius: 5px;margin-left: 15px;background: #3da8f0;">搜索</a-button>
<a-button @click="resetTeacher()" type="primary"
style="width: 70px; height: 31px; border-radius: 5px;margin-left: 12px;background: #3da8f0;" >重置</a-button>
</div>
<p style="margin-top: 11px; color: #b6b7b8; font-size: 12px;">说明列表仅显示终稿已上传且未认证的讲师</p>
<div style="display: flex;flex-direction: column;margin-top: -11px;">
<!-- 教师列表 -->
<a-table ref="teacherTables" :customRow="rowClick" :columns="columnsTeacher" row-key="teacherId" :pagination="false"
:data-source="tabledata" :row-selection="teacherRowSelection">
<template #bodyCell="{ column, text }">
<template v-if="column.dataIndex === 'name'">
<a>{{ text }}</a>
</template>
</template>
</a-table>
</div>
<div style="width: 100%;text-align: center;margin-top: 19px;">
<a-pagination v-model:current="teacherCurrent1" show-quick-jumper :total="teacherTotal"
@change="onChange3" />
</div>
<a-form-item>
</a-form-item>
</a-form>
</div>
<div style="height: 500px; width: 1px; background: #b9e6fb;margin-left: 91px; margin-top: 10px"></div>
<div style="display: flex; flex-direction: column;width: 160px;margin-left: 24px;margin-top: 20px;">
<div style="font-size: 16px; font-weight: 900;">已选</div>
<div style="width: 16opx; height: 1px;background-color: #b9e6fb;margin: 11px 0;"></div>
<div >
<div v-for="(item,i) in teacherNames" :key="i">
<div class="chose">
{{item.teacherName}}
<div class="ch" @click="closeTeacher(item,i)"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div style="width: 100%;margin-top: 0px;text-align: center;">
<a-button type="primary" @click="CancelReview()"
style="background: #3da8f0;width: 100px; height: 38px; border-radius: 8px ;margin: 0 15px 0 15px;margin-left: 30px">取消</a-button>
<a-button @click="startReviewSave()" html-type="submit" type="primary"
style="background: #3da8f0;width: 100px; height: 38px; border-radius: 8px">确认</a-button>
</div>
</a-drawer>
<!-- 查看讲师 -->
<a-drawer v-model:visible="showViewInstructor" class="custom-class" :closable="false" placement="right"
width="1248px" @after-visible-change="afterVisible">
<div class="drawerMain" >
<div class="header" style="margin-bottom: 20px;">
<div class="headerTitle">查看讲师</div>
<img
@click="showViewInstructor = false"
style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png"
/>
</div>
<div >
<div style="display: flex;width: 100%; height: 88px;">
<div>
<img v-if="techerDetail?.avatar" style="width: 60px; height: 58px;margin-left: 22px;margin-right: 29px;margin-top: 13px;" :src="techerDetail?.avatar"/>
<img
v-else
style="width: 60px; height: 58px;margin-left: 22px;margin-right: 29px;margin-top: 13px;"
src="../../assets/2.png"
/>
</div>
<div style="margin-left: 18px;">
<div style="font-size: 18px;font-weight: 500;color: #333333;line-height: 25px;font-style: normal;">{{techerDetail?.teacherName}}<span style="margin-left: 8px;"> {{techerDetail?.teacherNo}}</span></div>
<div style="font-size: 14px;color: #979797;margin-top: 12px;">{{techerDetail?.orgName}}</div>
<div style="font-size: 14px;color: #979797;">{{techerDetail?.orgPath}} {{techerDetail?.bandCode}}</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 style="display:flex;">
<div style="padding-left:16px; width: 136px;height: 56px;background: #FFFFFF;border: 1px solid #F0F6FC;line-height: 56px;">课程简介</div>
<div class="courseIntroduction" style="">{{techerDetail?.courseIntroduction}}</div>
</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 v-if="techerDetail?.coursewareName" src="../../assets/images/gratefulteacher/ppt.png" alt="">
{{ techerDetail?.coursewareName?techerDetail?.coursewareName:''}}
<span v-if="techerDetail?.coursewareName" style="color:#3da8f0" @click="downLoadCoures(techerDetail?.coursewareId)">下载</span>
</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?.uploadTime}}</div>
</div>
</div>
<div style='font-size: 18px;font-weight: 500;margin-top: 39px;'>
认证流程
</div>
<div style="margin-top: 13px; height: 125px;width: 100%;display: flex;margin-left: 44px;max-width: 1100px;" >
<div class="step_box" v-for="(item,index) in attestation" :key="index">
<div v-if="index != 0" style="height: 2px;width: 81px;background-color: #DEDEDE;margin-top: -30px;"></div>
<div style="display: flex;min-width: 70px;height: 78px;flex-direction: column;align-items: center">
<img style="width: 46px;height: 46px;margin-bottom: 12px;" :src="require(`../../assets/images/gratefulteacher/${item.images[item.status]}`)" alt="">
<div style="font-size: 14px;" :style="{color:item.color[item.status]}">{{item.name[item.status]}}</div>
</div>
</div>
</div>
<div style="font-size: 14px;margin-bottom: 15px;">评委打分信息表</div>
<div>
<a-table :columns="twiceolumnsOne" :data-source="techerDetail?.firstList" :scroll="{ x: 1000 }" :pagination="false">
<template #footer="{ record }">
<div v-if="techerDetail?.firstList" class="footer_table">
<div class="footer_left">平均分</div>
<div class="footer_right">{{ scoreOne }}</div>
</div>
</template>
</a-table>
</div>
<div v-if="techerDetail?.secondList" style="font-size: 14px;margin-bottom: 19px;margin-top: 40px;font-size: 18px;font-weight: 500;">二次认证</div>
<div v-if="techerDetail?.secondList" style="font-size: 14px;margin-bottom: 15px;">评委打分信息表</div>
<div v-if="techerDetail?.secondList">
<a-table :columns="twiceolumnsTwo" :data-source="techerDetail?.secondList" :scroll="{ x: 1000 }" :pagination="false">
<template #footer>
<div v-if="techerDetail?.secondList" class="footer_table">
<div class="footer_left">平均分</div>
<div class="footer_right">{{scoreTwo}}</div>
</div>
</template>
</a-table>
</div>
<div>
</div>
</div>
</div>
</a-drawer>
</div>
</template>
<style lang="scss" scoped>
.close_exit {
position: absolute;
right: 42px;
cursor: pointer;
width: 20px;
height: 20px;
top: 13px;
right: 13px;
font-size: 16px;
background-image: url(@/assets/images/coursewareManage/close.png);
background-size: 100% 100%;
}
.rectangle {
width: 537px;
height: 516px;
padding: 2px 2px 2px 2px;
background-image: linear-gradient(-180deg, #02a7f0 0%, #ffffff 26.810004387889418%);
box-sizing: border-box;
position: relative;
}
.page-top {
height: 134px;
width: 100%;
// background-color: orange;
display: flex;
align-items: center;
justify-content: space-between;
padding-left: 24px;
padding-right: 33px;
// flex-direction: row;
.title{
width: 600px;
margin-top: 16px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.item{
width: 800px !important;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
// display: -webkit-box;
// -webkit-line-clamp: 2;
// -webkit-box-orient: vertical;
// overflow: hidden;
// text-overflow: ellipsis;
// box-sizing: border-box;
// word-break: break-word;
}
}
.boundary {
height: 17px;
width: 100%;
background-color: #eceff4;
}
.el-table::v-deep .cell {
font-size: 13px;
color: #333;
font-weight: 400;
text-align: center;
}
:deep(.demo-pagination-block) {
width: 100%;
}
.el-pagination {
justify-content: center;
}
.sss {
background: #333;
}
:deep(.ant-tabs-tab) {
margin-left: 30px
}
:deep(.select .ant-select-selector) {
border-radius: 5px !important;
}
.select {
height: 100%;
display: flex;
align-items: center;
}
:deep(.ant-table-tbody > tr > td) {
text-align: center;
}
.btn1 {
.search {
width: 15px;
height: 17px;
background-image: url("@/assets/images/courseManage/search0.png");
}
}
.btn2 {
.search {
width: 16px;
height: 18px;
background-image: url("@/assets/images/courseManage/reset0.png");
}
}
.btn1:active {
background: #0982ff;
}
.btn2:active {
background: #0982ff;
}
.btn {
padding: 0 26px 0 26px;
height: 38px;
background: #4ea6ff;
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
margin-right: 14px;
flex-shrink: 0;
cursor: pointer;
.search {
background-size: 100%;
}
.btnText {
font-size: 14px;
font-weight: 400;
color: #ffffff;
line-height: 36px;
margin-left: 5px;
}
}
.btn3 {
margin-right: 0;
.search {
width: 17px;
height: 18px;
background-image: url("@/assets/images/courseManage/add0.png");
}
}
.btn3:active {
background: #0982ff;
}
.header {
margin-top: -20px;
height: 73px;
border-bottom: 1px solid #e8e8e8;
display: flex;
justify-content: space-between;
align-items: center;
flex-shrink: 0;
// background-color: red;
margin-bottom: 58px;
.headerTitle {
font-size: 18px;
font-weight: 600;
color: #333333;
line-height: 25px;
// margin-left: 24px;
}
}
.chose {
width: 64px;
height: 24px;
margin-top: 25px;
margin-right: 25px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 2px;
border: 1px solid rgba(56, 139, 225, 1);
color: rgba(56, 139, 225, 1);
font-size: 12px;
position: relative;
.ch {
position: absolute;
width: 18px;
height: 18px;
background-image: url(../../assets/images/basicinfo/ch.png);
right: -8px;
top: -8px;
}
}
// :deep(.ant-form-item-label){
// text-align: left;
// }
.step_box{
display: flex;
justify-content: center;
align-items: center;
}
::v-deep .ant-table-footer{
background-color: #ffffff,
}
.footer_table{
display: flex;
justify-content: space-between;
.footer_left{
margin-left: 84px;
}
.footer_right{
margin-right: 85px;
}
}
.courseIntroduction{
width: 559px;height: 56px;line-height: 56px;border: 1px solid #F0F6FC;padding-left:16px; overflow: hidden;white-space: nowrap;text-overflow: ellipsis;
}
.courseIntroduction:hover{
overflow: visible;
}
</style>