修改提出的bug
@@ -11,7 +11,7 @@ VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7001'
|
|||||||
# http://25.18.122.65:7001/download/dev-jax.apk
|
# http://25.18.122.65:7001/download/dev-jax.apk
|
||||||
# app入口
|
# app入口
|
||||||
#VITE_APP_BASE_API_Url = 'http://25.16.122.65:7001'
|
#VITE_APP_BASE_API_Url = 'http://25.16.122.65:7001'
|
||||||
#VITE_APP_BASE_API_Url = 'http://25.18.122.91:9786'
|
#VITE_APP_BASE_API_Url = 'http://25.16.122.91:9786'
|
||||||
#VITE_APP_BASE_API_Url = 'http://25.18.122.66:9786'
|
#VITE_APP_BASE_API_Url = 'http://25.18.122.66:9786'
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<image :src="imgUrlShow" fit="cover"></image>
|
<image :src="imgUrlShow" fit="cover" :mode="mode"></image>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -30,7 +30,11 @@
|
|||||||
isCache:{
|
isCache:{
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
}
|
},
|
||||||
|
mode:{
|
||||||
|
type: String,
|
||||||
|
default: 'widthFix'
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="components_custom_file_upload_div pic-cell">
|
<view class="components_custom_file_upload_div pic-cell">
|
||||||
<view v-for="(item,index) in fileList" class="img_div pic-item">
|
<view v-for="(item,index) in fileList" class="img_div pic-item" @click="pic_click(item, index)">
|
||||||
<image-preview :imgId="item.fileId" class="img"></image-preview>
|
<image-preview :imgId="item.fileId" class="img" mode="aspectFill"></image-preview>
|
||||||
</view>
|
</view>
|
||||||
<view @tap="upload" v-show="show_upload_button">
|
<view @tap="upload" v-show="show_upload_button">
|
||||||
<view class=" add_icon"></view>
|
<view class=" add_icon"></view>
|
||||||
@@ -25,6 +25,14 @@
|
|||||||
const show_upload_button = computed(() => {
|
const show_upload_button = computed(() => {
|
||||||
return !props.readonly && props.limit > fileList.length
|
return !props.readonly && props.limit > fileList.length
|
||||||
})
|
})
|
||||||
|
const pic_click = (item, index) => {
|
||||||
|
common.show('提示', '是否删除图片' + (index + 1)).then(res => {
|
||||||
|
if (res) {
|
||||||
|
fileList.splice(index, 1)
|
||||||
|
emits('update:modelValue', fileList.map(res => res.fileId))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
// 定义props
|
// 定义props
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
modelValue: {
|
modelValue: {
|
||||||
@@ -56,19 +64,13 @@
|
|||||||
fileId: res
|
fileId: res
|
||||||
})))
|
})))
|
||||||
}
|
}
|
||||||
// else if ((typeof newVal === "String") && newVal !== '') {
|
|
||||||
// fileList.push({
|
|
||||||
// fileId: newVal
|
|
||||||
// })
|
|
||||||
// }
|
|
||||||
}, {
|
}, {
|
||||||
deep: true,
|
deep: true,
|
||||||
immediate: true
|
immediate: true
|
||||||
})
|
})
|
||||||
// 定义emits
|
// 定义emits
|
||||||
const emits = defineEmits(['update:modelValue'])
|
const emits = defineEmits(['update:modelValue'])
|
||||||
|
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { toRefs, ref, computed, unref, onMounted, onUnmounted, defineEmits, nextTick } from 'vue';
|
import { toRefs, ref, computed, unref, onMounted, onUnmounted, nextTick } from 'vue';
|
||||||
const emit = defineEmits(['uploadVoice', 'submitAnswer','startRecord'])
|
const emit = defineEmits(['uploadVoice', 'submitAnswer','startRecord'])
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
answerType:{
|
answerType:{
|
||||||
|
|||||||
@@ -1,88 +1,84 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="comment_div">
|
<view class="comment_div">
|
||||||
<scroll-view class="scroll-view" :scroll-y="true" :show-scrollbar="false">
|
<view class="empty_message_div" v-if="message_list.length == 0">
|
||||||
|
<image class="img" src="@/static/images/courseDetail/empty_message.png"></image>
|
||||||
<view class="message_div" v-for="(item,index) in message_list">
|
</view>
|
||||||
<view class="head_div">
|
<!-- message_list -->
|
||||||
<image-preview v-if="item.userIconImgId" class="img-box img"
|
<view class="message_div" v-for="(item,index) in message_list">
|
||||||
:src="item.userIconImgId"></image-preview>
|
<view class="head_div">
|
||||||
<image v-else src="/static/images/me/default_user_avatar.png" class="img"></image>
|
<image-preview v-if="item.userIconImgId" class="img-box img" :src="item.userIconImgId"></image-preview>
|
||||||
|
<image v-else src="/static/images/me/default_user_avatar.png" class="img"></image>
|
||||||
|
</view>
|
||||||
|
<view class="msg_content">
|
||||||
|
<view class="title_div">
|
||||||
|
<view class="name">{{item.userName}}</view>
|
||||||
|
<view class="title_tip">{{item.bbsTagDesc}}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="msg_content">
|
<view class="title">
|
||||||
<view class="title_div">
|
{{item.bbsContent}}
|
||||||
<view class="name">{{item.userName}}</view>
|
</view>
|
||||||
<view class="title_tip">{{item.bbsTagDesc}}</view>
|
<view class="img_div pic-cell">
|
||||||
</view>
|
<image-preview v-for="img in item.imgIdList" :imgId="img" class="pic-item"></image-preview>
|
||||||
<view class="title">
|
</view>
|
||||||
{{item.bbsContent}}
|
<view class="time_and_reply">
|
||||||
</view>
|
<view class="time">{{item.bbsTm.substr(0,16)}}</view>
|
||||||
<view class="img_div pic-cell">
|
<view class="reply" @click="click_reply(item, item.bbsId, index)">回复</view>
|
||||||
<image-preview v-for="img in item.imgIdList" :imgId="img" class="pic-item"></image-preview>
|
</view>
|
||||||
</view>
|
<view class="show_close_div" v-if="item.children?.length" @click="item.show = !item.show">
|
||||||
<view class="time_and_reply">
|
<template v-if="item.show">
|
||||||
<view class="time">{{item.bbsTm.substr(0,16)}}</view>
|
<view>收起</view>
|
||||||
<view class="reply" @click="click_reply(item, item.bbsId, index)">回复</view>
|
<view class="back_div">
|
||||||
</view>
|
<view class="back-icon"></view>
|
||||||
<view class="show_close_div" v-if="item.children?.length" @click="item.show = !item.show">
|
</view>
|
||||||
<template v-if="item.show">
|
</template>
|
||||||
<view>收起</view>
|
<template v-else>
|
||||||
<view class="back_div">
|
<view>展开{{item.children?.length}}条回复</view>
|
||||||
<view class="back-icon"></view>
|
<view class="back_div">
|
||||||
</view>
|
<view class="back-icon"></view>
|
||||||
</template>
|
</view>
|
||||||
<template v-else>
|
</template>
|
||||||
<view>展开{{item.children?.length}}条回复</view>
|
</view>
|
||||||
<view class="back_div">
|
<view class="children" v-if="item.show">
|
||||||
<view class="back-icon"></view>
|
<view class="message_div" v-for="childrenItem in item.children">
|
||||||
</view>
|
<view class="head_div">
|
||||||
</template>
|
<image-preview v-if="childrenItem.userIconImgId" class="img-box img"
|
||||||
</view>
|
:src="childrenItem.userIconImgId"></image-preview>
|
||||||
<view class="children" v-if="item.show">
|
<image v-else src="/static/images/me/default_user_avatar.png" class="img"></image>
|
||||||
<view class="message_div" v-for="childrenItem in item.children">
|
</view>
|
||||||
<view class="head_div">
|
<view class="msg_content">
|
||||||
<image-preview v-if="childrenItem.userIconImgId" class="img-box img"
|
<view class="title_div">
|
||||||
:src="childrenItem.userIconImgId"></image-preview>
|
<view class="name">{{childrenItem.userName}}</view>
|
||||||
<image v-else src="/static/images/me/default_user_avatar.png" class="img"></image>
|
<view class="arrow"></view>
|
||||||
</view>
|
<view class="name">{{childrenItem.rtnUName}}</view>
|
||||||
<view class="msg_content">
|
|
||||||
<view class="title_div">
|
|
||||||
<view class="name">{{childrenItem.userName}}</view>
|
|
||||||
<view class="arrow"></view>
|
|
||||||
<view class="name">{{childrenItem.rtnUName}}</view>
|
|
||||||
|
|
||||||
</view>
|
|
||||||
<view class="title">
|
|
||||||
{{childrenItem.bbsContent}}
|
|
||||||
</view>
|
|
||||||
<view class="img_div">
|
|
||||||
</view>
|
|
||||||
<view class="time_and_reply">
|
|
||||||
<view class="time">{{childrenItem.bbsTm.substr(0,16)}}</view>
|
|
||||||
<view class="reply"
|
|
||||||
@click="click_reply(childrenItem, childrenItem.parentId, index)">回复
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
|
<view class="title">
|
||||||
|
{{childrenItem.bbsContent}}
|
||||||
|
</view>
|
||||||
|
<view class="img_div">
|
||||||
|
</view>
|
||||||
|
<view class="time_and_reply">
|
||||||
|
<view class="time">{{childrenItem.bbsTm.substr(0,16)}}</view>
|
||||||
|
<view class="reply" @click="click_reply(childrenItem, childrenItem.parentId, index)">回复
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
<view class="send_evaluate_div_height"></view>
|
</view>
|
||||||
</scroll-view>
|
|
||||||
<view class="send_evaluate_div">
|
<view class="send_evaluate_div">
|
||||||
<uv-button type="primary" class="send_evaluate"
|
<uv-button type="primary" class="send_evaluate"
|
||||||
@click="common.navigateTo('/pages/courseDetail/submit?crsNum='+props.crsNum+'&imgId='+props.imgId)">发布评价</uv-button>
|
@click="common.navigateTo('/pages/courseDetail/submit?crsNum='+props.crsNum+'&imgId='+props.imgId)">发布评价</uv-button>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<uni-popup ref="popup" background-color="red">
|
<uni-popup ref="popup" background-color="red">
|
||||||
|
|
||||||
<view class="bottom_reply_input_div">
|
<view class="bottom_reply_input_div">
|
||||||
<uv-input v-model="reply_data.bbsContent" placeholderStyle='color:#999999;font-size:26rpx'
|
<uv-input v-model="reply_data.bbsContent" placeholderStyle='color:#999999;font-size:26rpx'
|
||||||
:placeholder="reply_data.placeholder" :focus="true">
|
:placeholder="reply_data.placeholder" :focus="true" :maxlength="160">
|
||||||
</uv-input>
|
</uv-input>
|
||||||
<view class="" style="display: flex;flex-direction: column; margin:10rpx 20rpx;">
|
<view class="" style="display: flex;flex-direction: column; margin:10rpx 20rpx;">
|
||||||
<view class="fl1"></view>
|
<view class="fl1"></view>
|
||||||
@@ -169,22 +165,31 @@
|
|||||||
Object.assign(message_list, body)
|
Object.assign(message_list, body)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
defineExpose({getData})
|
defineExpose({
|
||||||
|
getData
|
||||||
|
})
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getData()
|
getData()
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
.empty_message_div{
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 80rpx 0;
|
||||||
|
.img{
|
||||||
|
width: 288rpx;
|
||||||
|
height: 276rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
.pic-cell {
|
.pic-cell {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pic-item {
|
.pic-item {
|
||||||
margin-right: 16rpx;
|
margin-right: 16rpx;
|
||||||
width: 170rpx;
|
width: 170rpx;
|
||||||
@@ -193,31 +198,29 @@
|
|||||||
// background-color: red;
|
// background-color: red;
|
||||||
margin-bottom: 24rpx;
|
margin-bottom: 24rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.send_evaluate_div_height {
|
.send_evaluate_div_height {
|
||||||
height: 170rpx;
|
height: 170rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.send_evaluate_div {
|
.send_evaluate_div {
|
||||||
position: absolute;
|
position: fixed;
|
||||||
bottom: 0rpx;
|
left: 0;
|
||||||
width: calc(100% - 80rpx);
|
bottom: 0;
|
||||||
padding-top: 10rpx;
|
width: 100%;
|
||||||
padding-bottom: 30rpx;
|
padding: 10rpx 20rpx 30rpx 20rpx;
|
||||||
|
// padding-top: 10rpx;
|
||||||
|
// padding-bottom: 30rpx;
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
|
|
||||||
|
// background-color: red;
|
||||||
:deep(.uv-button-wrapper) {
|
:deep(.uv-button-wrapper) {
|
||||||
.uv-button {
|
.uv-button {
|
||||||
border-radius: 14rpx;
|
border-radius: 14rpx;
|
||||||
height: 92rpx;
|
height: 92rpx;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.scroll-view {
|
|
||||||
|
|
||||||
position: relative;
|
|
||||||
height: calc(100vh - 88rpx - 162rpx - 256rpx - 50rpx);
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 顶部随着输入法弹出的框
|
// 顶部随着输入法弹出的框
|
||||||
@@ -271,8 +274,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.message_div:not(:first-child) {
|
.message_div:not(:first-child) {
|
||||||
margin-top: 30rpx;
|
margin-top: 30rpx;
|
||||||
}
|
}
|
||||||
@@ -280,6 +281,8 @@
|
|||||||
.message_div {
|
.message_div {
|
||||||
// margin-top: 30rpx;
|
// margin-top: 30rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
margin-left: 20rpx;
|
||||||
|
margin-right: 20rpx;
|
||||||
|
|
||||||
.head_div {
|
.head_div {
|
||||||
.img {
|
.img {
|
||||||
@@ -401,11 +404,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.comment_div {
|
.comment_div {
|
||||||
padding: 20rpx 20rpx 20rpx 40rpx;
|
padding: 20rpx 0 20rpx 0;
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
border-radius: 24rpx;
|
border-radius: 24rpx;
|
||||||
position: relative;
|
position: relative;
|
||||||
height: calc(100vh - 88rpx - 162rpx - 256rpx - 70rpx);
|
// height: calc(100vh - 88rpx - 162rpx - 256rpx - 70rpx);
|
||||||
overflow: hidden;
|
// overflow: hidden;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="bottom-right">
|
<view class="bottom-right">
|
||||||
<image src="/src/static/images/courseDetail/mipmap-xhdpi/ditu.png" class="right-img" mode="widthFix"></image>
|
<image src="/src/static/images/courseDetail/ditu.png" class="right-img" mode="widthFix"></image>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -1,24 +1,26 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="point-item mb-30" v-for="(item, index) in modelValue?.pgrphData || []" :key="item.index">
|
<view class="point-item mb-30" v-for="(item, index) in modelValue?.pgrphData || []" :key="item.index"
|
||||||
<view class="flex">
|
@click="toDetail(item)" :class="item.pgrphStdyStateName == '已学习' ? 'learn' : 'unlearn'">
|
||||||
|
<view class="top mb-30">
|
||||||
<view class="blue-ball">
|
<view class="blue-ball">
|
||||||
<view class="ball"></view>
|
<view class="ball"></view>
|
||||||
</view>
|
</view>
|
||||||
<view class="item-label" @click="toDetail(item)">
|
<view class="fz-30 font_pf title">知识点0{{ index + 1 }}</view>
|
||||||
<view class="fz-30 font_pf fw-400 mb-30">知识点0{{ index + 1 }}</view>
|
<view class="fl1">
|
||||||
<view class="fz-30 font_pf fw-400 mb-36">{{ item.pgrphContent }}</view>
|
|
||||||
</view>
|
</view>
|
||||||
|
<view class="font_pf fz-24 study-status" >
|
||||||
|
{{ item.pgrphStdyStateName }}
|
||||||
|
</view>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
<view class="pt-8">
|
<view class="bottom">
|
||||||
<view class="font_pf fz-24" :class="item.pgrphStdyStateName == '已学习' ? 'learn' : 'unlearn'">
|
<view class="fz-30 font_pf text">{{ item.pgrphContent }}</view>
|
||||||
{{ item.pgrphStdyStateName }}</view>
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
|
||||||
|
|
||||||
import common from '@/common/common';
|
import common from '@/common/common';
|
||||||
const emit = defineEmits(['toStudyPrgh'])
|
const emit = defineEmits(['toStudyPrgh'])
|
||||||
|
|
||||||
@@ -31,16 +33,43 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
.learn{
|
||||||
|
.study-status{
|
||||||
|
color: #1DD17A;
|
||||||
|
}
|
||||||
|
.title,.text{
|
||||||
|
color: #000;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
.unlearn{
|
||||||
|
.study-status{
|
||||||
|
color: #666666;
|
||||||
|
}
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
.point-item {
|
.point-item {
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
display: flex;
|
// display: flex;
|
||||||
padding-top: 24rpx;
|
padding-top: 24rpx;
|
||||||
padding-left: 36rpx;
|
padding-left: 36rpx;
|
||||||
padding-right: 52rpx;
|
padding-right: 52rpx;
|
||||||
|
padding-bottom: 36rpx;
|
||||||
border-radius: 22rpx;
|
border-radius: 22rpx;
|
||||||
justify-content: space-between;
|
|
||||||
|
// justify-content: space-between;
|
||||||
// margin-left: 16rpx;
|
// margin-left: 16rpx;
|
||||||
// margin-right: 16rpx;
|
// margin-right: 16rpx;
|
||||||
|
.top {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottom {
|
||||||
|
padding-left: 12rpx;
|
||||||
|
}
|
||||||
|
|
||||||
.blue-ball {
|
.blue-ball {
|
||||||
padding-top: 16rpx;
|
padding-top: 16rpx;
|
||||||
margin-right: 12rpx;
|
margin-right: 12rpx;
|
||||||
|
|||||||
@@ -1,80 +1,92 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="max_page detail-main" style="overflow: hidden;">
|
<view class="max_page ">
|
||||||
<image src="/src/static/images/courseDetail/mipmap-xhdpi/bg.png" mode="widthFix" class="back-image"></image>
|
<nav-bar :is_seat="false" :backgroundColor="bgOpacity"></nav-bar>
|
||||||
<view class="back_div" @click="common.navigateBack()">
|
<scroll-view :scroll-y="tabAct!=4" class="scroll detail-main" @scroll="scroll_fun">
|
||||||
<view class="back-icon"></view>
|
<view class="bg_div">
|
||||||
</view>
|
<image-preview class="img_100 " :imgId="form.imgId" mode="widthFix"></image-preview>
|
||||||
<view class="detail-body">
|
<!-- <image :src="form.imgId" mode="widthFix" class="back-image"></image> -->
|
||||||
<view class="head-title font_pf">
|
</view>
|
||||||
<view class="title-text">{{ form.crsName }}</view>
|
<view class="back_div" @click="common.navigateBack()">
|
||||||
<view class="title-num">
|
<view class="back-icon"></view>
|
||||||
<view class="num-item">
|
</view>
|
||||||
<image class="title-icon" src="/src/static/images/courseDetail/mipmap-xhdpi/zhishidian.png"
|
<view class="detail-body">
|
||||||
mode="widthFix"></image>
|
<view class="head-title font_pf">
|
||||||
<view class="mr-10">知识点</view>
|
<view class="title-text">{{ form.crsName || '' }}</view>
|
||||||
<view class="c-000">{{ form.pgrphNum }}</view>
|
<view class="title-num">
|
||||||
</view>
|
<view class="num-item">
|
||||||
<view class="num-item">
|
<image class="title-icon" src="/src/static/images/courseDetail/zhishidian.png"
|
||||||
<image class="title-icon" src="/src/static/images/courseDetail/mipmap-xhdpi/yixue.png"
|
mode="widthFix"></image>
|
||||||
mode="widthFix"></image>
|
<view class="mr-10">知识点</view>
|
||||||
<view class="mr-10">已学</view>
|
<view class="c-000">{{ form.pgrphNum || 0 }}</view>
|
||||||
<view class="c-000">{{ form.styParaGraphNum }}</view>
|
</view>
|
||||||
|
<view class="num-item">
|
||||||
|
<image class="title-icon" src="/src/static/images/courseDetail/yixue.png"
|
||||||
|
mode="widthFix"></image>
|
||||||
|
<view class="mr-10">已学</view>
|
||||||
|
<view class="c-000">{{ form.styParaGraphNum || 0 }}</view>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
<view class="body-box">
|
||||||
<view class="body-box">
|
<view class="body-tab">
|
||||||
<view class="body-tab">
|
<uv-tabs class="font_pf" :current="tabAct" :list="tabList" @change="tabSwitch"
|
||||||
<uv-tabs class="font_pf" :current="tabAct" :list="tabList" @change="tabSwitch" :scrollable="false"
|
:scrollable="false" line-color="#0066FF"
|
||||||
line-color="#0066FF"
|
:active-style="{ color: '#323E57', 'font-weight': 600, 'font-size': '30rpx' }"
|
||||||
:active-style="{ color: '#323E57', 'font-weight': 600, 'font-size': '30rpx' }"
|
:inactive-style="{ color: '#666666', 'font-size': '30rpx' }"></uv-tabs>
|
||||||
:inactive-style="{ color: '#666666', 'font-size': '30rpx' }"></uv-tabs>
|
</view>
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="course-info" v-if="tabAct == 0">
|
<view class="course-info" v-if="tabAct == 0">
|
||||||
<introduceVue v-model="form"></introduceVue>
|
<introduceVue v-model="form"></introduceVue>
|
||||||
</view>
|
</view>
|
||||||
<view class="point" v-if="tabAct == 1">
|
<view class="point" v-if="tabAct == 1">
|
||||||
<knowledge v-model="form" @toStudyPrgh="toStudyPrgh"></knowledge>
|
<knowledge v-model="form" @toStudyPrgh="toStudyPrgh"></knowledge>
|
||||||
</view>
|
</view>
|
||||||
<view class="evaluate" v-if="tabAct == 2">
|
<view class="evaluate" v-if="tabAct == 2">
|
||||||
<comment ref="commentRef" :crsNum="form.crsNum" :imgId="form.imgId"></comment>
|
<comment ref="commentRef" :crsNum="form.crsNum" :imgId="form.imgId"></comment>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
|
||||||
|
</scroll-view>
|
||||||
<view class="btn-box btn-box-height font_pf" v-if="[0,1].includes(tabAct)">
|
<view class="btn-box btn-box-height font_pf" v-if="[0,1].includes(tabAct)">
|
||||||
|
|
||||||
<uv-button type="primary"
|
<uv-button type="primary"
|
||||||
@click="common.navigateTo('/pages/course/study?crsNum='+crsNum+'&crsId='+form.crsId)">去学习</uv-button>
|
@click="common.navigateTo('/pages/course/study?crsNum='+crsNum+'&crsId='+form.crsId)">去学习</uv-button>
|
||||||
<uv-button type="primary">去练习</uv-button>
|
<uv-button type="primary">去练习</uv-button>
|
||||||
<uv-button type="primary">去考试</uv-button>
|
<uv-button type="primary">去考试</uv-button>
|
||||||
|
|
||||||
<!-- <template v-if="tabAct == 2">
|
<!-- <template v-if="tabAct == 2">
|
||||||
<uv-button type="primary" class="send_evaluate"
|
<uv-button type="primary" class="send_evaluate"
|
||||||
@click="common.navigateTo('/pages/courseDetail/submit?crsNum='+crsNum)">发布评价</uv-button>
|
@click="common.navigateTo('/pages/courseDetail/submit?crsNum='+crsNum)">发布评价</uv-button>
|
||||||
</template> -->
|
</template> -->
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import {
|
import {
|
||||||
reactive,
|
reactive,
|
||||||
ref
|
ref,
|
||||||
|
computed
|
||||||
} from 'vue';
|
} from 'vue';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
onLoad,onShow
|
onShow,
|
||||||
} from '@dcloudio/uni-app';
|
onLoad,
|
||||||
|
onUnload
|
||||||
|
} from '@dcloudio/uni-app'
|
||||||
import {
|
import {
|
||||||
getCourseDetailApi
|
getCourseDetailApi
|
||||||
} from '@/api/courseDetail.js';
|
} from '@/api/courseDetail.js';
|
||||||
// import {formatDate2} from '@/common/common.js'
|
|
||||||
import common from '@/common/common';
|
import common from '@/common/common';
|
||||||
import introduceVue from './components/introduce.vue';
|
import introduceVue from './components/introduce.vue';
|
||||||
import knowledge from './components/knowledge.vue';
|
import knowledge from './components/knowledge.vue';
|
||||||
import comment from './components/comment.vue';
|
import comment from './components/comment.vue';
|
||||||
|
|
||||||
// tab栏
|
// tab栏
|
||||||
const tabList = ref([{
|
const tabList = ref([{
|
||||||
name: '课程介绍'
|
name: '课程介绍'
|
||||||
@@ -83,10 +95,12 @@
|
|||||||
}, {
|
}, {
|
||||||
name: '评价'
|
name: '评价'
|
||||||
}]);
|
}]);
|
||||||
|
|
||||||
const commentRef = ref(null);
|
const commentRef = ref(null);
|
||||||
const form = ref({});
|
const form = ref({});
|
||||||
const crsNum = ref('');
|
const crsNum = ref('');
|
||||||
const tabAct = ref(0);
|
const tabAct = ref(0);
|
||||||
|
const scrollTop = ref(0);
|
||||||
const tabSwitch = (item) => {
|
const tabSwitch = (item) => {
|
||||||
tabAct.value = item.index;
|
tabAct.value = item.index;
|
||||||
};
|
};
|
||||||
@@ -98,41 +112,52 @@
|
|||||||
});
|
});
|
||||||
form.value = body;
|
form.value = body;
|
||||||
};
|
};
|
||||||
|
const toStudyPrgh = (info) => {
|
||||||
|
common.navigateTo('/pages/course/study?crsNum=' + crsNum.value + '&crsId=' + form.value.crsId + '&pgrphId=' +
|
||||||
|
info.pgrphId)
|
||||||
|
}
|
||||||
|
|
||||||
|
const bgOpacity = computed(() => {
|
||||||
|
if (scrollTop.value <= 20) return `rgba(255,255,255,0)`;
|
||||||
|
const opacity = Math.min(1, (scrollTop.value - 20) / 80);
|
||||||
|
return `rgba(255,255,255,${opacity})`;
|
||||||
|
});
|
||||||
|
const scroll_fun = (e) => {
|
||||||
|
scrollTop.value = e.detail.scrollTop
|
||||||
|
}
|
||||||
onLoad((params) => {
|
onLoad((params) => {
|
||||||
crsNum.value = params.crsNum;
|
crsNum.value = params.crsNum;
|
||||||
getData();
|
getData();
|
||||||
});
|
uni.$on('refresh_comment_data', () => {
|
||||||
onShow(() => {
|
|
||||||
if (common.getPageCache('GLOBAL_TRIGGER_UPDATE_REFRESH_KEY')) {
|
|
||||||
commentRef.value.getData();
|
commentRef.value.getData();
|
||||||
}
|
})
|
||||||
|
});
|
||||||
|
onUnload(() => {
|
||||||
|
uni.$off('refresh_comment_data')
|
||||||
});
|
});
|
||||||
const toStudyPrgh = (info)=>{
|
|
||||||
common.navigateTo('/pages/course/study?crsNum='+crsNum.value+'&crsId='+form.value.crsId+'&pgrphId=' + info.pgrphId)
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|
||||||
.back_div {
|
.back_div {
|
||||||
margin-right: 10rpx;
|
margin-right: 10rpx;
|
||||||
position: absolute;
|
position: fixed;
|
||||||
left: 46rpx;
|
left: 46rpx;
|
||||||
top: 64rpx;
|
top: 64rpx;
|
||||||
|
|
||||||
.back-icon {
|
.back-icon {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 40rpx;
|
width: 40rpx;
|
||||||
height: 40rpx;
|
height: 40rpx;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.back-icon::before,
|
.back-icon::before,
|
||||||
.back-icon::after {
|
.back-icon::after {
|
||||||
content: '';
|
content: '';
|
||||||
position: absolute;
|
position: absolute;
|
||||||
transition: all 0.3s ease;
|
transition: all 0.3s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
.back-icon::after {
|
.back-icon::after {
|
||||||
top: 25%;
|
top: 25%;
|
||||||
left: 25%;
|
left: 25%;
|
||||||
@@ -143,21 +168,28 @@
|
|||||||
transform: rotate(-45deg);
|
transform: rotate(-45deg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.detail-main {
|
.detail-main {
|
||||||
background-color: #f5f5f5;
|
background-color: #f5f5f5;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
height: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scroll {
|
||||||
|
height: 100vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
.detail-body {
|
.detail-body {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
min-height: calc(100vh - 256rpx);
|
// min-height: calc(100vh - 256rpx);
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 256rpx;
|
top: 256rpx;
|
||||||
border-radius: 23rpx 23rpx 0rpx 0rpx;
|
border-radius: 23rpx 23rpx 0rpx 0rpx;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.body-head {
|
.body-head {
|
||||||
@@ -165,14 +197,20 @@
|
|||||||
background-color: red;
|
background-color: red;
|
||||||
}
|
}
|
||||||
|
|
||||||
.back-image {
|
.bg_div {
|
||||||
position: absolute;
|
position: fixed;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
|
.back-image {
|
||||||
|
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.head-title {
|
.head-title {
|
||||||
border-radius: 24rpx 24rpx 0rpx 0rpx;
|
border-radius: 24rpx 24rpx 0rpx 0rpx;
|
||||||
height: 162rpx;
|
// height: 162rpx;
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|||||||
@@ -18,21 +18,15 @@
|
|||||||
<view class="tips font_pf">最多可添加4张图片</view>
|
<view class="tips font_pf">最多可添加4张图片</view>
|
||||||
<view class="num">
|
<view class="num">
|
||||||
<view class="num-pic">
|
<view class="num-pic">
|
||||||
<image-preview class="img_100" :imgId="imgId" :isCache="true"></image-preview>
|
<image-preview class="img_100" :imgId="imgId" :isCache="true" mode="aspectFill"></image-preview>
|
||||||
<!-- <img class="w_100" src="/src/static/images/test/touxiang.png" mode="widthFix" /> -->
|
<!-- <img class="w_100" src="/src/static/images/test/touxiang.png" mode="widthFix" /> -->
|
||||||
</view>
|
</view>
|
||||||
<view class="num-box">
|
<view class="num-box">
|
||||||
<view class="font_pf fz-28 c-666">综合评分(1-11)</view>
|
<view class="font_pf fz-28 c-666">综合评分(1-10)</view>
|
||||||
<view class="slider-box">
|
<view class="slider-box">
|
||||||
<!-- <uv-slider step="1" activeColor="#0066FF" :blockSize="14" v-model="formData.bbsGrade"
|
<slider :min="0" :max="10" :value="10" @change="sliderChange" :step="0.1" :show-value="true"
|
||||||
:min="0" :max="10"></uv-slider> -->
|
|
||||||
<slider :min="0" :max="10" :value="formData.bbsGrade" :step="0.1" :show-value="true"
|
|
||||||
:blockSize="14"></slider>
|
:blockSize="14"></slider>
|
||||||
</view>
|
</view>
|
||||||
<!-- <view class="flex-jcsb">
|
|
||||||
<view class="font_pf fz-30 c-000">0</view>
|
|
||||||
<view class="font_pf fz-30 c-000 tar">10</view>
|
|
||||||
</view> -->
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="tab">
|
<view class="tab">
|
||||||
@@ -78,6 +72,10 @@
|
|||||||
"bbsContent": '', // 评价内容
|
"bbsContent": '', // 评价内容
|
||||||
})
|
})
|
||||||
const imgId = ref('')
|
const imgId = ref('')
|
||||||
|
const sliderChange = (event) => {
|
||||||
|
formData.bbsGrade = event.detail.value
|
||||||
|
}
|
||||||
|
|
||||||
const submit = () => {
|
const submit = () => {
|
||||||
if (formData.bbsContent === '') {
|
if (formData.bbsContent === '') {
|
||||||
if (formData.bbsTag == 'SUG') {
|
if (formData.bbsTag == 'SUG') {
|
||||||
@@ -89,9 +87,8 @@
|
|||||||
publishCrsEvaluation(formData).then(res => {
|
publishCrsEvaluation(formData).then(res => {
|
||||||
common.msg('发表成功')
|
common.msg('发表成功')
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
common.navigateBack(1, () => {
|
uni.$emit('refresh_comment_data')
|
||||||
common.setPageCache('GLOBAL_TRIGGER_UPDATE_REFRESH_KEY', true)
|
common.navigateBack()
|
||||||
})
|
|
||||||
}, 500)
|
}, 500)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -131,7 +131,7 @@
|
|||||||
<uv-skeleton :loading="!item.crsNum" :rows="3" avatar avatar-shape="square" :title="false">
|
<uv-skeleton :loading="!item.crsNum" :rows="3" avatar avatar-shape="square" :title="false">
|
||||||
<view class="item" @click="goto_course_detail(item.crsNum)">
|
<view class="item" @click="goto_course_detail(item.crsNum)">
|
||||||
<view class="left">
|
<view class="left">
|
||||||
<image-preview class="img-box img" :imgId="item.imgThumbId"></image-preview>
|
<image-preview class="img-box img" :imgId="item.imgThumbId" mode="aspectFit"></image-preview>
|
||||||
</view>
|
</view>
|
||||||
<view class="right">
|
<view class="right">
|
||||||
<view class="title ellipsis-text">{{item.crsName}}</view>
|
<view class="title ellipsis-text">{{item.crsName}}</view>
|
||||||
@@ -164,7 +164,7 @@
|
|||||||
<uv-skeleton :loading="!item.crsNum" :rows="3" avatar avatar-shape="square" :title="false">
|
<uv-skeleton :loading="!item.crsNum" :rows="3" avatar avatar-shape="square" :title="false">
|
||||||
<view class="item" @click="goto_course_detail(item.crsNum)">
|
<view class="item" @click="goto_course_detail(item.crsNum)">
|
||||||
<view class="left">
|
<view class="left">
|
||||||
<image-preview class="img-box img" :imgId="item.imgThumbId"></image-preview>
|
<image-preview class="img-box img" :imgId="item.imgThumbId" mode="aspectFit"></image-preview>
|
||||||
</view>
|
</view>
|
||||||
<view class="right">
|
<view class="right">
|
||||||
<view class="title ellipsis-text">{{item.crsName}}</view>
|
<view class="title ellipsis-text">{{item.crsName}}</view>
|
||||||
@@ -196,7 +196,7 @@
|
|||||||
<uv-skeleton :loading="!item.crsNum" :rows="3" avatar avatar-shape="square" :title="false">
|
<uv-skeleton :loading="!item.crsNum" :rows="3" avatar avatar-shape="square" :title="false">
|
||||||
<view class="item" @click="goto_course_detail(item.crsNum)">
|
<view class="item" @click="goto_course_detail(item.crsNum)">
|
||||||
<view class="left">
|
<view class="left">
|
||||||
<image-preview class="img-box img" :imgId="item.imgThumbId"></image-preview>
|
<image-preview class="img-box img" :imgId="item.imgThumbId" mode="aspectFit"></image-preview>
|
||||||
</view>
|
</view>
|
||||||
<view class="right">
|
<view class="right">
|
||||||
<view class="title ellipsis-text">{{item.crsName}}</view>
|
<view class="title ellipsis-text">{{item.crsName}}</view>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 526 KiB |
|
Before Width: | Height: | Size: 601 B After Width: | Height: | Size: 601 B |
|
Before Width: | Height: | Size: 416 B After Width: | Height: | Size: 416 B |