522细节修改

This commit is contained in:
zhangsir
2024-01-31 18:26:02 +08:00
parent b0091a9c22
commit 74942ee4cf
7 changed files with 134 additions and 21 deletions

View File

@@ -53,6 +53,7 @@ export const getProjectList = (obj) => http.post('/admin/project/list', obj)
// 获取项目详情信息(包含阶段及任务列表)
export const getProjectDetail = (obj) => http.get('/admin/project/detail', {params: obj})
export const getDraftTask = (obj) => http.get('/admin/project/detailDraft', { params: obj })
//发布项目
export const releaseProject = (obj) => http.post('/admin/project/publish', obj)
//获取项目学员

View File

@@ -21,12 +21,14 @@
</div>
<div class="downloadCode" style="">
<div class="qrm_body">
<div v-if="codeInfo.name" class="codename">
<div class="qrm_body_item">
<div v-if="codeInfo.name" class="codename">
开课{{ codeInfo.name ? codeInfo.name : "" }}
</div>
<div v-if="codeInfo.teacherName" class="codename">
讲师{{ codeInfo.teacherName ? codeInfo.teacherName : "" }}
</div>
</div>
<qrcode-vue
:value="codeInfo.url.startsWith('/')?(`${domain+codeInfo.url}&t=10`):`${codeInfo.url}&t=10`"
:size="qrcodeSize"
@@ -245,6 +247,10 @@ export default {
display: flex;
flex-direction: column;
align-items: center;
.qrm_body_item{
width: 100%;
margin-left: 270px;
}
.codename {
font-size: 18px;
font-weight: 400;
@@ -253,6 +259,10 @@ export default {
margin-bottom: 20px;
margin-left: 20px;
margin-right: 20px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
max-width: 300px;
}
}
.codeUrl {

View File

@@ -564,7 +564,15 @@ const closeChangeModal = () => {
};
//暂存
const currentTaskList = computed(() => {
return routerInfo.value?.chapterList[activeIndex.value]?.draftTaskList.length;
});
watch(currentTaskList, (oldValue,newValue) => {
request(ROUTER_DETAIL_MODIFY, routerInfo.value)
getDetail()
});
const temporaryStorage = async () => {
console.log(routerInfo.value,'routerInfo.value')
confirmLoading.value = true;
await request(ROUTER_DETAIL_MODIFY, routerInfo.value);
await getDetail();

View File

@@ -572,6 +572,16 @@
>
</div>
</div>
<div class="set_content">
<div class="setc_name"><span>积分排行榜</span></div>
<div class="setc_main">
<a-radio v-model:checked="projectInfo.rankFlag" :disabled="true"
><span style="color: #333333"
>是否显示积分</span
></a-radio
>
</div>
</div>
<div class="set_content" v-if="projectInfo.remark ">
<div class="setc_name"><span>项目说明</span></div>
<div class="setc_main">
@@ -1205,6 +1215,7 @@ export default defineComponent({
systemId: state.projectInfo.systemId,
boeFlag: state.projectInfo.boeFlag ? 1 : 0,
courseSyncFlag: state.projectInfo.courseSyncFlag ? 1 : 0,
rankFlag: state.projectInfo.rankFlag ? 1 : 0,
notice: state.projectInfo.notice,
noticeFlag: state.projectInfo.noticeFlag,
projectTemplateId: projectId,
@@ -1226,6 +1237,7 @@ export default defineComponent({
systemId: state.projectInfo.systemId,
boeFlag: state.projectInfo.boeFlag ? 1 : 0,
courseSyncFlag: state.projectInfo.courseSyncFlag ? 1 : 0,
rankFlag: state.projectInfo.rankFlag ? 1 : 0,
notice: state.projectInfo.notice,
noticeFlag: state.projectInfo.noticeFlag,
projectTemplateId: projectId,

View File

@@ -175,7 +175,7 @@
color: rgba(109, 117, 132, 1);
font-size: 14px;
">
是否示积分
是否示积分
</span>
</a-checkbox>
</div>

View File

@@ -227,6 +227,25 @@
>
</div>
</div>
<div class="name name2">
<div class="namebox">
<div class="inname">积分排行榜</div>
</div>
<div class="in">
<a-checkbox
v-model:checked="rankFlag"
:disabled="viewDetail ? true : false"
><span
style="
width: 100%;
color: rgba(109, 117, 132, 1);
font-size: 14px;
"
>是否显示积分</span
></a-checkbox
>
</div>
</div>
<div class="name name2">
<div class="namebox">
<div class="inname" style="margin-top: 13px">项目说明</div>
@@ -365,6 +384,7 @@ export default {
pageSize1: 10, //项目经理
projectInfo: {},
courseSyncFlag: false,
rankFlag:false,
learnBgMore: false,
projectPic: [],
loading: false,
@@ -404,6 +424,7 @@ export default {
state.projectInfo.endTime,
];
state.courseSyncFlag = !!state.projectInfo.courseSyncFlag;
state.rankFlag = !!state.projectInfo.rankFlag
});
}
@@ -473,6 +494,7 @@ export default {
return message.warning("项目名称重复,请重新填写");
}
state.projectInfo.courseSyncFlag = state.courseSyncFlag ? 1 : 0;
state.projectInfo.rankFlag = state.rankFlag ? 1 : 0;
api.createProject(state.projectInfo).then(() => {
state.loading = false;
message.destroy();

View File

@@ -616,14 +616,14 @@
</div>
<div class="operations">
<div class="operations_dropdown">
<a-dropdown :getPopupContainer='triggerNode=> triggerNode.parentNode' v-if="isAssessmentIdsValid(item.assessmentIds)" :trigger="['click']" v-model:visible="visibleEwmpg[item.id]">
<a-dropdown :getPopupContainer='triggerNode=> triggerNode.parentNode' v-if="item.assessmentIds.filter(id => id !== null).length>1" :trigger="['click']" v-model:visible="visibleEwmpg[item.id]">
<a class="ant-dropdown-link" @click="qrcodeAssement(item)">
评估二维码
<DownOutlined />
</a>
<template #overlay>
<a-menu @click="handleMenuClickpg">
<template v-for="(item, index) in qrCodeItemspg" :key="item.courseName+'+'+item.createName+'+'+item.assessmentId+'+'+item.name+'+'+item.id">
<template v-for="(item, index) in qrCodeItemspg" :key="index">
<a-menu-item>
<div>
<p>{{ item.name }}</p>
@@ -634,7 +634,13 @@
</template>
</a-dropdown>
</div>
<div class="operations_dropdown">
<div class="operations_dropdown" v-if="item.assessmentIds.filter(id => id !== null).length==1">
<a class="ant-dropdown-link" @click="qrcodeAssement(item)">
评估二维码
<DownOutlined />
</a>
</div>
<div class="operations_dropdown" v-if="item.assessmentIds.length!=1">
<a-dropdown :getPopupContainer='(triggerNode) => triggerNode.parentNode' v-if="item.type == 2" :trigger="['click']" v-model:visible="visibleEwm[item.id]">
<a class="ant-dropdown-link" @click="qrcodeVisible(item)">
签到二维码
@@ -642,7 +648,7 @@
</a>
<template #overlay v-if="qrCodeItems.length>0">
<a-menu @click="handleMenuClick">
<template v-for="(item, index) in qrCodeItems" :key="item.courseName+'+'+item.createName+'+'+item.name+'+'+item.id">
<template v-for="(item, index) in qrCodeItems" :key="index">
<a-menu-item>
<div>
<p>{{ item.name }}</p>
@@ -653,6 +659,20 @@
</template>
</a-dropdown>
</div>
<div class="operations_dropdown" v-if="item.assessmentIds.length==1">
<a class="ant-dropdown-link" @click="qrcodeVisible(item)">
签到二维码
<DownOutlined />
</a>
</div>
<div
class="operation"
style="cursor: pointer"
@click="openCourse(item,index)"
v-if="item.type == 2"
>
开课
</div>
<div
class="operation"
style="cursor: pointer"
@@ -1330,6 +1350,16 @@
>
</div>
</div>
<div class="set_content">
<div class="setc_name"><span>积分排行榜</span></div>
<div class="setc_main">
<a-radio v-model:checked="rankFlag" :disabled="true"
><span style="color: #333333"
>是否显示积分</span
></a-radio
>
</div>
</div>
<div class="set_content" v-if="remark">
<div class="setc_name"><span>项目说明:</span></div>
<div class="setc_main">
@@ -2306,9 +2336,12 @@
:checkgroupStuId="checkgroupStuId"
/>
<!-- 换组弹窗 -->
<!-- 面授课开课弹框 -->
<AddOpenCourse ref="coursePlanRef" :type="1"/>
</div>
</template>
<script lang="jsx">
import AddOpenCourse from "@/components/drawers/AddOpenCourse.vue";
import { reactive, toRefs, onMounted, watch, computed,ref } from "vue";
import { useRoute } from "vue-router";
import { useRouter } from "vue-router";
@@ -2399,8 +2432,15 @@ export default {
ProjectVoteManage,
ChangeGroupModal,
ImpoterGroupLeader,
AddOpenCourse
},
setup() {
const coursePlanRef = ref();
const openCourse = async (item) => {
await apitl.getDraftTask({projectId: item.projectId}).then((item)=>{
coursePlanRef.value.openDrawer(item.data.data.stageList[0].taskDraftDtoList[0]);
})
}
const qrCodeItems = ref([]);
const visibleEwm = ref({});
const qrcodeVisible = async (item)=>{
@@ -2418,29 +2458,36 @@ export default {
...dataItem,
courseName: item.name,
}));
if(qrCodeItems.value.length==1){
qrCode({
title: "【签到】二维码",
courseName: qrCodeItems.value[0].courseName,
name: qrCodeItems.value[0].name+'课程签到',
createName:qrCodeItems.value[0].offteachers.map(teacher => teacher.teacherName).join(', ')||qrCodeItems.value[0].teacher,
url: `${location.protocol}//${location.host}${process.env.VUE_APP_BASE_API}/admin/student/studentSign?taskId=${qrCodeItems.value[0].id}&taskType=${2}&type=${3}`,
});
}
if(qrCodeItems.value.length==0){
message.info("暂无签到二维码")
}
})
}
function handleMenuClick({key}) {
const courseName = key.split("+")[0]
const createName = key.split("+")[1]
const name = key.split("+")[2]
const id = key.split("+")[3]
const courseName = qrCodeItems.value[key].courseName;
const name = qrCodeItems.value[key].name;
const teacher = qrCodeItems.value[key].teacher;
const id = qrCodeItems.value[key].id;
const offteachers = qrCodeItems.value[key].offteachers.map(teacher => teacher.teacherName).join(', ');
qrCode({
title: "【签到】二维码",
courseName: courseName,
name: name+'课程签到',
createName:createName,
createName:offteachers||teacher,
url: `${location.protocol}//${location.host}${process.env.VUE_APP_BASE_API}/admin/student/studentSign?taskId=${id}&taskType=${2}&type=${3}`,
});
}
const qrCodeItemspg = ref([]);
const visibleEwmpg = ref({});
const isAssessmentIdsValid = (assessmentIds) => {
return assessmentIds.length > 0 && assessmentIds.every(id => id !== null);
};
const qrcodeAssement = async (item)=>{
console.log(item,'item')
if(qrCodeItemspg.value.length!=0){
@@ -2459,19 +2506,29 @@ export default {
}));
qrCodeItemspg.value = qrCodeItemspgItem.filter(item => item.assessmentId !== null);
console.log(qrCodeItemspg.value,'长度')
if(qrCodeItemspg.value.length==1){
qrCode({
title: "【评估】二维码",
courseName: qrCodeItemspg.value[0].courseName,
name: qrCodeItemspg.value[0].name+'课程评估',
createName:qrCodeItemspg.value[0].offteachers.map(teacher => teacher.teacherName).join(', ')||qrCodeItemspg.value[0].teacher,
url: `${location.protocol}//${location.host}/student-h5/investigatpage?id=${qrCodeItemspg.value[0].id}&type=3&infoId=${qrCodeItemspg.value[0].id}&courseId=${qrCodeItemspg.value[0].assessmentId}&chapterOrStageId=0`,
});
}
})
}
function handleMenuClickpg({key}) {
const courseName = key.split("+")[0]
const createName = key.split("+")[1]
const assessmentId = key.split("+")[2]
const name = key.split("+")[3]
const id = key.split("+")[4]
const courseName = qrCodeItemspg.value[key].courseName;
const name = qrCodeItemspg.value[key].name;
const offteachers = qrCodeItemspg.value[key].offteachers.map(teacher => teacher.teacherName).join(', ');
const teacher = qrCodeItemspg.value[key].teacher;
const id = qrCodeItemspg.value[key].id;
const assessmentId = qrCodeItemspg.value[key].assessmentId;
qrCode({
title: "【评估】二维码",
courseName: courseName,
name: name+'课程评估',
createName:createName,
createName:offteachers||teacher,
url: `${location.protocol}//${location.host}/student-h5/investigatpage?id=${id}&type=3&infoId=${id}&courseId=${assessmentId}&chapterOrStageId=0`,
});
}
@@ -2678,6 +2735,7 @@ export default {
checked1: true,
checked2: false,
checkedSty: false, //同步学习记录
rankFlag:false,
checkedBOEU: false, //是否BOEU实施
radioV1: "",
radioV2: "",
@@ -4117,6 +4175,7 @@ export default {
state.systemId = info.systemId;
state.tsystemId = info.systemId;
state.checkedSty = info.courseSyncFlag == 1;
state.rankFlag = info.rankFlag == 1;
state.courseSyncFlag = info.courseSyncFlag;
state.checkedBOEU = info.boeFlag == 1;
state.boeFlag = info.boeFlag;
@@ -5162,7 +5221,8 @@ export default {
qrCodeItemspg,
visibleEwmpg,
handleMenuClickpg,
isAssessmentIdsValid
coursePlanRef,
openCourse