2025.03.15 工作代码提交
This commit is contained in:
parent
fdee18b7f8
commit
cc9578f3eb
jiuyi2
|
@ -130,6 +130,7 @@ export const news = {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
data: param.data,
|
data: param.data,
|
||||||
query: param.query,
|
query: param.query,
|
||||||
|
load: true,
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -139,7 +140,7 @@ export const news = {
|
||||||
url: `/user/getRedPacketInfo`,
|
url: `/user/getRedPacketInfo`,
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
query: param.query,
|
query: param.query,
|
||||||
load: 1,
|
load: true,
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -150,6 +151,7 @@ export const news = {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
data: param.data,
|
data: param.data,
|
||||||
query: param.query,
|
query: param.query,
|
||||||
|
load: true,
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,6 @@ const config = {
|
||||||
// #endif
|
// #endif
|
||||||
// #ifndef H5
|
// #ifndef H5
|
||||||
host: 'http://91f.xyz:8080',
|
host: 'http://91f.xyz:8080',
|
||||||
// host: 'http://762c9b48.r24.cpolar.top',
|
|
||||||
// #endif
|
// #endif
|
||||||
// 是否vivo显示
|
// 是否vivo显示
|
||||||
showVivo: true,
|
showVivo: true,
|
||||||
|
|
|
@ -134,7 +134,7 @@ const util = {
|
||||||
reject(res)
|
reject(res)
|
||||||
},
|
},
|
||||||
complete(rs) {
|
complete(rs) {
|
||||||
console.log('upload complete', rs)
|
// console.log('upload complete', rs)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -213,7 +213,7 @@ const util = {
|
||||||
responseType: params.responseType || 'text',
|
responseType: params.responseType || 'text',
|
||||||
// 请求成功返回
|
// 请求成功返回
|
||||||
success: res => {
|
success: res => {
|
||||||
// console.log('request success', url, res, params.data ? params.data : '')
|
console.log('request success', url, res, params.data ? params.data : '')
|
||||||
// 关闭加载效果
|
// 关闭加载效果
|
||||||
if (params.load) {
|
if (params.load) {
|
||||||
uni.hideLoading()
|
uni.hideLoading()
|
||||||
|
@ -602,6 +602,7 @@ const util = {
|
||||||
count: obj.type == 1 ? 1 : count - obj.value.length,
|
count: obj.type == 1 ? 1 : count - obj.value.length,
|
||||||
sourceType: obj.sourceType || ['album', 'camera'],
|
sourceType: obj.sourceType || ['album', 'camera'],
|
||||||
success: (rs) => {
|
success: (rs) => {
|
||||||
|
console.log('rs', rs)
|
||||||
// 遍历图片返回列表
|
// 遍历图片返回列表
|
||||||
rs.tempFiles.forEach(item => {
|
rs.tempFiles.forEach(item => {
|
||||||
// 限制大小
|
// 限制大小
|
||||||
|
@ -615,6 +616,7 @@ const util = {
|
||||||
file: item.path,
|
file: item.path,
|
||||||
mode: 'img',
|
mode: 'img',
|
||||||
success(res) {
|
success(res) {
|
||||||
|
console.log('upload res', res)
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
uni.getImageInfo({
|
uni.getImageInfo({
|
||||||
src: item.path,
|
src: item.path,
|
||||||
|
@ -625,6 +627,7 @@ const util = {
|
||||||
width: imageInfo.width,
|
width: imageInfo.width,
|
||||||
height: imageInfo
|
height: imageInfo
|
||||||
.height,
|
.height,
|
||||||
|
size: item.size,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
|
@ -114,8 +114,11 @@
|
||||||
res.forEach(item => {
|
res.forEach(item => {
|
||||||
let obj = {}
|
let obj = {}
|
||||||
obj.type = item.type;
|
obj.type = item.type;
|
||||||
obj.chatText = item.lastMessage.messageForShow;
|
// 处理最近一条消息
|
||||||
|
obj.chatText = item.lastMessage.messageForShow
|
||||||
|
if (obj.chatText == "[自定义消息]") obj.chatText = item.lastMessage.payload.description || '[自定义消息]'
|
||||||
obj.MsgTime = handleDate(item.lastMessage.lastTime);
|
obj.MsgTime = handleDate(item.lastMessage.lastTime);
|
||||||
|
//
|
||||||
obj.unreadCount = item.unreadCount;
|
obj.unreadCount = item.unreadCount;
|
||||||
|
|
||||||
if (item.type == 'C2C') {
|
if (item.type == 'C2C') {
|
||||||
|
|
|
@ -149,24 +149,28 @@
|
||||||
uni.offKeyboardHeightChange(() => {})
|
uni.offKeyboardHeightChange(() => {})
|
||||||
// #endif
|
// #endif
|
||||||
videoContext.value.stop()
|
videoContext.value.stop()
|
||||||
|
// 移除监听消息
|
||||||
|
removeListener()
|
||||||
})
|
})
|
||||||
|
|
||||||
// 开启监听消息
|
// 开启监听消息
|
||||||
function addListener() {
|
function addListener() {
|
||||||
let onMessageReceived = function(event) {
|
let onMessageReceived = function(event) {
|
||||||
console.log('TencentCloudChat.EVENT.MESSAGE_RECEIVED', event)
|
console.log('TencentCloudChat.EVENT.MESSAGE_RECEIVED', event)
|
||||||
setTimeout(() => {
|
//
|
||||||
// 获取历史记录
|
list.messageList.push(...event.data)
|
||||||
getHistory({
|
|
||||||
msgId: '',
|
|
||||||
limit: 1,
|
|
||||||
})
|
|
||||||
}, 200)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uni.$chat.on(TencentCloudChat.EVENT.MESSAGE_RECEIVED, onMessageReceived);
|
uni.$chat.on(TencentCloudChat.EVENT.MESSAGE_RECEIVED, onMessageReceived);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 移除监听消息
|
||||||
|
function removeListener() {
|
||||||
|
let onMessageReceived = function(event) {}
|
||||||
|
|
||||||
|
uni.$chat.off(TencentCloudChat.EVENT.MESSAGE_RECEIVED, onMessageReceived);
|
||||||
|
}
|
||||||
|
|
||||||
// 监听内容滚动
|
// 监听内容滚动
|
||||||
function onContentScroll(ev) {
|
function onContentScroll(ev) {
|
||||||
if (ev.scrollTop == 50) getMoreHistroy()
|
if (ev.scrollTop == 50) getMoreHistroy()
|
||||||
|
@ -177,18 +181,26 @@
|
||||||
|
|
||||||
// 点击发送
|
// 点击发送
|
||||||
function handleSend() {
|
function handleSend() {
|
||||||
|
//
|
||||||
|
if (!content.value) {
|
||||||
|
util.alert('消息不能为空')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 取消聚焦
|
||||||
inputFocus.value = false
|
inputFocus.value = false
|
||||||
|
|
||||||
|
// 创建文本消息
|
||||||
|
let message = uni.$chat.createTextMessage({
|
||||||
|
to: msg.id,
|
||||||
|
conversationType: msg.type,
|
||||||
|
payload: {
|
||||||
|
text: content.value
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
// 发送消息
|
// 发送消息
|
||||||
sendMsg({
|
sendMsg({
|
||||||
query: {
|
message,
|
||||||
formId: userinfo.value.id,
|
|
||||||
toUserId: msg.id,
|
|
||||||
msgType: TencentCloudChat.TYPES.MSG_TEXT,
|
|
||||||
},
|
|
||||||
data: {
|
|
||||||
text: content.value
|
|
||||||
},
|
|
||||||
success: () => {
|
success: () => {
|
||||||
// 清空已发送的消息
|
// 清空已发送的消息
|
||||||
content.value = ''
|
content.value = ''
|
||||||
|
@ -202,7 +214,9 @@
|
||||||
* @param {Object} message 消息对象
|
* @param {Object} message 消息对象
|
||||||
*/
|
*/
|
||||||
function handlePlusSend(message) {
|
function handlePlusSend(message) {
|
||||||
sendMsg(message)
|
sendMsg({
|
||||||
|
message
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -210,22 +224,13 @@
|
||||||
* @param {Object} param
|
* @param {Object} param
|
||||||
*/
|
*/
|
||||||
function sendMsg(param) {
|
function sendMsg(param) {
|
||||||
//
|
console.log('sendMsg', param.message)
|
||||||
let request = api.news.sendUserMsg
|
|
||||||
//
|
|
||||||
if (msg.type == 'GROUP') request = api.news.sendGroupMsg
|
|
||||||
// if (msg.isCustomer) request = api.news.sendCusomterService
|
|
||||||
|
|
||||||
// 发送消息
|
// 发送消息
|
||||||
request({
|
uni.$chat.sendMessage(param.message).then((rs) => {
|
||||||
query: param.query,
|
console.log('send success', rs)
|
||||||
data: param.data,
|
if (rs.code == 0) {
|
||||||
}).then((rs) => {
|
//
|
||||||
if (rs.code == 200) {
|
list.messageList.push(rs.data.message)
|
||||||
// getHistory({
|
|
||||||
// msgId: '',
|
|
||||||
// limit: 1,
|
|
||||||
// })
|
|
||||||
param.success ? param.success() : ''
|
param.success ? param.success() : ''
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -240,14 +245,14 @@
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 打开红包详情
|
* 打开红包详情
|
||||||
* @param {Object} ev
|
* @param {Object} event 默认事件
|
||||||
*/
|
*/
|
||||||
function handleRedPacket(ev) {
|
function handleRedPacket(event) {
|
||||||
messageItem.value = ev
|
console.log('event', event)
|
||||||
api.news.getRedPacketInfo({
|
api.news.getRedPacketInfo({
|
||||||
query: {
|
query: {
|
||||||
// 红包id
|
// 红包id
|
||||||
redPacketId: ev.callbackData.callback_json[0].businessId
|
redPacketId: event.formatData.id,
|
||||||
}
|
}
|
||||||
}).then(rs => {
|
}).then(rs => {
|
||||||
if (rs.code == 200) {
|
if (rs.code == 200) {
|
||||||
|
@ -310,10 +315,9 @@
|
||||||
|
|
||||||
// 获取更多消息记录
|
// 获取更多消息记录
|
||||||
function getMoreHistroy() {
|
function getMoreHistroy() {
|
||||||
// 获取第一条消息记录
|
// if(list.isCompleted) return
|
||||||
if (list.total <= list.data.length) return
|
|
||||||
getHistory({
|
getHistory({
|
||||||
msgId: list.data[0].id
|
msgId: list.messageList[0].ID
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -558,15 +562,15 @@
|
||||||
|
|
||||||
<view class="tool bfff" id="tool">
|
<view class="tool bfff" id="tool">
|
||||||
<view class="tool-group">
|
<view class="tool-group">
|
||||||
|
<!-- 摁住说话 -->
|
||||||
<!-- 语音 -->
|
<!-- 语音 -->
|
||||||
<image src="/static/news-voice.png" mode="widthFix" class="thumb" @click="handleTool('voice')"></image>
|
<image src="/static/news-voice.png" mode="widthFix" class="thumb" @click="handleTool('voice')"></image>
|
||||||
<!-- 摁住说话 -->
|
|
||||||
<template v-if="toolStatus == 'voice'">
|
<template v-if="toolStatus == 'voice'">
|
||||||
<JyVoice @send="voiceSend" :msg="msg" />
|
<JyVoice @send="voiceSend" :msg="msg" />
|
||||||
</template>
|
</template>
|
||||||
<!-- 输入框 -->
|
<!-- 输入框 -->
|
||||||
<template v-if="toolStatus != 'voice'">
|
<template v-if="toolStatus != 'voice'">
|
||||||
<uni-easyinput @focus="onFocus" type="text" v-model="content" :clearable="false" class="input"
|
<uni-easyinput @focus="onFocus" type="text" v-model.trim="content" :clearable="false" class="input"
|
||||||
:adjust-position="false" @keyboardheightchange="keyboardheightchange" placeholder="请输入你的问题"
|
:adjust-position="false" @keyboardheightchange="keyboardheightchange" placeholder="请输入你的问题"
|
||||||
confirmType="发送" :focus="inputFocus" />
|
confirmType="发送" :focus="inputFocus" />
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -11,6 +11,9 @@
|
||||||
computed,
|
computed,
|
||||||
defineEmits,
|
defineEmits,
|
||||||
} from 'vue'
|
} from 'vue'
|
||||||
|
// 工具库
|
||||||
|
import util from '@/common/js/util';
|
||||||
|
|
||||||
import NewsAudio from '@/static/audio.png'
|
import NewsAudio from '@/static/audio.png'
|
||||||
import JyCommodityInformation from '@/components/public/jy-commodity-information'
|
import JyCommodityInformation from '@/components/public/jy-commodity-information'
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
|
@ -30,7 +33,11 @@
|
||||||
const store = useStore()
|
const store = useStore()
|
||||||
const emit = defineEmits(['openRedBag', 'viewVideo'])
|
const emit = defineEmits(['openRedBag', 'viewVideo'])
|
||||||
// 格式化
|
// 格式化
|
||||||
const formatData = computed(() => props.item)
|
const formatData = computed(() => {
|
||||||
|
let result = props.item.payload.data || ''
|
||||||
|
if (result) result = JSON.parse(result)
|
||||||
|
return result
|
||||||
|
})
|
||||||
//音频
|
//音频
|
||||||
const innerAudioContext = uni.createInnerAudioContext();
|
const innerAudioContext = uni.createInnerAudioContext();
|
||||||
// 播放语音
|
// 播放语音
|
||||||
|
@ -41,10 +48,7 @@
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 用户信息
|
// 用户信息
|
||||||
const userinfo = computed(() => {
|
const userinfo = computed(() => store.state.userinfo)
|
||||||
let result = store.state.userinfo
|
|
||||||
return result
|
|
||||||
})
|
|
||||||
|
|
||||||
// 拨打电话
|
// 拨打电话
|
||||||
function handleCall() {
|
function handleCall() {
|
||||||
|
@ -58,20 +62,34 @@
|
||||||
|
|
||||||
// 开红包
|
// 开红包
|
||||||
function handleOpenRedBag() {
|
function handleOpenRedBag() {
|
||||||
emit('openRedBag', props.item)
|
emit('openRedBag', {
|
||||||
|
item: props.item,
|
||||||
|
formatData: formatData.value,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 看视频
|
// 看视频
|
||||||
function handleViewVideo(item) {
|
function handleViewVideo(item) {
|
||||||
emit('viewVideo', item)
|
emit('viewVideo', item)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 看图片
|
||||||
|
* @param {Object} urls 图片路径数组
|
||||||
|
*/
|
||||||
|
function handleViewImage(urls) {
|
||||||
|
uni.previewImage({
|
||||||
|
urls,
|
||||||
|
})
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<view class="content pr">
|
<view class="content pr">
|
||||||
<!-- 图片 -->
|
<!-- 图片 -->
|
||||||
<template v-if="item.type === TencentCloudChat.TYPES.MSG_IMAGE">
|
<template v-if="item.type === TencentCloudChat.TYPES.MSG_IMAGE">
|
||||||
<image class="br10" :src="formatData.MsgContent.ImageInfoArray[0].URL" mode="widthFix" />
|
<image class="br10" :src="item.payload.imageInfoArray[0].imageUrl" mode="widthFix"
|
||||||
|
@click="util.view_imgs([item.payload.imageInfoArray[0].imageUrl],0)" />
|
||||||
</template>
|
</template>
|
||||||
<!-- 文字 -->
|
<!-- 文字 -->
|
||||||
<template v-else-if="item.type === TencentCloudChat.TYPES.MSG_TEXT">
|
<template v-else-if="item.type === TencentCloudChat.TYPES.MSG_TEXT">
|
||||||
|
@ -140,12 +158,12 @@
|
||||||
<!-- 红包 -->
|
<!-- 红包 -->
|
||||||
<view class="redPacket br10" :class="{'disabled': 0}" @click="handleOpenRedBag">
|
<view class="redPacket br10" :class="{'disabled': 0}" @click="handleOpenRedBag">
|
||||||
<view class="df aic">
|
<view class="df aic">
|
||||||
<image class="img fs0 mr10" src="/static/image/pages/news/group/create.png" />
|
<image class="img fs0 mr10" src="/static/image/red-envelope.png" />
|
||||||
<view class="red-packet-text cfff">{{ formatData.data.blessing }}</view>
|
<view class="red-packet-text cfff">{{ formatData.blessing }}</view>
|
||||||
</view>
|
</view>
|
||||||
<!-- 分割线 -->
|
<!-- 分割线 -->
|
||||||
<view class="line"></view>
|
<view class="line"></view>
|
||||||
<view class="f20" style="color:#FBD3A4">{{ formatData.data.payType == 1 ? '余额红包' : '积分红包' }}
|
<view class="f20" style="color:#FBD3A4">{{ formatData.redPacketType == 1 ? '余额红包' : '积分红包' }}
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -18,7 +18,7 @@ export const getHistoryMsg = async (option) => {
|
||||||
nextReqMessageID: option.nextReqMessageID,
|
nextReqMessageID: option.nextReqMessageID,
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('options', options);
|
console.log('getHistoryMsg', options);
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
uni.$chat.getMessageList(options).then((res) => {
|
uni.$chat.getMessageList(options).then((res) => {
|
||||||
resolve(res)
|
resolve(res)
|
||||||
|
|
|
@ -16,9 +16,13 @@ import JyCommodityInformation from '@/components/public/jy-commodity-information
|
||||||
import api from '@/api/index.js'
|
import api from '@/api/index.js'
|
||||||
// 工具库
|
// 工具库
|
||||||
import util from '@/common/js/util.js'
|
import util from '@/common/js/util.js'
|
||||||
import { inject } from 'vue'
|
import {
|
||||||
|
inject
|
||||||
|
} from 'vue'
|
||||||
|
|
||||||
const { checkLink } = inject('util');
|
const {
|
||||||
|
checkLink
|
||||||
|
} = inject('util');
|
||||||
//
|
//
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
msg: {
|
msg: {
|
||||||
|
@ -30,8 +34,7 @@ const props = defineProps({
|
||||||
const emit = defineEmits(['plusClick', 'send'])
|
const emit = defineEmits(['plusClick', 'send'])
|
||||||
// 加号菜单
|
// 加号菜单
|
||||||
const plusList = computed(() => {
|
const plusList = computed(() => {
|
||||||
let result = [
|
let result = [{
|
||||||
{
|
|
||||||
type: 'picture.png',
|
type: 'picture.png',
|
||||||
label: '照片',
|
label: '照片',
|
||||||
value: 'chooseImage',
|
value: 'chooseImage',
|
||||||
|
@ -43,8 +46,7 @@ const plusList = computed(() => {
|
||||||
type: 'pages/news/group/create.png',
|
type: 'pages/news/group/create.png',
|
||||||
label: '红包',
|
label: '红包',
|
||||||
value: 'redEnvelope',
|
value: 'redEnvelope',
|
||||||
}
|
}]
|
||||||
]
|
|
||||||
|
|
||||||
const isCustomer = props.msg.isCustomer;
|
const isCustomer = props.msg.isCustomer;
|
||||||
|
|
||||||
|
@ -180,7 +182,7 @@ const plusClickObj = {
|
||||||
takePhoto: () => {
|
takePhoto: () => {
|
||||||
console.log('takePhoto')
|
console.log('takePhoto')
|
||||||
sendMsgImg({
|
sendMsgImg({
|
||||||
sourceType: ['album'],
|
sourceType: ['camera'],
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -195,40 +197,23 @@ const plusClickObj = {
|
||||||
|
|
||||||
// 发送图片消息
|
// 发送图片消息
|
||||||
function sendMsgImg(option) {
|
function sendMsgImg(option) {
|
||||||
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
|
|
||||||
// 选择图片
|
|
||||||
uni.chooseImage({
|
uni.chooseImage({
|
||||||
count: 1,
|
count: 8,
|
||||||
sourceType: option.sourceType, // 从相册选择
|
sourceType: option.sourceType,
|
||||||
success: (res) => {
|
success: res => {
|
||||||
|
console.log('res', res)
|
||||||
|
// 创建图片消息
|
||||||
let message = uni.$chat.createImageMessage({
|
let message = uni.$chat.createImageMessage({
|
||||||
to: props.msg.id,
|
to: props.msg.id,
|
||||||
conversationType: props.msg.type,
|
conversationType: props.msg.type,
|
||||||
payload: {
|
payload: {
|
||||||
file: res
|
file: res,
|
||||||
},
|
},
|
||||||
onProgress: function (event) {
|
|
||||||
console.log('file uploading:', event)
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
emit('send', message)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 咨询订单
|
// 咨询订单
|
||||||
|
|
|
@ -4,7 +4,6 @@ import {
|
||||||
import uni from '@dcloudio/vite-plugin-uni';
|
import uni from '@dcloudio/vite-plugin-uni';
|
||||||
|
|
||||||
let target = 'http://91f.xyz:8080'
|
let target = 'http://91f.xyz:8080'
|
||||||
// let target = 'http://762c9b48.r24.cpolar.top'
|
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
plugins: [uni()],
|
plugins: [uni()],
|
||||||
|
|
Loading…
Reference in New Issue