Files
fe-manage/src/views/learningpath/LevelAddDetail.vue
2022-11-01 11:27:14 +08:00

2337 lines
65 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div class="leveladddetail">
<div class="left clearfix">
<div class="leftmain">
<div class="tit" style="margin-left: 18px">关卡</div>
<div class="btn btn3" style="margin-left: 19px">
<div class="search"></div>
<div class="btnText" @click="showModal">添加关卡</div>
</div>
<div class="maincon" style="background-color: #fff">
<!-- <div
class="items"
:class="{ active: isActive == true }"
@click="changebgc"
v-for="item in level"
:key="item.id"
> -->
<div
class="items"
:class="isactive == index && isActive == true ? 'active' : ''"
@click="changebgc(index)"
v-for="(item, index) in level"
:key="item.id"
>
<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 class="itemle">
<div class="tit">{{ item.tit }}</div>
<div class="name">{{ item.name }}</div>
</div> -->
</div>
</div>
</div>
</div>
<a-modal
v-model:visible="modal"
centered="true"
:footer="null"
:closable="clos"
wrapClassName="AddLevell"
>
<div class="header">
<div class="headmain">
<div class="add">添加关卡</div>
<div class="img" style="cursor: pointer" @click="closeModal"></div>
</div>
</div>
<div class="main">
<div class="inma">
<div class="name">
<div class="fir">关卡名称</div>
<div class="input">
<a-input
style="width: 100%"
v-model:value="value1"
:maxlength="20"
placeholder="请输入关卡名称"
/>
</div>
<div class="co">{{ value1.length }}/20</div>
</div>
<div class="name">
<div class="fir">关卡说明</div>
<div class="input">
<a-textarea
style="width: 100%"
v-model:value="value2"
:maxlength="100"
placeholder="请输入关卡说明"
:rows="5"
/>
</div>
<div class="co1">{{ value2.length }}/100</div>
</div>
<div class="btn">
<button class="btn1" @click="closeModal">取消</button>
<button class="btn2" @click="editChapter">确定</button>
</div>
</div>
</div>
</a-modal>
<div class="right" :style="{ display: gqxy_hs ? 'block' : 'none' }">
<div class="addhead">
<div class="filt">
<div class="le">
<div class="leftimg">
<img class="img" src="../../assets/px.jpg" />
</div>
<div class="imgfor">
<div class="forz">产品经理进阶路径</div>
<div class="fort">创建时间2022-07-21 00:00</div>
</div>
</div>
<div class="rightt">
<div class="select">
<span>学习模式</span>
<div class="inputbox">
<input type="text" placeholder="按学习时间解锁" />
<div class="bottonbox"><div class="btnText">切换模式</div></div>
</div>
</div>
<div class="line"></div>
<router-link to="/leveladd">
<div style="display: flex">
<img class="img2" src="../../assets/images/leveladd/back.png" />
<div class="return">返回</div>
</div>
</router-link>
</div>
</div>
</div>
<div class="mid">
<div class="item">
<div class="itcon">
<div class="img">
<img src="../../assets/images/leveladd/zai.png" />
</div>
<div class="text">在线</div>
</div>
<div class="lin"></div>
</div>
<div class="item">
<div class="itcon">
<div class="img">
<img src="../../assets/images/leveladd/mian.png" />
</div>
<div class="text">面授</div>
</div>
<div class="lin"></div>
</div>
<div class="item">
<div class="itcon">
<div class="img">
<img src="../../assets/images/leveladd/an.png" />
</div>
<div class="text">案例</div>
</div>
<div class="lin"></div>
</div>
<div class="item">
<div class="itcon">
<div class="img">
<img src="../../assets/images/leveladd/zuo.png" />
</div>
<div class="text">作业</div>
</div>
<div class="lin"></div>
</div>
<div class="item">
<div class="itcon">
<div class="img">
<img src="../../assets/images/leveladd/kao.png" />
</div>
<div class="text">考试</div>
</div>
<div class="lin"></div>
</div>
<div class="item">
<div class="itcon">
<div class="img">
<img src="../../assets/images/leveladd/zhi.png" />
</div>
<div class="text">直播</div>
</div>
<div class="lin"></div>
</div>
<div class="item">
<div class="itcon">
<div class="img">
<img src="../../assets/images/leveladd/wai.png" />
</div>
<div class="text">外链</div>
</div>
<div class="lin"></div>
</div>
<div class="item">
<div class="itcon">
<div class="img">
<img src="../../assets/images/leveladd/tao.png" />
</div>
<div class="text">讨论</div>
</div>
<div class="lin"></div>
</div>
<div class="item">
<div class="itcon">
<div class="img">
<img src="../../assets/images/leveladd/huo.png" />
</div>
<div class="text">活动</div>
</div>
<div class="lin"></div>
</div>
<div class="item">
<div class="itcon">
<div class="img">
<img src="../../assets/images/leveladd/ce.png" />
</div>
<div class="text">测评</div>
</div>
<div class="lin"></div>
</div>
<div class="item">
<div class="itcon">
<div class="img">
<img src="../../assets/images/leveladd/diao.png" />
</div>
<div class="text">评估</div>
</div>
<div class="lin"></div>
</div>
<div class="item">
<div class="itcon">
<div class="img">
<img src="../../assets/images/leveladd/tou.png" />
</div>
<div class="text">投票</div>
</div>
<div class="lin"></div>
</div>
<div class="item">
<div class="itcon">
<div class="img">
<img
src="../../assets/images/leveladd/xiang.png"
@click="showDrawer"
/>
</div>
<div class="text">项目</div>
</div>
</div>
</div>
<div class="boom">
<div class="boomcen">
<div class="title">
<div class="tit_left">
<span>任务列表</span>
</div>
<div class="tit_right">
<div class="btn btn1">
<div class="btnText">移动到任务阶段</div>
</div>
<div class="btn btn2">
<div class="imgIcon"></div>
<div class="btnText" @click="showDeleteALLModal">批量删除</div>
</div>
</div>
</div>
<div class="tableBox">
<a-table
style="border: 1px solid #f2f6fe"
:columns="tableDataFunc()"
:data-source="tableData"
:loading="tableDataTotal === -1 ? true : false"
expandRowByClick="true"
@expand="expandTable"
:pagination="false"
:row-selection="{
columnWidth: 30,
selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
}"
/>
</div>
<!-- 无数据样式 -->
<div class="notable" :style="{ display: stm_hs ? 'block' : 'none' }">
<div class="notablebox">
<div class="boxbody">
<div class="boximg"></div>
<div class="boxtitle">
<span style="color: #ffb64e; font-size: 20px">无任务</span>
</div>
<div class="boxtitle2">
<span style="color: #878b92">请点击上方创建任务</span>
</div>
</div>
<div class="smallleft"></div>
<div class="smallright"></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" @click="gqxy_hShow">
<div class="btnText">下一步</div>
</div>
</div>
</div>
<div class="draw" style="position: relative">
<a-drawer
v-model:visible="visible"
class="drawerStyle ProjectDrawer"
title="关联项目"
placement="right"
width="80%"
@after-visible-change="afterVisibleChange"
>
<div class="drawerMain">
<div class="header">
<div class="headerTitle">关联项目</div>
<img
style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png"
@click="closeDrawer"
/>
</div>
<div class="drawerbox">
<a-table
:columns="drawertableColumns()"
:data-source="drawertableData"
:loading="tableDataTotal === -1 ? true : false"
:scroll="{ x: 700 }"
@expand="expandTable"
:pagination="false"
>
</a-table>
</div>
<div class="btnn">
<button @click="showDrawer" class="btn1">取消</button>
<button @click="showDrawer" class="btn2">确定</button>
</div>
</div>
</a-drawer>
</div>
</div>
<div class="right" :style="{ display: gqxy_hs ? 'none' : 'block' }">
<div class="addhead">
<div class="filt">
<div class="le">
<div class="leftimg">
<img class="img" src="../../assets/px.jpg" />
</div>
<div class="imgfor">
<div class="forz">产品经理进阶路径</div>
<div class="fort">创建时间2022-07-21 00:00</div>
</div>
</div>
<div class="rightt">
<div class="select">
<span>学习模式</span>
<div class="inputbox">
<input type="text" placeholder="按学习时间解锁" />
<div class="bottonbox"><div class="btnText">切换模式</div></div>
</div>
</div>
<div class="line"></div>
<router-link to="/leveladd">
<div style="display: flex">
<img class="img2" src="../../assets/images/leveladd/back.png" />
<div class="return">返回</div>
</div>
</router-link>
</div>
</div>
</div>
<div class="boom">
<div class="boomcen">
<div class="xwid">
<div class="xin">
<div class="xheadb">
<button class="addx" @click="showAddStu">添加学员</button>
<!-- 点击抽屉组件在LevelAdd此处没添加showAddStushowImpStu -->
<button class="addd" @click="showImpStu">导入学员</button>
<button class="addd" @click="showDeleteALLModal">
批量删除
</button>
</div>
<!-- <div class="talk">
<img class="im" src="../../assets/images/leveladd/gan.png" />
<div class="xu">
<span class="yi">已选择</span>
<div style="width: 5px; display: inline-block"></div>
<span class="th">3</span>
<div style="width: 5px; display: inline-block"></div>
<span class="yi"></span>
<span class="zon">列表选项总数</span>
<span class="yi">5</span>
<span class="yi"></span>
</div>
</div> -->
<div class="tablebox1" style="margin-top: 20px">
<a-table
style="border: 1px solid #f2f6fe"
:columns="tableDataFunc2()"
:data-source="tableData2"
:loading="tableDataTotal === -1 ? true : false"
expandRowByClick="true"
@expand="expandTable"
:pagination="false"
:row-selection="{
columnWidth: 30,
selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
}"
/>
<!-- <div class="pa">
<a-pagination
showSizeChanger="true"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize"
:current="currentPage"
:total="tableDataTotal"
class="pagination"
/>
</div> -->
<!-- 无数据样式 -->
<div
class="notable"
:style="{ display: stm_hs ? 'block' : 'none' }"
>
<div class="notablebox">
<div class="boxbody">
<div class="boximg"></div>
<div class="boxtitle">
<span style="color: #ffb64e; font-size: 20px"
>无学员</span
>
</div>
<div class="boxtitle2">
<span style="color: #878b92">请添加学员或导入学员</span>
</div>
</div>
<div class="smallleft"></div>
<div class="smallright"></div>
</div>
</div>
<!-- 无数据样式 -->
</div>
</div>
<div class="pad"></div>
</div>
</div>
</div>
<div class="footbtn">
<div class="btnbox">
<div class="btn btn1" @click="gqxy_hShow">
<div class="btnText">上一步</div>
</div>
<div class="btn btn2">
<div class="btnText">保存</div>
</div>
</div>
</div>
</div>
<!-- 添加学员抽屉 -->
<add-stu v-model:AddSvisible="AddSvisible" />
<!-- 导入学员抽屉 -->
<imp-stu v-model:AddImpStuvisible="AddImpStuvisible" />
<!-- 批量删除学员弹窗 -->
<a-modal
v-model:visible="deleteAll"
:footer="null"
:closable="closeDeleteAll"
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="delete_exit"></div>
</div>
<div class="body">
<span>请确认是否批量删除学员</span>
</div>
<div class="del_btnbox">
<div class="del_btn btn1">
<div class="btnText" @click="delete_exit">取消</div>
</div>
<div class="del_btn btn2">
<div class="btnText" @click="delete_exit">确定</div>
</div>
</div>
</div>
</div>
</a-modal>
</div>
</template>
<script>
import { reactive, toRefs, onMounted, onUnmounted } from "vue";
import AddStu from "../../components/drawers/AddLevelAddStu";
import ImpStu from "../../components/drawers/AddLevelImportStu";
import * as api from "../../api/indexLevel";
import { message } from "ant-design-vue";
export default {
name: "LevelAddDetail",
components: {
AddStu,
ImpStu,
},
setup() {
const state = reactive({
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: "中级产品经理",
},
],
tableData: [
{
key: 1,
lei: "在线",
// state: "已发布",
creater: "管理者课程",
// pubtime: "2022-07-20 14:00:03",
cretime: "60分钟",
haspub: false,
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: [
{
key: 1,
name: "张三",
com: "产研部",
gang: "产品经理",
cur: "关卡2",
jin: "2/10",
time: "2022-07-15 14:00",
},
{
key: 2,
name: "张三",
com: "产研部",
gang: "产品经理",
cur: "关卡2",
jin: "2/10",
time: "2022-07-15 14:00",
},
{
key: 3,
name: "张三",
com: "产研部",
gang: "产品经理",
cur: "关卡2",
jin: "2/10",
time: "2022-07-15 14:00",
},
{
key: 4,
name: "张三",
com: "产研部",
gang: "产品经理",
cur: "关卡1",
jin: "2/10",
time: "2022-07-15 14:00",
},
{
key: 5,
name: "张三",
com: "产研部",
gang: "产品经理",
cur: "关卡1",
jin: "2/10",
time: "2022-07-15 14:00",
},
{
key: 6,
name: "张三",
com: "产研部",
gang: "产品经理",
cur: "关卡2",
jin: "2/10",
time: "2022-07-15 14:00",
},
{
key: 7,
name: "张三",
com: "产研部",
gang: "产品经理",
cur: "关卡2",
jin: "2/10",
time: "2022-07-15 14:00",
},
{
key: 8,
name: "张三",
com: "产研部",
gang: "产品经理",
cur: "关卡2",
jin: "2/10",
time: "2022-07-15 14:00",
},
],
drawertableData: [
{
key: 1,
projectName: "管理者进阶",
manager: "黄华 刘俊",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
children: [
{
key: "1-1",
projectName: "管理者进阶-腾飞班",
manager: "黄华 刘俊",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
children: [
{
key: "1-1-1",
projectName: "管理者进阶-腾飞班K1",
manager: "黄华 刘俊",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
],
},
],
},
{
key: 2,
projectName: "管理者进阶",
manager: "黄华 刘俊",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
children: [
{
key: "2-1",
projectName: "管理者进阶-腾飞班",
manager: "黄华 刘俊",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
children: [
{
key: "2-1-1",
projectName: "管理者进阶-腾飞班K1",
manager: "黄华 刘俊",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
],
},
],
},
{
key: 3,
projectName: "管理者进阶-腾飞班K1",
manager: "黄华 刘俊",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
{
key: 4,
projectName: "管理者进阶-腾飞班K1",
manager: "黄华 刘俊",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
{
key: 5,
projectName: "管理者进阶-腾飞班K1",
manager: "黄华 刘俊",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
{
key: 6,
projectName: "管理者进阶-腾飞班K1",
manager: "黄华 刘俊",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
{
key: 7,
projectName: "管理者进阶-腾飞班K1",
manager: "黄华 刘俊",
creater: "毛继禹",
time: "2022-07-20 14:00:03",
},
],
currentPage: 1,
tableDataTotal: 100,
pageSize: 10,
visible: false,
AddSvisible: false, //添加学员抽屉
AddImpStuvisible: false, //导入学员抽屉
modal: false,
clos: false,
stm_hs: false,
deleteAll: false,
closeDeleteAll: false,
value1: "",
value2: "",
selectedRowKeys: [],
gqxy_hs: true,
isactive: -1,
isActive: false,
projectChecked: null, //项目单选框
});
//新建或编辑关卡
const editChapter = () => {
if(!state.value1) return message.warning("请输入关卡名称");
let obj = {
name: state.value1,
remark: state.value2,
routerId: 0,
};
api
.editChapter(obj)
.then((res) => {
setTimeout(() => {
console.log("创建成功", res);
message.success("创建成功");
state.value1 = "";
state.value2 = "";
state.modal = false;
// state.createLoading = false;
//state.currentPage = 1;
// getLearnPath();
}, 1000);
})
.catch((err) => {
console.log("创建失败", err);
});
}
const showDrawer = () => {
state.visible = true;
};
const closeDrawer = () => {
state.visible = false;
};
const showModal = () => {
state.modal = true;
};
const closeModal = () => {
state.modal = false;
state.value1 = "";
state.value2 = "";
};
const afterVisibleChange = (bool) => {
console.log("visible", bool);
};
const showAddStu = () => {
state.AddSvisible = true;
};
const showImpStu = () => {
state.AddImpStuvisible = true;
};
const tableDataFunc = () => {
const columns = [
{
title: "类型",
dataIndex: "state",
// width: "30%",
key: "state",
width: 60,
align: "left",
className: "classify",
scopedSlots: { customRender: "action" }, //引入的插槽
customRender: (text) => {
// console.log(text.record.checked1);
return (
<div class="racona">
<div
class="img"
style={{ cursor: "pointer" }}
onClick={() => {
console.log("点击了");
}}
></div>
<span> {text.record.lei}</span>
{/**
<div class="img"></div>
<a-checkbox class="ch" checked={text.record.checkedd}>
{text.record.lei}
</a-checkbox>
*/}
</div>
);
},
},
{
title: "任务名称",
dataIndex: "creater",
// width: "30%",
key: "creater",
width: 200,
align: "center",
className: "h",
},
{
title: "必修/选修",
dataIndex: "pubtime",
key: "pubtime",
// width: 100,
align: "center",
className: "h",
scopedSlots: { customRender: "action" }, //引入的插槽
customRender: (text) => {
// console.log(text.record.checked1);
return (
<div class="opat">
<div class="opacationt clearfix">
<a-switch
style="margin-left:-50px;margin-top:3px"
checked={text.record.checked1}
size="small"
active-color="red"
onClick={() => {
console.log("点击了");
text.record.checked1 = !text.record.checked1;
}}
/>
<div class="showt clearfix">
<div
class="bi"
style={
text.record.checked1 ? "z-index:999" : "z-index:998"
}
>
必修
</div>
<div class="xuan">选修</div>
</div>
</div>
</div>
);
},
},
{
title: "时长",
dataIndex: "cretime",
key: "cretime",
// width: 100,
align: "center",
className: "h",
},
{
title: "操作",
className: "h",
dataIndex: "opacation",
key: "opacation",
// width: 100,
align: "center",
scopedSlots: { customRender: "action" }, //引入的插槽
customRender: () => {
return (
<div class="opa">
<div class="opacation">
<span style="color:#4EA6FF;margin-right:25px;cursor:pointer">
编辑
</span>
<span style="color:#4EA6FF;cursor:pointer">删除</span>
</div>
</div>
);
},
},
];
return columns;
};
const tableDataFunc2 = () => {
const columns = [
{
title: "姓名",
dataIndex: "name",
// width: "30%",
key: "name",
width: 60,
align: "left",
ellipsis: true,
className: "classify",
scopedSlots: { customRender: "action" }, //引入的插槽
customRender: (text) => {
return (
<div class="racona">
<span> {text.record.name}</span>
{/**
<div class="img"></div>
<a-checkbox class="ch" checked={text.record.checkedd}>
{text.record.lei}
</a-checkbox>
*/}
</div>
);
},
},
{
title: "部门",
dataIndex: "com",
// width: "30%",
key: "com",
width: 110,
align: "center",
className: "h",
},
{
title: "岗位",
dataIndex: "gang",
key: "gang",
width: 110,
align: "center",
className: "h",
},
{
title: "当前关卡",
dataIndex: "cur",
key: "cur",
width: 110,
align: "center",
className: "h",
},
{
title: "进度",
dataIndex: "jin",
key: "jin",
width: 110,
align: "center",
className: "h",
},
{
title: "开始时间",
dataIndex: "time",
key: "time",
width: 120,
align: "center",
className: "h",
},
{
title: "操作",
className: "h",
dataIndex: "opacation",
key: "opacation",
width: 140,
align: "center",
scopedSlots: { customRender: "action" }, //引入的插槽
customRender: () => {
return (
<div class="opa">
<div class="opacation">
<span style="color:#4EA6FF;cursor:pointer">删除</span>
</div>
</div>
);
},
},
];
return columns;
};
const onSelectChange = (selectedRowKeys) => {
console.log("selectedRowKeys changed: ", selectedRowKeys);
state.selectedRowKeys = selectedRowKeys;
};
const drawertableColumns = () => {
// let arr = state.drawertableData;
// function traverse(arr) {
// for (var a in arr) {
// // console.log(arr[a]);
// if (arr[a].children) {
// traverse(arr[a].children); //递归遍历
// } else {
// console.log(arr[a].children); //如果是值就显示
// }
// }
// }
// traverse(arr);
const drawercolumns = [
{
title: "项目名称",
dataIndex: "projectName",
key: "projectName",
width: 200,
// align: "center",
ellipsis: true,
// scopedSlots: { customRender: "action" }, //引入的插槽
customRender: (text) => {
// console.log(text.record.key);
if (!text.record.children) {
return (
<div style={{ display: "flex" }}>
<a-checkbox
checked={
state.projectChecked === text.record.key ? true : false
}
value={text.record.key}
onChange={() => {
// console.log("改变了", text.record.key);
if (state.projectChecked === text.record.key) {
state.projectChecked = null;
} else {
state.projectChecked = text.record.key;
}
}}
></a-checkbox>
<span style="margin-left: 5px">{text.text}</span>
</div>
);
} else {
return <span>{text.text}</span>;
}
},
},
{
title: "项目经理",
dataIndex: "manager",
key: "manager",
width: 100,
align: "center",
},
{
title: "创建人",
dataIndex: "creater",
// width: "30%",
key: "creater",
width: 100,
align: "center",
},
{
title: "创建时间",
dataIndex: "time",
key: "time",
width: 180,
align: "center",
},
];
return drawercolumns;
};
// const getClientHeight = () => {
// state.rightheight =
// document.getElementsByClassName("addhead")[0].offsetHeight +
// document.getElementsByClassName("mid")[0].offsetHeight +
// document.getElementsByClassName("boom")[0].offsetHeight +
// 40 +
// "px";
// };
onMounted(() => {
document.getElementsByTagName("main")[0].style.background =
"rgb(245, 247, 250,1)";
document.getElementsByTagName("main")[0].style.boxShadow = "none";
});
onUnmounted(() => {
document.getElementsByTagName("main")[0].style.background = "#ffffff";
document.getElementsByTagName("main")[0].style.boxShadow =
"0px 1px 35px 0px rgba(118, 136, 166, 0.07)";
});
const changebgc = (index) => {
state.isactive = index;
state.isActive = !state.isActive;
};
const gqxy_hShow = () => {
state.gqxy_hs = !state.gqxy_hs;
};
const showDeleteALLModal = () => {
state.deleteAll = true;
};
const delete_exit = () => {
state.deleteAll = false;
};
return {
...toRefs(state),
tableDataFunc,
tableDataFunc2,
showDrawer,
closeDrawer,
showModal,
closeModal,
afterVisibleChange,
showAddStu,
showImpStu,
// drawercolumns,
onSelectChange,
changebgc,
gqxy_hShow,
showDeleteALLModal,
delete_exit,
drawertableColumns,
editChapter,
};
},
};
</script>
<style lang="scss">
.clearfix:after,
.clearfix:before {
content: " ";
display: block;
clear: both;
}
.AddLevell {
.ant-modal {
width: 624px !important;
height: 388px !important;
.ant-modal-content {
width: 624px !important;
height: 388px !important;
border-radius: 4px !important;
.ant-modal-body {
// background-color: blue;
width: 100% !important;
height: 100% !important;
padding: 0 !important;
.header {
width: 624px;
height: 68px;
background: linear-gradient(
180deg,
rgba(78, 166, 255, 0.2) 0%,
rgba(78, 166, 255, 0) 100%
);
display: flex;
justify-content: center;
.headmain {
width: 90%;
height: 100%;
display: flex;
align-items: center;
justify-content: space-between;
.add {
font-size: 16px;
font-weight: 600;
color: #333333;
}
.img {
width: 20px;
height: 20px;
background-image: url(../../assets/images/basicinfo/close22.png);
background-size: 100% 100%;
}
}
}
.main {
width: 100%;
height: calc(100% - 68px);
// background-color: #bfa;
display: flex;
justify-content: center;
.inma {
width: 75%;
height: 100%;
// background-color: lightblue;
.name {
display: flex;
position: relative;
margin-top: 30px;
.fir {
font-size: 14px;
font-weight: 400;
color: rgba(0, 0, 0, 0.85);
white-space: nowrap;
margin-top: 3px;
}
.input {
width: 100%;
.ant-input {
border-radius: 8px;
border: 1px solid #c7cbd2;
&::placeholder {
font-size: 12px;
position: absolute;
top: 5px;
}
}
.ant-textarea {
border-radius: 8px;
border: 1px solid #c7cbd2;
&::placeholder {
font-size: 12px;
position: absolute;
top: 5px;
}
}
}
.co {
position: absolute;
right: 10px;
top: 4px;
font-size: 14px;
font-weight: 400;
color: #c7cbd2;
}
.co1 {
position: absolute;
right: 10px;
bottom: 8px;
font-size: 14px;
font-weight: 400;
color: #c7cbd2;
}
}
.btn {
margin-top: 40px;
width: 100%;
display: flex;
justify-content: center;
.btn1 {
width: 100px;
height: 40px;
border-radius: 4px;
border: 1px solid #409EFF;
font-size: 14px;
color: #409EFF;
cursor: pointer;
background: #ffffff;
margin-right: 20px;
}
.btn2 {
width: 100px;
height: 40px;
border-radius: 4px;
font-size: 14px;
color: #fff;
cursor: pointer;
border: 0;
background: #409EFF;
}
}
}
}
}
}
}
}
.ProjectDrawer {
// .ant-drawer-content-wrapper {
// .ant-drawer-header {
// display: none !important;
// }
// .ant-drawer-body {
// padding: 0;
// }
// }
.drawerMain {
min-width: 600px;
margin: 0px 32px 0px 32px;
overflow-x: scroll;
display: flex;
flex-direction: column;
.header {
height: 73px;
border-bottom: 1px solid #e8e8e8;
display: flex;
justify-content: space-between;
align-items: center;
// background-color: red;
margin-bottom: 20px;
flex-shrink: 0;
.headerTitle {
font-size: 18px;
font-weight: 600;
color: #333333;
line-height: 25px;
// margin-left: 24px;
}
}
.drawerbox {
margin: 20px 38px 30px;
th {
background-color: #eff4fc !important;
}
.ant-table-tbody
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
> td {
background: #f6f9fd;
}
}
.btnn {
height: 72px;
width: 100%;
position: absolute;
bottom: 0;
left: 0;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
background-color: #ffffff;
.btn1 {
width: 100px;
height: 40px;
border: 1px solid #4ea6ff;
border-radius: 8px;
color: #4ea6ff;
background-color: #fff;
cursor: pointer;
}
.btn2 {
cursor: pointer;
width: 100px;
height: 40px;
background: #4ea6ff;
border-radius: 8px;
border: 0;
margin-left: 15px;
color: #fff;
}
}
}
}
.leveladddetail {
width: 100%;
display: flex;
min-width: 933px;
background-color: rgba(245, 247, 250, 1);
.left {
margin-right: 20px;
width: 208px;
background: #ffffff;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);
display: flex;
justify-content: center;
.leftmain {
// width: 86%;
margin-top: 20px;
.tit {
font-size: 18px;
color: #363636;
}
.btn {
margin-top: 20px;
height: 38px;
background: #fff6e8;
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
cursor: pointer;
.search {
background-size: 100%;
}
.btnText {
font-size: 14px;
font-weight: 400;
color: #ffb64e;
margin-top: 4px;
margin-left: 5px;
}
}
.btn3 {
width: 171px;
margin-right: 0px;
.search {
width: 17px;
height: 18px;
background-image: url("../../assets/images/leveladd/add.png");
background-size: 100% 100%;
}
}
.maincon {
margin-top: 17px;
width: 208px;
display: flex;
flex-direction: column;
align-items: center;
.items {
width: 171px;
// height: 83px;
background: rgba(255, 182, 78, 0.1);
border: 1px solid #ffb64e;
opacity: 0.45;
border-radius: 8px;
margin-bottom: 16px;
align-items: center;
padding: 16px;
opacity: 0.5;
cursor: pointer;
.items1 {
margin-bottom: 12px;
display: flex;
justify-content: space-between;
align-items: center;
.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: 14px;
height: 14px;
background-image: url(@/assets/images/leveladd/edit.png);
background-size: 100% 100%;
}
}
.boxs_right {
.imgIcon {
width: 14px;
height: 14px;
background-image: url(@/assets/images/leveladd/z1.png);
background-size: 100% 100%;
}
}
}
.items2 {
.nname {
width: 100px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-weight: bold;
}
}
}
.active {
opacity: 1;
transition: all 0.5s;
}
}
}
}
.right {
flex: 1;
// background-color: #fff;
display: flex;
flex-direction: column;
.addhead {
width: 100%;
// min-width: 500px;
// height: 130px;
// flex: 1;
background-color: #fff;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.07);
display: flex;
align-items: center;
position: relative;
.filt {
margin: 16px 30px 16px 22px;
display: flex;
justify-content: space-between;
width: 100%;
align-items: center;
flex-wrap: wrap;
.le {
display: flex;
align-items: center;
// margin-bottom: 10px;
.leftimg {
width: 151px;
height: 100px;
border: 10px solid #e7f2ff;
border-radius: 8px;
margin-left: 20px;
.img {
width: 100%;
height: 100%;
}
}
.imgfor {
margin-left: 32px;
.forz {
color: #363636;
font-size: 16px;
}
.fort {
color: #878b92;
font-size: 14px;
margin-top: 20px;
}
}
}
.rightt {
height: 100%;
display: flex;
align-items: center;
.select {
display: flex;
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 {
height: 60px;
width: 1px;
background-color: #e8effa;
margin-right: 18px;
}
.return {
color: #4ea6ff;
font-size: 14px;
margin-top: 13px;
margin-right: 20px;
white-space: nowrap;
}
}
}
}
.mid {
width: 100%;
// height: 130px;
margin-top: 20px;
background-color: #fff;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.07);
display: flex;
align-items: center;
flex-wrap: wrap;
.item {
height: 115px;
// width: 7.7%;
display: flex;
align-items: center;
.itcon {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100%;
width: 100%;
margin-left: 38px;
margin-right: 38px;
.img {
cursor: pointer;
}
.text {
font-size: 16px;
color: #363636;
margin-top: 5px;
white-space: nowrap;
}
}
.lin {
width: 1px;
height: 60%;
background-color: #e8effa;
}
.no {
display: none;
}
}
}
.boom {
width: 100%;
margin-top: 20px;
flex: 1;
background-color: #fff;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.07);
display: flex;
justify-content: center;
.boomcen {
width: 95%;
// height: 100%;
// background-color: #bfa;
.title {
display: flex;
align-items: center;
justify-content: space-between;
.tit_left {
font-size: 16px;
font-weight: 500;
color: #363636;
line-height: 36px;
margin-top: 30px;
}
.tit_right {
display: flex;
align-items: center;
margin-top: 30px;
.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;
margin-right: 14px;
flex-shrink: 0;
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;
.imgIcon {
width: 16px;
height: 16px;
background-image: url(@/assets/images/projectadd/delete.png);
background-size: 100%;
}
.btnText {
color: #409eff;
}
}
}
}
.tableBox {
margin-top: 21px;
margin-bottom: 20px;
.classify {
margin-left: 10px !important;
padding-left: 9px !important;
}
.ant-checkbox-wrapper {
align-items: center;
margin-top: -2px;
}
.ant-table-selection-column {
padding: 0px !important;
padding-left: 60px !important;
}
.ant-table-thead > tr > th {
background-color: rgba(239, 244, 252, 1);
}
th.h {
background-color: #eff4fc !important;
}
.ant-table-tbody
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
> td {
background: #f6f9fd;
}
}
.xwid {
position: relative;
margin-top: 30px;
display: flex;
margin-bottom: 20px;
.xin {
width: 100%;
.xheadb {
display: flex;
.addx {
width: 130px;
height: 40px;
background: #4ea6ff;
border-radius: 8px;
color: #fff;
border: 0;
cursor: pointer;
margin-right: 20px;
}
.addd {
width: 130px;
height: 40px;
background: #fff;
border-radius: 8px;
border: 1px solid #4ea6ff;
color: #4ea6ff;
cursor: pointer;
margin-right: 20px;
}
.select {
.ant-select {
//
// border: 0 !important;
border-radius: 11px;
.ant-select-selector {
border: 1px solid #4ea6ff !important;
.ant-select-selection-placeholder {
padding-left: 15px;
color: #4ea6ff;
}
}
}
}
}
.talk {
margin-top: 24px;
margin-bottom: 11px;
width: 100%;
height: 50px;
background: #f5faff;
border: 1px solid #4ea6ff;
// opacity: 0.22;
display: flex;
align-items: center;
.im {
width: 14px;
height: 15px;
margin-left: 27px;
margin-top: -3px;
}
.xu {
height: 100%;
line-height: 50px;
margin-left: 13px;
.yi {
color: #4f5156;
font-size: 14px;
}
.zon {
color: #999ba3;
font-size: 14px;
margin-left: 34px;
}
.th {
color: #4ea6ff;
}
}
}
.tableBox {
margin-block-end: 20px;
.classify {
margin-left: 11px !important;
padding-left: 9px !important;
}
.ant-checkbox-wrapper {
align-items: center;
margin-top: -2px;
}
.ant-table-selection-column {
padding: 0px !important;
padding-left: 38px !important;
}
.ant-table-thead > tr > th {
background-color: rgba(239, 244, 252, 1);
}
th.h {
background-color: #eff4fc !important;
}
.ant-table-tbody
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
> td {
background: #f6f9fd;
}
.pa {
left: 0;
width: 100%;
// height: 20px;
// background-color: red;
display: flex;
justify-content: center;
position: absolute;
bottom: 0px;
}
}
.tablebox1 {
margin-bottom: 80px;
.pa {
left: 0;
width: 100%;
// height: 20px;
// background-color: red;
display: flex;
justify-content: center;
position: absolute;
bottom: 0px;
}
}
}
}
.Gcon {
display: flex;
.pad {
height: 100%;
width: 40px;
}
.Gin {
// background-color: #bfa;
margin-top: 30px;
.headone {
// background-color: red;
display: flex;
text-align: center;
.box {
width: 4px;
height: 20px;
background-color: #4ea6ff;
border-radius: 2px;
}
.onetitle {
margin-left: 15px;
color: #333333;
font-size: 14px;
}
.oneedi {
margin-left: 15px;
color: #4ea6ff;
cursor: pointer;
}
.twobtn {
display: flex;
.btnone {
width: 42px;
height: 24px;
border: 1px solid rgba(64, 158, 255, 1);
border-radius: 4px;
color: rgba(64, 158, 255, 1);
margin-left: 20px;
cursor: pointer;
}
.btntwo {
width: 42px;
height: 24px;
border: 1px solid rgba(64, 158, 255, 1);
border-radius: 4px;
color: #ffffff;
margin-left: 20px;
background: #409eff;
cursor: pointer;
}
}
}
.onemain {
margin-top: 20px;
margin-left: 55px;
color: #6f6f6f;
font-size: 14px;
.checkcon {
position: relative;
.in {
position: absolute;
// margin-top: 10px;
left: 0;
top: 3px;
}
.yulan {
// color: yellow;
margin-left: 22px;
// display: inline-block;
}
.yulan2 {
margin-left: 22px;
}
.ant-input-number {
height: 24px;
width: 24px;
margin: 10px;
border-radius: 4px;
border: 1px solid #6d7584;
.ant-input-number-input {
width: 100%;
height: 100%;
font-size: 14px;
padding: 0;
color: #409eff;
text-align: center;
}
}
}
}
.twomain {
margin-left: 20px;
margin-top: 20px;
.ant-switch-checked {
background-color: #5dc988;
}
.info {
margin-left: 10px;
color: #6f6f6f;
font-size: 14px;
// margin-top: 10px;
}
.infor {
margin-left: 38px;
margin-top: 10px;
color: #c7cbd2;
font-size: 14px;
}
.chooseshow {
// background-color: red;
margin-left: 38px;
margin-top: 12px;
.fane {
color: #6f6f6f;
font-size: 14px;
}
}
.choo {
display: none;
}
.btm {
margin-left: 38px;
margin-top: 20px;
.bmo {
color: #6f6f6f;
font-size: 14px;
}
.bmt {
color: #c7cbd2;
font-size: 14px;
margin-top: 3px;
}
.chosecon {
display: flex;
margin-top: 6px;
margin-bottom: 20px;
.chose {
position: relative;
.inl {
position: absolute;
top: 2px;
}
.sh {
margin-left: 23px;
color: #6f6f6f;
}
}
}
}
}
}
}
.notable {
width: 100%;
height: 100%;
.notablebox {
width: 412px;
height: 212px;
background: linear-gradient(180deg, #fef3dd 0%, #fffaf0 100%);
border-radius: 10px;
display: flex;
justify-content: center;
text-align: center;
margin: 77px auto 109px auto;
cursor: pointer;
position: relative;
.smallleft {
position: absolute;
top: 18px;
left: 0px;
width: 8px;
height: 21px;
border-radius: 0px 4px 4px 0px;
background-color: #ffb64e;
}
.smallright {
position: absolute;
bottom: 18px;
right: 0px;
width: 8px;
height: 21px;
border-radius: 4px 0px 0px 4px;
background-color: #ffb64e;
}
.boxbody {
.boximg {
width: 72px;
height: 72px;
margin: 32px auto 20px auto;
background-image: url(@/assets/images/coursewareManage/nostate.png);
background-size: 100% 100%;
}
.boxtitle {
margin-bottom: 4px;
}
}
}
}
}
}
.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 {
.opacationt {
display: flex;
align-items: center;
justify-content: center;
.ant-switch-checked {
background-color: #5dc988;
}
.showt {
// margin-top: 10px;
display: flex;
margin-left: 10px;
height: 23px;
.bi {
// margin-top: 10px;
width: 63px;
height: 23;
background-color: #5dc988;
line-height: 23px;
position: absolute;
z-index: 998;
color: #ffffff;
border-radius: 4px;
}
.xuan {
width: 63px;
height: 23px;
background-color: #f2f6fc;
line-height: 23px;
// display: none;
position: absolute;
z-index: 998;
color: #5dc988;
border-radius: 4px;
}
}
}
}
.racona {
// background-color: #bfa;
display: flex;
align-items: center;
// justify-content: center;
height: 100%;
.img {
// margin-left: -40px;
// margin-top: -2px;
width: 17px;
height: 14px;
background-image: url("../../assets/images/leveladd/z1.png");
position: absolute;
left: -40px;
}
.ch {
margin-left: 10px;
}
}
}
.CopyModal {
.ant-modal {
width: 424px !important;
height: 258px !important;
.ant-modal-content {
width: 424px !important;
height: 258px !important;
.ant-modal-body {
width: 424px !important;
height: 258px !important;
padding: 0 !important;
.delete {
z-index: 999;
width: 424px;
height: 258px;
background: #ffffff;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);
border-radius: 4px;
// position: absolute;
// left: 50%;
// top: 10%;
// transform: translate(-50%, -50%);
.del_header {
position: absolute;
width: calc(100%);
height: 40px;
background: linear-gradient(
rgba(78, 166, 255, 0.2) 0%,
rgba(78, 166, 255, 0) 100%
);
}
.del_main {
width: 100%;
position: relative;
.header {
display: flex;
align-items: center;
padding-top: 20px;
padding-left: 26px;
font-size: 16px;
.icon {
width: 16px;
height: 16px;
margin-right: 10px;
background-image: url(@/assets/images/coursewareManage/QR.png);
background-size: 100% 100%;
}
.close_exit {
position: absolute;
right: 42px;
cursor: pointer;
width: 20px;
height: 20px;
background-image: url(@/assets/images/coursewareManage/close.png);
background-size: 100% 100%;
}
}
.body {
width: 100%;
margin: 34px auto 56px auto;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
// background-color: red;
position: relative;
.back {
position: absolute;
top: 30px;
font-size: 12px;
font-weight: 400;
color: #666666;
}
}
.del_btnbox {
display: flex;
margin: 30px auto;
justify-content: center;
.del_btn {
width: 100px;
height: 40px;
background: rgba(64, 158, 255, 0);
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
cursor: pointer;
.btnText {
font-size: 14px;
font-weight: 400;
line-height: 40px;
}
}
.btn1 {
border: 1px solid rgba(64, 158, 255, 1);
color: #4ea6ff;
margin-right: 14px;
}
.btn2 {
background-color: #4ea6ff;
color: #ffffff;
}
}
}
}
}
}
}
}
</style>