feat: 发布公告,积分获取和修改

This commit is contained in:
王熙东
2022-11-24 17:31:00 +08:00
parent 1dd90d9b1e
commit 9df0de97b1
2 changed files with 266 additions and 54 deletions

View File

@@ -333,51 +333,131 @@
</div>
</div>
<div v-else class="btns">
<div class="btn1" @click="edit = !edit">
<div class="btn1" @click="editRule">
<span class="btn1text">保存</span>
</div>
</div>
</div>
<div v-if="edit" class="pjcb_content">
<div class="content content1">
<span>当前设计下学员可以获得 </span
><span class="scoretext">{{ scoresum }}</span
><span>积分</span>
</div>
<div class="content content2">
<span>完成必修/选修获得 </span
><span class="scoretext">{{ score1 }} </span><span>积分</span>
</div>
<div class="content content3">
<span>优秀学员可获得 </span
><span class="scoretext">{{ score2 }}</span
><span>积分</span>
</div>
<div class="content content1">
<span>当前设计下学员可以获得 </span
><span class="scoretext">{{ scoresum }}</span
><span>积分</span>
</div>
<div v-else class="pjcb_content">
<div class="content content1">
<span>当前设计下学员可以获得 </span
><span class="scoretext">{{ scoresum }}</span
><span>积分</span>
</div>
<div class="content content2">
<span>完成必修/选修获得 </span
><span
><a-input
v-model:value="score1"
:bordered="false"
@change="getScore"
/> </span
><span>积分</span>
</div>
<div class="content content3">
<span>优秀学员可获得 </span
><span
><a-input v-model:value="score2" :bordered="false" /></span
><span>积分</span>
</div>
<div class="content content2">
<span>完成必修/选修获得 </span
><span class="scoretext">{{ score1 }} </span><span>积分</span>
</div>
<div class="content">
<span>完成作业成绩不低于 </span
><span class="scoretext">{{ done2 }}</span
><span>分获得</span> <span class="scoretext">{{ done3 }}</span
><span>积分</span>
</div>
<div class="content">
<span></span><span class="scoretext">{{ four1 }}</span
><span>名学完在线课程获得</span>
<span class="scoretext">{{ four2 }}</span
><span style="margin-right: 50px">积分</span> <span></span
><span class="scoretext">{{ four3 }}</span
><span>名提交作业且成绩不低于</span>
<span class="scoretext">{{ four4 }}</span
><span>分获得</span> <span class="scoretext">{{ four5 }}</span
><span>积分</span>
</div>
<div class="content">
<span>考试成绩高于</span
><span class="scoretext">{{ five1 }}</span
><span>分获得</span> <span class="scoretext">{{ five2 }}</span
><span>积分</span>
</div>
<div class="content">
<span>考勤正常学员获得 </span
><span class="scoretext">{{ six1 }}</span
><span>积分</span>
</div>
<div class="content">
<span>成为小组长获得</span
><span class="scoretext">{{ seven1 }}</span
><span style="margin-right: 50px">积分</span>
<span>优秀学员可获得</span>
<span class="scoretext">{{ seven2 }}</span
><span>积分</span>
</div>
</div>
<div v-else class="pjcb_content">
<div class="content content1">
<span>当前设计下学员可以获得 </span
><span class="scoretext">{{ scoresum }}</span
><span>积分</span>
</div>
<div class="content content2">
<span>完成必修/选修获得 </span
><span
><a-input
v-model:value="score1"
:bordered="false"
@change="getScore"
/> </span
><span>积分</span>
</div>
<div class="content">
<span>完成作业成绩不低于 </span
><a-input v-model:value="done2" :bordered="false" /><span
>分获得</span
>
<a-input v-model:value="done3" :bordered="false" /><span
>积分</span
>
</div>
<div class="content">
<span></span
><a-input v-model:value="four1" :bordered="false" /><span
>名学完在线课程获得</span
>
<a-input v-model:value="four2" :bordered="false" /><span
style="margin-right: 50px"
>积分</span
>
<span></span
><a-input v-model:value="four3" :bordered="false" /><span
>名提交作业且成绩不低于</span
>
<a-input v-model:value="four4" :bordered="false" /><span
>分获得</span
>
<a-input v-model:value="four5" :bordered="false" /><span
>积分</span
>
</div>
<div class="content">
<span>考试成绩高于</span
><a-input v-model:value="five1" :bordered="false" /><span
>分获得</span
>
<a-input v-model:value="five2" :bordered="false" /><span
>积分</span
>
</div>
<div class="content">
<span>考勤正常学员获得 </span
><a-input v-model:value="six1" :bordered="false" /><span
>积分</span
>
</div>
<div class="content">
<span>成为小组长获得</span
><a-input v-model:value="seven1" :bordered="false" /><span
style="margin-right: 50px"
>积分</span
>
<span>优秀学员可获得</span>
<a-input v-model:value="seven2" :bordered="false" /><span
>积分</span
>
</div>
</div>
</div>
</div>
</a-tab-pane>
@@ -561,10 +641,11 @@
</template>
<script>
import { ref, reactive, defineComponent, toRefs, onMounted} from "vue";
import { ref, reactive, defineComponent, toRefs, onMounted,computed} from "vue";
import { message } from "ant-design-vue";
import * as api from "@/api/indexTemplate"
import { useRouter } from "vue-router";
import {scoreRule,setScoreRule} from "@/api/indexTaskadd"
import { useStore } from "vuex";
export default defineComponent({
name: "LibraryAdd",
@@ -688,8 +769,19 @@ export default defineComponent({
value3: false,
value4: false,
hideshow: true,
score1: 5,
score2: 5,
score1: null,
done2: null,
done3: null,
four1: null,
four2: null,
four3: null,
four4: null,
four5: null,
five1: null,
five2: null,
six1: null,
seven1: null,
seven2: null,
edit: true,
// 共享文档列表
docList:[
@@ -731,6 +823,23 @@ export default defineComponent({
const changecheck2 = () => {
state.checked2 = !state.checked2;
};
const scoresum = computed(() => {
// console.log(Object.prototype.toString.call(Number(state.score1)));
// if (Object.prototype.toString.call(state.score1) !== "[object Number]") {
// message.destroy();
// return message.warning("请输入合法数字");
// }
return (
Number(state.score1) +
Number(state.done3) +
Number(state.four2) +
Number(state.four5) +
Number(state.five2) +
Number(state.six1) +
Number(state.seven1) +
Number(state.seven2)
);
});
const changecheck3 = () => {
state.checked3 = !state.checked3;
};
@@ -760,7 +869,10 @@ export default defineComponent({
];
return typeRules[type];
};
onMounted(() => {getDetail()});
onMounted(() => {
getDetail();
getScoreRule();
});
// 获取详情
const getDetail = () => {
api.templateDetail(store.state.projectTemplateId).then(res => {
@@ -772,6 +884,7 @@ export default defineComponent({
state.projectInfo.manager = res.data.data.projectTemplateInfo.manager
state.projectInfo.notice = res.data.data.projectTemplateInfo.notice
state.projectInfo.sourceBelongId = res.data.data.projectTemplateInfo.sourceBelongId
state.projectInfo.managerId = res.data.data.projectTemplateInfo.managerId
state.projectInfo.remark = res.data.data.stageList.remark
state.projectInfo.courseSyncFlag = res.data.data.projectTemplateInfo.courseSyncFlag
state.projectInfo.level = res.data.data.projectTemplateInfo.level
@@ -802,11 +915,25 @@ export default defineComponent({
// 发布公告
const addNotice = () => {
let obj = {
"notice": state.projectInfo.notice,
"projectId": store.state.projectTemplateId,
"title": ""
};
api.templateEdit(obj).methods(obj).then(res => {
"name": state.projectInfo.name,
"category": state.projectInfo.category,
"picUrl": "x",
"beginTime": Number(state. projectInfo.beginTime) || 1,
"endTime": 1,
"manager": state.projectInfo.manager,
"managerId": state.projectInfo.managerId || 0,
"sourceBelongId": state.projectInfo.sourceBelongId,
"level": state.projectInfo.level,
"systemId": state.projectInfo.systemId,
"boeFlag": state.projectInfo.boeFlag ? 1:0,
"courseSyncFlag": state.projectInfo.courseSyncFlag? 1:0,
"notice": state.projectInfo.notice,
"noticeFlag": 0,
"projectTemplateId": store.state.projectTemplateId,
"remark": "",
"status": 0,
};
api.templateEdit(obj).then(res => {
message.success("公告发布成功")
console.log(res)
}).catch(err => {
@@ -881,6 +1008,94 @@ export default defineComponent({
console.log(err)
})
}
const getScoreRule = () => {
scoreRule({
projectId: store.state.projectTemplateId,
})
.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);
});
};
//设置积分规则
const editRule = () => {
let obj = {
courseScore: state.score1,
examItem: [
{
numLimit: 0,
score: state.five2,
scoreLimit: state.five1,
type: 3,
},
],
homeworkItem: [
//有名次要求的提交作业
{
numLimit: state.four3,
score: state.four5,
scoreLimit: state.four4,
type: 2,
},
//无名次要求的提交作业
{
numLimit: 0,
score: state.done3,
scoreLimit: state.done2,
type: 2,
},
],
leaderScore: state.seven1,
projectId: store.state.projectTemplateId,
signScore: state.six1,
topCompleteCourseItem: [
{
numLimit: state.four1,
score: state.four2,
scoreLimit: 0,
type: 1,
},
],
topStudentScore: state.seven2,
totalScore: scoresum.value,
};
console.log(obj);
setScoreRule(obj)
.then((res) => {
console.log(res.data, "修改成功");
message.destroy();
return message.success("修改积分规则成功");
})
.catch((err) => {
console.log(err.data);
message.destroy();
return message.warning("修改积分规则失败");
});
// scoreRule({
// projectId: props.projectId,
// });
state.edit = true;
};
return {
...toRefs(state),
value,
@@ -896,14 +1111,11 @@ export default defineComponent({
stateEdit,
taskEdit,
toEdit,
getScoreRule,
editRule,
scoresum,
};
},
computed: {
// 计算属性的 getter
scoresum: function () {
return Number(this.score1) + Number(this.score2);
},
},
}
});
</script>
<style lang="scss">