mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-student.git
synced 2025-12-09 02:46:48 +08:00
feat:合并
This commit is contained in:
1
.env
1
.env
@@ -1,6 +1,7 @@
|
||||
VITE_BASE=/fe-student
|
||||
VITE_BASE_API=/
|
||||
VITE_BASE_LOGIN_URL=https://u-pre.boe.com/web/
|
||||
VITE_PROXY_URL=http://111.231.196.214:30001
|
||||
|
||||
|
||||
VITE_BOE_ONLINE_CLASS_URL=https://u-pre.boe.com/pc/course/studyindex?id=
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* @Author: lixg lixg@dongwu-inc.com
|
||||
* @Date: 2022-11-21 17:28:10
|
||||
* @LastEditors: lixg lixg@dongwu-inc.com
|
||||
* @LastEditTime: 2022-12-14 22:48:46
|
||||
* @LastEditTime: 2022-12-15 11:54:03
|
||||
* @FilePath: /fe-stu/src/App.vue
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
-->
|
||||
@@ -59,8 +59,8 @@ function getUserInfo() {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
min-height: 100%;
|
||||
// background-color: rgba(242, 245, 247, 1);
|
||||
background-color: #ccc;
|
||||
background-color: rgba(242, 245, 247, 1);
|
||||
// background-color: #ccc;
|
||||
#nav {
|
||||
width: 220px;
|
||||
height: 100%;
|
||||
|
||||
@@ -17,10 +17,10 @@ export const LINK_DETAILS = linkId => `/link/getOne?linkId=${linkId} post`
|
||||
export const PROJECT_PROCESS = '/stu/project/process'
|
||||
export const ROUTER_UNCOMPLETE_LIST = '/stu/router/unCompleteTaskList post'
|
||||
export const TAS_ACTIVITY_DETAIL = '/activity'
|
||||
export const TASK_ACTIVITY_SIGN = '/activitySubmit/updateActivitySignInStatus post'
|
||||
export const TASK_ACTIVITY_SIGN = '/stu/task/activity/sign post'
|
||||
export const TASK_BROADCAST_COMMIT = '/stu/task/broadcast/commit'
|
||||
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_DETAIL = '/stu/task/vote/detail'
|
||||
export const TASK_WORK_COMMIT = '/workSubmit/submitStudentWorkDetail post'
|
||||
@@ -48,7 +48,7 @@ export const COMMENT_PRAISE = '/comment/praise post'
|
||||
export const COMMENT_COLLECTION = '/comment/collection 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_SUBMIT = '/assessmentSubmit/submitAssessmentDetail'
|
||||
export const ASSESSMENT_QUERY = assessmentId => `/stu/task/evaluate/get`
|
||||
export const ASSESSMENT_SUBMIT = '/stu/task/evaluate/commit post'
|
||||
|
||||
export const ACTIVITY = '/activity'
|
||||
@@ -14,8 +14,8 @@
|
||||
<div class="title">【面授课】{{ data.planDto?.name }}</div>
|
||||
<div class="time" style="margin-top: 26px">
|
||||
<img
|
||||
style="width: 15px; height: 17px"
|
||||
src="../../assets/image/time.png"
|
||||
style="width: 15px; height: 17px"
|
||||
src="../../assets/image/time.png"
|
||||
/>
|
||||
<div style="margin-left: 8px">
|
||||
{{ data.offcourseDto?.publishTime }}
|
||||
@@ -23,15 +23,15 @@
|
||||
</div>
|
||||
<div class="time" style="margin-top: 23px">
|
||||
<img
|
||||
style="width: 16px; height: 18px"
|
||||
src="../../assets/image/position.png"
|
||||
style="width: 16px; height: 18px"
|
||||
src="../../assets/image/position.png"
|
||||
/>
|
||||
<div style="margin-left: 8px">{{ data.planDto?.address }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btn" @click="toSurvery" v-if="data.planDto?.evalFlag">
|
||||
评估
|
||||
</div>
|
||||
<botton :style="{background:`${data.isSurvery?'#999':'rgb(57, 146, 249)'}`}" class="btn" @click="toSurvery"
|
||||
>{{ data.isSurvery ? '已评估' : '评估' }}
|
||||
</botton>
|
||||
</div>
|
||||
<!-- 基本信息 -->
|
||||
|
||||
@@ -42,8 +42,8 @@
|
||||
<div class="" style="margin-left: 48px; margin-right: 48px">
|
||||
<div class="title">
|
||||
<img
|
||||
style="width: 20px; height: 20px"
|
||||
src="../../assets/image/course.png"
|
||||
style="width: 20px; height: 20px"
|
||||
src="../../assets/image/course.png"
|
||||
/>
|
||||
<div class="text">课程详情</div>
|
||||
<div class="box"></div>
|
||||
@@ -57,16 +57,16 @@
|
||||
<el-tabs v-model="activeName" @tab-click="handleClick">
|
||||
<el-tab-pane label="课程附件" name="first">
|
||||
<div
|
||||
v-for="(el, index) in data.planDto?.attach.split(',')"
|
||||
:key="index"
|
||||
v-if="data.planDto"
|
||||
class="enclosure"
|
||||
:style="{ borderBottom: '1px solid rgba(56, 125, 247, 0.2)' }"
|
||||
v-for="(el, index) in data.planDto?.attach.split(',')"
|
||||
:key="index"
|
||||
v-if="data.planDto"
|
||||
class="enclosure"
|
||||
:style="{ borderBottom: '1px solid rgba(56, 125, 247, 0.2)' }"
|
||||
>
|
||||
<div class="enclosureL">
|
||||
<FileTypeImg
|
||||
v-model="data.planDto.attach.split(',')[index]"
|
||||
:style="{
|
||||
v-model="data.planDto.attach.split(',')[index]"
|
||||
:style="{
|
||||
width: '22px',
|
||||
height: '26px',
|
||||
marginLeft: '10px',
|
||||
@@ -76,15 +76,15 @@
|
||||
</div>
|
||||
<div class="download">
|
||||
<img
|
||||
style="width: 16px; height: 15px"
|
||||
src="../../assets/image/download.png"
|
||||
style="width: 16px; height: 15px"
|
||||
src="../../assets/image/download.png"
|
||||
/>
|
||||
<div style="margin-left: 5px" @click="download(el)">下载</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="课程作业" name="second">
|
||||
<div class="work">
|
||||
<div class="work" v-if="data.workDto?.workName ">
|
||||
<div>
|
||||
<div class="question">{{ data.workDto?.workName }}</div>
|
||||
<div style="margin-top: 16px; display: flex">
|
||||
@@ -98,15 +98,15 @@
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="课程考试" name="third">
|
||||
<div class="work">
|
||||
<div class="work" v-if="data.examinationDto?.examinationTestName">
|
||||
<div>
|
||||
<div class="question">
|
||||
{{ data.examinationDto?.examinationTestName }}
|
||||
</div>
|
||||
<div style="margin-top: 16px; display: flex">
|
||||
<div
|
||||
class="tag1"
|
||||
v-if="data.examinationDto?.examinationFlag"
|
||||
class="tag1"
|
||||
v-if="data.examinationDto?.examinationFlag"
|
||||
>
|
||||
必修
|
||||
</div>
|
||||
@@ -124,15 +124,15 @@
|
||||
<div class="teacher">
|
||||
<div class="title">
|
||||
<img
|
||||
style="width: 21px; height: 23px"
|
||||
src="../../assets/image/livelecturer.png"
|
||||
style="width: 21px; height: 23px"
|
||||
src="../../assets/image/livelecturer.png"
|
||||
/>
|
||||
<div class="text">直播讲师</div>
|
||||
<div class="box"></div>
|
||||
</div>
|
||||
<!-- todo #面授课接口 讲师缺少img和介绍-->
|
||||
<div class="teacheritem">
|
||||
<img class="peopleimg" :src="userAvatar" />
|
||||
<img class="peopleimg" :src="userAvatar"/>
|
||||
<div style="margin-left: 17px; width: 190px">
|
||||
<div class="teacherName" style="margin-right: 5px">
|
||||
{{ data.planDto?.teacher }}
|
||||
@@ -148,29 +148,29 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { computed, reactive, toRefs, watch } from "vue";
|
||||
import {computed, reactive, toRefs, watch} from "vue";
|
||||
import FileTypeImg from "@/components/FileTypeImg.vue";
|
||||
import { request, useRequest } from "@/api/request";
|
||||
import { STU_OFFCOURSE_DETAIL } from "@/api/api";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
import { useUserInfo } from "@/api/utils";
|
||||
import {request, useRequest} from "@/api/request";
|
||||
import {STU_OFFCOURSE_DETAIL} from "@/api/api";
|
||||
import {useRoute, useRouter} from "vue-router";
|
||||
import {useUserInfo} from "@/api/utils";
|
||||
|
||||
const router = useRouter();
|
||||
const {
|
||||
query: { courseId, type },
|
||||
query: {courseId, type},
|
||||
} = useRoute();
|
||||
|
||||
const { data } = useRequest(STU_OFFCOURSE_DETAIL, { courseId });
|
||||
const {data} = useRequest(STU_OFFCOURSE_DETAIL, {courseId});
|
||||
|
||||
const { avatar: userAvatar } = useUserInfo(
|
||||
computed(() => data.value?.planDto?.teacherId)
|
||||
const {avatar: userAvatar} = useUserInfo(
|
||||
computed(() => data.value?.planDto?.teacherId)
|
||||
);
|
||||
|
||||
const state = reactive({
|
||||
activeName: "first",
|
||||
enclosure: "",
|
||||
});
|
||||
const { activeName, enclosure } = toRefs(state);
|
||||
const {activeName, enclosure} = toRefs(state);
|
||||
const handleClick = (tab, event) => {
|
||||
console.log(tab, event);
|
||||
};
|
||||
@@ -179,9 +179,12 @@ const download = (url) => {
|
||||
};
|
||||
|
||||
function toSurvery() {
|
||||
if (data.value.isSurvery) {
|
||||
return
|
||||
}
|
||||
router.push({
|
||||
path: "/surveydetail",
|
||||
query: { courseId: data.value.planDto.evaluateId },
|
||||
query: {courseId: data.value.planDto.evaluateId},
|
||||
});
|
||||
}
|
||||
|
||||
@@ -197,7 +200,7 @@ function toWork() {
|
||||
}
|
||||
|
||||
function toExamItem(obj) {
|
||||
router.push({ path: "/starttest", query: { id: obj.courseId } });
|
||||
router.push({path: "/starttest", query: {id: obj.courseId}});
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
<div class="detail">
|
||||
<div class="detailT">
|
||||
<div
|
||||
style="
|
||||
style="
|
||||
margin-left: 45px;
|
||||
margin-right: 42px;
|
||||
position: relative;
|
||||
@@ -33,8 +33,8 @@
|
||||
>
|
||||
<div class="title">
|
||||
<img
|
||||
style="width: 20px; height: 20px"
|
||||
src="../../assets/image/yuan.png"
|
||||
style="width: 20px; height: 20px"
|
||||
src="../../assets/image/yuan.png"
|
||||
/>
|
||||
<div class="text">作业名称</div>
|
||||
<div class="box"></div>
|
||||
@@ -48,52 +48,52 @@
|
||||
</div>
|
||||
<UploadImg v-model="fileList" ref="uploadRef">
|
||||
<button
|
||||
class="shangchuan"
|
||||
style="cursor: pointer"
|
||||
@mousemove="showFileList = 1"
|
||||
@mouseout="showFileList = 0"
|
||||
class="shangchuan"
|
||||
style="cursor: pointer"
|
||||
@mousemove="showFileList = 1"
|
||||
@mouseout="showFileList = 0"
|
||||
>
|
||||
上传
|
||||
</button>
|
||||
</UploadImg>
|
||||
<div
|
||||
class="uploadDetail"
|
||||
:style="{ display: showFileList ? 'block' : 'none' }"
|
||||
@mousemove="showFileList = 1"
|
||||
@mouseout="showFileList = 0"
|
||||
style="padding-top: 60px"
|
||||
class="uploadDetail"
|
||||
:style="{ display: showFileList ? 'block' : 'none' }"
|
||||
@mousemove="showFileList = 1"
|
||||
@mouseout="showFileList = 0"
|
||||
style="padding-top: 60px"
|
||||
>
|
||||
<div class="triangle"></div>
|
||||
<div class="square clearfix">
|
||||
<div
|
||||
class="squarecontent1"
|
||||
v-for="(file, i) in fileList"
|
||||
:key="i"
|
||||
class="squarecontent1"
|
||||
v-for="(file, i) in fileList"
|
||||
:key="i"
|
||||
>
|
||||
<FileTypeImg
|
||||
v-model="file.name"
|
||||
:style="{ margin: '12px 15px 0 27px' }"
|
||||
v-model="file.name"
|
||||
:style="{ margin: '12px 15px 0 27px' }"
|
||||
></FileTypeImg>
|
||||
<div class="rarDetail">
|
||||
<span class="detail1" style="margin-right: 130px">
|
||||
{{ file.name }}
|
||||
</span>
|
||||
<span class="detail2" style="margin-right: 10px"
|
||||
>{{ file.percentage }}%</span
|
||||
>{{ file.percentage }}%</span
|
||||
>
|
||||
<span class="detail1">{{
|
||||
{
|
||||
ready: "正在上传",
|
||||
abort: "暂停",
|
||||
uploading: "正在上传",
|
||||
fail: "上传失败",
|
||||
success: "上传成功",
|
||||
}[file.status]
|
||||
}}</span>
|
||||
{
|
||||
ready: "正在上传",
|
||||
abort: "暂停",
|
||||
uploading: "正在上传",
|
||||
fail: "上传失败",
|
||||
success: "上传成功",
|
||||
}[file.status]
|
||||
}}</span>
|
||||
<div class="progress">
|
||||
<div
|
||||
class="progressinner"
|
||||
:style="{ width: `${(291 * file.percentage) / 100}px` }"
|
||||
class="progressinner"
|
||||
:style="{ width: `${(291 * file.percentage) / 100}px` }"
|
||||
></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -124,8 +124,8 @@
|
||||
|
||||
<div class="title">
|
||||
<img
|
||||
style="width: 20px; height: 20px"
|
||||
src="../../assets/image/yuan.png"
|
||||
style="width: 20px; height: 20px"
|
||||
src="../../assets/image/yuan.png"
|
||||
/>
|
||||
<div class="text">作业内容</div>
|
||||
<div class="box"></div>
|
||||
@@ -133,11 +133,10 @@
|
||||
|
||||
<div class="join">
|
||||
<el-input
|
||||
v-model="textarea1"
|
||||
:autosize="{ minRows: 12.5, maxRows: 12.5 }"
|
||||
resize="none"
|
||||
type="textarea"
|
||||
@input="textareaInput"
|
||||
v-model="sbValue.content"
|
||||
:autosize="{ minRows: 12.5, maxRows: 12.5 }"
|
||||
resize="none"
|
||||
type="textarea"
|
||||
/>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center">
|
||||
@@ -148,8 +147,8 @@
|
||||
|
||||
<div class="title" style="margin-top: 0px">
|
||||
<img
|
||||
style="width: 20px; height: 20px"
|
||||
src="../../assets/image/yuan.png"
|
||||
style="width: 20px; height: 20px"
|
||||
src="../../assets/image/yuan.png"
|
||||
/>
|
||||
<div class="text">历史纪录</div>
|
||||
<div class="box"></div>
|
||||
@@ -161,10 +160,10 @@
|
||||
<div class="content2">作业内容</div>
|
||||
</div>
|
||||
<div
|
||||
v-for="(value, index) in submitList"
|
||||
:key="index"
|
||||
class="historytitle2"
|
||||
:style="{
|
||||
v-for="(value, index) in submitList"
|
||||
:key="index"
|
||||
class="historytitle2"
|
||||
:style="{
|
||||
'border-bottom':
|
||||
index === submitList.length - 1
|
||||
? '1px solid rgba(215, 229, 253, 0)'
|
||||
@@ -174,7 +173,7 @@
|
||||
<div class="content1">{{ value.createTime }}</div>
|
||||
<div class="content2">
|
||||
<div
|
||||
style="
|
||||
style="
|
||||
width: 95%;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
@@ -192,8 +191,8 @@
|
||||
<div class="right">
|
||||
<div class="righttitle">
|
||||
<img
|
||||
style="width: 20px; height: 20px"
|
||||
src="../../assets/image/yuan.png"
|
||||
style="width: 20px; height: 20px"
|
||||
src="../../assets/image/yuan.png"
|
||||
/>
|
||||
<div class="text">截止时间</div>
|
||||
<div class="box"></div>
|
||||
@@ -210,21 +209,21 @@
|
||||
<div class="endtimetext">
|
||||
距离结束还有
|
||||
<span class="te">{{
|
||||
parseInt(
|
||||
dayjs(data?.submitEndTime).diff(dayjs(), "minute") / 60
|
||||
)
|
||||
}}</span
|
||||
parseInt(
|
||||
dayjs(data?.submitEndTime).diff(dayjs(), "minute") / 60
|
||||
)
|
||||
}}</span
|
||||
> 小时 <span class="te">{{
|
||||
dayjs(data?.submitEndTime).diff(dayjs(), "minute") % 60
|
||||
}}</span
|
||||
> 分钟
|
||||
> 分钟
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="righttitle">
|
||||
<img
|
||||
style="width: 20px; height: 20px"
|
||||
src="../../assets/image/yuan.png"
|
||||
style="width: 20px; height: 20px"
|
||||
src="../../assets/image/yuan.png"
|
||||
/>
|
||||
|
||||
<div class="text">作业说明</div>
|
||||
@@ -233,9 +232,9 @@
|
||||
<div class="explain clearfix">
|
||||
<!-- todo #作业任务详情 作业说明是作业要求字段么?-->
|
||||
<div
|
||||
class="explain1"
|
||||
style="margin-top: 26px"
|
||||
v-html="data?.workRequirement"
|
||||
class="explain1"
|
||||
style="margin-top: 26px"
|
||||
v-html="data?.workRequirement"
|
||||
></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -245,8 +244,8 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive, ref, toRefs } from "vue";
|
||||
import { request, useRequest } from "@/api/request";
|
||||
import {reactive, ref, toRefs} from "vue";
|
||||
import {request, useRequest} from "@/api/request";
|
||||
import {
|
||||
TASK_WORK_COMMIT,
|
||||
TASK_WORK_DETAIL,
|
||||
@@ -254,40 +253,41 @@ import {
|
||||
WORK_HISTROY,
|
||||
} from "@/api/api";
|
||||
import dayjs from "dayjs";
|
||||
import { useRouter } from "vue-router";
|
||||
import {useRouter} from "vue-router";
|
||||
import UploadImg from "@/components/img/UploadImg.vue";
|
||||
import FileTypeImg from "@/components/FileTypeImg.vue";
|
||||
import { useRoute } from "vue-router/dist/vue-router";
|
||||
import {useRoute} from "vue-router/dist/vue-router";
|
||||
|
||||
const fileList = ref([]);
|
||||
const uploadRef = ref();
|
||||
const showFileList = ref(0);
|
||||
const state = reactive({
|
||||
textarea1: "",
|
||||
});
|
||||
const { textarea1 } = toRefs(state);
|
||||
const sbValue = ref({
|
||||
content: '',
|
||||
attach: ''
|
||||
})
|
||||
const router = useRouter();
|
||||
|
||||
const {
|
||||
query: { courseId: workId, type, id: taskId },
|
||||
query: {courseId: workId, type, id: taskId},
|
||||
} = useRoute();
|
||||
|
||||
const { data } = useRequest(TASK_WORK_DETAIL, { workId, taskId });
|
||||
const { data: submitList } = useRequest(TASK_WORK_SUBMIT_LIST, { workId });
|
||||
const {data} = useRequest(TASK_WORK_DETAIL, {workId, taskId});
|
||||
const {data: submitList} = useRequest(TASK_WORK_SUBMIT_LIST, {workerId:workId});
|
||||
|
||||
const handleClick = () => {
|
||||
console.log(sbValue.value)
|
||||
console.log(fileList)
|
||||
request(TASK_WORK_COMMIT, {
|
||||
projectOrRouterLogo: type,
|
||||
workUploadContent: textarea1.value,
|
||||
workUploadContent: sbValue.value.content,
|
||||
workUploadAddress: fileList.value.map(e => e.url).join(',') || '',
|
||||
workId,
|
||||
type,
|
||||
taskId,
|
||||
}).then((res) => {
|
||||
submitList.value.unshift(res.data);
|
||||
});
|
||||
textarea1.value = "";
|
||||
};
|
||||
const textareaInput = (e) => {
|
||||
state.textarea1 = e;
|
||||
sbValue.value.content = "";
|
||||
};
|
||||
|
||||
function remove(i) {
|
||||
@@ -701,25 +701,25 @@ function reUpload(i) {
|
||||
|
||||
.allbox1 {
|
||||
background: linear-gradient(
|
||||
0deg,
|
||||
rgba(160, 193, 230, 0) 0%,
|
||||
rgba(161, 195, 231, 0.2) 100%
|
||||
0deg,
|
||||
rgba(160, 193, 230, 0) 0%,
|
||||
rgba(161, 195, 231, 0.2) 100%
|
||||
);
|
||||
}
|
||||
|
||||
.allbox2 {
|
||||
background: linear-gradient(
|
||||
0deg,
|
||||
rgba(177, 219, 229, 0) 0%,
|
||||
rgba(172, 216, 227, 0.2) 100%
|
||||
0deg,
|
||||
rgba(177, 219, 229, 0) 0%,
|
||||
rgba(172, 216, 227, 0.2) 100%
|
||||
);
|
||||
}
|
||||
|
||||
.allbox3 {
|
||||
background: linear-gradient(
|
||||
0deg,
|
||||
rgba(195, 209, 234, 0) 0%,
|
||||
rgba(191, 206, 231, 0.2) 100%
|
||||
0deg,
|
||||
rgba(195, 209, 234, 0) 0%,
|
||||
rgba(191, 206, 231, 0.2) 100%
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -34,8 +34,8 @@
|
||||
<!-- todo #直播详情 没有位置字段-->
|
||||
<!-- <div class="time" style="margin-top: 23px">
|
||||
<img
|
||||
style="width: 16px; height: 18px"
|
||||
src="../../assets/image/position.png"
|
||||
style="width: 16px; height: 18px"
|
||||
src="../../assets/image/position.png"
|
||||
/>
|
||||
|
||||
<div style="margin-left: 8px">{{ data?.activityAddress }}</div>
|
||||
@@ -50,14 +50,19 @@
|
||||
</botton>
|
||||
<botton
|
||||
class="btn"
|
||||
style="background: rgb(57, 146, 249)"
|
||||
:style="{
|
||||
background: `${data.signFlag ? '#999' : 'rgb(57, 146, 249)'}`,
|
||||
}"
|
||||
@click="signClick"
|
||||
v-if="!data.signFlag"
|
||||
>签到
|
||||
>{{ data.signFlag ? "已签到" : "签到" }}
|
||||
</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>
|
||||
</div>
|
||||
</div>
|
||||
@@ -79,24 +84,27 @@
|
||||
<div style="display: flex; align-items: center">
|
||||
<!-- todo #直播 没有课前预习字段-->
|
||||
<div class="content">
|
||||
{{ data?.liveExplain }}
|
||||
{{ data.liveExplain }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="title">
|
||||
<img
|
||||
style="width: 20px; height: 20px"
|
||||
src="../../assets/image/write.png"
|
||||
/>
|
||||
<!-- todo #直播 课后作业-->
|
||||
<div class="text">回放链接</div>
|
||||
<div class="box"></div>
|
||||
</div>
|
||||
<div style="display: flex; align-items: center">
|
||||
<div class="content">
|
||||
{{ data?.livePlaybackLink ? data?.livePlaybackLink : "-" }}
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="title">-->
|
||||
<!-- <img-->
|
||||
<!-- style="width: 20px; height: 20px"-->
|
||||
<!-- src="../../assets/image/write.png"-->
|
||||
<!-- />-->
|
||||
<!-- <!– todo #直播 课后作业–>-->
|
||||
<!-- <div class="text">课后作业</div>-->
|
||||
<!-- <div class="box"></div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div style="display: flex; align-items: center">-->
|
||||
<!-- <div class="content">-->
|
||||
<!-- <span style="font-weight: 600"-->
|
||||
<!-- >网易有道词典现有功能结构拆解+问题分析</span-->
|
||||
<!-- ><br/>-->
|
||||
<!-- 查找资料,介绍一种国外(日本、美国、欧洲)道路(公路、铁路、城市道路、地铁)设计规范的演变过程,可以一种或几种主要技术指标为例,并说明其原因。<br/>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -150,14 +158,15 @@ import { TASK_BROADCAST_DETAIL, TASK_BROADCAST_SIGN } from "@/api/api";
|
||||
import { useRoute } from "vue-router/dist/vue-router";
|
||||
import { useRouter } from "vue-router";
|
||||
import { useUserInfo } from "@/api/utils";
|
||||
import { ElMessage } from "element-plus";
|
||||
|
||||
const {
|
||||
query: { courseId },
|
||||
query: { courseId: liveId, id: taskId, type },
|
||||
} = useRoute();
|
||||
const router = useRouter();
|
||||
|
||||
const { data } = useRequest(TASK_BROADCAST_DETAIL, { liveId: courseId });
|
||||
console.log("datadatadatadata", data, courseId);
|
||||
const { data } = useRequest(TASK_BROADCAST_DETAIL, { liveId });
|
||||
|
||||
const { avatar: userAvatar } = useUserInfo(
|
||||
computed(() => data.value.userInfoBo?.userId)
|
||||
);
|
||||
@@ -176,10 +185,17 @@ const state = reactive({
|
||||
});
|
||||
const { activeName, teacher } = toRefs(state);
|
||||
const signClick = () => {
|
||||
if (data.value.signFlag) {
|
||||
return;
|
||||
}
|
||||
data.value.signFlag = 1;
|
||||
request(TASK_BROADCAST_SIGN, { courseId: liveId });
|
||||
ElMessage.info("签到成功");
|
||||
request(TASK_BROADCAST_SIGN, { courseId: liveId, taskId, type });
|
||||
};
|
||||
const commitClick = () => {
|
||||
if (data.value.isSurvery) {
|
||||
return;
|
||||
}
|
||||
router.push({
|
||||
path: "/surveydetail",
|
||||
query: { courseId: data.value.assessmentId },
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
<div class="title">{{ data?.activityName }}</div>
|
||||
<div class="time" style="margin-top: 26px">
|
||||
<img
|
||||
style="width: 15px; height: 17px"
|
||||
src="../../assets/image/time.png"
|
||||
style="width: 15px; height: 17px"
|
||||
src="../../assets/image/time.png"
|
||||
/>
|
||||
<div style="margin-left: 8px">
|
||||
{{ data?.activityStartTime + "-" + data?.activityEndTime }}
|
||||
@@ -33,13 +33,18 @@
|
||||
</div>
|
||||
<div class="time" style="margin-top: 23px">
|
||||
<img
|
||||
style="width: 16px; height: 18px"
|
||||
src="../../assets/image/position.png"
|
||||
style="width: 16px; height: 18px"
|
||||
src="../../assets/image/position.png"
|
||||
/>
|
||||
<div style="margin-left: 8px">{{ data?.activityAddress }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btn" v-if="!data.activityFlag" @click="signClick">签到</div>
|
||||
<botton
|
||||
class="btn"
|
||||
:style="{background:`${data.signFlag?'#999':'rgb(57, 146, 249)'}`}"
|
||||
@click="signClick"
|
||||
>{{ data.signFlag ? '已签到' : '签到' }}
|
||||
</botton>
|
||||
</div>
|
||||
<!-- 基本信息 -->
|
||||
|
||||
@@ -50,8 +55,8 @@
|
||||
<div style="margin-left: 48px; margin-right: 48px">
|
||||
<div class="title">
|
||||
<img
|
||||
style="width: 20px; height: 20px"
|
||||
src="../../assets/image/book.png"
|
||||
style="width: 20px; height: 20px"
|
||||
src="../../assets/image/book.png"
|
||||
/>
|
||||
<div class="text">活动详情</div>
|
||||
<div class="box"></div>
|
||||
@@ -62,8 +67,8 @@
|
||||
<div class="content">
|
||||
{{
|
||||
data?.activityDuration
|
||||
? data?.activityDuration + "分钟"
|
||||
: "-"
|
||||
? data?.activityDuration + "分钟"
|
||||
: "-"
|
||||
}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -78,15 +83,15 @@
|
||||
<div class="content">
|
||||
{{
|
||||
data?.beforeSignIn
|
||||
? "开始前" + data?.beforeSignIn + "分钟开始签到"
|
||||
: "-"
|
||||
? "开始前" + data?.beforeSignIn + "分钟开始签到"
|
||||
: "-"
|
||||
}}
|
||||
</div>
|
||||
<div class="content">
|
||||
{{
|
||||
data?.afterSignIn
|
||||
? "开始后" + data?.afterSignIn + "分钟结束签到"
|
||||
: "-"
|
||||
? "开始后" + data?.afterSignIn + "分钟结束签到"
|
||||
: "-"
|
||||
}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -109,8 +114,8 @@
|
||||
<div class="teacher">
|
||||
<div class="title">
|
||||
<img
|
||||
style="width: 24px; height: 20px"
|
||||
src="../../assets/image/call.png"
|
||||
style="width: 24px; height: 20px"
|
||||
src="../../assets/image/call.png"
|
||||
/>
|
||||
<div class="text">活动公告</div>
|
||||
<div class="box"></div>
|
||||
@@ -126,22 +131,26 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { TAS_ACTIVITY_DETAIL, TASK_ACTIVITY_SIGN, ACTIVITY } from "@/api/api";
|
||||
import { request, useRequest } from "@/api/request";
|
||||
import { useRoute } from "vue-router/dist/vue-router";
|
||||
import {TAS_ACTIVITY_DETAIL, TASK_ACTIVITY_SIGN, ACTIVITY} from "@/api/api";
|
||||
import {request, useRequest} from "@/api/request";
|
||||
import {useRoute} from "vue-router/dist/vue-router";
|
||||
import {ElMessage} from "element-plus";
|
||||
|
||||
const {
|
||||
query: { courseId: activityId },
|
||||
query: {courseId: activityId},
|
||||
} = useRoute();
|
||||
|
||||
const { data } = useRequest(ACTIVITY, { activityId });
|
||||
console.log("data", data);
|
||||
const {data} = useRequest(ACTIVITY, {activityId});
|
||||
const signClick = (tab, event) => {
|
||||
if (data.value.signFlag) {
|
||||
return;
|
||||
}
|
||||
data.value.signFlag = true
|
||||
ElMessage.info("签到成功");
|
||||
request(TASK_ACTIVITY_SIGN, {
|
||||
activitySubmitId: data.activityId,
|
||||
signInStatus: 1,
|
||||
}).then((res) => {
|
||||
data.value.activityFlag = 1;
|
||||
});
|
||||
courseId: activityId,
|
||||
})
|
||||
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -269,12 +278,14 @@ const signClick = (tab, event) => {
|
||||
left: 23px;
|
||||
top: 53px;
|
||||
}
|
||||
|
||||
.activedetail {
|
||||
margin-top: 30px;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
color: #333330;
|
||||
line-height: 36px;
|
||||
|
||||
.content {
|
||||
color: #677d86;
|
||||
}
|
||||
@@ -412,9 +423,9 @@ const signClick = (tab, event) => {
|
||||
background-color: rgba(255, 255, 255, 1);
|
||||
border-radius: 8px;
|
||||
background: linear-gradient(
|
||||
180deg,
|
||||
rgba(36, 120, 255, 0.15) 0%,
|
||||
rgba(255, 255, 255) 50%
|
||||
180deg,
|
||||
rgba(36, 120, 255, 0.15) 0%,
|
||||
rgba(255, 255, 255) 50%
|
||||
);
|
||||
|
||||
.title {
|
||||
|
||||
@@ -307,7 +307,7 @@ import medal2 from "@/assets/image/medal/medal2.png";
|
||||
import medal3 from "@/assets/image/medal/medal3.png";
|
||||
import img from "@/assets/image/uploadimg.png";
|
||||
import { useRequest, request } from "@/api/request";
|
||||
import { PROJECT_PROCESS, ROUTER_PROCESS } from "@/api/api";
|
||||
import { PROJECT_PROCESS, ROUTER_PROCESS, LINK_DETAILS } from "@/api/api";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
|
||||
const {
|
||||
|
||||
@@ -116,7 +116,13 @@
|
||||
}"
|
||||
@click="toFinish(value)"
|
||||
>
|
||||
{{ types.path[value.type] ? types.toName[value.type] : "未开放" }}
|
||||
{{
|
||||
value.status === 1
|
||||
? "已完成"
|
||||
: types.path[value.type]
|
||||
? types.toName[value.type]
|
||||
: "未开放"
|
||||
}}
|
||||
</div>
|
||||
<!-- <div :style="{ display: value.status === 1 ? 'block' : 'none' }">-->
|
||||
<!-- <div-->
|
||||
@@ -352,8 +358,6 @@ const {
|
||||
} = useRoute();
|
||||
const router = useRouter();
|
||||
const { data } = useRequest(ROUTER_PROCESS, { routerId });
|
||||
console.log("datadata", data);
|
||||
|
||||
const { avatar: userAvatar } = useUserInfo(
|
||||
computed(() => data.value?.userInfoBo?.userId)
|
||||
);
|
||||
@@ -603,7 +607,6 @@ function toFinish(d) {
|
||||
if (types.value.path[d.type] && types.value.path[d.type].startsWith("http")) {
|
||||
//配置文件
|
||||
const url = types.value.path[d.type] + d.targetId;
|
||||
console.log("url", d, url);
|
||||
import.meta.env.DEV
|
||||
? (window.location.href = url)
|
||||
: (window.parent.location.href = url);
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<div class="surveydetail" style="padding: 30px">
|
||||
<!-- 面包屑导航 -->
|
||||
<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>混合制项目</div>
|
||||
@@ -14,16 +14,16 @@
|
||||
<div class="prevnext">
|
||||
<div class="prev">
|
||||
<img
|
||||
style="width: 23px; height: 23px"
|
||||
src="../../assets/image/prev.png"
|
||||
style="width: 23px; height: 23px"
|
||||
src="../../assets/image/prev.png"
|
||||
/>
|
||||
<div style="margin-left: 7px">上一个</div>
|
||||
</div>
|
||||
<div class="prev" style="margin-left: 31px">
|
||||
<div style="margin-right: 7px">下一个</div>
|
||||
<img
|
||||
style="width: 23px; height: 23px"
|
||||
src="../../assets/image/next.png"
|
||||
style="width: 23px; height: 23px"
|
||||
src="../../assets/image/next.png"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -36,23 +36,23 @@
|
||||
<div class="bascinfo">
|
||||
<div>
|
||||
<div
|
||||
class="question"
|
||||
v-for="(value, index) in data.scoringQuestionVoList"
|
||||
:key="index"
|
||||
:style="{ 'margin-top': index === 0 ? '57px' : '41px' }"
|
||||
class="question"
|
||||
v-for="(value, index) in data.scoringQuestionVoList"
|
||||
:key="index"
|
||||
:style="{ 'margin-top': index === 0 ? '57px' : '41px' }"
|
||||
>
|
||||
<div class="text">{{ value.assessmentScTitle }}</div>
|
||||
<div class="answer">
|
||||
<div class="answerL">完全没用</div>
|
||||
<div class="answerC">
|
||||
<div
|
||||
class="answerCitem"
|
||||
v-for="(item, key) in Array.from(
|
||||
class="answerCitem"
|
||||
v-for="(item, key) in Array.from(
|
||||
{ length: value.assessmentMaxScore },
|
||||
(k, i) => i
|
||||
)"
|
||||
:key="key"
|
||||
:style="{
|
||||
:key="key"
|
||||
:style="{
|
||||
'margin-left': key === 0 ? '15px' : '10px',
|
||||
background:
|
||||
value.selectAnswer === item
|
||||
@@ -63,7 +63,7 @@
|
||||
? '#fff'
|
||||
: 'rgba(86, 163, 249, 1)',
|
||||
}"
|
||||
@click="
|
||||
@click="
|
||||
() => {
|
||||
value.selectAnswer = item;
|
||||
}
|
||||
@@ -76,23 +76,20 @@
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="question"
|
||||
style="margin-top: 41px"
|
||||
v-for="(item, i) in data.singleStemVoList"
|
||||
:key="i"
|
||||
class="question"
|
||||
style="margin-top: 41px"
|
||||
v-for="(item, i) in data.assessmentSingleChoiceDtoList"
|
||||
:key="i"
|
||||
>
|
||||
<div class="text">{{ item.singleStemName }}</div>
|
||||
<div
|
||||
v-for="(value, index) in item.assessmentSingleChoiceVoList"
|
||||
:key="index"
|
||||
style="display: flex; align-items: center"
|
||||
:style="{
|
||||
'margin-top': index === 0 ? '29px' : '22px',
|
||||
cursor: 'pointer',
|
||||
}"
|
||||
@click="
|
||||
v-for="(value, index) in item.assessmentSingleChoiceDtoList"
|
||||
:key="index"
|
||||
style="display: flex; align-items: center"
|
||||
:style="{'margin-top': index === 0 ? '29px' : '22px',cursor: 'pointer'}"
|
||||
@click="
|
||||
() => {
|
||||
item.assessmentSingleChoiceVoList.forEach((e) => {
|
||||
item.assessmentSingleChoiceDtoList.forEach((e) => {
|
||||
e.select = false;
|
||||
});
|
||||
value.select = true;
|
||||
@@ -100,56 +97,57 @@
|
||||
"
|
||||
>
|
||||
<img
|
||||
style="width: 19px; height: 18px; cursor: pointer"
|
||||
:src="value.select ? checkbox : checkbox2"
|
||||
style="width: 19px; height: 18px; cursor: pointer"
|
||||
:src="value.select ? checkbox : checkbox2"
|
||||
/>
|
||||
<div class="people">{{ value.singleOptionName }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="question"
|
||||
style="margin-top: 41px"
|
||||
v-for="(item, i) in data.multipleStemVoList"
|
||||
:key="i"
|
||||
class="question"
|
||||
style="margin-top: 41px"
|
||||
v-for="(item, i) in data.multipleStemVoList"
|
||||
:key="i"
|
||||
>
|
||||
<div class="text">{{ item.multipleStemName }}</div>
|
||||
<div
|
||||
v-for="(value, index) in item.multipleChoiceVoList"
|
||||
:key="index"
|
||||
style="display: flex; align-items: center"
|
||||
:style="{
|
||||
v-for="(value, index) in item.multipleChoiceVoList"
|
||||
:key="index"
|
||||
style="display: flex; align-items: center"
|
||||
:style="{
|
||||
'margin-top': index === 0 ? '29px' : '22px',
|
||||
cursor: 'pointer',
|
||||
}"
|
||||
@click="() => (value.select = !value.select)"
|
||||
@click="() => (value.select = !value.select)"
|
||||
>
|
||||
<img
|
||||
style="width: 19px; height: 18px; cursor: pointer"
|
||||
:src="value.select ? checkbox : checkbox2"
|
||||
style="width: 19px; height: 18px; cursor: pointer"
|
||||
:src="value.select ? checkbox : checkbox2"
|
||||
/>
|
||||
<div class="people">{{ value.multipleOptionName }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="question"
|
||||
style="margin-top: 41px"
|
||||
v-for="(item, i) in data.essayQuestionVoList"
|
||||
:key="i"
|
||||
class="question"
|
||||
style="margin-top: 41px"
|
||||
v-for="(item, i) in data.essayQuestionVoList"
|
||||
:key="i"
|
||||
>
|
||||
<div class="text">{{ item.assessmentQaTitle }}</div>
|
||||
<div style="width: 713px; margin-top: 31px; position: relative">
|
||||
<el-input
|
||||
v-model="item.content"
|
||||
:autosize="{ minRows: 5, maxRows: 5 }"
|
||||
resize="none"
|
||||
maxlength="200"
|
||||
type="textarea"
|
||||
v-model="item.content"
|
||||
:autosize="{ minRows: 5, maxRows: 5 }"
|
||||
resize="none"
|
||||
maxlength="200"
|
||||
type="textarea"
|
||||
/>
|
||||
<div class="words">{{ item.content?.length || 0 }}/200</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>
|
||||
</div>
|
||||
@@ -161,25 +159,24 @@
|
||||
<script setup>
|
||||
import checkbox from "@/assets/image/checkbox.png";
|
||||
import checkbox2 from "@/assets/image/checkbox2.png";
|
||||
import { useRoute } from "vue-router/dist/vue-router";
|
||||
import { request, usePage, useRequest } from "@/api/request";
|
||||
import {useRoute} from "vue-router/dist/vue-router";
|
||||
import {request, usePage, useRequest} from "@/api/request";
|
||||
import {
|
||||
ASSESSMENT_QUERY,
|
||||
ASSESSMENT_SUBMIT,
|
||||
COMMENT_LIST,
|
||||
DISCUSS_DETAIL,
|
||||
} from "@/api/api";
|
||||
import {ElMessage} from "element-plus";
|
||||
|
||||
const {
|
||||
query: { courseId },
|
||||
query: {courseId},
|
||||
} = useRoute();
|
||||
|
||||
const { data } = useRequest(ASSESSMENT_QUERY(courseId), {});
|
||||
const {data} = useRequest(ASSESSMENT_QUERY(courseId), {id:courseId});
|
||||
|
||||
function submit() {
|
||||
request(ASSESSMENT_SUBMIT, data).then(() => {
|
||||
console.log("提交成功");
|
||||
});
|
||||
request(ASSESSMENT_SUBMIT, {assessmentId: courseId, result: JSON.stringify(data.value)})
|
||||
ElMessage.info("提交成功");
|
||||
router.back()
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
|
||||
@@ -2,22 +2,18 @@
|
||||
* @Author: lixg lixg@dongwu-inc.com
|
||||
* @Date: 2022-11-21 17:28:10
|
||||
* @LastEditors: lixg lixg@dongwu-inc.com
|
||||
* @LastEditTime: 2022-12-15 10:22:25
|
||||
* @LastEditTime: 2022-12-15 11:51:59
|
||||
* @FilePath: /fe-stu/vite.config.js
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
import { defineConfig } from 'vite'
|
||||
import { defineConfig, loadEnv } from 'vite'
|
||||
import vue from '@vitejs/plugin-vue'
|
||||
import legacy from '@vitejs/plugin-legacy'
|
||||
import { viteMockServe } from 'vite-plugin-mock'
|
||||
import topLevelAwait from "vite-plugin-top-level-await";
|
||||
|
||||
const path = require('path')
|
||||
// const url = 'http://localhost:30001'
|
||||
const url = 'http://111.231.196.214:12013/manageApi'
|
||||
export default defineConfig(({ command }) =>
|
||||
|
||||
export default defineConfig(({ command, mode }) =>
|
||||
({
|
||||
base: '/fe-student',
|
||||
base: loadEnv(mode, process.cwd()).VITE_BASE,
|
||||
plugins: [
|
||||
vue(),
|
||||
// legacy({
|
||||
@@ -39,60 +35,60 @@ export default defineConfig(({ command }) =>
|
||||
server: {
|
||||
proxy: {
|
||||
'/file/upload': {
|
||||
target: 'http://111.231.196.214:30001',
|
||||
target: loadEnv(mode, process.cwd()).VITE_PROXY_URL,
|
||||
changeOrigin: true,
|
||||
},
|
||||
'/stu': {
|
||||
target: url,
|
||||
target: loadEnv(mode, process.cwd()).VITE_PROXY_URL,
|
||||
changeOrigin: true,
|
||||
},
|
||||
'/queryVoteSubmitDetailById': {
|
||||
target: url,
|
||||
target: loadEnv(mode, process.cwd()).VITE_PROXY_URL,
|
||||
changeOrigin: true,
|
||||
},
|
||||
'/work': {
|
||||
target: url,
|
||||
target: loadEnv(mode, process.cwd()).VITE_PROXY_URL,
|
||||
changeOrigin: true,
|
||||
},
|
||||
'/discuss': {
|
||||
target: url,
|
||||
target: loadEnv(mode, process.cwd()).VITE_PROXY_URL,
|
||||
changeOrigin: true,
|
||||
},
|
||||
'/discussSubmit': {
|
||||
target: url,
|
||||
target: loadEnv(mode, process.cwd()).VITE_PROXY_URL,
|
||||
changeOrigin: true,
|
||||
},
|
||||
'/comment': {
|
||||
target: url,
|
||||
target: loadEnv(mode, process.cwd()).VITE_PROXY_URL,
|
||||
changeOrigin: true,
|
||||
},
|
||||
'/vote': {
|
||||
target: url,
|
||||
target: loadEnv(mode, process.cwd()).VITE_PROXY_URL,
|
||||
changeOrigin: true,
|
||||
},
|
||||
'/admin': {
|
||||
target: url,
|
||||
target: loadEnv(mode, process.cwd()).VITE_PROXY_URL,
|
||||
changeOrigin: true,
|
||||
}, '/activity': {
|
||||
target: url,
|
||||
target: loadEnv(mode, process.cwd()).VITE_PROXY_URL,
|
||||
changeOrigin: true,
|
||||
}, '/liveBroadcast': {
|
||||
target: url,
|
||||
target: loadEnv(mode, process.cwd()).VITE_PROXY_URL,
|
||||
changeOrigin: true,
|
||||
}, '/examination': {
|
||||
target: url,
|
||||
target: loadEnv(mode, process.cwd()).VITE_PROXY_URL,
|
||||
changeOrigin: true,
|
||||
}, '/assessment': {
|
||||
target: url,
|
||||
target: loadEnv(mode, process.cwd()).VITE_PROXY_URL,
|
||||
changeOrigin: true,
|
||||
}, '/workSubmit': {
|
||||
target: url,
|
||||
target: loadEnv(mode, process.cwd()).VITE_PROXY_URL,
|
||||
changeOrigin: true,
|
||||
}, '/userbasic': {
|
||||
target: 'https://u-pre.boe.com',
|
||||
changeOrigin: true,
|
||||
}, '/link': {
|
||||
target: url,
|
||||
target: loadEnv(mode, process.cwd()).VITE_PROXY_URL,
|
||||
changeOrigin: true,
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user