feat:增加删除修改关卡及阶段并自动刷新列表

This commit is contained in:
lixg
2022-11-17 21:25:09 +08:00
parent 8d0cb128a1
commit 97a8e6f4c6
17 changed files with 1977 additions and 1948 deletions

View File

@@ -2,7 +2,7 @@
* @Author: lixg lixg@dongwu-inc.com * @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-04 22:45:31 * @Date: 2022-11-04 22:45:31
* @LastEditors: lixg lixg@dongwu-inc.com * @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2022-11-10 11:41:52 * @LastEditTime: 2022-11-17 15:41:45
* @FilePath: /fe-manage/src/api/index1.js * @FilePath: /fe-manage/src/api/index1.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
*/ */

View File

@@ -1,4 +1,14 @@
/*
* @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-09 09:26:26
* @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2022-11-17 21:20:05
* @FilePath: /fe-manage/src/api/indexStage.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import http from "./config"; import http from "./config";
//添加阶段 //添加阶段
export const editStage = (obj) => http.post('/admin/project/editStage', obj); export const editStage = (obj) => http.post('/admin/project/editStage', obj);
// 删除阶段
export const deleteStage = (obj) => http.delete('/admin/project/deleteStage',{params:obj});

Binary file not shown.

After

Width:  |  Height:  |  Size: 410 B

View File

@@ -437,6 +437,17 @@ textarea {
} }
} }
.ant-modal{
.modalHeader{
background: linear-gradient(180deg, rgba(103,64,255,0.2) 0%, rgba(166,168,255,0) 100%) !important;
}
.top{
background: linear-gradient(180deg, rgba(103,64,255,0.2) 0%, rgba(166,168,255,0) 100%) !important;
}
.del_header{
background: linear-gradient(180deg, rgba(103,64,255,0.2) 0%, rgba(166,168,255,0) 100%) !important;
}
}
//弹窗-------------------------------------------------------- //弹窗--------------------------------------------------------
//loading-------------------------------------------------------- //loading--------------------------------------------------------

View File

@@ -273,6 +273,58 @@ export default {
}, },
]; ];
} }
if (
n.indexOf("/coursereviewed") !== -1 ||
n.indexOf("/CourseReiewed") !== -1
) {
state.list = [
{
name: "审核管理",
},
{
name: "已审核课程",
},
];
}
if (
n.indexOf("/coursereviewedn") !== -1 ||
n.indexOf("/CourseReiewedN") !== -1
) {
state.list = [
{
name: "审核管理",
},
{
name: "待审核课程",
},
];
}
if (
n.indexOf("/projectreviewed") !== -1 ||
n.indexOf("/ProjectReviewed") !== -1
) {
state.list = [
{
name: "审核管理",
},
{
name: "已审核项目",
},
];
}
if (
n.indexOf("/projectreviewedn") !== -1 ||
n.indexOf("/ProjectReviewedN") !== -1
) {
state.list = [
{
name: "审核管理",
},
{
name: "待审核项目",
},
];
}
} }
); );

View File

@@ -180,7 +180,7 @@
alt="" 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 <a-input

View File

@@ -62,7 +62,7 @@
circle: selectedKeys[0] === 'sub10-3' ? false : true, circle: selectedKeys[0] === 'sub10-3' ? false : true,
}" }"
></span> ></span>
<router-link to="/projecreviewedn">待审核项目</router-link> <router-link to="/projectreviewedn">待审核项目</router-link>
</a-menu-item> </a-menu-item>
<a-menu-item key="sub10-4"> <a-menu-item key="sub10-4">
<span <span
@@ -71,7 +71,7 @@
circle: selectedKeys[0] === 'sub10-4' ? false : true, circle: selectedKeys[0] === 'sub10-4' ? false : true,
}" }"
></span> ></span>
<router-link to="/projecreviewed">已审核项目</router-link> <router-link to="/projectreviewed">已审核项目</router-link>
</a-menu-item> </a-menu-item>
</a-sub-menu> </a-sub-menu>
@@ -307,13 +307,13 @@ export default {
pagename: "已审核课程", pagename: "已审核课程",
}, },
{ {
href: "/projectviewedn", href: "/projectreviewedn",
openKeys: "sub10", openKeys: "sub10",
selectedKeys: "sub10-3", selectedKeys: "sub10-3",
pagename: "待审核项目", pagename: "待审核项目",
}, },
{ {
href: "/projectviewed", href: "/projectrrviewed",
openKeys: "sub10", openKeys: "sub10",
selectedKeys: "sub10-4", selectedKeys: "sub10-4",
pagename: "已审核项目", pagename: "已审核项目",

View File

@@ -1,458 +1,40 @@
<!--
* @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-09 09:26:26
* @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2022-11-17 16:27:22
* @FilePath: /fe-manage/src/views/courselibrary/CourseManage.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<!-- 课件管理页面 --> <!-- 课件管理页面 -->
<template> <template>
<div class="courseManage"> <div class="courseManage">
<!-- 搜索框及按钮 --> <iframe
<div class="filter"> id="iframe"
<div class="filterItems"> style="width:100%l;height:100%"
<div class="select"> src="https://u-pre.boe.com/pc/iframe/course/coursewares"
<a-select name="myframe"
v-model:value="projectName" ></iframe>
style="width: 270px"
placeholder="请输入项目名称"
:options="projectNameList"
@change="selectProjectName"
allowClear
showSearch
></a-select>
</div>
<div class="select">
<a-select
v-model:value="projectName"
style="width: 270px"
placeholder="请输入项目经理"
:options="projectNameList"
@change="selectProjectName"
allowClear
showSearch
></a-select>
</div>
<div class="select">
<a-select
v-model:value="projectName"
style="width: 270px"
placeholder="请选择状态"
:options="projectNameList"
@change="selectProjectName"
allowClear
showSearch
></a-select>
</div>
<div class="select">
<a-date-picker
v-model="selectTime"
type="date"
placeholder="创建时间"
style="width: 270px"
/>
</div>
</div>
<div class="btns">
<div class="btn btn1">
<div class="search"></div>
<div class="btnText">搜索</div>
</div>
<div class="btn btn2">
<div class="search"></div>
<div class="btnText">重置</div>
</div>
<div class="btn btn3">
<div class="search"></div>
<div class="btnText">创建项目</div>
</div>
</div>
</div>
<!-- 搜索框及按钮 -->
<!-- 表格 -->
<div class="tableBox">
<a-table
:columns="columns"
:data-source="tableData"
:loading="tableDataTotal === -1 ? true : false"
:scroll="{ x: 700, y: 800 }"
expandRowByClick="true"
@expand="expandTable"
:pagination="{
showSizeChanger: true,
showQuickJumper: true,
hideOnSinglePage: true,
pageSizeOptions: [],
pageSize: pageSize,
current: currentPage,
total: tableDataTotal,
onChange: (page, pageSize) => {
currentPage = page;
// console.log('page', page)
// 加翻页查找代码
// this.setState({
// currentPage: page,
// }, () => {
// this.getMilitaryDeployment()
// })
},
}"
/>
</div>
<!-- 表格 -->
</div> </div>
</template> </template>
<script> <script>
import { reactive, toRefs, onMounted, ref } from "vue"; import { reactive, toRefs, onMounted } from "vue";
const columns = [
{
title: "项目名称",
dataIndex: "projectName",
key: "projectName",
width: 280,
// align: "center",
ellipsis: true,
// scopedSlots: { customRender: "action" }, //引入的插槽
// customRender: (text, record) => {
// console.log(text, record);
// return <span>{text.text}</span>;
// },
},
{
title: "项目经理",
dataIndex: "manager",
key: "manager",
width: 100,
align: "center",
},
{
title: "状态",
dataIndex: "state",
// width: "30%",
key: "state",
width: 100,
align: "center",
},
{
title: "创建人",
dataIndex: "creater",
// width: "30%",
key: "creater",
width: 100,
align: "center",
},
{
title: "创建时间",
dataIndex: "time",
key: "time",
width: 180,
align: "center",
},
{
title: "操作",
dataIndex: "opacation",
key: "opacation",
width: 300,
align: "center",
},
];
const rowSelection = ref({
checkStrictly: false,
onChange: (selectedRowKeys, selectedRows) => {
console.log(
`selectedRowKeys: ${selectedRowKeys}`,
"selectedRows: ",
selectedRows
);
},
onSelect: (record, selected, selectedRows) => {
console.log(record, selected, selectedRows);
},
onSelectAll: (selected, selectedRows, changeRows) => {
console.log(selected, selectedRows, changeRows);
},
});
export default { export default {
name: "CourseManage", name: "CourseManage",
setup() { setup() {
const state = reactive({ const state = reactive({
projectNameList: [
{
id: 1,
value: "项目一",
label: "项目一",
},
{
id: 2,
value: "项目二",
label: "项目二",
},
{
id: 3,
value: "项目三",
label: "项目三",
},
{
id: 4,
value: "项目四",
label: "项目四",
},
],
projectName: null,
selectTime: null,
tableData: [
{
key: 1,
projectName:
"管理者进阶1管理者进阶1管理者进阶1管理者进阶1管理者进阶1管理者进阶1管理者进阶1",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
children: [
{
key: 5,
projectName: "管理者进阶5",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
children: [
{
key: 7,
projectName:
"管理者进阶7管理者进阶7管理者进阶7管理者进阶7管理者进阶7管理者进阶7管理者进阶7",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
{
key: 8,
projectName: "管理者进阶8",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
],
},
{
key: 6,
projectName: "管理者进阶6",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
],
},
{
key: 2,
projectName: "管理者进阶2",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
{
key: 3,
projectName: "管理者进阶3",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
hasChildren: true,
children: [
{
key: 35,
projectName: "管理者进阶35",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
children: [
{
key: 37,
projectName: "管理者进阶37",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
{
key: 38,
projectName: "管理者进阶38",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
],
},
{
key: 36,
projectName: "管理者进阶36",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
],
},
{
key: 4,
projectName: "管理者进阶4",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
{
key: 4,
projectName: "管理者进阶5",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
{
key: 4,
projectName: "管理者进阶",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
{
key: 4,
projectName: "管理者进阶",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
{
key: 4,
projectName: "管理者进阶",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
{
key: 4,
projectName: "管理者进阶",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
{
key: 4,
projectName: "管理者进阶",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
{
key: 4,
projectName: "管理者进阶",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
{
key: 4,
projectName: "管理者进阶",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
{
key: 4,
projectName: "管理者进阶",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
{
key: 4,
projectName: "管理者进阶",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
{
key: 4,
projectName: "管理者进阶",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
{
key: 4,
projectName: "管理者进阶",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
{
key: 4,
projectName: "管理者进阶",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
{
key: 4,
projectName: "管理者进阶",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
{
key: 4,
projectName: "管理者进阶",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
{
key: 4,
projectName: "管理者进阶",
manager: "黄华 刘俊",
state: "草稿",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
],
currentPage: 1,
tableDataTotal: 20,
pageSize: 10,
}); });
onMounted(() => { onMounted(() => {
// console.log("执行"); // console.log("执行");
}); });
const selectProjectName = (value, index) => {
console.log("value", value, index);
};
const expandTable = (e, a) => {
console.log("惦记了");
console.log("e", e, a);
};
return { return {
...toRefs(state), ...toRefs(state),
columns,
rowSelection,
selectProjectName,
expandTable,
}; };
}, },
}; };
@@ -463,99 +45,6 @@ export default {
height: 100%; height: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
.filter {
margin-left: 38px;
margin-right: 38px;
margin-top: 30px;
display: flex;
justify-content: space-between;
flex-wrap: wrap;
.filterItems {
display: flex;
flex-wrap: wrap;
.select {
margin-right: 20px;
margin-bottom: 20px;
}
}
.btns {
display: flex;
// flex-wrap: wrap;
.btn {
padding: 0px 26px 0px 26px;
height: 38px;
background: rgba(64, 158, 255, 0);
border-radius: 8px;
border: 1px solid rgba(64, 158, 255, 1);
display: flex;
align-items: center;
justify-content: center;
margin-right: 14px;
flex-shrink: 0;
.search {
background-size: 100%;
}
.btnText {
font-size: 14px;
font-weight: 400;
color: rgba(64, 158, 255, 1);
line-height: 36px;
margin-left: 5px;
}
}
.btn1 {
.search {
width: 15px;
height: 17px;
background-image: url("../../assets/images/courseManage/search1.png");
}
}
.btn2 {
.search {
width: 16px;
height: 18px;
background-image: url("../../assets/images/courseManage/reset1.png");
}
}
.btn3 {
margin-right: 0px;
.search {
width: 17px;
height: 18px;
background-image: url("../../assets/images/courseManage/add1.png");
}
}
.btn1:hover {
background: rgba(64, 158, 255, 1);
.search {
background-image: url("../../assets/images/courseManage/search0.png");
}
.btnText {
color: #ffffff;
}
}
.btn2:hover {
background: rgba(64, 158, 255, 1);
.search {
background-image: url("../../assets/images/courseManage/reset0.png");
}
.btnText {
color: #ffffff;
}
}
.btn3:hover {
background: rgba(64, 158, 255, 1);
.search {
background-image: url("../../assets/images/courseManage/add0.png");
}
.btnText {
color: #ffffff;
}
}
}
}
.tableBox {
margin: 20px 38px 30px;
}
} }
</style> </style>

View File

@@ -458,7 +458,7 @@
alt="" alt=""
/> />
</div> </div>
<span style="margin-right: 14px">内容分类</span> <span style="margin-right: 14px">课程分类</span>
</div> </div>
<div class="item_inp"> <div class="item_inp">
<div class="select i6_input"> <div class="select i6_input">
@@ -1738,7 +1738,7 @@ const columns1 = [
}, },
}, },
{ {
title: "内容分类", title: "课程分类",
width: 130, width: 130,
dataIndex: "content", dataIndex: "content",
key: "1", key: "1",
@@ -3438,10 +3438,6 @@ courseownervisible:false,
}, },
]); ]);
const options2 = ref([ const options2 = ref([
{
value: "value2",
label: "请选择内容分类",
},
{ {
value: "leadership", value: "leadership",
label: "领导力", label: "领导力",

View File

@@ -1,11 +1,12 @@
<template> <template>
<div class="leveladddetail"> <div class="leveladddetail">
<div style="display: flex">
<div class="left clearfix"> <div class="left clearfix">
<div class="leftmain"> <div class="leftmain">
<div class="tit" style="margin-left: 18px">关卡</div> <div class="tit" style="margin-left: 18px">关卡</div>
<div class="btn btn3" style="margin-left: 19px"> <div class="btn btn3" style="margin-left: 19px">
<div class="search"></div> <div class="search"></div>
<div class="btnText" @click="showModal">添加关卡</div> <div class="btnText" @click="showModal()">添加关卡</div>
</div> </div>
<div class="maincon" style="background-color: #fff"> <div class="maincon" style="background-color: #fff">
<!-- <div <!-- <div
@@ -48,12 +49,12 @@
</div> </div>
</a-popover> </a-popover>
<div class="imgIcon"></div> <div class="imgIcon" @click="showModal(element)"></div>
</div> </div>
<div class="boxs_right"> <div class="boxs_right">
<div <div
class="imgIcon" class="imgIcon"
@click="deleteChapter(element.chapterId)" @click="showDeleteChapter(element.chapterId)"
></div> ></div>
</div> </div>
</div> </div>
@@ -117,10 +118,11 @@
:footer="null" :footer="null"
:closable="clos" :closable="clos"
wrapClassName="AddLevell" wrapClassName="AddLevell"
@cancel="closeModal"
> >
<div class="header"> <div class="header">
<div class="headmain"> <div class="headmain">
<div class="add">添加关卡</div> <div class="add">编辑/添加关卡</div>
<div class="img" style="cursor: pointer" @click="closeModal"></div> <div class="img" style="cursor: pointer" @click="closeModal"></div>
</div> </div>
</div> </div>
@@ -190,13 +192,18 @@
<span>学习模式</span> <span>学习模式</span>
<div class="inputbox"> <div class="inputbox">
<input type="text" placeholder="按学习时间解锁" /> <input type="text" placeholder="按学习时间解锁" />
<div class="bottonbox"><div class="btnText">切换模式</div></div> <div class="bottonbox">
<div class="btnText">切换模式</div>
</div>
</div> </div>
</div> </div>
<div class="line"></div> <div class="line"></div>
<router-link to="/leveladd"> <router-link to="/leveladd">
<div style="display: flex"> <div style="display: flex">
<img class="img2" src="../../assets/images/leveladd/back.png" /> <img
class="img2"
src="../../assets/images/leveladd/back.png"
/>
<div class="return">返回</div> <div class="return">返回</div>
</div> </div>
</router-link> </router-link>
@@ -213,9 +220,15 @@
</div> </div>
<!-- 添加在线侧弹窗 --> <!-- 添加在线侧弹窗 -->
<div> <div>
<add-online v-model:addonlineVisible="addonlinevisible" @changeData="updateTableData" v-model:edit="edit" <add-online
v-model:projectId="projectId" v-model:chooseStageId="chooseStageId" v-model:projectTaskId="projectTaskId" v-model:addonlineVisible="addonlinevisible"
v-model:EditOnlineId="EditOnlineId" /> @changeData="updateTableData"
v-model:edit="edit"
v-model:projectId="projectId"
v-model:chooseStageId="chooseStageId"
v-model:projectTaskId="projectTaskId"
v-model:EditOnlineId="EditOnlineId"
/>
</div> </div>
<!-- 添加在线侧弹窗 --> <!-- 添加在线侧弹窗 -->
<div class="lin"></div> <div class="lin"></div>
@@ -238,9 +251,15 @@
</div> </div>
<!-- 添加案例侧弹窗 --> <!-- 添加案例侧弹窗 -->
<div> <div>
<add-case v-model:addcaseVisible="addcasevisible" @changeData="updateTableData" v-model:edit="edit" <add-case
v-model:projectId="projectId" v-model:chooseStageId="chooseStageId" v-model:projectTaskId="projectTaskId" v-model:addcaseVisible="addcasevisible"
v-model:EditCaseId="EditCaseId" /> @changeData="updateTableData"
v-model:edit="edit"
v-model:projectId="projectId"
v-model:chooseStageId="chooseStageId"
v-model:projectTaskId="projectTaskId"
v-model:EditCaseId="EditCaseId"
/>
</div> </div>
<!-- 添加案例侧弹窗 --> <!-- 添加案例侧弹窗 -->
<div class="lin"></div> <div class="lin"></div>
@@ -474,7 +493,9 @@
</div> </div>
<div class="btn btn2"> <div class="btn btn2">
<div class="imgIcon"></div> <div class="imgIcon"></div>
<div class="btnText" @click="showDeleteALLModal">批量删除</div> <div class="btnText" @click="showDeleteALLModal">
批量删除
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -527,7 +548,9 @@
<div style="width: 120px; text-align: center">任务名称</div> <div style="width: 120px; text-align: center">任务名称</div>
<div style="width: 120px; text-align: center">必修/选修</div> <div style="width: 120px; text-align: center">必修/选修</div>
<div style="width: 87px; text-align: center">时长</div> <div style="width: 87px; text-align: center">时长</div>
<div style="width: 120px; text-align: center; margin-right: 20px"> <div
style="width: 120px; text-align: center; margin-right: 20px"
>
操作 操作
</div> </div>
</div> </div>
@@ -617,7 +640,11 @@
{{ element.cretime }}分钟 {{ element.cretime }}分钟
</div> </div>
<div <div
style="width: 120px; text-align: center; margin-right: 20px" style="
width: 120px;
text-align: center;
margin-right: 20px;
"
> >
<div class="opa"> <div class="opa">
<div class="opacation"> <div class="opacation">
@@ -651,7 +678,10 @@
</draggable> </draggable>
</div> </div>
<!-- 无数据样式 --> <!-- 无数据样式 -->
<div class="notable" :style="{ display: stm_hs ? 'block' : 'none' }"> <div
class="notable"
:style="{ display: stm_hs ? 'block' : 'none' }"
>
<div class="notablebox"> <div class="notablebox">
<div class="boxbody"> <div class="boxbody">
<div class="boximg"></div> <div class="boximg"></div>
@@ -669,19 +699,7 @@
<!-- 无数据样式 --> <!-- 无数据样式 -->
</div> </div>
</div> </div>
<div class="footbtn">
<div class="btnbox">
<div class="btn btn2">
<div class="btnText">暂存</div>
</div>
<div class="btn btn2">
<div class="btnText">确定</div>
</div>
<div class="btn btn1" @click="gqxy_hShow">
<div class="btnText">下一步</div>
</div>
</div>
</div>
<div class="draw" style="position: relative"> <div class="draw" style="position: relative">
<a-drawer <a-drawer
v-model:visible="visible" v-model:visible="visible"
@@ -719,6 +737,22 @@
</a-drawer> </a-drawer>
</div> </div>
</div> </div>
</div>
<div class="footbtn">
<div class="btnbox">
<div class="btn btn2">
<div class="btnText">暂存</div>
</div>
<div class="btn btn2">
<div class="btnText">确定</div>
</div>
<div class="btn btn1">
<div class="btnText">取消</div>
</div>
</div>
</div>
<div class="right" :style="{ display: gqxy_hs ? 'none' : 'block' }"> <div class="right" :style="{ display: gqxy_hs ? 'none' : 'block' }">
<div class="addhead"> <div class="addhead">
<div class="filt"> <div class="filt">
@@ -959,6 +993,39 @@
</div> </div>
</div></a-modal </div></a-modal
> >
<!-- 是否删除关卡弹窗 -->
<a-modal
v-model:visible="deleteChapterModal"
:footer="null"
:closable="cC"
wrapClassName="ConfirmModal"
centered="true"
>
<div class="delete">
<div class="del_header"></div>
<div class="del_main">
<div class="header">
<div class="icon"></div>
<span>提示</span>
<div class="close_exit" @click="closeDeleteChapter"></div>
</div>
<div class="body">
<span>您确定要删除此关卡</span>
</div>
<div class="del_btnbox">
<div class="del_btn btn1" @click="closeDeleteChapter">
<div class="btnText" >取消</div>
</div>
<div class="del_btn btn2" @click="deleteChapter">
<div class="btnText" >确定</div>
</div>
</div>
</div>
</div>
</a-modal>
</div> </div>
</template> </template>
@@ -966,8 +1033,8 @@
import { reactive, toRefs, onMounted, onUnmounted } from "vue"; import { reactive, toRefs, onMounted, onUnmounted } from "vue";
import AddStu from "../../components/drawers/AddLevelAddStu"; import AddStu from "../../components/drawers/AddLevelAddStu";
import ImpStu from "../../components/drawers/AddLevelImportStu"; import ImpStu from "../../components/drawers/AddLevelImportStu";
import AddOnline from "../../components/drawers/AddOnline.vue" import AddOnline from "../../components/drawers/AddOnline.vue";
import AddCase from "../../components/drawers/AddCase.vue" import AddCase from "../../components/drawers/AddCase.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 AddDiscuss from "../../components/drawers/AddDiscuss.vue"; import AddDiscuss from "../../components/drawers/AddDiscuss.vue";
@@ -1272,11 +1339,50 @@ export default {
projectId: null, projectId: null,
projectTaskId: null, projectTaskId: null,
chooseStageId: null, chooseStageId: null,
updateChapterID: null, //编辑关卡id
deleteChapterModal:false,//删除关卡弹窗
deleteChapterId:null,//删除关卡id
}); });
const showModal = (element) => {
state.modal = true;
console.log("element", element);
if (element) {
console.log("element", element);
state.value1 = element.name;
state.value2 = element.remark;
state.updateChapterID = element.chapterId;
}
};
const closeModal = () => {
state.modal = false;
state.value1 = "";
state.value2 = "";
state.updateChapterID = null;
};
//新建关卡 //新建关卡
const editChapter = () => { const editChapter = () => {
if (!state.value1) return message.warning("请输入关卡名称"); if (!state.value1) return message.warning("请输入关卡名称");
if (state.updateChapterID) {
let obj = {
name: state.value1,
remark: state.value2,
routerId: state.routerId,
chapterId:state.updateChapterID
};
api
.updateChapter(obj)
.then((res) => {
console.log("修改成功", res);
message.success("修改成功");
getDetail();
closeModal();
})
.catch((err) => {
console.log("修改失败", err);
});
} else {
let obj = { let obj = {
name: state.value1, name: state.value1,
remark: state.value2, remark: state.value2,
@@ -1285,8 +1391,11 @@ export default {
api api
.editChapter(obj) .editChapter(obj)
.then((res) => { .then((res) => {
setTimeout(() => {
console.log("创建成功", res); console.log("创建成功", res);
// setTimeout(() => {
// console.log("创建成功", res);
// }, 1000);
message.success("创建成功"); message.success("创建成功");
state.value1 = ""; state.value1 = "";
state.value2 = ""; state.value2 = "";
@@ -1294,34 +1403,48 @@ export default {
// state.createLoading = false; // state.createLoading = false;
//state.currentPage = 1; //state.currentPage = 1;
// getLearnPath(); // getLearnPath();
}, 1000); getDetail();
closeModal();
}) })
.catch((err) => { .catch((err) => {
console.log("创建失败", 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 = () => { const showDrawer = () => {
state.visible = true; state.visible = true;
}; };
//打开删除关卡弹窗
const showDeleteChapter=(id)=>{
state.deleteChapterId=id
state.deleteChapterModal=true
}
//关闭删除关卡弹窗
const closeDeleteChapter=()=>{
state.deleteChapterId=null
state.deleteChapterModal=false
}
//删除关卡
const deleteChapter = () => {
console.log("chapterId", state.deleteChapterId);
let obj = {
chapterId: state.deleteChapterId,
};
api
.deleteChapter(obj)
.then((res) => {
console.log("删除关卡成功", res);
message.success('删除关卡成功')
closeDeleteChapter()
getDetail();
})
.catch((err) => {
console.log("删除关卡失败", err);
});
};
//关闭项目抽屉 //关闭项目抽屉
const leaveProjDrawer = () => { const leaveProjDrawer = () => {
state.addprojvisible = false; state.addprojvisible = false;
@@ -1332,13 +1455,13 @@ export default {
state.addonlinevisible = true; state.addonlinevisible = true;
state.EditWorkId = id; state.EditWorkId = id;
state.routerTaskId = eleId; state.routerTaskId = eleId;
} };
//案例抽屉 //案例抽屉
const showDrawerAddCase = (id, eleId) => { const showDrawerAddCase = (id, eleId) => {
state.addcasevisible = true; state.addcasevisible = true;
state.EditWorkId = id; state.EditWorkId = id;
state.routerTaskId = eleId; state.routerTaskId = eleId;
} };
// 作业和考试的抽屉 // 作业和考试的抽屉
const showDrawerAddHomework = (id, eleId) => { const showDrawerAddHomework = (id, eleId) => {
console.log("homework==============", id, state.isactive); console.log("homework==============", id, state.isactive);
@@ -1460,14 +1583,7 @@ export default {
const closeDrawer = () => { const closeDrawer = () => {
state.visible = false; state.visible = false;
}; };
const showModal = () => {
state.modal = true;
};
const closeModal = () => {
state.modal = false;
state.value1 = "";
state.value2 = "";
};
const afterVisibleChange = (bool) => { const afterVisibleChange = (bool) => {
console.log("visible", bool); console.log("visible", bool);
}; };
@@ -1849,21 +1965,6 @@ export default {
showDrawerAddCase(id, eleId); showDrawerAddCase(id, eleId);
} }
}; };
//删除关卡
const deleteChapter = (chapterId) => {
console.log("chapterId", chapterId);
let obj = {
chapterId: chapterId,
};
api
.deleteChapter(obj)
.then((res) => {
console.log("删除关卡成功", res);
})
.catch((err) => {
console.log("删除关卡失败", err);
});
};
const changeCourseType = (ele) => { const changeCourseType = (ele) => {
console.log("任务id", ele.id); console.log("任务id", ele.id);
@@ -1910,7 +2011,13 @@ export default {
const rowSelection = { const rowSelection = {
onSelect: (selectedRows, selected, selectedRowKeys) => { onSelect: (selectedRows, selected, selectedRowKeys) => {
console.log( console.log(
"selectedRowKeys", selectedRowKeys, "selectedRows", selectedRows, "selected", selected); "selectedRowKeys",
selectedRowKeys,
"selectedRows",
selectedRows,
"selected",
selected
);
console.log(selectedRows.assessmentId); console.log(selectedRows.assessmentId);
state.assessmentId = selectedRows.assessmentId; state.assessmentId = selectedRows.assessmentId;
state.assessmentName = selectedRows.name; state.assessmentName = selectedRows.name;
@@ -1944,12 +2051,12 @@ export default {
let arr = res.data.data.rows; let arr = res.data.data.rows;
if (res.status === 200) { if (res.status === 200) {
getTableDate(arr); getTableDate(arr);
console.log('---------------项目信息---------------------------'); console.log("---------------项目信息---------------------------");
} }
}) })
.catch((err) => { .catch((err) => {
console.log("获取全部项目信息接口失败", err); console.log("获取全部项目信息接口失败", err);
console.log('+++++++++++++++++++++++++++++++++++++++++++++++'); console.log("+++++++++++++++++++++++++++++++++++++++++++++++");
// state.createLoading = false; // state.createLoading = false;
}); });
}; };
@@ -1964,7 +2071,7 @@ export default {
}) })
.then((res) => { .then((res) => {
console.log(res, 11111); console.log(res, 11111);
message.success(`${state.editproj ? '编辑' : '新增'}关卡任务成功`) message.success(`${state.editproj ? "编辑" : "新增"}关卡任务成功`);
// ctx.emit("changeData", false); // ctx.emit("changeData", false);
closeDrawer(); closeDrawer();
state.addLoading = false; state.addLoading = false;
@@ -1972,7 +2079,7 @@ export default {
.catch((err) => { .catch((err) => {
console.log(err, 1111); console.log(err, 1111);
}); });
} };
onMounted(() => { onMounted(() => {
// createCase(); // createCase();
getAllProjText(); getAllProjText();
@@ -2021,7 +2128,6 @@ export default {
showDeleteModal, showDeleteModal,
decideType, decideType,
updateTableData, updateTableData,
deleteChapter,
changeCourseType, changeCourseType,
showChangeModal, showChangeModal,
closeChangeModal, closeChangeModal,
@@ -2030,6 +2136,10 @@ export default {
getTableDate, getTableDate,
getAllProjText, getAllProjText,
updateTask, updateTask,
showDeleteChapter,
closeDeleteChapter,
deleteChapter,
}; };
}, },
}; };
@@ -2472,6 +2582,7 @@ export default {
.leveladddetail { .leveladddetail {
width: 100%; width: 100%;
display: flex; display: flex;
flex-direction: column;
min-width: 933px; min-width: 933px;
background-color: rgba(245, 247, 250, 1); background-color: rgba(245, 247, 250, 1);
.left { .left {
@@ -2565,7 +2676,7 @@ export default {
.imgIcon { .imgIcon {
width: 16px; width: 16px;
height: 16px; height: 16px;
background-image: url(@/assets/images/leveladd/edit.png); background-image: url(@/assets/images/leveladd/edit1.png);
background-size: 100% 100%; background-size: 100% 100%;
} }
} }
@@ -3184,49 +3295,6 @@ export default {
} }
} }
} }
.footbtn {
width: 100%;
flex: 1;
background-color: #fff;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.07);
display: flex;
justify-content: end;
.btnbox {
display: flex;
margin-right: 36px;
.btn {
padding: 0px 26px 0px 26px;
height: 38px;
border-radius: 8px;
border: 1px solid rgba(64, 158, 255, 1);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
margin: 21px 0px 19px 14px;
cursor: pointer;
white-space: nowrap;
.btnText {
font-size: 14px;
font-weight: 400;
line-height: 36px;
margin-left: 5px;
}
}
.btn1 {
background-color: #409eff;
.btnText {
color: #ffffff;
}
}
.btn2 {
background-color: #ffffff;
.btnText {
color: #409eff;
}
}
}
}
} }
.opat { .opat {
@@ -3287,6 +3355,52 @@ export default {
margin-left: 10px; margin-left: 10px;
} }
} }
.footbtn {
width: 100%;
height: 80px;
margin-top: 16px;
// flex: 1;
background-color: #fff;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.07);
display: flex;
justify-content: end;
.btnbox {
display: flex;
margin-right: 36px;
height: 80px;
.btn {
padding: 0px 26px 0px 26px;
height: 38px;
border-radius: 8px;
border: 1px solid rgba(64, 158, 255, 1);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
margin: 21px 0px 19px 14px;
cursor: pointer;
white-space: nowrap;
.btnText {
font-size: 14px;
font-weight: 400;
line-height: 36px;
margin-left: 5px;
}
}
.btn1 {
background-color: #409eff;
.btnText {
color: #ffffff;
}
}
.btn2 {
background-color: #ffffff;
.btnText {
color: #409eff;
}
}
}
}
} }
.CopyModal { .CopyModal {
.ant-modal { .ant-modal {

View File

@@ -261,7 +261,7 @@
class="nameimg" class="nameimg"
src="../../assets/images/basicinfo/asterisk.png" src="../../assets/images/basicinfo/asterisk.png"
/> />
<div class="inname">培训体系</div> <div class="inname">培训分类</div>
</div> </div>
<div class="in select"> <div class="in select">
<a-select <a-select
@@ -675,7 +675,7 @@ export default {
levels = key; levels = key;
}; };
// 培训体系 // 培训分类
const classifyList4 = ref([ const classifyList4 = ref([
{ value: 1, label: "集团级" }, { value: 1, label: "集团级" },
{ value: 2, label: "组织级" }, { value: 2, label: "组织级" },
@@ -748,7 +748,7 @@ export default {
managerId: "请选择项目经理", managerId: "请选择项目经理",
sourceBelongId: "请选择资源归属", sourceBelongId: "请选择资源归属",
level: "请填写项目级别", level: "请填写项目级别",
systemId: "请填写项目培训体系", systemId: "请填写项目培训分类",
boeFlag: "请选择是否BOE实施", boeFlag: "请选择是否BOE实施",
}; };

View File

@@ -478,11 +478,11 @@
</div> </div>
</div> </div>
<div class="set_content"> <div class="set_content">
<div class="setc_name"><span>培训体系</span></div> <div class="setc_name"><span>培训分类</span></div>
<div class="setc_main"> <div class="setc_main">
<a-select <a-select
v-model:value="formData.systemId" v-model:value="formData.systemId"
placeholder="请选择培训体系" placeholder="请选择培训分类"
:size="large" :bordered="isEdit" :disabled="!isEdit" :size="large" :bordered="isEdit" :disabled="!isEdit"
style="width: 200px;color: #999999;" :options="systemOptions" style="width: 200px;color: #999999;" :options="systemOptions"
></a-select> ></a-select>

View File

@@ -247,7 +247,7 @@
class="nameimg" class="nameimg"
src="../../assets/images/basicinfo/asterisk.png" src="../../assets/images/basicinfo/asterisk.png"
/> />
<div class="inname">培训体系</div> <div class="inname">培训分类</div>
</div> </div>
<div class="in select"> <div class="in select">
<a-select <a-select
@@ -359,7 +359,7 @@
</div> </div>
</template> </template>
<script> <script>
import { reactive, toRefs, ref } from "vue"; import { reactive, toRefs, ref, onUnmounted } from "vue";
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
import { useRouter, useRoute } from "vue-router"; import { useRouter, useRoute } from "vue-router";
import dayjs from "dayjs"; import dayjs from "dayjs";
@@ -716,7 +716,7 @@ export default {
levels = key; levels = key;
}; };
// 培训体系 // 培训分类
const classifyList4 = ref([ const classifyList4 = ref([
{ value: 1, label: "集团级" }, { value: 1, label: "集团级" },
{ value: 2, label: "组织级" }, { value: 2, label: "组织级" },
@@ -1021,6 +1021,9 @@ export default {
} }
}; };
onUnmounted(() => {
storage.remove("projectAddId");
});
return { return {
...toRefs(state), ...toRefs(state),
projectName, projectName,

View File

@@ -1024,6 +1024,35 @@
</div> </div>
</div> </div>
</a-modal> </a-modal>
<!-- 创建项目提示框 -->
<a-modal
v-model:visible="reminderModal"
:footer="null"
:closable="closeBack"
wrapClassName="CopyModal"
centered="true"
>
<div class="delete">
<div class="del_header"></div>
<div class="del_main">
<div class="header">
<div class="icon"></div>
<span>温馨提示</span>
<div class="close_exit" @click="closeReminderModal"></div>
</div>
<div class="body">
<div style="margin-left:60px;margin-right:60px">请您根据自身需求选择对应项目类别多层项目与单层项目操作不同层级不同</div>
</div>
<div class="del_btnbox">
<div class="del_btn btn2" @click="okReminderModal">
<div class="btnText">好的</div>
</div>
</div>
</div>
</div>
</a-modal>
<!-- 归属权抽屉 --> <!-- 归属权抽屉 -->
<proj-owner-ship v-model:ProjOwnervisible="ProjOwnervisible" /> <proj-owner-ship v-model:ProjOwnervisible="ProjOwnervisible" />
<!-- 授权名单抽屉 --> <!-- 授权名单抽屉 -->
@@ -1032,6 +1061,9 @@
<proj-check-ship v-model:ProjCheckvisible="ProjCheckvisible" /> <proj-check-ship v-model:ProjCheckvisible="ProjCheckvisible" />
<!-- 管理权抽屉 --> <!-- 管理权抽屉 -->
<proj-manage-ship v-model:ProjManagevisible="ProjManagevisible" /> <proj-manage-ship v-model:ProjManagevisible="ProjManagevisible" />
</div> </div>
</template> </template>
<script> <script>
@@ -1069,6 +1101,7 @@ export default {
projectPub: false, //发布弹窗 projectPub: false, //发布弹窗
backModal: false, //撤回弹窗 backModal: false, //撤回弹窗
closeBack: false, //撤回弹窗关闭图标 closeBack: false, //撤回弹窗关闭图标
reminderModal:false,//温馨提示弹窗
ProjOwnervisible: false, ProjOwnervisible: false,
ProjPvisible: false, ProjPvisible: false,
ProjCheckvisible: false, ProjCheckvisible: false,
@@ -3038,7 +3071,8 @@ export default {
}; };
const showModal1 = () => { const showModal1 = () => {
state.estabish = true;
state.reminderModal=true
}; };
const closeModal1 = () => { const closeModal1 = () => {
state.estabish = false; state.estabish = false;
@@ -3067,6 +3101,14 @@ export default {
state.ProjManagevisible = true; state.ProjManagevisible = true;
}; };
const closeReminderModal=()=>{
state.reminderModal=false
}
const okReminderModal=()=>{
state.reminderModal=false
state.estabish = true;
}
return { return {
...toRefs(state), ...toRefs(state),
selectProjectName, selectProjectName,
@@ -3168,6 +3210,8 @@ export default {
deleteProject, deleteProject,
templateProject, templateProject,
copyProject, copyProject,
closeReminderModal,
okReminderModal,
}; };
}, },
}; };

View File

@@ -154,7 +154,7 @@
<div class="name"> <div class="name">
<div class="namebox"> <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 class="inname">培训分类</div>
</div> </div>
<div class="in select"> <div class="in select">
<a-select :getPopupContainer=" <a-select :getPopupContainer="
@@ -529,7 +529,7 @@ export default {
levels = key; levels = key;
}; };
// 培训体系 // 培训分类
const classifyList4 = ref([ const classifyList4 = ref([
{ value: 1, label: "集团级" }, { value: 1, label: "集团级" },
{ value: 2, label: "组织级" }, { value: 2, label: "组织级" },
@@ -602,7 +602,7 @@ export default {
managerId: "请选择项目经理", managerId: "请选择项目经理",
sourceBelongId: "请选择资源归属", sourceBelongId: "请选择资源归属",
level: "请填写项目级别", level: "请填写项目级别",
systemId: "请填写项目培训体系", systemId: "请填写项目培训分类",
boeFlag: "请选择是否BOE实施" boeFlag: "请选择是否BOE实施"
}; };

View File

@@ -1,5 +1,6 @@
<template> <template>
<div class="taskadd"> <div class="taskadd">
<div style="display: flex">
<div class="left clearfix"> <div class="left clearfix">
<div class="leftmain"> <div class="leftmain">
<div class="tit"> <div class="tit">
@@ -10,11 +11,19 @@
/> />
</div> </div>
<!-- @click="showModal" --> <!-- @click="showModal" -->
<div class="btn btn3" @click="showConfirm" style="margin-left: 19px"> <div class="btn btn3" @click="showModal()" style="margin-left: 19px">
<div class="search"></div> <div class="search"></div>
<div class="btnText">添加阶段</div> <div class="btnText">添加阶段</div>
</div> </div>
<div class="maincon" style="background-color: #fff"> <div class="maincon" style="background-color: #fff">
<!-- <div
class="items"
:class="{ active: isActive == true }"
@click="changebgc"
v-for="item in level"
:key="item.id"
> -->
<draggable <draggable
v-model="level" v-model="level"
chosenClass="chosen" chosenClass="chosen"
@@ -22,29 +31,91 @@
forceFallback="true" forceFallback="true"
group="stage" group="stage"
animation="500" animation="500"
@start="onStart"
@end="onEnd"
> >
<template #item="{ element }"> <template #item="{ element }">
<div <div
class="item" class="items"
:class="chooseStageId == element.id ? 'bgcactive' : ''" :class="chooseStageId == element.id ? 'active' : ''"
@click="changebgc(element.id)" @click="changebgc(element.id)"
> >
<div class="itemle"> <div class="items1">
<div class="tit">{{ element.tit }}</div> <div class="boxs_left">
<div class="name">{{ element.name }}</div> <a-popover placement="topLeft" trigger="click">
<template #content>
<div style="width: 130px">
{{ element.name ? element.name : "暂无说明" }}
</div> </div>
<div class="itemri"> </template>
<img src="../../assets/images/leveladd/z1.png" /> <template #title>
<img <span>阶段说明</span>
style="margin-top: 40px" </template>
src="../../assets/images/leveladd/z2.png" <div class="script">
/> <span style="font-size: 12px; color: #ffffff"
>说明</span
>
</div> </div>
</a-popover>
<div class="imgIcon" @click="showModal(element)"></div>
</div>
<div class="boxs_right">
<div
class="imgIcon"
@click="showDeleteStage(element.id)"
></div>
</div>
</div>
<div class="items2">
<a-popover
placement="topLeft"
v-if="element.tit.length > 10"
>
<template #content>
<div style="width: 130px">
{{ element.tit }}
</div>
</template>
<!-- <template #title>
<span>关卡说明</span>
</template> -->
<div class="nname">
{{ element.tit }}
</div>
</a-popover>
<div class="nname" v-if="element.tit.length <= 10">
{{ element.tit }}
</div>
</div>
<!-- <div class="itemle">
<div class="tit">{{ item.remark }}</div>
<div class="name">{{ item.name }}</div>
</div> -->
</div> </div>
</template> </template>
</draggable> </draggable>
<!-- <div
class="items"
:class="isactive == index ? 'active' : ''"
@click="changebgc(index)"
v-for="(item, index) in level"
:key="item.chapterId"
>
<div class="items1">
<div class="boxs_left">
<div class="script">
<span style="font-size: 12px; color: #ffffff">说明</span>
</div>
<div class="imgIcon"></div>
</div>
<div class="boxs_right">
<div class="imgIcon"></div>
</div>
</div>
<div class="items2">
<div class="nname">{{ item.name }}</div>
</div>
</div> -->
</div> </div>
</div> </div>
</div> </div>
@@ -63,23 +134,24 @@
</div> </div>
<div class="rightt"> <div class="rightt">
<div class="select"> <div class="select">
<a-select <span>学习模式</span>
v-model:value="projectName" <div class="inputbox">
style="width: 200px" <input type="text" placeholder="按学习时间解锁" />
placeholder="自由学习模式" <div class="bottonbox">
:options="projectNameList" <div class="btnText">切换模式</div>
@change="selectProjectName" </div>
allowClear </div>
showSearch
></a-select>
</div> </div>
<div class="line"></div> <div class="line"></div>
<img class="img2" src="../../assets/images/projectadd/keep.png" /> <!-- <img class="img2" src="../../assets/images/projectadd/keep.png" />
<div class="pub">保存</div> <div class="pub">保存</div>
<div class="line"></div> <div class="line"></div> -->
<router-link to="/taskpage"> <router-link to="/taskpage">
<div style="display: flex"> <div style="display: flex">
<img class="img2" src="../../assets/images/leveladd/back.png" /> <img
class="img2"
src="../../assets/images/leveladd/back.png"
/>
<div class="return">返回</div> <div class="return">返回</div>
</div> </div>
</router-link> </router-link>
@@ -364,7 +436,9 @@
<div class="boomcen"> <div class="boomcen">
<div class="onerow"> <div class="onerow">
<div class="taskmain">任务列表</div> <div class="taskmain">任务列表</div>
<button class="btn" @click="showChangeModal">移动任务到阶段</button> <button class="btn" @click="showChangeModal">
移动任务到阶段
</button>
<div class="edit" @click="showdeAll"> <div class="edit" @click="showdeAll">
<img <img
class="editimg" class="editimg"
@@ -617,6 +691,23 @@
</div> </div>
</div> </div>
</div> </div>
</div>
<div class="footbtn">
<div class="btnbox">
<div class="btn btn2">
<div class="btnText">暂存</div>
</div>
<div class="btn btn2">
<div class="btnText">确定</div>
</div>
<div class="btn btn1">
<div class="btnText">取消</div>
</div>
</div>
</div>
<!-- 添加阶段弹窗 -->
<div> <div>
<a-modal <a-modal
v-model:visible="stage" v-model:visible="stage"
@@ -628,6 +719,7 @@
width="624px" width="624px"
height="388px" height="388px"
centered="true" centered="true"
@cancel="closeModal"
> >
<div <div
class="modalHeader" class="modalHeader"
@@ -640,7 +732,9 @@
" "
> >
<div class="headerLeft" style="margin-left: 32px"> <div class="headerLeft" style="margin-left: 32px">
<span class="headerLeftText" style="font-size: 16px">添加阶段</span> <span class="headerLeftText" style="font-size: 16px"
>编辑/添加阶段</span
>
</div> </div>
<div style="cursor: pointer; margin-right: 32px" @click="closeModal"> <div style="cursor: pointer; margin-right: 32px" @click="closeModal">
<img <img
@@ -745,11 +839,11 @@
<span>您确定要添加阶段吗</span> <span>您确定要添加阶段吗</span>
</div> </div>
<div class="del_btnbox"> <div class="del_btnbox">
<div class="del_btn btn1"> <div class="del_btn btn1" @click="closeConfirm">
<div class="btnText" @click="delete_exit">取消</div> <div class="btnText">取消</div>
</div> </div>
<div class="del_btn btn2"> <div class="del_btn btn2" @click="showModal">
<div class="btnText" @click="showModal">确定</div> <div class="btnText">确定</div>
</div> </div>
</div> </div>
</div> </div>
@@ -894,6 +988,38 @@
</div> </div>
</div></a-modal </div></a-modal
> >
<!-- 是否删除阶段弹窗 -->
<a-modal
v-model:visible="deleteStageModal"
:footer="null"
:closable="cC"
wrapClassName="ConfirmModal"
centered="true"
>
<div class="delete">
<div class="del_header"></div>
<div class="del_main">
<div class="header">
<div class="icon"></div>
<span>提示</span>
<div class="close_exit" @click="closeDeleteStage"></div>
</div>
<div class="body">
<span>您确定要删除此阶段</span>
</div>
<div class="del_btnbox">
<div class="del_btn btn1" @click="closeDeleteStage">
<div class="btnText" >取消</div>
</div>
<div class="del_btn btn2" @click="deleteStage">
<div class="btnText" >确定</div>
</div>
</div>
</div>
</div>
</a-modal>
</div> </div>
</template> </template>
@@ -1161,6 +1287,10 @@ export default {
selectRow: [], //选择行 selectRow: [], //选择行
curLevel: [], //阶段名称 curLevel: [], //阶段名称
selectAll: 0, //0未选择1全选2部分选择 selectAll: 0, //0未选择1全选2部分选择
updateStageID: null, //编辑阶段id
deleteStageId:null,//删除阶段的id
deleteStageModal:false,//删除阶段弹窗
}); });
console.log("projectId", state.projectId); console.log("projectId", state.projectId);
const selectProjectName = (value, index) => { const selectProjectName = (value, index) => {
@@ -1172,31 +1302,7 @@ export default {
const afterVisibleChange = (bool) => { const afterVisibleChange = (bool) => {
console.log("visible", bool); console.log("visible", bool);
}; };
//添加阶段
const editStage = () => {
if (!state.valuesname) {
message.destroy();
return message.warning("请输入阶段名称");
}
let obj = {
name: state.valuesname,
projectId: state.projectId,
remark: state.valuesnotice,
};
apistage
.editStage(obj)
.then((res) => {
console.log("添加阶段成功", res);
(state.valuesname = ""),
(state.valuesnotice = ""),
(state.stage = false);
message.default();
message.success("添加阶段成功");
})
.catch((err) => {
console.log("添加阶段失败", err);
});
};
// 把数据放到state里 // 把数据放到state里
const getTableData = (tableData) => { const getTableData = (tableData) => {
let data = tableData; let data = tableData;
@@ -1447,11 +1553,10 @@ export default {
let stage = localStorage.getItem("stageId") let stage = localStorage.getItem("stageId")
? localStorage.getItem("stageId") ? localStorage.getItem("stageId")
: null; : null;
if (stage !== null) { if (stage !== "null") {
state.chooseStageId = stage; state.chooseStageId = stage;
} else { } else {
state.chooseStageId = leng > 0 ? stagearr[0].stageId : null; state.chooseStageId = leng > 0 ? stagearr[0].stageId : null;
console.log(state.chooseStageId, 1111);
} }
} }
}) })
@@ -1565,12 +1670,7 @@ export default {
// 40 + // 40 +
// "px"; // "px";
// }; // };
//添加阶段详情
const showModal = () => {
state.stage = true;
//关闭确认框
closeConfirm();
};
const showModal1 = () => { const showModal1 = () => {
//关闭确认框 //关闭确认框
state.deleteModal = false; state.deleteModal = false;
@@ -1578,8 +1678,105 @@ export default {
message.success("删除成功"); message.success("删除成功");
getTask(); getTask();
}; };
//关闭添加阶段弹窗
const closeModal = () => { const closeModal = () => {
state.stage = false; state.stage = false;
state.valuesname = "";
state.valuesnotice = "";
state.updateStageID = null;
};
//显示添加阶段弹窗
const showModal = (element) => {
state.stage = true;
//关闭确认框
closeConfirm();
if (element) {
state.valuesname = element.tit;
state.valuesnotice = element.name;
state.updateStageID = element.id;
}
};
//添加阶段
const editStage = () => {
if (!state.valuesname) {
message.destroy();
return message.warning("请输入阶段名称");
}
if (state.updateStageID) {
let obj = {
name: state.valuesname,
projectId: state.projectId,
remark: state.valuesnotice,
stageId: state.updateStageID,
};
apistage
.editStage(obj)
.then((res) => {
console.log("修改阶段成功", res);
state.valuesname = "";
state.valuesnotice = "";
closeModal()
state.updateStageID = null;
message.destroy();
message.success("修改阶段成功");
getTask();
})
.catch((err) => {
console.log("添加阶段失败", err);
});
} else {
let obj = {
name: state.valuesname,
projectId: state.projectId,
remark: state.valuesnotice,
};
apistage
.editStage(obj)
.then((res) => {
console.log("添加阶段成功", res);
state.valuesname = ""
state.valuesnotice = ""
closeModal()
message.destroy();
message.success("添加阶段成功");
getTask();
})
.catch((err) => {
console.log("添加阶段失败", err);
});
}
};
//打开删除阶段弹窗
const showDeleteStage=(id)=>{
state.deleteStageId=id
state.deleteStageModal=true
}
//关闭删除阶段弹窗
const closeDeleteStage=()=>{
state.deleteStageId=null
state.deleteStageModal=false
}
//删除阶段
const deleteStage = () => {
console.log("chapterId", state.deleteStageId);
let obj = {
stageId: state.deleteStageId,
};
apistage
.deleteStage(obj)
.then((res) => {
console.log("删除阶段成功", res);
message.success('删除阶段成功')
closeDeleteStage()
getTask();
})
.catch((err) => {
console.log("删除阶段失败", err);
});
}; };
onMounted(() => { onMounted(() => {
document.getElementsByTagName("main")[0].style.background = document.getElementsByTagName("main")[0].style.background =
@@ -1871,6 +2068,10 @@ export default {
showdeAll, showdeAll,
closeDeAll, closeDeAll,
handleChangeStage, handleChangeStage,
showDeleteStage,
closeDeleteStage,
deleteStage,
}; };
}, },
}; };
@@ -2297,6 +2498,7 @@ export default {
.taskadd { .taskadd {
width: 100%; width: 100%;
display: flex; display: flex;
flex-direction: column;
min-width: 933px; min-width: 933px;
// min-width: 1200px; // min-width: 1200px;
// overflow-x: hidden; // overflow-x: hidden;
@@ -2363,53 +2565,76 @@ export default {
width: 208px; width: 208px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; // background-color: #bfa; align-items: center;
.ghost { .ghost {
// background-color: red; // background-color: red;
opacity: 0 !important; opacity: 0 !important;
} }
.item { .items {
width: 171px; width: 171px;
height: 83px; // height: 83px;
display: flex;
background: rgba(255, 182, 78, 0.1); background: rgba(255, 182, 78, 0.1);
border: 1px solid #ffb64e; border: 1px solid #ffb64e;
opacity: 0.45; opacity: 0.45;
border-radius: 8px; border-radius: 8px;
margin-bottom: 17px; margin-bottom: 16px;
align-items: center; align-items: center;
position: relative; padding: 16px;
.itemle { opacity: 0.5;
margin-left: 17px; cursor: pointer;
.tit { .items1 {
color: black; margin-bottom: 12px;
// color: red;
font-size: 14px;
margin-bottom: 8px;
font-weight: bold;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
width: 100px;
}
.name {
font-size: 14px;
color: #878b92;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
width: 100px;
}
}
.itemri {
display: flex; display: flex;
flex-direction: column; justify-content: space-between;
position: absolute; align-items: center;
right: 16px; .boxs_left {
display: flex;
align-items: center;
.script {
display: flex;
justify-content: center;
align-items: center;
width: 56px;
height: 24px;
background: #ffb64e;
border-radius: 6px;
margin-right: 12px;
white-space: nowrap;
}
.imgIcon {
width: 16px;
height: 16px;
background-image: url(@/assets/images/leveladd/edit1.png);
background-size: 100% 100%;
} }
} }
.bgcactive { .boxs_right {
.imgIcon {
width: 16px;
height: 16px;
background-image: url(@/assets/images/leveladd/delete.png);
background-size: 100% 100%;
}
}
}
.items2 {
.nname {
width: 140px;
// overflow: hidden;
// text-overflow: ellipsis;
// white-space: nowrap;
font-weight: bold;
overflow: hidden;
text-overflow: ellipsis;
-webkit-line-clamp: 2;
display: -webkit-box;
-webkit-box-orient: vertical;
}
}
}
.active {
opacity: 1; opacity: 1;
// transition: all 0.5s; // transition: all 0.5s;
} }
@@ -2476,8 +2701,40 @@ export default {
display: flex; display: flex;
align-items: center; align-items: center;
.select { .select {
margin-right: 50px; display: flex;
// margin-bottom: 20px; align-items: center;
white-space: nowrap;
margin-right: 56px;
.inputbox {
display: flex;
align-items: center;
border: 1px solid #c7cbd2;
width: 238px;
height: 40px;
border-radius: 8px;
input {
border: none;
outline: none;
}
.bottonbox {
width: 100px;
height: 40px;
background: #409eff;
border-radius: 8px;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
flex-shrink: 0;
.btnText {
font-size: 14px;
font-weight: 400;
color: #ffffff;
line-height: 36px;
margin-left: 5px;
}
}
}
} }
.line { .line {
height: 60px; height: 60px;
@@ -2877,5 +3134,51 @@ export default {
margin-left: 10px; margin-left: 10px;
} }
} }
.footbtn {
width: 100%;
height: 80px;
margin-top: 16px;
// flex: 1;
background-color: #fff;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.07);
display: flex;
justify-content: end;
.btnbox {
display: flex;
margin-right: 36px;
height: 80px;
.btn {
padding: 0px 26px 0px 26px;
height: 38px;
border-radius: 8px;
border: 1px solid rgba(64, 158, 255, 1);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
margin: 21px 0px 19px 14px;
cursor: pointer;
white-space: nowrap;
.btnText {
font-size: 14px;
font-weight: 400;
line-height: 36px;
margin-left: 5px;
}
}
.btn1 {
background-color: #409eff;
.btnText {
color: #ffffff;
}
}
.btn2 {
background-color: #ffffff;
.btnText {
color: #409eff;
}
}
}
}
} }
</style> </style>

View File

@@ -2034,7 +2034,7 @@ export default {
sourceBelong: null, //资源归属 sourceBelong: null, //资源归属
remark: null, //项目说明 remark: null, //项目说明
level: null, //项目级别 level: null, //项目级别
systemId: null, //培训体系 systemId: null, //培训分类
picUrl: null, picUrl: null,
parentId: null, parentId: null,
}); });
@@ -2413,79 +2413,17 @@ export default {
}; };
//学员管理列表操作 //学员管理列表操作
const studentData = () => { // const studentData = () => {
let arr = state.tabledata; // let arr = state.tabledata;
console.log(arr, "学员管理"); // console.log(arr, "学员管理");
arr.map((value) => { // arr.map((value) => {
value.operation = ( // value.operation = (
<div
style={{
display: "flex",
alignItems: "center",
justifyContent: "center",
}}
>
<div
class="studentopea1"
onClick={() => {
if (value.excellent === false) {
state.canclestu = true;
console.log("youxiu", value.studentId);
state.changeGoods.push(value.studentId);
} else if (value.excellent === true) {
state.canclestu1 = true;
console.log("youxiu", value.studentId);
state.changeGoods.push(value.studentId);
}
}}
>
{value.excellent ? "取消优秀" : "优秀学员"}
</div>
<div // );
class="studentopea2" // });
onClick={() => { // state.tabledata = arr;
state.Seevisible = true; // };
console.log(value.studentId, "点击了查看"); // studentData();
state.checkStuId = value.studentId;
}}
>
查看
</div>
<div class="studentSelect">
<a-select
style="width: 50px"
value="更多"
// options={state.projectNameList}
dropdownClassName="tabledropdown"
>
<a-select-option value="换组" label="换组">
<div
onClick={() => {
state.Changevisible = true;
}}
>
换组
</div>
</a-select-option>
<a-select-option value="删除" label="删除">
<div
onClick={() => {
console.log("点击了111", value.studentId);
showDeleteOne(value.studentId);
}}
>
删除
</div>
</a-select-option>
</a-select>
</div>
</div>
);
});
state.tabledata = arr;
};
studentData();
const studentColumns = () => { const studentColumns = () => {
const tablecolumns = [ const tablecolumns = [
{ {
@@ -2592,6 +2530,75 @@ export default {
// width: 60, // width: 60,
align: "center", align: "center",
className: "h", className: "h",
scopedSlots: { customRender: "action" }, //引入的插槽
customRender: (text) => {
// console.log(text);
return (
<div
style={{
display: "flex",
alignItems: "center",
justifyContent: "center",
}}
>
<div
class="studentopea1"
onClick={() => {
if (text.record.excellent === false) {
state.canclestu = true;
console.log("youxiu", text.record.studentId);
state.changeGoods.push(text.record.studentId);
} else if (text.record.excellent === true) {
state.canclestu1 = true;
console.log("youxiu", text.record.studentId);
state.changeGoods.push(text.record.studentId);
}
}}
>
{text.record.excellent ? "取消优秀" : "优秀学员"}
</div>
<div
class="studentopea2"
onClick={() => {
state.Seevisible = true;
console.log(text.record.studentId, "点击了查看");
state.checkStuId = text.record.studentId;
}}
>
查看
</div>
<div class="studentSelect">
<a-select
style="width: 50px"
value="更多"
// options={state.projectNameList}
dropdownClassName="tabledropdown"
>
<a-select-option value="换组" label="换组">
<div
onClick={() => {
state.Changevisible = true;
}}
>
换组
</div>
</a-select-option>
<a-select-option value="删除" label="删除">
<div
onClick={() => {
// console.log("点击了111", text);
showDeleteOne(text.record.studentId);
}}
>
删除
</div>
</a-select-option>
</a-select>
</div>
</div>
)}
}, },
]; ];
return tablecolumns; return tablecolumns;
@@ -2860,7 +2867,7 @@ export default {
if (leng > 0) { if (leng > 0) {
let arr = res.data.data.rows; let arr = res.data.data.rows;
getTableDataList(arr); getTableDataList(arr);
studentData(); // studentData();
} }
}); });
}; };
@@ -3136,7 +3143,7 @@ export default {
createG, createG,
resetGroupName, resetGroupName,
searchGroup, searchGroup,
studentData, // studentData,
cancelyou, cancelyou,
cancelcanyou, cancelcanyou,
changePaginationStu, changePaginationStu,