This commit is contained in:
yuping
2022-12-15 02:49:47 +08:00
parent 5047b234f1
commit 7091f153c8
3 changed files with 118 additions and 114 deletions

View File

@@ -19,7 +19,7 @@ export const TAS_ACTIVITY_DETAIL = '/activity'
export const TASK_ACTIVITY_SIGN = '/activitySubmit/updateActivitySignInStatus post' export const TASK_ACTIVITY_SIGN = '/activitySubmit/updateActivitySignInStatus post'
export const TASK_BROADCAST_COMMIT = '/stu/task/broadcast/commit' export const TASK_BROADCAST_COMMIT = '/stu/task/broadcast/commit'
export const TASK_BROADCAST_DETAIL = '/liveBroadcast' export const TASK_BROADCAST_DETAIL = '/liveBroadcast'
export const TASK_BROADCAST_SIGN = '/stu/task/broadcast/sign' export const TASK_BROADCAST_SIGN = '/stu/task/broadcast/sign post'
export const TASK_VOTE_COMMIT = '/stu/task/vote/commit' export const TASK_VOTE_COMMIT = '/stu/task/vote/commit'
export const TASK_VOTE_DETAIL = '/stu/task/vote/detail' export const TASK_VOTE_DETAIL = '/stu/task/vote/detail'
export const TASK_WORK_COMMIT = '/workSubmit/submitStudentWorkDetail post' export const TASK_WORK_COMMIT = '/workSubmit/submitStudentWorkDetail post'
@@ -47,7 +47,7 @@ export const COMMENT_PRAISE = '/comment/praise post'
export const COMMENT_COLLECTION = '/comment/collection post' export const COMMENT_COLLECTION = '/comment/collection post'
export const ASSESSMENT_SUBMIT_QUERY = assessmentId => `/assessmentSubmit/queryAssessmentSubmitDetailById?assessmentSubmitId=${assessmentId} post` export const ASSESSMENT_SUBMIT_QUERY = assessmentId => `/assessmentSubmit/queryAssessmentSubmitDetailById?assessmentSubmitId=${assessmentId} post`
export const ASSESSMENT_QUERY = assessmentId => `/assessment/queryAssessmentDetailById?assessmentId=${assessmentId} post` export const ASSESSMENT_QUERY = assessmentId => `/stu/task/evaluate/get`
export const ASSESSMENT_SUBMIT = '/assessmentSubmit/submitAssessmentDetail' export const ASSESSMENT_SUBMIT = '/stu/task/evaluate/commit post'
export const ACTIVITY = '/activity' export const ACTIVITY = '/activity'

View File

@@ -23,15 +23,15 @@
<div class="title">直播{{ data?.liveName }}</div> <div class="title">直播{{ data?.liveName }}</div>
<div class="time" style="margin-top: 26px"> <div class="time" style="margin-top: 26px">
<img <img
style="width: 15px; height: 17px" style="width: 15px; height: 17px"
src="../../assets/image/time.png" src="../../assets/image/time.png"
/> />
<div style="margin-left: 8px">{{ data?.liveStartTime }}</div> <div style="margin-left: 8px">{{ data?.liveStartTime }}</div>
</div> </div>
<div class="time" style="margin-top: 23px"> <div class="time" style="margin-top: 23px">
<img <img
style="width: 16px; height: 18px" style="width: 16px; height: 18px"
src="../../assets/image/position.png" src="../../assets/image/position.png"
/> />
<!-- todo #直播详情 没有位置字段--> <!-- todo #直播详情 没有位置字段-->
<div style="margin-left: 8px">大族广场</div> <div style="margin-left: 8px">大族广场</div>
@@ -39,20 +39,19 @@
</div> </div>
<div class="threeBtn"> <div class="threeBtn">
<botton <botton
class="btn" class="btn"
style="background: rgb(59, 191, 252)" style="background: rgb(59, 191, 252)"
@click="showClick" @click="showClick"
>观看 >观看
</botton> </botton>
<botton <botton
class="btn" class="btn"
style="background: rgb(57, 146, 249)" :style="{background:`${data.signFlag?'#999':'rgb(57, 146, 249)'}`}"
@click="signClick" @click="signClick"
v-if="!data.signFlag" >{{ data.signFlag ? '已签到' : '签到' }}
>签到
</botton> </botton>
<botton class="btn" @click="commitClick" v-if="!data.evalFlag" <botton :style="{background:`${data.isSurvery?'#999':'rgb(57, 146, 249)'}`}" class="btn" @click="commitClick"
>评估 >{{ data.isSurvery ? '已评估' : '评估' }}
</botton> </botton>
</div> </div>
</div> </div>
@@ -65,8 +64,8 @@
<div class="" style="margin-left: 48px; margin-right: 48px"> <div class="" style="margin-left: 48px; margin-right: 48px">
<div class="title"> <div class="title">
<img <img
style="width: 20px; height: 20px" style="width: 20px; height: 20px"
src="../../assets/image/course.png" src="../../assets/image/course.png"
/> />
<div class="text">课前预习</div> <div class="text">课前预习</div>
<div class="box"></div> <div class="box"></div>
@@ -74,21 +73,21 @@
<div style="display: flex; align-items: center"> <div style="display: flex; align-items: center">
<!-- todo #直播 没有课前预习字段--> <!-- todo #直播 没有课前预习字段-->
<div class="content"> <div class="content">
通过对各级人员的软件平台培训使其能够了解如何运用乾元坤和智能信息管理系统来提升企业管理水平最大限度发挥软件产品在企业中的作用;<br /> 通过对各级人员的软件平台培训使其能够了解如何运用乾元坤和智能信息管理系统来提升企业管理水平最大限度发挥软件产品在企业中的作用;<br/>
培训目标 培训目标
<br />1.使企业不同部门人员掌握便捷有效的系统平台操作方法;<br /> <br/>1.使企业不同部门人员掌握便捷有效的系统平台操作方法;<br/>
2.通过系统平台的培训提高员工对企业的管理理念认识与提升<br /> 2.通过系统平台的培训提高员工对企业的管理理念认识与提升<br/>
3.通过系统平台培训加强沟通统一部署协同工作提高效率 3.通过系统平台培训加强沟通统一部署协同工作提高效率
<br /> <br/>
培训对象<br /> 培训对象<br/>
集团领导各相关部门领导总经理车间主管车间操作员等;<br /> 集团领导各相关部门领导总经理车间主管车间操作员等;<br/>
</div> </div>
</div> </div>
<div class="title"> <div class="title">
<img <img
style="width: 20px; height: 20px" style="width: 20px; height: 20px"
src="../../assets/image/write.png" src="../../assets/image/write.png"
/> />
<!-- todo #直播 课后作业--> <!-- todo #直播 课后作业-->
<div class="text">课后作业</div> <div class="text">课后作业</div>
@@ -97,9 +96,9 @@
<div style="display: flex; align-items: center"> <div style="display: flex; align-items: center">
<div class="content"> <div class="content">
<span style="font-weight: 600" <span style="font-weight: 600"
>网易有道词典现有功能结构拆解+问题分析</span >网易有道词典现有功能结构拆解+问题分析</span
><br /> ><br/>
查找资料介绍一种国外日本美国欧洲道路公路铁路城市道路地铁设计规范的演变过程可以一种或几种主要技术指标为例并说明其原因<br /> 查找资料介绍一种国外日本美国欧洲道路公路铁路城市道路地铁设计规范的演变过程可以一种或几种主要技术指标为例并说明其原因<br/>
</div> </div>
</div> </div>
</div> </div>
@@ -109,8 +108,8 @@
<div class="tell"> <div class="tell">
<div class="title"> <div class="title">
<img <img
style="width: 21px; height: 23px" style="width: 21px; height: 23px"
src="../../assets/image/tv.png" src="../../assets/image/tv.png"
/> />
<div class="text">直播公告</div> <div class="text">直播公告</div>
<div class="box"></div> <div class="box"></div>
@@ -120,18 +119,18 @@
<div class="teacher"> <div class="teacher">
<div class="title"> <div class="title">
<img <img
style="width: 21px; height: 23px" style="width: 21px; height: 23px"
src="../../assets/image/livelecturer.png" src="../../assets/image/livelecturer.png"
/> />
<!-- todo #直播详情 没有直播讲师--> <!-- todo #直播详情 没有直播讲师-->
<div class="text">直播讲师</div> <div class="text">直播讲师</div>
<div class="box"></div> <div class="box"></div>
</div> </div>
<div <div
class="teacheritem" class="teacheritem"
:style="{ 'border-bottom': '1px solid rgba(56, 125, 247, 0.2)' }" :style="{ 'border-bottom': '1px solid rgba(56, 125, 247, 0.2)' }"
> >
<img class="peopleimg" :src="userAvatar" /> <img class="peopleimg" :src="userAvatar"/>
<div style="margin-left: 17px; width: 190px"> <div style="margin-left: 17px; width: 190px">
<div class="teacherName" style="margin-right: 5px"> <div class="teacherName" style="margin-right: 5px">
{{ data.userInfoBo?.userName }} {{ data.userInfoBo?.userName }}
@@ -148,23 +147,24 @@
</template> </template>
<script setup> <script setup>
import { computed, reactive, toRefs } from "vue"; import {computed, reactive, toRefs} from "vue";
import img from "@/assets/image/uploadimg.png"; import img from "@/assets/image/uploadimg.png";
import { request, useRequest } from "@/api/request"; import {request, useRequest} from "@/api/request";
import { TASK_BROADCAST_DETAIL, TASK_BROADCAST_SIGN } from "@/api/api"; import {TASK_BROADCAST_DETAIL, TASK_BROADCAST_SIGN} from "@/api/api";
import { useRoute } from "vue-router/dist/vue-router"; import {useRoute} from "vue-router/dist/vue-router";
import { useRouter } from "vue-router"; import {useRouter} from "vue-router";
import { useUserInfo } from "@/api/utils"; import {useUserInfo} from "@/api/utils";
import {ElMessage} from "element-plus";
const { const {
query: { courseId: liveId }, query: {courseId: liveId},
} = useRoute(); } = useRoute();
const router = useRouter(); const router = useRouter();
const { data } = useRequest(TASK_BROADCAST_DETAIL, { liveId }); const {data} = useRequest(TASK_BROADCAST_DETAIL, {liveId});
const { avatar: userAvatar } = useUserInfo( const {avatar: userAvatar} = useUserInfo(
computed(() => data.value.userInfoBo?.userId) computed(() => data.value.userInfoBo?.userId)
); );
const state = reactive({ const state = reactive({
@@ -174,20 +174,27 @@ const state = reactive({
id: 1, id: 1,
name: "王星天(显示事业)", name: "王星天(显示事业)",
introduce: introduce:
"教师是学生的镜子,学生是老师的影子。教师是学生的镜子,学生是老师的影子。教师是学生的镜子,学生是老师的影子。", "教师是学生的镜子,学生是老师的影子。教师是学生的镜子,学生是老师的影子。教师是学生的镜子,学生是老师的影子。",
peopleimg: img, peopleimg: img,
}, },
], ],
}); });
const { activeName, teacher } = toRefs(state); const {activeName, teacher} = toRefs(state);
const signClick = () => { const signClick = () => {
if (data.value.signFlag) {
return
}
data.value.signFlag = 1; data.value.signFlag = 1;
request(TASK_BROADCAST_SIGN, { courseId: liveId }); ElMessage.info("签到成功");
request(TASK_BROADCAST_SIGN, {courseId: liveId});
}; };
const commitClick = () => { const commitClick = () => {
if (data.value.isSurvery) {
return
}
router.push({ router.push({
path: "/surveydetail", path: "/surveydetail",
query: { courseId: data.value.assessmentId }, query: {courseId: data.value.assessmentId},
}); });
}; };
@@ -480,9 +487,9 @@ function showClick() {
background-color: rgba(255, 255, 255, 1); background-color: rgba(255, 255, 255, 1);
border-radius: 8px; border-radius: 8px;
background: linear-gradient( background: linear-gradient(
180deg, 180deg,
rgba(36, 120, 255, 0.15) 0%, rgba(36, 120, 255, 0.15) 0%,
rgba(255, 255, 255) 50% rgba(255, 255, 255) 50%
); );
.title { .title {

View File

@@ -2,7 +2,7 @@
<div class="surveydetail" style="padding: 30px"> <div class="surveydetail" style="padding: 30px">
<!-- 面包屑导航 --> <!-- 面包屑导航 -->
<div <div
style="display: flex; align-items: center; justify-content: space-between" style="display: flex; align-items: center; justify-content: space-between"
> >
<div class="crumb"> <div class="crumb">
<div>混合制项目</div> <div>混合制项目</div>
@@ -14,16 +14,16 @@
<div class="prevnext"> <div class="prevnext">
<div class="prev"> <div class="prev">
<img <img
style="width: 23px; height: 23px" style="width: 23px; height: 23px"
src="../../assets/image/prev.png" src="../../assets/image/prev.png"
/> />
<div style="margin-left: 7px">上一个</div> <div style="margin-left: 7px">上一个</div>
</div> </div>
<div class="prev" style="margin-left: 31px"> <div class="prev" style="margin-left: 31px">
<div style="margin-right: 7px">下一个</div> <div style="margin-right: 7px">下一个</div>
<img <img
style="width: 23px; height: 23px" style="width: 23px; height: 23px"
src="../../assets/image/next.png" src="../../assets/image/next.png"
/> />
</div> </div>
</div> </div>
@@ -36,23 +36,23 @@
<div class="bascinfo"> <div class="bascinfo">
<div> <div>
<div <div
class="question" class="question"
v-for="(value, index) in data.scoringQuestionVoList" v-for="(value, index) in data.scoringQuestionVoList"
:key="index" :key="index"
:style="{ 'margin-top': index === 0 ? '57px' : '41px' }" :style="{ 'margin-top': index === 0 ? '57px' : '41px' }"
> >
<div class="text">{{ value.assessmentScTitle }}</div> <div class="text">{{ value.assessmentScTitle }}</div>
<div class="answer"> <div class="answer">
<div class="answerL">完全没用</div> <div class="answerL">完全没用</div>
<div class="answerC"> <div class="answerC">
<div <div
class="answerCitem" class="answerCitem"
v-for="(item, key) in Array.from( v-for="(item, key) in Array.from(
{ length: value.assessmentMaxScore }, { length: value.assessmentMaxScore },
(k, i) => i (k, i) => i
)" )"
:key="key" :key="key"
:style="{ :style="{
'margin-left': key === 0 ? '15px' : '10px', 'margin-left': key === 0 ? '15px' : '10px',
background: background:
value.selectAnswer === item value.selectAnswer === item
@@ -63,7 +63,7 @@
? '#fff' ? '#fff'
: 'rgba(86, 163, 249, 1)', : 'rgba(86, 163, 249, 1)',
}" }"
@click=" @click="
() => { () => {
value.selectAnswer = item; value.selectAnswer = item;
} }
@@ -76,23 +76,20 @@
</div> </div>
</div> </div>
<div <div
class="question" class="question"
style="margin-top: 41px" style="margin-top: 41px"
v-for="(item, i) in data.singleStemVoList" v-for="(item, i) in data.assessmentSingleChoiceDtoList"
:key="i" :key="i"
> >
<div class="text">{{ item.singleStemName }}</div> <div class="text">{{ item.singleStemName }}</div>
<div <div
v-for="(value, index) in item.assessmentSingleChoiceVoList" v-for="(value, index) in item.assessmentSingleChoiceDtoList"
:key="index" :key="index"
style="display: flex; align-items: center" style="display: flex; align-items: center"
:style="{ :style="{'margin-top': index === 0 ? '29px' : '22px',cursor: 'pointer'}"
'margin-top': index === 0 ? '29px' : '22px', @click="
cursor: 'pointer',
}"
@click="
() => { () => {
item.assessmentSingleChoiceVoList.forEach((e) => { item.assessmentSingleChoiceDtoList.forEach((e) => {
e.select = false; e.select = false;
}); });
value.select = true; value.select = true;
@@ -100,56 +97,57 @@
" "
> >
<img <img
style="width: 19px; height: 18px; cursor: pointer" style="width: 19px; height: 18px; cursor: pointer"
:src="value.select ? checkbox : checkbox2" :src="value.select ? checkbox : checkbox2"
/> />
<div class="people">{{ value.singleOptionName }}</div> <div class="people">{{ value.singleOptionName }}</div>
</div> </div>
</div> </div>
<div <div
class="question" class="question"
style="margin-top: 41px" style="margin-top: 41px"
v-for="(item, i) in data.multipleStemVoList" v-for="(item, i) in data.multipleStemVoList"
:key="i" :key="i"
> >
<div class="text">{{ item.multipleStemName }}</div> <div class="text">{{ item.multipleStemName }}</div>
<div <div
v-for="(value, index) in item.multipleChoiceVoList" v-for="(value, index) in item.multipleChoiceVoList"
:key="index" :key="index"
style="display: flex; align-items: center" style="display: flex; align-items: center"
:style="{ :style="{
'margin-top': index === 0 ? '29px' : '22px', 'margin-top': index === 0 ? '29px' : '22px',
cursor: 'pointer', cursor: 'pointer',
}" }"
@click="() => (value.select = !value.select)" @click="() => (value.select = !value.select)"
> >
<img <img
style="width: 19px; height: 18px; cursor: pointer" style="width: 19px; height: 18px; cursor: pointer"
:src="value.select ? checkbox : checkbox2" :src="value.select ? checkbox : checkbox2"
/> />
<div class="people">{{ value.multipleOptionName }}</div> <div class="people">{{ value.multipleOptionName }}</div>
</div> </div>
</div> </div>
<div <div
class="question" class="question"
style="margin-top: 41px" style="margin-top: 41px"
v-for="(item, i) in data.essayQuestionVoList" v-for="(item, i) in data.essayQuestionVoList"
:key="i" :key="i"
> >
<div class="text">{{ item.assessmentQaTitle }}</div> <div class="text">{{ item.assessmentQaTitle }}</div>
<div style="width: 713px; margin-top: 31px; position: relative"> <div style="width: 713px; margin-top: 31px; position: relative">
<el-input <el-input
v-model="item.content" v-model="item.content"
:autosize="{ minRows: 5, maxRows: 5 }" :autosize="{ minRows: 5, maxRows: 5 }"
resize="none" resize="none"
maxlength="200" maxlength="200"
type="textarea" type="textarea"
/> />
<div class="words">{{ item.content?.length || 0 }}/200</div> <div class="words">{{ item.content?.length || 0 }}/200</div>
</div> </div>
</div> </div>
<div style="display: flex; justify-content: center"> <div style="display: flex; justify-content: center"
v-if="data.assessmentEssayQuestionDtoList?.length || data.assessmentMultipleChoiceDtoList?.length || data.assessmentSingleChoiceDtoList?.length || data.assessmentScoringQuestionDtoList?.length">
<div class="submit" @click="submit">提交</div> <div class="submit" @click="submit">提交</div>
</div> </div>
</div> </div>
@@ -161,25 +159,24 @@
<script setup> <script setup>
import checkbox from "@/assets/image/checkbox.png"; import checkbox from "@/assets/image/checkbox.png";
import checkbox2 from "@/assets/image/checkbox2.png"; import checkbox2 from "@/assets/image/checkbox2.png";
import { useRoute } from "vue-router/dist/vue-router"; import {useRoute} from "vue-router/dist/vue-router";
import { request, usePage, useRequest } from "@/api/request"; import {request, usePage, useRequest} from "@/api/request";
import { import {
ASSESSMENT_QUERY, ASSESSMENT_QUERY,
ASSESSMENT_SUBMIT, ASSESSMENT_SUBMIT,
COMMENT_LIST,
DISCUSS_DETAIL,
} from "@/api/api"; } from "@/api/api";
import {ElMessage} from "element-plus";
const { const {
query: { courseId }, query: {courseId},
} = useRoute(); } = useRoute();
const { data } = useRequest(ASSESSMENT_QUERY(courseId), {}); const {data} = useRequest(ASSESSMENT_QUERY(courseId), {id:courseId});
function submit() { function submit() {
request(ASSESSMENT_SUBMIT, data).then(() => { request(ASSESSMENT_SUBMIT, {assessmentId: courseId, result: JSON.stringify(data.value)})
console.log("提交成功"); ElMessage.info("提交成功");
}); router.back()
} }
</script> </script>
<style lang="scss"> <style lang="scss">