From f1f2f3a821e29670cb3066e12fea14818776bc6e Mon Sep 17 00:00:00 2001 From: zoujiandong <10130823232@qq.com> Date: Tue, 16 Apr 2024 17:39:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A44.16?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/health.js | 9 + app.json | 3 +- .../pages/healthyDetail/healthyDetail.js | 22 +- .../pages/healthyDetail/healthyDetail.json | 3 +- .../pages/healthyDetail/healthyDetail.wxml | 16 +- .../healthyOrderDetail/healthyOrderDetail.js | 177 ++++++++-------- .../healthyOrderDetail.wxml | 99 +++++---- healthyService/pages/sickInfo/sickInfo.js | 189 ++++++++++++++++++ healthyService/pages/sickInfo/sickInfo.json | 7 + healthyService/pages/sickInfo/sickInfo.wxml | 93 +++++++++ healthyService/pages/sickInfo/sickInfo.wxss | 139 +++++++++++++ .../pages/visitDetail/visitDetail.js | 8 +- 12 files changed, 623 insertions(+), 142 deletions(-) create mode 100644 healthyService/pages/sickInfo/sickInfo.js create mode 100644 healthyService/pages/sickInfo/sickInfo.json create mode 100644 healthyService/pages/sickInfo/sickInfo.wxml create mode 100644 healthyService/pages/sickInfo/sickInfo.wxss diff --git a/api/health.js b/api/health.js index b87f1a5..038651b 100644 --- a/api/health.js +++ b/api/health.js @@ -27,9 +27,18 @@ function serviceList(data){ //获取患者检测订单列表 function createServiceChatOrder(id){ return request('/patient/service/inquiry/'+id,'POST',{},true) } +function serviceEquityDetail(id){ //获取患者服务包订单服务权益详情 + return request('/patient/order/service/detail/'+id,'GET',{}) + }; + function serviceSickInfo(id){ //获取服务包订单病例详情-基础益详情 + return request('/case/service/'+id,'GET',{}) + }; + module.exports={ + serviceSickInfo, + serviceEquityDetail, createServiceChatOrder, cancelCheckPay, cancelCheckOrder, diff --git a/app.json b/app.json index d57ae4a..d6887cc 100644 --- a/app.json +++ b/app.json @@ -97,7 +97,8 @@ "pages/healthyOrder/healthyOrder", "pages/healthyOrderDetail/healthyOrderDetail", "pages/writeSick/writeSick", - "pages/visitList/visitList" + "pages/visitList/visitList", + "pages/sickInfo/sickInfo" ], "independent": true } diff --git a/healthyService/pages/healthyDetail/healthyDetail.js b/healthyService/pages/healthyDetail/healthyDetail.js index 0d5c355..bfba819 100644 --- a/healthyService/pages/healthyDetail/healthyDetail.js +++ b/healthyService/pages/healthyDetail/healthyDetail.js @@ -13,6 +13,7 @@ Page({ order_no:'', order_inquiry_id:'', chat_id:'', + showWarn:false, status:'', active:0, img_host:app.hostConfig().imghost, @@ -40,7 +41,24 @@ Page({ service_type:1, chat_id:'', }, + goHasOrder(){ + let status=this.data.status; + if(status==4){ + let id=this.data.order_inquiry_id; + app.method.navigateTo({ + url: '/patient/pages/orderDetail/orderDetail?order_inquiry_id='+id, + }) + }else if(status==2){ + let id=this.data.order_no; + app.method.navigateTo({ + url: '/healthyService/pages/healthyOrderDetail/healthyOrderDetail?order_service_id='+id, + }) + + } + + +}, inputChange(e) { this.setData({ [e.target.dataset.id]: e.detail.value @@ -281,10 +299,10 @@ Page({ }, handleCreateServiceChatOrder(id){ createServiceChatOrder(id).then(res=>{ - let order_inquiry_id=res.data.order_inquiry_id; + let order_inquiry_id=res.order_inquiry_id; let chat_id=this.data.chat_id; app.method.navigateTo({ - url: '/TUIService/pages/index?currentConversationID=' + chat_id + "&order_inquiry_id=" + order_inquiry_id + "&inquiry_type=3&fromType=chat" + url: '/TUIService/pages/index?currentConversationID=' + chat_id + "&order_inquiry_id=" + order_inquiry_id + "&inquiry_type=1&fromType=chat" }) }) }, diff --git a/healthyService/pages/healthyDetail/healthyDetail.json b/healthyService/pages/healthyDetail/healthyDetail.json index c931201..141ca68 100644 --- a/healthyService/pages/healthyDetail/healthyDetail.json +++ b/healthyService/pages/healthyDetail/healthyDetail.json @@ -2,7 +2,8 @@ "usingComponents": { "nav":"../../../components/nav/nav", "van-popup": "@vant/weapp/popup/index", - "van-picker": "@vant/weapp/picker/index" + "van-picker": "@vant/weapp/picker/index", + "van-dialog": "@vant/weapp/dialog/index" }, "navigationStyle":"custom" } \ No newline at end of file diff --git a/healthyService/pages/healthyDetail/healthyDetail.wxml b/healthyService/pages/healthyDetail/healthyDetail.wxml index 6152947..1673102 100644 --- a/healthyService/pages/healthyDetail/healthyDetail.wxml +++ b/healthyService/pages/healthyDetail/healthyDetail.wxml @@ -152,4 +152,18 @@ 确定 - \ No newline at end of file + + + + \ No newline at end of file diff --git a/healthyService/pages/healthyOrderDetail/healthyOrderDetail.js b/healthyService/pages/healthyOrderDetail/healthyOrderDetail.js index c7f386a..162d66e 100644 --- a/healthyService/pages/healthyOrderDetail/healthyOrderDetail.js +++ b/healthyService/pages/healthyOrderDetail/healthyOrderDetail.js @@ -1,6 +1,6 @@ // pages/medinceOrderDetail/medinceOrderDetail.js const app = getApp() -import {serviceDetail,cancelCheckPay,delCheckOrder,cancelCheckOrder,checkInquiry} from "../../../api/health" +import {serviceDetail,cancelCheckPay,delCheckOrder,cancelCheckOrder,checkInquiry,serviceEquityDetail} from "../../../api/health" import {cancelPay} from "../../../api/consultOrder" import {cancelOrder} from "../../../api/consultOrder" import {fllowDoctor,notfllowDoctor} from "../../../api/consultExpert" @@ -13,12 +13,18 @@ Page({ * 页面的初始数据 */ data: { + showJuan:true, time: 30 * 60 * 60 * 1000, showCover:true, + showExpand:true, isWait:true, cancelBtn:false, order:{}, + equity:{},//权益 showError:false, + showProduct:true, + productList:[], + yaoList:[], pay_money:0, fileList:[], checkSatus:1, @@ -28,6 +34,15 @@ Page({ detection_code:'', order_service_id:'', showDialog:false, + inquiryList:[], + toggleList:[], + juanList:[{ + id:1, + name:'1、价值5元的全品类药品优惠劵2张' + },{ + id:2, + name:' 2、价值100元的肝胆商城优惠劵1张' + }], message:'', fromType:'', user_doctor:{}, @@ -57,85 +72,63 @@ Page({ urls: urls // 需要预览的图片http链接列表 }) }, - uploadFile(File) { - wx.showLoading({ - title: '图片上传中...', - mask: true + toggleJuan(){ + this.setData({ + showJuan:!this.data.showJuan }) - let THIS = this; - getSign({ - user_type: 1, - scene: 4 - }).then((resdata) => { - let { - accessid, - dir, - policy, - signature, - host - } = resdata; - let index = File.lastIndexOf("/"); - let filename = File.substring(index + 1, File.length); - return new Promise((resolve, reject) => { - wx.uploadFile({ - url: host, // 仅为示例,非真实的接口地址 - filePath: File, - name: 'file', - formData: { - OSSAccessKeyId: accessid, - policy, - key: dir + filename, - signature - }, - success(res) { - if (res.statusCode === 204) { - let url = host + '/' + dir + filename; - THIS.setData({ - fileList: THIS.data.fileList.concat([url]) - }) - } - }, - fail: err => { - console.log(err); - } - }); - }) + let arr=[{ + id:1, + name:'1、价值5元的全品类药品优惠劵2张' + },{ + id:2, + name:' 2、价值100元的肝胆商城优惠劵1张' + }] + if(!this.data.showJuan){ + this.setData({ + juanList:arr.slice(0,1) + }) + }else{ + this.setData({ + juanList:arr }) + } }, - upload() { - if(this.data.fileList.length>=3){ - wx.showToast({ - title: '检测管照片最多上传3张', - icon:"none" + toggleExpand(){ + this.setData({ + showExpand:!this.data.showExpand + }) + let list=this.data.toggleList; + if(!this.data.showJuan){ + this.setData({ + inquriyList:list.slice(0,1) + }) + }else{ + this.setData({ + inquriyList:list }) - return false - }; - let THIS = this; - wx.chooseMedia({ - count: 3-this.data.fileList.length, - mediaType: ['image'], - sourceType: ['album', 'camera'], - success(res) { - var imgList = res.tempFiles; - var promiseFun = []; - for (let i = 0; i < imgList.length; i++) { - var file = imgList[i].tempFilePath; - promiseFun.push( - THIS.uploadFile(file) - ) - }; - Promise.all(promiseFun).then((res) => { - wx.showToast({ - title: '图片上传成功', - icon: "none" - }) - wx.hideLoading(); - }); - - } + } + }, + toggleProduct(){ + this.setData({ + showProduct:!this.data.showProduct }) + let list=this.data.yaoList; + if(!this.data.Product){ + this.setData({ + productList:list.slice(0,1) + }) + }else{ + this.setData({ + productList:list + }) + } }, - + goInquiry:throttle(function(e){ + let {id}=e.currentTarget.data.dataset; + app.method.navigateTo({ + url:'/patient/pages/orderDetail/orderDetail?order_inquiry_id='+id + }) + }), goBack(){ let {fromType}=this.data; @@ -182,25 +175,19 @@ Page({ } }, - bluript(event){ - const {value}=event.detail; - const reg=/^SDB[A-Z](?:2[3-9]|2[0-2])[SP](?:1688[6-9]|1689\d|169\d\d|1[7-9]\d\d\d|[2-9][0-9]{4}|99999)$/; - let detection_status=this.data.order.detection_status; - if(detection_status!=3){ - if(reg.test(value)){ - this.setData({ - showError:false - }) - }else{ - this.setData({ - showError:true - }) - } - } - - + handelServiceEquityDetail(id){ + serviceEquityDetail(id).then(res=>{ + + this.setData({ + equity:res, + inquiryList:res.order_inquiry, + toggleList:res.order_inquiry, + productList:res.order_product, + yaoList:res.order_product + }) + }) }, - chnageIpt(event){ + chnageIpt(event){thi.se const {value}=event.detail; this.setData({ detection_bar_code:value @@ -412,9 +399,9 @@ confirmCancelOrder(){ }) }, goSickInfo(event){ - let order_inquiry_id=event.currentTarget.dataset.id; + let order_no=this.data.order_service_id; app.method.navigateTo({ - url: '/patient/pages/sickInfo/sickInfo?order_inquiry_id='+order_inquiry_id + url: '/healthyService/pages/sickInfo/sickInfo?order_no='+order_no }) }, confirmDelOrder(){ @@ -560,7 +547,7 @@ toggleFllow(){ order_service_id }); this.handleServiceDetail(); - + this.handelServiceEquityDetail(order_service_id) } }, diff --git a/healthyService/pages/healthyOrderDetail/healthyOrderDetail.wxml b/healthyService/pages/healthyOrderDetail/healthyOrderDetail.wxml index 6916c62..58b9998 100644 --- a/healthyService/pages/healthyOrderDetail/healthyOrderDetail.wxml +++ b/healthyService/pages/healthyOrderDetail/healthyOrderDetail.wxml @@ -156,24 +156,49 @@ 服务权益 - + 有 效 期 - 2012 + 接诊后有效 + {{filter.transforDay(equity.order_service_package.start_time,'dateminute')+'-'+filter.transforDay(equity.order_service_package.finish_time,'dateminute')}} - + 当月时间 - 2012 + {{equity.order_service_package.current_month_start_date+'-'+equity.order_service_package.current_month_finish_date}} - + 问诊服务 - + + + 内      容 + + + {{equity.order_service_package_detail.service_period/30}}个月内,每月{{equity.order_service_package_detail.monthly_frequency==0?'不限':equity.order_service_package_detail.monthly_frequency}}次问诊 + + + + + 当月剩余 + + + {{equity.order_service_package_detail.monthly_frequency==0?'不限':(equity.order_service_package_detail.monthly_frequency-equity.order_service_package.month_inquiry_count)}}次图文 + {{showExpand?'收起':'展开'}} + + + 问诊时间:{{item.created_at}} + {{item.inquiry_status==1?'待支付':item.inquiry_status==2?'待分配':item.inquiry_status==3?'待接诊':item.inquiry_status==4?'已接诊':item.inquiry_status==5?'已完成':item.inquiry_status==6?'已结束':'已取消'}} + + + + + 问诊服务 + 内      容 @@ -181,43 +206,44 @@ 3个月内,每月2次问诊 - + - 药品剩余 + 当月剩余 - 1盒干爽颗粒 - 收起 + {{equity.order_service_package_detail.monthly_frequency==0?'不限':(equity.order_service_package_detail.monthly_frequency-equity.order_service_package.month_inquiry_count)}}次图文 + {{showExpand?'收起':'展开'}} - - 下单时间:2024.12.12 - 已签收 - - - 下单时间:2024.12.12 - 已签收 + + 问诊时间:{{item.created_at}} + {{item.inquiry_status==1?'待支付':item.inquiry_status==2?'待分配':item.inquiry_status==3?'待接诊':item.inquiry_status==4?'已接诊':item.inquiry_status==5?'已完成':item.inquiry_status==6?'已结束':'已取消'}} + - + 药品服务 - + + + 内      容 + + + 30盒干爽颗粒(步长) + + 药品剩余 - 1盒干爽颗粒 - 收起 + {{30}}盒干爽颗粒 + {{showProduct?'收起':'展开'}} - - 下单时间:2024.12.12 - 已签收 - - - 下单时间:2024.12.12 - 已签收 + + 下单时间:{{item.created_at}} + {{item.order_product_status==1?'待支付':item.order_product_status==2?'待发货':item.order_product_status==3?'已发货':item.order_product_status==42?'已签收':'已取消'}} + - + 优惠卷 @@ -225,27 +251,22 @@ - 1、 价值5元的全品类药品优惠劵2张 - - 2、价值100元的肝胆商城优惠劵1张 + {{item.name}} - 收起 + {{showJuan?'收起':'展开'}} - + 10元的全品类药品优惠劵 未使用 - - 100元的肝胆商城优惠劵 - 注册即发放 - + 患者信息 - 查看详情病情信息 + 查看详情病情信息 {{order.patient_name}}(未知,{{order.patient_age}}岁) diff --git a/healthyService/pages/sickInfo/sickInfo.js b/healthyService/pages/sickInfo/sickInfo.js new file mode 100644 index 0000000..6642716 --- /dev/null +++ b/healthyService/pages/sickInfo/sickInfo.js @@ -0,0 +1,189 @@ +// pages/sickInfo/sickInfo.js +const app = getApp(); +import {serviceSickInfo} from "../../../api/health" +import {formatDateText} from "../../../utils/util" +Page({ + /** + * 页面的初始数据 + */ + data: { + sick:{ + }, + otherList:[] + }, + previewImage(event) { + let id = event.currentTarget.dataset.id; + let urls = this.data.sick.diagnose_images; + wx.previewImage({ + current: urls[id], // 当前显示图片的http链接 + urls: urls // 需要预览的图片http链接列表 + }) + }, + getsickInfo(id){ + serviceSickInfo(id).then(data=>{ + this.setData({ + sick:data, + }); + //infoType 1 只有是否 2 饮酒,吸烟 3 化合物 4 只有文字叙述 + let filter1=[]; + let filter2=[]; + let arr=[ + { + type:"taboo", + name:'是否服用过您想购买的药品且无相关禁忌:', + nameTip:'', + status:data.is_taboo, + desc:"", + infoType:1 + }, + { + type:"allergy_history", + name:'是否有过敏史:', + nameTip:'过敏史:', + infoType:1, + status:data.is_allergy_history, + desc:data.allergy_history + }, + { + type:"family_history", + name:'是否有家族史:', + nameTip:'家族史:', + infoType:1, + status:data.is_family_history, + desc:data.family_history + }, + { + infoType:1, + type:"pregnant", + name:'是否处于备孕、妊娠、哺乳期:', + nameTip:'', + status:data.is_pregnant, + desc:data.pregnant + }, + { infoType:1, + type:"operation", + name:'是否做过手术:', + nameTip:'手术史', + status:data.is_operation, + desc:data.operation + }, + { + infoType:2, + type:"drink_wine", + name:'是否有饮酒史:', + nameTip:'', + status:data.drink_wine_status, + desc:'' + }, + { + infoType:2, + type:"smoke", + name:'是否有吸烟史:', + nameTip:'', + status:data.smoke_status, + desc:'' + }, + { + infoType:3, + type:"chemical", + name:'是否有接触过化学物:', + nameTip:'接触过的化学物:', + status:data.chemical_compound_status, + desc:data.chemical_compound_describe + }, + { + infoType:4, + type:'hospital', + name:'确诊医院:', + status:'', + nameTip:'', + desc:data.diagnosis_hospital + }, + { + type:"takeMedince", + name:'是否服药:', + nameTip:'正在服药:', + status:data.is_take_medicine, + desc:data.drugs_name, + infoType:1 + } + ] + if(data.sex==1){ + filter1=arr.filter((item)=>{ + return item.type!="pregnant" + }); + }else{ + filter1=arr; + } + if(!data.diagnosis_hospital){ + filter2=filter1.filter((item)=>{ + return item.type!="hospital" + }); + }else{ + filter2=filter1 + } + let newarr=filter2.filter((item)=>{ + return item.status!=null + }); + let date=formatDateText(this.data.sick.diagnosis_date); + this.setData({ + otherList:newarr, + "sick.diagnosis_date":date + }) + + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + this.getsickInfo(options.order_no) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + +}) \ No newline at end of file diff --git a/healthyService/pages/sickInfo/sickInfo.json b/healthyService/pages/sickInfo/sickInfo.json new file mode 100644 index 0000000..1f4849f --- /dev/null +++ b/healthyService/pages/sickInfo/sickInfo.json @@ -0,0 +1,7 @@ +{ + "usingComponents": { + "nav":"../../../components/nav/nav" + }, + "navigationStyle":"custom", + "navigationBarTitleText": "肝胆相照互联网医院" +} \ No newline at end of file diff --git a/healthyService/pages/sickInfo/sickInfo.wxml b/healthyService/pages/sickInfo/sickInfo.wxml new file mode 100644 index 0000000..fe21c63 --- /dev/null +++ b/healthyService/pages/sickInfo/sickInfo.wxml @@ -0,0 +1,93 @@ + + + + + + 基本信息 + + + {{sick.name}}(未知,{{sick.age}}岁) + + + + 所患疾病: + {{sick.disease_class_name}} + + + 确诊日期: + {{sick.diagnosis_date}} + + + 病情主诉: + {{sick.disease_desc}} + + + + 用药意向: + + {{item}} + + + + 复诊凭证: + + + + + + + + + 其他信息 + + + {{index+1}}、 + + + {{item.name}} + + + + {{item.nameTip}} + {{item.desc}} + + + + + {{item.name}} + 从不 + 偶尔 + 经常 + 每天 + + 已戒烟 + 已戒酒 + + + + + + {{item.name}} + 从不 + 偶尔 + 经常 + 每天 + + + {{item.nameTip}} + {{item.desc}} + + + + + {{item.name}} + {{item.desc}} + + + + + + 暂无数据! + + + \ No newline at end of file diff --git a/healthyService/pages/sickInfo/sickInfo.wxss b/healthyService/pages/sickInfo/sickInfo.wxss new file mode 100644 index 0000000..c238af3 --- /dev/null +++ b/healthyService/pages/sickInfo/sickInfo.wxss @@ -0,0 +1,139 @@ +/* pages/sickInfo/sickInfo.wxss */ +.page{ + display: flex; + flex-direction: column; +} +.wraper{ + overflow: scroll; + flex:1; + margin-top: 172rpx; + -webkit-overflow-scrolling: touch; +} +.databox{ + margin:0 32rpx; +} +.databox .title{ + margin:30rpx 0 20rpx; +} +.cell{ + background-color: #fff; + border-radius: 10rpx; + + + +} +.other .cell{ + margin-bottom: 20rpx; + min-height: 200rpx; +} +.other .cell{ + padding-bottom: 30rpx; +} +.cell .name{ + color: #333333; + height: 94rpx; + display: flex; + padding:0 20rpx; + align-items: center; + font-size: 34rpx; + border-bottom:1rpx solid #E7E7E7; +} +.info{ + background-color: #fff; + + padding-bottom: 30rpx; +} +.info .row{ + line-height: 52rpx; + display: flex; + + padding:0 20rpx; +} +.qabox{ + width:100%; +} +.info .row:first-child{ + padding-top: 30rpx; +} +.info .name{ + white-space: nowrap; + font-size:32rpx; + color:#333; +} +.info .desc{ + font-size:28rpx; + color:#666!important; + word-break: break-all; + } + .textbox .desc{ + word-break: break-all; + line-height: 42rpx; + color: #666; + margin-bottom: 20rpx; + font-size: 28rpx; +} +.textbox .goods{ + color:#666!important; + display: inline; + white-space:normal; +} +.textbox .goods:after{ + content:";" +} +.textbox .goods:last-child:after{ + content:"" +} +.textbox view:last-child{ + margin-bottom: 0; +} +.textbox text{ + color: #333333; + font-size: 28rpx; +} + .imglist{ + display: flex; + padding:0 20rpx; + flex-wrap: wrap; + + } + .img{ + width: 148rpx; + height:148rpx; + margin-right: 18rpx; + margin-bottom: 18rpx; + + } + .img:nth-child(4n){ + margin-right: 0; + } + .other .row{ + display: flex; + line-height: 52rpx; + padding:0 20rpx; + } + .other .row:first-child{ + padding-top: 30rpx; + } + .other .row .answer{ + color:#666; + font-size: 28rpx; + } + .radiotip{ + padding:24rpx 20rpx; + word-break: break-all; + margin-right: 20rpx; + margin-bottom: 20rpx; + justify-content: center; + margin-top: 20rpx; + + line-height: 42rpx; +background: #F2F2F2; +border-radius: 10rpx; +font-size: 28rpx; +color:#999; +} + +.radiotip text{ + white-space: nowrap; + color:#333; +} \ No newline at end of file diff --git a/healthyService/pages/visitDetail/visitDetail.js b/healthyService/pages/visitDetail/visitDetail.js index 1b2ecd4..7716208 100644 --- a/healthyService/pages/visitDetail/visitDetail.js +++ b/healthyService/pages/visitDetail/visitDetail.js @@ -266,10 +266,11 @@ Page({ } }; this.setData({ - chat_id:res.data.user_id + chat_id:res.user_id }) }) }, + handleGetServiceDetail(){ let {doctor_id,currentFamilyId,service_type,follow_package_item_id,chat_id,sex,inquiry_mode,inquiry_type}=this.data; getServiceDetail({ @@ -313,10 +314,11 @@ Page({ }, handleCreateServiceChatOrder(id){ createServiceChatOrder(id).then(res=>{ - let order_inquiry_id=res.data.order_inquiry_id; + console.log(res); + let order_inquiry_id=res.order_inquiry_id; let chat_id=this.data.chat_id; app.method.navigateTo({ - url: '/TUIService/pages/index?currentConversationID=' + chat_id + "&order_inquiry_id=" + order_inquiry_id + "&inquiry_type=3&fromType=chat" + url: '/TUIService/pages/index?currentConversationID=' + chat_id + "&order_inquiry_id=" + order_inquiry_id + "&inquiry_type=1&fromType=chat" }) }) },