feat:合并

This commit is contained in:
lixg
2022-12-04 18:29:38 +08:00
23 changed files with 1425 additions and 747 deletions

View File

@@ -32,6 +32,7 @@
v-model:value="name" v-model:value="name"
style="width: 270px; height: 40px; border-radius: 8px" style="width: 270px; height: 40px; border-radius: 8px"
placeholder="请输入姓名" placeholder="请输入姓名"
maxlength="20"
/> />
</div> </div>
<div class="namecon" style="margin-right: 30px"> <div class="namecon" style="margin-right: 30px">

View File

@@ -33,7 +33,7 @@
v-model:value="inputV1" v-model:value="inputV1"
style="width: 424px; height: 32px" style="width: 424px; height: 32px"
placeholder="请输入活动名称" placeholder="请输入活动名称"
maxlength="20" maxlength="50"
/> />
</div> </div>
</div> </div>
@@ -52,7 +52,8 @@
v-model:value="textV1" v-model:value="textV1"
placeholder="请输入活动公告" placeholder="请输入活动公告"
allow-clear allow-clear
maxlength="150" :rows="6"
show-count :maxlength="200"
/> />
</div> </div>
</div> </div>
@@ -65,7 +66,8 @@
v-model:value="textV2" v-model:value="textV2"
placeholder="请输入活动说明" placeholder="请输入活动说明"
allow-clear allow-clear
maxlength="150" :rows="6"
show-count :maxlength="200"
/> />
</div> </div>
</div> </div>
@@ -127,6 +129,7 @@
v-model:value="inputV3" v-model:value="inputV3"
style="width: 424px; height: 32px" style="width: 424px; height: 32px"
placeholder="请输入活动地址" placeholder="请输入活动地址"
maxlength="100"
/> />
</div> </div>
</div> </div>
@@ -589,7 +592,27 @@ export default {
display: flex; display: flex;
align-items: flex-start; align-items: flex-start;
margin-bottom: 32px; margin-bottom: 32px;
.textarea {
width: 423px;
.ant-input {
width: 100%;
}
.ant-input-textarea-show-count {
position: relative;
}
.ant-input-textarea-show-count::after {
position: absolute;
right: 10px;
bottom: 0px;
}
.ant-input {
border-radius: 8px;
}
}
.signbox { .signbox {
width: 120px; width: 120px;
display: flex; display: flex;

View File

@@ -27,6 +27,8 @@
v-model:value="inputV1" v-model:value="inputV1"
style="width: 264px; height: 40px; border-radius: 8px" style="width: 264px; height: 40px; border-radius: 8px"
placeholder="请输入案例标题" placeholder="请输入案例标题"
show-count
:maxlength="20"
/> />
</div> </div>
</div> </div>

View File

@@ -46,6 +46,7 @@
v-model:value="textV1" v-model:value="textV1"
placeholder="请输入讨论说明" placeholder="请输入讨论说明"
allow-clear allow-clear
:rows="6"
show-count show-count
:maxlength="200" :maxlength="200"
/> />

View File

@@ -18,7 +18,8 @@
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-input v-model:value="inputV1" style="width: 424px; height: 32px" placeholder="请输入测评名称" <a-input v-model:value="inputV1" style="width: 424px; height: 32px" placeholder="请输入测评名称"
maxlength="20" /> show-count
:maxlength="50" />
</div> </div>
</div> </div>
<div class="main_item"> <div class="main_item">
@@ -53,9 +54,9 @@
<span style="margin-right: 3px">测评说明</span> <span style="margin-right: 3px">测评说明</span>
</div> </div>
<div class="textarea"> <div class="textarea">
<a-textarea maxlength="150" v-model:value="description" placeholder="请输入测评说明" <a-textarea show-count :maxlength="200" v-model:value="description" placeholder="请输入测评说明"
style="width: 424px; height: 120px" allowClear /> style="width: 424px;" allowClear :rows="6"/>
<span style="position:relative;top:96px;left:-54px;z-index:9999;">{{ description.length }}/150</span>
</div> </div>
</div> </div>
</div> </div>
@@ -423,7 +424,27 @@ export default {
display: flex; display: flex;
align-items: flex-start; align-items: flex-start;
margin-bottom: 32px; margin-bottom: 32px;
.textarea {
width: 423px;
.ant-input {
width: 100%;
}
.ant-input-textarea-show-count {
position: relative;
}
.ant-input-textarea-show-count::after {
position: absolute;
right: 10px;
bottom: 0px;
}
.ant-input {
border-radius: 8px;
}
}
.signbox { .signbox {
width: 120px; width: 120px;
display: flex; display: flex;

View File

@@ -18,7 +18,7 @@
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-input v-model:value="courseName" style="width: 384px; height: 32px" placeholder="请输入名称" <a-input v-model:value="courseName" style="width: 384px; height: 32px" placeholder="请输入名称"
maxlength="20"/> :maxlength="50"/>
</div> </div>
</div> </div>
<div class="main_item"> <div class="main_item">
@@ -30,10 +30,6 @@
</div> </div>
<div class="btnbox"> <div class="btnbox">
<button class="xkbtn" @click="showDrawerSelFacet"> <button class="xkbtn" @click="showDrawerSelFacet">
<!--
{{ chooseCourse == null ? "选择" : chooseCourseName }}面授课
</button> -->
{{ chooseCourse == null ? "选择" : "重选" }}面授课 {{ chooseCourse == null ? "选择" : "重选" }}面授课
</button> </button>
<div v-if="chooseCourse"> <div v-if="chooseCourse">
@@ -54,7 +50,7 @@
<span style="margin-right: 3px">面授说明</span> <span style="margin-right: 3px">面授说明</span>
</div> </div>
<div class="textarea"> <div class="textarea">
<a-textarea v-model:value="description" placeholder="请输入说明" allow-clear maxlength="100"/> <a-textarea v-model:value="description" placeholder="请输入说明" allow-clear show-count :maxlength="200" :rows="6"/>
</div> </div>
</div> </div>
<div class="main_item"> <div class="main_item">
@@ -107,7 +103,7 @@
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-input v-model:value="address" style="width: 384px; height: 32px" placeholder="请输入上课地址" <a-input v-model:value="address" style="width: 384px; height: 32px" placeholder="请输入上课地址"
maxlength="100"/> :maxlength="100"/>
</div> </div>
</div> </div>
<div class="main_item2"> <div class="main_item2">
@@ -797,7 +793,27 @@ export default {
display: flex; display: flex;
align-items: flex-start; align-items: flex-start;
margin-bottom: 32px; margin-bottom: 32px;
.textarea {
width: 423px;
.ant-input {
width: 100%;
}
.ant-input-textarea-show-count {
position: relative;
}
.ant-input-textarea-show-count::after {
position: absolute;
right: 10px;
bottom: 0px;
}
.ant-input {
border-radius: 8px;
}
}
.signbox { .signbox {
width: 120px; width: 120px;
display: flex; display: flex;

View File

@@ -29,6 +29,7 @@
v-model:value="valuen" v-model:value="valuen"
placeholder="请输入小组名称" placeholder="请输入小组名称"
style="border-radius: 8px; height: 40px" style="border-radius: 8px; height: 40px"
maxlength="20"
/> />
</div> </div>
</div> </div>
@@ -45,6 +46,7 @@
v-model:value="valueg" v-model:value="valueg"
placeholder="请输入小组长" placeholder="请输入小组长"
style="border-radius: 8px; height: 40px" style="border-radius: 8px; height: 40px"
maxlength="20"
/> />
</div> </div>
</div> </div>

View File

@@ -12,7 +12,7 @@
<img <img
style="width: 29px; height: 29px; cursor: pointer" style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png" src="../../assets/images/basicinfo/close.png"
@click="closeDrawer" @click="closeDrawer2"
/> />
</div> </div>
<a-form <a-form
@@ -31,24 +31,31 @@
<div class="btnbox"> <div class="btnbox">
<a-form-item has-feedback label="作业名称" name="workName"> <a-form-item has-feedback label="作业名称" name="workName">
<a-input <a-input
v-model:value="formState.workName" v-model:value="formState.workName"
style="width: 424px; height: 32px; margin-left: 35px" style="width: 424px; height: 32px; margin-left: 35px"
placeholder="请输入作业名称" placeholder="请输入作业名称"
autocomplete="off" autocomplete="off"
show-count :maxlength="50"
/> />
</a-form-item> </a-form-item>
</div> </div>
</div> </div>
<div class="main_item2"> <div class="main_item2">
<a-form-item has-feedback label="作业要求" name="workRequirement"> <a-form-item has-feedback label="作业要求" name="workRequirement">
<div class="textarea">
<a-textarea <a-textarea
v-model:value="formState.workRequirement" v-model:value="formState.workRequirement"
placeholder="请输入作业要求" placeholder="请输入作业要求"
autocomplete="off" autocomplete="off"
allow-clear allow-clear
:rows="6"
style="margin-left: 35px" style="margin-left: 35px"
maxlength="150" show-count :maxlength="200"
/> /></div>
</a-form-item> </a-form-item>
</div> </div>
<div class="main_item"> <div class="main_item">
@@ -95,7 +102,7 @@
</div> </div>
</div> </div>
<div class="main_btns"> <div class="main_btns">
<a-button class="btn1" @click="closeDrawer">取消</a-button> <a-button class="btn1" @click="closeDrawer2">取消</a-button>
<a-button class="btn2" html-type="submit" @click="cle">确定</a-button> <a-button class="btn2" html-type="submit" @click="cle">确定</a-button>
</div> </div>
</a-form> </a-form>
@@ -283,6 +290,10 @@ export default {
state.workEnclosureAddress = ""; state.workEnclosureAddress = "";
resetForm(); resetForm();
}; };
const closeDrawer2 = () => {
ctx.emit("update:addhomeworkVisible", false);
resetForm();
};
const afterVisibleChange = () => { const afterVisibleChange = () => {
if (props.EditWorkId > 0) { if (props.EditWorkId > 0) {
state.EditWorkId = props.EditWorkId; state.EditWorkId = props.EditWorkId;
@@ -438,6 +449,7 @@ export default {
return { return {
afterVisibleChange, afterVisibleChange,
closeDrawer, closeDrawer,
closeDrawer2,
handleChange, handleChange,
fileList, fileList,
formState, formState,
@@ -527,7 +539,27 @@ export default {
display: flex; display: flex;
align-items: flex-start; align-items: flex-start;
margin-bottom: 32px; margin-bottom: 32px;
.textarea {
width: 423px;
.ant-input {
width: 100%;
}
.ant-input-textarea-show-count {
position: relative;
}
.ant-input-textarea-show-count::after {
position: absolute;
right: 10px;
bottom: 0px;
}
.ant-input {
border-radius: 8px;
}
}
.signbox { .signbox {
width: 120px; width: 120px;
display: flex; display: flex;

View File

@@ -31,6 +31,7 @@
v-model:value="name" v-model:value="name"
style="width: 270px; height: 40px; border-radius: 8px" style="width: 270px; height: 40px; border-radius: 8px"
placeholder="请输入姓名" placeholder="请输入姓名"
maxlength="20"
/> />
</div> </div>
<div class="btns"> <div class="btns">
@@ -126,6 +127,7 @@
v-model:value="nameadd" v-model:value="nameadd"
style="width: 200px; height: 40px; border-radius: 8px" style="width: 200px; height: 40px; border-radius: 8px"
placeholder="请输入姓名" placeholder="请输入姓名"
maxlength="20"
/> />
</div> </div>
</div> </div>
@@ -205,6 +207,7 @@
v-model:value="nameaddd" v-model:value="nameaddd"
style="width: 200px; height: 40px; border-radius: 8px" style="width: 200px; height: 40px; border-radius: 8px"
placeholder="请输入姓名" placeholder="请输入姓名"
maxlength="20"
/> />
</div> </div>
</div> </div>

View File

@@ -47,7 +47,10 @@
v-model:value="textV1" v-model:value="textV1"
placeholder="请输入考试说明" placeholder="请输入考试说明"
allow-clear allow-clear
maxlength="364px" show-count
:maxlength="200"
:rows="6"
/> />
</div> </div>
</div> </div>
@@ -155,6 +158,7 @@
v-model:value="inputV4" v-model:value="inputV4"
style="width: 424px; height: 32px" style="width: 424px; height: 32px"
placeholder="请输入直播链接" placeholder="请输入直播链接"
:maxlength="100"
/> />
</div> </div>
</div> </div>
@@ -176,6 +180,7 @@
v-model:value="inputV5" v-model:value="inputV5"
style="width: 424px; height: 32px" style="width: 424px; height: 32px"
placeholder="请输入回放链接" placeholder="请输入回放链接"
:maxlength="100"
/> />
</div> </div>
</div> </div>
@@ -881,7 +886,27 @@ export default {
display: flex; display: flex;
align-items: flex-start; align-items: flex-start;
margin-bottom: 32px; margin-bottom: 32px;
.textarea {
width: 423px;
.ant-input {
width: 100%;
}
.ant-input-textarea-show-count {
position: relative;
}
.ant-input-textarea-show-count::after {
position: absolute;
right: 10px;
bottom: 0px;
}
.ant-input {
border-radius: 8px;
}
}
.signbox { .signbox {
width: 120px; width: 120px;
display: flex; display: flex;

View File

@@ -27,6 +27,7 @@
v-model:value="inputV1" v-model:value="inputV1"
style="width: 240px; height: 40px; border-radius: 8px" style="width: 240px; height: 40px; border-radius: 8px"
placeholder="请输入项目名称" placeholder="请输入项目名称"
maxlength="20"
/> />
</div> </div>
</div> </div>

View File

@@ -15,21 +15,22 @@
<div class="ipt_name">项目名称</div> <div class="ipt_name">项目名称</div>
<div class="fi_input"> <div class="fi_input">
<a-input v-model:value="inputV1" style="width: 240px; height: 40px; border-radius: 8px" <a-input v-model:value="inputV1" style="width: 240px; height: 40px; border-radius: 8px"
placeholder="请输入项目名称" /> placeholder="请输入项目名称"
maxlength="20"/>
</div> </div>
</div> </div>
<div class="mii_ipt"> <div class="mii_ipt">
<div class="ipt_name">项目经理</div> <div class="ipt_name">项目经理</div>
<div class="fi_input"> <div class="fi_input">
<a-input v-model:value="inputV2" style="width: 240px; height: 40px; border-radius: 8px" <a-input v-model:value="inputV2" style="width: 240px; height: 40px; border-radius: 8px"
placeholder="请输入项目经理" /> placeholder="请输入项目经理" maxlength="20"/>
</div> </div>
</div> </div>
<div class="mii_ipt"> <div class="mii_ipt">
<div class="ipt_name">创建人</div> <div class="ipt_name">创建人</div>
<div class="fi_input"> <div class="fi_input">
<a-input v-model:value="inputV3" style="width: 240px; height: 40px; border-radius: 8px" <a-input v-model:value="inputV3" style="width: 240px; height: 40px; border-radius: 8px"
placeholder="请输入创建人" /> placeholder="请输入创建人" maxlength="20"/>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -42,7 +42,7 @@
v-model:value="inputV1" v-model:value="inputV1"
style="width: 424px; height: 32px" style="width: 424px; height: 32px"
placeholder="请输入外链名称" placeholder="请输入外链名称"
maxlength="20" show-count :maxlength="50"
/> />
</div> </div>
</div> </div>
@@ -61,6 +61,8 @@
v-model:value="inputV2" v-model:value="inputV2"
style="width: 424px; height: 32px" style="width: 424px; height: 32px"
placeholder="请输入链接" placeholder="请输入链接"
show-count :maxlength="100"
/> />
</div> </div>
</div> </div>
@@ -73,6 +75,8 @@
v-model:value="textV1" v-model:value="textV1"
placeholder="请输入外链说明" placeholder="请输入外链说明"
allow-clear allow-clear
:rows="6"
show-count :maxlength="200"
/> />
</div> </div>
</div> </div>

View File

@@ -12,7 +12,7 @@
<img <img
style="width: 29px; height: 29px; cursor: pointer" style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png" src="../../assets/images/basicinfo/close.png"
@click="closeDrawer" @click="closeDrawer2"
/> />
</div> </div>
<!-- 2022-11-30注释 后面放开 修改div的padding-topL:32 --> <!-- 2022-11-30注释 后面放开 修改div的padding-topL:32 -->
@@ -58,7 +58,7 @@
style="width: 424px; height: 32px; margin-left: 35px" style="width: 424px; height: 32px; margin-left: 35px"
autocomplete="off" autocomplete="off"
placeholder="请输入考试名称" placeholder="请输入考试名称"
maxlength="20" show-count :maxlength="50"
/> />
</a-form-item> </a-form-item>
</div> </div>
@@ -68,14 +68,15 @@
has-feedback has-feedback
label="考试说明" label="考试说明"
name="examinationExplain" name="examinationExplain"
> ><div class="textarea">
<a-textarea <a-textarea
v-model:value="formState.examinationExplain" v-model:value="formState.examinationExplain"
placeholder="请输入考试说明" placeholder="请输入考试说明"
allow-clear allow-clear
:rows="6"
style="margin-left: 35px" style="margin-left: 35px"
maxlength="150" show-count :maxlength="200"
/> /></div>
</a-form-item> </a-form-item>
</div> </div>
<div class="main_item"> <div class="main_item">
@@ -300,7 +301,7 @@
</div> </div>
</div> </div>
<div class="main_btns"> <div class="main_btns">
<a-button class="btn1" @click="closeDrawer">取消</a-button> <a-button class="btn1" @click="closeDrawer2">取消</a-button>
<a-button class="btn2" html-type="submit">确定</a-button> <a-button class="btn2" html-type="submit">确定</a-button>
</div> </div>
</a-form> </a-form>
@@ -329,7 +330,7 @@
style="width: 424px; height: 32px; margin-left: 35px" style="width: 424px; height: 32px; margin-left: 35px"
autocomplete="off" autocomplete="off"
placeholder="请输入考试名称" placeholder="请输入考试名称"
maxlength="20" show-count :maxlength="50"
/> />
</a-form-item> </a-form-item>
</div> </div>
@@ -346,7 +347,7 @@
style="width: 424px; height: 32px; margin-left: 35px" style="width: 424px; height: 32px; margin-left: 35px"
autocomplete="off" autocomplete="off"
placeholder="数据来源" placeholder="数据来源"
maxlength="20" show-count :maxlength="50"
/> />
</a-form-item> </a-form-item>
</div> </div>
@@ -358,19 +359,21 @@
label="考试说明" label="考试说明"
name="examinationExplain" name="examinationExplain"
> >
<div class="textarea">
<a-textarea <a-textarea
v-model:value="formState.examinationExplain" v-model:value="formState.examinationExplain"
placeholder="请输入考试说明" placeholder="请输入考试说明"
allow-clear allow-clear
:rows="6"
style="margin-left: 35px" style="margin-left: 35px"
maxlength="150" show-count :maxlength="200"
/> /></div>
</a-form-item> </a-form-item>
</div> </div>
</div> </div>
</div> </div>
<div class="main_btns"> <div class="main_btns">
<a-button class="btn1" @click="closeDrawer">取消</a-button> <a-button class="btn1" @click="closeDrawer2">取消</a-button>
<a-button class="btn2" html-type="submit">确定</a-button> <a-button class="btn2" html-type="submit">确定</a-button>
</div> </div>
</a-form> </a-form>
@@ -647,6 +650,11 @@ export default {
localStorage.setItem("chapterId", props.isactive); localStorage.setItem("chapterId", props.isactive);
resetForm(); resetForm();
}; };
const closeDrawer2 = () => {
formState.choosedTime = "";
ctx.emit("update:addtestVisible", false);
resetForm();
};
const afterVisibleChange = () => { const afterVisibleChange = () => {
if (props.addtestVisible && props.edit) { if (props.addtestVisible && props.edit) {
// 该页面显示同时 edit为true 时,发送查询请求, // 该页面显示同时 edit为true 时,发送查询请求,
@@ -661,7 +669,7 @@ export default {
state.paperName = ""; state.paperName = "";
}; };
const queryTest = () => { const queryTest = () => {
state.addLoading = true; // state.addLoading = true;
queryExaminationDetailById({ examinationId: props.EditTestId }) queryExaminationDetailById({ examinationId: props.EditTestId })
.then((res) => { .then((res) => {
formState.examinationName = res.data.data.examinationName; formState.examinationName = res.data.data.examinationName;
@@ -858,6 +866,7 @@ export default {
formState, formState,
afterVisibleChange, afterVisibleChange,
closeDrawer, closeDrawer,
closeDrawer2,
selectTest, selectTest,
cloradio1, cloradio1,
cloradio2, cloradio2,
@@ -966,6 +975,27 @@ export default {
display: flex; display: flex;
align-items: flex-start; align-items: flex-start;
margin-bottom: 32px; margin-bottom: 32px;
.textarea {
width: 423px;
.ant-input {
width: 100%;
}
.ant-input-textarea-show-count {
position: relative;
}
.ant-input-textarea-show-count::after {
position: absolute;
right: 10px;
bottom: 0px;
}
.ant-input {
border-radius: 8px;
}
}
.signbox { .signbox {
width: 120px; width: 120px;
display: flex; display: flex;

View File

@@ -31,6 +31,7 @@
v-model:value="name" v-model:value="name"
style="width: 270px; height: 40px; border-radius: 8px" style="width: 270px; height: 40px; border-radius: 8px"
placeholder="请输入姓名" placeholder="请输入姓名"
maxlength="20"
/> />
</div> </div>
<div class="btns"> <div class="btns">

View File

@@ -138,7 +138,7 @@
//import { ApiFilled } from "@ant-design/icons-vue"; //import { ApiFilled } from "@ant-design/icons-vue";
import {reactive, toRefs, computed} from "vue"; import {reactive, toRefs, computed} from "vue";
// import { planList } from "../../api/indexTaskadd"; // import { planList } from "../../api/indexTaskadd";
// import {detail} from "../../api/indexCourse"; //import {detail} from "../../api/indexCourse";
import {list} from "../../api/indexTaskadd"; import {list} from "../../api/indexTaskadd";
import {toDate} from "../../api/method"; import {toDate} from "../../api/method";

View File

@@ -678,6 +678,418 @@
</div> </div>
</div> </div>
</a-modal> </a-modal>
<!-- 查看面授课弹框 start -->
<a-modal
v-model:visible="lookMs"
title="Title"
@ok="handlelookMs"
:footer="null"
:closable="false"
wrapClassName="modalStyle facteachModal"
width="80%"
@cancel="handlelookMs"
>
<div class="modalHeader">
<div class="headerLeft">
<img
style="width: 17px; height: 18px; margin-right: 8px"
src="../../assets/images/basicinfo/add.png"
/>
<span class="headerLeftText">查看面授课</span>
</div>
<div style="margin-right: 57px; cursor: pointer">
<img
@click="handlelookMs"
style="width: 22px; height: 22px"
src="../../assets/images/basicinfo/close22.png"
/>
</div>
</div>
<div class="modalMain">
<div class="faceteach">
<div class="ft_main">
<div class="m_title">课程信息</div>
<div class="m_body">
<div class="mb_left">
<div class="mbl_items">
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<span style="margin-right: 14px">课程名称</span>
</div>
<div class="item_inp">
<div class="i1_input">
<a-input
aria-readonly="true"
v-model:value="qdms_inputV1"
maxlength="90"
style="width: 440px; height: 40px; border-radius: 8px"
placeholder="请输入课程名称"
/>
<div class="inp_num">
<span style="color: #c7cbd2">
{{ qdms_inputV1.length }}/90
</span>
</div>
</div>
</div>
</div>
<div class="i2_cz">
<div class="i2_top">
<div class="i2_left">
<span style="color: #999ba3">课程命名规则</span>
</div>
<div
class="i2_right"
@click="hideShow"
style="cursor: pointer"
>
<div
class="b_zk"
:style="{ display: hideshow ? 'block' : 'none' }"
>
<span style="color: #4ea6ff">收起</span>
</div>
<div
class="b_sq"
:style="{ display: hideshow ? 'none' : 'block' }"
>
<span style="color: #4ea6ff">展开</span>
</div>
<div class="b_icon"></div>
</div>
</div>
<div
class="i2_detail"
:style="{ display: hideshow ? 'block' : 'none' }"
>
<span style="color: #999ba3">
1课程名称统一不加书名号<br />
2项目名称属地等信息如需体现在课程名称中请放在课程名称信息
之后时间管理GROW180项目时间管理B*确保首先
看到的是课程内容主题<br />
3同一课程如先后有多个版本原则上仅开放最新版本旧版本应停用
版本如必须以年份标明请以沟通技巧2022的方式呈现
</span>
</div>
</div>
<div class="mbl_items2">
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<span style="margin-right: 14px">封面图</span>
</div>
<div class="item_inp">
<a-upload
name="avatar"
list-type="picture-card"
class="avatar-uploader"
:show-upload-list="false"
:before-upload="beforeUpload"
disabled
>
<img
class="i_upload_img"
v-if="imageUrl"
:src="imageUrl"
alt="avatar"
/>
<div class="i_upload" v-else>
<div class="addimg">
<div class="heng"></div>
<div class="shu"></div>
</div>
</div>
</a-upload>
<div class="i_bottom">
<span style="color: #999ba3">
高宽比为16:9 (:800*450) png或jpg图片
</span>
</div>
</div>
</div>
<div class="mbl_items">
<div class="item_nam">
<div class="asterisk_icon">
<img
style="width: 10px; height: 10px"
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<span style="margin-right: 14px">目标人群</span>
</div>
<div class="item_inp">
<div class="i1_input">
<a-input
v-model:value="qdms_inputV2"
maxlength="50"
style="width: 440px; height: 40px; border-radius: 8px"
placeholder="请输入目标人群"
/>
<div class="inp_num">
<span style="color: #c7cbd2">
{{ qdms_inputV2.length }}/50
</span>
</div>
</div>
</div>
</div>
<div class="mbl_items">
<div class="item_nam">
<span style="margin-right: 14px">课程价值</span>
</div>
<div class="item_inp">
<div class="i1_input">
<a-input
v-model:value="qdms_inputV3"
maxlength="200"
style="width: 440px; height: 40px; border-radius: 8px"
placeholder="请输入课程价值"
/>
<div class="inp_num">
<span style="color: #c7cbd2">
{{ qdms_inputV3.length }}/200
</span>
</div>
</div>
</div>
</div>
<div class="mbl_items">
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<span style="margin-right: 14px">内容分类</span>
</div>
<div class="item_inp">
<div class="select i6_input">
<a-select
:getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model:value="fen_lei"
dropdownClassName="dropdown-style"
style="width: 440px"
placeholder="请选择"
:options="options2"
allowClear
showSearch
></a-select>
</div>
</div>
</div>
<div class="mbl_items">
<div class="item_nam">
<span style="margin-right: 14px">场景</span>
</div>
<div class="item_inp">
<div class="select i7_input">
<a-select
:getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model:value="chang_jin"
dropdownClassName="dropdown-style"
style="width: 440px"
placeholder="请选择"
:options="options3"
allowClear
showSearch
></a-select>
</div>
</div>
</div>
<div class="mbl_items">
<div class="item_nam">
<span style="margin-right: 14px">内容标签</span>
</div>
<div class="item_inp">
<a-select
:getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model:value="tags_val"
mode="tags"
style="width: 440px; height: 40px"
placeholder="请输入按回车键创建成功"
:options="tagsOptions"
></a-select>
</div>
</div>
</div>
<div class="mb_right">
<div class="mbl_items">
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt="asterisk"
/>
</div>
<span style="margin-right: 14px">授课教师</span>
</div>
<div class="item_inp">
<div class="i1_input">
<ProjectManager
v-model:value="member.value"
v-model:name="member.name"
></ProjectManager>
</div>
</div>
</div>
<div class="mbl_items2">
<div class="item_nam">
<span style="margin-right: 14px">课程简介</span>
</div>
<div class="item_inp">
<div class="i10_textarea">
<a-textarea
v-model:value="qdms_inputV6"
maxlength="150"
style="width: 440px; height: 100px; border-radius: 8px"
placeholder="请输入"
/>
<div class="inp_num">
<span style="color: #c7cbd2">
{{ qdms_inputV6.length }}/150
</span>
</div>
</div>
</div>
</div>
<div class="mbl_items">
<div class="item_nam">
<span style="margin-right: 10px">附件</span>
</div>
<div class="item_inp">
<a-upload
multiple
:show-upload-list="false"
:before-upload="beforeUpload2"
>
<div class="accessory" style="cursor: pointer">
<div class="accessory_icon">
<img
src="@/assets/images/coursewareManage/enclosure.png"
alt="enclosure"
/>
</div>
<span style="color: #4ea6ff">添加附件</span>
</div>
</a-upload>
<span>
支持.pdf,.ppt,.pptx,.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.gif,.zip
</span>
</div>
</div>
<div class="mbl_items12">
<div
class="i12_box1"
v-for="(item, index) in imgList"
:key="index"
>
<div class="file_img"></div>
<div class="file_detail">
<!-- <div class="file_name">
<span style="color: #6f6f6f">{{ item.name }}</span>
</div> -->
<!-- 条件渲染 s -->
<!-- <div class="file_size">
<span style="color: #999ba3">{{ item.size }}</span>
</div> -->
<div class="file_updata">
<div class="updatabox">
<div class="updatacolor"></div>
<div class="updataxq">上传完成</div>
<!-- <div class="updatacolor2"></div>
<div class="updataxq2">上传失败</div> -->
<!-- <div class="updatacolor3"></div>
<div class="updataxq3">正在上传</div> -->
</div>
<div class="upjd">
<span style="margin: auto 5px">100%</span>
</div>
</div>
<!-- 条件渲染 e -->
</div>
<div class="file_operation">
<div class="fobox">
<span style="color: #4ea6ff" @click="handleDel(index)">
删除
</span>
</div>
<!-- <div class="fobox">
<span style="color: #4ea6ff">重传</span>
</div>
<div class="fobox">
<span style="color: #4ea6ff">取消</span>
</div> -->
<!-- <div class="fobox">
<span style="color: #4ea6ff; margin-right: 5px">
暂停
</span>
</div>
<div class="fobox">
<span style="color: #4ea6ff">取消</span>
</div> -->
</div>
</div>
</div>
</div>
</div>
<div class="m_footer">
<div class="fotnam">
<span>课程大纲</span>
</div>
<div class="fotarea">
<div style="border: 1px solid #ccc">
<Toolbar
style="border-bottom: 1px solid #ccc"
:editor="editorRef"
:defaultConfig="toolbarConfig"
:mode="mode"
/>
<Editor
style="height: 500px; overflow-y: hidden"
v-model="valueHtml"
:defaultConfig="editorConfig"
:mode="mode"
@onCreated="handleCreated"
/>
</div>
</div>
</div>
<div class="m_btn">
<!-- <div class="btn btn5" @click="handlelookMs">
<div class="btnText">取消</div>
</div>
<div class="btn btn6" v-if="isEdit == 0" @click="handlelookMs">
<div class="btnText">确定</div>
</div> -->
</div>
</div>
</div>
</div>
</a-modal>
<!-- 查看面授课弹框 end -->
<!-- 确定新建面授课弹窗 --> <!-- 确定新建面授课弹窗 -->
<!-- 表格 --> <!-- 表格 -->
<div class="tableBox"> <div class="tableBox">
@@ -904,7 +1316,7 @@
<a <a
@click=" @click="
() => { () => {
handleEdit(record, String(record.courseform)); handleLook(record, String(record.courseform));
} }
" "
>查看</a >查看</a
@@ -3215,6 +3627,7 @@ export default defineComponent({
hideshow: true, hideshow: true,
bs_hs: true, bs_hs: true,
ft_hs: false, ft_hs: false,
lookMs: false,
om_1: false, om_1: false,
ft_1: false, ft_1: false,
om_ckxq: false, om_ckxq: false,
@@ -3980,6 +4393,7 @@ export default defineComponent({
state.valueE1 = ""; state.valueE1 = "";
state.qdms_inputV1 = state.xzinputV1; state.qdms_inputV1 = state.xzinputV1;
state.xzinputV1 = ""; state.xzinputV1 = "";
getDictList("faceclassPic");
} }
if (state.bs_hs && state.valueE1 != "") { if (state.bs_hs && state.valueE1 != "") {
state.addOnlineCoursevisible = true; state.addOnlineCoursevisible = true;
@@ -4013,6 +4427,10 @@ export default defineComponent({
valueHtml.value = ""; valueHtml.value = "";
state.fileList = []; state.fileList = [];
}; };
// 关闭查看
const handlelookMs = () => {
state.lookMs = false
}
//保存面授课 //保存面授课
const handlePush = (param) => { const handlePush = (param) => {
//state.isEdit = 1; //state.isEdit = 1;
@@ -4611,6 +5029,57 @@ export default defineComponent({
state.ft_hs = true; state.ft_hs = true;
state.ft_eidt = true; state.ft_eidt = true;
}; };
const handleLook = async (itm, type) => {
state.isEdit = 0;
console.log(45555);
console.log(itm);
if (type === "1") {
return;
}
state.offcourseId = itm.offcourseId;
const item = await detail({
offcourseId: Number(state.offcourseId),
}).then((res) => {
if (res.data.code === 200) return res.data.data;
});
console.log("res");
console.log(item);
console.log(options2.value);
console.log(options3.value);
state.qdms_inputV1 = item.name;
state.imageUrl = item.picUrl;
state.qdms_inputV2 = item.targetUser;
state.qdms_inputV3 = item.meaning;
state.fen_lei = String(item.categoryId);
state.chang_jin = String(item.sceneId);
state.tags_val = item.tips ? item.tips.split(",") : [];
//state.qdms_inputV5 = item.teacherId;
state.teacher = item.teacher;
state.teacherId = item.teacherId;
state.qdms_inputV6 = item.intro;
state.member = { value: item.teacherId, name: item.teacher };
if (item.attach == "") {
state.imgList = [];
} else {
if (item.attach.indexOf(",")) {
const arr = item.attach.split(",");
arr.forEach((item) => {
state.imgList.push({ img: item });
});
} else {
state.imgList = [{ img: item.attach }];
}
}
valueHtml.value = item.outline;
state.lookMs = true;
};
// const handleTea = async () => { // const handleTea = async () => {
// console.log("item22224444"); // console.log("item22224444");
// // const item = await getMemberInfo({ // // const item = await getMemberInfo({
@@ -5038,6 +5507,8 @@ export default defineComponent({
showManagePrower, showManagePrower,
closeOnlineCoursevisible, closeOnlineCoursevisible,
handlelookMs,
handleLook
}; };
}, },
}); });

View File

@@ -188,7 +188,7 @@ export default {
key: "topName", key: "topName",
align: "center", align: "center",
width: "10%", width: "10%",
customRender: ({record: {parentId,name}}) => <div>{parentId==0?name:(parentId)}</div>, customRender: ({record: {gaName,faName,name}}) => <div>{ faName ?gaName!==null?gaName+'/'+faName:faName:name}</div>,
}, },
{ {
title: "项目经理", title: "项目经理",

View File

@@ -772,7 +772,10 @@
<div class="box"></div> <div class="box"></div>
<div class="onetitle">上传共享文档</div> <div class="onetitle">上传共享文档</div>
<div class="oneedi"> <div class="oneedi">
<a-switch v-model:checked="docChecked"></a-switch> <a-switch
v-model:checked="docChecked"
@change="checkedClose"
></a-switch>
</div> </div>
</div> </div>
<div class="btnbox" style="margin: 20px"> <div class="btnbox" style="margin: 20px">
@@ -1924,11 +1927,42 @@ export default {
console.log("获取失败" + err); console.log("获取失败" + err);
}); });
}; };
// 设置上传图片开关
const checkedClose = (data, a) => {
console.log(data, a);
state.docChecked = data;
console.log({
routerId: state.routerId,
status: state.action,
attachSwitch: data ? 1 : -1,
});
// 更新开关状态
editRoutered({
attach: JSON.stringify(state.fileList),
name: state.styTitle,
picUrl: state.picUrl,
remark: state.remark,
routerId: state.routerId,
status: state.action,
attachSwitch: data ? 1 : -1,
})
.then((res) => {
console.log(res);
})
.catch((err) => {
console.log(err);
});
};
// 获取路径列表 // 获取路径列表
const myGetRouterDetail = () => { const myGetRouterDetail = () => {
GetRouterDetail(state.routerId) GetRouterDetail(state.routerId)
.then((res) => { .then((res) => {
console.log("router-list", res); console.log("router-list", res);
state.fileList = JSON.parse(res.data.data.routerInfo.attach);
state.docChecked =
res.data.data.routerInfo.attachSwitch == 1 ? true : false;
if (res.data.data.routerInfo.status == 1) { if (res.data.data.routerInfo.status == 1) {
state.nodata = false; state.nodata = false;
} }
@@ -1974,6 +2008,7 @@ export default {
remark: state.remark, remark: state.remark,
routerId: state.routerId, routerId: state.routerId,
status: state.action, status: state.action,
attachSwitch: state.docChecked ? 1 : -1,
}) })
.then((res) => { .then((res) => {
console.log(res); console.log(res);
@@ -2196,6 +2231,7 @@ export default {
deleteStu, deleteStu,
totask, totask,
tostudent, tostudent,
checkedClose,
}; };
}, },
}; };

View File

@@ -928,34 +928,32 @@ 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)
state.taskSyllabus = []; state.taskSyllabus = [];
console.log(res); console.log(res);
state.projectInfo.name = res.data.data.projectTemplateInfo.name; state.projectInfo.name = res.data.data.projectTemplateInfo.name;
state.projectInfo.beginTime = state.projectInfo.beginTime = res.data.data.projectTemplateInfo.beginTime;
res.data.data.projectTemplateInfo.beginTime;
state.projectInfo.endTime = res.data.data.projectTemplateInfo.endTime; state.projectInfo.endTime = res.data.data.projectTemplateInfo.endTime;
state.projectInfo.manager = res.data.data.projectTemplateInfo.manager; state.projectInfo.manager = res.data.data.projectTemplateInfo.manager;
state.projectInfo.notice = res.data.data.projectTemplateInfo.notice; state.projectInfo.notice = res.data.data.projectTemplateInfo.notice;
state.projectInfo.sourceBelongId = state.projectInfo.sourceBelongId = res.data.data.projectTemplateInfo.sourceBelongId;
res.data.data.projectTemplateInfo.sourceBelongId; state.projectInfo.managerId = res.data.data.projectTemplateInfo.managerId;
state.projectInfo.managerId = state.projectInfo.remark = res.data.data.projectTemplateInfo.remark;
res.data.data.projectTemplateInfo.managerId; state.projectInfo.courseSyncFlag = res.data.data.projectTemplateInfo.courseSyncFlag;
state.projectInfo.remark = res.data.data.stageList.remark;
state.projectInfo.courseSyncFlag =
res.data.data.projectTemplateInfo.courseSyncFlag;
state.projectInfo.level = res.data.data.projectTemplateInfo.level; state.projectInfo.level = res.data.data.projectTemplateInfo.level;
state.projectInfo.systemId = state.projectInfo.systemId = res.data.data.projectTemplateInfo.systemId;
res.data.data.projectTemplateInfo.systemId;
state.projectInfo.boeFlag = res.data.data.projectTemplateInfo.boeFlag; state.projectInfo.boeFlag = res.data.data.projectTemplateInfo.boeFlag;
state.projectInfo.noticeFlag = state.projectInfo.noticeFlag = res.data.data.projectTemplateInfo.noticeFlag;
res.data.data.projectTemplateInfo.noticeFlag;
state.projectInfo.remark = res.data.data.projectTemplateInfo.remark; state.projectInfo.remark = res.data.data.projectTemplateInfo.remark;
state.projectInfo.status = res.data.data.projectTemplateInfo.status; state.projectInfo.status = res.data.data.projectTemplateInfo.status;
state.projectInfo.picUrl = res.data.data.projectTemplateInfo.picUrl; state.projectInfo.picUrl = res.data.data.projectTemplateInfo.picUrl;
state.projectInfo.attach =res.res.data.data.projectTemplateInfo.attach; state.projectInfo.attach = res.data.data.projectTemplateInfo.attach;
let data = res.data.data.stageList; let data = res.data.data.stageList;
console.log("data=====", data); console.log("data=====", data);
for (let i in data) { for (let i in data) {
console.log('what ------ > ', i,data)
state.taskSyllabus.push({ text: data[i].name, children: [] }); state.taskSyllabus.push({ text: 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({

View File

@@ -44,7 +44,6 @@
placeholder="请选择状态" placeholder="请选择状态"
:options="sProjectStateList" :options="sProjectStateList"
allowClear allowClear
showSearch
></a-select> ></a-select>
</div> </div>
<div class="select"> <div class="select">
@@ -1526,6 +1525,7 @@ export default {
onClick={() => { onClick={() => {
router.push({ router.push({
path: "/taskpage", path: "/taskpage",
query: {projectId: value.record.projectId}
}); });
storage.set("projectId", value.record.projectId); storage.set("projectId", value.record.projectId);
}} }}

View File

@@ -115,7 +115,7 @@
<div class="filt"> <div class="filt">
<div class="le"> <div class="le">
<div class="leftimg"> <div class="leftimg">
<img class="img" :src="picUrl" /> <img class="img" :src="picUrl"/>
</div> </div>
<div class="imgfor"> <div class="imgfor">
<div class="forz" style="font-weight: 700"> <div class="forz" style="font-weight: 700">
@@ -155,7 +155,7 @@
<div class="item" @click="showDrawerOnline"> <div class="item" @click="showDrawerOnline">
<div class="itcon"> <div class="itcon">
<div class="img"> <div class="img">
<img src="../../assets/images/leveladd/zai.png" /> <img src="../../assets/images/leveladd/zai.png"/>
</div> </div>
<div class="text">在线</div> <div class="text">在线</div>
</div> </div>
@@ -178,7 +178,7 @@
<div class="item" @click="showDrawerFaceteach"> <div class="item" @click="showDrawerFaceteach">
<div class="itcon"> <div class="itcon">
<div class="img"> <div class="img">
<img src="../../assets/images/leveladd/mian.png" /> <img src="../../assets/images/leveladd/mian.png"/>
</div> </div>
<div class="text">面授</div> <div class="text">面授</div>
</div> </div>
@@ -201,7 +201,7 @@
<div class="item" @click="showDrawerAddCase"> <div class="item" @click="showDrawerAddCase">
<div class="itcon"> <div class="itcon">
<div class="img"> <div class="img">
<img src="../../assets/images/leveladd/an.png" /> <img src="../../assets/images/leveladd/an.png"/>
</div> </div>
<div class="text">案例</div> <div class="text">案例</div>
</div> </div>
@@ -224,7 +224,7 @@
<div class="item"> <div class="item">
<div class="itcon"> <div class="itcon">
<div class="img" @click="showDrawerAddHomework"> <div class="img" @click="showDrawerAddHomework">
<img src="../../assets/images/leveladd/zuo.png" /> <img src="../../assets/images/leveladd/zuo.png"/>
</div> </div>
<div class="text">作业</div> <div class="text">作业</div>
</div> </div>
@@ -247,7 +247,7 @@
<div class="item" @click="showDrawerAddTest"> <div class="item" @click="showDrawerAddTest">
<div class="itcon"> <div class="itcon">
<div class="img"> <div class="img">
<img src="../../assets/images/leveladd/kao.png" /> <img src="../../assets/images/leveladd/kao.png"/>
</div> </div>
<div class="text">考试</div> <div class="text">考试</div>
</div> </div>
@@ -270,7 +270,7 @@
<div class="item" @click="showDrawerAddLive"> <div class="item" @click="showDrawerAddLive">
<div class="itcon"> <div class="itcon">
<div class="img"> <div class="img">
<img src="../../assets/images/leveladd/zhi.png" /> <img src="../../assets/images/leveladd/zhi.png"/>
</div> </div>
<div class="text">直播</div> <div class="text">直播</div>
</div> </div>
@@ -293,7 +293,7 @@
<div class="item" @click="showDrawerAddRef"> <div class="item" @click="showDrawerAddRef">
<div class="itcon"> <div class="itcon">
<div class="img"> <div class="img">
<img src="../../assets/images/leveladd/wai.png" /> <img src="../../assets/images/leveladd/wai.png"/>
</div> </div>
<div class="text">外链</div> <div class="text">外链</div>
</div> </div>
@@ -316,7 +316,7 @@
<div class="item" @click="showDrawerAddDiscuss"> <div class="item" @click="showDrawerAddDiscuss">
<div class="itcon"> <div class="itcon">
<div class="img"> <div class="img">
<img src="../../assets/images/leveladd/tao.png" /> <img src="../../assets/images/leveladd/tao.png"/>
</div> </div>
<div class="text">讨论</div> <div class="text">讨论</div>
</div> </div>
@@ -339,7 +339,7 @@
<div class="item" @click="showDrawerAddActive"> <div class="item" @click="showDrawerAddActive">
<div class="itcon"> <div class="itcon">
<div class="img"> <div class="img">
<img src="../../assets/images/leveladd/huo.png" /> <img src="../../assets/images/leveladd/huo.png"/>
</div> </div>
<div class="text">活动</div> <div class="text">活动</div>
</div> </div>
@@ -362,7 +362,7 @@
<div class="item" @click="showDrawerAddEval"> <div class="item" @click="showDrawerAddEval">
<div class="itcon"> <div class="itcon">
<div class="img"> <div class="img">
<img src="../../assets/images/leveladd/ce.png" /> <img src="../../assets/images/leveladd/ce.png"/>
</div> </div>
<div class="text">测评</div> <div class="text">测评</div>
</div> </div>
@@ -385,7 +385,7 @@
<div class="item" @click="showDrawerAddInvist"> <div class="item" @click="showDrawerAddInvist">
<div class="itcon"> <div class="itcon">
<div class="img"> <div class="img">
<img src="../../assets/images/leveladd/diao.png" /> <img src="../../assets/images/leveladd/diao.png"/>
</div> </div>
<div class="text">评估</div> <div class="text">评估</div>
</div> </div>
@@ -408,7 +408,7 @@
<div class="item" @click="showDrawerAddVote"> <div class="item" @click="showDrawerAddVote">
<div class="itcon"> <div class="itcon">
<div class="img"> <div class="img">
<img src="../../assets/images/leveladd/tou.png" /> <img src="../../assets/images/leveladd/tou.png"/>
</div> </div>
<div class="text">投票</div> <div class="text">投票</div>
<!-- 添加投票侧弹窗 --> <!-- 添加投票侧弹窗 -->
@@ -590,6 +590,7 @@
style=" style="
width: 120px; width: 120px;
text-align: center; text-align: center;
text-align: center;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
@@ -872,7 +873,7 @@
</div> </div>
<div class="del_btnbox"> <div class="del_btnbox">
<div class="del_btn btn1"> <div class="del_btn btn1">
<div class="btnText" @click="delete_exit">取消</div> <div class="btnText" @click="closeCancel">取消</div>
</div> </div>
<div class="del_btn btn2"> <div class="del_btn btn2">
<div class="btnText" @click="showModal">确定</div> <div class="btnText" @click="showModal">确定</div>
@@ -989,7 +990,8 @@
</div> </div>
</div> </div>
</div> </div>
</a-modal> </a-modal
>
<!-- 是否删除阶段弹窗 --> <!-- 是否删除阶段弹窗 -->
<a-modal <a-modal
@@ -1025,7 +1027,7 @@
</template> </template>
<script> <script>
import { reactive, toRefs, onMounted, onUnmounted, onUpdated } from "vue"; import {reactive, toRefs, onMounted, onUnmounted, onUpdated, watch} from "vue";
import AddOnline from "../../components/drawers/AddOnline.vue"; import AddOnline from "../../components/drawers/AddOnline.vue";
import AddFaceteach from "../../components/drawers/AddFaceteach.vue"; import AddFaceteach from "../../components/drawers/AddFaceteach.vue";
import AddCase from "../../components/drawers/AddCase.vue"; import AddCase from "../../components/drawers/AddCase.vue";
@@ -1038,15 +1040,15 @@ import AddActive from "../../components/drawers/AddActive.vue";
import AddEval from "../../components/drawers/AddEval.vue"; import AddEval from "../../components/drawers/AddEval.vue";
import AddInvist from "../../components/drawers/AddInvist.vue"; import AddInvist from "../../components/drawers/AddInvist.vue";
import AddVote from "../../components/vote/AddVote.vue"; import AddVote from "../../components/vote/AddVote.vue";
import { message } from "ant-design-vue"; import {message} from "ant-design-vue";
import * as api from "../../api/indexTaskadd"; import * as api from "../../api/indexTaskadd";
import * as apistage from "../../api/indexStage"; import * as apistage from "../../api/indexStage";
import * as apimove from "../../api/indexMovetask"; import * as apimove from "../../api/indexMovetask";
import draggable from "vuedraggable"; import draggable from "vuedraggable";
import { storage } from "../../api/storage"; import {storage} from "../../api/storage";
// import UnlockMode from "../../components/drawers/UnlockMode.vue"; // import UnlockMode from "../../components/drawers/UnlockMode.vue";
// import * as api1 from "../../api/index1"; // import * as api1 from "../../api/index1";
import { useRouter } from "vue-router"; import {useRoute, useRouter} from "vue-router";
export default { export default {
name: "TaskAdd", name: "TaskAdd",
@@ -1068,10 +1070,9 @@ export default {
}, },
setup() { setup() {
const router = useRouter(); const router = useRouter();
const route = useRoute();
const state = reactive({ const state = reactive({
projectId: storage.get("projectId") projectId: route.query.projectId,
? JSON.parse(storage.get("projectId"))
: null,
chooseStageId: null, chooseStageId: null,
removeStageId: null, removeStageId: null,
edit: false, edit: false,
@@ -1158,6 +1159,10 @@ export default {
console.log("visible", bool); console.log("visible", bool);
}; };
watch(route, () => {
console.log(route)
})
// 把数据放到state里 // 把数据放到state里
const getTableData = (tableData) => { const getTableData = (tableData) => {
let data = tableData; let data = tableData;
@@ -1238,14 +1243,14 @@ export default {
width: 60, width: 60,
align: "left", align: "left",
className: "classify", className: "classify",
scopedSlots: { customRender: "action" }, scopedSlots: {customRender: "action"},
customRender: (text) => { customRender: (text) => {
// console.log(text.record.checked1); // console.log(text.record.checked1);
return ( return (
<div class="racona"> <div class="racona">
<div <div
class="img" class="img"
style={{ cursor: "pointer" }} style={{cursor: "pointer"}}
onClick={() => { onClick={() => {
console.log("点击了"); console.log("点击了");
}} }}
@@ -1278,7 +1283,7 @@ export default {
// width: 100, // width: 100,
align: "center", align: "center",
className: "h", className: "h",
scopedSlots: { customRender: "action" }, scopedSlots: {customRender: "action"},
customRender: (text) => { customRender: (text) => {
// console.log(text.record.checked1); // console.log(text.record.checked1);
return ( return (
@@ -1325,7 +1330,7 @@ export default {
key: "opacation", key: "opacation",
// width: 100, // width: 100,
align: "center", align: "center",
scopedSlots: { customRender: "action" }, scopedSlots: {customRender: "action"},
customRender: (text) => { customRender: (text) => {
return ( return (
<div class="opa"> <div class="opa">
@@ -1357,91 +1362,87 @@ export default {
}; };
//获取任务列表 //获取任务列表
const getTask = () => { const getTask = async () => {
// console.log("state.projectId", state.projectId);
let obj = { let obj = {
projectId: state.projectId, projectId: state.projectId,
// projectId: 28,
}; };
api await api
.getTask(obj) .getTask(obj)
.then((res) => { .then((res) => {
if (res.status == 200) {
console.log("22222", res.data.data.stageList); console.log("22222", res.data.data.stageList);
// console.log("22222", res.data.data.stageList);
state.projectTitle = res.data.data.projectInfo.name; state.projectTitle = res.data.data.projectInfo.name;
state.picUrl = res.data.data.projectInfo.picUrl; state.picUrl = res.data.data.projectInfo.picUrl;
state.stageList = res.data.data.stageList; state.stageList = res.data.data.stageList;
let leng = res.data.data.stageList.length;
if (leng > 0) {
let stage = localStorage.getItem("stageId")
? localStorage.getItem("stageId")
: null;
// console.log("stage",Object.prototype.toString.call(stage))
getStageData(res.data.data.stageList); getStageData(res.data.data.stageList);
if (stage != null) { updateStageChoosd()
console.log(stage); // let leng = res.data.data.stageList.length;
let stageList = res.data.data.stageList; //阶段数组 // if (leng > 0) {
let result = stageList.find((item) => item.stageId == stage); // let stage = localStorage.getItem("stageId") ? localStorage.getItem("stageId") : null;
console.log("又找到了", result); //
if (result != null) { // // console.log("stage",Object.prototype.toString.call(stage))
getTableData(result.taskList); // if (stage != null) {
} else { // console.log(stage);
//没有选中的阶段时,获取全部的任务 // let stageList = res.data.data.stageList; //阶段数组
console.log(stage); //
let stageList = res.data.data.stageList; //阶段数组 //
if (stageList != null) { //
let taskListAll; // let result = stageList.find((item) => item.stageId == stage);
stageList.forEach((item) => { // console.log("又找到了", result);
taskListAll = [...item.taskList]; // if (result != null) {
}); // getTableData(result.taskList);
console.log("taskListAll", taskListAll); // } else {
getTableData(taskListAll); // //没有选中的阶段时,获取全部的任务
} // console.log(stage);
} // let stageList = res.data.data.stageList; //阶段数组
} else { // if (stageList != null) {
console.log(stage); // let taskListAll;
let stageList = res.data.data.stageList; //阶段数组 // stageList.forEach((item) => {
if (stageList != null) { // taskListAll = [...item.taskList];
let taskListAll;
stageList.forEach((item) => {
taskListAll = [...item.taskList];
});
console.log("taskListAll", taskListAll);
getTableData(taskListAll);
}
}
// 每次都获取了第一条taskList
// let arr = res.data.data.stageList[0].taskList;
// console.log("任务列表", stage, arr);
// getTableData(arr);
}
// //获取阶段列表
let stagearr = res.data.data.stageList;
// let arrlist = state.curLevel;
console.log(stagearr, 111111);
if (stagearr.length > 0) {
getStageData(stagearr);
// stagearr.map((value) => {
// console.log(value);
// // arrlist.push(value);
// }); // });
} // console.log("taskListAll", taskListAll);
//给阶段id赋初始值 // getTableData(taskListAll);
let stageid = localStorage.getItem("stageId") // }
? localStorage.getItem("stageId") // }
: null; // } else {
if (stageid !== "null") { // console.log(stage);
state.chooseStageId = stageid; // let stageList = res.data.data.stageList; //阶段数组
} else { // if (stageList != null) {
state.chooseStageId = leng > 0 ? stagearr[0].stageId : null; // let taskListAll;
} // stageList.forEach((item) => {
} // taskListAll = [...item.taskList];
// });
// console.log("taskListAll", taskListAll);
// getTableData(taskListAll);
// }
// }
// // 每次都获取了第一条taskList
// // let arr = res.data.data.stageList[0].taskList;
// // console.log("任务列表", stage, arr);
// // getTableData(arr);
// }
// // //获取阶段列表
// let stagearr = res.data.data.stageList;
// // let arrlist = state.curLevel;
// console.log(stagearr, 111111);
// if (stagearr.length > 0) {
// getStageData(stagearr);
// // stagearr.map((value) => {
// // console.log(value);
// // // arrlist.push(value);
// // });
// }
// //给阶段id赋初始值
// let stageid = localStorage.getItem("stageId")
// ? localStorage.getItem("stageId")
// : null;
// if (stageid !== "null") {
// state.chooseStageId = stageid;
// } else {
// state.chooseStageId = leng > 0 ? stagearr[0].stageId : null;
// }
// let final = state.level.find((item) => item.id == state.chooseStageId);
// getTableData(final.taskList);
}) })
.catch((err) => {
console.log("获取任务列表失败", err);
});
}; };
//获取修改、删除id投票) //获取修改、删除id投票)
@@ -1457,18 +1458,28 @@ export default {
}; };
//删除任务 //删除任务
const deleteTask = () => { const deleteTask = async () => {
let obj = { projectTaskIds: state.deleteID }; await api.deleteTask({projectTaskIds: state.deleteID})
api //删除后更新索引
.deleteTask(obj)
.then((res) => {
console.log(res);
})
.catch((err) => {
console.log(err);
});
}; };
function updateStageChoosd() {
console.log('updateStageChoosd')
console.log(state.chooseStageId)
if (state.chooseStageId && state.stageList.find(e => e.stageId == state.chooseStageId)) {
getTableData(state.stageList.find(e => e.stageId == state.chooseStageId)?.taskList);
return
}
state.chooseStageId = ''
const arr = state.stageList.filter(e => e.name);
arr && arr.length && (state.chooseStageId = arr[0].stageId);
if (!state.chooseStageId) {
getTableData(state.stageList[0].taskList)
return
}
getTableData(state.stageList.find(e => e.stageId == state.chooseStageId)?.taskList);
}
const showChangeModal = () => { const showChangeModal = () => {
if (state.selectRow.length == 0) { if (state.selectRow.length == 0) {
message.destroy(); message.destroy();
@@ -1578,7 +1589,7 @@ export default {
} }
}; };
//添加阶段 //添加阶段
const editStage = () => { const editStage = async () => {
if (!state.valuesname) { if (!state.valuesname) {
message.destroy(); message.destroy();
return message.warning("请输入阶段名称"); return message.warning("请输入阶段名称");
@@ -1590,9 +1601,9 @@ export default {
remark: state.valuesnotice, remark: state.valuesnotice,
stageId: state.updateStageID, stageId: state.updateStageID,
}; };
apistage await apistage
.editStage(obj) .editStage(obj)
.then((res) => { .then(async (res) => {
console.log("修改阶段成功", res); console.log("修改阶段成功", res);
state.valuesname = ""; state.valuesname = "";
state.valuesnotice = ""; state.valuesnotice = "";
@@ -1600,31 +1611,33 @@ export default {
state.updateStageID = null; state.updateStageID = null;
message.destroy(); message.destroy();
message.success("修改阶段成功"); message.success("修改阶段成功");
getTask(); await getTask();
state.chooseStageId = res.data.data.stageId;
let final = state.level.find((item) => item.id == state.chooseStageId);
getTableData(final.taskList);
}) })
.catch((err) => { .catch((err) => {
console.log("添加阶段失败", err); console.log("添加阶段失败", err);
}); });
} else { } else {
//默认阶段
if (state.stageList.length === 1 && !state.stageList.name) {
console.log("11");
}
let obj = { let obj = {
name: state.valuesname, name: state.valuesname,
projectId: state.projectId, projectId: state.projectId,
remark: state.valuesnotice, remark: state.valuesnotice,
}; };
apistage await apistage
.editStage(obj) .editStage(obj)
.then((res) => { .then(async (res) => {
console.log("添加阶段成功", res); console.log("添加阶段成功", res);
state.valuesname = ""; state.valuesname = "";
state.valuesnotice = ""; state.valuesnotice = "";
closeModal(); closeModal();
message.destroy(); message.destroy();
message.success("添加阶段成功"); message.success("添加阶段成功");
getTask(); await getTask();
state.chooseStageId = res.data.data.stageId;
let final = state.level.find((item) => item.id == state.chooseStageId);
getTableData(final.taskList);
}) })
.catch((err) => { .catch((err) => {
console.log("添加阶段失败", err); console.log("添加阶段失败", err);
@@ -1767,7 +1780,7 @@ export default {
state.selectAll = 0; //0未选择1全选2部分选择 state.selectAll = 0; //0未选择1全选2部分选择
console.log("state.level", id, state.level); console.log("state.level", id, state.level);
state.chooseStageId = id; state.chooseStageId = id;
let final = state.level.find((item) => item.id === id); let final = state.level.find((item) => item.id == id);
getTableData(final.taskList); getTableData(final.taskList);
}; };

View File

@@ -323,8 +323,10 @@
<!-- <button class="btn" @click="showFaceIn" v-if="morFaceT"> <!-- <button class="btn" @click="showFaceIn" v-if="morFaceT">
批量面授报名 批量面授报名
</button> --> </button> -->
<router-link to="/taskadd"> <router-link
<button to="/taskadd" class="edit"> :to="{ path: `/taskadd`, query: { projectId: projectId } }"
>
<button class="edit">
<img <img
class="editimg" class="editimg"
src="../../assets/images/projectadd/edit.png" src="../../assets/images/projectadd/edit.png"
@@ -367,9 +369,10 @@
/> />
<div></div> <div></div>
</template> </template>
<template v-for="(value, index) in taskSyllabus">
<a-collapse-panel <a-collapse-panel
v-for="(value, index) in taskSyllabus"
:key="index" :key="index"
v-if="value.name"
:header="value.name" :header="value.name"
> >
<div <div
@@ -530,10 +533,11 @@
</div> </div>
</div> </div>
</a-collapse-panel> </a-collapse-panel>
</template>
</a-collapse> </a-collapse>
<!-- 无数据创建任务 v-if="taskSyllabus.length == 0"--> <!-- 无数据创建任务 v-if="taskSyllabus.length == 0"-->
<router-link <router-link
to="/taskadd" :to="{ path: `/taskadd`, query: { projectId: projectId } }"
class="taskbox" class="taskbox"
style=" style="
background: linear-gradient(180deg, #ddeaff, #f0f8fe); background: linear-gradient(180deg, #ddeaff, #f0f8fe);
@@ -562,7 +566,10 @@
class="taskbox" class="taskbox"
@click=" @click="
() => { () => {
routered.push({ path: '/taskadd' }); routered.push({
path: `/taskadd`,
query: { projectId: projectId },
});
} }
" "
style="background: linear-gradient(180deg, #fef3dd, #fffaf0)" style="background: linear-gradient(180deg, #fef3dd, #fffaf0)"
@@ -1794,11 +1801,10 @@ export default {
}, },
setup() { setup() {
const store = useStore(); const store = useStore();
const route = useRoute();
const state = reactive({ const state = reactive({
loading: false, loading: false,
projectId: storage.get("projectId") projectId: route.query.projectId,
? JSON.parse(storage.get("projectId"))
: null,
isbj: storage.get("isbj") ? JSON.parse(storage.get("isbj")) : null, isbj: storage.get("isbj") ? JSON.parse(storage.get("isbj")) : null,
// pN: storage.get("pN") ? JSON.parse(storage.get("pN")) : null, // pN: storage.get("pN") ? JSON.parse(storage.get("pN")) : null,
pN: storage.get("pN"), pN: storage.get("pN"),
@@ -2461,8 +2467,7 @@ export default {
apitl apitl
.getProjectDetail(objtl) .getProjectDetail(objtl)
.then((res) => { .then((res) => {
console.log("获取阶段列表", res); if (res.status == 200) {
if (res.data.code == 200) {
console.log("阶段列表", res.data.data.stageList); console.log("阶段列表", res.data.data.stageList);
for (let i = 0; i < res.data.data.stageList.length; i++) { for (let i = 0; i < res.data.data.stageList.length; i++) {
for ( for (
@@ -3390,7 +3395,6 @@ export default {
let leng = res.data.data.rows.length; let leng = res.data.data.rows.length;
if (leng > 0) { if (leng > 0) {
let arr = res.data.data.rows; let arr = res.data.data.rows;
console.log("arr", arr);
setGroupList(arr); setGroupList(arr);
} }
}) })
@@ -3566,10 +3570,7 @@ export default {
console.log("state.projectId", state.projectId); console.log("state.projectId", state.projectId);
getTask({ getTask({
projectId: state.projectId, projectId: state.projectId,
}) }).then((res) => {
.then((res) => {
console.log(" res.data.data", res.data);
if (res.data.code === 200) {
state.action = res.data.data.projectInfo.status; state.action = res.data.data.projectInfo.status;
state.act = state.act =
state.action == 0 state.action == 0
@@ -3579,10 +3580,6 @@ export default {
: state.action == -1 : state.action == -1
? "" ? ""
: "-"; : "-";
}
})
.catch((err) => {
console.log("获取任务列表失败", err);
}); });
}; };
//打开发布弹窗 //打开发布弹窗