Merge branch 'dev-20250930' of http://25.13.9.101:9000/K17_AITS/tra-app into dev-20250930

This commit is contained in:
田岩
2025-08-20 16:40:48 +08:00
16 changed files with 468 additions and 121 deletions
+9
View File
@@ -261,6 +261,15 @@
"titleNView": false
}
}
},
{
"path": "pages/charts/index",
"style": {
"navigationBarTitleText": "",
"app-plus": {
"titleNView": false
}
}
}
],
"tabBar": {
+51 -102
View File
@@ -25,7 +25,8 @@
<view class="rank-top3">
<view class="rank-content rank-content-backgound-color1" v-if="chartsList.length > 1">
<image src="/static/images/charts/02.svg" class="crown1"></image>
<image src="/static/images/charts/avator.png" class="top-avator"></image>
<image v-if="chartsList[1].imgAddr" :src="chartsList[1].imgAddr" class="top-avator"></image>
<image v-else src="/static/images/charts/avator.png" class="top-avator"></image>
<view class="content1">top·2</view>
<view class="content2">{{chartsList[1].userName}}</view>
<view class="content3">{{chartsList[1].score}}</view>
@@ -33,7 +34,8 @@
</view>
<view class="rank-content rank-content-backgound-color2" v-if="chartsList.length > 0">
<image src="/static/images/charts/01.svg" class="crown2"></image>
<image src="/static/images/charts/avator.png" class="top-avator"></image>
<image v-if="chartsList[0].imgAddr" :src="chartsList[0].imgAddr" class="top-avator"></image>
<image v-else src="/static/images/charts/avator.png" class="top-avator"></image>
<view class="content11">top·1</view>
<view class="content2">{{chartsList[0].userName}}</view>
<view class="content33">{{chartsList[0].score}}</view>
@@ -41,7 +43,8 @@
</view>
<view class="rank-content rank-content-backgound-color3" v-if="chartsList.length > 2">
<image src="/static/images/charts/03.svg" class="crown3"></image>
<image src="/static/images/charts/avator.png" class="top-avator"></image>
<image v-if="chartsList[2].imgAddr" :src="chartsList[2].imgAddr" class="top-avator"></image>
<image v-else src="/static/images/charts/avator.png" class="top-avator"></image>
<view class="content111">top·3</view>
<view class="content2">{{chartsList[2].userName}}</view>
<view class="content333">{{chartsList[2].score}}</view>
@@ -113,17 +116,18 @@
</template>
<!-- 自定义 body -->
<template v-slot:body>
<view style="width: 50%;text-align: center;">
<image :src="item.imgAddr" class="avator"></image>
<view style="width: 55%;text-align: center;margin-left: 10rpx;">
<image v-if="item.imgAddr" :src="item.imgAddr" class="avator"></image>
<image v-else src="/static/images/charts/avator.png" class="avator"></image>
<view style="float: left;margin-left: 18rpx;">
<view :class="item.userId == userId?'active-name':'name'">{{ item.userName }}</view>
<view class="belong">{{ item.dept }}</view>
<view style="width: 250rpx;text-align: left;margin-top: 10rpx;" class="belong">{{ item.dept }}</view>
</view>
</view>
</template>
<!-- 自定义 footer-->
<template v-slot:footer>
<text class="score-sty score-sty-footer">{{ item.score }}</text>
<text style="text-align: center;" class="score-sty score-sty-footer">{{ item.score }}</text>
</template>
</uni-list-item>
<view style="width: 100%;height: 200rpx;"></view>
@@ -142,11 +146,12 @@
</template>
<!-- 自定义 body -->
<template v-slot:body>
<view style="width: 50%;text-align: center;">
<image src="/static/images/charts/avator.png" class="avator"></image>
<view style="width: 65%;text-align: center;margin-top: 30rpx;">
<image v-if="myselfObj.imgAddr" :src="myselfObj.imgAddr" class="avator" style="margin-top: 4rpx;"></image>
<image v-else src="/static/images/charts/avator.png" class="avator" style="margin-top: 4rpx;"></image>
<view style="float: left;margin-left: 18rpx;">
<view class="my-rank-name">{{myselfObj.userName}}</view>
<view class="my-rank-belong">{{myselfObj.dept}}</view>
<view style="width: 260rpx;text-align: left;margin-top: 5rpx;" class="my-rank-belong">{{myselfObj.dept}}</view>
</view>
</view>
</template>
@@ -169,6 +174,7 @@
getLeaderBoardCrsCntApi
} from "@/api/leaderBoard.js"
// 我的排行榜
import { getUserInfo } from '@/common/common';
import {
reactive,
ref,
@@ -178,7 +184,7 @@
watch
} from 'vue';
import common from '@/common/common';
const userId = ("USER001");
const userId = ref("");
const itemIndex = ref(0);
const learnTimeList = ref([])
const practCntList = ref([])
@@ -215,30 +221,33 @@
itemIndex.value = 0;
tabAct.value = index;
tableLastName.value = item.name;
if (tableLastName.value == '学习时长') {
if (tableLastName.value.includes('学习时长') ) {
tableLastName.value = '学习时长(h)'
}
if (tableLastName.value == '学习时长') {
if (tableLastName.value.includes('学习时长')) {
allChartsList.value = learnTimeList.value;
chartsList.value = learnTimeList.value.annual.list || [];
chartsList.value = learnTimeList.value.annual?learnTimeList.value.annual.list:[];
myselfObj.value = allChartsList.value.annual?allChartsList.value.annual.self:{};
myselfObj.value.score = allChartsList.value.annual.self.annlStdyTmLen;
myselfObj.value.score = allChartsList.value.annual?allChartsList.value.annual.self.annlStdyTmLen:"";
chartsList.value.forEach(item => item.score = item.annlStdyTmLen)
} else if (tableLastName.value == '练习次数') {
} else if (tableLastName.value == '练习次数') {
allChartsList.value = practCntList.value;
chartsList.value = practCntList.value.annual.list || [];
chartsList.value = practCntList.value.annual?practCntList.value.annual.list:[];
myselfObj.value = allChartsList.value.annual?allChartsList.value.annual.self:{};
myselfObj.value.score = allChartsList.value.annual.self.annlPractCnt;
myselfObj.value.score = allChartsList.value.annual?allChartsList.value.annual.self.annlPractCnt:"";
chartsList.value.forEach(item => item.score = item.annlPractCnt);
} else if (tableLastName.value == '考试次数') {
allChartsList.value = examCntList.value;
chartsList.value = examCntList.value.annual.list || [];
chartsList.value = examCntList.value.annual?examCntList.value.annual.list:[];
myselfObj.value = allChartsList.value.annual?allChartsList.value.annual.self:{};
myselfObj.value.score = allChartsList.value.annual.self.annlExamCnt;
myselfObj.value.score = allChartsList.value.annual?allChartsList.value.annual.self.annlExamCnt:"";
chartsList.value.forEach(item => item.score = item.annlExamCnt);
} else if (tableLastName.value == '通关课程数') {
allChartsList.value = crsCntList.value;
chartsList.value = crsCntList.value.annual.list || [];
chartsList.value = crsCntList.value.annual?crsCntList.value.annual.list:[];
myselfObj.value = allChartsList.value.annual?allChartsList.value.annual.self:{};
myselfObj.value.score = allChartsList.value.annual.self.annlCrsCnt;
myselfObj.value.score = allChartsList.value.annual?allChartsList.value.annual.self.annlCrsCnt:"";
chartsList.value.forEach(item => item.score = item.annlCrsCnt);
}
if (chartsList.value.length > 3) {
newChartsList.value = chartsList.value.slice(3).concat();
@@ -266,11 +275,16 @@
myselfObj.value.score = myselfObj.value.annlCrsCnt;
}
} else if (item.value == 'month') {
console.log('month')
chartsList.value = allChartsList.value.month ? allChartsList.value.month.list : [];
myselfObj.value = allChartsList.value.month ? allChartsList.value.month.self : {};
if (tableLastName.value == '学习时长') {
console.log(chartsList.value,'chartsList.value')
console.log(myselfObj.value,'myselfObj.value')
if (tableLastName.value.includes('学习时长')) {
chartsList.value.forEach(item => item.score = item.thisMonthStdyTmLen);
myselfObj.value.score = myselfObj.value.thisMonthStdyTmLen;
console.log(chartsList.value,'chartsList.valueMonth')
console.log(myselfObj.value,'myselfObj.valueMonth')
} else if (tableLastName.value == '练习次数') {
chartsList.value.forEach(item => item.score = item.thisMonthPractCnt);
myselfObj.value.score = myselfObj.value.thisMonthPractCnt;
@@ -284,9 +298,11 @@
} else if (item.value == 'week') {
chartsList.value = allChartsList.value.week ? allChartsList.value.week.list : [];
myselfObj.value = allChartsList.value.week ? allChartsList.value.week.self : {};
if (tableLastName.value == '学习时长') {
if (tableLastName.value.includes('学习时长')) {
chartsList.value.forEach(item => item.score = item.thisWeekStdyTmLen);
myselfObj.value.score = myselfObj.value.thisWeekStdyTmLen;
console.log(chartsList.value,'chartsList.valueWeek')
console.log(myselfObj.value,'myselfObj.valueWeek')
} else if (tableLastName.value == '练习次数') {
chartsList.value.forEach(item => item.score = item.thisWeekPractCnt);
myselfObj.value.score = myselfObj.value.thisWeekPractCnt;
@@ -298,91 +314,24 @@
myselfObj.value.score = myselfObj.value.thisWeekCrsCnt;
}
}
if (chartsList.value.length > 3) {
newChartsList.value = chartsList.value.slice(3).concat();
} else {
newChartsList.value = chartsList.value;
}
}
const userInfo = computed(() => getUserInfo())
userId.value = userInfo.value.userId;
console.log(userId.value,'userId')
onMounted(() => {
//挡板数据代码
// let tempList = {
// annual: [{
// userName: "江心",
// score: 94,
// dept: "吉林银行吉林分行",
// userId: "USER001",
// imgAddr: "/static/images/charts/avator.png"
// },
// {
// userName: "李婉儿",
// score: 98,
// dept: "吉林银行吉林分行"
// },
// {
// userName: "百里里",
// score: 88,
// dept: "吉林银行吉林分行"
// },
// {
// userName: "黎明",
// score: 94,
// dept: "吉林银行吉林分行",
// imgAddr: "/static/images/charts/avator.png"
// },
// {
// userName: "张伟",
// score: 91,
// dept: "吉林银行吉林分行"
// },
// {
// userName: "俞小凡",
// score: 89,
// dept: "吉林银行吉林分行",
// imgAddr: "/static/images/charts/avator.png"
// },
// {
// userName: "黎明",
// score: 94,
// dept: "吉林银行吉林分行"
// },
// {
// userName: "张伟",
// score: 91,
// dept: "吉林银行吉林分行"
// },
// {
// userName: "俞小凡",
// score: 89,
// dept: "吉林银行吉林分行"
// },
// {
// userName: "江月心",
// score: 10,
// dept: "吉林银行吉林分行"
// }
// ]
// }
// learnTimeList.value = tempList;
// allChartsList.value = learnTimeList.value;
// chartsList.value = tempList.annual;
// console.log(chartsList.value, '1111111')
// chartsList.value.score = learnTimeList.value.annual.annlStdyTmLen;
// console.log(chartsList.value, '222222')
// myselfObj.value = chartsList.value.filter(item => item.userId == userId)
// console.log(myselfObj.value, '3333')
// if (chartsList.value.length > 3) {
// newChartsList.value = chartsList.value.slice(3).concat();
// } else {
// newChartsList.value = chartsList.value;
// }
// console.log(learnTimeList.value, 'learnTimeList')
//挡板数据代码
console.log(myselfObj.value,'78787878')
getLeaderBoardStdyTmApi().then(res => {
console.log(res, 'getLeaderBoardStdyTmApi')
learnTimeList.value = res.body || [];
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 = "吉林银行吉林分行"
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);
@@ -862,7 +811,7 @@
color: #0066FF;
font-style: italic;
font-weight: 600;
margin-top: 15rpx
margin-top: 20rpx
}
.my-rank-name {
+36 -9
View File
@@ -1,6 +1,17 @@
<!-- type: 0纯文本信息不翻译 1语音回答 2 文本回答 3, 段落信息 4 问题信息 5 统计信息 6: 发送loading状态 7: 教师反馈文本不翻译 -->
<!-- type:
0纯文本信息不翻译
1语音回答
2 文本回答
3 段落信息
4 问题信息
5 统计信息
6 发送loading状态
7 教师反馈文本不翻译
8 问题反馈信息
-->
<template>
<view :class="['ai-answer', props.class]" :id="props.id" v-if="[3,4,5].indexOf(type) >= 0">
<view :class="['ai-answer', props.class]" :id="props.id" v-if="[3,4,5,8].indexOf(type) >= 0">
<!-- 头像信息 -->
<view class="user-info">
<view class="avatar-box">
<ImagePreview class="img-box" :imgId="teacherInfo?.imgAddr"></ImagePreview>
@@ -10,12 +21,16 @@
<view class="ai-name-desc">{{teacherInfo?.teacherDesc}}</view>
</view>
</view>
<!-- 对话信息 -->
<view :class="['talking-info', [4].indexOf(type) >= 0 ? 'talking-info-less':''] ">
<!-- 语音加载状态 -->
<view :class="['talking-gif', !voiceLoading && (activeVoiceId === dataInfo.id)?'is-play':'']" v-if="type !== 5">
<CommonLoading color="#06f" v-show="voiceLoading"/>
</view>
<view class="talking-cont">
<!-- 加载状态 -->
<CommonLoading color="#06f" v-show="dataInfo.isLoading"/>
<!-- 题干/段落内容 -->
<text class="talking-text" v-if="[3, 5, 6].indexOf(type) >= 0 && !dataInfo.isLoading">
{{ showContent }}
</text>
@@ -23,24 +38,32 @@
<!-- 请您思考并作答:<br> -->
{{ showContent }}
</text>
<RadioSubject v-if="[4].indexOf(type) >= 0 && dataInfo.qnsTyp !== 'ES'" :item="dataInfo" :mode="mode" @subject_click="subject_click" />
<!-- 试题问题 -->
<RadioSubject v-if="[4].indexOf(type) >= 0 && dataInfo.qnsTyp !== 'ES'" :isPreview="!isLast" :item="dataInfo" :mode="mode" @subject_click="subject_click" />
<!-- 试题问题反馈 -->
<!-- <RadioSubjectRequest v-if="[8].indexOf(type) >= 0 && dataInfo.qnsTyp !== 'ES'" :item="dataInfo" :mode="mode" @subject_click="subject_click" /> -->
<!-- 段落图片视频预览 -->
<view v-if="type === 3" style="overflow: hidden;">
<ImagePreview class="cont-img-box" v-if="(dataInfo.imageAddrs||[]).length>0" :imgId="dataInfo.imageAddrs[0]" :previewDetail="true"></ImagePreview>
<VideoPreview class="cont-img-box" v-if="(dataInfo.vidoAddrs||[]).length>0" :fileId="dataInfo.vidoAddrs[0]"></VideoPreview>
</view>
<!-- 维度信息预览 -->
<view v-if="type === 5 && !dataInfo.isLoading" style="padding-top: 16rpx;">
<ChartFour v-if="dataInfo.evalDimens.length === 4" :dataList="dataInfo.evalDimens" :score="dataInfo.intrctGrade"/>
<ChartThree v-if="dataInfo.evalDimens.length === 3" :dataList="dataInfo.evalDimens" :score="dataInfo.intrctGrade"/>
<ChartFive v-if="dataInfo.evalDimens.length === 5" :dataList="dataInfo.evalDimens" :score="dataInfo.intrctGrade"/>
</view>
<view v-if="type === 3 && dataInfo.knoExampie " style="overflow: hidden;">
<!-- 举例预览 -->
<view class="talking-text" v-if="type === 3 && dataInfo.knoExampie " style="overflow: hidden;">
举例{{ dataInfo.knoExampie }}
</view>
</view>
<view class="btns-cont" v-show="!dataInfo.isLoading">
<view class="replay-btn" @click.stop="restartPlay" v-if="!([5].indexOf(type) >= 0)">
<!-- 重新回答 -->
<view class="replay-btn" @click.stop="restartPlay" v-if="!([5, 8].indexOf(type) >= 0)">
<image class="icon" src="@/static/images/course/replay.png" style="width: 100%;height: 100%;"></image>
</view>
<!-- 停止回答 -->
<view class="play-btn" v-if="!([5].indexOf(type) >= 0)">
<image
class="icon"
@@ -58,7 +81,7 @@
></image>
</view>
<view class="next-learn-btn"
v-if="showNextBtn && [5].indexOf(type) >= 0 && isLast"
v-if="showNextBtn && [5,8].indexOf(type) >= 0 && isLast"
@click.stop="goOnRestartPrgh"
>
重新学
@@ -66,7 +89,7 @@
</view>
<view
class="next-learn-btn restart"
v-if="showNextBtn && [5].indexOf(type) >= 0 && isLast"
v-if="showNextBtn && [5,8].indexOf(type) >= 0 && isLast"
@click.stop="goOnRestart"
>
重新答
@@ -74,7 +97,7 @@
</view>
<view
class="replay-study-btn next-learn-btn"
v-if="showNextBtn && [5].indexOf(type) >= 0 && isLast && dataInfo.passStat === 'PS'"
v-if="showNextBtn && [5,8].indexOf(type) >= 0 && isLast && (dataInfo.passStat === 'PS' || dataInfo.judgeResult === 'P')"
@click.stop="goOnGetQues"
>
继续学
@@ -83,6 +106,7 @@
<view class="next-btn" @click.stop="goOnGetQues" v-if="showGoonBtn">继续
<image class="icon icon-iamge" src="@/static/images/course/goon.png" ></image></view>
</view>
<!-- 解析信息 -->
<view class="talking-cont last-cont" v-if=" [5].indexOf(type) >= 0 && !dataInfo.isLoading">
<view class="talking-text">
{{ changeBr(dataInfo.suggestContent || '--') }}
@@ -90,6 +114,7 @@
</view>
</view>
</view>
<!-- ai回答 -->
<view :class="['ai-answer', props.class]" :id="props.id" v-if="[7].indexOf(type) >= 0">
<view class="user-info">
<view class="avatar-box">
@@ -108,6 +133,7 @@
</view>
</view>
</view>
<!-- 用户对话 -->
<view :class="['user-answer', props.class]" :id="props.id" v-else-if="[1, 2].indexOf(type) >= 0">
<view class="user-info">
<view class="avatar-box">
@@ -201,6 +227,7 @@ import { useStorageStore } from "@/store/storage.js"
import { onUnload } from '@dcloudio/uni-app'
import RadioSubject from '@/components/examination/radio-subject.vue'
// import RadioSubjectRequest from '@/pages/wrong_question_record/components/radio-subject.vue'
const storageStore = useStorageStore()
const audioCacheObj = computed(() => storageStore.audioObj)
@@ -513,7 +540,7 @@ const audioCacheObj = computed(() => storageStore.audioObj)
// 答题 选择
const subject_click = (type,data) => {
if(type === 'answer'){
emit('answerQuestion', data)
emit('answerQuestion', data, unref(dataInfo))
}
}
+43 -2
View File
@@ -832,8 +832,49 @@ const withdrawNow = (data) => {
})
}
const loadingQstLogId = ref('')
const answerQuestionNow = (data) => {
console.log(data,1111111111)
const answerQuestionNow = (data, item) => {
// 发出答案
let _answer = data.answerItems.map(t=>t.itemNo).join('')
let _id1 = new Date().getTime() + '3d'
talkingList.value.push({
id: _id1,
talkingContent: _answer,
userInfo: {...choiceTeacherInfo.value},
type: 0
})
scrollToBottomNow(0)
let _data = {
qnsId: item.qnsId,// 问题ID 必输项:true 类型:String
pgrphId: item.pgrphId,// 段落ID 必输项:true 类型:String
crsId: crsId.value,// 课程ID 必输项:true 类型:String
stdyBatch: stdyBatch.value,// 学习批次 必输项:true 类型:String
ansterContent: data.answer.join(',') // 回答文本内容 必输项:false 类型:String
}
textChartApi({
processType: 'ANSER-CHOICE',
requestBody: JSON.stringify(_data)
}).then(res=>{
let _id = new Date().getTime() + 'id'
let _body = res.body
lastTalkingInfo.value = {
crsId: crsId.value,
stdyId: unref(stdyId),
stdyBatch: unref(stdyBatch),
logId: unref(logId),
pgrphId: item.pgrphId,
qnsId: item.qnsId,
chatContent: _body.chatContent||'',
...(_body.chatBody||{}),
type: Number(_body.bodyTyp || 8),
userInfo: {...choiceTeacherInfo.value},
id: _id,
isQuestion: true,
my_answer:[],
backend_answer: []
}
talkingList.value.push(lastTalkingInfo.value)
scrollToBottomNow(0)
})
}
// 完成
const finishQuestionNow = (data) => {
+1 -1
View File
@@ -32,7 +32,7 @@
<view class="mr-10">已学</view>
<view class="c-000">{{ form.styParaGraphNum || 0 }}</view>
</view>
<view class="num-item examination">
<view class="num-item examination" @click="common.navigateTo('/pages/examRanking/index?crsId=' + crsId)">
<image
class="title-icon"
src="/src/static/images/courseDetail/charts.png"
+318 -6
View File
@@ -1,6 +1,61 @@
<template>
<view>
<view class="exam-ranking">
<image src="@/static/images/examRanking/bg.png" mode="aspectFit" class="bg-box"></image>
<view class="ranking-box">
<view class="nav-div">
<view class="back_div">
<view class="back-icon"></view>
</view>
</view>
<view class="title-view">
<!-- <view class="title-info">考试排行榜</view> -->
<image class="title-image" src="@/static/images/examRanking/title.png" mode="aspectFit"></image>
<view class="title-desc">吾日三省吾身传不习乎</view>
<image class="cup-image" src="@/static/images/examRanking/cup.png" mode="aspectFit"></image>
</view>
<view class="ranking-body">
<view class="list-header list-item">
<view class="rank-column">排名</view>
<view class="user-column">用户名/所属机构</view>
<view class="score-column">最高分</view>
</view>
<scroll-view :scroll-y="true" class="scroll-items-view">
<view v-for="(item,index) in 60" :class="['list-item', 'item-'+(index+1)]">
<view class="rank-column">
{{index + 1}}
</view>
<view class="user-column">
<view class="avatar-box">
<image-preview class="avatar-image" :imgId="item" mode="aspectFit"></image-preview>
</view>
<view class="user-name">{{'李想'}}</view>
<view class="user-org">{{'吉林银行白城分行'}}</view>
</view>
<view class="score-column">{{100 - index}}</view>
</view>
</scroll-view>
</view>
<view class="ranking-self">
<view class="list-header list-item">
<view class="rank-column">我的排名</view>
</view>
<view class="list-item item-me">
<view class="rank-column">
{{21}}
</view>
<view class="user-column">
<view class="avatar-box">
<image-preview class="avatar-image" :imgId="item" mode="aspectFit"></image-preview>
</view>
<view class="user-name">{{'李想'}}</view>
<view class="user-org">{{'吉林银行白城分行'}}</view>
</view>
<view class="score-column">{{22}}</view>
</view>
</view>
</view>
</view>
</template>
@@ -8,15 +63,272 @@
export default {
data() {
return {
}
},
methods: {
}
}
</script>
<style>
<style scoped lang="scss">
$top-height: var(--status-bar-height);
</style>
.exam-ranking {
position: relative;
height: 100vh;
width: 100vw;
overflow: hidden;
box-sizing: border-box;
padding-top: $top-height;
// background:url(@/static/images/examRanking/bg.png) no-repeat top center;
.bg-box {
position: absolute;
top: 0;
left: 0;
width: 100vw;
height: 412rpx;
z-index: 1;
}
.ranking-box {
height: calc(100% - $top-height);
overflow: hidden;
position: absolute;
top: $top-height;
width: 100%;
z-index: 2;
}
.nav-div {
position: relative;
overflow: hidden;
height: 70rpx;
.back_div {
margin-right: 10rpx;
position: absolute;
left: 25rpx;
top: 0;
padding: 15rpx;
.back-icon {
position: relative;
width: 40rpx;
height: 40rpx;
cursor: pointer;
}
.back-icon::before,
.back-icon::after {
content: '';
position: absolute;
transition: all 0.3s ease;
}
.back-icon::after {
top: 25%;
left: 25%;
width: 40%;
height: 40%;
border-top: 4rpx solid #000;
border-left: 4rpx solid #000;
transform: rotate(-45deg);
}
}
}
.title-view {
height: 180rpx;
position: relative;
padding-left: 79rpx;
padding-top: 20rpx;
.cup-image {
position: absolute;
right: 90rpx;
bottom: 0;
width: 178rpx;
height: 159rpx;
}
.title-desc {
color: #666;
line-height: 34rpx;
font-size: 25rpx;
}
.title-image {
width: 308rpx;
height: 88rpx;
}
}
.ranking-body {
height: calc(100% - 170rpx - 180rpx - 70rpx);
overflow: hidden;
background-color: #fff;
border-radius: 31rpx 31rpx 0 0;
padding-top: 20rpx;
box-sizing: border-box;
.scroll-items-view{
height: calc(100% - 54rpx);
}
}
.list-item {
height: 108rpx;
border-bottom: 2rpx solid #efefef;
overflow: hidden;
&.list-header {
height: 54rpx;
line-height: 54rpx;
color: #999;
font-size: 25rpx;
border-bottom: 0;
.rank-column {
height: 54rpx;
line-height: 54rpx;
color: #999;
font-weight: normal;
font-size: 25rpx;
font-style: initial;
text-indent: 0;
}
.user-column {
padding: 0;
}
.score-column {
line-height: 54rpx;
color: #999;
font-weight: normal;
font-size: 25rpx;
}
}
&.item-1 {
border-bottom: 0;
margin-bottom: 8rpx;
background: linear-gradient(90deg, #fbf9f5 0%, #fffffd 100%);
.rank-column{
color: #ffffff00;
background: url(@/static/images/examRanking/no-1.png) no-repeat ;
background-position: 40rpx center;
background-size: 44rpx 66rpx;
text-indent: 8rpx;
}
}
&.item-2 {
border-bottom: 0;
margin-bottom: 8rpx;
background: linear-gradient(90deg, #f4f8f9 0%, #f7fbfe 100%);
.rank-column{
color: #ffffff00;
background: url(@/static/images/examRanking/no-2.png) no-repeat ;
background-position: 40rpx center;
background-size: 44rpx 66rpx;
text-indent: 8rpx;
}
}
&.item-3 {
border-bottom: 0;
margin-bottom: 8rpx;
background: linear-gradient(90deg, #faf6f5 0%, #fcfbfc 100%);
.rank-column{
color: #ffffff00;
background: url(@/static/images/examRanking/no-3.png) no-repeat ;
background-position: 40rpx center;
background-size: 44rpx 66rpx;
text-indent: 8rpx;
}
}
&.item-me{
border-bottom: 0;
.rank-column {
color: #06f;
}
}
.rank-column {
width: 170rpx;
padding-left: 40rpx;
float: left;
font-weight: 600;
line-height: 92rpx;
height: 108rpx;
color: #333;
font-size: 38rpx;
font-style: italic;
text-indent: 8rpx;
}
.user-column {
width: 450rpx;
float: left;
padding: 15rpx 0;
.avatar-box{
width: 77rpx;
height: 77rpx;
overflow: hidden;
float: left;
background-color: #eee;
border-radius: 50%;
.avatar-image{
width: 77rpx;
height: 77rpx;
}
}
.user-name{
float: left;
width: calc(100% - 77rpx);
padding-left: 18rpx;
padding-right: 18rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
height: 40rpx;
line-height: 40rpx;
font-size: 29rpx;
color: #000;
font-weight: 500;
}
.user-org{
float: left;
width: calc(100% - 77rpx);
padding-left: 18rpx;
padding-right: 18rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
height: 34rpx;
line-height: 34rpx;
font-size: 25rpx;
color: #999;
}
}
.score-column {
width: 75rpx;
text-align: right;
float: left;
font-weight: 600;
line-height: 108rpx;
color: #333;
font-size: 31rpx;
}
}
.ranking-self {
height: 170rpx;
overflow: hidden;
background-color: #f5f9ff;
padding-top: 4rpx;
}
}
</style>
+10 -1
View File
@@ -17,6 +17,15 @@
"titleNView": false
}
}
}
},
{
"path": "pages/charts/index",
"style": {
"navigationBarTitleText": "",
"app-plus": {
"titleNView": false
}
}
},
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB