Merge branch 'develop' into 'sit'
Develop See merge request K17_AITS/tra-app!106
This commit is contained in:
+12
-6
@@ -6,25 +6,29 @@ ENV = 'development'
|
||||
# VITE_APP_BASE_API_Url = 'http://25.18.122.78:9786'
|
||||
|
||||
# DEV
|
||||
VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7002'
|
||||
VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7001'
|
||||
|
||||
# app入口
|
||||
#VITE_APP_BASE_API_Url = 'http://25.16.122.65:7002'
|
||||
#VITE_APP_BASE_API_Url = 'http://25.16.122.65:7001'
|
||||
#VITE_APP_BASE_API_Url = 'http://25.16.122.91:9786'
|
||||
#VITE_APP_BASE_API_Url = 'http://25.18.122.66:9786'
|
||||
|
||||
# h5专用地址
|
||||
|
||||
VITE_APP_BASE_H5_API_Url = 'https://aitstest.jlbank.com.cn:7002'
|
||||
|
||||
VITE_APP_BASE_H5_API_Url = 'https://aitstest.jlbank.com.cn:7001'
|
||||
#VITE_APP_BASE_H5_API_Url = 'https://aitstest.jlbank.com.cn:7002'
|
||||
# sit
|
||||
#VITE_APP_BASE_H5_API_Url = 'http://25.18.122.91:9786'
|
||||
|
||||
#VITE_APP_BASE_H5_API_Url = 'http://25.18.122.116:7001'
|
||||
|
||||
# sit
|
||||
# VITE_APP_BASE_H5_API_Url = 'http://25.18.122.91:9786'
|
||||
|
||||
# 任东
|
||||
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_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_TRAEXAM = 'http://25.64.16.130:9604'
|
||||
# 张建成
|
||||
# VITE_APP_BASE_H5_API_Url_TRAASK = 'http://25.64.16.144:9605'
|
||||
@@ -35,4 +39,6 @@ VITE_APP_BASE_H5_API_Url_TRASTUDY = 'http://25.64.16.130:9602'
|
||||
# VITE_APP_BASE_H5_API_Url_TRAEXAM = 'http://25.64.16.143:9604'
|
||||
# 孙宇
|
||||
# VITE_APP_BASE_H5_API_Url_TRAEXAM = 'http://25.64.16.139:9604'
|
||||
# 付丙鑫
|
||||
# VITE_APP_BASE_H5_API_Url_TRASTUDY = 'http://25.64.16.145:9602'
|
||||
|
||||
|
||||
+4
-2
@@ -12,10 +12,11 @@ export const uploadFile = (file, data) => {
|
||||
const base_url = get_base_url(url);
|
||||
const token = getToken();
|
||||
const header = {};
|
||||
console.log('file', file);
|
||||
if (token)
|
||||
header['summary'] = token
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.uploadFile({
|
||||
uni.uploadFile({
|
||||
url: `${base_url}${url}`,
|
||||
header: header,
|
||||
filePath: file,
|
||||
@@ -34,6 +35,7 @@ export const uploadFile = (file, data) => {
|
||||
}
|
||||
},
|
||||
fail(error) {
|
||||
console.log('error', error);
|
||||
reject(new Error('Upload failed'));
|
||||
}
|
||||
});
|
||||
@@ -142,7 +144,7 @@ export function downloadVoiceFile(url) {
|
||||
};
|
||||
if (token)
|
||||
header['summary'] = token
|
||||
let baseUrl = get_base_url();
|
||||
let baseUrl = get_base_url(url);
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.downloadFile({
|
||||
url: `${baseUrl}${url}`,
|
||||
|
||||
@@ -22,7 +22,7 @@ export const commitPaperExam = (data) => {
|
||||
});
|
||||
};
|
||||
|
||||
// 试卷考试查分
|
||||
// 考试中心考试查分
|
||||
export const queryPaperExamScore = (data) => {
|
||||
return request({
|
||||
url: base_url + '/traExamPapers/queryPaperExamScore',
|
||||
|
||||
+6
-7
@@ -61,7 +61,6 @@ export const useAccountLoginApp = (data) => request({
|
||||
...userInfo,
|
||||
'mascotInfo': mascotInfo
|
||||
})
|
||||
console.log(mascotInfo);
|
||||
return {
|
||||
mascotState:!mascotInfo.mascotId
|
||||
}
|
||||
@@ -112,21 +111,21 @@ export const queryCurrentUser = (data) => request({
|
||||
// userId: "USER001"
|
||||
// userName: "ADMIN" / todo name
|
||||
// userStatus: "01"
|
||||
const userInfo = getUserInfo()
|
||||
const userInfo = getUserInfo() ?? {}
|
||||
setUserInfo({
|
||||
...userInfo,
|
||||
...res.body
|
||||
})
|
||||
|
||||
console.log('预加载头像');
|
||||
// console.log('预加载头像');
|
||||
const base_url = get_base_url()
|
||||
// 预加载头像
|
||||
// #ifdef APP-PLUS
|
||||
// 更新用户信息中的头像路径
|
||||
const updateUserAvatar = (imagePath) => {
|
||||
|
||||
const _userInfo = getUserInfo() ?? {}
|
||||
setUserInfo({
|
||||
...userInfo,
|
||||
..._userInfo,
|
||||
...res.body,
|
||||
'imagePath': imagePath
|
||||
})
|
||||
}
|
||||
@@ -215,7 +214,7 @@ export const queryCurrentUser = (data) => request({
|
||||
const exists = await checkFileExists(localFilePath)
|
||||
|
||||
if (exists) {
|
||||
console.log('头像已存在,无需下载')
|
||||
// console.log('头像已存在,无需下载')
|
||||
updateUserAvatar(localFilePath)
|
||||
} else {
|
||||
const savedPath = await downloadAndSaveAvatar(fileUrl, localFilePath)
|
||||
|
||||
+5
-5
@@ -42,10 +42,10 @@ export default class WebSocketUtil {
|
||||
header: this.options.header || {},
|
||||
protocols: this.options.protocols || [],
|
||||
success: () => {
|
||||
console.log('WebSocket连接创建成功');
|
||||
// console.log('WebSocket连接创建成功');
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('WebSocket连接创建失败', err);
|
||||
// console.error('WebSocket连接创建失败', err);
|
||||
this.triggerEvent('error', err);
|
||||
this.tryReconnect(); // 连接失败时尝试重连
|
||||
}
|
||||
@@ -53,7 +53,7 @@ export default class WebSocketUtil {
|
||||
|
||||
// 监听WebSocket连接打开事件
|
||||
this.socketTask.onOpen(() => {
|
||||
console.log('WebSocket连接已打开');
|
||||
// console.log('WebSocket连接已打开');
|
||||
this.reconnectCount = 0; // 重置重连计数
|
||||
clearInterval(this.reconnectTimer); // 清除重连计时器
|
||||
// this.startHeartbeat(); // 启动心跳机制
|
||||
@@ -83,7 +83,7 @@ export default class WebSocketUtil {
|
||||
|
||||
// 监听WebSocket连接关闭事件
|
||||
this.socketTask.onClose((res) => {
|
||||
console.log('WebSocket连接已关闭', res);
|
||||
// console.log('WebSocket连接已关闭', res);
|
||||
clearInterval(this.heartbeatTimer); // 清除心跳计时器
|
||||
this.triggerEvent('close', res); // 触发连接关闭事件
|
||||
this.tryReconnect(); // 尝试重连
|
||||
@@ -146,7 +146,7 @@ export default class WebSocketUtil {
|
||||
this.socketTask.send({
|
||||
data: typeof message === 'string' ? message : JSON.stringify(message),
|
||||
success: () => {
|
||||
console.log('WebSocket消息发送成功');
|
||||
// console.log('WebSocket消息发送成功');
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('WebSocket消息发送失败', err);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -36,12 +36,11 @@
|
||||
}
|
||||
});
|
||||
const select_status = computed(() => {
|
||||
// 只要是正确答案 就是绿色
|
||||
if (props.analysisVo.correctFlag === 'R') return 'success';
|
||||
// 是错误答案但是被用户错误选中的为红
|
||||
const my_answer_array = props.my_answer;
|
||||
if(my_answer_array.includes(props.analysisVo.itemId) && props.analysisVo.correctFlag === 'E') return 'error';
|
||||
|
||||
// 是正确答案 被用户错误选中的为绿色
|
||||
if(my_answer_array.includes(props.analysisVo.itemId) && props.analysisVo.correctFlag === 'R') return 'success';
|
||||
// 只有被我选中,不知是正确还是错误的为蓝
|
||||
if(my_answer_array.includes(props.analysisVo.itemId)) return 'primary';
|
||||
// 什么都不是者为灰色
|
||||
|
||||
@@ -99,8 +99,7 @@
|
||||
<view class="reference_answer_title">参考答案:</view>
|
||||
{{ subject_data.itemVos[0]?.itemAnswer ?? '' }}
|
||||
</view>
|
||||
|
||||
<view class="analysis_note">题目解析:{{ subject_data?.analyContent }}</view>
|
||||
<view class="analysis_note">试题解析:{{ subject_data?.analyContent }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -31,9 +31,19 @@
|
||||
<view class="talking-cont">
|
||||
<!-- 加载状态 -->
|
||||
<CommonLoading color="#06f" v-show="dataInfo.isLoading"/>
|
||||
<!-- 参考答案 -->
|
||||
<view class="talking-text" v-if="type === 5 && !dataInfo.isLoading" style="overflow: hidden;">
|
||||
参考答案:{{ dataInfo.itemAnswer }}
|
||||
</view>
|
||||
<!-- 维度信息预览 -->
|
||||
<view v-if="type === 5 && !dataInfo.isLoading" style="padding-top: 16rpx;">
|
||||
<ChartFour v-if="dataInfo.evalDimens.length === 4" :dataList="dataInfo.evalDimens" :score="dataInfo.asrGrade"/>
|
||||
<ChartThree v-if="dataInfo.evalDimens.length === 3" :dataList="dataInfo.evalDimens" :score="dataInfo.asrGrade"/>
|
||||
<ChartFive v-if="dataInfo.evalDimens.length === 5" :dataList="dataInfo.evalDimens" :score="dataInfo.asrGrade"/>
|
||||
</view>
|
||||
<!-- 题干/段落内容 -->
|
||||
<text class="talking-text" v-if="[3, 5, 6, 9].indexOf(type) >= 0 && !dataInfo.isLoading">
|
||||
{{ showContent }}
|
||||
{{type === 5?'试题解析:':''}}{{ showContent }}
|
||||
</text>
|
||||
<text class="talking-text" v-if="[4].indexOf(type) >= 0 && dataInfo.qnsTyp === 'ES'">
|
||||
<!-- 请您思考并作答:<br> -->
|
||||
@@ -53,16 +63,6 @@
|
||||
<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.asrGrade"/>
|
||||
<ChartThree v-if="dataInfo.evalDimens.length === 3" :dataList="dataInfo.evalDimens" :score="dataInfo.asrGrade"/>
|
||||
<ChartFive v-if="dataInfo.evalDimens.length === 5" :dataList="dataInfo.evalDimens" :score="dataInfo.asrGrade"/>
|
||||
</view>
|
||||
<!-- 参考答案 -->
|
||||
<view class="talking-text" v-if="type === 5 && !dataInfo.isLoading" style="overflow: hidden;">
|
||||
参考答案:{{ dataInfo.itemAnswer }}
|
||||
</view>
|
||||
<!-- 举例预览 -->
|
||||
<view class="talking-text" v-if="type === 3 && dataInfo.exampie " style="overflow: hidden;">
|
||||
举例:{{ dataInfo.exampie }}
|
||||
@@ -70,11 +70,11 @@
|
||||
</view>
|
||||
<view class="btns-cont" v-show="!dataInfo.isLoading">
|
||||
<!-- 重新播放 -->
|
||||
<view class="replay-btn" @click.stop="restartPlay" v-if="!([5, 8, 9].indexOf(type) >= 0)">
|
||||
<view class="replay-btn" @click.stop="restartPlay" v-if="!([9].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, 8, 9].indexOf(type) >= 0)">
|
||||
<view class="play-btn" v-if="!([9].indexOf(type) >= 0)">
|
||||
<image
|
||||
class="icon"
|
||||
src="@/static/images/course/play.png"
|
||||
@@ -365,6 +365,7 @@ const audioCacheObj = computed(() => storageStore.audioObj)
|
||||
else if(props.type === 3) return unref(dataInfo)?.chatContent || unref(dataInfo)?.pgrphContent
|
||||
else if(props.type === 4) return unref(dataInfo)?.chatContent || unref(dataInfo)?.qnsContent
|
||||
else if(props.type === 5) return unref(dataInfo)?.chatContent || unref(dataInfo)?.analyContent
|
||||
else if(props.type === 8) return unref(subjectInfo)?.chatContent || unref(subjectInfo)?.qnsContent
|
||||
else if(props.type === 9) return unref(dataInfo)?.chatContent || unref(dataInfo)?.analyContent
|
||||
else if(props.type === 0) return unref(dataInfo)?.chatContent || unref(dataInfo)?.talkingContent
|
||||
else return unref(dataInfo)?.chatContent || unref(dataInfo)?.talkingContent
|
||||
@@ -434,8 +435,18 @@ const audioCacheObj = computed(() => storageStore.audioObj)
|
||||
},100)
|
||||
}else{
|
||||
voiceLoading.value = true
|
||||
let _type = props.type == 2 ? 'ans' : props.type == 3 ? 'pgrh' : props.type == 4 ? 'qns' : ''
|
||||
let _readId = props.type == 2 ? unref(dataInfo)?.intrctId : props.type == 3 ? unref(dataInfo)?.pgrphId : props.type == 4 ? unref(dataInfo)?.qnsId : ''
|
||||
let _type = props.type == 2 ? 'ans'
|
||||
: props.type == 3 ? 'pgrh'
|
||||
: props.type == 4 ? 'qns'
|
||||
: props.type == 5 ? 'analysis'
|
||||
: props.type == 8 ? 'stemAnalysis'
|
||||
: ''
|
||||
let _readId = props.type == 2 ? unref(dataInfo)?.intrctId
|
||||
: props.type == 3 ? unref(dataInfo)?.pgrphId
|
||||
: props.type == 4 ? unref(dataInfo)?.qnsId
|
||||
: props.type == 5 ? unref(dataInfo)?.qnsId
|
||||
: props.type == 8 ? unref(dataInfo)?.qnsId
|
||||
: ''
|
||||
let _params = {
|
||||
crsId: unref(dataInfo)?.crsId || '',
|
||||
pgrphId: unref(dataInfo)?.pgrphId || '',
|
||||
@@ -704,10 +715,10 @@ const audioCacheObj = computed(() => storageStore.audioObj)
|
||||
}
|
||||
.next-learn-btn{
|
||||
float: left;
|
||||
padding: 0 60rpx 0 20rpx;
|
||||
padding: 0 60rpx 0 15rpx;
|
||||
height: 62rpx;
|
||||
line-height: 62rpx;
|
||||
font-size: 30rpx;
|
||||
font-size: 28rpx;
|
||||
background-color: #06f;
|
||||
color: #fff;
|
||||
border-radius: 8rpx;
|
||||
@@ -716,6 +727,7 @@ const audioCacheObj = computed(() => storageStore.audioObj)
|
||||
position: relative;
|
||||
&.replay-study-btn{
|
||||
float: right;
|
||||
margin-right: 0;
|
||||
}
|
||||
&.restart{
|
||||
background-color: #eaf2ff;
|
||||
|
||||
@@ -514,12 +514,13 @@ import { onShow } from "@dcloudio/uni-app"
|
||||
}
|
||||
.model-filter-list{
|
||||
position: fixed;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
width: calc(100vw - 33rpx);
|
||||
height: 80vh;
|
||||
overflow: hidden;
|
||||
top: 0;
|
||||
left: 0;
|
||||
top: 500rpx;
|
||||
left: 17rpx;
|
||||
z-index: 1;
|
||||
background-color: rgba(0,0,0,.2);
|
||||
}
|
||||
.filter-list,
|
||||
.model-filter-list{
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
<image class="img" src="@/static/images/courseDetail/empty_message.png" mode="widthFix"></image>
|
||||
<view class="text">这里什么都没有</view>
|
||||
</view>
|
||||
<uv-load-more v-if="total != 0" :status="status" loadmore-text="轻轻上拉加载"></uv-load-more>
|
||||
<uv-load-more v-if="total !== 0" :status="status" loadmore-text="轻轻上拉加载"></uv-load-more>
|
||||
<uni-popup ref="popup" class="popup">
|
||||
<view class="bottom_reply_input_div" :style="{ marginBottom: popup_input_bottom }">
|
||||
<uv-input
|
||||
|
||||
@@ -97,9 +97,7 @@
|
||||
};
|
||||
// 跳转到详情
|
||||
const click_list_item = (list_item) => {
|
||||
console.log('list_item', list_item);
|
||||
const papersName = item.value.examName;
|
||||
|
||||
common.navigateTo(
|
||||
`/pages/examination/result?execId=${list_item.execId}&papersName=${papersName}&mode=record`
|
||||
);
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<view class="scroll_div">
|
||||
<scroll-view scroll-y="true" class="scroll-Y" @scrolltolower="scrolltolower" :show-scrollbar="false">
|
||||
<itemVue :item="item" v-for="(item, index) in data_list"></itemVue>
|
||||
<list-no-data v-if="total == 0 && status == 'nomore'"></list-no-data>
|
||||
<uv-load-more v-if="total != 0" :status="status" loadmore-text="轻轻上拉加载" :height="30"></uv-load-more>
|
||||
<list-no-data v-if="total === 0 && status == 'nomore'">暂无记录</list-no-data>
|
||||
<uv-load-more v-if="total !== 0" :status="status" loadmore-text="轻轻上拉加载" :height="30"></uv-load-more>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<view class="scroll_div">
|
||||
<scroll-view scroll-y="true" class="scroll-Y" @scrolltolower="scrolltolower" :show-scrollbar="false">
|
||||
<itemVue :item="item" v-for="(item, index) in data_list"></itemVue>
|
||||
<list-no-data v-if="total == 0 && status == 'nomore'"></list-no-data>
|
||||
<uv-load-more v-if="total != 0" :status="status" loadmore-text="轻轻上拉加载" :height="30"></uv-load-more>
|
||||
<list-no-data v-if="total === 0 && status == 'nomore'">暂无记录</list-no-data>
|
||||
<uv-load-more v-if="total !== 0" :status="status" loadmore-text="轻轻上拉加载" :height="30"></uv-load-more>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<view class="scroll_div">
|
||||
<scroll-view scroll-y="true" class="scroll-Y" @scrolltolower="scrolltolower" :show-scrollbar="false">
|
||||
<itemVue :item="item" v-for="(item, index) in data_list" ></itemVue>
|
||||
<list-no-data v-if="total == 0 && status == 'nomore'"></list-no-data>
|
||||
<uv-load-more v-if="total != 0" :status="status" loadmore-text="轻轻上拉加载" :height="30"></uv-load-more>
|
||||
<list-no-data v-if="total === 0 && status == 'nomore'">暂无记录</list-no-data>
|
||||
<uv-load-more v-if="total !== 0" :status="status" loadmore-text="轻轻上拉加载" :height="30"></uv-load-more>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
</view>
|
||||
<view class="score-column">{{item.examGrade}}</view>
|
||||
</view>
|
||||
<list-no-data v-if="userList.length == 0">暂无数据</list-no-data>
|
||||
</scroll-view>
|
||||
</view>
|
||||
<view class="ranking-self">
|
||||
|
||||
@@ -268,7 +268,7 @@
|
||||
|
||||
// 录音按钮提交
|
||||
const touchBtnSubmit = (type, submitObj) => {
|
||||
const old_text = touchBtnRef.value?.clearinputText(); // 清除发送框数据
|
||||
// const old_text = touchBtnRef.value?.clearinputText(); // 清除发送框数据
|
||||
if (type === 'voice') {
|
||||
topic.value.es_status = '00'; // 00转圈
|
||||
const voicePath = submitObj;
|
||||
@@ -276,19 +276,26 @@
|
||||
.then((res) => {
|
||||
let _res = JSON.parse(res.data);
|
||||
if (_res.rtnCode === '0000') {
|
||||
topic.value.es_status = '02';
|
||||
topic.value.my_answer = {
|
||||
anserResult: _res.body.transContent,
|
||||
ossKey: _res.body.fileId,
|
||||
ossAddr: _res.body.ossFileAddr,
|
||||
voicePath: voicePath
|
||||
};
|
||||
const _content = _res.body.transContent.trim();
|
||||
console.log('_content', _content);
|
||||
if (_content === '') {
|
||||
topic.value.es_status = ''; // 取消转圈
|
||||
return common.msg('未识别到文字');
|
||||
} else {
|
||||
topic.value.es_status = '02';
|
||||
topic.value.my_answer = {
|
||||
anserResult: _res.body.transContent,
|
||||
ossKey: _res.body.fileId,
|
||||
ossAddr: _res.body.ossFileAddr,
|
||||
voicePath: voicePath
|
||||
};
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
topic.value.es_status = ''; // 取消转圈
|
||||
// 失败了再把发送框数据还原回去
|
||||
touchBtnRef.value?.clearinputText(old_text); // 清除发送框数据
|
||||
// touchBtnRef.value?.clearinputText(old_text); // 清除发送框数据
|
||||
common.msg('系统异常,请联系管理员');
|
||||
});
|
||||
} else if (type === 'text') {
|
||||
@@ -466,7 +473,7 @@
|
||||
}
|
||||
func.then((res) => {
|
||||
// 判断是否需要查分
|
||||
const flagQueryDetail = res.body.flagQueryDetail===''?res.body.flagQuery:res.body.flagQueryDetail
|
||||
const flagQueryDetail = res.body.flagQueryDetail === '' ? res.body.flagQuery : res.body.flagQueryDetail;
|
||||
common.redirectTo(
|
||||
`/pages/examination/result?execId=${res.body.execId}&flagQuery=${res.body.flagQuery}&flagQueryDetail=${flagQueryDetail}&examLenTm=${examLenTm}&papersName=${paperData.papersName}&papersId=${paperData.papersId}&mode=${mode}&crsId=${paperData.crsId}`
|
||||
);
|
||||
|
||||
@@ -123,7 +123,8 @@
|
||||
|
||||
import { onLoad, onUnload } from '@dcloudio/uni-app';
|
||||
import { ref, reactive, computed, onMounted, nextTick, getCurrentInstance } from 'vue';
|
||||
import { queryPaperExamScore } from '@/api/examination.js';
|
||||
import { queryPaperExamScore, queryCrsExamScore } from '@/api/examination.js';
|
||||
|
||||
import Subject from '@/components/examination/subject.vue';
|
||||
import common from '@/common/common';
|
||||
const pass_status = ref(0);
|
||||
@@ -208,7 +209,7 @@
|
||||
|
||||
const scroll = (event) => {};
|
||||
|
||||
// 跳转到去考试页面
|
||||
// 考试排行榜
|
||||
const goExamRanking = () => {
|
||||
// 首先判断是课程跳入还是考试中心跳入
|
||||
if (result.crsId !== '') {
|
||||
@@ -243,11 +244,17 @@
|
||||
console.log('已达到最大请求次数(15次),停止请求');
|
||||
return;
|
||||
}
|
||||
|
||||
let req
|
||||
if (result.crsId !== '') { // 试卷跳入
|
||||
req = queryCrsExamScore
|
||||
} else {
|
||||
req = queryPaperExamScore
|
||||
}
|
||||
|
||||
timerId.value = setTimeout(() => {
|
||||
// 每次请求前计数器+1
|
||||
requestCount.value++;
|
||||
queryPaperExamScore({
|
||||
req({
|
||||
execId: result.execId
|
||||
})
|
||||
.then(({ body }) => {
|
||||
@@ -289,7 +296,6 @@
|
||||
result.papersName = e.papersName;
|
||||
result.examLenTm = e.examLenTm;
|
||||
result.mode = e.mode || '';
|
||||
|
||||
result.papersId = e.papersId;
|
||||
flagQueryDetail.value = e.flagQueryDetail;
|
||||
flagQuery.value = e.flagQuery;
|
||||
@@ -305,7 +311,6 @@
|
||||
}
|
||||
});
|
||||
const formatSecondsToText = (milliseconds) => {
|
||||
console.log('milliseconds', milliseconds);
|
||||
if (milliseconds === undefined) return '--';
|
||||
// 尝试将输入转换为数字(处理字符串形式的数字)
|
||||
const num = Number(milliseconds);
|
||||
|
||||
@@ -57,8 +57,7 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { computed, ref, reactive, nextTick } from 'vue';
|
||||
import { setPageCache } from '@/common/common';
|
||||
import { computed, ref, reactive } from 'vue';
|
||||
import common from '@/common/common';
|
||||
const status = ref('loadmore'); // loadmore - 加载前,loading - 加载中,nomore - 没有数据
|
||||
const props = defineProps({
|
||||
@@ -99,10 +98,9 @@
|
||||
};
|
||||
// 跳转到详情
|
||||
const click_list_item = (list_item) => {
|
||||
const examLenTm = 666;
|
||||
const papersName = item.value.examName;
|
||||
common.navigateTo(
|
||||
`/pages/examination/result?execId=${list_item.execId}&examLenTm=${examLenTm}&papersName=${papersName}&mode=record`
|
||||
`/pages/examination/result?execId=${list_item.execId}&papersName=${papersName}&mode=record&flagQuery=Y&flagQueryDetail=Y`
|
||||
);
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<view class="scroll_div">
|
||||
<scroll-view scroll-y="true" class="scroll-Y" @scrolltolower="scrolltolower" :show-scrollbar="false">
|
||||
<itemVue :item="item" v-for="(item, index) in data_list"></itemVue>
|
||||
<list-no-data v-if="total == 0 && status == 'nomore'"></list-no-data>
|
||||
<uv-load-more v-if="total != 0" :status="status" loadmore-text="轻轻上拉加载" :height="30"></uv-load-more>
|
||||
<list-no-data v-if="total === 0 && status == 'nomore'">暂无记录</list-no-data>
|
||||
<uv-load-more v-if="total !== 0" :status="status" loadmore-text="轻轻上拉加载" :height="30"></uv-load-more>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
</view>
|
||||
</uv-swipe-action-item>
|
||||
</uv-swipe-action>
|
||||
<list-no-data v-if="total == 0 && status == 'nomore'">暂无数据</list-no-data>
|
||||
<list-no-data v-if="total === 0 && status == 'nomore'">暂无数据</list-no-data>
|
||||
<uv-load-more v-if="total !== 0" :status="status" loadmore-text="轻轻上拉加载" :height="30"></uv-load-more>
|
||||
</scroll-view>
|
||||
</view>
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
</view>
|
||||
</uv-swipe-action-item>
|
||||
</uv-swipe-action>
|
||||
<list-no-data v-if="total == 0 && status == 'nomore'">暂无数据</list-no-data>
|
||||
<list-no-data v-if="total === 0 && status == 'nomore'">暂无数据</list-no-data>
|
||||
<uv-load-more v-if="total !== 0" :status="status" loadmore-text="轻轻上拉加载" :height="30"></uv-load-more>
|
||||
</scroll-view>
|
||||
</view>
|
||||
|
||||
@@ -438,6 +438,7 @@
|
||||
return;
|
||||
}
|
||||
const userInfo = getUserInfo();
|
||||
console.log('首页userInfo', userInfo);
|
||||
if (userInfo) {
|
||||
mascotInfo.value = userInfo?.mascotInfo;
|
||||
}
|
||||
|
||||
@@ -45,9 +45,15 @@
|
||||
};
|
||||
// 跳转到详情
|
||||
const click_item = (item) => {
|
||||
if(item.isTimeOut === '00') {
|
||||
common.msg('任务已结束')
|
||||
return ;
|
||||
if(item.limitTyp === '02') {
|
||||
const startTm = new Date(item.startTm).getTime();
|
||||
const endTm = new Date(item.endTm).getTime();
|
||||
const currentTimestamp = Date.now();
|
||||
if(currentTimestamp < startTm) {
|
||||
return common.msg('任务未开始');
|
||||
} else if(currentTimestamp > endTm) {
|
||||
return common.msg('任务已结束');
|
||||
}
|
||||
}
|
||||
setPageCache('learning_tasks_details', item);
|
||||
common.navigateTo('/pages/learningTasks/details');
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<view class="scroll_div">
|
||||
<scroll-view scroll-y="true" class="scroll-Y" @scrolltolower="scrolltolower" :show-scrollbar="false">
|
||||
<itemVue :item="item" v-for="(item, index) in data_list"></itemVue>
|
||||
<list-no-data v-if="total == 0 && status == 'nomore'"></list-no-data>
|
||||
<uv-load-more v-if="total != 0" :status="status" loadmore-text="轻轻上拉加载" :height="30"></uv-load-more>
|
||||
<list-no-data v-if="total === 0 && status == 'nomore'">暂无学习任务</list-no-data>
|
||||
<uv-load-more v-if="total !== 0" :status="status" loadmore-text="轻轻上拉加载" :height="30"></uv-load-more>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</template>
|
||||
@@ -23,7 +23,7 @@
|
||||
required: true
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
const getData = (from = '', searchText = '') => {
|
||||
if (from == 'first') {
|
||||
if (total.value !== -1) {
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<list-no-data v-if="total == 0 && status == 'nomore'"></list-no-data>
|
||||
<list-no-data v-if="total === 0 && status === 'nomore'">暂无数据</list-no-data>
|
||||
<uv-load-more
|
||||
v-if="status === 'loading'"
|
||||
:status="status"
|
||||
|
||||
+17
-17
@@ -55,24 +55,14 @@
|
||||
<view class="item">
|
||||
<view class="top">我的积分</view>
|
||||
<view class="bottom">
|
||||
<uv-count-to
|
||||
:startVal="0"
|
||||
:endVal="0"
|
||||
:useEasing="true"
|
||||
ref="accmTaskCntRef"
|
||||
></uv-count-to>
|
||||
<uv-count-to :startVal="0" :endVal="0" :useEasing="true" ref="accmTaskCntRef"></uv-count-to>
|
||||
</view>
|
||||
</view>
|
||||
<view class="item-interval"></view>
|
||||
<view class="item">
|
||||
<view class="top">徽章墙</view>
|
||||
<view class="bottom">
|
||||
<uv-count-to
|
||||
:startVal="0"
|
||||
:endVal="0"
|
||||
:useEasing="true"
|
||||
ref="accmTaskCntRef"
|
||||
></uv-count-to>
|
||||
<uv-count-to :startVal="0" :endVal="0" :useEasing="true" ref="accmTaskCntRef"></uv-count-to>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -243,13 +233,22 @@
|
||||
const avatarCropperStatus = ref(true);
|
||||
const avatarCropperUrl = ref('');
|
||||
// 点击修改头像
|
||||
const click_update_avatar = (value) => {
|
||||
const click_update_avatar = () => {
|
||||
uni.chooseImage({
|
||||
count: 1,
|
||||
sizeType: ['compressed'],
|
||||
success: (res) => {
|
||||
avatarCropperUrl.value = res.tempFilePaths[0];
|
||||
avatarCropperStatus.value = true;
|
||||
success: (resPicture) => {
|
||||
uni.getFileInfo({
|
||||
filePath: resPicture.tempFilePaths[0],
|
||||
success: function (resSize) {
|
||||
if (resSize.size > 10 * 1024 * 1024) return common.msg('图片过大,请重新选择');
|
||||
avatarCropperUrl.value = resPicture.tempFilePaths[0];
|
||||
avatarCropperStatus.value = true;
|
||||
},
|
||||
fail: function (err) {
|
||||
common.msg('获取图片失败,请选择其他图片');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
@@ -280,7 +279,8 @@
|
||||
common.msg('修改成功');
|
||||
user_info.imageAddr = userData.imageAddr;
|
||||
user_info.imagePath = '';
|
||||
} catch {
|
||||
} catch (e) {
|
||||
console.log('sss', e);
|
||||
common.msg('修改失败');
|
||||
}
|
||||
common.hideLoading();
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<list-no-data v-if="total == 0 && status == 'nomore'">暂无数据</list-no-data>
|
||||
<list-no-data v-if="total === 0 && status == 'nomore'">暂无数据</list-no-data>
|
||||
<uv-load-more v-if="total !== 0" :status="status" loadmore-text="轻轻上拉加载" :height="30"></uv-load-more>
|
||||
</scroll-view>
|
||||
<uni-popup ref="popup" type="bottom">
|
||||
|
||||
@@ -26,22 +26,22 @@
|
||||
"
|
||||
></view>
|
||||
|
||||
<view class="item" v-for="(item, index) in data_list" @click="read">
|
||||
<view class="item" v-for="item in data_list" @click="read">
|
||||
<view class="icon">
|
||||
<image
|
||||
v-if="item.noticeTyp == '01'"
|
||||
v-if="item.noticeTyp === '01'"
|
||||
class="img_100"
|
||||
src="@/static/images/messageNotification/type_01.png"
|
||||
mode="widthFix"
|
||||
></image>
|
||||
<image
|
||||
v-if="item.noticeTyp == '02'"
|
||||
v-if="item.noticeTyp === '02'"
|
||||
class="img_100"
|
||||
src="@/static/images/messageNotification/type_02.png"
|
||||
mode="widthFix"
|
||||
></image>
|
||||
<image
|
||||
v-if="item.noticeTyp == '03'"
|
||||
v-if="item.noticeTyp === '03'"
|
||||
class="img_100"
|
||||
src="@/static/images/messageNotification/type_03.png"
|
||||
mode="widthFix"
|
||||
@@ -65,7 +65,7 @@
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<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>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<view class="time_and_num"></view>
|
||||
</view>
|
||||
</view>
|
||||
<list-no-data v-if="total == 0 && status == 'nomore'">暂无数据</list-no-data>
|
||||
<list-no-data v-if="total === 0 && status == 'nomore'">暂无数据</list-no-data>
|
||||
<uv-load-more v-if="total !== 0" :status="status" loadmore-text="轻轻上拉加载" :height="30"></uv-load-more>
|
||||
</scroll-view>
|
||||
</view>
|
||||
|
||||
@@ -21,14 +21,15 @@
|
||||
{{ hasMore ? '滚动加载更多' : '加载完成' }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="view-result" v-show="courseList.length === 0">暂无数据</view>
|
||||
<!-- <view class="view-result" v-show="courseList.length === 0">暂无数据</view> -->
|
||||
<list-no-data v-show="courseList.length == 0">暂无数据</list-no-data>
|
||||
</scroll-view>
|
||||
</view>
|
||||
<view class="search_content" v-else>
|
||||
<view class="tabs-view">
|
||||
<uv-tabs :list="tabList" @click="changeTab" :scrollable="false" active-style="font-weight:bold; color:#000;" line-color="#06f"></uv-tabs>
|
||||
</view>
|
||||
<scroll-view class="lists-view" :scroll-y="true">
|
||||
<scroll-view class="lists-view" :scroll-y="true" @scrolltolower="scrolltolower">
|
||||
<view class="ability-view model-view" v-show="showModelList('ability')">
|
||||
<view class="view-title">
|
||||
<image src="@/static/images/search/result/ability.png" class="view-title-img"></image>
|
||||
@@ -58,6 +59,9 @@
|
||||
<view class="view-list course-list">
|
||||
<course-item class="course-item" v-for="itemC in courseList" :key="itemC.crsNum" :itemInfo="itemC" @clickItem="toCourseDetail(itemC)" />
|
||||
</view>
|
||||
<view class="view-tips" v-if="activeTab === 'course'">
|
||||
{{ hasMore ? '滚动加载更多' : '加载完成' }}
|
||||
</view>
|
||||
<view class="view-result" v-show="courseList.length === 0">暂无数据</view>
|
||||
</view>
|
||||
<view class="task-view model-view" v-show="showModelList('task')">
|
||||
@@ -68,6 +72,9 @@
|
||||
<view class="view-list">
|
||||
<TaskItem :item="item" v-for="(item, index) in taskList"></TaskItem>
|
||||
</view>
|
||||
<view class="view-tips" v-if="activeTab === 'task'">
|
||||
{{ hasMore ? '滚动加载更多' : '加载完成' }}
|
||||
</view>
|
||||
<view class="view-result" v-show="taskList.length === 0">暂无数据</view>
|
||||
</view>
|
||||
<view class="test-view model-view" v-show="showModelList('test')">
|
||||
@@ -86,6 +93,9 @@
|
||||
<view class="view-list">
|
||||
<ExamItem class="exam-list" :item="item" v-for="item in examList"></ExamItem>
|
||||
</view>
|
||||
<view class="view-tips" v-if="activeTab === 'exam'">
|
||||
{{ hasMore ? '滚动加载更多' : '加载完成' }}
|
||||
</view>
|
||||
<view class="view-result" v-show="examList.length === 0">暂无数据</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
@@ -150,7 +160,7 @@ const tabList = ref([
|
||||
])
|
||||
const abilityListShow = computed(() => {
|
||||
if (searchValue.value) {
|
||||
let _arr = abilityList.value.filter(t => t.title.includes(searchValue.value))
|
||||
let _arr = abilityList.value.filter(t => t.title.includes(searchValue.value.toUpperCase()))
|
||||
let _sum = 4 - (_arr.length % 4)
|
||||
if (_sum !== 4) {
|
||||
for (let i = 0; i < _sum; i++) {
|
||||
@@ -219,22 +229,29 @@ const changeTab = item => {
|
||||
if (!item) return
|
||||
activeTab.value = item.type
|
||||
console.log(item)
|
||||
switch (item.name) {
|
||||
switch (item.type) {
|
||||
case 'all':
|
||||
pageInfo.value.limit = 3
|
||||
break
|
||||
case 'ability':
|
||||
break
|
||||
case 'course':
|
||||
pageInfo.value.limit = 15
|
||||
break
|
||||
case 'task':
|
||||
pageInfo.value.limit = 15
|
||||
break
|
||||
case 'test':
|
||||
pageInfo.value.limit = 15
|
||||
break
|
||||
case 'exam':
|
||||
pageInfo.value.limit = 15
|
||||
break
|
||||
default:
|
||||
pageInfo.value.limit = 3
|
||||
break
|
||||
}
|
||||
getData(1)
|
||||
}
|
||||
const clickAbility = item => {
|
||||
if (item.isTab) {
|
||||
@@ -262,23 +279,55 @@ const search = () => {
|
||||
|
||||
getData(1)
|
||||
}
|
||||
const getMore = () => {
|
||||
if(activeTab.value && activeTab.value !== 'all'){
|
||||
getData()
|
||||
}
|
||||
}
|
||||
const getData = (flag = null) => {
|
||||
if (flag) {
|
||||
pageInfo.value.page = 1
|
||||
courseList.value = []
|
||||
examList.value = []
|
||||
taskList.value = []
|
||||
}
|
||||
let _isCourse = fromType.value === 'course' || activeTab.value==='course'
|
||||
appSearchCrsApi({
|
||||
type: fromType.value === 'course' ? '01' : '00', //00 首页搜索 01课程搜索
|
||||
type: _isCourse ? '01'
|
||||
: activeTab.value==='exam' ? '02'
|
||||
: activeTab.value==='task' ? '03'
|
||||
: '00', //00 首页搜索 01课程搜索 '02' 考试搜索 '03' 任务搜索
|
||||
searchName: searchValue.value,
|
||||
page: pageInfo.value.page,
|
||||
limit: pageInfo.value.limit
|
||||
}).then(res => {
|
||||
pageInfo.value.total = res.total || 0
|
||||
courseList.value = courseList.value.concat(res.body.traCrsInfoVoList || [])
|
||||
if (fromType.value !== 'course') {
|
||||
examList.value = res.body.traExamPapersExtVoList || []
|
||||
taskList.value = res.body.traTaskInfoExtVoList || []
|
||||
examList.value = examList.value.concat(res.body.traExamPapersExtVoList || [])
|
||||
taskList.value = taskList.value.concat(res.body.traTaskInfoExtVoList || [])
|
||||
}
|
||||
pageInfo.value.total = res.total || 0
|
||||
// switch (activeTab.value) {
|
||||
// case 'all':
|
||||
// break
|
||||
// case 'ability':
|
||||
// break
|
||||
// case 'course':
|
||||
// pageInfo.value.total = res.total || 0
|
||||
// break
|
||||
// case 'task':
|
||||
// pageInfo.value.total = res.total || 0
|
||||
// break
|
||||
// case 'test':
|
||||
// pageInfo.value.total = res.total || 0
|
||||
// break
|
||||
// case 'exam':
|
||||
// pageInfo.value.total = res.total || 0
|
||||
// break
|
||||
// default:
|
||||
// pageInfo.value.total = res.total || 0
|
||||
// break
|
||||
// }
|
||||
})
|
||||
}
|
||||
const hasMore = computed(() => {
|
||||
@@ -319,6 +368,7 @@ const toCourseDetail = item => {
|
||||
height: 100rpx;
|
||||
line-height: 100rpx;
|
||||
color: #999;
|
||||
font-size: 26rpx;
|
||||
}
|
||||
.view-tips {
|
||||
width: 100%;
|
||||
|
||||
@@ -153,14 +153,23 @@
|
||||
}
|
||||
})
|
||||
// 点击修改头像
|
||||
const click_update_avatar = (value) => {
|
||||
const click_update_avatar = () => {
|
||||
uni.chooseImage({
|
||||
count: 1,
|
||||
sizeType: ["compressed"],
|
||||
success: (res) => {
|
||||
avatarCropperUrl.value = res.tempFilePaths[0];
|
||||
avatarCropperStatus.value = true
|
||||
},
|
||||
sizeType: ['compressed'],
|
||||
success: (resPicture) => {
|
||||
uni.getFileInfo({
|
||||
filePath: resPicture.tempFilePaths[0],
|
||||
success: function (resSize) {
|
||||
if (resSize.size > 10 * 1024 * 1024) return common.msg('图片过大,请重新选择');
|
||||
avatarCropperUrl.value = resPicture.tempFilePaths[0];
|
||||
avatarCropperStatus.value = true;
|
||||
},
|
||||
fail: function (err) {
|
||||
common.msg('获取图片失败,请选择其他图片');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
// 选择头像取消
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<!-- 主体 -->
|
||||
<view class="content">
|
||||
<itemVue :item="item" v-for="item in data_list"></itemVue>
|
||||
<list-no-data v-if="total == 0 && status == 'nomore'">暂无数据</list-no-data>
|
||||
<list-no-data v-if="total === 0 && status == 'nomore'">暂无考试任务</list-no-data>
|
||||
<uv-load-more v-if="total !== 0" :status="status" loadmore-text="轻轻上拉加载" :height="30"></uv-load-more>
|
||||
</view>
|
||||
</scroll-view>
|
||||
@@ -77,7 +77,6 @@
|
||||
getData();
|
||||
};
|
||||
const search = (value) => {
|
||||
console.log('searchvalue', value);
|
||||
total.value = -1;
|
||||
getData('first', value);
|
||||
};
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
<view class="content" v-for="(item, index) in data_list">
|
||||
<subject :item="item" mode="mistake" :isPreview="true" :clearResult="false"></subject>
|
||||
</view>
|
||||
<list-no-data v-if="total == 0 && status == 'nomore'"></list-no-data>
|
||||
<uv-load-more v-if="total != 0" :status="status" loadmore-text="轻轻上拉加载" :height="30"></uv-load-more>
|
||||
<list-no-data v-if="total === 0 && status == 'nomore'">暂无错题</list-no-data>
|
||||
<uv-load-more v-if="total !== 0" :status="status" loadmore-text="轻轻上拉加载" :height="30"></uv-load-more>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
<view class="content" v-for="(item, index) in data_list">
|
||||
<subject :item="item" mode="mistake" :isPreview="true" :clearResult="false"></subject>
|
||||
</view>
|
||||
<list-no-data v-if="total == 0 && status == 'nomore'"></list-no-data>
|
||||
<uv-load-more v-if="total != 0" :status="status" loadmore-text="轻轻上拉加载" :height="30"></uv-load-more>
|
||||
<list-no-data v-if="total === 0 && status == 'nomore'">暂无错题</list-no-data>
|
||||
<uv-load-more v-if="total !== 0" :status="status" loadmore-text="轻轻上拉加载" :height="30"></uv-load-more>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
Reference in New Issue
Block a user