Merge branch 'develop'

# Conflicts:
#	src/App.vue
This commit is contained in:
yuping
2022-12-30 20:44:06 +08:00
14 changed files with 575 additions and 507 deletions

View File

@@ -26,6 +26,7 @@ export const editGroup = (obj) => http.post('/admin/project/editGroup', obj)
export const removeGroupStudent = (obj) => http.post('/admin/project/removeGroupStudent', obj)
//查看学员
export const studentProcess = (obj) => http.get('/admin/project/studentProcess', { params: obj })
export const studentRank = (obj) => http.get('/admin/project/studentRank', { params: obj })
//是否优秀学员
export const topStudent = (obj) => http.post('/admin/project/topStudent', obj)

View File

@@ -2,7 +2,7 @@ import http from "./config";
// 获取路径图详情-包含关卡及任务列表
export const GetRouterDetail = (routerId) => http.get(`/admin/router/detail?routerId=${routerId}`)
export const GetRouterDetail = (routerId,useTask="") => http.get(`/admin/router/detail?routerId=${routerId}&useTask=${useTask}`)
// 新建或编辑阶段任务
export const ProjectEditTask = (obj) => http.post('/admin/project/editTask',obj)

View File

@@ -77,7 +77,7 @@ export default {
{
id: 1,
name: "管理员",
go: "/learningpath",
go: "/manage/learningpath",
},
{
id: 2,

View File

@@ -722,7 +722,7 @@ export default {
console.log(e);
state.isClick = false;
message.destroy();
message.error(`添加失败`);
// message.error(`添加失败`);
});
}
};
@@ -840,8 +840,9 @@ export default {
}
})
.catch((err) => {
console.log(err)
message.destroy();
message.error("获取员工失败" + err);
// message.error("获取员工失败" + err);
});
};
const handleSearch = debounce((memberValue) => {

View File

@@ -437,8 +437,8 @@ export default {
ctx.emit("update:addtestVisible", false);
ctx.emit("update:edit", false);
ctx.emit("update:EditTestId", state.EditTestId);
ctx.emit("update:testName", state.testName);
console.log("statetestName", state.testName);
ctx.emit("update:testName", state.test.examinationName);
console.log("statetestName", state.test.examinationName);
localStorage.setItem("stageId", props.chooseStageId);
localStorage.setItem("chapterId", props.isactive);
state.addLoading = false;
@@ -687,7 +687,8 @@ export default {
state.paperId = value.paperId;
state.paperName = value.testName;
state.id = value.id;
state.testName = value.testName;
//state.testName = value.testName;
console.log("value",value);
};
const range = (start, end) => {

View File

@@ -1,472 +1,480 @@
<template>
<a-drawer
:visible="EvalListVisible"
class="drawerStyle addonlineDrawer"
width="80%"
title="选择测评"
placement="right"
@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="contentMain">
<div class="main_items">
<div class="mi_ipts">
<div class="mii_ipt">
<div class="ipt_name"></div>
<div class="fi_input">
<a-input
v-model:value="inputV1"
style="width: 424px; height: 40px; border-radius: 8px"
placeholder="请输入项目名称"
/>
</div>
</div>
</div>
<div class="mi_btns">
<div class="btn btn1" @click="searchList">
<div class="search"></div>
<div class="btnText">搜索</div>
</div>
<div class="btn btn2" @click="resetData">
<div class="search"></div>
<div class="btnText">重置</div>
</div>
</div>
</div>
<div class="main_table">
<a-table
style="border: 1px solid #f2f6fe"
:columns="columns"
:data-source="tableData"
:loading="tableDataTotal === -1 ? true : false"
:pagination="false"
:row-selection="{
type: 'radio',
selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
}"
/>
<div class="tableBox" style="margin-top: 85px">
<div class="pa">
<a-pagination
v-if="tableDataTotal > 10"
:showSizeChanger="false"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize"
:current="currentPage"
:total="tableDataTotal"
class="pagination"
@change="changePagination"
/>
</div>
</div>
</div>
</div>
<div class="main_btns">
<button class="btn1" @click="closeDrawer">取消</button>
<button class="btn2" @click="checkFinish">确定</button>
</div>
</div>
</a-drawer>
<a-drawer :visible="EvalListVisible" class="drawerStyle addonlineDrawer" width="80%" title="选择测评" placement="right"
@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="contentMain">
<div class="main_items">
<div class="mi_ipts">
<div class="mii_ipt">
<div class="ipt_name"></div>
<div class="fi_input">
<a-input v-model:value="inputV1" style="width: 424px; height: 40px; border-radius: 8px"
placeholder="请输入项目名称" />
</div>
</div>
</div>
<div class="mi_btns">
<div class="btn btn1" @click="searchList">
<div class="search"></div>
<div class="btnText">搜索</div>
</div>
<div class="btn btn2" @click="resetData">
<div class="search"></div>
<div class="btnText">重置</div>
</div>
</div>
</div>
<div class="main_table">
<a-table style="border: 1px solid #f2f6fe" :columns="columns" :data-source="tableData"
:loading="tableDataTotal === -1 ? true : false" :pagination="false" :row-selection="{
type: 'radio',
selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
}" />
<div class="tableBox" style="margin-top: 85px">
<div class="pa">
<a-pagination v-if="tableDataTotal > 10" :showSizeChanger="false" showQuickJumper="true"
hideOnSinglePage="true" :pageSize="pageSize" :current="currentPage" :total="tableDataTotal"
class="pagination" @change="changePagination" />
</div>
</div>
</div>
</div>
<div class="main_btns">
<button class="btn1" @click="closeDrawer">取消</button>
<button class="btn2" @click="checkFinish">确定</button>
</div>
</div>
</a-drawer>
</template>
<script>
import { reactive, toRefs } from "vue";
import * as api from "../../api/indexEval";
export default {
name: "EvList",
props: {
EvalListVisible: {
type: Boolean,
default: false,
},
evaluationTypeId: {
type: Number,
default: null,
},
evaluationTypeName: {
type: String,
default: "",
},
},
setup(props, ctx) {
const state = reactive({
currentPage: 1,
tableDataTotal: 0,
pageSize: 10,
inputV1: "",
evaluationTypeId: null,
evaluationTypeName: "",
tableData: [],
selectedRowKeys: [],
evListData: {},
columns: [
{
title: "测评编号",
width: "20%",
dataIndex: "quiz_code",
key: "code",
ellipsis: true,
},
{
title: "测评名称",
width: "20%",
dataIndex: "title",
key: "title",
align: "center",
ellipsis: true,
},
{
title: "备注",
width: "40%",
dataIndex: "theme_desc",
key: "content",
align: "center",
ellipsis: true,
},
// {
// title: "状态",
// width: "13%",
// dataIndex: "status",
// key: "status",
// align: "center",
// },
// {
// title: "价格",
// width: "13%",
// dataIndex: "quiz_price",
// key: "price",
// align: "center",
// },
{
title: "可答题人数",
width: "20%",
dataIndex: "quiz_range",
key: "time",
align: "center",
ellipsis: true,
},
],
});
const onSelectChange = (selectedRowKeys, selectedRows) => {
if (selectedRowKeys.length > 1) {
return;
}
state.selectedRowKeys = selectedRowKeys;
state.evListData = selectedRows[0] ? selectedRows[0] : {};
console.log("state.evListData", state.evListData);
};
const closeDrawer = () => {
state.selectedRowKeys = [];
state.evListData = {};
state.inputV1 = "";
ctx.emit("update:EvalListVisible", false);
};
const afterVisibleChange = (bol) => {
if (bol == true) {
getAllEvalText();
}
};
const checkFinish = () => {
ctx.emit("getEvListData", state.evListData);
closeDrawer();
};
const changePagination = (page) => {
state.currentPage = page;
getAllEvalText();
};
//如果编辑情况会通过父亲传回来evaluationTypeId遍历出相同的那个选项 再将那个选项的key值赋给state.selectRowKeys
const getTableDataList = (tableData) => {
let data = tableData;
let array = [];
let arrayKey = [];
if (props.evaluationTypeName != "") {
data.map((value, index) => {
let obj = {
key: index + 1,
status: value.status,
quiz_code: value.quiz_code,
quiz_kid: value.quiz_kid,
title: value.title,
theme_desc: value.theme_desc,
quiz_price: value.quiz_price,
quiz_range: value.quiz_range,
quiz_type: value.quiz_type,
};
array.push(obj);
if (obj.title == props.evaluationTypeName) {
arrayKey.push(obj.key);
}
});
state.tableData = array;
state.selectedRowKeys = arrayKey;
} else {
data.map((value, index) => {
let obj = {
key: index + 1,
status: value.status,
quiz_code: value.quiz_code,
quiz_kid: value.quiz_kid,
title: value.title,
theme_desc: value.theme_desc,
quiz_price: value.quiz_price,
quiz_range: value.quiz_range,
quiz_type: value.quiz_type,
};
array.push(obj);
});
state.tableData = array;
}
};
name: "EvList",
props: {
EvalListVisible: {
type: Boolean,
default: false,
},
evaluationTypeId: {
type: Number,
default: null,
},
evaluationTypeName: {
type: String,
default: "",
},
},
setup(props, ctx) {
const state = reactive({
currentPage: 1,
tableDataTotal: 0,
pageSize: 10,
inputV1: "",
evaluationTypeId: null,
evaluationTypeName: "",
tableData: [],
selectedRowKeys: [],
evListData: {},
columns: [
{
title: "测评编号",
width: "20%",
dataIndex: "quiz_code",
key: "code",
ellipsis: true,
},
{
title: "测评名称",
width: "20%",
dataIndex: "title",
key: "title",
align: "center",
ellipsis: true,
},
{
title: "备注",
width: "40%",
dataIndex: "theme_desc",
key: "content",
align: "center",
ellipsis: true,
},
// {
// title: "状态",
// width: "13%",
// dataIndex: "status",
// key: "status",
// align: "center",
// },
// {
// title: "价格",
// width: "13%",
// dataIndex: "quiz_price",
// key: "price",
// align: "center",
// },
{
title: "可答题人数",
width: "20%",
dataIndex: "quiz_range",
key: "time",
align: "center",
ellipsis: true,
},
],
});
const onSelectChange = (selectedRowKeys, selectedRows) => {
if (selectedRowKeys.length > 1) {
return;
}
state.selectedRowKeys = selectedRowKeys;
state.evListData = selectedRows[0] ? selectedRows[0] : {};
console.log("state.evListData", state.evListData);
};
const closeDrawer = () => {
state.selectedRowKeys = [];
state.evListData = {};
state.inputV1 = "";
ctx.emit("update:EvalListVisible", false);
};
const afterVisibleChange = (bol) => {
if (bol == true) {
getAllEvalText();
}
};
const checkFinish = () => {
ctx.emit("getEvListData", state.evListData);
closeDrawer();
};
const changePagination = (page) => {
state.currentPage = page;
getAllEvalText();
};
//如果编辑情况会通过父亲传回来evaluationTypeId遍历出相同的那个选项 再将那个选项的key值赋给state.selectRowKeys
const getTableDataList = (tableData) => {
let data = tableData;
let array = [];
let arrayKey = [];
if (props.evaluationTypeName != "") {
data.map((value, index) => {
let obj = {
key: index + 1,
status: value.status,
quiz_code: value.quiz_code,
quiz_kid: value.quiz_kid,
title: value.title,
theme_desc: value.notes,
quiz_price: value.quiz_price,
quiz_range: value.limit_number,
quiz_type: value.quiz_type,
};
array.push(obj);
if (obj.title == props.evaluationTypeName) {
arrayKey.push(obj.key);
}
});
state.tableData = array;
state.selectedRowKeys = arrayKey;
} else {
data.map((value, index) => {
let obj = {
key: index + 1,
status: value.status,
quiz_code: value.quiz_code,
quiz_kid: value.quiz_kid,
title: value.title,
theme_desc: value.notes,
quiz_price: value.quiz_price,
quiz_range: value.limit_number,
quiz_type: value.quiz_type,
};
array.push(obj);
});
state.tableData = array;
}
};
//获取测评列表
const getAllEvalText = () => {
let objael = {
keyword: state.inputV1,
};
api
.choiceEvaluation(objael)
.then((res) => {
state.tableDataTotal = 9;
// console.log("测评列表", res.data.data);
getTableDataList(res.data.data);
})
.catch(() => {});
};
//搜索测评列表
const searchList = () => {
state.selectedRowKeys = [];
if (state.inputV1 !== "") {
getAllEvalText();
} else {
resetData();
}
};
//重置测评列表
const resetData = () => {
state.currentPage = 1;
state.selectedRowKeys = [];
state.evListData = {};
getAllEvalText();
};
return {
...toRefs(state),
afterVisibleChange,
closeDrawer,
onSelectChange,
getTableDataList,
checkFinish,
changePagination,
searchList,
resetData,
};
},
//获取测评列表
const getAllEvalText = () => {
let objael = {
keyword: state.inputV1,
};
api
.choiceEvaluation(objael)
.then((res) => {
state.tableDataTotal = 9;
console.log("测评列表", res.data.data);
getTableDataList(res.data.data);
})
.catch(() => { });
};
//搜索测评列表
const searchList = () => {
state.selectedRowKeys = [];
if (state.inputV1 !== "") {
getAllEvalText();
} else {
resetData();
}
};
//重置测评列表
const resetData = () => {
state.currentPage = 1;
state.selectedRowKeys = [];
state.evListData = {};
getAllEvalText();
};
return {
...toRefs(state),
afterVisibleChange,
closeDrawer,
onSelectChange,
getTableDataList,
checkFinish,
changePagination,
searchList,
resetData,
};
},
};
</script>
<style lang="scss">
.ant-table-striped :deep(.table-striped) td {
background-color: #fafafa !important;
background-color: #fafafa !important;
}
.addonlineDrawer {
.drawerMain {
.header {
height: 73px;
border-bottom: 1px solid #e8e8e8;
display: flex;
justify-content: space-between;
align-items: center;
flex-shrink: 0;
.headerTitle {
font-size: 18px;
font-weight: 600;
color: #333333;
line-height: 25px;
margin-left: 24px;
}
}
.contentMain {
padding-right: 12px;
.main_items {
display: flex;
.drawerMain {
.header {
height: 73px;
border-bottom: 1px solid #e8e8e8;
display: flex;
justify-content: space-between;
align-items: center;
flex-shrink: 0;
margin-bottom: 12px;
flex-wrap: wrap;
.mi_ipts {
display: flex;
margin-bottom: 20px;
.mii_ipt {
display: flex;
align-items: center;
margin-right: 24px;
.ipt_name {
white-space: nowrap;
}
}
}
.mi_btns {
display: flex;
.headerTitle {
font-size: 18px;
font-weight: 600;
color: #333333;
line-height: 25px;
margin-left: 24px;
}
}
cursor: pointer;
.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-left: 14px;
flex-shrink: 0;
.search {
background-size: 100%;
}
.btnText {
font-size: 14px;
font-weight: 400;
line-height: 36px;
margin-left: 5px;
}
}
.btn1 {
background: rgb(64, 158, 255);
.search {
width: 15px;
height: 17px;
background-image: url("@/assets/images/coursewareManage/search0.png");
}
.btnText {
color: rgb(255, 255, 255);
}
}
.btn2 {
background: rgb(255, 255, 255);
.search {
width: 15px;
height: 17px;
background-image: url("@/assets/images/coursewareManage/reset1.png");
}
.btnText {
color: rgb(64, 158, 255);
}
}
.btn1:hover {
background: rgb(255, 255, 255);
.search {
background-image: url("@/assets/images/courseManage/search1.png");
}
.btnText {
color: #4ea6ff;
}
}
.btn2:hover {
background: rgba(64, 158, 255, 1);
.search {
background-image: url("@/assets/images/courseManage/reset0.png");
}
.btnText {
color: #ffffff;
}
}
}
}
.main_notice {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 32px;
height: 40px;
background-color: #e9f6fe;
.mntc_left {
display: flex;
align-items: center;
.notice_icon {
width: 14px;
height: 14px;
margin-right: 9px;
margin-left: 9px;
background-image: url(@/assets/images/coursewareManage/gan.png);
background-size: 100% 100%;
}
}
.mntc_right {
cursor: pointer;
}
}
.main_table {
position: relative;
padding-bottom: 80px;
.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: 5px !important;
}
.ant-table-thead > tr > th {
background-color: rgba(239, 244, 252, 1);
}
th.h {
background-color: #eff4fc !important;
}
.contentMain {
padding-right: 12px;
.ant-table-tbody
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
> td {
background: #f6f9fd;
}
.pa {
left: 0;
width: 100%;
display: flex;
justify-content: center;
position: absolute;
bottom: 20px;
}
}
}
.main_items {
display: flex;
.main_btns {
height: 72px;
width: 100%;
bottom: 0;
left: 0;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
.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;
}
}
}
margin-bottom: 12px;
flex-wrap: wrap;
.mi_ipts {
display: flex;
margin-bottom: 20px;
.mii_ipt {
display: flex;
align-items: center;
margin-right: 24px;
.ipt_name {
white-space: nowrap;
}
}
}
.mi_btns {
display: flex;
cursor: pointer;
.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-left: 14px;
flex-shrink: 0;
.search {
background-size: 100%;
}
.btnText {
font-size: 14px;
font-weight: 400;
line-height: 36px;
margin-left: 5px;
}
}
.btn1 {
background: rgb(64, 158, 255);
.search {
width: 15px;
height: 17px;
background-image: url("@/assets/images/coursewareManage/search0.png");
}
.btnText {
color: rgb(255, 255, 255);
}
}
.btn2 {
background: rgb(255, 255, 255);
.search {
width: 15px;
height: 17px;
background-image: url("@/assets/images/coursewareManage/reset1.png");
}
.btnText {
color: rgb(64, 158, 255);
}
}
.btn1:hover {
background: rgb(255, 255, 255);
.search {
background-image: url("@/assets/images/courseManage/search1.png");
}
.btnText {
color: #4ea6ff;
}
}
.btn2:hover {
background: rgba(64, 158, 255, 1);
.search {
background-image: url("@/assets/images/courseManage/reset0.png");
}
.btnText {
color: #ffffff;
}
}
}
}
.main_notice {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 32px;
height: 40px;
background-color: #e9f6fe;
.mntc_left {
display: flex;
align-items: center;
.notice_icon {
width: 14px;
height: 14px;
margin-right: 9px;
margin-left: 9px;
background-image: url(@/assets/images/coursewareManage/gan.png);
background-size: 100% 100%;
}
}
.mntc_right {
cursor: pointer;
}
}
.main_table {
position: relative;
padding-bottom: 80px;
.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: 5px !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%;
display: flex;
justify-content: center;
position: absolute;
bottom: 20px;
}
}
}
.main_btns {
height: 72px;
width: 100%;
bottom: 0;
left: 0;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
.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;
}
}
}
}
</style>

View File

@@ -1,3 +1,4 @@
<!-- eslint-disable vue/no-use-v-if-with-v-for -->
<template>
<a-drawer
:visible="Seevisible"
@@ -28,8 +29,8 @@
<div class="sortbox">
<div class="sortname">进度排名</div>
<div class="sortnub">
<span class="nub1">2</span>
<span class="total">/10</span>
<span class="nub1">{{rank.current}}</span>
<span class="total">/{{rank.total}}</span>
</div>
</div>
<a-divider
@@ -47,6 +48,7 @@
<span class="total">/{{ totalReqCnt }}</span>
</div>
</div>
<!--
<a-divider
type="vertical"
style="
@@ -61,13 +63,11 @@
<span class="nub1">{{ certCnt }}</span>
</div>
</div>
-->
</div>
<div class="secondrow">
<div class="rowleft">{{ name }}</div>
<div class="rowbox" @click="showProMess">
<div class="shuom">说明</div>
<div><img src="../../assets/images/studentimg/chak.png" /></div>
</div>
</div>
<div class="mainbox">
<a-collapse v-model:activeKey="stageListActive">
@@ -86,12 +86,28 @@
v-for="value in stageList"
:key="value.stageId"
:header="value.stageName"
>
<div
>
<template #extra >
<div @click.stop="">
<div class="rowbox">
<a-popover title="阶段说明">
<template #content>
<p>{{value.remark}}</p>
</template>
<div class="shuom">说明</div>
</a-popover>
<div><img src="../../assets/images/studentimg/chak.png" /></div>
</div>
</div>
</template>
<div
class="rowclass"
v-for="(item, key) in value.taskProcessList"
:key="key"
>
<div class="leftclass">
<div>
<img
@@ -141,6 +157,7 @@
</div>
<div class="altext">{{ item.complete }}</div>
</div>
</div>
</a-collapse-panel>
</a-collapse>
@@ -157,7 +174,7 @@
<script>
import { reactive, toRefs } from "vue";
import ProMess from "./ProMess.vue";
import { studentProcess } from "../../api/indexProjStu";
import {studentProcess, studentRank} from "../../api/indexProjStu";
export default {
name: "SeeStu",
components: { ProMess },
@@ -188,6 +205,7 @@ export default {
Provisible: false,
showDown: true,
showDown1: false,
rank:{total:1,current:1},
stageList: [
// {
// stageName: "阶段1腾飞班阶段1",
@@ -227,6 +245,15 @@ export default {
ctx.emit("update:Seevisible", false);
};
const getStuRank = () => {
studentRank({
projectId: props.projectId,
studentId: props.checkStuId,
}).then(res=>{
state.rank = res.data.data
})
}
const showProMess = () => {
state.Provisible = true;
};
@@ -234,6 +261,7 @@ export default {
console.log("state", bool);
if (bool == true) {
check();
getStuRank()
}
};
const changeDown = () => {
@@ -293,14 +321,32 @@ export default {
const setStageList = (tableData) => {
let data = tableData;
let array = [];
data.map((value) => {
//无阶段任务
if(data?.length ==1 && data[0].stageId ==0){
data.map((value) => {
let obj = {
stageName: value.stageName,
stageId: value.stageId,
stageName:"无阶段任务",
stageId:0,
remark:value.remark,
taskProcessList: taskProcessList(value.taskProcessList),
};
array.push(obj);
});
}else{ //有阶段
data.map((value) => {
let obj = {
stageName: value.stageName,
stageId: value.stageId,
remark:value.remark,
taskProcessList: taskProcessList(value.taskProcessList),
};
if(value.stageId >0){
array.push(obj);
}
});
}
state.stageList = array;
};
const check = () => {
@@ -433,6 +479,14 @@ export default {
color: rgba(51, 51, 51, 1);
font-size: 16px;
}
}
.mainbox {
// height: 463px;
margin-right: 37px;
margin-top: 32px;
//border: 1px solid rgba(221, 238, 255, 1);
//border-radius: 6px;
.rowbox {
width: 64px;
height: 24px;
@@ -442,6 +496,7 @@ export default {
margin-left: 24px;
border: 1px solid rgba(64, 158, 255, 1);
background: rgba(64, 158, 255, 0.1);
margin-right: 480px;
cursor: pointer;
.shuom {
color: rgba(64, 158, 255, 1);
@@ -450,13 +505,6 @@ export default {
margin-right: 5px;
}
}
}
.mainbox {
// height: 463px;
margin-right: 37px;
margin-top: 32px;
//border: 1px solid rgba(221, 238, 255, 1);
//border-radius: 6px;
.ant-collapse {
background-color: #ffffff;
border: 0;

View File

@@ -420,7 +420,7 @@ export default {
const getClassData = (tabledata) => {
let data = tabledata;
let array = [];
let options = state.options2222;
// let options = state.options2222;
data.map((value) => {
let obj = {
key: value.offcourseId,
@@ -430,30 +430,31 @@ export default {
creator: value.createName || "-",
time: value.publishTime,
categoryId: value.categoryId,
category: "",
category: changeTreeSelectValue(String(value.categoryId)),
//需要判断content
};
console.log("obj", obj);
var breaked = false;
// var breaked = false;
// obj.category = changeTreeSelectValue(String(value.categoryId))
for (let i = 0; i < options.length; i++) {
for (let j = 0; j < options[i].children.length; j++) {
if (
String(options[i].children[j].value) ===
String(obj.categoryId)
) {
obj.category = changeTreeSelectValue(String(obj.categoryId))
// console.log("obj.categoryId", obj.categoryId);
// obj.category = options[i].children[j].title;
// console.log("obj. obj.category ", obj.category);
breaked = true;
break;
}
}
if (breaked) {
break;
}
}
// for (let i = 0; i < options.length; i++) {
// for (let j = 0; j < options[i].children.length; j++) {
// if (
// String(options[i].children[j].value) ===
// String(obj.categoryId)
// ) {
// obj.category = changeTreeSelectValue(String(obj.categoryId))
// // console.log("obj.categoryId", obj.categoryId);
// // obj.category = options[i].children[j].title;
// // console.log("obj. obj.category ", obj.category);
// breaked = true;
// break;
// }
// }
// if (breaked) {
// break;
// }
// }
if (!obj.category) {
obj.category = "-";
}

View File

@@ -165,9 +165,10 @@ const tablecolumns = ref([
title: "姓名",
dataIndex: "studentName",
key: "studentName",
width: "8%",
width: "12%",
align: "left",
className: "h",
ellipsis: true,
customRender: ({record: {studentName, topFlag}}) => (topFlag ? <div
style={{
display: "flex",
@@ -188,7 +189,7 @@ const tablecolumns = ref([
title: "工号",
dataIndex: "studentUserNo",
key: "studentUserNo",
width: "20%",
width: "15%",
align: "center",
className: "h",
ellipsis: true,

View File

@@ -111,6 +111,9 @@
</div>
<div class="mbl_items2" v-if="detail.intro">
<div class="item_nam">
<div class="asterisk_icon">
<img src="@/assets/images/coursewareManage/asterisk.png" alt="asterisk" />
</div>
<span style="margin-right: 14px">课程简介</span>
</div>
<div class="item_inp">

View File

@@ -283,7 +283,7 @@
<div class="fotnam">
<span>课程大纲</span>
</div>
<div class="fotarea">
<div v-if="ft_hs" class="fotarea">
<div style="border: 1px solid #ccc">
<Toolbar style="border-bottom: 1px solid #ccc" :editor="editorRef" :defaultConfig="toolbarConfig"
:mode="mode" />

View File

@@ -217,7 +217,7 @@ export default {
width: "10%",
ellipsis: true,
customRender: (time) => {
return <div style="color:#387DF7">{time.record.time}</div>;
return <div>{time.record.time}</div>;
},
},
{

View File

@@ -1796,7 +1796,7 @@ export default {
});
};
const reget = () => {
GetRouterDetail(state.routerId).then((res) => {
GetRouterDetail(state.routerId,"N").then((res) => {
// console.log("获取路径图详情", res);
state.styTitle = res.data.data.routerInfo.name;
state.cretime = res.data.data.routerInfo.createTime;
@@ -1868,6 +1868,7 @@ export default {
// 获取路径列表
const myGetRouterDetail = () => {
console.log('执行-------myGetRouterDetail')
GetRouterDetail(state.routerId)
.then((res) => {
console.log("router-list", res);

View File

@@ -1460,7 +1460,7 @@ export default {
getDetail();
};
const getDetail = () => {
GetRouterDetail(state.routerId)
GetRouterDetail(state.routerId,"N")
.then((res) => {
//给level赋初始值
state.level = res.data.data.chapterList;
@@ -1490,7 +1490,8 @@ export default {
state.deleteModal = false;
})
.catch((err) => {
message.error(err);
console.log(err)
// message.error(err);
});
};
@@ -1697,6 +1698,7 @@ export default {
deleteStudyTask({ routerTaskIds: state.deleteID })
.then((res) => {
state.deleteModal = false;
message.destroy();
message.success("删除成功");
state.selectRow = []; //选择行
state.selectAll = 0; //0未选择1全选2部分选择
@@ -1704,6 +1706,7 @@ export default {
console.log("删除成功", res);
})
.catch((err) => {
message.destroy();
message.error("删除失败");
console.log(err);
});