From 6f1185be3ae41f4e6e80bfa257f5f2da15f6907a Mon Sep 17 00:00:00 2001
From: YeMingfei666 <1619116647@qq.com>
Date: Thu, 4 Dec 2025 17:14:47 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=81=8A=E5=A4=A9=E5=8A=9F?=
=?UTF-8?q?=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
common/api/market/chat.js | 11 +
common/api/upload.js | 64 ++
common/config.js | 2 +
common/css/common.scss | 58 +-
http/php/chat.js | 91 +++
http/php/request.ts | 100 +++
pageChat/chat.vue | 726 ++++++++++++++++++
pageChat/components/chat-item.vue | 152 ++++
pageChat/components/date-time-picker.vue | 108 +++
pageChat/components/modal.vue | 85 ++
pageChat/components/shop-sel-action-sheet.vue | 49 ++
pageChat/coupon-activity/detail.vue | 184 +++++
pageChat/coupon-activity/index.vue | 310 ++++++++
pageChat/group-info/index.vue | 182 +++++
pageChat/index.vue | 223 ++++++
pageChat/static/clear.png | Bin 0 -> 2057 bytes
pageChat/static/coupon.png | Bin 0 -> 2989 bytes
pageChat/static/exit.png | Bin 0 -> 2813 bytes
pageChat/static/pic.png | Bin 0 -> 3818 bytes
pageChat/static/video.png | Bin 0 -> 2686 bytes
pages.json | 16 +
pages/order/confirm-order.vue | 11 +-
pages/user/user.vue | 8 +
static/icon/msg.png | Bin 0 -> 4756 bytes
stores/chat.js | 126 +++
25 files changed, 2504 insertions(+), 2 deletions(-)
create mode 100644 common/api/market/chat.js
create mode 100644 common/api/upload.js
create mode 100644 http/php/chat.js
create mode 100644 http/php/request.ts
create mode 100644 pageChat/chat.vue
create mode 100644 pageChat/components/chat-item.vue
create mode 100644 pageChat/components/date-time-picker.vue
create mode 100644 pageChat/components/modal.vue
create mode 100644 pageChat/components/shop-sel-action-sheet.vue
create mode 100644 pageChat/coupon-activity/detail.vue
create mode 100644 pageChat/coupon-activity/index.vue
create mode 100644 pageChat/group-info/index.vue
create mode 100644 pageChat/index.vue
create mode 100644 pageChat/static/clear.png
create mode 100644 pageChat/static/coupon.png
create mode 100644 pageChat/static/exit.png
create mode 100644 pageChat/static/pic.png
create mode 100644 pageChat/static/video.png
create mode 100644 static/icon/msg.png
create mode 100644 stores/chat.js
diff --git a/common/api/market/chat.js b/common/api/market/chat.js
new file mode 100644
index 0000000..0758172
--- /dev/null
+++ b/common/api/market/chat.js
@@ -0,0 +1,11 @@
+// 引入 request 文件
+import request from "@/common/api/request.js";
+import { prveUrl } from "./config.js";
+
+export const couponGrant = (data) => {
+ return request({
+ url: prveUrl + "/user/chat/coupon/grant",
+ method: "post",
+ data: data,
+ });
+};
diff --git a/common/api/upload.js b/common/api/upload.js
new file mode 100644
index 0000000..7505b7c
--- /dev/null
+++ b/common/api/upload.js
@@ -0,0 +1,64 @@
+function getHeader() {
+ let token = uni.cache.get("token") || "";
+ const shopId = uni.cache.get("shopId") * 1;
+ const userInfo = uni.cache.get("userInfo") || {};
+
+ return {
+ version: uni.conf.version,
+ type: uni.getSystemInfoSync().platform,
+ // #ifdef APP-PLUS
+ platformType: "APP",
+ // #endif
+ // #ifdef H5
+ platformType: "H5",
+ // #endif
+ // #ifdef MP-WEIXIN
+ platformType: "WX",
+ // #endif
+ // #ifdef MP-ALIPAY
+ platformType: "ALI",
+ // #endif
+ token,
+ id: userInfo.id || "",
+ shopId: shopId || "",
+ userId: userInfo.id || "",
+ };
+}
+
+// 上传
+export function upload(uri, file, data, showLoading = true, extParams = {}) {
+ return new Promise((resolve, reject) => {
+ uni.showLoading();
+
+ uni
+ .uploadFile(
+ Object.assign(
+ {
+ url: uni.conf.baseUrl + uri,
+ formData: data,
+ name: "file",
+ filePath: file.path || file.url || file,
+ header: getHeader(),
+ },
+ extParams
+ )
+ )
+ .then((httpData) => {
+ // uni.upload 返回bodyData 的是 string类型。 需要解析。
+ httpData.data = JSON.parse(httpData.data);
+ if( httpData.data.code==200){
+ resolve( httpData.data.data);
+ }
+ reject()
+ })
+ .catch((err) => {
+ reject();
+ uni.hideLoading();
+ infoBox.showErrorToast(`上传失败`);
+ });
+ });
+}
+
+export const uploadFile = (file, data) => {
+ return upload("/account/user/common/upload", file, data);
+};
diff --git a/common/config.js b/common/config.js
index 7c72342..a12d3f1 100644
--- a/common/config.js
+++ b/common/config.js
@@ -37,6 +37,8 @@ export const changeEnv = (env) => {
uni.conf = {
debug: true,
baseUrl: "http://192.168.1.42",
+ phpUrl:'http://192.168.1.42:8787/api/',
+ phpChatWx:'ws://192.168.1.42:2348',
version: 100,
autoRemoveCache,
baseUrlwws: "ws://192.168.1.42:2348",
diff --git a/common/css/common.scss b/common/css/common.scss
index eee4645..425b73c 100644
--- a/common/css/common.scss
+++ b/common/css/common.scss
@@ -105,6 +105,7 @@ page,
justify-content: center;
}
.u-flex-col{
+ display: flex;
flex-direction: column!important;
}
.min-h-100vh{
@@ -115,4 +116,59 @@ page,
}
.align-center{
align-items: center;
- }
\ No newline at end of file
+ }
+ .u-row-between{
+ justify-content: space-between;
+ }
+ .u-row-right {
+ justify-content: flex-end;
+ }
+
+ // 定义字体(rpx)单位,大于或等于20的都为rpx单位字体
+@for $i from 20 through 40 {
+ .u-font-#{$i} {
+ font-size: $i + rpx;
+ }
+}
+
+.min-page{
+ /* #ifdef H5 */
+ min-height: calc(100vh - 44px);
+ /* #endif */
+ /* #ifndef H5 */
+ min-height: 100vh;
+ /* #endif */
+}
+.bg-f7{
+ background-color: #F7F7F7;
+}
+
+.default-box-padding{
+ padding: 32rpx 28rpx;
+}
+.default-box-radius{
+ border-radius: 16rpx;
+}
+.default-box-x-padding{
+ padding-left: 28rpx;
+ padding-right: 28rpx;
+}
+.default-box-y-padding{
+ padding-top: 32rpx;
+ padding-bottom: 32rpx;
+}
+$height: 70rpx;
+
+
+ .u-col-baseline{
+ align-items: baseline;
+ }
+ .text-right{
+ text-align: right;
+ }
+ .u-row-center{
+ justify-content: center;
+ }
+ .u-col-center{
+ align-items: center;
+ }
\ No newline at end of file
diff --git a/http/php/chat.js b/http/php/chat.js
new file mode 100644
index 0000000..25e1758
--- /dev/null
+++ b/http/php/chat.js
@@ -0,0 +1,91 @@
+import { request } from "./request";
+const prveUrl = "chat/";
+
+/**
+ * 群消息
+ * @param {Object} data
+ * @returns
+ */
+export const groupInfo = (data) => {
+ return request(prveUrl + "group/info", "POST", data, true);
+};
+
+export const commonPhrase = (data) => {
+ return request(prveUrl + "common-phrase/index", "POST", data, true);
+};
+export const commonPhraseAdd = (data) => {
+ return request(prveUrl + "common-phrase/add", "POST", data, true);
+};
+
+export const commonPhraseDel = (data) => {
+ return request(prveUrl + "common-phrase/del", "POST", data, true);
+};
+
+export const groupCreate = (data) => {
+ return request(prveUrl + "group/create", "POST", data, true);
+};
+
+export const groupJoin = (data) => {
+ return request(prveUrl + "group/join", "POST", data, true);
+};
+export const groupGetGroupUrl = (data) => {
+ return request(prveUrl + "group/getgrepurl", "POST", data, true);
+};
+
+export const groupQuit = (data) => {
+ return request(prveUrl + "group/quit", "POST", data, true);
+};
+
+export const groupTarsGroup = (data) => {
+ return request(prveUrl + "group/tarsgroup", "POST", data, true);
+};
+
+export const groupAnnouncement = (data) => {
+ return request(prveUrl + "group/announcement", "POST", data, true);
+};
+export const groupMute = (data) => {
+ return request(prveUrl + "group/mute", "POST", data, true);
+};
+
+export const groupMunute = (data) => {
+ return request(prveUrl + "group/unmute", "POST", data, true);
+};
+
+export const groupKick = (data) => {
+ return request(prveUrl + "group/kick", "POST", data, true);
+};
+
+export const groupMembers = (data) => {
+ return request(prveUrl + "group/members", "POST", data, true);
+};
+
+export const messageHistory = (data) => {
+ return request(prveUrl + "message/history", "POST", data, true);
+};
+
+export const messageMarkRead = (data) => {
+ return request(prveUrl + "message/mark-read", "POST", data, true);
+};
+
+export const messageMarkReadAll = (data) => {
+ return request(prveUrl + "message/mark-read-all", "POST", data, true);
+};
+
+export const messageUnreadCount = (data) => {
+ return request(prveUrl + "message/unread-count", "POST", data, true);
+};
+
+export const messageSessionList = (data) => {
+ return request(prveUrl + "message/sessionlist", "POST", data, true);
+};
+
+export const groupDoNotDisturb = (data) => {
+ return request(prveUrl + "group/do-not-disturb", "POST", data, true);
+};
+
+export const groupShopinfo = (data) => {
+ return request(prveUrl + "group/shopinfo", "POST", data, true);
+};
+export const sessionlistdel = (data) => {
+ return request(prveUrl + "message/sessionlistdel", "POST", data, true);
+};
diff --git a/http/php/request.ts b/http/php/request.ts
new file mode 100644
index 0000000..1b2c630
--- /dev/null
+++ b/http/php/request.ts
@@ -0,0 +1,100 @@
+//服务器接口地址
+// const baseURL : string = 'https://newblockwlx.sxczgkj.cn/index.php/api/'
+let baseURL: string = "http://192.168.1.42:8787/api/";
+// #ifdef H5
+baseURL = "/phpapi/api/";
+// #endif
+
+
+// 封装公共请求方法
+function request(
+ url: string,
+ method: "GET" | "POST" | undefined,
+ data: object | any,
+ toast: boolean
+) {
+ let networkType = "";
+ uni.getNetworkType({
+ success: (res) => {
+ networkType = res.networkType;
+ },
+ });
+ if (networkType == "none") {
+ uni.showToast({
+ title: "网络异常,请检查网络",
+ icon: "none",
+ });
+ return false;
+ }
+ if (toast) {
+ uni.showLoading({
+ title: "加载中",
+ mask: true,
+ });
+ }
+ return new Promise(async (resolve, reject) => {
+ let header: any;
+ header = {
+ "content-type": "application/json",
+ token: uni.cache.get('token'),
+ };
+ uni.request({
+ url: baseURL + url,
+ method: method,
+ data: data,
+ header: header,
+ success(res: any) {
+ if (res.data.code != 1) {
+ if (res.data.code === 3000) {
+ uni.showToast({
+ title: '请登录后操作',
+ icon: "none",
+ });
+ uni.hideLoading();
+ reject();
+ return;
+ }
+ //是否提示错误
+ if (toast) {
+ uni.showToast({
+ title: res.data.msg || res.data.message,
+ icon: "none",
+ });
+ setTimeout(() => {
+ uni.hideLoading();
+ }, 1000);
+ }
+ if (res.data.code == 401) {
+ uni.showToast({
+ title: res.message || res.msg,
+ icon: "none",
+ success: () => {
+ // uni.removeStorageSync('logintoken');
+ // uni.removeStorageSync('token');
+ uni.reLaunch({
+ url: "/pages/index/index",
+ });
+ },
+ });
+ }
+ uni.hideLoading();
+ reject(res.message | res.msg);
+ } else {
+ uni.hideLoading();
+ console.log(res);
+ resolve(res.data.data);
+ }
+ },
+ fail(err) {
+ uni.hideLoading();
+ //请求失败
+ uni.showToast({
+ title: "无法连接到服务器",
+ icon: "none",
+ });
+ reject(err);
+ },
+ });
+ });
+}
+export { request, baseURL };
diff --git a/pageChat/chat.vue b/pageChat/chat.vue
new file mode 100644
index 0000000..b7016d4
--- /dev/null
+++ b/pageChat/chat.vue
@@ -0,0 +1,726 @@
+
+
+
+
+ {{ groupInfo.name }}
+
+ ({{ membersRes?.user_list?.length || 0 }}人)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.nick_name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 商家
+ {{ shopInfo.shopName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 商家已禁言
+
+
+
+
+
+ {{ item.title }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pageChat/components/chat-item.vue b/pageChat/components/chat-item.vue
new file mode 100644
index 0000000..dfd5019
--- /dev/null
+++ b/pageChat/components/chat-item.vue
@@ -0,0 +1,152 @@
+
+ {{ item.content }}
+
+
+
+ {{ item.coupon.title }}
+
+
+
+
+ ¥
+ {{
+ item.coupon.discountAmount
+ }}
+
+ 满{{ item.coupon.fullAmount }}可用
+
+
+
+
+
+ 商品兑换券
+
+ 满{{ item.coupon.fullAmount }}可用
+
+
+
+
+
+
+ {{ item.coupon.discountRate / 100 }}折
+
+ 满{{ item.coupon.fullAmount }}可用
+
+
+
+
+
+ 第二件半价券
+
+
+
+
+
+
+
+ 买一送一券
+
+
+
+
+
+
+ {{ item.coupon.couponName }}
+ 有效期:{{ returnTime(item.coupon) }}
+
+
+
+
+ 领取
+
+
+
+
+
+
+
diff --git a/pageChat/components/date-time-picker.vue b/pageChat/components/date-time-picker.vue
new file mode 100644
index 0000000..9234ac3
--- /dev/null
+++ b/pageChat/components/date-time-picker.vue
@@ -0,0 +1,108 @@
+
+
+
+
+
+ 请选择日期范围
+ {{ startTime }} - {{ endTime }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pageChat/components/modal.vue b/pageChat/components/modal.vue
new file mode 100644
index 0000000..7308c90
--- /dev/null
+++ b/pageChat/components/modal.vue
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/pageChat/components/shop-sel-action-sheet.vue b/pageChat/components/shop-sel-action-sheet.vue
new file mode 100644
index 0000000..db51b63
--- /dev/null
+++ b/pageChat/components/shop-sel-action-sheet.vue
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pageChat/coupon-activity/detail.vue b/pageChat/coupon-activity/detail.vue
new file mode 100644
index 0000000..ad11d1a
--- /dev/null
+++ b/pageChat/coupon-activity/detail.vue
@@ -0,0 +1,184 @@
+
+
+
+
+ 优惠券名称
+ {{ couponActivity.couponJson.couponName }}
+
+
+ 发放数量
+ {{ couponActivity.giveNum }}
+
+
+ 已领取数量
+ {{ couponActivity.giveNum - couponActivity.leftNum }}
+
+
+ 剩余数量
+ {{ couponActivity.leftNum }}
+
+
+ 已使用数量
+ {{ couponActivity.useNum }}
+
+
+
+
+
+
+
+ {{ selStatus.label }}
+ 请选择状态
+
+
+
+
+
+
+
+
+
+
+
+ 用户昵称(40239)
+ 2025/06/27 20:07:18)
+ 2025/01/15 08:02:38
+ 已使用
+ 失效
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pageChat/coupon-activity/index.vue b/pageChat/coupon-activity/index.vue
new file mode 100644
index 0000000..6ff8026
--- /dev/null
+++ b/pageChat/coupon-activity/index.vue
@@ -0,0 +1,310 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.couponJson.couponName }}
+
+
+ {{
+ returnStateText(item)
+ }}
+ ID:{{ item.id }}
+
+
+
+
+ 使用门槛
+ 满{{ item.couponJson.fullAmount }}元可用
+
+
+ 有效期
+ 领券后{{ item.couponJson.validDays }}天过期
+
+
+
+
+ {{ item.giveNum }}
+ 发放数量
+
+
+ {{
+ item.giveNum - item.leftNum
+ }}
+ 已领取
+
+
+
+ {{ item.leftNum }}
+ 剩余
+
+
+
+ {{ item.useNum }}
+ 已使用
+
+
+
+
+ 分享
+ 失效
+ 查看
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pageChat/group-info/index.vue b/pageChat/group-info/index.vue
new file mode 100644
index 0000000..ae4f9c4
--- /dev/null
+++ b/pageChat/group-info/index.vue
@@ -0,0 +1,182 @@
+
+
+
+
+ 群成员(22人)
+ 移除
+
+
+
+
+ {{ item.nick_name }}
+
+
+
+
+
+
+ 查看更多
+
+
+
+
+
+
+ 群聊名称
+
+ {{ groupInfo.name }}
+
+
+
+
+
+ 禁言
+
+ 开启后,顾客将不能在群内发消息
+
+
+
+
+ 优惠券领取记录
+
+ 去查看
+
+
+
+
+
+
+
+
diff --git a/pageChat/index.vue b/pageChat/index.vue
new file mode 100644
index 0000000..df346dc
--- /dev/null
+++ b/pageChat/index.vue
@@ -0,0 +1,223 @@
+
+
+
+
+
+
+
+
+ 清空未读
+
+
+
+
+
+
+
+
+
+
+ {{
+ item.unread_count >= 99 ? "99" : item.unread_count
+ }}
+
+
+
+ {{ item.name }}
+ {{ item.msg }}
+
+ {{ item.send_time }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pageChat/static/clear.png b/pageChat/static/clear.png
new file mode 100644
index 0000000000000000000000000000000000000000..e07b381a4263d42640f78ce8c3b0176bdb19f4ef
GIT binary patch
literal 2057
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
Z*?{Xh{#ROE-zOX-0M;01^wz*R>_1w^eJ%h1
literal 0
HcmV?d00001
diff --git a/pageChat/static/exit.png b/pageChat/static/exit.png
new file mode 100644
index 0000000000000000000000000000000000000000..8ee6d430f0c2d372c69edd1ceef14ca83cf29e6f
GIT binary patch
literal 2813
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
literal 0
HcmV?d00001
diff --git a/pageChat/static/pic.png b/pageChat/static/pic.png
new file mode 100644
index 0000000000000000000000000000000000000000..4069281db3c681877c6234d183b16a4fac1c77e7
GIT binary patch
literal 3818
zcmVZNXYg*AwXea;n4j2{At9iii(Qr3JMCEwb;i%uoDag%Sa@W?FBbo
zBf#?I%ZJn1QVhM1j<#iHW;PRV>hA7dI%LR@XhHy3+8Mm9g-#h9f{D3O5|2Vhtwb-SXYAm
z)?}MYiU4%rDLPP!=->|mOE~4qsn&7pjtPMApQqJ_5FLC(fK%=?NU+&y7aS3Q+39*3
zd;rlQ00=;W5(cE4iVb^Xlwq3yT$0RWcDlw$p-%S=fl{%J-PUarAS)~DQI$quYA>_5eE5S{RHwFVi{Cz6R*e?0dO;OG3d;A1qR#e>CDvX>gvMU+S_*
zD)8KZ+=MJ(e>1CG`?(A{3L(Btnhq`?;5z}9ELn0b2HlB)8#$gah*cOxfeq9-h(}N<
zPjMZL5b%`%7%?(*=+JlR+4qy$LJdYqNCT1$H_{?i>My3F4q?U
z-w43y-PN}%&iC*l<<4t|yQVJ$z-`MUZla6O&zDK0i~2&ND&+)-UdF9<8(}7qKa|Tz
zxAmsGzLXQ7y}f+`pvp|1$T(ooFOxg6tE=mJ;(3Tw7{jSxl2sv{-xq(0Ji
z=)YG}Q!}Ktw)S_#|EjC2dxy9Q8PdOG-xSEA3D6f3%e|BnfRX((C2UalnS`W1yPQ5uPZ50z>zy71
zQci%*&dwt}Et~vfp{Sc%!gGj6uw;B4@m!?aq)JZ~-a~tU9wgNNrJMjcIXQ>v-dV&n
zL`QooMmHk7B61>G4cZQ2_0Vu
zAXZ|+=HwXwsoGC){U!YpJx;)gV=?MNj9Y;mVE-ubyTnX$I{!`cCpgAe@k}ovhq;0|
z&i+|Wf#=CJa@tYJrfl(VVZZR^2{m&4~%QLE&UPqk=(6NSk^^ij@kKcn3yU||+A>?s5ig+7T
zJL^d=I2A+~y`Mz6lV<}C0ou)?gZiEXdB+ZeFGillNHW3PNGz{k-|R_)D1{IY5>;_*
z#~{K^2(gfT&w{T6kfV~(ixD3J*hTD%S0FMCas{!5I+LPa#I&%JObjlg{qbSLhW(9x
zH6XK{=t;7UyxlV&LNr2zBgm>G^$l3vcLKzEC6l<0j*jtw{Y4J?d&EzZC$B)AA>P6M
zDn`ZB?Ck8@FuqJ8Np?2?@_ooNv?ZfmzJ&5AcUy3*Z9FwM(YND})AAbulvNIaA%OH)
zF5@7=K5hm7g!pS1dK5Amd6@ljM*NG>%Sb8ingHwwfE7}`h|)PoP{TOLS%bLtG<2W{
z;0Nj$e>s32K)&Ti`wrV2?XX_IYM~_n*XnmM>i2+1C8r#>CUx>z9C=InO?1AF?w1jH
zpa1W~GIzN^9H_dhKc}OQ_FI(eAs#*EX>lxg_mKV+cDNW48E1g
z=n1n5cJr#Ls@`UzTZR7F(hl{-Gsr1~P47Zz2*AjHpOGsr*AAL8N0^6E#DzyN&_C={
zc3M{2p-u4&Q|R+I(Q_Q}B!q$h7+=1tW5?wm!zCADgjqoe=U2U~TKc8S;
z&|<5SN#V340B*k&kW|;qix^q5?r#E9@UqBkcw$xKF6jay(2Mm=do
z07m{b7yq9=Vet!O#RJ^*)
zxm=8|GU=;e$kX;y}$^)
zi2M^dj6993WTtNUwy?@Eqo;uORL=Vi7=NXT&M=g5jR1;ZeS~uIZ2&R)SJ*CxI6{V2
z3@Fdqt;TEIO}ec>9eI#MM!!|PT^K*ls!*8nQ%wLPY)3!@dDdVLODFWmGsZ
zojQw2vs&yqg(vzh<#dQcASeWg>r&6=0toROBl|hXu%IW!;2-%T$ddJPBI5u_%DB!y
zWn3bhIYA{rk2Nrwc!BL0`4ApKo|f%NkN-y*xxr()&JUTkG2`DBUvIE(yWQ_V6Cmzj
z@5YF`Awj?MJn7>8w@L!rGWu_qZ6l%1
z&$R0|LMJ1`D+0(}HF*Z^FBm``v6kokU3qa6ebcz4d>!NGvAx9j&@wVOJ;>WTPnwkp
zd!B0q0PGgl0PX?M(dW;fzmm%>c?Rw-*4gi2Ti)Qgy1l)9SXWoqjg*~$@#NO#Zpu3e
zIn=MGqUlehQRYe7{y*h(FhIaH0*HQYqaFnCGfhoRowA=O+qP}{psud&EEBRL5JRrX
z=LjJ%)M~`)%OQ#CtoHu{A@%6DK*?1CShO`@wh#g`Y(nH$N#$2B8wMvUL{jgLF6aiwObBg$NZf>qTH~%BjE+ckB
zGc$jgeA=xS*z#U=ERY0{gWb4s<3+r|W6Tkz;t}LIeo0o9->Mc2d%3_8AZ8fm2(RD~
z
zEnWzqe?0_{RKuVmfE*MgkXy!b_pep<;|2FG@9BB|I#qm|gME9@5kLTEPSDui-aeMm
zE-zEcjUIV#?-te)^yn9WY{;M_fE=H!DnbN#nKFV`koWf9kaR8f5E!%suy>e)x3t$i
zS0(`G*EX}xkT2i8Gb^I=TtWb>O}`;XzNxL^yP-?~mR98r+xWVP+qbP)vEmbniF)5%
z1foBZInGS0f~|V1D-)ott<8!68BEONip87hCu1c)k=*R7+Q14c6n3k&lH%+ZNSBM`;b^dT4;
z*@q|xy9AI=o>?icrK68We<9SWtjVkrTEflrC%31mwO?m&{JkFH_x6jEtHUHivUs=
z!>*UuN?4_vfE3WFip0oUb!15yIN9@Km*2~o=mez5kMM-1mb#%**=EokQxL8>te7^`dbG{
z6F`oaj%;E5S(Yfva7l6<>f}jYQKiKgfp)TFA+AiY7R=dCI=Dgr>BW{UTh7y|2rfxh
zs&ZM75ZCkwR}A%#qD4!$Z43lEuzf_Z9654iF8Dr(LV_tO
zU&sffT}^<17{ae^Xae|!d_daO1PF*B{OX1#fM3W5q+Lw_pAF%6^B)2L0RR7)nIW|R
g000I_L_t&o0LCGbhPx#07*qoM6N<$g5WF_l>h($
literal 0
HcmV?d00001
diff --git a/pageChat/static/video.png b/pageChat/static/video.png
new file mode 100644
index 0000000000000000000000000000000000000000..a82291f49000ac5998ac7c2552277dac27c9644b
GIT binary patch
literal 2686
zcmV-^3W4>BP)%(P=a^>qq~O?P=XBMpsyYXC_y}c(cMD`C_#pB&{q!xlpr3!
z=Pj{yj0VPOE2i~;XN)S_|QmUr}N$J3wc3TNzid0JVlprY`
zc++kxK}?ZKsh$$Vbl_8}rvypqz?*hk31W&=O7*HDNJ~r0J;?GobLMP7b|C*Ehf*%P
z=>JdPvXX5_b93|bvBV``f^>9rG)l*jE%o*FuOn9jz!c;Z|
ztOl!%$O1@nF8dN)DiVZF-ne7OjurIq31kwY#SDS-P@4~F)
z1@vecav7o}7y?H@l5AsR<67_((gd?o!&YSpBCIE-`G}Ti5Rj>6V-nXVhY%ebnT^u@eXel@+h9tuTA?S+;Ue+C{9Xv-J
zm$k@4j(ml7GfWUHwIe4WS}Y^LKjM8%<=0tu<7=K6ZbO!^fZmMkMOGnwNK>(KfgmVd
zCqWl?>efC2Oyv*Q_fp;ii{+~s^X0_wE+R{cv(Y>nxg2Rm-Y$})KoFE_7A(P}wcIp!
z?%cCncbp9Ock<9TWAx6H~#b%)>K?*P=?}cgQWTO5Yv2v)4-9k}<6ktf!
z3z_3Mrj<{KI+8h$l4hte7`%-Z&zA51EQsFG>*W5J&6az<~pAVbR$IRwW2%
zC#7)2@-ngBia0Aukm#TeV(A;xMqHI`t>GQq4z3=v<-RE0<@rhOzMJe>>!?Br;s|KmtVLczd<)lE5&mIzJ6a*1FDn1Bs
zB=Qmq(}O;0g=(guSdc@4QGy5x_GM{bU!R;J_w~fWRBnHCa=(mkFeoTN0Ks-)v1v55
zNF3}p2qh&*2=EM=8sp2+i#)yBz@%Fh;|{nDYixL9(5sm;CdRSXN)WrFav_JV
zMz+3abR+%e7UB-;o{DyccGQ-ZjIdlDJKcdFrfj1t7%n8eEy
z1ewQFBi}Xk46LiGYdw08dn!1t&sk8x`W7(NeC(;ySsZ8M>TU@#;XKziFO3OILj*c_&U3}+YLb?07gxWAi(*N7dW!%
z9NA;*D!Nq{B}mnf#j61%xrB&*
zL#z}fh!t4f8igd*ez{Z$;&v>pd4nYNHjK+JZ|}8XSZx|1@RyO6p^^=f2tocZ^sj0W
zBT!#oZ}jA$YTW)$lF0t)GlPSJyQ>L6b)!Rov!Y)`XKln1BsrGzB=U1*BRd1WlMM26
zz_!{fBm!Jp`5>eT&*q#bkza_A9|7>x@vDGjJ2S9&g`c9^v|qFmPvFIxyDaU?8rPuMNhnUu24{WR=AbW+B@({r&xakB)JeAhL7O
zqDAr`wX5X4N@NJgd8U&Xh*gnUbZDrAAmW#_vy$zpq?}mXJWMP}E+2vCnaJ-+?ZjaO
zk&e)zUzv|?<^3}dMUQR(qS^v(&w=BNYTLz4zbru{NIG{Ac`TpLPv^7Tw6lk;79Rv4
z#;3?V%;}H%s3xM?lOVk+vVj@`*Gz62?D5t8g-mD|tu4&-8F5!4d8d^i=2)dtQwfsFVK?uz62u&3;wK0RR71%f {
});
//支付成功后的处理
-function paySucessCallback() {
+async function paySucessCallback() {
console.log('paySucessCallback');
cartsSocket.closeSocket();
showDrainage.value = true;
+ const groupinfo=await chatApi.groupShopinfo({shop_id:cartStore.shopInfo.id})
+ if(groupinfo&&groupinfo[0]){
+ console.log('groupinfo',groupinfo[0].id);
+ chatApi.groupJoin({
+ group_id:groupinfo[0].id
+ })
+ }
+
}
//私域引流配置
diff --git a/pages/user/user.vue b/pages/user/user.vue
index 75c6bf8..f81aaef 100644
--- a/pages/user/user.vue
+++ b/pages/user/user.vue
@@ -281,6 +281,11 @@ const myFunList = ref([
type: "fenxiao",
icon: "/static/icon/fenxiao.svg",
},
+ {
+ name: "商家推送",
+ type: "msg",
+ icon: "/static/icon/msg.png",
+ },
// {
// name: "我的订单",
// type: "my_order",
@@ -383,6 +388,9 @@ const clickTo = (item, index) => {
}
let shopId = null;
switch (item.type) {
+ case "msg":
+ uni.navigateTo({ url: "/pageChat/index" });
+ break;
case "my_order":
uni.pro.switchTab("order/index");
break;
diff --git a/static/icon/msg.png b/static/icon/msg.png
new file mode 100644
index 0000000000000000000000000000000000000000..d8997d8ef34fe0f3c4fac7c9cf68c6298eac4f83
GIT binary patch
literal 4756
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 {
+ return {
+ socketUrl,
+ isConnect: false,
+ socketTask: null,
+ onReceiveMsg: () => {},
+ chatList: [],
+ };
+ },
+ actions: {
+ init() {
+ if (!this.isConnect) {
+ return uni.showToast({
+ title: "请先连接socket",
+ icon: "none",
+ });
+ }
+ this.sendMessage({
+ type: "OnbocChat",
+ operate_type: "init",
+ shop_id: uni.cache.get('shopInfo').id || '',
+ token: uni.cache.get('token'),
+ },
+ false
+ );
+ },
+ sendMessage(msg, isAutoAppend = true) {
+ if (!this.isConnect) {
+ return uni.showToast({
+ title: "请先连接socket",
+ icon: "none",
+ });
+ }
+ console.log(this.socketTask);
+ const message = isAutoAppend ? {
+ type: "OnbocChat",
+ operate_type: "sendMsg",
+ shop_id: uni.cache.get('shopInfo').id || '',
+ token: uni.cache.get('token'),
+ ...msg,
+ } :
+ msg;
+ this.socketTask.send({
+ data: JSON.stringify(message),
+ success: (res) => {
+ console.log("发送成功", message);
+ },
+ fail: (error) => {
+ console.log("发送失败", error);
+ },
+ });
+ },
+ connectSocket() {
+ this.socketTask = uni.connectSocket({
+ url: socketUrl,
+ success: (res) => {},
+ fail: (res) => {
+ console.log(res);
+ },
+ });
+
+ this.socketTask.onOpen((res) => {
+ this.isConnect = true;
+ this.init();
+ });
+
+ this.socketTask.onMessage((res) => {
+ const data = JSON.parse(res.data);
+ console.log("收到服务器消息", data);
+ if (data.msg) {
+ uni.showToast({
+ title: data.msg,
+ icon: "none",
+ });
+ }
+
+ if (data && data.operate_type == "sendMsg") {
+ this.chatList.unshift(data.data);
+ this.onReceiveMsg(data.data);
+ console.log(this.chatList);
+ }
+ if (data && data.operate_type == "receive_msg") {
+ const msg={
+ ...data.data,
+ coupon:data.data.coupon?JSON.parse(data.data.coupon):{},
+ operate_type:"receive_msg",
+ }
+ this.chatList.unshift(msg);
+ this.onReceiveMsg(msg);
+ console.log(this.chatList);
+ }
+ });
+
+ this.socketTask.onError((res) => {
+ this.isConnect = false;
+ console.log("连接错误", res);
+ });
+
+ this.socketTask.onClose(() => {
+ this.isConnect = false;
+ console.log("连接已关闭");
+ this.connectSocket();
+ });
+ },
+
+ closeSocket() {
+ this.socketTask.close();
+ this.isConnect = false;
+ },
+ },
+ unistorage: false, // 开启后对 state 的数据读写都将持久化
+});
\ No newline at end of file