This commit is contained in:
田岩
2025-08-21 15:02:13 +08:00
parent 76c71bbb03
commit 7975afc065
7 changed files with 74 additions and 62 deletions
+1 -1
View File
@@ -27,4 +27,4 @@ VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7001'
VITE_APP_BASE_H5_API_Url = 'http://25.18.122.65:7001' VITE_APP_BASE_H5_API_Url = 'http://25.18.122.65:7001'
#VITE_APP_BASE_H5_API_Url_TRAAPP = 'http://25.64.16.130:9601' #VITE_APP_BASE_H5_API_Url_TRAAPP = 'http://25.64.16.130:9601'
VITE_APP_BASE_H5_API_Url_TRASTUDY = 'http://25.64.16.130:9602' #VITE_APP_BASE_H5_API_Url_TRASTUDY = 'http://25.64.16.138:9602'
Binary file not shown.
+31 -23
View File
@@ -2,7 +2,7 @@
<view class="item"> <view class="item">
<view class="top"> <view class="top">
<view class="type">{{ subject_type_text }}</view> <view class="type">{{ subject_type_text }}</view>
<view class="score" v-if="[''].includes(props.mode)">{{ item.tgtGrade }}</view> <view class="score" v-if="['settlement', 'examination'].includes(props.mode)">{{ item.tgtGrade }}</view>
<view class="fl1"></view> <view class="fl1"></view>
<view class="right"> <view class="right">
<!-- 反馈中心 --> <!-- 反馈中心 -->
@@ -14,9 +14,9 @@
></image> ></image>
<image :src="feedbackIcon()" class="img" @click="feedback_click()"></image> <image :src="feedbackIcon()" class="img" @click="feedback_click()"></image>
</view> </view>
<template v-if="[''].includes(props.mode)"> <template v-if="['mistake'].includes(props.mode)">
<view class="right_text">展开</view> <view class="right_text">展开</view>
<uv-icon class="arrow-icon" name="arrow-right"></uv-icon> <uv-icon class="arrow-icon" name="arrow-right" color="#0066FF"></uv-icon>
</template> </template>
</view> </view>
</view> </view>
@@ -52,17 +52,15 @@
确定 确定
</uv-button> </uv-button>
</view> </view>
<view class="analysis_div" v-if="!clearResult && ['study', 'mistake'].includes(props.mode)"> <view class="analysis_div" v-if="!clearResult && ['study', 'mistake', 'settlement'].includes(props.mode)">
<view class="analysis_title"> <view class="analysis_title">
<view class="success_answer">正确答案{{ correctResultLabel.join('') }}</view> <view class="success_answer">正确答案{{ correctResultLabel.join('') }}</view>
<view class="your_answer"> <view class="your_answer">
你的答案 你的答案
<text class="red_color">{{ myResultLabel.join('') }}</text> <text :class="right_or_wrong_class ? 'success' : 'error'">{{ myResultLabel.join('') }}</text>
</view> </view>
</view> </view>
<view class="analysis_note"> <view class="analysis_note">题目解析{{ subject_data?.analyContent }}</view>
题目解析{{subject_data?.analyContent}}
</view>
</view> </view>
</view> </view>
</template> </template>
@@ -77,7 +75,7 @@
backgroundColor: '#0066FF', backgroundColor: '#0066FF',
border: '1rpx solid rgb(12, 123, 245)' border: '1rpx solid rgb(12, 123, 245)'
}; };
const emit = defineEmits(['subject_click']); const emit = defineEmits(['subject_click']);
const props = defineProps({ const props = defineProps({
modelValue: { modelValue: {
@@ -92,8 +90,8 @@
type: String, type: String,
required: true, required: true,
validator: (value) => { validator: (value) => {
// 考试: examination 练习: practice 错题本: mistake 学习: study // 考试: examination 练习: practice 错题本: mistake 学习: study 考试结算页 settlement
return ['examination', 'practice', 'mistake', 'study'].includes(value); return ['examination', 'practice', 'mistake', 'study', 'settlement'].includes(value);
} }
}, },
// 是否预览模式 // 是否预览模式
@@ -105,13 +103,13 @@
clearResult: { clearResult: {
type: Boolean, type: Boolean,
default: true default: true
}, }
}); });
const modelValue = computed({ const modelValue = computed({
get: () => props.modelValue, get: () => props.modelValue,
set: (val) => emit('update:modelValue', val) set: (val) => emit('update:modelValue', val)
}); });
let answerText = props.item?.my_answer let answerText = props.item?.my_answer;
const item_answer = ref(typeof answerText === 'string' ? answerText.split(',') : []); const item_answer = ref(typeof answerText === 'string' ? answerText.split(',') : []);
const feedback_click = () => { const feedback_click = () => {
emit('subject_click', 'feedback', props.item); emit('subject_click', 'feedback', props.item);
@@ -130,12 +128,18 @@
const anserResultArray = props.item.anserResult.split(','); const anserResultArray = props.item.anserResult.split(',');
return subject_data.itemVos.filter((res) => anserResultArray.includes(res.itemId)).map((res) => res.itemNo); return subject_data.itemVos.filter((res) => anserResultArray.includes(res.itemId)).map((res) => res.itemNo);
}); });
// 判断选项是否完全正确
const right_or_wrong_class = computed(
() =>
correctResultLabel.value.length === myResultLabel.value.length &&
myResultLabel.value.every((res) => correctResultLabel.value.includes(res))
);
const subject_data = reactive({ const subject_data = reactive({
qnsId: props.item.qnsId, qnsId: props.item.qnsId,
qnsContent: props.item.qnsContent, qnsContent: props.item.qnsContent,
qnsTyp: props.item.qnsTyp, qnsTyp: props.item.qnsTyp,
analyContent: props.item.analyContent, analyContent: props.item.analyContent,
itemVos: (props.item.itemVos??[]).map((res) => ({ itemVos: (props.item.itemVos ?? []).map((res) => ({
...res, ...res,
correctFlag: props.clearResult ? '' : res.correctFlag correctFlag: props.clearResult ? '' : res.correctFlag
})) }))
@@ -212,18 +216,20 @@
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
margin: 32rpx 0 28rpx 0; margin: 32rpx 0 28rpx 0;
.success_answer { .success_answer {
} }
.your_answer { .your_answer {
} .success {
color: #15b859;
.red_color { }
color: #f5212d; .error {
color: #f5212d;
}
} }
} }
.analysis_note { .analysis_note {
font-family: PingFangSC; font-family: PingFangSC;
font-weight: 500; font-weight: 500;
@@ -272,11 +278,13 @@
.right_text { .right_text {
font-family: PingFangSC; font-family: PingFangSC;
font-weight: 600; font-weight: 400;
font-size: 28rpx; font-size: 28rpx;
color: #333; color: #333333;
line-height: 40px;
text-align: left; text-align: left;
font-style: normal; font-style: normal;
} }
} }
} }
+4 -19
View File
@@ -3,7 +3,7 @@
<nav-bar :is_seat="true"></nav-bar> <nav-bar :is_seat="true"></nav-bar>
<view class="nav-div"> <view class="nav-div">
<view class="title ellipsis-text">考试结算</view> <view class="title ellipsis-text">考试结算</view>
<view class="back_div"> <view class="back_div" @click="common.navigateBack()">
<view class="back-icon"></view> <view class="back-icon"></view>
</view> </view>
</view> </view>
@@ -116,25 +116,8 @@
<image src="@/static/images/examination/getting_robot.png" mode="widthFix" class="img"></image> <image src="@/static/images/examination/getting_robot.png" mode="widthFix" class="img"></image>
<view class="tip">你的等待会有更精确的结果要耐心哦~</view> <view class="tip">你的等待会有更精确的结果要耐心哦~</view>
</view> </view>
<!-- <view class="top">
<view class="type">单选题</view>
<view class="score">5</view>
<view class="fl1"></view>
<view class="right">
<view class="right_text">
展开
</view>
<uv-icon class="arrow-icon" name="arrow-right"></uv-icon>
</view>
</view>
<view class="text">属于商业银行风险管理三道防线的哪些风险管理部门为什么</view>
<view class="additional_div">
<RadioSubject></RadioSubject>
</view> -->
<view class="" :id="'id_' + index" :class="getStatusClass(index)" v-for="(item, index) in topicList"> <view class="" :id="'id_' + index" :class="getStatusClass(index)" v-for="(item, index) in topicList">
<Subject :item="item" mode="settlement" :clearResult="false" :isPreview="true"></Subject>
<topic-display :item="item" mode="mistake"></topic-display>
</view> </view>
</view> </view>
</scroll-view> </scroll-view>
@@ -145,6 +128,8 @@
import { onLoad } from '@dcloudio/uni-app'; import { onLoad } from '@dcloudio/uni-app';
import { ref, reactive, computed, onMounted, nextTick, getCurrentInstance } from 'vue'; import { ref, reactive, computed, onMounted, nextTick, getCurrentInstance } from 'vue';
import { queryPaperExamScore } from '@/api/examination.js'; import { queryPaperExamScore } from '@/api/examination.js';
import Subject from '@/components/examination/subject.vue';
import common from '@/common/common';
const pass_status = ref(0); const pass_status = ref(0);
const sheet_swiper_index = ref(0); const sheet_swiper_index = ref(0);
const result = reactive({ const result = reactive({
@@ -4,7 +4,7 @@
<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"> <view class="img_div">
<image-preview class="img" :src="item.ossAddr" mode="scaleToFill"></image-preview> <image-preview class="img" :src="item.ossAddr" mode="scaleToFill"></image-preview>
<view class="subscript" v-if="item.isFinish === '00'">进行中</view> <view class="subscript" v-if="item.isFinish === '00'">未完成</view>
<view class="subscript" v-if="item.isFinish === '01'">已完成</view> <view class="subscript" v-if="item.isFinish === '01'">已完成</view>
</view> </view>
<view class="right_div"> <view class="right_div">
@@ -147,7 +147,7 @@
} }
.blod_color { .blod_color {
color: #0066ff; color: #333333;
} }
} }
@@ -223,6 +223,7 @@
flex-wrap: nowrap; flex-wrap: nowrap;
height: 23rpx; height: 23rpx;
overflow: hidden; overflow: hidden;
} }
.people_progress_div { .people_progress_div {
+33 -16
View File
@@ -69,32 +69,38 @@
</view> </view>
<view class="content_div"> <view class="content_div">
<view class="status_div"> <view class="status_div">
<text v-if="item.status==='01'">进行中</text> <text v-if="item.status === '01'">进行中</text>
<text v-if="item.status==='02'">已完成</text> <text v-if="item.status === '02'">已完成</text>
<text v-if="item.status==='03'">未解锁</text> <text v-if="item.status === '03'">未解锁</text>
</view> </view>
<view class="main_body_div"> <view class="main_body_div">
<view class="title"> <view class="title">
{{item.crsName}} {{ item.crsName }}
</view> </view>
<view class="button_div"> <view class="button_div">
<template v-if="item.isFinishStudy==='01' && item.isFinishExam==='01'"> <template v-if="item.isFinishStudy === '01' && item.isFinishExam === '01'">
<image class="img" :src="lockIcon('#999999')"></image> <image class="img" :src="lockIcon('#999999')"></image>
<view class="button_text">暂无通过条件可自动解锁</view> <view class="button_text">暂无通过条件可自动解锁</view>
</template> </template>
<template v-if="item.isFinishStudy!=='01'"> <template v-if="item.isFinishStudy !== '01'">
<image class="img" :src="passTheExamIcon('#0066FF')"></image> <image class="img" :src="passTheExamIcon('#0066FF')"></image>
<view class="button_text">完成练习</view> <view class="button_text">完成练习</view>
</template> </template>
<template v-if="item.isFinishExam!=='01'"> <template v-if="item.isFinishExam !== '01'">
<image class="img" :src="completeTheExercisesIcon('#0066FF')"></image> <image class="img" :src="completeTheExercisesIcon('#0066FF')"></image>
<view class="button_text">通过考试</view> <view class="button_text">通过考试</view>
</template> </template>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<list-no-data v-if="total == 0 && status == 'nomore'"></list-no-data>
<uv-load-more
v-if="status === 'loading'"
:status="status"
loadmore-text="轻轻上拉加载"
:height="30"
></uv-load-more>
</scroll-view> </scroll-view>
</view> </view>
</view> </view>
@@ -102,7 +108,7 @@
<script setup> <script setup>
import { onLoad } from '@dcloudio/uni-app'; import { onLoad } from '@dcloudio/uni-app';
import { reactive, computed, nextTick } from 'vue'; import { ref, reactive, computed, nextTick } from 'vue';
import { queryAllTraTaskCrsInfo } from '@/api/learningTasks.js'; import { queryAllTraTaskCrsInfo } from '@/api/learningTasks.js';
import { passTheExamIcon, completeTheExercisesIcon, lockIcon } from '@/common/imgSvg'; import { passTheExamIcon, completeTheExercisesIcon, lockIcon } from '@/common/imgSvg';
import { insertTraPersonalCollectionTask, deleteTraPersonalCollectionById } from '@/api/favorites.js'; import { insertTraPersonalCollectionTask, deleteTraPersonalCollectionById } from '@/api/favorites.js';
@@ -117,8 +123,14 @@
finishCrs: '', finishCrs: '',
sumCrs: '' sumCrs: ''
}); });
const total = ref(-1);
const status = ref('loading'); // loadmore - loading - nomore -
const data_list = reactive([]); const data_list = reactive([]);
const getData = () => { const getData = () => {
status.value = 'loading';
queryAllTraTaskCrsInfo({ queryAllTraTaskCrsInfo({
taskId: detailData.taskId taskId: detailData.taskId
// taskId: 'TASKINFO02506401613920250820161715000008095' // taskId: 'TASKINFO02506401613920250820161715000008095'
@@ -126,13 +138,18 @@
.then((res) => { .then((res) => {
data_list.push(...res.body); data_list.push(...res.body);
}) })
.finally(() => {}); .finally(() => {
total.value = data_list.length;
if (total.value === 0) {
status.value = 'nomore';
} else {
status.value = 'loadmore';
}
});
}; };
const scrolltolower = () => {}; const scrolltolower = () => {};
const item_click = (item) => { const item_click = (item) => {};
};
const collect_click = async (collectId) => { const collect_click = async (collectId) => {
console.log('学习', collectId); console.log('学习', collectId);
try { try {
@@ -4,7 +4,7 @@
<!-- <view class="item" :class="getStatusClass(index)" v-for="(item, index) in data_list"> <!-- <view class="item" :class="getStatusClass(index)" v-for="(item, index) in data_list">
</view> --> </view> -->
<topic-display v-for="(item, index) in data_list" :item="item" mode="mistake"></topic-display> <subject v-for="(item, index) in data_list" :item="item" mode="mistake"></subject>
<uv-load-more v-if="total != 0" :status="status" loadmore-text="轻轻上拉加载" :height="30"></uv-load-more> <uv-load-more v-if="total != 0" :status="status" loadmore-text="轻轻上拉加载" :height="30"></uv-load-more>
</scroll-view> </scroll-view>
</view> </view>
@@ -18,6 +18,7 @@
import { ref, reactive, onMounted, nextTick } from 'vue'; import { ref, reactive, onMounted, nextTick } from 'vue';
import { queryTraCrsBbsInfoByCrsId } from '@/api/courseDetail.js'; import { queryTraCrsBbsInfoByCrsId } from '@/api/courseDetail.js';
import { queryTraMistakesCollectionPaging } from '@/api/wrongQuestionRecord.js'; import { queryTraMistakesCollectionPaging } from '@/api/wrongQuestionRecord.js';
import Subject from '@/components/examination/subject.vue';
const getData = (from = '') => { const getData = (from = '') => {
if (from == 'first') { if (from == 'first') {
if (total.value !== -1) { if (total.value !== -1) {