mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-student.git
synced 2025-12-13 04:46:48 +08:00
Merge branch 'develop' of ssh://gitlab.dongwu-inc.com:10022/BOE/fe-stu into develop
This commit is contained in:
2
.env
2
.env
@@ -9,7 +9,7 @@ VITE_BOE_CASS_DETAIL_URL=https://u-pre.boe.com/pc/case/detail?id=
|
|||||||
VITE_BOE_TEST_DETAIL_URL=https://u-pre.boe.com/web/quizsummary?detailId=
|
VITE_BOE_TEST_DETAIL_URL=https://u-pre.boe.com/web/quizsummary?detailId=
|
||||||
VITE_BOE_TEST_OUT_DETAIL_URL=https://u-pre.boe.com/api/b1/tale/do-quiz?quizKid=
|
VITE_BOE_TEST_OUT_DETAIL_URL=https://u-pre.boe.com/api/b1/tale/do-quiz?quizKid=
|
||||||
VITE_BOE_EXAM_DETAIL_URL=https://u-pre.boe.com/pc/exam/test?id=
|
VITE_BOE_EXAM_DETAIL_URL=https://u-pre.boe.com/pc/exam/test?id=
|
||||||
VITE_BOE_PATH_DETAIL_URL=http://u-pre.boe.com/pc/forward?to=/fe-student
|
VITE_BOE_PATH_DETAIL_URL=https://u-pre.boe.com/pc/forward?to=/fe-student
|
||||||
|
|
||||||
VITE_BOE_API_URL=https://u-pre.boe.com
|
VITE_BOE_API_URL=https://u-pre.boe.com
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,6 @@ VITE_BOE_CASS_DETAIL_URL=https://u.boe.com/pc-release/case/detail?id=
|
|||||||
VITE_BOE_TEST_DETAIL_URL=https://u.boe.com/web/quizsummary?detailId=
|
VITE_BOE_TEST_DETAIL_URL=https://u.boe.com/web/quizsummary?detailId=
|
||||||
VITE_BOE_TEST_OUT_DETAIL_URL=https://u.boe.com/api/b1/tale/do-quiz?quizKid=
|
VITE_BOE_TEST_OUT_DETAIL_URL=https://u.boe.com/api/b1/tale/do-quiz?quizKid=
|
||||||
VITE_BOE_EXAM_DETAIL_URL=https://u.boe.com/pc-release/exam/test?id=
|
VITE_BOE_EXAM_DETAIL_URL=https://u.boe.com/pc-release/exam/test?id=
|
||||||
VITE_BOE_PATH_DETAIL_URL=http://u.boe.com/pc/forward?to=/fe-student-release
|
VITE_BOE_PATH_DETAIL_URL=https://u.boe.com/pc-release/forward?to=/fe-student-release
|
||||||
|
|
||||||
VITE_BOE_API_URL=https://u.boe.com
|
VITE_BOE_API_URL=https://u.boe.com
|
||||||
125
src/App.vue
125
src/App.vue
@@ -7,11 +7,11 @@
|
|||||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<!--
|
<!--
|
||||||
-->
|
-->
|
||||||
<div id="container">
|
<div id="container">
|
||||||
|
|
||||||
<!-- <div id="nav">
|
<!-- <div id="nav">
|
||||||
<router-link
|
<router-link
|
||||||
v-for="item in routes"
|
v-for="item in routes"
|
||||||
:key="item.path"
|
:key="item.path"
|
||||||
@@ -24,84 +24,85 @@
|
|||||||
{{ item.name }}
|
{{ item.name }}
|
||||||
</router-link>
|
</router-link>
|
||||||
</div> -->
|
</div> -->
|
||||||
<main style="z-index: 2">
|
<main style="z-index: 2">
|
||||||
<router-view/>
|
<router-view />
|
||||||
</main>
|
</main>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import {boeRequest} from "@/api/request";
|
import { boeRequest } from "@/api/request";
|
||||||
import {GET_USER_INFO} from "@/api/ThirdApi";
|
import { GET_USER_INFO } from "@/api/ThirdApi";
|
||||||
import {useStore} from "vuex";
|
import { useStore } from "vuex";
|
||||||
import {onMounted} from "vue";
|
import { onMounted } from "vue";
|
||||||
import router from "@/router";
|
import router from "@/router";
|
||||||
|
|
||||||
console.log("版本1.0.6------------");
|
console.log("版本1.0.7------------");
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getUserInfo();
|
getUserInfo();
|
||||||
});
|
});
|
||||||
|
|
||||||
function getUserInfo() {
|
function getUserInfo() {
|
||||||
boeRequest(GET_USER_INFO).then((res) => {
|
boeRequest(GET_USER_INFO).then((res) => {
|
||||||
res.result.avatar = import.meta.env.VITE_BOE_API_URL + '/upload' + (res.result.avatar ? res.result.avatar : '/800e23f7-b58c-4192-820d-0c6a2b7544cc.png')
|
res.result.avatar = import.meta.env.VITE_BOE_API_URL + '/upload' + (res.result.avatar ? res.result.avatar : '/800e23f7-b58c-4192-820d-0c6a2b7544cc.png')
|
||||||
store.commit("SET_USER", res.result);
|
store.commit("SET_USER", res.result);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
#app {
|
#app {
|
||||||
// font-family: MicrosoftYaHei, Microsoft YaHei, Avenir, Helvetica, Arial,
|
// font-family: MicrosoftYaHei, Microsoft YaHei, Avenir, Helvetica, Arial,
|
||||||
// sans-serif;
|
// sans-serif;
|
||||||
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB,
|
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB,
|
||||||
Microsoft YaHei, Arial, sans-serif;
|
Microsoft YaHei, Arial, sans-serif;
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
color: #2c3e50;
|
color: #2c3e50;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#container {
|
#container {
|
||||||
display: flex;
|
display: flex;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
min-height: 100%;
|
min-height: 100%;
|
||||||
background-color: rgba(242, 245, 247, 1);
|
background-color: rgba(242, 245, 247, 1);
|
||||||
// background-color: #ccc;
|
|
||||||
#nav {
|
|
||||||
width: 220px;
|
|
||||||
height: 100%;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 20px;
|
|
||||||
padding: 30px 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
background: #f1f1f1;
|
|
||||||
box-shadow: 0 5px 15px 8px rgba(1, 22, 54, 0.795);
|
|
||||||
|
|
||||||
.link {
|
// background-color: #ccc;
|
||||||
text-decoration: none;
|
#nav {
|
||||||
color: rgb(0, 0, 0);
|
width: 220px;
|
||||||
padding: 10px;
|
height: 100%;
|
||||||
transition: all 0.4s;
|
display: flex;
|
||||||
text-align: center;
|
flex-direction: column;
|
||||||
|
gap: 20px;
|
||||||
|
padding: 30px 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
background: #f1f1f1;
|
||||||
|
box-shadow: 0 5px 15px 8px rgba(1, 22, 54, 0.795);
|
||||||
|
|
||||||
&:hover {
|
.link {
|
||||||
background: rgba(4, 37, 223, 0.274);
|
text-decoration: none;
|
||||||
color: #f1f1f1;
|
color: rgb(0, 0, 0);
|
||||||
}
|
padding: 10px;
|
||||||
|
transition: all 0.4s;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
&.active {
|
&:hover {
|
||||||
color: #f1f1f1;
|
background: rgba(4, 37, 223, 0.274);
|
||||||
background: rgba(17, 120, 255, 0.74);
|
color: #f1f1f1;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
main {
|
&.active {
|
||||||
flex: 1;
|
color: #f1f1f1;
|
||||||
width: 100%;
|
background: rgba(17, 120, 255, 0.74);
|
||||||
// padding: 30px;
|
}
|
||||||
box-sizing: border-box;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
main {
|
||||||
|
flex: 1;
|
||||||
|
width: 100%;
|
||||||
|
// padding: 30px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ export async function request(_url, params) {
|
|||||||
}).then(resp => resp.data).then(response => {
|
}).then(resp => resp.data).then(response => {
|
||||||
if (response.code !== 200 && response.code !== 0) {
|
if (response.code !== 200 && response.code !== 0) {
|
||||||
if (response.code === 1000) {
|
if (response.code === 1000) {
|
||||||
import.meta.env.MODE === 'development' ? router.push({ path: '/login' }) : window.open(import.meta.env.VITE_BASE_LOGIN_URL)
|
import.meta.env.MODE === 'development' ? router.push({ path: '/login' }) : window.open(import.meta.env.VITE_BASE_LOGIN_URL,'_top')
|
||||||
}
|
}
|
||||||
// if (import.meta.env.DEV && response.code === 1000) {
|
// if (import.meta.env.DEV && response.code === 1000) {
|
||||||
// router.push({path: '/login'})
|
// router.push({path: '/login'})
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ function toDetail(i) {
|
|||||||
`${import.meta.env.VITE_BOE_PATH_DETAIL_URL}/pathdetails¶ms=${encodeURIComponent(
|
`${import.meta.env.VITE_BOE_PATH_DETAIL_URL}/pathdetails¶ms=${encodeURIComponent(
|
||||||
`routerId=${props.detail.routerId}&routerName=${props.detail.routerName}`
|
`routerId=${props.detail.routerId}&routerName=${props.detail.routerName}`
|
||||||
)}`
|
)}`
|
||||||
);
|
,'_top');
|
||||||
}
|
}
|
||||||
|
|
||||||
function close() {
|
function close() {
|
||||||
|
|||||||
@@ -25,8 +25,8 @@
|
|||||||
<img style="width: 15px; height: 17px" src="../../assets/image/time.png" />
|
<img style="width: 15px; height: 17px" src="../../assets/image/time.png" />
|
||||||
<div style="margin-left: 8px">
|
<div style="margin-left: 8px">
|
||||||
{{ dayjs(data.planDto?.beginTime).format('YYYY-MM-DD HH:MM') + " 至 " +
|
{{ dayjs(data.planDto?.beginTime).format('YYYY-MM-DD HH:MM') + " 至 " +
|
||||||
dayjs(data.planDto?.endTime).format('YYYY-MM-DD HH:MM')
|
dayjs(data.planDto?.endTime).format('YYYY-MM-DD HH:MM')
|
||||||
}}
|
}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="data.planDto?.address" class="time" style="margin-top: 23px">
|
<div v-if="data.planDto?.address" class="time" style="margin-top: 23px">
|
||||||
@@ -36,16 +36,16 @@
|
|||||||
</div>
|
</div>
|
||||||
<div style="display: flex">
|
<div style="display: flex">
|
||||||
|
|
||||||
<botton class="btn" style="margin-right: 20px" :style="{
|
<botton class="btn" style="margin-right: 20px" :style="{
|
||||||
background: data.signFlag ? '#999' : 'rgb(57, 146, 249)',
|
background: data.signFlag ? '#999' : 'rgb(57, 146, 249)',
|
||||||
}" @click="signClick">{{ data.signFlag ? "已签到" : "签到" }}
|
}" @click="signClick">{{ data.signFlag ? "已签到" : "签到" }}
|
||||||
</botton>
|
</botton>
|
||||||
<botton style="background: #999" class="btn" @click="toSurvery" v-if="data.planDto?.evalFlag == 0">
|
<botton style="background: #999" class="btn" @click="toSurvery" v-if="data.planDto?.evalFlag == 0">
|
||||||
评估
|
评估
|
||||||
</botton>
|
</botton>
|
||||||
<botton :style="{
|
<botton :style="{
|
||||||
background: `${new Date(data.planDto?.beginTime).getTime() > new Date().getTime() ? '#999' : data.isSurvery ? '#999' : 'rgb(57, 146, 249)'}`,
|
background: `${new Date(data.planDto?.beginTime).getTime() > new Date().getTime() ? '#999' : data.isSurvery ? '#999' : 'rgb(57, 146, 249)'}`,
|
||||||
}" class="btn" @click="toSurvery" v-else>{{ data.isSurvery ? "已评估" : "评估" }}
|
}" class="btn" @click="toSurvery" v-else>{{ data.isSurvery ? "已评估" : "评估" }}
|
||||||
</botton>
|
</botton>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -79,10 +79,10 @@
|
|||||||
:style="{ borderBottom: '1px solid rgba(56, 125, 247, 0.2)' }">
|
:style="{ borderBottom: '1px solid rgba(56, 125, 247, 0.2)' }">
|
||||||
<div class="enclosureL">
|
<div class="enclosureL">
|
||||||
<FileTypeImg :v-model="el.slice(el.indexOf('-') + 1)" :style="{
|
<FileTypeImg :v-model="el.slice(el.indexOf('-') + 1)" :style="{
|
||||||
width: '22px',
|
width: '22px',
|
||||||
height: '26px',
|
height: '26px',
|
||||||
marginLeft: '10px',
|
marginLeft: '10px',
|
||||||
}"></FileTypeImg>
|
}"></FileTypeImg>
|
||||||
<div style="margin-left: 20px">{{ el.slice(el.indexOf('-') + 1) }}</div>
|
<div style="margin-left: 20px">{{ el.slice(el.indexOf('-') + 1) }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="new Date(data.planDto.beginTime).getTime() > new Date().getTime()" class="download">
|
<div v-if="new Date(data.planDto.beginTime).getTime() > new Date().getTime()" class="download">
|
||||||
@@ -114,7 +114,7 @@
|
|||||||
|
|
||||||
<div
|
<div
|
||||||
:style="{ background: new Date(data.planDto?.beginTime).getTime() > new Date().getTime() ? '#999' : '' }"
|
:style="{ background: new Date(data.planDto?.beginTime).getTime() > new Date().getTime() ? '#999' : '' }"
|
||||||
class="submit" @click="toWork" >
|
class="submit" @click="toWork">
|
||||||
交作业
|
交作业
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -324,8 +324,7 @@ function toSurvery() {
|
|||||||
query: {
|
query: {
|
||||||
courseId: data.value.planDto.evaluateId,
|
courseId: data.value.planDto.evaluateId,
|
||||||
pName: "面授课",
|
pName: "面授课",
|
||||||
taskId: data.value.planDto.offcoursePlanId,
|
infoId: data.value.offcourseDto.offcourseId,
|
||||||
taskIds: data.value.planDto.offcoursePlanId,
|
|
||||||
chapterOrStageId: 0,
|
chapterOrStageId: 0,
|
||||||
sName: data.value.planDto.name,
|
sName: data.value.planDto.name,
|
||||||
type: 3
|
type: 3
|
||||||
@@ -349,8 +348,7 @@ function toWork() {
|
|||||||
query: {
|
query: {
|
||||||
courseId: data.value.workDto.workId,
|
courseId: data.value.workDto.workId,
|
||||||
id: taskId,
|
id: taskId,
|
||||||
taskId: taskId,
|
infoId: data.value.offcourseDto.offcourseId,
|
||||||
taskIds: taskId,
|
|
||||||
chapterOrStageId: 0,
|
chapterOrStageId: 0,
|
||||||
type,
|
type,
|
||||||
pName: "面授课",
|
pName: "面授课",
|
||||||
@@ -369,7 +367,7 @@ function toExamItem(obj) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log("obj", obj.examinationTestId);
|
console.log("obj", obj.examinationTestId);
|
||||||
window.open(import.meta.env.VITE_BOE_EXAM_DETAIL_URL + obj.examinationTestId); //测评
|
window.open(import.meta.env.VITE_BOE_EXAM_DETAIL_URL + obj.examinationTestId,'_top'); //测评
|
||||||
// router.push({ path: import.meta.env.VITE_BOE_EXAM_DETAIL_URL+ obj.examinationTestId });
|
// router.push({ path: import.meta.env.VITE_BOE_EXAM_DETAIL_URL+ obj.examinationTestId });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -47,21 +47,23 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="threeBtn">
|
<div class="threeBtn">
|
||||||
<botton class="btn" :style="{
|
<botton class="btn" :style="{
|
||||||
background: `${new Date(data.liveStartTime).getTime() > new Date().getTime() ? '#999' : 'rgb(59, 191, 252)'}`,
|
background: `${new Date(data.liveStartTime).getTime() > new Date().getTime() ? '#999' : 'rgb(59, 191, 252)'}`,
|
||||||
}" @click="showClick">观看
|
}" @click="showClick">观看
|
||||||
</botton>
|
</botton>
|
||||||
|
|
||||||
<botton class="btn" :style="{
|
<botton class="btn" :style="{
|
||||||
background: `${new Date(data.liveStartTime).getTime() > new Date().getTime() ? '#999' : data.signFlag ? '#999' : 'rgb(57, 146, 249)'}`,
|
background: `${new Date(data.liveStartTime).getTime() > new Date().getTime() ? '#999' : data.signFlag ? '#999' : 'rgb(57, 146, 249)'}`,
|
||||||
}" @click="signClick">{{ data.signFlag ? "已签到" : "签到" }}
|
}" @click="signClick">{{ data.signFlag ? "已签到" : "签到" }}
|
||||||
</botton>
|
</botton>
|
||||||
<botton style="background: #999" class="btn" @click="commitClick" v-if="data.isEvaluate == 0 ">
|
<botton style="background: #999" class="btn" @click="commitClick" v-if="data.isEvaluate == 0">
|
||||||
评估
|
评估
|
||||||
</botton>
|
</botton>
|
||||||
|
|
||||||
<botton :style="{
|
<botton :style="{
|
||||||
background: `${new Date(data.liveStartTime).getTime() > new Date().getTime() ? '#999' : data.isSurvery ? '#999' : 'rgb(57, 146, 249)'}`,
|
background: `${new Date(data.liveStartTime).getTime() > new Date().getTime() ? '#999' : data.isSurvery ? '#999' : 'rgb(57, 146, 249)'}`,
|
||||||
}" class="btn" @click="commitClick" v-if="data.isEvaluate && data.isEvaluate == 1">{{ data.isSurvery ? "已评估": "评估"}}
|
}" class="btn" @click="commitClick" v-if="data.isEvaluate && data.isEvaluate == 1">{{ data.isSurvery ? "已评估" :
|
||||||
|
"评估"
|
||||||
|
}}
|
||||||
</botton>
|
</botton>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -138,7 +140,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { computed, reactive, toRefs,onUnmounted } from "vue";
|
import { computed, reactive, toRefs, onUnmounted } 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";
|
||||||
@@ -264,8 +266,7 @@ const commitClick = () => {
|
|||||||
path: "/surveydetail",
|
path: "/surveydetail",
|
||||||
query: {
|
query: {
|
||||||
courseId: data.value.assessmentId,
|
courseId: data.value.assessmentId,
|
||||||
taskId: data.value.liveId,
|
infoId: data.value.liveId,
|
||||||
taskIds: data.value.liveId,
|
|
||||||
chapterOrStageId: 0,
|
chapterOrStageId: 0,
|
||||||
pName: "直播",
|
pName: "直播",
|
||||||
sName: data.value.liveName,
|
sName: data.value.liveName,
|
||||||
@@ -283,7 +284,7 @@ function showClick() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
window.open(data.value.liveLink);
|
window.open(data.value.liveLink,'_top');
|
||||||
}
|
}
|
||||||
onUnmounted(() => {
|
onUnmounted(() => {
|
||||||
if (timer) {
|
if (timer) {
|
||||||
|
|||||||
@@ -4,15 +4,17 @@
|
|||||||
|
|
||||||
<div class="pdname">
|
<div class="pdname">
|
||||||
{{ data.name }}
|
{{ data.name }}
|
||||||
<el-popover v-if="data.remark" ref="popover" popper-class="jianjie" placement="right" trigger="hover" :width="300" :content="data.remark">
|
<el-popover v-if="data.remark" ref="popover" popper-class="jianjie" placement="right" trigger="hover" :width="300"
|
||||||
<template #reference><span style="font-size: 16px;font-weight: 600;">简介></span></template>
|
:content="data.remark">
|
||||||
</el-popover>
|
<template #reference><span style="font-size: 16px;font-weight: 600;">简介></span></template>
|
||||||
|
</el-popover>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 详细信息 -->
|
<!-- 详细信息 -->
|
||||||
<div class="detailinfo">
|
<div class="detailinfo">
|
||||||
<div class="detailL">
|
<div class="detailL">
|
||||||
<div v-for="(i, k) in data.stageProcessList" :key="k">
|
<div v-if="data.stageProcessList" v-for="(i, k) in data.stageProcessList" :key="k">
|
||||||
|
{{ loading.close() }}
|
||||||
<div v-if="i.stageId == '0' && i.taskProcessList.length == 0"></div>
|
<div v-if="i.stageId == '0' && i.taskProcessList.length == 0"></div>
|
||||||
<div v-else class="title">
|
<div v-else class="title">
|
||||||
<div class="titleL">{{ i.stageName }}</div>
|
<div class="titleL">{{ i.stageName }}</div>
|
||||||
@@ -29,13 +31,13 @@
|
|||||||
</div>
|
</div>
|
||||||
<div v-if="i.stageId == '0' && i.taskProcessList.length == 0"></div>
|
<div v-if="i.stageId == '0' && i.taskProcessList.length == 0"></div>
|
||||||
<div v-else class="course" v-for="(value, index) in i.taskProcessList.filter(
|
<div v-else class="course" v-for="(value, index) in i.taskProcessList.filter(
|
||||||
(e) => !whiteTypes(e.type)
|
(e) => !whiteTypes(e.type)
|
||||||
)" :key="index">
|
)" :key="index">
|
||||||
<div style="width: 70%">
|
<div style="width: 70%">
|
||||||
<div v-if="value.name.length > 50" class="coursename" :title="value.name">
|
<div v-if="value.name.length > 50" class="coursename" :title="value.name">
|
||||||
<el-popover ref="popover" placement="right" trigger="hover" :width="300" :content="value.name">
|
<el-popover ref="popover" placement="right" trigger="hover" :width="300" :content="value.name">
|
||||||
<template #reference></template>
|
<template #reference></template>
|
||||||
</el-popover>
|
</el-popover>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-else class="coursename" :title="value.name">{{ value.name }}</div>
|
<div v-else class="coursename" :title="value.name">{{ value.name }}</div>
|
||||||
@@ -63,15 +65,15 @@
|
|||||||
<div class="progress">
|
<div class="progress">
|
||||||
<div style="width: 291px">
|
<div style="width: 291px">
|
||||||
<el-progress :percentage="value.currentRatio" :show-text="false" :stroke-width="8" :color="
|
<el-progress :percentage="value.currentRatio" :show-text="false" :stroke-width="8" :color="
|
||||||
{
|
{
|
||||||
0: 'rgba(238, 112, 108, 1)',
|
0: 'rgba(238, 112, 108, 1)',
|
||||||
1: 'rgba(255, 151, 38, 1)',
|
1: 'rgba(255, 151, 38, 1)',
|
||||||
2: 'rgba(39, 122, 255, 1)',
|
2: 'rgba(39, 122, 255, 1)',
|
||||||
3: 'rgba(59, 94, 251, 1)',
|
3: 'rgba(59, 94, 251, 1)',
|
||||||
4: 'rgba(57, 219, 183, 1)',
|
4: 'rgba(57, 219, 183, 1)',
|
||||||
5: 'rgba(57, 219, 183, 1)',
|
5: 'rgba(57, 219, 183, 1)',
|
||||||
}[parseInt(value.currentRatio / 20)]
|
}[parseInt(value.currentRatio / 20)]
|
||||||
" />
|
" />
|
||||||
</div>
|
</div>
|
||||||
<div style="font-size: 14px;font-weight: 500;color: #277aff;margin-left: 10px;color:#677d86;">
|
<div style="font-size: 14px;font-weight: 500;color: #277aff;margin-left: 10px;color:#677d86;">
|
||||||
{{ value.currentRatio }}%
|
{{ value.currentRatio }}%
|
||||||
@@ -81,12 +83,12 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="goclass" @click="toFinish(value, i.stageName, i.stageId)">
|
<div class="goclass" @click="toFinish(value, i.stageName, i.stageId)">
|
||||||
{{
|
{{
|
||||||
value.status === 100
|
value.status === 1
|
||||||
? "已完成"
|
? "已完成"
|
||||||
: types.path[value.type]
|
: types.path[value.type]
|
||||||
? types.toName[value.type]
|
? types.toName[value.type]
|
||||||
: "未开放"
|
: "未开放"
|
||||||
}}
|
}}
|
||||||
</div>
|
</div>
|
||||||
<!-- <div :style="{ display: value.status === 1 ? 'block' : 'none' }">-->
|
<!-- <div :style="{ display: value.status === 1 ? 'block' : 'none' }">-->
|
||||||
<!-- <div-->
|
<!-- <div-->
|
||||||
@@ -101,6 +103,9 @@
|
|||||||
<!-- </div>-->
|
<!-- </div>-->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- <div ref="contentLoadingDom" id="loadings" v-else style="width:100%;height:400px;background:red;">
|
||||||
|
|
||||||
|
</div> -->
|
||||||
<!-- <div class="tag1">必修</div>
|
<!-- <div class="tag1">必修</div>
|
||||||
<div class="tag2">选修</div>
|
<div class="tag2">选修</div>
|
||||||
<div class="tag3">测评</div>
|
<div class="tag3">测评</div>
|
||||||
@@ -185,15 +190,15 @@
|
|||||||
<div style="width: 291px">
|
<div style="width: 291px">
|
||||||
<el-progress :percentage="parseInt(data.totalProgress * 100)" :show-text="false" :stroke-width="8"
|
<el-progress :percentage="parseInt(data.totalProgress * 100)" :show-text="false" :stroke-width="8"
|
||||||
:color="
|
:color="
|
||||||
{
|
{
|
||||||
0: 'rgba(238, 112, 108, 1)',
|
0: 'rgba(238, 112, 108, 1)',
|
||||||
1: 'rgba(255, 151, 38, 1)',
|
1: 'rgba(255, 151, 38, 1)',
|
||||||
2: 'rgba(39, 122, 255, 1)',
|
2: 'rgba(39, 122, 255, 1)',
|
||||||
3: 'rgba(59, 94, 251, 1)',
|
3: 'rgba(59, 94, 251, 1)',
|
||||||
4: 'rgba(57, 219, 183, 1)',
|
4: 'rgba(57, 219, 183, 1)',
|
||||||
5: 'rgba(57, 219, 183, 1)',
|
5: 'rgba(57, 219, 183, 1)',
|
||||||
}[parseInt((data.totalProgress * 100) / 20)]
|
}[parseInt((data.totalProgress * 100) / 20)]
|
||||||
" />
|
" />
|
||||||
</div>
|
</div>
|
||||||
<div style="font-size: 14px; font-weight: 500; margin-left: 10px;color:#677d86;">
|
<div style="font-size: 14px; font-weight: 500; margin-left: 10px;color:#677d86;">
|
||||||
{{ parseInt(data.totalProgress * 100) }}%
|
{{ parseInt(data.totalProgress * 100) }}%
|
||||||
@@ -208,15 +213,15 @@
|
|||||||
<div style="width: 291px">
|
<div style="width: 291px">
|
||||||
<el-progress :percentage="parseInt(data.compulsoryProgress * 100)" :show-text="false"
|
<el-progress :percentage="parseInt(data.compulsoryProgress * 100)" :show-text="false"
|
||||||
:stroke-width="8" :color="
|
:stroke-width="8" :color="
|
||||||
{
|
{
|
||||||
0: 'rgba(238, 112, 108, 1)',
|
0: 'rgba(238, 112, 108, 1)',
|
||||||
1: 'rgba(255, 151, 38, 1)',
|
1: 'rgba(255, 151, 38, 1)',
|
||||||
2: 'rgba(39, 122, 255, 1)',
|
2: 'rgba(39, 122, 255, 1)',
|
||||||
3: 'rgba(59, 94, 251, 1)',
|
3: 'rgba(59, 94, 251, 1)',
|
||||||
4: 'rgba(57, 219, 183, 1)',
|
4: 'rgba(57, 219, 183, 1)',
|
||||||
5: 'rgba(57, 219, 183, 1)',
|
5: 'rgba(57, 219, 183, 1)',
|
||||||
}[parseInt((data.compulsoryProgress * 100) / 20)]
|
}[parseInt((data.compulsoryProgress * 100) / 20)]
|
||||||
" />
|
" />
|
||||||
</div>
|
</div>
|
||||||
<div style="
|
<div style="
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
@@ -248,6 +253,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import { computed, reactive, ref } from "vue";
|
import { computed, reactive, ref } from "vue";
|
||||||
|
import { ElLoading } from 'element-plus'
|
||||||
import word from "@/assets/image/file/word.png";
|
import word from "@/assets/image/file/word.png";
|
||||||
import ppt from "@/assets/image/file/ppt.png";
|
import ppt from "@/assets/image/file/ppt.png";
|
||||||
import pdf from "@/assets/image/file/pdf.png";
|
import pdf from "@/assets/image/file/pdf.png";
|
||||||
@@ -279,6 +285,13 @@ const { data } = useRequest(PROJECT_PROCESS, {
|
|||||||
|
|
||||||
console.log("datadata", data);
|
console.log("datadata", data);
|
||||||
|
|
||||||
|
const loading = ref(false);
|
||||||
|
loading.value = ElLoading.service({
|
||||||
|
lock: true,
|
||||||
|
text: 'Loading',
|
||||||
|
background: 'rgba(0, 0, 0, 0.7)'
|
||||||
|
})
|
||||||
|
|
||||||
// const { onlinedata } = useRequest(ONLINE_PROCESS, {
|
// const { onlinedata } = useRequest(ONLINE_PROCESS, {
|
||||||
// addView: false,
|
// addView: false,
|
||||||
// cid:"1042123882713739264"
|
// cid:"1042123882713739264"
|
||||||
@@ -342,7 +355,7 @@ const types = ref({
|
|||||||
6: "/livebroadcast",
|
6: "/livebroadcast",
|
||||||
7: ({ courseId }) =>
|
7: ({ courseId }) =>
|
||||||
request(LINK_DETAILS(courseId), {}).then(({ data: { linkAddress } }) =>
|
request(LINK_DETAILS(courseId), {}).then(({ data: { linkAddress } }) =>
|
||||||
window.open(linkAddress)
|
window.open(linkAddress,'_top')
|
||||||
), //外联
|
), //外联
|
||||||
8: "/discusspage",
|
8: "/discusspage",
|
||||||
9: "/moreactive",
|
9: "/moreactive",
|
||||||
@@ -351,7 +364,7 @@ const types = ref({
|
|||||||
(evaType == 0
|
(evaType == 0
|
||||||
? import.meta.env.VITE_BOE_TEST_DETAIL_URL
|
? import.meta.env.VITE_BOE_TEST_DETAIL_URL
|
||||||
: import.meta.env.VITE_BOE_TEST_OUT_DETAIL_URL) + targetId
|
: import.meta.env.VITE_BOE_TEST_OUT_DETAIL_URL) + targetId
|
||||||
), //测评
|
,'_top'), //测评
|
||||||
11: "/surveydetail",
|
11: "/surveydetail",
|
||||||
12: "/ballotpage",
|
12: "/ballotpage",
|
||||||
13: "/projectdetails",
|
13: "/projectdetails",
|
||||||
@@ -437,7 +450,7 @@ function toFinish(d, sName, chapterOrStageId) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (d.type == 3 || d.type == 7) {
|
if (d.type == 3 || d.type == 7) {
|
||||||
d.status || request(STUDY_RECORD, {
|
d.status || request(STUDY_RECORD, {
|
||||||
studentId: data.value.userInfoBo.userId,
|
studentId: data.value.userInfoBo.userId,
|
||||||
targetId: data.value.routerId,
|
targetId: data.value.routerId,
|
||||||
logo: 2,
|
logo: 2,
|
||||||
@@ -448,7 +461,7 @@ function toFinish(d, sName, chapterOrStageId) {
|
|||||||
if (typeof types.value.path[d.type] === "string") {
|
if (typeof types.value.path[d.type] === "string") {
|
||||||
types.value.path[d.type] &&
|
types.value.path[d.type] &&
|
||||||
types.value.path[d.type].startsWith("http") &&
|
types.value.path[d.type].startsWith("http") &&
|
||||||
window.open(types.value.path[d.type] + d.targetId);
|
window.open(types.value.path[d.type] + d.targetId,'_top');
|
||||||
types.value.path[d.type] &&
|
types.value.path[d.type] &&
|
||||||
types.value.path[d.type].startsWith("/") &&
|
types.value.path[d.type].startsWith("/") &&
|
||||||
router.push({
|
router.push({
|
||||||
@@ -456,8 +469,7 @@ function toFinish(d, sName, chapterOrStageId) {
|
|||||||
query: {
|
query: {
|
||||||
id: d.projectTaskId,
|
id: d.projectTaskId,
|
||||||
type: 2,
|
type: 2,
|
||||||
taskId: data.value.projectId,
|
infoId: data.value.projectId,
|
||||||
taskIds: data.value.projectId,
|
|
||||||
courseId: d.courseId,
|
courseId: d.courseId,
|
||||||
pName: data.value.name,
|
pName: data.value.name,
|
||||||
sName,
|
sName,
|
||||||
@@ -475,8 +487,9 @@ function whiteTypes(type) {
|
|||||||
<!-- Add "scoped" attribute to limit CSS to this component only -->
|
<!-- Add "scoped" attribute to limit CSS to this component only -->
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.example-showcase .el-loading-mask {
|
.example-showcase .el-loading-mask {
|
||||||
z-index: 9;
|
z-index: 9;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pathdetails {
|
.pathdetails {
|
||||||
.el-dialog__header {
|
.el-dialog__header {
|
||||||
display: none;
|
display: none;
|
||||||
|
|||||||
@@ -187,7 +187,7 @@ const goProjectDetails = (value) => {
|
|||||||
: window.open(
|
: window.open(
|
||||||
`${import.meta.env.VITE_BOE_PATH_DETAIL_URL}/projectdetails¶ms=${encodeURIComponent(
|
`${import.meta.env.VITE_BOE_PATH_DETAIL_URL}/projectdetails¶ms=${encodeURIComponent(
|
||||||
`projectId=${value.projectId}`
|
`projectId=${value.projectId}`
|
||||||
)}`
|
,'_top')}`
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -80,7 +80,7 @@
|
|||||||
: scope.row.taskStatus === 2
|
: scope.row.taskStatus === 2
|
||||||
? completed
|
? completed
|
||||||
: scope.row.taskStatus === 0
|
: scope.row.taskStatus === 0
|
||||||
? nostarted
|
? ongoing
|
||||||
: null
|
: null
|
||||||
" style="width: 99px; height: 99px"/>
|
" style="width: 99px; height: 99px"/>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|||||||
@@ -4,62 +4,50 @@
|
|||||||
|
|
||||||
<!-- 面包屑导航 -->
|
<!-- 面包屑导航 -->
|
||||||
|
|
||||||
<div class="pdname">
|
<div class="pdname">
|
||||||
{{ data.name }}
|
{{ data.name }}
|
||||||
<el-popover v-if="data.remark" ref="popover" popper-class="jianjie" placement="right" trigger="hover" :width="300" :content="data.remark">
|
<el-popover v-if="data.remark" ref="popover" popper-class="jianjie" placement="right" trigger="hover" :width="300"
|
||||||
<template #reference><span style="font-size: 16px;font-weight: 600;">简介></span></template>
|
:content="data.remark">
|
||||||
</el-popover>
|
<template #reference><span style="font-size: 16px;font-weight: 600;">简介></span></template>
|
||||||
</div>
|
</el-popover>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- 详细信息 -->
|
<!-- 详细信息 -->
|
||||||
<div class="detailinfo">
|
<div class="detailinfo">
|
||||||
<div class="detailL">
|
<div class="detailL">
|
||||||
<div>
|
<div>
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<div class="titleL">{{ data.currentStageName }}</div>
|
<div class="titleL">{{ data.currentStageName }}</div>
|
||||||
<div class="titleR" :style="{ display: 'flex' }">
|
<div class="titleR" :style="{ display: 'flex' }">
|
||||||
<img
|
<img :src="data.currentChapterCnt ? circle : circle2" />
|
||||||
:src="data.currentChapterCnt?circle:circle2"/>
|
<div class="titleRT" :style="{ color: data.currentChapterCnt ? '' : 'rgba(102, 102, 102, 1)' }">
|
||||||
<div class="titleRT" :style="{color:data.currentChapterCnt?'':'rgba(102, 102, 102, 1)'}">
|
{{ data.currentChapterCnt ? '进行中' : '未开始' }}
|
||||||
{{ data.currentChapterCnt ? '进行中' : '未开始' }}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="course" v-for="(value, index) in data.taskBoList?.filter(
|
||||||
<div
|
(e) => !whiteTypes(e.type)
|
||||||
class="course"
|
)" :key="index">
|
||||||
v-for="(value, index) in data.taskBoList?.filter(
|
<div style="width: 70%">
|
||||||
(e) => !whiteTypes(e.type)
|
<div v-if="value.name.length > 50" class="coursename" :title="value.name">
|
||||||
)"
|
<el-popover ref="popover" placement="right" trigger="hover" :width="300" :content="value.name">
|
||||||
:key="index"
|
<template #reference>{{ value.name }}</template>
|
||||||
>
|
</el-popover>
|
||||||
<div style="width: 70%">
|
</div>
|
||||||
<div v-if="value.name.length >50" class="coursename" :title="value.name">
|
|
||||||
<el-popover ref="popover" placement="right" trigger="hover" :width="300" :content="value.name">
|
|
||||||
<template #reference>{{ value.name }}</template>
|
|
||||||
</el-popover>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div v-else class="coursename" :title="value.name">
|
<div v-else class="coursename" :title="value.name">
|
||||||
{{ value.name }}
|
{{ value.name }}
|
||||||
</div>
|
</div>
|
||||||
<div class="coursetag">
|
<div class="coursetag">
|
||||||
<div
|
<div class="tag1" style="margin-right: 11px; margin-top: 16px" v-if="value.flag">
|
||||||
class="tag1"
|
必修
|
||||||
style="margin-right: 11px; margin-top: 16px"
|
</div>
|
||||||
v-if="value.flag"
|
<div class="tag2" style="margin-right: 11px; margin-top: 16px" v-if="!value.flag">
|
||||||
>
|
选修
|
||||||
必修
|
</div>
|
||||||
</div>
|
<div class="tag3" style="margin-right: 11px; margin-top: 16px">
|
||||||
<div
|
{{ types.typeName[value.type] || "" }}
|
||||||
class="tag2"
|
</div>
|
||||||
style="margin-right: 11px; margin-top: 16px"
|
|
||||||
v-if="!value.flag"
|
|
||||||
>
|
|
||||||
选修
|
|
||||||
</div>
|
|
||||||
<div class="tag3" style="margin-right: 11px; margin-top: 16px">
|
|
||||||
{{ types.typeName[value.type] || "" }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- <div-->
|
<!-- <div-->
|
||||||
<!-- v-for="(item, key) in value.flag"-->
|
<!-- v-for="(item, key) in value.flag"-->
|
||||||
@@ -75,36 +63,35 @@
|
|||||||
<div class="progress">
|
<div class="progress">
|
||||||
<div style="width: 291px">
|
<div style="width: 291px">
|
||||||
<el-progress :percentage="value.currentRatio" :show-text="false" :stroke-width="8" :color="
|
<el-progress :percentage="value.currentRatio" :show-text="false" :stroke-width="8" :color="
|
||||||
{
|
{
|
||||||
0: 'rgba(238, 112, 108, 1)',
|
0: 'rgba(238, 112, 108, 1)',
|
||||||
1: 'rgba(255, 151, 38, 1)',
|
1: 'rgba(255, 151, 38, 1)',
|
||||||
2: 'rgba(39, 122, 255, 1)',
|
2: 'rgba(39, 122, 255, 1)',
|
||||||
3: 'rgba(59, 94, 251, 1)',
|
3: 'rgba(59, 94, 251, 1)',
|
||||||
4: 'rgba(57, 219, 183, 1)',
|
4: 'rgba(57, 219, 183, 1)',
|
||||||
5: 'rgba(57, 219, 183, 1)',
|
5: 'rgba(57, 219, 183, 1)',
|
||||||
}[parseInt(value.currentRatio / 20)]
|
}[parseInt(value.currentRatio / 20)]
|
||||||
" />
|
" />
|
||||||
</div>
|
</div>
|
||||||
<div style="font-size: 14px;font-weight: 500;color: #277aff;margin-left: 10px;"
|
<div style="font-size: 14px;font-weight: 500;color: #277aff;margin-left: 10px;" :style="{
|
||||||
:style="{
|
color: {
|
||||||
color: {
|
0: 'rgba(238, 112, 108, 1)',
|
||||||
0: 'rgba(238, 112, 108, 1)',
|
1: 'rgba(255, 151, 38, 1)',
|
||||||
1: 'rgba(255, 151, 38, 1)',
|
2: 'rgba(39, 122, 255, 1)',
|
||||||
2: 'rgba(39, 122, 255, 1)',
|
3: 'rgba(59, 94, 251, 1)',
|
||||||
3: 'rgba(59, 94, 251, 1)',
|
4: 'rgba(57, 219, 183, 1)',
|
||||||
4: 'rgba(57, 219, 183, 1)',
|
5: 'rgba(57, 219, 183, 1)',
|
||||||
5: 'rgba(57, 219, 183, 1)',
|
}[parseInt(value.currentRatio / 20)],
|
||||||
}[parseInt(value.currentRatio / 20)],
|
}">
|
||||||
}">
|
|
||||||
{{ value.currentRatio }}%
|
{{ value.currentRatio }}%
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="goclass" :style="{
|
<div class="goclass" :style="{
|
||||||
background: `${types.path[value.type] ? '#2478ff' : '#999'}`,
|
background: `${types.path[value.type] ? '#2478ff' : '#999'}`,
|
||||||
}" @click="toFinish(value)">
|
}" @click="toFinish(value)">
|
||||||
{{ value.currentRatio === 100 ? "已完成" : types.path[value.type] ? types.toName[value.type] : "未开放" }}
|
{{ value.status === 1 ? "已完成" : types.path[value.type] ? types.toName[value.type] : "未开放" }}
|
||||||
</div>
|
</div>
|
||||||
<!-- <div :style="{ display: value.status === 1 ? 'block' : 'none' }">-->
|
<!-- <div :style="{ display: value.status === 1 ? 'block' : 'none' }">-->
|
||||||
<!-- <div-->
|
<!-- <div-->
|
||||||
@@ -203,26 +190,26 @@
|
|||||||
<div style="width: 291px">
|
<div style="width: 291px">
|
||||||
<el-progress :percentage="parseInt(data.currentChapterCnt / data.totalChapterCnt * 100)"
|
<el-progress :percentage="parseInt(data.currentChapterCnt / data.totalChapterCnt * 100)"
|
||||||
:show-text="false" :stroke-width="8" :color="
|
:show-text="false" :stroke-width="8" :color="
|
||||||
{
|
{
|
||||||
0: 'rgba(238, 112, 108, 1)',
|
0: 'rgba(238, 112, 108, 1)',
|
||||||
1: 'rgba(255, 151, 38, 1)',
|
1: 'rgba(255, 151, 38, 1)',
|
||||||
2: 'rgba(39, 122, 255, 1)',
|
2: 'rgba(39, 122, 255, 1)',
|
||||||
3: 'rgba(59, 94, 251, 1)',
|
3: 'rgba(59, 94, 251, 1)',
|
||||||
4: 'rgba(57, 219, 183, 1)',
|
4: 'rgba(57, 219, 183, 1)',
|
||||||
5: 'rgba(57, 219, 183, 1)',
|
5: 'rgba(57, 219, 183, 1)',
|
||||||
}[(parseInt(data.currentChapterCnt / data.totalChapterCnt) * 100) / 20]
|
}[(parseInt(data.currentChapterCnt / data.totalChapterCnt) * 100) / 20]
|
||||||
" />
|
" />
|
||||||
</div>
|
</div>
|
||||||
<div style="font-size: 14px; font-weight: 500; margin-left: 10px" :style="{
|
<div style="font-size: 14px; font-weight: 500; margin-left: 10px" :style="{
|
||||||
color: {
|
color: {
|
||||||
0: 'rgba(238, 112, 108, 1)',
|
0: 'rgba(238, 112, 108, 1)',
|
||||||
1: 'rgba(255, 151, 38, 1)',
|
1: 'rgba(255, 151, 38, 1)',
|
||||||
2: 'rgba(39, 122, 255, 1)',
|
2: 'rgba(39, 122, 255, 1)',
|
||||||
3: 'rgba(59, 94, 251, 1)',
|
3: 'rgba(59, 94, 251, 1)',
|
||||||
4: 'rgba(57, 219, 183, 1)',
|
4: 'rgba(57, 219, 183, 1)',
|
||||||
5: 'rgba(57, 219, 183, 1)',
|
5: 'rgba(57, 219, 183, 1)',
|
||||||
}[parseInt((data.currentChapterCnt / data.totalChapterCnt * 100) / 20)],
|
}[parseInt((data.currentChapterCnt / data.totalChapterCnt * 100) / 20)],
|
||||||
}">
|
}">
|
||||||
{{ parseInt(data.currentChapterCnt / data.totalChapterCnt * 100) }}%
|
{{ parseInt(data.currentChapterCnt / data.totalChapterCnt * 100) }}%
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -235,15 +222,15 @@
|
|||||||
<div style="width: 291px">
|
<div style="width: 291px">
|
||||||
<el-progress :percentage="parseInt(data.currentReqCnt / data.totalReqCnt * 100)" :show-text="false"
|
<el-progress :percentage="parseInt(data.currentReqCnt / data.totalReqCnt * 100)" :show-text="false"
|
||||||
:stroke-width="8" :color="
|
:stroke-width="8" :color="
|
||||||
{
|
{
|
||||||
0: 'rgba(238, 112, 108, 1)',
|
0: 'rgba(238, 112, 108, 1)',
|
||||||
1: 'rgba(255, 151, 38, 1)',
|
1: 'rgba(255, 151, 38, 1)',
|
||||||
2: 'rgba(39, 122, 255, 1)',
|
2: 'rgba(39, 122, 255, 1)',
|
||||||
3: 'rgba(59, 94, 251, 1)',
|
3: 'rgba(59, 94, 251, 1)',
|
||||||
4: 'rgba(57, 219, 183, 1)',
|
4: 'rgba(57, 219, 183, 1)',
|
||||||
5: 'rgba(57, 219, 183, 1)',
|
5: 'rgba(57, 219, 183, 1)',
|
||||||
}[parseInt((data.currentReqCnt / data.totalReqCnt * 100) / 20)]
|
}[parseInt((data.currentReqCnt / data.totalReqCnt * 100) / 20)]
|
||||||
" />
|
" />
|
||||||
</div>
|
</div>
|
||||||
<div style="
|
<div style="
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
@@ -251,15 +238,15 @@
|
|||||||
color: #277aff;
|
color: #277aff;
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
" :style="{
|
" :style="{
|
||||||
color: {
|
color: {
|
||||||
0: 'rgba(238, 112, 108, 1)',
|
0: 'rgba(238, 112, 108, 1)',
|
||||||
1: 'rgba(255, 151, 38, 1)',
|
1: 'rgba(255, 151, 38, 1)',
|
||||||
2: 'rgba(39, 122, 255, 1)',
|
2: 'rgba(39, 122, 255, 1)',
|
||||||
3: 'rgba(59, 94, 251, 1)',
|
3: 'rgba(59, 94, 251, 1)',
|
||||||
4: 'rgba(57, 219, 183, 1)',
|
4: 'rgba(57, 219, 183, 1)',
|
||||||
5: 'rgba(57, 219, 183, 1)',
|
5: 'rgba(57, 219, 183, 1)',
|
||||||
}[parseInt((data.currentReqCnt / data.totalReqCnt * 100) / 20)],
|
}[parseInt((data.currentReqCnt / data.totalReqCnt * 100) / 20)],
|
||||||
}">
|
}">
|
||||||
{{ parseInt(data.currentReqCnt / data.totalReqCnt * 100) }}%
|
{{ parseInt(data.currentReqCnt / data.totalReqCnt * 100) }}%
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -356,7 +343,7 @@ const types = ref({
|
|||||||
6: "/livebroadcast",
|
6: "/livebroadcast",
|
||||||
7: ({ courseId }) =>
|
7: ({ courseId }) =>
|
||||||
request(LINK_DETAILS(courseId), {}).then(({ data: { linkAddress } }) =>
|
request(LINK_DETAILS(courseId), {}).then(({ data: { linkAddress } }) =>
|
||||||
window.open(linkAddress)
|
window.open(linkAddress, '_top')
|
||||||
), //外联
|
), //外联
|
||||||
8: "/discusspage",
|
8: "/discusspage",
|
||||||
9: "/moreactive",
|
9: "/moreactive",
|
||||||
@@ -365,7 +352,7 @@ const types = ref({
|
|||||||
(evaType == 0
|
(evaType == 0
|
||||||
? import.meta.env.VITE_BOE_TEST_DETAIL_URL
|
? import.meta.env.VITE_BOE_TEST_DETAIL_URL
|
||||||
: import.meta.env.VITE_BOE_TEST_OUT_DETAIL_URL) + targetId
|
: import.meta.env.VITE_BOE_TEST_OUT_DETAIL_URL) + targetId
|
||||||
), //测评
|
,'_top'), //测评
|
||||||
11: "/surveydetail",
|
11: "/surveydetail",
|
||||||
12: "/ballotpage",
|
12: "/ballotpage",
|
||||||
13: "/projectdetails",
|
13: "/projectdetails",
|
||||||
@@ -446,7 +433,7 @@ function toFinish(d) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (d.type === 3 || d.type === 7) {
|
if (d.type === 3 || d.type === 7) {
|
||||||
d.status || request(STUDY_RECORD, {
|
d.status || request(STUDY_RECORD, {
|
||||||
studentId: userInfo.value.id,
|
studentId: userInfo.value.id,
|
||||||
targetId: data.value.routerId,
|
targetId: data.value.routerId,
|
||||||
logo: 1,
|
logo: 1,
|
||||||
@@ -457,17 +444,15 @@ function toFinish(d) {
|
|||||||
if (typeof types.value.path[d.type] === "string") {
|
if (typeof types.value.path[d.type] === "string") {
|
||||||
types.value.path[d.type] &&
|
types.value.path[d.type] &&
|
||||||
types.value.path[d.type].startsWith("http") &&
|
types.value.path[d.type].startsWith("http") &&
|
||||||
window.open(types.value.path[d.type] + d.targetId);
|
window.open(types.value.path[d.type] + d.targetId,'_top');
|
||||||
types.value.path[d.type] &&
|
types.value.path[d.type] &&
|
||||||
types.value.path[d.type].startsWith("/") &&
|
types.value.path[d.type].startsWith("/") &&
|
||||||
router.push({
|
router.push({
|
||||||
path: types.value.path[d.type],
|
path: types.value.path[d.type],
|
||||||
query: {
|
query: {
|
||||||
id: d.routerTaskId,
|
id: d.routerTaskId,
|
||||||
// id: routerId,
|
|
||||||
type: 1,
|
type: 1,
|
||||||
taskId: routerId,
|
infoId: routerId,
|
||||||
taskIds: routerId,
|
|
||||||
courseId: d.courseId,
|
courseId: d.courseId,
|
||||||
pName: data.value.name,
|
pName: data.value.name,
|
||||||
sName: data.value.currentStageName,
|
sName: data.value.currentStageName,
|
||||||
@@ -508,6 +493,7 @@ function whiteTypes(type) {
|
|||||||
margin-top: 24px;
|
margin-top: 24px;
|
||||||
display: flex;
|
display: flex;
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
|
|
||||||
.detailL {
|
.detailL {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
margin-right: 20px;
|
margin-right: 20px;
|
||||||
|
|||||||
@@ -46,8 +46,8 @@
|
|||||||
|
|
||||||
<div class="question" v-for="
|
<div class="question" v-for="
|
||||||
(value, index) in formateArr([data.assessmentEssayQuestionDtoList, data.assessmentMultipleChoiceDtoList, data.assessmentScoringQuestionDtoList, data.assessmentSingleChoiceDtoList]).sort((a, b) => {
|
(value, index) in formateArr([data.assessmentEssayQuestionDtoList, data.assessmentMultipleChoiceDtoList, data.assessmentScoringQuestionDtoList, data.assessmentSingleChoiceDtoList]).sort((a, b) => {
|
||||||
return a[0].orderNumber - b[0].orderNumber
|
return a[0].orderNumber - b[0].orderNumber
|
||||||
}) " :key="index" :style="{ 'margin-top': index === 0 ? '57px' : '41px' }">
|
}) " :key="index" :style="{ 'margin-top': index === 0 ? '57px' : '41px' }">
|
||||||
<div v-if="value[0].questionType == '4'">
|
<div v-if="value[0].questionType == '4'">
|
||||||
<div class="question" v-for="(value, index) in data.assessmentScoringQuestionDtoList" :key="index"
|
<div class="question" v-for="(value, index) in data.assessmentScoringQuestionDtoList" :key="index"
|
||||||
:style="{ 'margin-top': index === 0 ? '57px' : '41px' }">
|
:style="{ 'margin-top': index === 0 ? '57px' : '41px' }">
|
||||||
@@ -56,9 +56,9 @@
|
|||||||
<div class="answerL">完全没用</div>
|
<div class="answerL">完全没用</div>
|
||||||
<div class="answerC">
|
<div class="answerC">
|
||||||
<div class="answerCitem" v-for="(item, key) in Array.from(
|
<div class="answerCitem" v-for="(item, key) in Array.from(
|
||||||
{ length: value.assessmentMaxScore },
|
{ length: value.assessmentMaxScore },
|
||||||
(k, i) => i
|
(k, i) => i
|
||||||
)" :key="key" :style="{
|
)" :key="key" :style="{
|
||||||
'margin-left': key === 0 ? '15px' : '10px',
|
'margin-left': key === 0 ? '15px' : '10px',
|
||||||
background:
|
background:
|
||||||
value.selectAnswer === item
|
value.selectAnswer === item
|
||||||
@@ -86,17 +86,17 @@
|
|||||||
|
|
||||||
<div v-else-if="value[0].questionType == '1'">
|
<div v-else-if="value[0].questionType == '1'">
|
||||||
<div class="question" style="margin-top: 41px" v-if="
|
<div class="question" style="margin-top: 41px" v-if="
|
||||||
data.assessmentSingleChoiceDtoList &&
|
data.assessmentSingleChoiceDtoList &&
|
||||||
data.assessmentSingleChoiceDtoList.length
|
data.assessmentSingleChoiceDtoList.length
|
||||||
">
|
">
|
||||||
<div class="text">
|
<div class="text">
|
||||||
{{ data.assessmentSingleChoiceDtoList[0]?.singleStemName }}
|
{{ data.assessmentSingleChoiceDtoList[0]?.singleStemName }}
|
||||||
</div>
|
</div>
|
||||||
<div v-for="(value, index) in data.assessmentSingleChoiceDtoList" :key="index"
|
<div v-for="(value, index) in data.assessmentSingleChoiceDtoList" :key="index"
|
||||||
style="display: flex; align-items: center" :style="{
|
style="display: flex; align-items: center" :style="{
|
||||||
'margin-top': index === 0 ? '29px' : '22px',
|
'margin-top': index === 0 ? '29px' : '22px',
|
||||||
cursor: 'pointer',
|
cursor: 'pointer',
|
||||||
}" @click="
|
}" @click="
|
||||||
() => {
|
() => {
|
||||||
if (data.isSubmit) {
|
if (data.isSubmit) {
|
||||||
return;
|
return;
|
||||||
@@ -115,17 +115,17 @@
|
|||||||
|
|
||||||
<div v-else-if="value[0].questionType == '2'">
|
<div v-else-if="value[0].questionType == '2'">
|
||||||
<div class="question" style="margin-top: 41px" v-if="
|
<div class="question" style="margin-top: 41px" v-if="
|
||||||
data.assessmentMultipleChoiceDtoList &&
|
data.assessmentMultipleChoiceDtoList &&
|
||||||
data.assessmentMultipleChoiceDtoList.length
|
data.assessmentMultipleChoiceDtoList.length
|
||||||
">
|
">
|
||||||
<div class="text">
|
<div class="text">
|
||||||
{{ data.assessmentMultipleChoiceDtoList[0]?.multipleStemName }}
|
{{ data.assessmentMultipleChoiceDtoList[0]?.multipleStemName }}
|
||||||
</div>
|
</div>
|
||||||
<div v-for="(value, index) in data.assessmentMultipleChoiceDtoList" :key="index"
|
<div v-for="(value, index) in data.assessmentMultipleChoiceDtoList" :key="index"
|
||||||
style="display: flex; align-items: center" :style="{
|
style="display: flex; align-items: center" :style="{
|
||||||
'margin-top': index === 0 ? '29px' : '22px',
|
'margin-top': index === 0 ? '29px' : '22px',
|
||||||
cursor: 'pointer',
|
cursor: 'pointer',
|
||||||
}" @click="
|
}" @click="
|
||||||
() => {
|
() => {
|
||||||
if (data.isSubmit) {
|
if (data.isSubmit) {
|
||||||
return;
|
return;
|
||||||
@@ -292,11 +292,11 @@
|
|||||||
</div> -->
|
</div> -->
|
||||||
|
|
||||||
<div style="display: flex; justify-content: center" v-if="
|
<div style="display: flex; justify-content: center" v-if="
|
||||||
data.assessmentEssayQuestionDtoList?.length ||
|
data.assessmentEssayQuestionDtoList?.length ||
|
||||||
data.assessmentMultipleChoiceDtoList?.length ||
|
data.assessmentMultipleChoiceDtoList?.length ||
|
||||||
data.assessmentSingleChoiceDtoList?.length ||
|
data.assessmentSingleChoiceDtoList?.length ||
|
||||||
data.assessmentScoringQuestionDtoList?.length
|
data.assessmentScoringQuestionDtoList?.length
|
||||||
">
|
">
|
||||||
<div class="submit" @click="submit" :style="{ background: data.isSubmit ? '#999' : '#2478ff' }">
|
<div class="submit" @click="submit" :style="{ background: data.isSubmit ? '#999' : '#2478ff' }">
|
||||||
提交
|
提交
|
||||||
</div>
|
</div>
|
||||||
@@ -334,7 +334,7 @@ import { ElMessage } from "element-plus";
|
|||||||
import { ref } from "vue";
|
import { ref } from "vue";
|
||||||
|
|
||||||
const {
|
const {
|
||||||
query: { courseId, id: taskId, taskIds, type, pName, sName, chapterOrStageId },
|
query: { courseId, id: taskId, infoId, type, pName, sName, chapterOrStageId },
|
||||||
} = useRoute();
|
} = useRoute();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const returnclick = () => {
|
const returnclick = () => {
|
||||||
@@ -353,8 +353,8 @@ function formateArr(arr1) {
|
|||||||
return newarr
|
return newarr
|
||||||
}
|
}
|
||||||
|
|
||||||
const { data } = useRequest(ASSESSMENT_QUERY(courseId), { id: courseId, type, chapterOrStageId, targetId: taskIds ? taskIds : 0 });
|
const { data } = useRequest(ASSESSMENT_QUERY(courseId), { id: courseId, type, chapterOrStageId, targetId: infoId ? infoId : 0 });
|
||||||
console.log('我是查询评估的参数', { id: courseId, type, chapterOrStageId, targetId: taskIds ? taskIds : 0 })
|
console.log('我是查询评估的参数', { id: courseId, type, chapterOrStageId, targetId: infoId ? infoId : 0 })
|
||||||
console.log('我是需要排序得题目', data)
|
console.log('我是需要排序得题目', data)
|
||||||
|
|
||||||
function goHome() {
|
function goHome() {
|
||||||
@@ -369,10 +369,10 @@ function submit() {
|
|||||||
if (1 > 0) {
|
if (1 > 0) {
|
||||||
console.log(data)
|
console.log(data)
|
||||||
console.log('我是提交的数据', {
|
console.log('我是提交的数据', {
|
||||||
targetId: taskId ? taskId : taskIds ? taskIds : 0, // 项目、路径图或开课的Id
|
targetId: infoId ? infoId : 0, // 项目、路径图或开课的Id
|
||||||
chapterOrStageId: chapterOrStageId ? chapterOrStageId : 0, // 关卡或者阶段Id 关卡Id不允许为空
|
chapterOrStageId: chapterOrStageId ? chapterOrStageId : 0, // 关卡或者阶段Id 关卡Id不允许为空
|
||||||
assessmentId: courseId,
|
assessmentId: courseId,
|
||||||
taskId: taskId ? taskId : taskIds ? taskIds : 0,
|
taskId: taskId ? taskId : 0,
|
||||||
type,
|
type,
|
||||||
result: JSON.stringify(data.value),
|
result: JSON.stringify(data.value),
|
||||||
})
|
})
|
||||||
@@ -424,10 +424,10 @@ function submit() {
|
|||||||
|
|
||||||
data.value.isSubmit = !data.value.isSubmit;
|
data.value.isSubmit = !data.value.isSubmit;
|
||||||
request(ASSESSMENT_SUBMIT, {
|
request(ASSESSMENT_SUBMIT, {
|
||||||
targetId: taskIds ? taskIds : 0, // 项目、路径图或开课的Id
|
targetId: infoId ? infoId : 0, // 项目、路径图或开课的Id
|
||||||
chapterOrStageId: chapterOrStageId ? chapterOrStageId : 0, // 关卡或者阶段Id 关卡Id不允许为空
|
chapterOrStageId: chapterOrStageId ? chapterOrStageId : 0, // 关卡或者阶段Id 关卡Id不允许为空
|
||||||
assessmentId: courseId,
|
assessmentId: courseId,
|
||||||
taskId: taskIds ? taskIds : 0,
|
taskId: taskId ? taskId : 0,
|
||||||
type,
|
type,
|
||||||
result: JSON.stringify(data.value),
|
result: JSON.stringify(data.value),
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
|
|||||||
Reference in New Issue
Block a user