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

This commit is contained in:
yanghang
2025-07-11 09:17:38 +08:00
16 changed files with 270 additions and 197 deletions
+1 -1
View File
@@ -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
# app入口
#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'
@@ -1,5 +1,5 @@
<template>
<image :src="imgUrlShow" fit="cover"></image>
<image :src="imgUrlShow" fit="cover" :mode="mode"></image>
</template>
<script>
@@ -30,7 +30,11 @@
isCache:{
type: Boolean,
default: false
}
},
mode:{
type: String,
default: 'widthFix'
},
},
data() {
return {
@@ -1,7 +1,7 @@
<template>
<view class="components_custom_file_upload_div pic-cell">
<view v-for="(item,index) in fileList" class="img_div pic-item">
<image-preview :imgId="item.fileId" class="img"></image-preview>
<view v-for="(item,index) in fileList" class="img_div pic-item" @click="pic_click(item, index)">
<image-preview :imgId="item.fileId" class="img" mode="aspectFill"></image-preview>
</view>
<view @tap="upload" v-show="show_upload_button">
<view class=" add_icon"></view>
@@ -25,6 +25,14 @@
const show_upload_button = computed(() => {
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
const props = defineProps({
modelValue: {
@@ -56,19 +64,13 @@
fileId: res
})))
}
// else if ((typeof newVal === "String") && newVal !== '') {
// fileList.push({
// fileId: newVal
// })
// }
}, {
deep: true,
immediate: true
})
// 定义emits
const emits = defineEmits(['update:modelValue'])
onMounted(() => {
})
+2 -2
View File
@@ -2,8 +2,8 @@
"name" : "tra-app",
"appid" : "__UNI__EDE0E52",
"description" : "",
"versionName" : "0.0.2",
"versionCode" : 2,
"versionName" : "0.0.5",
"versionCode" : 5,
"transformPx" : false,
/* 5+App */
"app-plus" : {
+1 -1
View File
@@ -38,7 +38,7 @@
</template>
<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 props = defineProps({
answerType:{
+93 -90
View File
@@ -1,88 +1,84 @@
<template>
<view class="comment_div">
<scroll-view class="scroll-view" :scroll-y="true" :show-scrollbar="false">
<view class="message_div" v-for="(item,index) in message_list">
<view class="head_div">
<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 class="empty_message_div" v-if="message_list.length == 0">
<image class="img" src="@/static/images/courseDetail/empty_message.png"></image>
</view>
<!-- message_list -->
<view class="message_div" v-for="(item,index) in message_list">
<view class="head_div">
<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 class="msg_content">
<view class="title_div">
<view class="name">{{item.userName}}</view>
<view class="title_tip">{{item.bbsTagDesc}}</view>
</view>
<view class="title">
{{item.bbsContent}}
</view>
<view class="img_div pic-cell">
<image-preview v-for="img in item.imgIdList" :imgId="img" class="pic-item"></image-preview>
</view>
<view class="time_and_reply">
<view class="time">{{item.bbsTm.substr(0,16)}}</view>
<view class="reply" @click="click_reply(item, item.bbsId, index)">回复</view>
</view>
<view class="show_close_div" v-if="item.children?.length" @click="item.show = !item.show">
<template v-if="item.show">
<view>收起</view>
<view class="back_div">
<view class="back-icon"></view>
</view>
</template>
<template v-else>
<view>展开{{item.children?.length}}条回复</view>
<view class="back_div">
<view class="back-icon"></view>
</view>
</template>
</view>
<view class="children" v-if="item.show">
<view class="message_div" v-for="childrenItem in item.children">
<view class="head_div">
<image-preview v-if="childrenItem.userIconImgId" class="img-box img"
:src="childrenItem.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">{{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 class="title">
{{item.bbsContent}}
</view>
<view class="img_div pic-cell">
<image-preview v-for="img in item.imgIdList" :imgId="img" class="pic-item"></image-preview>
</view>
<view class="time_and_reply">
<view class="time">{{item.bbsTm.substr(0,16)}}</view>
<view class="reply" @click="click_reply(item, item.bbsId, index)">回复</view>
</view>
<view class="show_close_div" v-if="item.children?.length" @click="item.show = !item.show">
<template v-if="item.show">
<view>收起</view>
<view class="back_div">
<view class="back-icon"></view>
</view>
</template>
<template v-else>
<view>展开{{item.children?.length}}条回复</view>
<view class="back_div">
<view class="back-icon"></view>
</view>
</template>
</view>
<view class="children" v-if="item.show">
<view class="message_div" v-for="childrenItem in item.children">
<view class="head_div">
<image-preview v-if="childrenItem.userIconImgId" class="img-box img"
:src="childrenItem.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">{{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>
</view>
<view class="send_evaluate_div_height"></view>
</scroll-view>
</view>
<view class="send_evaluate_div">
<uv-button type="primary" class="send_evaluate"
@click="common.navigateTo('/pages/courseDetail/submit?crsNum='+props.crsNum+'&imgId='+props.imgId)">发布评价</uv-button>
</view>
<uni-popup ref="popup" background-color="red">
<view class="bottom_reply_input_div">
<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>
<view class="" style="display: flex;flex-direction: column; margin:10rpx 20rpx;">
<view class="fl1"></view>
@@ -169,22 +165,31 @@
Object.assign(message_list, body)
})
}
defineExpose({getData})
defineExpose({
getData
})
onMounted(() => {
getData()
})
</script>
<style lang="scss" scoped>
.empty_message_div{
display: flex;
justify-content: center;
padding: 80rpx 0;
.img{
width: 288rpx;
height: 276rpx;
}
}
.pic-cell {
width: 100%;
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
}
.pic-item {
margin-right: 16rpx;
width: 170rpx;
@@ -193,31 +198,29 @@
// background-color: red;
margin-bottom: 24rpx;
}
.send_evaluate_div_height {
height: 170rpx;
}
.send_evaluate_div {
position: absolute;
bottom: 0rpx;
width: calc(100% - 80rpx);
padding-top: 10rpx;
padding-bottom: 30rpx;
position: fixed;
left: 0;
bottom: 0;
width: 100%;
padding: 10rpx 20rpx 30rpx 20rpx;
// padding-top: 10rpx;
// padding-bottom: 30rpx;
background-color: #ffffff;
// background-color: red;
:deep(.uv-button-wrapper) {
.uv-button {
border-radius: 14rpx;
height: 92rpx;
}
}
}
.scroll-view {
position: relative;
height: calc(100vh - 88rpx - 162rpx - 256rpx - 50rpx);
overflow: hidden;
}
// 顶部随着输入法弹出的框
@@ -271,8 +274,6 @@
}
}
.message_div:not(:first-child) {
margin-top: 30rpx;
}
@@ -280,6 +281,8 @@
.message_div {
// margin-top: 30rpx;
display: flex;
margin-left: 20rpx;
margin-right: 20rpx;
.head_div {
.img {
@@ -401,11 +404,11 @@
}
.comment_div {
padding: 20rpx 20rpx 20rpx 40rpx;
padding: 20rpx 0 20rpx 0;
background-color: #ffffff;
border-radius: 24rpx;
position: relative;
height: calc(100vh - 88rpx - 162rpx - 256rpx - 70rpx);
overflow: hidden;
// height: calc(100vh - 88rpx - 162rpx - 256rpx - 70rpx);
// overflow: hidden;
}
</style>
@@ -32,7 +32,7 @@
</view>
</view>
<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>
+41 -12
View File
@@ -1,24 +1,26 @@
<template>
<view class="point-item mb-30" v-for="(item, index) in modelValue?.pgrphData || []" :key="item.index">
<view class="flex">
<view class="point-item mb-30" v-for="(item, index) in modelValue?.pgrphData || []" :key="item.index"
@click="toDetail(item)" :class="item.pgrphStdyStateName == '已学习' ? 'learn' : 'unlearn'">
<view class="top mb-30">
<view class="blue-ball">
<view class="ball"></view>
</view>
<view class="item-label" @click="toDetail(item)">
<view class="fz-30 font_pf fw-400 mb-30">知识点0{{ index + 1 }}</view>
<view class="fz-30 font_pf fw-400 mb-36">{{ item.pgrphContent }}</view>
<view class="fz-30 font_pf title">知识点0{{ index + 1 }}</view>
<view class="fl1">
</view>
<view class="font_pf fz-24 study-status" >
{{ item.pgrphStdyStateName }}
</view>
</view>
<view class="pt-8">
<view class="font_pf fz-24" :class="item.pgrphStdyStateName == '已学习' ? 'learn' : 'unlearn'">
{{ item.pgrphStdyStateName }}</view>
<view class="bottom">
<view class="fz-30 font_pf text">{{ item.pgrphContent }}</view>
</view>
</view>
</template>
<script setup>
import common from '@/common/common';
const emit = defineEmits(['toStudyPrgh'])
@@ -31,16 +33,43 @@
</script>
<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 {
background-color: #fff;
display: flex;
// display: flex;
padding-top: 24rpx;
padding-left: 36rpx;
padding-right: 52rpx;
padding-bottom: 36rpx;
border-radius: 22rpx;
justify-content: space-between;
// justify-content: space-between;
// margin-left: 16rpx;
// margin-right: 16rpx;
.top {
display: flex;
justify-content: space-between;
}
.bottom {
padding-left: 12rpx;
}
.blue-ball {
padding-top: 16rpx;
margin-right: 12rpx;
+102 -64
View File
@@ -1,80 +1,92 @@
<template>
<view class="max_page detail-main" style="overflow: hidden;">
<image src="/src/static/images/courseDetail/mipmap-xhdpi/bg.png" mode="widthFix" class="back-image"></image>
<view class="back_div" @click="common.navigateBack()">
<view class="back-icon"></view>
</view>
<view class="detail-body">
<view class="head-title font_pf">
<view class="title-text">{{ form.crsName }}</view>
<view class="title-num">
<view class="num-item">
<image class="title-icon" src="/src/static/images/courseDetail/mipmap-xhdpi/zhishidian.png"
mode="widthFix"></image>
<view class="mr-10">知识点</view>
<view class="c-000">{{ form.pgrphNum }}</view>
</view>
<view class="num-item">
<image class="title-icon" src="/src/static/images/courseDetail/mipmap-xhdpi/yixue.png"
mode="widthFix"></image>
<view class="mr-10">已学</view>
<view class="c-000">{{ form.styParaGraphNum }}</view>
<view class="max_page ">
<nav-bar :is_seat="false" :backgroundColor="bgOpacity"></nav-bar>
<scroll-view :scroll-y="tabAct!=4" class="scroll detail-main" @scroll="scroll_fun">
<view class="bg_div">
<image-preview class="img_100 " :imgId="form.imgId" mode="widthFix"></image-preview>
<!-- <image :src="form.imgId" mode="widthFix" class="back-image"></image> -->
</view>
<view class="back_div" @click="common.navigateBack()">
<view class="back-icon"></view>
</view>
<view class="detail-body">
<view class="head-title font_pf">
<view class="title-text">{{ form.crsName || '' }}</view>
<view class="title-num">
<view class="num-item">
<image class="title-icon" src="/src/static/images/courseDetail/zhishidian.png"
mode="widthFix"></image>
<view class="mr-10">知识点</view>
<view class="c-000">{{ form.pgrphNum || 0 }}</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 class="body-box">
<view class="body-tab">
<uv-tabs class="font_pf" :current="tabAct" :list="tabList" @change="tabSwitch" :scrollable="false"
line-color="#0066FF"
:active-style="{ color: '#323E57', 'font-weight': 600, 'font-size': '30rpx' }"
:inactive-style="{ color: '#666666', 'font-size': '30rpx' }"></uv-tabs>
</view>
<view class="body-box">
<view class="body-tab">
<uv-tabs class="font_pf" :current="tabAct" :list="tabList" @change="tabSwitch"
:scrollable="false" line-color="#0066FF"
:active-style="{ color: '#323E57', 'font-weight': 600, 'font-size': '30rpx' }"
:inactive-style="{ color: '#666666', 'font-size': '30rpx' }"></uv-tabs>
</view>
<view class="course-info" v-if="tabAct == 0">
<introduceVue v-model="form"></introduceVue>
</view>
<view class="point" v-if="tabAct == 1">
<knowledge v-model="form" @toStudyPrgh="toStudyPrgh"></knowledge>
</view>
<view class="evaluate" v-if="tabAct == 2">
<comment ref="commentRef" :crsNum="form.crsNum" :imgId="form.imgId"></comment>
</view>
<view class="course-info" v-if="tabAct == 0">
<introduceVue v-model="form"></introduceVue>
</view>
<view class="point" v-if="tabAct == 1">
<knowledge v-model="form" @toStudyPrgh="toStudyPrgh"></knowledge>
</view>
<view class="evaluate" v-if="tabAct == 2">
<comment ref="commentRef" :crsNum="form.crsNum" :imgId="form.imgId"></comment>
</view>
</view>
</view>
</view>
</scroll-view>
<view class="btn-box btn-box-height font_pf" v-if="[0,1].includes(tabAct)">
<uv-button type="primary"
@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>
<!-- <template v-if="tabAct == 2">
<uv-button type="primary" class="send_evaluate"
@click="common.navigateTo('/pages/courseDetail/submit?crsNum='+crsNum)">发布评价</uv-button>
</template> -->
<uv-button type="primary" class="send_evaluate"
@click="common.navigateTo('/pages/courseDetail/submit?crsNum='+crsNum)">发布评价</uv-button>
</template> -->
</view>
</view>
</template>
<script setup>
import {
reactive,
ref
ref,
computed
} from 'vue';
import {
onLoad,onShow
} from '@dcloudio/uni-app';
onShow,
onLoad,
onUnload
} from '@dcloudio/uni-app'
import {
getCourseDetailApi
} from '@/api/courseDetail.js';
// import {formatDate2} from '@/common/common.js'
import common from '@/common/common';
import introduceVue from './components/introduce.vue';
import knowledge from './components/knowledge.vue';
import comment from './components/comment.vue';
// tab栏
const tabList = ref([{
name: '课程介绍'
@@ -83,10 +95,12 @@
}, {
name: '评价'
}]);
const commentRef = ref(null);
const form = ref({});
const crsNum = ref('');
const tabAct = ref(0);
const scrollTop = ref(0);
const tabSwitch = (item) => {
tabAct.value = item.index;
};
@@ -98,41 +112,52 @@
});
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) => {
crsNum.value = params.crsNum;
getData();
});
onShow(() => {
if (common.getPageCache('GLOBAL_TRIGGER_UPDATE_REFRESH_KEY')) {
uni.$on('refresh_comment_data', () => {
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>
<style lang="scss" scoped>
.back_div {
margin-right: 10rpx;
position: absolute;
position: fixed;
left: 46rpx;
top: 64rpx;
.back-icon {
position: relative;
width: 40rpx;
height: 40rpx;
cursor: pointer;
}
.back-icon::before,
.back-icon::after {
content: '';
position: absolute;
transition: all 0.3s ease;
}
.back-icon::after {
top: 25%;
left: 25%;
@@ -143,21 +168,28 @@
transform: rotate(-45deg);
}
}
.detail-main {
background-color: #f5f5f5;
position: relative;
height: 100%;
overflow: hidden;
}
.scroll {
height: 100vh;
}
.detail-body {
box-sizing: border-box;
min-height: calc(100vh - 256rpx);
// min-height: calc(100vh - 256rpx);
position: absolute;
top: 256rpx;
border-radius: 23rpx 23rpx 0rpx 0rpx;
width: 100%;
display: flex;
flex-direction: column;
}
.body-head {
@@ -165,14 +197,20 @@
background-color: red;
}
.back-image {
position: absolute;
.bg_div {
position: fixed;
width: 100%;
.back-image {
width: 100%;
}
}
.head-title {
border-radius: 24rpx 24rpx 0rpx 0rpx;
height: 162rpx;
// height: 162rpx;
background-color: #ffffff;
display: flex;
flex-direction: column;
+9 -12
View File
@@ -18,21 +18,15 @@
<view class="tips font_pf">最多可添加4张图片</view>
<view class="num">
<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" /> -->
</view>
<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">
<!-- <uv-slider step="1" activeColor="#0066FF" :blockSize="14" v-model="formData.bbsGrade"
:min="0" :max="10"></uv-slider> -->
<slider :min="0" :max="10" :value="formData.bbsGrade" :step="0.1" :show-value="true"
<slider :min="0" :max="10" :value="10" @change="sliderChange" :step="0.1" :show-value="true"
:blockSize="14"></slider>
</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 class="tab">
@@ -78,6 +72,10 @@
"bbsContent": '', // 评价内容
})
const imgId = ref('')
const sliderChange = (event) => {
formData.bbsGrade = event.detail.value
}
const submit = () => {
if (formData.bbsContent === '') {
if (formData.bbsTag == 'SUG') {
@@ -89,9 +87,8 @@
publishCrsEvaluation(formData).then(res => {
common.msg('发表成功')
setTimeout(() => {
common.navigateBack(1, () => {
common.setPageCache('GLOBAL_TRIGGER_UPDATE_REFRESH_KEY', true)
})
uni.$emit('refresh_comment_data')
common.navigateBack()
}, 500)
})
}
+3 -3
View File
@@ -131,7 +131,7 @@
<uv-skeleton :loading="!item.crsNum" :rows="3" avatar avatar-shape="square" :title="false">
<view class="item" @click="goto_course_detail(item.crsNum)">
<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 class="right">
<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">
<view class="item" @click="goto_course_detail(item.crsNum)">
<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 class="right">
<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">
<view class="item" @click="goto_course_detail(item.crsNum)">
<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 class="right">
<view class="title ellipsis-text">{{item.crsName}}</view>

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

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