mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-24 10:12:54 +08:00
Merge remote-tracking branch 'origin/develop' into develop
This commit is contained in:
4
.env
4
.env
@@ -38,4 +38,6 @@ VUE_APP_H5=//u-pre.boe.com/student-h5
|
||||
#用户头像
|
||||
VUE_APP_AVATAR_PATH=/upload/
|
||||
# 旧版管理员界面
|
||||
VUE_APP_OLD_MANAGE=//u-pre.boe.com/resource/index.html
|
||||
VUE_APP_OLD_MANAGE=//u-pre.boe.com/resource/index.html
|
||||
# 批量面授报名模板
|
||||
VUE_APP_FACE_STUDENT_TEMPLATE=批量面授报名模版-1673963663229.xlsx
|
||||
4
.env.boe
4
.env.boe
@@ -13,4 +13,6 @@ VUE_APP_UP_LOAD_STUDENT_SCORE_TEMPLATE=coursefile/外部考试学员成绩导入
|
||||
#在线
|
||||
VUE_APP_ONLINE_CLASS_URL=//u-pre.boe.com/mobile/pages/study/courseStudy?id=
|
||||
VITE_BOE_CASS_DETAIL_URL=//u-pre.boe.com/pc/case/detail?id=
|
||||
VUE_APP_EXAM_DETAIL_URL=//u-pre.boe.com/mobile/pages/exam/exam?id=
|
||||
VUE_APP_EXAM_DETAIL_URL=//u-pre.boe.com/mobile/pages/exam/exam?id=
|
||||
# 批量面授报名模板
|
||||
VUE_APP_FACE_STUDENT_TEMPLATE=批量面授报名模版-1673963663229.xlsx
|
||||
@@ -29,4 +29,6 @@ VUE_APP_FILE_PATH=/upload/boe/file/
|
||||
#用户头像
|
||||
VUE_APP_AVATAR_PATH=/upload/
|
||||
# 旧版管理员界面
|
||||
VUE_APP_OLD_MANAGE=//u.boe.com/resource/index.html
|
||||
VUE_APP_OLD_MANAGE=//u.boe.com/resource/index.html
|
||||
# 批量面授报名模板
|
||||
VUE_APP_FACE_STUDENT_TEMPLATE=批量面授报名模版-1673963663229.xlsx
|
||||
@@ -25,4 +25,6 @@ VUE_APP_H5=//u.boe.com/student-h5-release
|
||||
#用户头像
|
||||
VUE_APP_AVATAR_PATH=/upload/
|
||||
# 旧版管理员界面
|
||||
VUE_APP_OLD_MANAGE=//u-pre.boe.com/resource/index.html
|
||||
VUE_APP_OLD_MANAGE=//u-pre.boe.com/resource/index.html
|
||||
# 批量面授报名模板
|
||||
VUE_APP_FACE_STUDENT_TEMPLATE=批量面授报名模版-1673963663229.xlsx
|
||||
@@ -33,7 +33,7 @@ import {USER_PERMISSION} from "@/api/ThirdApi";
|
||||
|
||||
const store = useStore();
|
||||
const isLogin = ref(false);
|
||||
console.log("版本2.2.4------------");
|
||||
console.log("版本2.2.5------------");
|
||||
|
||||
// 监听关闭浏览器
|
||||
let time1 = ref(0);
|
||||
|
||||
@@ -148,6 +148,10 @@ function handleChange({ file }) {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.impotergroupleader > .ant-drawer-content-wrapper {
|
||||
min-width: 800px !important;
|
||||
width: 800px !important;
|
||||
}
|
||||
.impotergroupleader {
|
||||
.drawerMain {
|
||||
min-width: 600px;
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
<span style="margin-right: 3px">讨论设置:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-checkbox v-model:checked="formData.discussSettings" @click="formData.discussSettings = !formData.discussSettings">允许评论</a-checkbox>
|
||||
<a-checkbox v-model:checked="formData.discussSettings" @click="discussSettings">允许评论</a-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -136,10 +136,14 @@ function openDrawer(i, row) {
|
||||
console.log(i,row)
|
||||
row && (formData.value = {...row.info});
|
||||
(i >= 0) && (taskIndex.value = i);
|
||||
row && (formData.value.discussSettings = row.info.discussSettings === "false" ? false : true);
|
||||
row && (formData.value.discussSettings = row.info.discussSettings === "false" || row.info.discussSettings === false ? false : true);
|
||||
visible.value = true
|
||||
}
|
||||
|
||||
const discussSettings = () => {
|
||||
formData.value.discussSettings = !formData.value.discussSettings;
|
||||
}
|
||||
|
||||
defineExpose({openDrawer})
|
||||
</script>
|
||||
<style lang="scss">
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<iframe
|
||||
id="iframe"
|
||||
style="width: 100%; height: 100%;"
|
||||
:src="iframeUrl + '/exam/viewanswer?id=' + datasource.answerId "
|
||||
:src="iframeUrl + '/exam/viewanswer?id=' + answerId?answerId:datasource.answerId "
|
||||
frameborder="0"
|
||||
name="myframe"
|
||||
security="restricted"
|
||||
@@ -54,6 +54,10 @@ export default {
|
||||
default: function () {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
answerId:{
|
||||
type: String,
|
||||
default: "",
|
||||
}
|
||||
},
|
||||
setup(props,ctx){
|
||||
|
||||
@@ -18,13 +18,18 @@
|
||||
/>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="minatitl">
|
||||
<div v-if="downloadType!==1" class="minatitl">
|
||||
<div class="up1" style="font-weight: bolder">导入小组长</div>
|
||||
<!--<div class="up2" @click="downTemplate" style="cursor: pointer">-->
|
||||
<!--模板-->
|
||||
<!--</div>-->
|
||||
</div>
|
||||
<div class="up1">请先导出小组填写小组长,按要求填写数据并导入</div>
|
||||
<div v-if="downloadType!==1" class="up1">请先导出小组填写小组长,按要求填写数据并导入</div>
|
||||
<div v-else class="up1">
|
||||
请下载
|
||||
<a :href="stuFeceStuTemplateUrl" target="_blank">模版</a>
|
||||
,按要求填写并导入
|
||||
</div>
|
||||
<div class="upload">
|
||||
<div class="text">上传:</div>
|
||||
<div class="right">
|
||||
@@ -65,7 +70,7 @@
|
||||
<div class="curloading">
|
||||
<div style="color: #387df7; margin-left: 20px; cursor: pointer"
|
||||
v-if="file.uploadState?.status === 'FAILED'" @click="downloadErrorData(file.uploadState?.url)">
|
||||
下载失败数据1
|
||||
下载失败数据
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -105,6 +110,7 @@ const props = defineProps({
|
||||
fileType: Object,
|
||||
data: Object,
|
||||
templateUrl: String,
|
||||
downloadType: Number
|
||||
})
|
||||
const emit = defineEmits({})
|
||||
|
||||
@@ -126,6 +132,9 @@ const closeDrawer = () => {
|
||||
fileList.value = [];
|
||||
};
|
||||
|
||||
// 批量面授报名模版
|
||||
const stuFeceStuTemplateUrl = ref(process.env.VUE_APP_FILE_PATH + process.env.VUE_APP_FACE_STUDENT_TEMPLATE);
|
||||
|
||||
function openDrawer() {
|
||||
visible.value = true
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</a-drawer>
|
||||
<CheckAnsware v-model:CAvisible="CAvisible" :datasource="answerDatasource"/>
|
||||
<CheckAnsware v-model:CAvisible="CAvisible" :datasource="answerDatasource" :answerId="answerId"/>
|
||||
<!-- 查看作业抽屉 -->
|
||||
<CKWork
|
||||
v-model:CWvisible="CWvisible"
|
||||
@@ -340,10 +340,11 @@ const batchFinish = () => {
|
||||
};
|
||||
|
||||
const answerDatasource = ref(props.datasource);
|
||||
|
||||
const answerId = ref('');
|
||||
const showExamAnswer = (answerId) => {
|
||||
console.log(answerDatasource.value)
|
||||
console.log(answerDatasource.value,answerId)
|
||||
answerDatasource.value.answerId = answerId;
|
||||
answerId.value = answerId;
|
||||
CAvisible.value = true;
|
||||
};
|
||||
|
||||
|
||||
@@ -85,10 +85,17 @@
|
||||
<div
|
||||
class="btn btn1"
|
||||
style="margin-right: 20px"
|
||||
@click="qrcodeVisible()"
|
||||
@click="qrcodeVisibleSign()"
|
||||
>
|
||||
<div class="wz">签到二维码</div>
|
||||
</div>
|
||||
<div
|
||||
class="btn btn1"
|
||||
style="margin-right: 20px"
|
||||
@click="qrcodeVisible()"
|
||||
>
|
||||
<div class="wz">开课二维码</div>
|
||||
</div>
|
||||
<CommonStudent
|
||||
:type="3"
|
||||
:isGroup="true"
|
||||
@@ -103,7 +110,7 @@
|
||||
添加学员
|
||||
</a-button>
|
||||
</CommonStudent>
|
||||
<CommonImport title="导入学员" :template-url="stuTemplateUrl" :data="{ targetId: offcoursePlanId, type:3 }" :url="`/admin/student/importStudent`" name="uploadFile">
|
||||
<CommonImport @change="change" title="导入学员" :template-url="stuTemplateUrl" :data="{ targetId: offcoursePlanId, type:3 }" :url="`/admin/student/importStudent`" name="uploadFile">
|
||||
<div class="btn btn1" style="margin-right: 20px;margin-left: 20px">
|
||||
<div class="img1"></div>
|
||||
<div class="wz">导入学员</div>
|
||||
@@ -370,12 +377,29 @@ function resetStudentPage() {
|
||||
//二维码
|
||||
const qrcodeVisible = () => {
|
||||
qrCode({
|
||||
title: "【签到】二维码",
|
||||
title: "【开课】二维码",
|
||||
name: props.datasource?.name,
|
||||
// url: `${location.protocol}//${location.host}${process.env.VUE_APP_BASE_API}/admin/student/studentSign?taskId=${props.datasource.id}&taskType=${props.datasource.type}&type=${props.type}`,
|
||||
url: `${location.protocol}//${location.host}${process.env.VUE_APP_BASE_API}/stu/project/redirectDetail?courseId=${data.value[coursePlanIndex.value]?.id}`,
|
||||
});
|
||||
};
|
||||
// 签到二维码
|
||||
const qrcodeVisibleSign = () => {
|
||||
qrCode({
|
||||
title: "【签到】二维码",
|
||||
name: props.datasource?.name,
|
||||
// url: `${location.protocol}//${location.host}${process.env.VUE_APP_BASE_API}/admin/student/studentSign?taskId=${props.datasource.id}&taskType=${props.datasource.type}&type=${props.type}`,
|
||||
url: `${location.protocol}//${location.host}${process.env.VUE_APP_BASE_API}/admin/student/studentSign?taskId=${data.value[coursePlanIndex.value]?.id}&taskType=${2}&type=${3}`,
|
||||
});
|
||||
};
|
||||
|
||||
const change = (e) => {
|
||||
console.log(e)
|
||||
if(e==="end"){
|
||||
// 请求刷新数据
|
||||
tableRef.value.fetch();
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
@@ -374,7 +374,7 @@ const member = ref(false);
|
||||
const dept = ref(false);
|
||||
const projectStuTableRef = ref();
|
||||
const stuTableRef = ref();
|
||||
const projectParams = ref({ pid: props.infoId, type: props.infoType });
|
||||
const projectParams = ref({ pid: props.infoId, type: props.infoType, studentName:"" });
|
||||
|
||||
const getProjectStu = () => projectStuTableRef.value.fetch();
|
||||
const resetProjectStu = () => {
|
||||
@@ -544,6 +544,8 @@ const orgRowSelection = computed(() => ({
|
||||
|
||||
const closeDrawer = () => {
|
||||
deleteDepSelect();
|
||||
audienceName.value.keyword = "";
|
||||
auditTableRef.value.reset({ keyword: "" })
|
||||
projectParams.value.studentName = "";
|
||||
projectStuTableRef.value.reset();
|
||||
visiable.value = false;
|
||||
@@ -607,9 +609,16 @@ function onOrgSelectChange(e, l) {
|
||||
deptList.value = l.selectedNodes;
|
||||
}
|
||||
|
||||
const resetStu = () => stuTableRef.value.reset({ keyword: "", departId: null });
|
||||
const resetStu = () => {
|
||||
nameSearch.value.keyword = "";
|
||||
stuTableRef.value.reset({ keyword: "", departId: null })
|
||||
};
|
||||
//清空选择部门信息
|
||||
const deleteDepSelect = () => {
|
||||
projectParams.value.studentName = "";
|
||||
projectStuTableRef.value.reset();
|
||||
audienceName.value.keyword = "";
|
||||
auditTableRef.value.reset({ keyword: "" })
|
||||
selectedOrgKeys.value = [];
|
||||
projectSelectKeys.value = [];
|
||||
};
|
||||
@@ -618,7 +627,10 @@ const resetOrg = () => {
|
||||
searchOrgName.value = { keyword: "", page: 1, pageSize: 10 };
|
||||
};
|
||||
//重置受众
|
||||
const resetAudienceInfo = () => auditTableRef.value.reset({ keyword: "" });
|
||||
const resetAudienceInfo = () => {
|
||||
audienceName.value.keyword = "";
|
||||
auditTableRef.value.reset({ keyword: "" })
|
||||
};
|
||||
|
||||
//确定添加授权
|
||||
const submitAuth = () => {
|
||||
|
||||
@@ -325,7 +325,7 @@
|
||||
<div style="flex: 1">
|
||||
<div class="onerow">
|
||||
<div class="taskmain">任务大纲</div>
|
||||
<ImpoterGroupLeader title="批量面授报名" :data="{targetId:routerId,type:2}" :url="`/admin/offcourse/importCourse`" :template-url="`/admin/router/exportTaskCoursePlan/${routerId}?type=1&taskType=2&thirdType=3`">
|
||||
<ImpoterGroupLeader :downloadType="1" title="批量面授报名" :data="{targetId:routerId,type:2}" :url="`/admin/offcourse/importCourse`" :template-url="`/admin/router/exportTaskCoursePlan/${routerId}?type=1&taskType=2&thirdType=3`">
|
||||
<button class="btn">批量面授报名</button>
|
||||
</ImpoterGroupLeader>
|
||||
<router-link
|
||||
|
||||
@@ -461,6 +461,7 @@
|
||||
<div class="taskmain">任务大纲</div>
|
||||
<ImpoterGroupLeader
|
||||
title="批量面授报名"
|
||||
:downloadType="1"
|
||||
:data="{ targetId: projectId, type: 1 }"
|
||||
:url="`/admin/offcourse/importCourse`"
|
||||
:template-url="`/admin/project/exportTaskCoursePlan/${projectId}?type=1&taskType=2&thirdType=3`"
|
||||
|
||||
Reference in New Issue
Block a user