Browse Source

1v1沟通,页面开发

dev
kola-web 4 days ago
parent
commit
dff04274b7
  1. 11
      project.private.config.json
  2. 10
      src/components/pickerArea/index.scss
  3. 3
      src/components/pickerArea/index.wxml
  4. 30
      src/components/popup/index.scss
  5. 9
      src/components/popup/index.wxml
  6. 74
      src/custom-tab-bar/index.scss
  7. 68
      src/custom-tab-bar/index.ts
  8. 23
      src/custom-tab-bar/index.wxml
  9. 19
      src/gift/pages/dtpDurg/index.scss
  10. 6
      src/gift/pages/dtpDurg/index.wxml
  11. BIN
      src/images/bg33.png
  12. BIN
      src/images/bg34.png
  13. BIN
      src/images/bg35.png
  14. BIN
      src/images/icon100.png
  15. BIN
      src/images/icon90.png
  16. BIN
      src/images/icon92.png
  17. BIN
      src/images/icon93.png
  18. BIN
      src/images/icon94.png
  19. BIN
      src/images/icon97.png
  20. BIN
      src/images/icon98.png
  21. BIN
      src/images/icon99.png
  22. BIN
      src/images/za-images/3/icon-send-date.png
  23. BIN
      src/images/za-images/icon6.png
  24. 16
      src/pages/d_interactive/index.scss
  25. 2
      src/pages/d_interactive/index.wxml
  26. 104
      src/pages/d_interactiveDoctor/index.scss
  27. 38
      src/pages/d_interactiveDoctor/index.ts
  28. 39
      src/pages/d_interactiveDoctor/index.wxml
  29. 18
      src/pages/home/index.ts
  30. 2
      src/pages/home/index.wxml
  31. 2
      src/pages/message/index.wxml
  32. 1
      src/patient/pages/doctor/index.ts
  33. 72
      src/patient/pages/hospital/index.scss
  34. 31
      src/patient/pages/hospital/index.wxml
  35. 11
      src/patient/pages/infusionCenter/index.scss
  36. 6
      src/patient/pages/infusionCenter/index.wxml
  37. 3
      src/patient/pages/interactivePatient/index.json
  38. 143
      src/patient/pages/interactivePatient/index.scss
  39. 62
      src/patient/pages/interactivePatient/index.ts
  40. 117
      src/patient/pages/interactivePatient/index.wxml

11
project.private.config.json

@ -23,11 +23,18 @@
"miniprogram": { "miniprogram": {
"list": [ "list": [
{ {
"name": "11",
"pathName": "patient/pages/certReslove/index",
"query": "",
"scene": null,
"launchMode": "default"
},
{
"name": "药房", "name": "药房",
"pathName": "gift/pages/dtpDurg/index", "pathName": "gift/pages/dtpDurg/index",
"query": "id=10", "query": "id=10",
"scene": null, "launchMode": "default",
"launchMode": "default" "scene": null
}, },
{ {
"name": "就诊地图", "name": "就诊地图",

10
src/components/pickerArea/index.scss

@ -41,7 +41,7 @@
padding: 18rpx 30rpx; padding: 18rpx 30rpx;
box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(0, 0, 0, 0.11); box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(0, 0, 0, 0.11);
border-radius: 12rpx 12rpx 12rpx 12rpx; border-radius: 12rpx 12rpx 12rpx 12rpx;
border: 2rpx solid #e04775; border: 2rpx solid #B982FF;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
@ -69,7 +69,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
background: #e04775; background: linear-gradient( 197deg, #FFBCF9 0%, #B982FF 100%);
border-radius: 12rpx 12rpx 12rpx 12rpx; border-radius: 12rpx 12rpx 12rpx 12rpx;
} }
} }
@ -91,7 +91,7 @@
background: #f7f8f9; background: #f7f8f9;
&.active { &.active {
color: #fff; color: #fff;
background-color: rgba(224, 71, 117, 1); background-color: #B982FF;
} }
} }
} }
@ -118,9 +118,9 @@
height: 36rpx; height: 36rpx;
} }
&.active { &.active {
color: rgba(224, 71, 117, 1); color: #B982FF;
.word { .word {
color: rgba(224, 71, 117, 1); color: #B982FF;
} }
} }
} }

3
src/components/pickerArea/index.wxml

@ -4,7 +4,8 @@
<view class="popup"> <view class="popup">
<van-icon catch:tap="handleClose" class="close" name="cross" /> <van-icon catch:tap="handleClose" class="close" name="cross" />
<view class="p-header"> <view class="p-header">
<view class="title">选择省份和地区</view> <view class="title" wx:if="{{active===1}}">选择您的地区</view>
<view class="title" wx:else>选择您的省份</view>
<!-- <view class="tip">对方打开后自动定位此地区</view> --> <!-- <view class="tip">对方打开后自动定位此地区</view> -->
<view class="area"> <view class="area">
<view class="item" bind:tap="handleProvince"> <view class="item" bind:tap="handleProvince">

30
src/components/popup/index.scss

@ -207,6 +207,36 @@
} }
} }
.popup9 {
padding: 32rpx;
width: 530rpx;
height: 452rpx;
box-sizing: border-box;
background-color: #fff;
text-align: center;
.icon {
width: 128rpx;
height: 128rpx;
}
.title {
margin-top: 24rpx;
font-size: 32rpx;
color: #211d2e;
font-weight: bold;
line-height: 40rpx;
}
.btn {
margin: 36rpx auto 0;
width: 418rpx;
height: 88rpx;
line-height: 88rpx;
font-size: 32rpx;
color: #FFFFFF;
background: linear-gradient(197deg, #ffbcf9 0%, #b982ff 100%);
border-radius: 100rpx 100rpx 100rpx 100rpx;
}
}
.close { .close {
margin: 48rpx auto 0; margin: 48rpx auto 0;
display: block; display: block;

9
src/components/popup/index.wxml

@ -72,6 +72,15 @@
<image class="p-img" src="{{imageUrl}}bg23.png?t={{Timestamp}}"></image> <image class="p-img" src="{{imageUrl}}bg23.png?t={{Timestamp}}"></image>
<image class="code" src="{{params.subscribe_img}}" show-menu-by-longpress></image> <image class="code" src="{{params.subscribe_img}}" show-menu-by-longpress></image>
</view> </view>
<view class="popup9" wx:if="{{type==='popup9'}}">
<image class="icon" src="/images/icon100.png"></image>
<view class="title">
文字包含不合规内容
<view></view>
请修改后重新提交
</view>
<view class="btn">知道了</view>
</view>
<image <image
wx:if="{{params.close}}" wx:if="{{params.close}}"

74
src/custom-tab-bar/index.scss

@ -4,76 +4,6 @@
justify-content: space-between; justify-content: space-between;
background-color: #fff; background-color: #fff;
box-shadow: 0rpx 3rpx 27rpx 0rpx rgba(40, 48, 49, 0.1); box-shadow: 0rpx 3rpx 27rpx 0rpx rgba(40, 48, 49, 0.1);
.custom {
flex-shrink: 0;
position: relative;
width: 94rpx;
height: 64rpx;
.add {
position: absolute;
top: -42rpx;
width: 94rpx;
height: 94rpx;
}
.popup-tip {
padding: 20rpx 34rpx 28rpx;
position: absolute;
top: -60rpx;
left: 50%;
transform: translate(-50%, -100%);
border-radius: 16rpx;
background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%);
box-shadow: 0 4rpx 11rpx rgba(0, 0, 0, 0.08);
.close {
position: absolute;
top: -10rpx;
right: -10rpx;
width: 40rpx;
height: 40rpx;
}
.content {
text-align: center;
font-size: 32rpx;
color: #fff;
white-space: nowrap;
line-height: 48rpx;
.plus {
color: #fff;
font-size: 48rpx;
font-weight: bold;
}
}
.pt-footer {
margin-top: 16rpx;
display: flex;
align-items: center;
justify-content: center;
gap: 24rpx;
white-space: nowrap;
.ok {
padding: 16rpx 42rpx;
font-size: 24rpx;
color: #00b4c5;
font-size: 32rpx;
line-height: 32rpx;
border-radius: 120rpx;
background: #fff;
}
}
&::after {
position: absolute;
content: "";
bottom: -10rpx;
left: 50%;
transform: translateX(-50%);
width: 0;
height: 0;
border-style: solid;
border-width: 12rpx 12rpx 0 12rpx;
border-color: #56cabb transparent transparent transparent;
}
}
}
.tab-item { .tab-item {
position: relative; position: relative;
padding-top: 10rpx; padding-top: 10rpx;
@ -110,7 +40,7 @@
.name { .name {
margin-top: 8rpx; margin-top: 8rpx;
font-size: 22rpx; font-size: 22rpx;
color: rgba(20, 21, 21, 1); color: #69686E;
line-height: 21rpx; line-height: 21rpx;
} }
&.active { &.active {
@ -123,7 +53,7 @@
} }
} }
.name { .name {
color: rgba(0, 180, 197, 1); color: #211D2E;
} }
} }
} }

68
src/custom-tab-bar/index.ts

@ -1,4 +1,4 @@
const _app = getApp<IAppOption>(); const _app = getApp<IAppOption>()
// pages/story/a.ts // pages/story/a.ts
Component({ Component({
@ -16,37 +16,33 @@ Component({
notice: false, notice: false,
tabbar: [ tabbar: [
{ {
path: "/pages/home/index", path: '/pages/home/index',
name: "首页", name: '首页',
icon: "tab1.png", icon: 'tab1.png',
iconActive: "tab-active1.png", iconActive: 'tab-active1.png',
activeIndex: 1, activeIndex: 0,
}, },
{ {
path: "/pages/cases/index", path: '/pages/information/index',
name: "病历", name: '资料库',
icon: "tab2.png", icon: 'tab2.png',
iconActive: "tab-active2.png", iconActive: 'tab-active2.png',
activeIndex: 2, activeIndex: 1,
}, },
{ {
custom: true, path: '/pages/d_interactive/index',
path: "/module1/pages/entryCases/index", name: '互动',
icon: 'tab3.png',
iconActive: 'tab-active3.png',
activeIndex: 2,
}, },
{ {
path: "/pages/chatRoomList/index", path: '/pages/my/index',
name: "学习窗", name: '我的',
icon: "tab3.png", icon: 'tab4.png',
iconActive: "tab-active3.png", iconActive: 'tab-active4.png',
activeIndex: 3, activeIndex: 3,
}, },
{
path: "/pages/my/index",
name: "我的",
icon: "tab4.png",
iconActive: "tab-active4.png",
activeIndex: 4,
},
], ],
userInfo: {}, userInfo: {},
}, },
@ -55,20 +51,16 @@ Component({
*/ */
methods: { methods: {
handleTab(e: any) { handleTab(e: any) {
const { index } = e.currentTarget.dataset; const { index } = e.currentTarget.dataset
const tab = this.data.tabbar[index]; const tab = this.data.tabbar[index]
if (tab.custom) { this.setData({
this.handleClsoeCaseTip(); active: tab.activeIndex,
wx.navigateTo({ })
url: tab.path, wx.switchTab({
}); url: tab.path,
} else { })
wx.switchTab({
url: tab.path,
});
}
}, },
}, },
}); })
export {}; export {}

23
src/custom-tab-bar/index.wxml

@ -1,27 +1,6 @@
<view class="tabbar"> <view class="tabbar">
<block wx:for="{{tabbar}}" wx:key="index"> <block wx:for="{{tabbar}}" wx:key="index">
<view class="custom" wx:if="{{item.custom && userInfo.DoctorLevel<3}}" bind:tap="handleTab" data-index="{{index}}"> <view class="tab-item {{active==item.activeIndex && 'active'}}" bind:tap="handleTab" data-index="{{index}}">
<image class="add" src="{{imageUrl}}tabbar/add.png?t={{Timestamp}}"></image>
<view class="popup-tip" wx:if="{{showEntryCase}}">
<image class="close" catch:tap="handleClsoeCaseTip" src="{{imageUrl}}icon-close-white.png?t={{Timestamp}}"></image>
<view class="content">
点击
<text class="plus">+</text>
,可录入病历
<view></view>
邀约合作医生一起讨论哦
</view>
<view class="pt-footer">
<view class="ok">去录入</view>
</view>
</view>
</view>
<view
class="tab-item {{active===item.activeIndex && 'active'}}"
wx:elif="{{!item.custom}}"
bind:tap="handleTab"
data-index="{{index}}"
>
<view class="icon-wrap"> <view class="icon-wrap">
<view class="dot" wx:if="{{notice && index===3}}"></view> <view class="dot" wx:if="{{notice && index===3}}"></view>
<image class="icon" src="{{imageUrl}}tabbar/{{item.icon}}?t={{Timestamp}}"></image> <image class="icon" src="{{imageUrl}}tabbar/{{item.icon}}?t={{Timestamp}}"></image>

19
src/gift/pages/dtpDurg/index.scss

@ -12,7 +12,7 @@
width: 100%; width: 100%;
min-height: 100vh; min-height: 100vh;
border-radius: 24rpx 24rpx 0 0; border-radius: 24rpx 24rpx 0 0;
background-color: #FFFFFF; background-color: #ffffff;
box-sizing: border-box; box-sizing: border-box;
.title { .title {
font-size: 36rpx; font-size: 36rpx;
@ -26,12 +26,12 @@
justify-content: space-between; justify-content: space-between;
.inner { .inner {
.site { .site {
font-size: 28rpx; font-size: 32rpx;
color: #adacb2; color: #211d2e;
} }
.tel { .tel {
font-size: 28rpx; font-size: 32rpx;
color: #adacb2; color: #211d2e;
} }
} }
} }
@ -50,6 +50,7 @@
border-radius: 60rpx 60rpx 60rpx 60rpx; border-radius: 60rpx 60rpx 60rpx 60rpx;
border: 1px solid #b982ff; border: 1px solid #b982ff;
.icon { .icon {
margin-right: 8rpx;
display: inline-block; display: inline-block;
width: 36rpx; width: 36rpx;
height: 36rpx; height: 36rpx;
@ -65,6 +66,7 @@
text-align: center; text-align: center;
background: linear-gradient(197deg, #ffbcf9 0%, #b982ff 100%); background: linear-gradient(197deg, #ffbcf9 0%, #b982ff 100%);
.icon { .icon {
margin-right: 8rpx;
display: inline-block; display: inline-block;
width: 32rpx; width: 32rpx;
height: 32rpx; height: 32rpx;
@ -77,16 +79,17 @@
margin-top: 56rpx; margin-top: 56rpx;
padding: 32rpx; padding: 32rpx;
border-radius: 24rpx; border-radius: 24rpx;
background-color: #FAFAFA; background-color: #fafafa;
.r-title { .r-title {
font-size: 32rpx; font-size: 32rpx;
color: #211D2E; color: #211d2e;
font-weight: bold; font-weight: bold;
} }
.r-content { .r-content {
margin-top: 20rpx; margin-top: 20rpx;
font-size: 28rpx; font-size: 28rpx;
color: #69686E; color: #69686e;
word-break: break-all;
} }
} }
} }

6
src/gift/pages/dtpDurg/index.wxml

@ -1,6 +1,6 @@
<view class="page"> <view class="page">
<image wx:if="{{detail.ImgUrl}}" class="banner" mode="widthFix" src="{{detail.ImgUrl}}"></image> <!-- <image wx:if="{{detail.ImgUrl}}" class="banner" mode="widthFix" src="{{detail.ImgUrl}}"></image> -->
<image wx:else class="banner" mode="widthFix" src="{{imageUrl}}bg25.png?t={{Timestamp}}"></image> <image class="banner" mode="widthFix" src="{{imageUrl}}bg34.png?t={{Timestamp}}"></image>
<view class="container"> <view class="container">
<view class="title">{{detail.Name}}</view> <view class="title">{{detail.Name}}</view>
<view class="content"> <view class="content">
@ -16,7 +16,7 @@
</view> </view>
<view class="site" bind:tap="handleSite" wx:if="{{detail.Address}}"> <view class="site" bind:tap="handleSite" wx:if="{{detail.Address}}">
<image class="icon" src="{{imageUrl}}icon96.png?t={{Timestamp}}"></image> <image class="icon" src="{{imageUrl}}icon96.png?t={{Timestamp}}"></image>
地址 地址{{detail.dist}}
</view> </view>
</view> </view>
<view class="remark" wx:if="{{detail.Remark}}"> <view class="remark" wx:if="{{detail.Remark}}">

BIN
src/images/bg33.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 495 KiB

BIN
src/images/bg34.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 KiB

BIN
src/images/bg35.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 KiB

BIN
src/images/icon100.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
src/images/icon90.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
src/images/icon92.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
src/images/icon93.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 740 B

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
src/images/icon94.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 810 B

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
src/images/icon97.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 789 B

After

Width:  |  Height:  |  Size: 566 B

BIN
src/images/icon98.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 B

BIN
src/images/icon99.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 877 B

BIN
src/images/za-images/3/icon-send-date.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
src/images/za-images/icon6.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 283 B

After

Width:  |  Height:  |  Size: 308 B

16
src/pages/d_interactive/index.scss

@ -62,12 +62,18 @@ page {
.dot { .dot {
position: absolute; position: absolute;
top: 0; top: 0;
right: 0; right: 10rpx;
width: 18rpx; transform: translateX(50%);
height: 18rpx; padding: 0 5rpx;
min-width: 32rpx;
height: 32rpx;
text-align: center;
font-size: 20rpx;
color: #ffffff;
border: 2rpx solid #ffffff; border: 2rpx solid #ffffff;
border-radius: 50%; border-radius: 16rpx;
background: #d76c6c; background: #ef3939;
box-sizing: border-box;
} }
} }
.wrap { .wrap {

2
src/pages/d_interactive/index.wxml

@ -33,7 +33,7 @@
<view class="list-item" wx:for="{{list}}" wx:key="index" bind:tap="handleDetail" data-index="{{index}}"> <view class="list-item" wx:for="{{list}}" wx:key="index" bind:tap="handleDetail" data-index="{{index}}">
<view class="avatar"> <view class="avatar">
<image class="a-img" src="{{item.userAvatar}}"></image> <image class="a-img" src="{{item.userAvatar}}"></image>
<view class="dot" wx:if="{{item.msgReadStatus==='2'}}"></view> <view class="dot" wx:if="{{item.msgReadStatus==='2'}}">1</view>
</view> </view>
<view class="wrap"> <view class="wrap">
<view class="w-header"> <view class="w-header">

104
src/pages/d_interactiveDoctor/index.scss

@ -468,26 +468,34 @@ page {
padding: 32rpx 30rpx calc(32rpx + env(safe-area-inset-bottom)); padding: 32rpx 30rpx calc(32rpx + env(safe-area-inset-bottom));
box-sizing: border-box; box-sizing: border-box;
display: flex; display: flex;
gap: 28rpx; gap: 10rpx;
border-radius: 32rpx 32rpx 0 0; border-radius: 32rpx 32rpx 0 0;
box-shadow: 0rpx 8rpx 16rpx 0rpx rgba(40, 48, 49, 0.04); box-shadow: 0rpx 8rpx 16rpx 0rpx rgba(40, 48, 49, 0.04);
border: 2rpx solid #ffffff; border: 2rpx solid #ffffff;
background-color: #fff; background-color: #fff;
.send { .send {
padding: 0 12rpx 0 32rpx;
flex: 1; flex: 1;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: space-between;
font-size: 32rpx; border-radius: 98rpx;
color: rgba(40, 48, 49, 1); background-color: #f6f8f9;
height: 76rpx; .content {
background: #ffffff; padding: 10rpx 0;
box-shadow: 0rpx 8rpx 16rpx 0rpx rgba(40, 48, 49, 0.04); flex: 1;
border-radius: 140rpx 140rpx 140rpx 140rpx; color: #adacb2;
border: 2rpx solid #f2f4f5; }
.icon { .btn {
width: 36rpx; flex-shrink: 0;
height: 36rpx; width: 188rpx;
height: 64rpx;
line-height: 64rpx;
font-size: 32rpx;
color: #ffffff;
text-align: center;
background: linear-gradient(197deg, #ffbcf9 0%, #b982ff 100%);
border-radius: 111rpx 111rpx 111rpx 111rpx;
} }
} }
.send-date { .send-date {
@ -503,6 +511,74 @@ page {
} }
} }
.custom-input {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
padding: 30rpx;
box-sizing: border-box;
border-radius: 32rpx 32rpx 0 0;
background-color: #fff;
.icon {
position: relative;
width: 36rpx;
height: 36rpx;
overflow: visible;
&::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 60rpx;
height: 60rpx;
background-color: transparent;
}
}
.wrap {
margin-top: 14rpx;
position: relative;
padding: 32rpx 32rpx 24rpx;
border-radius: 24rpx;
background-color: #f6f8f9;
.textarea {
width: 100%;
display: block;
height: 300rpx;
box-sizing: border-box;
padding-bottom: 80rpx;
.ka-container {
padding: 30rpx 62rpx;
display: flex;
align-items: center;
justify-content: space-between;
.stat {
font-size: 28rpx;
color: #adacb2;
}
.send-btn {
width: 128rpx;
height: 64rpx;
text-align: center;
line-height: 64rpx;
font-size: 32rpx;
color: #ffffff;
background: #b982ff linear-gradient(197deg, #ffbcf9 0%, #b982ff 100%);
border-radius: 111rpx 111rpx 111rpx 111rpx;
}
}
}
}
&.custom-input-max {
.wrap {
.textarea {
height: 43vh;
}
}
}
}
.popup-message { .popup-message {
padding: 30rpx; padding: 30rpx;
background-color: rgba(242, 244, 245, 1); background-color: rgba(242, 244, 245, 1);
@ -526,7 +602,7 @@ page {
background-color: #fff; background-color: #fff;
&.active { &.active {
color: #fff; color: #fff;
background-color: #B982FF; background-color: #b982ff;
} }
} }
} }
@ -537,7 +613,7 @@ page {
font-size: 36rpx; font-size: 36rpx;
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
font-weight: bold; font-weight: bold;
background: linear-gradient( 197deg, #FFBCF9 0%, #B982FF 100%); background: linear-gradient(197deg, #ffbcf9 0%, #b982ff 100%);
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;

38
src/pages/d_interactiveDoctor/index.ts

@ -28,6 +28,10 @@ Page({
messageListShow: false, messageListShow: false,
patientDetail: {}, patientDetail: {},
inputShow: false,
maxTextArea: false,
focus: false,
isLoad: false, isLoad: false,
isFinish: false, isFinish: false,
scrollTop: 0, scrollTop: 0,
@ -97,7 +101,8 @@ Page({
}) })
}, },
getMessageList() { getMessageList() {
if (this.data.isLoad || this.data.isFinish) return if (this.data.isLoad || this.data.isFinish)
return
this.setData({ this.setData({
isLoad: true, isLoad: true,
}) })
@ -236,6 +241,17 @@ Page({
messageListShow: false, messageListShow: false,
}) })
}, },
handleInputShow() {
this.setData({
inputShow: true,
focus: true,
})
},
toggleMaxTextarea() {
this.setData({
maxTextArea: !this.data.maxTextArea,
})
},
handleWord(e) { handleWord(e) {
const { index } = e.currentTarget.dataset const { index } = e.currentTarget.dataset
this.setData({ this.setData({
@ -325,11 +341,14 @@ Page({
let msgCreateTimeName = '' let msgCreateTimeName = ''
if (dayjs().format('YYYY-MM-DD') === dayjs(date).format('YYYY-MM-DD')) { if (dayjs().format('YYYY-MM-DD') === dayjs(date).format('YYYY-MM-DD')) {
msgCreateTimeName = dayjs(date).format('HH:mm') msgCreateTimeName = dayjs(date).format('HH:mm')
} else if (dayjs().format('YYYY-MM-DD') === dayjs(date).add(1, 'day').format('YYYY-MM-DD')) { }
else if (dayjs().format('YYYY-MM-DD') === dayjs(date).add(1, 'day').format('YYYY-MM-DD')) {
msgCreateTimeName = `昨天 ${dayjs(date).format('HH:mm')}` msgCreateTimeName = `昨天 ${dayjs(date).format('HH:mm')}`
} else if (dayjs().diff(date, 'day') < 7) { }
else if (dayjs().diff(date, 'day') < 7) {
msgCreateTimeName = dayjs(date).format(`dddd HH:mm`) msgCreateTimeName = dayjs(date).format(`dddd HH:mm`)
} else { }
else {
msgCreateTimeName = dayjs(date).format('YYYY-MM-DD HH:mm') msgCreateTimeName = dayjs(date).format('YYYY-MM-DD HH:mm')
} }
return msgCreateTimeName return msgCreateTimeName
@ -344,7 +363,8 @@ Page({
item.showTime = true item.showTime = true
preTime = dayjs(item.msgCreateTime).valueOf() preTime = dayjs(item.msgCreateTime).valueOf()
item.msgCreateTimeName = this.formatTime(item.msgCreateTime) item.msgCreateTimeName = this.formatTime(item.msgCreateTime)
} else { }
else {
const curTime = dayjs(item.msgCreateTime).valueOf() const curTime = dayjs(item.msgCreateTime).valueOf()
if (curTime - preTime > gapTime) { if (curTime - preTime > gapTime) {
item.showTime = true item.showTime = true
@ -443,6 +463,14 @@ Page({
}, },
}) })
}, },
handleHideKeyboard() {
if (this.data.inputShow) {
this.setData({
inputShow: false,
focus: false,
})
}
},
handleBack() { handleBack() {
wx.navigateBack() wx.navigateBack()
}, },

39
src/pages/d_interactiveDoctor/index.wxml

@ -4,6 +4,7 @@
<view <view
class="page" class="page"
style="background: url('{{imageUrl}}bg10.png?t={{Timestamp}}') no-repeat top center/100% 610rpx;padding-top:{{pageTop+21}}px;" style="background: url('{{imageUrl}}bg10.png?t={{Timestamp}}') no-repeat top center/100% 610rpx;padding-top:{{pageTop+21}}px;"
bind:tap="handleHideKeyboard"
> >
<view class="page-header"> <view class="page-header">
<view class="user"> <view class="user">
@ -146,14 +147,48 @@
</scroll-view> </scroll-view>
</view> </view>
<view class="page-footer"> <view class="page-footer">
<view class="send" bind:tap="handleSendShow">发送消息</view> <view class="send">
<view class="content" catch:tap="handleInputShow">输入文字</view>
<view class="btn" catch:tap="handleSendShow">发送消息</view>
</view>
<view class="send-date" bind:tap="handleSendDate"> <view class="send-date" bind:tap="handleSendDate">
<image class="icon" src="{{imageUrl}}za-images/3/icon-send-date.png?t={{Timestamp}}"></image> <image class="icon" src="{{imageUrl}}za-images/3/icon-send-date.png?t={{Timestamp}}"></image>
<view>我的出诊时间</view> <view>出诊时间</view>
</view> </view>
</view> </view>
</view> </view>
<view wx:if="{{inputShow}}" class="custom-input {{maxTextArea && 'custom-input-max'}}">
<image
wx:if="{{maxTextArea}}"
class="icon"
src="{{imageUrl}}icon98.png?t={{Timestamp}}"
catch:tap="toggleMaxTextarea"
></image>
<image wx:else class="icon" src="{{imageUrl}}icon97.png?t={{Timestamp}}" catch:tap="toggleMaxTextarea"></image>
<view class="wrap" catch:tap="catchFooterInput">
<textarea
class="textarea"
focus="{{focus}}"
hold-keyboard
disable-default-padding
confirm-type="send"
adjust-keyboard-to="bottom"
maxlength="{{500}}"
placeholder="输入您的问题"
bind:blur="bindblur"
>
<keyboard-accessory class="ka" style="height: 50px;">
<cover-view class="ka-container">
<cover-view class="stat">0/500</cover-view>
<cover-view class="send-btn">发送</cover-view>
</cover-view>
</keyboard-accessory>
</textarea>
<view class="w-footer"></view>
</view>
</view>
<van-popup <van-popup
show="{{ messageListShow }}" show="{{ messageListShow }}"
style="--popup-close-icon-color: #283031" style="--popup-close-icon-color: #283031"

18
src/pages/home/index.ts

@ -40,6 +40,10 @@ Page({
}, },
}, },
onShow() { onShow() {
wx.setTabBarBadge({
index: 2,
text: '99',
})
app.waitLogin({ type: [2] }).then(() => { app.waitLogin({ type: [2] }).then(() => {
app.mpBehavior({ doctor: true, PageName: 'PG_DoctorHome' }) app.mpBehavior({ doctor: true, PageName: 'PG_DoctorHome' })
this.getNotice() this.getNotice()
@ -136,7 +140,8 @@ Page({
}) })
}, },
}) })
} else { }
else {
this.handleNotice() this.handleNotice()
} }
}, },
@ -167,7 +172,8 @@ Page({
handleBanner(e) { handleBanner(e) {
const { index } = e.currentTarget.dataset const { index } = e.currentTarget.dataset
const { LinkUrl } = this.data.bannerList[index] const { LinkUrl } = this.data.bannerList[index]
if (!LinkUrl) return if (!LinkUrl)
return
wx.navigateTo({ wx.navigateTo({
url: LinkUrl, url: LinkUrl,
fail() { fail() {
@ -267,7 +273,8 @@ Page({
if (params.ContentType === '5' && params.FileList[0]) { if (params.ContentType === '5' && params.FileList[0]) {
app.oldMpBehavior({ PositionId: '1', OperateType: '1', OperateId: id as string }) app.oldMpBehavior({ PositionId: '1', OperateType: '1', OperateId: id as string })
this.handleFile(params.FileList[0]) this.handleFile(params.FileList[0])
} else { }
else {
wx.navigateTo({ wx.navigateTo({
url: `/pages/informationDetail/index?id=${id}`, url: `/pages/informationDetail/index?id=${id}`,
}) })
@ -293,7 +300,8 @@ Page({
wx.hideLoading() wx.hideLoading()
}, },
}) })
} else { }
else {
wx.hideLoading() wx.hideLoading()
wx.showToast({ wx.showToast({
title: '下载文件失败', title: '下载文件失败',
@ -357,7 +365,7 @@ Page({
4: '根据GO-QOL变化情况激素用量情况,判断筛选的不达标需干预的患者。', 4: '根据GO-QOL变化情况激素用量情况,判断筛选的不达标需干预的患者。',
}[question] }[question]
wx.showModal({ wx.showModal({
content: content, content,
confirmColor: '#8c75d0', confirmColor: '#8c75d0',
showCancel: false, showCancel: false,
confirmText: '知道了', confirmText: '知道了',

2
src/pages/home/index.wxml

@ -68,7 +68,7 @@
<view class="wrap"> <view class="wrap">
<view class="num-line"> <view class="num-line">
{{item.Composite}} {{item.Composite}}
<view class="sub">入组</view> <view class="sub">入组</view>
</view> </view>
<image wx:if="{{item.Url}}" class="icon" src="{{imageUrl}}icon23.png?t={{Timestamp}}"></image> <image wx:if="{{item.Url}}" class="icon" src="{{imageUrl}}icon23.png?t={{Timestamp}}"></image>
</view> </view>

2
src/pages/message/index.wxml

@ -18,7 +18,7 @@
<view class="num-wrap"> <view class="num-wrap">
<view class="num-line"> <view class="num-line">
{{item.Composite}} {{item.Composite}}
<view class="sub">入组</view> <view class="sub">入组</view>
</view> </view>
<image wx:if="{{item.Url}}" class="icon" src="{{imageUrl}}icon23.png?t={{Timestamp}}"></image> <image wx:if="{{item.Url}}" class="icon" src="{{imageUrl}}icon23.png?t={{Timestamp}}"></image>
</view> </view>

1
src/patient/pages/doctor/index.ts

@ -392,7 +392,6 @@ Page({
return { return {
title: '【就诊地图】帮您快速找到医生和医院', title: '【就诊地图】帮您快速找到医生和医院',
imageUrl: `${app.globalData.imageUrl}5/share1.png?t=${app.globalData.Timestamp}`,
path, path,
} }
}, },

72
src/patient/pages/hospital/index.scss

@ -3,6 +3,7 @@
} }
.page { .page {
background-color: #fafafa; background-color: #fafafa;
min-height: 70vh;
.banner { .banner {
padding: 44rpx 30rpx 0; padding: 44rpx 30rpx 0;
display: flex; display: flex;
@ -27,8 +28,9 @@
align-items: center; align-items: center;
.name { .name {
font-size: 36rpx; font-size: 36rpx;
color: #211D2E; color: #211d2e;
word-break: break-all; word-break: break-all;
font-weight: bold;
} }
.tag { .tag {
flex-shrink: 0; flex-shrink: 0;
@ -37,23 +39,26 @@
font-size: 22rpx; font-size: 22rpx;
line-height: 1; line-height: 1;
color: #ffffff; color: #ffffff;
background: #FFA300; background: #ffa300;
border-radius: 8rpx; border-radius: 8rpx;
} }
} }
.content { .content {
margin-top: 28rpx; margin-top: 18rpx;
display: flex;
align-items: center;
justify-content: space-between;
.inner { .inner {
.site { .site {
font-size: 24rpx; margin-bottom: 16rpx;
color: #ADACB2; font-size: 32rpx;
color: #211d2e;
.icon {
width: 36rpx;
height: 36rpx;
vertical-align: -8rpx;
}
} }
.site-num { .site-num {
font-size: 24rpx; font-size: 24rpx;
color: #ADACB2; color: #adacb2;
} }
} }
.options { .options {
@ -70,6 +75,45 @@
} }
} }
} }
.options {
margin: 60rpx 30rpx 0;
display: flex;
align-items: center;
justify-content: center;
gap: 30rpx;
.phone {
flex: 1;
line-height: 70rpx;
font-size: 32rpx;
color: #b982ff;
text-align: center;
border-radius: 60rpx 60rpx 60rpx 60rpx;
border: 1px solid #b982ff;
.icon {
margin-right: 8rpx;
display: inline-block;
width: 36rpx;
height: 36rpx;
vertical-align: middle;
}
}
.site {
flex: 1;
line-height: 76rpx;
font-size: 32rpx;
color: #ffffff;
border-radius: 60rpx;
text-align: center;
background: linear-gradient(197deg, #ffbcf9 0%, #b982ff 100%);
.icon {
margin-right: 8rpx;
display: inline-block;
width: 32rpx;
height: 32rpx;
vertical-align: middle;
}
}
}
.module { .module {
margin-top: 64rpx; margin-top: 64rpx;
padding: 0 30rpx; padding: 0 30rpx;
@ -105,13 +149,13 @@
padding-left: 20rpx; padding-left: 20rpx;
.name { .name {
font-size: 32rpx; font-size: 32rpx;
color: #211D2E; color: #211d2e;
font-weight: bold; font-weight: bold;
} }
.p { .p {
margin-top: 8rpx; margin-top: 8rpx;
font-size: 24rpx; font-size: 24rpx;
color: #ADACB2; color: #adacb2;
&.ellipsis { &.ellipsis {
min-width: 0; min-width: 0;
overflow: hidden; overflow: hidden;
@ -130,7 +174,7 @@
margin-bottom: 10rpx; margin-bottom: 10rpx;
width: 120rpx; width: 120rpx;
height: 32rpx; height: 32rpx;
background: #FAF6FF; background: #faf6ff;
border-radius: 8rpx; border-radius: 8rpx;
display: flex; display: flex;
.week { .week {
@ -138,14 +182,14 @@
font-size: 20rpx; font-size: 20rpx;
line-height: 32rpx; line-height: 32rpx;
color: #ffffff; color: #ffffff;
background-color: #B982FF; background-color: #b982ff;
text-align: center; text-align: center;
border-radius: 8rpx 0 8rpx 8rpx; border-radius: 8rpx 0 8rpx 8rpx;
} }
.value { .value {
flex: 1; flex: 1;
font-size: 20rpx; font-size: 20rpx;
color: #B982FF; color: #b982ff;
text-align: center; text-align: center;
line-height: 32rpx; line-height: 32rpx;
} }

31
src/patient/pages/hospital/index.wxml

@ -1,8 +1,5 @@
<scroll-view class="scroll-view" enhanced scroll-y show-scrollbar="{{false}}"> <scroll-view class="scroll-view" enhanced scroll-y show-scrollbar="{{false}}">
<view <view class="page" style="background: url('{{imageUrl}}bg10.png?t={{Timestamp}}') no-repeat top center/100% 610rpx">
class="page"
style="background: url('{{imageUrl}}bg10.png?t={{Timestamp}}') no-repeat top center/100% 610rpx"
>
<navBar background="{{background}}" title="医院介绍" back bind:back="handleBack"></navBar> <navBar background="{{background}}" title="医院介绍" back bind:back="handleBack"></navBar>
<view class="banner"> <view class="banner">
<view class="hosttipat-img"> <view class="hosttipat-img">
@ -17,17 +14,29 @@
</view> </view>
<view class="content"> <view class="content">
<view class="inner"> <view class="inner">
<view class="site">{{detail.ProvinceName}}{{detail.CityName}}{{detail.CountyName}}{{detail.Address}}</view> <view class="site" bind:tap="handleOpenMap">
<view class="site-num">{{detail.dist}}</view> <image class="icon" src="{{imageUrl}}icon41.png?t={{Timestamp}}" bind:tap="handleOpenMap"></image>
</view> {{detail.ProvinceName}}{{detail.CityName}}{{detail.CountyName}}{{detail.Address}}
<view class="options"> </view>
<image class="icon" src="{{imageUrl}}icon91.png?t={{Timestamp}}" bind:tap="handleOpenMap"></image> <view class="site" bind:tap="handlePhone" wx:if="{{detail.Telephone}}">
<image class="icon" src="{{imageUrl}}icon92.png?t={{Timestamp}}" bind:tap="handlePhone"></image> <image class="icon" src="{{imageUrl}}icon42.png?t={{Timestamp}}" bind:tap="handleOpenMap"></image>
{{detail.Telephone}}
</view>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<view class="module"> <view class="options">
<view class="phone" bind:tap="handlePhone" wx:if="{{detail.Telephone}}">
<image class="icon" src="{{imageUrl}}icon95.png?t={{Timestamp}}"></image>
电话
</view>
<view class="site" bind:tap="handleSite" wx:if="{{detail.Address}}">
<image class="icon" src="{{imageUrl}}icon96.png?t={{Timestamp}}"></image>
地址{{detail.dist}}
</view>
</view>
<view class="module" wx:if="{{detail.doctors && detail.doctors.length}}">
<view class="module-container"> <view class="module-container">
<view class="m-title"> <view class="m-title">
<image class="m-title-img" src="{{imageUrl}}title10.png?t={{Timestamp}}"></image> <image class="m-title-img" src="{{imageUrl}}title10.png?t={{Timestamp}}"></image>

11
src/patient/pages/infusionCenter/index.scss

@ -26,12 +26,12 @@
justify-content: space-between; justify-content: space-between;
.inner { .inner {
.site { .site {
font-size: 28rpx; font-size: 32rpx;
color: #adacb2; color: #211D2E;
} }
.tel { .tel {
font-size: 28rpx; font-size: 32rpx;
color: #adacb2; color: #211D2E;
} }
} }
} }
@ -50,6 +50,7 @@
border-radius: 60rpx 60rpx 60rpx 60rpx; border-radius: 60rpx 60rpx 60rpx 60rpx;
border: 1px solid #b982ff; border: 1px solid #b982ff;
.icon { .icon {
margin-right: 8rpx;
display: inline-block; display: inline-block;
width: 36rpx; width: 36rpx;
height: 36rpx; height: 36rpx;
@ -65,6 +66,7 @@
text-align: center; text-align: center;
background: linear-gradient(197deg, #ffbcf9 0%, #b982ff 100%); background: linear-gradient(197deg, #ffbcf9 0%, #b982ff 100%);
.icon { .icon {
margin-right: 8rpx;
display: inline-block; display: inline-block;
width: 32rpx; width: 32rpx;
height: 32rpx; height: 32rpx;
@ -87,6 +89,7 @@
margin-top: 20rpx; margin-top: 20rpx;
font-size: 28rpx; font-size: 28rpx;
color: #69686e; color: #69686e;
word-break: break-all;
} }
} }
} }

6
src/patient/pages/infusionCenter/index.wxml

@ -1,6 +1,6 @@
<view class="page"> <view class="page">
<image wx:if="{{detail.ImgUrl}}" class="banner" mode="widthFix" src="{{detail.ImgUrl}}"></image> <!-- <image wx:if="{{detail.ImgUrl}}" class="banner" mode="widthFix" src="{{detail.ImgUrl}}"></image> -->
<image wx:else class="banner" mode="widthFix" src="{{imageUrl}}bg25.png?t={{Timestamp}}"></image> <image class="banner" mode="widthFix" src="{{imageUrl}}bg33.png?t={{Timestamp}}"></image>
<view class="container"> <view class="container">
<view class="title">{{detail.Name}}</view> <view class="title">{{detail.Name}}</view>
<view class="content"> <view class="content">
@ -16,7 +16,7 @@
</view> </view>
<view class="site" bind:tap="handleSite" wx:if="{{detail.Address}}"> <view class="site" bind:tap="handleSite" wx:if="{{detail.Address}}">
<image class="icon" src="{{imageUrl}}icon96.png?t={{Timestamp}}"></image> <image class="icon" src="{{imageUrl}}icon96.png?t={{Timestamp}}"></image>
地址 地址{{detail.dist}}
</view> </view>
</view> </view>
<view class="remark" wx:if="{{detail.Remark}}"> <view class="remark" wx:if="{{detail.Remark}}">

3
src/patient/pages/interactivePatient/index.json

@ -5,6 +5,7 @@
"van-icon": "@vant/weapp/icon/index", "van-icon": "@vant/weapp/icon/index",
"van-loading": "@vant/weapp/loading/index", "van-loading": "@vant/weapp/loading/index",
"referralFrom": "/components/referralFrom/index", "referralFrom": "/components/referralFrom/index",
"navbar": "/components/navbar/index" "navbar": "/components/navbar/index",
"popup": "/components/popup/index"
} }
} }

143
src/patient/pages/interactivePatient/index.scss

@ -393,12 +393,22 @@ page {
} }
.message { .message {
margin-bottom: 32rpx; margin-bottom: 32rpx;
padding: 26rpx 32rpx; display: flex;
background: rgba(185, 130, 255, 1); align-items: center;
border-radius: 32rpx; gap: 16rpx;
font-size: 32rpx; .error {
color: #fff; flex-shrink: 0;
white-space: pre-line; width: 36rpx;
height: 36rpx;
}
.content {
padding: 26rpx 32rpx;
background: rgba(185, 130, 255, 1);
border-radius: 32rpx;
font-size: 32rpx;
color: #fff;
white-space: pre-line;
}
} }
.referral-replay { .referral-replay {
margin-bottom: 32rpx; margin-bottom: 32rpx;
@ -442,6 +452,12 @@ page {
} }
} }
} }
.status {
margin-bottom: 32rpx;
text-align: center;
font-size: 28rpx;
color: #adacb2;
}
.place { .place {
height: 10vh; height: 10vh;
} }
@ -469,9 +485,12 @@ page {
} }
&.expend { &.expend {
height: 45vh; height: 45vh;
&.min-expend {
height: 32vh;
}
} }
.line { .line {
margin: 0 auto; margin: 10rpx auto;
width: 52rpx; width: 52rpx;
height: 6rpx; height: 6rpx;
background: #f2f4f5; background: #f2f4f5;
@ -479,14 +498,42 @@ page {
} }
.title { .title {
margin-top: 26rpx; margin-top: 26rpx;
font-size: 32rpx;
color: rgba(40, 48, 49, 1);
display: flex; display: flex;
gap: 20rpx;
align-items: center; align-items: center;
justify-content: center; justify-content: space-between;
.icon { .custom-input {
width: 36rpx; text-indent: 40rpx;
height: 36rpx; flex: 1;
height: 72rpx;
background: #f6f8f9;
line-height: 72rpx;
border-radius: 98rpx;
font-size: 32rpx;
color: #adacb2;
&.active {
color: #211d2e;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
.shortcut {
width: 244rpx;
height: 72rpx;
background: #ffffff;
box-shadow: 0rpx 4rpx 24rpx 0rpx rgba(0, 0, 0, 0.07);
border-radius: 98rpx 98rpx 98rpx 98rpx;
border: 2rpx solid #f6f8f9;
font-size: 32rpx;
color: rgba(40, 48, 49, 1);
display: flex;
align-items: center;
justify-content: center;
.icon {
width: 36rpx;
height: 36rpx;
}
} }
} }
.tabs { .tabs {
@ -571,5 +618,75 @@ page {
} }
} }
} }
.custom-input {
transition: all 0.3s;
.icon {
position: relative;
width: 36rpx;
height: 36rpx;
overflow: visible;
&::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 60rpx;
height: 60rpx;
background-color: transparent;
}
}
.wrap {
margin-top: 14rpx;
position: relative;
padding: 32rpx 32rpx 24rpx;
border-radius: 24rpx;
background-color: #f6f8f9;
.textarea {
width: 100%;
display: block;
height: 300rpx;
box-sizing: border-box;
padding-bottom: 80rpx;
.ka-container {
padding: 30rpx 62rpx;
display: flex;
align-items: center;
justify-content: space-between;
.stat {
font-size: 28rpx;
color: #adacb2;
}
.send-btn {
width: 128rpx;
height: 64rpx;
text-align: center;
line-height: 64rpx;
font-size: 32rpx;
color: #ffffff;
background: #b982ff linear-gradient(197deg, #ffbcf9 0%, #b982ff 100%);
border-radius: 111rpx 111rpx 111rpx 111rpx;
}
}
}
}
}
&.custom-input-max {
.custom-input {
position: absolute;
top: -45vh;
left: 0;
width: 100%;
box-sizing: border-box;
padding: 30rpx;
border-radius: 32rpx 32rpx 0 0;
background-color: #fff;
.wrap {
.textarea {
height: 45vh;
}
}
}
}
} }
} }

62
src/patient/pages/interactivePatient/index.ts

@ -25,7 +25,14 @@ interface Item {
Page({ Page({
data: { data: {
popupShow: true,
popupType: 'popup9',
popupParams: {} as any,
expend: false, expend: false,
expendType: 'shortcut',
maxTextArea: false,
focus: false,
scrollTop: 0, scrollTop: 0,
scrollIntoView: '', scrollIntoView: '',
doctorDetail: {} as any, doctorDetail: {} as any,
@ -115,7 +122,8 @@ Page({
}) })
}, },
getMessageList() { getMessageList() {
if (this.data.isLoad || this.data.isFinish) return if (this.data.isLoad || this.data.isFinish)
return
this.setData({ this.setData({
isLoad: true, isLoad: true,
}) })
@ -234,11 +242,14 @@ Page({
let msgCreateTimeName = '' let msgCreateTimeName = ''
if (dayjs().format('YYYY-MM-DD') === dayjs(date).format('YYYY-MM-DD')) { if (dayjs().format('YYYY-MM-DD') === dayjs(date).format('YYYY-MM-DD')) {
msgCreateTimeName = dayjs(date).format('HH:mm') msgCreateTimeName = dayjs(date).format('HH:mm')
} else if (dayjs().format('YYYY-MM-DD') === dayjs(date).add(1, 'day').format('YYYY-MM-DD')) { }
else if (dayjs().format('YYYY-MM-DD') === dayjs(date).add(1, 'day').format('YYYY-MM-DD')) {
msgCreateTimeName = `昨天 ${dayjs(date).format('HH:mm')}` msgCreateTimeName = `昨天 ${dayjs(date).format('HH:mm')}`
} else if (dayjs().diff(date, 'day') < 7) { }
else if (dayjs().diff(date, 'day') < 7) {
msgCreateTimeName = dayjs(date).format(`dddd HH:mm`) msgCreateTimeName = dayjs(date).format(`dddd HH:mm`)
} else { }
else {
msgCreateTimeName = dayjs(date).format('YYYY-MM-DD HH:mm') msgCreateTimeName = dayjs(date).format('YYYY-MM-DD HH:mm')
} }
return msgCreateTimeName return msgCreateTimeName
@ -253,7 +264,8 @@ Page({
item.showTime = true item.showTime = true
preTime = dayjs(item.msgCreateTime).valueOf() preTime = dayjs(item.msgCreateTime).valueOf()
item.msgCreateTimeName = this.formatTime(item.msgCreateTime) item.msgCreateTimeName = this.formatTime(item.msgCreateTime)
} else { }
else {
const curTime = dayjs(item.msgCreateTime).valueOf() const curTime = dayjs(item.msgCreateTime).valueOf()
if (curTime - preTime > gapTime) { if (curTime - preTime > gapTime) {
item.showTime = true item.showTime = true
@ -281,7 +293,7 @@ Page({
}, },
handleRead() { handleRead() {
const { firstNotReadMsgId, messageList } = this.data const { firstNotReadMsgId, messageList } = this.data
const index = messageList.findIndex((item) => `${item.msgId}` === `${firstNotReadMsgId}`) const index = messageList.findIndex(item => `${item.msgId}` === `${firstNotReadMsgId}`)
this.handleView(index) this.handleView(index)
this.setData({ this.setData({
unReadCount: 0, unReadCount: 0,
@ -291,6 +303,7 @@ Page({
app.mpBehavior({ PageName: 'BTN_PatientImAsk' }) app.mpBehavior({ PageName: 'BTN_PatientImAsk' })
this.setData({ this.setData({
expend: !this.data.expend, expend: !this.data.expend,
maxTextArea: false,
}) })
if (this.data.expend) { if (this.data.expend) {
setTimeout(() => { setTimeout(() => {
@ -298,6 +311,33 @@ Page({
}, 300) }, 300)
} }
}, },
handleFooterInput() {
this.setData({
expendType: 'custom-input',
focus: true,
})
this.handleFooter()
},
handleFooterShortcut() {
this.setData({
expendType: 'shortcut',
})
this.handleFooter()
},
catchFooterInput() {
return false
},
toggleMaxTextarea() {
this.setData({
maxTextArea: !this.data.maxTextArea,
})
},
bindblur() {
this.setData({
focus: false,
})
},
handleAdl() { handleAdl() {
wx.navigateTo({ wx.navigateTo({
url: '/patient/pages/adl/index', url: '/patient/pages/adl/index',
@ -367,6 +407,16 @@ Page({
url: '/patient/pages/qol/index', url: '/patient/pages/qol/index',
}) })
}, },
handlePopupOk() {
this.setData({
popupShow: false,
})
},
handlePopupCancel() {
this.setData({
popupShow: false,
})
},
handleBack() { handleBack() {
wx.navigateBack({ wx.navigateBack({
fail() { fail() {

117
src/patient/pages/interactivePatient/index.wxml

@ -113,7 +113,12 @@
</view> </view>
<view class="patient" wx:if="{{message.msgFromType==='1'}}"> <view class="patient" wx:if="{{message.msgFromType==='1'}}">
<view class="p-container"> <view class="p-container">
<view class="message" wx:if="{{message.msgContentType==='1'}}">{{message.msgContent}}</view> <block wx:if="{{message.msgContentType==='1'}}">
<view class="message">
<image class="error" src="/images/icon99.png"></image>
<view class="content">{{message.msgContent}}</view>
</view>
</block>
<view class="referral-replay" wx:if="{{message.msgContentType==='9'}}"> <view class="referral-replay" wx:if="{{message.msgContentType==='9'}}">
<view class="title">我最近一次复诊时间是{{message.ReVisitInfo.visitDateName}}</view> <view class="title">我最近一次复诊时间是{{message.ReVisitInfo.visitDateName}}</view>
<view class="sub-title">我的方案是</view> <view class="sub-title">我的方案是</view>
@ -140,47 +145,103 @@
<image class="a-img" mode="aspectFill" src="{{zdUserInfo.UserImg}}"></image> <image class="a-img" mode="aspectFill" src="{{zdUserInfo.UserImg}}"></image>
</view> </view>
</view> </view>
<view class="status">医生回复您之前,24小时内最多只能发1条文字消息</view>
</view> </view>
<view id="place" class="place"></view> <view id="place" class="place"></view>
</scroll-view> </scroll-view>
</view> </view>
<view class="page-footer {{expend && 'expend'}}" catch:tap="handleFooter"> <view
class="page-footer {{expend && 'expend'}} {{maxTextArea && 'custom-input-max'}} {{expendType=='custom-input' && 'min-expend'}}"
catch:tap="handleFooter"
>
<view class="unread" catch:tap="handleRead" wx:if="{{unReadCount}}"> <view class="unread" catch:tap="handleRead" wx:if="{{unReadCount}}">
您有{{unReadCount}}条新消息 您有{{unReadCount}}条新消息
<van-icon name="arrow-down" /> <van-icon name="arrow-down" />
</view> </view>
<view class="line"></view> <view class="line"></view>
<view class="title" wx:if="{{!expend}}"> <view class="title" wx:if="{{!expend}}">
<image class="icon" src="{{imageUrl}}za-images//doctor/icon-message.png?t={{Timestamp}}"></image> <view class="custom-input" catch:tap="handleFooterInput">输入您的问题</view>
请选择您要咨询的问题 <view class="shortcut" catch:tap="handleFooterShortcut">
</view> <image class="icon" src="{{imageUrl}}za-images//doctor/icon-message.png?t={{Timestamp}}"></image>
<view class="tabs" wx:if="{{expend}}"> 快捷提问
<view
class="tab {{questionActive === index && 'active'}}"
wx:for="{{questionList}}"
wx:key="typeId"
catch:tap="handleQuestionTab"
data-index="{{index}}"
>
{{item.typeName}}
</view> </view>
</view> </view>
<view class="list" wx:if="{{expend}}"> <block wx:if="{{expend}}">
<view <block wx:if="{{expendType=='shortcut'}}">
class="l-item" <view class="tabs">
wx:for="{{questionActiveList}}" <view
wx:key="questionId" class="tab {{questionActive === index && 'active'}}"
bind:tap="handleQuestion" wx:for="{{questionList}}"
data-index="{{index}}" wx:key="typeId"
> catch:tap="handleQuestionTab"
<view class="order">{{index+1}}</view> data-index="{{index}}"
<view class="content">{{item.question}}</view> >
<view class="icon-wrap"> {{item.typeName}}
<image class="icon" src="{{imageUrl}}icon38.png?t={{Timestamp}}"></image> </view>
</view> </view>
</view> <view class="list">
</view> <view
class="l-item"
wx:for="{{questionActiveList}}"
wx:key="questionId"
bind:tap="handleQuestion"
data-index="{{index}}"
>
<view class="order">{{index+1}}</view>
<view class="content">{{item.question}}</view>
<view class="icon-wrap">
<image class="icon" src="{{imageUrl}}icon38.png?t={{Timestamp}}"></image>
</view>
</view>
</view>
</block>
<block wx:elif="{{expendType=='custom-input'}}">
<view class="custom-input {{maxTextArea && 'custom-input-max'}}">
<image
wx:if="{{maxTextArea}}"
class="icon"
src="{{imageUrl}}icon98.png?t={{Timestamp}}"
catch:tap="toggleMaxTextarea"
></image>
<image
wx:else
class="icon"
src="{{imageUrl}}icon97.png?t={{Timestamp}}"
catch:tap="toggleMaxTextarea"
></image>
<view class="wrap" catch:tap="catchFooterInput">
<textarea
class="textarea"
focus="{{focus}}"
hold-keyboard
disable-default-padding
confirm-type="send"
adjust-keyboard-to="bottom"
maxlength="{{500}}"
placeholder="输入您的问题"
bind:blur="bindblur"
>
<keyboard-accessory class="ka" style="height: 50px;">
<cover-view class="ka-container">
<cover-view class="stat">0/500</cover-view>
<cover-view class="send-btn">发送</cover-view>
</cover-view>
</keyboard-accessory>
</textarea>
<view class="w-footer"></view>
</view>
</view>
</block>
</block>
</view> </view>
</view> </view>
<referralFrom model:show="{{referralFromShow}}" bind:refresh="handleReferralReplay"></referralFrom> <referralFrom model:show="{{referralFromShow}}" bind:refresh="handleReferralReplay"></referralFrom>
<popup
show="{{popupShow}}"
type="{{popupType}}"
params="{{popupParams}}"
bind:ok="handlePopupOk"
bind:cancel="handlePopupCancel"
></popup>

Loading…
Cancel
Save