fix:删除编辑任务的清空

This commit is contained in:
lixg
2022-12-06 18:44:48 +08:00
parent 4a0a0e6367
commit 3b3b0e7d35
4 changed files with 410 additions and 256 deletions

View File

@@ -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-06 17:14:47 * @LastEditTime: 2022-12-06 18:00:21
* @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
*/ */
@@ -55,10 +55,10 @@ http.interceptors.response.use(
if (code === 0 || code === 200) { if (code === 0 || code === 200) {
return response; return response;
} else { } else {
if (code === 1000) { // if (code === 1000) {
window.open("https://u-pre.boe.com/web/", '_self'); // window.open("https://u-pre.boe.com/web/", '_self');
// window.open("http://111.231.196.214:12013/manage/login", '_self'); // // window.open("http://111.231.196.214:12013/manage/login", '_self');
} // }
console.log("api %o", msg); console.log("api %o", msg);
} }
return response; return response;

View File

@@ -1,50 +1,72 @@
<template> <template>
<a-drawer :visible="addfaceteachVisible" class="drawerStyle addfaceteachDrawer" width="90%" title="添加面授" <a-drawer
placement="right" @after-visible-change="afterVisibleChange"> :visible="addfaceteachVisible"
class="drawerStyle addfaceteachDrawer"
width="90%"
title="添加面授"
placement="right"
@after-visible-change="afterVisibleChange"
>
<div class="drawerMain"> <div class="drawerMain">
<div class="header"> <div class="header">
<div v-if="edit" class="headerTitle">编辑面授</div> <div v-if="edit" class="headerTitle">编辑面授</div>
<div v-else class="headerTitle">添加面授</div> <div v-else class="headerTitle">添加面授</div>
<img style="width: 29px; height: 29px; cursor: pointer" src="../../assets/images/basicinfo/close.png" <img
@click="closeDrawer"/> style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png"
@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
:maxlength="20"/> v-model:value="courseName"
style="width: 384px; height: 32px"
placeholder="请输入名称"
: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>
<div class="btnbox"> <div class="btnbox">
<button class="xkbtn" @click="showDrawerSelFacet"> <button class="xkbtn" @click="showDrawerSelFacet">
{{ chooseCourseName ? "重选": "选择"}}面授课 {{ chooseCourseName ? "重选" : "选择" }}面授课
</button> </button>
<div v-if="chooseCourse"> <div v-if="chooseCourse">
<a-tag closable color="processing" @close="logC"> <a-tag closable color="processing" @close="logC">
<span style="font-size:14px;line-height: 33px;">{{chooseCourseName}}</span> <span style="font-size: 14px; line-height: 33px">{{
chooseCourseName
}}</span>
</a-tag> </a-tag>
</div> </div>
</div> </div>
<!-- 选择面授侧弹窗 --> <!-- 选择面授侧弹窗 -->
<div> <div>
<sel-facet v-model:selfacetVisible="selfacetvisible" v-model:chooseCourse="chooseCourse" <sel-facet
v-model:chooseCourseName="chooseCourseName"/> v-model:selfacetVisible="selfacetvisible"
v-model:chooseCourse="chooseCourse"
v-model:chooseCourseName="chooseCourseName"
/>
</div> </div>
<!-- 选择面授侧弹窗 --> <!-- 选择面授侧弹窗 -->
</div> </div>
@@ -53,61 +75,95 @@
<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 show-count :maxlength="200" <a-textarea
:rows="6"/> 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">
<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 placeholder="选择老师" :value="memberValue.label" style="width: 364px"--> <!-- <a-auto-complete placeholder="选择老师" :value="memberValue.label" style="width: 364px"-->
<!-- :options="options" @change="handleChange2" @search="handleSearch"></a-auto-complete>--> <!-- :options="options" @change="handleChange2" @search="handleSearch"></a-auto-complete>-->
<ProjectManager v-model:value="memberValue.value" v-model:name="memberValue.label"></ProjectManager> <ProjectManager
v-model:value="memberValue.value"
v-model:name="memberValue.label"
></ProjectManager>
</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>
<div class="btnbox"> <div class="btnbox">
<a-input-number :min="0" :max="300" :precision="0" style=" <a-input-number
:min="0"
:max="300"
:precision="0"
style="
width: 364px; width: 364px;
height: 32px; height: 32px;
border-radius: 8px; border-radius: 8px;
overflow: hidden; overflow: hidden;
" v-model:value="duration"></a-input-number> "
v-model:value="duration"
></a-input-number>
<span style="margin-left: 5px; width: 30px">分钟</span> <span style="margin-left: 5px; width: 30px">分钟</span>
</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-input v-model:value="address" style="width: 384px; height: 32px" placeholder="请输入上课地址" <a-input
:maxlength="100"/> v-model:value="address"
style="width: 384px; height: 32px"
placeholder="请输入上课地址"
:maxlength="100"
/>
</div> </div>
</div> </div>
<div class="main_item2"> <div class="main_item2">
@@ -123,25 +179,37 @@
<div class="setbox"> <div class="setbox">
<div class="timerbox"> <div class="timerbox">
<span>开始前</span> <span>开始前</span>
<a-input-number :min="0" :max="300" :precision="0" style=" <a-input-number
width: 100px; :min="0"
height: 32px; :max="300"
border-radius: 8px; :precision="0"
overflow: hidden; " v-model:value="before"></a-input-number> style="
width: 100px;
height: 32px;
border-radius: 8px;
overflow: hidden;
"
v-model:value="before"
></a-input-number>
<span style="color: #999999; margin-left: 8px">分钟</span> <span style="color: #999999; margin-left: 8px">分钟</span>
</div> </div>
<div class="timerbox"> <div class="timerbox">
<span>开始后</span> <span>开始后</span>
<a-input-number :min="0" :max="300" :precision="0" style=" <a-input-number
:min="0"
:max="300"
:precision="0"
style="
width: 100px; width: 100px;
height: 32px; height: 32px;
border-radius: 8px; border-radius: 8px;
overflow: hidden;" v-model:value="afterStartValue"></a-input-number> overflow: hidden;
"
v-model:value="afterStartValue"
></a-input-number>
<span style="color: #999999; margin-left: 8px">分钟</span> <span style="color: #999999; margin-left: 8px">分钟</span>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="main_item"> <div class="main_item">
@@ -149,11 +217,11 @@
<span style="margin-right: 3px">完成标准设置</span> <span style="margin-right: 3px">完成标准设置</span>
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-checkbox
v-model:checked="onlySign"
<a-checkbox v-model:checked="onlySign" @click="onlySign = !onlySign">仅签到</a-checkbox> @click="onlySign = !onlySign"
>仅签到</a-checkbox
>
</div> </div>
</div> </div>
<div class="main_item"> <div class="main_item">
@@ -161,8 +229,10 @@
<span style="margin-right: 3px">其他设置</span> <span style="margin-right: 3px">其他设置</span>
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-checkbox v-model:checked="completeLeave" <a-checkbox
@click="completeLeave = !completeLeave">学员请假后记为任务完成 v-model:checked="completeLeave"
@click="completeLeave = !completeLeave"
>学员请假后记为任务完成
</a-checkbox> </a-checkbox>
</div> </div>
</div> </div>
@@ -171,10 +241,15 @@
<span style="margin-right: 3px">现场参与</span> <span style="margin-right: 3px">现场参与</span>
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-checkbox v-model:checked="innerPersion" <a-checkbox
@click="innerPersion = !innerPersion">允许项目内人员临时到场参加 v-model:checked="innerPersion"
@click="innerPersion = !innerPersion"
>允许项目内人员临时到场参加
</a-checkbox> </a-checkbox>
<a-checkbox v-model:checked="outPersion" @click="outPersion = !outPersion">允许项目外人员临时到场参加 <a-checkbox
v-model:checked="outPersion"
@click="outPersion = !outPersion"
>允许项目外人员临时到场参加
</a-checkbox> </a-checkbox>
</div> </div>
</div> </div>
@@ -183,28 +258,32 @@
<span style="margin-right: 3px">评估</span> <span style="margin-right: 3px">评估</span>
</div> </div>
<div class="btnbox2"> <div class="btnbox2">
<a-checkbox v-model:checked="needEval" @click="needEval = !needEval">需要评估</a-checkbox> <a-checkbox
v-model:checked="needEval"
@click="needEval = !needEval"
>需要评估</a-checkbox
>
</div> </div>
</div> </div>
<div v-if="needEval" class="main_item"> <div v-if="needEval" class="main_item">
<div class="signbox"> <div class="signbox"></div>
</div>
<div class="btnbox"> <div class="btnbox">
<button class="xkbtn" @click="showAssessment">选择评估</button> <button class="xkbtn" @click="showAssessment">选择评估</button>
<div v-if="assessmentId > 0"> <div v-if="assessmentId > 0">
<a-tag closable color="processing" @close="logA"> <a-tag closable color="processing" @close="logA">
<span style="font-size:14px;line-height: 33px;">{{assessmentName}}</span> <span style="font-size: 14px; line-height: 33px">{{
assessmentName
}}</span>
</a-tag> </a-tag>
</div> </div>
<AssessmentList v-model:assessmentVisible="assessmentVisible" v-model:titleTag="titleTag" <AssessmentList
v-model:assessmentId="assessmentId" v-model:assessmentVisible="assessmentVisible"
v-model:assessmentName="assessmentName" v-model:titleTag="titleTag"
/> v-model:assessmentId="assessmentId"
v-model:assessmentName="assessmentName"
/>
</div> </div>
</div> </div>
</div> </div>
<div class="main_right"> <div class="main_right">
<div class="main_item"> <div class="main_item">
@@ -213,37 +292,41 @@
</div> </div>
<div class="btnbox" @click="showDrawerAddHomework"> <div class="btnbox" @click="showDrawerAddHomework">
<button class="xkbtn">配置</button> <button class="xkbtn">配置</button>
</div> </div>
<!-- 添加作业侧弹窗 --> <!-- 添加作业侧弹窗 -->
<div> <div>
<add-homework v-model:addhomeworkVisible="addhomeworkvisible" @getWork="getWork" :faceLevel="true" <add-homework
v-model:EditWorkId="EditWorkId" v-model:addhomeworkVisible="addhomeworkvisible"
v-model:workName="workName" @getWork="getWork"
/> :faceLevel="true"
v-model:EditWorkId="EditWorkId"
v-model:workName="workName"
/>
</div> </div>
<!-- 添加作业侧弹窗 --> <!-- 添加作业侧弹窗 -->
</div> </div>
<div v-if="EditWorkId > 0" class="main_item"> <div v-if="EditWorkId > 0" class="main_item">
<div class="signbox"> <div class="signbox">
<span style="margin-right: 3px">已选作业</span> <span style="margin-right: 3px">已选作业</span>
</div> </div>
<div class="btnbox" @click="showDrawerAddHomework"> <div class="btnbox" @click="showDrawerAddHomework">
<a-tag closable color="processing" @close="logW">
<a-tag closable color="processing" @close="logW"> <span style="font-size: 14px; line-height: 33px">{{
<span style="font-size:14px;line-height: 33px;">{{workName}}</span> workName
</a-tag> }}</span>
</a-tag>
</div> </div>
<!-- 添加作业侧弹窗 --> <!-- 添加作业侧弹窗 -->
<div> <div>
<add-homework v-model:addhomeworkVisible="addhomeworkvisible" @getWork="getWork" :faceLevel="true" <add-homework
v-model:EditWorkId="EditWorkId" v-model:addhomeworkVisible="addhomeworkvisible"
v-model:workName="workName" @getWork="getWork"
/> :faceLevel="true"
v-model:EditWorkId="EditWorkId"
v-model:workName="workName"
/>
</div> </div>
<!-- 添加作业侧弹窗 --> <!-- 添加作业侧弹窗 -->
</div> </div>
@@ -253,37 +336,40 @@
</div> </div>
<div class="btnbox" @click="showDrawerAddTest"> <div class="btnbox" @click="showDrawerAddTest">
<button class="xkbtn">配置</button> <button class="xkbtn">配置</button>
</div> </div>
<!-- 添加考试侧弹窗 --> <!-- 添加考试侧弹窗 -->
<div> <div>
<add-test v-model:addtestVisible="addtestvisible" v-model:EditTestId="EditTestId" <add-test
v-model:testName="testName" v-model:addtestVisible="addtestvisible"
:faceLevel="true"/> v-model:EditTestId="EditTestId"
v-model:testName="testName"
:faceLevel="true"
/>
</div> </div>
<!-- 添加考试侧弹窗 --> <!-- 添加考试侧弹窗 -->
</div> </div>
<div v-if="EditTestId > 0" class="main_item"> <div v-if="EditTestId > 0" class="main_item">
<div class="signbox"> <div class="signbox">
<span style="margin-right: 3px">已选考试:</span> <span style="margin-right: 3px">已选考试:</span>
</div> </div>
<div class="btnbox" @click="showDrawerAddTest"> <div class="btnbox" @click="showDrawerAddTest">
<a-tag closable color="processing" @close="logT">
<span style="font-size: 14px; line-height: 33px">{{
<a-tag closable color="processing" @close="logT"> testName
<span style="font-size:14px;line-height: 33px;">{{testName}}</span> }}</span>
</a-tag> </a-tag>
</div> </div>
</div> </div>
<div class="main_item"> <div class="main_item">
<div class="signbox"> <div class="signbox">
<span style="margin-right: 3px">附件</span> <span style="margin-right: 3px">附件</span>
</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> <button class="xkbtn">上传附件</button>
</a-upload> </a-upload>
</div> </div>
@@ -294,25 +380,24 @@
<button class="btn1" @click="exitAdd">取消</button> <button class="btn1" @click="exitAdd">取消</button>
<button class="btn2" @click="updateFaceTeach">确定</button> <button class="btn2" @click="updateFaceTeach">确定</button>
</div> </div>
</div> </div>
</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";
import ProjectManager from "@/components/project/ProjectManagerNew"; import ProjectManager from "@/components/project/ProjectManagerNew";
export default { export default {
@@ -378,7 +463,6 @@ export default {
type: String, type: String,
default: null, default: null,
}, },
}, },
setup(props, ctx) { setup(props, ctx) {
const options = ref([]); const options = ref([]);
@@ -389,7 +473,7 @@ export default {
addtestvisible: false, addtestvisible: false,
memberValue: { memberValue: {
value: "", value: "",
label: "" label: "",
}, },
fetching: false, fetching: false,
totalPages: 0, totalPages: 0,
@@ -410,15 +494,14 @@ export default {
assessmentId: null, assessmentId: null,
EditTestId: null, EditTestId: null,
EditWorkId: null, EditWorkId: null,
workName:null, workName: null,
assessmentVisible: false, assessmentVisible: false,
needEval: false, needEval: false,
onlySign: false, onlySign: false,
completeLeave: false, completeLeave: false,
innerPersion: false, innerPersion: false,
outPersion: false, outPersion: false,
assessmentName:null, assessmentName: null,
}); });
const clear = () => { const clear = () => {
state.courseName = ""; state.courseName = "";
@@ -446,31 +529,30 @@ export default {
ctx.emit("update:edit", false); ctx.emit("update:edit", false);
localStorage.setItem("stageId", props.chooseStageId); localStorage.setItem("stageId", props.chooseStageId);
localStorage.setItem("chapterId", props.isactive); localStorage.setItem("chapterId", props.isactive);
state.fileList = [] state.fileList = [];
clear(); clear();
}; };
const afterVisibleChange = (bool) => { const afterVisibleChange = (bool) => {
if (bool && props.edit) { if (bool && props.edit) {
// 该页面显示同时 edit为true 时,发送查询请求, // 该页面显示同时 edit为true 时,发送查询请求,
queryFaceTeach(); queryFaceTeach();
} }
}; };
const logC = e => { const logC = (e) => {
state.chooseCourse = null; state.chooseCourse = null;
state.chooseCourseName = null; state.chooseCourseName = null;
console.log(e); console.log(e);
}; };
const logW = e => { const logW = (e) => {
state.EditWorkId = null; state.EditWorkId = null;
console.log(e); console.log(e);
}; };
const logT = e => { const logT = (e) => {
state.EditTestId = null; state.EditTestId = null;
console.log(e); console.log(e);
}; };
const logA = e => { const logA = (e) => {
state.EditEvalId = null; state.EditEvalId = null;
console.log(e); console.log(e);
}; };
@@ -480,22 +562,19 @@ export default {
}; };
const showDrawerAddHomework = () => { const showDrawerAddHomework = () => {
state.addhomeworkvisible = true; state.addhomeworkvisible = true;
}; };
const showDrawerAddTest = () => { const showDrawerAddTest = () => {
state.addtestvisible = true; state.addtestvisible = true;
}; };
//查询面授 //查询面授
const queryFaceTeach = () => { const queryFaceTeach = () => {
queryFaceDetailById(props.EditFaceId).then((res) => { queryFaceDetailById(props.EditFaceId).then((res) => {
console.log("获取到了面授课开课详情", res.data.data); console.log("获取到了面授课开课详情", res.data.data);
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 = [
@@ -510,11 +589,15 @@ export default {
state.afterStartValue = result.afterStart; state.afterStartValue = result.afterStart;
state.fileList = JSON.parse(result.attach); state.fileList = JSON.parse(result.attach);
state.EditWorkId = result.homeWorkId; state.EditWorkId = result.homeWorkId;
state.onlySign = result.completeType.split(",")[0] == "1" ? true : false; state.onlySign =
state.completeLeave = result.completeType.split(",")[1] == "1" ? true : false; result.completeType.split(",")[0] == "1" ? true : false;
state.completeLeave =
result.completeType.split(",")[1] == "1" ? true : false;
state.chooseCourse = result.offcourseId; state.chooseCourse = result.offcourseId;
state.innerPersion = result.projectMember.split(",")[0] == "1" ? true : false; state.innerPersion =
state.outPersion = result.projectMember.split(",")[1] == "1" ? true : false; result.projectMember.split(",")[0] == "1" ? true : false;
state.outPersion =
result.projectMember.split(",")[1] == "1" ? true : false;
state.EditTestId = result.testId; state.EditTestId = result.testId;
state.EditWorkId = result.homeWorkId; state.EditWorkId = result.homeWorkId;
state.assessmentId = result.evaluateId; state.assessmentId = result.evaluateId;
@@ -527,20 +610,18 @@ export default {
// 点击取消按钮 // 点击取消按钮
const exitAdd = () => { const exitAdd = () => {
closeDrawer(); closeDrawer();
} };
//新建或编辑面授 //新建或编辑面授
// 新增任务 // 新增任务
const updateFaceTeach = () => { const updateFaceTeach = () => {
if ( if (
state.courseName == "" || state.courseName == "" ||
state.chooseCourse == null || state.chooseCourse == null ||
state.memberValue == {} || state.memberValue == {} ||
state.chooseTime == [] || state.chooseTime == [] ||
state.duration == "" || state.duration == "" ||
state.address == "" state.address == ""
) { ) {
message.destroy(); message.destroy();
return message.warning("请输入必填字段"); return message.warning("请输入必填字段");
@@ -557,7 +638,9 @@ export default {
attach: JSON.stringify(state.fileList), attach: JSON.stringify(state.fileList),
afterStart: state.afterStartValue || 0, afterStart: state.afterStartValue || 0,
beforeStart: state.before || 0, beforeStart: state.before || 0,
beginTime: parseInt(new Date(state.chooseTime[0].$d).getTime() / 1000), beginTime: parseInt(
new Date(state.chooseTime[0].$d).getTime() / 1000
),
completeType: type.concat(t), completeType: type.concat(t),
description: state.description, description: state.description,
endTime: parseInt(new Date(state.chooseTime[1].$d).getTime() / 1000), endTime: parseInt(new Date(state.chooseTime[1].$d).getTime() / 1000),
@@ -574,22 +657,22 @@ export default {
console.log("obj============", obj, "6" + "9"); console.log("obj============", obj, "6" + "9");
console.log("222222222"); console.log("222222222");
editPlan(obj).then(async (res) => { editPlan(obj)
message.destroy(); .then(async (res) => {
message.success(`添加成功`); message.destroy();
await updateTask(res); // message.success(`添加成功`);
ctx.emit("changeData", false); await updateTask(res);
closeDrawer(); ctx.emit("changeData", false);
}).catch((e) => { closeDrawer();
console.log(e) })
message.destroy(); .catch((e) => {
message.error(`添加失败`); console.log(e);
}); message.destroy();
message.error(`添加失败`);
});
} }
}; };
//更新任务列表 //更新任务列表
// 新增编辑或新增项目任务 // 新增编辑或新增项目任务
const updateTask = async (res) => { const updateTask = async (res) => {
@@ -605,15 +688,15 @@ export default {
type: 2, type: 2,
}; };
await RouterEditTask(editObj1) await RouterEditTask(editObj1)
.then(() => { .then(() => {
//message.success(`${props.edit ? "编辑" : "新增"}关卡任务成功`); //message.success(`${props.edit ? "编辑" : "新增"}关卡任务成功`);
// state.addLoading = false; // state.addLoading = false;
closeDrawer(); closeDrawer();
}) })
.catch(() => { .catch(() => {
//message.error(`${props.edit ? "编辑" : "新增"}关卡任务失败`); //message.error(`${props.edit ? "编辑" : "新增"}关卡任务失败`);
}); });
} else if (props.isLevel == 2) { } else if (props.isLevel == 2) {
let editObj = { let editObj = {
courseId: res.data.data.offcoursePlanId, courseId: res.data.data.offcoursePlanId,
@@ -626,13 +709,13 @@ export default {
}; };
// 新增编辑或新增项目 // 新增编辑或新增项目
await ProjectEditTask(editObj) await ProjectEditTask(editObj)
.then(() => { .then(() => {
message.success(`${props.EditFaceId ? "编辑" : "新增"}阶段任务成功`); console.log("props.EditFaceId", props.EditFaceId);
message.success(`${props.edit ? "编辑" : "新增"}阶段任务成功`);
}) })
.catch(() => { .catch(() => {
//message.error(`${props.EditFaceId ? "编辑" : "新增"}阶段任务失败`); //message.error(`${props.EditFaceId ? "编辑" : "新增"}阶段任务失败`);
}); });
} else if (props.isLevel == 3) { } else if (props.isLevel == 3) {
console.log("dddddddddddd33333333"); console.log("dddddddddddd33333333");
await addTempTask({ await addTempTask({
@@ -644,24 +727,22 @@ export default {
stageId: props.chooseStageId || 0, stageId: props.chooseStageId || 0,
type: 2, type: 2,
}) })
.then(() => { .then(() => {
//message.success(`${props.EditFaceId ? "编辑" : "新增"}阶段任务成功` ); //message.success(`${props.EditFaceId ? "编辑" : "新增"}阶段任务成功` );
})
}) .catch(() => {
.catch(() => { //message.error(`${props.EditFaceId ? "编辑" : "新增"}阶段任务失败`);
//message.error(`${props.EditFaceId ? "编辑" : "新增"}阶段任务失败`); });
});
} }
}; };
const handleChange = ({file, fileList}) => { const handleChange = ({ file, fileList }) => {
if (file.status !== "uploading") { if (file.status !== "uploading") {
console.log(file, fileList); console.log(file, fileList);
} }
}; };
const showAssessment = () => { const showAssessment = () => {
state.assessmentVisible = true; state.assessmentVisible = true;
}; };
const faceAssess = (value) => { const faceAssess = (value) => {
console.log(value); console.log(value);
@@ -671,7 +752,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);
@@ -697,20 +778,20 @@ export default {
pageSize: state.pageSize, pageSize: state.pageSize,
}; };
getMemberInfo(obj) getMemberInfo(obj)
.then((res) => { .then((res) => {
let data = res.data.data.rows; let data = res.data.data.rows;
state.totalPages = res.data.data.total; state.totalPages = res.data.data.total;
for (let i in data) { for (let i in data) {
options.value.push({ options.value.push({
value: data[i].id, value: data[i].id,
label: data[i].realName, label: data[i].realName,
}); });
} }
}) })
.catch((err) => { .catch((err) => {
message.destroy(); message.destroy();
message.error("获取员工失败" + err); message.error("获取员工失败" + err);
}); });
}; };
const handleSearch = debounce((memberValue) => { const handleSearch = debounce((memberValue) => {
console.log("fetching user", memberValue); console.log("fetching user", memberValue);
@@ -754,7 +835,6 @@ export default {
logT, logT,
logW, logW,
logA, logA,
}; };
}, },
}; };
@@ -914,7 +994,6 @@ export default {
border: 0; border: 0;
margin-right: 16px 8px 32px 0; margin-right: 16px 8px 32px 0;
color: #fff; color: #fff;
} }
} }
} }

View File

@@ -57,7 +57,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="main_notice" v-if="!edit"> <div class="main_notice">
<div class="mntc_left"> <div class="mntc_left">
<div class="notice_icon"></div> <div class="notice_icon"></div>
<span style="color: rgba(0, 0, 0, 0.65); margin-right: 17px" <span style="color: rgba(0, 0, 0, 0.65); margin-right: 17px"
@@ -72,7 +72,7 @@
>列表选项总计<span>{{ tableDataTotal }}</span> </span >列表选项总计<span>{{ tableDataTotal }}</span> </span
> >
</div> </div>
<div class="mntc_right" @click="clearLine"> <div class="mntc_right" @click="clearLine" v-if="!edit">
<span style="color: #387df7; margin-right: 24px">清空</span> <span style="color: #387df7; margin-right: 24px">清空</span>
</div> </div>
</div> </div>

View File

@@ -1,12 +1,21 @@
<template> <template>
<a-drawer :visible="addprojvisible" class="drawerStyle addonlineDrawer" width="80%" title="添加在线" placement="right" <a-drawer
@after-visible-change="afterVisibleChange"> :visible="addprojvisible"
class="drawerStyle addonlineDrawer"
width="80%"
title="添加在线"
placement="right"
@after-visible-change="afterVisibleChange"
>
<div class="drawerMain"> <div class="drawerMain">
<div class="header"> <div class="header">
<div v-if="edit" class="headerTitle">编辑项目</div> <div v-if="edit" class="headerTitle">编辑项目</div>
<div v-else class="headerTitle">添加项目</div> <div v-else class="headerTitle">添加项目</div>
<img style="width: 29px; height: 29px; cursor: pointer" src="../../assets/images/basicinfo/close.png" <img
@click="closeDrawer" /> style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png"
@click="closeDrawer"
/>
</div> </div>
<div class="contentMain"> <div class="contentMain">
<div class="main_items"> <div class="main_items">
@@ -14,23 +23,34 @@
<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="inputV1" style="width: 240px; height: 40px; border-radius: 8px" <a-input
placeholder="请输入项目名称" v-model:value="inputV1"
maxlength="20"/> style="width: 240px; height: 40px; border-radius: 8px"
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
placeholder="请输入项目经理" maxlength="20"/> v-model:value="inputV2"
style="width: 240px; height: 40px; border-radius: 8px"
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
placeholder="请输入创建人" maxlength="20"/> v-model:value="inputV3"
style="width: 240px; height: 40px; border-radius: 8px"
placeholder="请输入创建人"
maxlength="20"
/>
</div> </div>
</div> </div>
</div> </div>
@@ -49,29 +69,49 @@
<div class="mntc_left"> <div class="mntc_left">
<div class="notice_icon"></div> <div class="notice_icon"></div>
<div v-if="selectedRows.length == 0"> <div v-if="selectedRows.length == 0">
<span class="title">已选择 <span class="title"
>已选择
<span class="data" style="color: #4ea6ff">{{ 0 }}</span> <span class="data" style="color: #4ea6ff">{{ 0 }}</span>
</span> </span
>
</div> </div>
<div v-else> <div v-else>
<div> <div>
<span class="title">已选择 <span class="title"
>已选择
<span class="data" style="color: #4ea6ff">{{ <span class="data" style="color: #4ea6ff">{{
selectedRows.length selectedRows.length
}}</span> }}</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span
<span class="title">名称 >
<span class="data" style="color: #4ea6ff; margin-right: 15px">{{ selectedRows[0].name }}</span> <span class="title"
>名称
<span
class="data"
style="color: #4ea6ff; margin-right: 15px"
>{{ selectedRows[0].name }}</span
>
</span> </span>
<span class="title">项目经理 <span class="title"
<span class="data" style="color: #4ea6ff; margin-right: 15px">{{ selectedRows[0].manager }}</span> >项目经理
<span
class="data"
style="color: #4ea6ff; margin-right: 15px"
>{{ selectedRows[0].manager }}</span
>
</span> </span>
<span class="title">创建人 <span class="title"
<span class="data" style="color: #4ea6ff; margin-right: 15px">{{ selectedRows[0].creater }}</span> >创建人
<span
class="data"
style="color: #4ea6ff; margin-right: 15px"
>{{ selectedRows[0].creater }}</span
>
</span> </span>
<span class="title">创建时间 <span class="title"
>创建时间
<span class="data" style="color: #4ea6ff">{{ <span class="data" style="color: #4ea6ff">{{
selectedRows[0].time selectedRows[0].time
}}</span> }}</span>
</span> </span>
</div> </div>
@@ -104,28 +144,57 @@
<div class=""> <div class="">
<div class="drawerbox"> <div class="drawerbox">
<!-- 添加的时候显示多选的表 --> <!-- 添加的时候显示多选的表 -->
<a-table v-if="!edit" :columns="tableDataFunc()" :data-source="drawertableData" :row-selection="{ <a-table
selectedRowKeys: selectedRowKeys, v-if="!edit"
onChange: onSelectChange, :columns="tableDataFunc()"
}" :loading="tableDataTotal === -1 ? true : false" :scroll="{ x: 700 }" @expand="expandTable" :data-source="drawertableData"
:pagination="false"> :row-selection="{
selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
}"
:loading="tableDataTotal === -1 ? true : false"
:scroll="{ x: 700 }"
@expand="expandTable"
:pagination="false"
>
</a-table> </a-table>
<!-- 编辑的时候显示单选的表 --> <!-- 编辑的时候显示单选的表 -->
<a-table v-else :columns="tableDataFunc()" :data-source="drawertableData" :row-selection="{ <a-table
selectedRowKeys: selectedRowKeys, v-else
onChange: onSelectChange, :columns="tableDataFunc()"
type: 'radio', :data-source="drawertableData"
}" :loading="tableDataTotal === -1 ? true : false" :scroll="{ x: 700 }" @expand="expandTable" :row-selection="{
:pagination="false"> selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
type: 'radio',
}"
:loading="tableDataTotal === -1 ? true : false"
:scroll="{ x: 700 }"
@expand="expandTable"
:pagination="false"
>
</a-table> </a-table>
</div> </div>
</div> </div>
<div class="tableBox"> <div class="tableBox">
<div class="pa"> <div class="pa">
<a-pagination v-if="(tableDataTotal > 10)" showSizeChanger="true" showQuickJumper="true" <a-pagination
hideOnSinglePage="true" :pageSize="pageSize" v-model:current="currentPage" :total="tableDataTotal" v-if="tableDataTotal > 10"
class="pagination" @change="changePagination" showSizeChanger="true"
style="display:flex;justify-content:center;margin-top:12px;margin-bottom:12px;" /> showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize"
v-model:current="currentPage"
:total="tableDataTotal"
class="pagination"
@change="changePagination"
style="
display: flex;
justify-content: center;
margin-top: 12px;
margin-bottom: 12px;
"
/>
</div> </div>
</div> </div>
</div> </div>
@@ -135,7 +204,13 @@
</div> </div>
</div> </div>
<!-- 有重复添加的项目时的弹窗 --> <!-- 有重复添加的项目时的弹窗 -->
<a-modal v-model:visible="sameModal" :footer="null" :closable="sameCopy" wrapClassName="sameModal" centered="true"> <a-modal
v-model:visible="sameModal"
:footer="null"
:closable="sameCopy"
wrapClassName="sameModal"
centered="true"
>
<div class="delete"> <div class="delete">
<div class="del_header"></div> <div class="del_header"></div>
<div class="del_main"> <div class="del_main">
@@ -278,12 +353,12 @@ export default {
const closeDrawer = () => { const closeDrawer = () => {
ctx.emit("update:addprojvisible", false); ctx.emit("update:addprojvisible", false);
ctx.emit("update:edit", false); ctx.emit("update:edit", false);
state.currentPage = 1 state.currentPage = 1;
state.tableDataTotal = 0 state.tableDataTotal = 0;
state.drawertableData = [] state.drawertableData = [];
state.inputV1 = "" state.inputV1 = "";
state.inputV2 = "" state.inputV2 = "";
state.inputV3 = "" state.inputV3 = "";
state.selectedRows = []; state.selectedRows = [];
state.selectedRowKeys = []; state.selectedRowKeys = [];
}; };
@@ -304,7 +379,6 @@ export default {
// ajax request after empty completing // ajax request after empty completing
setTimeout(() => { setTimeout(() => {
state.loading = false; state.loading = false;
}, 1000); }, 1000);
}; };
// const onSelectChange = (selectedRowKeys, selectedRows) => { // const onSelectChange = (selectedRowKeys, selectedRows) => {
@@ -332,11 +406,11 @@ export default {
// 点击编辑默认选中 // 点击编辑默认选中
const defaultValueOption = () => { const defaultValueOption = () => {
if (props.edit) { if (props.edit) {
state.drawertableData = [] state.drawertableData = [];
state.selectedRowKeys = [props.EditProjectId]; state.selectedRowKeys = [props.EditProjectId];
getCurrentPage(); getCurrentPage();
} }
} };
// TODO 这里后续需要给接口或者改动 // TODO 这里后续需要给接口或者改动
// 获取所有,确定分页位置 // 获取所有,确定分页位置
const getCurrentPage = () => { const getCurrentPage = () => {
@@ -347,26 +421,26 @@ export default {
name: state.inputV3, name: state.inputV3,
pageNo: 1, pageNo: 1,
pageSize: 10000, pageSize: 10000,
status: 3 status: 3,
}) })
.then((res) => { .then((res) => {
// let arr = res.data.data.rows; // let arr = res.data.data.rows;
if (res.status === 200) { if (res.status === 200) {
console.log('all - project - info', res.data.data) console.log("all - project - info", res.data.data);
let allarr = res.data.data.rows let allarr = res.data.data.rows;
let isHav = true let isHav = true;
for (let i = 0; i < allarr.length; i++) { for (let i = 0; i < allarr.length; i++) {
if (allarr[i].projectId == props.EditProjectId) { if (allarr[i].projectId == props.EditProjectId) {
isHav = false isHav = false;
state.currentPage = Math.ceil((i + 1) / 10); state.currentPage = Math.ceil((i + 1) / 10);
console.log('sdadasd', state.currentPage) console.log("sdadasd", state.currentPage);
getAllProjText() getAllProjText();
return return;
} }
} }
if (isHav) { if (isHav) {
getAllProjText() getAllProjText();
state.currentPage = 1; state.currentPage = 1;
} }
// state.drawertableData = getTableDate(arr); // state.drawertableData = getTableDate(arr);
@@ -377,19 +451,18 @@ export default {
message.destroy(); message.destroy();
//message.error("获取全部项目信息接口失败"); //message.error("获取全部项目信息接口失败");
}); });
} };
//获取全部项目信息接口 //获取全部项目信息接口
const getAllProjText = () => { const getAllProjText = () => {
console.log("搜索的参数信息", { console.log("搜索的参数信息", {
createName: state.inputV3, createName: state.inputV3,
manager: state.inputV2, manager: state.inputV2,
name: state.inputV1, name: state.inputV1,
pageNo: state.currentPage, pageNo: state.currentPage,
pageSize: state.pageSize, pageSize: state.pageSize,
status: 3 status: 3,
}) });
apiProj apiProj
.getProjectList({ .getProjectList({
@@ -398,14 +471,14 @@ export default {
name: state.inputV1, name: state.inputV1,
pageNo: state.currentPage, pageNo: state.currentPage,
pageSize: state.pageSize, pageSize: state.pageSize,
status: 3 status: 3,
}) })
.then((res) => { .then((res) => {
let arr = res.data.data.rows; let arr = res.data.data.rows;
if (res.status === 200) { if (res.status === 200) {
console.log('all - project - info', res.data.data) console.log("all - project - info", res.data.data);
state.drawertableData = getTableDate(arr); state.drawertableData = getTableDate(arr);
state.tableDataTotal = res.data.data.total state.tableDataTotal = res.data.data.total;
} }
}) })
.catch(() => { .catch(() => {
@@ -414,7 +487,6 @@ export default {
}); });
}; };
const afterVisibleChange = () => { const afterVisibleChange = () => {
if (props.edit) { if (props.edit) {
defaultValueOption(); defaultValueOption();
} else { } else {
@@ -553,7 +625,7 @@ export default {
closeSameModal, closeSameModal,
sureSameModal, sureSameModal,
changePagination, changePagination,
getCurrentPage getCurrentPage,
}; };
}, },
}; };
@@ -593,8 +665,10 @@ export default {
position: absolute; position: absolute;
width: calc(100%); width: calc(100%);
height: 68px; height: 68px;
background: linear-gradient(rgba(78, 166, 255, 0.2) 0%, background: linear-gradient(
rgba(78, 166, 255, 0) 100%); rgba(78, 166, 255, 0.2) 0%,
rgba(78, 166, 255, 0) 100%
);
} }
.del_main { .del_main {
@@ -690,7 +764,6 @@ export default {
.addrefDrawer { .addrefDrawer {
.drawerMain { .drawerMain {
// .main_notice { // .main_notice {
// display: flex; // display: flex;
// justify-content: space-between; // justify-content: space-between;
@@ -835,7 +908,9 @@ export default {
background-color: #eff4fc !important; background-color: #eff4fc !important;
} }
.ant-table-tbody>tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td { .ant-table-tbody
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
> td {
background: #f6f9fd; background: #f6f9fd;
} }
} }