2023-12-06 13:05:44 +08:00

358 lines
11 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import formateTime from '../../../../../utils/formate-time';
import constant from '../../../../../utils/constant';
import {
getCurrentPageUrl,
getCurrentPageParam
} from "../../../../../../../utils/getUrl"
import {
getRate
} from "../../../../../../../api/consultOrder"
const app = getApp()
// eslint-disable-next-line no-undef
Component({
/**
* 组件的属性列表
*/
properties: {
message: {
type: Object,
value: {},
observer(newVal) {
this.setData({
message: newVal,
renderDom: this.parseCustom(newVal),
});
},
},
patient_data:{
type: Object,
value: {},
observer(newVal) {
this.setData({
patient_data: newVal,
});
}
},
isMine: {
type: Boolean,
value: true,
},
},
pageLifetimes:{
show: function() {
this.setData({
img_host:app.hostConfig().imghost
});
},
},
/**
* 组件的初始数据
*/
data: {
displayServiceEvaluation: false,
score: 0,
img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static',
commentDetail: null
},
/**
* 组件的方法列表
*/
methods: {
// async getDom(id,renderDom){
// let result = await this.handleGetRate(id,renderDom);
// return result
// },
handleGetRate(id) {
getRate(id).then(data => {
let commentDetail = null;
if (data) {
commentDetail = data
} else {
commentDetail = {
avg_score: 0,
content: "",
evaluation_id: "",
is_evaluation: false,
order_inquiry_id:id,
reply_progress: 0,
reply_quality: 0,
service_attitude: 0
}
}
this.triggerEvent("popComment",commentDetail);
})
},
async handleAllRate(id, renderDom) {
let result = null;
await getRate(id).then(data => {
if (data) {
renderDom[0].is_evaluation = true;
renderDom[0].score = data.avg_score;
}
})
this.setData({
renderDom: renderDom
})
},
showPop(event) {
let id = event.currentTarget.dataset.id;
console.log(id);
this.handleGetRate(id);
},
// 解析音视频通话消息
extractCallingInfoFromMessage(message) {
const callingmessage = JSON.parse(message.payload.data);
if (callingmessage.businessID !== 1) {
return '';
}
const objectData = JSON.parse(callingmessage.data);
switch (callingmessage.actionType) {
case 1: {
if (objectData.call_end >= 0) {
return `通话时长:${formateTime(objectData.call_end)}`;
}
if (objectData.data && objectData.data.cmd === 'switchToAudio') {
return '切换语音通话';
}
if (objectData.data && objectData.data.cmd === 'switchToVideo') {
return '切换视频通话';
}
return '发起通话';
}
case 2:
return '取消通话';
case 3:
if (objectData.data && objectData.data.cmd === 'switchToAudio') {
return '切换语音通话';
}
if (objectData.data && objectData.data.cmd === 'switchToVideo') {
return '切换视频通话';
}
return '已接听';
case 4:
return '拒绝通话';
case 5:
if (objectData.data && objectData.data.cmd === 'switchToAudio') {
return '切换语音通话';
}
if (objectData.data && objectData.data.cmd === 'switchToVideo') {
return '切换视频通话';
}
return '无应答';
default:
return '';
}
},
parseCustom(message) {
const {
BUSINESS_ID_TEXT
} = constant;
// 群消息解析
if (message.payload.data === BUSINESS_ID_TEXT.CREATE_GROUP) {
const renderDom = [{
type: 'group_create',
text: message.payload.extension,
}];
return renderDom;
}
try {
const customMessage = JSON.parse(message.payload.data);
let avastar = '';
if (message.flow == "in") {
avastar = message.avatar;
}
// 约定自定义消息的 data 字段作为区分,不解析的不进行展示
if (customMessage.businessID === BUSINESS_ID_TEXT.ORDER) {
const renderDom = [{
type: 'order',
name: 'custom',
title: customMessage.title || '',
imageUrl: customMessage.imageUrl || '',
price: customMessage.price || 0,
description: customMessage.description,
}];
return renderDom;
}
// 服务评价
if (customMessage.businessID === BUSINESS_ID_TEXT.EVALUATION) {
const renderDom = [{
type: 'evaluation',
title: message.payload.description,
score: customMessage.score,
description: customMessage.comment,
}];
return renderDom;
}
// native 自定义消息解析
if (customMessage.businessID === BUSINESS_ID_TEXT.LINK) {
const renderDom = [{
type: 'text_link',
text: customMessage.text,
}];
return renderDom;
}
// 自定义消息类型1:消息内页横条 2:订单结束评价弹出 3:医生端系统通知 4:医生端服务通知 5:患者端系统消息 6:处方开具成功(医生端) 7:处方审核通过(患者端))",
if (customMessage.message_type == 1) {
const renderDom = [{
type: 'msg_tip',
text: customMessage.title,
desc: customMessage.desc
}];
return renderDom;
}
if (customMessage.message_type == 2) {
let renderDom = [{
type: 'msg_comment',
text: customMessage.title,
order_inquiry_id: customMessage.data.order_inquiry_id,
is_evaluation: false,
score: 0,
desc: customMessage.desc,
avatar: avastar
}];
this.handleAllRate(customMessage.data.order_inquiry_id, renderDom);
return renderDom;
};
if (customMessage.message_type == 7) {
let data = customMessage.data;
const renderDom = [{
type: 'msg_prescribe',
product_name: data.product_name,
order_inquiry_id: data.order_inquiry_id,
order_prescription_id: data.order_prescription_id,
pharmacist_verify_time: data.pharmacist_verify_time.substring(0, 10),
}];
return renderDom;
};
if (customMessage.message_type == 10) {
let data = customMessage.data;
const renderDom = [{
type: 'msg_checksugar',
title:customMessage.title,
order_no:data.order_no,
message_path:data.message_path,
disease_class_names: data.disease_class_names
}];
return renderDom;
}
if (customMessage.message_type === 12) {
let data = customMessage.data;
console.log(data)
const renderDom = [{
type: 'wenzhen_form',
order_inquiry_id:data.order_inquiry_id,
message_path:data.message_path,
case_patient_message_path:data.case_patient_message_path,
case_filled_fields:data.case_filled_fields,
case_not_fill_fields:data.case_not_fill_fields
}];
return renderDom;
}
} catch (error) {}
// 客服咨询
try {
const extension = JSON.parse(message.payload.extension);
if (message.payload.data === BUSINESS_ID_TEXT.CONSULTION) {
const renderDom = [{
type: 'consultion',
title: extension.title || '',
item: extension.item || 0,
description: extension.description,
}];
return renderDom;
}
} catch (error) {}
// 音视频通话消息解析
try {
const callingmessage = JSON.parse(message.payload.data);
if (callingmessage.businessID === 1) {
if (message.conversationType === wx.$TUIKitTIM.TYPES.CONV_GROUP) {
if (message.payload.data.actionType === 5) {
message.nick = message.payload.data.inviteeList ? message.payload.data.inviteeList.join(',') : message.from;
}
const _text = this.extractCallingInfoFromMessage(message);
const groupText = `${_text}`;
const renderDom = [{
type: 'groupCalling',
text: groupText,
userIDList: [],
}];
return renderDom;
}
if (message.conversationType === wx.$TUIKitTIM.TYPES.CONV_C2C) {
const c2cText = this.extractCallingInfoFromMessage(message);
const renderDom = [{
type: 'c2cCalling',
text: c2cText,
}];
return renderDom;
}
}
return [{
type: 'notSupport',
text: '[自定义消息]',
}];
} catch (error) {}
},
openLink(e) {
if (e.currentTarget.dataset.value.key === '立即前往') {
app.method.navigateTo({
url: '/pages/TUI-User-Center/webview/webview?url=https://cloud.tencent.com/act/pro/imnew?from=16975&wechatMobile',
});
} else if (e.currentTarget.dataset.value.key === '立即体验') {
app.method.navigateTo({
url: '/pages/TUI-User-Center/webview/webview?url=https://cloud.tencent.com/document/product/269/68091',
});
}
},
goReport(event){
let {url,id} = event.currentTarget.dataset;
app.method.navigateTo({
url: '/pages/checkOrderDetail/checkOrderDetail?order_detection_id='+id
})
},
goPrescriptDetail(event) {
let url = event.currentTarget.dataset.url;
let redirectUrl = getCurrentPageUrl();
let options = getCurrentPageParam();
let params = ""
for (const key in options) {
if (params) {
params = params + '&' + key + '=' + options[key];
} else {
params = params + key + '=' + options[key];
}
};
//console.log(url + "&fromType=" + redirectUrl + "?" + params)
app.method.navigateTo({
url: url + "&fromType=" + encodeURIComponent(redirectUrl + "?" + params)
})
},
goList(event){
console.log(event);
const {ismine,params,id}=event.currentTarget.dataset;
console.log(params);
if(!ismine){//未填写
app.method.navigateTo({
url:'/pages/inquiryForm/inquiryForm?params='+params+"&order_inquiry_id="+id
})
}else{//已填写
app.method.navigateTo({
url:'/pages/inquiryForm/inquiryForm?case_filled_fields='+params+"&order_inquiry_id="+id
})
}
// app.go(url);
}
},
});