This commit is contained in:
2023-10-24 10:09:32 +08:00
parent 2646df0a48
commit f5ba8d2161
13 changed files with 579 additions and 94 deletions

View File

@ -0,0 +1,29 @@
import request from "@/api/request.js"
// 发送即使消息
export function sendMessage(data) {
return request({
url: `/nurseApplet/chatRecord/sendMessage`,
method: 'post',
data: data
})
}
// 查询聊天记录
export function getChatRecord(data) {
return request({
url: `/nurseApplet/chatRecord/getChatRecord`,
method: 'get',
data: data
})
}
// 标记为已读
export function markRead(data) {
return request({
url: `/nurseApplet/chatRecord/updateReadStatus`,
method: 'PUT',
data: data
})
}

View File

@ -3,47 +3,39 @@
"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
},
"pages": [ //pageshttps://uniapp.dcloud.io/collocation/pages
{
"path": "pages/myinformation/myinformation",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
// "navigationBarBackgroundColor": "#4ac4ab"
// "navigationStyle": "custom"
}
},
{
"path": "pages/homepage/homepage",
"style": {
"enablePullDownRefresh": false,
"navigationBarTitleText": "工单"
"navigationBarTitleText": "工单",
"onReachBottomDistance": 20, // px
"enablePullDownRefresh": true //true
}
}, {
"path": "pages/index/index",
},
{
"path": "pages/seekadvicefrom/seekadvicefrom",
"style": {
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
},
{
"path": "pages/login/login",
"style": {
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
},
// {
// "path": "pages/login/login",
// "style": {
// "navigationBarTitleText": "",
// "enablePullDownRefresh": false,
// "navigationStyle": "custom"
// }
// },
{
"path": "pages/myinformation/myinformation",
"style": {
"navigationBarTitleText": "我的",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#4ac4ab"
// "navigationStyle": "custom"
"enablePullDownRefresh": false
}
}, {
"path": "pages/taskDetails/taskDetails",
"style": {
"navigationBarTitleText": "工单详情",
"enablePullDownRefresh": false
}
}
],
@ -52,7 +44,6 @@
"navigationBarTitleText": "",
"navigationBarBackgroundColor": "#18CBB3",
"backgroundColor": "#F8F8F8"
},
"uniIdRouter": {},
"tabBar": {
@ -63,15 +54,15 @@
"list": [{
"pagePath": "pages/homepage/homepage",
"iconPath": "static/homepage.png",
"selectedIconPath": "static/homepage.png",
"selectedIconPath": "static/homepages.png",
"text": "首页"
},
{
"pagePath": "pages/myinformation/myinformation",
"iconPath": "static/myinformations.png",
"selectedIconPath": "static/myinformation.png",
"iconPath": "static/my.png",
"selectedIconPath": "static/mys.png",
"text": "我的"
}
]
}
}
}

View File

@ -2,61 +2,294 @@
<view class="app">
<u-tabs :list="tabslist" :is-scroll="false" :current="tabscurrent" @change="tabschange" inactive-color='#fff'
active-color='#fff'></u-tabs>
<view class="top">
<u-dropdown active-color='#26A888'>
<u-dropdown-item v-model="optionindex" :title="optionname" :options="options"
@change='dropitemchange'></u-dropdown-item>
</u-dropdown>
<view class="inputs">
<!-- <i class="icon"></i> -->
<!-- <input type="text" name="" id="" class="input" placeholder="搜索" v-model="query.label"> -->
<!-- <view class="">
<view class="top" v-if="tabscurrent==0">
<u-dropdown active-color='#26A888'>
<u-dropdown-item v-model="optionindex" :title="optionname" :options="options"
@change='dropitemchange'></u-dropdown-item>
</u-dropdown>
<view class="inputs"></view>
</view>
<view class="items" v-if="missionlist.length>0">
<view class="item" v-for="(item,index) in missionlist" @click.stop='gotaskDetails(item)'>
<view class="title">
<view class="text">
专家咨询{{item.patientName}}
</view>
<view class="image">
<image src="../../static/jinbi.png" mode=""></image>
<span v-if="item.orderCommissionAmount&&item.orderCommissionAmount>=0">
+ {{item.orderCommissionAmount}}
</span>
<span v-else>
+ 0
</span>
</view>
</view>
<view class="time">
预约时间:
<span>{{item.appointmentDate}}{{' '+item.appointmentStartTime}}{{'-'+item.appointmentEndTime}}</span>
</view>
<view class="time" style="line-height: 40rpx;">
问题简述:
<span>{{item.problemDescription}}</span>
</view>
<view class="address" @click.stop='goMap(item)'>
<view class="text">
{{item.serviceAddress}}
</view>
</view>
<view class="btns">
<view class="text" v-if="item.orderStatus=='WAIT_RECEIVED_GOODS'">
待接单
</view>
<view class="text" v-if="item.orderStatus=='RECEIVED_GOODS'">
待服务
</view>
<view class="text" v-if="item.orderStatus=='COMPLETED'" style="color: #9D9D9D;">
已完成
</view>
<view class="btnreturn" @click.stop='gotaskReturn(item)'
v-if="item.orderStatus=='WAIT_RECEIVED_GOODS'">
退回
</view>
<view class="btnaccept" @click.stop='Receivingorders(item)'
v-if="item.orderStatus=='WAIT_RECEIVED_GOODS'">
接单
</view>
<view class="btnreturn" @click.stop='goconfirmCompletion(item)'
v-if="item.orderStatus=='RECEIVED_GOODS'">
完成
</view>
<view class="btnaccept" @click.stop='govideo(item)' v-if="item.orderStatus=='RECEIVED_GOODS'">
视频通话
</view>
</view>
</view>
</view>
<view v-else class="" style="margin-top: 100rpx;">
<u-empty text="暂无工单" mode="list" icon-size='240' font-size='32'></u-empty>
</view>
<u-popup v-model="taskReturnshow" mode="center" closeable border-radius='5' width='80%' height="500rpx">
<view class="titletext">
<text style="font-size: 26rpx;">退回原因</text>
<textarea name="" id="" cols="30" rows="10" style="width: 60%;" placeholder="请输入退回原因"
v-model="remark"></textarea>
</view>
<view class="btnss">
<view class="cancel" @click="taskReturnshow=false">
取消
</view>
<view class="Rescind" @click="truetaskReturn">
退回
</view>
</view>
</u-popup>
</view> -->
<view class="">
<view class="inputs" style="width: 90%;height: 60rpx;transform: none;margin: 20rpx auto;">
<i class="icon"></i>
<input type="text" name="" id="" class="input" placeholder="搜索" v-model="query.label">
</view>
<view class="lists">
<view class="item">
<image src="../../static/homepages.png" mode=""></image>
<view class="name">
心如止水
</view>
<view class="text">
大夫我女儿吃了药后有点发烧怎么回事,您给看点好看说不定倒是波动的的的的
</view>
<view class="count">
1
</view>
</view>
<view class="item">
<image src="../../static/homepages.png" mode=""></image>
<view class="name">
心如止水
</view>
<view class="text">
大夫我女儿吃了药后有点发烧怎么回事,您给看点好看说不定倒是波动的的的的
</view>
<view class="count">
1
</view>
</view>
</view>
</view>
<u-toast ref="uToast" />
</view>
</template>
<script>
import {
getList,
updateStatus,
closeHealthConsultationOrder,
consultationInfolist
} from '@/api/homepage/index.js'
export default {
data() {
return {
tabslist: [{
name: '全部工单'
name: '全部',
value: '',
}, {
name: '我的工单'
name: '未解决',
value: 'RECEIVED_GOODS',
}, {
name: '已完成工单',
name: '已解决',
value: 'COMPLETED',
}],
// {
// name: '',
// value: '',
// }, {
// name: '',
// value: 'RECEIVED_GOODS',
// }, {
// name: '',
// value: 'COMPLETED',
// }
tabscurrent: 0,
optionindex: 1,
optionname: '待处理',
optionname: '全部',
options: [{
label: '待处理',
value: 1,
label: '全部',
value: '',
}, {
label: '待接单',
value: 'WAIT_RECEIVED_GOODS',
}, {
label: '待服务',
value: 'RECEIVED_GOODS',
}, {
label: '已完成',
value: 2,
value: 'COMPLETED',
}],
query: {
label: '',
}
hospitalPersonId: 1,
orderStatus: '',
orderType: 'HEALTH_CONSULTATION',
pageNum: 1,
pageSize: 10,
},
missionlist: [],
missiontotal: 0,
taskReturnshow: false,
remark: '',
}
},
onLoad() {
onShow() {
// this.info();
},
methods: {
//
gotaskDetails(item) {
uni.navigateTo({
url: `/pages/taskDetails/taskDetails?id=${item.consultationInfoId}`
})
},
//
goconfirmCompletion(item) {
var obj = {
"goodsOrderId": item.goodsOrderId,
"orderStatus": "COMPLETED",
}
updateStatus(obj).then(res => {
if (res.code == 200) {
this.$refs.uToast.show({
title: '工单已成功',
type: 'success',
duration: '1500'
})
this.info();
}
})
},
//退
gotaskReturn(item) {
this.query.orderNo = item.orderNo
this.taskReturnshow = true
},
truetaskReturn() {
var obj = {
orderNo: this.query.orderNo,
remark: this.remark,
}
closeHealthConsultationOrder(obj).then(res => {
if (res.code == 200) {
this.$refs.uToast.show({
title: '工单退回成功',
type: 'success',
duration: '1500'
})
this.info();
}
})
},
//
Receivingorders(item) {
var obj = {
"goodsOrderId": item.goodsOrderId,
"orderStatus": "RECEIVED_GOODS",
}
updateStatus(obj).then(res => {
if (res.code == 200) {
this.$refs.uToast.show({
title: '接单成功',
type: 'success',
duration: '1500'
})
this.info();
}
})
},
info() {
this.query.pageNum = 1
getList(this.query).then(res => {
this.missionlist = res.rows
this.missiontotal = res.total
})
},
tabschange(index) {
this.tabscurrent = index;
this.query.orderStatus = this.tabslist[index].value
this.optionname = '全部'
this.info();
},
dropitemchange(e) {
this.optionname = this.options.find(m => m.value === e).label
console.log(e)
this.query.orderStatus = this.options.find(m => m.value === e).value
this.info();
},
}
},
onReachBottom() { //
if (this.missionlist.length >= this.missiontotal) {} else {
this.query.pageNum++
getList(this.query).then(
res => {
res.rows.forEach(e => {
this.missionlist.push(e)
})
})
}
},
onPullDownRefresh() { //
this.info();
setTimeout(function() {
uni.stopPullDownRefresh();
}, 1000);
},
}
</script>
<style lang="scss">
page {
background-color: #fff;
}
.app {
width: 100%;
// margin: 20rpx auto;
@ -64,55 +297,287 @@
background-color: #fff;
font-size: 24rpx;
.lists {
width: 96%;
margin: 0 auto;
.item {
position: relative;
height: 180rpx;
.count {
position: absolute;
right: 10rpx;
bottom: 50rpx;
width: 28rpx;
height: 28rpx;
background: #FF0000;
border-radius: 50%;
text-align: center;
line-height: 28rpx;
color: #fff;
font-weight: 400;
color: #FFFFFF;
}
.text {
font-size: 24rpx;
font-weight: 400;
color: #999999;
position: absolute;
left: 160rpx;
bottom: 50rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
width: calc(100% - 220rpx);
}
.name {
position: absolute;
left: 160rpx;
top: 40rpx;
font-size: 28rpx;
font-weight: 400;
color: #333333;
}
image {
position: absolute;
top: 50%;
left: 20rpx;
transform: translateY(-50%);
width: 110rpx;
height: 110rpx;
border-radius: 50%;
}
}
}
.inputs {
background-color: #fff;
width: 65%;
// height: 60rpx;
// border: 1px solid #F6F6F6;
height: 0rpx;
border-radius: 5rpx;
background-color: #ffffff;
z-index: 999;
position: relative;
top: 50%;
transform: translateY(-50%);
background: #F6F6F6;
border-radius: 38rpx;
.input {
margin: 0 auto;
position: absolute;
height: 60rpx;
// top: 8%;
left: 13%;
width: 80%;
font-size: 26rpx;
color: #000000;
}
.icon {
background: url(@/static/sousuo.png) no-repeat;
width: 30rpx;
height: 28rpx;
background-size: cover;
position: absolute;
top: 50%;
transform: translateY(-50%);
left: 3%;
}
}
.btnss {
display: flex;
text-align: center;
border-top: 1rpx solid #f6f6f6;
font-size: 32rpx;
line-height: 100rpx;
width: 100%;
position: absolute;
bottom: 0;
.cancel {
width: 50%;
height: 100rpx;
border-right: 0.5rpx solid #f6f6f6;
}
.Rescind {
width: 50%;
height: 100rpx;
color: #18CBB3;
border-left: 0.5rpx solid #f6f6f6;
}
}
.titletext {
width: 100%;
padding: 80rpx 30rpx 0;
display: flex;
textarea {
padding: 10rpx 20rpx;
font-size: 24rpx;
border: 1rpx solid #d0d0d0;
flex: 1;
}
}
.items {
width: 96%;
margin: 0 auto;
.item {
margin: 15rpx auto;
background-color: #fff;
box-shadow: 0rpx 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
border-radius: 5rpx;
padding: 3%;
width: 100%;
position: relative;
color: #333333;
font-size: 30rpx;
padding-bottom: 60rpx;
.btns {
margin-top: 60rpx;
display: flex;
position: relative;
height: 30rpx;
.text {
width: 82rpx;
height: 27rpx;
font-size: 28rpx;
font-weight: 500;
color: #E57726;
line-height: 55rpx;
}
.btnaccept,
.btnreturn {
width: 170rpx;
height: 60rpx;
text-align: center;
line-height: 55rpx;
border-radius: 5rpx;
border: 1px solid #18CBB3;
position: absolute;
}
.btnaccept {
right: 24rpx;
color: #fff;
background-color: #18CBB3;
}
.btnreturn {
right: 220rpx;
color: #18CBB3;
background: #FFFFFF;
}
}
.address {
position: relative;
.text {
width: 80%;
}
.p {
padding-left: 30rpx;
font-size: 24rpx;
color: #EA706A;
}
image {
position: absolute;
top: 50%;
left: 0rpx;
transform: translateY(-40%);
width: 25rpx;
height: 25rpx;
}
}
.time {
line-height: 60rpx;
font-size: 24rpx;
font-weight: 400;
color: #333333;
span {
word-break: break-all;
padding-left: 10rpx;
}
}
.itemimg {
position: absolute;
right: 15rpx;
top: 18rpx;
width: 140rpx;
height: 120rpx;
}
.title {
font-size: 32rpx;
line-height: 100rpx;
border-bottom: 1rpx solid #E6E6E6;
color: #333333;
position: relative;
height: 100rpx;
.text {
height: 100%;
overflow: hidden; //
display: -webkit-box;
-webkit-line-clamp: 1; //
-webkit-box-orient: vertical;
width: 50%;
}
.image {
position: absolute;
right: 0%;
top: 50%;
transform: translateY(-50%);
display: inline-block;
font-size: 30rpx;
color: #EA706A;
image {
// vertical-align: middle;
transform: translateY(20%);
width: 40rpx;
height: 40rpx;
padding-right: 10rpx;
}
}
}
}
}
::v-deep .u-tabs {
background-color: #18CBB3 !important;
}
.top {
width: 90%;
width: 82%;
margin: 0 auto;
display: flex;
height: 84rpx;
justify-content: space-around;
.inputs {
background-color: #fff;
width: 65%;
// height: 60rpx;
// border: 1px solid #F6F6F6;
height: 0rpx;
border-radius: 5rpx;
background-color: #ffffff;
z-index: 999;
position: relative;
top: 50%;
transform: translateY(-50%);
background: #F6F6F6;
border-radius: 38rpx;
.input {
margin: 0 auto;
position: absolute;
height: 60rpx;
// top: 8%;
left: 13%;
width: 80%;
font-size: 26rpx;
color: #000000;
}
.icon {
background: url(@/static/sousuo.png) no-repeat;
width: 30rpx;
height: 28rpx;
background-size: cover;
position: absolute;
top: 50%;
transform: translateY(-50%);
left: 3%;
}
}
::v-deep .u-flex {
width: 100% !important;
}

View File

@ -80,7 +80,7 @@
sendMessage,
getChatRecord,
markRead
} from '@/api/pagesC/seekadvicefrom/seekadvicefrom.js';
} from '@/api/seekadvicefrom/seekadvicefrom.js';
import baseurl from '@/api/baseurl.js'
export default {
data() {

BIN
static/docHead.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
static/ico/emoji.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
static/ico/file.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
static/ico/more.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
static/ico/send.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
static/ico/success.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 807 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 717 B