Merge branch 'dev-20250930' of http://25.13.9.101:9000/K17_AITS/tra-app into dev-20250930
This commit is contained in:
@@ -40,6 +40,7 @@
|
||||
if (props.analysisVo.correctFlag === 'R') return 'success';
|
||||
// 是错误答案但是被用户错误选中的为红
|
||||
const my_answer_array = props.my_answer;
|
||||
console.log('my_answer_array', my_answer_array);
|
||||
if(my_answer_array.includes(props.analysisVo.itemId) && props.analysisVo.correctFlag === 'E') return 'error';
|
||||
|
||||
// 只有被我选中,不知是正确还是错误的为蓝
|
||||
|
||||
@@ -109,7 +109,10 @@
|
||||
get: () => props.modelValue,
|
||||
set: (val) => emit('update:modelValue', val)
|
||||
});
|
||||
let answerText = props.item?.my_answer;
|
||||
// result.anserResult
|
||||
|
||||
let answerText = props.item?.my_answer || props.item.anserResult || [];
|
||||
console.log('answerText', props.item.anserResult);
|
||||
const item_answer = ref(typeof answerText === 'string' ? answerText.split(',') : []);
|
||||
const feedback_click = () => {
|
||||
emit('subject_click', 'feedback', props.item);
|
||||
|
||||
@@ -114,11 +114,14 @@
|
||||
const popupRef = ref(null);
|
||||
const inputText = ref('');
|
||||
let startTime = 0;
|
||||
|
||||
|
||||
// not_started 未开始, preparing 准备中, in_recording 录音中,ending 结束中
|
||||
const recordingStatus = ref('not_started');
|
||||
// 获取全局唯一的录音管理器 recorderManager
|
||||
|
||||
// #ifdef APP-PLUS
|
||||
const recorderManager = uni.getRecorderManager();
|
||||
// #endif
|
||||
// const innerAudioContext = uni.createInnerAudioContext();
|
||||
const startTimer = ref(null); // 延迟启动的定时器ID
|
||||
const startFlag = ref(1);
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
<text class="rank-other-last-sty rank-uni-sty">{{tableLastName}}</text>
|
||||
</template>
|
||||
</uni-list-item>
|
||||
<uni-list-item :key="index" v-if="chartsList.length < 4">
|
||||
<uni-list-item v-if="chartsList.length < 4">
|
||||
<template v-slot:header>
|
||||
<text style="width:100%;text-align: center;color: #999999;">暂无数据</text>
|
||||
</template>
|
||||
@@ -330,8 +330,6 @@
|
||||
allChartsList.value = learnTimeList.value;
|
||||
chartsList.value = allChartsList.value.annual?allChartsList.value.annual.list:[];
|
||||
myselfObj.value = allChartsList.value.annual?allChartsList.value.annual.self:{};
|
||||
chartsList.value[0].dept = "吉林银行吉林分行"
|
||||
myselfObj.value.dept = "吉林银行吉林分行"
|
||||
console.log(chartsList.value,'chartsList.value')
|
||||
console.log(myselfObj.value,myselfObj.value,'myselfObj.value')
|
||||
chartsList.value.forEach(item => item.score = item.annlStdyTmLen);
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.label-item {
|
||||
text-align: center;
|
||||
text-align: left;
|
||||
border-radius: 22rpx;
|
||||
padding: 2rpx 14rpx;
|
||||
font-size: 22rpx;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<view class="max_page">
|
||||
<nav-bar :is_seat="false" :backgroundColor="bgOpacity"></nav-bar>
|
||||
<scroll-view :scroll-y="true" class="scroll detail-main" @scroll="scroll_fun" @scrolltolower="scrolltolower">
|
||||
<scroll-view :scroll-y="true" class="scroll detail-main" @scroll="scroll_fun" @scrolltolower="scrolltolower" :show-scrollbar="false">
|
||||
<view class="bg_div">
|
||||
<image-preview class="img_100" :imgId="form.imgId" mode="widthFix"></image-preview>
|
||||
</view>
|
||||
@@ -276,7 +276,6 @@
|
||||
.detail-main {
|
||||
background-color: #f5f5f5;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
@@ -285,8 +284,6 @@
|
||||
}
|
||||
|
||||
.detail-body {
|
||||
box-sizing: border-box;
|
||||
// min-height: calc(100vh - 256rpx);
|
||||
position: absolute;
|
||||
top: 256rpx;
|
||||
border-radius: 23rpx 23rpx 0rpx 0rpx;
|
||||
@@ -303,10 +300,8 @@
|
||||
|
||||
.bg_div {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
width: calc(100% + 4rpx);
|
||||
left: -4rpx;
|
||||
|
||||
.back-image {
|
||||
width: 100%;
|
||||
}
|
||||
@@ -321,7 +316,9 @@
|
||||
padding-top: 36rpx;
|
||||
padding-left: 42rpx;
|
||||
padding-bottom: 24rpx;
|
||||
}
|
||||
min-height: 158rpx;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.title-text {
|
||||
font-size: 34rpx;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<view class="max_page detail-main">
|
||||
<nav-bar :is_seat="false"></nav-bar>
|
||||
<!-- <nav-bar :is_seat="false"></nav-bar> -->
|
||||
<view class="fixed_search_div">
|
||||
<view class="back_div" @click="common.navigateBack()">
|
||||
<view class="back-icon"></view>
|
||||
@@ -24,20 +24,43 @@
|
||||
<view class="num-box">
|
||||
<view class="font_pf fz-28 c-666">综合评分(1-10)</view>
|
||||
<view class="slider-box">
|
||||
<slider :min="0" :max="10" :value="10" @change="sliderChange" :step="0.1" :show-value="true"
|
||||
:blockSize="14"></slider>
|
||||
<slider
|
||||
:min="0"
|
||||
:max="10"
|
||||
:value="10"
|
||||
@change="sliderChange"
|
||||
:step="0.1"
|
||||
:show-value="true"
|
||||
:blockSize="14"
|
||||
></slider>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="tab">
|
||||
<view class="tab-btn" :class="{'is-active':formData.bbsTag=='SUG'}" @click="formData.bbsTag='SUG'">
|
||||
建议</view>
|
||||
<view class="tab-btn" :class="{'is-active':formData.bbsTag=='ASK'}" @click="formData.bbsTag='ASK'">
|
||||
提问</view>
|
||||
<view
|
||||
class="tab-btn"
|
||||
:class="{ 'is-active': formData.bbsTag == 'SUG' }"
|
||||
@click="formData.bbsTag = 'SUG'"
|
||||
>
|
||||
建议
|
||||
</view>
|
||||
<view
|
||||
class="tab-btn"
|
||||
:class="{ 'is-active': formData.bbsTag == 'ASK' }"
|
||||
@click="formData.bbsTag = 'ASK'"
|
||||
>
|
||||
提问
|
||||
</view>
|
||||
</view>
|
||||
<view class="input-textarea">
|
||||
<uv-textarea v-model="formData.bbsContent" height="124" count :maxlength="100"
|
||||
:placeholder="formData.bbsTag == 'SUG'?'请输入你的建议...':'请输入你的问题...'"></uv-textarea>
|
||||
<uv-textarea
|
||||
v-model="formData.bbsContent"
|
||||
height="124"
|
||||
count
|
||||
:maxlength="100"
|
||||
:adjustPosition="false"
|
||||
:placeholder="formData.bbsTag == 'SUG' ? '请输入你的建议...' : '请输入你的问题...'"
|
||||
></uv-textarea>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -48,49 +71,55 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
reactive,
|
||||
ref
|
||||
} from 'vue';
|
||||
import { reactive, ref, nextTick } from 'vue';
|
||||
|
||||
import {
|
||||
onLoad
|
||||
} from '@dcloudio/uni-app';
|
||||
import {
|
||||
publishCrsEvaluation
|
||||
} from '@/api/courseDetail.js';
|
||||
import { onLoad } from '@dcloudio/uni-app';
|
||||
import { publishCrsEvaluation } from '@/api/courseDetail.js';
|
||||
import common from '@/common/common';
|
||||
|
||||
const formData = reactive({
|
||||
"crsId": null,
|
||||
"imgIdList": [], // 发表图片ID列表,文件ID集
|
||||
"bbsGrade": 10, // 综合评分(最高10分)
|
||||
"bbsTag": 'SUG', // 评价标签 (SUG 建议 ASK 提问 )
|
||||
"bbsContent": '', // 评价内容
|
||||
})
|
||||
const imgId = ref('')
|
||||
const from = ref('')
|
||||
crsId: null,
|
||||
imgIdList: [], // 发表图片ID列表,文件ID集
|
||||
bbsGrade: 10, // 综合评分(最高10分)
|
||||
bbsTag: 'SUG', // 评价标签 (SUG 建议 ASK 提问 )
|
||||
bbsContent: '' // 评价内容
|
||||
});
|
||||
const imgId = ref('');
|
||||
const from = ref('');
|
||||
const sliderChange = (event) => {
|
||||
formData.bbsGrade = event.detail.value
|
||||
}
|
||||
formData.bbsGrade = event.detail.value;
|
||||
};
|
||||
|
||||
const submit = () => {
|
||||
if (formData.bbsContent === '') {
|
||||
if (formData.bbsTag == 'SUG') {
|
||||
return common.msg('请输入你的建议')
|
||||
return common.msg('请输入你的建议');
|
||||
} else {
|
||||
return common.msg('请输入你的问题')
|
||||
return common.msg('请输入你的问题');
|
||||
}
|
||||
}
|
||||
publishCrsEvaluation(formData).then(res => {
|
||||
common.msg('发表成功')
|
||||
const loadingStartTime = Date.now();
|
||||
common.loading('评价中');
|
||||
|
||||
publishCrsEvaluation(formData).then((res) => {
|
||||
const loadingDuration = Date.now() - loadingStartTime;
|
||||
const minLoadingTime = 700;
|
||||
console.log(loadingStartTime, loadingDuration);
|
||||
const delayTime = Math.max(0, minLoadingTime - loadingDuration);
|
||||
console.log('delayTime', delayTime);
|
||||
setTimeout(() => {
|
||||
uni.$emit('refresh_comment_data')
|
||||
if (from.value === 'study') {} else {}
|
||||
common.navigateBack()
|
||||
}, 500)
|
||||
})
|
||||
}
|
||||
common.hideLoading();
|
||||
nextTick(() => common.msg('发表成功'));
|
||||
setTimeout(() => {
|
||||
uni.$emit('refresh_comment_data');
|
||||
if (from.value === 'study') {
|
||||
} else {
|
||||
}
|
||||
common.navigateBack();
|
||||
}, 500);
|
||||
}, delayTime);
|
||||
});
|
||||
};
|
||||
onLoad((params) => {
|
||||
formData.crsId = params.crsId;
|
||||
from.value = params.from;
|
||||
@@ -101,15 +130,21 @@
|
||||
<style lang="scss" scoped>
|
||||
.detail-main {
|
||||
background-color: #f6f8ff;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.detail-body {
|
||||
flex: 1;
|
||||
box-sizing: border-box;
|
||||
min-height: calc(100vh - (var(--status-bar-height) + 50rpx));
|
||||
padding: 29rpx 37rpx;
|
||||
// min-height: calc(100vh - (var(--status-bar-height) + 50rpx));
|
||||
padding: 0 37rpx 29rpx 37rpx;
|
||||
margin-bottom: 152rpx;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.title {
|
||||
@@ -125,12 +160,9 @@
|
||||
background-color: #ffffff;
|
||||
border-radius: 15rpx;
|
||||
padding: 36rpx;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.tips {
|
||||
color: #666666;
|
||||
font-size: 24rpx;
|
||||
@@ -183,7 +215,7 @@
|
||||
}
|
||||
|
||||
:deep(.uni-slider-value) {
|
||||
color: #0066FF;
|
||||
color: #0066ff;
|
||||
font-size: 15px;
|
||||
margin-left: 1em;
|
||||
font-weight: 600;
|
||||
@@ -226,6 +258,16 @@
|
||||
padding-bottom: 30rpx;
|
||||
justify-content: space-evenly;
|
||||
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
padding-top: 37rpx;
|
||||
justify-content: space-around;
|
||||
background-color: #ffffff;
|
||||
border-top: 2rpx solid #e5e5e5;
|
||||
z-index: 1000;
|
||||
|
||||
:deep(.uv-button) {
|
||||
border-radius: 14rpx;
|
||||
width: 616rpx;
|
||||
@@ -243,15 +285,11 @@
|
||||
}
|
||||
|
||||
.fixed_search_div {
|
||||
padding: calc(10rpx + var(--status-bar-height)) 15rpx 24rpx 30rpx;
|
||||
padding: calc(var(--status-bar-height)) 15rpx 14rpx 30rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.back_div {
|
||||
// margin-right: 10rpx;
|
||||
padding: 15rpx;
|
||||
|
||||
// background-color: red;
|
||||
.back-icon {
|
||||
position: relative;
|
||||
width: 40rpx;
|
||||
@@ -277,4 +315,4 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
||||
@@ -41,7 +41,13 @@
|
||||
<view class="content">
|
||||
<view class="expose_shadow"></view>
|
||||
<scroll-view :scroll-y="true" class="scroll-Y" :show-scrollbar="false" :refresher-threshold="0">
|
||||
<Subject :item="item" :mode="mode" @subject_click="subject_click" :clearResult="true" v-model="item.my_answer"></Subject>
|
||||
<Subject
|
||||
:item="item"
|
||||
:mode="mode"
|
||||
@subject_click="subject_click"
|
||||
:clearResult="true"
|
||||
v-model="item.my_answer"
|
||||
></Subject>
|
||||
<!-- <CharactersSubject :item="item" v-if="item.qnsTyp === 'ES'" :mode="mode"
|
||||
:activeVoiceId="activeVoiceId" :voicePathValue="voicePathValue"
|
||||
@subject_click="subject_click">
|
||||
@@ -269,6 +275,8 @@
|
||||
my_answer: []
|
||||
}))
|
||||
);
|
||||
|
||||
// #ifdef APP-PLUS
|
||||
// 安全区域底部到屏幕底部的高度(即底部安全区域高度)
|
||||
const safeAreaBottomHeight = systemInfo.screenHeight - systemInfo.safeArea.bottom;
|
||||
uni.onKeyboardHeightChange((res) => {
|
||||
@@ -280,6 +288,7 @@
|
||||
popup_input_bottom.value = `${keyboardHeight}px`;
|
||||
console.log('端补偿安全区域高度', popup_input_bottom.value);
|
||||
});
|
||||
// #endif
|
||||
});
|
||||
|
||||
const result_click = ({ key }) => {
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<scroll-view scroll-y="true" class="scroll-Y" @scrolltolower="scrolltolower" :show-scrollbar="false">
|
||||
<uv-swipe-action :autoClose="true">
|
||||
<uv-swipe-action-item class="item-swipe-action" :options="options" :threshold="40" :index="index"
|
||||
:name="index" v-for="(item,index) in data_list" @click="swipeActionClick">
|
||||
<view class="item" @touchmove.stop>
|
||||
:name="index" v-for="(item,index) in data_list" @click="swipeActionClick" >
|
||||
<view class="item" @touchmove.stop @click="click_item(item)">
|
||||
<view class="img_div">
|
||||
<image-preview class="img" :src="item?.ossAddr" mode="scaleToFill"></image-preview>
|
||||
<view class="subscript">
|
||||
@@ -91,6 +91,10 @@
|
||||
})
|
||||
}, 200)
|
||||
}
|
||||
// 进入课程详情页
|
||||
const click_item = (item) => {
|
||||
common.navigateTo('/pages/courseDetail/index?crsId=' + item.crsId)
|
||||
};
|
||||
const swipeActionClick = (click_item) => {
|
||||
const index = click_item['name']
|
||||
const item = data_list[index]
|
||||
|
||||
@@ -1,18 +1,11 @@
|
||||
<template>
|
||||
<view class="scroll_div">
|
||||
<scroll-view scroll-y="true" class="scroll-Y" @scrolltolower="scrolltolower">
|
||||
<view class="item" :class="getStatusClass(index)" v-for="(item,index) in data_list">
|
||||
<scroll-view scroll-y="true" class="scroll-Y" @scrolltolower="scrolltolower" :show-scrollbar="false">
|
||||
<view class="item" :class="getStatusClass(index)" v-for="(item,index) in data_list" @click="click_item(item)" >
|
||||
<view class="img_div">
|
||||
<image-preview class="img" :src="item?.ossAddr" mode="scaleToFill"></image-preview>
|
||||
<view class="subscript" v-if="index % 3==0">
|
||||
进行中
|
||||
</view>
|
||||
<view class="subscript" v-if="index % 3==1">
|
||||
已完成
|
||||
</view>
|
||||
<view class="subscript" v-if="index % 3==2">
|
||||
已超时
|
||||
</view>
|
||||
<view class="subscript" v-if="item.isFinish === '00'">未完成</view>
|
||||
<view class="subscript" v-if="item.isFinish === '01'">已完成</view>
|
||||
</view>
|
||||
<view class="right_div">
|
||||
<view class="title ellipsis-text">
|
||||
@@ -83,6 +76,20 @@
|
||||
})
|
||||
}, 200)
|
||||
}
|
||||
|
||||
// 跳转到详情
|
||||
const click_item = (item) => {
|
||||
|
||||
// tudo
|
||||
|
||||
// if(item.isTimeOut === '00') {
|
||||
// common.msg('任务已结束')
|
||||
// return ;
|
||||
// }
|
||||
|
||||
// setPageCache('learning_tasks_details', item);
|
||||
// common.navigateTo('/pages/learningTasks/details');
|
||||
};
|
||||
const getStatusClass = (index) => {
|
||||
const remainder = index % 3;
|
||||
if (remainder === 0) return 'in_progress';
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
<view class="title">AI问答</view>
|
||||
</view>
|
||||
|
||||
<view class="item" @click="common.navigateTo('/pages/learningTasks/details')">
|
||||
<view class="item">
|
||||
<image class="icon" src="@/static/images/index/navigation_ai.png"></image>
|
||||
<view class="title">AI陪练</view>
|
||||
</view>
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
<template>
|
||||
<view class="scroll_div">
|
||||
<scroll-view scroll-y="true" class="scroll-Y" @scrolltolower="scrolltolower" :show-scrollbar="false">
|
||||
<view class="item" :class="getStatusClass(item.isFinish)" v-for="(item, index) in data_list" @click="click_item(item)">
|
||||
<view
|
||||
class="item"
|
||||
:class="getStatusClass(item.isFinish)"
|
||||
v-for="(item, index) in data_list"
|
||||
@click="click_item(item)"
|
||||
>
|
||||
<view class="img_div">
|
||||
<image-preview class="img" :src="item.ossAddr" mode="scaleToFill"></image-preview>
|
||||
<view class="subscript" v-if="item.isFinish === '00'">未完成</view>
|
||||
@@ -38,9 +43,7 @@
|
||||
const total = ref(-1);
|
||||
const page = ref(0);
|
||||
const data_list = reactive([]);
|
||||
import {
|
||||
setPageCache
|
||||
} from '@/common/common';
|
||||
import { setPageCache } from '@/common/common';
|
||||
import common from '@/common/common';
|
||||
import { ref, reactive, onMounted, nextTick } from 'vue';
|
||||
|
||||
@@ -83,7 +86,6 @@
|
||||
} else {
|
||||
status.value = 'loadmore';
|
||||
}
|
||||
console.log(status.value, '阿斯顿撒');
|
||||
});
|
||||
}, 200);
|
||||
};
|
||||
@@ -93,12 +95,16 @@
|
||||
if (isFinish === '01') return 'completed';
|
||||
return 'expired';
|
||||
};
|
||||
|
||||
|
||||
// 跳转到详情
|
||||
const click_item = (item) => {
|
||||
setPageCache('learning_tasks_details', item)
|
||||
if(item.isTimeOut === '00') {
|
||||
common.msg('任务已结束')
|
||||
return ;
|
||||
}
|
||||
setPageCache('learning_tasks_details', item);
|
||||
common.navigateTo('/pages/learningTasks/details');
|
||||
}
|
||||
};
|
||||
const scrolltolower = (item) => {
|
||||
getData();
|
||||
};
|
||||
@@ -223,7 +229,6 @@
|
||||
flex-wrap: nowrap;
|
||||
height: 23rpx;
|
||||
overflow: hidden;
|
||||
|
||||
}
|
||||
|
||||
.people_progress_div {
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
</view>
|
||||
<view>任务详情</view>
|
||||
</view>
|
||||
<view class="detail_div" :class="'completed'">
|
||||
<view class="detail_div">
|
||||
<view class="left">
|
||||
<image src="/src/static/images/test/2.png" mode="aspectFill" class="img"></image>
|
||||
</view>
|
||||
@@ -62,10 +62,11 @@
|
||||
:show-scrollbar="false"
|
||||
@scrolltolower="scrolltolower"
|
||||
>
|
||||
<view class="item" v-for="item in data_list" @click="item_click(item)">
|
||||
<view class="item" v-for="item in data_list" @click="item_click(item)" :class="getStatusClass(item.status)">
|
||||
<view class="progress_div">
|
||||
<view class="circle_div"></view>
|
||||
<view class="line_div"></view>
|
||||
<view class="plug"></view>
|
||||
</view>
|
||||
<view class="content_div">
|
||||
<view class="status_div">
|
||||
@@ -78,17 +79,21 @@
|
||||
{{ item.crsName }}
|
||||
</view>
|
||||
<view class="button_div">
|
||||
<template v-if="item.isFinishStudy === '01' && item.isFinishExam === '01'">
|
||||
<template v-if="item.isFinishStudy === '01' && item.isFinishExam === '01' && item.status !== '02'">
|
||||
<image class="img" :src="lockIcon('#999999')"></image>
|
||||
<view class="button_text">暂无通过条件,可自动解锁</view>
|
||||
<view class="button_text error">暂无通过条件,可自动解锁</view>
|
||||
</template>
|
||||
<template v-if="item.isFinishStudy === '01' && item.isFinishExam === '01' && item.status === '02'">
|
||||
<image class="img" :src="lockIcon('#0066FF')"></image>
|
||||
<view class="button_text success">已自动解锁</view>
|
||||
</template>
|
||||
<template v-if="item.isFinishStudy !== '01'">
|
||||
<image class="img" :src="passTheExamIcon('#0066FF')"></image>
|
||||
<view class="button_text">完成练习</view>
|
||||
<image class="img" :src="passTheExamIcon(item.isFinishStudy==='02'?'#0066FF':'#999999')"></image>
|
||||
<view class="button_text" :class="item.isFinishStudy==='02'?'success':'error'">完成练习</view>
|
||||
</template>
|
||||
<template v-if="item.isFinishExam !== '01'">
|
||||
<image class="img" :src="completeTheExercisesIcon('#0066FF')"></image>
|
||||
<view class="button_text">通过考试</view>
|
||||
<image class="img" :src="completeTheExercisesIcon(item.isFinishExam==='02'?'#0066FF':'#999999')"></image>
|
||||
<view class="button_text" :class="item.isFinishExam==='02'?'success':'error'">通过考试</view>
|
||||
</template>
|
||||
</view>
|
||||
</view>
|
||||
@@ -127,7 +132,12 @@
|
||||
const total = ref(-1);
|
||||
const status = ref('loading'); // loadmore - 加载前,loading - 加载中,nomore - 没有数据
|
||||
const data_list = reactive([]);
|
||||
|
||||
const getStatusClass = (isFinish) => {
|
||||
// 00进行中、01已完成、02已超时
|
||||
if (isFinish === '01') return 'unfinished';
|
||||
if (isFinish === '02') return 'completed';
|
||||
return 'not_unlocked';
|
||||
};
|
||||
const getData = () => {
|
||||
status.value = 'loading';
|
||||
|
||||
@@ -149,7 +159,13 @@
|
||||
};
|
||||
const scrolltolower = () => {};
|
||||
|
||||
const item_click = (item) => {};
|
||||
const item_click = (item) => {
|
||||
if (item.status === '03') {
|
||||
common.msg('任务未解锁');
|
||||
return;
|
||||
}
|
||||
common.navigateTo('/pages/courseDetail/index?crsId=' + item.crsId);
|
||||
};
|
||||
const collect_click = async (collectId) => {
|
||||
console.log('学习', collectId);
|
||||
try {
|
||||
@@ -189,29 +205,83 @@
|
||||
|
||||
<style scoped lang="scss">
|
||||
$bg-margin-left: 30rpx;
|
||||
|
||||
.scroll-Y .item {
|
||||
margin: 0 $bg-margin-left 0 $bg-margin-left;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
// 已完成
|
||||
&.completed {
|
||||
.circle_div {
|
||||
border: 4rpx solid #bdc7e6;
|
||||
background-color: #bdc7e6;
|
||||
}
|
||||
.line_div {
|
||||
border-left: 4rpx solid #e1e8f0;
|
||||
}
|
||||
.status_div {
|
||||
color: #adb4c3;
|
||||
background-color: #F3F5F5;
|
||||
}
|
||||
.plug{
|
||||
border-top: 4rpx solid #e1e8f0;
|
||||
}
|
||||
}
|
||||
//未完成
|
||||
&.unfinished {
|
||||
.circle_div {
|
||||
border: 4rpx solid #0066FF;
|
||||
// background-color: #bdc7e6;
|
||||
}
|
||||
.line_div {
|
||||
border-left: 4rpx solid #0066FF;
|
||||
}
|
||||
.status_div {
|
||||
color: #FFFFFF;
|
||||
background-color: #4C93FF;
|
||||
}
|
||||
.plug{
|
||||
border-top: 4rpx solid #0066FF;
|
||||
}
|
||||
}
|
||||
|
||||
// 未解锁
|
||||
&.not_unlocked {
|
||||
.circle_div {
|
||||
border: 4rpx solid #ADB4C3;
|
||||
}
|
||||
.line_div {
|
||||
border-left: 4rpx dashed #ADB4C3;
|
||||
}
|
||||
.status_div {
|
||||
color: #6C9CE4;
|
||||
background-color: #EFF6FF;
|
||||
}
|
||||
.plug{
|
||||
border-top: 4rpx solid #ADB4C3;
|
||||
}
|
||||
}
|
||||
// 最后一项
|
||||
&:last-child .plug{
|
||||
width: 80%;
|
||||
height: 40rpx;
|
||||
margin-top: -6rpx;
|
||||
|
||||
}
|
||||
.progress_div {
|
||||
width: 30rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
|
||||
.circle_div {
|
||||
width: 20rpx;
|
||||
height: 20rpx;
|
||||
border-radius: 100%;
|
||||
border: 4rpx solid #0066ff;
|
||||
background-color: #0066ff;
|
||||
}
|
||||
.line_div {
|
||||
flex: 1;
|
||||
height: calc(100% - 20rpx);
|
||||
width: 4rpx;
|
||||
// border-left: 3rpx solid #0066FF;
|
||||
// border-left: 4rpx dashed gold;
|
||||
border-left: 4rpx dashed #0066ff;
|
||||
margin: 6rpx 0;
|
||||
}
|
||||
}
|
||||
@@ -229,8 +299,6 @@
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-weight: 400;
|
||||
font-size: 30rpx;
|
||||
color: #ffffff;
|
||||
background-color: #4c93ff;
|
||||
writing-mode: vertical-rl;
|
||||
border-radius: 12rpx;
|
||||
display: flex;
|
||||
@@ -270,10 +338,18 @@
|
||||
.button_text {
|
||||
font-weight: 400;
|
||||
font-size: 24rpx;
|
||||
color: #0066ff;
|
||||
|
||||
text-align: left;
|
||||
margin-right: 50rpx;
|
||||
&.success{
|
||||
color: #0066FF;
|
||||
}
|
||||
&.error{
|
||||
color: #999999;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<view class="scroll_div">
|
||||
<scroll-view class="scroll-Y" @scrolltolower="scrolltolower">
|
||||
<scroll-view class="scroll-Y" @scrolltolower="scrolltolower" :show-scrollbar="false">
|
||||
<view class="item">
|
||||
<image src="/src/static/images/common/default_img_2.png" mode="aspectFit"></image>
|
||||
</view>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<view class="scroll_div">
|
||||
<scroll-view scroll-y="true" class="scroll-Y" @scrolltolower="scrolltolower">
|
||||
<scroll-view scroll-y="true" class="scroll-Y" @scrolltolower="scrolltolower" :show-scrollbar="false">
|
||||
<view class="item" v-for="item in data_list">
|
||||
<view class="img_div">
|
||||
<image class="img" src="@/static/images/test/4.png" mode="scaleToFill"></image>
|
||||
|
||||
Reference in New Issue
Block a user