feat:合并

This commit is contained in:
lixg
2022-12-01 01:57:10 +08:00
7 changed files with 171 additions and 162 deletions

View File

@@ -5,26 +5,26 @@
<div class="header"> <div class="header">
<div class="headerTitle">添加面授</div> <div class="headerTitle">添加面授</div>
<img style="width: 29px; height: 29px; cursor: pointer" src="../../assets/images/basicinfo/close.png" <img style="width: 29px; height: 29px; cursor: pointer" src="../../assets/images/basicinfo/close.png"
@click="closeDrawer" /> @click="closeDrawer"/>
</div> </div>
<div class="contentMain"> <div class="contentMain">
<div class="main_left"> <div class="main_left">
<div class="main_item"> <div class="main_item">
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" /> <img src="@/assets/images/coursewareManage/asterisk.png" alt=""/>
</div> </div>
<span style="margin-right: 3px">课程名称</span> <span style="margin-right: 3px">课程名称</span>
</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="20"/>
</div> </div>
</div> </div>
<div class="main_item"> <div class="main_item">
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" /> <img src="@/assets/images/coursewareManage/asterisk.png" alt=""/>
</div> </div>
<span style="margin-right: 3px">选择课程</span> <span style="margin-right: 3px">选择课程</span>
</div> </div>
@@ -41,7 +41,7 @@
</div> </div>
<!-- 选择面授侧弹窗 --> <!-- 选择面授侧弹窗 -->
<div> <div>
<sel-facet v-model:selfacetVisible="selfacetvisible" v-model:chooseCourse="chooseCourse" /> <sel-facet v-model:selfacetVisible="selfacetvisible" v-model:chooseCourse="chooseCourse"/>
</div> </div>
<!-- 选择面授侧弹窗 --> <!-- 选择面授侧弹窗 -->
</div> </div>
@@ -50,36 +50,36 @@
<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 maxlength="100"/>
</div> </div>
</div> </div>
<div class="main_item"> <div class="main_item">
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" /> <img src="@/assets/images/coursewareManage/asterisk.png" alt=""/>
</div> </div>
<span style="margin-right: 3px">授课教师</span> <span style="margin-right: 3px">授课教师</span>
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-auto-complete v-model:value="memberValue.label" placeholder="选择老师" style="width: 364px" <a-auto-complete placeholder="选择老师" :value="memberValue.label" style="width: 364px"
:options="options" @search="handleSearch"></a-auto-complete> :options="options" @change="handleChange2" @search="handleSearch"></a-auto-complete>
</div> </div>
</div> </div>
<div class="main_item"> <div class="main_item">
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" /> <img src="@/assets/images/coursewareManage/asterisk.png" alt=""/>
</div> </div>
<span style="margin-right: 3px">面授时间</span> <span style="margin-right: 3px">面授时间</span>
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-range-picker v-model:value="chooseTime" :placeholder="[' 开始时间', ' 结束时间']" /> <a-range-picker v-model:value="chooseTime" :placeholder="[' 开始时间', ' 结束时间']"/>
</div> </div>
</div> </div>
<div class="main_item"> <div class="main_item">
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" /> <img src="@/assets/images/coursewareManage/asterisk.png" alt=""/>
</div> </div>
<span style="margin-right: 3px">面授时长</span> <span style="margin-right: 3px">面授时长</span>
</div> </div>
@@ -96,13 +96,13 @@
<div class="main_item"> <div class="main_item">
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" /> <img src="@/assets/images/coursewareManage/asterisk.png" alt=""/>
</div> </div>
<span style="margin-right: 3px">上课地址</span> <span style="margin-right: 3px">上课地址</span>
</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">
@@ -157,7 +157,8 @@
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-checkbox v-model:checked="completeLeave" <a-checkbox v-model:checked="completeLeave"
@click="completeLeave = !completeLeave">学员请假后记为任务完成</a-checkbox> @click="completeLeave = !completeLeave">学员请假后记为任务完成
</a-checkbox>
</div> </div>
</div> </div>
<div class="main_item"> <div class="main_item">
@@ -166,8 +167,10 @@
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-checkbox v-model:checked="innerPersion" <a-checkbox v-model:checked="innerPersion"
@click="innerPersion = !innerPersion">允许项目内人员临时到场参加</a-checkbox> @click="innerPersion = !innerPersion">允许项目内人员临时到场参加
<a-checkbox v-model:checked="outPersion" @click="outPersion = !outPersion">允许项目外人员临时到场参加</a-checkbox> </a-checkbox>
<a-checkbox v-model:checked="outPersion" @click="outPersion = !outPersion">允许项目外人员临时到场参加
</a-checkbox>
</div> </div>
</div> </div>
<div class="main_item2"> <div class="main_item2">
@@ -189,7 +192,7 @@
</a-tag> </a-tag>
</div> </div>
<AssessmentList v-model:assessmentVisible="assessmentVisible" v-model:titleTag="titleTag" <AssessmentList v-model:assessmentVisible="assessmentVisible" v-model:titleTag="titleTag"
v-model:assessmentId="assessmentId" /> v-model:assessmentId="assessmentId"/>
</div> </div>
</div> </div>
@@ -214,7 +217,7 @@
<!-- 添加作业侧弹窗 --> <!-- 添加作业侧弹窗 -->
<div> <div>
<add-homework v-model:addhomeworkVisible="addhomeworkvisible" @getWork="getWork" :faceLevel="true" <add-homework v-model:addhomeworkVisible="addhomeworkvisible" @getWork="getWork" :faceLevel="true"
v-model:EditWorkId="EditWorkId" /> v-model:EditWorkId="EditWorkId"/>
</div> </div>
<!-- 添加作业侧弹窗 --> <!-- 添加作业侧弹窗 -->
</div> </div>
@@ -236,7 +239,7 @@
</div> </div>
<!-- 添加考试侧弹窗 --> <!-- 添加考试侧弹窗 -->
<div> <div>
<add-test v-model:addtestVisible="addtestvisible" v-model:EditTestId="EditTestId" :faceLevel="true" /> <add-test v-model:addtestVisible="addtestvisible" v-model:EditTestId="EditTestId" :faceLevel="true"/>
</div> </div>
<!-- 添加考试侧弹窗 --> <!-- 添加考试侧弹窗 -->
</div> </div>
@@ -246,7 +249,8 @@
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-upload @change="handleChange" action="/manageApi/file/upload" v-model:file-list="fileList"> <a-upload @change="handleChange" action="/manageApi/file/upload" v-model:file-list="fileList">
<button class="xkbtn">上传附件</button></a-upload> <button class="xkbtn">上传附件</button>
</a-upload>
</div> </div>
</div> </div>
</div> </div>
@@ -260,20 +264,21 @@
</a-drawer> </a-drawer>
</template> </template>
<script> <script>
import { reactive, toRefs, ref } from "vue"; import {reactive, toRefs, ref} from "vue";
import SelFacet from "../../components/drawers/SelFacet.vue"; import SelFacet from "../../components/drawers/SelFacet.vue";
import AddHomework from "../../components/drawers/AddHomework.vue"; import AddHomework from "../../components/drawers/AddHomework.vue";
import AddTest from "../../components/drawers/AddTest.vue"; import AddTest from "../../components/drawers/AddTest.vue";
import { ProjectEditTask, RouterEditTask } from "@/api/indexTask"; import {ProjectEditTask, RouterEditTask} from "@/api/indexTask";
// import * as method from "../../api/method" // import * as method from "../../api/method"
import { message } from "ant-design-vue"; import {message} from "ant-design-vue";
import { getMemberInfo } from "@/api/index1"; import {getMemberInfo} from "@/api/index1";
import { debounce } from "lodash-es"; import {debounce} from "lodash-es";
import { queryFaceDetailById, editPlan } from "../../api/indexFace"; import {queryFaceDetailById, editPlan} from "../../api/indexFace";
import dayjs from "dayjs"; import dayjs from "dayjs";
import AssessmentList from "../drawers/ AssessmentList.vue"; import AssessmentList from "../drawers/ AssessmentList.vue";
// import { toDate } from "../../api/method";、 // import { toDate } from "../../api/method";、
import { addTempTask } from "../../api/indexTaskadd"; import {addTempTask} from "../../api/indexTaskadd";
export default { export default {
name: "AddFaceteach", name: "AddFaceteach",
components: { components: {
@@ -442,7 +447,7 @@ export default {
let result = res.data.data; let result = res.data.data;
state.courseName = result.name; state.courseName = result.name;
state.description = result.description; state.description = result.description;
state.memberValue = { value: result.teacherId, label: result.teacher } state.memberValue = {value: result.teacherId, label: result.teacher}
state.duration = result.duration; state.duration = result.duration;
if (result.beginTime && result.endTime) { if (result.beginTime && result.endTime) {
state.chooseTime = [ state.chooseTime = [
@@ -515,18 +520,20 @@ export default {
projectMember: p.concat(p1), projectMember: p.concat(p1),
offcourseId: state.chooseCourse, offcourseId: state.chooseCourse,
offcoursePlanId: props.EditFaceId > 0 ? props.EditFaceId : 0, offcoursePlanId: props.EditFaceId > 0 ? props.EditFaceId : 0,
testId: state.EditTestId testId: state.EditTestId,
duration:state.duration,
}; };
console.log("obj============", obj, "6" + "9"); console.log("obj============", obj, "6" + "9");
console.log("222222222");
editPlan(obj) editPlan(obj).then(async (res) => {
.then((res) => {
message.destroy(); message.destroy();
message.sucsess(`添加成功`); message.success(`添加成功`);
updateTask(res); await updateTask(res);
ctx.emit("changeData", false); ctx.emit("changeData", false);
closeDrawer(); closeDrawer();
}).catch(() => { }).catch((e) => {
console.log(e)
message.destroy(); message.destroy();
message.error(`添加失败`); message.error(`添加失败`);
}); });
@@ -537,7 +544,7 @@ export default {
//更新任务列表 //更新任务列表
// 新增编辑或新增项目任务 // 新增编辑或新增项目任务
const updateTask = (res) => { const updateTask = async (res) => {
console.log("props.isLevel=====", props.isLevel); console.log("props.isLevel=====", props.isLevel);
if (props.isLevel == 1) { if (props.isLevel == 1) {
let editObj1 = { let editObj1 = {
@@ -548,7 +555,7 @@ export default {
routerTaskId: props.routerTaskId || 0, routerTaskId: props.routerTaskId || 0,
type: 2, type: 2,
}; };
RouterEditTask(editObj1) await RouterEditTask(editObj1)
.then(() => { .then(() => {
//message.success(`${props.edit ? "编辑" : "新增"}关卡任务成功`); //message.success(`${props.edit ? "编辑" : "新增"}关卡任务成功`);
@@ -569,7 +576,7 @@ export default {
type: 2, type: 2,
}; };
// 新增编辑或新增项目 // 新增编辑或新增项目
ProjectEditTask(editObj) await ProjectEditTask(editObj)
.then(() => { .then(() => {
message.success(`${props.EditFaceId ? "编辑" : "新增"}阶段任务成功`); message.success(`${props.EditFaceId ? "编辑" : "新增"}阶段任务成功`);
@@ -579,7 +586,7 @@ export default {
}); });
} else if (props.isLevel == 3) { } else if (props.isLevel == 3) {
console.log("dddddddddddd33333333"); console.log("dddddddddddd33333333");
addTempTask({ await addTempTask({
courseId: res.data.data.offcoursePlanId, courseId: res.data.data.offcoursePlanId,
name: res.data.data.name, name: res.data.data.name,
duration: res.data.data.duration, duration: res.data.data.duration,
@@ -598,7 +605,7 @@ export default {
} }
}; };
const handleChange = ({ file, fileList }) => { const handleChange = ({file, fileList}) => {
if (file.status !== "uploading") { if (file.status !== "uploading") {
console.log(file, fileList); console.log(file, fileList);
} }
@@ -615,7 +622,7 @@ export default {
// 员工滚动 // 员工滚动
const templateScroll = (e) => { const templateScroll = (e) => {
console.log("滚动", e); console.log("滚动", e);
const { target } = e; const {target} = e;
const scrllHeight = target.scrollHeight - target.scrollTop; const scrllHeight = target.scrollHeight - target.scrollTop;
const clientHeight = target.clientHeight; const clientHeight = target.clientHeight;
// console.log("scrllHeight", scrllHeight, clientHeight); // console.log("scrllHeight", scrllHeight, clientHeight);
@@ -668,6 +675,7 @@ export default {
const handleChange2 = (value, label) => { const handleChange2 = (value, label) => {
console.log(`selected ${value}`); console.log(`selected ${value}`);
state.memberId = value; state.memberId = value;
// console.log(label)
state.memberValue = label; state.memberValue = label;
}; };
const handleFocus = () => { const handleFocus = () => {

View File

@@ -107,7 +107,7 @@
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-auto-complete <a-auto-complete
v-model:value="memberValue.label" :value="memberValue.label"
show-search show-search
:not-found-content="fetching ? undefined : null" :not-found-content="fetching ? undefined : null"
placeholder="Select a teacher" placeholder="Select a teacher"
@@ -747,9 +747,10 @@ export default {
queryMember(); queryMember();
state.fetching = false; state.fetching = false;
}, 300); }, 300);
const handleChange2 = (value) => { const handleChange2 = (value,label) => {
console.log(`selected ${value}`); console.log(`selected ${value}`);
state.inputV3 = value; state.inputV3 = value;
state.memberValue = label;
}; };
const handleFocus = () => { const handleFocus = () => {
queryMember(); queryMember();

View File

@@ -187,37 +187,37 @@ export default {
showDown: true, showDown: true,
showDown1: false, showDown1: false,
stageList: [ stageList: [
{ // {
stageName: "阶段1腾飞班阶段1", // stageName: "阶段1腾飞班阶段1",
stageId: 1, // stageId: 1,
taskProcessList: [ // taskProcessList: [
{ // {
course: "在线", // course: "在线",
name: "如何成为一个产品经理", // name: "如何成为一个产品经理",
complete: "已完成", // complete: "已完成",
}, // },
{ // {
course: "直播", // course: "直播",
name: "管理直播课", // name: "管理直播课",
complete: "已完成", // complete: "已完成",
}, // },
{ // {
course: "面授", // course: "面授",
name: "管理面授课", // name: "管理面授课",
complete: "未完成", // complete: "未完成",
}, // },
{ // {
course: "活动", // course: "活动",
name: "管理活动", // name: "管理活动",
complete: "未完成", // complete: "未完成",
}, // },
{ // {
course: "作业", // course: "作业",
name: "管理者作业", // name: "管理者作业",
complete: "未完成", // complete: "未完成",
}, // },
], // ],
}, // },
], ],
stageListActive: 0, stageListActive: 0,
}); });

View File

@@ -116,14 +116,14 @@ export default {
key: "name", key: "name",
align: "center", align: "center",
}, },
// todo 根项目保存
{ // {
title: "所属项目", // title: "所属项目",
dataIndex: "sourceBelongName", // dataIndex: "sourceBelongName",
key: "sourceBelongName", // key: "sourceBelongName",
align: "center", // align: "center",
width: "11%", // width: "11%",
}, // },
{ {
title: "项目经理", title: "项目经理",
dataIndex: "manager", dataIndex: "manager",

View File

@@ -700,83 +700,83 @@ export default defineComponent({
const state = reactive({ const state = reactive({
//任务大纲列表 //任务大纲列表
taskSyllabus: [ taskSyllabus: [
{ // {
text: "阶段1腾飞班阶段1", // text: "阶段1腾飞班阶段1",
children: [ // children: [
{ // {
course: "在线", // course: "在线",
name: "时间管理", // name: "时间管理",
classify: "选修", // classify: "选修",
beginTime: "2022-09-10 14:03", // beginTime: "2022-09-10 14:03",
total: 50, //总人数 // total: 50, //总人数
complete: 20, //完成人数 // complete: 20, //完成人数
percent: 40, // percent: 40,
}, // },
{ // {
course: "直播", // course: "直播",
name: "管理直播间", // name: "管理直播间",
classify: "必修", // classify: "必修",
beginTime: "2022-09-12 14:03", // beginTime: "2022-09-12 14:03",
total: 50, //总人数 // total: 50, //总人数
complete: 10, //完成人数 // complete: 10, //完成人数
percent: 20, // percent: 20,
}, // },
{ // {
course: "面授", // course: "面授",
name: "管理面授课", // name: "管理面授课",
classify: "必修", // classify: "必修",
beginTime: "2022-09-16 14:03", // beginTime: "2022-09-16 14:03",
total: 80, //总人数 // total: 80, //总人数
complete: 0, //完成人数 // complete: 0, //完成人数
percent: 0, // percent: 0,
}, // },
{ // {
course: "活动", // course: "活动",
name: "管理活动", // name: "管理活动",
classify: "必修", // classify: "必修",
beginTime: "2022-09-16 14:03", // beginTime: "2022-09-16 14:03",
total: 50, //总人数 // total: 50, //总人数
complete: 40, //完成人数 // complete: 40, //完成人数
percent: 80, // percent: 80,
}, // },
{ // {
course: "作业", // course: "作业",
name: "管理者作业", // name: "管理者作业",
classify: "选修", // classify: "选修",
beginTime: "2022-09-16 14:03", // beginTime: "2022-09-16 14:03",
total: 50, //总人数 // total: 50, //总人数
complete: 30, //完成人数 // complete: 30, //完成人数
percent: 60, // percent: 60,
}, // },
{ // {
course: "考试", // course: "考试",
name: "管理者考试", // name: "管理者考试",
classify: "必修", // classify: "必修",
beginTime: "2022-09-16 14:03", // beginTime: "2022-09-16 14:03",
total: 50, //总人数 // total: 50, //总人数
complete: 50, //完成人数 // complete: 50, //完成人数
percent: 100, // percent: 100,
}, // },
{ // {
course: "案例", // course: "案例",
name: "管理直播间", // name: "管理直播间",
classify: "必修", // classify: "必修",
beginTime: "2022-09-16 14:03", // beginTime: "2022-09-16 14:03",
total: 50, //总人数 // total: 50, //总人数
complete: 10, //完成人数 // complete: 10, //完成人数
percent: 20, // percent: 20,
}, // },
{ // {
course: "外链", // course: "外链",
name: "管理直播间", // name: "管理直播间",
classify: "必修", // classify: "必修",
beginTime: "2022-09-16 14:03", // beginTime: "2022-09-16 14:03",
total: 50, //总人数 // total: 50, //总人数
complete: 10, //完成人数 // complete: 10, //完成人数
percent: 20, // percent: 20,
}, // },
], // ],
}, // },
], ],
// 模板编辑列表 // 模板编辑列表
managerOptions: [ managerOptions: [

View File

@@ -59,7 +59,7 @@
<div class="items2"> <div class="items2">
<a-popover <a-popover
placement="topLeft" placement="topLeft"
v-if="element.tit.length > 10" v-if="element.tit?.length > 10"
> >
<template #content> <template #content>
<div style="width: 130px"> <div style="width: 130px">
@@ -73,7 +73,7 @@
{{ element.tit }} {{ element.tit }}
</div> </div>
</a-popover> </a-popover>
<div class="nname" v-if="element.tit.length <= 10"> <div class="nname" v-if="element.tit?.length <= 10">
{{ element.tit }} {{ element.tit }}
</div> </div>
</div> </div>

View File

@@ -2392,7 +2392,7 @@ export default {
//任务大纲渲染 //任务大纲渲染
const getTaskList = () => { const getTaskList = () => {
let objtl = { let objtl = {
projectId: 27, projectId: storage.get("projectId"),
}; };
apitl apitl
.getProjectDetail(objtl) .getProjectDetail(objtl)