feat:锁定选中阶段 面授获取 公告 历史公告 项目积分规则 项目共享文档

This commit is contained in:
宋文超
2022-11-21 15:12:23 +08:00
parent 0680168b75
commit 8dd1053fb4
9 changed files with 790 additions and 475 deletions

4
src/api/indexFace.js Normal file
View File

@@ -0,0 +1,4 @@
import http from "./config";
//获取面授课开课详情
export const queryFaceDetailById = (offcoursePlanId) => http.post(`http://localhost:8080/api/admin/offcourse/detailPlan?offcoursePlanId=` + offcoursePlanId + ``)

13
src/api/indexNotice.js Normal file
View File

@@ -0,0 +1,13 @@
import http from "./config";
//获取公告列表
// export const noticeList = (projectId) => http.post('/admin/project/noticeList', {
// params: {
// projectId: projectId,
// }
// });
export const noticeList = (projectId) => http.post(`http://localhost:8080/api/admin/project/noticeList?projectId=` + projectId + ``)
//发布项目公告
export const publishNotice = (obj) => http.post('/admin/project/publishNotice', obj)

View File

@@ -1,376 +1,377 @@
function formatNumber(n) { function formatNumber(n) {
n = n.toString(); n = n.toString();
return n[1] ? n : "0" + n; return n[1] ? n : "0" + n;
} }
function toDate(number, format) { function toDate(number, format) {
var formateArr = ["Y", "M", "D", "h", "m", "s"]; var formateArr = ["Y", "M", "D", "h", "m", "s"];
var returnArr = []; var returnArr = [];
if (number === 0) { if (number === 0) {
return 0; return 0;
} else { } else {
var date = new Date(number * 1000); var date = new Date(number * 1000);
} }
returnArr.push(date.getFullYear()); returnArr.push(date.getFullYear());
returnArr.push(formatNumber(date.getMonth() + 1)); returnArr.push(formatNumber(date.getMonth() + 1));
returnArr.push(formatNumber(date.getDate())); returnArr.push(formatNumber(date.getDate()));
returnArr.push(formatNumber(date.getHours())); returnArr.push(formatNumber(date.getHours()));
returnArr.push(formatNumber(date.getMinutes())); returnArr.push(formatNumber(date.getMinutes()));
returnArr.push(formatNumber(date.getSeconds())); returnArr.push(formatNumber(date.getSeconds()));
for (var i in returnArr) { for (var i in returnArr) {
format = format.replace(formateArr[i], returnArr[i]); format = format.replace(formateArr[i], returnArr[i]);
} }
return format; return format;
} }
function getWeek(date) { function getWeek(date) {
//date:'Y-M-D' //date:'Y-M-D'
let time = new Date(date).getDay() let time = new Date(date).getDay()
let week; let week;
if (time == 0) week = "星期日" if (time == 0) week = "星期日"
if (time == 1) week = "星期一" if (time == 1) week = "星期一"
if (time == 2) week = "星期二" if (time == 2) week = "星期二"
if (time == 3) week = "星期三" if (time == 3) week = "星期三"
if (time == 4) week = "星期四" if (time == 4) week = "星期四"
if (time == 5) week = "星期五" if (time == 5) week = "星期五"
if (time == 6) week = "星期六" if (time == 6) week = "星期六"
return week; return week;
} }
/************************************将数字搞成带逗号的那种*********************************************/ /************************************将数字搞成带逗号的那种*********************************************/
function autoComma(number) { function autoComma(number) {
// let number = parseInt(numb) // let number = parseInt(numb)
if (number) { if (number) {
let newNum = ""; //中间变量 let newNum = ""; //中间变量
let arr = []; let arr = [];
let arr1 = []; let arr1 = [];
let num = ""; //最终结果 let num = ""; //最终结果
let isDecimal = false; //是不是小数 let isDecimal = false; //是不是小数
let decimal = 0; //小数点所在位置 let decimal = 0; //小数点所在位置
let decimalNum = ""; //小数点和以后的数据 let decimalNum = ""; //小数点和以后的数据
let negative = false; //是不是负数 let negative = false; //是不是负数
// 判断百万级别或者上亿级别 // 判断百万级别或者上亿级别
let thousand = false; let thousand = false;
let Billion = false; let Billion = false;
if ( if (
(number >= 10000 || number <= -10000) && (number >= 10000 || number <= -10000) &&
number < 100000000 && number < 100000000 &&
number > -100000000 number > -100000000
) { ) {
thousand = true; thousand = true;
number = number / 10000; number = number / 10000;
} }
if (number >= 100000000 || number <= -100000000) { if (number >= 100000000 || number <= -100000000) {
thousand = false; thousand = false;
Billion = true; Billion = true;
number = number / 100000000; number = number / 100000000;
} }
if (number < 0) { if (number < 0) {
number = Math.abs(number); number = Math.abs(number);
negative = true; negative = true;
} }
let numStr = JSON.stringify(number); let numStr = JSON.stringify(number);
// 如果传入的是小数,逗号的添加位置和整数是有区别滴 // 如果传入的是小数,逗号的添加位置和整数是有区别滴
for (let i = 0; i < numStr.length; i++) { for (let i = 0; i < numStr.length; i++) {
if (numStr[i] === ".") { if (numStr[i] === ".") {
isDecimal = true; isDecimal = true;
decimal = i; decimal = i;
decimalNum = numStr.slice(decimal, numStr.length); decimalNum = numStr.slice(decimal, numStr.length);
// 保留两位小数 // 保留两位小数
if (decimalNum.length > 2) { if (decimalNum.length > 2) {
decimalNum = decimalNum.slice(0, 3); decimalNum = decimalNum.slice(0, 3);
} }
numStr = numStr.slice(0, decimal); numStr = numStr.slice(0, decimal);
} }
} }
for (let i = 0; i < numStr.length; i++) { for (let i = 0; i < numStr.length; i++) {
arr.push(numStr[numStr.length - i - 1]); arr.push(numStr[numStr.length - i - 1]);
} }
for (let i = 0; i < arr.length; i++) { for (let i = 0; i < arr.length; i++) {
if ((i + 1) % 3 === 0 && i + 1 !== 0 && i + 1 < arr.length) { if ((i + 1) % 3 === 0 && i + 1 !== 0 && i + 1 < arr.length) {
newNum += arr[i]; newNum += arr[i];
newNum = newNum + ","; newNum = newNum + ",";
} else { } else {
newNum += arr[i]; newNum += arr[i];
} }
} }
for (let i = 0; i < newNum.length; i++) { for (let i = 0; i < newNum.length; i++) {
arr1.push(newNum[newNum.length - i - 1]); arr1.push(newNum[newNum.length - i - 1]);
} }
for (let i = 0; i < arr1.length; i++) { for (let i = 0; i < arr1.length; i++) {
num += arr1[i]; num += arr1[i];
} }
if (isDecimal) { if (isDecimal) {
if (negative) { if (negative) {
// num = '-' + num + decimalNum // num = '-' + num + decimalNum
// return num // return num
if (thousand) { if (thousand) {
num = "-" + num + decimalNum + "万"; num = "-" + num + decimalNum + "万";
return num; return num;
} else if (Billion) { } else if (Billion) {
num = "-" + num + decimalNum + "亿"; num = "-" + num + decimalNum + "亿";
return num; return num;
} else { } else {
num = "-" + num + decimalNum; num = "-" + num + decimalNum;
return num; return num;
} }
} else { } else {
// num = num + decimalNum // num = num + decimalNum
// return num // return num
if (thousand) { if (thousand) {
num = num + decimalNum + "万"; num = num + decimalNum + "万";
return num; return num;
} else if (Billion) { } else if (Billion) {
num = num + decimalNum + "亿"; num = num + decimalNum + "亿";
return num; return num;
} else { } else {
num = num + decimalNum; num = num + decimalNum;
return num; return num;
} }
} }
} else { } else {
if (negative) { if (negative) {
// num = '-' + num // num = '-' + num
// return num // return num
if (thousand) { if (thousand) {
num = "-" + num + "万"; num = "-" + num + "万";
return num; return num;
} else if (Billion) { } else if (Billion) {
num = "-" + num + "亿"; num = "-" + num + "亿";
return num; return num;
} else { } else {
num = "-" + num; num = "-" + num;
return num; return num;
} }
} else { } else {
if (thousand) { if (thousand) {
num = num + "万"; num = num + "万";
return num; return num;
} else if (Billion) { } else if (Billion) {
num = num + "亿"; num = num + "亿";
return num; return num;
} else { } else {
return num; return num;
} }
} }
} }
} else { } else {
return 0; return 0;
} }
} }
const commonData={ const commonData = {
timeout:50 timeout: 50
} }
//组织树 //组织树
const organizationalTree= [ const organizationalTree = [
{ {
title: "京东方", title: "京东方",
value: "京东方", value: "京东方",
children: [ children: [
{ {
title: "产研部", title: "产研部",
value: "产研部", value: "产研部",
children: [ children: [
{ {
title: "产品部", title: "产品部",
value: "产品部", value: "产品部",
}, },
{ {
title: "研究部", title: "研究部",
value: "研究部", value: "研究部",
}, },
{ {
title: "研究部2", title: "研究部2",
value: "研究部2", value: "研究部2",
}, },
{ {
title: "研究3", title: "研究3",
value: "研究3", value: "研究3",
}, },
{ {
title: "研究4", title: "研究4",
value: "研究4", value: "研究4",
}, },
{ {
title: "研究部5", title: "研究部5",
value: "研究部5", value: "研究部5",
}, },
{ {
title: "研究部6", title: "研究部6",
value: "研究部6", value: "研究部6",
}, },
{ {
title: "研究部7", title: "研究部7",
value: "研究部7", value: "研究部7",
}, },
{ {
title: "研究部8", title: "研究部8",
value: "研究部8", value: "研究部8",
}, },
{ {
title: "研究部9", title: "研究部9",
value: "研究部9", value: "研究部9",
}, },
], ],
}, },
{ {
title: "二级标题", title: "二级标题",
value: "二级标题", value: "二级标题",
children: [ children: [
{ {
title: "三级标题", title: "三级标题",
value: "三级标题", value: "三级标题",
children: [ children: [
{ {
title: "四级标题", title: "四级标题",
value: "四级标题", value: "四级标题",
children: [ children: [
{ {
title: "五级标题", title: "五级标题",
value: "五级标题", value: "五级标题",
children: [ children: [
{ {
title: "六级标题", title: "六级标题",
value: "六级标题", value: "六级标题",
children: [ children: [
{ {
title: "七级标题", title: "七级标题",
value: "七级标题", value: "七级标题",
children: [ children: [
{ {
title: "八级标题", title: "八级标题",
value: "八级标题", value: "八级标题",
children: [ children: [
{ {
title: "九级标题", title: "九级标题",
value: "九级标题", value: "九级标题",
children: [ children: [
{ {
title: "十级标题", title: "十级标题",
value: "十级标题", value: "十级标题",
children: [ children: [
{ {
title: "十一级标题", title: "十一级标题",
value: "十一级标题", value: "十一级标题",
children: [ children: [
{ {
title: "十二级标题", title: "十二级标题",
value: "十二级标题", value: "十二级标题",
children: [ children: [
{ {
title: title:
"十三级标题十三级标题十三级标题十三级标题", "十三级标题十三级标题十三级标题十三级标题",
value: "十三级标题", value: "十三级标题",
children: [ children: [
{ {
title: title:
"十四级标题", "十四级标题",
value: value:
"十四级标题", "十四级标题",
children: [ children: [
{ {
title: title:
"十五级标题", "十五级标题",
value: value:
"十五级标题", "十五级标题",
children: [ children: [
{ {
title: title:
"十六级标题", "十六级标题",
value: value:
"十六级标题", "十六级标题",
children: children:
[ [
{ {
title: title:
"十七级标题", "十七级标题",
value: value:
"十七级标题", "十七级标题",
children: children:
[ [
{ {
title: title:
"十八级标题", "十八级标题",
value: value:
"十八级标题", "十八级标题",
children: children:
[ [
{ {
title: title:
"十九级标题", "十九级标题",
value: value:
"十九级标题", "十九级标题",
children: children:
[ [
{ {
title: title:
"二十级标题二十级标题", "二十级标题二十级标题",
value: value:
"二十级标题二十级标题", "二十级标题二十级标题",
}, },
], ],
}, },
], ],
}, },
], ],
}, },
], ],
}, },
], ],
}, },
], ],
}, },
], ],
}, },
], ],
}, },
], ],
}, },
], ],
}, },
], ],
}, },
], ],
}, },
], ],
}, },
], ],
}, },
], ],
}, },
], ],
}, },
], ],
}, },
], ],
}, },
{ {
title: "人力资源部", title: "人力资源部",
value: "人力资源部", value: "人力资源部",
children: [ children: [
{ {
title: "人事部", title: "人事部",
value: "人事部", value: "人事部",
}, },
{ {
title: "行政部", title: "行政部",
value: "行政部", value: "行政部",
}, },
], ],
}, },
], ],
}, },
] ]
export { export {
toDate, toDate,
getWeek, getWeek,
autoComma, autoComma,
commonData, formatNumber,
organizationalTree, commonData,
organizationalTree,
} }

View File

@@ -102,6 +102,7 @@
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-range-picker <a-range-picker
v-model:value="chooseTime"
:placeholder="[' 开始时间', ' 结束时间']" :placeholder="[' 开始时间', ' 结束时间']"
/> />
</div> </div>
@@ -185,10 +186,10 @@
<span style="color: #999999; margin-left: 8px">分钟</span> <span style="color: #999999; margin-left: 8px">分钟</span>
</div> </div>
</div> </div>
<!-- <div class="qdqtbox"> <div class="qdqtbox">
<div class="qtbtn"><div class="btntext">签退</div></div> <div class="qtbtn"><div class="btntext">签退</div></div>
</div> --> </div>
<!-- <div class="setbox"> <div class="setbox">
<div class="timerbox"> <div class="timerbox">
<span>结束前</span> <span>结束前</span>
<a-input-number <a-input-number
@@ -207,7 +208,7 @@
>分钟提前签退则记为早退</span >分钟提前签退则记为早退</span
> >
</div> </div>
</div> --> </div>
</div> </div>
</div> </div>
<div class="main_item"> <div class="main_item">
@@ -230,7 +231,7 @@
<span style="margin-right: 3px">其他设置</span> <span style="margin-right: 3px">其他设置</span>
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-checkbox v-model:checked="checked" <a-checkbox v-model:checked="checkedHolidy"
>学员请假后记为任务完成</a-checkbox >学员请假后记为任务完成</a-checkbox
> >
</div> </div>
@@ -255,7 +256,9 @@
<span style="margin-right: 3px">评估</span> <span style="margin-right: 3px">评估</span>
</div> </div>
<div class="btnbox2"> <div class="btnbox2">
<a-checkbox v-model:checked="checked">需要评估</a-checkbox> <a-checkbox v-model:checked="checkedAssessment"
>需要评估</a-checkbox
>
<button class="xkbtn">选择评估</button> <button class="xkbtn">选择评估</button>
</div> </div>
</div> </div>
@@ -309,7 +312,11 @@ import { reactive, toRefs } from "vue";
import SelFacet from "../../components/drawers/SelFacet.vue"; import SelFacet from "../../components/drawers/SelFacet.vue";
import AddHomework from "../../components/drawers/AddHomework.vue"; import AddHomework from "../../components/drawers/AddHomework.vue";
import AddTest from "../../components/drawers/AddTest.vue"; import AddTest from "../../components/drawers/AddTest.vue";
import { ProjectEditTask, RouterEditTask } from "@/api/indexTask";
// import * as method from "../../api/method"
import { message } from "ant-design-vue";
import { queryFaceDetailById } from "../../api/indexFace";
import dayjs from "dayjs";
export default { export default {
name: "AddFaceteach", name: "AddFaceteach",
components: { components: {
@@ -379,6 +386,10 @@ export default {
testV1: "", testV1: "",
radioV1: "", radioV1: "",
radioV2: "", radioV2: "",
textV1: "",
checkedHolidy: false,
checkedAssessment: false,
chooseTime: [],
}); });
const closeDrawer = () => { const closeDrawer = () => {
ctx.emit("update:addfaceteachVisible", false); ctx.emit("update:addfaceteachVisible", false);
@@ -388,9 +399,11 @@ export default {
localStorage.setItem("chapterId", props.isactive); localStorage.setItem("chapterId", props.isactive);
}; };
const afterVisibleChange = (bool) => { const afterVisibleChange = (bool) => {
if (bool) { if (bool && props.edit) {
// 该页面显示同时 edit为true 时,发送查询请求,
queryFaceTeach(); queryFaceTeach();
} }
// queryFaceTeach();
}; };
const showDrawerSelFacet = () => { const showDrawerSelFacet = () => {
state.selfacetvisible = true; state.selfacetvisible = true;
@@ -412,12 +425,102 @@ export default {
} }
}; };
//查询面授 //查询面授
const queryFaceTeach = () => {}; const queryFaceTeach = () => {
//更新任务列表 //暂时写一个假的offcoursePlanId
const updateTask = () => {}; queryFaceDetailById(2).then((res) => {
// state.inputV1 = res.data.data.name;
// state.inputV2 = res.data.data.teacherId;
console.log("获取到了面授课开课详情", res.data.data);
let result = res.data.data;
state.inputV1 = result.name;
state.textV1 = result.description;
state.inputV2 = result.teacher;
if (result.beginTime && result.endTime) {
state.chooseTime = [
dayjs(result.beginTime, "YYYY-MM-DD"),
dayjs(result.endTime, "YYYY-MM-DD"),
];
} else {
state.chooseTime = [];
}
state.inputV4 = result.address;
state.inputV5 = result.beforeStart;
state.inputV6 = result.afterStart;
state.inputV7 = result.beforeEnd;
// state.radioV1 = result.
state.checkedHolidy =
result.completeType == 1
? false
: result.completeType == 2
? false
: result.completeType == 3
? true
: false;
if (result.projectMember) {
state.radioV2 = "1";
} else if (result.noProjectMember) {
state.radioV2 = "2";
} else {
state.radioV2 = "";
}
if (result.completeSet == 1) {
state.radioV1 = "1";
} else {
state.radioV1 = "2";
}
state.checkedAssessment = result.evalFlag == 1 ? true : false;
});
};
//新建或编辑面授 //新建或编辑面授
const updateFaceTeach = () => {}; const updateFaceTeach = () => {};
const upDateTable = () => { const upDateTable = () => {};
//更新任务列表
const updateTask = (res) => {
if (props.isLevel == 1) {
let editObj1 = {
chapterId: props.isactive,
courseId: res.data.data.offcoursePlanId,
name: res.data.data.name,
routerId: props.routerId,
routerTaskId: props.routerTaskId || 0,
type: 2,
};
RouterEditTask(editObj1)
.then(() => {
message.success(`${props.edit ? "编辑" : "新增"}关卡任务成功`);
ctx.emit("changeData", false);
// state.addLoading = false;
closeDrawer();
})
.catch(() => {
message.error(`${props.edit ? "编辑" : "新增"}关卡任务失败`);
});
} else if (props.isLevel == 2) {
let editObj = {
courseId: res.data.data.offcoursePlanId,
duration: 0,
name: res.data.data.name,
projectId: props.projectId,
projectTaskId: props.projectTaskId || 0,
stageId: props.chooseStageId,
type: 2,
};
// 新增编辑或新增项目
ProjectEditTask(editObj)
.then(() => {
message.success(
`${props.EditTestId ? "编辑" : "新增"}阶段任务成功`
);
ctx.emit("changeData", false);
})
.catch(() => {
message.error(`${props.EditTestId ? "编辑" : "新增"}阶段任务失败`);
});
} else if (props.isLevel == 3) {
console.log("");
}
}; };
return { return {
...toRefs(state), ...toRefs(state),

View File

@@ -16,6 +16,8 @@
<script> <script>
import { reactive, toRefs, onMounted } from "vue"; import { reactive, toRefs, onMounted } from "vue";
import { getTask } from "../../api/indexTaskadd"; import { getTask } from "../../api/indexTaskadd";
import { noticeList } from "../../api/indexNotice";
// import { toDate } from "../../api/method";
export default { export default {
name: "NoticeHis", name: "NoticeHis",
props: { props: {
@@ -35,11 +37,6 @@ export default {
// "jwlfwefefweffjwofiewjffwefwowefjwlfwefwefwefweffjwofiewjfowefjwlfwefwefwefweffjwofiewjfowefjwlfwefwefwefweffjwofiewjfowefjwlfwefwefwefweffjwofiewjfowefjwlfwefwefwefweffjwofiewjfowefjwlfwefwefwefweffjwofiewjfowefjwlfwefwefwefwef", // "jwlfwefefweffjwofiewjffwefwowefjwlfwefwefwefweffjwofiewjfowefjwlfwefwefwefweffjwofiewjfowefjwlfwefwefwefweffjwofiewjfowefjwlfwefwefwefweffjwofiewjfowefjwlfwefwefwefweffjwofiewjfowefjwlfwefwefwefweffjwofiewjfowefjwlfwefwefwefwef",
// pubtime: "2022-11-7 12:23:00", // pubtime: "2022-11-7 12:23:00",
// }, // },
// {
// id: 2,
// content: "fjwofiewjfowefjwlfwefwefwefwef",
// pubtime: "2022-11-7 12:23:00",
// },
], ],
projectInfo: {}, projectInfo: {},
}); });
@@ -50,12 +47,42 @@ export default {
//下一步是把公告赋值给state.notice //下一步是把公告赋值给state.notice
}); });
}; };
const setNoticeData = (tableData) => {
let data = tableData;
let array = [];
data.map((item) => {
let obj = {
id: item.noticeId,
content: item.notice,
createId: item.createId,
pubtime: item.createTime,
};
array.push(obj);
});
state.notice = array;
};
const getNotice = () => {
noticeList(props.projectId)
.then((res) => {
console.log("获取公告列表成功");
let result = res.data.data;
if (result.length > 0) {
setNoticeData(result);
}
})
.catch((err) => {
console.log("获取公告列表失败", err);
});
};
onMounted(() => { onMounted(() => {
getTaskInfo(); getTaskInfo();
getNotice();
}); });
return { return {
...toRefs(state), ...toRefs(state),
getTaskInfo, getTaskInfo,
getNotice,
setNoticeData,
}; };
}, },
}; };

View File

@@ -28,7 +28,8 @@
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
import { reactive, toRefs, onMounted } from "vue"; import { reactive, toRefs, onMounted } from "vue";
import { getTask } from "../../api/indexTaskadd"; import { getTask } from "../../api/indexTaskadd";
import { editProj } from "../../api/indexTaskadd"; // import { editProj } from "../../api/indexTaskadd";
import { publishNotice } from "../../api/indexNotice";
export default { export default {
name: "NoticePub", name: "NoticePub",
props: { props: {
@@ -54,36 +55,19 @@ export default {
message.destroy(); message.destroy();
return message.warning("请输入公告内容"); return message.warning("请输入公告内容");
} else { } else {
let result = state.projectInfo;
let obj = { let obj = {
attach: result.attach, createId: state.projectInfo.createId,
beginTime: result.beginTime, createName: state.projectInfo.createName,
boeFlag: result.boeFlag,
category: result.category,
courseSyncFlag: result.courseSyncFlag,
endTime: result.endTime,
level: result.level,
manager: result.manager,
managerId: result.managerId,
name: result.name,
notice: state.noticeContent, notice: state.noticeContent,
noticeFlag: 1, noticeId: 0,
parentId: result.parentId, projectId: props.projectId,
picUrl: result.picUrl, title: "",
projectId: result.projectId,
remark: result.remark,
sourceBelongId: result.sourceBelongId,
status: result.status,
systemId: result.systemId,
templateId: result.templateId,
type: result.type,
}; };
// console.log(result, obj, result.type); publishNotice(obj)
editProj(obj)
.then((res) => { .then((res) => {
message.destroy(); message.destroy();
message.success("发布成功", res); message.success("发布成功", res);
state.noticeContent = null; state.noticeContent = "";
}) })
.catch((err) => { .catch((err) => {
message.destroy(); message.destroy();

View File

@@ -291,9 +291,10 @@ import StuScoreDetail from "../../components/drawers/StuScoreDetail";
import { reactive, toRefs, computed, onMounted } from "vue"; import { reactive, toRefs, computed, onMounted } from "vue";
import * as api from "../../api/index1"; import * as api from "../../api/index1";
// import { message } from "ant-design-vue"; // import { message } from "ant-design-vue";
// import { scoreRule } from "../../api/indexTaskadd"; //获取项目积分规则 import { scoreRule } from "../../api/indexTaskadd"; //获取项目积分规则
import { setScoreRule } from "../../api/indexTaskadd"; //设置项目积分规则 import { setScoreRule } from "../../api/indexTaskadd"; //设置项目积分规则
import { getProjStu } from "../../api/indexProjStu"; import { getProjStu } from "../../api/indexProjStu";
import { message } from "ant-design-vue";
export default { export default {
name: "ProjectScore", name: "ProjectScore",
components: { components: {
@@ -512,6 +513,8 @@ export default {
if (e == 2) { if (e == 2) {
// console.log('获取项目积分-榜单') // console.log('获取项目积分-榜单')
scoreRank(1, 1); scoreRank(1, 1);
} else if (e == 3) {
getScoreRule();
} }
rankReset(); rankReset();
state.todayvalue = "1"; state.todayvalue = "1";
@@ -558,29 +561,55 @@ export default {
}); });
}; };
// end -----榜单----------------榜单----------------------榜单-----------榜单---------- // end -----榜单----------------榜单----------------------榜单-----------榜单----------
//设置积分规则
const editRule = () => { const editRule = () => {
console.log(props.projectId); console.log(props.projectId);
let obj = { let obj = {
courseScore: state.score1, courseScore: state.score1,
examItem: { examItem: [
numLimit: 0, {
score: state.five2, id: 0,
scoreLimit: state.five1, projectId: props.projectId,
}, numLimit: 0,
//有名次要求的提交作业 score: state.five2,
homeworkItem: { scoreLimit: state.five1,
numLimit: state.four3, type: 3,
score: state.four5, },
scoreLimit: state.four4, ],
},
homeworkItem: [
//有名次要求的提交作业
{
id: 0,
projectId: props.projectId,
numLimit: state.four3,
score: state.four5,
scoreLimit: state.four4,
type: 2,
},
//无名次要求的提交作业
{
id: 0,
projectId: props.projectId,
numLimit: 0,
score: state.done3,
scoreLimit: state.done2,
type: 2,
},
],
leaderScore: state.seven1, leaderScore: state.seven1,
projectId: props.projectId, projectId: props.projectId,
signScore: state.six1, signScore: state.six1,
topCompleteCourseItem: { topCompleteCourseItem: [
numLimit: state.four1, {
score: state.four2, id: 0,
scoreLimit: 0, projectId: props.projectId,
}, numLimit: state.four1,
score: state.four2,
scoreLimit: 0,
type: 1,
},
],
topStudentScore: state.seven2, topStudentScore: state.seven2,
totalScore: scoresum.value, totalScore: scoresum.value,
}; };
@@ -588,9 +617,13 @@ export default {
setScoreRule(obj) setScoreRule(obj)
.then((res) => { .then((res) => {
console.log(res.data, "修改成功"); console.log(res.data, "修改成功");
message.destroy();
return message.success("修改积分规则成功");
}) })
.catch((err) => { .catch((err) => {
console.log(err.data); console.log(err.data);
message.destroy();
return message.warning("修改积分规则失败");
}); });
// scoreRule({ // scoreRule({
// projectId: props.projectId, // projectId: props.projectId,
@@ -655,6 +688,33 @@ export default {
state.searchNameValue = null; state.searchNameValue = null;
getStu(); getStu();
}; };
const getScoreRule = () => {
scoreRule({
projectId: props.projectId,
})
.then((res) => {
console.log("获取了项目积分规则", res.data.data);
let result = res.data.data;
scoresum.value = result.totalScore; //Write operation failed: computed value is readonly
state.seven1 = result.leaderScore;
state.score1 = result.courseScore;
state.done2 = result.homeworkItem[1].scoreLimit;
state.done3 = result.homeworkItem[1].score;
state.four1 = result.topCompleteCourseItem[0].numLimit;
state.four2 = result.topCompleteCourseItem[0].score;
state.four3 = result.homeworkItem[0].numLimit;
state.four4 = result.homeworkItem[0].scoreLimit;
state.four5 = result.homeworkItem[0].score;
state.five1 = result.examItem[0].scoreLimit;
state.five2 = result.examItem[0].score;
state.six1 = result.signScore;
state.seven1 = result.leaderScore;
state.seven2 = result.topStudentScore;
})
.catch((err) => {
console.log("获取项目积分规则失败了", err);
});
};
onMounted(() => { onMounted(() => {
getStu(); getStu();
}); });
@@ -673,6 +733,7 @@ export default {
changePagination, changePagination,
searchStu, searchStu,
resetStud, resetStud,
getScoreRule,
}; };
}, },
// computed: { // computed: {

View File

@@ -989,9 +989,8 @@
</div></a-modal </div></a-modal
> >
<!-- 是否删除阶段弹窗 -->
<!-- 是否删除阶段弹窗 --> <a-modal
<a-modal
v-model:visible="deleteStageModal" v-model:visible="deleteStageModal"
:footer="null" :footer="null"
:closable="cC" :closable="cC"
@@ -1011,10 +1010,10 @@
</div> </div>
<div class="del_btnbox"> <div class="del_btnbox">
<div class="del_btn btn1" @click="closeDeleteStage"> <div class="del_btn btn1" @click="closeDeleteStage">
<div class="btnText" >取消</div> <div class="btnText">取消</div>
</div> </div>
<div class="del_btn btn2" @click="deleteStage"> <div class="del_btn btn2" @click="deleteStage">
<div class="btnText" >确定</div> <div class="btnText">确定</div>
</div> </div>
</div> </div>
</div> </div>
@@ -1289,8 +1288,8 @@ export default {
selectAll: 0, //0未选择1全选2部分选择 selectAll: 0, //0未选择1全选2部分选择
updateStageID: null, //编辑阶段id updateStageID: null, //编辑阶段id
deleteStageId:null,//删除阶段的id deleteStageId: null, //删除阶段的id
deleteStageModal:false,//删除阶段弹窗 deleteStageModal: false, //删除阶段弹窗
}); });
console.log("projectId", state.projectId); console.log("projectId", state.projectId);
const selectProjectName = (value, index) => { const selectProjectName = (value, index) => {
@@ -1520,8 +1519,10 @@ export default {
? localStorage.getItem("stageId") ? localStorage.getItem("stageId")
: null; : null;
console.log("zhaodaole", stage); console.log("zhaodaole", stage);
// console.log("stage",Object.prototype.toString.call(stage))
if (stage !== null) { getStageData(res.data.data.stageList);
if (stage !== "null") {
console.log(stage);
let stageList = res.data.data.stageList; //阶段数组 let stageList = res.data.data.stageList; //阶段数组
let result = stageList.find((item) => item.stageId == stage); let result = stageList.find((item) => item.stageId == stage);
console.log("又找到了", result); console.log("又找到了", result);
@@ -1530,11 +1531,9 @@ export default {
let arr = res.data.data.stageList[0].taskList; let arr = res.data.data.stageList[0].taskList;
console.log("任务列表", arr); console.log("任务列表", arr);
getTableData(arr); getTableData(arr);
// state.isActive = true;
changebgc(res.data.data.stageList[0].stageId);
} }
// let stageList = res.data.data.stageList; //阶段数组
// let result = stageList.find((item) => item.stageId == stage);
// console.log("又找到了", result);
// getTableData(result.taskList);
// 每次都获取了第一条taskList // 每次都获取了第一条taskList
// let arr = res.data.data.stageList[0].taskList; // let arr = res.data.data.stageList[0].taskList;
@@ -1544,7 +1543,7 @@ export default {
let stagearr = res.data.data.stageList; let stagearr = res.data.data.stageList;
let arrlist = state.curLevel; let arrlist = state.curLevel;
//console.log(stagearr, 111111); console.log(stagearr, 111111);
if (stagearr.length > 0) { if (stagearr.length > 0) {
getStageData(stagearr); getStageData(stagearr);
stagearr.map((value) => { stagearr.map((value) => {
@@ -1553,11 +1552,11 @@ export default {
}); });
} }
//给阶段id赋初始值 //给阶段id赋初始值
let stage = localStorage.getItem("stageId") let stageid = localStorage.getItem("stageId")
? localStorage.getItem("stageId") ? localStorage.getItem("stageId")
: null; : null;
if (stage !== "null") { if (stageid !== "null") {
state.chooseStageId = stage; state.chooseStageId = stageid;
} else { } else {
state.chooseStageId = leng > 0 ? stagearr[0].stageId : null; state.chooseStageId = leng > 0 ? stagearr[0].stageId : null;
} }
@@ -1719,7 +1718,7 @@ export default {
console.log("修改阶段成功", res); console.log("修改阶段成功", res);
state.valuesname = ""; state.valuesname = "";
state.valuesnotice = ""; state.valuesnotice = "";
closeModal() closeModal();
state.updateStageID = null; state.updateStageID = null;
message.destroy(); message.destroy();
message.success("修改阶段成功"); message.success("修改阶段成功");
@@ -1738,9 +1737,9 @@ export default {
.editStage(obj) .editStage(obj)
.then((res) => { .then((res) => {
console.log("添加阶段成功", res); console.log("添加阶段成功", res);
state.valuesname = "" state.valuesname = "";
state.valuesnotice = "" state.valuesnotice = "";
closeModal() closeModal();
message.destroy(); message.destroy();
message.success("添加阶段成功"); message.success("添加阶段成功");
getTask(); getTask();
@@ -1751,19 +1750,17 @@ export default {
} }
}; };
//打开删除阶段弹窗
//打开删除阶段弹窗 const showDeleteStage = (id) => {
const showDeleteStage=(id)=>{ state.deleteStageId = id;
state.deleteStageModal = true;
state.deleteStageId=id };
state.deleteStageModal=true //关闭删除阶段弹窗
} const closeDeleteStage = () => {
//关闭删除阶段弹窗 state.deleteStageId = null;
const closeDeleteStage=()=>{ state.deleteStageModal = false;
state.deleteStageId=null };
state.deleteStageModal=false //删除阶段
}
//删除阶段
const deleteStage = () => { const deleteStage = () => {
console.log("chapterId", state.deleteStageId); console.log("chapterId", state.deleteStageId);
let obj = { let obj = {
@@ -1773,8 +1770,8 @@ const closeDeleteStage=()=>{
.deleteStage(obj) .deleteStage(obj)
.then((res) => { .then((res) => {
console.log("删除阶段成功", res); console.log("删除阶段成功", res);
message.success('删除阶段成功') message.success("删除阶段成功");
closeDeleteStage() closeDeleteStage();
getTask(); getTask();
}) })
.catch((err) => { .catch((err) => {

View File

@@ -1049,8 +1049,8 @@
</span> </span>
</div> </div>
<div <div
v-for="item in docList" v-for="item in fileList"
:key="item.src" :key="item.uid"
class="docListStyle" class="docListStyle"
> >
<img <img
@@ -1066,7 +1066,7 @@
<span style="font: oblique bold 16px Sans-serif">{{ <span style="font: oblique bold 16px Sans-serif">{{
item.name item.name
}}</span> }}</span>
<span style="color: #4ea6ff; float: right">删除</span> <span style="color: #4ea6ff; float: right;cursor: pointer;" @click="deFile(item.uid)">删除</span>
</div> </div>
</div> </div>
</div> </div>
@@ -1713,6 +1713,7 @@ import {
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 { 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";
@@ -1776,20 +1777,6 @@ export default {
choosedStageId: 1, // 选择的阶段id choosedStageId: 1, // 选择的阶段id
activeSetKey: "12", //12-基础信息 13-共享文档 activeSetKey: "12", //12-基础信息 13-共享文档
docChecked: true, docChecked: true,
docList: [
{
name: "测试文档1.doc",
src: "",
},
{
name: "测试文档2.doc",
src: "",
},
{
name: "测试文档3.doc",
src: "",
},
],
//学员信息列表 //学员信息列表
tabledata: [ tabledata: [
// { // {
@@ -1907,6 +1894,7 @@ export default {
ChangeGroupStuId: null, //要换组的学生id ChangeGroupStuId: null, //要换组的学生id
ChangeGroupStuName: null, //要换组的学生name ChangeGroupStuName: null, //要换组的学生name
ChangeGroupId: null, //要换组的学生的小组id ChangeGroupId: null, //要换组的学生的小组id
fileList: [], //文件列表
//进度排行表 //进度排行表
jindutabledata: [ jindutabledata: [
{ {
@@ -2371,16 +2359,31 @@ export default {
valueName: "", //排行榜输入姓名 valueName: "", //排行榜输入姓名
//设置 //设置
name: null, //项目名称 name: null, //项目名称 未改
startTime: null, //开始时间 startTime: null, //开始时间 已改
endTime: null, //结束时间 tstartTime: null, //开始事件 未改
manager: null, //项目经理 endTime: null, //结束时间 已改
sourceBelong: null, //资源归属 tendTime: null, //结束时间 未改
remark: null, //项目说明 manager: null, //项目经理 未改
level: null, //项目级别 sourceBelong: null, //资源归属 已改
tsourceBelong: null, //资源归属 未改
remark: null, //项目说明 未改
level: null, //项目级别 已改
tlevel: null, //项目级别 未改
systemId: null, //培训分类 systemId: null, //培训分类
picUrl: null, tsystemId: null, //培训分类 未改
parentId: null, picUrl: null, //未改
parentId: null, //未改
courseSyncFlag: null, //未改
boeFlag: null, //未改
managerId: null, //未改
notice: null, //未改
status: null, //未改
type: null, //未改
category: null, //未改
noticeFlag: null, //未改
templateId: null, //未改
attach: null,
}); });
const levelList = reactive({ const levelList = reactive({
@@ -3309,6 +3312,9 @@ export default {
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 end = toDate(info.endTime / 1000, "Y-M-D h:m"); let end = toDate(info.endTime / 1000, "Y-M-D h:m");
state.tstartTime = info.beginTime;
state.tendTime = info.endTime;
state.tsourceBelong = info.sourceBelongId;
state.parentId = info.parentId; state.parentId = info.parentId;
state.name = info.name; state.name = info.name;
state.startTime = start; state.startTime = start;
@@ -3325,6 +3331,7 @@ export default {
: info.level == 4 : info.level == 4
? "部门级" ? "部门级"
: "-"; : "-";
state.tlevel = info.level;
state.systemId = state.systemId =
info.systemId == 1 info.systemId == 1
? "集团级" ? "集团级"
@@ -3335,9 +3342,20 @@ export default {
: info.systemId == 4 : info.systemId == 4
? "部门级" ? "部门级"
: "-"; : "-";
state.tsystemId = info.systemId;
state.checkedSty = info.courseSyncFlag == 1 ? true : false; state.checkedSty = info.courseSyncFlag == 1 ? true : false;
state.courseSyncFlag = info.courseSyncFlag;
state.checkedBOEU = info.boeFlag == 1 ? true : false; state.checkedBOEU = info.boeFlag == 1 ? true : false;
state.boeFlag = info.boeFlag;
state.picUrl = info.picUrl; state.picUrl = info.picUrl;
state.managerId = info.managerId;
state.notice = info.notice;
state.status = info.status;
state.type = info.type;
state.category = info.category;
state.noticeFlag = info.noticeFlag;
// state.attach = info.attach;
// state.templateId = info.templateId;
state.sourceBelong = state.sourceBelong =
info.sourceBelongId == 1 info.sourceBelongId == 1
? "项目一" ? "项目一"
@@ -3346,6 +3364,24 @@ export default {
: info.sourceBelongId == 3 : info.sourceBelongId == 3
? "项目三" ? "项目三"
: "-"; : "-";
// state.fileList=info.attach.split(",")
let d = info.attach.indexOf(",");
console.log(info.attach, "xgo", info.attach.length);
if (info.attach.length == 0) {
return;
} else if (info.attach.length !== 0 && d == -1) {
return;
} else {
console.log(info.attach, "xgo");
// let str = JSON.parse(info.attach)
// console.log("赚回来",str)
// let luj = info.attach.split(",")
let luj = info.attach;
console.log("lulj", luj);
console.log("赚回来", JSON.parse(luj));
state.fileList = JSON.parse(luj)
// state.fileList = luj
}
}); });
}; };
//获取小组列表 //获取小组列表
@@ -3453,8 +3489,54 @@ export default {
//end---------项目概览 //end---------项目概览
const handleChange = (info) => { const handleChange = (info) => {
let list = [];
if (info.file.status !== "uploading") { if (info.file.status !== "uploading") {
console.log(info.file, info.fileList); console.log(info.file.response.data, info.fileList);
// info.fileList.map((item) => {
// //把地址放到list里
// // list.push(item.response.data);
// // list.push(JSON.stringify(item))
// state.fileList.push(item)
// });
state.fileList.push(info.file)
list = state.fileList
console.log("list", list);
// let str = list.join(",");
let str = JSON.stringify(list);
console.log("str", str);
//要编辑项目
editProj({
attach: str,
beginTime: state.tstartTime.slice(0, 10),
// beginTime:1668643200,
boeFlag: state.boeFlag,
category: state.category,
courseSyncFlag: state.courseSyncFlag,
endTime: state.tendTime.slice(0, 10),
// endTime: 1668816000,
level: state.tlevel,
manager: state.manager,
managerId: state.managerId,
name: state.name,
notice: state.notice,
noticeFlag: state.noticeFlag,
parentId: state.parentId,
picUrl: state.picUrl,
projectId: state.projectId,
remark: state.remark,
sourceBelongId: Number(state.tsourceBelong),
status: state.status,
systemId: state.tsystemId,
templateId: state.templateId || 0,
type: state.type,
})
.then((res) => {
console.log("上传成功", res);
})
.catch((err) => {
console.log("上传失败了", err);
});
} }
if (info.file.status === "done") { if (info.file.status === "done") {
@@ -3644,6 +3726,46 @@ export default {
console.log("模版保存失败", err); console.log("模版保存失败", err);
}); });
}; };
//删除文件
const deFile=(id)=>{
console.log(id)
let index = state.fileList.findIndex(item=>{item.uid==id})
state.fileList.splice(index,1)
let str = JSON.stringify(state.fileList)
editProj({
attach: str,
beginTime: state.tstartTime.slice(0, 10),
// beginTime:1668643200,
boeFlag: state.boeFlag,
category: state.category,
courseSyncFlag: state.courseSyncFlag,
endTime: state.tendTime.slice(0, 10),
// endTime: 1668816000,
level: state.tlevel,
manager: state.manager,
managerId: state.managerId,
name: state.name,
notice: state.notice,
noticeFlag: state.noticeFlag,
parentId: state.parentId,
picUrl: state.picUrl,
projectId: state.projectId,
remark: state.remark,
sourceBelongId: Number(state.tsourceBelong),
status: state.status,
systemId: state.tsystemId,
templateId: state.templateId || 0,
type: state.type,
})
.then((res) => {
console.log("上传成功", res);
message.destroy()
return message.success("删除成功")
})
.catch((err) => {
console.log("上传失败了", err);
});
}
onMounted(() => { onMounted(() => {
getStu(); getStu();
getTaskList(); getTaskList();
@@ -3651,6 +3773,8 @@ export default {
getGroup(); getGroup();
getOverview(); getOverview();
reget(); reget();
// let a = state.attach.split(",")
// state.fileList = a
}); });
return { return {
...toRefs(state), ...toRefs(state),
@@ -3744,6 +3868,7 @@ export default {
closeStartModal, closeStartModal,
templateProject, templateProject,
changeGrouped, changeGrouped,
deFile,
}; };
}, },
}; };