Merge branch 'develop' of ssh://gitlab.dongwu-inc.com:10022/BOE/fe-manage into develop

This commit is contained in:
zhangyc
2022-12-02 17:04:49 +08:00
21 changed files with 1901 additions and 4427 deletions

View File

@@ -58,36 +58,41 @@ export default defineComponent({
const currentRouteName = computed(() => route.name); const currentRouteName = computed(() => route.name);
function init() { function init() {
console.log(store) console.log(store);
initDict('faceclassPic') initDict("faceclassPic");
initDict('faceclassClass') initDict("faceclassClass");
initDict('faceclassScene') initDict("faceclassScene");
initDict('projectLevel') initDict("projectLevel");
initDict('projectSys') initDict("projectSys");
getOrgTree() initDict("pathmapPic");
initDict('projectClass')
initDict('projectPic')
getOrgTree();
} }
async function initDict(key) { async function initDict(key) {
let list = localStorage.getItem(key) let list = localStorage.getItem(key);
if (list) { if (list) {
store.commit('SET_DICT', {key, data:JSON.parse(list)}); store.commit("SET_DICT", { key, data: JSON.parse(list) });
return; return;
} }
list = await getDictList(key) list = await getDictList(key);
localStorage.setItem(key, JSON.stringify(list)); localStorage.setItem(key, JSON.stringify(list));
store.commit('SET_DICT', {key, data:list}); store.commit("SET_DICT", { key, data: list });
} }
const getDictList = (param) => api1.getDict({ const getDictList = (param) =>
api1
.getDict({
pageNo: 1, pageNo: 1,
pageSize: 20, pageSize: 20,
setCode: param setCode: param,
}).then((res) => res.data.data.rows) })
.then((res) => res.data.data.rows);
//获取组织树 //获取组织树
const getOrgTree = () => { const getOrgTree = () => {
const orgtreeList = localStorage.getItem("orgtreeList") const orgtreeList = localStorage.getItem("orgtreeList");
if (orgtreeList) { if (orgtreeList) {
store.commit("getOrgtreeList", JSON.parse(orgtreeList)); store.commit("getOrgtreeList", JSON.parse(orgtreeList));
return; return;
@@ -98,7 +103,8 @@ export default defineComponent({
pageNo: 1, pageNo: 1,
pageSize: 20, pageSize: 20,
}; };
api.getOrgInfo(obj) api
.getOrgInfo(obj)
.then((res) => { .then((res) => {
console.log("组织树获取成功", res); console.log("组织树获取成功", res);
if (res.data.code === 200) { if (res.data.code === 200) {

View File

@@ -6,6 +6,9 @@ export const list = (obj) => http.post('/admin/offcourse/list', obj)
//获取待审核项目列表 //获取待审核项目列表
export const projlist = (obj) => http.post('/admin/project/list', obj) export const projlist = (obj) => http.post('/admin/project/list', obj)
//获取待审核项目列表
export const auditlist = (obj) => http.post('/admin/project/auditlist', obj)
//获取已审核项目列表 //获取已审核项目列表
export const listView = (obj) => http.post('/admin/project/listView', obj) export const listView = (obj) => http.post('/admin/project/listView', obj)

View File

@@ -174,12 +174,12 @@
<span style="color: #999999; margin-left: 8px">分钟</span> <span style="color: #999999; margin-left: 8px">分钟</span>
</div> </div>
</div> </div>
<div class="qdqtbox"> <!-- <div class="qdqtbox">
<div class="qtbtn"> <div class="qtbtn">
<div class="btntext">签退</div> <div class="btntext">签退</div>
</div> </div>
</div> </div> -->
<div class="setbox"> <!-- <div class="setbox">
<div class="timerbox"> <div class="timerbox">
<span>结束前</span> <span>结束前</span>
<a-input-number <a-input-number
@@ -198,7 +198,7 @@
>分钟提前签退则记为早退</span >分钟提前签退则记为早退</span
> >
</div> </div>
</div> </div> -->
</div> </div>
</div> </div>
<div class="main_item"> <div class="main_item">
@@ -209,12 +209,11 @@
<a-radio-group v-model:value="radioV1"> <a-radio-group v-model:value="radioV1">
<a-radio v-model:checked="checked" :value="1" @click="cloradio1" <a-radio v-model:checked="checked" :value="1" @click="cloradio1"
>仅签到 >仅签到
</a-radio </a-radio>
> <!-- <a-radio v-model:checked="checked" :value="2" @click="cloradio1"
<a-radio v-model:checked="checked" :value="2" @click="cloradio1"
>签到签退全部完成 >签到签退全部完成
</a-radio </a-radio
> > -->
</a-radio-group> </a-radio-group>
</div> </div>
</div> </div>
@@ -338,7 +337,7 @@ export default {
state.time = ""; state.time = "";
localStorage.setItem("stageId", props.chooseStageId); localStorage.setItem("stageId", props.chooseStageId);
localStorage.setItem("chapterId", props.isactive); localStorage.setItem("chapterId", props.isactive);
} };
const queryActive = () => { const queryActive = () => {
api api
.getActivity(props.EditActiveId) .getActivity(props.EditActiveId)
@@ -359,8 +358,7 @@ export default {
dayjs(res.data.data.activityEndTime, "YYYY-MM-DD"), dayjs(res.data.data.activityEndTime, "YYYY-MM-DD"),
]; ];
}) })
.catch(() => { .catch(() => {});
});
}; };
const afterVisibleChange = (bool) => { const afterVisibleChange = (bool) => {
if (bool && props.edit) { if (bool && props.edit) {
@@ -424,8 +422,6 @@ export default {
.catch(() => { .catch(() => {
//message.error(`${props.edit ? "编辑" : "新增"}阶段任务失败`); //message.error(`${props.edit ? "编辑" : "新增"}阶段任务失败`);
}); });
} }
}; };
//创建活动 //创建活动

View File

@@ -262,10 +262,10 @@
<span style="color: #999999; margin-left: 8px">分钟</span> <span style="color: #999999; margin-left: 8px">分钟</span>
</div> </div>
</div> </div>
<div class="qdqtbox"> <!-- <div class="qdqtbox">
<div class="qtbtn"><div class="btntext">签退</div></div> <div class="qtbtn"><div class="btntext">签退</div></div>
</div> </div> -->
<div class="setbox"> <!-- <div class="setbox">
<div class="timerbox"> <div class="timerbox">
<span>结束前</span> <span>结束前</span>
<a-input-number <a-input-number
@@ -275,14 +275,16 @@
style=" style="
width: 88px; width: 88px;
height: 32px; height: 32px;
border-radius: 8px;overflow: hidden; " border-radius: 8px;
overflow: hidden;
"
v-model:value="inputV8" v-model:value="inputV8"
></a-input-number> ></a-input-number>
<span style="color: #999999; margin-left: 8px" <span style="color: #999999; margin-left: 8px"
>分钟提前签退则记为早退</span >分钟提前签退则记为早退</span
> >
</div> </div>
</div> </div> -->
</div> </div>
</div> </div>
<div class="main_item"> <div class="main_item">
@@ -292,9 +294,9 @@
<div class="btnbox"> <div class="btnbox">
<a-radio-group v-model:value="radioV1"> <a-radio-group v-model:value="radioV1">
<a-radio :value="1" @click="cloradio1">仅签到</a-radio> <a-radio :value="1" @click="cloradio1">仅签到</a-radio>
<a-radio :value="2" @click="cloradio1" <!-- <a-radio :value="2" @click="cloradio1"
>签到签退全部完成</a-radio >签到签退全部完成</a-radio
> > -->
</a-radio-group> </a-radio-group>
</div> </div>
</div> </div>
@@ -305,7 +307,7 @@
<div class="btnbox"> <div class="btnbox">
<a-checkbox <a-checkbox
v-model:checked="switchC2" v-model:checked="switchC2"
@onclick="(switchC2 = !switchC2)" @onclick="switchC2 = !switchC2"
>学员请假后记为任务完成</a-checkbox >学员请假后记为任务完成</a-checkbox
> >
</div> </div>

View File

@@ -1,21 +1,12 @@
<template> <template>
<a-drawer <a-drawer :visible="addprojvisible" class="drawerStyle addonlineDrawer" width="80%" title="添加在线" placement="right"
:visible="addprojvisible" @after-visible-change="afterVisibleChange">
class="drawerStyle addonlineDrawer"
width="80%"
title="添加在线"
placement="right"
@after-visible-change="afterVisibleChange"
>
<div class="drawerMain"> <div class="drawerMain">
<div class="header"> <div class="header">
<div v-if="edit" class="headerTitle">编辑项目</div> <div v-if="edit" class="headerTitle">编辑项目</div>
<div v-else class="headerTitle">添加项目</div> <div v-else class="headerTitle">添加项目</div>
<img <img style="width: 29px; height: 29px; cursor: pointer" src="../../assets/images/basicinfo/close.png"
style="width: 29px; height: 29px; cursor: pointer" @click="closeDrawer" />
src="../../assets/images/basicinfo/close.png"
@click="closeDrawer"
/>
</div> </div>
<div class="contentMain"> <div class="contentMain">
<div class="main_items"> <div class="main_items">
@@ -23,31 +14,22 @@
<div class="mii_ipt"> <div class="mii_ipt">
<div class="ipt_name">项目名称</div> <div class="ipt_name">项目名称</div>
<div class="fi_input"> <div class="fi_input">
<a-input <a-input v-model:value="inputV1" style="width: 240px; height: 40px; border-radius: 8px"
v-model:value="inputV1" placeholder="请输入项目名称" />
style="width: 240px; height: 40px; border-radius: 8px"
placeholder="请输入项目名称"
/>
</div> </div>
</div> </div>
<div class="mii_ipt"> <div class="mii_ipt">
<div class="ipt_name">项目经理</div> <div class="ipt_name">项目经理</div>
<div class="fi_input"> <div class="fi_input">
<a-input <a-input v-model:value="inputV2" style="width: 240px; height: 40px; border-radius: 8px"
v-model:value="inputV2" placeholder="请输入项目经理" />
style="width: 240px; height: 40px; border-radius: 8px"
placeholder="请输入项目经理"
/>
</div> </div>
</div> </div>
<div class="mii_ipt"> <div class="mii_ipt">
<div class="ipt_name">创建人</div> <div class="ipt_name">创建人</div>
<div class="fi_input"> <div class="fi_input">
<a-input <a-input v-model:value="inputV3" style="width: 240px; height: 40px; border-radius: 8px"
v-model:value="inputV3" placeholder="请输入创建人" />
style="width: 240px; height: 40px; border-radius: 8px"
placeholder="请输入创建人"
/>
</div> </div>
</div> </div>
</div> </div>
@@ -66,47 +48,27 @@
<div class="mntc_left"> <div class="mntc_left">
<div class="notice_icon"></div> <div class="notice_icon"></div>
<div v-if="selectedRows.length == 0"> <div v-if="selectedRows.length == 0">
<span class="title" <span class="title">已选择
>已选择
<span class="data" style="color: #4ea6ff">{{ 0 }}</span> <span class="data" style="color: #4ea6ff">{{ 0 }}</span>
</span </span>
>
</div> </div>
<div v-else> <div v-else>
<div> <div>
<span class="title" <span class="title">已选择
>已选择
<span class="data" style="color: #4ea6ff">{{ <span class="data" style="color: #4ea6ff">{{
selectedRows.length selectedRows.length
}}</span> }}</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
> <span class="title">名称
<span class="title" <span class="data" style="color: #4ea6ff; margin-right: 15px">{{ selectedRows[0].name }}</span>
>名称
<span
class="data"
style="color: #4ea6ff; margin-right: 15px"
>{{ selectedRows[0].name }}</span
>
</span> </span>
<span class="title" <span class="title">项目经理
>项目经理 <span class="data" style="color: #4ea6ff; margin-right: 15px">{{ selectedRows[0].manager }}</span>
<span
class="data"
style="color: #4ea6ff; margin-right: 15px"
>{{ selectedRows[0].manager }}</span
>
</span> </span>
<span class="title" <span class="title">创建人
>创建人 <span class="data" style="color: #4ea6ff; margin-right: 15px">{{ selectedRows[0].creater }}</span>
<span
class="data"
style="color: #4ea6ff; margin-right: 15px"
>{{ selectedRows[0].creater }}</span
>
</span> </span>
<span class="title" <span class="title">创建时间
>创建时间
<span class="data" style="color: #4ea6ff">{{ <span class="data" style="color: #4ea6ff">{{
selectedRows[0].time selectedRows[0].time
}}</span> }}</span>
@@ -141,38 +103,30 @@
<div class=""> <div class="">
<div class="drawerbox"> <div class="drawerbox">
<!-- 添加的时候显示多选的表 --> <!-- 添加的时候显示多选的表 -->
<a-table <a-table v-if="!edit" :columns="tableDataFunc()" :data-source="drawertableData" :row-selection="{
v-if="!edit"
:columns="tableDataFunc()"
:data-source="drawertableData"
:row-selection="{
selectedRowKeys: selectedRowKeys, selectedRowKeys: selectedRowKeys,
onChange: onSelectChange, onChange: onSelectChange,
}" }" :loading="tableDataTotal === -1 ? true : false" :scroll="{ x: 700 }" @expand="expandTable"
:loading="tableDataTotal === -1 ? true : false" :pagination="false">
:scroll="{ x: 700 }"
@expand="expandTable"
:pagination="false"
>
</a-table> </a-table>
<!-- 编辑的时候显示单选的表 --> <!-- 编辑的时候显示单选的表 -->
<a-table <a-table v-else :columns="tableDataFunc()" :data-source="drawertableData" :row-selection="{
v-else
:columns="tableDataFunc()"
:data-source="drawertableData"
:row-selection="{
selectedRowKeys: selectedRowKeys, selectedRowKeys: selectedRowKeys,
onChange: onSelectChange, onChange: onSelectChange,
type: 'radio', type: 'radio',
}" }" :loading="tableDataTotal === -1 ? true : false" :scroll="{ x: 700 }" @expand="expandTable"
:loading="tableDataTotal === -1 ? true : false" :pagination="false">
:scroll="{ x: 700 }"
@expand="expandTable"
:pagination="false"
>
</a-table> </a-table>
</div> </div>
</div> </div>
<div class="tableBox">
<div class="pa">
<a-pagination v-if="(tableDataTotal > 10)" showSizeChanger="true" showQuickJumper="true"
hideOnSinglePage="true" :pageSize="pageSize" v-model:current="currentPage" :total="tableDataTotal"
class="pagination" @change="changePagination"
style="display:flex;justify-content:center;margin-top:12px;margin-bottom:12px;" />
</div>
</div>
</div> </div>
<div class="main_btns"> <div class="main_btns">
<button @click="closeDrawer" class="btn1">取消</button> <button @click="closeDrawer" class="btn1">取消</button>
@@ -180,13 +134,7 @@
</div> </div>
</div> </div>
<!-- 有重复添加的项目时的弹窗 --> <!-- 有重复添加的项目时的弹窗 -->
<a-modal <a-modal v-model:visible="sameModal" :footer="null" :closable="sameCopy" wrapClassName="sameModal" centered="true">
v-model:visible="sameModal"
:footer="null"
:closable="sameCopy"
wrapClassName="sameModal"
centered="true"
>
<div class="delete"> <div class="delete">
<div class="del_header"></div> <div class="del_header"></div>
<div class="del_main"> <div class="del_main">
@@ -329,7 +277,12 @@ export default {
const closeDrawer = () => { const closeDrawer = () => {
ctx.emit("update:addprojvisible", false); ctx.emit("update:addprojvisible", false);
ctx.emit("update:edit", false); ctx.emit("update:edit", false);
state.currentPage = 1
state.tableDataTotal = 0
state.drawertableData = []
state.inputV1 = ""
state.inputV2 = ""
state.inputV3 = ""
state.selectedRows = []; state.selectedRows = [];
state.selectedRowKeys = []; state.selectedRowKeys = [];
}; };
@@ -350,7 +303,7 @@ export default {
// ajax request after empty completing // ajax request after empty completing
setTimeout(() => { setTimeout(() => {
state.loading = false; state.loading = false;
state.selectedRowKeys = [];
}, 1000); }, 1000);
}; };
// const onSelectChange = (selectedRowKeys, selectedRows) => { // const onSelectChange = (selectedRowKeys, selectedRows) => {
@@ -364,25 +317,94 @@ export default {
const resetProjectList = () => { const resetProjectList = () => {
state.inputV1 = ""; state.inputV1 = "";
state.inputV2 = ""; state.inputV2 = "";
state.inputV1 = ""; state.inputV3 = "";
getAllProjText(); getAllProjText();
}; };
//获取全部项目信息接口 //翻页
const getAllProjText = () => { const changePagination = (page) => {
state.currentPage = page;
getAllProjText();
// console.log("翻页", page, pageSize);
};
// 点击编辑默认选中
const defaultValueOption = () => {
if (props.edit) {
state.drawertableData = []
state.selectedRowKeys = [props.EditProjectId];
getCurrentPage();
}
}
// TODO 这里后续需要给接口或者改动
// 获取所有,确定分页位置
const getCurrentPage = () => {
apiProj apiProj
.getProjectList({ .getProjectList({
createName: state.inputV1, createName: state.inputV1,
manager: state.inputV2, manager: state.inputV2,
name: state.inputV3, name: state.inputV3,
pageNo: 1,
pageSize: 10000,
status: 3
})
.then((res) => {
// let arr = res.data.data.rows;
if (res.status === 200) {
console.log('all - project - info', res.data.data)
let allarr = res.data.data.rows
let isHav = true
for (let i = 0; i < allarr.length; i++) {
if (allarr[i].projectId == props.EditProjectId) {
isHav = false
state.currentPage = Math.ceil((i + 1) / 10);
console.log('sdadasd', state.currentPage)
getAllProjText()
return
}
}
if (isHav) {
getAllProjText()
state.currentPage = 1;
}
// state.drawertableData = getTableDate(arr);
// state.tableDataTotal = res.data.data.total
}
})
.catch(() => {
message.destroy();
//message.error("获取全部项目信息接口失败");
});
}
//获取全部项目信息接口
const getAllProjText = () => {
console.log("搜索的参数信息", {
createName: state.inputV3,
manager: state.inputV2,
name: state.inputV1,
pageNo: state.currentPage, pageNo: state.currentPage,
pageSize: state.pageSize, pageSize: state.pageSize,
status: state.status, status: 3
})
apiProj
.getProjectList({
createName: state.inputV3,
manager: state.inputV2,
name: state.inputV1,
pageNo: state.currentPage,
pageSize: state.pageSize,
status: 3
}) })
.then((res) => { .then((res) => {
let arr = res.data.data.rows; let arr = res.data.data.rows;
if (res.status === 200) { if (res.status === 200) {
console.log('all - project - info', res.data.data)
state.drawertableData = getTableDate(arr); state.drawertableData = getTableDate(arr);
state.tableDataTotal = res.data.data.total
} }
}) })
.catch(() => { .catch(() => {
@@ -390,9 +412,11 @@ export default {
//message.error("获取全部项目信息接口失败"); //message.error("获取全部项目信息接口失败");
}); });
}; };
const afterVisibleChange = (bool) => { const afterVisibleChange = () => {
if (bool) { if (props.edit) {
defaultValueOption();
} else {
getAllProjText(); getAllProjText();
} }
}; };
@@ -424,6 +448,7 @@ export default {
manager: value.manager, manager: value.manager,
time: dayjs(value.createTime).format("YYYY-MM-DD"), time: dayjs(value.createTime).format("YYYY-MM-DD"),
children: value.subList ? getTableDate(value.subList) : [], children: value.subList ? getTableDate(value.subList) : [],
creater: value.createName,
}; };
array.push(obj); array.push(obj);
} }
@@ -526,6 +551,8 @@ export default {
showSameModal, showSameModal,
closeSameModal, closeSameModal,
sureSameModal, sureSameModal,
changePagination,
getCurrentPage
}; };
}, },
}; };
@@ -556,6 +583,7 @@ export default {
background: #ffffff; background: #ffffff;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21); box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);
border-radius: 4px; border-radius: 4px;
// position: absolute; // position: absolute;
// left: 50%; // left: 50%;
// top: 10%; // top: 10%;
@@ -564,10 +592,8 @@ export default {
position: absolute; position: absolute;
width: calc(100%); width: calc(100%);
height: 68px; height: 68px;
background: linear-gradient( background: linear-gradient(rgba(78, 166, 255, 0.2) 0%,
rgba(78, 166, 255, 0.2) 0%, rgba(78, 166, 255, 0) 100%);
rgba(78, 166, 255, 0) 100%
);
} }
.del_main { .del_main {
@@ -663,6 +689,7 @@ export default {
.addrefDrawer { .addrefDrawer {
.drawerMain { .drawerMain {
// .main_notice { // .main_notice {
// display: flex; // display: flex;
// justify-content: space-between; // justify-content: space-between;
@@ -798,6 +825,43 @@ export default {
} }
} }
} }
.tableBox {
// margin: 20px 38px 30px;
margin: 10px 35px 0px 35px;
th.h {
background-color: #eff4fc !important;
}
.ant-table-tbody>tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td {
background: #f6f9fd;
}
}
.tableBox {
padding-bottom: 20px;
.pa {
// position: absolute;
// bottom: 20px;
// left: 0;
width: 100%;
// height: 20px;
// background-color: red;
display: flex;
justify-content: center;
// margin-bottom: 10px;
// position: absolute;
// bottom: -40px;
.pagination {
display: flex;
justify-content: center;
align-items: center;
}
}
}
} }
.main_btns { .main_btns {

View File

@@ -100,6 +100,7 @@
title: 'name', title: 'name',
value: 'name', value: 'name',
}" }"
v-model:expandedKeys="expandedKeys"
> >
<template #suffixIcon></template> <template #suffixIcon></template>
</a-tree> </a-tree>
@@ -201,6 +202,7 @@
title: 'name', title: 'name',
value: 'name', value: 'name',
}" }"
v-model:expandedKeys="expandedKeys"
> >
<template #suffixIcon></template> <template #suffixIcon></template>
</a-tree> </a-tree>
@@ -754,12 +756,16 @@ export default {
//受众关联------------------------------------- //受众关联-------------------------------------
selectAllArr: null, //所有选中 selectAllArr: null, //所有选中
expandedKeys: [], //展开的节点
}); });
const closeDrawer = () => { const closeDrawer = () => {
state.activeKey = "1"; state.activeKey = "1";
ctx.emit("update:ProjCheckvisible", false); ctx.emit("update:ProjCheckvisible", false);
deleteAll(); deleteAll();
// console.log("expandedKeys", state.expandedKeys);
state.expandedKeys = [];
}; };
const afterVisibleChange = (bool) => { const afterVisibleChange = (bool) => {
console.log("state", bool); console.log("state", bool);

View File

@@ -244,241 +244,9 @@ export default {
nameadd: "", nameadd: "",
nameaddd: "", nameaddd: "",
com: "", com: "",
openKeys: [2, 13, 32], openKeys: [],
//组织树 //组织树
treeData: [ treeData: [],
{
key: 1,
title: "京东方",
value: "京东方",
children: [
{
key: 2,
title: "产研部",
value: "产研部",
children: [
{
key: 3,
title: "产品部",
value: "产品部",
},
{
key: 4,
title: "研究部",
value: "研究部",
},
{
key: 5,
title: "研究部2",
value: "研究部2",
},
{
key: 6,
title: "研究3",
value: "研究3",
},
{
key: 7,
title: "研究4",
value: "研究4",
},
{
key: 8,
title: "研究部5",
value: "研究部5",
},
{
key: 9,
title: "研究部6",
value: "研究部6",
},
{
key: 10,
title: "研究部7",
value: "研究部7",
},
{
key: 11,
title: "研究部8",
value: "研究部8",
},
{
key: 12,
title: "研究部9",
value: "研究部9",
},
],
},
{
key: 13,
title: "二级标题",
value: "二级标题",
children: [
{
key: 14,
title: "三级标题",
value: "三级标题",
children: [
{
key: 15,
title: "四级标题",
value: "四级标题",
children: [
{
key: 16,
title: "五级标题",
value: "五级标题",
children: [
{
key: 17,
title: "六级标题",
value: "六级标题",
children: [
{
key: 18,
title: "七级标题",
value: "七级标题",
children: [
{
key: 19,
title: "八级标题",
value: "八级标题",
children: [
{
key: 20,
title: "九级标题",
value: "九级标题",
children: [
{
key: 21,
title: "十级标题",
value: "十级标题",
children: [
{
key: 22,
title: "十一级标题",
value: "十一级标题",
children: [
{
key: 23,
title: "十二级标题",
value: "十二级标题",
children: [
{
key: 24,
title:
"十三级标题十三级标题十三级标题十三级标题",
value: "十三级标题",
children: [
{
key: 25,
title:
"十四级标题",
value:
"十四级标题",
children: [
{
key: 26,
title:
"十五级标题",
value:
"十五级标题",
children: [
{
key: 27,
title:
"十六级标题",
value:
"十六级标题",
children:
[
{
key: 28,
title:
"十七级标题",
value:
"十七级标题",
children:
[
{
key: 29,
title:
"十八级标题",
value:
"十八级标题",
children:
[
{
key: 30,
title:
"十九级标题",
value:
"十九级标题",
children:
[
{
key: 31,
title:
"二十级标题二十级标题",
value:
"二十级标题二十级标题",
},
],
},
],
},
],
},
],
},
],
},
],
},
],
},
],
},
],
},
],
},
],
},
],
},
],
},
],
},
],
},
],
},
],
},
],
},
{
key: 32,
title: "人力资源部",
value: "人力资源部",
children: [
{
key: 33,
title: "人事部",
value: "人事部",
},
{
key: 34,
title: "行政部",
value: "行政部",
},
],
},
],
},
],
//快速选人的table //快速选人的table
tabledata: [ tabledata: [
// { // {
@@ -543,6 +311,7 @@ export default {
const closeDrawer = () => { const closeDrawer = () => {
state.activeKey = "1"; state.activeKey = "1";
ctx.emit("update:ProjOwnervisible", false); ctx.emit("update:ProjOwnervisible", false);
state.openKeys = [];
}; };
const afterVisibleChange = (bool) => { const afterVisibleChange = (bool) => {

View File

@@ -0,0 +1,62 @@
<template>
<a-tree-select
v-model:value="id"
style="width: 100%"
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
placeholder="自动带出 可修改"
allow-clear
:tree-data="options"
:fieldNames="{
children: 'treeChildList',
label: 'name',
value: 'id',
}"
:disabled="viewDetail ? true : false"
@change="change"
dropdownClassName="treeDropdown"
>
</a-tree-select>
</template>
<script>
import {onMounted, reactive, toRefs, watch} from "vue";
import {useStore} from "vuex";
export default {
name: "OrgClass",
props: {
modelValue: {
type: Number,
},
name: {
type: String,
},
disabled: {
type: Boolean,
default: false
},
},
setup(props, ctx) {
const store = useStore();
const state = reactive({
options: [],
id: props.value
});
watch(state.id, () => {
ctx.emit('update:modelValue', state.id)
})
onMounted(() => {
state.options = [{id: props.modelValue, name: props.name}, ...store.state.orgtreeList]
})
function change(key, obj) {
ctx.emit('update:name', obj[0])
}
return {
...toRefs(state),
change
};
},
};
</script>

View File

@@ -0,0 +1,48 @@
<!-- 评估管理-创建评估页面 -->
<template>
<a-select
v-model:value="id"
placeholder="请选择分类"
style="width: 100%"
:options="options"
allowClear
:disabled="disabled"
>
</a-select>
</template>
<script>
import {onMounted, reactive, toRefs, watch} from "vue";
import {useStore} from "vuex";
export default {
name: "ProjectClass",
props: {
modelValue: {
type: Number,
},
disabled: {
type: Boolean,
default: false
},
},
setup(props, ctx) {
const store = useStore();
const state = reactive({
options: [],
id: props.modelValue
});
watch(state.id,()=>{
ctx.emit('update:modelValue',state.id)
})
onMounted(() => {
state.options = store.state.projectClass.map(e => ({value: parseInt(e.dictCode), label: e.dictName}))
})
return {
...toRefs(state),
};
},
};
</script>

View File

@@ -0,0 +1,45 @@
<template>
<a-select
v-model:value="id"
:options="options"
style="width: 100%"
placeholder="请选择项目级别"
:disabled="disabled"
/>
</template>
<script>
import {onMounted, reactive, toRefs, watch} from "vue";
import {useStore} from "vuex";
export default {
name: "ProjectClass",
props: {
modelValue: {
type: Number,
},
disabled: {
type: Boolean,
default: false
},
},
setup(props, ctx) {
const store = useStore();
const state = reactive({
options: [],
id: props.modelValue
});
watch(state.id, () => {
ctx.emit('update:modelValue', state.id)
})
onMounted(() => {
state.options = store.state.projectLevel.map(e => ({value: parseInt(e.dictCode), label: e.dictName}))
})
return {
...toRefs(state),
};
},
};
</script>

View File

@@ -0,0 +1,104 @@
<template>
<a-select
v-model:value="managerArray"
placeholder="请选择项目经理"
:filterOption="false"
style="width: 100%"
:options="options"
allowClear
showSearch
mode="multiple"
:disabled="disabled"
@popupScroll="memberScroll"
@search="searchMember"
@change="change"
>
<template v-if="loading" #notFoundContent>
<a-spin size="small"/>
</template>
</a-select>
</template>
<script>
import {reactive, toRefs, watch} from "vue";
import {scrollLoad} from "@/api/method";
import * as api1 from "@/api/index1";
export default {
name: "ProjectClass",
props: {
value: {
type: Number,
},
name: {
type: Number,
},
disabled: {
type: Boolean,
default: false
},
},
setup(props, ctx) {
const state = reactive({
options: [],
managerArray: [],
memberParam: {keyWord: '', pageNo: 1, pageSize: 10},
loading: false,
init: false
});
watch(() => state.memberParam, getMember)
watch(() => props.value, init)
function getMember() {
state.loading = true
api1.getMemberInfo(state.memberParam).then((res) => {
const list = res.data.data.rows.filter(e => !props.value?.includes(e.id + '')).map(e => ({
label: e.realName,
value: e.id
}));
state.options.push(...list)
state.loading = false
});
}
const memberScroll = (e) => {
let num = scrollLoad(e);
if (num === 2) {
// 如果滑到底部,则加载下一页
state.memberParam.pageNo++;
}
};
//搜索学员
const searchMember = (keyWord) => {
keyWord && (state.memberParam = {keyWord, pageNo: 1, pageSize: 10});
};
function init() {
if (props.value && props.name) {
const arrManager = props.name.split(',')
const arrManagerId = props.value.split(',')
state.managerArray = arrManagerId
state.options = arrManager.map((e, i) => ({label: e, value: arrManagerId[i]}))
state.init = true
getMember()
}
}
function change(e, l) {
console.log('change')
ctx.emit('update:value', e.join(','))
ctx.emit('update:name', l.map(t => t.label).join(','))
}
return {
...toRefs(state),
searchMember,
memberScroll,
change
};
},
};
</script>

View File

@@ -0,0 +1,44 @@
<template>
<a-select
v-model:value="id"
:options="options"
style="width: 100%"
placeholder="请选择分类"
:disabled="disabled"
/>
</template>
<script>
import {onMounted, reactive, toRefs, watch} from "vue";
import {useStore} from "vuex";
export default {
name: "TrainClass",
props: {
modelValue: {
type: Number,
},
disabled: {
type: Boolean,
default: false
},
},
setup(props, ctx) {
const store = useStore();
const state = reactive({
options: [],
id: props.modelValue
});
watch(state.id, () => {
ctx.emit('update:modelValue', state.id)
})
onMounted(() => {
state.options = store.state.projectSys.map(e => ({value: parseInt(e.dictCode), label: e.dictName}))
})
return {
...toRefs(state),
};
},
};
</script>

View File

@@ -2,7 +2,7 @@
* @Author: lixg lixg@dongwu-inc.com * @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-09 09:26:26 * @Date: 2022-11-09 09:26:26
* @LastEditors: lixg lixg@dongwu-inc.com * @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2022-11-26 20:20:03 * @LastEditTime: 2022-12-02 14:09:43
* @FilePath: /fe-manage/src/store/index.js * @FilePath: /fe-manage/src/store/index.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
*/ */
@@ -29,6 +29,7 @@ export default createStore({
faceclassScene: [], faceclassScene: [],
projectLevel: [],//项目级别 projectLevel: [],//项目级别
projectSys: [],//培训分类 projectSys: [],//培训分类
pathmapPic: [],//学习路径背景图
}, },
getters: {}, getters: {},
mutations: { mutations: {

View File

@@ -37,10 +37,10 @@
margin-right: 14px; margin-right: 14px;
" placeholder="请输入创建人" /> " placeholder="请输入创建人" />
</div> </div>
<div class="inpbox1"> <!-- <div class="inpbox1">-->
<a-range-picker v-model:value="valueDate" style="border-radius: 8px; height: 40px; margin-left: 5px" <!-- <a-range-picker v-model:value="valueDate" style="border-radius: 8px; height: 40px; margin-left: 5px"-->
:placeholder="[' 开始时间', ' 结束时间']" @change="rankTimeChange" /> <!-- :placeholder="[' 开始时间', ' 结束时间']" @change="rankTimeChange" />-->
</div> <!-- </div>-->
</div> </div>
</div> </div>
<div class="tmplh_btn"> <div class="tmplh_btn">
@@ -75,8 +75,8 @@
<script> <script>
import {onMounted, reactive, toRefs} from "vue"; import {onMounted, reactive, toRefs} from "vue";
import ProjectAudit from "../../components/drawers/ProjectAudit"; import ProjectAudit from "../../components/drawers/ProjectAudit";
import { projlist } from "../../api/indexAudit"; import {auditlist} from "../../api/indexAudit";
import { toDate } from "@/api/method";
export default { export default {
name: "ProjectViewedN", name: "ProjectViewedN",
components: { ProjectAudit }, components: { ProjectAudit },
@@ -106,8 +106,8 @@ export default {
columns1: [ columns1: [
{ {
title: "序号", title: "序号",
dataIndex: "number", dataIndex: "projectId",
key: "number", key: "projectId",
align: "center", align: "center",
}, },
{ {
@@ -135,17 +135,18 @@ export default {
dataIndex: "status", dataIndex: "status",
key: "status", key: "status",
align: "center", align: "center",
customRender: ()=><div>待审核</div>,
}, },
{ {
title: "创建人", title: "创建人",
dataIndex: "creater", dataIndex: "createName",
key: "creater", key: "createName",
align: "center", align: "center",
}, },
{ {
title: "创建时间", title: "创建时间",
dataIndex: "time", dataIndex: "createTime",
key: "time", key: "createTime",
align: "center", align: "center",
}, },
@@ -163,7 +164,7 @@ export default {
showProjAudit( showProjAudit(
value.record.projectId, value.record.projectId,
value.record.createId, value.record.createId,
value.record.creater value.record.createName
); );
}} }}
> >
@@ -194,12 +195,13 @@ export default {
pageSize: state.pageSize, pageSize: state.pageSize,
status: 1, status: 1,
}; };
projlist(objn) auditlist(objn)
.then((res) => { .then((res) => {
console.log("获取待审核项目成功", res); console.log("获取待审核项目成功", res);
let result = res.data.data; let result = res.data.data;
state.total = result.total; state.total = result.total;
setProjList(result.rows); state.tableData1 = result.rows
// setProjList(result.rows);
}) })
.catch((err) => { .catch((err) => {
console.log("获取待审核项目失败", err); console.log("获取待审核项目失败", err);
@@ -232,7 +234,7 @@ export default {
? "拒绝" ? "拒绝"
: "-", : "-",
creater: item.createName, creater: item.createName,
time: toDate(item.createTime, "Y-M-D h-m"), time: item.createTime,
projectId: item.projectId, projectId: item.projectId,
createId: item.createId, createId: item.createId,
}; };
@@ -260,7 +262,7 @@ export default {
? "拒绝" ? "拒绝"
: "-", : "-",
creater: item.createName, creater: item.createName,
time: toDate(item.createTime, "Y-M-D h-m"), time: item.createTime,
projectId: item.projectId, projectId: item.projectId,
createId: item.createId, createId: item.createId,
children: item.subList ? setProjList(item.subList) : [], children: item.subList ? setProjList(item.subList) : [],

View File

@@ -867,7 +867,7 @@ export default {
state.editPathId = null; state.editPathId = null;
}; };
const chooseImg = (item) => { const chooseImg = (item) => {
// console.log(item); console.log(item);
state.pathBgId = item.dictCode; state.pathBgId = item.dictCode;
state.pathBg = item.dictValue; state.pathBg = item.dictValue;
}; };
@@ -1148,7 +1148,7 @@ export default {
onClick={() => { onClick={() => {
// console.log("text.record", text.record); // console.log("text.record", text.record);
getLearnPathInfo(text.record); getLearnPathInfo(text.record.id);
}} }}
> >
编辑 编辑
@@ -1409,8 +1409,8 @@ export default {
}; };
const selectorganization = (e, v) => { const selectorganization = (e, v) => {
console.log("eee", e, v); console.log("eee", e, v);
state.organizationSelectName = e; state.organizationSelectName = v[0];
state.organizationSelectId = v.id; state.organizationSelectId = e;
}; };
//创建学习路径图 //创建学习路径图
const createLearnPath = () => { const createLearnPath = () => {
@@ -1429,13 +1429,17 @@ export default {
state.lpLoading = true; state.lpLoading = true;
let obj = { let obj = {
name: state.pathName, name: state.pathName,
picUrl: "",
remark: state.pathIntro, remark: state.pathIntro,
status: 0, status: 0,
organizationId: state.organizationSelectId,
organizationName: state.organizationSelectName,
picUrl: state.pathBg,
}; };
api api
.createLearnPath(obj) .createLearnPath(obj)
.then((res) => { .then((res) => {
console.log("创建学习路径成功", res);
if (res.data.code === 200) {
let chapterObj = { let chapterObj = {
name: "关卡一", name: "关卡一",
remark: "", remark: "",
@@ -1460,6 +1464,7 @@ export default {
.catch((chapterErr) => { .catch((chapterErr) => {
console.log("关卡创建失败", chapterErr); console.log("关卡创建失败", chapterErr);
}); });
}
}) })
.catch((err) => { .catch((err) => {
console.log("创建失败", err); console.log("创建失败", err);
@@ -1525,22 +1530,36 @@ export default {
}; };
//获取路径图详细信息 //获取路径图详细信息
const getLearnPathInfo = (item) => { const getLearnPathInfo = (id) => {
state.out1 = true; // console.log("编辑学习路径图id", id);
state.pathName = item.manager; //获取学习路径详情
state.pathBg = ""; api
.getRouterDetail(id)
.then((res) => {
if (res.data.code === 200) {
let detail = res.data.data.routerInfo;
// console.log("获取详情成功", detail);
state.pathName = detail.name;
state.pathBg = detail.picUrl;
state.pathBgId = ""; state.pathBgId = "";
state.organizationSelectName = null; state.organizationSelectName = detail.organizationName;
state.organizationSelectId = null; state.organizationSelectId = detail.organizationId;
state.pathIntro = item.remark; state.pathIntro = detail.remark;
state.editPathId = item.id; state.editPathId = id;
console.log("state.imgData", state.imgData); // console.log("state.imgData", state.imgData);
let arr = state.imgData; let arr = state.imgData;
for (let i = 0; i < arr.length; i++) { for (let i = 0; i < arr.length; i++) {
if (arr[i].dictCode === state.pathBgId) { // console.log("arr[i].dictValue", arr[i].dictValue, state.pathBg);
state.pathBgId = arr[i].dictValue; if (arr[i].dictValue === state.pathBg) {
state.pathBgId = arr[i].dictCode;
} }
} }
}
})
.catch((err) => {
console.log("获取详情失败", err);
});
state.out1 = true;
}; };
//编辑学习路径图 //编辑学习路径图
const editLearnPath = () => { const editLearnPath = () => {
@@ -1556,12 +1575,21 @@ export default {
message.destroy(); message.destroy();
return message.warning("请选择背景图"); return message.warning("请选择背景图");
} }
// state.pathName = detail.name;
// state.pathBg = detail.picUrl;
// state.pathBgId = "";
// state.organizationSelectName = detail.organizationName;
// state.organizationSelectId = detail.organizationId;
// state.pathIntro = detail.remark;
// state.editPathId = id;
// state.createLoading = true; // state.createLoading = true;
let obj = { let obj = {
routerId: state.editPathId, routerId: state.editPathId,
name: state.pathName, name: state.pathName,
picUrl: "", picUrl: state.pathBg,
remark: state.pathIntro, remark: state.pathIntro,
organizationName: state.organizationSelectName,
organizationId: state.organizationSelectId,
status: 0, status: 0,
}; };
api api
@@ -1641,30 +1669,30 @@ export default {
// } // }
// choiceEvaluation() // choiceEvaluation()
//字典获取路径图背景 // //字典获取路径图背景
const getDictList = (param) => { // const getDictList = (param) => {
let obj = { // let obj = {
pageNo: 1, // pageNo: 1,
pageSize: 20, // pageSize: 20,
setCode: param, // setCode: param,
}; // };
api // api
.getDict(obj) // .getDict(obj)
.then((res) => { // .then((res) => {
console.log("获取字典成功", res); // console.log("获取字典成功", res);
if (res.status === 200) { // if (res.status === 200) {
if (param === "pathmapPic") { // if (param === "pathmapPic") {
if (res.data.data.rows.length > 0) { // if (res.data.data.rows.length > 0) {
state.imgData = [res.data.data.rows[0]]; // state.imgData = [res.data.data.rows[0]];
} // }
} // }
} // }
}) // })
.catch((err) => { // .catch((err) => {
console.log("获取字典失败", err); // console.log("获取字典失败", err);
}); // });
}; // };
getDictList("pathmapPic"); // getDictList("pathmapPic");
//显示更多路径背景弹窗 //显示更多路径背景弹窗
const showLearnBgMore = () => { const showLearnBgMore = () => {
state.learnBgMore = true; state.learnBgMore = true;
@@ -1676,6 +1704,10 @@ export default {
onMounted(() => { onMounted(() => {
// console.log("执行"); // console.log("执行");
getLearnPath(); getLearnPath();
if (store.state.pathmapPic.length > 0) {
console.log("store.state.pathmapPic", store.state.pathmapPic);
state.imgData = [store.state.pathmapPic[0]];
}
}); });
//添加权限 //添加权限
watch( watch(

View File

@@ -3,7 +3,7 @@
<div class="addhead"> <div class="addhead">
<div class="leftimg"> <div class="leftimg">
<!-- <img class="img" :src="picUrl" /> --> <!-- <img class="img" :src="picUrl" /> -->
<img class="img" src="../../assets/images/leveladd/1.png" /> <img class="img" :src="picUrl" />
</div> </div>
<div class="imgfor"> <div class="imgfor">
<div class="forz">{{ styTitle }}</div> <div class="forz">{{ styTitle }}</div>
@@ -139,7 +139,7 @@
</div> </div>
<div <div
class="taskbox" class="taskbox"
@click="showModal" @click="showPub"
style="background: linear-gradient(180deg, #e5f6ec, #eef9f3)" style="background: linear-gradient(180deg, #e5f6ec, #eef9f3)"
> >
<div class="leftt"> <div class="leftt">
@@ -564,7 +564,7 @@
<a-input <a-input
v-model:value="gatenamee" v-model:value="gatenamee"
style="width: 270px; height: 40px; border-radius: 8px" style="width: 270px; height: 40px; border-radius: 8px"
placeholder="关卡名称" placeholder="请输入姓名"
/> />
<div class="btns" @click="searchLevel"> <div class="btns" @click="searchLevel">
<div class="btn btn1"> <div class="btn btn1">
@@ -1078,7 +1078,9 @@
<div class="projectbox"> <div class="projectbox">
<div class="promessage"> <div class="promessage">
<div class="messageme">路径信息</div> <div class="messageme">路径信息</div>
<div class="messagege">当前路径共0个关卡0个任务</div> <div class="messagege">
当前路径共{{ routeChapters }}个关卡{{ routeTasks }}个任务
</div>
</div> </div>
<div class="stumessage"> <div class="stumessage">
<div class="messageme1">学员信息</div> <div class="messageme1">学员信息</div>
@@ -1255,6 +1257,8 @@ export default {
dcopyModal: false, //复制弹窗 dcopyModal: false, //复制弹窗
closeBack: false, closeBack: false,
routeStudentsNum: null, routeStudentsNum: null,
routeChapters: null,
routeTasks: null,
dcloseCopy: false, dcloseCopy: false,
dicloseCopy: false, dicloseCopy: false,
stopModal: false, //结束弹窗 stopModal: false, //结束弹窗
@@ -1649,7 +1653,7 @@ export default {
//获取学员列表 //获取学员列表
const getStudent = () => { const getStudent = () => {
let obj = { let obj = {
name: "", name: state.gatenamee,
pageNo: state.currentPage, pageNo: state.currentPage,
pageSize: 10, pageSize: 10,
routerId: state.routerId, routerId: state.routerId,
@@ -1733,7 +1737,9 @@ export default {
message.destroy(); message.destroy();
message.success("发布成功"); message.success("发布成功");
state.pub = false; state.pub = false;
state.nodata = false;
// getLearnPath(); // getLearnPath();
reget(); reget();
}) })
.catch((err) => { .catch((err) => {
@@ -1744,33 +1750,19 @@ export default {
const showPub = () => { const showPub = () => {
state.pub = true; state.pub = true;
// state.releasePathId = routerId; // state.releasePathId = routerId;
//获取学员总数
let obj = {
pageNo: 0,
pageSize: 0,
routerId: state.routerId,
};
api api
.getStudent(obj) .getLearnCount(state.routerId)
.then((res) => { .then((res) => {
if (res.status === 200) { if (res.status === 200) {
// console.log("res", res.data.data); // console.log("获取关卡、任务、学员统计数据", res.data);
state.routeStudentsNum = res.data.data.total; state.routeStudentsNum = res.data.students;
state.routeChapters = res.data.chapters;
state.routeTasks = res.data.tasks;
} }
}) })
.catch((err) => { .catch((err) => {
console.log("err", err); console.log("err", err);
}); });
//获取学习路径详细信息
// api
// .getRouterDetail(routerId)
// .then((res) => {
// console.log("学习路径详情", res);
// })
// .catch((err) => {
// console.log("学习路径详情获取错误", err);
// });
}; };
//显示撤回弹窗 //显示撤回弹窗
const showBackModal = () => { const showBackModal = () => {
@@ -1794,6 +1786,7 @@ export default {
message.success("撤回成功"); message.success("撤回成功");
state.backModal = false; state.backModal = false;
reget(); reget();
state.nodata = true;
}) })
.catch((err) => { .catch((err) => {
console.log("撤回失败", err); console.log("撤回失败", err);
@@ -1855,6 +1848,7 @@ export default {
}; };
const reget = () => { const reget = () => {
GetRouterDetail(state.routerId).then((res) => { GetRouterDetail(state.routerId).then((res) => {
// console.log("获取路径图详情", res);
state.styTitle = res.data.data.routerInfo.name; state.styTitle = res.data.data.routerInfo.name;
state.cretime = toDate( state.cretime = toDate(
res.data.data.routerInfo.createTime / 1000, res.data.data.routerInfo.createTime / 1000,
@@ -1985,10 +1979,12 @@ export default {
}); });
}; };
const searchLevel = () => { const searchLevel = () => {
const result = state.tableData.filter( // const result = state.tableData.filter(
(item) => item.cur == state.gatenamee // (item) => item.cur == state.gatenamee
); // );
state.tableData = result; // state.tableData = result;
state.currentPage = 1;
getStudent();
}; };
const resetLevel = () => { const resetLevel = () => {
state.gatenamee = ""; state.gatenamee = "";

View File

@@ -174,7 +174,7 @@
<div class="filt"> <div class="filt">
<div class="le"> <div class="le">
<div class="leftimg"> <div class="leftimg">
<img class="img" src="../../assets/images/leveladd/1.png" /> <img class="img" :src="picUrl" />
</div> </div>
<div class="imgfor"> <div class="imgfor">
<div class="forz">{{ styTitle }}</div> <div class="forz">{{ styTitle }}</div>
@@ -524,7 +524,7 @@
</div> </div>
<div class="btn btn2"> <div class="btn btn2">
<div class="imgIcon"></div> <div class="imgIcon"></div>
<div class="btnText" @click="showDeleteALLModal"> <div class="btnText" @click="showDeleteALLModal(1)">
批量删除 批量删除
</div> </div>
</div> </div>
@@ -640,7 +640,16 @@
</div> </div>
</div> </div>
</div> </div>
<div style="width: 120px; text-align: center"> <div
style="
width: 120px;
text-align: center;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
"
:title="element.creater"
>
{{ element.creater }} {{ element.creater }}
</div> </div>
<div style="width: 120px; text-align: center"> <div style="width: 120px; text-align: center">
@@ -776,7 +785,7 @@
<button class="addx" @click="showAddStu">添加学员</button> <button class="addx" @click="showAddStu">添加学员</button>
<!-- 点击抽屉组件在LevelAdd此处没添加showAddStushowImpStu --> <!-- 点击抽屉组件在LevelAdd此处没添加showAddStushowImpStu -->
<button class="addd" @click="showImpStu">导入学员</button> <button class="addd" @click="showImpStu">导入学员</button>
<button class="addd" @click="showDeleteALLModal"> <button class="addd" @click="showDeleteALLModal(2)">
批量删除 批量删除
</button> </button>
</div> </div>
@@ -898,7 +907,9 @@
<div class="close_exit" @click="delete_exit"></div> <div class="close_exit" @click="delete_exit"></div>
</div> </div>
<div class="body"> <div class="body">
<span>请确认是否批量删除学员</span> <span
>请确认是否批量删除{{ deleteType === 1 ? "任务" : "学员" }}</span
>
</div> </div>
<div class="del_btnbox"> <div class="del_btnbox">
<div class="del_btn btn1"> <div class="del_btn btn1">
@@ -955,7 +966,7 @@
<div class="header"> <div class="header">
<div class="inhe"> <div class="inhe">
<div class="mod"></div> <div class="mod"></div>
<div class="tz">选择任务移动到阶段</div> <div class="tz">选择任务移动到关卡</div>
</div> </div>
</div> </div>
<div class="mid"> <div class="mid">
@@ -1192,6 +1203,10 @@ export default {
unlockModeVisible: false, //切换模式抽屉 unlockModeVisible: false, //切换模式抽屉
chooseProjectList: null, //选择的阶段下的任务列表 chooseProjectList: null, //选择的阶段下的任务列表
curLevel: null, //选择移动到的关卡名称
deleteType: null, //批量删除学员/任务 1任务 2学员
}); });
const showModal = (element) => { const showModal = (element) => {
@@ -1415,9 +1430,11 @@ export default {
item["value"] = item.chapterId; item["value"] = item.chapterId;
item["label"] = item.name; item["label"] = item.name;
}); });
console.log("路径图详情", res);
if (state.level.length > 0) { if (state.level.length > 0) {
let chapter = localStorage.getItem("chapterId"); let chapter = localStorage.getItem("chapterId");
if (chapter !== "null") { // console.log("chapter", chapter, chapter !== "null");
if (chapter) {
dataAssignment(chapter); //用哪个的任务表 dataAssignment(chapter); //用哪个的任务表
state.isactive = chapter; //哪个亮 state.isactive = chapter; //哪个亮
} else { } else {
@@ -1593,6 +1610,7 @@ export default {
document.getElementsByTagName("main")[0].style.background = "#ffffff"; document.getElementsByTagName("main")[0].style.background = "#ffffff";
document.getElementsByTagName("main")[0].style.boxShadow = document.getElementsByTagName("main")[0].style.boxShadow =
"0px 1px 35px 0px rgba(118, 136, 166, 0.07)"; "0px 1px 35px 0px rgba(118, 136, 166, 0.07)";
localStorage.removeItem("chapterId");
}); });
const changebgc = (chapterId) => { const changebgc = (chapterId) => {
state.isactive = chapterId; state.isactive = chapterId;
@@ -1604,12 +1622,14 @@ export default {
const gqxy_hShow = () => { const gqxy_hShow = () => {
state.gqxy_hs = !state.gqxy_hs; state.gqxy_hs = !state.gqxy_hs;
}; };
const showDeleteALLModal = () => { const showDeleteALLModal = (type) => {
state.deleteAll = true; state.deleteAll = true;
state.deleteType = type;
}; };
const delete_exit = () => { const delete_exit = () => {
state.deleteAll = false; state.deleteAll = false;
deletecTaskAll(); deletecTaskAll();
state.deleteType = null;
}; };
const showDeleteModal = (id) => { const showDeleteModal = (id) => {
state.deleteID = id; state.deleteID = id;
@@ -1729,6 +1749,7 @@ export default {
chapterId: state.removeStageId, chapterId: state.removeStageId,
routerTaskIdList: state.selectRow, routerTaskIdList: state.selectRow,
}; };
console.log("移动关卡obj", obj);
api api
.moveTask(obj) .moveTask(obj)
.then((res) => { .then((res) => {
@@ -1736,12 +1757,15 @@ export default {
message.destroy(); message.destroy();
message.success("移动成功"); message.success("移动成功");
localStorage.setItem("chapterId", state.chooseChapterId); localStorage.setItem("chapterId", state.chooseChapterId);
state.selectRow = []; //选择行
state.selectAll = 0; //0未选择1全选2部分选择
getDetail(); getDetail();
}) })
.catch((err) => { .catch((err) => {
console.log("移动失败", err); console.log("移动失败", err);
}); });
state.visiblene = false; state.visiblene = false;
state.curLevel = null;
} }
}; };
//编辑的按钮 //编辑的按钮
@@ -1812,10 +1836,12 @@ export default {
}; };
const closeChangeModal = () => { const closeChangeModal = () => {
state.visiblene = false; state.visiblene = false;
state.curLevel = null;
}; };
const handleChangeStage = (value, option) => { const handleChangeStage = (value, option) => {
console.log("阶段改变", value, option); console.log("阶段改变", value, option);
state.removeStageId = option.chapterId; state.removeStageId = option.chapterId;
state.curLevel = option.name;
}; };
//显示切换模式抽屉 //显示切换模式抽屉

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -586,7 +586,17 @@
</div> </div>
</div> </div>
</div> </div>
<div style="width: 120px; text-align: center"> <div
style="
width: 120px;
text-align: center;
text-align: center;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
"
:title="element.creater"
>
{{ element.creater }} {{ element.creater }}
</div> </div>
<div style="width: 120px; text-align: center"> <div style="width: 120px; text-align: center">
@@ -1127,7 +1137,7 @@ export default {
voteId: "", //删除投票id voteId: "", //删除投票id
deleteID: "", deleteID: "",
selectRow: [], //选择行 selectRow: [], //选择行
curLevel: [], //阶段名称 curLevel: null, //阶段名称
selectAll: 0, //0未选择1全选2部分选择 selectAll: 0, //0未选择1全选2部分选择
updateStageID: null, //编辑阶段id updateStageID: null, //编辑阶段id
@@ -1209,7 +1219,7 @@ export default {
taskList: value.taskList, taskList: value.taskList,
value: value.stageId, value: value.stageId,
label: value.name, label: value.name,
courseId: value.courseId ? value.courseId : null courseId: value.courseId ? value.courseId : null,
}; };
array.push(obj); array.push(obj);
} }
@@ -1388,7 +1398,6 @@ export default {
getTableData(taskListAll); getTableData(taskListAll);
} }
} }
} else { } else {
console.log(stage); console.log(stage);
let stageList = res.data.data.stageList; //阶段数组 let stageList = res.data.data.stageList; //阶段数组
@@ -1406,16 +1415,16 @@ export default {
// console.log("任务列表", stage, arr); // console.log("任务列表", stage, arr);
// getTableData(arr); // getTableData(arr);
} }
//获取阶段列表 // //获取阶段列表
let stagearr = res.data.data.stageList; let stagearr = res.data.data.stageList;
let arrlist = state.curLevel; // let arrlist = state.curLevel;
console.log(stagearr, 111111); console.log(stagearr, 111111);
if (stagearr.length > 0) { if (stagearr.length > 0) {
getStageData(stagearr); getStageData(stagearr);
stagearr.map((value) => { // stagearr.map((value) => {
console.log(value); // console.log(value);
arrlist.push(value); // // arrlist.push(value);
}); // });
} }
//给阶段id赋初始值 //给阶段id赋初始值
let stageid = localStorage.getItem("stageId") let stageid = localStorage.getItem("stageId")
@@ -1489,8 +1498,11 @@ export default {
console.log("移动成功", res); console.log("移动成功", res);
message.destroy(); message.destroy();
message.success("移动成功"); message.success("移动成功");
state.selectRow = []; //选择行
state.selectAll = 0; //0未选择1全选2部分选择
console.log(state.removeStageId); console.log(state.removeStageId);
getTask(); getTask();
localStorage.setItem("stageId", state.chooseStageId); localStorage.setItem("stageId", state.chooseStageId);
}) })
.catch((err) => { .catch((err) => {
@@ -1636,7 +1648,7 @@ export default {
console.log("删除阶段成功", res); console.log("删除阶段成功", res);
message.success("删除阶段成功"); message.success("删除阶段成功");
closeDeleteStage(); closeDeleteStage();
localStorage.setItem("stageId", "") localStorage.setItem("stageId", "");
getTask(); getTask();
}) })
.catch((err) => { .catch((err) => {
@@ -1661,7 +1673,7 @@ export default {
"0px 1px 35px 0px rgba(118, 136, 166, 0.07)"; "0px 1px 35px 0px rgba(118, 136, 166, 0.07)";
}); });
const showDrawerOnline = (id, eleId) => { const showDrawerOnline = (id, eleId) => {
console.log('id, eleId',id, eleId); console.log("id, eleId", id, eleId);
state.addonlinevisible = true; state.addonlinevisible = true;
state.EditOnlineId = id; state.EditOnlineId = id;
state.projectTaskId = eleId; state.projectTaskId = eleId;