123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- import {
- getMsgDet,
- sendMsg,
- getNewMsgDet
- } from "~/api/message"
- import {
- createStoreBindings
- } from 'mobx-miniprogram-bindings'
- import event from '~/mixins/event'
- import {
- store
- } from '~/store/index'
- let interval = null
- const app = getApp()
- Page({
- behaviors: [event],
- data: {
- targetUid: '',
- value: '',
- list: [],
- pageNo: 1,
- totalNo: 1,
- scrollTop: 0,
- triggered: false,
- isIos: app.globalData.isIOS,
- navBarHeight: app.globalData.navBarHeight,
- uid: ''
- },
- onLoad(options) {
- wx.setNavigationBarTitle({
- title: options.title,
- })
- this.setData({
- targetUid: options.uid,
- uid: wx.getStorageSync('uid')
- })
- this.storeBindings = createStoreBindings(this, {
- store,
- fields: {
- userInfo: 'userInfo'
- },
- })
- this.storeBindings.updateStoreBindings()
- this.getMsgDet().then(() => {
- this.setData({
- scrollTop: 10000
- })
- })
- this.interval = setInterval(() => {
- this.getNewMsgDet()
- }, 5000)
- },
- getMsgDet() {
- return new Promise(async (reslove) => {
- let pageNo = this.data.pageNo
- if (this.data.totalNo < pageNo) {
- return this.setData({
- triggered: false,
- })
- }
- let data = await getMsgDet({
- senderUid: this.data.targetUid,
- pageNo,
- pageSize: 10
- })
- let {
- list,
- totalNo
- } = data
- this.setData({
- list: [...list, ...this.data.list],
- totalNo,
- pageNo: totalNo >= pageNo ? ++pageNo : pageNo,
- triggered: false,
- })
- reslove()
- })
- },
- async getNewMsgDet() {
- let res = await getNewMsgDet({
- senderUid: this.data.targetUid,
- })
- let newList = [...this.data.list, ...res]
- this.setData({
- list: newList,
- })
- },
- async sendReply() {
- if (!this.data.value.trim()) {
- return
- }
- await sendMsg({
- content: this.data.value,
- type: '1',
- receiverUid: this.data.targetUid
- })
- this.setData({
- value: '',
- scrollTop: this.data.list.length * 1000
- })
- this.getNewMsgDet()
- },
- previewImage(e) {
- var imageUrl = e.currentTarget.dataset.src;
- wx.previewImage({
- urls: [imageUrl]
- })
- },
- chooseImage() {
- wx.chooseMedia({
- count: 1,
- mediaType: ['image'],
- sourceType: ['album', 'camera'],
- sizeType: ['compressed'], // 压缩图片
- camera: 'back',
- success: (res) => {
- this.uploadImage(res.tempFiles[0].tempFilePath);
- }
- })
- },
- uploadImage(imagePath) {
- wx.uploadFile({
- url: 'https://reader-api.ai160.com/file/upload',
- filePath: imagePath,
- name: '朗读录音',
- header: {
- uid: wx.getStorageSync('uid')
- },
- success: async (res) => {
- await sendMsg({
- content: JSON.parse(res.data).data,
- type: '2',
- receiverUid: this.data.targetUid
- })
- this.getNewMsgDet()
- this.setData({
- scrollTop: this.data.list.length * 1000
- })
- }
- })
- },
- bindKeyInput(e) {
- this.setData({
- value: e.detail.value
- })
- },
- jumpUserInfo({
- currentTarget
- }) {
- wx.navigateTo({
- url: `/pages/personal/index?uid=${currentTarget.dataset.uid}&type=user`,
- })
- },
- onUnload() {
- clearInterval(this.interval)
- }
- })
|