diff --git a/src/components/drawers/AddOpenCourse.vue b/src/components/drawers/AddOpenCourse.vue index 7f1243b4..07b9a7a3 100644 --- a/src/components/drawers/AddOpenCourse.vue +++ b/src/components/drawers/AddOpenCourse.vue @@ -464,7 +464,7 @@ const columns = ref([ width: "20%", align: "center", customRender: ({ record }) => { - const teachers = record.offteachers; + const teachers = record.offteachers; return teachers.map((teacher, index) => { // 如果需要显示为列表形式 return ( @@ -473,7 +473,7 @@ const columns = ref([ {index !== teachers.length - 1 && ', '} ); - }); + }); }, }, @@ -562,33 +562,33 @@ const formDataRule = { message: "请输入开课名称", }, ], - beginTime: [ - { - required: true, - message: "请选择开始时间", - }, - ], - endTime: [ - { - required: true, - message: "请选择结束时间", - }, - ], + // beginTime: [ + // { + // required: true, + // message: "请选择开始时间", + // }, + // ], + // endTime: [ + // { + // required: true, + // message: "请选择结束时间", + // }, + // ], offteachers: [ { validator: (rule, value, callback) => { if (!value.every(item => item.teacherName)) { - callback(new Error('请选择教师')); + callback(new Error('请填写教师名称和设置权重')); } else { callback(); } }, - message: '请选择教师', + message: '请填写教师名称和设置权重', fields: { teacherName: [ { required: true, - message: "请选择教师", + message: "请填写教师名称和设置权重", }, ], }, @@ -740,15 +740,18 @@ const del = (id,record) => { }; async function coursePlanConfirm() { - console.log({ ...formData.value },'{ ...formData.value }') + if(!dateTime.value[0]){ + message.info('开始时间未填写') + return + } + if(!dateTime.value[1]){ + message.info('结束时间未填写') + return + } await validate().catch(({ errorFields }) => { message.warning(errorFields[0].errors.join()); throw Error("数据校验不通过"); }); - if(dateTime.value.length<2){ - message.info('请选择开始时间和结束时间') - return - } if(formData.value.offteachers.length==1&& totalWeightSum.value!=100){ message.error('单名教师您设置的权重应该是100%') return @@ -756,6 +759,10 @@ async function coursePlanConfirm() { message.error('多名教师权重合计值为100%') return } + if(formData.value.offteachers.some(item => item.weight==0)){ + message.error('权重值不能为0%') + return + } if(editBeginClass.value){ message.info('讲师费已进入审批阶段,无法编辑') return @@ -1308,8 +1315,8 @@ defineExpose({ openDrawer }); margin-top: 5px; span{ width: 100%; - height: 100%; - font-size: 33px; + height: 100%; + font-size: 33px; } } .signbox { diff --git a/src/components/drawers/router/RouterFaceStu.vue b/src/components/drawers/router/RouterFaceStu.vue index 30ca2244..6c5b1d1a 100644 --- a/src/components/drawers/router/RouterFaceStu.vue +++ b/src/components/drawers/router/RouterFaceStu.vue @@ -188,7 +188,7 @@ const signOptions = ref([ }, { id: 3, - value: 0, + value: 2, label: "未签到", }, ]); diff --git a/src/views/courselibrary/CoursewareManage.vue b/src/views/courselibrary/CoursewareManage.vue index b6d61c56..06f95d9b 100644 --- a/src/views/courselibrary/CoursewareManage.vue +++ b/src/views/courselibrary/CoursewareManage.vue @@ -904,9 +904,9 @@ 新建开课
-
+
@@ -942,8 +942,8 @@
面授时间
-
- + + + +
@@ -983,7 +1010,7 @@
-
+
授课教师
-
- + +
+ + + 权重 +
+ + + - +
+
@@ -1264,7 +1305,7 @@
授课教师: - {{ currentPlanItem.teacher }} +
{ - return text ? text : "-"; - }, + customRender: ({ record }) => { + const teachers = record.offteachers; + return teachers.map((teacher, index) => { + // 如果需要显示为列表形式 + return ( +
+ {teacher.teacherName} + {index !== teachers.length - 1 && ', '} +
+ ); + }); + } }, { @@ -2402,11 +2452,16 @@ export default defineComponent({ addLoading: false, currentPlanItem: {}, teacherId: null, - teacher: null, + // teacher: null, selectedRowKeys7: [], auditDescription: "", isEdit: 0, member: { name: "", value: "" }, + offteachers:[{ + teacherId: "", + teacherName: "", + weight: '', + }], //列表表格 tableData1: [ // { @@ -2619,7 +2674,7 @@ export default defineComponent({ onceName: "", xjkkinputV2: "", duration: "", - xjkkinputV3: "", + xjkkinputV3: [], xjkkinputV4: null, beforeValue: null, //考勤 开始前 afterStartValue: null, //考勤 开始后 @@ -2829,8 +2884,78 @@ export default defineComponent({ codeType: null, //二维码类型 }); - function timeChange(time, timeStr) { - // state.duration || (state.duration = dayjs(timeStr[1]).diff(dayjs(timeStr[0]),'minute')) + // function timeChange(time, timeStr) { + // // state.duration || (state.duration = dayjs(timeStr[1]).diff(dayjs(timeStr[0]),'minute')) + // } +// function timeChange(timeStr) { +// console.log(timeStr,'timeStr') +// formData.value.beginTime = timeStr; +// } + function onDateSelect(date) { + const month = String(date.$M+1).padStart(2, '0') + const day = String(date.$D).padStart(2, '0') + state.xjkkinputV3[0]=date.$y+'-'+month+'-'+day+' '+date.$H+':'+date.$m + } +function onBlurStart(){ + onFocusStart() + console.log(state.xjkkinputV3[0],'dateTime') +} +function onFocusStart(){ + if(!state.xjkkinputV3[0]){ + let now=new Date() + let start=new Date(now.setFullYear(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0)) + state.xjkkinputV3 = [ + moment(start).format('YYYY-MM-DD HH:mm'), + state.xjkkinputV3[1] + ]; + } +} +// function timeChangeEnd(timeStr){ +// formData.value.endTime = timeStr; +// } +function onDateEnd(date) { + const month = String(date.$M+1).padStart(2, '0') + const day = String(date.$D).padStart(2, '0') + state.xjkkinputV3[1]=date.$y+'-'+month+'-'+day+' '+date.$H+':'+date.$m + } +function onFocusEnd(){ + if(!state.xjkkinputV3[1]){ + let now=new Date() + let start=new Date() + let end=new Date(now.setFullYear(now.getFullYear())) + state.xjkkinputV3 = [ + state.xjkkinputV3[0], + moment(end).format('YYYY-MM-DD HH:mm') + ]; + } +} + const totalWeightSum = ref(0) + function inputWeightChange(index) { + let totalWeight = 0 + state.offteachers.forEach(item => { + totalWeight += Number(item.weight); + }); + if (totalWeight > 100) { + state.offteachers[index].weight -= totalWeight - 100; + totalWeight = 100; + } + totalWeightSum.value = totalWeight + } + function inputAdd() { + state.offteachers.push({ + teacherId: "", + teacherName: "", + weight: '', + }); + } + function inputRemove(index) { + dialog({ + content: "确定删除此授课教师吗?", + ok: async () => { + state.offteachers.splice(index, 1); + message.success("删除成功"); + }, + }); } function findClassFullName(list, classify, name = "") { @@ -3239,7 +3364,7 @@ export default defineComponent({ const rest = () => { options4CurName.value = ""; options4CurId.value = ""; - state.teacher = null; + // state.teacher = null; state.teacherId = null; }; const handleChangeTea1 = (val) => { @@ -3409,7 +3534,7 @@ export default defineComponent({ pageNo: type?state.currentPage2:state.currentPage222, pageSize: state.pageSize222, createName: state.kk_inputV1, - teacher: state.kk_inputV2, + // teacher: state.kk_inputV2, beginTime: beginTime, endTime: endTime, offcourseId: state.offcourseId, @@ -3582,7 +3707,7 @@ export default defineComponent({ CourseModalRef.value.visibleOpen(null, state.xzinputV1); state.valueE1 = ""; - state.teacher = ""; + // state.teacher = ""; state.teacherName = ""; state.qdms_inputV1 = state.xzinputV1; @@ -3655,9 +3780,15 @@ export default defineComponent({ handleRestTable(); }; const createkk = () => { + state.xjkkinputV1 = state.newCourseName state.offcoursePlanId = null; state.itemType = 3; state.member = {}; + state.offteachers = [{ + teacherId: "", + teacherName: "", + weight: '', + }] state.cstm_hs = true; }; const handleCancelStu = () => { @@ -3672,7 +3803,7 @@ export default defineComponent({ state.onceName = ""; state.xjkkinputV2 = ""; state.duration = ""; - state.xjkkinputV3 = ""; + state.xjkkinputV3 = []; state.xjkkinputV4 = null; state.checked1 = false; state.checked4 = false; @@ -3696,7 +3827,7 @@ export default defineComponent({ } let startTime, endTime = 0; - if (state.xjkkinputV3) { + if (state.xjkkinputV3.length!=0) { startTime = dayjs(state.xjkkinputV3[0]).format("YYYY-MM-DD HH:mm"); //parseInt(state.xjkkinputV3[0].$d.getTime() / 1000); endTime = dayjs(state.xjkkinputV3[1]).format("YYYY-MM-DD HH:mm"); //parseInt(state.xjkkinputV3[1].$d.getTime() / 1000); } @@ -3734,8 +3865,9 @@ export default defineComponent({ name: state.xjkkinputV1, signFlag: state.xjkkradioV1 ? 1 : 0, //是否允许未报名的签到:1是0否 // signWordFlag: state.xjkkradioV1 === 1 ? 1 : 0, //签到是否需要口令:1是0否 - teacherId: state.member.value, - teacher: state.member.name, + // teacherId: state.member.value, + // teacher: state.member.name, + offteachers: state.offteachers, workInfo: state.workInfo, //提交的作业信息 examInfo: state.examInfo, //提交的考试信息 beforeStart: state.beforeValue, //考勤 开始前 @@ -3745,15 +3877,27 @@ export default defineComponent({ if(!postData.name){ return message.error("请输入开课名称"); } - if(!postData.beginTime){ - return message.error("请选择开课时间"); + if(!state.xjkkinputV3[0]){ + return message.error("开始时间未填写"); } - if(!postData.endTime){ - return message.error("请选择结束时间"); + if(!state.xjkkinputV3[1]){ + return message.error("结束时间未填写"); } - if(!postData.teacherId){ - return message.error("请选择授课老师"); + if(state.offteachers.some(item => !item.teacherName)){ + return message.error("请填写教师名称和设置权重"); } + if(state.offteachers.length==1&& totalWeightSum.value!=100){ + message.error('单名教师您设置的权重应该是100%') + return + }else if(state.offteachers.length>1&& totalWeightSum.value!=100){ + message.error('多名教师权重合计值为100%') + return + } + if(state.offteachers.some(item => item.weight==0)){ + message.error('权重值不能为0%') + return + } + console.log(postData,'传输的数据') // if(!postData.duration){ // return message.error("请输入持续时间"); // } @@ -3827,7 +3971,8 @@ export default defineComponent({ //是否允许未报名的签到:1是0否 state.xjkkradioV1 = true; } - state.member = { value: item.teacherId, name: item.teacher }; + // state.member = { value: item.teacherId, name: item.teacher }; + state.offteachers = [...item.offteachers] state.cstm_hs = true; state.kk_eidt = true; }; @@ -4417,10 +4562,11 @@ export default defineComponent({ state.chang_jin = String(item.sceneId); state.tags_val = item.tips ? item.tips.split(",") : []; //state.qdms_inputV5 = item.teacherId; - state.teacher = item.teacher; - state.teacherId = item.teacherId; + // state.teacher = item.teacher; + // state.teacherId = item.teacherId; state.qdms_inputV6 = item.intro; - state.member = { value: item.teacherId, name: item.teacher }; + // state.member = { value: item.teacherId, name: item.teacher }; + state.offteachers = [...item.offteachers] if (item.attach == "") { state.imgList = []; } else { @@ -4902,9 +5048,11 @@ export default defineComponent({ const qrcodeVisible = (record, type) => { // `${location.protocol}//${location.host}${import.meta.env.VUE_APP_BASE_API}/stu/project/redirectDetail?courseId=${record.id}` state.codevisible = true; + let teacherNames = record.offteachers?.filter(teacher => teacher.teacherName !== null).map(teacher => teacher.teacherName); state.codeInfo = { title: type == 1 ? "【课程】二维码" : "【签到】二维码", name: record.name ? record.name : "", + teacherName: teacherNames.length > 0 ? teacherNames.join(' ') : "", url: type == 1 ? process.env.VUE_APP_BASE_API + @@ -5054,8 +5202,19 @@ export default defineComponent({ logW, logT, qrcodeVisible, - timeChange, - editBeginClass + // timeChange, + editBeginClass, + + onDateSelect, + onBlurStart, + onFocusStart, + // timeChangeEnd, + onDateEnd, + onFocusEnd, + inputWeightChange, + totalWeightSum, + inputAdd, + inputRemove }; }, }); @@ -5560,6 +5719,28 @@ export default defineComponent({ margin: auto; align-items: center; margin-bottom: 23px; + .teacher_input{ + .ant-input-number{ + width: 15%; + height: 40px !important; + border-radius: 8px !important; + border: 1px solid #C7CBD2 !important; + margin: 0 10px 0 10px; + } + .btn-add{ + margin: 0 10px 0 10px; + } + .btn-circle{ + text-align: center; + line-height: 100%; + margin-top: 5px; + span{ + width: 100%; + height: 100%; + font-size: 33px; + } + } + } .signbox { display: flex;