2024-12-18 15:46:27 +08:00
|
|
|
|
<script setup>
|
|
|
|
|
// + 页面
|
|
|
|
|
// 腾讯云聊天
|
|
|
|
|
import TencentCloudChat from '@tencentcloud/chat';
|
|
|
|
|
import {
|
|
|
|
|
ref,
|
|
|
|
|
reactive,
|
|
|
|
|
nextTick,
|
|
|
|
|
computed,
|
|
|
|
|
} from 'vue'
|
|
|
|
|
import {
|
|
|
|
|
screenHeight
|
|
|
|
|
} from '@/components/public/Mixins'
|
|
|
|
|
import JyCommodityInformation from '@/components/public/jy-commodity-information'
|
|
|
|
|
// 工具库
|
|
|
|
|
import util from '@/common/js/util.js'
|
|
|
|
|
//
|
|
|
|
|
const props = defineProps({
|
|
|
|
|
msg: {
|
|
|
|
|
type: Object,
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
// 调用父级方法
|
|
|
|
|
const emit = defineEmits(['plusClick', 'send'])
|
|
|
|
|
// 加号菜单
|
|
|
|
|
const plusList = computed(() => {
|
|
|
|
|
let result = [
|
|
|
|
|
// {
|
|
|
|
|
// type: 'order.png',
|
|
|
|
|
// label: '订单',
|
|
|
|
|
// value: 'chooseOrder'
|
|
|
|
|
// }, {
|
|
|
|
|
// type: 'shop.png',
|
|
|
|
|
// label: '商品',
|
|
|
|
|
// value: 'chooseShop'
|
|
|
|
|
// },
|
|
|
|
|
{
|
|
|
|
|
type: 'picture.png',
|
|
|
|
|
label: '照片',
|
|
|
|
|
value: 'chooseImage'
|
|
|
|
|
}, {
|
|
|
|
|
type: 'photograph.png',
|
|
|
|
|
label: '拍摄',
|
|
|
|
|
value: 'takePhoto'
|
|
|
|
|
}, {
|
|
|
|
|
type: 'red-envelope.png',
|
|
|
|
|
label: '红包',
|
|
|
|
|
value: 'redEnvelope'
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
// 单聊
|
|
|
|
|
if (props.msg.type == 'C2C') result.push({
|
|
|
|
|
type: 'news-voice.png',
|
|
|
|
|
label: '音视频',
|
|
|
|
|
value: 'voice'
|
|
|
|
|
})
|
|
|
|
|
return result
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
const popupRef = ref(null)
|
|
|
|
|
const popupRE = ref(null)
|
|
|
|
|
const formData = reactive({
|
|
|
|
|
name: ''
|
|
|
|
|
})
|
|
|
|
|
const popupData = reactive({
|
|
|
|
|
show: false,
|
|
|
|
|
title: '选择订单'
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
// 加号方法对象
|
|
|
|
|
const plusClickObj = {
|
|
|
|
|
voice: () => {
|
|
|
|
|
// 菜单
|
|
|
|
|
const menu = [{
|
|
|
|
|
name: '语音通话',
|
|
|
|
|
type: 1,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
nanme: '视频通话',
|
|
|
|
|
type: 2,
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
uni.showActionSheet({
|
|
|
|
|
itemList: ['语音通话', '视频通话'],
|
|
|
|
|
success: rs => {
|
|
|
|
|
uni.$TUICallKit.call({
|
|
|
|
|
userID: props.msg.id,
|
|
|
|
|
callMediaType: menu[rs.tapIndex].type,
|
|
|
|
|
// callParams: {
|
|
|
|
|
// roomID: 234,
|
|
|
|
|
// strRoomID: '2323423',
|
|
|
|
|
// timeout: 30
|
|
|
|
|
// },
|
|
|
|
|
}, res => {
|
|
|
|
|
console.log('[TUICallKit] call params: ', JSON.stringify(res));
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 选择订单
|
|
|
|
|
chooseOrder: () => {
|
|
|
|
|
nextTick().then(() => {
|
|
|
|
|
popupRef.value.open()
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 选择商品
|
|
|
|
|
chooseShop: () => {
|
|
|
|
|
// checkLink('pages/mine/browsed/index')
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 发送红包
|
|
|
|
|
redEnvelope() {
|
|
|
|
|
uni.navigateTo({
|
|
|
|
|
url: util.setUrl('/pages/news/redPacket', {
|
|
|
|
|
// 聊天对象
|
|
|
|
|
msgId: props.msg.id,
|
|
|
|
|
// 发送方式
|
|
|
|
|
sendType: {
|
|
|
|
|
'C2C': 1,
|
|
|
|
|
'GROUP': 2,
|
|
|
|
|
} [props.msg.type],
|
2025-01-12 02:05:25 +08:00
|
|
|
|
num: props.msg.num,
|
2024-12-18 15:46:27 +08:00
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
// popupRE.value.open()
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
//拍照
|
|
|
|
|
takePhoto: () => {
|
2025-01-09 09:06:53 +08:00
|
|
|
|
console.log('takePhoto')
|
2024-12-18 15:46:27 +08:00
|
|
|
|
sendMsgImg({
|
|
|
|
|
sourceType: ['album'],
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
//选择图片
|
|
|
|
|
chooseImage: () => {
|
2025-01-09 09:06:53 +08:00
|
|
|
|
console.log('chooseImage')
|
2024-12-18 15:46:27 +08:00
|
|
|
|
sendMsgImg({
|
|
|
|
|
sourceType: ['album'],
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 发送图片消息
|
|
|
|
|
function sendMsgImg(option) {
|
2025-01-09 09:06:53 +08:00
|
|
|
|
util.upload_image({
|
|
|
|
|
count: 1,
|
|
|
|
|
type: 1,
|
|
|
|
|
success: rs => {
|
|
|
|
|
emit('send', {
|
|
|
|
|
query: {
|
|
|
|
|
toUserId: props.msg.id,
|
|
|
|
|
msgType: TencentCloudChat.TYPES.MSG_IMAGE,
|
|
|
|
|
},
|
|
|
|
|
data: {
|
|
|
|
|
imgUrl: rs.value
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
return
|
2024-12-18 15:46:27 +08:00
|
|
|
|
// 选择图片
|
|
|
|
|
uni.chooseImage({
|
|
|
|
|
count: 1,
|
|
|
|
|
sourceType: option.sourceType, // 从相册选择
|
|
|
|
|
success: (res) => {
|
|
|
|
|
let message = uni.$chat.createImageMessage({
|
|
|
|
|
to: props.msg.id,
|
|
|
|
|
conversationType: props.msg.type,
|
|
|
|
|
payload: {
|
|
|
|
|
file: res
|
|
|
|
|
},
|
|
|
|
|
onProgress: function(event) {
|
|
|
|
|
console.log('file uploading:', event)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 咨询订单
|
|
|
|
|
const consult = (content) => {
|
|
|
|
|
let obj = {
|
|
|
|
|
content,
|
|
|
|
|
type: 'order'
|
|
|
|
|
}
|
|
|
|
|
popupRef.value.close()
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<template>
|
|
|
|
|
<view class="jy-plus">
|
|
|
|
|
<view class="NewsPlus ptb20" style="background: #F6F6F6;">
|
|
|
|
|
<view class="df fdc aic" v-for="(item, index) in plusList" :key="index" @click="plusClickObj[item.value]">
|
|
|
|
|
<view class="imageBox fmid wh100">
|
|
|
|
|
<image class="image wh50" :src="`/static/new-${item.type}`" mode="aspectFit" />
|
|
|
|
|
</view>
|
|
|
|
|
<text class="mt20">{{ item.label }}</text>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<!-- 咨询订单的弹窗 -->
|
|
|
|
|
<uni-popup ref="popupRef" type="bottom">
|
|
|
|
|
<view class="jy-popup bfff" :style="{ height: `${screenHeight(true) * 0.7}px` }">
|
|
|
|
|
<view class="title">
|
|
|
|
|
<text>咨询订单</text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="close-btn" @click="popupRef.close()">×</view>
|
|
|
|
|
<view class="input-view">
|
|
|
|
|
<uni-easyinput class="easyinput" placeholder="搜索你要查询的订单">
|
|
|
|
|
<template v-slot:left>
|
|
|
|
|
<uni-icons class="ml20" type="search" size="20"></uni-icons>
|
|
|
|
|
</template>
|
|
|
|
|
</uni-easyinput>
|
|
|
|
|
</view>
|
|
|
|
|
<scroll-view scroll-y scroll-with-animation>
|
|
|
|
|
<view v-for="(item, index) in 2">
|
|
|
|
|
<view class="time">
|
|
|
|
|
下单时间:2024-07-28 22:45:25
|
|
|
|
|
</view>
|
|
|
|
|
<JyCommodityInformation :showType="4" @consult="consult"></JyCommodityInformation>
|
|
|
|
|
</view>
|
|
|
|
|
</scroll-view>
|
|
|
|
|
</view>
|
|
|
|
|
</uni-popup>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
|
|
.NewsPlus {
|
|
|
|
|
// 一行四个
|
|
|
|
|
display: grid;
|
|
|
|
|
grid-template-columns: repeat(4, 1fr);
|
|
|
|
|
grid-gap: 20rpx;
|
|
|
|
|
|
|
|
|
|
.imageBox {
|
|
|
|
|
background-color: #fff;
|
|
|
|
|
border-radius: 20rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.jy-popup {
|
|
|
|
|
width: 100%;
|
|
|
|
|
border-radius: 20px 20px 0px 0px;
|
|
|
|
|
|
|
|
|
|
.title {
|
|
|
|
|
width: 100%;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
align-items: center;
|
|
|
|
|
padding: 20rpx 0;
|
|
|
|
|
// 底部边框显示
|
|
|
|
|
color: #3D3D3D;
|
|
|
|
|
font-size: 32rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.close-btn {
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: 40rpx;
|
|
|
|
|
right: 40rpx;
|
|
|
|
|
height: 52rpx;
|
|
|
|
|
line-height: 52rpx;
|
|
|
|
|
width: 52rpx;
|
|
|
|
|
background: #D8D8D8;
|
|
|
|
|
color: #999999;
|
|
|
|
|
font-size: 30rpx;
|
|
|
|
|
border-radius: 50%;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
align-items: center;
|
|
|
|
|
transform: translate(50%, -50%);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.input-view {
|
|
|
|
|
// 只显示上下边框不显示左右
|
|
|
|
|
border-top: 1px solid #E5E5E5;
|
|
|
|
|
border-bottom: 1px solid #E5E5E5;
|
|
|
|
|
padding: 20rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.easyinput {
|
|
|
|
|
flex: 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.time {
|
|
|
|
|
padding: 24rpx 20rpx 0 20rpx;
|
|
|
|
|
font-size: 22rpx;
|
|
|
|
|
color: #3D3D3D;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|