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

This commit is contained in:
zhangyc
2022-12-04 20:05:52 +08:00
6 changed files with 871 additions and 731 deletions

View File

@@ -230,13 +230,13 @@
>
<template #suffixIcon></template>
</a-tree>
<div
class="boeTreeTitle"
style="margin-top: 8px; cursor: pointer"
@click="addOrgModal"
>
确认添加
</div>
<!-- <div-->
<!-- class="boeTreeTitle"-->
<!-- style="margin-top: 8px; cursor: pointer"-->
<!-- @click="addOrgModal"-->
<!-- >-->
<!-- 确认添加-->
<!-- </div>-->
</div>
</div>
</a-tab-pane>
@@ -353,8 +353,8 @@
<div style="height: 160px" class="selectedsBox" id="selectedsBox">
<div class="selecteds" id="selecteds">
<!-- 遍历生成 -->
<div class="chose" v-for="item in choosepeople" :key="item.key">
<div>{{ item.name || item.realName }}</div>
<div class="chose" v-for="(item,index) in choosepeople" :key="index">
<div>{{ item?.name || item?.realName }}</div>
<div class="ch" @click="deleteChoosePeople(item)"></div>
</div>
</div>
@@ -583,6 +583,7 @@ import {
// batchLoadList,
} from "../../utils/utils";
import * as api from "../../api/index1";
export default {
name: "ProjCheckShip",
props: {
@@ -894,8 +895,14 @@ export default {
//快速选人 选中的数组
const onSelectChange = (selectedRowKeys, item) => {
console.log("selectedRowKeys changed: ", selectedRowKeys, item);
console.log("choosepeople : ", state.choosepeople);
state.selectedRowKeys = selectedRowKeys;
state.choosepeople = item.reverse();
const se = state.studentList.map(e => e.id).join(',') || ''
const addItem = item.filter(e => (e && !se.includes(e.id + ',')))
addItem.forEach(e => {
e.name = e.realName
})
state.choosepeople = [...addItem.reverse(), ...state.studentList];
selectedsHeight();
// if (selectedRowKeys.length > 0 && item.length > 0) {
// state.selectedRowKeys.push(selectedRowKeys[selectedRowKeys.length - 1]);
@@ -911,14 +918,15 @@ export default {
const deleteChoosePeople = (item) => {
let arr = state.choosepeople;
for (let i = 0; i < arr.length; i++) {
if (arr[i].key === item.key) {
if (arr[i].id == item.id) {
arr.splice(i, 1);
}
}
state.choosepeople = arr;
state.studentList = state.studentList.filter(e => e.id != item.id)
let array = state.selectedRowKeys;
for (let i = 0; i < array.length; i++) {
if (array[i] === item.key) {
if (array[i] === item.id) {
array.splice(i, 1);
}
}
@@ -1298,7 +1306,7 @@ export default {
state.choosepeople.map((value) => {
let obj = {
id: value.id,
name: value.realName,
name: value.name,
};
choosepeople.push(obj);
});
@@ -1351,15 +1359,10 @@ export default {
// console.log("获取权限名单成功", res);
if (res.data.code === 200) {
let studentArr = res.data.data.studentList;
let selectedRowKeys = [];
let choosepeople = [];
for (let i = 0; i < studentArr.length; i++) {
selectedRowKeys.push(studentArr[i].id);
choosepeople.push(studentArr[i]);
}
state.studentList = res.data.data.studentList;
state.choosepeople = res.data.data.studentList;
//快速选人
state.selectedRowKeys = selectedRowKeys;
state.choosepeople = choosepeople;
state.selectedRowKeys = studentArr.map(e => e.id);
let deptArr = res.data.data.deptList;
let selectedKeys1 = [];
let chooseorganization = [];
@@ -1433,6 +1436,7 @@ export default {
.ant-drawer-content-wrapper {
max-width: 1300px !important;
}
.drawerMain {
min-width: 600px;
margin: 0px 32px 0px 32px;
@@ -1440,6 +1444,7 @@ export default {
display: flex;
flex-direction: column;
overflow-x: auto;
.header {
height: 73px;
border-bottom: 1px solid #e8e8e8;
@@ -1449,6 +1454,7 @@ export default {
align-items: center;
// background-color: red;
margin-bottom: 20px;
.headerTitle {
font-size: 18px;
font-weight: 600;
@@ -1457,6 +1463,7 @@ export default {
// margin-left: 24px;
}
}
.main {
display: flex;
// min-width: 1200px;
@@ -1470,31 +1477,38 @@ export default {
flex-shrink: 0;
// height: 100%;
border-right: 1px solid rgba(233, 233, 233, 1);
.tabs {
margin-right: 33px;
.tab1 {
display: flex;
flex-wrap: wrap;
// justify-content: space-between;
align-items: center;
.t1 {
display: flex;
align-items: center;
margin-bottom: 5px;
}
.nameinp {
display: flex;
align-items: center;
margin-top: 10px;
.namee {
color: rgba(0, 0, 0, 0.85);
font-size: 14px;
}
}
.btns {
display: flex;
margin-top: 10px;
margin-left: 34px;
.btn1 {
width: 100px;
height: 40px;
@@ -1508,10 +1522,12 @@ export default {
border-radius: 8px;
border: 1px solid #409eff;
cursor: pointer;
.wz {
margin-left: 10px;
}
}
.btn2 {
width: 100px;
height: 40px;
@@ -1524,15 +1540,18 @@ export default {
border-radius: 8px;
cursor: pointer;
border: 1px solid #409eff;
.wz {
margin-left: 10px;
}
}
}
}
.btns {
display: flex;
margin-top: 10px;
.btn1 {
width: 100px;
height: 40px;
@@ -1546,10 +1565,12 @@ export default {
border-radius: 8px;
border: 1px solid #409eff;
cursor: pointer;
.wz {
margin-left: 10px;
}
}
.btn2 {
width: 100px;
height: 40px;
@@ -1562,11 +1583,13 @@ export default {
border-radius: 8px;
cursor: pointer;
border: 1px solid #409eff;
.wz {
margin-left: 10px;
}
}
}
.line {
width: 100%;
height: 40px;
@@ -1576,6 +1599,7 @@ export default {
align-items: center;
margin-top: 20px;
border: 1px solid #c3e6fc;
.inline {
width: 95%;
height: 100%;
@@ -1586,25 +1610,30 @@ export default {
height: 100%;
display: flex;
align-items: center;
.img {
width: 14px;
height: 15px;
background-image: url(../../assets/images/leveladd/gan.png);
background-size: 100% 100%;
}
.text {
color: #999ba3;
}
.text2 {
color: #4ea6ff;
margin-left: 5px;
margin-right: 5px;
}
.text3 {
color: #999ba3;
margin-left: 20px;
}
}
.right1 {
font-size: 14px;
font-weight: 400;
@@ -1616,9 +1645,11 @@ export default {
}
}
}
.chooseLeft {
display: flex;
justify-content: space-between;
.boeTree {
margin-right: 20px;
// margin-top: 20px;
@@ -1651,6 +1682,7 @@ export default {
margin-bottom: 8px;
margin-top: 20px;
}
.treeMain {
width: 280px;
border-radius: 4px;
@@ -1660,45 +1692,56 @@ export default {
padding-top: 10px;
padding-left: 5px;
}
.ant-tree .ant-tree-node-content-wrapper {
flex-shrink: 0;
}
.ant-tree-indent-unit {
width: 5px;
}
.ant-tree
.ant-tree-node-content-wrapper-normal.ant-tree-node-selected {
background-color: rgba(255, 255, 255, 0);
color: #409eff;
}
.ant-tree .ant-tree-node-selected {
background-color: rgba(255, 255, 255, 0);
// color:#409EFF;
}
// .ant-tree .ant-tree-title{
// background-color: pink;
// }
}
.tabb {
.ant-table-thead > tr > th {
background-color: rgba(240, 246, 252, 1);
color: rgba(0, 0, 0, 0.85);
}
.ant-table-tbody > tr > td {
border-bottom: 1px solid #f0f6fc;
color: rgba(0, 0, 0, 0.65);
}
th.h {
background-color: #eff4fc !important;
}
.ant-table-tbody
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
> td {
background: rgba(250, 250, 250, 1);
}
.ant-table-selection-column {
padding: 0 !important;
}
// table tr td.ant-table-selection-column {
// text-align: right;
// }
@@ -1725,26 +1768,31 @@ export default {
}
}
}
.tab2 {
display: flex;
align-items: center;
// margin-top: 10px;
flex-wrap: wrap;
justify-content: space-between;
.nameinp {
display: flex;
align-items: center;
margin-top: 10px;
.namee {
color: rgba(0, 0, 0, 0.85);
font-size: 14px;
}
}
.t1 {
display: flex;
align-items: center;
margin-bottom: 5px;
}
.btns {
display: flex;
// margin-top: -10px;
@@ -1761,10 +1809,12 @@ export default {
border-radius: 8px;
border: 1px solid #409eff;
cursor: pointer;
.wz {
margin-left: 10px;
}
}
.btn2 {
width: 100px;
height: 40px;
@@ -1777,35 +1827,43 @@ export default {
border-radius: 8px;
cursor: pointer;
border: 1px solid #409eff;
.wz {
margin-left: 10px;
}
}
}
.organize {
color: rgba(0, 0, 0, 0.85);
font-size: 14px;
white-space: nowrap;
}
.ant-select-dropdown {
min-width: 800px !important;
}
.ant-select {
border-radius: 8px !important;
// background-color: red;
}
.ant-cascader {
width: 264px;
height: 40px;
border-radius: 8px !important;
.ant-select-selector {
height: 100%;
}
.ant-select-selection-search-input {
height: 40px;
}
}
}
.boeTree {
.boeTreeTitle {
width: 280px;
@@ -1822,6 +1880,7 @@ export default {
margin-bottom: 8px;
margin-top: 20px;
}
.treeMain {
width: 280px;
border-radius: 4px;
@@ -1831,21 +1890,26 @@ export default {
padding-top: 10px;
padding-left: 5px;
}
.ant-tree .ant-tree-node-content-wrapper {
flex-shrink: 0;
}
.ant-tree-indent-unit {
width: 5px;
}
.ant-tree
.ant-tree-node-content-wrapper-normal.ant-tree-node-selected {
background-color: rgba(255, 255, 255, 0);
color: #409eff;
}
.ant-tree .ant-tree-node-selected {
background-color: rgba(255, 255, 255, 0);
// color:#409EFF;
}
// .ant-tree-switcher_open+ .ant-tree-checkbox{
// display: none !important;
// }
@@ -1858,19 +1922,23 @@ export default {
}
}
}
.right {
width: 320px;
flex-shrink: 0;
overflow-y: auto;
.onerow {
display: flex;
justify-content: space-between;
align-items: center;
margin-right: 40px;
flex-wrap: wrap;
.onleft {
display: flex;
text-align: center;
.already {
color: rgba(51, 51, 51, 1);
font-size: 16px;
@@ -1879,17 +1947,20 @@ export default {
white-space: nowrap;
// margin-bottom: 20px;
}
.count {
color: #388be1;
font-size: 16px;
margin: 0 6px;
}
.peo {
color: rgba(51, 51, 51, 1);
font-size: 16px;
font-weight: 500;
}
}
.clbox {
margin-left: 30px;
display: flex;
@@ -1900,6 +1971,7 @@ export default {
height: 32px;
border-radius: 4px;
background: #409eff;
.colose {
width: 16px;
height: 16px;
@@ -1910,12 +1982,14 @@ export default {
background-size: 100%;
margin-right: 4px;
}
.allclear {
color: rgba(255, 255, 255, 1);
font-size: 14px;
}
}
}
.line {
width: 90%;
height: 1px;
@@ -1923,17 +1997,20 @@ export default {
margin-left: 12px;
margin-top: 20px;
}
.tit {
font-size: 14px;
font-weight: 500;
margin-top: 12px;
margin-left: 32px;
}
.selectedsBox {
position: relative;
// height: 160px;
overflow: hidden;
}
.selecteds {
display: flex;
// flex-wrap:wrap;
@@ -1945,6 +2022,7 @@ export default {
// height: 170px;
// overflow: hidden;
flex-shrink: 0;
.chose {
// width: 64px;
padding-left: 10px;
@@ -1961,6 +2039,7 @@ export default {
font-size: 12px;
position: relative;
flex-shrink: 0;
.ch {
position: absolute;
width: 18px;
@@ -1973,6 +2052,7 @@ export default {
}
}
}
.btnn {
height: 72px;
width: 100%;
@@ -1984,6 +2064,7 @@ export default {
align-items: center;
justify-content: center;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
.btn1 {
width: 100px;
height: 40px;
@@ -1993,6 +2074,7 @@ export default {
background-color: #fff;
cursor: pointer;
}
.btn2 {
cursor: pointer;
width: 100px;
@@ -2006,43 +2088,55 @@ export default {
}
}
}
.changetreedropdown {
width: 500px !important;
.ant-select-tree-list-scrollbar {
width: 5px !important;
.ant-select-tree-list-scrollbar-thumb {
background-color: #4ea6ff !important;
}
}
.ant-select-tree-indent-unit {
width: 7px !important;
}
}
.changetreedropdownboe {
width: 240px !important;
border-radius: 5px;
min-height: 600px !important;
.ant-select-tree-list-scrollbar {
width: 5px !important;
.ant-select-tree-list-scrollbar-thumb {
background-color: #4ea6ff !important;
}
}
.ant-select-tree-indent-unit {
width: 7px !important;
}
}
.confirmAddOrg {
.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;
@@ -2063,15 +2157,18 @@ export default {
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;
@@ -2079,6 +2176,7 @@ export default {
background-image: url(@/assets/images/taskpage/gan.png);
background-size: 100% 100%;
}
.close_exit {
position: absolute;
right: 42px;
@@ -2089,6 +2187,7 @@ export default {
background-size: 100% 100%;
}
}
.body {
width: 100%;
margin: 34px auto 56px auto;
@@ -2098,6 +2197,7 @@ export default {
flex-direction: column;
// background-color: red;
position: relative;
.back {
position: absolute;
top: 30px;
@@ -2106,10 +2206,12 @@ export default {
color: #666666;
}
}
.del_btnbox {
display: flex;
margin: 30px auto;
justify-content: center;
.del_btn {
width: 100px;
height: 40px;
@@ -2120,17 +2222,20 @@ export default {
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;
@@ -2140,6 +2245,7 @@ export default {
}
}
}
.ant-modal-close-x {
display: none;
}

View File

@@ -460,11 +460,15 @@
</div>
<div class="time">
<div class="timetext">开始时间</div>
<div class="timetext">{{ item.startTime!==null?item.startTime:''}}</div>
<div class="timetext">
{{ item.startTime !== null ? item.startTime : "" }}
</div>
</div>
<div class="progress">
<div class="progresstext">
{{ item.complete?item.complete:0 }}/{{ item.total?item.total:0 }}
{{ item.complete ? item.complete : 0 }}/{{
item.total ? item.total : 0
}}
</div>
<div style="display: flex">
<a-progress
@@ -768,7 +772,10 @@
<div class="box"></div>
<div class="onetitle">上传共享文档</div>
<div class="oneedi">
<a-switch v-model:checked="docChecked" @change="checkedClose"></a-switch>
<a-switch
v-model:checked="docChecked"
@change="checkedClose"
></a-switch>
</div>
</div>
<div class="btnbox" style="margin: 20px">
@@ -1217,6 +1224,15 @@
</div>
</div>
</a-modal>
<!-- 二维码弹窗 -->
<two-dimensional-code
v-model:codevisible="codevisible"
:codeInfo="codeInfo"
index="0"
type="课程二维码"
/>
<!-- 二维码弹窗 -->
</div>
</template>
<script>
@@ -1243,6 +1259,7 @@ import { GetRouterDetail } from "@/api/indexTask";
import * as api from "../../api/index1";
import { toDate } from "../../api/method";
import { editRoutered } from "../../api/indexLearningPath";
import TwoDimensionalCode from "../../components/TwoDimensionalCode.vue";
export default {
name: "LevelAdd",
components: {
@@ -1257,6 +1274,7 @@ export default {
FaceManage,
WorkManage,
SeeStu,
TwoDimensionalCode,
},
setup() {
// const routers = useRoute();
@@ -1888,7 +1906,7 @@ export default {
const getOverview = () => {
getRouterOverview(state.routerId)
.then((res) => {
console.log(res)
console.log(res);
Object.keys(res.data.data.routerInfoOverview).forEach((item) => {
levelList.routerInfoOverview[item] =
res.data.data.routerInfoOverview[item] || 0;
@@ -1912,13 +1930,13 @@ export default {
// 设置上传图片开关
const checkedClose = (data, a) => {
console.log(data,a)
state.docChecked = data
console.log(data, a);
state.docChecked = data;
console.log({
routerId: state.routerId,
status: state.action,
attachSwitch: data ? 1: -1
})
attachSwitch: data ? 1 : -1,
});
// 更新开关状态
editRoutered({
attach: JSON.stringify(state.fileList),
@@ -1927,7 +1945,7 @@ export default {
remark: state.remark,
routerId: state.routerId,
status: state.action,
attachSwitch: data ? 1: -1
attachSwitch: data ? 1 : -1,
})
.then((res) => {
console.log(res);
@@ -1935,16 +1953,16 @@ export default {
.catch((err) => {
console.log(err);
});
}
};
// 获取路径列表
const myGetRouterDetail = () => {
GetRouterDetail(state.routerId)
.then((res) => {
console.log('router-list',res)
state.fileList = JSON.parse(res.data.data.routerInfo.attach)
state.docChecked = res.data.data.routerInfo.attachSwitch == 1?true:false
console.log("router-list", res);
state.fileList = JSON.parse(res.data.data.routerInfo.attach);
state.docChecked =
res.data.data.routerInfo.attachSwitch == 1 ? true : false;
if (res.data.data.routerInfo.status == 1) {
state.nodata = false;
}
@@ -1990,7 +2008,7 @@ export default {
remark: state.remark,
routerId: state.routerId,
status: state.action,
attachSwitch: state.docChecked?1:-1
attachSwitch: state.docChecked ? 1 : -1,
})
.then((res) => {
console.log(res);
@@ -2213,7 +2231,7 @@ export default {
deleteStu,
totask,
tostudent,
checkedClose
checkedClose,
};
},
};

View File

@@ -928,34 +928,32 @@ export default defineComponent({
api
.templateDetail(localStorage.getItem("projectTemplateId"))
.then((res) => {
console.log('get model list ----->',res, res.data.data.stageList)
state.taskSyllabus = [];
console.log(res);
state.projectInfo.name = res.data.data.projectTemplateInfo.name;
state.projectInfo.beginTime =
res.data.data.projectTemplateInfo.beginTime;
state.projectInfo.beginTime = res.data.data.projectTemplateInfo.beginTime;
state.projectInfo.endTime = res.data.data.projectTemplateInfo.endTime;
state.projectInfo.manager = res.data.data.projectTemplateInfo.manager;
state.projectInfo.notice = res.data.data.projectTemplateInfo.notice;
state.projectInfo.sourceBelongId =
res.data.data.projectTemplateInfo.sourceBelongId;
state.projectInfo.managerId =
res.data.data.projectTemplateInfo.managerId;
state.projectInfo.remark = res.data.data.stageList.remark;
state.projectInfo.courseSyncFlag =
res.data.data.projectTemplateInfo.courseSyncFlag;
state.projectInfo.sourceBelongId = res.data.data.projectTemplateInfo.sourceBelongId;
state.projectInfo.managerId = res.data.data.projectTemplateInfo.managerId;
state.projectInfo.remark = res.data.data.projectTemplateInfo.remark;
state.projectInfo.courseSyncFlag = res.data.data.projectTemplateInfo.courseSyncFlag;
state.projectInfo.level = res.data.data.projectTemplateInfo.level;
state.projectInfo.systemId =
res.data.data.projectTemplateInfo.systemId;
state.projectInfo.systemId = res.data.data.projectTemplateInfo.systemId;
state.projectInfo.boeFlag = res.data.data.projectTemplateInfo.boeFlag;
state.projectInfo.noticeFlag =
res.data.data.projectTemplateInfo.noticeFlag;
state.projectInfo.noticeFlag = res.data.data.projectTemplateInfo.noticeFlag;
state.projectInfo.remark = res.data.data.projectTemplateInfo.remark;
state.projectInfo.status = res.data.data.projectTemplateInfo.status;
state.projectInfo.picUrl = res.data.data.projectTemplateInfo.picUrl;
state.projectInfo.attach =res.res.data.data.projectTemplateInfo.attach;
state.projectInfo.attach = res.data.data.projectTemplateInfo.attach;
let data = res.data.data.stageList;
console.log("data=====", data);
for (let i in data) {
console.log('what ------ > ', i,data)
state.taskSyllabus.push({ text: data[i].name, children: [] });
for (let j in data[i].taskList) {
state.taskSyllabus[i].children.push({

View File

@@ -44,7 +44,6 @@
placeholder="请选择状态"
:options="sProjectStateList"
allowClear
showSearch
></a-select>
</div>
<div class="select">
@@ -1526,6 +1525,7 @@ export default {
onClick={() => {
router.push({
path: "/taskpage",
query: {projectId: value.record.projectId}
});
storage.set("projectId", value.record.projectId);
}}

View File

@@ -872,11 +872,11 @@
<span>您确定要取消阶段吗</span>
</div>
<div class="del_btnbox">
<div class="del_btn btn1">
<div class="btnText" @click="delete_exit">取消</div>
<div class="del_btn btn1" @click="closeCancel">
<div class="btnText" >取消</div>
</div>
<div class="del_btn btn2">
<div class="btnText" @click="showModal">确定</div>
<div class="del_btn btn2" @click="showModal">
<div class="btnText" >确定</div>
</div>
</div>
</div>
@@ -902,11 +902,11 @@
<span>您确定要删除此任务吗</span>
</div>
<div class="del_btnbox">
<div class="del_btn btn1">
<div class="btnText" @click="delete_exit">取消</div>
<div class="del_btn btn1" @click="closeDelete">
<div class="btnText">取消</div>
</div>
<div class="del_btn btn2">
<div class="btnText" @click="showModal1">确定</div>
<div class="del_btn btn2" @click="showModal1">
<div class="btnText" >确定</div>
</div>
</div>
</div>
@@ -931,11 +931,11 @@
<span>您确定要批量删除任务吗</span>
</div>
<div class="del_btnbox">
<div class="del_btn btn1">
<div class="btnText" @click="closeDeAll">取消</div>
<div class="del_btn btn1" @click="closeDeAll">
<div class="btnText">取消</div>
</div>
<div class="del_btn btn2">
<div class="btnText" @click="deleteTaskAll">确定</div>
<div class="del_btn btn2" @click="deleteTaskAll">
<div class="btnText">确定</div>
</div>
</div>
</div>
@@ -1027,7 +1027,7 @@
</template>
<script>
import {reactive, toRefs, onMounted, onUnmounted, onUpdated} from "vue";
import {reactive, toRefs, onMounted, onUnmounted, onUpdated, watch} from "vue";
import AddOnline from "../../components/drawers/AddOnline.vue";
import AddFaceteach from "../../components/drawers/AddFaceteach.vue";
import AddCase from "../../components/drawers/AddCase.vue";
@@ -1048,7 +1048,7 @@ import draggable from "vuedraggable";
import {storage} from "../../api/storage";
// import UnlockMode from "../../components/drawers/UnlockMode.vue";
// import * as api1 from "../../api/index1";
import {useRouter} from "vue-router";
import {useRoute, useRouter} from "vue-router";
export default {
name: "TaskAdd",
@@ -1070,10 +1070,9 @@ export default {
},
setup() {
const router = useRouter();
const route = useRoute();
const state = reactive({
projectId: storage.get("projectId")
? JSON.parse(storage.get("projectId"))
: null,
projectId: route.query.projectId,
chooseStageId: null,
removeStageId: null,
edit: false,
@@ -1160,6 +1159,10 @@ export default {
console.log("visible", bool);
};
watch(route, () => {
console.log(route)
})
// 把数据放到state里
const getTableData = (tableData) => {
let data = tableData;
@@ -1360,90 +1363,86 @@ export default {
//获取任务列表
const getTask = async () => {
// console.log("state.projectId", state.projectId);
let obj = {
projectId: state.projectId,
// projectId: 28,
};
await api
.getTask(obj)
.then((res) => {
if (res.status == 200) {
console.log("22222", res.data.data.stageList);
// console.log("22222", res.data.data.stageList);
state.projectTitle = res.data.data.projectInfo.name;
state.picUrl = res.data.data.projectInfo.picUrl;
state.stageList = res.data.data.stageList;
let leng = res.data.data.stageList.length;
if (leng > 0) {
let stage = localStorage.getItem("stageId") ? localStorage.getItem("stageId") : null;
// console.log("stage",Object.prototype.toString.call(stage))
getStageData(res.data.data.stageList);
if (stage != null) {
console.log(stage);
let stageList = res.data.data.stageList; //阶段数组
let result = stageList.find((item) => item.stageId == stage);
console.log("又找到了", result);
if (result != null) {
getTableData(result.taskList);
} else {
//没有选中的阶段时,获取全部的任务
console.log(stage);
let stageList = res.data.data.stageList; //阶段数组
if (stageList != null) {
let taskListAll;
stageList.forEach((item) => {
taskListAll = [...item.taskList];
});
console.log("taskListAll", taskListAll);
getTableData(taskListAll);
}
}
} else {
console.log(stage);
let stageList = res.data.data.stageList; //阶段数组
if (stageList != null) {
let taskListAll;
stageList.forEach((item) => {
taskListAll = [...item.taskList];
});
console.log("taskListAll", taskListAll);
getTableData(taskListAll);
}
}
// 每次都获取了第一条taskList
// let arr = res.data.data.stageList[0].taskList;
// console.log("任务列表", stage, arr);
// getTableData(arr);
}
// //获取阶段列表
let stagearr = res.data.data.stageList;
// let arrlist = state.curLevel;
console.log(stagearr, 111111);
if (stagearr.length > 0) {
getStageData(stagearr);
// stagearr.map((value) => {
// console.log(value);
// // arrlist.push(value);
updateStageChoosd()
// let leng = res.data.data.stageList.length;
// if (leng > 0) {
// let stage = localStorage.getItem("stageId") ? localStorage.getItem("stageId") : null;
//
// // console.log("stage",Object.prototype.toString.call(stage))
// if (stage != null) {
// console.log(stage);
// let stageList = res.data.data.stageList; //阶段数组
//
//
//
// let result = stageList.find((item) => item.stageId == stage);
// console.log("又找到了", result);
// if (result != null) {
// getTableData(result.taskList);
// } else {
// //没有选中的阶段时,获取全部的任务
// console.log(stage);
// let stageList = res.data.data.stageList; //阶段数组
// if (stageList != null) {
// let taskListAll;
// stageList.forEach((item) => {
// taskListAll = [...item.taskList];
// });
}
//给阶段id赋初始值
let stageid = localStorage.getItem("stageId")
? localStorage.getItem("stageId")
: null;
if (stageid !== "null") {
state.chooseStageId = stageid;
} else {
state.chooseStageId = leng > 0 ? stagearr[0].stageId : null;
}
let final = state.level.find((item) => item.id == state.chooseStageId);
getTableData(final.taskList);
}
// console.log("taskListAll", taskListAll);
// getTableData(taskListAll);
// }
// }
// } else {
// console.log(stage);
// let stageList = res.data.data.stageList; //阶段数组
// if (stageList != null) {
// let taskListAll;
// stageList.forEach((item) => {
// taskListAll = [...item.taskList];
// });
// console.log("taskListAll", taskListAll);
// getTableData(taskListAll);
// }
// }
// // 每次都获取了第一条taskList
// // let arr = res.data.data.stageList[0].taskList;
// // console.log("任务列表", stage, arr);
// // getTableData(arr);
// }
// // //获取阶段列表
// let stagearr = res.data.data.stageList;
// // let arrlist = state.curLevel;
// console.log(stagearr, 111111);
// if (stagearr.length > 0) {
// getStageData(stagearr);
// // stagearr.map((value) => {
// // console.log(value);
// // // arrlist.push(value);
// // });
// }
// //给阶段id赋初始值
// let stageid = localStorage.getItem("stageId")
// ? localStorage.getItem("stageId")
// : null;
// if (stageid !== "null") {
// state.chooseStageId = stageid;
// } else {
// state.chooseStageId = leng > 0 ? stagearr[0].stageId : null;
// }
// let final = state.level.find((item) => item.id == state.chooseStageId);
// getTableData(final.taskList);
})
.catch((err) => {
console.log("获取任务列表失败", err);
});
};
//获取修改、删除id投票)
@@ -1459,18 +1458,28 @@ export default {
};
//删除任务
const deleteTask = () => {
let obj = {projectTaskIds: state.deleteID};
api
.deleteTask(obj)
.then((res) => {
console.log(res);
})
.catch((err) => {
console.log(err);
});
const deleteTask = async () => {
await api.deleteTask({projectTaskIds: state.deleteID})
//删除后更新索引
};
function updateStageChoosd() {
console.log('updateStageChoosd')
console.log(state.chooseStageId)
if (state.chooseStageId && state.stageList.find(e => e.stageId == state.chooseStageId)) {
getTableData(state.stageList.find(e => e.stageId == state.chooseStageId)?.taskList);
return
}
state.chooseStageId = ''
const arr = state.stageList.filter(e => e.name);
arr && arr.length && (state.chooseStageId = arr[0].stageId);
if (!state.chooseStageId) {
getTableData(state.stageList[0].taskList)
return
}
getTableData(state.stageList.find(e => e.stageId == state.chooseStageId)?.taskList);
}
const showChangeModal = () => {
if (state.selectRow.length == 0) {
message.destroy();
@@ -1771,7 +1780,7 @@ export default {
state.selectAll = 0; //0未选择1全选2部分选择
console.log("state.level", id, state.level);
state.chooseStageId = id;
let final = state.level.find((item) => item.id === id);
let final = state.level.find((item) => item.id == id);
getTableData(final.taskList);
};

View File

@@ -323,8 +323,10 @@
<!-- <button class="btn" @click="showFaceIn" v-if="morFaceT">
批量面授报名
</button> -->
<router-link to="/taskadd">
<button to="/taskadd" class="edit">
<router-link
:to="{ path: `/taskadd`, query: { projectId: projectId } }"
>
<button class="edit">
<img
class="editimg"
src="../../assets/images/projectadd/edit.png"
@@ -367,9 +369,10 @@
/>
<div></div>
</template>
<template v-for="(value, index) in taskSyllabus">
<a-collapse-panel
v-for="(value, index) in taskSyllabus"
:key="index"
v-if="value.name"
:header="value.name"
>
<div
@@ -437,9 +440,7 @@
<div class="time">
<div class="timetext">开始时间</div>
<div class="timetext">
{{
item.startTime !== null ? item.startTime: ''
}}
{{ item.startTime !== null ? item.startTime : "" }}
</div>
</div>
<div class="progress">
@@ -532,10 +533,11 @@
</div>
</div>
</a-collapse-panel>
</template>
</a-collapse>
<!-- 无数据创建任务 v-if="taskSyllabus.length == 0"-->
<router-link
to="/taskadd"
:to="{ path: `/taskadd`, query: { projectId: projectId } }"
class="taskbox"
style="
background: linear-gradient(180deg, #ddeaff, #f0f8fe);
@@ -564,7 +566,10 @@
class="taskbox"
@click="
() => {
routered.push({ path: '/taskadd' });
routered.push({
path: `/taskadd`,
query: { projectId: projectId },
});
}
"
style="background: linear-gradient(180deg, #fef3dd, #fffaf0)"
@@ -776,10 +781,11 @@
<img src="../../assets/images/courseManage/add0.png" />
<span class="btn1text">创建小组</span>
</div>
<div class="btn2" @click="showSubset">
<!-- 2022-12-2注释 后面放开 -->
<!-- <div class="btn2" @click="showSubset">
<img src="../../assets/images/courseManage/reset2.png" />
<span class="btn2text">随机分组</span>
</div>
</div> -->
</div>
<!-- 小组列表 -->
<div class="groupmain">
@@ -1795,11 +1801,10 @@ export default {
},
setup() {
const store = useStore();
const route = useRoute();
const state = reactive({
loading: false,
projectId: storage.get("projectId")
? JSON.parse(storage.get("projectId"))
: null,
projectId: route.query.projectId,
isbj: storage.get("isbj") ? JSON.parse(storage.get("isbj")) : null,
// pN: storage.get("pN") ? JSON.parse(storage.get("pN")) : null,
pN: storage.get("pN"),
@@ -2457,7 +2462,7 @@ export default {
//任务大纲渲染
const getTaskList = () => {
let objtl = {
projectId: storage.get("projectId"),
projectId: state.projectId,
};
apitl
.getProjectDetail(objtl)
@@ -3210,6 +3215,7 @@ export default {
};
//把小组列表信息放到state里
const setGroupList = (tableData) => {
console.log("tableDatatableDatatableData", tableData);
let data = tableData;
let array = [];
data.map((value) => {
@@ -3222,7 +3228,7 @@ export default {
source: value.source == 1 ? "指定添加" : "随机分组",
completeTaskCnt: value.completeTaskCnt, //完成任务数
totalTaskCnt: value.totalTaskCnt, //累计任务数
completeRatio: value.completeRatio, //完成比例
completeRatio: value.completeRatio ? value.completeRatio : 0, //完成比例
};
array.push(obj);
});
@@ -3321,6 +3327,7 @@ export default {
projectId: state.projectId,
}).then((res) => {
console.log("get task", res.data.data);
if (res.data.code === 200) {
let info = res.data.data.projectInfo;
// let start = toDate(info.beginTime / 1000, "Y-M-D h:m");
let start = info.beginTime;
@@ -3371,6 +3378,7 @@ export default {
state.fileList = JSON.parse(luj);
// state.fileList = luj
}
}
});
};
//获取小组列表
@@ -3559,6 +3567,7 @@ export default {
}
};
const reget = () => {
console.log("state.projectId", state.projectId);
getTask({
projectId: state.projectId,
}).then((res) => {