作者 徐浩

20240118合并代码

... ... @@ -554,8 +554,53 @@ const setUsermsg = function(data) {
)
}
const wx_uploadFile = function(tempFilePath) {
return new Promise((resolve, reject) => {
var jkurl='login/upload'
uni.uploadFile({
url: IPurl + jkurl,
filePath: tximg,
name: 'file',
header: header,
formData: {
token: uni.getStorageSync('token')
},
complete: (res) => {
uni.hideLoading();
uni.stopPullDownRefresh(); //慎用hideLoading,会关闭wx.showToast弹窗
// console.log(`耗时${Date.now() - timeStart}`);
if (res.statusCode == 200) { //请求成功
var ndata = JSON.parse(res.data)
if (ndata.code == -1) {
store.commit('logout')
uni.navigateTo({
url: '/pagesC_mxx/login/login'
})
return
} else if (ndata.code == 0) {
if (ndata.msg) {
uni.showToast({
icon: 'none',
title: ndata.msg
})
} else {
uni.showToast({
icon: 'none',
title: '操作失败'
})
}
}
resolve(ndata)
} else {
reject(res);
}
}
});
})
}
const wx_upload = function(tximg,type) {
const wx_upload = function(tximg,type = 'img') {
return new Promise((resolve, reject) => {
uni.showLoading({
mask: true,
... ... @@ -564,13 +609,14 @@ const wx_upload = function(tximg,type) {
// #ifndef H5
console.log(tximg)
var jkurl='login/upload'
console.log('type', type)
uni.uploadFile({
url: IPurl + jkurl,
filePath: tximg,
name: 'file',
header: header,
formData: {
type,
token: uni.getStorageSync('token')
},
// success: (uploadFileRes) => {
... ... @@ -2018,6 +2064,7 @@ export default {
get_fwb,
wx_upload,
wxpay,
wx_uploadFile,
baseurl,
emojiList,
... ...
<template>
<view class="RecordingDevice">
<view class="RecordingDevice-2">
<VoicePlayback ref="voicePlayback"/>
</view>
<view class="RecordingDevice-1">
<view class="RecordingDevice-1-i">
<view class="RecordingDevice-1-i-taps" v-if="hours || minutes || seconds">
<image class="RecordingDevice-1-i-taps-bg" src="@/static/imagesV2/icon64.png" mode="widthFix"></image>
<view class="RecordingDevice-1-i-taps-c">
<image class="RecordingDevice-1-i-taps-c-l" src="@/static/imagesV2/icon65.png" mode="widthFix"></image>
<text class="RecordingDevice-1-i-taps-c-t">{{ formattedTime }}</text>
</view>
</view>
<view v-if="isTape === RECORDINGSTATUS.INPROGRESS" @click="pauseRecord">
<view class="RecordingDevice-1-i-1">
<image class="RecordingDevice-1-i-1-i" src="@/static/imagesV2/icon61.png" mode="widthFix"></image>
</view>
<view class="RecordingDevice-1-i-2">暂停</view>
</view>
<view v-else @click="start">
<view class="RecordingDevice-1-i-1">
<image class="RecordingDevice-1-i-1-i" src="@/static/imagesV2/icon66.png" mode="widthFix"></image>
</view>
<view class="RecordingDevice-1-i-2">开始</view>
</view>
</view>
<view class="RecordingDevice-1-i" @click="stopRecord">
<view class="RecordingDevice-1-i-1">
<image class="RecordingDevice-1-i-1-i" src="@/static/imagesV2/icon62.png" mode="widthFix"></image>
</view>
<view class="RecordingDevice-1-i-2">完成</view>
</view>
<view class="RecordingDevice-1-i" @click="reRecording">
<view class="RecordingDevice-1-i-1">
<image class="RecordingDevice-1-i-1-i" src="@/static/imagesV2/icon63.png" mode="widthFix"></image>
</view>
<view class="RecordingDevice-1-i-2">重录</view>
</view>
</view>
</view>
</template>
<script>
import VoicePlayback from "@/components/VoicePlayback/index.vue"
/**
* 录制状态
*/
const RECORDINGSTATUS = {
/**
* 未开始
* @value 1
*/
'NOTSTARTEDYET': 1,
/**
* 进行中
* @value 2
*/
'INPROGRESS': 2,
/**
* 暂停中
* @value 3
*/
'PAUSED': 3
}
export default {
name: 'RecordingDevice',
components: {
VoicePlayback
},
computed: {
formattedTime() {
const hours = this.padDigits(this.hours);
const minutes = this.padDigits(this.minutes);
const seconds = this.padDigits(this.seconds);
return `${hours}:${minutes}:${seconds}`;
}
},
data() {
return {
RECORDINGSTATUS,
// 是否正在录制
isTape: RECORDINGSTATUS.NOTSTARTEDYET,
recorder: null,
seconds: 0,
minutes: 0,
hours: 0,
timer: null,
}
},
mounted() {
this.recorder = uni.getRecorderManager();
this.recorder.onStop(res => {
if(this.isTape !== RECORDINGSTATUS.NOTSTARTEDYET) {
console.log('停止录制...');
console.log('录制文件路径:', res.tempFilePath);
this.uploadFiles(res.tempFilePath)
this.isTape = RECORDINGSTATUS.NOTSTARTEDYET;
}
});
this.recorder.onStart(() => {
this.isTape = RECORDINGSTATUS.INPROGRESS;
console.log('开始录制...');
});
this.recorder.stop();
},
beforeDestroy() {
this.stopTimer();
},
methods: {
padDigits(number) {
return (number < 10) ? '0' + number : number;
},
startTimer() {
this.timer = setInterval(() => {
this.seconds++;
if (this.seconds >= 60) {
this.seconds = 0;
this.minutes++;
if (this.minutes >= 60) {
this.minutes = 0;
this.hours++;
}
}
}, 1000);
},
resetTimer() {
clearInterval(this.timer);
this.timer = null;
this.seconds = 0
this.minutes = 0
this.hours = 0
},
stopTimer() {
clearInterval(this.timer);
this.timer = null;
},
formatTwoDigits(value) {
return value.toString().padStart(2, '0');
},
reRecording() {
this.isTape = RECORDINGSTATUS.NOTSTARTEDYET
this.recorder.stop();
this.resetTimer()
},
start() {
if(this.isTape === RECORDINGSTATUS.PAUSED) {
this.resumeRecord()
} else if(this.isTape === RECORDINGSTATUS.NOTSTARTEDYET){
this.startRecord()
this.resetTimer()
}
this.startTimer()
},
startRecord() {
this.recorder.start({
format: 'mp3',
});
},
pauseRecord() {
this.recorder.pause();
this.isTape = RECORDINGSTATUS.PAUSED;
this.stopTimer()
console.log('暂停录制...');
},
resumeRecord() {
this.recorder.resume();
this.paused = false;
this.isTape = RECORDINGSTATUS.INPROGRESS;
console.log('继续录制...');
},
stopRecord() {
if(this.isTape === RECORDINGSTATUS.NOTSTARTEDYET) {
uni.showToast({
icon: 'none',
title: '请录制音频'
})
return
}
this.resetTimer()
this.recorder.stop();
},
uploadFiles(tempFilePath) {
this.$service.wx_upload(tempFilePath, 'video').then(res => {
this.$refs.voicePlayback.setUrl(res.data)
})
}
}
}
</script>
<style lang="scss" scoped>
.RecordingDevice{
.RecordingDevice-2{
background-color: #F5F6F8;
padding: 44rpx 43rpx;
border-radius: 20rpx;
}
.RecordingDevice-1{
display: flex;
justify-content: space-around;
padding-top: 120rpx;
.RecordingDevice-1-i{
text-align: center;
position: relative;
.RecordingDevice-1-i-taps{
position: absolute;
top: 0;
left: 50%;
transform: translate(-50%, -100%);
.RecordingDevice-1-i-taps-bg{
height: 68rpx;
width: 216rpx;
}
.RecordingDevice-1-i-taps-c{
position: absolute;
top: 0;
display: flex;
align-items: center;
height: 68rpx;
width: 216rpx;
padding-bottom: 12rpx;
justify-content: center;
.RecordingDevice-1-i-taps-c-l{
height: 36rpx;
width: 36rpx;
}
.RecordingDevice-1-i-taps-c-t{
font-size: 28rpx;
color: #646464;
margin-left: 13rpx;
}
}
}
.RecordingDevice-1-i-1{
.RecordingDevice-1-i-1-i{
height: 120rpx;
width: 120rpx;
}
}
.RecordingDevice-1-i-2{
font-size: 28rpx;
color: #323232;
margin-top: 10rpx;
}
}
}
}
</style>
\ No newline at end of file
... ...
<template>
<view class="VoicePlayback" @click="operation">
<view class="VoicePlayback-1">
<image class="VoicePlayback-1-i" src="@/static/imagesV2/icon42.png" mode="widthFix"></image>
<image class="VoicePlayback-1-i" v-if="isPlay" src="@/static/imagesV2/icon42s.png" mode="widthFix"></image>
<image class="VoicePlayback-1-i" v-else src="@/static/imagesV2/icon42.png" mode="widthFix"></image>
</view>
<view class="VoicePlayback-2">{{ convertTimeToHMS(remainingTime) }}</view>
</view>
... ... @@ -34,21 +35,23 @@
} else {
this.audioContext.pause()
}
console.log(this.duration)
},
setUrl(url) {
this.audioContext.src = url
},
init() {
this.audioContext = wx.createInnerAudioContext();
this.audioContext.src = require("@/static/imagesV2/test.mp3")
this.audioContext.onPlay(() => {
console.log('音频开始播放', this.audioContext.duration);
this.isPlay = true
});
this.audioContext.onPause(() => {
console.log('音频暂停播放');
this.isPlay = false
});
this.audioContext.onEnded(() => {
this.audioContext.stop()
})
this.audioContext.onStop(() => {
console.log('音频停止播放');
this.isPlay = false
});
this.audioContext.onCanplay(() => {
... ... @@ -60,11 +63,13 @@
}, 100)
})
this.audioContext.onTimeUpdate(() => {
this.duration = this.audioContext.duration
this.currentTime = this.audioContext.currentTime
this.remainingTime = this.duration - this.currentTime
});
},
convertTimeToHMS(time) {
console.log(time)
time = parseInt(time)
var hours = Math.floor(time / 3600);
var minutes = Math.floor((time % 3600) / 60);
... ...
... ... @@ -132,4 +132,34 @@ export const PAYMENTTYPE = {
* @value 2
*/
'ALIPAY': 2
}
/**
* 解答类型
*/
export const ANSWERTYPE = {
/**
* 待解答
* @value 1
*/
'TOBEANSWERED': 1,
/**
* 已解答
* @value 2
*/
'ANSWERED': 2
}
/**
* 回答类型
*/
export const MESSAGETYPE = {
/**
* 文字解答
* @value 1
*/
'TEXTANSWER': 1,
/**
* 语音解答
* @value 2
*/
'VOICEANSWERS': 2
}
\ No newline at end of file
... ...
... ... @@ -51,6 +51,11 @@
/* 小程序特有相关 */
"mp-weixin" : {
"appid" : "wx5bbc433d447d1a86",
"permissions": {
"scope.record": {
"desc": "用于录制音频"
}
},
"setting" : {
"urlCheck" : false,
"es6" : true
... ...
<template>
<view class="evaluationRecords">
<view class="answer-item2">
<view class="answer-item2-star">
<u-rate :count="5" :readonly="true" :size="18" activeColor="#fc6402" v-model="value"></u-rate>
<view class="answer-item2-star-l">4.0</view>
</view>
<view class="myQuestion-2-i-1">
<view class="myQuestion-2-i-1-l">
<image class="myQuestion-2-i-1-l-i" src="@/static/images/tx.png" mode="widthFix"></image>
</view>
<view class="myQuestion-2-i-1-r">
<view class="myQuestion-2-i-1-r-1">李晋心</view>
<view class="myQuestion-2-i-1-r-2">2023-12-10发布</view>
</view>
</view>
<view class="myQuestion-2-i-2">
老师你好请问工商管理专业的应届生可以报考工商管理
内的二级专业吗?比如说会计学,旅游管理?
</view>
<view class="myQuestion-2-i-4">
<u--image
v-for="(item, index) in []"
:key="index"
radius="15rpx"
height="145rpx"
width="145rpx"
@click.native="seeImg(index)"
:src="item"></u--image>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
};
}
}
</script>
<style lang="scss" scoped>
.evaluationRecords{
padding: 20rpx 25rpx;
.answer-item2{
padding: 30rpx;
background-color: #FFFFFF;
box-sizing: border-box;
border-radius: 20rpx;
position: relative;
margin-bottom: 20rpx;
.answer-item2-star{
position: absolute;
top: 43rpx;
right: 29rpx;
display: flex;
align-items: center;
.answer-item2-star-l{
font-size: 24rpx;
color: #323232;
}
}
.myQuestion-2-i-1{
display: flex;
align-items: center;
.myQuestion-2-i-1-l{
.myQuestion-2-i-1-l-i{
height: 60rpx;
width: 60rpx;
border-radius: 100%;
}
}
.myQuestion-2-i-1-r{
margin-left: 30rpx;
.myQuestion-2-i-1-r-1{
font-size: 26rpx;
color: #323232;
font-weight: bold;
}
.myQuestion-2-i-1-r-2{
font-size: 24rpx;
color: #979797;
margin-top: 5rpx;
}
}
}
.myQuestion-2-i-2{
line-height: 39rpx;
color: #323232;
font-size: 26rpx;
margin: 30rpx 0;
}
.myQuestion-2-i-4{
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-row-gap: 20rpx;
grid-column-gap: 20rpx;
margin-top: 30rpx;
}
}
}
</style>
... ...
... ... @@ -29,19 +29,19 @@
<view class="homePage-2-4-1-l-2">评价分</view>
</view>
</view>
<view class="homePage-2-4-2">
<view class="homePage-2-4-2" @click="toOnLine">
<image class="homePage-bg" src="@/static/imagesV2/icon56.png" mode="widthFix"></image>
<view class="homePage-2-4-2-c">
在线答疑
</view>
</view>
<view class="homePage-2-4-2">
<view class="homePage-2-4-2" @click="toEvaluationRecords">
<image class="homePage-bg" src="@/static/imagesV2/icon57.png" mode="widthFix"></image>
<view class="homePage-2-4-2-c">
评价记录
</view>
</view>
<view class="homePage-2-4-2">
<view class="homePage-2-4-2" @click="toRateMe">
<image class="homePage-bg" src="@/static/imagesV2/icon58.png" mode="widthFix"></image>
<view class="homePage-2-4-2-c">
教师评价
... ... @@ -60,11 +60,26 @@
}
},
methods: {
toRateMe() {
uni.navigateTo({
url: '/new_tec/rateMe/rateMe'
})
},
toOnLine() {
uni.navigateTo({
url: '/new_tec/onLine/onLine'
})
},
toEditInfo() {
uni.navigateTo({
url: '/new_tec/editInfo/editInfo'
})
},
toEvaluationRecords() {
uni.navigateTo({
url: '/new_tec/evaluationRecords/evaluationRecords'
})
},
toNewSetting() {
uni.navigateTo({
url: '/pagesB/newSetting/newSetting'
... ...
<template>
<view class="onLine">
<view class="onLine-1">
<view @click="selectItem(ANSWERTYPE.TOBEANSWERED)" :class="{'onLine-1-i': true, 'onLine-1-is': type === ANSWERTYPE.TOBEANSWERED}">待解答</view>
<view @click="selectItem(ANSWERTYPE.ANSWERED)" :class="{'onLine-1-i': true, 'onLine-1-is': type === ANSWERTYPE.ANSWERED}">已解答</view>
</view>
<view class="onLine-2">
<view class="onLine-2-i" @click="toDetails">
<view class="onLine-2-i-op">
<image class="onLine-2-i-op-i" src="@/static/imagesV2/icon41.png" mode="widthFix"></image>
<text class="onLine-2-i-op-t">解答</text>
</view>
<view class="onLine-2-i-1">
<image src="@/static/images/tx.png" class="onLine-2-i-1-1"></image>
<view class="onLine-2-i-1-r">
<view class="onLine-2-i-1-r-1">李晋心</view>
<view class="onLine-2-i-1-r-2">2023-12-10发布</view>
</view>
</view>
<view class="onLine-2-i-2">
老师你好请问工商管理专业的应届生可以报考工商管理 内的二级专业吗?比如说会计学,旅游管理?
</view>
</view>
<u-empty
mode="data"
text="暂无数据"
icon="/static/imagesV2/icon24.png"
>
</u-empty>
</view>
</view>
</template>
<script>
import { ANSWERTYPE } from "@/emit/index.js"
export default {
data() {
return {
ANSWERTYPE,
type: ANSWERTYPE.TOBEANSWERED
};
},
methods: {
toDetails() {
uni.navigateTo({
url: '/new_tec/onLineDetails/onLineDetails'
})
},
selectItem(type) {
this.type = type
}
}
}
</script>
<style lang="scss" scoped>
.onLine{
.onLine-1{
border-top:1rpx solid #f3f4f6;
display: flex;
background: #fff;
justify-content: space-around;
position: fixed;
width: 100%;
top: 0;
left: 0;
.onLine-1-i{
font-size: 28rpx;
color: #323232;
height: 88rpx;
display: flex;
align-items: center;
justify-content: center;
}
.onLine-1-is{
color: #2D81FF;
position: relative;
&:before{
content: '';
position: absolute;
bottom: 0;
left: 50%;
background-image: url(@/static/imagesV2/icon23.png);
background-size: 100% 100%;
transform: translateX(-50%);
height: 24rpx;
width: 24rpx;
}
}
}
.onLine-2{
padding: 20rpx 25rpx;
padding-top: calc(88rpx + 20rpx);
padding-bottom: calc(25rpx + env(safe-area-inset-bottom));
.onLine-2-i{
background: #fff;
border-radius: 20rpx;
padding: 40rpx 30rpx;
position: relative;
margin-bottom: 20rpx;
.onLine-2-i-op{
position: absolute;
right: 30rpx;
top: 40rpx;
background-color: rgba(#2D81FF, .1);
height: 56rpx;
padding: 0 34rpx;
border-radius: 200rpx;
display: flex;
align-items: center;
justify-content: center;
line-height: 1.4;
color: #2D81FF;
.onLine-2-i-op-i{
height: 24rpx;
width: 24rpx;
}
.onLine-2-i-op-t{
font-size: 26rpx;
margin-left: 5rpx;
}
}
.onLine-2-i-1{
display: flex;
align-items: center;
.onLine-2-i-1-1{
height: 60rpx;
width: 60rpx;
}
.onLine-2-i-1-r{
margin-left: 30rpx;
.onLine-2-i-1-r-1{
font-size: 26rpx;
color: #323232;
}
.onLine-2-i-1-r-2{
font-size: 24rpx;
color: #979797;
margin-top: 5rpx;
}
}
}
.onLine-2-i-2{
font-size: 26rpx;
line-height: 39rpx;
margin-top: 30rpx;
}
}
}
}
</style>
... ...
<template>
<view class="onLineDetails">
<view class="answer-item2">
<view class="answer-item2-star">
<u-rate :count="5" :readonly="true" :size="18" activeColor="#fc6402" v-model="value"></u-rate>
<view class="answer-item2-star-l">4.0</view>
</view>
<view class="myQuestion-2-i-1">
<view class="myQuestion-2-i-1-l">
<image class="myQuestion-2-i-1-l-i" src="@/static/images/tx.png" mode="widthFix"></image>
</view>
<view class="myQuestion-2-i-1-r">
<view class="myQuestion-2-i-1-r-1">李晋心</view>
<view class="myQuestion-2-i-1-r-2">2023-12-10发布</view>
</view>
</view>
<view class="myQuestion-2-i-2">
老师你好请问工商管理专业的应届生可以报考工商管理
内的二级专业吗?比如说会计学,旅游管理?
</view>
<view class="myQuestion-2-i-4">
<u--image
v-for="(item, index) in []"
:key="index"
radius="15rpx"
height="145rpx"
width="145rpx"
@click.native="seeImg(index)"
:src="item"></u--image>
</view>
<view class="myQuestion-2-i-3">
<view class="myQuestion-2-i-3-c">
<view class="myQuestion-2-i-3-c-1">
<view class="myQuestion-2-i-3-c-1-l">
<image class="myQuestion-2-i-3-c-1-l-i" src="@/static/images/tx.png" mode="widthFix"></image>
<text class="myQuestion-2-i-3-c-1-l-t">程菲老师回复</text>
</view>
<view class="myQuestion-2-i-3-c-1-r">2023-12-10</view>
</view>
<view class="myQuestion-2-i-3-c-2">
同学你好,这个问题问的好,你说的这些都是不可以报的!
</view>
<view style="margin-top: 28rpx;">
<VoicePlayback />
</view>
</view>
</view>
</view>
<view class="onLineDetails-1">
<view class="onLineDetails-1-1">
<view class="onLineDetails-1-1-l">解答</view>
<view class="onLineDetails-1-1-r">
<text class="onLineDetails-1-1-r-t" @click="switchItem(MESSAGETYPE.VOICEANSWERS)" v-if="answerType === MESSAGETYPE.TEXTANSWER">文字解答</text>
<text class="onLineDetails-1-1-r-t" @click="switchItem(MESSAGETYPE.TEXTANSWER)" v-if="answerType === MESSAGETYPE.VOICEANSWERS">语音解答</text>
<image class="onLineDetails-1-1-r-i" src="@/static/imagesV2/icon59.png" mode="widthFix"></image>
</view>
</view>
<view class="onLineDetails-1-2" v-if="answerType === MESSAGETYPE.TEXTANSWER">
<textarea class="onLineDetails-1-2-c" placeholder="请输入" v-model="content_one"></textarea>
</view>
<view v-else>
<RecordingDevice />
</view>
</view>
</view>
</template>
<script>
import { MESSAGETYPE } from "@/emit/index.js"
import RecordingDevice from "@/components/RecordingDevice/index.vue"
import VoicePlayback from "@/components/VoicePlayback/index.vue"
export default {
components: {
RecordingDevice,
VoicePlayback
},
data() {
return {
MESSAGETYPE,
answerType: MESSAGETYPE.VOICEANSWERS,
value: 5
};
},
onHide() {
},
methods: {
switchItem(type) {
this.answerType = type
}
}
}
</script>
<style lang="scss" scoped>
.onLineDetails{
padding: 20rpx 25rpx;
.answer-item2{
padding: 30rpx;
background-color: #FFFFFF;
box-sizing: border-box;
border-radius: 20rpx;
position: relative;
.answer-item2-star{
position: absolute;
top: 43rpx;
right: 29rpx;
display: flex;
align-items: center;
.answer-item2-star-l{
font-size: 24rpx;
color: #323232;
}
}
.myQuestion-2-i-1{
display: flex;
align-items: center;
.myQuestion-2-i-1-l{
.myQuestion-2-i-1-l-i{
height: 60rpx;
width: 60rpx;
border-radius: 100%;
}
}
.myQuestion-2-i-1-r{
margin-left: 30rpx;
.myQuestion-2-i-1-r-1{
font-size: 26rpx;
color: #323232;
font-weight: bold;
}
.myQuestion-2-i-1-r-2{
font-size: 24rpx;
color: #979797;
margin-top: 5rpx;
}
}
}
.myQuestion-2-i-2{
line-height: 39rpx;
color: #323232;
font-size: 26rpx;
margin: 30rpx 0;
}
.myQuestion-2-i-3{
padding-top: 33rpx;
margin-top: 20rpx;
border-top: 1rpx solid #F3F3F7;
.myQuestion-2-i-3-c{
border-radius: 20rpx;
background: #F5F6F8;
padding: 30rpx;
.myQuestion-2-i-3-c-1{
display: flex;
justify-content: space-between;
align-items: center;
.myQuestion-2-i-3-c-1-l{
display: flex;
align-items: center;
.myQuestion-2-i-3-c-1-l-i{
height: 48rpx;
width: 48rpx;
border-radius: 200rpx;
}
.myQuestion-2-i-3-c-1-l-t{
font-size: 26rpx;
margin-left: 19rpx;
color: #323232;
}
}
.myQuestion-2-i-3-c-1-r{
font-size: 24rpx;
color: #979797;
}
}
.myQuestion-2-i-3-c-2{
line-height: 39rpx;
font-size: 26rpx;
color: #323232;
margin-top: 28rpx;
}
}
}
.myQuestion-2-i-4{
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-row-gap: 20rpx;
grid-column-gap: 20rpx;
margin-top: 30rpx;
}
}
.onLineDetails-1{
background: #FFFFFF;
border-radius: 20rpx;
margin-top: 18rpx;
padding: 0 30rpx;
padding-bottom: 40rpx;
.onLineDetails-1-1{
height: 130rpx;
display: flex;
align-items: center;
justify-content: space-between;
.onLineDetails-1-1-l{
font-size: 30rpx;
color: #000000;
position: relative;
padding-left: 35rpx;
&:before{
content: '';
width: 8rpx;
height: 25rpx;
background-color: #2D81FF;
border-radius: 20rpx;
position: absolute;
top: 50%;
left: 0;
transform: translateY(-50%);
}
}
.onLineDetails-1-1-r{
display: flex;
align-items: center;
.onLineDetails-1-1-r-t{
font-size: 28rpx;
color: #646464;
}
.onLineDetails-1-1-r-i{
height: 30rpx;
width: 30rpx;
margin-left: 10rpx;
}
}
}
.onLineDetails-1-2{
background-color: #F5F6F8;
padding: 30rpx 40rpx;
border-radius: 20rpx;
.onLineDetails-1-2-c{
font-size: 28rpx;
}
}
}
}
</style>
... ...
<template>
<view class="rateMe">
<view class="rateMe-1">
<image class="rateMe-1-bg" src="@/static/imagesV2/icon67.png" mode="widthFix"></image>
<view class="rateMe-1-c">
<view class="rateMe-1-c-i">
<view class="rateMe-1-c-i-1">6.6</view>
<view class="rateMe-1-c-i-2">总评分(分)</view>
</view>
<view class="rateMe-1-c-i">
<view class="rateMe-1-c-i-1">13</view>
<view class="rateMe-1-c-i-2">评价人数(人)</view>
</view>
</view>
</view>
<view class="rateMe-2">
<view class="rateMe-2-1">
<view class="rateMe-2-1-l">评分</view>
<view class="rateMe-2-1-c">
<u-rate :count="10" v-model="value"></u-rate>
</view>
<view class="rateMe-2-1-r">一般</view>
</view>
<view class="rateMe-2-2">
<text style="color: #979797;">其它评价及建议:</text>
<text>张东老师教学水平高,桃李满天 下,学识渊博,深受学生敬仰。</text>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
value: 10
}
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.rateMe{
padding: 20rpx 25rpx;
.rateMe-1{
position: relative;
.rateMe-1-bg{
height: 200rpx;
width: 100%;
}
.rateMe-1-c{
position: absolute;
height: 200rpx;
width: 100%;
display: flex;
top: 0;
left: 0;
.rateMe-1-c-i{
width: 50%;
color: #fff;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
position: relative;
&:first-child{
&:before{
content: '';
position: absolute;
height: 50rpx;
border-left: rgba(#F2F2F2, .2) solid 1rpx;
top: 50%;
right: 0;
transform: translateY(-50%);
}
}
.rateMe-1-c-i-1{
font-size: 38rpx;
font-weight: bold;
}
}
}
}
.rateMe-2{
padding: 40rpx 30rpx;
background: #fff;
border-radius: 20rpx;
margin-top: 20rpx;
.rateMe-2-1{
display: flex;
align-items: center;
.rateMe-2-1-l{
font-size: 24rpx;
color: #323232;
}
.rateMe-2-1-c{
margin: 0 40rpx;
}
.rateMe-2-1-r{
font-size: 24rpx;
color: #FC5101;
}
}
.rateMe-2-2{
margin-top: 20rpx;
padding: 40rpx 30rpx;
background: #F5F6F8;
margin-top: 30rpx;
font-size: 26rpx;
}
}
}
</style>
... ...
... ... @@ -816,6 +816,42 @@
}
}
,{
"path" : "onLine/onLine",
"style" :
{
"navigationBarTitleText": "在线答疑",
"enablePullDownRefresh": false
}
}
,{
"path" : "onLineDetails/onLineDetails",
"style" :
{
"navigationBarTitleText": "解答问题",
"enablePullDownRefresh": false
}
}
,{
"path" : "evaluationRecords/evaluationRecords",
"style" :
{
"navigationBarTitleText": "评价记录",
"enablePullDownRefresh": false
}
}
,{
"path" : "rateMe/rateMe",
"style" :
{
"navigationBarTitleText": "学员对我评分",
"enablePullDownRefresh": false
}
}
]
}
]
... ...
... ... @@ -37,10 +37,10 @@
})
}else{
var identity=uni.getStorageSync('identity')
// uni.reLaunch({
// url:'/new_tec/homePage/homePage'
// })
// return
uni.reLaunch({
url:'/new_tec/homePage/homePage'
})
return
if(identity==2){
uni.reLaunch({
url:'/pages/tch_index/tch_index'
... ...
... ... @@ -143,6 +143,12 @@
url: '/pagesStu/answerForm/answerForm'
})
},
seeImg(index) {
uni.previewImage({
current: index, // 当前显示图片的链接,不填则默认为 urls 的第一张图片
urls: this.info.imgs // 需要预览的图片链接列表
})
},
toMyQuestion() {
uni.navigateTo({
url: '/pagesStu/myQuestion/myQuestion'
... ...
... ... @@ -65,7 +65,7 @@
</template>
<script>
import VoicePlayback from "./components/VoicePlayback/index.vue"
import VoicePlayback from "@/components/VoicePlayback/index.vue"
export default {
components: {
VoicePlayback
... ...
... ... @@ -60,12 +60,12 @@
this.type = type
},
toBigShotsDetails() {
// uni.navigateTo({
// url: '/pagesStu/bigShotsDetails/bigShotsDetails'
// })
uni.navigateTo({
url: '/pagesStu/audioFrequency/audioFrequency'
url: '/pagesStu/bigShotsDetails/bigShotsDetails'
})
// uni.navigateTo({
// url: '/pagesStu/audioFrequency/audioFrequency'
// })
}
}
}
... ...