mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-20 16:26:45 +08:00
Merge branch 'develop' of http://gitlab.dongwu-inc.com:10080/BOE/fe-manage into develop
This commit is contained in:
11
.env
11
.env
@@ -2,8 +2,10 @@
|
||||
VUE_APP_BASE=/manage
|
||||
# api项目基础url
|
||||
VUE_APP_BASE_API=/manageApi
|
||||
# 导出url
|
||||
VUE_APP_PROXY_URL=http://111.231.196.214:30001/
|
||||
#文件路径
|
||||
VUE_APP_FILE_PATH=/file/
|
||||
# 代理url 本地调试,不可以用在其他地方
|
||||
VUE_APP_PROXY_URL=http://111.231.196.214/manageApi
|
||||
# 登录url
|
||||
VUE_APP_LOGIN_URL=https://u-pre.boe.com/web
|
||||
# boe域名
|
||||
@@ -18,5 +20,6 @@ VUE_APP_IFRAME_STUDENT_URL=https://u-pre.boe.com/pc/loading
|
||||
|
||||
# 课程二维码
|
||||
VUE_APP_COURSE_STUDY=https://u-pre.boe.com/pc/course/studyindex?id=
|
||||
# 导入学员模板
|
||||
VUE_APP_TEMPLATE=https://u-pre.boe.com/upload/
|
||||
# 导入学员模板
|
||||
VUE_APP_UP_LOAD_HOMEWORK_TEMPLATE=导入作业成绩 模板-1673450632417.xlsx
|
||||
VUE_APP_UP_LOAD_STUDENT_TEMPLATE=导入学员模版-1673452888323.xlsx
|
||||
|
||||
2
.env.alpine
Normal file
2
.env.alpine
Normal file
@@ -0,0 +1,2 @@
|
||||
NODE_ENV=alpine
|
||||
VUE_APP_OUTPUT_DIR=./docker/dist
|
||||
@@ -1,6 +1,2 @@
|
||||
NODE_ENV=test
|
||||
VUE_APP_BASE=/manage
|
||||
VUE_APP_BASE_API=/manageApi
|
||||
VUE_APP_OUTPUT_DIR=./docker/dist
|
||||
|
||||
VUE_APP_BOE_API_URL=https://u-pre.boe.com
|
||||
@@ -8,7 +8,8 @@
|
||||
"build:boe": "vue-cli-service build --mode boe",
|
||||
"build:release": "vue-cli-service build --mode release",
|
||||
"build:prod": "vue-cli-service build --mode prod",
|
||||
"build:test": "vue-cli-service build --mode test"
|
||||
"build:test": "vue-cli-service build --mode test",
|
||||
"build:alpine": "vue-cli-service build --mode alpine"
|
||||
},
|
||||
"dependencies": {
|
||||
"@wangeditor/editor": "^5.1.23",
|
||||
|
||||
@@ -44,7 +44,7 @@ export default defineComponent({
|
||||
const store = useStore();
|
||||
const isLogin = ref(false);
|
||||
// console.log("router", router.getRoutes(), route);
|
||||
console.log("版本2.0.4------------");
|
||||
console.log("版本2.0.5------------");
|
||||
const routes = computed(() => {
|
||||
return router.getRoutes().filter((e) => e.meta?.isLink);
|
||||
});
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* @FilePath: /fe-manage/src/api/config.js
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
import { message } from "ant-design-vue";
|
||||
import {message} from "ant-design-vue";
|
||||
import axios from "axios";
|
||||
import router from "@/router";
|
||||
// import { getCookie } from '../api/method'
|
||||
@@ -21,7 +21,7 @@ const http = axios.create({
|
||||
baseURL: process.env.VUE_APP_BASE_API,
|
||||
timeout: 1000 * 15,
|
||||
// headers: { "Content-Type": "multipart/form-data" },
|
||||
headers: { "Content-Type": "application/json" },
|
||||
headers: {"Content-Type": "application/json"},
|
||||
});
|
||||
|
||||
http.interceptors.request.use(
|
||||
@@ -51,18 +51,19 @@ http.interceptors.response.use(
|
||||
(response) => {
|
||||
// console.log('response', response)
|
||||
const {
|
||||
data: { code, msg },
|
||||
data: {code, msg, show},
|
||||
} = response;
|
||||
// console.log('code', code)
|
||||
console.log('code', code)
|
||||
if (code === 0 || code === 200) {
|
||||
return response;
|
||||
} else {
|
||||
if (code === 1000) {
|
||||
(process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test') ? router.push({ path: 'login' }) : (window.location.href = process.env.VUE_APP_LOGIN_URL)
|
||||
}
|
||||
console.log("api %o", msg);
|
||||
}
|
||||
return response;
|
||||
if (code === 1000) {
|
||||
(process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'alpine') ? router.push({path: 'login'}) : (window.location.href = process.env.VUE_APP_LOGIN_URL)
|
||||
return Promise.reject(response);
|
||||
}
|
||||
show && message.error(msg);
|
||||
console.log("api %o", msg);
|
||||
return Promise.reject(response);
|
||||
},
|
||||
function (error) {
|
||||
if (error.message == "timeout of 1ms exceeded") {
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
style="width: 40px; height: 40px; margin-bottom: 16px"
|
||||
src="../../assets/images/leveladd/success.png"
|
||||
/>
|
||||
<span>作业导出完成,请下载本地或去下载中心查看</span>
|
||||
<span>作业导出完成,请下载到本地或去下载中心查看</span>
|
||||
</div>
|
||||
<div class="del_btnbox">
|
||||
<div class="del_btn btn1" @click="clostModal">
|
||||
@@ -66,7 +66,7 @@ export default {
|
||||
const downloadHomeWork = () => {
|
||||
// props.url
|
||||
if (props.downloadUrl) {
|
||||
window.open(props.downloadUrl);
|
||||
window.open(process.env.VUE_APP_FILE_PATH+props.downloadUrl);
|
||||
}
|
||||
};
|
||||
console.log("props", props);
|
||||
|
||||
@@ -47,10 +47,14 @@
|
||||
<div @click="copyUrl" class="codeUrlCopy">复制链接</div>
|
||||
</div>
|
||||
<div class="qrm_footer">
|
||||
<span style="margin-left: 52px">下载二维码</span>
|
||||
<div class="qrmbtn" @click="downloadQr(200)">
|
||||
<span
|
||||
style="color: #387df7; cursor: pointer"
|
||||
@click="downloadQr(200)"
|
||||
>下载二维码</span
|
||||
>
|
||||
<!-- <div class="qrmbtn" @click="downloadQr(200)">
|
||||
<div class="btntext">200*200</div>
|
||||
</div>
|
||||
</div> -->
|
||||
<!-- <div class="qrmbtn" @click="downloadQr(200)">
|
||||
<div class="btntext">400*400</div>
|
||||
</div>
|
||||
@@ -294,6 +298,7 @@ export default {
|
||||
.qrm_footer {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-bottom: 44px;
|
||||
.qrmbtn {
|
||||
width: 80px;
|
||||
@@ -303,7 +308,7 @@ export default {
|
||||
justify-content: center;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #387df7;
|
||||
margin-left: 16px;
|
||||
// margin-left: 16px;
|
||||
cursor: pointer;
|
||||
.btntext {
|
||||
color: #387df7;
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<div class="main">
|
||||
<div class="minatitl">
|
||||
<div class="up1">请下载</div>
|
||||
<a class="up2" :href="template" style="course: pointer">模板</a>
|
||||
<a class="up2" :href="template" target="_blank" style="cursor: pointer">模板</a>
|
||||
<div class="up1">,按要求填写数据并导入</div>
|
||||
</div>
|
||||
<div class="upload">
|
||||
@@ -31,13 +31,35 @@
|
||||
name="uploadFile"
|
||||
:multiple="false"
|
||||
@change="handleChange"
|
||||
:data=" courseType==1?{
|
||||
stageId: Number(courseId),
|
||||
type: 3
|
||||
}:{
|
||||
targetId: Number(courseId),
|
||||
type: 3
|
||||
}"
|
||||
:data="
|
||||
courseType == 1
|
||||
? {
|
||||
targetId: Number(courseId),
|
||||
type: 3,
|
||||
userId: userId,
|
||||
userName: userName,
|
||||
}
|
||||
: courseType == 3
|
||||
? {
|
||||
targetId: Number(courseId),
|
||||
type: 1,
|
||||
userId: userId,
|
||||
userName: userName,
|
||||
}
|
||||
: courseType == 4
|
||||
? {
|
||||
targetId: Number(courseId),
|
||||
type: 2,
|
||||
userId: userId,
|
||||
userName: userName,
|
||||
}
|
||||
: {
|
||||
targetId: Number(courseId),
|
||||
type: 3,
|
||||
userId: userId,
|
||||
userName: userName,
|
||||
}
|
||||
"
|
||||
:showUploadList="false"
|
||||
>
|
||||
<p class="ant-upload-drag-icon">
|
||||
@@ -53,33 +75,61 @@
|
||||
<div class="tipz">支持扩展名:.xls/.xlsx</div>
|
||||
</div> -->
|
||||
<div class="loadstate">
|
||||
|
||||
<div v-if="uploadpercent!==-1" class="loadborder">
|
||||
<div v-if="uploadpercent !== -1" class="loadborder">
|
||||
<div class="content">
|
||||
<div class="img"></div>
|
||||
<div class="timebox">
|
||||
<div class="timetop">
|
||||
<div class="tit">京东方商业模型.xls</div>
|
||||
<div v-if="uploadErr" class="stateloading" style="color:red;">上传失败</div>
|
||||
<div v-else class="stateloading">{{uploadpercent==100?"上传成功":"正在上传"}}</div>
|
||||
<div class="tit">{{ fileName }}</div>
|
||||
<div
|
||||
v-if="uploadErr"
|
||||
class="stateloading"
|
||||
style="color: red"
|
||||
>
|
||||
上传失败
|
||||
</div>
|
||||
<div v-else class="stateloading">
|
||||
{{ uploadpercent == 100 ? "上传成功" : "正在上传" }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="prog">
|
||||
<div class="inprogloading" :style="{width:uploadpercent==-1?0:uploadpercent+'%', background:uploadErr?'#ff7474':'#35ae69'}"></div>
|
||||
<div
|
||||
class="inprogloading"
|
||||
:style="{
|
||||
width: uploadpercent == -1 ? 0 : uploadpercent + '%',
|
||||
background: uploadErr ? '#ff7474' : '#35ae69',
|
||||
}"
|
||||
></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="curloading">
|
||||
<div class="cur">{{uploadpercent==-1?0:uploadpercent}}%</div>
|
||||
<div class="cancel" style="margin-left: 20px;cursor: pointer;" @click="removeUpload">删除</div>
|
||||
<div class="cur">
|
||||
{{ uploadpercent == -1 ? 0 : uploadpercent }}%
|
||||
</div>
|
||||
<div
|
||||
class="cancel"
|
||||
style="margin-left: 20px; cursor: pointer"
|
||||
@click="removeUpload"
|
||||
>
|
||||
删除
|
||||
</div>
|
||||
<div class="cancel" style="margin-left: 15px"></div>
|
||||
</div>
|
||||
<div v-if="errNum!==0" class="defeat">
|
||||
<div class="detext" @click="downloadEeeorData">下载失败数据</div>
|
||||
<div v-if="errNum !== 0" class="defeat">
|
||||
<div class="detext" @click="downloadEeeorData">
|
||||
下载失败数据
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="showBottomBar" :class="errNum==0?'succebox':'defeatbox'">
|
||||
<div
|
||||
v-if="showBottomBar"
|
||||
:class="errNum == 0 ? 'succebox' : 'defeatbox'"
|
||||
>
|
||||
<div class="lefimg"></div>
|
||||
<div class="tacl">{{succNum}}条数据导入成功,{{errNum}}条数据导入失败</div>
|
||||
<div class="tacl">
|
||||
{{ succNum }}条数据导入成功,{{ errNum }}条数据导入失败
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- <div class="loadborder">
|
||||
@@ -87,7 +137,7 @@
|
||||
<div class="img"></div>
|
||||
<div class="timebox">
|
||||
<div class="timetop">
|
||||
<div class="tit">京东方商业模型.xls</div>
|
||||
<div class="tit">{{ fileName }}</div>
|
||||
<div class="statedefeat">上传失败</div>
|
||||
</div>
|
||||
<div class="prog">
|
||||
@@ -113,7 +163,7 @@
|
||||
<div class="img"></div>
|
||||
<div class="timebox">
|
||||
<div class="timetop">
|
||||
<div class="tit">京东方商业模型.xls</div>
|
||||
<div class="tit">{{ fileName }}</div>
|
||||
<div class="statesucce">上传成功</div>
|
||||
</div>
|
||||
<div class="prog">
|
||||
@@ -151,6 +201,7 @@ import { reactive, toRefs } from "vue";
|
||||
import { message } from "ant-design-vue";
|
||||
import * as api from "../../api/index1";
|
||||
import { BATCH_IMPORT_SCORE } from "@/api/config";
|
||||
import { useStore } from "vuex";
|
||||
export default {
|
||||
name: "ImpStu",
|
||||
props: {
|
||||
@@ -168,21 +219,26 @@ export default {
|
||||
},
|
||||
},
|
||||
setup(props, ctx) {
|
||||
const store = useStore();
|
||||
const state = reactive({
|
||||
template: process.env.VUE_APP_TEMPLATE + "导入学员模版-1672998102528.xlsx",
|
||||
importStudent: process.env.VUE_APP_BASE_API + "admin/student/importStudent",
|
||||
template: process.env.VUE_APP_FILE_PATH + process.env.VUE_APP_UP_LOAD_STUDENT_TEMPLATE,
|
||||
importStudent:
|
||||
process.env.VUE_APP_BASE_API + "/admin/student/importStudent",
|
||||
timers: "", // 定时器,用于清空定时器使用
|
||||
isAddStudent: false, // 用于判断用户是否关闭弹框需要重新获取学员列表
|
||||
uploadpercent: -1,
|
||||
uploadErr: false, //上传失败
|
||||
addLoading: false,
|
||||
fileList: [],
|
||||
fileList: [],
|
||||
succNum: 0, //成功数据数
|
||||
errNum: 0, //失败数据数
|
||||
downloadErrUrl: '',
|
||||
downloadErrUrl: "",
|
||||
showBottomBar: false, // 显示底部成功条数和失败条数
|
||||
locationHref: location.href.indexOf('http://') !== -1 ? 'http://111.231.196.214:12016/' : location.href.slice(0, location.href.indexOf('/m')) + '/upload/'
|
||||
userId: store.state.userInfo.id,
|
||||
userName: store.state.userInfo.realName,
|
||||
fileName: "",
|
||||
});
|
||||
|
||||
const closeDrawer = () => {
|
||||
clearInterval(state.timers);
|
||||
state.fileList = [];
|
||||
@@ -201,19 +257,20 @@ export default {
|
||||
|
||||
const afterVisibleChange = (bool) => {
|
||||
console.log("state", bool);
|
||||
console.log("store", store.state.userInfo);
|
||||
};
|
||||
//上传文件
|
||||
const handleChange = (info) => {
|
||||
console.log("info", info);
|
||||
|
||||
if(info){
|
||||
var FileExt = info.file.name.replace(/.+\./, "");
|
||||
if (['xls','xlsx'].indexOf(FileExt.toLowerCase()) === -1){
|
||||
if (info) {
|
||||
var FileExt = info.file.name.replace(/.+\./, "");
|
||||
if (["xls", "xlsx"].indexOf(FileExt.toLowerCase()) === -1) {
|
||||
state.fileList = [];
|
||||
state.uploadpercent = -1;
|
||||
message.destroy()
|
||||
message.error("请上传正确的文件格式")
|
||||
return
|
||||
state.uploadpercent = -1;
|
||||
message.destroy();
|
||||
message.error("请上传正确的文件格式");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -226,59 +283,58 @@ export default {
|
||||
console.log(info.file, info.fileList);
|
||||
}
|
||||
if (status === "done") {
|
||||
console.log('上传成功返回的UUID', info.file.response.data)
|
||||
console.log('上传成功返回的UUID----->', info)
|
||||
console.log("上传成功返回的UUID", info.file.response.data);
|
||||
console.log("上传成功返回的UUID----->", info);
|
||||
console.log("我是导入学员接口传递的参数", {
|
||||
uploadFile: info.file.originFileObj,
|
||||
targetId: props.courseId,
|
||||
type: 3
|
||||
})
|
||||
type: 3,
|
||||
});
|
||||
state.fileName = info.file.name;
|
||||
let i = 0;
|
||||
state.timers = setInterval(() => {
|
||||
let uid = info.file.response.data;
|
||||
api
|
||||
.getImportStatus(uid)
|
||||
.then((res) => {
|
||||
console.log("查询导入状态", res);
|
||||
if (res.data.code === 200) {
|
||||
if (res.data.data.status !== "START") {
|
||||
i++;
|
||||
if (i === 1) {
|
||||
message.destroy();
|
||||
message.success(`${info.file.name}上传成功`);
|
||||
state.showBottomBar = true;
|
||||
state.addLoading = false;
|
||||
state.isAddStudent = true;
|
||||
}
|
||||
state.succNum = res.data.data.successNum;
|
||||
state.errNum = res.data.data.failedNum;
|
||||
state.downloadErrUrl = res.data.data.url;
|
||||
clearInterval(state.timers);
|
||||
let uid = info.file.response.data;
|
||||
api
|
||||
.getImportStatus(uid)
|
||||
.then((res) => {
|
||||
console.log("查询导入状态", res);
|
||||
if (res.data.code === 200) {
|
||||
if (res.data.data.status !== "START") {
|
||||
i++;
|
||||
if (i === 1) {
|
||||
message.destroy();
|
||||
message.success(`${info.file.name}上传成功`);
|
||||
state.showBottomBar = true;
|
||||
state.addLoading = false;
|
||||
state.isAddStudent = true;
|
||||
}
|
||||
state.succNum = res.data.data.successNum;
|
||||
state.errNum = res.data.data.failedNum;
|
||||
state.downloadErrUrl = res.data.data.url;
|
||||
clearInterval(state.timers);
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
clearInterval(state.timers);
|
||||
state.showBottomBar = true;
|
||||
state.addLoading = false;
|
||||
console.log("查询导入状态失败", err);
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
clearInterval(state.timers);
|
||||
state.showBottomBar = true;
|
||||
state.addLoading = false;
|
||||
console.log("查询导入状态失败", err);
|
||||
});
|
||||
}, 500);
|
||||
} else if (status === "error") {
|
||||
state.addLoading = false;
|
||||
state.uploadErr = true;
|
||||
message.error(`${info.file.name}上传失败`);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
// 下载失败数据
|
||||
const downloadEeeorData = () => {
|
||||
console.log(state.locationHref + state.downloadErrUrl)
|
||||
if(state.downloadErrUrl!==""){
|
||||
window.open(state.locationHref + state.downloadErrUrl)
|
||||
if (state.downloadErrUrl !== "") {
|
||||
window.open(process.env.VUE_APP_FILE_PATH + state.downloadErrUrl);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
//删除
|
||||
const removeUpload = () => {
|
||||
@@ -301,7 +357,7 @@ export default {
|
||||
handleChange,
|
||||
BATCH_IMPORT_SCORE,
|
||||
downloadEeeorData,
|
||||
removeUpload
|
||||
removeUpload,
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
<div class="main">
|
||||
<div class="minatitl">
|
||||
<div class="up1">请下载</div>
|
||||
<div class="up2">模板</div>
|
||||
<div class="up2" @click="downTemplate" style="cursor:pointer">模板</div>
|
||||
<div class="up1">,按要求填写数据并导入</div>
|
||||
</div>
|
||||
<div class="upload">
|
||||
@@ -36,7 +36,7 @@
|
||||
:showUploadList="false"
|
||||
:data="{
|
||||
type: type,
|
||||
targetid: Number(id),
|
||||
targetId: Number(id),
|
||||
}"
|
||||
>
|
||||
<p class="ant-upload-drag-icon">
|
||||
@@ -60,7 +60,7 @@
|
||||
<div class="img"></div>
|
||||
<div class="timebox">
|
||||
<div class="timetop">
|
||||
<div class="tit">京东方商业模型.xls</div>
|
||||
<div class="tit">{{ fileName }}</div>
|
||||
<div class="stateloading">正在上传</div>
|
||||
</div>
|
||||
<a-progress :percent="uploadpercent" />
|
||||
@@ -80,7 +80,7 @@
|
||||
<div class="img"></div>
|
||||
<div class="timebox">
|
||||
<div class="timetop">
|
||||
<div class="tit">京东方商业模型.xls</div>
|
||||
<div class="tit">{{ fileName }}</div>
|
||||
<div class="statedefeat">上传失败</div>
|
||||
</div>
|
||||
<a-progress :percent="uploadpercent" />
|
||||
@@ -115,7 +115,7 @@
|
||||
<div class="img"></div>
|
||||
<div class="timebox">
|
||||
<div class="timetop">
|
||||
<div class="tit">京东方商业模型.xls</div>
|
||||
<div class="tit">{{ fileName }}</div>
|
||||
<div class="statesucce">上传成功</div>
|
||||
</div>
|
||||
<a-progress :percent="uploadpercent" />
|
||||
@@ -191,6 +191,7 @@ import { reactive, toRefs } from "vue";
|
||||
import { message } from "ant-design-vue";
|
||||
import * as api from "../../api/index1";
|
||||
import { BATCH_IMPORT_SCORE } from "@/api/config";
|
||||
import { useStore } from "vuex";
|
||||
export default {
|
||||
name: "EScore",
|
||||
props: {
|
||||
@@ -213,6 +214,7 @@ export default {
|
||||
},
|
||||
},
|
||||
setup(props, ctx) {
|
||||
const store = useStore();
|
||||
const state = reactive({
|
||||
fileType: ["xls", "xlsx"],
|
||||
importHomeWork:
|
||||
@@ -228,6 +230,9 @@ export default {
|
||||
location.href.indexOf("http://") !== -1
|
||||
? "http://111.231.196.214:12016/"
|
||||
: location.href.slice(0, location.href.indexOf("/m")) + "/upload/",
|
||||
userId: store.state.userInfo.id,
|
||||
userName: store.state.userInfo.realName,
|
||||
fileName: "",
|
||||
});
|
||||
const closeDrawer = () => {
|
||||
ctx.emit("update:eScorevisible", false);
|
||||
@@ -261,6 +266,7 @@ export default {
|
||||
// console.log(info.file, info.fileList);
|
||||
}
|
||||
if (status === "done") {
|
||||
state.fileName = info.file.name;
|
||||
let i = 0;
|
||||
let timer = setInterval(() => {
|
||||
let uid = info.file.response.data;
|
||||
@@ -346,15 +352,19 @@ export default {
|
||||
const downloadEeeorData = () => {
|
||||
console.log(state.locationHref + state.downloadErrUrl);
|
||||
if (state.downloadErrUrl !== "") {
|
||||
window.open(state.locationHref + state.downloadErrUrl);
|
||||
window.open(process.env.VUE_APP_FILE_PATH + state.downloadErrUrl);
|
||||
}
|
||||
};
|
||||
function downTemplate(){
|
||||
window.open(process.env.VUE_APP_FILE_PATH + process.env.VUE_APP_UP_LOAD_HOMEWORK_TEMPLATE)
|
||||
}
|
||||
|
||||
return {
|
||||
...toRefs(state),
|
||||
afterVisibleChange,
|
||||
closeDrawer,
|
||||
handleChange,
|
||||
downTemplate,
|
||||
BATCH_IMPORT_SCORE,
|
||||
beforeUpload,
|
||||
handleUpload,
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
>
|
||||
<div class="asstype">描述:</div>
|
||||
<div style="color: rgba(51, 51, 51, 1); font-size: 14px">
|
||||
{{ values?.assessmentQaDescribe }}
|
||||
{{ values?.content }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -118,8 +118,8 @@
|
||||
</div>
|
||||
<div class="lastbox">
|
||||
<div class="sorcetext">非常不满意</div>
|
||||
<div class="sorcebox" v-for="(iittem, index) in [1,2,3,4,5,6,7,8,9,10]" :key="index">
|
||||
<div v-if="iittem >= values.assessmentMinScore && iittem <= values.assessmentMaxScore" :class="index+1 == values.selectAnswer ? 'numbox' : 'numbox1'">{{ iittem }}</div>
|
||||
<div class="sorcebox" v-for="(iittem, index) in [1,2,3,4,5,6,7,8,9,10] " :key="index">
|
||||
<div v-if="iittem >= values.assessmentMinScore && iittem <= values.assessmentMaxScore" :class="(iittem + 1 - values.assessmentMinScore) == values.selectAnswer ? 'numbox' : 'numbox1'">{{ iittem }}</div>
|
||||
</div>
|
||||
<div class="sorcetext">非常满意</div>
|
||||
</div>
|
||||
@@ -195,7 +195,7 @@ export default {
|
||||
console.log('我是传递过来的参数2', props.basicdata)
|
||||
api.QueryAssessmentDetail({
|
||||
"assessmentSubmitId": props.datasource.assessmentSubmitId,
|
||||
"courseId": props.datasource.courseId,
|
||||
"courseId": props.basicdata.assessmentId,
|
||||
"studentId": props.datasource.studentId
|
||||
}).then(res=>{
|
||||
console.log(res)
|
||||
@@ -225,6 +225,7 @@ export default {
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
|
||||
@@ -105,10 +105,11 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
<div class="btnn">
|
||||
<button class="btn1" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="closeDrawer">确定</button>
|
||||
</div>
|
||||
</div>-->
|
||||
</div>
|
||||
</a-drawer>
|
||||
</template>
|
||||
@@ -405,8 +406,8 @@ export default {
|
||||
|
||||
// 导出数据
|
||||
function exportTaskStu() {
|
||||
window.open(`${process.env.VUE_APP_PROXY_URL}admin/student/exportTaskStudent?currentStageId=${props.datasource.stageId}&type=${1}&pid=${props.datasource.projectId}&taskId=${props.datasource.projectTaskId}&taskType=${props.datasource.type}`)
|
||||
// window.open(`${process.env.VUE_APP_PROXY_URL}admin/student/exportTaskStudent?pageNo=${state.currentPage}&pageSize=${state.pageSize}¤tStageId=${props.datasource.stageId}&type=${1}&pid=${props.datasource.projectId}&taskId=${props.datasource.projectTaskId}&status=${state.name}&studentName=${state.projectName}`)
|
||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${props.datasource.stageId}&type=${1}&pid=${props.datasource.projectId}&taskId=${props.datasource.projectTaskId}&taskType=${props.datasource.type}`)
|
||||
// window.open(`${process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?pageNo=${state.currentPage}&pageSize=${state.pageSize}¤tStageId=${props.datasource.stageId}&type=${1}&pid=${props.datasource.projectId}&taskId=${props.datasource.projectTaskId}&status=${state.name}&studentName=${state.projectName}`)
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
@@ -108,10 +108,11 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
<div class="btnn">
|
||||
<button class="btn1" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="closeDrawer">确定</button>
|
||||
</div>
|
||||
</div>-->
|
||||
</div>
|
||||
<!-- 导出成绩抽屉 -->
|
||||
<EScore v-model:eScorevisible="eScorevisible" />
|
||||
@@ -414,7 +415,7 @@ export default {
|
||||
|
||||
{/* 导出数据 */}
|
||||
function exportData() {
|
||||
window.open(`${process.env.VUE_APP_PROXY_URL}admin/exam/manage/exportExam?chapterId=${props.datasource.chapterId}&targetId=${props.datasource.routerId}&taskId=${props.datasource.courseId}&type=${1}`)
|
||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/exam/manage/exportExam?chapterId=${props.datasource.chapterId}&targetId=${props.datasource.routerId}&taskId=${props.datasource.courseId}&type=${1}`)
|
||||
{/* api.ExportExam({
|
||||
"chapterId": props.datasource.chapterId,
|
||||
"targetId": props.datasource.routerId,
|
||||
|
||||
@@ -30,7 +30,9 @@
|
||||
: "-"
|
||||
}}
|
||||
</div>
|
||||
<div class="endtime" style="margin-left: 64px">签到时间:14:00</div>
|
||||
<div class="endtime" style="margin-left: 64px">
|
||||
允许签到时段:{{ beginTime }}~{{ endTime }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="search">
|
||||
@@ -107,7 +109,7 @@
|
||||
<div class="wz">导出数据</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="line">
|
||||
<!-- <div class="line">
|
||||
<div class="inline">
|
||||
<div class="left">
|
||||
<div class="img"></div>
|
||||
@@ -120,7 +122,7 @@
|
||||
<div class="right" @click="clearLine">清空</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="pad"></div> -->
|
||||
<div class="pad"></div> -->
|
||||
|
||||
<div class="tableBox" style="margin-top: 30px">
|
||||
<a-table
|
||||
@@ -171,10 +173,11 @@
|
||||
/>
|
||||
</div> -->
|
||||
</div>
|
||||
<!--
|
||||
<div class="btnn">
|
||||
<button class="btn1" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="closeDrawer">确定</button>
|
||||
</div>
|
||||
</div>-->
|
||||
</div>
|
||||
</a-drawer>
|
||||
<!-- 二维码签到弹窗 -->
|
||||
@@ -206,11 +209,11 @@
|
||||
<span>您确定要批量签到吗</span>
|
||||
</div>
|
||||
<div class="del_btnbox">
|
||||
<div class="del_btn btn1">
|
||||
<div class="btnText" @click="closeCopyModal">取消</div>
|
||||
<div class="del_btn btn1" @click="closeCopyModal">
|
||||
<div class="btnText">取消</div>
|
||||
</div>
|
||||
<div class="del_btn btn2">
|
||||
<div class="btnText" @click="batchSign">确定</div>
|
||||
<div class="del_btn btn2" @click="batchSign">
|
||||
<div class="btnText">确定</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -234,6 +237,7 @@ import SignQR from "../SignQR.vue";
|
||||
import * as api from "../../../api/index1";
|
||||
import TwoDimensionalCode from "../../../components/TwoDimensionalCode";
|
||||
import { message } from "ant-design-vue";
|
||||
import { toDate } from "../../../api/method";
|
||||
export default {
|
||||
name: "FaceManage",
|
||||
components: {
|
||||
@@ -341,10 +345,13 @@ export default {
|
||||
codeIndex: null,
|
||||
codeInfo: null, //二维码内容
|
||||
// selectOption: [],
|
||||
beginTime: null, //签到开始时间
|
||||
endTime: null, //签到结束时间
|
||||
});
|
||||
const afterVisibleChange = (bol) => {
|
||||
if (bol == true) {
|
||||
getStudent();
|
||||
isSignClick();
|
||||
}
|
||||
};
|
||||
//考勤
|
||||
@@ -395,11 +402,16 @@ export default {
|
||||
// userName: "",
|
||||
};
|
||||
api
|
||||
.attendanceSign(obj, (res) => {
|
||||
.attendanceSign(obj)
|
||||
.then((res) => {
|
||||
console.log("签到结果", res, obj);
|
||||
if (res.data.code === 200) {
|
||||
message.destroy();
|
||||
message.success("批量签到成功");
|
||||
state.copyModal = false;
|
||||
state.tableDataTotal = -1;
|
||||
state.selectedRowKeys = [];
|
||||
state.selectedStudents = [];
|
||||
getStudent();
|
||||
}
|
||||
})
|
||||
@@ -425,8 +437,8 @@ export default {
|
||||
}&type=${1}`,
|
||||
};
|
||||
console.log("codeInfo", state.codeInfo);
|
||||
state.codeIndex = 1;
|
||||
state.codeType = 2;
|
||||
state.codeIndex = 0;
|
||||
state.codeType = 1;
|
||||
};
|
||||
|
||||
const onSelectChange = (selectedRowKeys, e) => {
|
||||
@@ -565,12 +577,19 @@ export default {
|
||||
},
|
||||
{
|
||||
title: "签到时间",
|
||||
dataIndex: "cur",
|
||||
key: "cur",
|
||||
dataIndex: "signTime",
|
||||
key: "signTime",
|
||||
width: 110,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span>{text.record.signTime ? text.record.signTime : "-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
// {
|
||||
// title: "签退时间",
|
||||
@@ -582,21 +601,42 @@ export default {
|
||||
// },
|
||||
{
|
||||
title: "考勤",
|
||||
dataIndex: "time",
|
||||
key: "time",
|
||||
dataIndex: "signStatus",
|
||||
key: "signStatus",
|
||||
width: 50,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
// console.log("text", text);
|
||||
return (
|
||||
<div class="racona">
|
||||
<span>
|
||||
{text.record.signStatus
|
||||
? "签到"
|
||||
: text.record.leaveStatus
|
||||
? "请假"
|
||||
: "-"}
|
||||
</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "签到状态",
|
||||
dataIndex: "state",
|
||||
key: "state",
|
||||
dataIndex: "signStatus",
|
||||
key: "signStatus",
|
||||
width: 50,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span>{text.record.signStatus ? "正常" : "异常"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "考勤情况",
|
||||
@@ -611,69 +651,73 @@ export default {
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="opa">
|
||||
<a-radio-group name="radioGroup">
|
||||
<a-radio
|
||||
value="1"
|
||||
checked={text.record.signIn}
|
||||
onChange={(e) => {
|
||||
console.log("点击签到", e);
|
||||
let obj = {
|
||||
courseId: Number(props.projectTaskInfo.courseId),
|
||||
projectId: Number(props.projectTaskInfo.projectId),
|
||||
// routerId: Number(props.projectTaskInfo.projectId),
|
||||
ids: [text.record.studentId],
|
||||
studentName: text.record.studentName,
|
||||
taskId: Number(props.projectTaskInfo.projectTaskId),
|
||||
taskType: Number(props.projectTaskInfo.type),
|
||||
type: 1,
|
||||
// userName: "",
|
||||
};
|
||||
api
|
||||
.attendanceSign(obj, (res) => {
|
||||
console.log("签到结果", res, obj, e);
|
||||
if (res.data.code === 200) {
|
||||
text.record.signIn = true;
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("签到失败", err, obj);
|
||||
text.record.signIn = false;
|
||||
});
|
||||
}}
|
||||
>
|
||||
签到
|
||||
</a-radio>
|
||||
<a-radio
|
||||
value="2"
|
||||
checked={text.record.leave}
|
||||
onChange={(e) => {
|
||||
console.log("点击请假", e, props.datasource);
|
||||
let obj = {
|
||||
courseId: Number(props.projectTaskInfo.courseId),
|
||||
projectId: Number(props.projectTaskInfo.projectId),
|
||||
// routerId: Number(props.projectTaskInfo.projectId),
|
||||
ids: [text.record.studentId],
|
||||
studentName: text.record.studentName,
|
||||
taskId: Number(props.projectTaskInfo.projectTaskId),
|
||||
taskType: Number(props.projectTaskInfo.type),
|
||||
type: 1,
|
||||
};
|
||||
api
|
||||
.attendanceLeave(obj, (res) => {
|
||||
console.log("请假结果", res, obj, e);
|
||||
if (res.data.code === 200) {
|
||||
text.record.leave = true;
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("请假结果", err, obj);
|
||||
text.record.leave = false;
|
||||
});
|
||||
}}
|
||||
>
|
||||
请假
|
||||
</a-radio>
|
||||
</a-radio-group>
|
||||
<a-radio
|
||||
value="1"
|
||||
checked={text.record.signStatus}
|
||||
onChange={(e) => {
|
||||
console.log("点击签到", e);
|
||||
let obj = {
|
||||
courseId: Number(props.projectTaskInfo.courseId),
|
||||
projectId: Number(props.projectTaskInfo.projectId),
|
||||
// routerId: Number(props.projectTaskInfo.projectId),
|
||||
ids: [text.record.studentId],
|
||||
studentName: text.record.studentName,
|
||||
taskId: Number(props.projectTaskInfo.projectTaskId),
|
||||
taskType: Number(props.projectTaskInfo.type),
|
||||
type: 1,
|
||||
// userName: "",
|
||||
};
|
||||
api
|
||||
.attendanceSign(obj)
|
||||
.then((res) => {
|
||||
console.log("签到结果", res, obj, e);
|
||||
if (res.data.code === 200) {
|
||||
text.record.signStatus = true;
|
||||
state.tableDataTotal = -1;
|
||||
getStudent();
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("签到失败", err, obj);
|
||||
text.record.signStatus = false;
|
||||
});
|
||||
}}
|
||||
>
|
||||
签到
|
||||
</a-radio>
|
||||
<a-radio
|
||||
value="2"
|
||||
checked={text.record.leaveStatus}
|
||||
onChange={(e) => {
|
||||
console.log("点击请假", e, props.projectTaskInfo);
|
||||
let obj = {
|
||||
courseId: Number(props.projectTaskInfo.courseId),
|
||||
projectId: Number(props.projectTaskInfo.projectId),
|
||||
// routerId: Number(props.projectTaskInfo.projectId),
|
||||
ids: [text.record.studentId],
|
||||
studentName: text.record.studentName,
|
||||
taskId: Number(props.projectTaskInfo.projectTaskId),
|
||||
taskType: Number(props.projectTaskInfo.type),
|
||||
type: 1,
|
||||
};
|
||||
api
|
||||
.attendanceLeave(obj)
|
||||
.then((res) => {
|
||||
console.log("请假结果", res, obj, e);
|
||||
if (res.data.code === 200) {
|
||||
text.record.leaveStatus = true;
|
||||
state.tableDataTotal = -1;
|
||||
getStudent();
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("请假结果", err, obj);
|
||||
text.record.leaveStatus = false;
|
||||
});
|
||||
}}
|
||||
>
|
||||
请假
|
||||
</a-radio>
|
||||
|
||||
{/**
|
||||
<a-checkbox
|
||||
@@ -709,7 +753,7 @@ export default {
|
||||
<a-checkbox
|
||||
checked={text.record.leave}
|
||||
onChange={(e) => {
|
||||
console.log("点击请假", e, props.datasource);
|
||||
console.log("点击请假", e, props.projectTaskInfo);
|
||||
let obj = {
|
||||
courseId: Number(props.projectTaskInfo.courseId),
|
||||
projectId: Number(props.projectTaskInfo.projectId),
|
||||
@@ -762,7 +806,7 @@ export default {
|
||||
pid: props.projectTaskInfo.projectId,
|
||||
// status: Number(state.name),
|
||||
studentName: state.name,
|
||||
currentTaskId: props.projectTaskInfo.projectTaskId,
|
||||
taskId: props.projectTaskInfo.projectTaskId,
|
||||
});
|
||||
api
|
||||
.AssessmentManagementMessage({
|
||||
@@ -773,7 +817,7 @@ export default {
|
||||
pid: props.projectTaskInfo.projectId,
|
||||
// status: Number(state.name),
|
||||
studentName: state.name,
|
||||
currentTaskId: props.projectTaskInfo.projectTaskId,
|
||||
taskId: props.projectTaskInfo.projectTaskId,
|
||||
taskType: props.projectTaskInfo.type,
|
||||
})
|
||||
.then((res) => {
|
||||
@@ -822,10 +866,10 @@ export default {
|
||||
console.log("props.projectTaskInfo", props.projectTaskInfo);
|
||||
window.open(
|
||||
`${
|
||||
process.env.VUE_APP_PROXY_URL
|
||||
}admin/student/exportTaskStudent?currentStageId=${
|
||||
process.env.VUE_APP_BASE_API
|
||||
}/admin/student/exportTaskStudent?currentStageId=${
|
||||
props.projectTaskInfo.stageId
|
||||
}&type=${1}&pid=${props.projectTaskInfo.projectId}&taskType=0`
|
||||
}&type=${1}&pid=${props.projectTaskInfo.projectId}&taskType=2&thirdType=2`
|
||||
);
|
||||
// api
|
||||
// .exportTaskStudent({
|
||||
@@ -856,7 +900,42 @@ export default {
|
||||
getStudent();
|
||||
}
|
||||
};
|
||||
// 计算签到时间
|
||||
const isSignClick = () => {
|
||||
console.log("props.projectTaskInfo.startTime", props.projectTaskInfo);
|
||||
let beginTime = new Date(props.projectTaskInfo.startTime).getTime();
|
||||
let endTime = !props.projectTaskInfo.afterStart
|
||||
? new Date(props.projectTaskInfo.endTime).getTime()
|
||||
: new Date(props.projectTaskInfo.startTime).getTime();
|
||||
console.log("beginTime,endTime", beginTime, endTime);
|
||||
if (
|
||||
props.projectTaskInfo.beforeStart &&
|
||||
props.projectTaskInfo.afterStart
|
||||
) {
|
||||
//有开始前有开始后
|
||||
beginTime = beginTime - props.projectTaskInfo.beforeStart * 60 * 1000;
|
||||
endTime = endTime + props.projectTaskInfo.afterStart * 60 * 1000;
|
||||
console.log("1111");
|
||||
} else if (
|
||||
props.projectTaskInfo.beforeStart &&
|
||||
!props.projectTaskInfo.afterStart
|
||||
) {
|
||||
//只有开始前无开始后
|
||||
beginTime = beginTime - props.projectTaskInfo.beforeStart * 60 * 1000;
|
||||
console.log("11112222");
|
||||
} else if (
|
||||
!props.projectTaskInfo.beforeStart &&
|
||||
props.projectTaskInfo.afterStart
|
||||
) {
|
||||
//无开始前有开始后
|
||||
endTime = endTime + props.projectTaskInfo.afterStart * 60 * 1000;
|
||||
console.log("1111333");
|
||||
}
|
||||
|
||||
state.beginTime = toDate(beginTime / 1000, "Y/M/D h:m:s");
|
||||
state.endTime = toDate(endTime / 1000, "Y/M/D h:m:s");
|
||||
console.log("beginTime,endTime", state.beginTime, state.endTime);
|
||||
};
|
||||
return {
|
||||
...toRefs(state),
|
||||
selectProjectName,
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnss" style="margin-top: 20px">
|
||||
<!-- <div class="btn btn1" style="margin-right: 20px" @click="godie">
|
||||
<!-- <div class="btn btn1" style="margin-right: 20px" @click="godie">
|
||||
<div class="img1"></div>
|
||||
<div class="wz">催促学习</div>
|
||||
</div>
|
||||
@@ -76,8 +76,8 @@
|
||||
<div class="btn btn2" @click="allStuOver">
|
||||
<div class="wz">批量标注完成</div>
|
||||
</div>
|
||||
<div class="btn btn2">
|
||||
<div class="wz" @click="showEntryScore">批量录入成绩</div>
|
||||
<div class="btn btn2" @click="showEntryScore">
|
||||
<div class="wz">批量录入成绩</div>
|
||||
</div>
|
||||
<div class="btn btn2" @click="exportTaskStu">
|
||||
<div class="img2"></div>
|
||||
@@ -87,7 +87,7 @@
|
||||
<div class="wz">导出作业</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="line">
|
||||
<!-- <div class="line">
|
||||
<div class="inline">
|
||||
<div class="left">
|
||||
<div class="img"></div>
|
||||
@@ -100,13 +100,15 @@
|
||||
<div class="right" @click="clearLine">清空</div>
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
<div class="tableBox" style="margin-top: 20px; margin-bottom: 100px">
|
||||
<a-table
|
||||
style="border: 1px solid #f2f6fe"
|
||||
:columns="tablecolumns"
|
||||
:data-source="tabledata"
|
||||
:loading="tableDataTotal === -1 ? true : false"
|
||||
:scroll="{ x: 900 }"
|
||||
:scroll="{ x: 1300 }"
|
||||
@expand="expandTable"
|
||||
:pagination="false"
|
||||
:row-selection="{
|
||||
selectedRowKeys: selectedRowKeys,
|
||||
@@ -129,10 +131,12 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
<div class="btnn">
|
||||
<button class="btn1" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="closeDrawer">确定</button>
|
||||
</div>
|
||||
-->
|
||||
</div>
|
||||
</a-drawer>
|
||||
<!-- 批量标注完成 -->
|
||||
@@ -161,7 +165,12 @@
|
||||
v-model:getStudent="getStudent"
|
||||
/>
|
||||
<!-- 录入成绩抽屉 -->
|
||||
<entry-scores v-model:Evisible="Evisible" />
|
||||
<EScore
|
||||
v-model:eScorevisible="Evisible"
|
||||
:type="1"
|
||||
:id="projectTaskInfo?.projectTaskId"
|
||||
v-model:searchTaskList="searchTaskList"
|
||||
/>
|
||||
<!-- 查看作业抽屉 -->
|
||||
<CKWork v-model:CWvisible="CWvisible" />
|
||||
<!-- 查看答卷抽屉 -->
|
||||
@@ -180,14 +189,14 @@ import { message } from "ant-design-vue";
|
||||
import ASOver from "../AllStuOver.vue";
|
||||
import CKWork from "../CheckWork.vue";
|
||||
import CQue from "../CheckQue.vue";
|
||||
import EntryScores from "../EntryScores.vue";
|
||||
import EScore from "../ExportScore.vue";
|
||||
// import * as api from "../../../api/index";
|
||||
import * as api from "../../../api/index1";
|
||||
import ExportHomeWork from "../../Modals/ExportHomeWork.vue";
|
||||
export default {
|
||||
name: "ProjectFaceTaskManage",
|
||||
components: {
|
||||
EntryScores,
|
||||
EScore,
|
||||
CKWork,
|
||||
CQue,
|
||||
ASOver,
|
||||
@@ -235,11 +244,11 @@ export default {
|
||||
value: "1",
|
||||
label: "已完成",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
value: "2",
|
||||
label: "进行中",
|
||||
},
|
||||
// {
|
||||
// id: 2,
|
||||
// value: "2",
|
||||
// label: "进行中",
|
||||
// },
|
||||
],
|
||||
selectedRowKeys: [],
|
||||
|
||||
@@ -265,7 +274,7 @@ export default {
|
||||
title: "工号",
|
||||
dataIndex: "studentUserNo",
|
||||
key: "studentUserNo",
|
||||
width: 50,
|
||||
width: '15%',
|
||||
align: "left",
|
||||
className: "h head",
|
||||
customRender: (text) => {
|
||||
@@ -282,8 +291,8 @@ export default {
|
||||
title: "姓名",
|
||||
dataIndex: "studentName",
|
||||
key: "studentName",
|
||||
width: 50,
|
||||
align: "left",
|
||||
width: '10%',
|
||||
align: "center",
|
||||
className: "h head",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
@@ -299,7 +308,7 @@ export default {
|
||||
title: "所在部门",
|
||||
dataIndex: "studentDepartName",
|
||||
key: "studentDepartName",
|
||||
width: 60,
|
||||
width: '15%',
|
||||
align: "center",
|
||||
className: "h",
|
||||
ellipsis: true,
|
||||
@@ -319,7 +328,7 @@ export default {
|
||||
title: "所在岗位",
|
||||
dataIndex: "studentJobName",
|
||||
key: "studentJobName",
|
||||
width: 60,
|
||||
width: '10%',
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
@@ -339,7 +348,7 @@ export default {
|
||||
title: "作业成绩",
|
||||
dataIndex: "workScore",
|
||||
key: "workScore",
|
||||
width: 60,
|
||||
width: '10%',
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
@@ -359,7 +368,7 @@ export default {
|
||||
title: "考试成绩",
|
||||
dataIndex: "examinationScore",
|
||||
key: "examinationScore",
|
||||
width: 60,
|
||||
width: '10%',
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
@@ -380,7 +389,7 @@ export default {
|
||||
title: "评分",
|
||||
dataIndex: "assessmentScore",
|
||||
key: "assessmentScore",
|
||||
width: 60,
|
||||
width: '10%',
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
@@ -401,7 +410,7 @@ export default {
|
||||
title: "任务状态",
|
||||
dataIndex: "finishStatus",
|
||||
key: "finishStatus",
|
||||
width: 60,
|
||||
width: '10%',
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
@@ -422,7 +431,7 @@ export default {
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
{/**
|
||||
title: "操作",
|
||||
dataIndex: "operation",
|
||||
key: "operation",
|
||||
@@ -487,7 +496,8 @@ export default {
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
*/ },
|
||||
|
||||
],
|
||||
exportHomeWorkV: false,
|
||||
downloadUrl: null,
|
||||
@@ -607,9 +617,9 @@ export default {
|
||||
currentStageId: props.projectTaskInfo.stageId,
|
||||
type: 1,
|
||||
pid: props.projectTaskInfo.projectId,
|
||||
status: Number(state.projectName),
|
||||
status: state.projectName,
|
||||
studentName: state.name,
|
||||
currentTaskId: props.projectTaskInfo.projectTaskId,
|
||||
taskId: props.projectTaskInfo.projectTaskId,
|
||||
});
|
||||
api
|
||||
.AssessmentManagementMessage({
|
||||
@@ -618,9 +628,9 @@ export default {
|
||||
currentStageId: props.projectTaskInfo.stageId,
|
||||
type: 1,
|
||||
pid: props.projectTaskInfo.projectId,
|
||||
status: Number(state.projectName),
|
||||
status: state.projectName,
|
||||
studentName: state.name,
|
||||
currentTaskId: props.projectTaskInfo.projectTaskId,
|
||||
taskId: props.projectTaskInfo.projectTaskId,
|
||||
taskType: props.projectTaskInfo.type,
|
||||
})
|
||||
.then((res) => {
|
||||
@@ -671,10 +681,9 @@ export default {
|
||||
console.log("props.projectTaskInfo", props.projectTaskInfo);
|
||||
window.open(
|
||||
`${
|
||||
process.env.VUE_APP_PROXY_URL
|
||||
}admin/student/exportTaskStudent?currentStageId=${
|
||||
process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${
|
||||
props.projectTaskInfo.stageId
|
||||
}&type=${1}&pid=${props.projectTaskInfo.projectId}taskType=2`
|
||||
}&type=${1}&pid=${props.projectTaskInfo.projectId}&taskType=2`
|
||||
);
|
||||
// api
|
||||
// .exportTaskStudent({
|
||||
@@ -707,12 +716,12 @@ export default {
|
||||
api
|
||||
.exportHomeWork(obj)
|
||||
.then((res) => {
|
||||
console.log("导出作业", JSON.parse(res.data).data);
|
||||
if (JSON.parse(res.data).code === 200) {
|
||||
message.destroy();
|
||||
message.success("导出作业成功");
|
||||
console.log("导出作业",res.data.data);
|
||||
if (res.data.code === 200) {
|
||||
//message.destroy();
|
||||
//message.success("导出作业成功");
|
||||
state.exportHomeWorkV = true;
|
||||
state.downloadUrl = JSON.parse(res.data).data;
|
||||
state.downloadUrl = res.data.data;
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -726,8 +735,7 @@ export default {
|
||||
console.log("props.projectTaskInfo", props.projectTaskInfo);
|
||||
window.open(
|
||||
`${
|
||||
process.env.VUE_APP_PROXY_URL
|
||||
}admin/student/exportHomeWork?currentStageId=${
|
||||
process.env.VUE_APP_BASE_API}/admin/student/exportHomeWork?currentStageId=${
|
||||
props.projectTaskInfo.stageId
|
||||
}&type=${1}&pid=${props.projectTaskInfo.projectId}&taskId=${
|
||||
props.projectTaskInfo.projectTaskId
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
:columns="tablecolumns"
|
||||
:data-source="tabledata"
|
||||
:loading="tableDataTotal === -1 ? true : false"
|
||||
:scroll="{ x: 900 }"
|
||||
:scroll="{ x: 1300 }"
|
||||
:pagination="false"
|
||||
:row-selection="{
|
||||
selectedRowKeys: selectedRowKeys,
|
||||
@@ -122,10 +122,11 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
<div class="btnn">
|
||||
<button class="btn1">取消</button>
|
||||
<button class="btn2">确定</button>
|
||||
</div>
|
||||
</div>-->
|
||||
</div>
|
||||
</a-drawer>
|
||||
|
||||
@@ -204,11 +205,11 @@ export default {
|
||||
value: "0",
|
||||
label: "未开始",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
value: "2",
|
||||
label: "进行中",
|
||||
},
|
||||
// {
|
||||
// id: 2,
|
||||
// value: "2",
|
||||
// label: "进行中",
|
||||
// },
|
||||
{
|
||||
id: 3,
|
||||
value: "1",
|
||||
@@ -257,7 +258,7 @@ export default {
|
||||
dataIndex: "studentName",
|
||||
key: "studentName",
|
||||
width: 50,
|
||||
align: "left",
|
||||
align: "center",
|
||||
className: "h head",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
@@ -393,15 +394,15 @@ export default {
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
dataIndex: "operation",
|
||||
key: "operation",
|
||||
width: 100,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
},
|
||||
// {
|
||||
// title: "操作",
|
||||
// dataIndex: "operation",
|
||||
// key: "operation",
|
||||
// width: 100,
|
||||
// align: "center",
|
||||
// ellipsis: true,
|
||||
// className: "h",
|
||||
// },
|
||||
],
|
||||
exportHomeWorkV: false,
|
||||
downloadUrl: null,
|
||||
@@ -502,9 +503,9 @@ export default {
|
||||
currentStageId: props.projectTaskInfo.stageId,
|
||||
type: 1,
|
||||
pid: props.projectTaskInfo.projectId,
|
||||
status: Number(state.projectName),
|
||||
status: state.projectName,
|
||||
studentName: state.name,
|
||||
currentTaskId: props.projectTaskInfo.projectTaskId,
|
||||
taskId: props.projectTaskInfo.projectTaskId,
|
||||
taskType: props.projectTaskInfo.type,
|
||||
});
|
||||
api
|
||||
@@ -514,9 +515,9 @@ export default {
|
||||
currentStageId: props.projectTaskInfo.stageId,
|
||||
type: 1,
|
||||
pid: props.projectTaskInfo.projectId,
|
||||
status: Number(state.projectName),
|
||||
status: state.projectName,
|
||||
studentName: state.name,
|
||||
currentTaskId: props.projectTaskInfo.projectTaskId,
|
||||
taskId: props.projectTaskInfo.projectTaskId,
|
||||
taskType: props.projectTaskInfo.type,
|
||||
})
|
||||
.then((res) => {
|
||||
@@ -561,15 +562,14 @@ export default {
|
||||
state.tableDataTotal2 = 0;
|
||||
getStudent();
|
||||
};
|
||||
|
||||
|
||||
// 导出数据
|
||||
function exportTaskStu() {
|
||||
window.open(
|
||||
`${
|
||||
process.env.VUE_APP_PROXY_URL
|
||||
}admin/student/exportTaskStudent?currentStageId=${
|
||||
process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${
|
||||
props.projectTaskInfo.stageId
|
||||
}&type=${1}&pid=${props.projectTaskInfo.projectId}&taskType=4`
|
||||
}&type=${1}&pid=${props.projectTaskInfo.projectId}&taskType=${4}`
|
||||
);
|
||||
// api
|
||||
// .exportTaskStudent({
|
||||
@@ -601,12 +601,12 @@ export default {
|
||||
api
|
||||
.exportHomeWork(obj)
|
||||
.then((res) => {
|
||||
console.log("导出作业", JSON.parse(res.data).data);
|
||||
if (JSON.parse(res.data).code === 200) {
|
||||
message.destroy();
|
||||
message.success("导出作业成功");
|
||||
console.log("导出作业", res.data.data);
|
||||
if (res.data.code === 200) {
|
||||
// message.destroy();
|
||||
//message.success("导出作业成功");
|
||||
state.exportHomeWorkV = true;
|
||||
state.downloadUrl = JSON.parse(res.data).data;
|
||||
state.downloadUrl = res.data.data;
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -621,8 +621,7 @@ export default {
|
||||
console.log("props.projectTaskInfo", props.projectTaskInfo);
|
||||
window.open(
|
||||
`${
|
||||
process.env.VUE_APP_PROXY_URL
|
||||
}admin/student/exportHomeWork?currentStageId=${
|
||||
process.env.VUE_APP_BASE_API}/admin/student/exportHomeWork?currentStageId=${
|
||||
props.projectTaskInfo.stageId
|
||||
}&type=${1}&pid=${props.projectTaskInfo.projectId}&taskId=${
|
||||
props.projectTaskInfo.projectTaskId
|
||||
|
||||
@@ -122,10 +122,11 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
<div class="btnn">
|
||||
<button class="btn1" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="closeDrawer">确定</button>
|
||||
</div>
|
||||
</div>-->
|
||||
</div>
|
||||
</a-drawer>
|
||||
</template>
|
||||
@@ -182,11 +183,11 @@ export default {
|
||||
value: "0",
|
||||
label: "未开始",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
value: "2",
|
||||
label: "进行中",
|
||||
},
|
||||
// {
|
||||
// id: 2,
|
||||
// value: "2",
|
||||
// label: "进行中",
|
||||
// },
|
||||
{
|
||||
id: 3,
|
||||
value: "1",
|
||||
@@ -340,7 +341,7 @@ export default {
|
||||
|
||||
// 获取数据
|
||||
function getData() {
|
||||
if (props.datasource.type == 11 || props.datasource.type == 9 || props.datasource.type == 6 || props.datasource.type == 7) {
|
||||
if (props.datasource.type == 11 || props.datasource.type == 9 || props.datasource.type == 6 || props.datasource.type == 7 || props.datasource.type == 3) {
|
||||
// 此处为获取评估学员的接口 - 如后续还有用到此接口的公共任务可直接在if里面加||判断即可
|
||||
console.log("我是传递的查询参数", {
|
||||
pageNo: state.currentPage,
|
||||
@@ -451,8 +452,8 @@ export default {
|
||||
|
||||
// 导出数据
|
||||
function exportTaskStu() {
|
||||
window.open(`${process.env.VUE_APP_PROXY_URL}admin/student/exportTaskStudent?currentStageId=${props.datasource.stageId}&type=${1}&pid=${props.datasource.projectId}&taskId=${props.datasource.projectTaskId}&taskType=${props.datasource.type}`)
|
||||
// window.open(`${process.env.VUE_APP_PROXY_URL}admin/student/exportTaskStudent?pageNo=${state.currentPage}&pageSize=${state.pageSize}¤tStageId=${props.datasource.stageId}&type=${1}&pid=${props.datasource.projectId}&taskId=${props.datasource.projectTaskId}&status=${state.name}&studentName=${state.projectName}`)
|
||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${props.datasource.stageId}&type=${1}&pid=${props.datasource.projectId}&taskId=${props.datasource.projectTaskId}&taskType=${props.datasource.type}`)
|
||||
// window.open(`${process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?pageNo=${state.currentPage}&pageSize=${state.pageSize}¤tStageId=${props.datasource.stageId}&type=${1}&pid=${props.datasource.projectId}&taskId=${props.datasource.projectTaskId}&status=${state.name}&studentName=${state.projectName}`)
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
@@ -121,10 +121,11 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
<div class="btnn">
|
||||
<button class="btn1" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="closeDrawer">确定</button>
|
||||
</div>
|
||||
</div>-->
|
||||
</div>
|
||||
</a-drawer>
|
||||
</template>
|
||||
@@ -183,10 +184,10 @@ export default {
|
||||
label: "未开始",
|
||||
},
|
||||
//{
|
||||
// id: 2,
|
||||
//value: "2",
|
||||
// label: "进行中",
|
||||
// },
|
||||
// id: 2,
|
||||
// value: "2",
|
||||
// label: "进行中",
|
||||
// },
|
||||
{
|
||||
id: 3,
|
||||
value: "1",
|
||||
@@ -343,7 +344,7 @@ export default {
|
||||
|
||||
// 获取数据
|
||||
function getData() {
|
||||
if (props.datasource.type == 11 || props.datasource.type == 9 || props.datasource.type == 6 || props.datasource.type == 7) {
|
||||
if (props.datasource.type == 11 || props.datasource.type == 9 || props.datasource.type == 6 || props.datasource.type == 7 || props.datasource.type == 3) {
|
||||
// 此处为获取评估学员的接口 - 如后续还有用到此接口的公共任务可直接在if里面加||判断即可
|
||||
console.log("我是传递的查询参数", {
|
||||
pageNo: state.currentPage,
|
||||
@@ -453,9 +454,9 @@ export default {
|
||||
|
||||
// 导出数据
|
||||
function exportTaskStu() {
|
||||
console.log(`${process.env.VUE_APP_PROXY_URL}admin/student/exportTaskStudent?currentStageId=${props.datasource.chapterId}&type=${2}&pid=${props.datasource.routerId}&taskId=${props.datasource.routerTaskId}&taskType=${props.datasource.type}`)
|
||||
window.open(`${process.env.VUE_APP_PROXY_URL}admin/student/exportTaskStudent?currentStageId=${props.datasource.chapterId}&type=${2}&pid=${props.datasource.routerId}&taskId=${props.datasource.routerTaskId}&taskType=${props.datasource.type}`)
|
||||
// window.open(`${process.env.VUE_APP_PROXY_URL}admin/student/exportTaskStudent?pageNo=${state.currentPage}&pageSize=${state.pageSize}¤tStageId=${props.datasource.chapterId}&type=${2}&pid=${props.datasource.routerId}&taskId=${props.datasource.routerTaskId}&status=${state.name}&studentName=${state.projectName}`)
|
||||
console.log(`${process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${props.datasource.chapterId}&type=${2}&pid=${props.datasource.routerId}&taskId=${props.datasource.routerTaskId}&taskType=${props.datasource.type}`)
|
||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${props.datasource.chapterId}&type=${2}&pid=${props.datasource.routerId}&taskId=${props.datasource.routerTaskId}&taskType=${props.datasource.type}`)
|
||||
// window.open(`${process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?pageNo=${state.currentPage}&pageSize=${state.pageSize}¤tStageId=${props.datasource.chapterId}&type=${2}&pid=${props.datasource.routerId}&taskId=${props.datasource.routerTaskId}&status=${state.name}&studentName=${state.projectName}`)
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
@@ -104,10 +104,11 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
<div class="btnn">
|
||||
<button class="btn1" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="closeDrawer">确定</button>
|
||||
</div>
|
||||
</div>-->
|
||||
</div>
|
||||
</a-drawer>
|
||||
</template>
|
||||
@@ -164,11 +165,11 @@ export default {
|
||||
value: "0",
|
||||
label: "未开始",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
value: "2",
|
||||
label: "进行中",
|
||||
},
|
||||
//{
|
||||
// id: 2,
|
||||
// value: "2",
|
||||
// label: "进行中",
|
||||
// },
|
||||
{
|
||||
id: 3,
|
||||
value: "1",
|
||||
@@ -404,9 +405,9 @@ export default {
|
||||
|
||||
// 导出数据
|
||||
function exportTaskStu() {
|
||||
console.log(`${process.env.VUE_APP_PROXY_URL}admin/student/exportTaskStudent?currentStageId=${props.datasource.chapterId}&type=${2}&pid=${props.datasource.routerId}&taskId=${props.datasource.routerTaskId}&taskType=${props.datasource.type}`)
|
||||
window.open(`${process.env.VUE_APP_PROXY_URL}admin/student/exportTaskStudent?currentStageId=${props.datasource.chapterId}&type=${2}&pid=${props.datasource.routerId}&taskId=${props.datasource.routerTaskId}&taskType=${props.datasource.type}`)
|
||||
// window.open(`${process.env.VUE_APP_PROXY_URL}admin/student/exportTaskStudent?pageNo=${state.currentPage}&pageSize=${state.pageSize}¤tStageId=${props.datasource.chapterId}&type=${2}&pid=${props.datasource.routerId}&taskId=${props.datasource.routerTaskId}&status=${state.name}&studentName=${state.projectName}`)
|
||||
console.log(`${process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${props.datasource.chapterId}&type=${2}&pid=${props.datasource.routerId}&taskId=${props.datasource.routerTaskId}&taskType=${props.datasource.type}`)
|
||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${props.datasource.chapterId}&type=${2}&pid=${props.datasource.routerId}&taskId=${props.datasource.routerTaskId}&taskType=${props.datasource.type}`)
|
||||
// window.open(`${process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?pageNo=${state.currentPage}&pageSize=${state.pageSize}¤tStageId=${props.datasource.chapterId}&type=${2}&pid=${props.datasource.routerId}&taskId=${props.datasource.routerTaskId}&status=${state.name}&studentName=${state.projectName}`)
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
@@ -107,10 +107,11 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
<div class="btnn">
|
||||
<button class="btn1" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="closeDrawer">确定</button>
|
||||
</div>
|
||||
</div>-->
|
||||
</div>
|
||||
<!-- 导出成绩抽屉 -->
|
||||
<EScore v-model:eScorevisible="eScorevisible" />
|
||||
@@ -433,7 +434,7 @@ export default {
|
||||
|
||||
{/* 导出数据 */}
|
||||
function exportData() {
|
||||
window.open(`${process.env.VUE_APP_PROXY_URL}admin/exam/manage/exportExam?chapterId=${props.datasource.chapterId}&targetId=${props.datasource.routerId}&taskId=${props.datasource.courseId}&type=${1}`)
|
||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/exam/manage/exportExam?chapterId=${props.datasource.chapterId}&targetId=${props.datasource.routerId}&taskId=${props.datasource.courseId}&type=${1}`)
|
||||
{/* api.ExportExam({
|
||||
"chapterId": props.datasource.chapterId,
|
||||
"targetId": props.datasource.routerId,
|
||||
|
||||
@@ -24,7 +24,9 @@
|
||||
~
|
||||
{{ datasource && datasource.endTime ? datasource.endTime : "-" }}
|
||||
</div>
|
||||
<div class="endtime" style="margin-left: 64px">签到时间:14:00</div>
|
||||
<div class="endtime" style="margin-left: 64px">
|
||||
允许签到时段:{{ beginTime }}~{{ endTime }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="search">
|
||||
@@ -101,7 +103,7 @@
|
||||
<div class="wz">导出数据</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="line">
|
||||
<!-- <div class="line">
|
||||
<div class="inline">
|
||||
<div class="left">
|
||||
<div class="img"></div>
|
||||
@@ -114,7 +116,7 @@
|
||||
<div class="right" @click="clearLine">清空</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="pad"></div> -->
|
||||
<div class="pad"></div> -->
|
||||
|
||||
<div class="tableBox" style="margin-top: 30px">
|
||||
<a-table
|
||||
@@ -165,10 +167,11 @@
|
||||
/>
|
||||
</div> -->
|
||||
</div>
|
||||
<!--
|
||||
<div class="btnn">
|
||||
<button class="btn1" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="closeDrawer">确定</button>
|
||||
</div>
|
||||
</div>-->
|
||||
</div>
|
||||
</a-drawer>
|
||||
<!-- 二维码签到弹窗 -->
|
||||
@@ -200,11 +203,11 @@
|
||||
<span>您确定要批量签到吗</span>
|
||||
</div>
|
||||
<div class="del_btnbox">
|
||||
<div class="del_btn btn1">
|
||||
<div class="btnText" @click="closeCopyModal">取消</div>
|
||||
<div class="del_btn btn1" @click="closeCopyModal">
|
||||
<div class="btnText">取消</div>
|
||||
</div>
|
||||
<div class="del_btn btn2">
|
||||
<div class="btnText" @click="batchSign">确定</div>
|
||||
<div class="del_btn btn2" @click="batchSign">
|
||||
<div class="btnText">确定</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -228,6 +231,7 @@ import SignQR from "../SignQR.vue";
|
||||
import * as api from "../../../api/index1";
|
||||
import TwoDimensionalCode from "../../../components/TwoDimensionalCode";
|
||||
import { message } from "ant-design-vue";
|
||||
import { toDate } from "../../../api/method";
|
||||
export default {
|
||||
name: "FaceManage",
|
||||
components: {
|
||||
@@ -335,10 +339,14 @@ export default {
|
||||
codeType: null,
|
||||
codeIndex: null,
|
||||
codeInfo: null, //二维码内容
|
||||
beginTime: null, //签到开始时间
|
||||
endTime: null, //签到结束时间
|
||||
});
|
||||
const afterVisibleChange = (bol) => {
|
||||
if (bol == true) {
|
||||
getStudent();
|
||||
console.log("1111");
|
||||
isSignClick();
|
||||
}
|
||||
};
|
||||
//考勤
|
||||
@@ -366,12 +374,12 @@ export default {
|
||||
};
|
||||
//批量签到
|
||||
const showCopyModal = () => {
|
||||
state.copyModal = true;
|
||||
if (state.selectedStudents.length === 0) {
|
||||
message.destroy();
|
||||
message.warning("请选择学员");
|
||||
return;
|
||||
}
|
||||
state.copyModal = true;
|
||||
};
|
||||
const closeCopyModal = () => {
|
||||
state.copyModal = false;
|
||||
@@ -388,11 +396,16 @@ export default {
|
||||
type: 2,
|
||||
};
|
||||
api
|
||||
.attendanceSign(obj, (res) => {
|
||||
.attendanceSign(obj)
|
||||
.then((res) => {
|
||||
console.log("签到结果", res, obj);
|
||||
if (res.data.code === 200) {
|
||||
message.destroy();
|
||||
message.success("批量签到成功");
|
||||
state.copyModal = false;
|
||||
state.tableDataTotal = -1;
|
||||
state.selectedRowKeys = [];
|
||||
state.selectedStudents = [];
|
||||
getStudent();
|
||||
}
|
||||
})
|
||||
@@ -506,12 +519,19 @@ export default {
|
||||
},
|
||||
{
|
||||
title: "签到时间",
|
||||
dataIndex: "cur",
|
||||
key: "cur",
|
||||
dataIndex: "signTime",
|
||||
key: "signTime",
|
||||
width: 110,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span>{text.record.signTime ? text.record.signTime : "-"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
// {
|
||||
// title: "签退时间",
|
||||
@@ -523,21 +543,42 @@ export default {
|
||||
// },
|
||||
{
|
||||
title: "考勤",
|
||||
dataIndex: "time",
|
||||
key: "time",
|
||||
dataIndex: "signStatus",
|
||||
key: "signStatus ",
|
||||
width: 50,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
// console.log("text", text);
|
||||
return (
|
||||
<div class="racona">
|
||||
<span>
|
||||
{text.record.signStatus
|
||||
? "签到"
|
||||
: text.record.leaveStatus
|
||||
? "请假"
|
||||
: "-"}
|
||||
</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "签到状态",
|
||||
dataIndex: "state",
|
||||
key: "state",
|
||||
dataIndex: "signStatus",
|
||||
key: "signStatus",
|
||||
width: 50,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span>{text.record.signStatus ? "正常" : "异常"}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "考勤情况",
|
||||
@@ -550,71 +591,76 @@ export default {
|
||||
// scopedSlots: { customRender: "action" }, //引入的插槽
|
||||
|
||||
customRender: (text) => {
|
||||
// console.log("text.record.signStatus", text.record.signStatus);
|
||||
return (
|
||||
<div class="opa">
|
||||
<a-radio-group name="radioGroup">
|
||||
<a-radio
|
||||
value="1"
|
||||
checked={text.record.signIn}
|
||||
onChange={(e) => {
|
||||
console.log("点击签到", e);
|
||||
let obj = {
|
||||
courseId: Number(props.datasource.courseId),
|
||||
// projectId: 0,
|
||||
routerId: Number(props.datasource.routerId),
|
||||
ids: [text.record.studentId],
|
||||
studentName: text.record.studentName,
|
||||
taskId: Number(props.datasource.routerTaskId),
|
||||
taskType: Number(props.datasource.type),
|
||||
type: 2,
|
||||
};
|
||||
api
|
||||
.attendanceSign(obj, (res) => {
|
||||
console.log("签到结果", res, obj, e);
|
||||
if (res.data.code === 200) {
|
||||
text.record.signIn = true;
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("签到失败", err, obj);
|
||||
text.record.signIn = false;
|
||||
});
|
||||
}}
|
||||
>
|
||||
签到
|
||||
</a-radio>
|
||||
<a-radio
|
||||
value="2"
|
||||
checked={text.record.leave}
|
||||
onChange={(e) => {
|
||||
console.log("点击请假", e, props.datasource);
|
||||
let obj = {
|
||||
courseId: Number(props.datasource.courseId),
|
||||
// projectId: 0,
|
||||
routerId: Number(props.datasource.routerId),
|
||||
ids: [text.record.studentId],
|
||||
studentName: text.record.studentName,
|
||||
taskId: Number(props.datasource.routerTaskId),
|
||||
taskType: Number(props.datasource.type),
|
||||
type: 2,
|
||||
// userName: "",
|
||||
};
|
||||
api
|
||||
.attendanceLeave(obj, (res) => {
|
||||
console.log("请假结果", res, obj, e);
|
||||
if (res.data.code === 200) {
|
||||
text.record.leave = true;
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("请假结果", err, obj);
|
||||
text.record.leave = false;
|
||||
});
|
||||
}}
|
||||
>
|
||||
请假
|
||||
</a-radio>
|
||||
</a-radio-group>
|
||||
<a-radio
|
||||
value="1"
|
||||
checked={text.record.signStatus}
|
||||
onChange={(e) => {
|
||||
console.log("点击签到", e);
|
||||
let obj = {
|
||||
courseId: Number(props.datasource.courseId),
|
||||
// projectId: 0,
|
||||
routerId: Number(props.datasource.routerId),
|
||||
ids: [text.record.studentId],
|
||||
studentName: text.record.studentName,
|
||||
taskId: Number(props.datasource.routerTaskId),
|
||||
taskType: Number(props.datasource.type),
|
||||
type: 2,
|
||||
};
|
||||
api
|
||||
.attendanceSign(obj)
|
||||
.then((res) => {
|
||||
console.log("签到结果", res, obj, e);
|
||||
if (res.data.code === 200) {
|
||||
text.record.signStatus = true;
|
||||
state.tableDataTotal = -1;
|
||||
getStudent();
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("签到失败", err, obj);
|
||||
text.record.signStatus = false;
|
||||
});
|
||||
}}
|
||||
>
|
||||
签到
|
||||
</a-radio>
|
||||
<a-radio
|
||||
value="2"
|
||||
checked={text.record.leaveStatus}
|
||||
onChange={(e) => {
|
||||
console.log("点击请假", e, props.datasource);
|
||||
let obj = {
|
||||
courseId: Number(props.datasource.courseId),
|
||||
// projectId: 0,
|
||||
routerId: Number(props.datasource.routerId),
|
||||
ids: [text.record.studentId],
|
||||
studentName: text.record.studentName,
|
||||
taskId: Number(props.datasource.routerTaskId),
|
||||
taskType: Number(props.datasource.type),
|
||||
type: 2,
|
||||
// userName: "",
|
||||
};
|
||||
api
|
||||
.attendanceLeave(obj)
|
||||
.then((res) => {
|
||||
console.log("请假结果", res, obj, e);
|
||||
if (res.data.code === 200) {
|
||||
text.record.leaveStatus = true;
|
||||
state.tableDataTotal = -1;
|
||||
getStudent();
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("请假结果", err, obj);
|
||||
text.record.leaveStatus = false;
|
||||
});
|
||||
}}
|
||||
>
|
||||
请假
|
||||
</a-radio>
|
||||
|
||||
{/**
|
||||
<a-checkbox
|
||||
@@ -702,7 +748,7 @@ export default {
|
||||
|
||||
//获取学员
|
||||
const getStudent = () => {
|
||||
console.log("我是传递的查询参数", props.datasource, {
|
||||
console.log("我是传递的查询参数222", props.datasource, {
|
||||
pageNo: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
currentStageId: props.datasource.chapterId,
|
||||
@@ -710,7 +756,8 @@ export default {
|
||||
pid: props.datasource.routerId,
|
||||
// status: Number(state.name),
|
||||
studentName: state.name,
|
||||
currentTaskId: props.datasource.routerTaskId,
|
||||
taskId: props.datasource.routerTaskId,
|
||||
taskType: props.datasource.type,
|
||||
});
|
||||
api
|
||||
.AssessmentManagementMessage({
|
||||
@@ -721,7 +768,7 @@ export default {
|
||||
pid: props.datasource.routerId,
|
||||
// status: Number(state.name),
|
||||
studentName: state.name,
|
||||
currentTaskId: props.datasource.routerTaskId,
|
||||
taskId: props.datasource.routerTaskId,
|
||||
taskType: props.datasource.type,
|
||||
})
|
||||
.then((res) => {
|
||||
@@ -770,8 +817,8 @@ export default {
|
||||
console.log("props.datasource", props.datasource);
|
||||
window.open(
|
||||
`${
|
||||
process.env.VUE_APP_PROXY_URL
|
||||
}admin/student/exportTaskStudent?currentStageId=${
|
||||
process.env.VUE_APP_BASE_API
|
||||
}/admin/student/exportTaskStudent?currentStageId=${
|
||||
props.datasource.chapterId
|
||||
}&type=${2}&pid=${props.datasource.routerId}&taskType=2&thirdType=2`
|
||||
);
|
||||
@@ -805,8 +852,8 @@ export default {
|
||||
}&type=${2}`,
|
||||
};
|
||||
console.log("codeInfo", state.codeInfo);
|
||||
state.codeIndex = 1;
|
||||
state.codeType = 2;
|
||||
state.codeIndex = 0;
|
||||
state.codeType = 1;
|
||||
};
|
||||
|
||||
{
|
||||
@@ -822,6 +869,34 @@ export default {
|
||||
}
|
||||
};
|
||||
|
||||
// 计算签到时间
|
||||
const isSignClick = () => {
|
||||
console.log("计算签到时间", props.datasource);
|
||||
let beginTime = new Date(props.datasource.startTime).getTime();
|
||||
let endTime = !props.datasource.afterStart
|
||||
? new Date(props.datasource.endTime).getTime()
|
||||
: new Date(props.datasource.startTime).getTime();
|
||||
|
||||
if (props.datasource.beforeStart && props.datasource.afterStart) {
|
||||
//有开始前有开始后
|
||||
beginTime = beginTime - props.datasource.beforeStart * 60 * 1000;
|
||||
endTime = endTime + props.datasource.afterStart * 60 * 1000;
|
||||
console.log("1111", beginTime, endTime);
|
||||
} else if (props.datasource.beforeStart && !props.datasource.afterStart) {
|
||||
//只有开始前无开始后
|
||||
beginTime = beginTime - props.datasource.beforeStart * 60 * 1000;
|
||||
console.log("11112222", beginTime);
|
||||
} else if (!props.datasource.beforeStart && props.datasource.afterStart) {
|
||||
//无开始前有开始后
|
||||
endTime = endTime + props.datasource.afterStart * 60 * 1000;
|
||||
console.log("1111333", endTime);
|
||||
}
|
||||
|
||||
state.beginTime = toDate(beginTime / 1000, "Y/M/D h:m:s");
|
||||
state.endTime = toDate(endTime / 1000, "Y/M/D h:m:s");
|
||||
console.log("beginTime,endTime", state.beginTime, state.endTime);
|
||||
};
|
||||
|
||||
return {
|
||||
...toRefs(state),
|
||||
selectProjectName,
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
<div class="wz">导出作业</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="line">
|
||||
<!-- <div class="line">
|
||||
<div class="inline">
|
||||
<div class="left">
|
||||
<div class="img"></div>
|
||||
@@ -93,14 +93,14 @@
|
||||
</div>
|
||||
<div class="right" @click="clearLine">清空</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>-->
|
||||
<div class="tableBox" style="margin-top: 20px; margin-bottom: 100px">
|
||||
<a-table
|
||||
style="border: 1px solid #f2f6fe"
|
||||
:columns="tablecolumns"
|
||||
:data-source="tabledata"
|
||||
:loading="tableDataTotal === -1 ? true : false"
|
||||
:scroll="{ x: 900 }"
|
||||
:scroll="{ x: 1300 }"
|
||||
:pagination="false"
|
||||
:row-selection="{
|
||||
selectedRowKeys: selectedRowKeys,
|
||||
@@ -123,10 +123,10 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnn">
|
||||
<!-- <div class="btnn">
|
||||
<button class="btn1" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="closeDrawer">确定</button>
|
||||
</div>
|
||||
</div>-->
|
||||
</div>
|
||||
</a-drawer>
|
||||
<!-- 批量标注完成 -->
|
||||
@@ -145,7 +145,12 @@
|
||||
v-model:getStudent="getStudent"
|
||||
/>
|
||||
<!-- 录入成绩抽屉 -->
|
||||
<entry-scores v-model:Evisible="Evisible" />
|
||||
<EScore
|
||||
v-model:eScorevisible="Evisible"
|
||||
:type="2"
|
||||
:id="datasource?.routerTaskId"
|
||||
v-model:searchTaskList="searchTaskList"
|
||||
/>
|
||||
<!-- 查看作业抽屉 -->
|
||||
<CKWork v-model:CWvisible="CWvisible" />
|
||||
<!-- 查看答卷抽屉 -->
|
||||
@@ -163,14 +168,14 @@ import { message } from "ant-design-vue";
|
||||
import ASOver from "../AllStuOver.vue";
|
||||
import CKWork from "../CheckWork.vue";
|
||||
import CQue from "../CheckQue.vue";
|
||||
import EntryScores from "../EntryScores.vue";
|
||||
import EScore from "../ExportScore.vue";
|
||||
// import * as api from "../../../api/index";
|
||||
import * as api from "../../../api/index1";
|
||||
import ExportHomeWork from "../../Modals/ExportHomeWork.vue";
|
||||
export default {
|
||||
name: "RouterFaceTeachManage",
|
||||
components: {
|
||||
EntryScores,
|
||||
EScore,
|
||||
CKWork,
|
||||
CQue,
|
||||
ASOver,
|
||||
@@ -218,11 +223,11 @@ export default {
|
||||
value: "1",
|
||||
label: "已完成",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
value: "2",
|
||||
label: "进行中",
|
||||
},
|
||||
//{
|
||||
// id: 2,
|
||||
// value: "2",
|
||||
// label: "进行中",
|
||||
// },
|
||||
],
|
||||
selectedRowKeys: [],
|
||||
|
||||
@@ -424,15 +429,15 @@ export default {
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
dataIndex: "operation",
|
||||
key: "operation",
|
||||
width: 100,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
},
|
||||
// {
|
||||
// title: "操作",
|
||||
// dataIndex: "operation",
|
||||
// key: "operation",
|
||||
// width: 100,
|
||||
// align: "center",
|
||||
// ellipsis: true,
|
||||
// className: "h",
|
||||
// },
|
||||
],
|
||||
exportHomeWorkV: false,
|
||||
downloadUrl: null,
|
||||
@@ -617,10 +622,9 @@ export default {
|
||||
console.log("props.datasource", props.datasource);
|
||||
window.open(
|
||||
`${
|
||||
process.env.VUE_APP_PROXY_URL
|
||||
}admin/student/exportTaskStudent?currentStageId=${
|
||||
process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${
|
||||
props.datasource.chapterId
|
||||
}&type=${2}&pid=${props.datasource.routerId}&taskType=2`
|
||||
}&type=${2}&pid=${props.datasource.routerId}&taskType=${1}`
|
||||
);
|
||||
// api
|
||||
// .exportTaskStudent({
|
||||
@@ -653,12 +657,12 @@ export default {
|
||||
api
|
||||
.exportHomeWork(obj)
|
||||
.then((res) => {
|
||||
console.log("导出作业", JSON.parse(res.data).data);
|
||||
if (JSON.parse(res.data).code === 200) {
|
||||
message.destroy();
|
||||
message.success("导出作业成功");
|
||||
console.log("导出作业", res.data.data);
|
||||
if (res.data.code === 200) {
|
||||
// message.destroy();
|
||||
// message.success("导出作业成功");
|
||||
state.exportHomeWorkV = true;
|
||||
state.downloadUrl = JSON.parse(res.data).data;
|
||||
state.downloadUrl = res.data.data;
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -673,8 +677,7 @@ export default {
|
||||
console.log("props.datasource", props.datasource);
|
||||
window.open(
|
||||
`${
|
||||
process.env.VUE_APP_PROXY_URL
|
||||
}admin/student/exportHomeWork?currentStageId=${
|
||||
process.env.VUE_APP_BASE_API}/admin/student/exportHomeWork?currentStageId=${
|
||||
props.datasource.chapterId
|
||||
}&type=${2}&pid=${props.datasource.routerId}&taskId=${
|
||||
props.datasource.routerTaskId
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
:columns="tablecolumns"
|
||||
:data-source="tabledata"
|
||||
:loading="tableDataTotal === -1 ? true : false"
|
||||
:scroll="{ x: 900 }"
|
||||
:scroll="{ x: 1300 }"
|
||||
:pagination="false"
|
||||
:row-selection="{
|
||||
selectedRowKeys: selectedRowKeys,
|
||||
@@ -117,10 +117,11 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
<div class="btnn">
|
||||
<button class="btn1" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="closeDrawer">确定</button>
|
||||
</div>
|
||||
</div>-->
|
||||
</div>
|
||||
</a-drawer>
|
||||
|
||||
@@ -199,11 +200,11 @@ export default {
|
||||
value: "0",
|
||||
label: "未开始",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
value: "2",
|
||||
label: "进行中",
|
||||
},
|
||||
// {
|
||||
// id: 2,
|
||||
// value: "2",
|
||||
// label: "进行中",
|
||||
//},
|
||||
{
|
||||
id: 3,
|
||||
value: "1",
|
||||
@@ -251,7 +252,7 @@ export default {
|
||||
dataIndex: "studentName",
|
||||
key: "studentName",
|
||||
width: 50,
|
||||
align: "left",
|
||||
align: "center",
|
||||
className: "h",
|
||||
ellipsis: true,
|
||||
customRender: (text) => {
|
||||
@@ -322,26 +323,7 @@ export default {
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "所属小组",
|
||||
dataIndex: "studentOrgName",
|
||||
key: "studentOrgName",
|
||||
width: 60,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
customRender: (text) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
<span>
|
||||
{text.record.studentOrgName
|
||||
? text.record.studentOrgName
|
||||
: "-"}
|
||||
</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
title: "成绩",
|
||||
dataIndex: "workScore",
|
||||
@@ -406,15 +388,15 @@ export default {
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
dataIndex: "operation",
|
||||
key: "operation",
|
||||
width: 100,
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
className: "h",
|
||||
},
|
||||
// {
|
||||
// title: "操作",
|
||||
// dataIndex: "operation",
|
||||
// key: "operation",
|
||||
// width: 100,
|
||||
// align: "center",
|
||||
// ellipsis: true,
|
||||
// className: "h",
|
||||
// },
|
||||
],
|
||||
exportHomeWorkV: false,
|
||||
downloadUrl: null,
|
||||
@@ -576,10 +558,9 @@ export default {
|
||||
console.log("props.datasource", props.datasource);
|
||||
window.open(
|
||||
`${
|
||||
process.env.VUE_APP_PROXY_URL
|
||||
}admin/student/exportTaskStudent?currentStageId=${
|
||||
process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${
|
||||
props.datasource.chapterId
|
||||
}&type=${2}&pid=${props.datasource.routerId}&taskType=4`
|
||||
}&type=${2}&pid=${props.datasource.routerId}&taskType=${4}`
|
||||
);
|
||||
// api
|
||||
// .exportTaskStudent({
|
||||
@@ -611,12 +592,12 @@ export default {
|
||||
api
|
||||
.exportHomeWork(obj)
|
||||
.then((res) => {
|
||||
console.log("导出作业", JSON.parse(res.data).data);
|
||||
if (JSON.parse(res.data).code === 200) {
|
||||
message.destroy();
|
||||
message.success("导出作业成功");
|
||||
console.log("导出作业", res.data.data);
|
||||
if (res.data.code === 200) {
|
||||
// message.destroy();
|
||||
// message.success("导出作业成功");
|
||||
state.exportHomeWorkV = true;
|
||||
state.downloadUrl = JSON.parse(res.data).data;
|
||||
state.downloadUrl = res.data.data;
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -631,8 +612,7 @@ export default {
|
||||
console.log("props.datasource", props.datasource);
|
||||
window.open(
|
||||
`${
|
||||
process.env.VUE_APP_PROXY_URL
|
||||
}admin/student/exportHomeWork?currentStageId=${
|
||||
process.env.VUE_APP_BASE_API}/admin/student/exportHomeWork?currentStageId=${
|
||||
props.datasource.chapterId
|
||||
}&type=${2}&pid=${props.datasource.routerId}&taskId=${
|
||||
props.datasource.routerTaskId
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col v-if="type === 1">
|
||||
<!-- <a-col v-if="type === 1">
|
||||
<a-form-item title="小组名称:">
|
||||
<a-input
|
||||
class="cus-input"
|
||||
@@ -23,6 +23,7 @@
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
-->
|
||||
<a-col v-if="type === 1">
|
||||
<a-form-item title="部门:">
|
||||
<div class="select in" style="width: 270px">
|
||||
@@ -89,7 +90,7 @@
|
||||
</a-col>
|
||||
<!-- 新加导入学员 批量换组 导出学习信息 -->
|
||||
<a-col :span="1.5" v-if="type === 1 || type === 2">
|
||||
<a-button class="cus-btn white">
|
||||
<a-button class="cus-btn white" @click="showImpStu">
|
||||
<template #icon
|
||||
><img
|
||||
style="margin-right: 10px"
|
||||
@@ -98,9 +99,10 @@
|
||||
导入学员
|
||||
</a-button>
|
||||
</a-col>
|
||||
<!--
|
||||
<a-col :span="1.5" v-if="type === 1">
|
||||
<a-button class="cus-btn white"> 批量换组 </a-button>
|
||||
</a-col>
|
||||
</a-col>-->
|
||||
<a-col :span="1.5" v-if="type === 1">
|
||||
<a-button class="cus-btn white" @click="exportTaskStu">
|
||||
导出学习信息
|
||||
@@ -199,7 +201,7 @@
|
||||
<a-col>
|
||||
<slot name="extension" v-bind:data="{ record }"></slot>
|
||||
</a-col>
|
||||
<!-- 新加 换组 通过 拒绝-->
|
||||
<!-- 新加 换组 通过 拒绝
|
||||
<a-col v-if="type === 1">
|
||||
<div
|
||||
style="
|
||||
@@ -213,6 +215,7 @@
|
||||
换组
|
||||
</div>
|
||||
</a-col>
|
||||
-->
|
||||
<a-col v-if="type === 3">
|
||||
<div
|
||||
style="
|
||||
@@ -351,6 +354,16 @@
|
||||
v-model:exportHomeWorkV="exportHomeWorkV"
|
||||
:downloadUrl="downloadUrl"
|
||||
/>
|
||||
|
||||
<!-- 导入学员抽屉 -->
|
||||
<!-- :courseId="projectTaskInfo.courseId"
|
||||
:courseType="2" -->
|
||||
<imp-stu
|
||||
v-model:AddImpStuvisible="AddImpStuvisible"
|
||||
@AddImpStuvisibleClose="AddImpStuvisibleClose"
|
||||
:courseId="id"
|
||||
:courseType="type === 1 ? 3 : 4"
|
||||
/>
|
||||
</template>
|
||||
<script setup>
|
||||
import { computed, defineProps, onMounted, ref, watch } from "vue";
|
||||
@@ -364,6 +377,7 @@ import EScore from "../drawers/ExportScore.vue";
|
||||
import OrgClass from "@/components/project/OrgClass";
|
||||
import ExportHomeWork from "../Modals/ExportHomeWork.vue";
|
||||
import * as api from "../../api/index1";
|
||||
import ImpStu from "../drawers/AddLevelImportStu";
|
||||
const props = defineProps({
|
||||
type: Number,
|
||||
id: String,
|
||||
@@ -492,8 +506,7 @@ function exportTaskStu() {
|
||||
console.log("props.datasource", props.datasource);
|
||||
window.open(
|
||||
`${
|
||||
process.env.VUE_APP_PROXY_URL
|
||||
}admin/student/exportTaskStudent?type=${1}&pid=${props.id}&taskType=0`
|
||||
process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?type=${1}&pid=${props.id}&taskType=0`
|
||||
);
|
||||
}
|
||||
|
||||
@@ -672,19 +685,12 @@ const exportHomeWorkShow = () => {
|
||||
api
|
||||
.exportHomeWork(obj)
|
||||
.then((res) => {
|
||||
console.log("导出作业", JSON.parse(res.data).data);
|
||||
if (JSON.parse(res.data).code === 200) {
|
||||
message.destroy();
|
||||
message.success("导出作业成功");
|
||||
exportHomeWorkV.value = true;
|
||||
downloadUrl.value = JSON.parse(res.data).data;
|
||||
}
|
||||
console.log("导出作业", res.data.data);
|
||||
//message.destroy();
|
||||
// message.success("导出作业成功");
|
||||
exportHomeWorkV.value = true;
|
||||
downloadUrl.value = res.data.data;
|
||||
})
|
||||
.catch((err) => {
|
||||
message.destroy();
|
||||
message.error("导出作业失败");
|
||||
console.log("导出作业失败", err);
|
||||
});
|
||||
};
|
||||
// //导出作业
|
||||
// const exportHomeWork = () => {
|
||||
@@ -698,8 +704,7 @@ const exportHomeWorkShow = () => {
|
||||
const exportStu = () => {
|
||||
window.open(
|
||||
`${
|
||||
process.env.VUE_APP_PROXY_URL
|
||||
}admin/student/exportTaskStudent?type=${3}&pid=${props.id}&thirdType=2`
|
||||
process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?type=${3}&pid=${props.id}&thirdType=2`
|
||||
);
|
||||
};
|
||||
|
||||
@@ -728,6 +733,21 @@ const updateStatus = (status, id) => {
|
||||
console.log("批量更新学员状态失败", err);
|
||||
});
|
||||
};
|
||||
|
||||
//导入学员
|
||||
const AddImpStuvisible = ref(false); //导入学员抽屉
|
||||
const showImpStu = () => {
|
||||
AddImpStuvisible.value = true;
|
||||
};
|
||||
const AddImpStuvisibleClose = (isget) => {
|
||||
console.log("关闭了导入学员弹框", isget);
|
||||
{
|
||||
/* 此处操作重新获取学员列表数据 */
|
||||
}
|
||||
if (isget) {
|
||||
getStuList();
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.TableStudent {
|
||||
|
||||
@@ -80,12 +80,12 @@
|
||||
<div class="timemanag" style="margin-top: 12px">
|
||||
{{values.createTime?values.createTime:'-'}} {{values.createName?values.createName:'-'}}
|
||||
</div>
|
||||
<div class="timemanag">来源:{{values.source?values.source:'-'}}</div>
|
||||
<div class="timemanag">来源:{{{1:'项目',2:'路径图',3:'开课'}[values.type]+'-'+values.name}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="itemdown">
|
||||
</div>
|
||||
<div class="itemdown">
|
||||
<div class="download" @click="downLoadFile(values)">下载</div>
|
||||
<div class="delete" @click="removeFile(values)">删除</div>
|
||||
</div>
|
||||
@@ -181,7 +181,7 @@ export default {
|
||||
function downLoadFile(data) {
|
||||
console.log(data)
|
||||
window.open(state.locationHref + data.url)
|
||||
}
|
||||
}
|
||||
// 删除文件
|
||||
function removeFile(data) {
|
||||
console.log(data)
|
||||
@@ -204,14 +204,14 @@ export default {
|
||||
// 搜索
|
||||
function searchDownloadList() {
|
||||
getData()
|
||||
}
|
||||
}
|
||||
|
||||
// 重置
|
||||
function reseatDownloadList() {
|
||||
state.name = "";
|
||||
state.currentPage = 1;
|
||||
getData()
|
||||
}
|
||||
}
|
||||
|
||||
// 分页
|
||||
//分页
|
||||
|
||||
@@ -94,11 +94,11 @@
|
||||
<div class="btns">
|
||||
<!-- 2022-11-30注释 后面放开 -->
|
||||
<div
|
||||
class="btn btn3"
|
||||
class="btn btn2"
|
||||
@click="openMessage"
|
||||
style="margin-right: 14px"
|
||||
>
|
||||
<div class="search"></div>
|
||||
<div class="img2"></div>
|
||||
<div class="btnText">导出</div>
|
||||
</div>
|
||||
<div class="btn btn3" @click="of_hShow">
|
||||
@@ -1362,10 +1362,10 @@
|
||||
>
|
||||
删除
|
||||
</a-menu-item>
|
||||
<!--新加 二维码 -->
|
||||
<!--新加 二维码
|
||||
<a-menu-item @click="qrcodeVisible(record, 1)">
|
||||
二维码
|
||||
</a-menu-item>
|
||||
</a-menu-item>-->
|
||||
</a-menu>
|
||||
</template>
|
||||
<div class="fb" style="margin-left: -20px">
|
||||
@@ -3067,14 +3067,7 @@ export default defineComponent({
|
||||
dataIndex: "evastatus",
|
||||
key: "8",
|
||||
align: "center",
|
||||
customRender: ({ record }) => {
|
||||
switch (String(record.evalStatus)) {
|
||||
case "0":
|
||||
return "未评估";
|
||||
case "1":
|
||||
return "已评估";
|
||||
}
|
||||
},
|
||||
customRender: ({record}) => record.assessmentStatus ? '已评估' : '未评估'
|
||||
},
|
||||
{
|
||||
title: "作业成绩",
|
||||
@@ -3085,8 +3078,8 @@ export default defineComponent({
|
||||
customRender: ({ record }) => {
|
||||
return (
|
||||
<div class="racona">
|
||||
{record.workScore ? (
|
||||
<span>{record.workScore}</span>
|
||||
{record.score ? (
|
||||
<span>{record.score}</span>
|
||||
) : (
|
||||
<span
|
||||
style={{ color: "#4EA6FF", cursor: "pointer" }}
|
||||
@@ -3121,16 +3114,17 @@ export default defineComponent({
|
||||
{
|
||||
title: "考试成绩",
|
||||
width: "15%",
|
||||
dataIndex: "evastatus",
|
||||
dataIndex: "examinationScore",
|
||||
key: "8",
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
title: "结业状态",
|
||||
width: "15%",
|
||||
dataIndex: "evastatus",
|
||||
dataIndex: "completionStatus",
|
||||
key: "8",
|
||||
align: "center",
|
||||
customRender: ({ record }) => <div>{{1:'结业'}[record.completionStatus] || '-'}</div>,
|
||||
},
|
||||
],
|
||||
shipType: 1,
|
||||
@@ -4761,6 +4755,7 @@ export default defineComponent({
|
||||
};
|
||||
|
||||
const handleJoin = async () => {
|
||||
state.lrcj_inputV1 || message.error("请输入成绩")
|
||||
if (state.rg_hs) {
|
||||
if (state.piliang) {
|
||||
api1.updateStudent({
|
||||
@@ -4994,7 +4989,7 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
window.open(
|
||||
`${process.env.VUE_APP_PROXY_URL}admin/offcourse/export?pageNo=${
|
||||
`${process.env.VUE_APP_BASE_API}/admin/offcourse/export?pageNo=${
|
||||
state.currentPage1
|
||||
}&pageSize=${state.pageSize1}&auditStatus=${
|
||||
state.auditStatus ? state.auditStatus : ""
|
||||
@@ -5004,7 +4999,7 @@ export default defineComponent({
|
||||
state.createName ? state.createName : ""
|
||||
}&endTime=${endTime ? endTime : ""}&beginTime=${
|
||||
startTime ? startTime : ""
|
||||
}`
|
||||
}&type=3`
|
||||
);
|
||||
|
||||
{
|
||||
@@ -5559,7 +5554,7 @@ export default defineComponent({
|
||||
}&type=${3}`,
|
||||
};
|
||||
console.log("codeInfo", state.codeInfo);
|
||||
state.codeIndex = type;
|
||||
state.codeIndex = 0;
|
||||
state.codeType = type;
|
||||
};
|
||||
return {
|
||||
@@ -5844,8 +5839,8 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
|
||||
.btn1:hover {
|
||||
background: rgba(64, 158, 255, 0.76);
|
||||
.btn1 {
|
||||
|
||||
|
||||
.search {
|
||||
background-image: url("../../assets/images/courseManage/search0.png");
|
||||
@@ -5855,18 +5850,18 @@ export default defineComponent({
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
.btn1:active {
|
||||
background: #0982ff;
|
||||
}
|
||||
|
||||
.btn2:hover {
|
||||
.btn2 {
|
||||
background: rgba(64, 158, 255, 0.1);
|
||||
}
|
||||
|
||||
.btn2:active {
|
||||
background: rgba(64, 158, 255, 0.2);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
.btns {
|
||||
@@ -5899,31 +5894,22 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
.btn3 {
|
||||
margin-right: 0px;
|
||||
|
||||
|
||||
.search {
|
||||
width: 17px;
|
||||
height: 18px;
|
||||
background-image: url("../../assets/images/courseManage/add0.png");
|
||||
}
|
||||
}
|
||||
|
||||
.btn3:hover {
|
||||
background: rgba(64, 158, 255, 0.76);
|
||||
|
||||
.search {
|
||||
background-image: url("../../assets/images/courseManage/add0.png");
|
||||
}
|
||||
|
||||
.btnText {
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
|
||||
.btn3:active {
|
||||
background: #0982ff;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6945,7 +6931,7 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
|
||||
.btn1:hover {
|
||||
.btn1 {
|
||||
background: rgba(64, 158, 255, 1);
|
||||
|
||||
.search {
|
||||
@@ -6965,7 +6951,7 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
|
||||
.btn2:hover {
|
||||
.btn2{
|
||||
background: rgba(64, 158, 255, 1);
|
||||
|
||||
.search {
|
||||
@@ -7357,7 +7343,7 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
|
||||
.btn1:hover {
|
||||
.btn1 {
|
||||
background: #4ea6ff;
|
||||
|
||||
.search {
|
||||
@@ -7369,7 +7355,7 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
|
||||
.btn2:hover {
|
||||
.btn2 {
|
||||
background: #4ea6ff;
|
||||
|
||||
.reset {
|
||||
@@ -7585,8 +7571,8 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
|
||||
.btn1:hover {
|
||||
background: rgba(64, 158, 255, 0.76);
|
||||
.btn1{
|
||||
|
||||
|
||||
.search {
|
||||
background-image: url("../../assets/images/courseManage/search0.png");
|
||||
@@ -7596,7 +7582,7 @@ export default defineComponent({
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
.btn1:active {
|
||||
background: #0982ff;
|
||||
}
|
||||
@@ -7608,7 +7594,7 @@ export default defineComponent({
|
||||
.btn2:active {
|
||||
background: rgba(64, 158, 255, 0.2);
|
||||
}
|
||||
|
||||
*/
|
||||
.btns {
|
||||
display: flex;
|
||||
|
||||
@@ -7637,33 +7623,20 @@ export default defineComponent({
|
||||
line-height: 36px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.btn3 {
|
||||
.btn2 {
|
||||
margin-right: 0px;
|
||||
|
||||
.search {
|
||||
.img2 {
|
||||
width: 17px;
|
||||
height: 18px;
|
||||
background-image: url("../../assets/images/courseManage/add0.png");
|
||||
background-image: url(../../assets/images/coursewareManage/export1.png);
|
||||
}
|
||||
}
|
||||
|
||||
.btn3:hover {
|
||||
background: rgba(64, 158, 255, 0.76);
|
||||
|
||||
.search {
|
||||
background-image: url("../../assets/images/courseManage/add0.png");
|
||||
}
|
||||
|
||||
.btnText {
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
|
||||
.btn3:active {
|
||||
background: #0982ff;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1859,9 +1859,10 @@ export default {
|
||||
title: "最近学习时间",
|
||||
dataIndex: "lastStudyTime",
|
||||
key: "lastStudyTime",
|
||||
width: 80,
|
||||
width: 120,
|
||||
align: "center",
|
||||
className: "h",
|
||||
ellipsis: true,
|
||||
},
|
||||
],
|
||||
loading: false,
|
||||
@@ -3074,6 +3075,7 @@ export default {
|
||||
width: "20%",
|
||||
align: "center",
|
||||
className: "h",
|
||||
ellipsis: true,
|
||||
// sorter: {
|
||||
// compare: (a, b) => a.stutime - b.stutime,
|
||||
// multiple: 3,
|
||||
|
||||
@@ -154,7 +154,7 @@ export default {
|
||||
|
||||
// 导出学员信息
|
||||
function exportStudentInfo() {
|
||||
window.open(`${process.env.VUE_APP_PROXY_URL}admin/assessment/manage/exportAssessmentMessage?assessmentId=${state.basicInfo.assessmentId}`)
|
||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/assessment/manage/exportAssessmentMessage?assessmentId=${state.basicInfo.assessmentId}`)
|
||||
}
|
||||
|
||||
//分页
|
||||
|
||||
Reference in New Issue
Block a user