Merge branch 'develop' of ssh://gitlab.dongwu-inc.com:10022/BOE/fe-manage into develop

This commit is contained in:
zhangyc
2022-12-08 15:27:17 +08:00
6 changed files with 1654 additions and 1550 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,29 +1,29 @@
<!-- 确定新建面授课弹窗 --> <!-- 确定新建面授课弹窗 -->
<template> <template>
<a-modal <a-modal
v-model:visible="ft_hs" v-model:visible="ft_hs"
title="Title" title="Title"
:footer="null" :footer="null"
:closable="false" :closable="false"
wrapClassName="modalStyle facteachModal" wrapClassName="modalStyle facteachModal"
width="80%" width="80%"
@cancel="visibleClose" @cancel="visibleClose"
@ok="handlePush" @ok="handlePush"
> >
<div class="modalHeader"> <div class="modalHeader">
<div class="headerLeft"> <div class="headerLeft">
<img <img
style="width: 17px; height: 18px; margin-right: 8px" style="width: 17px; height: 18px; margin-right: 8px"
src="@/assets/images/basicinfo/add.png" src="@/assets/images/basicinfo/add.png"
/> />
<span v-if="ft_eidt" class="headerLeftText">编辑面授课</span> <span v-if="ft_eidt" class="headerLeftText">编辑面授课</span>
<span v-else class="headerLeftText">新建面授课</span> <span v-else class="headerLeftText">新建面授课</span>
</div> </div>
<div style="margin-right: 57px; cursor: pointer"> <div style="margin-right: 57px; cursor: pointer">
<img <img
@click="visibleClose" @click="visibleClose"
style="width: 22px; height: 22px" style="width: 22px; height: 22px"
src="@/assets/images/basicinfo/close22.png" src="@/assets/images/basicinfo/close22.png"
/> />
</div> </div>
</div> </div>
@@ -42,8 +42,8 @@
<div class="item_nam"> <div class="item_nam">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img <img
src="@/assets/images/coursewareManage/asterisk.png" src="@/assets/images/coursewareManage/asterisk.png"
alt="asterisk" alt="asterisk"
/> />
</div> </div>
<span style="margin-right: 14px">课程名称</span> <span style="margin-right: 14px">课程名称</span>
@@ -51,10 +51,10 @@
<div class="item_inp"> <div class="item_inp">
<div class="i1_input"> <div class="i1_input">
<a-input <a-input
v-model:value="qdms_inputV1" v-model:value="qdms_inputV1"
maxlength="90" maxlength="90"
style="width: 440px; height: 40px; border-radius: 8px" style="width: 440px; height: 40px; border-radius: 8px"
placeholder="请输入课程名称" placeholder="请输入课程名称"
/> />
<div class="inp_num"> <div class="inp_num">
<span style="color: #c7cbd2"> <span style="color: #c7cbd2">
@@ -70,19 +70,19 @@
<span style="color: #999ba3">课程命名规则</span> <span style="color: #999ba3">课程命名规则</span>
</div> </div>
<div <div
class="i2_right" class="i2_right"
@click="hideShow" @click="hideShow"
style="cursor: pointer" style="cursor: pointer"
> >
<div <div
class="b_zk" class="b_zk"
:style="{ display: hideshow ? 'block' : 'none' }" :style="{ display: hideshow ? 'block' : 'none' }"
> >
<span style="color: #4ea6ff">收起</span> <span style="color: #4ea6ff">收起</span>
</div> </div>
<div <div
class="b_sq" class="b_sq"
:style="{ display: hideshow ? 'none' : 'block' }" :style="{ display: hideshow ? 'none' : 'block' }"
> >
<span style="color: #4ea6ff">展开</span> <span style="color: #4ea6ff">展开</span>
</div> </div>
@@ -90,14 +90,14 @@
</div> </div>
</div> </div>
<div <div
class="i2_detail" class="i2_detail"
:style="{ display: hideshow ? 'block' : 'none' }" :style="{ display: hideshow ? 'block' : 'none' }"
> >
<span style="color: #999ba3"> <span style="color: #999ba3">
1课程名称统一不加书名号<br/> 1课程名称统一不加书名号<br />
2项目名称属地等信息如需体现在课程名称中请放在课程名称信息 2项目名称属地等信息如需体现在课程名称中请放在课程名称信息
之后时间管理GROW180项目时间管理B*确保首先 之后时间管理GROW180项目时间管理B*确保首先
看到的是课程内容主题<br/> 看到的是课程内容主题<br />
3同一课程如先后有多个版本原则上仅开放最新版本旧版本应停用 3同一课程如先后有多个版本原则上仅开放最新版本旧版本应停用
版本如必须以年份标明请以沟通技巧2022的方式呈现 版本如必须以年份标明请以沟通技巧2022的方式呈现
</span> </span>
@@ -107,32 +107,32 @@
<div class="item_nam"> <div class="item_nam">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img <img
src="@/assets/images/coursewareManage/asterisk.png" src="@/assets/images/coursewareManage/asterisk.png"
alt="" alt=""
/> />
</div> </div>
<span style="margin-right: 14px">封面图</span> <span style="margin-right: 14px">封面图</span>
</div> </div>
<div class="item_inp"> <div class="item_inp">
<a-select <a-select
:getPopupContainer=" :getPopupContainer="
(triggerNode) => { (triggerNode) => {
return triggerNode.parentNode || document.body; return triggerNode.parentNode || document.body;
} }
" "
v-model:value="feng_mian_1" v-model:value="feng_mian_1"
dropdownClassName="dropdown-style" dropdownClassName="dropdown-style"
style="width: 440px" style="width: 440px"
placeholder="请选择" placeholder="请选择"
:options="optionsUrl" :options="optionsUrl"
allowClear allowClear
showSearch showSearch
/> />
<img <img
class="i_upload_img" class="i_upload_img"
v-if="feng_mian_1" v-if="feng_mian_1"
:src="feng_mian_1" :src="feng_mian_1"
alt="avatar" alt="avatar"
/> />
<div class="i_bottom"> <div class="i_bottom">
<span style="color: #999ba3"> <span style="color: #999ba3">
@@ -145,9 +145,9 @@
<div class="item_nam"> <div class="item_nam">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img <img
style="width: 10px; height: 10px" style="width: 10px; height: 10px"
src="@/assets/images/coursewareManage/asterisk.png" src="@/assets/images/coursewareManage/asterisk.png"
alt="" alt=""
/> />
</div> </div>
<span style="margin-right: 14px">目标人群</span> <span style="margin-right: 14px">目标人群</span>
@@ -155,10 +155,10 @@
<div class="item_inp"> <div class="item_inp">
<div class="i1_input"> <div class="i1_input">
<a-input <a-input
v-model:value="qdms_inputV2" v-model:value="qdms_inputV2"
maxlength="50" maxlength="50"
style="width: 440px; height: 40px; border-radius: 8px" style="width: 440px; height: 40px; border-radius: 8px"
placeholder="请输入目标人群" placeholder="请输入目标人群"
/> />
<div class="inp_num"> <div class="inp_num">
<span style="color: #c7cbd2"> <span style="color: #c7cbd2">
@@ -175,10 +175,10 @@
<div class="item_inp"> <div class="item_inp">
<div class="i1_input"> <div class="i1_input">
<a-input <a-input
v-model:value="qdms_inputV3" v-model:value="qdms_inputV3"
maxlength="200" maxlength="200"
style="width: 440px; height: 40px; border-radius: 8px" style="width: 440px; height: 40px; border-radius: 8px"
placeholder="请输入课程价值" placeholder="请输入课程价值"
/> />
<div class="inp_num"> <div class="inp_num">
<span style="color: #c7cbd2"> <span style="color: #c7cbd2">
@@ -192,8 +192,8 @@
<div class="item_nam"> <div class="item_nam">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img <img
src="@/assets/images/coursewareManage/asterisk.png" src="@/assets/images/coursewareManage/asterisk.png"
alt="asterisk" alt="asterisk"
/> />
</div> </div>
<span style="margin-right: 14px">内容分类</span> <span style="margin-right: 14px">内容分类</span>
@@ -201,18 +201,18 @@
<div class="item_inp"> <div class="item_inp">
<div class="select i6_input"> <div class="select i6_input">
<a-select <a-select
:getPopupContainer=" :getPopupContainer="
(triggerNode) => { (triggerNode) => {
return triggerNode.parentNode || document.body; return triggerNode.parentNode || document.body;
} }
" "
v-model:value="fen_lei" v-model:value="fen_lei"
dropdownClassName="dropdown-style" dropdownClassName="dropdown-style"
style="width: 440px" style="width: 440px"
placeholder="请选择" placeholder="请选择"
:options="options2" :options="options2"
allowClear allowClear
showSearch showSearch
/> />
</div> </div>
</div> </div>
@@ -224,18 +224,18 @@
<div class="item_inp"> <div class="item_inp">
<div class="select i7_input"> <div class="select i7_input">
<a-select <a-select
:getPopupContainer=" :getPopupContainer="
(triggerNode) => { (triggerNode) => {
return triggerNode.parentNode || document.body; return triggerNode.parentNode || document.body;
} }
" "
v-model:value="chang_jin" v-model:value="chang_jin"
dropdownClassName="dropdown-style" dropdownClassName="dropdown-style"
style="width: 440px" style="width: 440px"
placeholder="请选择" placeholder="请选择"
:options="options3" :options="options3"
allowClear allowClear
showSearch showSearch
/> />
</div> </div>
</div> </div>
@@ -246,17 +246,17 @@
</div> </div>
<div class="item_inp"> <div class="item_inp">
<a-input <a-input
v-model:value="tags_val_single" v-model:value="tags_val_single"
style="width: 440px; height: 40px; border-radius: 8px" style="width: 440px; height: 40px; border-radius: 8px"
placeholder="请输入按回车键创建成功" placeholder="请输入按回车键创建成功"
@pressEnter="handleTagChange" @pressEnter="handleTagChange"
/> />
<div class="tag-content"> <div class="tag-content">
<a-tag <a-tag
v-for="(item, index) in tags_val" v-for="(item, index) in tags_val"
:key="index" :key="index"
closable closable
@close="handleTagClose(item)" @close="handleTagClose(item)"
> >
{{ item }} {{ item }}
</a-tag> </a-tag>
@@ -269,8 +269,8 @@
<div class="item_nam"> <div class="item_nam">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img <img
src="@/assets/images/coursewareManage/asterisk.png" src="@/assets/images/coursewareManage/asterisk.png"
alt="asterisk" alt="asterisk"
/> />
</div> </div>
<!-- 授课教师1 --> <!-- 授课教师1 -->
@@ -279,8 +279,8 @@
<div class="item_inp"> <div class="item_inp">
<div class="i1_input"> <div class="i1_input">
<ProjectManager <ProjectManager
v-model:value="member.value" v-model:value="member.value"
v-model:name="member.name" v-model:name="member.name"
/> />
</div> </div>
</div> </div>
@@ -292,10 +292,10 @@
<div class="item_inp"> <div class="item_inp">
<div class="i10_textarea"> <div class="i10_textarea">
<a-textarea <a-textarea
v-model:value="qdms_inputV6" v-model:value="qdms_inputV6"
maxlength="150" maxlength="150"
style="width: 440px; height: 100px; border-radius: 8px" style="width: 440px; height: 100px; border-radius: 8px"
placeholder="请输入" placeholder="请输入"
/> />
<div class="inp_num"> <div class="inp_num">
<span style="color: #c7cbd2"> <span style="color: #c7cbd2">
@@ -322,17 +322,17 @@
<div class="fotarea"> <div class="fotarea">
<div style="border: 1px solid #ccc"> <div style="border: 1px solid #ccc">
<Toolbar <Toolbar
style="border-bottom: 1px solid #ccc" style="border-bottom: 1px solid #ccc"
:editor="editorRef" :editor="editorRef"
:defaultConfig="toolbarConfig" :defaultConfig="toolbarConfig"
:mode="mode" :mode="mode"
/> />
<Editor <Editor
style="height: 250px; overflow-y: hidden" style="height: 250px; overflow-y: hidden"
v-model="valueHtml" v-model="valueHtml"
:defaultConfig="editorConfig" :defaultConfig="editorConfig"
:mode="mode" :mode="mode"
@onCreated="handleCreated" @onCreated="handleCreated"
/> />
</div> </div>
</div> </div>
@@ -363,12 +363,12 @@ import {
onMounted, onMounted,
onBeforeUnmount, onBeforeUnmount,
} from "vue"; } from "vue";
import {message} from "ant-design-vue"; import { message } from "ant-design-vue";
import {edit, detail, handle} from "@/api/indexCourse"; import { edit, detail, handle } from "@/api/indexCourse";
import {fileUp} from "../../api/indexEval"; import { fileUp } from "../../api/indexEval";
import * as api1 from "../../api/index1"; import * as api1 from "../../api/index1";
import "@wangeditor/editor/dist/css/style.css"; import "@wangeditor/editor/dist/css/style.css";
import {Editor, Toolbar} from "@wangeditor/editor-for-vue"; import { Editor, Toolbar } from "@wangeditor/editor-for-vue";
import ProjectManager from "@/components/project/ProjectManagerNew"; import ProjectManager from "@/components/project/ProjectManagerNew";
import FJUpload from "@/components/common/FJUpload"; import FJUpload from "@/components/common/FJUpload";
import * as moment from "moment"; import * as moment from "moment";
@@ -380,15 +380,15 @@ export default defineComponent({
FJUpload, FJUpload,
ProjectManager, ProjectManager,
}, },
setup(props, {expose, emit}) { setup(props, { expose, emit }) {
const state = reactive({ const state = reactive({
hideshow: true, hideshow: true,
attach: '', attach: "",
ft_hs: false, ft_hs: false,
addLoading: false, addLoading: false,
statusJuJue: 0, statusJuJue: 0,
statusTingQi: 1, statusTingQi: 1,
member: {name: "", value: ""}, member: { name: "", value: "" },
offcourseId: null, offcourseId: null,
qdms_inputV1: "", qdms_inputV1: "",
@@ -404,12 +404,13 @@ export default defineComponent({
auditDescription:"", auditDescription:"",
}); });
const visibleOpen = (offcourseId) => { const visibleOpen = (offcourseId, name) => {
state.offcourseId = offcourseId; state.offcourseId = offcourseId;
if (state.offcourseId) { if (state.offcourseId) {
handleEditInfo(state.offcourseId); handleEditInfo(state.offcourseId);
} else { } else {
state.qdms_inputV1 = name;
state.ft_hs = true; state.ft_hs = true;
} }
}; };
@@ -430,7 +431,7 @@ export default defineComponent({
state.addLoading = false; state.addLoading = false;
state.statusJuJue = 0; state.statusJuJue = 0;
state.statusTingQi = 1; state.statusTingQi = 1;
state.member = {name: "", value: ""}; state.member = { name: "", value: "" };
state.offcourseId = null; state.offcourseId = null;
state.qdms_inputV1 = ""; state.qdms_inputV1 = "";
@@ -443,7 +444,7 @@ export default defineComponent({
state.tags_val = []; state.tags_val = [];
state.qdms_inputV6 = ""; state.qdms_inputV6 = "";
state.imgList = []; state.imgList = [];
state.attach = ''; state.attach = "";
valueHtml.value = ""; valueHtml.value = "";
}; };
@@ -469,7 +470,7 @@ export default defineComponent({
const toolbarConfig = { const toolbarConfig = {
excludeKeys: ["insertVideo", "insertImage"], excludeKeys: ["insertVideo", "insertImage"],
}; };
const editorConfig = {placeholder: "请输入内容...", MENU_CONF: {}}; const editorConfig = { placeholder: "请输入内容...", MENU_CONF: {} };
editorConfig.MENU_CONF["uploadImage"] = { editorConfig.MENU_CONF["uploadImage"] = {
// 自定义上传 // 自定义上传
async customUpload(file, insertFn) { async customUpload(file, insertFn) {
@@ -506,48 +507,48 @@ export default defineComponent({
setCode: param, setCode: param,
}; };
api1 api1
.getDict(obj) .getDict(obj)
.then((res) => { .then((res) => {
console.log("获取字典成功", res); console.log("获取字典成功", res);
if (res.data.code === 200) { if (res.data.code === 200) {
if (param === "faceclassPic") { if (param === "faceclassPic") {
let arr = res.data.data.rows; let arr = res.data.data.rows;
let newArr = []; let newArr = [];
arr.forEach((item) => { arr.forEach((item) => {
newArr.push({ newArr.push({
value: item.dictValue, value: item.dictValue,
label: item.dictName, label: item.dictName,
});
}); });
optionsUrl.value = newArr; });
} optionsUrl.value = newArr;
if (param === "faceclassClass") {
let arr = res.data.data.rows;
let newArr = [];
arr.forEach((item) => {
newArr.push({
value: item.dictCode,
label: item.dictName,
});
});
options2.value = newArr;
}
if (param === "faceclassScene") {
let arr = res.data.data.rows;
let newArr = [];
arr.forEach((item) => {
newArr.push({
value: item.dictCode,
label: item.dictName,
});
});
options3.value = newArr;
}
} }
}) if (param === "faceclassClass") {
.catch((err) => { let arr = res.data.data.rows;
console.log("获取字典失败", err); let newArr = [];
}); arr.forEach((item) => {
newArr.push({
value: item.dictCode,
label: item.dictName,
});
});
options2.value = newArr;
}
if (param === "faceclassScene") {
let arr = res.data.data.rows;
let newArr = [];
arr.forEach((item) => {
newArr.push({
value: item.dictCode,
label: item.dictName,
});
});
options3.value = newArr;
}
}
})
.catch((err) => {
console.log("获取字典失败", err);
});
}; };
getDictList("faceclassClass"); getDictList("faceclassClass");
getDictList("faceclassScene"); getDictList("faceclassScene");
@@ -619,7 +620,7 @@ export default defineComponent({
if (param === "review") { if (param === "review") {
//新建时点击审核按钮 //新建时点击审核按钮
submitReview(res.data.data.offcourseId); submitReview(res.data.data.offcourseId);
}else visibleClose(); } else visibleClose();
} }
}); });
}; };
@@ -666,7 +667,7 @@ export default defineComponent({
state.chang_jin = String(item.sceneId); state.chang_jin = String(item.sceneId);
state.tags_val = item.tips ? item.tips.split(",") : []; state.tags_val = item.tips ? item.tips.split(",") : [];
state.qdms_inputV6 = item.intro; state.qdms_inputV6 = item.intro;
state.member = {value: item.teacherId, name: item.teacher}; state.member = { value: item.teacherId, name: item.teacher };
valueHtml.value = item.outline; valueHtml.value = item.outline;
state.attach = item.attach; state.attach = item.attach;
state.ft_hs = true; state.ft_hs = true;

View File

@@ -418,6 +418,10 @@
<a-button class="pubtn2" @click="releaseLearnPath">发布</a-button> <a-button class="pubtn2" @click="releaseLearnPath">发布</a-button>
</div> </div>
</div> </div>
<!-- 加载动画 -->
<div class="aeLoading" :style="{ display: pubLoading ? 'flex' : 'none' }">
<a-spin :spinning="pubLoading" />
</div>
</a-modal> </a-modal>
<!-- 复制路径弹窗 --> <!-- 复制路径弹窗 -->
<a-modal <a-modal
@@ -723,6 +727,7 @@ export default {
// learnPathBg: null, //创建路径选择的路径图背景 // learnPathBg: null, //创建路径选择的路径图背景
// learnPathBg2: null, //编辑路径选择的路径图背景 // learnPathBg2: null, //编辑路径选择的路径图背景
pub: false, //发布弹窗 pub: false, //发布弹窗
pubLoading: false, //发布loading
checked: false, //发布弹窗switch checked: false, //发布弹窗switch
checkedTeacher: false, //发布弹窗勾选 checkedTeacher: false, //发布弹窗勾选
checkStu: false, //发布弹窗勾选 checkStu: false, //发布弹窗勾选
@@ -853,6 +858,7 @@ export default {
const showPub = (router) => { const showPub = (router) => {
console.log("router", router); console.log("router", router);
state.pub = true; state.pub = true;
state.pubLoading = true;
state.releasePathId = router.id; state.releasePathId = router.id;
state.releasePathName = router.manager; state.releasePathName = router.manager;
api api
@@ -860,7 +866,7 @@ export default {
.then((res) => { .then((res) => {
console.log("获取关卡、任务、学员统计数据", res.data); console.log("获取关卡、任务、学员统计数据", res.data);
if (res.status === 200) { if (res.status === 200) {
state.routeStudentsNum = res.data.students; // state.routeStudentsNum = res.data.students;
state.routeChapters = res.data.chapters; state.routeChapters = res.data.chapters;
state.routeTasks = res.data.tasks; state.routeTasks = res.data.tasks;
} }
@@ -868,6 +874,24 @@ export default {
.catch((err) => { .catch((err) => {
console.log("err", err); console.log("err", err);
}); });
//获取学员列表
let stuobj = {
pageNo: 1,
pageSize: 10,
routerId: router.id,
};
api
.getStudent(stuobj)
.then((res) => {
console.log("获取学员列表", res.data.data.total);
if (res.data.code === 200) {
state.routeStudentsNum = res.data.data.total;
state.pubLoading = false;
}
})
.catch((err) => {
console.log("获取学员列表失败", err);
});
}; };
//确定发布 //确定发布
const releaseLearnPath = () => { const releaseLearnPath = () => {
@@ -897,6 +921,11 @@ export default {
const closePub = () => { const closePub = () => {
state.pub = false; state.pub = false;
state.releasePathId = null;
state.releasePathName = null;
state.routeChapters = null;
state.routeTasks = null;
state.routeStudentsNum = null;
}; };
//显示复制窗口 //显示复制窗口
const showCopyModal = () => { const showCopyModal = () => {
@@ -1544,8 +1573,8 @@ export default {
.getRouterDetail(id) .getRouterDetail(id)
.then((res) => { .then((res) => {
if (res.data.code === 200) { if (res.data.code === 200) {
console.log("获取学习路径详情成功", res.data.data);
let detail = res.data.data.routerInfo; let detail = res.data.data.routerInfo;
// console.log("获取详情成功", detail);
state.pathName = detail.name; state.pathName = detail.name;
state.pathBg = detail.picUrl; state.pathBg = detail.picUrl;
state.pathBgId = ""; state.pathBgId = "";

View File

@@ -1143,6 +1143,10 @@
<a-button class="pubtn2" @click="releaseLearnPath">发布</a-button> <a-button class="pubtn2" @click="releaseLearnPath">发布</a-button>
</div> </div>
</div> </div>
<!-- 加载动画 -->
<div class="aeLoading" :style="{ display: pubLoading ? 'flex' : 'none' }">
<a-spin :spinning="pubLoading" />
</div>
</a-modal> </a-modal>
<!-- 撤回路径弹窗 --> <!-- 撤回路径弹窗 -->
<a-modal <a-modal
@@ -1303,6 +1307,7 @@ export default {
action: null, action: null,
act: null, act: null,
pub: false, //发布弹窗 pub: false, //发布弹窗
pubLoading: false, //发布loading
backModal: false, //撤回弹窗 backModal: false, //撤回弹窗
dcopyModal: false, //复制弹窗 dcopyModal: false, //复制弹窗
closeBack: false, closeBack: false,
@@ -1813,13 +1818,14 @@ export default {
//显示发布弹窗 //显示发布弹窗
const showPub = () => { const showPub = () => {
state.pub = true; state.pub = true;
state.pubLoading = true;
// state.releasePathId = routerId; // state.releasePathId = routerId;
api api
.getLearnCount(state.routerId) .getLearnCount(state.routerId)
.then((res) => { .then((res) => {
if (res.status === 200) { if (res.status === 200) {
// console.log("获取关卡、任务、学员统计数据", res.data); // console.log("获取关卡、任务、学员统计数据", res.data);
state.routeStudentsNum = res.data.students; // state.routeStudentsNum = res.data.students;
state.routeChapters = res.data.chapters; state.routeChapters = res.data.chapters;
state.routeTasks = res.data.tasks; state.routeTasks = res.data.tasks;
} }
@@ -1827,6 +1833,24 @@ export default {
.catch((err) => { .catch((err) => {
console.log("err", err); console.log("err", err);
}); });
//获取学员列表
let stuobj = {
pageNo: 1,
pageSize: 10,
routerId: state.routerId,
};
api
.getStudent(stuobj)
.then((res) => {
console.log("获取学员列表", res.data.data.total);
if (res.data.code === 200) {
state.routeStudentsNum = res.data.data.total;
state.pubLoading = false;
}
})
.catch((err) => {
console.log("获取学员列表失败", err);
});
}; };
//显示撤回弹窗 //显示撤回弹窗
const showBackModal = () => { const showBackModal = () => {

File diff suppressed because it is too large Load Diff

View File

@@ -1707,7 +1707,9 @@
<div class="projectbox"> <div class="projectbox">
<div class="promessage"> <div class="promessage">
<div class="messageme">项目信息</div> <div class="messageme">项目信息</div>
<div class="messagege">当前项目共0个阶段0个任务</div> <div class="messagege">
当前项目共{{ projectStages }}个阶段,{{ projectTasks }}个任务
</div>
</div> </div>
<div class="stumessage"> <div class="stumessage">
<div class="messageme1">学员信息</div> <div class="messageme1">学员信息</div>
@@ -1731,6 +1733,13 @@
<a-button class="pubtn2" @click="releaseProject">发布</a-button> <a-button class="pubtn2" @click="releaseProject">发布</a-button>
</div> </div>
</div> </div>
<!-- 加载动画 -->
<div
class="aeLoading"
:style="{ display: projectPubLoading ? 'flex' : 'none' }"
>
<a-spin :spinning="projectPubLoading" />
</div>
</a-modal> </a-modal>
<!-- 撤回弹窗 --> <!-- 撤回弹窗 -->
@@ -2092,7 +2101,10 @@ export default {
action: null, action: null,
act: null, act: null,
projectPub: false, //发布弹窗 projectPub: false, //发布弹窗
projectPubLoading: false, //发布loading
projectStudentsNum: 0, //发布弹窗-学员人数 projectStudentsNum: 0, //发布弹窗-学员人数
projectStages: 0, //发布弹窗-阶段数
projectTasks: 0, //任务数
releaseProjectId: null, //发布的项目id releaseProjectId: null, //发布的项目id
releaseProjectName: null, //发布的项目名称 releaseProjectName: null, //发布的项目名称
releaseProjectTime: null, //发布的项目时间 releaseProjectTime: null, //发布的项目时间
@@ -3893,10 +3905,17 @@ export default {
//打开发布弹窗 //打开发布弹窗
const showProjectPub = () => { const showProjectPub = () => {
state.projectPub = true; state.projectPub = true;
state.projectPubLoading = true;
state.releaseProjectId = state.projectId; state.releaseProjectId = state.projectId;
state.releaseProjectName = state.name; state.releaseProjectName = state.name;
// state.releaseProjectTime = state.startTime; // state.releaseProjectTime = state.startTime;
// console.log("object", object); // console.log("object", object);
apiproj.getProjectCount(state.projectId).then((res) => {
console.log("获取关卡、任务、学员统计数据", res.data);
// state.projectStudentsNum = res.data.students;
state.projectStages = res.data.stages;
state.projectTasks = res.data.tasks;
});
//获取学员总数 //获取学员总数
let obj = { let obj = {
pageNo: 0, pageNo: 0,
@@ -3906,11 +3925,12 @@ export default {
apiproj apiproj
.projectStudent(obj) .projectStudent(obj)
.then((res) => { .then((res) => {
if (res.status === 200) { if (res.data.code === 200) {
// console.log("res", res.data); // console.log("res", res.data);
state.projectStudentsNum = res.data.data.total state.projectStudentsNum = res.data.data.total
? res.data.data.total ? res.data.data.total
: 0; : 0;
state.projectPubLoading = false;
} }
}) })
.catch((err) => { .catch((err) => {