Browse Source

1.0 首页&消息页联调

master
kola-web 5 days ago
parent
commit
946e10f493
  1. 2
      README.md
  2. 6
      src/pages/home/index.scss
  3. 92
      src/pages/home/index.ts
  4. 164
      src/pages/home/index.wxml
  5. 1
      src/pages/message/index.scss
  6. 29
      src/pages/message/index.ts
  7. 74
      src/pages/message/index.wxml

2
README.md

@ -9,7 +9,7 @@ https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c
images svn 地址 images svn 地址
svn://39.106.86.127:28386/projects/takeda/proj_src/shop/frontend/web/wt svn://39.106.86.127:28386/projects/takeda/proj_src/shop/frontend/web/wt
(/images/)(\S\*(?=["|'])) (/images/)(\S*(?=["|']))
{{imageUrl}}$2?t={{Timestamp}} {{imageUrl}}$2?t={{Timestamp}}
ui问题 ui问题

6
src/pages/home/index.scss

@ -69,8 +69,9 @@ page {
height: 100%; height: 100%;
} }
} }
.v-swiper { .notice {
position: relative; position: relative;
.v-swiper {
height: 384rpx; height: 384rpx;
border-radius: 32rpx; border-radius: 32rpx;
.swiper-item { .swiper-item {
@ -334,9 +335,12 @@ page {
} }
} }
} }
}
.dots { .dots {
position: absolute; position: absolute;
bottom: 16rpx; bottom: 16rpx;
left: 50%;
transform: translateX(-50%);
width: 100%; width: 100%;
display: flex; display: flex;
align-items: center; align-items: center;

92
src/pages/home/index.ts

@ -14,23 +14,23 @@ Page({
} as any, } as any,
userInfo: {}, userInfo: {},
unReadMsgCount: 0,
current: 0, current: 0,
notice: [],
bannerList: [], bannerList: [],
briefingList: [],
sopList: [],
list: [] as any[], list: [] as any[],
total: 0,
pagination: {
page: 1,
pages: 1,
count: 1,
},
}, },
onShow() { onShow() {
app.waitLogin({ type: 2 }).then(() => { app.waitLogin({ type: 2 }).then(() => {
// this.getNotice(); this.getNotice();
this.getBanner(); this.getBanner();
this.getBriefingList();
this.getSopList();
this.getList(); this.getList();
app.getUserInfo(2).then((userInfo) => { app.getUserInfo(2).then((userInfo) => {
this.setData({ this.setData({
@ -67,11 +67,16 @@ Page({
getNotice() { getNotice() {
wx.ajax({ wx.ajax({
method: 'GET', method: 'GET',
url: '?r=xd/doctor/index/get-unread-msg-count', url: '?r=xd/doctor/index/get-latest-mini-msg',
data: {}, data: {},
}).then((res) => { }).then((res) => {
this.setData({ this.setData({
unReadMsgCount: res.unReadMsgCount, notice: res.list.map((item) => {
item.year = dayjs(item.PublishDate).format('YYYY');
item.month = dayjs(item.PublishDate).format('MM');
item.day = dayjs(item.PublishDate).format('DD');
return item;
}),
}); });
}); });
}, },
@ -80,8 +85,25 @@ Page({
url: '/pages/message/index', url: '/pages/message/index',
}); });
}, },
handleNoticeDetail(e) {
const { index } = e.currentTarget.dataset;
const { Id, Url } = this.data.notice[index];
app.mpBehavior({ PositionId: '4', OperateType: '1', OperateId: Id });
if (Url) {
wx.navigateTo({
url: Url,
fail() {
wx.reLaunch({
url: Url,
});
},
});
}
},
handleSwiperChange(e) { handleSwiperChange(e) {
console.log('DEBUGPRINT[89]: index.ts:83: e=', e); const current = e.detail.current;
const { Id } = this.data.bannerList[current];
app.mpBehavior({ PositionId: '4', OperateType: '4', OperateId: Id });
this.setData({ this.setData({
current: e.detail.current, current: e.detail.current,
}); });
@ -111,24 +133,54 @@ Page({
}, },
}); });
}, },
getList() { getBriefingList() {
wx.ajax({ wx.ajax({
method: 'GET', method: 'GET',
url: '?r=xd/doctor/index/get-latest-material', url: '?r=xd/doctor/index/get-latest-material',
data: {}, data: {
count: 10,
ContentType: 1,
},
}).then((res) => { }).then((res) => {
res.list.forEach((item) => { res.list.forEach((item) => {
item.PublishTime = dayjs(item.PublishTime).format('YYYY-MM-DD'); item.PublishTime = dayjs(item.PublishTime).format('YYYY-MM-DD');
}); });
const list = res.page === 1 ? res.list : [...this.data.list, ...res.list];
this.setData({ this.setData({
total: res.count, briefingList: res.list,
list, });
pagination: { });
page: res.page,
pages: res.pages,
count: res.count,
}, },
getSopList() {
wx.ajax({
method: 'GET',
url: '?r=xd/doctor/index/get-latest-material',
data: {
count: 10,
ContentType: 2,
},
}).then((res) => {
res.list.forEach((item) => {
item.PublishTime = dayjs(item.PublishTime).format('YYYY-MM-DD');
});
this.setData({
sopList: res.list,
});
});
},
getList() {
wx.ajax({
method: 'GET',
url: '?r=xd/doctor/index/get-latest-material',
data: {
ContentType: 3,
count: 10,
},
}).then((res) => {
res.list.forEach((item) => {
item.PublishTime = dayjs(item.PublishTime).format('YYYY-MM-DD');
});
this.setData({
list: res.list,
}); });
}); });
}, },

164
src/pages/home/index.wxml

@ -20,122 +20,121 @@
</view> </view>
<view class="banner"> <view class="banner">
<view class="edc" bind:tap="handleWebview"> <view class="edc" bind:tap="handleWebview">
<image class="e-img" src="/images/card1.png"></image> <image class="e-img" src="{{imageUrl}}card1.png?t={{Timestamp}}"></image>
</view> </view>
<view class="notice">
<swiper class="v-swiper" current="{{current}}" bind:change="handleSwiperChange"> <swiper class="v-swiper" current="{{current}}" bind:change="handleSwiperChange">
<swiper-item class="swiper-item" wx:for="{{8}}" wx:key="index"> <swiper-item
class="swiper-item"
wx:for="{{notice}}"
wx:key="Id"
bind:tap="handleNoticeDetail"
data-index="{{index}}"
>
<!-- 文字 --> <!-- 文字 -->
<view class="item1" wx:if="{{false}}"> <view class="item1" wx:if="{{item.Type==1}}">
<view class="i-header"> <view class="i-header">
<view class="date"> <view class="date">
<view class="year">2025</view> <view class="year">{{item.year}}</view>
<view class="day"> <view class="day">
6 {{item.month}}
<text class="sub">月</text> <text class="sub">月</text>
1 {{item.day}}
<text class="sub">日</text> <text class="sub">日</text>
</view> </view>
</view> </view>
<image class="icon" src="/images/icon12.png"></image> <image class="icon" src="{{imageUrl}}icon12.png?t={{Timestamp}}"></image>
</view>
<view class="content">
您有一份甲状腺登记研究简报25.06第一期,该请查收您有一份甲状腺登记研究简报25.06第一期,该请查收
</view> </view>
<view class="content">{{item.Content}}</view>
</view> </view>
<!-- 伦理 --> <!-- 入组 -->
<view class="item2" wx:elif="{{false}}"> <view class="item4" wx:elif="{{item.Type==2}}">
<view class="i-header"> <view class="i-header">
<view class="date"> <view class="date">
<view class="year">2025</view> <view class="year">{{item.year}}</view>
<view class="day"> <view class="day">
6 {{item.month}}
<text class="sub">月</text> <text class="sub">月</text>
1 {{item.day}}
<text class="sub">日</text> <text class="sub">日</text>
</view> </view>
</view> </view>
<image class="icon" src="/images/icon13.png"></image> <image class="icon" src="{{imageUrl}}icon12.png?t={{Timestamp}}"></image>
</view> </view>
<view class="status1" wx:if="{{true}}"> <view class="num-line">
未通过 {{item.Composite}}
<image class="s-icon" src="/images/icon19.png"></image> <view class="sub">例入组</view>
</view>
<view class="status2" wx:elif="{{false}}">
未通过
<image class="s-icon" src="/images/icon20.png"></image>
</view>
<view class="status3" wx:elif="{{false}}">
未通过
<image class="s-icon" src="/images/icon21.png"></image>
</view>
<view class="name">
中国医科大学附属第一医院 中国医科大学附属第一医院 中国医科大学附属第一医院 中国医科大学附属第一医院
中国医科大学附属第一医院
</view> </view>
<view class="name">{{item.Content}}</view>
</view> </view>
<!-- edc --> <!-- 伦理 -->
<view class="item3" wx:elif="{{false}}"> <view class="item2" wx:elif="{{item.Type==3}}">
<view class="i-header"> <view class="i-header">
<view class="date"> <view class="date">
<view class="year">2025</view> <view class="year">{{item.year}}</view>
<view class="day"> <view class="day">
6 {{item.month}}
<text class="sub">月</text> <text class="sub">月</text>
1 {{item.day}}
<text class="sub">日</text> <text class="sub">日</text>
</view> </view>
</view> </view>
<image class="icon" src="/images/icon14.png"></image> <image class="icon" src="{{imageUrl}}icon13.png?t={{Timestamp}}"></image>
</view> </view>
<view class="status4" wx:if="{{true}}"> <view class="status1" wx:if="{{item.Composite==1}}">
已上会 通过
<image class="s-icon" src="/images/icon21.png"></image> <image class="s-icon" src="{{imageUrl}}icon19.png?t={{Timestamp}}"></image>
</view> </view>
<view class="status2" wx:elif="{{false}}"> <view class="status2" wx:elif="{{item.Composite==2}}">
未通过 未通过
<image class="s-icon" src="/images/icon20.png"></image> <image class="s-icon" src="{{imageUrl}}icon20.png?t={{Timestamp}}"></image>
</view> </view>
<view class="name"> <view class="status3" wx:elif="{{item.Composite==3}}">
中国医科大学附属第一医院 中国医科大学附属第一医院 中国医科大学附属第一医院 中国医科大学附属第一医院 已上会
中国医科大学附属第一医院 <image class="s-icon" src="{{imageUrl}}icon21.png?t={{Timestamp}}"></image>
</view> </view>
<view class="name">{{item.Content}}</view>
</view> </view>
<!-- 入组 --> <!-- edc -->
<view class="item4" wx:elif="{{false}}"> <view class="item3" wx:elif="{{item.Type==4}}">
<view class="i-header"> <view class="i-header">
<view class="date"> <view class="date">
<view class="year">2025</view> <view class="year">{{item.year}}</view>
<view class="day"> <view class="day">
6 {{item.month}}
<text class="sub">月</text> <text class="sub">月</text>
1 {{item.day}}
<text class="sub">日</text> <text class="sub">日</text>
</view> </view>
</view> </view>
<image class="icon" src="/images/icon12.png"></image> <image class="icon" src="{{imageUrl}}icon14.png?t={{Timestamp}}"></image>
</view> </view>
<view class="num-line"> <view class="status4" wx:if="{{item.Cmposite==1}}">
7 未申请
<view class="sub">例入组</view> <image class="s-icon" src="{{imageUrl}}icon21.png?t={{Timestamp}}"></image>
</view> </view>
<view class="name"> <view class="status2" wx:elif="{{item.Composite==2}}">
中国医科大学附属第一医院 中国医科大学附属第一医院 中国医科大学附属第一医院 中国医科大学附属第一医院 已申请
中国医科大学附属第一医院 <image class="s-icon" src="{{imageUrl}}icon20.png?t={{Timestamp}}"></image>
</view> </view>
<view class="name">{{item.Content}}</view>
</view> </view>
</swiper-item>
<swiper-item class="swiper-item" bind:tap="handleNotice" wx:key="none">
<!-- more --> <!-- more -->
<view class="item5"> <view class="item5">
<image class="icon1" src="/images/icon17.png"></image> <image class="icon1" src="{{imageUrl}}icon17.png?t={{Timestamp}}"></image>
<view class="title"> <view class="title">
查看更多 查看更多
<image class="icon2" src="/images/icon18.png"></image> <image class="icon2" src="{{imageUrl}}icon18.png?t={{Timestamp}}"></image>
</view> </view>
</view> </view>
</swiper-item> </swiper-item>
</swiper>
<view class="dots"> <view class="dots">
<view class="dot {{index==0 && 'active'}}" wx:for="{{6}}"></view> <view class="dot {{current==index && 'active'}}" wx:for="{{notice.length+1}}" wx:key="index"></view>
</view>
</view> </view>
</swiper>
</view> </view>
<view class="ad"> <view class="ad">
<swiper <swiper
@ -156,23 +155,25 @@
</swiper-item> </swiper-item>
</swiper> </swiper>
</view> </view>
<view class="briefing"> <view class="briefing" wx:if="{{briefingList.length > 0}}">
<view class="b-header"> <view class="b-header">
<image class="title" src="/images/title4.png"></image> <image class="title" src="{{imageUrl}}title4.png?t={{Timestamp}}"></image>
<view class="more"> <!-- <view class="more"> -->
查看全部 <!-- 查看全部 -->
<van-icon name="arrow" /> <!-- <van-icon name="arrow" /> -->
</view> <!-- </view> -->
</view> </view>
<view class="scroll"> <view class="scroll">
<image <image
wx:for="{{10}}" wx:for="{{briefingList}}"
wx:key="index" wx:key="index"
class="card" class="card"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567" src="{{item.CoverImgUrl}}"
bind:tap="handleDetail"
data-id="{{item.Id}}"
></image> ></image>
<view class="none"> <view class="none" wx:if="{{briefingList.length == 1}}">
<image class="icon" src="/images/none1.png"></image> <image class="icon" src="{{imageUrl}}none1.png?t={{Timestamp}}"></image>
<view class="content"> <view class="content">
更多内容 更多内容
<view></view> <view></view>
@ -182,22 +183,19 @@
</view> </view>
</view> </view>
<view class="sop"> <view class="sop" wx:if="{{sopList.length > 0}}">
<view class="s-header"> <view class="s-header">
<image class="title" src="/images/title5.png"></image> <image class="title" src="{{imageUrl}}title5.png?t={{Timestamp}}"></image>
</view> </view>
<view class="scroll"> <view class="scroll">
<view class="card" wx:for="{{10}}" wx:key="index"> <view class="card" wx:for="{{sopList}}" wx:key="index" bind:tap="handleDetail" data-id="{{item.Id}}">
<image <image class="photo" src="{{item.CoverImgUrl}}"></image>
class="photo"
src="https://pic1.zhimg.com/50/v2-dcfbab1219ae4f7a7a6db168bb1580a2_720w.jpg?source=2c26e567"
></image>
<view class="content"> <view class="content">
<view class="center">替妥尤单抗的作用机制、适用场景、使用方式</view> <view class="center">{{item.Title}}</view>
</view> </view>
</view> </view>
<view class="none"> <view class="none" wx:if="{{sopList.length == 1}}">
<image class="icon" src="/images/none1.png"></image> <image class="icon" src="{{imageUrl}}none1.png?t={{Timestamp}}"></image>
<view class="content"> <view class="content">
更多内容 更多内容
<view></view> <view></view>
@ -234,12 +232,12 @@
</view> </view>
</view> </view>
<view class="none"> <view class="none">
<image class="icon" src="/images/none2.png"></image> <image class="icon" src="{{imageUrl}}none2.png?t={{Timestamp}}"></image>
<view class="content">建设中 敬请期待...</view> <view class="content">建设中 敬请期待...</view>
</view> </view>
</view> </view>
<image class="bottom" src="/images/bottom1.png"></image> <image class="bottom" src="{{imageUrl}}bottom1.png?t={{Timestamp}}"></image>
</view> </view>
<popup <popup

1
src/pages/message/index.scss

@ -8,6 +8,7 @@ page {
padding: 32rpx 120rpx 32rpx 32rpx; padding: 32rpx 120rpx 32rpx 32rpx;
border-radius: 32rpx; border-radius: 32rpx;
background-color: #fff; background-color: #fff;
margin-bottom: 24rpx;
.stage { .stage {
position: absolute; position: absolute;
top: 26rpx; top: 26rpx;

29
src/pages/message/index.ts

@ -1,4 +1,5 @@
const app = getApp<IAppOption>(); const app = getApp<IAppOption>();
const dayjs = require('dayjs');
Page({ Page({
data: { data: {
@ -12,15 +13,27 @@ Page({
onLoad() { onLoad() {
app.waitLogin().then(() => { app.waitLogin().then(() => {
this.getList(); this.getList();
wx.setNavigationBarTitle({
title: '消息(20)',
}); });
},
handleDetail(e) {
const { index } = e.currentTarget.dataset;
const { Id, Url } = this.data.list[index];
app.mpBehavior({ PositionId: '4', OperateType: '1', OperateId: Id });
if (Url) {
wx.navigateTo({
url: Url,
fail() {
wx.reLaunch({
url: Url,
}); });
}, },
});
}
},
getList(newPage = 1) { getList(newPage = 1) {
wx.ajax({ wx.ajax({
method: 'GET', method: 'GET',
url: '?r=xd/doctor/index/get-msg-list', url: '?r=xd/doctor/index/get-mini-msg-list',
data: { data: {
page: newPage, page: newPage,
}, },
@ -28,13 +41,21 @@ Page({
const list = res.page === 1 ? res.list : [...this.data.list, ...res.list]; const list = res.page === 1 ? res.list : [...this.data.list, ...res.list];
this.setData({ this.setData({
total: res.count, total: res.count,
list, list: list.map((item) => {
item.year = dayjs(item.PublishDate).format('YYYY');
item.month = dayjs(item.PublishDate).format('MM');
item.day = dayjs(item.PublishDate).format('DD');
return item;
}),
pagination: { pagination: {
page: res.page, page: res.page,
pages: res.pages, pages: res.pages,
count: res.count, count: res.count,
}, },
}); });
wx.setNavigationBarTitle({
title: `消息(${res.count}`,
});
}); });
}, },
onReachBottom() { onReachBottom() {

74
src/pages/message/index.wxml

@ -1,52 +1,54 @@
<view class="page"> <view class="page">
<view class="card"> <view class="card" wx:for="{{list}}" wx:key="Id" data-index="{{index}}" bind:tap="handleDetail">
<image class="stage" src="/images/icon12.png"></image> <image wx:if="{{item.Type==1}}" class="stage" src="{{imageUrl}}icon12.png?t={{Timestamp}}"></image>
<image class="stage" src="/images/icon13.png"></image> <image wx:elif="{{item.Type==2}}" class="stage" src="{{imageUrl}}icon12.png?t={{Timestamp}}"></image>
<image class="stage" src="/images/icon14.png"></image> <image wx:elif="{{item.Type==3}}" class="stage" src="{{imageUrl}}icon13.png?t={{Timestamp}}"></image>
<view class="date">2025年 6月1日</view> <image wx:elif="{{item.Type==4}}" class="stage" src="{{imageUrl}}icon14.png?t={{Timestamp}}"></image>
<view class="wrap1"> <view class="date">{{item.year}}年 {{item.month}}月{{item.day}}日</view>
<view class="content">您有一份甲状腺登记研究简报(2025.06第一期),该请查收</view> <!-- 文字 -->
</view> <view class="wrap1" wx:if="{{item.Type==1}}">
<view class="wrap2"> <view class="content">{{item.Content}}</view>
<view class="status1" wx:if="{{true}}"> </view>
未通过 <!-- 入组 -->
<image class="s-icon" src="/images/icon19.png"></image> <view class="wrap4" wx:elif="{{item.Type==2}}">
</view> <view class="num-line">
<view class="status2" wx:elif="{{false}}"> 7
未通过 <view class="sub">例入组</view>
<image class="s-icon" src="/images/icon20.png"></image>
</view>
<view class="status3" wx:elif="{{false}}">
未通过
<image class="s-icon" src="/images/icon21.png"></image>
</view> </view>
<view class="name"> <view class="name">
中国医科大学附属第一医院 中国医科大学附属第一医院 中国医科大学附属第一医院 中国医科大学附属第一医院 {{item.Content}}
中国医科大学附属第一医院
</view> </view>
</view> </view>
<view class="wrap3"> <!-- 伦理 -->
<view class="status4" wx:if="{{true}}"> <view class="wrap2" wx:elif="{{item.Type==3}}">
未通过 <view class="status1" wx:if="{{item.Composite==1}}">
<image class="s-icon" src="/images/icon21.png"></image> 通过
<image class="s-icon" src="{{imageUrl}}icon19.png?t={{Timestamp}}"></image>
</view> </view>
<view class="status2" wx:elif="{{false}}"> <view class="status2" wx:elif="{{item.Composite==2}}">
未通过 未通过
<image class="s-icon" src="/images/icon20.png"></image> <image class="s-icon" src="{{imageUrl}}icon20.png?t={{Timestamp}}"></image>
</view>
<view class="status3" wx:elif="{{item.Composite==3}}">
已上会
<image class="s-icon" src="{{imageUrl}}icon21.png?t={{Timestamp}}"></image>
</view> </view>
<view class="name"> <view class="name">
中国医科大学附属第一医院 中国医科大学附属第一医院 中国医科大学附属第一医院 中国医科大学附属第一医院 {{item.Content}}
中国医科大学附属第一医院
</view> </view>
</view> </view>
<view class="wrap4"> <!-- edc -->
<view class="num-line"> <view class="wrap3" wx:elif="{{item.Type==4}}">
7 <view class="status4" wx:if="{{item.Cmposite==1}}">
<view class="sub">例入组</view> 未申请
<image class="s-icon" src="{{imageUrl}}icon21.png?t={{Timestamp}}"></image>
</view>
<view class="status2" wx:elif="{{item.Composite==2}}">
已申请
<image class="s-icon" src="{{imageUrl}}icon20.png?t={{Timestamp}}"></image>
</view> </view>
<view class="name"> <view class="name">
中国医科大学附属第一医院 中国医科大学附属第一医院 中国医科大学附属第一医院 中国医科大学附属第一医院 {{item.Content}}
中国医科大学附属第一医院
</view> </view>
</view> </view>
</view> </view>

Loading…
Cancel
Save