mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-student.git
synced 2025-12-12 12:26:49 +08:00
Merge remote-tracking branch 'origin/develop' into develop
This commit is contained in:
@@ -88,7 +88,7 @@ export const QueryDiscussSubmitDetailByDiscussId = '/discussSubmit/queryDiscussS
|
|||||||
export const EvaluationToLearn = '/evaluation/evaluationToLearn post'
|
export const EvaluationToLearn = '/evaluation/evaluationToLearn post'
|
||||||
|
|
||||||
// 个人/小组完成度排行
|
// 个人/小组完成度排行
|
||||||
export const CompletionList = `/stu/project/rank_list/completion_list`
|
export const CompletionList = `/stu/project/rank_list/project_rank_list`
|
||||||
|
|
||||||
// 积分排行榜
|
// 积分排行榜
|
||||||
export const PointList = `/stu/project/rank_list/point_list`
|
export const PointList = `/stu/project/rank_list/point_list`
|
||||||
|
|||||||
@@ -118,7 +118,7 @@
|
|||||||
<div
|
<div
|
||||||
class="imgone"
|
class="imgone"
|
||||||
:style="{
|
:style="{
|
||||||
backgroundImage: `url('${img.url}')`,
|
backgroundImage: `url('${fielPath}${img.url}')`,
|
||||||
marginLeft: '15px',
|
marginLeft: '15px',
|
||||||
}"
|
}"
|
||||||
></div>
|
></div>
|
||||||
@@ -143,7 +143,7 @@
|
|||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
<div v-for="(row, i) in commontList" :key="i" style="margin-bottom: 24px;">
|
<div v-for="(row, i) in commontList" :key="i" style="margin-bottom: 24px;">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<img :src="row.studentAvatar" alt="" srcset="" class="avator">
|
<img :src="row.studentAvatar.includes('upload') ? row.studentAvatar : fielPath+row.studentAvatar" alt="" srcset="" class="avator">
|
||||||
<div class="id">{{ row.createName }}</div>
|
<div class="id">{{ row.createName }}</div>
|
||||||
<div class="showCareer">{{row.studentJobName}}</div>
|
<div class="showCareer">{{row.studentJobName}}</div>
|
||||||
<div class="idThink"></div>
|
<div class="idThink"></div>
|
||||||
@@ -156,7 +156,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div style="display:flex;margin-top: 12px;margin-bottom: 12px;">
|
<div style="display:flex;margin-top: 12px;margin-bottom: 12px;">
|
||||||
<div v-if="row.img" v-for="(rowimg, index) in row.img.split(',')" :key="index" style="width:55px;height:55px;margin-right: 12px;">
|
<div v-if="row.img" v-for="(rowimg, index) in row.img.split(',')" :key="index" style="width:55px;height:55px;margin-right: 12px;">
|
||||||
<img class="image" style="width:55px;height:55px;border-radius: 4px;" :src="rowimg" />
|
<img class="image" style="width:55px;height:55px;border-radius: 4px;" :src="fielPath+rowimg" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="intime">{{ row.ctime }}</div>
|
<div class="intime">{{ row.ctime }}</div>
|
||||||
@@ -184,16 +184,16 @@
|
|||||||
<div v-if="row.children.length!==0" :style="{height:spreadReply==i ? 'auto' : 210 +'px',overflow:'hidden',position: 'relative'}">
|
<div v-if="row.children.length!==0" :style="{height:spreadReply==i ? 'auto' : 210 +'px',overflow:'hidden',position: 'relative'}">
|
||||||
<div v-for="(replay, j) in row.children" :key="j">
|
<div v-for="(replay, j) in row.children" :key="j">
|
||||||
<div class="reply">
|
<div class="reply">
|
||||||
<img :src="replay.studentAvatar" alt="" srcset="" class="sameava avaone">
|
<img :src="replay.studentAvatar.includes('upload') ? replay.studentAvatar : fielPath+replay.studentAvatar" alt="" srcset="" class="sameava avaone">
|
||||||
<div class="sameuser">{{ replay.studentName }}</div>
|
<div class="sameuser">{{ replay.studentName }}</div>
|
||||||
<div class="centerreply">回复</div>
|
<div class="centerreply">回复</div>
|
||||||
<img :src="replay.targetStudentAvatar" alt="" srcset="" class="sameava avaone">
|
<img :src="replay.targetStudentAvatar.includes('upload') ? replay.targetStudentAvatar : fielPath+replay.targetStudentAvatar" alt="" srcset="" class="sameava avaone">
|
||||||
<div class="sameuser">{{ replay.targetStudentName }}</div>
|
<div class="sameuser">{{ replay.targetStudentName }}</div>
|
||||||
<div class="replytime">{{ replay.createTime }}</div>
|
<div class="replytime">{{ replay.createTime }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="display:flex;margin-top: 12px;margin-bottom: 12px;">
|
<div style="display:flex;margin-top: 12px;margin-bottom: 12px;">
|
||||||
<div v-if="replay.img" v-for="(rowimg, index) in replay.img.split(',')" :key="index" style="width:65px;height:65px;margin-right: 7px;">
|
<div v-if="replay.img" v-for="(rowimg, index) in replay.img.split(',')" :key="index" style="width:65px;height:65px;margin-right: 7px;">
|
||||||
<img class="image" style="width:65px;height:65px;border-radius: 4px;" :src="rowimg" />
|
<img class="image" style="width:65px;height:65px;border-radius: 4px;" :src="fielPath+rowimg" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="mainreply">
|
<div class="mainreply">
|
||||||
@@ -263,7 +263,7 @@
|
|||||||
<div
|
<div
|
||||||
class="imgone"
|
class="imgone"
|
||||||
:style="{
|
:style="{
|
||||||
backgroundImage: `url('${img.url}')`,
|
backgroundImage: `url('${fielPath}${img.url}')`,
|
||||||
marginLeft: '15px',
|
marginLeft: '15px',
|
||||||
}"
|
}"
|
||||||
></div>
|
></div>
|
||||||
@@ -324,6 +324,7 @@ import UploadPostImg from "@/components/img/UploadPostImg.vue";
|
|||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const refInput =ref()
|
const refInput =ref()
|
||||||
|
const fielPath = ref(import.meta.env.VITE_FILE_PATH);
|
||||||
const getFocus = () => {
|
const getFocus = () => {
|
||||||
refInput.value.focus()
|
refInput.value.focus()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -445,8 +445,12 @@ const signClick = () => {
|
|||||||
|
|
||||||
data.value.signFlag = 1;
|
data.value.signFlag = 1;
|
||||||
ElMessage.warning("签到成功");
|
ElMessage.warning("签到成功");
|
||||||
|
let taskId = courseId
|
||||||
|
console.log("taskId:" + taskId)
|
||||||
|
console.log("courseId:" + courseId)
|
||||||
|
console.log("请求入参:" + JSON.stringify( { courseId: courseId,taskId: taskId,type:type }))
|
||||||
|
|
||||||
request(TASK_OFFCOURSE_NOTASK_SIGN, { courseId: courseId });
|
request(TASK_OFFCOURSE_NOTASK_SIGN, { courseId: courseId,taskId: taskId,type:type });
|
||||||
};
|
};
|
||||||
|
|
||||||
function toSurvery() {
|
function toSurvery() {
|
||||||
|
|||||||
@@ -29,8 +29,7 @@
|
|||||||
<img style="width: 15px; height: 17px" src="../../assets/image/time.png"/>
|
<img style="width: 15px; height: 17px" src="../../assets/image/time.png"/>
|
||||||
<div style="margin-left: 8px">
|
<div style="margin-left: 8px">
|
||||||
{{
|
{{
|
||||||
dayjs(data.planDto?.beginTime).format('YYYY-MM-DD HH:MM') + " 至 " +
|
data.planDto?.beginTime + " 至 " + data.planDto?.endTime
|
||||||
dayjs(data.planDto?.endTime).format('YYYY-MM-DD HH:MM')
|
|
||||||
}}
|
}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -39,7 +38,24 @@
|
|||||||
<div style="margin-left: 8px">{{ data.planDto?.address }}</div>
|
<div style="margin-left: 8px">{{ data.planDto?.address }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="time" style="margin-top: 37px">
|
<div class="time" style="margin-top: 37px">
|
||||||
<botton class="btn" style="margin-right: 20px;width: 160px;height: 46px;" v-if="data.hasTask || data.planDto.applyFlag" @click="onLineSignUp" :style="{ background: data.isSignUp ? '#999' : 'rgb(57, 146, 249)'}">{{data.isSignUp?'已报名':'立即报名'}}</botton>
|
<botton
|
||||||
|
class="btn"
|
||||||
|
style="margin-right: 20px;width: 160px;height: 46px;"
|
||||||
|
v-if="data.hasTask || data.planDto.applyFlag"
|
||||||
|
@click="onLineSignUp(false)"
|
||||||
|
:style="{ background: isAllowSign?data.isSignUp || data.isRefused ? '#999' : 'rgb(57, 146, 249)':'#999'}">
|
||||||
|
{{
|
||||||
|
data.isRefused ? '审核拒绝' : data.isSignUp? '已报名' :'立即报名'
|
||||||
|
}}
|
||||||
|
</botton>
|
||||||
|
<botton
|
||||||
|
v-if="data.isRefused"
|
||||||
|
class="btn"
|
||||||
|
style="margin-right: 20px;width: 160px;height: 46px;"
|
||||||
|
:style="{ background: isAllowSign?'rgb(57, 146, 249)':'#999'}"
|
||||||
|
@click="onLineSignUp(true)">
|
||||||
|
重新报名
|
||||||
|
</botton>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -364,8 +380,22 @@ const download = (url) => {
|
|||||||
const downloads = (url) => {
|
const downloads = (url) => {
|
||||||
ElMessage.warning("未在有效时间范围内,请耐心等待!");
|
ElMessage.warning("未在有效时间范围内,请耐心等待!");
|
||||||
};
|
};
|
||||||
let timer = null;
|
|
||||||
|
|
||||||
|
//判断能否报名 (TODO-大于面授课截止时间就不能报名了,其余均可以)
|
||||||
|
function isSignClick() {
|
||||||
|
let endTime = new Date(data.value.planDto?.endTime).getTime()
|
||||||
|
let nowTime = new Date().getTime();
|
||||||
|
if (nowTime < endTime) {
|
||||||
|
state.isAllowSign = true;
|
||||||
|
} else {
|
||||||
|
state.isAllowSign = false;
|
||||||
|
}
|
||||||
|
console.log(state.isAllowSign)
|
||||||
|
}
|
||||||
|
|
||||||
|
watch(data,()=>{
|
||||||
|
isSignClick();
|
||||||
|
})
|
||||||
|
|
||||||
// 查看更多-展开回复列表
|
// 查看更多-展开回复列表
|
||||||
function lookMore(i) {
|
function lookMore(i) {
|
||||||
@@ -541,8 +571,13 @@ function submitReplayComment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 报名
|
// 报名
|
||||||
function onLineSignUp() {
|
function onLineSignUp(isAgain) {
|
||||||
if(data.value.isSignUp){
|
if (!state.isAllowSign) {
|
||||||
|
// console.log("data.signFlag", data.value.signFlag, isAllowSign);
|
||||||
|
ElMessage.warning("未在允许报名时间范围内");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(data.value.isSignUp && !isAgain){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
request(FACETEACH_SIGNUP, {courseId})
|
request(FACETEACH_SIGNUP, {courseId})
|
||||||
|
|||||||
@@ -229,7 +229,7 @@
|
|||||||
<!-- <div style="font-size: 14px;color: rgba(51, 51, 51, 1);font-weight: 600;">完成度排行榜</div> -->
|
<!-- <div style="font-size: 14px;color: rgba(51, 51, 51, 1);font-weight: 600;">完成度排行榜</div> -->
|
||||||
<el-select @change="choiceStatus" v-model="stateValue" class="m-2" mode="tags" placeholder="完成度排行榜"
|
<el-select @change="choiceStatus" v-model="stateValue" class="m-2" mode="tags" placeholder="完成度排行榜"
|
||||||
style="width: 130px;border: 0px solid red !important; box-shadow:none !important; ">
|
style="width: 130px;border: 0px solid red !important; box-shadow:none !important; ">
|
||||||
<el-option v-for="item in studyProgress" :key="item.value" :label="item.label" :value="item.value" />
|
<el-option v-for="item in studyProgress" :key="item.value" :label="item.label" :value="item.value" :disabled="item.label.includes('小组') && data.groupId==null?true:false" :title="item.label.includes('小组') && data.groupId==null?'当前学员无小组':''"/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
<!-- line -->
|
<!-- line -->
|
||||||
@@ -267,7 +267,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- 学员列表 -->
|
<!-- 学员列表 -->
|
||||||
<div>
|
<div>
|
||||||
<div v-for="(item, i) in tableRankData" :key="i"
|
<div v-for="(item, i) in tableRankData.slice(0,5)" :key="i"
|
||||||
style="display: flex;justify-content: center;align-items: center;width: 100%;position: relative;top:-60px;margin-bottom: 38px;">
|
style="display: flex;justify-content: center;align-items: center;width: 100%;position: relative;top:-60px;margin-bottom: 38px;">
|
||||||
<div
|
<div
|
||||||
style="font-size: 14px;color:rgba(36, 120, 255, 1);font-weight: 600;width:30%;display: flex;justify-content: center;align-items: center;position: relative;">
|
style="font-size: 14px;color:rgba(36, 120, 255, 1);font-weight: 600;width:30%;display: flex;justify-content: center;align-items: center;position: relative;">
|
||||||
@@ -290,7 +290,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 我的排名 -->
|
<!-- 我的排名 -->
|
||||||
<div v-if="myIndex > tableRankData.length"
|
<div v-if="myIndex > 5"
|
||||||
style="display: flex;justify-content: center;align-items: center;width: 100%;position: relative;top:-60px;margin-bottom: 38px;">
|
style="display: flex;justify-content: center;align-items: center;width: 100%;position: relative;top:-60px;margin-bottom: 38px;">
|
||||||
<div
|
<div
|
||||||
style="font-size: 14px;color:rgba(36, 120, 255, 1);font-weight: 600;width:30%;display: flex;justify-content: center;align-items: center;">
|
style="font-size: 14px;color:rgba(36, 120, 255, 1);font-weight: 600;width:30%;display: flex;justify-content: center;align-items: center;">
|
||||||
@@ -306,7 +306,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="myIndex > tableRankData.length"
|
<div v-if="myIndex > 5"
|
||||||
style="display: flex;justify-content: center;align-items: center;width: 100%;position: relative;top:-60px;margin-bottom: 38px;">
|
style="display: flex;justify-content: center;align-items: center;width: 100%;position: relative;top:-60px;margin-bottom: 38px;">
|
||||||
<div
|
<div
|
||||||
style="font-size: 14px;color:rgba(36, 120, 255, 1);font-weight: 600;width:30%;display: flex;justify-content: center;align-items: center;">
|
style="font-size: 14px;color:rgba(36, 120, 255, 1);font-weight: 600;width:30%;display: flex;justify-content: center;align-items: center;">
|
||||||
@@ -407,7 +407,6 @@ const tabChange = (tabs) => {
|
|||||||
myIndex.value = res.data.myIndex
|
myIndex.value = res.data.myIndex
|
||||||
myPoint.value = res.data.myPointsCount
|
myPoint.value = res.data.myPointsCount
|
||||||
})
|
})
|
||||||
tableRankData.value = 12
|
|
||||||
}
|
}
|
||||||
const myIndex = ref('')
|
const myIndex = ref('')
|
||||||
const myPoint = ref('')
|
const myPoint = ref('')
|
||||||
|
|||||||
@@ -219,7 +219,7 @@
|
|||||||
<div class="progress">
|
<div class="progress">
|
||||||
<div style="width: 291px">
|
<div style="width: 291px">
|
||||||
<el-progress
|
<el-progress
|
||||||
:percentage="parseInt((((data.currentReqCnt || 0) / (data.totalReqCnt || 1)) * 100) / 20)"
|
:percentage="parseInt((((data.currentReqCnt || 0) / (data.totalReqCnt || 1)) * 100))"
|
||||||
:show-text="false" :stroke-width="8" :color="
|
:show-text="false" :stroke-width="8" :color="
|
||||||
{
|
{
|
||||||
0: 'rgba(238, 112, 108, 1)',
|
0: 'rgba(238, 112, 108, 1)',
|
||||||
@@ -231,21 +231,18 @@
|
|||||||
}[parseInt((((data.currentReqCnt || 0) / (data.totalReqCnt || 1)) * 100) / 20)]
|
}[parseInt((((data.currentReqCnt || 0) / (data.totalReqCnt || 1)) * 100) / 20)]
|
||||||
"/>
|
"/>
|
||||||
</div>
|
</div>
|
||||||
<div style="
|
<div
|
||||||
font-size: 14px;
|
style="font-size: 14px;font-weight: 500;color: #277aff;margin-left: 10px;"
|
||||||
font-weight: 500;
|
:style="{
|
||||||
color: #277aff;
|
color: {
|
||||||
margin-left: 10px;
|
0: 'rgba(238, 112, 108, 1)',
|
||||||
" :style="{
|
1: 'rgba(255, 151, 38, 1)',
|
||||||
color: {
|
2: 'rgba(39, 122, 255, 1)',
|
||||||
0: 'rgba(238, 112, 108, 1)',
|
3: 'rgba(59, 94, 251, 1)',
|
||||||
1: 'rgba(255, 151, 38, 1)',
|
4: 'rgba(57, 219, 183, 1)',
|
||||||
2: 'rgba(39, 122, 255, 1)',
|
5: 'rgba(57, 219, 183, 1)',
|
||||||
3: 'rgba(59, 94, 251, 1)',
|
}[parseInt((((data.currentReqCnt || 0) / (data.totalReqCnt || 1)) * 100) / 20)],
|
||||||
4: 'rgba(57, 219, 183, 1)',
|
}">
|
||||||
5: 'rgba(57, 219, 183, 1)',
|
|
||||||
}[parseInt((((data.currentReqCnt || 0) / (data.totalReqCnt || 1)) * 100) / 20)],
|
|
||||||
}">
|
|
||||||
{{ parseInt((data.currentReqCnt || 0) / (data.totalReqCnt || 1) * 100) }}%
|
{{ parseInt((data.currentReqCnt || 0) / (data.totalReqCnt || 1) * 100) }}%
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -60,7 +60,7 @@
|
|||||||
<!-- <div style="display: flex; align-items: center"></div> -->
|
<!-- <div style="display: flex; align-items: center"></div> -->
|
||||||
<div class="all" style="font-size:14px;color:rgba(51, 51, 48, 1);">
|
<div class="all" style="font-size:14px;color:rgba(51, 51, 48, 1);">
|
||||||
<div>
|
<div>
|
||||||
{{ state.datainfo.externalExplain ? state.datainfo.externalExplain : "暂无考试说明" }}
|
{{ state.datainfo.examinationExplain ? state.datainfo.examinationExplain : "暂无考试说明" }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user