mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/student-h5.git
synced 2025-12-06 09:26:46 +08:00
feat:修改bug
This commit is contained in:
2
.env
2
.env
@@ -1,5 +1,5 @@
|
||||
VITE_BASE=/fe-student-h5
|
||||
VITE_BASE_API=/
|
||||
VITE_BASE_API=
|
||||
VITE_OUTPUT_DIR=./dist
|
||||
VITE_BASE_LOGIN_URL=//u-pre.boe.com/m/loginuser?returnUrl=
|
||||
VITE_PROXY_URL=http://43.143.139.204/manageApi
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* @Author: lixg lixg@dongwu-inc.com
|
||||
* @Date: 2023-01-13 11:42:48
|
||||
* @LastEditors: lixg lixg@dongwu-inc.com
|
||||
* @LastEditTime: 2023-03-06 21:08:50
|
||||
* @LastEditTime: 2023-03-10 00:56:52
|
||||
* @FilePath: /stu_h5/src/api/api.js
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
@@ -82,7 +82,7 @@ export const SubmitExternalExam = `/stu/externalExam/submitExternalExam post`
|
||||
export const UPDATE_CURRENT_TASK = `/admin/student/updateCurrentTask post`
|
||||
// 测评任务去学习
|
||||
export const EvaluationToLearn = '/evaluation/evaluationToLearn post'
|
||||
export const FILE_UPLOAD_IMG = import.meta.env.VITE_BASE_API + 'file/img'
|
||||
export const FILE_UPLOAD_IMG = import.meta.env.VITE_BASE_API + '/file/img'
|
||||
// 查询单个测评的状态
|
||||
export const QueryEvaluationTaskStatusOne = `/evaluation/queryEvaluationTaskStatusOne`
|
||||
// 投票浏览和参与数目
|
||||
|
||||
@@ -46,6 +46,7 @@ export function useRequest(_url, params = {}, callback) {
|
||||
const state = reactive({
|
||||
data: {},
|
||||
loading: false,
|
||||
|
||||
})
|
||||
|
||||
watch(params, () => {
|
||||
@@ -57,7 +58,7 @@ export function useRequest(_url, params = {}, callback) {
|
||||
request(_url, params).then(r => {
|
||||
state.data = r.data
|
||||
state.loading = false
|
||||
callback?.(r)
|
||||
callback && callback(r)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -1,20 +1,13 @@
|
||||
<!--
|
||||
* @Author: lixg lixg@dongwu-inc.com
|
||||
* @Date: 2023-01-18 14:40:26
|
||||
* @LastEditors: lixg lixg@dongwu-inc.com
|
||||
* @LastEditTime: 2023-03-09 16:13:17
|
||||
* @FilePath: /stu_h5/src/components/img/UploadImg.vue
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
-->
|
||||
<template>
|
||||
<el-upload
|
||||
:file-list="files"
|
||||
:action="FILE_UPLOAD"
|
||||
method="POST"
|
||||
:show-file-list="false"
|
||||
:on-change="handleChange"
|
||||
:limit="1"
|
||||
ref="imageRef"
|
||||
:file-list="files"
|
||||
:show-file-list="false"
|
||||
:limit="max"
|
||||
:action="FILE_UPLOAD"
|
||||
:auto-upload="false"
|
||||
:on-exceed="exceed"
|
||||
:on-change="handleChange"
|
||||
>
|
||||
<template #trigger>
|
||||
<div>
|
||||
@@ -24,20 +17,24 @@
|
||||
</el-upload>
|
||||
</template>
|
||||
<script setup>
|
||||
import { FILE_UPLOAD } from "@/api/api";
|
||||
import { defineProps, ref, watch } from "vue";
|
||||
import { ElMessage, ElLoading } from "element-plus";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { computed } from "vue";
|
||||
import { useStore } from "vuex";
|
||||
import { FILE_UPLOAD } from "@/api/api";
|
||||
|
||||
const store = useStore();
|
||||
const userInfo = computed(() => store.state.userInfo);
|
||||
|
||||
const props = defineProps({
|
||||
fileList: [],
|
||||
value: [],
|
||||
max: {
|
||||
type: Number,
|
||||
default: 1,
|
||||
},
|
||||
});
|
||||
console.log("fileListfileList", props.fileList, props);
|
||||
const emit = defineEmits();
|
||||
|
||||
const emit = defineEmits();
|
||||
const files = ref([]);
|
||||
const imageRef = ref();
|
||||
|
||||
@@ -48,50 +45,43 @@ watch(props.value, () => {
|
||||
function exceed() {
|
||||
ElMessage.error(`只能上传${props.max}个附件`);
|
||||
}
|
||||
// 使用
|
||||
const loading = ref(false); // loading
|
||||
const openLoading = () => {
|
||||
loading.value = ElLoading.service({
|
||||
lock: true,
|
||||
text: "Loading",
|
||||
background: "rgba(0, 0, 0, 0.7)",
|
||||
});
|
||||
};
|
||||
const closeLoading = () => {
|
||||
loading.value.close();
|
||||
};
|
||||
function handleChange(e) {
|
||||
openLoading();
|
||||
console.log("上传", e);
|
||||
if (e.raw.name.includes(".mp4") || e.raw.name.includes(".MP4")) {
|
||||
|
||||
function handleChange(file) {
|
||||
let fileName =
|
||||
userInfo.value.realName + "-" + userInfo.value.userNo + "-" + file.name;
|
||||
let f = new File([file.raw], fileName);
|
||||
f.uid = file.uid;
|
||||
file.raw = f;
|
||||
console.log(file.raw);
|
||||
if (file.raw.name.includes(".mp4") || file.raw.name.includes(".MP4")) {
|
||||
files.value = [];
|
||||
emit("update:value", files.value);
|
||||
emit("update:fileList", files.value);
|
||||
ElMessage.error(`暂不支持视频文件上传`);
|
||||
closeLoading();
|
||||
return;
|
||||
} else if (e.raw.name.includes(".jpeg") || e.raw.name.includes(".JPEG")) {
|
||||
} else if (
|
||||
file.raw.name.includes(".jpeg") ||
|
||||
file.raw.name.includes(".JPEG")
|
||||
) {
|
||||
files.value = [];
|
||||
emit("update:value", files.value);
|
||||
emit("update:fileList", files.value);
|
||||
ElMessage.error(`暂不支持jpeg格式图片文件上传`);
|
||||
closeLoading();
|
||||
return;
|
||||
} else {
|
||||
imageRef.value.submit();
|
||||
if (e.response && e.response.code === 200) {
|
||||
e.url = e.response.data;
|
||||
}
|
||||
|
||||
const index = files.value.findIndex((f) => f.uid === e.uid);
|
||||
if (file.response && file.response.code === 200) {
|
||||
file.url = file.response.data;
|
||||
}
|
||||
console.log("files.value", files.value);
|
||||
const index = files.value.findIndex((f) => f.uid === file.uid);
|
||||
if (index === -1) {
|
||||
files.value.unshift(e);
|
||||
files.value.unshift(file);
|
||||
} else {
|
||||
files.value[index] = e;
|
||||
files.value[index] = file;
|
||||
}
|
||||
console.log("files.value22", files.value);
|
||||
emit("update:fileList", files.value);
|
||||
files.value = [];
|
||||
}
|
||||
|
||||
closeLoading();
|
||||
}
|
||||
|
||||
function remove(i) {
|
||||
|
||||
@@ -203,22 +203,37 @@ const signClick = (tab, event) => {
|
||||
let timer = null;
|
||||
//判断能否签到
|
||||
function isSignClick() {
|
||||
timer = setInterval(() => {
|
||||
// timer = setInterval(() => {
|
||||
let beginTime = new Date(data.value.activityStartTime).getTime();
|
||||
let endTime = !data.value.afterSignIn
|
||||
? new Date(data.value.activityEndTime).getTime()
|
||||
: new Date(data.value.activityStartTime).getTime();
|
||||
let nowTime = new Date().getTime();
|
||||
if (data.value.beforeSignIn && data.value.afterSignIn) {
|
||||
if (
|
||||
data.value.beforeSignIn &&
|
||||
data.value.afterSignIn &&
|
||||
data.value.beforeSignIn !== "0" &&
|
||||
data.value.afterSignIn !== "0"
|
||||
) {
|
||||
//有开始前有开始后
|
||||
beginTime = beginTime - data.value.beforeSignIn * 60 * 1000;
|
||||
endTime = endTime + data.value.afterSignIn * 60 * 1000;
|
||||
console.log("1111");
|
||||
} else if (data.value.beforeSignIn && !data.value.afterSignIn) {
|
||||
} else if (
|
||||
data.value.beforeSignIn &&
|
||||
!data.value.afterSignIn &&
|
||||
data.value.beforeSignIn !== "0" &&
|
||||
data.value.afterSignIn !== "0"
|
||||
) {
|
||||
//只有开始前无开始后
|
||||
beginTime = beginTime - data.value.beforeSignIn * 60 * 1000;
|
||||
console.log("11112222");
|
||||
} else if (!data.value.beforeSignIn && data.value.afterSignIn) {
|
||||
} else if (
|
||||
!data.value.beforeSignIn &&
|
||||
data.value.afterSignIn &&
|
||||
data.value.beforeSignIn !== "0" &&
|
||||
data.value.afterSignIn !== "0"
|
||||
) {
|
||||
//无开始前有开始后
|
||||
endTime = endTime + data.value.afterSignIn * 60 * 1000;
|
||||
console.log("1111333");
|
||||
@@ -241,9 +256,12 @@ function isSignClick() {
|
||||
// nowTime < endTime,
|
||||
// nowTime > beginTime
|
||||
// );
|
||||
}, 1000);
|
||||
// }, 1000);
|
||||
}
|
||||
watch(data, () => {
|
||||
isSignClick();
|
||||
});
|
||||
// isSignClick();
|
||||
|
||||
//是否显示头部公告
|
||||
const isShowClose = () => {
|
||||
|
||||
@@ -116,6 +116,7 @@ let hour = ref(0);
|
||||
let minute = ref(0);
|
||||
let seconds = ref(0);
|
||||
let timer = setInterval(() => {
|
||||
if (data && data.value && data.value.evaluationEndTime) {
|
||||
let endTime = parseInt(
|
||||
new Date(data.value.evaluationEndTime).getTime() / 1000
|
||||
);
|
||||
@@ -134,10 +135,11 @@ let timer = setInterval(() => {
|
||||
} else {
|
||||
clearInterval(timer);
|
||||
}
|
||||
}
|
||||
}, 1000);
|
||||
|
||||
const goOuterChain = () => {
|
||||
console.log("点击去查看");
|
||||
console.log("点击去查看", quizTaskId);
|
||||
if (quizTaskId == null) {
|
||||
request(EvaluationToLearn, {
|
||||
businessType: btype == 1 ? "project" : "learningpath",
|
||||
@@ -153,7 +155,7 @@ const goOuterChain = () => {
|
||||
if (res.code == 200) {
|
||||
let jumpUrl = res.data.quizUrl;
|
||||
// 此处写跳转url
|
||||
window.open(jumpUrl, "_top");
|
||||
// window.open(jumpUrl, "_top");
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -182,7 +184,7 @@ const goOuterChain = () => {
|
||||
studentName: userInfo.value.realName,
|
||||
});
|
||||
request(EvaluationToLearn, {
|
||||
businessType: "learningpath",
|
||||
businessType: btype == 1 ? "project" : "learningpath",
|
||||
chapterId: chapterOrStageId,
|
||||
courseId: evaluationId,
|
||||
quizKid: data.value.evaluationTypeId,
|
||||
|
||||
@@ -450,7 +450,7 @@ function formateArr(strs) {
|
||||
let timer = null;
|
||||
//判断能否签到
|
||||
function isSignClick() {
|
||||
timer = setInterval(() => {
|
||||
// timer = setInterval(() => {
|
||||
let beginTime = new Date(data.value.planDto?.beginTime).getTime();
|
||||
let endTime = !data.value.planDto?.afterStart
|
||||
? new Date(data.value.planDto?.endTime).getTime()
|
||||
@@ -490,9 +490,11 @@ function isSignClick() {
|
||||
// nowTime < endTime,
|
||||
// nowTime > beginTime
|
||||
// );
|
||||
}, 1000);
|
||||
// }, 1000);
|
||||
}
|
||||
watch(data, () => {
|
||||
isSignClick();
|
||||
});
|
||||
|
||||
//签到
|
||||
const signClick = () => {
|
||||
|
||||
@@ -61,7 +61,9 @@
|
||||
<div class="itemtitle" :title="item.workUploadContent">
|
||||
{{ item.workUploadContent }}
|
||||
{{
|
||||
item.workUploadAddress ? "-" + item.workUploadAddress : ""
|
||||
item.workUploadAddress?.slice(
|
||||
item.workUploadAddress.lastIndexOf("/") + 1
|
||||
)
|
||||
}}
|
||||
</div>
|
||||
<img
|
||||
@@ -106,6 +108,7 @@ import FileTypeImg from "@/components/FileTypeImg.vue";
|
||||
import { useRoute } from "vue-router/dist/vue-router";
|
||||
import { ElMessage, ElLoading } from "element-plus";
|
||||
import ReturnHead from "@/components/ReturnHead.vue";
|
||||
import { toDate } from "@/api/method";
|
||||
const fileList = ref([]);
|
||||
// const fielPath = ref(import.meta.env.VITE_FILE_PATH);
|
||||
const uploadRef = ref();
|
||||
@@ -174,21 +177,17 @@ const state = reactive({
|
||||
});
|
||||
const { hour, minute, seconds } = toRefs(state);
|
||||
|
||||
let timer = setInterval(() => {
|
||||
// console.log("endTime", data.value.submitEndTime);
|
||||
var timer = setInterval(function () {
|
||||
if (data && data.value && data.value.submitEndTime) {
|
||||
let endTime = parseInt(new Date(data.value.submitEndTime).getTime() / 1000);
|
||||
let newEndTime = data.value.submitEndTime.replaceAll("-", "/");
|
||||
let endTime = parseInt(new Date(newEndTime).getTime() / 1000);
|
||||
let nowTime = parseInt(new Date().getTime() / 1000);
|
||||
console.log("endTime222", endTime, nowTime);
|
||||
console.log("endTime222", endTime, nowTime, newEndTime);
|
||||
if (endTime > nowTime) {
|
||||
state.hour = parseInt(
|
||||
dayjs(data.value.submitEndTime).diff(dayjs(), "minute") / 60
|
||||
);
|
||||
state.minute = parseInt(
|
||||
dayjs(data.value.submitEndTime).diff(dayjs(), "minute") % 60
|
||||
);
|
||||
state.hour = parseInt(dayjs(newEndTime).diff(dayjs(), "minute") / 60);
|
||||
state.minute = parseInt(dayjs(newEndTime).diff(dayjs(), "minute") % 60);
|
||||
state.seconds = parseInt(
|
||||
dayjs(data.value.submitEndTime).diff(dayjs(), "seconds") -
|
||||
dayjs(newEndTime).diff(dayjs(), "seconds") -
|
||||
(state.hour * 60 + state.minute) * 60
|
||||
);
|
||||
} else {
|
||||
@@ -199,6 +198,7 @@ let timer = setInterval(() => {
|
||||
|
||||
const { data: submitList } = useRequest(TASK_WORK_SUBMIT_LIST, {
|
||||
workerId: workId,
|
||||
type,
|
||||
});
|
||||
console.log("submitList==----->", submitList);
|
||||
//交作业
|
||||
|
||||
@@ -158,7 +158,7 @@ export default {
|
||||
workUploadContent: textarea.value,
|
||||
workUploadAddress:
|
||||
fileList.value && fileList.value.length !== 0
|
||||
? fileList.value[0].name
|
||||
? fileList.value[0].url
|
||||
: "",
|
||||
workId,
|
||||
type,
|
||||
|
||||
@@ -260,7 +260,7 @@ const signClick = () => {
|
||||
let timer = null;
|
||||
//判断能否签到
|
||||
function isSignClick() {
|
||||
timer = setInterval(() => {
|
||||
// timer = setInterval(() => {
|
||||
let beginTime = new Date(data.value.liveStartTime).getTime();
|
||||
let endTime = !data.value.afterSignIn
|
||||
? new Date(data.value.liveEndTime).getTime()
|
||||
@@ -294,9 +294,11 @@ function isSignClick() {
|
||||
// nowTime < endTime,
|
||||
// nowTime > beginTime
|
||||
// );
|
||||
}, 1000);
|
||||
// }, 1000);
|
||||
}
|
||||
watch(data, () => {
|
||||
isSignClick();
|
||||
});
|
||||
const commitClick = () => {
|
||||
if (data.value.liveStartTime) {
|
||||
let date1 = new Date(data.value.liveStartTime).getTime();
|
||||
|
||||
@@ -95,6 +95,8 @@ const goOuterChain = () => {
|
||||
logo: type,
|
||||
stageOrChapterId: chapterOrStageId,
|
||||
taskId: taskId,
|
||||
type: type,
|
||||
taskType: 7,
|
||||
});
|
||||
|
||||
window.open(data.value.linkAddress, "_top");
|
||||
|
||||
@@ -526,7 +526,9 @@ function toFinish(d, sName, chapterOrStageId) {
|
||||
pid: projectId,
|
||||
name: d.name,
|
||||
});
|
||||
|
||||
if (typeof TASK_TYPES.path[d.type] === "string") {
|
||||
console.log("TASK_TYPES.path[d.type]", TASK_TYPES.path[d.type]);
|
||||
TASK_TYPES.path[d.type] &&
|
||||
TASK_TYPES.path[d.type].startsWith("http") &&
|
||||
window.open(TASK_TYPES.path[d.type] + d.targetId, "_top");
|
||||
@@ -547,11 +549,16 @@ function toFinish(d, sName, chapterOrStageId) {
|
||||
targetId: d.targetId,
|
||||
evaType: d.evaType,
|
||||
btype: 1,
|
||||
quizTaskId: d.quizTaskId,
|
||||
},
|
||||
});
|
||||
} else if (typeof TASK_TYPES.path[d.type] === "function") {
|
||||
if (d.type == 5) {
|
||||
window.open(TASK_TYPES.path[d.type](d) + d.targetId, "_top");
|
||||
} else {
|
||||
TASK_TYPES.path[d.type](d);
|
||||
}
|
||||
}
|
||||
// if (typeof types.value.path[d.type] === "string") {
|
||||
// types.value.path[d.type] &&
|
||||
// types.value.path[d.type].startsWith("http") &&
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* @Author: lixg lixg@dongwu-inc.com
|
||||
* @Date: 2023-01-13 11:42:48
|
||||
* @LastEditors: lixg lixg@dongwu-inc.com
|
||||
* @LastEditTime: 2023-02-22 14:53:41
|
||||
* @LastEditTime: 2023-03-09 22:52:56
|
||||
* @FilePath: /stu_h5/vite.config.js
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
@@ -117,6 +117,10 @@ export default defineConfig(({ command, mode }) =>
|
||||
target: loadEnv(mode, process.cwd()).VITE_PROXY_URL,
|
||||
changeOrigin: true,
|
||||
},
|
||||
'/evaluation/queryEvaluationTaskStatusOne': {
|
||||
target: loadEnv(mode, process.cwd()).VITE_PROXY_URL,
|
||||
changeOrigin: true,
|
||||
},
|
||||
'/statement/add': {
|
||||
target: loadEnv(mode, process.cwd()).VITE_PROXY_URL,
|
||||
changeOrigin: true,
|
||||
|
||||
Reference in New Issue
Block a user