fix:修改同步学习记录选项

This commit is contained in:
lixg
2022-12-04 14:16:13 +08:00
parent 7e13091088
commit f9ffe051eb
4 changed files with 1154 additions and 1280 deletions

View File

@@ -2,10 +2,11 @@
* @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-21 14:32:52
* @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2022-12-04 11:13:37
* @LastEditTime: 2022-12-04 13:27:07
* @FilePath: /fe-manage/src/api/config.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import { message } from "ant-design-vue";
import axios from "axios";
// import { getCookie } from '../api/method'
// const Qs = require("qs");
@@ -23,6 +24,7 @@ const http = axios.create({
http.interceptors.request.use(
(config) => {
// console.log('config', config)
// const token = localStorage.getItem("token");
// // const token = getCookie('token')
// // console.log('token', token)
@@ -61,6 +63,10 @@ http.interceptors.response.use(
return response;
},
function (error) {
if (error.message == "timeout of 1ms exceeded") {
message.destroy()
message.error("请求超时")
}
console.log("api error %o", error);
return Promise.reject(error);
}

View File

@@ -79,7 +79,6 @@
<div class="chooseLeft">
<div class="boeTree">
<div class="boeTreeTitle">BOE组织树</div>
<a-tree
v-model:value="valueSelectboe"
class="treeMain"
@@ -206,7 +205,6 @@
>
<template #suffixIcon></template>
</a-tree>
<a-tree
v-else-if="isSearchOrg"
class="treeMain treeMain2"
@@ -288,7 +286,6 @@
</div>
</div>
</div>
<!-- <div class="line">
<div class="inline">
<div class="left1">
@@ -542,7 +539,6 @@
<button class="btn2" @click="submitAuth">确定</button>
</div>
</div>
<!-- 确认添加部门弹窗 -->
<a-modal
v-model:visible="showOrgModal"
@@ -575,20 +571,18 @@
<!-- 确认添加部门弹窗 -->
</a-drawer>
</template>
<script>
import {reactive, toRefs, onMounted, onUnmounted, computed} from "vue";
import { reactive, toRefs, onMounted, onUnmounted, computed } from "vue";
import elementResizeDetectorMaker from "element-resize-detector";
import {message} from "ant-design-vue";
import { message } from "ant-design-vue";
// import { toDate } from "../../api/method";
import {useStore} from "vuex";
import { useStore } from "vuex";
import {
traverseArr,
// deepClone,
// batchLoadList,
} from "../../utils/utils";
import * as api from "../../api/index1";
export default {
name: "ProjCheckShip",
props: {
@@ -624,22 +618,16 @@ export default {
currentPage2: 1,
tableDataTotal2: 0,
audienceName: "",
pageSize1: 10,
currentPage1: 1,
tableDataTotal1: 0,
selectedRowKeys1: [],
activeKey: "1",
value: [], //级联选择框
choosevalue: null, //受众选择
valueSelect: null, //树形选择
valueSelectboe2: null, //boe树形选择
nameadd: "",
searchOrgName: "", //搜索组织
//组织树
treeData: [],
@@ -691,7 +679,6 @@ export default {
ellipsis: true,
},
],
//受众关联table数据
tabledata2: [
// {
@@ -723,7 +710,7 @@ export default {
compare: (a, b) => new Date(a.createTime) - new Date(b.createTime),
multiple: 3,
},
scopedSlots: {customRender: "action"}, //引入的插槽
scopedSlots: { customRender: "action" }, //引入的插槽
customRender: (text) => {
// console.log(text.record.checked1);
return (
@@ -771,31 +758,24 @@ export default {
selectOrgName: null, //选中的组织名称
//快速选人-------------------------------------
//添加组织-------------------------------------
selectedKeys1: [], //选中部门的key
chooseorganization: [], //添加组织的选择组织
chooseorganization1: [], //显示到右侧的数组
showMore1: false, //是否显示添加组织的查看更多
showHidden1: false, //是否显示添加组织的收回
showOrgModal: false, //确认弹窗
isSearchOrg: false,
treeData2: [],
//添加组织-------------------------------------
//受众关联-------------------------------------
relationpeople: [], //总的数组
showMore2: false, //是否显示快速选人的查看更多
showHidden2: false, //是否显示收回
selectedRowKeys2: [], //表格选中的key
//受众关联-------------------------------------
selectAllArr: null, //所有选中
expandedKeys: [], //展开的节点
});
const closeDrawer = () => {
state.activeKey = "1";
ctx.emit("update:ProjCheckvisible", false);
@@ -807,23 +787,18 @@ export default {
state.currentPage = 1;
state.tableDataTotal = 0;
state.nameSearch = ""; //搜索名称
//受众
state.currentPage2 = 1;
state.tableDataTotal2 = 0;
state.audienceName = "";
state.currentPage1 = 1;
state.tableDataTotal1 = 0;
state.selectedKeys = [];
state.selectOrgId = null; //选中的组织id
state.selectOrgName = null; //选中的组织名称
state.searchOrgName = null;
state.isSearchOrg = false;
state.treeData2 = [];
getAudienceInfo();
};
const afterVisibleChange = (bool) => {
@@ -836,7 +811,6 @@ export default {
state.treeData = computed(() => {
return store.state.orgtreeList ? store.state.orgtreeList : [];
});
const getClientHeight = () => {
state.screenHeight = document.body.clientHeight;
};
@@ -844,16 +818,14 @@ export default {
// const getClientHeightSelecteds = () => {
// state.selectedsHeight = document.getElementById('selecteds').offsetHeight
// console.log('selectedsHeight',state.selectedsHeight)
// };
onMounted(() => {
window.addEventListener("resize", getClientHeight, false);
state.tabledata = store.state.memberInitInfo
state.tabledata = store.state.memberInitInfo;
});
onUnmounted(() => {
window.removeEventListener("resize", getClientHeight, false);
});
// 开始 快速选人------------------------------------------------------------------
//选中部门
const departmentSelect = (e, k) => {
@@ -880,11 +852,10 @@ export default {
org: state.nameSearch ? null : org,
})
.then((res) => {
state.tabledata = res.data.data.rows
state.tabledata = res.data.data.rows;
state.tableDataTotal = res.data.data.total;
})
}
});
};
// state.tabledata = traverseArr(item1, {
// key: "id",
// name: "realName",
@@ -927,7 +898,6 @@ export default {
state.choosepeople = item.reverse();
selectedsHeight();
// if (selectedRowKeys.length > 0 && item.length > 0) {
// state.selectedRowKeys.push(selectedRowKeys[selectedRowKeys.length - 1]);
// state.choosepeople.unshift(item[item.length - 1]);
// // console.log(
@@ -1003,9 +973,7 @@ export default {
.getElementById("ProjCheckship")
.querySelector("#selectedsBox").style.height = "160px";
};
// 结束 快速选人------------------------------------------------------------------
// 开始 添加组织------------------------------------------------------------------
//搜索组织
const searchOrg = (id) => {
@@ -1043,7 +1011,6 @@ export default {
return store.state.orgtreeList ? store.state.orgtreeList : [];
});
};
// //搜索组织
// const searchOrg = () => {
// let treeTitle = document
@@ -1068,7 +1035,6 @@ export default {
// message.warning("请输入组织名称");
// }
// };
//选中部门
const departmentSelect1 = (e, k) => {
console.log("选中的部门", e, k);
@@ -1087,7 +1053,6 @@ export default {
}
}
}
console.log("选中的部门2", state.selectedKeys1, state.chooseorganization);
};
//点击确认添加-判断是否显示确定弹窗
@@ -1110,7 +1075,6 @@ export default {
const closeOrgModal = () => {
state.showOrgModal = false;
};
//单个删除选中的组织
const deleteChoosePeople1 = (item) => {
console.log("item", item, state.chooseorganization);
@@ -1130,7 +1094,6 @@ export default {
state.selectedKeys1 = array;
console.log("state.selectedKeys1", state.selectedKeys1);
};
//根据右侧快速选人高度,判断是否显示更多
const selectedsHeight1 = () => {
let resize = elementResizeDetectorMaker();
@@ -1179,11 +1142,8 @@ export default {
.getElementById("ProjCheckship")
.querySelector("#selectedsBox1").style.height = "160px";
};
// 结束 添加组织------------------------------------------------------------------
// 开始 受众关联------------------------------------------------------------------
//获取受众
const getAudienceInfo = async () => {
const item1 = await api
@@ -1230,7 +1190,6 @@ export default {
state.audienceName = "";
getAudienceInfo();
};
//受众关联 选中的数组
const onSelectChange2 = (selectedRowKeys, item) => {
// console.log("selectedRowKeys changed: ", selectedRowKeys, item);
@@ -1238,7 +1197,6 @@ export default {
state.relationpeople = item.reverse();
// state.selectedRowKeys2.push(selectedRowKeys[selectedRowKeys.length - 1]);
// state.relationpeople.unshift(item[item.length - 1]);
selectedsHeight2();
};
//单个删除选中的人
@@ -1306,9 +1264,7 @@ export default {
.getElementById("ProjCheckship")
.querySelector("#selectedsBox2").style.height = "160px";
};
// 结束 受众关联------------------------------------------------------------------
//全部清除
const deleteAll = () => {
//快速选人-------------------------------------
@@ -1321,26 +1277,21 @@ export default {
state.selectOrgName = null; //选中的组织名称
//快速选人-------------------------------------
//添加组织-------------------------------------
state.selectedKeys1 = []; //选中部门的key
state.chooseorganization = []; //添加组织的选择组织
state.chooseorganization1 = []; //显示到右侧的数组
state.showMore1 = false; //是否显示添加组织的查看更多
state.showHidden1 = false; //是否显示添加组织的收回
state.showOrgModal = false; //确认弹窗
//添加组织-------------------------------------
//受众关联-------------------------------------
state.relationpeople = []; //总的数组
state.showMore2 = false; //是否显示快速选人的查看更多
state.showHidden2 = false; //是否显示收回
state.selectedRowKeys2 = []; //表格选中的key
//受众关联-------------------------------------
state.selectAllArr = null; //所有选中
};
//确定添加授权
const submitAuth = () => {
let choosepeople = [];
@@ -1351,7 +1302,6 @@ export default {
};
choosepeople.push(obj);
});
let chooseorganization1 = [];
state.chooseorganization1.map((value) => {
let obj = {
@@ -1360,7 +1310,6 @@ export default {
};
chooseorganization1.push(obj);
});
let relationpeople = [];
state.relationpeople.map((value) => {
let obj = {
@@ -1411,7 +1360,6 @@ export default {
//快速选人
state.selectedRowKeys = selectedRowKeys;
state.choosepeople = choosepeople;
let deptArr = res.data.data.deptList;
let selectedKeys1 = [];
let chooseorganization = [];
@@ -1423,7 +1371,6 @@ export default {
state.selectedKeys1 = selectedKeys1;
state.chooseorganization = chooseorganization;
state.chooseorganization1 = chooseorganization;
let groupArr = res.data.data.groupList;
let selectedRowKeys2 = [];
let relationpeople = [];
@@ -1441,7 +1388,6 @@ export default {
console.log("获取权限名单失败", err);
});
};
return {
...toRefs(state),
afterVisibleChange,
@@ -1454,7 +1400,6 @@ export default {
selectedsHeight,
morePeopleShow,
morePeopleHidden,
departmentSelect1,
addOrgModal,
addOrg,
@@ -1463,39 +1408,31 @@ export default {
morePeopleShow1,
morePeopleHidden1,
deleteChoosePeople1,
selectedsHeight2,
morePeopleShow2,
morePeopleHidden2,
deleteChoosePeople2,
deleteAll,
searchOrg,
changePagination,
handleSearchStu,
resetStu,
getAudienceInfo,
changePagination1,
searchAudienceInfo,
resetAudienceInfo,
resetOrg,
submitAuth,
optionAuthPerm,
};
},
};
</script>
<style lang="scss">
.ProjCheckship {
.ant-drawer-content-wrapper {
max-width: 1300px !important;
}
.drawerMain {
min-width: 600px;
margin: 0px 32px 0px 32px;
@@ -1503,7 +1440,6 @@ export default {
display: flex;
flex-direction: column;
overflow-x: auto;
.header {
height: 73px;
border-bottom: 1px solid #e8e8e8;
@@ -1513,7 +1449,6 @@ export default {
align-items: center;
// background-color: red;
margin-bottom: 20px;
.headerTitle {
font-size: 18px;
font-weight: 600;
@@ -1522,7 +1457,6 @@ export default {
// margin-left: 24px;
}
}
.main {
display: flex;
// min-width: 1200px;
@@ -1536,38 +1470,31 @@ 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;
@@ -1581,12 +1508,10 @@ export default {
border-radius: 8px;
border: 1px solid #409eff;
cursor: pointer;
.wz {
margin-left: 10px;
}
}
.btn2 {
width: 100px;
height: 40px;
@@ -1599,18 +1524,15 @@ 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;
@@ -1624,12 +1546,10 @@ export default {
border-radius: 8px;
border: 1px solid #409eff;
cursor: pointer;
.wz {
margin-left: 10px;
}
}
.btn2 {
width: 100px;
height: 40px;
@@ -1642,13 +1562,11 @@ export default {
border-radius: 8px;
cursor: pointer;
border: 1px solid #409eff;
.wz {
margin-left: 10px;
}
}
}
.line {
width: 100%;
height: 40px;
@@ -1658,42 +1576,35 @@ export default {
align-items: center;
margin-top: 20px;
border: 1px solid #c3e6fc;
.inline {
width: 95%;
height: 100%;
display: flex;
justify-content: space-between;
// background-color: #bfa;
.left1 {
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;
@@ -1705,11 +1616,9 @@ export default {
}
}
}
.chooseLeft {
display: flex;
justify-content: space-between;
.boeTree {
margin-right: 20px;
// margin-top: 20px;
@@ -1742,7 +1651,6 @@ export default {
margin-bottom: 8px;
margin-top: 20px;
}
.treeMain {
width: 280px;
border-radius: 4px;
@@ -1752,56 +1660,45 @@ 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;
// }
@@ -1828,31 +1725,26 @@ 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;
@@ -1869,12 +1761,10 @@ export default {
border-radius: 8px;
border: 1px solid #409eff;
cursor: pointer;
.wz {
margin-left: 10px;
}
}
.btn2 {
width: 100px;
height: 40px;
@@ -1887,43 +1777,35 @@ 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;
@@ -1940,7 +1822,6 @@ export default {
margin-bottom: 8px;
margin-top: 20px;
}
.treeMain {
width: 280px;
border-radius: 4px;
@@ -1950,26 +1831,21 @@ 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;
// }
@@ -1982,23 +1858,19 @@ 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;
@@ -2007,20 +1879,17 @@ 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;
@@ -2031,7 +1900,6 @@ export default {
height: 32px;
border-radius: 4px;
background: #409eff;
.colose {
width: 16px;
height: 16px;
@@ -2042,14 +1910,12 @@ export default {
background-size: 100%;
margin-right: 4px;
}
.allclear {
color: rgba(255, 255, 255, 1);
font-size: 14px;
}
}
}
.line {
width: 90%;
height: 1px;
@@ -2057,20 +1923,17 @@ 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;
@@ -2082,7 +1945,6 @@ export default {
// height: 170px;
// overflow: hidden;
flex-shrink: 0;
.chose {
// width: 64px;
padding-left: 10px;
@@ -2099,7 +1961,6 @@ export default {
font-size: 12px;
position: relative;
flex-shrink: 0;
.ch {
position: absolute;
width: 18px;
@@ -2112,7 +1973,6 @@ export default {
}
}
}
.btnn {
height: 72px;
width: 100%;
@@ -2124,7 +1984,6 @@ 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;
@@ -2134,7 +1993,6 @@ export default {
background-color: #fff;
cursor: pointer;
}
.btn2 {
cursor: pointer;
width: 100px;
@@ -2148,55 +2006,43 @@ 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;
@@ -2217,18 +2063,15 @@ 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;
@@ -2236,7 +2079,6 @@ export default {
background-image: url(@/assets/images/taskpage/gan.png);
background-size: 100% 100%;
}
.close_exit {
position: absolute;
right: 42px;
@@ -2247,7 +2089,6 @@ export default {
background-size: 100% 100%;
}
}
.body {
width: 100%;
margin: 34px auto 56px auto;
@@ -2257,7 +2098,6 @@ export default {
flex-direction: column;
// background-color: red;
position: relative;
.back {
position: absolute;
top: 30px;
@@ -2266,12 +2106,10 @@ export default {
color: #666666;
}
}
.del_btnbox {
display: flex;
margin: 30px auto;
justify-content: center;
.del_btn {
width: 100px;
height: 40px;
@@ -2280,23 +2118,19 @@ export default {
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
cursor: pointer;
.btnText {
font-size: 14px;
font-weight: 400;
line-height: 40px;
}
}
.btn1 {
border: 1px solid rgba(64, 158, 255, 1);
color: #4ea6ff;
margin-right: 14px;
}
.btn2 {
background-color: #4ea6ff;
color: #ffffff;
@@ -2306,7 +2140,6 @@ export default {
}
}
}
.ant-modal-close-x {
display: none;
}

View File

@@ -171,7 +171,19 @@
<div class="inname">同步学习记录</div>
</div>
<div class="in">
<a-switch
<a-checkbox
v-model:checked="courseSyncFlag"
:disabled="viewDetail ? true : false"
><span
style="
width: 100%;
color: rgba(109, 117, 132, 1);
font-size: 14px;
"
>同步课程学习记录如学员在课程库中拥有课程的学习记录自动免修该课程</span
></a-checkbox
>
<!-- <a-switch
v-model:checked="projectInfo.courseSyncFlag"
:checkedValue="1"
:unCheckedValue="0"
@@ -184,7 +196,7 @@
"
>同步课程学习记录如学员在课程库中拥有课程的学习记录自动免修该课程</span
></a-switch
>
> -->
</div>
</div>
<div class="name">
@@ -317,6 +329,7 @@ export default {
keyWord: "",
},
classifyList5: [],
courseSyncFlag: false,
});
onMounted(() => {
@@ -349,6 +362,9 @@ export default {
state.projectInfo.endTime,
];
state.projectInfo.parentName = routers.query.parentName;
state.courseSyncFlag = state.projectInfo.courseSyncFlag
? true
: false;
});
}
@@ -432,6 +448,7 @@ export default {
return;
}
state.projectInfo.type = 3;
state.projectInfo.courseSyncFlag = state.courseSyncFlag ? 1 : 0;
api.createProject(state.projectInfo).then(() => {
message.destroy();
message.success("编辑成功");

View File

@@ -3,7 +3,7 @@
<div class="taskpage">
<div class="addhead" style="flex-shrink: 0">
<div class="leftimg">
<img class="img" :src="picUrl"/>
<img class="img" :src="picUrl" />
</div>
<div class="imgfor">
<div class="forz">{{ name }}</div>
@@ -11,7 +11,7 @@
<div class="fort">起止时间{{ startTime }}{{ endTime }}</div>
</div>
<div class="right">
<img class="img1" src="../../assets/images/leveladd/ma.png"/>
<img class="img1" src="../../assets/images/leveladd/ma.png" />
<div class="line" v-if="action == 1 || action == 0"></div>
<img
v-if="action == 1 || action == 0"
@@ -88,7 +88,7 @@
<div class="line"></div>
<router-link to="/projectmanage">
<div style="display: flex">
<img class="img2" src="../../assets/images/leveladd/back.png"/>
<img class="img2" src="../../assets/images/leveladd/back.png" />
<div class="return">返回</div>
</div>
</router-link>
@@ -117,13 +117,13 @@
style="background: linear-gradient(180deg, #fef3dd, #fffaf0)"
>
<div class="leftt">
<img src="../../assets/images/taskpage/left1.png"/>
<img src="../../assets/images/taskpage/left1.png" />
</div>
<div class="photo">
<img src="../../assets/images/taskpage/picture1.png"/>
<img src="../../assets/images/taskpage/picture1.png" />
</div>
<div class="rightt">
<img src="../../assets/images/taskpage/right1.png"/>
<img src="../../assets/images/taskpage/right1.png" />
</div>
<div class="centerbox" style="color: rgba(255, 182, 78, 1)">
添加任务
@@ -136,13 +136,13 @@
style="background: linear-gradient(180deg, #ddeaff, #f0f8fe)"
>
<div class="leftt">
<img src="../../assets/images/taskpage/left2.png"/>
<img src="../../assets/images/taskpage/left2.png" />
</div>
<div class="photo">
<img src="../../assets/images/taskpage/picture2.png"/>
<img src="../../assets/images/taskpage/picture2.png" />
</div>
<div class="rightt">
<img src="../../assets/images/taskpage/right2.png"/>
<img src="../../assets/images/taskpage/right2.png" />
</div>
<div class="centerbox" style="color: rgba(78, 166, 255, 1)">
添加学员
@@ -430,16 +430,20 @@
<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">
<div class="progresstext">
{{
item.finishStuCnt && item.finishStuCnt !== null ? item.finishStuCnt : 0
}}/{{ item.totalStuCnt && item.totalStuCnt !== null ? item.totalStuCnt : 0 }}
item.finishStuCnt && item.finishStuCnt !== null
? item.finishStuCnt
: 0
}}/{{
item.totalStuCnt && item.totalStuCnt !== null
? item.totalStuCnt
: 0
}}
</div>
<div style="display: flex">
<a-progress
@@ -450,7 +454,12 @@
/>
<span class="progresstext" style="margin-left: 10px"
>{{
(item.finishStuCnt && item.finishStuCnt !== null ? item.finishStuCnt : 0 / item.totalStuCnt && item.totalStuCnt !== null ? item.totalStuCnt : 0) * 100
(item.finishStuCnt && item.finishStuCnt !== null
? item.finishStuCnt
: 0 / item.totalStuCnt &&
item.totalStuCnt !== null
? item.totalStuCnt
: 0) * 100
}}%</span
>
</div>
@@ -526,13 +535,13 @@
v-if="taskSyllabus.length == 0"
>
<div class="leftt">
<img src="../../assets/images/taskpage/left2.png"/>
<img src="../../assets/images/taskpage/left2.png" />
</div>
<div class="photo">
<img src="../../assets/images/taskpage/picture8.png"/>
<img src="../../assets/images/taskpage/picture8.png" />
</div>
<div class="rightt">
<img src="../../assets/images/taskpage/right2.png"/>
<img src="../../assets/images/taskpage/right2.png" />
</div>
<div class="centerbox" style="color: rgba(78, 166, 255, 1)">
创建任务
@@ -631,18 +640,18 @@
</div>
<div class="groupright">
<div class="btn1" @click="searchStu">
<img src="../../assets/images/courseManage/search0.png"/>
<img src="../../assets/images/courseManage/search0.png" />
<span class="btn1text">搜索</span>
</div>
<div class="btn2" @click="resetCancel">
<img src="../../assets/images/courseManage/reset1.png"/>
<img src="../../assets/images/courseManage/reset1.png" />
<span class="btn2text">重置</span>
</div>
</div>
</div>
<div class="second2" style="margin-top: 20px">
<div class="btn1" @click="showStuAdd">
<img src="../../assets/images/courseManage/add0.png"/>
<img src="../../assets/images/courseManage/add0.png" />
<span class="btn1text">添加学员</span>
</div>
<!-- 2022-11-30注释 后面放开 -->
@@ -651,12 +660,12 @@
<span class="btn2text">导入学员</span>
</div> -->
<div class="btn2" @click="showAllDelete">
<img src="../../assets/images/projectadd/delete.png"/>
<img src="../../assets/images/projectadd/delete.png" />
<span class="btn2text">批量删除</span>
</div>
</div>
<div class="talk">
<img class="im" src="../../assets/images/leveladd/gan.png"/>
<img class="im" src="../../assets/images/leveladd/gan.png" />
<div class="xu">
<span class="yi">已选择</span>
<div style="width: 5px; display: inline-block"></div>
@@ -719,22 +728,22 @@
</div>
<div class="groupright">
<div class="btn1" @click="searchGroup">
<img src="../../assets/images/courseManage/search0.png"/>
<img src="../../assets/images/courseManage/search0.png" />
<span class="btn1text">搜索</span>
</div>
<div class="btn2" @click="resetGroupName">
<img src="../../assets/images/courseManage/reset1.png"/>
<img src="../../assets/images/courseManage/reset1.png" />
<span class="btn2text">重置</span>
</div>
</div>
</div>
<div class="second2">
<div class="btn1" @click="showModal2">
<img src="../../assets/images/courseManage/add0.png"/>
<img src="../../assets/images/courseManage/add0.png" />
<span class="btn1text">创建小组</span>
</div>
<div class="btn2" @click="showSubset">
<img src="../../assets/images/courseManage/reset2.png"/>
<img src="../../assets/images/courseManage/reset2.png" />
<span class="btn2text">随机分组</span>
</div>
</div>
@@ -767,14 +776,14 @@
<div class="leader">组长{{ item.leaderName }}</div>
<div class="grocenter">
<div class="leader1">进度</div>
<a-progress :percent="item.completeRatio"/>
<a-progress :percent="item.completeRatio" />
</div>
<div
class="grofooter"
@click="showMemberList(item.projectGroupId)"
>
<div class="ftext">组员名单 ></div>
<div class="peoples">
<!-- <div class="peoples">
<div class="people1">
<img
src="../../assets/images/taskpage/people1.png"
@@ -795,7 +804,7 @@
src="../../assets/images/taskpage/people4.png"
/>
</div>
</div>
</div> -->
</div>
</div>
</div>
@@ -807,15 +816,11 @@
<a-tab-pane key="4" tab="公告">
<div class="split"></div>
<a-tabs v-model:activeKey="activeKeyNotice">
<a-tab-pane key="11" tab="公告"
>
<NoticePub v-model:projectId="projectId"></NoticePub
>
<a-tab-pane key="11" tab="公告">
<NoticePub v-model:projectId="projectId"></NoticePub>
</a-tab-pane>
<a-tab-pane key="12" tab="历史公告" force-render
>
<NoticeHis v-model:projectId="projectId"></NoticeHis
>
<a-tab-pane key="12" tab="历史公告" force-render>
<NoticeHis v-model:projectId="projectId"></NoticeHis>
</a-tab-pane>
</a-tabs>
</a-tab-pane>
@@ -1014,14 +1019,23 @@
<div class="set_content">
<div class="setc_name"><span>项目级别</span></div>
<div class="setc_main">
<span style="color: #999999"><ProjectLevel v-model:value="level" :disabled="true"></ProjectLevel></span>
<span style="color: #999999"
><ProjectLevel
v-model:value="level"
:disabled="true"
></ProjectLevel
></span>
</div>
</div>
<div class="set_content">
<div class="setc_name"><span>培训体系</span></div>
<div class="setc_main">
<span style="color: #999999"><TrainClass v-model:value="systemId"
:disabled="true"></TrainClass></span>
<span style="color: #999999"
><TrainClass
v-model:value="systemId"
:disabled="true"
></TrainClass
></span>
</div>
</div>
<div class="set_content">
@@ -1049,7 +1063,7 @@
</div>
<div class="btnbox" style="margin: 20px">
<a-upload
v-if="(docChecked==true)"
v-if="docChecked == true"
v-model:file-list="fileList"
name="file"
action="/manageApi/file/upload"
@@ -1066,7 +1080,11 @@
alt=""
/>
</a-upload>
<div v-if="(docChecked==true)" class="btnbox" style="margin: 20px">
<div
v-if="docChecked == true"
class="btnbox"
style="margin: 20px"
>
<span style="color: #999999">
支持pdf.ppt.pptx.doc.docx.xls.xlsx.jpeg.png.gif.zip
</span>
@@ -1118,7 +1136,7 @@
:title="showFaceText"
/>
<!-- 学员小组管理创建小组抽屉 -->
<subset-manage v-model:Svisible="subsetVisivle"/>
<subset-manage v-model:Svisible="subsetVisivle" />
<!-- 学员管理-添加学员抽屉 -->
<!-- <stu-add v-model:Stuvisible="Stuvisible" /> -->
<!-- 添加学员抽屉 -->
@@ -1130,7 +1148,7 @@
classify="addstudent"
/>
<!-- 学员管理-导入学员抽屉 -->
<import-stu v-model:Importvisible="Importvisible"/>
<import-stu v-model:Importvisible="Importvisible" />
<!-- 查看学员 传入查看学员的id-->
<see-stu
v-model:Seevisible="Seevisible"
@@ -1153,9 +1171,9 @@
v-model:projectId="projectId"
/>
<!-- 面授学员抽屉 -->
<face-stu v-model:FSvisible="FSvisible"/>
<face-stu v-model:FSvisible="FSvisible" />
<!-- 活动考勤抽屉 -->
<active-attendance v-model:AAvisible="AAvisible" :title="showkaoqinText"/>
<active-attendance v-model:AAvisible="AAvisible" :title="showkaoqinText" />
<!-- 作业管理抽屉 -->
<work-manage
v-model:Wvisible="Wvisible"
@@ -1170,7 +1188,7 @@
:itemsType="itemstype"
/>
<!-- 批量面授报名 -->
<task-imp-stu v-model:TaskFaceImpStuvisible="TaskFaceImpStuvisible"/>
<task-imp-stu v-model:TaskFaceImpStuvisible="TaskFaceImpStuvisible" />
<!-- 概览无数据-项目发布弹窗 -->
<div>
@@ -1229,7 +1247,7 @@
</div>
</div>
<div class="send">
<a-switch v-model:checked="checked" size="small"/>
<a-switch v-model:checked="checked" size="small" />
<span class="sendtext">发送项目通知</span>
</div>
<div class="ckb">
@@ -1487,7 +1505,7 @@
</a-modal>
</div>
<!-- 编辑项目弹窗 -->
<proj-set v-model:editHs="editHs" v-model:projectId="projectId"/>
<proj-set v-model:editHs="editHs" v-model:projectId="projectId" />
<!-- 二维码弹窗 -->
<two-dimensional-code
@@ -1672,9 +1690,9 @@
</div>
</template>
<script>
import {reactive, toRefs, onMounted, watch, computed} from "vue";
import {useRoute} from "vue-router";
import {useRouter} from "vue-router";
import { reactive, toRefs, onMounted, watch, computed } from "vue";
import { useRoute } from "vue-router";
import { useRouter } from "vue-router";
// import { CaretRightOutlined } from "@ant-design/icons-vue";
import TimeManage from "../../components/drawers/TimeManage";
import FaceManage from "../../components/drawers/FaceManage";
@@ -1693,7 +1711,7 @@ import NoticePub from "../../components/drawers/NoticePub";
import NoticeHis from "../../components/drawers/NoticeHis";
// import ProjectScore from "../../components/drawers/ProjectScore";
import TaskImpStu from "../../components/drawers/TaskFaceIn";
import {storage} from "../../api/storage";
import { storage } from "../../api/storage";
import * as api from "../../api/index1";
import * as apiproj from "../../api/index";
import {
@@ -1704,15 +1722,15 @@ import {
editGroup,
topStudent,
} from "../../api/indexProjStu";
import {message} from "ant-design-vue";
import { message } from "ant-design-vue";
import * as apitl from "../../api/index";
import {getTask} from "../../api/indexTaskadd";
import {editProj} from "../../api/indexTaskadd";
import {toDate} from "../../api/method";
import { getTask } from "../../api/indexTaskadd";
import { editProj } from "../../api/indexTaskadd";
import { toDate } from "../../api/method";
import projSet from "../../components/Modals/projSet";
import {overview} from "../../api/indexProjStu";
import { overview } from "../../api/indexProjStu";
import TwoDimensionalCode from "../../components/TwoDimensionalCode.vue";
import {useStore} from "vuex";
import { useStore } from "vuex";
import ProjectLevel from "@/components/project/ProjectLevel";
import TrainClass from "@/components/project/TrainClass";
@@ -1812,23 +1830,23 @@ export default {
projectTaskId: "", //项目任务任务id
//进度排行学员
rankjindu: [
{value: "学员", label: "学员"},
{value: "小组", label: "小组"},
{ value: "学员", label: "学员" },
{ value: "小组", label: "小组" },
],
valuestu1: "学员",
//进度排行阶段
rankjieduan: [{value: "第一阶段", label: "第一阶段"}],
rankjieduan: [{ value: "第一阶段", label: "第一阶段" }],
valuestu2: "第一阶段",
//积分排行
rankxuefen: [
{value: "学员", label: "学员"},
{value: "小组", label: "小组"},
{ value: "学员", label: "学员" },
{ value: "小组", label: "小组" },
],
valuestu3: "学员",
//学时排行
rankxueshi: [
{value: "学员", label: "学员"},
{value: "小组", label: "小组"},
{ value: "学员", label: "学员" },
{ value: "小组", label: "小组" },
],
valuestu4: "学员",
visible: false, //时间管理
@@ -1970,21 +1988,21 @@ export default {
if (text.record.rank == "1") {
return (
<img
style={{width: 24, height: 24}}
style={{ width: 24, height: 24 }}
src={require("../../assets/images/taskpage/one.png")}
/>
);
} else if (text.record.rank == "2") {
return (
<img
style={{width: 24, height: 24}}
style={{ width: 24, height: 24 }}
src={require("../../assets/images/taskpage/two.png")}
/>
);
} else if (text.record.rank == "3") {
return (
<img
style={{width: 24, height: 24}}
style={{ width: 24, height: 24 }}
src={require("../../assets/images/taskpage/three.png")}
/>
);
@@ -2077,21 +2095,21 @@ export default {
if (text.record.rank == "1") {
return (
<img
style={{width: 24, height: 24}}
style={{ width: 24, height: 24 }}
src={require("../../assets/images/taskpage/one.png")}
/>
);
} else if (text.record.rank == "2") {
return (
<img
style={{width: 24, height: 24}}
style={{ width: 24, height: 24 }}
src={require("../../assets/images/taskpage/two.png")}
/>
);
} else if (text.record.rank == "3") {
return (
<img
style={{width: 24, height: 24}}
style={{ width: 24, height: 24 }}
src={require("../../assets/images/taskpage/three.png")}
/>
);
@@ -2184,21 +2202,21 @@ export default {
if (text.record.rank == "1") {
return (
<img
style={{width: 24, height: 24}}
style={{ width: 24, height: 24 }}
src={require("../../assets/images/taskpage/one.png")}
/>
);
} else if (text.record.rank == "2") {
return (
<img
style={{width: 24, height: 24}}
style={{ width: 24, height: 24 }}
src={require("../../assets/images/taskpage/two.png")}
/>
);
} else if (text.record.rank == "3") {
return (
<img
style={{width: 24, height: 24}}
style={{ width: 24, height: 24 }}
src={require("../../assets/images/taskpage/three.png")}
/>
);
@@ -2904,7 +2922,7 @@ export default {
// width: 60,
align: "center",
className: "h",
scopedSlots: {customRender: "action"}, //引入的插槽
scopedSlots: { customRender: "action" }, //引入的插槽
customRender: (text) => {
// console.log(text);
return (
@@ -3066,7 +3084,7 @@ export default {
//点击确认删除单个学员
const closeDeleteOneConfirm = () => {
state.deleteOneStu = false;
state.loading = true
state.loading = true;
deleteStu({
projectId: state.projectId,
studentIds: state.chooseDeleteOne,
@@ -3097,7 +3115,7 @@ export default {
};
//点击确定的批量删除弹窗
const closeAllDelete = () => {
state.loading = true
state.loading = true;
deleteStu({
projectId: state.projectId,
studentIds: state.selectedRows,
@@ -3257,7 +3275,7 @@ export default {
// studentData();
}
}
state.loading = false
state.loading = false;
})
.catch((err) => {
console.log("获取学员列表失败", err);
@@ -3271,9 +3289,9 @@ export default {
console.log("get task", res.data.data);
let info = res.data.data.projectInfo;
// let start = toDate(info.beginTime / 1000, "Y-M-D h:m");
let start = info.beginTime
let start = info.beginTime;
// let end = toDate(info.endTime / 1000, "Y-M-D h:m");
let end = info.endTime
let end = info.endTime;
state.tstartTime = info.beginTime;
state.tendTime = info.endTime;
state.tsourceBelong = info.sourceBelongName;
@@ -3401,7 +3419,7 @@ export default {
//start---------项目概览
// 获取项目概览
const getOverview = () => {
overview({projectId: state.projectId})
overview({ projectId: state.projectId })
.then((res) => {
Object.keys(res.data.data.projectInfoOverview).forEach((item) => {
levelList.projectInfoOverview[item] =
@@ -3425,7 +3443,7 @@ export default {
};
//end---------项目概览
const handleChange = ({file, fileList}) => {
const handleChange = ({ file, fileList }) => {
let list = [];
if (file.status !== "uploading") {
console.log("上传的list", fileList);
@@ -3710,7 +3728,7 @@ export default {
projectGroupId: 0,
};
console.log("obj", obj);
state.loading = true
state.loading = true;
api
.addStudentProject(obj)
.then((res) => {
@@ -3823,7 +3841,7 @@ export default {
templateProject,
changeGrouped,
deFile,
toDate
toDate,
};
},
};