mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-11 20:06:47 +08:00
Merge remote-tracking branch 'origin/develop' into develop
# Conflicts: # src/views/courselibrary/CoursewareManage.vue
This commit is contained in:
@@ -44,7 +44,7 @@ export default defineComponent({
|
|||||||
const store = useStore();
|
const store = useStore();
|
||||||
const isLogin = ref(false);
|
const isLogin = ref(false);
|
||||||
// console.log("router", router.getRoutes(), route);
|
// console.log("router", router.getRoutes(), route);
|
||||||
console.log("版本0.9.5------------");
|
console.log("版本0.9.6------------");
|
||||||
const routes = computed(() => {
|
const routes = computed(() => {
|
||||||
return router.getRoutes().filter((e) => e.meta?.isLink);
|
return router.getRoutes().filter((e) => e.meta?.isLink);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
* @Author: lixg lixg@dongwu-inc.com
|
* @Author: lixg lixg@dongwu-inc.com
|
||||||
* @Date: 2022-11-21 14:32:52
|
* @Date: 2022-11-21 14:32:52
|
||||||
* @LastEditors: lixg lixg@dongwu-inc.com
|
* @LastEditors: lixg lixg@dongwu-inc.com
|
||||||
* @LastEditTime: 2022-12-08 08:48:26
|
* @LastEditTime: 2022-12-08 15:47:05
|
||||||
* @FilePath: /fe-manage/src/api/config.js
|
* @FilePath: /fe-manage/src/api/config.js
|
||||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ export const getTask = (obj) => http.get('/admin/project/detail', { params: obj
|
|||||||
//项目里的新建或编辑阶段任务
|
//项目里的新建或编辑阶段任务
|
||||||
export const addTask = (obj) => http.post('/admin/project/editTask', obj)
|
export const addTask = (obj) => http.post('/admin/project/editTask', obj)
|
||||||
|
|
||||||
|
//模板库项目里的新建或编辑阶段任务
|
||||||
|
export const addTaskTemplate = (obj) => http.post('/admin/project/template/editTask', obj)
|
||||||
|
|
||||||
//项目里的删除任务
|
//项目里的删除任务
|
||||||
export const deleteTask = (obj) => http.delete('/admin/project/deleteTask', { params: obj })
|
export const deleteTask = (obj) => http.delete('/admin/project/deleteTask', { params: obj })
|
||||||
|
|||||||
BIN
src/assets/images/coursewareManage/docpic.png
Normal file
BIN
src/assets/images/coursewareManage/docpic.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
BIN
src/assets/images/coursewareManage/pdfpic.png
Normal file
BIN
src/assets/images/coursewareManage/pdfpic.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
BIN
src/assets/images/coursewareManage/pngpic.png
Normal file
BIN
src/assets/images/coursewareManage/pngpic.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.0 KiB |
BIN
src/assets/images/coursewareManage/pptpic.png
Normal file
BIN
src/assets/images/coursewareManage/pptpic.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
BIN
src/assets/images/coursewareManage/xlspic.png
Normal file
BIN
src/assets/images/coursewareManage/xlspic.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
BIN
src/assets/images/coursewareManage/zippic.png
Normal file
BIN
src/assets/images/coursewareManage/zippic.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
@@ -7,7 +7,7 @@
|
|||||||
:closable="closableQR"
|
:closable="closableQR"
|
||||||
wrapClassName="codeModal"
|
wrapClassName="codeModal"
|
||||||
style="margin-top: 400px"
|
style="margin-top: 400px"
|
||||||
:zIndex="999"
|
:zIndex="9999"
|
||||||
@cancel="qr_exit"
|
@cancel="qr_exit"
|
||||||
>
|
>
|
||||||
<div id="qrcode" class="QR">
|
<div id="qrcode" class="QR">
|
||||||
|
|||||||
@@ -315,7 +315,7 @@ export default {
|
|||||||
} else if (props.isLevel == 3) {
|
} else if (props.isLevel == 3) {
|
||||||
for (let i = 0; i < state.apiTaskList.length; i++) {
|
for (let i = 0; i < state.apiTaskList.length; i++) {
|
||||||
apiTask
|
apiTask
|
||||||
.addTask({
|
.addTaskTemplate({
|
||||||
courseId: Number(state.apiTaskList[i].casesId),
|
courseId: Number(state.apiTaskList[i].casesId),
|
||||||
name: state.apiTaskList[i].title,
|
name: state.apiTaskList[i].title,
|
||||||
projectTaskId: props.projectTaskId,
|
projectTaskId: props.projectTaskId,
|
||||||
|
|||||||
@@ -214,7 +214,7 @@ export default {
|
|||||||
await addTempTask({
|
await addTempTask({
|
||||||
courseId: Number(value.evaluationId),
|
courseId: Number(value.evaluationId),
|
||||||
name: value.evaluationName,
|
name: value.evaluationName,
|
||||||
projectTemplateId: props.projectTemplateId,
|
projectTemplateId: Number(localStorage.getItem("projectTemplateId")),
|
||||||
projectTaskId: props.projectTaskId || 0,
|
projectTaskId: props.projectTaskId || 0,
|
||||||
stageId: props.chooseStageId || 0,
|
stageId: props.chooseStageId || 0,
|
||||||
type: 10,
|
type: 10,
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ export default {
|
|||||||
return message.warning("请输入公告内容");
|
return message.warning("请输入公告内容");
|
||||||
} else {
|
} else {
|
||||||
let obj = {
|
let obj = {
|
||||||
notice: state.noticeContent1,
|
notice: state.noticeContent,
|
||||||
projectId: props.projectId,
|
projectId: props.projectId,
|
||||||
title: "",
|
title: "",
|
||||||
};
|
};
|
||||||
@@ -147,7 +147,7 @@ export default {
|
|||||||
.noticeTitle {
|
.noticeTitle {
|
||||||
margin-left: 32px;
|
margin-left: 32px;
|
||||||
margin-right: 32px;
|
margin-right: 32px;
|
||||||
// padding-top: 20px;
|
margin-bottom: 100px;
|
||||||
.notitle {
|
.notitle {
|
||||||
height: 55px;
|
height: 55px;
|
||||||
border-bottom: 1px solid #ededed;
|
border-bottom: 1px solid #ededed;
|
||||||
|
|||||||
@@ -116,7 +116,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="setc_name"><span>审核意见:</span></div>
|
<div class="setc_name"><span>审核意见:</span></div>
|
||||||
<div class="setc_main">
|
<div class="setc_main">
|
||||||
<a-textarea v-model:value="valueSuggest" :rows="4"/>
|
<a-textarea v-model:value="valueSuggest" :rows="4" show-count
|
||||||
|
:maxlength="20"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -110,7 +110,7 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="main_item">
|
<div class="main_item" style="margin-bottom: 24px; margin-left: 29px">
|
||||||
<div class="signbox">
|
<div class="signbox">
|
||||||
<div class="sign">
|
<div class="sign">
|
||||||
<img
|
<img
|
||||||
@@ -118,17 +118,11 @@
|
|||||||
alt=""
|
alt=""
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<span style="margin-right: 3px">基础投票数:</span>
|
<span style="margin-right: 3px">基础投票数设置</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="btnbox">
|
|
||||||
<!-- <a-upload
|
<!-- <div class="btnbox">
|
||||||
@change="handleChange"
|
|
||||||
:before-upload="beforeUpload"
|
|
||||||
:multiple="true"
|
|
||||||
:max-count="1"
|
|
||||||
action="/manageApi/vote/baseVoteupload"
|
|
||||||
v-model:file-list="fileList"
|
|
||||||
> -->
|
|
||||||
<a-upload :before-upload="beforeUpload" :max-count="1">
|
<a-upload :before-upload="beforeUpload" :max-count="1">
|
||||||
<button class="xkbtn">点击上传</button>
|
<button class="xkbtn">点击上传</button>
|
||||||
<template #itemRender="{ file, actions }">
|
<template #itemRender="{ file, actions }">
|
||||||
@@ -155,14 +149,75 @@
|
|||||||
</div>
|
</div>
|
||||||
<button class="xkbtn" @click="downloadTemplate">下载模板
|
<button class="xkbtn" @click="downloadTemplate">下载模板
|
||||||
</button>
|
</button>
|
||||||
|
</div> -->
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
style="
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-left: 64px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<div>参与数:</div>
|
||||||
|
<div style="width: 159px">
|
||||||
|
<a-input-number
|
||||||
|
style="width: 159px"
|
||||||
|
id="inputNumber"
|
||||||
|
v-model:value="partakeNum"
|
||||||
|
:min="0"
|
||||||
|
:max="99999"
|
||||||
|
:precision="0"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="main_item" style="margin-top: -25px">
|
<div
|
||||||
|
style="
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-left: 64px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<div>总票数:</div>
|
||||||
|
<div style="width: 159px">
|
||||||
|
<a-input-number
|
||||||
|
style="width: 159px"
|
||||||
|
id="inputNumber"
|
||||||
|
v-model:value="totalVoteNum"
|
||||||
|
:min="0"
|
||||||
|
:max="99999"
|
||||||
|
:precision="0"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
style="
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-left: 64px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<div>浏览数:</div>
|
||||||
|
<div style="width: 159px">
|
||||||
|
<a-input-number
|
||||||
|
style="width: 159px"
|
||||||
|
id="inputNumber"
|
||||||
|
v-model:value="browseNum"
|
||||||
|
:min="0"
|
||||||
|
:max="99999"
|
||||||
|
:precision="0"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- <div class="main_item" style="margin-top: -25px">
|
||||||
<div class="signbox"></div>
|
<div class="signbox"></div>
|
||||||
<div class="btnbox">
|
<div class="btnbox">
|
||||||
<span style="color: #999999">支持:xls.xlsx</span>
|
<span style="color: #999999">支持:xls.xlsx</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div> -->
|
||||||
<div class="main_item2">
|
<div class="main_item2">
|
||||||
<div class="signbox">
|
<div class="signbox">
|
||||||
<span style="margin-right: 3px">投票说明:</span>
|
<span style="margin-right: 3px">投票说明:</span>
|
||||||
@@ -272,15 +327,23 @@ export default {
|
|||||||
fileList: [],
|
fileList: [],
|
||||||
voteCount: null,
|
voteCount: null,
|
||||||
projectTemplateId: null,
|
projectTemplateId: null,
|
||||||
|
|
||||||
|
partakeNum: 0, //参与数
|
||||||
|
totalVoteNum: 0, //总票数
|
||||||
|
browseNum: 0, //浏览数
|
||||||
});
|
});
|
||||||
const closeDrawer = () => {
|
const closeDrawer = () => {
|
||||||
(state.inputV1 = ""),
|
state.inputV1 = "";
|
||||||
(state.textV1 = ""),
|
state.textV1 = "";
|
||||||
(state.time = undefined),
|
state.time = undefined;
|
||||||
(state.basevote = ""),
|
state.basevote = "";
|
||||||
(state.ballotId = ""),
|
state.ballotId = "";
|
||||||
ctx.emit("update:addvoteVisible", false);
|
ctx.emit("update:addvoteVisible", false);
|
||||||
ctx.emit("update:edit", false);
|
ctx.emit("update:edit", false);
|
||||||
|
|
||||||
|
state.partakeNum = 0; //参与数
|
||||||
|
state.totalVoteNum = 0; //总票数
|
||||||
|
state.browseNum = 0; //浏览数
|
||||||
};
|
};
|
||||||
const afterVisibleChange = (bool) => {
|
const afterVisibleChange = (bool) => {
|
||||||
if (props.edit && bool) {
|
if (props.edit && bool) {
|
||||||
@@ -337,6 +400,9 @@ export default {
|
|||||||
dayjs(res.data.data.voteStartTime, "YYYY-MM-DD"),
|
dayjs(res.data.data.voteStartTime, "YYYY-MM-DD"),
|
||||||
dayjs(res.data.data.voteEndTime, "YYYY-MM-DD"),
|
dayjs(res.data.data.voteEndTime, "YYYY-MM-DD"),
|
||||||
];
|
];
|
||||||
|
state.totalVoteNum = res.data.data.votesTotal; //总票数
|
||||||
|
state.partakeNum = res.data.data.numberOfInvolved; //参与数
|
||||||
|
state.browseNum = res.data.data.numberOfBrowse; //浏览数
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.log("获取投票信息失败", err);
|
console.log("获取投票信息失败", err);
|
||||||
@@ -411,9 +477,9 @@ export default {
|
|||||||
message.destroy();
|
message.destroy();
|
||||||
return message.warning("请输入直播时间");
|
return message.warning("请输入直播时间");
|
||||||
}
|
}
|
||||||
if (!state.basevote) {
|
// if (!state.basevote) {
|
||||||
return message.warning("请上传投票基数");
|
// return message.warning("请上传投票基数");
|
||||||
}
|
// }
|
||||||
if (state.time != undefined) {
|
if (state.time != undefined) {
|
||||||
state.startTime = dayjs(state.time[0]).format("YYYY-MM-DD");
|
state.startTime = dayjs(state.time[0]).format("YYYY-MM-DD");
|
||||||
state.endTime = dayjs(state.time[1]).format("YYYY-MM-DD");
|
state.endTime = dayjs(state.time[1]).format("YYYY-MM-DD");
|
||||||
@@ -427,6 +493,9 @@ export default {
|
|||||||
ballotId: state.ballotId,
|
ballotId: state.ballotId,
|
||||||
baseVote: state.basevote,
|
baseVote: state.basevote,
|
||||||
voteExplain: state.textV1,
|
voteExplain: state.textV1,
|
||||||
|
votesTotal: state.totalVoteNum, //总票数
|
||||||
|
numberOfInvolved: state.partakeNum, //参与数
|
||||||
|
numberOfBrowse: state.browseNum, //浏览数
|
||||||
};
|
};
|
||||||
if (props.edit) {
|
if (props.edit) {
|
||||||
api
|
api
|
||||||
@@ -469,7 +538,7 @@ export default {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function downloadTemplate() {
|
function downloadTemplate() {
|
||||||
window.open('/manageApi/投票基础数据模版.xlsx')
|
window.open("/manageApi/投票基础数据模版.xlsx");
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -160,7 +160,48 @@
|
|||||||
:key="index"
|
:key="index"
|
||||||
>
|
>
|
||||||
<div class="file_img">
|
<div class="file_img">
|
||||||
<img :src="item.img" />
|
<img
|
||||||
|
v-if="
|
||||||
|
item.indexOf('jpg') !== -1 ||
|
||||||
|
item.indexOf('jpeg') !== -1 ||
|
||||||
|
item.indexOf('png') !== -1
|
||||||
|
"
|
||||||
|
src="@/assets/images/coursewareManage/pngpic.png"
|
||||||
|
/>
|
||||||
|
<div v-else>
|
||||||
|
<img
|
||||||
|
v-if="item.indexOf('doc') !== -1"
|
||||||
|
src="@/assets/images/coursewareManage/docpic.png"
|
||||||
|
/>
|
||||||
|
<div v-else>
|
||||||
|
<img
|
||||||
|
v-if="item.indexOf('xls') !== -1"
|
||||||
|
src="@/assets/images/coursewareManage/xlspic.png"
|
||||||
|
/>
|
||||||
|
<div v-else>
|
||||||
|
<img
|
||||||
|
v-if="item.indexOf('ppt') !== -1"
|
||||||
|
src="@/assets/images/coursewareManage/pptpic.png"
|
||||||
|
/>
|
||||||
|
<div v-else>
|
||||||
|
<img
|
||||||
|
v-if="item.indexOf('pdf') !== -1"
|
||||||
|
src="@/assets/images/coursewareManage/pdfpic.png"
|
||||||
|
/>
|
||||||
|
<div v-else>
|
||||||
|
<img
|
||||||
|
v-if="item.indexOf('zip') !== -1"
|
||||||
|
src="@/assets/images/coursewareManage/zippic.png"
|
||||||
|
/>
|
||||||
|
<img
|
||||||
|
v-else
|
||||||
|
src="@/assets/images/coursewareManage/docpic.png"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="file_detail">
|
<div class="file_detail">
|
||||||
<div class="file_name">
|
<div class="file_name">
|
||||||
@@ -650,7 +691,9 @@ export default defineComponent({
|
|||||||
.fotarea {
|
.fotarea {
|
||||||
width: calc(100% - 150px);
|
width: calc(100% - 150px);
|
||||||
position: relative;
|
position: relative;
|
||||||
|
img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
.fuwenben {
|
.fuwenben {
|
||||||
width: 90%;
|
width: 90%;
|
||||||
height: 20px;
|
height: 20px;
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
<!-- 审核理由 -->
|
<!-- 审核理由 -->
|
||||||
<div v-if="statusJuJue" class="statusJuJue">
|
<div v-if="statusJuJue" class="statusJuJue">
|
||||||
<span>审核意见:</span>
|
<span>审核意见:</span>
|
||||||
<span>-</span>
|
<span>{{ auditDescription }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="faceteach" :style="{ display: ft_hs ? 'block' : 'none' }">
|
<div class="faceteach" :style="{ display: ft_hs ? 'block' : 'none' }">
|
||||||
<div class="ft_main">
|
<div class="ft_main">
|
||||||
@@ -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">
|
||||||
@@ -310,7 +310,7 @@
|
|||||||
<span style="margin-right: 10px">附件</span>
|
<span style="margin-right: 10px">附件</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="item_inp">
|
<div class="item_inp">
|
||||||
<FJUpload v-model:value="attach"></FJUpload>
|
<FJUpload v-model:value="attach" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -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>
|
||||||
@@ -360,19 +360,19 @@ import {
|
|||||||
defineComponent,
|
defineComponent,
|
||||||
ref,
|
ref,
|
||||||
shallowRef,
|
shallowRef,
|
||||||
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";
|
||||||
|
import * as api2 from "../../api/indexAudit";
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
components: {
|
components: {
|
||||||
Editor,
|
Editor,
|
||||||
@@ -380,15 +380,16 @@ 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: '',
|
ft_eidt: false,
|
||||||
|
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: "",
|
||||||
@@ -401,15 +402,20 @@ export default defineComponent({
|
|||||||
tags_val: [],
|
tags_val: [],
|
||||||
qdms_inputV6: "",
|
qdms_inputV6: "",
|
||||||
imgList: [],
|
imgList: [],
|
||||||
|
auditDescription: "",
|
||||||
});
|
});
|
||||||
|
|
||||||
const visibleOpen = (offcourseId) => {
|
const visibleOpen = (offcourseId, name) => {
|
||||||
state.offcourseId = offcourseId;
|
state.offcourseId = offcourseId;
|
||||||
|
|
||||||
if (state.offcourseId) {
|
if (state.offcourseId) {
|
||||||
|
state.ft_hs = true;
|
||||||
|
state.ft_eidt = true;
|
||||||
handleEditInfo(state.offcourseId);
|
handleEditInfo(state.offcourseId);
|
||||||
} else {
|
} else {
|
||||||
state.ft_hs = true;
|
state.ft_hs = true;
|
||||||
|
state.ft_eidt = false;
|
||||||
|
state.qdms_inputV1 = name;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const visibleClose = () => {
|
const visibleClose = () => {
|
||||||
@@ -429,7 +435,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 = "";
|
||||||
@@ -442,7 +448,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 = "";
|
||||||
};
|
};
|
||||||
@@ -453,22 +459,24 @@ export default defineComponent({
|
|||||||
// 内容 HTML
|
// 内容 HTML
|
||||||
const valueHtml = ref("");
|
const valueHtml = ref("");
|
||||||
// // 模拟 ajax 异步获取内容
|
// // 模拟 ajax 异步获取内容
|
||||||
onMounted(() => {
|
// onMounted(() => {
|
||||||
setTimeout(() => {
|
// console.log("toolbar222222222222222111111");
|
||||||
// valueHtml.value = "<p>模拟 Ajax 异步设置内容</p>";
|
// console.log(editorRef.value);
|
||||||
console.log("toolbar222222222222222");
|
// setTimeout(() => {
|
||||||
console.log(editorRef.value);
|
// // valueHtml.value = "<p>模拟 Ajax 异步设置内容</p>";
|
||||||
// const toolbar = DomEditor.getToolbar(editorRef.value);
|
// console.log("toolbar22222222222222222222222233");
|
||||||
// const menu = editorRef.value.getAllMenuKeys();
|
// console.log(editorRef.value);
|
||||||
// const bar = toolbar.getConfig().toolbarKeys;
|
// // const toolbar = DomEditor.getToolbar(editorRef.value);
|
||||||
// console.log(menu);
|
// // const menu = editorRef.value.getAllMenuKeys();
|
||||||
// console.log(bar);
|
// // const bar = toolbar.getConfig().toolbarKeys;
|
||||||
}, 3500);
|
// // console.log(menu);
|
||||||
});
|
// // console.log(bar);
|
||||||
|
// }, 3500);
|
||||||
|
// });
|
||||||
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) {
|
||||||
@@ -483,13 +491,19 @@ export default defineComponent({
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
const handleCreated = (editor) => {
|
const handleCreated = (editor) => {
|
||||||
|
console.log(4545454544);
|
||||||
|
console.log(editor);
|
||||||
editorRef.value = editor; // 记录 editor 实例,重要!
|
editorRef.value = editor; // 记录 editor 实例,重要!
|
||||||
};
|
};
|
||||||
// 组件销毁时,也及时销毁编辑器
|
const handleDestory = () => {
|
||||||
onBeforeUnmount(() => {
|
|
||||||
const editor = editorRef.value;
|
const editor = editorRef.value;
|
||||||
if (editor == null) return;
|
if (editor == null) return;
|
||||||
editor.destroy();
|
editor.destroy();
|
||||||
|
};
|
||||||
|
// 组件销毁时,也及时销毁编辑器
|
||||||
|
onBeforeUnmount(() => {
|
||||||
|
console.log(78787866666666666666);
|
||||||
|
// handleDestory();
|
||||||
});
|
});
|
||||||
// 富文本 eeeeeeeeeeeeee
|
// 富文本 eeeeeeeeeeeeee
|
||||||
|
|
||||||
@@ -505,48 +519,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");
|
||||||
@@ -618,7 +632,9 @@ export default defineComponent({
|
|||||||
if (param === "review") {
|
if (param === "review") {
|
||||||
//新建时点击审核按钮
|
//新建时点击审核按钮
|
||||||
submitReview(res.data.data.offcourseId);
|
submitReview(res.data.data.offcourseId);
|
||||||
}else visibleClose();
|
} else {
|
||||||
|
visibleClose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -639,6 +655,22 @@ export default defineComponent({
|
|||||||
if (Number(item.auditStatus) === 2 && Number(item.status) === 0) {
|
if (Number(item.auditStatus) === 2 && Number(item.status) === 0) {
|
||||||
state.statusTingQi = 0;
|
state.statusTingQi = 0;
|
||||||
}
|
}
|
||||||
|
if (Number(item.auditStatus) === -1) {
|
||||||
|
let obj = {
|
||||||
|
offcourseId: offcourseId,
|
||||||
|
type: 2,
|
||||||
|
pageNo: 1,
|
||||||
|
pageSize: 1,
|
||||||
|
};
|
||||||
|
api2.auditList(obj).then((res) => {
|
||||||
|
if (res.data.data.rows && res.data.data.rows.length > 0) {
|
||||||
|
state.auditDescription = res.data.data.rows[0].description
|
||||||
|
? res.data.data.rows[0].description
|
||||||
|
: "-";
|
||||||
|
console.log("state.auditDescription", state.auditDescription);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
state.qdms_inputV1 = item.name;
|
state.qdms_inputV1 = item.name;
|
||||||
state.feng_mian_1 = item.picUrl;
|
state.feng_mian_1 = item.picUrl;
|
||||||
@@ -648,10 +680,9 @@ 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;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleTagChange = () => {
|
const handleTagChange = () => {
|
||||||
@@ -701,15 +732,16 @@ export default defineComponent({
|
|||||||
visibleClose,
|
visibleClose,
|
||||||
handleTagChange,
|
handleTagChange,
|
||||||
handleTagClose,
|
handleTagClose,
|
||||||
handleCreated,
|
|
||||||
handlePush,
|
handlePush,
|
||||||
submitReview,
|
|
||||||
reviewClick,
|
reviewClick,
|
||||||
|
|
||||||
editorRef,
|
editorRef,
|
||||||
valueHtml,
|
valueHtml,
|
||||||
mode: "simple", // 或 'simple'
|
mode: "simple", // 或 'simple'
|
||||||
toolbarConfig,
|
toolbarConfig,
|
||||||
editorConfig,
|
editorConfig,
|
||||||
|
handleCreated,
|
||||||
|
handleDestory,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -125,7 +125,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="left">审核意见:</div>
|
<div class="left">审核意见:</div>
|
||||||
<div class="rig">
|
<div class="rig">
|
||||||
<a-textarea v-model:value="valueSugg" :rows="4" />
|
<a-textarea v-model:value="valueSugg" :rows="4" show-count
|
||||||
|
:maxlength="20"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -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 = "";
|
||||||
|
|||||||
@@ -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,
|
||||||
@@ -1443,7 +1448,7 @@ export default {
|
|||||||
addAuthList: [],
|
addAuthList: [],
|
||||||
|
|
||||||
codevisible: false, //二维码是否显示
|
codevisible: false, //二维码是否显示
|
||||||
codeInfo: null, //二维码标题
|
codeInfo: null, //二维码内容
|
||||||
});
|
});
|
||||||
|
|
||||||
const levelList = reactive({
|
const levelList = reactive({
|
||||||
@@ -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 = () => {
|
||||||
|
|||||||
@@ -279,34 +279,43 @@
|
|||||||
<div class="ntc_body">
|
<div class="ntc_body">
|
||||||
<div class="ntc_switch">
|
<div class="ntc_switch">
|
||||||
<a-switch
|
<a-switch
|
||||||
size="small"
|
size="small"
|
||||||
v-model:checked="checked"
|
v-model:checked="checked"
|
||||||
@click="changeopclo"
|
@click="changeopclo"
|
||||||
/>
|
/>
|
||||||
<div
|
<div v-if="(checked==true)"
|
||||||
class="opclo"
|
class="opclo">
|
||||||
:style="{ display: hideshow ? 'block' : 'none' }"
|
|
||||||
>
|
|
||||||
<span>关闭</span>
|
<span>关闭</span>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div v-if="(checked==false)"
|
||||||
class="opclo"
|
class="opclo" >
|
||||||
:style="{ display: hideshow ? 'none' : 'block' }"
|
|
||||||
>
|
|
||||||
<span>开启</span>
|
<span>开启</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div v-if="(checked==true)"
|
||||||
class="ntc_content"
|
class="ntc_content">
|
||||||
:style="{ display: hideshow ? 'block' : 'none' }"
|
<div class="ntcc_tit">当前公告内容:</div>
|
||||||
>
|
<div class="textarea">
|
||||||
<div class="ntcc_tit">公告内容</div>
|
{{noticeContent==""?"暂无公告":noticeContent}}
|
||||||
|
<div v-if="(editFlag == false)" class="btnarea" >
|
||||||
|
<div> </div>
|
||||||
|
<div class="area_btn" @click="editNotice">
|
||||||
|
|
||||||
|
<div class="btnText">编辑</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<template v-if="(editFlag==true)">
|
||||||
|
<div> </div>
|
||||||
|
<div class="ntcc_tit" >编辑公告:</div>
|
||||||
<div class="textarea">
|
<div class="textarea">
|
||||||
<a-textarea
|
<a-textarea
|
||||||
v-model:value="projectInfo.notice"
|
v-model:value="projectInfo.notice"
|
||||||
placeholder="公告信息最多输入150个字。"
|
placeholder="公告信息最多输入150个字。"
|
||||||
:maxlength="textnum"
|
:maxlength="textnum"
|
||||||
allow-clear
|
allow-clear
|
||||||
/>
|
/>
|
||||||
<div class="btnarea">
|
<div class="btnarea">
|
||||||
<div> </div>
|
<div> </div>
|
||||||
@@ -315,13 +324,15 @@
|
|||||||
<div class="btnText">发布</div>
|
<div class="btnText">发布</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
</a-tabs>
|
</a-tabs>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
|
|
||||||
<a-tab-pane key="3" tab="项目积分">
|
<a-tab-pane key="3" tab="项目积分">
|
||||||
<div class="split"></div>
|
<div class="split"></div>
|
||||||
<div class="projectscore">
|
<div class="projectscore">
|
||||||
@@ -852,29 +863,25 @@ export default defineComponent({
|
|||||||
],
|
],
|
||||||
isEdit: false, // 是否处于编辑状态
|
isEdit: false, // 是否处于编辑状态
|
||||||
// 基本信息
|
// 基本信息
|
||||||
projectInfo: {
|
projectInfo: { },
|
||||||
beginTime: null,
|
noticeContent:"",
|
||||||
endTime: null,
|
editFlag:false,
|
||||||
name: null,
|
|
||||||
manager: null,
|
|
||||||
notice: null,
|
|
||||||
sourceBelongId: null,
|
|
||||||
remark: "",
|
|
||||||
courseSyncFlag: false,
|
|
||||||
level: null,
|
|
||||||
systemId: null,
|
|
||||||
boeFlag: false,
|
|
||||||
status: null,
|
|
||||||
picUrl: null,
|
|
||||||
noticeFlag: null,
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
const value = ref("");
|
const value = ref("");
|
||||||
const textnum = "150";
|
const textnum = "150";
|
||||||
const routered = useRouter();
|
const routered = useRouter();
|
||||||
const changeopclo = () => {
|
const changeopclo = () => {
|
||||||
state.hideshow = !state.hideshow;
|
state.projectInfo.noticeFlag = state.checked?1:0;
|
||||||
|
api
|
||||||
|
.templateEdit( state.projectInfo)
|
||||||
|
.then((res) => {
|
||||||
|
console.log(res);
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const changecheck2 = () => {
|
const changecheck2 = () => {
|
||||||
state.checked2 = !state.checked2;
|
state.checked2 = !state.checked2;
|
||||||
};
|
};
|
||||||
@@ -906,6 +913,10 @@ export default defineComponent({
|
|||||||
state.isEdit = false;
|
state.isEdit = false;
|
||||||
getDetail();
|
getDetail();
|
||||||
};
|
};
|
||||||
|
const editNotice =()=>{
|
||||||
|
state.editFlag = true ;
|
||||||
|
}
|
||||||
|
|
||||||
const checkType = (type) => {
|
const checkType = (type) => {
|
||||||
let typeRules = [
|
let typeRules = [
|
||||||
"",
|
"",
|
||||||
@@ -933,30 +944,16 @@ export default defineComponent({
|
|||||||
api
|
api
|
||||||
.templateDetail(localStorage.getItem("projectTemplateId"))
|
.templateDetail(localStorage.getItem("projectTemplateId"))
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
console.log("get model list ----->", res, res.data.data.stageList);
|
console.log("get model list ----->", res, res.data.data.stageList);
|
||||||
|
|
||||||
state.taskSyllabus = [];
|
state.taskSyllabus = [];
|
||||||
console.log(res);
|
console.log(res);
|
||||||
state.projectInfo.name = res.data.data.projectTemplateInfo.name;
|
state.projectInfo = res.data.data.projectTemplateInfo;
|
||||||
state.projectInfo.beginTime = res.data.data.projectTemplateInfo.beginTime;
|
|
||||||
state.projectInfo.endTime = res.data.data.projectTemplateInfo.endTime;
|
state.noticeContent = state.projectInfo.notice;
|
||||||
state.projectInfo.manager = res.data.data.projectTemplateInfo.manager;
|
state.checked = state.projectInfo.noticeFlag==1?true:false;
|
||||||
state.projectInfo.notice = res.data.data.projectTemplateInfo.notice;
|
console.log("res.data.data.projectTemplateInfo",res.data.data.projectTemplateInfo);
|
||||||
state.projectInfo.sourceBelongId = res.data.data.projectTemplateInfo.sourceBelongId;
|
|
||||||
state.projectInfo.managerId = res.data.data.projectTemplateInfo.managerId;
|
|
||||||
state.projectInfo.remark = res.data.data.projectTemplateInfo.remark;
|
|
||||||
state.projectInfo.courseSyncFlag = res.data.data.projectTemplateInfo.courseSyncFlag;
|
|
||||||
state.projectInfo.level = res.data.data.projectTemplateInfo.level;
|
|
||||||
state.projectInfo.systemId = res.data.data.projectTemplateInfo.systemId;
|
|
||||||
state.projectInfo.boeFlag = res.data.data.projectTemplateInfo.boeFlag;
|
|
||||||
state.projectInfo.noticeFlag = res.data.data.projectTemplateInfo.noticeFlag;
|
|
||||||
state.projectInfo.remark = res.data.data.projectTemplateInfo.remark;
|
|
||||||
state.projectInfo.status = res.data.data.projectTemplateInfo.status;
|
|
||||||
state.projectInfo.picUrl = res.data.data.projectTemplateInfo.picUrl;
|
|
||||||
state.picUrl = res.data.data.projectTemplateInfo.picUrl;
|
|
||||||
state.projectInfo.attach = res.data.data.projectTemplateInfo.attach;
|
|
||||||
state.projectInfo.category = res.data.data.projectTemplateInfo.category;
|
|
||||||
state.projectId = res.data.data.projectTemplateInfo.projectTemplateId;
|
|
||||||
try{
|
try{
|
||||||
state.fileList = JSON.parse(res.data.data.projectTemplateInfo.attach);
|
state.fileList = JSON.parse(res.data.data.projectTemplateInfo.attach);
|
||||||
}catch{
|
}catch{
|
||||||
@@ -967,7 +964,10 @@ export default defineComponent({
|
|||||||
console.log("data=====", data);
|
console.log("data=====", data);
|
||||||
for (let i in data) {
|
for (let i in data) {
|
||||||
console.log("what ------ > ", i, data);
|
console.log("what ------ > ", i, data);
|
||||||
state.taskSyllabus.push({ text: data[i].name?data[i].name:'无阶段任务', children: [] });
|
if(data[i].taskList.length!==0){
|
||||||
|
state.taskSyllabus.push({ text: data[i].name?data[i].name:'无阶段任务', children: [] });
|
||||||
|
}
|
||||||
|
|
||||||
for (let j in data[i].taskList) {
|
for (let j in data[i].taskList) {
|
||||||
state.taskSyllabus[i].children.push({
|
state.taskSyllabus[i].children.push({
|
||||||
course: checkType(data[i].taskList[j].type),
|
course: checkType(data[i].taskList[j].type),
|
||||||
@@ -987,31 +987,16 @@ export default defineComponent({
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
// 发布公告
|
// 发布公告
|
||||||
const addNotice = () => {
|
const addNotice = () => {
|
||||||
console.log("ok====s");
|
// state.projectInfo.notice=
|
||||||
let obj = {
|
if(!state.projectInfo.notice){
|
||||||
name: state.projectInfo.name,
|
return message.warning("请输入公告内容");
|
||||||
category: state.projectInfo.category,
|
}
|
||||||
picUrl: state.projectInfo.picUrl,
|
|
||||||
manager: state.projectInfo.manager,
|
|
||||||
managerId: state.projectInfo.managerId || 0,
|
|
||||||
sourceBelongId: state.projectInfo.sourceBelongId,
|
|
||||||
level: state.projectInfo.level,
|
|
||||||
systemId: state.projectInfo.systemId,
|
|
||||||
boeFlag: state.projectInfo.boeFlag ? 1 : 0,
|
|
||||||
courseSyncFlag: state.projectInfo.courseSyncFlag ? 1 : 0,
|
|
||||||
notice: state.projectInfo.notice,
|
|
||||||
noticeFlag: state.projectInfo.noticeFlag,
|
|
||||||
projectTemplateId: localStorage.getItem("projectTemplateId"),
|
|
||||||
remark: state.projectInfo.remark,
|
|
||||||
status: state.projectInfo.status,
|
|
||||||
attach: state.projectInfo.attach,
|
|
||||||
};
|
|
||||||
console.log("obj======", obj);
|
|
||||||
api
|
api
|
||||||
.templateEdit(obj)
|
.templateEdit( state.projectInfo)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
|
state.noticeContent = state.projectInfo.notice;
|
||||||
message.success("公告发布成功");
|
message.success("公告发布成功");
|
||||||
console.log(res);
|
console.log(res);
|
||||||
})
|
})
|
||||||
@@ -1019,7 +1004,9 @@ export default defineComponent({
|
|||||||
message.error("公告发布失败" + err);
|
message.error("公告发布失败" + err);
|
||||||
console.log(err);
|
console.log(err);
|
||||||
});
|
});
|
||||||
|
state.editFlag =false;
|
||||||
};
|
};
|
||||||
|
|
||||||
// 删除阶段
|
// 删除阶段
|
||||||
const stateDel = (id) => {
|
const stateDel = (id) => {
|
||||||
api
|
api
|
||||||
@@ -1051,12 +1038,12 @@ export default defineComponent({
|
|||||||
routered.push({
|
routered.push({
|
||||||
path: "/templateAdd",
|
path: "/templateAdd",
|
||||||
query: {
|
query: {
|
||||||
projectId: state.projectId,
|
projectTemplateId: state.projectInfo.projectTemplateId,
|
||||||
name: state.name,
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// 新建或编辑阶段
|
// 新建或编辑阶段
|
||||||
const stateEdit = () => {
|
const stateEdit = () => {
|
||||||
let obj = {
|
let obj = {
|
||||||
@@ -1289,7 +1276,8 @@ export default defineComponent({
|
|||||||
editRule,
|
editRule,
|
||||||
handleChange2,
|
handleChange2,
|
||||||
scoresum,
|
scoresum,
|
||||||
checkedClose
|
checkedClose,
|
||||||
|
editNotice
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -3,13 +3,13 @@
|
|||||||
<div class="projectAdd">
|
<div class="projectAdd">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<span class="title"
|
<span class="title"
|
||||||
>{{ projectInfo.parentId ? "编辑" : "创建" }}项目</span
|
>{{ projectInfo.parentId ? "编辑" : "创建" }}项目</span
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
@click="backPage"
|
@click="backPage"
|
||||||
style="cursor: pointer"
|
style="cursor: pointer"
|
||||||
to="/projectmanage"
|
to="/projectmanage"
|
||||||
class="goback"
|
class="goback"
|
||||||
>
|
>
|
||||||
<span class="return"></span><span class="returntext">返回</span>
|
<span class="return"></span><span class="returntext">返回</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -19,8 +19,8 @@
|
|||||||
<div class="name" v-if="projectInfo.parentName">
|
<div class="name" v-if="projectInfo.parentName">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img
|
<img
|
||||||
class="nameimg"
|
class="nameimg"
|
||||||
src="../../assets/images/basicinfo/asterisk.png"
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
/>
|
/>
|
||||||
<div class="inname">项目归属</div>
|
<div class="inname">项目归属</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -33,26 +33,26 @@
|
|||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img
|
<img
|
||||||
class="nameimg"
|
class="nameimg"
|
||||||
src="../../assets/images/basicinfo/asterisk.png"
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
/>
|
/>
|
||||||
<div class="inname">项目名称</div>
|
<div class="inname">项目名称</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="in">
|
<div class="in">
|
||||||
<a-input
|
<a-input
|
||||||
v-model:value="projectInfo.name"
|
v-model:value="projectInfo.name"
|
||||||
placeholder="请输入项目名称"
|
placeholder="请输入项目名称"
|
||||||
show-count
|
show-count
|
||||||
:maxlength="30"
|
:maxlength="30"
|
||||||
:disabled="viewDetail ? true : false"
|
:disabled="viewDetail ? true : false"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img
|
<img
|
||||||
class="nameimg"
|
class="nameimg"
|
||||||
src="../../assets/images/basicinfo/asterisk.png"
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
/>
|
/>
|
||||||
<div class="inname">分类</div>
|
<div class="inname">分类</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -61,92 +61,97 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name flex-top">
|
<div class="name flex-top">
|
||||||
<div class="namebox" style="margin-top:10px">
|
<div class="namebox" style="margin-top: 10px">
|
||||||
<img
|
<img
|
||||||
class="nameimg"
|
class="nameimg"
|
||||||
src="../../assets/images/basicinfo/asterisk.png"
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
/>
|
/>
|
||||||
<div class="inname">封面图</div>
|
<div class="inname">封面图</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="in select" style="flex:1">
|
<div class="in select" style="flex: 1">
|
||||||
<a-select
|
<a-select
|
||||||
:getPopupContainer="
|
:getPopupContainer="
|
||||||
(triggerNode) => {
|
(triggerNode) => {
|
||||||
return triggerNode.parentNode || document.body;
|
return triggerNode.parentNode || document.body;
|
||||||
}
|
}
|
||||||
"
|
"
|
||||||
v-model:value="picUrlName"
|
v-model:value="picUrlName"
|
||||||
dropdownClassName="dropdown-style"
|
dropdownClassName="dropdown-style"
|
||||||
style="width: 440px"
|
style="width: 440px"
|
||||||
placeholder="请选择"
|
placeholder="请选择"
|
||||||
:options="projectPic"
|
:options="projectPic"
|
||||||
@change="handleChangeSelect"
|
@change="handleChangeSelect"
|
||||||
allowClear
|
allowClear
|
||||||
></a-select>
|
></a-select>
|
||||||
<img
|
<img
|
||||||
style="width:100px;height:100px;margin-top:20px;border-radius: 8px"
|
style="
|
||||||
v-if="projectInfo.picUrl"
|
width: 100px;
|
||||||
:src="projectInfo.picUrl"
|
height: 100px;
|
||||||
alt="avatar"
|
margin-top: 20px;
|
||||||
|
border-radius: 8px;
|
||||||
|
"
|
||||||
|
v-if="projectInfo.picUrl"
|
||||||
|
:src="projectInfo.picUrl"
|
||||||
|
alt="avatar"
|
||||||
/>
|
/>
|
||||||
<div class="i_bottom">
|
<div class="i_bottom">
|
||||||
<span style="color: #999ba3">
|
<span style="color: #999ba3">
|
||||||
高宽比为16:9 (如:800*450) png或jpg图片
|
高宽比为16:9 (如:800*450) png或jpg图片
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img
|
<img
|
||||||
class="nameimg"
|
class="nameimg"
|
||||||
src="../../assets/images/basicinfo/asterisk.png"
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
/>
|
/>
|
||||||
<div class="inname">项目时间</div>
|
<div class="inname">项目时间</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="in">
|
<div class="in">
|
||||||
<a-range-picker
|
<a-range-picker
|
||||||
separator="至"
|
separator="至"
|
||||||
:placeholder="[' 开始时间', ' 结束时间']"
|
:placeholder="[' 开始时间', ' 结束时间']"
|
||||||
v-model:value="projectInfo.rangeTime"
|
v-model:value="projectInfo.rangeTime"
|
||||||
style="width: 100%; height: 40px; border-radius: 5px"
|
style="width: 100%; height: 40px; border-radius: 5px"
|
||||||
valueFormat="YYYY-MM-DD HH:mm:ss"
|
valueFormat="YYYY-MM-DD HH:mm:ss"
|
||||||
@change="timeChange"
|
@change="timeChange"
|
||||||
:disabled="viewDetail ? true : false"
|
:disabled="viewDetail ? true : false"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img
|
<img
|
||||||
class="nameimg"
|
class="nameimg"
|
||||||
src="../../assets/images/basicinfo/asterisk.png"
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
/>
|
/>
|
||||||
<div class="inname">项目经理</div>
|
<div class="inname">项目经理</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="in">
|
<div class="in">
|
||||||
<ProjectManager
|
<ProjectManager
|
||||||
v-model:value="projectInfo.managerId"
|
v-model:value="projectInfo.managerId"
|
||||||
v-model:name="projectInfo.manager"
|
v-model:name="projectInfo.manager"
|
||||||
@onChange="managerChange"
|
@onChange="managerChange"
|
||||||
mode="multiple"
|
mode="multiple"
|
||||||
></ProjectManager>
|
></ProjectManager>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img
|
<img
|
||||||
class="nameimg"
|
class="nameimg"
|
||||||
src="../../assets/images/basicinfo/asterisk.png"
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
/>
|
/>
|
||||||
<div class="inname">资源归属</div>
|
<div class="inname">资源归属</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="in select">
|
<div class="in select">
|
||||||
<OrgClass
|
<OrgClass
|
||||||
v-model:value="projectInfo.sourceBelongId"
|
v-model:value="projectInfo.sourceBelongId"
|
||||||
v-model:name="projectInfo.sourceBelongName"
|
v-model:name="projectInfo.sourceBelongName"
|
||||||
></OrgClass>
|
></OrgClass>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -156,12 +161,12 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="in">
|
<div class="in">
|
||||||
<a-textarea
|
<a-textarea
|
||||||
v-model:value="projectInfo.remark"
|
v-model:value="projectInfo.remark"
|
||||||
style="height: 80px"
|
style="height: 80px"
|
||||||
placeholder="请输入说明"
|
placeholder="请输入说明"
|
||||||
show-count
|
show-count
|
||||||
:maxlength="200"
|
:maxlength="200"
|
||||||
:disabled="viewDetail ? true : false"
|
:disabled="viewDetail ? true : false"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -171,16 +176,16 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="in">
|
<div class="in">
|
||||||
<a-checkbox
|
<a-checkbox
|
||||||
v-model:checked="courseSyncFlag"
|
v-model:checked="courseSyncFlag"
|
||||||
:disabled="viewDetail ? true : false"
|
:disabled="viewDetail ? true : false"
|
||||||
><span
|
><span
|
||||||
style="
|
style="
|
||||||
width: 100%;
|
width: 100%;
|
||||||
color: rgba(109, 117, 132, 1);
|
color: rgba(109, 117, 132, 1);
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
"
|
"
|
||||||
>同步课程学习记录(如学员在课程库中拥有课程的学习记录,自动免修该课程)</span
|
>同步课程学习记录(如学员在课程库中拥有课程的学习记录,自动免修该课程)</span
|
||||||
></a-checkbox
|
></a-checkbox
|
||||||
>
|
>
|
||||||
<!-- <a-switch
|
<!-- <a-switch
|
||||||
v-model:checked="projectInfo.courseSyncFlag"
|
v-model:checked="projectInfo.courseSyncFlag"
|
||||||
@@ -201,8 +206,8 @@
|
|||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img
|
<img
|
||||||
class="nameimg"
|
class="nameimg"
|
||||||
src="../../assets/images/basicinfo/asterisk.png"
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
/>
|
/>
|
||||||
<div class="inname">项目级别</div>
|
<div class="inname">项目级别</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -213,8 +218,8 @@
|
|||||||
<div class="name">
|
<div class="name">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<img
|
<img
|
||||||
class="nameimg"
|
class="nameimg"
|
||||||
src="../../assets/images/basicinfo/asterisk.png"
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
/>
|
/>
|
||||||
<div class="inname">培训分类</div>
|
<div class="inname">培训分类</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -229,8 +234,8 @@
|
|||||||
<!-- src="../../assets/images/basicinfo/asterisk.png"-->
|
<!-- src="../../assets/images/basicinfo/asterisk.png"-->
|
||||||
<!-- />-->
|
<!-- />-->
|
||||||
<img
|
<img
|
||||||
class="nameimg"
|
class="nameimg"
|
||||||
src="../../assets/images/basicinfo/asterisk.png"
|
src="../../assets/images/basicinfo/asterisk.png"
|
||||||
/>
|
/>
|
||||||
<div class="inname">是否BOEU实施</div>
|
<div class="inname">是否BOEU实施</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -242,8 +247,8 @@
|
|||||||
:disabled="viewDetail ? true : false"
|
:disabled="viewDetail ? true : false"
|
||||||
></a-switch> -->
|
></a-switch> -->
|
||||||
<a-radio-group
|
<a-radio-group
|
||||||
v-model:value="projectInfo.boeFlag"
|
v-model:value="projectInfo.boeFlag"
|
||||||
:disabled="viewDetail ? true : false"
|
:disabled="viewDetail ? true : false"
|
||||||
>
|
>
|
||||||
<a-radio :style="radioStyle" :value="1">是</a-radio>
|
<a-radio :style="radioStyle" :value="1">是</a-radio>
|
||||||
<a-radio :style="radioStyle" :value="0">否</a-radio>
|
<a-radio :style="radioStyle" :value="0">否</a-radio>
|
||||||
@@ -256,19 +261,19 @@
|
|||||||
<div class="inname" style="width: 50px">模版</div>
|
<div class="inname" style="width: 50px">模版</div>
|
||||||
<div class="in select" style="margin-left: 2px">
|
<div class="in select" style="margin-left: 2px">
|
||||||
<a-select
|
<a-select
|
||||||
:getPopupContainer="
|
:getPopupContainer="
|
||||||
(triggerNode) => {
|
(triggerNode) => {
|
||||||
return triggerNode.parentNode || document.body;
|
return triggerNode.parentNode || document.body;
|
||||||
}
|
}
|
||||||
"
|
"
|
||||||
v-model:value="classifySelect5"
|
v-model:value="classifySelect5"
|
||||||
placeholder="请选择模版"
|
placeholder="请选择模版"
|
||||||
:size="size"
|
:size="size"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
:options="classifyList5"
|
:options="classifyList5"
|
||||||
@change="classificationChange5"
|
@change="classificationChange5"
|
||||||
@popupScroll="templateScroll"
|
@popupScroll="templateScroll"
|
||||||
:fieldNames="{
|
:fieldNames="{
|
||||||
label: 'name',
|
label: 'name',
|
||||||
value: 'projectTemplateId',
|
value: 'projectTemplateId',
|
||||||
}"
|
}"
|
||||||
@@ -281,7 +286,7 @@
|
|||||||
<div class="footer">
|
<div class="footer">
|
||||||
<div class="btn">
|
<div class="btn">
|
||||||
<a-button v-on:click="createProject" type="primary" class="btn1"
|
<a-button v-on:click="createProject" type="primary" class="btn1"
|
||||||
>确定
|
>确定
|
||||||
</a-button>
|
</a-button>
|
||||||
<a-button @click="backPage" class="btn2">取消</a-button>
|
<a-button @click="backPage" class="btn2">取消</a-button>
|
||||||
</div>
|
</div>
|
||||||
@@ -289,18 +294,18 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import {onMounted, reactive, toRefs, watch} from "vue";
|
import { onMounted, reactive, toRefs, watch } from "vue";
|
||||||
import {message} from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
import {useRoute, useRouter} from "vue-router";
|
import { useRoute, useRouter } from "vue-router";
|
||||||
import * as api from "../../api/index";
|
import * as api from "../../api/index";
|
||||||
import {useStore} from "vuex";
|
import { useStore } from "vuex";
|
||||||
import ProjectClass from "@/components/project/ProjectClass";
|
import ProjectClass from "@/components/project/ProjectClass";
|
||||||
import TrainClass from "@/components/project/TrainClass";
|
import TrainClass from "@/components/project/TrainClass";
|
||||||
import OrgClass from "@/components/project/OrgClass";
|
import OrgClass from "@/components/project/OrgClass";
|
||||||
import ProjectManager from "@/components/project/ProjectManagerNew";
|
import ProjectManager from "@/components/project/ProjectManagerNew";
|
||||||
import ProjectLevel from "@/components/project/ProjectLevel";
|
import ProjectLevel from "@/components/project/ProjectLevel";
|
||||||
import {changeOwnership, scrollLoad} from "@/api/method";
|
import { changeOwnership, scrollLoad } from "@/api/method";
|
||||||
|
import { storage } from "../../api/storage";
|
||||||
export default {
|
export default {
|
||||||
name: "projectAdd",
|
name: "projectAdd",
|
||||||
components: {
|
components: {
|
||||||
@@ -329,16 +334,19 @@ export default {
|
|||||||
},
|
},
|
||||||
classifyList5: [],
|
classifyList5: [],
|
||||||
courseSyncFlag: false,
|
courseSyncFlag: false,
|
||||||
picUrlName:'请选择封面图'
|
picUrlName: "请选择封面图",
|
||||||
});
|
});
|
||||||
|
|
||||||
// 封面图选择
|
// 封面图选择
|
||||||
const handleChangeSelect = (value) => {
|
const handleChangeSelect = (value) => {
|
||||||
console.log(value)
|
console.log(value);
|
||||||
state.projectInfo.picUrl= value
|
state.projectInfo.picUrl = value;
|
||||||
}
|
};
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
state.projectPic = store.state.projectPic.map((e) => ({value: e.dictValue, label: e.dictName}));
|
state.projectPic = store.state.projectPic.map((e) => ({
|
||||||
|
value: e.dictValue,
|
||||||
|
label: e.dictName,
|
||||||
|
}));
|
||||||
state.viewDetail = routers.query.viewDetail;
|
state.viewDetail = routers.query.viewDetail;
|
||||||
getProjectInfo();
|
getProjectInfo();
|
||||||
getTemplate();
|
getTemplate();
|
||||||
@@ -359,29 +367,32 @@ export default {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
api
|
api
|
||||||
.getProjectDetail({projectId: routers.query.projectId})
|
.getProjectDetail({ projectId: routers.query.projectId })
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
state.projectInfo = res.data.data.projectInfo;
|
state.projectInfo = res.data.data.projectInfo;
|
||||||
|
|
||||||
console.log(res)
|
console.log(res);
|
||||||
let picurl = res.data.data.projectInfo.picUrl
|
let picurl = res.data.data.projectInfo.picUrl;
|
||||||
let dates = store.state.projectPic.map((e) => ({value: e.dictValue, label: e.dictName}));
|
let dates = store.state.projectPic.map((e) => ({
|
||||||
console.log(dates,picurl)
|
value: e.dictValue,
|
||||||
for(let i=0;i<dates.length;i++){
|
label: e.dictName,
|
||||||
if(dates[i].value==picurl){
|
}));
|
||||||
state.picUrlName = dates[i].label
|
console.log(dates, picurl);
|
||||||
}
|
for (let i = 0; i < dates.length; i++) {
|
||||||
|
if (dates[i].value == picurl) {
|
||||||
|
state.picUrlName = dates[i].label;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
state.projectInfo.rangeTime = [
|
state.projectInfo.rangeTime = [
|
||||||
state.projectInfo.beginTime,
|
state.projectInfo.beginTime,
|
||||||
state.projectInfo.endTime,
|
state.projectInfo.endTime,
|
||||||
];
|
];
|
||||||
state.projectInfo.parentName = routers.query.parentName;
|
state.projectInfo.parentName = routers.query.parentName;
|
||||||
state.courseSyncFlag = state.projectInfo.courseSyncFlag
|
state.courseSyncFlag = state.projectInfo.courseSyncFlag
|
||||||
? true
|
? true
|
||||||
: false;
|
: false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const backPage = () => {
|
const backPage = () => {
|
||||||
@@ -466,19 +477,23 @@ export default {
|
|||||||
state.projectInfo.type = 3;
|
state.projectInfo.type = 3;
|
||||||
state.projectInfo.courseSyncFlag = state.courseSyncFlag ? 1 : 0;
|
state.projectInfo.courseSyncFlag = state.courseSyncFlag ? 1 : 0;
|
||||||
api.createProject(state.projectInfo).then((res) => {
|
api.createProject(state.projectInfo).then((res) => {
|
||||||
state.projectInfo.projectId || changeOwnership(
|
state.projectInfo.projectId ||
|
||||||
"project",
|
changeOwnership("project", res.data.data.projectId, [
|
||||||
res.data.data.projectId,
|
{ id: res.data.data.createId, name: res.data.data.createName },
|
||||||
[{id: res.data.data.createId, name: res.data.data.createName}]
|
]);
|
||||||
);
|
|
||||||
message.destroy();
|
message.destroy();
|
||||||
message.success("编辑成功");
|
message.success(state.projectInfo.projectId ? "编辑成功" : "创建成功");
|
||||||
router.back();
|
// router.back();
|
||||||
|
router.push({
|
||||||
|
path: "/taskpage",
|
||||||
|
query: { projectId: res.data.data.projectId },
|
||||||
|
});
|
||||||
|
storage.set("projectId", res.data.data.projectId);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
function managerChange(e, l, d) {
|
function managerChange(e, l, d) {
|
||||||
state.projectInfo.sourceBelongId = d
|
state.projectInfo.sourceBelongId = d;
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@@ -490,7 +505,7 @@ export default {
|
|||||||
createProject,
|
createProject,
|
||||||
backPage,
|
backPage,
|
||||||
templateScroll,
|
templateScroll,
|
||||||
handleChangeSelect
|
handleChangeSelect,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -16,7 +16,16 @@
|
|||||||
src="../../assets/images/leveladd/ma.png"
|
src="../../assets/images/leveladd/ma.png"
|
||||||
@click="showCodeModel2()"
|
@click="showCodeModel2()"
|
||||||
/>
|
/>
|
||||||
<div class="line" v-if="action == 1 || action == 0"></div>
|
<div
|
||||||
|
class="line"
|
||||||
|
v-if="
|
||||||
|
action == 1 ||
|
||||||
|
action == 2 ||
|
||||||
|
action == 0 ||
|
||||||
|
action == 3 ||
|
||||||
|
action == -2
|
||||||
|
"
|
||||||
|
></div>
|
||||||
<!-- 显示发布图标 -->
|
<!-- 显示发布图标 -->
|
||||||
<img
|
<img
|
||||||
v-if="action == 2"
|
v-if="action == 2"
|
||||||
@@ -27,11 +36,11 @@
|
|||||||
<img
|
<img
|
||||||
v-if="action == 3"
|
v-if="action == 3"
|
||||||
class="img2"
|
class="img2"
|
||||||
src="../../assets/images/leveladd/pub.png"
|
src="../../assets/images/project/finish.png"
|
||||||
/>
|
/>
|
||||||
<!-- 显示审核图标 -->
|
<!-- 显示审核图标 -->
|
||||||
<img
|
<img
|
||||||
v-if="action == 0"
|
v-if="action == 0 || action == -2"
|
||||||
class="img2"
|
class="img2"
|
||||||
src="../../assets/images/project/reviewsubmit.png"
|
src="../../assets/images/project/reviewsubmit.png"
|
||||||
/>
|
/>
|
||||||
@@ -46,8 +55,8 @@
|
|||||||
<!-- 显示提交审核 -->
|
<!-- 显示提交审核 -->
|
||||||
<div
|
<div
|
||||||
class="pub"
|
class="pub"
|
||||||
style="width: 56px"
|
style="width: 56px; color: #a497ff"
|
||||||
v-if="action == 0"
|
v-if="action == 0 || action == -2"
|
||||||
@click="submitExamine"
|
@click="submitExamine"
|
||||||
>
|
>
|
||||||
{{ act }}
|
{{ act }}
|
||||||
@@ -55,7 +64,7 @@
|
|||||||
<!-- 显示撤回审核 -->
|
<!-- 显示撤回审核 -->
|
||||||
<div
|
<div
|
||||||
class="pub"
|
class="pub"
|
||||||
style="width: 56px"
|
style="width: 56px; color: #a497ff"
|
||||||
v-if="action == 1"
|
v-if="action == 1"
|
||||||
@click="showRecallReviewModal"
|
@click="showRecallReviewModal"
|
||||||
>
|
>
|
||||||
@@ -73,7 +82,7 @@
|
|||||||
<!-- 显示撤回发布 -->
|
<!-- 显示撤回发布 -->
|
||||||
<div
|
<div
|
||||||
class="pub"
|
class="pub"
|
||||||
style="width: 56px"
|
style="width: 56px; color: #57c887"
|
||||||
v-if="action == 3"
|
v-if="action == 3"
|
||||||
@click="showBackModal"
|
@click="showBackModal"
|
||||||
>
|
>
|
||||||
@@ -1698,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>
|
||||||
@@ -1722,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>
|
||||||
|
|
||||||
<!-- 撤回弹窗 -->
|
<!-- 撤回弹窗 -->
|
||||||
@@ -2083,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, //发布的项目时间
|
||||||
@@ -3884,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,
|
||||||
@@ -3897,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) => {
|
||||||
@@ -5170,7 +5199,7 @@ export default {
|
|||||||
.img2 {
|
.img2 {
|
||||||
width: 42px;
|
width: 42px;
|
||||||
height: 42px;
|
height: 42px;
|
||||||
margin-right: 22px;
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pub {
|
.pub {
|
||||||
|
|||||||
@@ -1407,9 +1407,18 @@ export default {
|
|||||||
state.level = [];
|
state.level = [];
|
||||||
// state.tableData = array[0]
|
// state.tableData = array[0]
|
||||||
// 当无阶段任务出现时 显示当前数据
|
// 当无阶段任务出现时 显示当前数据
|
||||||
getTableData(array[0].taskList)
|
if(array[0].taskList.length!==0){
|
||||||
|
getTableData(array[0].taskList)
|
||||||
|
}
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
state.level = array;
|
let datearr = []
|
||||||
|
for(let i=0;i<array.length;i++){
|
||||||
|
if(array[i].id!==0&&array[i].taskList.length!==0){
|
||||||
|
datearr.push(array[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
state.level = datearr;
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user