2025.03.15 工作代码提交

This commit is contained in:
sx 2025-03-15 18:11:53 +08:00
parent fdee18b7f8
commit cc9578f3eb
10 changed files with 594 additions and 581 deletions

View File

@ -130,6 +130,7 @@ export const news = {
method: 'POST',
data: param.data,
query: param.query,
load: true,
})
},
@ -139,7 +140,7 @@ export const news = {
url: `/user/getRedPacketInfo`,
method: 'GET',
query: param.query,
load: 1,
load: true,
})
},
@ -150,6 +151,7 @@ export const news = {
method: 'POST',
data: param.data,
query: param.query,
load: true,
})
},

View File

@ -7,7 +7,6 @@ const config = {
// #endif
// #ifndef H5
host: 'http://91f.xyz:8080',
// host: 'http://762c9b48.r24.cpolar.top',
// #endif
// 是否vivo显示
showVivo: true,

View File

@ -134,7 +134,7 @@ const util = {
reject(res)
},
complete(rs) {
console.log('upload complete', rs)
// console.log('upload complete', rs)
}
})
})
@ -213,7 +213,7 @@ const util = {
responseType: params.responseType || 'text',
// 请求成功返回
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) {
uni.hideLoading()
@ -602,6 +602,7 @@ const util = {
count: obj.type == 1 ? 1 : count - obj.value.length,
sourceType: obj.sourceType || ['album', 'camera'],
success: (rs) => {
console.log('rs', rs)
// 遍历图片返回列表
rs.tempFiles.forEach(item => {
// 限制大小
@ -615,6 +616,7 @@ const util = {
file: item.path,
mode: 'img',
success(res) {
console.log('upload res', res)
if (res.code === 200) {
uni.getImageInfo({
src: item.path,
@ -625,6 +627,7 @@ const util = {
width: imageInfo.width,
height: imageInfo
.height,
size: item.size,
});
},
})

View File

@ -114,8 +114,11 @@
res.forEach(item => {
let obj = {}
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.unreadCount = item.unreadCount;
if (item.type == 'C2C') {

View File

@ -149,24 +149,28 @@
uni.offKeyboardHeightChange(() => {})
// #endif
videoContext.value.stop()
//
removeListener()
})
//
function addListener() {
let onMessageReceived = function(event) {
console.log('TencentCloudChat.EVENT.MESSAGE_RECEIVED', event)
setTimeout(() => {
//
getHistory({
msgId: '',
limit: 1,
})
}, 200)
//
list.messageList.push(...event.data)
}
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) {
if (ev.scrollTop == 50) getMoreHistroy()
@ -177,18 +181,26 @@
//
function handleSend() {
//
if (!content.value) {
util.alert('消息不能为空')
return
}
//
inputFocus.value = false
//
let message = uni.$chat.createTextMessage({
to: msg.id,
conversationType: msg.type,
payload: {
text: content.value
},
})
//
sendMsg({
query: {
formId: userinfo.value.id,
toUserId: msg.id,
msgType: TencentCloudChat.TYPES.MSG_TEXT,
},
data: {
text: content.value
},
message,
success: () => {
//
content.value = ''
@ -202,7 +214,9 @@
* @param {Object} message 消息对象
*/
function handlePlusSend(message) {
sendMsg(message)
sendMsg({
message
})
}
/**
@ -210,22 +224,13 @@
* @param {Object} param
*/
function sendMsg(param) {
//
let request = api.news.sendUserMsg
//
if (msg.type == 'GROUP') request = api.news.sendGroupMsg
// if (msg.isCustomer) request = api.news.sendCusomterService
console.log('sendMsg', param.message)
//
request({
query: param.query,
data: param.data,
}).then((rs) => {
if (rs.code == 200) {
// getHistory({
// msgId: '',
// limit: 1,
// })
uni.$chat.sendMessage(param.message).then((rs) => {
console.log('send success', rs)
if (rs.code == 0) {
//
list.messageList.push(rs.data.message)
param.success ? param.success() : ''
return
}
@ -240,14 +245,14 @@
/**
* 打开红包详情
* @param {Object} ev
* @param {Object} event 默认事件
*/
function handleRedPacket(ev) {
messageItem.value = ev
function handleRedPacket(event) {
console.log('event', event)
api.news.getRedPacketInfo({
query: {
// id
redPacketId: ev.callbackData.callback_json[0].businessId
redPacketId: event.formatData.id,
}
}).then(rs => {
if (rs.code == 200) {
@ -310,10 +315,9 @@
//
function getMoreHistroy() {
//
if (list.total <= list.data.length) return
// if(list.isCompleted) return
getHistory({
msgId: list.data[0].id
msgId: list.messageList[0].ID
})
}
@ -558,15 +562,15 @@
<view class="tool bfff" id="tool">
<view class="tool-group">
<!-- 摁住说话 -->
<!-- 语音 -->
<image src="/static/news-voice.png" mode="widthFix" class="thumb" @click="handleTool('voice')"></image>
<!-- 摁住说话 -->
<template v-if="toolStatus == 'voice'">
<JyVoice @send="voiceSend" :msg="msg" />
</template>
<!-- 输入框 -->
<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="请输入你的问题"
confirmType="发送" :focus="inputFocus" />
</template>

View File

@ -11,6 +11,9 @@
computed,
defineEmits,
} from 'vue'
//
import util from '@/common/js/util';
import NewsAudio from '@/static/audio.png'
import JyCommodityInformation from '@/components/public/jy-commodity-information'
const props = defineProps({
@ -30,7 +33,11 @@
const store = useStore()
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();
//
@ -41,10 +48,7 @@
})
}
//
const userinfo = computed(() => {
let result = store.state.userinfo
return result
})
const userinfo = computed(() => store.state.userinfo)
//
function handleCall() {
@ -58,20 +62,34 @@
//
function handleOpenRedBag() {
emit('openRedBag', props.item)
emit('openRedBag', {
item: props.item,
formatData: formatData.value,
})
}
//
function handleViewVideo(item) {
emit('viewVideo', item)
}
/**
* 看图片
* @param {Object} urls 图片路径数组
*/
function handleViewImage(urls) {
uni.previewImage({
urls,
})
}
</script>
<template>
<view class="content pr">
<!-- 图片 -->
<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 v-else-if="item.type === TencentCloudChat.TYPES.MSG_TEXT">
@ -140,12 +158,12 @@
<!-- 红包 -->
<view class="redPacket br10" :class="{'disabled': 0}" @click="handleOpenRedBag">
<view class="df aic">
<image class="img fs0 mr10" src="/static/image/pages/news/group/create.png" />
<view class="red-packet-text cfff">{{ formatData.data.blessing }}</view>
<image class="img fs0 mr10" src="/static/image/red-envelope.png" />
<view class="red-packet-text cfff">{{ formatData.blessing }}</view>
</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>
</template>

View File

@ -18,7 +18,7 @@ export const getHistoryMsg = async (option) => {
nextReqMessageID: option.nextReqMessageID,
}
console.log('options', options);
console.log('getHistoryMsg', options);
return new Promise((resolve, reject) => {
uni.$chat.getMessageList(options).then((res) => {
resolve(res)

View File

@ -16,9 +16,13 @@ import JyCommodityInformation from '@/components/public/jy-commodity-information
import api from '@/api/index.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({
msg: {
@ -30,8 +34,7 @@ const props = defineProps({
const emit = defineEmits(['plusClick', 'send'])
//
const plusList = computed(() => {
let result = [
{
let result = [{
type: 'picture.png',
label: '照片',
value: 'chooseImage',
@ -43,8 +46,7 @@ const plusList = computed(() => {
type: 'pages/news/group/create.png',
label: '红包',
value: 'redEnvelope',
}
]
}]
const isCustomer = props.msg.isCustomer;
@ -180,7 +182,7 @@ const plusClickObj = {
takePhoto: () => {
console.log('takePhoto')
sendMsgImg({
sourceType: ['album'],
sourceType: ['camera'],
})
},
@ -195,40 +197,23 @@ const plusClickObj = {
//
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({
count: 1,
sourceType: option.sourceType, //
success: (res) => {
count: 8,
sourceType: option.sourceType,
success: res => {
console.log('res', res)
//
let message = uni.$chat.createImageMessage({
to: props.msg.id,
conversationType: props.msg.type,
payload: {
file: res
file: res,
},
onProgress: function (event) {
console.log('file uploading:', event)
}
})
emit('send', message)
return
}
});
})
}
//

View File

@ -4,7 +4,6 @@ import {
import uni from '@dcloudio/vite-plugin-uni';
let target = 'http://91f.xyz:8080'
// let target = 'http://762c9b48.r24.cpolar.top'
export default defineConfig({
plugins: [uni()],