mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-07 18:06:46 +08:00
522细节修改
This commit is contained in:
@@ -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)
|
||||
//获取项目学员
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -175,7 +175,7 @@
|
||||
color: rgba(109, 117, 132, 1);
|
||||
font-size: 14px;
|
||||
">
|
||||
是否展示积分
|
||||
是否显示积分
|
||||
</span>
|
||||
</a-checkbox>
|
||||
</div>
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user