feat:合并

This commit is contained in:
李晓鸽
2022-11-03 17:55:25 +08:00
18 changed files with 2572 additions and 3671 deletions

View File

@@ -42,3 +42,6 @@ export const createProject = (obj) => http.post('/admin/project/edit', obj)
// 获取项目列表
export const getProjectList = (obj) => http.post('/admin/project/list', obj)
// 获取项目详情信息(包含阶段及任务列表)
export const getProjectDetail = (obj) => http.get('/admin/project/detail', { params: obj })

View File

@@ -33,11 +33,7 @@ import qs from 'qs';
* axios.post(`${this.$url}/test/testRequest`,data).then()
*
*/
// , {
// header: {
// 'token': '123',
// }
// }
// 接口-请求
@@ -48,7 +44,11 @@ export const createEvaluation = (obj) => http.post('/evaluation/createEvaluation
export const fileUp = (obj) => http.post('/file/upload', obj, qs.stringify({ obj }));
//删除测评信息
export const deleteEvaluationById = (obj) => http.post('/evaluation/deleteEvaluationById', { params: obj })
export const deleteEvaluationById = (obj) => http.post('/evaluation/deleteEvaluationById', { params: obj }, {
header: {
'token': '123',
}
})
//根据ID获取测评信息详情

8
src/api/indexStage.js Normal file
View File

@@ -0,0 +1,8 @@
import http from "./config";
//添加阶段
export const editStage = (obj) => http.post('/admin/project/editStage', obj, {
headers: {
'token': '123'
}
});

14
src/api/indexTask.js Normal file
View File

@@ -0,0 +1,14 @@
import http from "./config";
// 获取路径图详情-包含关卡及任务列表
export const GetRouterDetail = (routerId) => http.get(`/admin/router/detail?routerId=${routerId}`)
// 新建或编辑阶段任务
export const ProjectEditTask = (obj) => http.post('/admin/project/editTask',obj)
// 新建或编辑关卡任务
export const RouterEditTask = (obj) => http.post('/admin/router/editTask',obj)
// 删除关卡任务
export const RouterDeleteTask = (obj) => http.post('/admin/router/deleteTask',obj);
// 删除项目任务
export const ProjectDeleteTask = (obj) => http.delete('/admin/project/deleteTask',obj);

51
src/api/storage.js Normal file
View File

@@ -0,0 +1,51 @@
/**
* 封装操作localstorage本地存储的方法
*/
export const storage = {
//存储
set(key, value) {
localStorage.setItem(key, JSON.stringify(value))
},
//取出数据
get(key) {
const value = localStorage.getItem(key)
if (value && value != "undefined" && value != "null") {
return JSON.parse(value)
}
},
// 删除数据
remove(key) {
localStorage.removeItem(key)
},
// 获取所有数据
getAllStorage() {
return JSON.parse(window.localStorage.getItem() || "{}")
},
// 删除所有数据
removeAllLocalStorage() {
window.localStorage.clear()
return { message: "ok" }
}
};
/**
* 封装操作sessionStorage本地存储的方法
*/
export const sessionStorage = {
//存储
set(key, value) {
window.sessionStorage.setItem(key, JSON.stringify(value))
},
//取出数据
get(key) {
const value = window.sessionStorage.getItem(key)
if (value && value != "undefined" && value != "null") {
return JSON.parse(value)
}
return null
},
// 删除数据
remove(key) {
window.sessionStorage.removeItem(key)
}
}

View File

@@ -224,6 +224,7 @@
<script>
import { reactive, toRefs, ref } from "vue";
import * as api from "../../api/indexActivity";
import * as apiTask from "../../api/indexTaskadd";
import { message } from "ant-design-vue";
import { toDate } from "../../api/method.js";
const rowSelection = ref({
@@ -333,7 +334,6 @@ export default {
api
.createActivity(obj)
.then((res) => {
setTimeout(() => {
console.log("创建成功", res);
message.success("创建成功");
state.radioV1 = "";
@@ -347,7 +347,26 @@ export default {
state.textV2 = "";
state.time = "";
ctx.emit("update:addactiveVisible", false);
}, 1000);
apiTask
.addTask({
courseId: 0,
duration: obj.activityDuration,
flag: true,
name: obj.activityName,
projectId: 28,
projectTaskId: 0,
stageId: 3,
type: 9,
})
.then((res) => {
console.log("调用项目添加接口后", res.data);
//重新获取任务列表
// apiTask.getTask({ projectId: 28 });
// router.push("/taskadd");
})
.catch((err) => {
console.log(err);
});
})
.catch((err) => {
console.log("创建失败",err);

View File

@@ -3,7 +3,6 @@
:visible="adddiscussVisible"
class="drawerStyle addrefDrawer"
width="80%"
title="添加讨论"
placement="right"
@after-visible-change="afterVisibleChange"
>
@@ -72,6 +71,7 @@
<script>
import { reactive, toRefs, ref } from "vue";
import * as api from "../../api/indexDiscuss";
import * as apiTask from "../../api/indexTaskadd";
import { message } from "ant-design-vue";
const rowSelection = ref({
checkStrictly: false,
@@ -105,6 +105,7 @@ export default {
inputV2: "",
textV1: "",
checkedC1: "",
add: true,
});
const closeDrawer = () => {
ctx.emit("update:adddiscussVisible", false);
@@ -137,17 +138,33 @@ export default {
api
.createDiscuss(obj)
.then((res) => {
setTimeout(() => {
console.log("创建成功", res);
state.inputV1 = "";
state.textV1 = "";
message.success("创建成功");
ctx.emit("update:adddiscussVisible", false);
// let emit = defineEmits(["changeData"]);
// emit("changeData", true);
ctx.emit("changeData", "传的参数");
// props.(true);
}, 1000);
//ctx.emit("changeData","传的参数");
//console.log("discussName",obj.discussName);
apiTask
.addTask({
courseId: 0,
duration: 0,
flag: true,
name: obj.discussName,
projectId: 28,
projectTaskId: 0,
stageId: 3,
type: 8,
})
.then((res) => {
console.log("调用项目添加接口后", res.data);
//重新获取任务列表
// apiTask.getTask({ projectId: 28 });
// router.push("/taskadd");
})
.catch((err) => {
console.log(err);
});
})
.catch((err) => {
console.log("创建失败", err);

View File

@@ -9,7 +9,8 @@
>
<div class="drawerMain">
<div class="header">
<div class="headerTitle">添加测评</div>
<div v-if="edit" class="headerTitle">编辑测评</div>
<div v-else class="headerTitle">添加测评</div>
<img
style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png"
@@ -91,7 +92,7 @@
</div>
</a-upload>
<span style="padding-bottom: 20px; color: #878b92"
>图片格式为</span
>图片格式为JPG/PNG 图片大小不可超过1MB</span
>
</div>
</div>
@@ -121,6 +122,10 @@ export default {
type: Boolean,
default: false,
},
edit: {
type: Boolean,
default: false,
},
},
setup(props, ctx) {
const state = reactive({
@@ -140,6 +145,7 @@ export default {
const closeDrawer = () => {
ctx.emit("update:addevalVisible", false);
ctx.emit("update:edit", false);
state.inputV1 = "";
state.inputV2 = "";
};
@@ -179,9 +185,9 @@ export default {
const beforeUpload = (file) => {
const isJpgOrPng =
file.type === "image/jpeg" || file.type === "image/png";
file.type === "image/jpg" || file.type === "image/png";
if (!isJpgOrPng) {
message.error("You can only upload JPG file!");
message.error("You can upload JPG/PNG file!");
}
const isLt2M = file.size / 1024 / 1024 < 1;
if (!isLt2M) {
@@ -229,21 +235,21 @@ export default {
api
.createEvaluation(obj)
.then((res) => {
setTimeout(() => {
console.log("创建成功", res);
message.success("创建成功");
closeDrawer();
apitaskadd.addTask({
apitaskadd
.addTask({
courseId: 0,
duration: 0,
flag: true,
name: "",
name: obj.evaluationName,
projectId: 28,
projectTaskId: 0,
stageId: 3,
type: 10,
});
}, 1000);
},
);
})
.catch((err) => {
console.log("创建失败", err);

View File

@@ -106,6 +106,7 @@
import { reactive, ref } from "vue";
import {message} from"ant-design-vue";
import { createWorkTask, queryWorkDetailById, updateWorkTaskUsing} from "@/api/indexWork";
import { ProjectEditTask,RouterEditTask } from "@/api/indexTask"
import dayjs from 'dayjs';
const rowSelection = ref({
@@ -133,7 +134,15 @@ export default {
type: Boolean,
default: false,
},
workId: {
flag: {
type: Number,
default: 0,
},
projectTaskId: {
type: Number,
default: 0,
},
routerTaskId: {
type: Number,
default: 0,
}
@@ -261,19 +270,60 @@ export default {
if(id) {
updateWorkTaskUsing(obj).then((res) => {
console.log(res);
message.success(`编辑成功`)
closeDrawer();
}).catch((err) => {
message.error(`编辑失败${err}`)
})
} else {
createWorkTask(obj).then((res)=>{
message.success(`添加成功${res}`)
closeDrawer();
console.log(res);
}).catch((err)=>{
message.error(`添加失败${err}`)
})
}
if(props.flag == 1) {
let editObj = {
"courseId": 0,
"duration": 0,
"flag": true,
"name": formState.workName,
"projectId": 0,
"projectTaskId": props.workId || '',
"stageId": 0,
"type": 4
}
// 新增编辑或新增项目任务
ProjectEditTask(editObj).then(res => {
console.log(` 编辑项目成功的打印 ${res}`);
message.success(`${props.workId? '编辑' : '新增'}阶段任务成功`)
closeDrawer();
}).catch(err => {
message.error(`${props.workId? '编辑' : '新增'}阶段任务失败`)
console.log(` 编辑项目失败的打印 ${err}`);
})
} else {
let editObj1 = {
"chapterId":36,
"courseId": 0,
"duration": 0,
"flag": true,
"name": formState.workName,
"routerId": 92,
"routerTaskId": 0,
"type": 4
}
// 新增编辑或新增关卡任务
RouterEditTask(editObj1).then(res => {
console.log(` 编辑关卡成功的打印 ${res}`);
message.success(`${props.workId? '编辑' : '新增'}关卡任务成功`)
closeDrawer();
}).catch(err => {
message.error(`${props.workId? '编辑' : '新增'}关卡任务失败`)
console.log(` 编辑关卡失败的打印 ${err}`);
})
}
};
return {
afterVisibleChange,

View File

@@ -202,21 +202,20 @@ export default {
api
.createAppraiseMessage(obj)
.then((res) => {
setTimeout(() => {
console.log("创建成功", res);
message.success("创建成功");
closeDrawer();
apitaskadd.addTask({
apitaskadd
.addTask({
courseId: 0,
duration: 0,
flag: true,
name: "",
name: obj.appraiseName,
projectId: 28,
projectTaskId: 0,
stageId: 3,
type: 11,
});
}, 1000);
})
.catch((err) => {
console.log("创建失败", err);

View File

@@ -280,7 +280,7 @@
</div>
<div class="main_btns">
<button class="btn1" @click="closeDrawer">取消</button>
<button class="btn2" @click="done">确定</button>
<button class="btn2" @click="createLiveBroadcast">确定</button>
</div>
</div>
</a-drawer>
@@ -628,6 +628,8 @@ export default {
})
.then((res) => {
console.log("调用项目添加接口后", res.data);
//自定义事件给父组件传值
ctx.emit("changeData", false);
//重新获取任务列表
// apiTask.getTask({ projectId: 28 });
// router.push("/taskadd");
@@ -643,15 +645,6 @@ export default {
});
};
//添加任务到数据库
const addTask = () => {};
const done = () => {
createLiveBroadcast();
addTask();
// api.getLiveBroadcastInfor({});
};
return {
...toRefs(state),
afterVisibleChange,
@@ -664,7 +657,6 @@ export default {
createLiveBroadcast,
handleChange,
beforeUpload,
done,
};
},
};

View File

@@ -85,6 +85,7 @@
<a-input
v-model:value="formState.examinationDuration"
type="number"
style="width: 388px; height: 32px;
margin-left: 35px;"
/>
@@ -100,6 +101,7 @@
<a-input-number
:min="-1" :precision="0"
type="number"
v-model:value="formState.examinationLimit"
style="width: 88px; height: 32px;
border-radius: 8px;overflow: hidden;"
@@ -161,6 +163,7 @@
<a-input
v-model:value="formState.passLine"
type="number"
style="width: 88px; height: 32px;margin-left: 35px;"
/>
</a-form-item>
@@ -197,6 +200,8 @@
import { reactive, ref } from "vue";
import {message} from"ant-design-vue";
import {createExamination,queryExaminationDetailById,updateExamination} from "@/api/indexExam"
import { ProjectEditTask } from "@/api/indexTask"
import dayjs from 'dayjs';
const rowSelection = ref({
checkStrictly: false,
@@ -225,7 +230,7 @@ export default {
},
examinationId: {
type: Number,
default: 0,
default: -1,
}
},
setup(props, ctx) {
@@ -429,21 +434,38 @@ export default {
if(id) {
updateExamination(obj).then((res)=>{
console.log(res);
message.success(`编辑成功`)
closeDrawer();
}).catch(()=>{
message.error(`编辑失败`)
})
} else {
createExamination(obj).then((res)=>{
message.success(`添加成功${res}`)
closeDrawer();
createExamination(obj).then(()=>{
}).catch((err)=>{
message.error(`添加失败${err}`)
})
}
let editObj = {
"courseId": 0,
"duration": 0,
"flag": true,
"name": "",
"projectId": 0,
"projectTaskId": props.examinationId || '',
"stageId": 0,
"type": 5
}
// 新增编辑或新增项目
ProjectEditTask(editObj).then(res => {
console.log(` 编辑项目成功的打印 ${res}`);
message.success(`${props.examinationId? '编辑' : '新增'}阶段任务成功`)
closeDrawer();
}).catch(err => {
message.error(`${props.examinationId? '编辑' : '新增'}阶段任务失败`)
console.log(` 编辑项目失败的打印 ${err}`);
})
}
const afterVisibleChange = (bool) => {
console.log("formState", bool);

View File

@@ -203,21 +203,20 @@ export default {
api
.createVote(obj)
.then((res) => {
setTimeout(() => {
console.log("创建成功", res);
message.success("创建成功");
closeDrawer();
apitaskadd.addTask({
apitaskadd
.addTask({
courseId: 0,
duration: 0,
flag: true,
name: "",
name: obj.voteName,
projectId: 28,
projectTaskId: 0,
stageId: 3,
type: 12,
});
}, 1000);
})
.catch((err) => {
console.log("创建失败", err);

View File

@@ -17,10 +17,10 @@
> -->
<div
class="items"
:class="isactive == index && isActive == true ? 'active' : ''"
:class="isactive == index ? 'active' : ''"
@click="changebgc(index)"
v-for="(item, index) in level"
:key="item.id"
:key="item.chapterId"
>
<div class="items1">
<div class="boxs_left">
@@ -37,7 +37,7 @@
<div class="nname">{{ item.name }}</div>
</div>
<!-- <div class="itemle">
<div class="tit">{{ item.tit }}</div>
<div class="tit">{{ item.remark }}</div>
<div class="name">{{ item.name }}</div>
</div> -->
</div>
@@ -166,20 +166,32 @@
</div>
<div class="item">
<div class="itcon">
<div class="img">
<div class="img" @click="showDrawerAddHomework">
<img src="../../assets/images/leveladd/zuo.png" />
</div>
<div class="text">作业</div>
</div>
<!-- 添加作业侧弹窗 -->
<div>
<add-homework
flag="0"
routerTaskId="ListChoosedId"
v-model:addhomeworkVisible="addhomeworkvisible"
/>
</div>
<div class="lin"></div>
</div>
<div class="item">
<div class="itcon">
<div class="img">
<div class="img" @click="showDrawerAddTest">
<img src="../../assets/images/leveladd/kao.png" />
</div>
<div class="text">考试</div>
</div>
<!-- 添加考试侧弹窗 -->
<div>
<add-test v-model:addtestVisible="addtestvisible" />
</div>
<div class="lin"></div>
</div>
<div class="item">
@@ -218,30 +230,45 @@
</div>
<div class="lin"></div>
</div>
<div class="item">
<div class="item" @click="showDrawerAddEval">
<div class="itcon">
<div class="img">
<img src="../../assets/images/leveladd/ce.png" />
</div>
<div class="text">测评</div>
<!-- 添加测评侧弹窗 -->
<div>
<add-eval v-model:addevalVisible="addevalvisible" v-model:edit="edit" />
</div>
<!-- 添加测评侧弹窗 -->
</div>
<div class="lin"></div>
</div>
<div class="item">
<div class="item" @click="showDrawerAddInvist">
<div class="itcon">
<div class="img">
<img src="../../assets/images/leveladd/diao.png" />
</div>
<div class="text">评估</div>
<!-- 添加评估侧弹窗 -->
<div>
<add-invist v-model:addinvistVisible="addinvistvisible" />
</div>
<!-- 添加评估侧弹窗 -->
</div>
<div class="lin"></div>
</div>
<div class="item">
<div class="item" @click="showDrawerAddVote">
<div class="itcon">
<div class="img">
<img src="../../assets/images/leveladd/tou.png" />
</div>
<div class="text">投票</div>
<!-- 添加投票侧弹窗 -->
<div>
<add-vote v-model:addvoteVisible="addvotevisible" />
</div>
<!-- 添加投票侧弹窗 -->
</div>
<div class="lin"></div>
</div>
@@ -519,67 +546,33 @@
import { reactive, toRefs, onMounted, onUnmounted } from "vue";
import AddStu from "../../components/drawers/AddLevelAddStu";
import ImpStu from "../../components/drawers/AddLevelImportStu";
import AddHomework from "../../components/drawers/AddHomework.vue";
import AddTest from "../../components/drawers/AddTest.vue";
import AddEval from "../../components/drawers/AddEval.vue";
import AddInvist from "../../components/drawers/AddInvist.vue";
import AddVote from "../../components/drawers/AddVote.vue";
import * as api from "../../api/indexLevel";
import { GetRouterDetail, RouterDeleteTask } from "../../api/indexTask";
import { message } from "ant-design-vue";
export default {
name: "LevelAddDetail",
components: {
AddStu,
ImpStu,
AddHomework,
AddTest,
AddEval,
AddInvist,
AddVote,
},
setup() {
const state = reactive({
routerId: localStorage.getItem("routerId"),
level: [
{
id: "1",
tit: "关卡1关卡1关卡1关卡1关卡1关卡1",
name: "初级产品经理fewfewfwefwefe",
},
{
id: "2",
tit: "关卡2",
name: "中级产品经理",
},
{
id: "2",
tit: "关卡2",
name: "中级产品经理",
},
{
id: "2",
tit: "关卡2",
name: "中级产品经理",
},
{
id: "2",
tit: "关卡2",
name: "中级产品经理",
},
{
id: "2",
tit: "关卡2",
name: "中级产品经理",
},
{
id: "2",
tit: "关卡2",
name: "中级产品经理",
},
{
id: "2",
tit: "关卡2",
name: "中级产品经理",
},
{
id: "2",
tit: "关卡2",
name: "中级产品经理",
},
{
id: "2",
tit: "关卡2",
name: "中级产品经理",
chapterId: "1",
remark: "关卡说明",
name: "默认关卡",
},
],
tableData: [
@@ -594,50 +587,6 @@ export default {
checked1: false,
checkedd: false,
},
{
key: 2,
lei: "面授",
// state: "草稿",
creater: "管理者面授",
// pubtime: "2022-07-20 14:00:03",
cretime: "20分钟",
haspub: true,
checked1: false,
checkedd: false,
},
{
key: 3,
lei: "作业",
// state: "已停用",
creater: "管理者作业",
// pubtime: "2022-07-20 14:00:03",
cretime: "60分钟",
haspub: false,
checked1: false,
checkedd: false,
},
{
key: 4,
lei: "考试",
// state: "草稿",
creater: "管理者考试",
// pubtime: "2022-07-20 14:00:03",
cretime: "20分钟",
haspub: true,
checked1: false,
checkedd: false,
},
{
key: 5,
lei: "案例",
// state: "草稿",
creater: "腾飞班1案例",
// pubtime: "2022-07-20 14:00:03",
cretime: "-",
haspub: true,
checked1: true,
checkedd: false,
},
],
tableData2: [
{
@@ -821,11 +770,18 @@ export default {
value1: "",
value2: "",
selectedRowKeys: [],
edit:false, //是否点击编辑
gqxy_hs: true,
isactive: -1,
isActive: false,
isactive: 0,
projectChecked: null, //项目单选框
addhomeworkvisible: false,
addtestvisible: false,
addevalvisible: false,
addinvistvisible: false,
addvotevisible: false,
updateChapterID: null, //修改关卡id
// 表示当前触发列表的id,用来发送编辑和删除
ListChoosedId: 0,
});
//新建关卡
@@ -856,26 +812,79 @@ export default {
};
//编辑关卡
const updateChapter = () => {
let obj = {
chapterId: state.updateChapterID,
name: "",
remark: "",
routerId: 0,
};
api
.updateChapter(obj)
.then((res) => {
console.log("修改成功", res);
message.success("修改成功");
})
.catch((err) => {
console.log("修改失败", err);
});
};
// const updateChapter = () => {
// let obj = {
// chapterId: state.updateChapterID,
// name: "",
// remark:"",
// routerId: 0,
// };
// api
// .updateChapter(obj)
// .then((res) => {
// console.log("修改成功",res);
// message.success("修改成功");
// })
// .catch((err) => {
// console.log("修改失败",err);
// })
// };
const showDrawer = () => {
state.visible = true;
};
// 作业和考试的抽屉
const showDrawerAddHomework = () => {
state.addhomeworkvisible = true;
state.ListChoosedId = 0;
};
const showDrawerAddTest = () => {
state.addtestvisible = true;
state.ListChoosedId = 0;
};
//测试评估投票抽屉
const showDrawerAddEval = () => {
state.addevalvisible = true;
};
const showDrawerAddInvist = () => {
state.addinvistvisible = true;
};
const showDrawerAddVote = () => {
state.addvotevisible = true;
};
// tableData数据赋值方法
const dataAssignment = () => {
console.log(state.level);
state.level[0].taskList.forEach((element, index) => {
state.tableData[index] = {
key: element.routerTaskId,
lei: checkType(element.type),
creater: element.name,
cretime: element.duration,
checked1: element.flag,
};
});
};
const getDetail = (index) => {
GetRouterDetail(92)
.then((res) => {
state.level = res.data.data.chapterList;
console.log(state.level);
if (index == 0) {
// state.tableData[1] = {
// key: 2,
// lei: "在线",
// creater: "管理者课程",
// cretime: "60",
// checked1: true,
// }
dataAssignment(0);
}
})
.catch((err) => {
message.error(err);
});
};
const closeDrawer = () => {
state.visible = false;
};
@@ -998,13 +1007,19 @@ export default {
return (
<div class="opa">
<div class="opacation">
<span style="color:#4EA6FF;margin-right:25px;cursor:pointer">
<span
style="color:#4EA6FF;margin-right:25px;cursor:pointer"
onClick={()=>{
state.edit = true;
state.addevalvisible = true;
}}
>
编辑
</span>
<span
style="color:#4EA6FF;cursor:pointer"
onClick={() => {
updateChapter();
deleteLevelTask();
}}
>
删除
@@ -1017,6 +1032,23 @@ export default {
];
return columns;
};
const checkType = (index) => {
let typeRules = [
"",
"在线",
"面授",
"案例",
"作业",
"考试",
"直播",
"外链",
"讨论",
"测评",
"评估",
"投票",
];
return typeRules[index];
};
const tableDataFunc2 = () => {
const columns = [
{
@@ -1201,6 +1233,7 @@ export default {
document.getElementsByTagName("main")[0].style.background =
"rgb(245, 247, 250,1)";
document.getElementsByTagName("main")[0].style.boxShadow = "none";
getDetail(0);
});
onUnmounted(() => {
document.getElementsByTagName("main")[0].style.background = "#ffffff";
@@ -1209,7 +1242,7 @@ export default {
});
const changebgc = (index) => {
state.isactive = index;
state.isActive = !state.isActive;
dataAssignment(index);
};
const gqxy_hShow = () => {
state.gqxy_hs = !state.gqxy_hs;
@@ -1220,6 +1253,17 @@ export default {
const delete_exit = () => {
state.deleteAll = false;
};
const deleteLevelTask = () => {
RouterDeleteTask(state.listChoosedId)
.then((res) => {
console.log(`删除成功${res}`);
message.success("删除成功");
})
.catch((err) => {
console.log(`删除失败${err}`);
});
};
return {
...toRefs(state),
tableDataFunc,
@@ -1239,7 +1283,13 @@ export default {
delete_exit,
drawertableColumns,
editChapter,
updateChapter,
// updateChapter,
showDrawerAddHomework,
showDrawerAddTest,
showDrawerAddEval,
showDrawerAddInvist,
showDrawerAddVote,
deleteLevelTask,
};
},
};
@@ -1402,7 +1452,7 @@ export default {
.drawerMain {
min-width: 600px;
margin: 0px 32px 0px 32px;
overflow-x: auto;
overflow-x: scroll;
display: flex;
flex-direction: column;
.header {

View File

@@ -11,58 +11,34 @@
<div class="main">
<div class="name">
<div class="namebox">
<img
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
<div class="inname">项目名称</div>
</div>
<div class="in">
<a-input
v-model:value="projectName"
placeholder="请输入项目名称"
show-count
:maxlength="30"
/>
<a-input v-model:value="projectName" placeholder="请输入项目名称" show-count :maxlength="30" />
</div>
</div>
<div class="name">
<div class="namebox">
<img
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
<div class="inname">分类</div>
</div>
<div class="in select">
<a-select
:getPopupContainer="
<a-select :getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model:value="classifySelect"
placeholder="四个养成"
style="width: 100%"
:options="classifyList"
@change="classificationChange"
allowClear
showSearch
>
" v-model:value="classifySelect" placeholder="四个养成" style="width: 100%" :options="classifyList"
@change="classificationChange" allowClear showSearch>
</a-select>
</div>
</div>
<div class="name">
<div class="namebox">
<img
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
<div class="inname">封面图</div>
</div>
<div
class="box"
style="
<div class="box" style="
width: 100px;
height: 100px;
border: 1px solid rgba(78, 166, 255, 1);
@@ -70,29 +46,15 @@
cursor: pointer;
position: relative;
overflow: hidden;
"
>
<a-upload
v-model:file-list="fileList"
name="file"
list-type="picture-card"
class="avatar-uploader"
:show-upload-list="false"
action="/api/file/upload"
:before-upload="beforeUpload"
@change="handleChange"
>
<img
style="
">
<a-upload v-model:file-list="fileList" name="file" list-type="picture-card" class="avatar-uploader"
:show-upload-list="false" action="/api/file/upload" :before-upload="beforeUpload" @change="handleChange">
<img style="
width: 100px;
height: 100px;
margin-bottom: 4px;
margin-right: 4px;
"
v-if="imageUrl"
:src="imageUrl"
alt="avatar"
/>
" v-if="imageUrl" :src="imageUrl" alt="avatar" />
<div v-else>
<!-- <loading-outlined v-if="loading"></loading-outlined> -->
<!-- <plus-outlined v-else></plus-outlined> -->
@@ -105,71 +67,43 @@
</div>
<div class="name">
<div class="namebox">
<img
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
<div class="inname">项目时间</div>
</div>
<div class="in">
<a-range-picker
separator="至"
:placeholder="[' 开始时间', ' 结束时间']"
style="width: 100%; height: 40px; border-radius: 5px"
show-time
@change="onRangeChange"
/>
<a-range-picker separator="至" :placeholder="[' 开始时间', ' 结束时间']"
style="width: 100%; height: 40px; border-radius: 5px" show-time @change="onRangeChange" />
</div>
</div>
<div class="name">
<div class="namebox">
<img
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
<div class="inname">项目经理</div>
</div>
<div class="in">
<a-select
:getPopupContainer="
<a-select :getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
:value="classifySelect1"
mode="multiple"
placeholder="请选择项目经理"
style="width: 100%"
:options="classifyList1"
@change="classificationChange1"
allowClear
showSearch
>
" :value="classifySelect1" mode="multiple" placeholder="请选择项目经理" style="width: 100%" :options="classifyList1"
@change="classificationChange1" allowClear showSearch>
</a-select>
</div>
</div>
<div class="name">
<div class="namebox">
<img
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
<div class="inname">资源归属</div>
</div>
<div class="in select">
<a-select
:getPopupContainer="
<a-select :getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model:value="classifySelect2"
placeholder="自动带出 可修改"
:options="classifyList2"
@change="classificationChange2"
/>
" v-model:value="classifySelect2" placeholder="自动带出 可修改" :options="classifyList2"
@change="classificationChange2" />
</div>
</div>
<div class="name name2">
@@ -177,13 +111,7 @@
<div class="inname" style="margin-top: 13px">项目说明</div>
</div>
<div class="in">
<a-textarea
v-model:value="remark"
style="height: 80px"
placeholder="请输入说明"
show-count
:maxlength="200"
/>
<a-textarea v-model:value="remark" style="height: 80px" placeholder="请输入说明" show-count :maxlength="200" />
</div>
</div>
<div class="name name2">
@@ -191,113 +119,67 @@
<div class="inname">同步学习记录</div>
</div>
<div class="in">
<a-radio @click="changeChecked" v-model:checked="checked"
><span
style="
<a-radio @click="changeChecked" v-model:checked="checked"><span style="
width: 100%;
color: rgba(109, 117, 132, 1);
font-size: 14px;
"
>同步课程学习记录如学员在课程库中拥有课程的学习记录自动免修该课程</span
></a-radio
>
">同步课程学习记录如学员在课程库中拥有课程的学习记录自动免修该课程</span></a-radio>
</div>
</div>
<div class="name">
<div class="namebox">
<img
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
<div class="inname">项目级别</div>
</div>
<div class="in select">
<a-select
:getPopupContainer="
<a-select :getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model:value="classifySelect3"
:options="classifyList3"
@change="classificationChange3"
placeholder="集团级/组织级/现地级/部门级"
/>
" v-model:value="classifySelect3" :options="classifyList3" @change="classificationChange3"
placeholder="集团级/组织级/现地级/部门级" />
</div>
</div>
<div class="name">
<div class="namebox">
<img
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
<div class="inname">培训体系</div>
</div>
<div class="in select">
<a-select
:getPopupContainer="
<a-select :getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model:value="classifySelect4"
:options="classifyList4"
@change="classificationChange4"
placeholder="集团级/组织级/现地级/部门级"
/>
" v-model:value="classifySelect4" :options="classifyList4" @change="classificationChange4"
placeholder="集团级/组织级/现地级/部门级" />
</div>
</div>
<div class="name">
<div class="namebox">
<img
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
<div class="inname">是否BOEU实施</div>
</div>
<div class="in">
<a-radio @click="changeChecked1" v-model:checked="checked1"
><span
style="
<a-radio @click="changeChecked1" v-model:checked="checked1"><span style="
width: 100%;
color: rgba(109, 117, 132, 1);
font-size: 14px;
"
>BOEU实施</span
></a-radio
>
">BOEU实施</span></a-radio>
</div>
</div>
<div class="name name2">
<div class="namebox" style="margin-top: 8px">
<img
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
<div class="inname">附件</div>
</div>
<div class="filebox">
<div>
<img
v-if="fileList1.length < 6"
class="fileimg"
src="../../assets/images/projectadd/enclosure.png"
/>
<a-upload
:disabled="fileList1.length > 5"
:before-upload="beforeUpload1"
v-model:file-list="fileList1"
@remove="removeFile"
name="file"
action="/api/file/upload"
:headers="headers"
@change="handleChange1"
>
<img v-if="fileList1.length < 6" class="fileimg" src="../../assets/images/projectadd/enclosure.png" />
<a-upload :disabled="fileList1.length > 5" :before-upload="beforeUpload1" v-model:file-list="fileList1"
@remove="removeFile" name="file" action="/api/file/upload" :headers="headers" @change="handleChange1">
<!-- <a-button> -->
<!-- <upload-outlined></upload-outlined> -->
<span v-if="fileList1.length > 5" class="filetext"
>上传数量已经达到最大值</span
>
<span v-if="fileList1.length > 5" class="filetext">上传数量已经达到最大值</span>
<span v-else class="filetext">上传附件</span>
<!-- </a-button> -->
</a-upload>
@@ -312,19 +194,12 @@
<div class="name">
<div class="inname" style="width: 50px">模版</div>
<div class="in select" style="margin-left: 2px">
<a-select
:getPopupContainer="
<a-select :getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model:value="classifySelect5"
placeholder="请选择模版"
:size="size"
style="width: 100%"
:options="classifyList5"
@change="classificationChange5"
>
" v-model:value="classifySelect5" placeholder="请选择模版" :size="size" style="width: 100%" :options="classifyList5"
@change="classificationChange5">
</a-select>
</div>
</div>
@@ -332,9 +207,7 @@
</div>
<div class="footer">
<div class="btn">
<a-button v-on:click="createProject" type="primary" class="btn1"
>确定</a-button
>
<a-button v-on:click="createProject" type="primary" class="btn1">确定</a-button>
<a-button class="btn2">取消</a-button>
</div>
</div>
@@ -349,6 +222,7 @@ import * as api from "../../api/index";
export default {
name: "projectAdd",
setup() {
api.getProjectDetail({ projectId: 3 }).then(res => { console.log(res) }).catch(err => { console.log(err) })
const router = useRouter();
const state = reactive({
classifySelect: null,

File diff suppressed because it is too large Load Diff

View File

@@ -11,10 +11,7 @@
<div class="main">
<div class="name">
<div class="namebox">
<img
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
<div class="inname">项目归属</div>
</div>
<div class="in">
@@ -25,58 +22,34 @@
</div>
<div class="name">
<div class="namebox">
<img
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
<div class="inname">子项目名称</div>
</div>
<div class="in">
<a-input
v-model:value="projectName"
placeholder="请输入子项目名称"
show-count
:maxlength="30"
/>
<a-input v-model:value="projectName" placeholder="请输入子项目名称" show-count :maxlength="30" />
</div>
</div>
<div class="name">
<div class="namebox">
<img
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
<div class="inname">分类</div>
</div>
<div class="in select">
<a-select
:getPopupContainer="
<a-select :getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model:value="classifySelect"
placeholder="四个养成"
style="width: 100%"
:options="classifyList"
@change="classificationChange"
allowClear
showSearch
>
" v-model:value="classifySelect" placeholder="四个养成" style="width: 100%" :options="classifyList"
@change="classificationChange" allowClear showSearch>
</a-select>
</div>
</div>
<div class="name">
<div class="namebox">
<img
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
<div class="inname">封面图</div>
</div>
<div
class="box"
style="
<div class="box" style="
width: 100px;
height: 100px;
border: 1px solid rgba(78, 166, 255, 1);
@@ -84,29 +57,15 @@
cursor: pointer;
position: relative;
overflow: hidden;
"
>
<a-upload
v-model:file-list="fileList"
name="file"
list-type="picture-card"
class="avatar-uploader"
:show-upload-list="false"
action="/api/file/upload"
:before-upload="beforeUpload"
@change="handleChange"
>
<img
style="
">
<a-upload v-model:file-list="fileList" name="file" list-type="picture-card" class="avatar-uploader"
:show-upload-list="false" action="/api/file/upload" :before-upload="beforeUpload" @change="handleChange">
<img style="
width: 100px;
height: 100px;
margin-bottom: 4px;
margin-right: 4px;
"
v-if="imageUrl"
:src="imageUrl"
alt="avatar"
/>
" v-if="imageUrl" :src="imageUrl" alt="avatar" />
<div v-else>
<!-- <loading-outlined v-if="loading"></loading-outlined> -->
<!-- <plus-outlined v-else></plus-outlined> -->
@@ -119,71 +78,43 @@
</div>
<div class="name">
<div class="namebox">
<img
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
<div class="inname">子项目时间</div>
</div>
<div class="in">
<a-range-picker
separator="至"
:placeholder="[' 开始时间', ' 结束时间']"
style="width: 100%; height: 40px; border-radius: 5px"
show-time
@change="onRangeChange"
/>
<a-range-picker separator="至" :placeholder="[' 开始时间', ' 结束时间']"
style="width: 100%; height: 40px; border-radius: 5px" show-time @change="onRangeChange" />
</div>
</div>
<div class="name">
<div class="namebox">
<img
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
<div class="inname">子项目经理</div>
</div>
<div class="in">
<a-select
:getPopupContainer="
<a-select :getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
:value="classifySelect1"
mode="multiple"
placeholder="请选择子项目经理"
style="width: 100%"
:options="classifyList1"
@change="classificationChange1"
allowClear
showSearch
>
" :value="classifySelect1" mode="multiple" placeholder="请选择子项目经理" style="width: 100%" :options="classifyList1"
@change="classificationChange1" allowClear showSearch>
</a-select>
</div>
</div>
<div class="name">
<div class="namebox">
<img
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
<div class="inname">资源归属</div>
</div>
<div class="in select">
<a-select
:getPopupContainer="
<a-select :getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model:value="classifySelect2"
placeholder="自动带出 可修改"
:options="classifyList2"
@change="classificationChange2"
/>
" v-model:value="classifySelect2" placeholder="自动带出 可修改" :options="classifyList2"
@change="classificationChange2" />
</div>
</div>
<div class="name name2">
@@ -191,13 +122,7 @@
<div class="inname" style="margin-top: 13px">项目说明</div>
</div>
<div class="in">
<a-textarea
v-model:value="remark"
style="height: 80px"
placeholder="请输入说明"
show-count
:maxlength="200"
/>
<a-textarea v-model:value="remark" style="height: 80px" placeholder="请输入说明" show-count :maxlength="200" />
</div>
</div>
<div class="name name2">
@@ -205,113 +130,67 @@
<div class="inname">同步学习记录</div>
</div>
<div class="in">
<a-radio @click="changeChecked" v-model:checked="checked"
><span
style="
<a-radio @click="changeChecked" v-model:checked="checked"><span style="
width: 100%;
color: rgba(109, 117, 132, 1);
font-size: 14px;
"
>同步课程学习记录如学员在课程库中拥有课程的学习记录自动免修该课程</span
></a-radio
>
">同步课程学习记录如学员在课程库中拥有课程的学习记录自动免修该课程</span></a-radio>
</div>
</div>
<div class="name">
<div class="namebox">
<img
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
<div class="inname">项目级别</div>
</div>
<div class="in select">
<a-select
:getPopupContainer="
<a-select :getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model:value="classifySelect3"
:options="classifyList3"
@change="classificationChange3"
placeholder="集团级/组织级/现地级/部门级"
/>
" v-model:value="classifySelect3" :options="classifyList3" @change="classificationChange3"
placeholder="集团级/组织级/现地级/部门级" />
</div>
</div>
<div class="name">
<div class="namebox">
<img
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
<div class="inname">培训体系</div>
</div>
<div class="in select">
<a-select
:getPopupContainer="
<a-select :getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model:value="classifySelect4"
:options="classifyList4"
@change="classificationChange4"
placeholder="集团级/组织级/现地级/部门级"
/>
" v-model:value="classifySelect4" :options="classifyList4" @change="classificationChange4"
placeholder="集团级/组织级/现地级/部门级" />
</div>
</div>
<div class="name">
<div class="namebox">
<img
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
<div class="inname">是否BOEU实施</div>
</div>
<div class="in">
<a-radio @click="changeChecked1" v-model:checked="checked1"
><span
style="
<a-radio @click="changeChecked1" v-model:checked="checked1"><span style="
width: 100%;
color: rgba(109, 117, 132, 1);
font-size: 14px;
"
>BOEU实施</span
></a-radio
>
">BOEU实施</span></a-radio>
</div>
</div>
<div class="name name2">
<div class="namebox" style="margin-top: 8px">
<img
class="nameimg"
src="../../assets/images/basicinfo/asterisk.png"
/>
<img class="nameimg" src="../../assets/images/basicinfo/asterisk.png" />
<div class="inname">附件</div>
</div>
<div class="filebox">
<div>
<img
v-if="fileList1.length < 6"
class="fileimg"
src="../../assets/images/projectadd/enclosure.png"
/>
<a-upload
:disabled="fileList1.length > 5"
:before-upload="beforeUpload1"
v-model:file-list="fileList1"
@remove="removeFile"
name="file"
action="/api/file/upload"
:headers="headers"
@change="handleChange1"
>
<img v-if="fileList1.length < 6" class="fileimg" src="../../assets/images/projectadd/enclosure.png" />
<a-upload :disabled="fileList1.length > 5" :before-upload="beforeUpload1" v-model:file-list="fileList1"
@remove="removeFile" name="file" action="/api/file/upload" :headers="headers" @change="handleChange1">
<!-- <a-button> -->
<!-- <upload-outlined></upload-outlined> -->
<span v-if="fileList1.length > 5" class="filetext"
>上传数量已经达到最大值</span
>
<span v-if="fileList1.length > 5" class="filetext">上传数量已经达到最大值</span>
<span v-else class="filetext">上传附件</span>
<!-- </a-button> -->
</a-upload>
@@ -326,19 +205,12 @@
<div class="name">
<div class="inname" style="width: 50px">模版</div>
<div class="in select" style="margin-left: 2px">
<a-select
:getPopupContainer="
<a-select :getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model:value="classifySelect5"
placeholder="请选择模版"
:size="size"
style="width: 100%"
:options="classifyList5"
@change="classificationChange5"
>
" v-model:value="classifySelect5" placeholder="请选择模版" :size="size" style="width: 100%" :options="classifyList5"
@change="classificationChange5">
</a-select>
</div>
</div>
@@ -346,9 +218,7 @@
</div>
<div class="footer">
<div class="btn">
<a-button v-on:click="createProject" type="primary" class="btn1"
>确定</a-button
>
<a-button v-on:click="createProject" type="primary" class="btn1">确定</a-button>
<a-button class="btn2">取消</a-button>
</div>
</div>
@@ -359,6 +229,7 @@ import { reactive, toRefs, ref } from "vue";
import { message } from "ant-design-vue";
import { useRouter, useRoute } from "vue-router";
import * as api from "../../api/index";
import { storage } from '../../api/storage';
export default {
name: "sonProject",
@@ -381,6 +252,10 @@ export default {
state.projectAscription = routers.query.name;
if (routers.query.name) {
storage.set("editproject", routers.query)
}
const classifyList = ref([
{ value: 1, label: "管理者" },
{ value: 2, label: "领军者" },

View File

@@ -154,11 +154,14 @@
</div>
<div class="text">直播</div>
</div>
<!-- 添加考试侧弹窗 -->
<!-- 添加直播侧弹窗 -->
<div>
<add-live v-model:addliveVisible="addlivevisible" />
<add-live
v-model:addliveVisible="addlivevisible"
@changeData="updateTableData"
/>
</div>
<!-- 添加考试侧弹窗 -->
<!-- 添加直播侧弹窗 -->
<div class="lin"></div>
</div>
<div class="item" @click="showDrawerAddRef">
@@ -364,11 +367,17 @@
<div class="modalMain" style="width: 100%">
<div class="name">
<div class="namebox">
<div>
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<div class="inname">阶段名称</div>
</div>
<div class="in">
<a-input
v-model:value="valueE"
v-model:value="valuesname"
show-count
:maxlength="20"
placeholder="请输入阶段名称"
@@ -381,7 +390,7 @@
</div>
<div class="intext" style="margin-left: 14px">
<a-textarea
v-model:value="value"
v-model:value="valuesnotice"
style="height: 88px"
show-count
:maxlength="100"
@@ -412,7 +421,7 @@
取消
</button>
<button
@click="closeModal"
@click="editStage"
style="
cursor: pointer;
margin-left: 16px;
@@ -491,7 +500,7 @@
</div>
</div>
</a-modal>
<!-- 确认删除阶段弹窗 -->
<!-- 确认删除任务弹窗 -->
<a-modal
v-model:visible="deleteModal"
:footer="null"
@@ -547,6 +556,8 @@ import * as apidiscuss from "../../api/indexDiscuss";
import * as apiactivity from "../../api/indexActivity";
import * as apieval from "../../api/indexEval";
import * as apiinvist from "../../api/indexInvist";
import * as apivote from "../../api/indexVote";
import * as apistage from "../../api/indexStage";
const drawercolumns = [
{
title: "项目名称",
@@ -667,97 +678,7 @@ export default {
],
//任务数据
tableData: [
// {
// key: 1,
// lei: "在线",
// // state: "已发布",
// creater: "管理者课程",
// // pubtime: "2022-07-20 14:00:03",
// cretime: "60分钟",
// haspub: false,
// checked1: false,
// checkedd: false,
// id: "ssss",
// },
// {
// key: 2,
// lei: "面授",
// // state: "草稿",
// creater: "管理者面授",
// // pubtime: "2022-07-20 14:00:03",
// cretime: "20分钟",
// haspub: true,
// checked1: false,
// checkedd: false,
// },
// {
// key: 1,
// lei: "在线",
// // state: "已发布",
// creater: "管理者课程",
// // pubtime: "2022-07-20 14:00:03",
// cretime: "60分钟",
// haspub: false,
// checked1: false,
// checkedd: false,
// },
// {
// key: 3,
// lei: "作业",
// // state: "已停用",
// creater: "管理者作业",
// // pubtime: "2022-07-20 14:00:03",
// cretime: "60分钟",
// haspub: false,
// checked1: false,
// checkedd: false,
// },
// {
// key: 4,
// lei: "考试",
// // state: "草稿",
// creater: "管理者考试",
// // pubtime: "2022-07-20 14:00:03",
// cretime: "20分钟",
// haspub: true,
// checked1: false,
// checkedd: false,
// },
// {
// key: 5,
// lei: "案例",
// // state: "草稿",
// creater: "腾飞班1案例",
// // pubtime: "2022-07-20 14:00:03",
// cretime: "20分钟",
// haspub: true,
// checked1: true,
// checkedd: false,
// },
// {
// key: 4,
// lei: "考试",
// // state: "草稿",
// creater: "管理者考试",
// // pubtime: "2022-07-20 14:00:03",
// cretime: "20分钟",
// haspub: true,
// checked1: false,
// checkedd: false,
// },
// {
// key: 5,
// lei: "案例",
// // state: "草稿",
// creater: "腾飞班1案例",
// // pubtime: "2022-07-20 14:00:03",
// cretime: "20分钟",
// haspub: true,
// checked1: true,
// checkedd: false,
// },
],
tableData: [],
drawertableData: [
{
key: 1,
@@ -856,6 +777,8 @@ export default {
addvotevisible: false,
stage: false,
selectedRowKeys: [],
valuesname: "",
valuesnotice: "",
confirmModal: false, //确认添加阶段弹窗
cC: false,
cancelModal: false, //确认取消阶段弹窗
@@ -868,7 +791,7 @@ export default {
deleteInvistID: 4, //评估
deleteDiscussID: null, //删除讨论id
deleteActivityID: null, //删除活动id
deleteID: "", //删除任务的taskID
deleteID: "",
});
const selectProjectName = (value, index) => {
console.log("value", value, index);
@@ -879,6 +802,28 @@ export default {
const afterVisibleChange = (bool) => {
console.log("visible", bool);
};
//添加阶段
const editStage = () => {
if (!state.valuesname) {
message.destroy();
return message.warning("请输入阶段名称");
}
let obj = {
name: state.valuesname,
projectId: 28,
remark: state.valuesnotice,
};
apistage
.editStage(obj)
.then((res) => {
console.log("添加阶段成功", res);
message.default();
message.success("添加阶段成功");
})
.catch((err) => {
console.log("添加阶段失败", err);
});
};
// 把数据放到state里
const getTableData = (tableData) => {
let data = tableData;
@@ -1060,7 +1005,7 @@ export default {
.then((res) => {
if (res.status == 200) {
console.log("22222", res.data.data.stageList[0].taskList);
let arr = res.data.data.stageList[0].taskList;
let arr = res.data.data.stageList[1].taskList;
getTableData(arr);
}
})
@@ -1068,6 +1013,13 @@ export default {
console.log("获取任务列表失败", err);
});
};
//数据变化
const updateTableData = (data) => {
console.log("添加数据", data);
getTask();
};
//删除直播
const deleteLiveBroadcast = () => {
let obj = {
@@ -1199,8 +1151,8 @@ export default {
//删除测评测试
const deleteEvalText = () => {
let obj = {
evaluationId: state.deleteEvalID,
token: "",
evaluationId: "",
token: 123,
};
apieval
.deleteEvaluationById(obj)
@@ -1375,6 +1327,59 @@ export default {
console.log(err);
});
};
//删除投票信息
const deleteVoteText = () => {
let obj = {
voteId: "",
};
apivote
.deleteVoteMessage(obj)
.then((res) => {
console.log("删除成功", res);
message.success("删除成功");
//重新获取列表
getTask();
})
.catch((err) => {
console.log("删除失败", err);
});
};
//编辑投票信息
const editVotePath = () => {
let obj = {
baseVote: "",
createTime: "",
createUser: 0,
stem: "",
stemId: 0,
updateTime: "",
updateUser: 0,
voteEndTime: "",
voteExplain: "",
voteFlag: "",
voteId: 0,
voteName: "",
voteStartTime: "",
voteTag: "",
};
apivote
.editVote(obj)
.then((res) => {
setTimeout(() => {
console.log("修改成功", res);
message.success("修改成功");
}, 1000);
})
.catch((err) => {
console.log("修改失败", err);
// state.createLoading = false;
//重新获取列表
getTask();
});
};
const onSelectChange = (selectedRowKeys) => {
console.log("selectedRowKeys changed: ", selectedRowKeys);
state.selectedRowKeys = selectedRowKeys;
@@ -1397,6 +1402,8 @@ export default {
//关闭确认框
state.deleteModal = false;
deleteTask();
message.success("删除成功");
getTask();
};
const closeModal = () => {
state.stage = false;
@@ -1477,9 +1484,6 @@ export default {
state.isActive = !state.isActive;
};
const updateTableData = (data) => {
console.log("添加数据", data);
};
return {
...toRefs(state),
selectProjectName,
@@ -1518,14 +1522,17 @@ export default {
deleteEvalText,
deleteExternalChain,
deleteActivity,
deleteVoteText,
editActivity,
editEvalPath,
deleteInvistText,
editLiveBroadcast,
editExternal,
editInvistPath,
editVotePath,
getTableData,
deleteTask,
editStage,
updateTableData,
};
},
@@ -1533,12 +1540,12 @@ export default {
</script>
<style lang="scss">
.ant-input {
border-radius: 8px;
// height: 120%;
width: 384px;
height: 88px;
}
// .ant-input {
// border-radius: 8px;
// // height: 120%;
// width: 384px;
// height: 88px;
// }
.ConfirmModal {
.ant-modal {
width: 424px !important;