This commit is contained in:
zoujiandong
2025-06-10 17:40:29 +08:00
parent db955ff4f3
commit e25eb25063
11 changed files with 1341 additions and 675 deletions
+167 -93
View File
@@ -16,91 +16,126 @@
</view>
</view>
<view class="bar"></view>
<view class="box">
<view class="special">
<view class="titlebox">
<view class="title">精选病例</view>
<view class="more" @click="goList('read')">
<view class="morename">查看更多</view>
<u-icon name="arrow-right" size="16" color="#3CC7C0"></u-icon>
<view class="box">
<view class="special mostread" v-if="most_read_articles.length>0">
<view class="titlebox">
<view class="title">精选病例</view>
<view class="more" @click="goList('read')">
<view class="morename">查看更多</view>
<u-icon name="arrow-right" size="16" color="#3CC7C0"></u-icon>
</view>
</view>
<view class="list">
<view class="cell" v-for="item in most_read_articles" :key="item.exchange_id">
<view class="circle"></view>
<view class="title ellipsis-two-lines">{{ item.exchange_title }}</view>
</view>
</view>
</view>
<view class="list">
<view class="cell" v-for="item in most_read_articles" :key="item.article_id">
<view class="circle"></view>
<view class="title">{{ item.article_title }}</view>
<view class="bar"></view>
<view class="record special">
<view class="titlebox">
<view class="title">最新收录</view>
<view class="more" @click="goList('mew')">
<view class="morename">查看更多</view>
<u-icon name="arrow-right" size="16" color="#3CC7C0"></u-icon>
</view>
</view>
</view>
</view>
<view class="bar"></view>
<view class="record">
<view class="titlebox">
<view class="title">最新收录</view>
<view class="more" @click="goList('mew')">
<view class="morename">查看更多</view>
<u-icon name="arrow-right" size="16" color="#3CC7C0"></u-icon>
<view class="list">
<view
class="cell"
v-for="(item) in new_articles"
:key="item.exchange_id"
>
<view class="title ellipsis-two-lines">{{
item.exchange_title
}}</view>
<view class="doctor">
<up--image
:src="item.avatar ? item.avatar : headImg"
width="46rpx"
height="46rpx"
radius="50%"
></up--image>
<view class="name"
>{{ item.user_name }}({{ item.hospital_name }})</view
>
</view>
</view>
<view class="list">
<view class="cell" v-for="item in new_articles" :key="item.article_id">
<view class="title">{{ item.article_title }}</view>
<view class="doctor" v-for="cell in item.autor">
<up--image :src="headImg" width="46rpx" height="46rpx" radius="50%"></up--image>
<view class="name">{{cell.doctor_name}}({{cell.hospital_name}})</view>
<view class="content"> {{ item.exchange_content }} </view>
<view
class="imgbox"
v-if="
item.exchange_content_images &&
item.exchange_content_images.length > 0
"
>
<view
class="imgcell"
v-if="unit in item.exchange_content_images"
>
<up--image
:src="unit"
radius="10"
width="220rpx"
height="220rpx"
>
<view slot="error" style="font-size: 24rpx">加载失败</view>
</up--image>
</view>
<view class="content">
嘎嘎嘎嘎嘎嘎嘎嘎嘎嘎嘎嘎嘎嘎嘎XXXXX
</view>
<view class="videocon">
<view
class="imgbox"
v-if="
item.exchange_content_video &&
item.exchange_content_video.length > 0
"
>
<video
:key="index"
v-for="(videoCell, index) in item.exchange_content_video"
class="myVideo"
:src="videoCell"
@error="videoErrorCallback"
controls
></video>
</view>
<view class="imgbox">
<view class="imgcell">
<up--image src="https://cdn.uviewui.com/uview/album/1.jpg" radius="10" width="220rpx"
height="220rpx">
<view slot="error" style="font-size: 24rpx;">加载失败</view>
</up--image>
</view>
<view class="imgcell">
<up--image src="https://cdn.uviewui.com/uview/album/1.jpg" radius="10" width="220rpx"
height="220rpx">
<view slot="error" style="font-size: 24rpx;">加载失败</view>
</up--image>
</view>
<view class="imgcell">
<up--image src="https://cdn.uviewui.com/uview/album/1.jpg" radius="10" width="220rpx"
height="220rpx">
<view slot="error" style="font-size: 24rpx;">加载失败</view>
</up--image>
</view>
</view>
<view class="tagbox" v-if="item.label && item.label.length > 0">
<view
class="tag"
v-for="cell in item.label"
:key="cell.exchange_label_id"
>{{ cell.label_name }}</view
>
</view>
<view class="deal">
<view class="left">
<view class="eyebox item">
<up-icon name="eye" color="#4B5563" size="28rpx"></up-icon>
<view class="num">{{ item.read_num }}</view>
</view>
<view class="imgbox">
<video class="myVideo" src="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/2minute-demo.mp4"
@error="videoErrorCallback" controls></video>
<view class="collect item">
<up-icon
name="heart"
color="#4B5563"
size="28rpx"
></up-icon>
<view class="num">{{ item.collect_num }}</view>
</view>
<view class="tagbox">
<view class="tag">标签</view>
<view class="chat item">
<up-icon name="chat" color="#4B5563" size="28rpx"></up-icon>
<view class="num">{{ item.comment_num }}</view>
</view>
</view>
<view class="time">
<up-icon name="clock" color="#4B5563" size="28rpx"></up-icon>
<view class="num">{{ formatdate(item.push_date) }}</view>
</view>
<view class="deal">
<view class="left">
<view class="eyebox item">
<up-icon name="eye" color="#4B5563" size="28rpx"></up-icon>
<view class="num">{{ item.read_num }}</view>
</view>
<view class="collect item">
<up-icon :name="item.is_collect?'heart-fill':'heart'" :color="item.is_collect?'red':'#4B5563'" size="28rpx"></up-icon>
<view class="num">{{item.collect_num }}</view>
</view>
<view class="chat item">
<up-icon name="chat" color="#4B5563" size="28rpx"></up-icon>
<view class="num">{{item.comment_num }}</view>
</view>
</view>
<view class="time">
<up-icon name="clock" color="#4B5563" size="28rpx"></up-icon>
<view class="num">{{formatdate(item.push_date) }}</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
@@ -129,9 +164,16 @@
// })
// };
const goList=(type)=>{
uni.navigateTo({
url:'/pages/search/search?order='+type
})
if(type=='read'){
uni.navigateTo({
url:'/pages/specialList/specialList?is_selected=1'
})
}else{
uni.navigateTo({
url:'/pages/specialList/specialList'
})
}
};
const getStatic=()=>{
api.getExchangeStatic().then(res=>{
@@ -139,24 +181,50 @@
Object.assign(numInfo,result);
})
}
const getData = async() => {
const {data}=await api.getHomeData();
if(data.code==200){
most_read_articles.value=data.data.most_read_articles;
new_articles.value=data.data.new_articles;
}
};
const videoErrorCallback = (e) => {
uni.showModal({
content: e.target.errMsg,
showCancel: false
})
};
onLoad(()=>{
console.log('onLoad')
const searchList = async () => {
let searchForm = {
page: 1,
page_size: 10
};
api.searchExchage({
...searchForm
})
.then((res) => {
new_articles.value=res.data.data.data;
})
.catch((err) => {
});
};
const goodList=()=>{
api.searchExchageGood({
is_selected:1,
limit:5
}).then(res=>{
most_read_articles.value=res.data.data
})
}
const hotList=()=>{
api.searchExchageHot({
is_selected:0,
limit:5,
page:1,
page_size:5
}).then(res=>{
})
}
onLoad(()=>{
getStatic();
getData();
goodList();
searchList();
})
</script>
@@ -166,7 +234,14 @@
flex-direction: column;
height: calc(100vh - 100rpx);
}
.mostread{
.cell{
padding: 22rpx 0rpx!important;
margin:0 30rpx;
display: flex;
}
}
.box {
flex: 1;
padding-bottom: 30rpx;
@@ -224,6 +299,7 @@
padding: 0 28rpx;
background: #ECFAF9;
border-radius: 30rpx;
margin-right: 12rpx;
font-size: 27rpx;
color: #3CC7C0;
display: flex;
@@ -277,12 +353,10 @@
padding-top: 30rpx;
.list {
margin: 8rpx 30rpx 0;
margin: 8rpx 0rpx 0;
.cell {
padding: 22rpx 0;
display: flex;
border-bottom: 2rpx solid #f3f4f6;
padding: 22rpx 30rpx;
border-bottom: 2rpx solid #f3f4f6;
.circle {
margin-top: 15rpx;