Merge remote-tracking branch 'origin/develop' into develop

# Conflicts:
#	src/views/projectcenter/TaskAdd.vue
#	src/views/projectcenter/TaskPage.vue
This commit is contained in:
yuping
2022-12-04 15:09:21 +08:00
6 changed files with 1175 additions and 1289 deletions

View File

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

View File

@@ -31,6 +31,7 @@
<div class="btnbox"> <div class="btnbox">
<a-form-item has-feedback label="作业名称" name="workName"> <a-form-item has-feedback label="作业名称" name="workName">
<a-input <a-input
maxLength="20"
v-model:value="formState.workName" v-model:value="formState.workName"
style="width: 424px; height: 32px; margin-left: 35px" style="width: 424px; height: 32px; margin-left: 35px"
placeholder="请输入作业名称" placeholder="请输入作业名称"
@@ -46,7 +47,7 @@
placeholder="请输入作业要求" placeholder="请输入作业要求"
autocomplete="off" autocomplete="off"
allow-clear allow-clear
style="margin-left: 35px" style="margin-left: 35px;width: 426px;height: 200px;"
maxlength="150" maxlength="150"
/> />
</a-form-item> </a-form-item>

View File

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

View File

@@ -1914,6 +1914,7 @@ export default {
GetRouterDetail(state.routerId) GetRouterDetail(state.routerId)
.then((res) => { .then((res) => {
console.log('router-list',res) console.log('router-list',res)
state.fileList = JSON.parse(res.data.data.routerInfo.attach)
if (res.data.data.routerInfo.status == 1) { if (res.data.data.routerInfo.status == 1) {
state.nodata = false; state.nodata = false;
} }

View File

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

View File

@@ -3,7 +3,7 @@
<div class="taskpage"> <div class="taskpage">
<div class="addhead" style="flex-shrink: 0"> <div class="addhead" style="flex-shrink: 0">
<div class="leftimg"> <div class="leftimg">
<img class="img" :src="picUrl"/> <img class="img" :src="picUrl" />
</div> </div>
<div class="imgfor"> <div class="imgfor">
<div class="forz">{{ name }}</div> <div class="forz">{{ name }}</div>
@@ -11,7 +11,7 @@
<div class="fort">起止时间{{ startTime }}{{ endTime }}</div> <div class="fort">起止时间{{ startTime }}{{ endTime }}</div>
</div> </div>
<div class="right"> <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> <div class="line" v-if="action == 1 || action == 0"></div>
<img <img
v-if="action == 1 || action == 0" v-if="action == 1 || action == 0"
@@ -88,7 +88,7 @@
<div class="line"></div> <div class="line"></div>
<router-link to="/projectmanage"> <router-link to="/projectmanage">
<div style="display: flex"> <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 class="return">返回</div>
</div> </div>
</router-link> </router-link>
@@ -117,13 +117,13 @@
style="background: linear-gradient(180deg, #fef3dd, #fffaf0)" style="background: linear-gradient(180deg, #fef3dd, #fffaf0)"
> >
<div class="leftt"> <div class="leftt">
<img src="../../assets/images/taskpage/left1.png"/> <img src="../../assets/images/taskpage/left1.png" />
</div> </div>
<div class="photo"> <div class="photo">
<img src="../../assets/images/taskpage/picture1.png"/> <img src="../../assets/images/taskpage/picture1.png" />
</div> </div>
<div class="rightt"> <div class="rightt">
<img src="../../assets/images/taskpage/right1.png"/> <img src="../../assets/images/taskpage/right1.png" />
</div> </div>
<div class="centerbox" style="color: rgba(255, 182, 78, 1)"> <div class="centerbox" style="color: rgba(255, 182, 78, 1)">
添加任务 添加任务
@@ -136,13 +136,13 @@
style="background: linear-gradient(180deg, #ddeaff, #f0f8fe)" style="background: linear-gradient(180deg, #ddeaff, #f0f8fe)"
> >
<div class="leftt"> <div class="leftt">
<img src="../../assets/images/taskpage/left2.png"/> <img src="../../assets/images/taskpage/left2.png" />
</div> </div>
<div class="photo"> <div class="photo">
<img src="../../assets/images/taskpage/picture2.png"/> <img src="../../assets/images/taskpage/picture2.png" />
</div> </div>
<div class="rightt"> <div class="rightt">
<img src="../../assets/images/taskpage/right2.png"/> <img src="../../assets/images/taskpage/right2.png" />
</div> </div>
<div class="centerbox" style="color: rgba(78, 166, 255, 1)"> <div class="centerbox" style="color: rgba(78, 166, 255, 1)">
添加学员 添加学员
@@ -343,8 +343,14 @@
<span class="editext">编辑</span> <span class="editext">编辑</span>
</router-link> </router-link>
</div> --> </div> -->
<div class="taskSyllabus" <div
v-if="taskSyllabus && taskSyllabus.length && (taskSyllabus.length>1 || taskSyllabus[0].name)"> class="taskSyllabus"
v-if="
taskSyllabus &&
taskSyllabus.length &&
(taskSyllabus.length > 1 || taskSyllabus[0].name)
"
>
<a-collapse v-model:activeKey="taskSyllabusActive" accordion> <a-collapse v-model:activeKey="taskSyllabusActive" accordion>
<template #expandIcon="{ isActive }"> <template #expandIcon="{ isActive }">
<img <img
@@ -432,15 +438,21 @@
<div class="timetext">开始时间</div> <div class="timetext">开始时间</div>
<div class="timetext"> <div class="timetext">
{{ {{
item.startTime !== null ? item.startTime : '' item.startTime !== null ? item.startTime: ''
}} }}
</div> </div>
</div> </div>
<div class="progress"> <div class="progress">
<div class="progresstext"> <div class="progresstext">
{{ {{
item.finishStuCnt && item.finishStuCnt !== null ? item.finishStuCnt : 0 item.finishStuCnt && item.finishStuCnt !== null
}}/{{ item.totalStuCnt && item.totalStuCnt !== null ? item.totalStuCnt : 0 }} ? item.finishStuCnt
: 0
}}/{{
item.totalStuCnt && item.totalStuCnt !== null
? item.totalStuCnt
: 0
}}人
</div> </div>
<div style="display: flex"> <div style="display: flex">
<a-progress <a-progress
@@ -451,7 +463,12 @@
/> />
<span class="progresstext" style="margin-left: 10px" <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 }}%</span
> >
</div> </div>
@@ -527,13 +544,13 @@
v-if="taskSyllabus.length == 0" v-if="taskSyllabus.length == 0"
> >
<div class="leftt"> <div class="leftt">
<img src="../../assets/images/taskpage/left2.png"/> <img src="../../assets/images/taskpage/left2.png" />
</div> </div>
<div class="photo"> <div class="photo">
<img src="../../assets/images/taskpage/picture8.png"/> <img src="../../assets/images/taskpage/picture8.png" />
</div> </div>
<div class="rightt"> <div class="rightt">
<img src="../../assets/images/taskpage/right2.png"/> <img src="../../assets/images/taskpage/right2.png" />
</div> </div>
<div class="centerbox" style="color: rgba(78, 166, 255, 1)"> <div class="centerbox" style="color: rgba(78, 166, 255, 1)">
创建任务 创建任务
@@ -545,19 +562,21 @@
<div v-else> <div v-else>
<div <div
class="taskbox" class="taskbox"
@click="()=>{ @click="
routered.push({path:'/taskadd'}) () => {
}" routered.push({ path: '/taskadd' });
}
"
style="background: linear-gradient(180deg, #fef3dd, #fffaf0)" style="background: linear-gradient(180deg, #fef3dd, #fffaf0)"
> >
<div class="leftt"> <div class="leftt">
<img src="../../assets/images/taskpage/left1.png"/> <img src="../../assets/images/taskpage/left1.png" />
</div> </div>
<div class="photo"> <div class="photo">
<img src="../../assets/images/taskpage/picture1.png"/> <img src="../../assets/images/taskpage/picture1.png" />
</div> </div>
<div class="rightt"> <div class="rightt">
<img src="../../assets/images/taskpage/right1.png"/> <img src="../../assets/images/taskpage/right1.png" />
</div> </div>
<div class="centerbox" style="color: rgba(255, 182, 78, 1)"> <div class="centerbox" style="color: rgba(255, 182, 78, 1)">
添加任务 添加任务
@@ -655,18 +674,18 @@
</div> </div>
<div class="groupright"> <div class="groupright">
<div class="btn1" @click="searchStu"> <div class="btn1" @click="searchStu">
<img src="../../assets/images/courseManage/search0.png"/> <img src="../../assets/images/courseManage/search0.png" />
<span class="btn1text">搜索</span> <span class="btn1text">搜索</span>
</div> </div>
<div class="btn2" @click="resetCancel"> <div class="btn2" @click="resetCancel">
<img src="../../assets/images/courseManage/reset1.png"/> <img src="../../assets/images/courseManage/reset1.png" />
<span class="btn2text">重置</span> <span class="btn2text">重置</span>
</div> </div>
</div> </div>
</div> </div>
<div class="second2" style="margin-top: 20px"> <div class="second2" style="margin-top: 20px">
<div class="btn1" @click="showStuAdd"> <div class="btn1" @click="showStuAdd">
<img src="../../assets/images/courseManage/add0.png"/> <img src="../../assets/images/courseManage/add0.png" />
<span class="btn1text">添加学员</span> <span class="btn1text">添加学员</span>
</div> </div>
<!-- 2022-11-30注释 后面放开 --> <!-- 2022-11-30注释 后面放开 -->
@@ -675,12 +694,12 @@
<span class="btn2text">导入学员</span> <span class="btn2text">导入学员</span>
</div> --> </div> -->
<div class="btn2" @click="showAllDelete"> <div class="btn2" @click="showAllDelete">
<img src="../../assets/images/projectadd/delete.png"/> <img src="../../assets/images/projectadd/delete.png" />
<span class="btn2text">批量删除</span> <span class="btn2text">批量删除</span>
</div> </div>
</div> </div>
<div class="talk"> <div class="talk">
<img class="im" src="../../assets/images/leveladd/gan.png"/> <img class="im" src="../../assets/images/leveladd/gan.png" />
<div class="xu"> <div class="xu">
<span class="yi">已选择</span> <span class="yi">已选择</span>
<div style="width: 5px; display: inline-block"></div> <div style="width: 5px; display: inline-block"></div>
@@ -743,22 +762,22 @@
</div> </div>
<div class="groupright"> <div class="groupright">
<div class="btn1" @click="searchGroup"> <div class="btn1" @click="searchGroup">
<img src="../../assets/images/courseManage/search0.png"/> <img src="../../assets/images/courseManage/search0.png" />
<span class="btn1text">搜索</span> <span class="btn1text">搜索</span>
</div> </div>
<div class="btn2" @click="resetGroupName"> <div class="btn2" @click="resetGroupName">
<img src="../../assets/images/courseManage/reset1.png"/> <img src="../../assets/images/courseManage/reset1.png" />
<span class="btn2text">重置</span> <span class="btn2text">重置</span>
</div> </div>
</div> </div>
</div> </div>
<div class="second2"> <div class="second2">
<div class="btn1" @click="showModal2"> <div class="btn1" @click="showModal2">
<img src="../../assets/images/courseManage/add0.png"/> <img src="../../assets/images/courseManage/add0.png" />
<span class="btn1text">创建小组</span> <span class="btn1text">创建小组</span>
</div> </div>
<div class="btn2" @click="showSubset"> <div class="btn2" @click="showSubset">
<img src="../../assets/images/courseManage/reset2.png"/> <img src="../../assets/images/courseManage/reset2.png" />
<span class="btn2text">随机分组</span> <span class="btn2text">随机分组</span>
</div> </div>
</div> </div>
@@ -791,14 +810,14 @@
<div class="leader">组长:{{ item.leaderName }}</div> <div class="leader">组长:{{ item.leaderName }}</div>
<div class="grocenter"> <div class="grocenter">
<div class="leader1">进度</div> <div class="leader1">进度</div>
<a-progress :percent="item.completeRatio"/> <a-progress :percent="item.completeRatio" />
</div> </div>
<div <div
class="grofooter" class="grofooter"
@click="showMemberList(item.projectGroupId)" @click="showMemberList(item.projectGroupId)"
> >
<div class="ftext">组员名单 ></div> <div class="ftext">组员名单 ></div>
<div class="peoples"> <!-- <div class="peoples">
<div class="people1"> <div class="people1">
<img <img
src="../../assets/images/taskpage/people1.png" src="../../assets/images/taskpage/people1.png"
@@ -819,7 +838,7 @@
src="../../assets/images/taskpage/people4.png" src="../../assets/images/taskpage/people4.png"
/> />
</div> </div>
</div> </div> -->
</div> </div>
</div> </div>
</div> </div>
@@ -831,15 +850,11 @@
<a-tab-pane key="4" tab="公告"> <a-tab-pane key="4" tab="公告">
<div class="split"></div> <div class="split"></div>
<a-tabs v-model:activeKey="activeKeyNotice"> <a-tabs v-model:activeKey="activeKeyNotice">
<a-tab-pane key="11" tab="公告" <a-tab-pane key="11" tab="公告">
> <NoticePub v-model:projectId="projectId"></NoticePub>
<NoticePub v-model:projectId="projectId"></NoticePub
>
</a-tab-pane> </a-tab-pane>
<a-tab-pane key="12" tab="历史公告" force-render <a-tab-pane key="12" tab="历史公告" force-render>
> <NoticeHis v-model:projectId="projectId"></NoticeHis>
<NoticeHis v-model:projectId="projectId"></NoticeHis
>
</a-tab-pane> </a-tab-pane>
</a-tabs> </a-tabs>
</a-tab-pane> </a-tab-pane>
@@ -1038,14 +1053,23 @@
<div class="set_content"> <div class="set_content">
<div class="setc_name"><span>项目级别:</span></div> <div class="setc_name"><span>项目级别:</span></div>
<div class="setc_main"> <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> </div>
<div class="set_content"> <div class="set_content">
<div class="setc_name"><span>培训体系:</span></div> <div class="setc_name"><span>培训体系:</span></div>
<div class="setc_main"> <div class="setc_main">
<span style="color: #999999"><TrainClass v-model:value="systemId" <span style="color: #999999"
:disabled="true"></TrainClass></span> ><TrainClass
v-model:value="systemId"
:disabled="true"
></TrainClass
></span>
</div> </div>
</div> </div>
<div class="set_content"> <div class="set_content">
@@ -1073,7 +1097,7 @@
</div> </div>
<div class="btnbox" style="margin: 20px"> <div class="btnbox" style="margin: 20px">
<a-upload <a-upload
v-if="(docChecked==true)" v-if="docChecked == true"
v-model:file-list="fileList" v-model:file-list="fileList"
name="file" name="file"
action="/manageApi/file/upload" action="/manageApi/file/upload"
@@ -1090,7 +1114,11 @@
alt="" alt=""
/> />
</a-upload> </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"> <span style="color: #999999">
支持pdf.ppt.pptx.doc.docx.xls.xlsx.jpeg.png.gif.zip 支持pdf.ppt.pptx.doc.docx.xls.xlsx.jpeg.png.gif.zip
</span> </span>
@@ -1142,7 +1170,7 @@
:title="showFaceText" :title="showFaceText"
/> />
<!-- 学员(小组管理)创建小组抽屉 --> <!-- 学员(小组管理)创建小组抽屉 -->
<subset-manage v-model:Svisible="subsetVisivle"/> <subset-manage v-model:Svisible="subsetVisivle" />
<!-- 学员管理-添加学员抽屉 --> <!-- 学员管理-添加学员抽屉 -->
<!-- <stu-add v-model:Stuvisible="Stuvisible" /> --> <!-- <stu-add v-model:Stuvisible="Stuvisible" /> -->
<!-- 添加学员抽屉 --> <!-- 添加学员抽屉 -->
@@ -1154,7 +1182,7 @@
classify="addstudent" classify="addstudent"
/> />
<!-- 学员管理-导入学员抽屉 --> <!-- 学员管理-导入学员抽屉 -->
<import-stu v-model:Importvisible="Importvisible"/> <import-stu v-model:Importvisible="Importvisible" />
<!-- 查看学员 传入查看学员的id--> <!-- 查看学员 传入查看学员的id-->
<see-stu <see-stu
v-model:Seevisible="Seevisible" v-model:Seevisible="Seevisible"
@@ -1177,9 +1205,9 @@
v-model:projectId="projectId" 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 <work-manage
v-model:Wvisible="Wvisible" v-model:Wvisible="Wvisible"
@@ -1194,7 +1222,7 @@
:itemsType="itemstype" :itemsType="itemstype"
/> />
<!-- 批量面授报名 --> <!-- 批量面授报名 -->
<task-imp-stu v-model:TaskFaceImpStuvisible="TaskFaceImpStuvisible"/> <task-imp-stu v-model:TaskFaceImpStuvisible="TaskFaceImpStuvisible" />
<!-- 概览(无数据)-项目发布弹窗 --> <!-- 概览(无数据)-项目发布弹窗 -->
<div> <div>
@@ -1253,7 +1281,7 @@
</div> </div>
</div> </div>
<div class="send"> <div class="send">
<a-switch v-model:checked="checked" size="small"/> <a-switch v-model:checked="checked" size="small" />
<span class="sendtext">发送项目通知</span> <span class="sendtext">发送项目通知</span>
</div> </div>
<div class="ckb"> <div class="ckb">
@@ -1511,7 +1539,7 @@
</a-modal> </a-modal>
</div> </div>
<!-- 编辑项目弹窗 --> <!-- 编辑项目弹窗 -->
<proj-set v-model:editHs="editHs" v-model:projectId="projectId"/> <proj-set v-model:editHs="editHs" v-model:projectId="projectId" />
<!-- 二维码弹窗 --> <!-- 二维码弹窗 -->
<two-dimensional-code <two-dimensional-code
@@ -1696,9 +1724,9 @@
</div> </div>
</template> </template>
<script> <script>
import {reactive, toRefs, onMounted, watch, computed} from "vue"; import { reactive, toRefs, onMounted, watch, computed } from "vue";
import {useRoute} from "vue-router"; import { useRoute } from "vue-router";
import {useRouter} from "vue-router"; import { useRouter } from "vue-router";
// import { CaretRightOutlined } from "@ant-design/icons-vue"; // import { CaretRightOutlined } from "@ant-design/icons-vue";
import TimeManage from "../../components/drawers/TimeManage"; import TimeManage from "../../components/drawers/TimeManage";
import FaceManage from "../../components/drawers/FaceManage"; import FaceManage from "../../components/drawers/FaceManage";
@@ -1717,7 +1745,7 @@ import NoticePub from "../../components/drawers/NoticePub";
import NoticeHis from "../../components/drawers/NoticeHis"; import NoticeHis from "../../components/drawers/NoticeHis";
// import ProjectScore from "../../components/drawers/ProjectScore"; // import ProjectScore from "../../components/drawers/ProjectScore";
import TaskImpStu from "../../components/drawers/TaskFaceIn"; import TaskImpStu from "../../components/drawers/TaskFaceIn";
import {storage} from "../../api/storage"; import { storage } from "../../api/storage";
import * as api from "../../api/index1"; import * as api from "../../api/index1";
import * as apiproj from "../../api/index"; import * as apiproj from "../../api/index";
import { import {
@@ -1728,15 +1756,15 @@ import {
editGroup, editGroup,
topStudent, topStudent,
} from "../../api/indexProjStu"; } from "../../api/indexProjStu";
import {message} from "ant-design-vue"; import { message } from "ant-design-vue";
import * as apitl from "../../api/index"; import * as apitl from "../../api/index";
import {getTask} from "../../api/indexTaskadd"; import { getTask } from "../../api/indexTaskadd";
import {editProj} from "../../api/indexTaskadd"; import { editProj } from "../../api/indexTaskadd";
import {toDate} from "../../api/method"; import { toDate } from "../../api/method";
import projSet from "../../components/Modals/projSet"; import projSet from "../../components/Modals/projSet";
import {overview} from "../../api/indexProjStu"; import { overview } from "../../api/indexProjStu";
import TwoDimensionalCode from "../../components/TwoDimensionalCode.vue"; import TwoDimensionalCode from "../../components/TwoDimensionalCode.vue";
import {useStore} from "vuex"; import { useStore } from "vuex";
import ProjectLevel from "@/components/project/ProjectLevel"; import ProjectLevel from "@/components/project/ProjectLevel";
import TrainClass from "@/components/project/TrainClass"; import TrainClass from "@/components/project/TrainClass";
@@ -1836,23 +1864,23 @@ export default {
projectTaskId: "", //项目任务任务id projectTaskId: "", //项目任务任务id
//进度排行学员 //进度排行学员
rankjindu: [ rankjindu: [
{value: "学员", label: "学员"}, { value: "学员", label: "学员" },
{value: "小组", label: "小组"}, { value: "小组", label: "小组" },
], ],
valuestu1: "学员", valuestu1: "学员",
//进度排行阶段 //进度排行阶段
rankjieduan: [{value: "第一阶段", label: "第一阶段"}], rankjieduan: [{ value: "第一阶段", label: "第一阶段" }],
valuestu2: "第一阶段", valuestu2: "第一阶段",
//积分排行 //积分排行
rankxuefen: [ rankxuefen: [
{value: "学员", label: "学员"}, { value: "学员", label: "学员" },
{value: "小组", label: "小组"}, { value: "小组", label: "小组" },
], ],
valuestu3: "学员", valuestu3: "学员",
//学时排行 //学时排行
rankxueshi: [ rankxueshi: [
{value: "学员", label: "学员"}, { value: "学员", label: "学员" },
{value: "小组", label: "小组"}, { value: "小组", label: "小组" },
], ],
valuestu4: "学员", valuestu4: "学员",
visible: false, //时间管理 visible: false, //时间管理
@@ -1994,21 +2022,21 @@ export default {
if (text.record.rank == "1") { if (text.record.rank == "1") {
return ( return (
<img <img
style={{width: 24, height: 24}} style={{ width: 24, height: 24 }}
src={require("../../assets/images/taskpage/one.png")} src={require("../../assets/images/taskpage/one.png")}
/> />
); );
} else if (text.record.rank == "2") { } else if (text.record.rank == "2") {
return ( return (
<img <img
style={{width: 24, height: 24}} style={{ width: 24, height: 24 }}
src={require("../../assets/images/taskpage/two.png")} src={require("../../assets/images/taskpage/two.png")}
/> />
); );
} else if (text.record.rank == "3") { } else if (text.record.rank == "3") {
return ( return (
<img <img
style={{width: 24, height: 24}} style={{ width: 24, height: 24 }}
src={require("../../assets/images/taskpage/three.png")} src={require("../../assets/images/taskpage/three.png")}
/> />
); );
@@ -2101,21 +2129,21 @@ export default {
if (text.record.rank == "1") { if (text.record.rank == "1") {
return ( return (
<img <img
style={{width: 24, height: 24}} style={{ width: 24, height: 24 }}
src={require("../../assets/images/taskpage/one.png")} src={require("../../assets/images/taskpage/one.png")}
/> />
); );
} else if (text.record.rank == "2") { } else if (text.record.rank == "2") {
return ( return (
<img <img
style={{width: 24, height: 24}} style={{ width: 24, height: 24 }}
src={require("../../assets/images/taskpage/two.png")} src={require("../../assets/images/taskpage/two.png")}
/> />
); );
} else if (text.record.rank == "3") { } else if (text.record.rank == "3") {
return ( return (
<img <img
style={{width: 24, height: 24}} style={{ width: 24, height: 24 }}
src={require("../../assets/images/taskpage/three.png")} src={require("../../assets/images/taskpage/three.png")}
/> />
); );
@@ -2208,21 +2236,21 @@ export default {
if (text.record.rank == "1") { if (text.record.rank == "1") {
return ( return (
<img <img
style={{width: 24, height: 24}} style={{ width: 24, height: 24 }}
src={require("../../assets/images/taskpage/one.png")} src={require("../../assets/images/taskpage/one.png")}
/> />
); );
} else if (text.record.rank == "2") { } else if (text.record.rank == "2") {
return ( return (
<img <img
style={{width: 24, height: 24}} style={{ width: 24, height: 24 }}
src={require("../../assets/images/taskpage/two.png")} src={require("../../assets/images/taskpage/two.png")}
/> />
); );
} else if (text.record.rank == "3") { } else if (text.record.rank == "3") {
return ( return (
<img <img
style={{width: 24, height: 24}} style={{ width: 24, height: 24 }}
src={require("../../assets/images/taskpage/three.png")} src={require("../../assets/images/taskpage/three.png")}
/> />
); );
@@ -2928,7 +2956,7 @@ export default {
// width: 60, // width: 60,
align: "center", align: "center",
className: "h", className: "h",
scopedSlots: {customRender: "action"}, //引入的插槽 scopedSlots: { customRender: "action" }, //引入的插槽
customRender: (text) => { customRender: (text) => {
// console.log(text); // console.log(text);
return ( return (
@@ -3090,7 +3118,7 @@ export default {
//点击确认删除单个学员 //点击确认删除单个学员
const closeDeleteOneConfirm = () => { const closeDeleteOneConfirm = () => {
state.deleteOneStu = false; state.deleteOneStu = false;
state.loading = true state.loading = true;
deleteStu({ deleteStu({
projectId: state.projectId, projectId: state.projectId,
studentIds: state.chooseDeleteOne, studentIds: state.chooseDeleteOne,
@@ -3121,7 +3149,7 @@ export default {
}; };
//点击确定的批量删除弹窗 //点击确定的批量删除弹窗
const closeAllDelete = () => { const closeAllDelete = () => {
state.loading = true state.loading = true;
deleteStu({ deleteStu({
projectId: state.projectId, projectId: state.projectId,
studentIds: state.selectedRows, studentIds: state.selectedRows,
@@ -3281,7 +3309,7 @@ export default {
// studentData(); // studentData();
} }
} }
state.loading = false state.loading = false;
}) })
.catch((err) => { .catch((err) => {
console.log("获取学员列表失败", err); console.log("获取学员列表失败", err);
@@ -3295,9 +3323,9 @@ export default {
console.log("get task", res.data.data); console.log("get task", res.data.data);
let info = res.data.data.projectInfo; let info = res.data.data.projectInfo;
// let start = toDate(info.beginTime / 1000, "Y-M-D h:m"); // 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 = toDate(info.endTime / 1000, "Y-M-D h:m");
let end = info.endTime let end = info.endTime;
state.tstartTime = info.beginTime; state.tstartTime = info.beginTime;
state.tendTime = info.endTime; state.tendTime = info.endTime;
state.tsourceBelong = info.sourceBelongName; state.tsourceBelong = info.sourceBelongName;
@@ -3425,7 +3453,7 @@ export default {
//start---------项目概览 //start---------项目概览
// 获取项目概览 // 获取项目概览
const getOverview = () => { const getOverview = () => {
overview({projectId: state.projectId}) overview({ projectId: state.projectId })
.then((res) => { .then((res) => {
Object.keys(res.data.data.projectInfoOverview).forEach((item) => { Object.keys(res.data.data.projectInfoOverview).forEach((item) => {
levelList.projectInfoOverview[item] = levelList.projectInfoOverview[item] =
@@ -3449,7 +3477,7 @@ export default {
}; };
//end---------项目概览 //end---------项目概览
const handleChange = ({file, fileList}) => { const handleChange = ({ file, fileList }) => {
let list = []; let list = [];
if (file.status !== "uploading") { if (file.status !== "uploading") {
console.log("上传的list", fileList); console.log("上传的list", fileList);
@@ -3734,7 +3762,7 @@ export default {
projectGroupId: 0, projectGroupId: 0,
}; };
console.log("obj", obj); console.log("obj", obj);
state.loading = true state.loading = true;
api api
.addStudentProject(obj) .addStudentProject(obj)
.then((res) => { .then((res) => {
@@ -3848,7 +3876,7 @@ export default {
changeGrouped, changeGrouped,
deFile, deFile,
toDate, toDate,
routered routered,
}; };
}, },
}; };