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 @@ + + + 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 @@ + + + + + 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 @@ + + + + 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 @@ + + + + + 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 @@ + + + + + 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 @@ + + + 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 @@ + + + + + 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 zcmV7012n4N~hAFa;?pZJN?A6eu*LNPuWcK~y4X6DN(+f`AIIy=yzlhd>L|sZ@{} z7ib|8Rs7iXS}O1%jcMZaVF|*c4ImJtBv3>UqO?sLiK-9x5w}v4_4aoiueIJ?-+AoJ z?981L-IF^z_uPBW`JeyXnK`qbO}5CtSR)_=h;{f|T7&>XfS4l?bN6Kh5CX&;ftb55 zD}WFn<_N^p{j%G(SAedruJd|&dNyS;nZ3y0kQ2xZQi_=g`!WC< zN~KcIBoc}J0Cpp?8o3BL7l~TA0E0K+Q;9nEMN0rcy0f*l_0OQxhqNO`75v+0ltV6@ zS&{(RZ1ynY?JSi_@1!=htToj!yMEOr07u3P1pX?!gG5-b7-8EzF};QW1pg^UelHS- zawHB;>U>;80D`a1iK}!SOlr&JavM$Z$Bi!w1R(f#GC(I{dU+lPCkTFmI(DVn;W+}R zTRm>^wpTYU@%d%;=g|LZu~=NCfQ*=|z}~I+AO!^G2#`!Bw{y{F=W2g1x@!P1J32c0 z^FpEU3}Z-%Fak-I{&!*jml16t=n3RYBO@bEYZVP^WOZD_E%6{Y9Y@Mp&!cP)q|<4Y z5R0_ONsjytc%Vo?wPg9mk}ZZd5O|dV9c9Hk0!Fvt<_D2-xq^*dB*_j#4%NoTXqF`B za;q!h=awy7_S0y(=g#WBzP@$>e;>Uwh^{P$9D_U~nN)prieYV2*8m@|Fz(QvJ$qiV z&@rl+i`zU7eFCvn)Img_Nlpuw+UgJ@B}D*j(g)}M5+ZwjH>J0?_c|uI0dZPXT6vOF z!j(=tHd9{_;C!6{EOCc)?WVQO&dypb`#P6D0$yq*xK^jsjJBobR0PmI(&ftk$)!3Q zy5H)QXyx|%QBW&^dTh>SxQik{xGfCcI`ut=MrS>Tl|X%QMm_Q(Mg;1h7KLpZ3ck!6Yle z7yKFC{-{C#`&fCcd7&Z!spqDCIYkKIby%H^cP^>t`+0uQ>#Uo1+Cl*Duyj2VS;JvS z(3I~L2mxG&&D)NUU=R}A?d_=6qX_}5F$zor65Ij_#sZs=iG%=v5T*hN(vV<(e}Dh- zAnXzX1c9={IUvENVzKxTS;LhMyDq5P-4FuUMJixDNbp&ve5j|VM|}a6O@E3Iz#m+_ z8ug>(3LYe3^f|8vtR6=QP>o2)KC=>BG*5ypewY>*0XUys%f-!h>hFeF{^$qD9*o%r z2`0!I_INPXq9Fny00CFe!hZ>yf5Pl{gjha}ZJ{k>4Rahs-}cf#-wA-hD!I|+rO|O7 zi-YL<98f>-3IpE>fWcq%%2*j^0fBEp0`&X>^P@# zXs6pj5WuNTqHiC8%`-DIk8p9Q{uaT0uL?~eKm`~P-Mog2!$(*RE_Y+U5Wo#;;p_7; zOnR8C;nmcRiV(mNT%lH8nMfoQ2{t*gQV8G#t?=tEhXngs32fhX3jx9(RL2%Vf&%%M zTkLcc0@y(*f;!}1?uG<|R;CL9tPqMwdp$ED!EM|fjMQr@?-K%)kubN;LV|srot^Kf z=b{jx9xCST>uhgtpX%@LUs3Iv5TF_nb3cFn%$YM&To-(((nTRaB^u^$uO@3amC0m2 zQ+8DdP(~sqHMfWtquyNz5cLQ)X8)gr0F40{<=(H5D*m1jAj%hrY zB=G8Ie%2BE2bBXt0EI$)eaep&>^IO=cMy?ghYS}lu4-wD9|=-g8$3p=FQ83I2f_@2Bn z&UXTEKYA;^*}g47SBeG!4yf-Ce9vAL=Q{zEFBqK0@bzquajWuZSOxn+eY)aeFT(-l z*(>7kH@LqG!0;)E(8GP|HDMKq`4t692xVq=cD9p?Jx^W@SLt6MD?sIhVcv$Ae+`>` ztenph{0(DcW54jjHX(o?sCqZ%Kjwq~TknQkJdzM#F&?4$#F76f#$3;;bd1`!A_VXa zTK5AJ`~$76t=DtSbi(~8_Ie5d?BNuc7QruY!Mu5BXy{ZBlL`TXK-uOT1pgj_-)&Rf z6Ez`#ConcX2*Dp9_$q1E_+So35CS*=%P&=e-$(H8@@stExIzFOI{vr4L3Zy(g0Fp* zo1bO~0sKT)KlXFn<9CqV+ox0WyG;n-H^TMDe?kSH?B1dJ&B5&z0tAP3d8Wq*{ziiT zczH)NYau|e=ua}83jR~np(sLt;KDFYW^WVnYH(9p&m;t}#>fke9})Pp7Xx`ch7iDO zL~F;}N$_pGyT7)p|9gZ0wHUuvyUX>Seu8iL&VJXUd(cq`Pz&O-wYwbed6VqkO$2|~ zanJbhQw!IA%~2F3`qt0KUQx*1EQQmhC-YW899cmQ!)4%0y$`A4WDQxpNLz6!mi zx3_myWIXb~(AL&g^+y-BzaYv%a*#gi$bZs<=>r`iiSbtFs`rq(Y|5j`K#{1JYMdtteq1jvt1pFVvIB8+FV*<`+WIRe1)<6H~eYjg4o z(fd03D#`I*NT61RD9K4|K8O!eKwypl)GaJ&x3dcTUTqsL7vSFpNKm4VeOVxYLV|PM zT54@xfOcaFBxvf_vBCi4A_6FbSP9-o{WKDXq6i-cKbQ2eh5$+v5?n$(ftX&3raNfm zUtI#IPLN!!WXC7jR#*I?`YIDPHC*s-W5a_) zd;l#0lyB-55up0nzL;CTuTiT9B`N`;o||hQC8Hb0@;pXO;8TJ+G^JUFSQ4OY7=XP> z&iiN7Tab?8Z)B 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 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 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