From eca03144c5868552a27d5570505f54afc07f33d7 Mon Sep 17 00:00:00 2001 From: TOD-nights Date: Wed, 5 Mar 2025 01:24:04 +0100 Subject: [PATCH 01/40] =?UTF-8?q?=20=20=20=20"appid":=20"wxa4bc935c9ba8752?= =?UTF-8?q?8",:=20"9kuai8coffee.asia",=20//=20=E5=9B=BA=E5=AE=9A=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ._config.js | Bin 0 -> 163 bytes ._project.config.json | Bin 0 -> 163 bytes ._project.private.config.json | Bin 0 -> 163 bytes config.js | 4 ++-- miniprogram_npm/._.DS_Store | Bin 0 -> 120 bytes miniprogram_npm/apifm-wxapi/._index.js | Bin 0 -> 163 bytes project.config.json | 2 +- project.private.config.json | 2 +- 8 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 ._config.js create mode 100644 ._project.config.json create mode 100644 ._project.private.config.json create mode 100644 miniprogram_npm/._.DS_Store create mode 100644 miniprogram_npm/apifm-wxapi/._index.js diff --git a/._config.js b/._config.js new file mode 100644 index 0000000000000000000000000000000000000000..528b5dab791b71c5c9c50b0d3b147c67a03c0d4a GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S nBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S nBE&_L^K$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S nBE&_L^K商户信息查看 diff --git a/miniprogram_npm/._.DS_Store b/miniprogram_npm/._.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a5b28df1cbc6e15bd0d35cdadd0c2e65d5131c7d GIT binary patch literal 120 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}u^SMB_!U6R08`;00ODZ-jv*mIP;rnB Iur73U08|YJ=l}o! literal 0 HcmV?d00001 diff --git a/miniprogram_npm/apifm-wxapi/._index.js b/miniprogram_npm/apifm-wxapi/._index.js new file mode 100644 index 0000000000000000000000000000000000000000..528b5dab791b71c5c9c50b0d3b147c67a03c0d4a GIT binary patch literal 163 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUl?c_=|y<2;dkJ5(HHS(lG;wxzV&S nBE&_L^K Date: Wed, 12 Mar 2025 20:27:23 +0800 Subject: [PATCH 02/40] Add vip price --- i18n/zh_CN.js | 2 +- pages/goods-details/index.js | 2 +- pages/index/index.js | 9 +++++++++ pages/index/index.wxml | 10 +++++++--- pages/index/index.wxss | 11 +++++++++++ pages/member-center/index.js | 7 +++++++ pages/my/index.js | 7 +++++++ 7 files changed, 43 insertions(+), 5 deletions(-) diff --git a/i18n/zh_CN.js b/i18n/zh_CN.js index 0c4b4f9..b16b01e 100644 --- a/i18n/zh_CN.js +++ b/i18n/zh_CN.js @@ -239,7 +239,7 @@ module.exports = { title: '会员', consumption: '累计消费', notVIP: '非会员', - tip: '消费达到金额可自动成为会员', + tip: '余额达到金额可自动成为会员', growth: '会员成长体系', growthName: '级别名称', growthDiscount: '购物折扣', diff --git a/pages/goods-details/index.js b/pages/goods-details/index.js index ed1ba7e..02ee42f 100644 --- a/pages/goods-details/index.js +++ b/pages/goods-details/index.js @@ -118,7 +118,7 @@ Page({ if (goodsDetailRes.data.properties) { that.setData({ hasMoreSelect: true, - selectSizePrice: goodsDetailRes.data.basicInfo.minPrice, + selectSizePrice: goodsDetailRes.data.basicInfo.vipPrice>0?goodsDetailRes.data.basicInfo.vipPrice:goodsDetailRes.data.basicInfo.minPrice, selectSizeOPrice: goodsDetailRes.data.basicInfo.originalPrice, totalScoreToPay: goodsDetailRes.data.basicInfo.minScore }); diff --git a/pages/index/index.js b/pages/index/index.js index 2a077cd..955bc05 100644 --- a/pages/index/index.js +++ b/pages/index/index.js @@ -83,6 +83,11 @@ Page({ mallName }) } + const isVip = wx.getStorageSync('isVip') + this.setData({ + isVip + }) + APP.configLoadOK = () => { const mallName = wx.getStorageSync('mallName') if (mallName) { @@ -407,6 +412,9 @@ Page({ price = res.data.price if (this.data.shopType == 'toPingtuan') { price = res.data.pingtuanPrice + } else if (wx.getStorageSync('isVip')) { + console.log('isVip') + price = res.data.vipPrice } originalPrice = res.data.originalPrice totalScoreToPay = res.data.score @@ -669,6 +677,7 @@ Page({ } wx.hideTabBar() res.data.price = res.data.basicInfo.minPrice + res.data.vipPrice = res.data.basicInfo.vipPrice res.data.number = res.data.basicInfo.minBuyNumber const _data = { curGoodsMap: res.data, diff --git a/pages/index/index.wxml b/pages/index/index.wxml index b82b1c8..2d0a4ae 100644 --- a/pages/index/index.wxml +++ b/pages/index/index.wxml @@ -54,12 +54,16 @@ centered="true" lazy-load="true" origin-price="{{ (item.originalPrice > 0 && item.originalPrice != item.minPrice) ? item.originalPrice : '' }}" - price="{{item.minPrice}}" + price="{{isVip?(item.vipPrice>0?item.vipPrice:item.minPrice):item.minPrice}}" + price-class="van-price-{{isVip&&item.vipPrice>0}}" thumb-mode="aspectFill" tag="{{ item.badge ? item.badge : '' }}" title="{{item.name}}" thumb-link="/pages/goods-details/index?id={{ item.id }}" thumb="{{item.pic}}"> + + ¥{{item.minPrice}} + @@ -138,7 +142,7 @@ - ¥{{curGoodsMap.price}} + ¥{{isVip && curGoodsMap.vipPrice>0 ?curGoodsMap.vipPrice:curGoodsMap.price}} @@ -171,7 +175,7 @@ - ¥{{ item.price }} + ¥{{ isVip&&item.vipPrice>0?item.vipPrice:item.price }} diff --git a/pages/index/index.wxss b/pages/index/index.wxss index b729641..8de1110 100644 --- a/pages/index/index.wxss +++ b/pages/index/index.wxss @@ -379,4 +379,15 @@ page { .count-downno-start .van-count-down { color: #ed6a0c; padding: 8rpx 0; +} + +.van-price-true { + color: goldenrod !important; +} +.van-price-false { + color: red !important; +} +.noVip-price { + font-weight: 500; + color: rgb(240, 134, 134); } \ No newline at end of file diff --git a/pages/member-center/index.js b/pages/member-center/index.js index 7e1ee92..fb0d523 100644 --- a/pages/member-center/index.js +++ b/pages/member-center/index.js @@ -44,6 +44,13 @@ Page({ async getUserApiInfo() { const res = await WXAPI.userDetail(wx.getStorageSync('token')) if (res.code == 0) { + // 判断会员 + if (res.data.base.vipLevel > 0) { + res.data.userLevel = {name: this.data.$t.vip.title} + wx.setStorageSync('isVip', true) + } else { + wx.setStorageSync('isVip', false) + } this.setData({ apiUserInfoMap: res.data }); diff --git a/pages/my/index.js b/pages/my/index.js index 40c7ee0..c1e8cf4 100644 --- a/pages/my/index.js +++ b/pages/my/index.js @@ -45,6 +45,13 @@ Page({ const res = await WXAPI.userDetail(wx.getStorageSync('token')) if (res.code == 0) { const _data = {} + // 判断会员 + if (res.data.base.vipLevel > 0) { + res.data.userLevel = {name: this.data.$t.vip.title} + wx.setStorageSync('isVip', true) + } else { + wx.setStorageSync('isVip', false) + } _data.apiUserInfoMap = res.data _data.nick = res.data.base.nick if (this.data.order_hx_uids && this.data.order_hx_uids.indexOf(res.data.base.id) != -1) { From ae82bbd930a222929bbca3c9e5658b429bb6d5e3 Mon Sep 17 00:00:00 2001 From: TOD-nights Date: Thu, 13 Mar 2025 00:05:39 +0100 Subject: [PATCH 03/40] 008 --- project.config.json | 2 +- project.private.config.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/project.config.json b/project.config.json index 60bf569..a6f665e 100644 --- a/project.config.json +++ b/project.config.json @@ -61,7 +61,7 @@ "tabIndent": "insertSpaces", "tabSize": 2 }, - "appid": "wxa4bc935c9ba87528", + "appid": "wxf9be667c59929008", "packOptions": { "ignore": [], "include": [] diff --git a/project.private.config.json b/project.private.config.json index 6cfc9ea..21450de 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -307,7 +307,7 @@ ] } }, - "projectname": "bee%20-%20xhs", + "projectname": "bee-git", "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", "libVersion": "3.4.10" } \ No newline at end of file From 9d37b83a848d67924538e52aa51f9717b1b7b7e6 Mon Sep 17 00:00:00 2001 From: farwind Date: Thu, 13 Mar 2025 23:55:56 +0800 Subject: [PATCH 04/40] fix price show 0 --- pages/index/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/index/index.js b/pages/index/index.js index 955bc05..1e59072 100644 --- a/pages/index/index.js +++ b/pages/index/index.js @@ -414,7 +414,7 @@ Page({ price = res.data.pingtuanPrice } else if (wx.getStorageSync('isVip')) { console.log('isVip') - price = res.data.vipPrice + price = res.data.vipPrice > 0?res.data.vipPrice:res.data.price } originalPrice = res.data.originalPrice totalScoreToPay = res.data.score From ca3befa95acca8aec25ce1f519412662e15a0ee6 Mon Sep 17 00:00:00 2001 From: TOD-nights Date: Fri, 14 Mar 2025 00:31:21 +0100 Subject: [PATCH 05/40] 1 --- i18n/zh_CN.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/zh_CN.js b/i18n/zh_CN.js index b16b01e..d96d040 100644 --- a/i18n/zh_CN.js +++ b/i18n/zh_CN.js @@ -239,12 +239,12 @@ module.exports = { title: '会员', consumption: '累计消费', notVIP: '非会员', - tip: '余额达到金额可自动成为会员', + tip: '余额达到100可自动成为会员 余额少于9.8失去会员资格,重新充值100元以上恢复会员资格', growth: '会员成长体系', growthName: '级别名称', growthDiscount: '购物折扣', growthConsumption: '消费标准(元)', - profile: '注:当购物消费达指定标准自动成为该级别会员', + profile: '注:', }, feedback: { title: '意见反馈', From 596654586ca860177f9ba1ee357bd9844c9da3f6 Mon Sep 17 00:00:00 2001 From: TOD-nights Date: Fri, 14 Mar 2025 01:04:32 +0100 Subject: [PATCH 06/40] coupon --- app.json | 7 +------ i18n/index.js | 12 +++--------- images/coupon.png | Bin 59491 -> 105526 bytes pages/index/index.wxml | 5 +++-- pages/my/index.wxml | 8 ++++---- 5 files changed, 11 insertions(+), 21 deletions(-) diff --git a/app.json b/app.json index 1589233..7c51b6a 100644 --- a/app.json +++ b/app.json @@ -52,12 +52,7 @@ "selectedIconPath": "images/nav/index-on.png", "text": "点餐" }, - { - "pagePath": "pages/queue/index", - "iconPath": "images/nav/qh-off.png", - "selectedIconPath": "images/nav/qh-on.png", - "text": "取号" - }, + { "pagePath": "pages/order-details/doing", "iconPath": "images/nav/qc-off.png", diff --git a/i18n/index.js b/i18n/index.js index c80025b..e53e47a 100644 --- a/i18n/index.js +++ b/i18n/index.js @@ -29,16 +29,10 @@ function setTabBarLanguage(){ text: $t.index.order }) - wx.setTabBarItem({ - index: 1, - pagePath: "pages/queue/index", - iconPath: "images/nav/qh-off.png", - selectedIconPath: "images/nav/qh-on.png", - text: $t.queue.t - }) + wx.setTabBarItem({ - index: 2, + index: 1, pagePath: "pages/order-details/doing", iconPath: "images/nav/qc-off.png", selectedIconPath: "images/nav/qc-on.png", @@ -46,7 +40,7 @@ function setTabBarLanguage(){ }) wx.setTabBarItem({ - index: 3, + index: 2, pagePath: "pages/my/index", iconPath: "images/nav/my-off.png", selectedIconPath: "images/nav/my-on.png", diff --git a/images/coupon.png b/images/coupon.png index f7135780ca4ded66c7b95d9914719ac5bbaa7f16..44793be51d2e914d0d327ef39746449a94f62932 100644 GIT binary patch literal 105526 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 SyH`B*?}dMg_&Vsv?Ee6@fcmol literal 59491 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%0DfV>--EC-rFRHhhkQKA`()DYSb?ty*@&8oI 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 h{AK2~;Ttn7yPZ2<=U(hnL1{=h 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 - + - + + diff --git a/pages/my/index.wxml b/pages/my/index.wxml index 8e6ce97..04b56ac 100644 --- a/pages/my/index.wxml +++ b/pages/my/index.wxml @@ -40,16 +40,16 @@ - - + - - + v{{version}} From ad9177feb2e722833041937a0fe96c7cf8b52b1f Mon Sep 17 00:00:00 2001 From: TOD-nights Date: Fri, 14 Mar 2025 10:23:48 +0100 Subject: [PATCH 07/40] print --- pages/pay/index.js | 189 +++++++++++++++++++++++++++++++++++- project.private.config.json | 2 +- utils/pay.js | 171 ++++++++++++++++++++++++++++++++ utils/util.js | 56 ++++++++++- 4 files changed, 413 insertions(+), 5 deletions(-) diff --git a/pages/pay/index.js b/pages/pay/index.js index 2b9709a..ca18695 100644 --- a/pages/pay/index.js +++ b/pages/pay/index.js @@ -3,6 +3,7 @@ const AUTH = require('../../utils/auth') const wxpay = require('../../utils/pay.js') const CONFIG = require('../../config.js') const APP = getApp() +var util = require('../../utils/util.js') APP.configLoadOK = () => { } @@ -354,6 +355,7 @@ Page({ }) }, async processAfterCreateOrder(res) { + var that = this const token = wx.getStorageSync('token') if (res.data.status != 0) { // 待支付状态才需要支付 @@ -377,13 +379,34 @@ Page({ const money = res.data.amountReal * 1 - res1.data.balance*1 if (money <= 0) { // 使用余额支付 - await WXAPI.orderPay(token, res.data.id) + await WXAPI.orderPay(token, res.data.id).then(r=>{ + console.log("余额支付:",r) + if(r.code==700){ + //打印的数据 + console.log("print:" ,that.data.goodsList,that.data.shopInfo,res.data) + //小票 + that.print2(res.data) + //标签 + that.print(res.data) + + } + + }) // 跳到订单列表 wx.redirectTo({ url: "/pages/all-orders/index" }) } else { - wxpay.wxpay('order', money, res.data.id, "/pages/all-orders/index"); + var data = { + data: res.data, //订单信息 + goodsList:that.data.goodsList, //商品列表 + shopInfo: that.data.shopInfo, //商铺信息 + isPrint: true //打印标志 + + } + wxpay.wxpay('order', money, res.data.id, "/pages/all-orders/index",data) + console.log("微信支付:") + } }, async getDistance(curAddressData) { @@ -641,4 +664,166 @@ Page({ }) this.createOrder() }, + //打印标签,参数为支付返回的data数据 + print(data){ + var that = this + //芯烨云打印接口 + let url = 'https://open.xpyun.net/api/openapi/xprinter/printLabel' + //开发者密钥 + let userKey = 'b2e9014204774a058bc7e8640e36e8ed' + //开发者id xu1271669848@gmail.com + let userId = 'xu1271669848@gmail.com' + let timstamp = Math.trunc(new Date().getTime()/1000) + "" + let sign = userId + userKey + timstamp + //打印机序列号,店铺id对应打印机序列号 + let sn = '' + //紫金店 + if(that.data.shopInfo.id==2){ + sn = '32817SCU1VAF54B' + + }//未来店 + else if (that.data.shopInfo.id==1){ + sn = '' + + } + //如果没有打印机,则返回 + if(!sn){ + return + } + //当前日期 时分秒 + let timeStr = that.getDate() + let content = '' + + for(let i=0;i# '+(i+1) +'/' + that.data.goodsList.length + ' 总金额:'+data.amountReal + ''+ + ''+ that.data.goodsList[i].name +'' + for(let j=0;j'+ that.data.goodsList[i].sku[j].optionValueName +'' + } + content+= ''+'单价: ¥'+ that.data.goodsList[i].price +'X'+ that.data.goodsList[i].number+ ''+ + ''+ timeStr + ''+ + ''+ that.data.shopInfo.name + '' + '' + + } + + + //请求参数 + let param = { + user: userId, + timestamp: timstamp, + sign: util.sha1(sign), + sn: sn, + content: content + } + console.log(param) + + let header = { + "Content-Type": "application/json;charset=UTF-8" + } + + wx.request({ + url: url, + data: param, + method: "post", + header:header, + success: res=>{ + console.log("标签打印返回:",res) + } + + + }) + }, + //打印小票,参数为支付返回的data数据 + print2(data){ + var that = this + + //芯烨云打印接口 + let url = 'https://open.xpyun.net/api/openapi/xprinter/print' + //开发者密钥 + let userKey = 'b2e9014204774a058bc7e8640e36e8ed' + //开发者id xu1271669848@gmail.com + let userId = 'xu1271669848@gmail.com' + let timstamp = Math.trunc(new Date().getTime()/1000) + "" + let sign = userId + userKey + timstamp + //打印机序列号,店铺id对应打印机序列号 + let sn = '' + //紫金店 + if(that.data.shopInfo.id==2){ + sn = '74Y4LWMD9R9AF4B' + + } + //未来店 + else if (that.data.shopInfo.id==1){ + sn = '' + + } + //如果没有打印机,则返回 + if(!sn){ + return + } + //当前日期 时分秒 + let timeStr = that.getDate() + let content = '9.8 COFFEE小票


' +' ' + + for(let i=0;i' + that.data.goodsList[i].number +'' + content+='|' + for(let j=0;j
' + + content+= '下单时间: '+ timeStr + '
'+ + '订单编号: '+ data.orderNumber + '
' + + '门店名称: ' + that.data.shopInfo.name +'
' + content+= '
' + + + //请求参数 + let param = { + user: userId, + timestamp: timstamp, + sign: util.sha1(sign), + sn: sn, + content: content + } + console.log(param) + + let header = { + "Content-Type": "application/json;charset=UTF-8" + } + + wx.request({ + url: url, + data: param, + method: "post", + header:header, + success: res=>{ + console.log("小票打印返回:",res) + } + + + }) + }, + //获取当前年月日时分秒,打印时间 + getDate(){ + var now = new Date(); +var year = now.getFullYear(); // 年 +var month = now.getMonth() + 1; // 月 +var day = now.getDate(); // 日 +var hour = now.getHours(); // 时 +var minute = now.getMinutes(); // 分 +var second = now.getSeconds(); // 秒 + +// 格式化输出 +var timeString = year + "-" + (month < 10 ? "0" + month : month) + "-" + (day < 10 ? "0" + day : day) + " " + (hour < 10 ? "0" + hour : hour) + ":" + (minute < 10 ? "0" + minute : minute) + ":" + (second < 10 ? "0" + second : second); + return timeString + + } }) \ No newline at end of file diff --git a/project.private.config.json b/project.private.config.json index 21450de..1a7ab08 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -307,7 +307,7 @@ ] } }, - "projectname": "bee-git", + "projectname": "bee-master", "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", "libVersion": "3.4.10" } \ No newline at end of file diff --git a/utils/pay.js b/utils/pay.js index 0e63222..cb47afa 100644 --- a/utils/pay.js +++ b/utils/pay.js @@ -1,6 +1,7 @@ const WXAPI = require('apifm-wxapi') const i18n = require("../i18n/index") const $t = i18n.$t() +var util = require('../utils/util.js') /** * type: order 支付订单 recharge 充值 paybill 优惠买单 @@ -52,6 +53,13 @@ function wxpay(type, money, orderId, redirectUrl, data) { } }, success: function () { + //打印 + if(data && data.isPrint ===true){ + //打印标签 + print(data) + //打印小票 + print2(data) + } // 提示支付成功 wx.showToast({ title: $t.asset.success @@ -73,6 +81,169 @@ function wxpay(type, money, orderId, redirectUrl, data) { } }) } + //打印标签,参数为支付返回的data数据 + function print(data){ + + //芯烨云打印接口 + let url = 'https://open.xpyun.net/api/openapi/xprinter/printLabel' + //开发者密钥 + let userKey = 'b2e9014204774a058bc7e8640e36e8ed' + //开发者id xu1271669848@gmail.com + let userId = 'xu1271669848@gmail.com' + let timstamp = Math.trunc(new Date().getTime()/1000) + "" + let sign = userId + userKey + timstamp + //打印机序列号,店铺id对应打印机序列号 + let sn = '' + //紫金店 + if(data.shopInfo.id==2){ + sn = '32817SCU1VAF54B' + + }//未来店 + else if (data.shopInfo.id==1){ + sn = '' + + } + //如果没有打印机,则返回 + if(!sn){ + return + } + //当前日期 时分秒 + let timeStr = getDate() + let content = '' + +for(let i=0;i# '+(i+1) +'/' + data.goodsList.length + ' 总金额:'+data.data.amountReal + ''+ + ''+ data.goodsList[i].name +'' + for(let j=0;j'+ data.goodsList[i].sku[j].optionValueName +'' + } + content+= ''+'单价: ¥'+ data.goodsList[i].price +'X'+ data.goodsList[i].number+ ''+ + ''+ timeStr + ''+ + ''+ data.shopInfo.name + '' + '' + +} + + + //请求参数 + let param = { + user: userId, + timestamp: timstamp, + sign: util.sha1(sign), + sn: sn, + content: content + } + console.log(param) + + let header = { + "Content-Type": "application/json;charset=UTF-8" + } + + wx.request({ + url: url, + data: param, + method: "post", + header:header, + success: res=>{ + console.log("标签打印返回:",res) + } + + + }) +} + //打印小票,参数为支付返回的data数据 + function print2(data){ + + + //芯烨云打印接口 + let url = 'https://open.xpyun.net/api/openapi/xprinter/print' + //开发者密钥 + let userKey = 'b2e9014204774a058bc7e8640e36e8ed' + //开发者id xu1271669848@gmail.com + let userId = 'xu1271669848@gmail.com' + let timstamp = Math.trunc(new Date().getTime()/1000) + "" + let sign = userId + userKey + timstamp + //打印机序列号,店铺id对应打印机序列号 + let sn = '' + //紫金店 + if(data.shopInfo.id==2){ + sn = '74Y4LWMD9R9AF4B' + + } + //未来店 + else if (data.shopInfo.id==1){ + sn = '' + + } + //如果没有打印机,则返回 + if(!sn){ + return + } + //当前日期 时分秒 + let timeStr = getDate() + let content = '9.8 COFFEE小票


' +'
' + that.data.goodsList[i].price + '元
' + + for(let i=0;i' + data.goodsList[i].number +'' + content+='|' + for(let j=0;j
' + + content+= '下单时间: '+ timeStr + '
'+ + '订单编号: '+ data.orderNumber + '
' + + '门店名称: ' + data.shopInfo.name +'
' + content+= '
' + + + //请求参数 + let param = { + user: userId, + timestamp: timstamp, + sign: util.sha1(sign), + sn: sn, + content: content + } + console.log(param) + + let header = { + "Content-Type": "application/json;charset=UTF-8" + } + + wx.request({ + url: url, + data: param, + method: "post", + header:header, + success: res=>{ + console.log("小票打印返回:",res) + } + + + }) + } + //获取当前年月日时分秒,打印时间 +function getDate(){ + var now = new Date(); +var year = now.getFullYear(); // 年 +var month = now.getMonth() + 1; // 月 +var day = now.getDate(); // 日 +var hour = now.getHours(); // 时 +var minute = now.getMinutes(); // 分 +var second = now.getSeconds(); // 秒 + +// 格式化输出 +var timeString = year + "-" + (month < 10 ? "0" + month : month) + "-" + (day < 10 ? "0" + day : day) + " " + (hour < 10 ? "0" + hour : hour) + ":" + (minute < 10 ? "0" + minute : minute) + ":" + (second < 10 ? "0" + second : second); +return timeString + +} + module.exports = { wxpay: wxpay diff --git a/utils/util.js b/utils/util.js index dbadbb8..221fd80 100644 --- a/utils/util.js +++ b/utils/util.js @@ -14,6 +14,58 @@ const formatNumber = n => { return n[1] ? n : '0' + n } + +function encodeUTF8(s) { + var i, r = [], c, x; + for (i = 0; i < s.length; i++) + if ((c = s.charCodeAt(i)) < 0x80) r.push(c); + else if (c < 0x800) r.push(0xC0 + (c >> 6 & 0x1F), 0x80 + (c & 0x3F)); + else { + if ((x = c ^ 0xD800) >> 10 == 0) //对四字节UTF-16转换为Unicode + c = (x << 10) + (s.charCodeAt(++i) ^ 0xDC00) + 0x10000, + r.push(0xF0 + (c >> 18 & 0x7), 0x80 + (c >> 12 & 0x3F)); + else r.push(0xE0 + (c >> 12 & 0xF)); + r.push(0x80 + (c >> 6 & 0x3F), 0x80 + (c & 0x3F)); + }; + return r; +}; + +// 字符串加密成 hex 字符串,芯烨云打印加密 +function sha1(s) { + var data = new Uint8Array(encodeUTF8(s)) + var i, j, t; + var l = ((data.length + 8) >>> 6 << 4) + 16, s = new Uint8Array(l << 2); + s.set(new Uint8Array(data.buffer)), s = new Uint32Array(s.buffer); + for (t = new DataView(s.buffer), i = 0; i < l; i++)s[i] = t.getUint32(i << 2); + s[data.length >> 2] |= 0x80 << (24 - (data.length & 3) * 8); + s[l - 1] = data.length << 3; + var w = [], f = [ + function () { return m[1] & m[2] | ~m[1] & m[3]; }, + function () { return m[1] ^ m[2] ^ m[3]; }, + function () { return m[1] & m[2] | m[1] & m[3] | m[2] & m[3]; }, + function () { return m[1] ^ m[2] ^ m[3]; } + ], rol = function (n, c) { return n << c | n >>> (32 - c); }, + k = [1518500249, 1859775393, -1894007588, -899497514], + m = [1732584193, -271733879, null, null, -1009589776]; + m[2] = ~m[0], m[3] = ~m[1]; + for (i = 0; i < s.length; i += 16) { + var o = m.slice(0); + for (j = 0; j < 80; j++) + w[j] = j < 16 ? s[i + j] : rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1), + t = rol(m[0], 5) + f[j / 20 | 0]() + m[4] + w[j] + k[j / 20 | 0] | 0, + m[1] = rol(m[1], 30), m.pop(), m.unshift(t); + for (j = 0; j < 5; j++)m[j] = m[j] + o[j] | 0; + }; + t = new DataView(new Uint32Array(m).buffer); + for (var i = 0; i < 5; i++)m[i] = t.getUint32(i << 2); + + var hex = Array.prototype.map.call(new Uint8Array(new Uint32Array(m).buffer), function (e) { + return (e < 16 ? "0" : "") + e.toString(16); + }).join(""); + + return hex; +}; module.exports = { - formatTime: formatTime -} + formatTime: formatTime, + sha1:sha1 +} \ No newline at end of file From 6b2a7c742c48e04ff803e6dbedb0547bd57c17f7 Mon Sep 17 00:00:00 2001 From: TOD-nights Date: Wed, 19 Mar 2025 16:41:12 +0800 Subject: [PATCH 08/40] printer weilai --- pages/pay/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/pay/index.js b/pages/pay/index.js index ca18695..6d840d4 100644 --- a/pages/pay/index.js +++ b/pages/pay/index.js @@ -683,7 +683,7 @@ Page({ }//未来店 else if (that.data.shopInfo.id==1){ - sn = '' + sn = '32EL21088705948' } //如果没有打印机,则返回 @@ -755,7 +755,7 @@ Page({ } //未来店 else if (that.data.shopInfo.id==1){ - sn = '' + sn = '742N30GDRND8E4A' } //如果没有打印机,则返回 From e30f6fd6afe56100b5e9774c0e46306ed73c11f4 Mon Sep 17 00:00:00 2001 From: TOD-nights Date: Thu, 20 Mar 2025 19:28:41 +0800 Subject: [PATCH 09/40] labe --- pages/pay/index.js | 2 +- utils/pay.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/pay/index.js b/pages/pay/index.js index 6d840d4..b93a09e 100644 --- a/pages/pay/index.js +++ b/pages/pay/index.js @@ -764,7 +764,7 @@ Page({ } //当前日期 时分秒 let timeStr = that.getDate() - let content = '9.8 COFFEE小票


' +'
' + data.goodsList[i].price + '元
' + let content = '9.8 COFFEE


' +'
' for(let i=0;i' + that.data.goodsList[i].number +'' diff --git a/utils/pay.js b/utils/pay.js index cb47afa..f2dcc51 100644 --- a/utils/pay.js +++ b/utils/pay.js @@ -181,7 +181,7 @@ for(let i=0;i ' + let content = '9.8 COFFEE


' +'
' + that.data.goodsList[i].price + '元
' for(let i=0;i' + data.goodsList[i].number +'' From ab6606b44e14c43d5641b66fcb36555ea02efa44 Mon Sep 17 00:00:00 2001 From: TOD-nights Date: Thu, 20 Mar 2025 21:54:00 +0800 Subject: [PATCH 10/40] =?UTF-8?q?=E5=85=B6=E4=BB=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/parser.20200731.min/libs/MpHtmlParser.js | 2 +- config.js | 4 ++-- pages/asset/index.wxml | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/components/parser.20200731.min/libs/MpHtmlParser.js b/components/parser.20200731.min/libs/MpHtmlParser.js index 6eee04f..486206c 100644 --- a/components/parser.20200731.min/libs/MpHtmlParser.js +++ b/components/parser.20200731.min/libs/MpHtmlParser.js @@ -1,2 +1,2 @@ // 小程序富文本插件 https://github.com/jin-yufeng/Parser -var emoji;function t(t){var s=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.attrs={},this.CssHandler=new e(r.tagStyle,a),this.data=t,this.domain=r.domain,this.DOM=[],this.i=this.start=this.audioNum=this.imgNum=this.videoNum=0,r.prot=(this.domain||"").includes("://")?this.domain.split("://")[0]:"http",this.options=r,this.state=this.Text,this.STACK=[],this.bubble=function(){for(var t,e=s.STACK.length;t=s.STACK[--e];){if(i.richOnlyTags[t.name])return"table"!=t.name||Object.hasOwnProperty.call(t,"c")||(t.c=1),!1;t.c=1}return!0},this.decode=function(t,s){for(var e,a,r=-1;;){if(-1==(r=t.indexOf("&",r+1)))break;if(-1==(e=t.indexOf(";",r+2)))break;"#"==t[r+1]?(a=parseInt(("x"==t[r+2]?"0":"")+t.substring(r+2,e)),isNaN(a)||(t=t.substr(0,r)+String.fromCharCode(a)+t.substr(e+1))):(a=t.substring(r+1,e),(i.entities[a]||a==s)&&(t=t.substr(0,r)+(i.entities[a]||"&")+t.substr(e+1)))}return t},this.getUrl=function(t){return"/"==t[0]?"/"==t[1]?t=s.options.prot+":"+t:s.domain&&(t=s.domain+t):s.domain&&0!=t.indexOf("data:")&&!t.includes("://")&&(t=s.domain+"/"+t),t},this.isClose=function(){return">"==s.data[s.i]||"/"==s.data[s.i]&&">"==s.data[s.i+1]},this.section=function(){return s.data.substring(s.start,s.i)},this.parent=function(){return s.STACK[s.STACK.length-1]},this.siblings=function(){return s.STACK.length?s.parent().children:s.DOM}}var i=require("./config.js"),s=i.blankChar,e=require("./CssHandler.js"),a=wx.getSystemInfoSync().windowWidth;t.prototype.parse=function(){emoji&&(this.data=emoji.parseEmoji(this.data));for(var t;t=this.data[this.i];this.i++)this.state(t);for(this.state==this.Text&&this.setText();this.STACK.length;)this.popNode(this.STACK.pop());return this.DOM},t.prototype.setAttr=function(){var t=this.attrName.toLowerCase(),e=this.attrVal;for(i.boolAttrs[t]?this.attrs[t]="T":e&&("src"==t||"data-src"==t&&!this.attrs.src?this.attrs.src=this.getUrl(this.decode(e,"amp")):"href"==t||"style"==t?this.attrs[t]=this.decode(e,"amp"):"data-"!=t.substr(0,5)&&(this.attrs[t]=e)),this.attrVal="";s[this.data[this.i]];)this.i++;this.isClose()?this.setNode():(this.start=this.i,this.state=this.AttrName)},t.prototype.setText=function(){var t,e=this.section();if(e)if(e=i.onText&&i.onText(e,function(){return t=!0})||e,t){this.data=this.data.substr(0,this.start)+e+this.data.substr(this.i);var a=this.start+e.length;for(this.i=this.start;this.i7&&(l=7);var d=["xx-small","x-small","small","medium","large","x-large","xx-large"];o["font-size"]=d[l-1],h.size=void 0}break;case"embed":var u=t.attrs.src||"",c=t.attrs.type||"";if(c.includes("video")||u.includes(".mp4")||u.includes(".3gp")||u.includes(".m3u8"))t.name="video";else{if(!(c.includes("audio")||u.includes(".m4a")||u.includes(".wav")||u.includes(".mp3")||u.includes(".aac")))break;t.name="audio"}t.attrs.autostart&&(t.attrs.autoplay="T"),t.attrs.controls="T";/*fallsthrough*/case"video":case"audio":h.id?this[t.name+"Num"]++:h.id=t.name+ ++this[t.name+"Num"],"video"==t.name&&(this.videoNum>3&&(t.lazyLoad=1),h.width&&(o.width=parseFloat(h.width)+(h.width.includes("%")?"%":"px"),h.width=void 0),h.height&&(o.height=parseFloat(h.height)+(h.height.includes("%")?"%":"px"),h.height=void 0)),h.controls||h.autoplay||(h.controls="T"),h.source=[],h.src&&(h.source.push(h.src),h.src=void 0),this.bubble();break;case"td":case"th":if(h.colspan||h.rowspan)for(var f,p=this.STACK.length;f=this.STACK[--p];)if("table"==f.name){f.c=void 0;break}}h.align&&(o["text-align"]=h.align,h.align=void 0);var m=n.split(";");n="";for(var g=0,v=m.length;ga&&(o.height="",h.height&&(h.height=void 0))),o.height?(h.height=o.height,o.height=""):h.height&&!h.height.includes("%")&&(h.height+="px")}for(var T in o){var w=o[T];if(w){if((T.includes("flex")||"order"==T||"self-align"==T)&&(t.c=1),w.includes("url")){var A=w.indexOf("(");if(-1!=A++){for(;'"'==w[A]||"'"==w[A]||s[w[A]];)A++;w=w.substr(0,A)+this.getUrl(w.substr(A))}}else w.includes("rpx")?w=w.replace(/[0-9.]+\s*rpx/g,function(t){return parseFloat(t)*a/750+"px"}):"white-space"==T&&w.includes("pre")&&!e&&(this.pre=t.pre=!0);n+=";"+T+":"+w}}n=n.substr(1),n&&(h.style=n),e?i.filter&&0==i.filter(t,this)||this.siblings().push(t):(t.children=[],"pre"==t.name&&i.highlight&&(this.remove(t),this.pre=t.pre=!0),this.siblings().push(t),this.STACK.push(t))}"/"==this.data[this.i]&&this.i++,this.start=this.i+1,this.state=this.Text},t.prototype.remove=function(t){var e=this,a=t.name,r=this.i,h=function(){var i=e.data.substring(r,e.i+1);t.attrs.xmlns||(i=' xmlns="http://www.w3.org/2000/svg"'+i);for(var s=r;"<"!=e.data[r];)r--;i=e.data.substring(r,s).replace("viewbox","viewBox")+i;var a=e.parent();"100%"==t.attrs.width&&a&&(a.attrs.style||"").includes("inline")&&(a.attrs.style="width:300px;max-width:100%;"+a.attrs.style),e.siblings().push({name:"img",attrs:{src:"data:image/svg+xml;utf8,"+i.replace(/#/g,"%23"),style:(/vertical[^;]+/.exec(t.attrs.style)||[]).shift(),ignore:"T"}})};if("svg"==t.name&&"/"==this.data[r])return h(this.i++);for(;;){if(-1==(this.i=this.data.indexOf("",this.i))&&(this.i=this.data.length),void("svg"==a&&h()))}},t.prototype.popNode=function(t){if(t.pre){t.pre=this.pre=void 0;for(var s=this.STACK.length;s--;)this.STACK[s].pre&&(this.pre=!0)}var e=this.siblings(),a=e.length,r=t.children;if("head"==t.name||i.filter&&0==i.filter(t,this))return e.pop();var h=t.attrs;if(i.blockTags[t.name]?t.name="div":i.trustTags[t.name]||(t.name="span"),t.c&&("ul"==t.name||"ol"==t.name))if((t.attrs.style||"").includes("list-style:none"))for(var n,o=0;n=r[o++];)"li"==n.name&&(n.name="div");else if("ul"==t.name){for(var l=1,d=this.STACK.length;d--;)"ul"==this.STACK[d].name&&l++;if(1!=l)for(var u=r.length;u--;)r[u].floor=l}else for(var c,f=0,p=1;c=r[f++];)"li"==c.name&&(c.type="ol",c.num=function(t,i){if("a"==i)return String.fromCharCode(97+(t-1)%26);if("A"==i)return String.fromCharCode(65+(t-1)%26);if("i"==i||"I"==i){t=(t-1)%99+1;var s=["I","II","III","IV","V","VI","VII","VIII","IX"],e=["X","XX","XXX","XL","L","LX","LXX","LXXX","XC"],a=(e[Math.floor(t/10)-1]||"")+(s[t%10-1]||"");return"i"==i?a.toLowerCase():a}return t}(p++,h.type)+".");if("table"==t.name){var m=h.cellpadding,g=h.cellspacing,v=h.border;if(t.c&&(this.bubble(),h.style=(h.style||"")+";display:table",m||(m=2),g||(g=2)),v&&(h.style="border:"+v+"px solid gray;"+(h.style||"")),g&&(h.style="border-spacing:"+g+"px;"+(h.style||"")),(v||m||t.c)&&function i(s){for(var e,a=0;e=s[a];a++)if("text"!=e.type){var r=e.attrs.style||"";t.c&&"t"==e.name[0]&&(e.c=1,r+=";display:table-"+("th"==e.name||"td"==e.name?"cell":"tr"==e.name?"row":"row-group")),"th"==e.name||"td"==e.name?(v&&(r="border:"+v+"px solid gray;"+r),m&&(r="padding:"+m+"px;"+r)):i(e.children||[]),r&&(e.attrs.style=r)}}(r),this.options.autoscroll){var b=Object.assign({},t);t.name="div",t.attrs={style:"overflow:scroll"},t.children=[b]}}this.CssHandler.pop&&this.CssHandler.pop(t),"div"!=t.name||Object.keys(h).length||1!=r.length||"div"!=r[0].name||(e[a-1]=r[0])},t.prototype.Text=function(t){if("<"==t){var i=this.data[this.i+1],s=function(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"};s(i)?(this.setText(),this.start=this.i+1,this.state=this.TagName):"/"==i?(this.setText(),s(this.data[++this.i+1])?(this.start=this.i+1,this.state=this.EndTag):this.Comment()):"!"!=i&&"?"!=i||(this.setText(),this.Comment())}},t.prototype.Comment=function(){var t;t="--"==this.data.substring(this.i+2,this.i+4)?"--\x3e":"[CDATA["==this.data.substring(this.i+2,this.i+9)?"]]>":">",-1==(this.i=this.data.indexOf(t,this.i+2))?this.i=this.data.length:this.i+=t.length-1,this.start=this.i+1,this.state=this.Text},t.prototype.TagName=function(t){if(s[t]){for(this.tagName=this.section();s[this.data[this.i]];)this.i++;this.isClose()?this.setNode():(this.start=this.i,this.state=this.AttrName)}else this.isClose()&&(this.tagName=this.section(),this.setNode())},t.prototype.AttrName=function(t){if("="==t||s[t]||this.isClose()){if(this.attrName=this.section(),s[t])for(;s[this.data[++this.i]];);if("="==this.data[this.i]){for(;s[this.data[++this.i]];);this.start=this.i--,this.state=this.AttrValue}else this.setAttr()}},t.prototype.AttrValue=function(t){if('"'==t||"'"==t){if(this.start++,-1==(this.i=this.data.indexOf(t,this.i+1)))return this.i=this.data.length;this.attrVal=this.section(),this.i++}else{for(;!s[this.data[this.i]]&&!this.isClose();this.i++);this.attrVal=this.section()}this.setAttr()},t.prototype.EndTag=function(t){if(s[t]||">"==t||"/"==t){for(var i=this.section().toLowerCase(),e=this.STACK.length;e--&&this.STACK[e].name!=i;);if(-1!=e){for(var a;(a=this.STACK.pop()).name!=i;)this.popNode(a);this.popNode(a)}else"p"!=i&&"br"!=i||this.siblings().push({name:i,attrs:{}});this.i=this.data.indexOf(">",this.i),this.start=this.i+1,-1==this.i?this.i=this.data.length:this.state=this.Text}},module.exports=t \ No newline at end of file +var emoji;function t(t){var s=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.attrs={},this.CssHandler=new e(r.tagStyle,a),this.data=t,this.domain=r.domain,this.DOM=[],this.i=this.start=this.audioNum=this.imgNum=this.videoNum=0,r.prot=(this.domain||"").includes("://")?this.domain.split("://")[0]:"http",this.options=r,this.state=this.Text,this.STACK=[],this.bubble=function(){for(var t,e=s.STACK.length;t=s.STACK[--e];){if(i.richOnlyTags[t.name])return"table"!=t.name||Object.hasOwnProperty.call(t,"c")||(t.c=1),!1;t.c=1}return!0},this.decode=function(t,s){for(var e,a,r=-1;;){if(-1==(r=t.indexOf("&",r+1)))break;if(-1==(e=t.indexOf(";",r+2)))break;"#"==t[r+1]?(a=parseInt(("x"==t[r+2]?"0":"")+t.substring(r+2,e)),isNaN(a)||(t=t.substr(0,r)+String.fromCharCode(a)+t.substr(e+1))):(a=t.substring(r+1,e),(i.entities[a]||a==s)&&(t=t.substr(0,r)+(i.entities[a]||"&")+t.substr(e+1)))}return t},this.getUrl=function(t){return"/"==t[0]?"/"==t[1]?t=s.options.prot+":"+t:s.domain&&(t=s.domain+t):s.domain&&0!=t.indexOf("data:")&&!t.includes("://")&&(t=s.domain+"/"+t),t},this.isClose=function(){return">"==s.data[s.i]||"/"==s.data[s.i]&&">"==s.data[s.i+1]},this.section=function(){return s.data.substring(s.start,s.i)},this.parent=function(){return s.STACK[s.STACK.length-1]},this.siblings=function(){return s.STACK.length?s.parent().children:s.DOM}}var i=require("./config.js"),s=i.blankChar,e=require("./CssHandler.js"),a=wx.getSystemInfoSync().windowWidth;t.prototype.parse=function(){emoji&&(this.data=emoji.parseEmoji(this.data));for(var t;t=this.data[this.i];this.i++)this.state(t);for(this.state==this.Text&&this.setText();this.STACK.length;)this.popNode(this.STACK.pop());return this.DOM},t.prototype.setAttr=function(){var t=this.attrName.toLowerCase(),e=this.attrVal;for(i.boolAttrs[t]?this.attrs[t]="T":e&&("src"==t||"data-src"==t&&!this.attrs.src?this.attrs.src=this.getUrl(this.decode(e,"amp")):"href"==t||"style"==t?this.attrs[t]=this.decode(e,"amp"):"data-"!=t.substr(0,5)&&(this.attrs[t]=e)),this.attrVal="";s[this.data[this.i]];)this.i++;this.isClose()?this.setNode():(this.start=this.i,this.state=this.AttrName)},t.prototype.setText=function(){var t,e=this.section();if(e)if(e=i.onText&&i.onText(e,function(){return t=!0})||e,t){this.data=this.data.substr(0,this.start)+e+this.data.substr(this.i);var a=this.start+e.length;for(this.i=this.start;this.i7&&(l=7);var d=["xx-small","x-small","small","medium","large","x-large","xx-large"];o["font-size"]=d[l-1],h.size=void 0}break;case"embed":var u=t.attrs.src||"",c=t.attrs.type||"";if(c.includes("video")||u.includes(".mp4")||u.includes(".3gp")||u.includes(".m3u8"))t.name="video";else{if(!(c.includes("audio")||u.includes(".m4a")||u.includes(".wav")||u.includes(".mp3")||u.includes(".aac")))break;t.name="audio"}t.attrs.autostart&&(t.attrs.autoplay="T"),t.attrs.controls="T";/*fallsthrough*/case"video":case"audio":h.id?this[t.name+"Num"]++:h.id=t.name+ ++this[t.name+"Num"],"video"==t.name&&(this.videoNum>3&&(t.lazyLoad=1),h.width&&(o.width=parseFloat(h.width)+(h.width.includes("%")?"%":"px"),h.width=void 0),h.height&&(o.height=parseFloat(h.height)+(h.height.includes("%")?"%":"px"),h.height=void 0)),h.controls||h.autoplay||(h.controls="T"),h.source=[],h.src&&(h.source.push(h.src),h.src=void 0),this.bubble();break;case"td":case"th":if(h.colspan||h.rowspan)for(var f,p=this.STACK.length;f=this.STACK[--p];)if("table"==f.name){f.c=void 0;break}}h.align&&(o["text-align"]=h.align,h.align=void 0);var m=n.split(";");n="";for(var g=0,v=m.length;ga&&(o.height="",h.height&&(h.height=void 0))),o.height?(h.height=o.height,o.height=""):h.height&&!h.height.includes("%")&&(h.height+="px")}for(var T in o){var w=o[T];if(w){if((T.includes("flex")||"order"==T||"self-align"==T)&&(t.c=1),w.includes("url")){var A=w.indexOf("(");if(-1!=A++){for(;'"'==w[A]||"'"==w[A]||s[w[A]];)A++;w=w.substr(0,A)+this.getUrl(w.substr(A))}}else w.includes("rpx")?w=w.replace(/[0-9.]+\s*rpx/g,function(t){return parseFloat(t)*a/750+"px"}):"white-space"==T&&w.includes("pre")&&!e&&(this.pre=t.pre=!0);n+=";"+T+":"+w}}n=n.substr(1),n&&(h.style=n),e?i.filter&&0==i.filter(t,this)||this.siblings().push(t):(t.children=[],"pre"==t.name&&i.highlight&&(this.remove(t),this.pre=t.pre=!0),this.siblings().push(t),this.STACK.push(t))}"/"==this.data[this.i]&&this.i++,this.start=this.i+1,this.state=this.Text},t.prototype.remove=function(t){var e=this,a=t.name,r=this.i,h=function(){var i=e.data.substring(r,e.i+1);t.attrs.xmlns||(i=' xmlns="http://www.w3.org/2000/svg"'+i);for(var s=r;"<"!=e.data[r];)r--;i=e.data.substring(r,s).replace("viewbox","viewBox")+i;var a=e.parent();"100%"==t.attrs.width&&a&&(a.attrs.style||"").includes("inline")&&(a.attrs.style="width:300px;max-width:100%;"+a.attrs.style),e.siblings().push({name:"img",attrs:{src:"data:image/svg+xml;utf8,"+i.replace(/#/g,"%23"),style:(/vertical[^;]+/.exec(t.attrs.style)||[]).shift(),ignore:"T"}})};if("svg"==t.name&&"/"==this.data[r])return h(this.i++);for(;;){if(-1==(this.i=this.data.indexOf("",this.i))&&(this.i=this.data.length),void("svg"==a&&h()))}},t.prototype.popNode=function(t){if(t.pre){t.pre=this.pre=void 0;for(var s=this.STACK.length;s--;)this.STACK[s].pre&&(this.pre=!0)}var e=this.siblings(),a=e.length,r=t.children;if("head"==t.name||i.filter&&0==i.filter(t,this))return e.pop();var h=t.attrs;if(i.blockTags[t.name]?t.name="div":i.trustTags[t.name]||(t.name="span"),t.c&&("ul"==t.name||"ol"==t.name))if((t.attrs.style||"").includes("list-style:none"))for(var n,o=0;n=r[o++];)"li"==n.name&&(n.name="div");else if("ul"==t.name){for(var l=1,d=this.STACK.length;d--;)"ul"==this.STACK[d].name&&l++;if(1!=l)for(var u=r.length;u--;)r[u].floor=l}else for(var c,f=0,p=1;c=r[f++];)"li"==c.name&&(c.type="ol",c.num=function(t,i){if("a"==i)return String.fromCharCode(97+(t-1)%26);if("A"==i)return String.fromCharCode(65+(t-1)%26);if("i"==i||"I"==i){t=(t-1)%99+1;var s=["I","II","III","IV","V","VI","VII","VIII","IX"],e=["X","XX","XXX","XL","L","LX","LXX","LXXX","XC"],a=(e[Math.floor(t/10)-1]||"")+(s[t%10-1]||"");return"i"==i?a.toLowerCase():a}return t}(p++,h.type)+".");if("table"==t.name){var m=h.cellpadding,g=h.cellspacing,v=h.border;if(t.c&&(this.bubble(),h.style=(h.style||"")+";display:table",m||(m=2),g||(g=2)),v&&(h.style="border:"+v+"px solid gray;"+(h.style||"")),g&&(h.style="border-spacing:"+g+"px;"+(h.style||"")),(v||m||t.c)&&function i(s){for(var e,a=0;e=s[a];a++)if("text"!=e.type){var r=e.attrs.style||"";t.c&&"t"==e.name[0]&&(e.c=1,r+=";display:table-"+("th"==e.name||"td"==e.name?"cell":"tr"==e.name?"row":"row-group")),"th"==e.name||"td"==e.name?(v&&(r="border:"+v+"px solid gray;"+r),m&&(r="padding:"+m+"px;"+r)):i(e.children||[]),r&&(e.attrs.style=r)}}(r),this.options.autoscroll){var b=Object.assign({},t);t.name="div",t.attrs={style:"overflow:scroll"},t.children=[b]}}this.CssHandler.pop&&this.CssHandler.pop(t),"div"!=t.name||Object.keys(h).length||1!=r.length||"div"!=r[0].name||(e[a-1]=r[0])},t.prototype.Text=function(t){if("<"==t){var i=this.data[this.i+1],s=function(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"};s(i)?(this.setText(),this.start=this.i+1,this.state=this.TagName):"/"==i?(this.setText(),s(this.data[++this.i+1])?(this.start=this.i+1,this.state=this.EndTag):this.Comment()):"!"!=i&&"?"!=i||(this.setText(),this.Comment())}},t.prototype.Comment=function(){var t;t="--"==this.data.substring(this.i+2,this.i+4)?"--\x3e":"[CDATA["==this.data.substring(this.i+2,this.i+9)?"]]>":">",-1==(this.i=this.data.indexOf(t,this.i+2))?this.i=this.data.length:this.i+=t.length-1,this.start=this.i+1,this.state=this.Text},t.prototype.TagName=function(t){if(s[t]){for(this.tagName=this.section();s[this.data[this.i]];)this.i++;this.isClose()?this.setNode():(this.start=this.i,this.state=this.AttrName)}else this.isClose()&&(this.tagName=this.section(),this.setNode())},t.prototype.AttrName=function(t){if("="==t||s[t]||this.isClose()){if(this.attrName=this.section(),s[t])for(;s[this.data[++this.i]];);if("="==this.data[this.i]){for(;s[this.data[++this.i]];);this.start=this.i--,this.state=this.AttrValue}else this.setAttr()}},t.prototype.AttrValue=function(t){if('"'==t||"'"==t){if(this.start++,-1==(this.i=this.data.indexOf(t,this.i+1)))return this.i=this.data.length;this.attrVal=this.section(),this.i++}else{for(;!s[this.data[this.i]]&&!this.isClose();this.i++);this.attrVal=this.section()}this.setAttr()},t.prototype.EndTag=function(t){if(s[t]||">"==t||"/"==t){for(var i=this.section().toLowerCase(),e=this.STACK.length;e--&&this.STACK[e].name!=i;);if(-1!=e){for(var a;(a=this.STACK.pop()).name!=i;)this.popNode(a);this.popNode(a)}else"p"!=i&&"br"!=i||this.siblings().push({name:i,attrs:{}});this.i=this.data.indexOf(">",this.i),this.start=this.i+1,-1==this.i?this.i=this.data.length:this.state=this.Text}},module.exports=t \ No newline at end of file diff --git a/config.js b/config.js index 427fe01..ae70f92 100644 --- a/config.js +++ b/config.js @@ -2,8 +2,8 @@ module.exports = { apiHost: 'https://9kuai8coffee.asia', // apiHost: 'https://api.it120.cc',//api工厂的值 subDomain: "9kuai8coffee.asia", // 固定值 - version: "6.1.1", - note: '已点菜品,合计按钮显示不正确', + version: "20.1.1", + note: '标签机 会员价 ', merchantId: 27, // 商户ID,可在后台工厂设置-->商户信息查看 customerServiceType: 'QW' // 客服类型,QW为企业微信,需要在后台系统参数配置企业ID和客服URL,否则为小程序的默认客服 } diff --git a/pages/asset/index.wxml b/pages/asset/index.wxml index a087cc5..aab852a 100644 --- a/pages/asset/index.wxml +++ b/pages/asset/index.wxml @@ -9,10 +9,10 @@ {{ $t.asset.send }}¥{{item.send}} - - {{ $t.asset.other }} - - + {{ $t.asset.confirmBtn }} From db782ba68a3a1dc855f301b8fde0e2795c669d85 Mon Sep 17 00:00:00 2001 From: TOD-nights Date: Thu, 20 Mar 2025 22:02:08 +0800 Subject: [PATCH 11/40] Update index.wxml --- pages/index/index.wxml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pages/index/index.wxml b/pages/index/index.wxml index e89b3e9..a337316 100644 --- a/pages/index/index.wxml +++ b/pages/index/index.wxml @@ -230,14 +230,14 @@ - + - + - + {{ $t.index.order }} From 2553d408ebb192365ff14cc275dba4f0bd800eae Mon Sep 17 00:00:00 2001 From: TOD-nights Date: Fri, 21 Mar 2025 10:43:57 +0800 Subject: [PATCH 12/40] pay.js --- config.js | 2 +- utils/pay.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config.js b/config.js index ae70f92..08212a9 100644 --- a/config.js +++ b/config.js @@ -2,7 +2,7 @@ module.exports = { apiHost: 'https://9kuai8coffee.asia', // apiHost: 'https://api.it120.cc',//api工厂的值 subDomain: "9kuai8coffee.asia", // 固定值 - version: "20.1.1", + version: "20.1.2", note: '标签机 会员价 ', merchantId: 27, // 商户ID,可在后台工厂设置-->商户信息查看 customerServiceType: 'QW' // 客服类型,QW为企业微信,需要在后台系统参数配置企业ID和客服URL,否则为小程序的默认客服 diff --git a/utils/pay.js b/utils/pay.js index f2dcc51..ec41287 100644 --- a/utils/pay.js +++ b/utils/pay.js @@ -100,7 +100,7 @@ function wxpay(type, money, orderId, redirectUrl, data) { }//未来店 else if (data.shopInfo.id==1){ - sn = '' + sn = '32EL21088705948' } //如果没有打印机,则返回 From 17f5a23ed115e4c7cdd5592be145df73ca5097fe Mon Sep 17 00:00:00 2001 From: TOD-nights Date: Fri, 21 Mar 2025 17:29:26 +0800 Subject: [PATCH 13/40] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=94=B5=E8=AF=9D?= =?UTF-8?q?=E5=92=8C=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../parser.20200731.min/libs/MpHtmlParser.js | 2 +- config.js | 4 +-- pages/asset/index.wxml | 8 ++--- pages/index/index.wxml | 6 ++-- pages/pay/index.js | 29 ++++++++++++++----- project.private.config.json | 4 +-- utils/pay.js | 18 +++++++++--- 7 files changed, 47 insertions(+), 24 deletions(-) diff --git a/components/parser.20200731.min/libs/MpHtmlParser.js b/components/parser.20200731.min/libs/MpHtmlParser.js index 6eee04f..486206c 100644 --- a/components/parser.20200731.min/libs/MpHtmlParser.js +++ b/components/parser.20200731.min/libs/MpHtmlParser.js @@ -1,2 +1,2 @@ // 小程序富文本插件 https://github.com/jin-yufeng/Parser -var emoji;function t(t){var s=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.attrs={},this.CssHandler=new e(r.tagStyle,a),this.data=t,this.domain=r.domain,this.DOM=[],this.i=this.start=this.audioNum=this.imgNum=this.videoNum=0,r.prot=(this.domain||"").includes("://")?this.domain.split("://")[0]:"http",this.options=r,this.state=this.Text,this.STACK=[],this.bubble=function(){for(var t,e=s.STACK.length;t=s.STACK[--e];){if(i.richOnlyTags[t.name])return"table"!=t.name||Object.hasOwnProperty.call(t,"c")||(t.c=1),!1;t.c=1}return!0},this.decode=function(t,s){for(var e,a,r=-1;;){if(-1==(r=t.indexOf("&",r+1)))break;if(-1==(e=t.indexOf(";",r+2)))break;"#"==t[r+1]?(a=parseInt(("x"==t[r+2]?"0":"")+t.substring(r+2,e)),isNaN(a)||(t=t.substr(0,r)+String.fromCharCode(a)+t.substr(e+1))):(a=t.substring(r+1,e),(i.entities[a]||a==s)&&(t=t.substr(0,r)+(i.entities[a]||"&")+t.substr(e+1)))}return t},this.getUrl=function(t){return"/"==t[0]?"/"==t[1]?t=s.options.prot+":"+t:s.domain&&(t=s.domain+t):s.domain&&0!=t.indexOf("data:")&&!t.includes("://")&&(t=s.domain+"/"+t),t},this.isClose=function(){return">"==s.data[s.i]||"/"==s.data[s.i]&&">"==s.data[s.i+1]},this.section=function(){return s.data.substring(s.start,s.i)},this.parent=function(){return s.STACK[s.STACK.length-1]},this.siblings=function(){return s.STACK.length?s.parent().children:s.DOM}}var i=require("./config.js"),s=i.blankChar,e=require("./CssHandler.js"),a=wx.getSystemInfoSync().windowWidth;t.prototype.parse=function(){emoji&&(this.data=emoji.parseEmoji(this.data));for(var t;t=this.data[this.i];this.i++)this.state(t);for(this.state==this.Text&&this.setText();this.STACK.length;)this.popNode(this.STACK.pop());return this.DOM},t.prototype.setAttr=function(){var t=this.attrName.toLowerCase(),e=this.attrVal;for(i.boolAttrs[t]?this.attrs[t]="T":e&&("src"==t||"data-src"==t&&!this.attrs.src?this.attrs.src=this.getUrl(this.decode(e,"amp")):"href"==t||"style"==t?this.attrs[t]=this.decode(e,"amp"):"data-"!=t.substr(0,5)&&(this.attrs[t]=e)),this.attrVal="";s[this.data[this.i]];)this.i++;this.isClose()?this.setNode():(this.start=this.i,this.state=this.AttrName)},t.prototype.setText=function(){var t,e=this.section();if(e)if(e=i.onText&&i.onText(e,function(){return t=!0})||e,t){this.data=this.data.substr(0,this.start)+e+this.data.substr(this.i);var a=this.start+e.length;for(this.i=this.start;this.i7&&(l=7);var d=["xx-small","x-small","small","medium","large","x-large","xx-large"];o["font-size"]=d[l-1],h.size=void 0}break;case"embed":var u=t.attrs.src||"",c=t.attrs.type||"";if(c.includes("video")||u.includes(".mp4")||u.includes(".3gp")||u.includes(".m3u8"))t.name="video";else{if(!(c.includes("audio")||u.includes(".m4a")||u.includes(".wav")||u.includes(".mp3")||u.includes(".aac")))break;t.name="audio"}t.attrs.autostart&&(t.attrs.autoplay="T"),t.attrs.controls="T";/*fallsthrough*/case"video":case"audio":h.id?this[t.name+"Num"]++:h.id=t.name+ ++this[t.name+"Num"],"video"==t.name&&(this.videoNum>3&&(t.lazyLoad=1),h.width&&(o.width=parseFloat(h.width)+(h.width.includes("%")?"%":"px"),h.width=void 0),h.height&&(o.height=parseFloat(h.height)+(h.height.includes("%")?"%":"px"),h.height=void 0)),h.controls||h.autoplay||(h.controls="T"),h.source=[],h.src&&(h.source.push(h.src),h.src=void 0),this.bubble();break;case"td":case"th":if(h.colspan||h.rowspan)for(var f,p=this.STACK.length;f=this.STACK[--p];)if("table"==f.name){f.c=void 0;break}}h.align&&(o["text-align"]=h.align,h.align=void 0);var m=n.split(";");n="";for(var g=0,v=m.length;ga&&(o.height="",h.height&&(h.height=void 0))),o.height?(h.height=o.height,o.height=""):h.height&&!h.height.includes("%")&&(h.height+="px")}for(var T in o){var w=o[T];if(w){if((T.includes("flex")||"order"==T||"self-align"==T)&&(t.c=1),w.includes("url")){var A=w.indexOf("(");if(-1!=A++){for(;'"'==w[A]||"'"==w[A]||s[w[A]];)A++;w=w.substr(0,A)+this.getUrl(w.substr(A))}}else w.includes("rpx")?w=w.replace(/[0-9.]+\s*rpx/g,function(t){return parseFloat(t)*a/750+"px"}):"white-space"==T&&w.includes("pre")&&!e&&(this.pre=t.pre=!0);n+=";"+T+":"+w}}n=n.substr(1),n&&(h.style=n),e?i.filter&&0==i.filter(t,this)||this.siblings().push(t):(t.children=[],"pre"==t.name&&i.highlight&&(this.remove(t),this.pre=t.pre=!0),this.siblings().push(t),this.STACK.push(t))}"/"==this.data[this.i]&&this.i++,this.start=this.i+1,this.state=this.Text},t.prototype.remove=function(t){var e=this,a=t.name,r=this.i,h=function(){var i=e.data.substring(r,e.i+1);t.attrs.xmlns||(i=' xmlns="http://www.w3.org/2000/svg"'+i);for(var s=r;"<"!=e.data[r];)r--;i=e.data.substring(r,s).replace("viewbox","viewBox")+i;var a=e.parent();"100%"==t.attrs.width&&a&&(a.attrs.style||"").includes("inline")&&(a.attrs.style="width:300px;max-width:100%;"+a.attrs.style),e.siblings().push({name:"img",attrs:{src:"data:image/svg+xml;utf8,"+i.replace(/#/g,"%23"),style:(/vertical[^;]+/.exec(t.attrs.style)||[]).shift(),ignore:"T"}})};if("svg"==t.name&&"/"==this.data[r])return h(this.i++);for(;;){if(-1==(this.i=this.data.indexOf("",this.i))&&(this.i=this.data.length),void("svg"==a&&h()))}},t.prototype.popNode=function(t){if(t.pre){t.pre=this.pre=void 0;for(var s=this.STACK.length;s--;)this.STACK[s].pre&&(this.pre=!0)}var e=this.siblings(),a=e.length,r=t.children;if("head"==t.name||i.filter&&0==i.filter(t,this))return e.pop();var h=t.attrs;if(i.blockTags[t.name]?t.name="div":i.trustTags[t.name]||(t.name="span"),t.c&&("ul"==t.name||"ol"==t.name))if((t.attrs.style||"").includes("list-style:none"))for(var n,o=0;n=r[o++];)"li"==n.name&&(n.name="div");else if("ul"==t.name){for(var l=1,d=this.STACK.length;d--;)"ul"==this.STACK[d].name&&l++;if(1!=l)for(var u=r.length;u--;)r[u].floor=l}else for(var c,f=0,p=1;c=r[f++];)"li"==c.name&&(c.type="ol",c.num=function(t,i){if("a"==i)return String.fromCharCode(97+(t-1)%26);if("A"==i)return String.fromCharCode(65+(t-1)%26);if("i"==i||"I"==i){t=(t-1)%99+1;var s=["I","II","III","IV","V","VI","VII","VIII","IX"],e=["X","XX","XXX","XL","L","LX","LXX","LXXX","XC"],a=(e[Math.floor(t/10)-1]||"")+(s[t%10-1]||"");return"i"==i?a.toLowerCase():a}return t}(p++,h.type)+".");if("table"==t.name){var m=h.cellpadding,g=h.cellspacing,v=h.border;if(t.c&&(this.bubble(),h.style=(h.style||"")+";display:table",m||(m=2),g||(g=2)),v&&(h.style="border:"+v+"px solid gray;"+(h.style||"")),g&&(h.style="border-spacing:"+g+"px;"+(h.style||"")),(v||m||t.c)&&function i(s){for(var e,a=0;e=s[a];a++)if("text"!=e.type){var r=e.attrs.style||"";t.c&&"t"==e.name[0]&&(e.c=1,r+=";display:table-"+("th"==e.name||"td"==e.name?"cell":"tr"==e.name?"row":"row-group")),"th"==e.name||"td"==e.name?(v&&(r="border:"+v+"px solid gray;"+r),m&&(r="padding:"+m+"px;"+r)):i(e.children||[]),r&&(e.attrs.style=r)}}(r),this.options.autoscroll){var b=Object.assign({},t);t.name="div",t.attrs={style:"overflow:scroll"},t.children=[b]}}this.CssHandler.pop&&this.CssHandler.pop(t),"div"!=t.name||Object.keys(h).length||1!=r.length||"div"!=r[0].name||(e[a-1]=r[0])},t.prototype.Text=function(t){if("<"==t){var i=this.data[this.i+1],s=function(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"};s(i)?(this.setText(),this.start=this.i+1,this.state=this.TagName):"/"==i?(this.setText(),s(this.data[++this.i+1])?(this.start=this.i+1,this.state=this.EndTag):this.Comment()):"!"!=i&&"?"!=i||(this.setText(),this.Comment())}},t.prototype.Comment=function(){var t;t="--"==this.data.substring(this.i+2,this.i+4)?"--\x3e":"[CDATA["==this.data.substring(this.i+2,this.i+9)?"]]>":">",-1==(this.i=this.data.indexOf(t,this.i+2))?this.i=this.data.length:this.i+=t.length-1,this.start=this.i+1,this.state=this.Text},t.prototype.TagName=function(t){if(s[t]){for(this.tagName=this.section();s[this.data[this.i]];)this.i++;this.isClose()?this.setNode():(this.start=this.i,this.state=this.AttrName)}else this.isClose()&&(this.tagName=this.section(),this.setNode())},t.prototype.AttrName=function(t){if("="==t||s[t]||this.isClose()){if(this.attrName=this.section(),s[t])for(;s[this.data[++this.i]];);if("="==this.data[this.i]){for(;s[this.data[++this.i]];);this.start=this.i--,this.state=this.AttrValue}else this.setAttr()}},t.prototype.AttrValue=function(t){if('"'==t||"'"==t){if(this.start++,-1==(this.i=this.data.indexOf(t,this.i+1)))return this.i=this.data.length;this.attrVal=this.section(),this.i++}else{for(;!s[this.data[this.i]]&&!this.isClose();this.i++);this.attrVal=this.section()}this.setAttr()},t.prototype.EndTag=function(t){if(s[t]||">"==t||"/"==t){for(var i=this.section().toLowerCase(),e=this.STACK.length;e--&&this.STACK[e].name!=i;);if(-1!=e){for(var a;(a=this.STACK.pop()).name!=i;)this.popNode(a);this.popNode(a)}else"p"!=i&&"br"!=i||this.siblings().push({name:i,attrs:{}});this.i=this.data.indexOf(">",this.i),this.start=this.i+1,-1==this.i?this.i=this.data.length:this.state=this.Text}},module.exports=t \ No newline at end of file +var emoji;function t(t){var s=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.attrs={},this.CssHandler=new e(r.tagStyle,a),this.data=t,this.domain=r.domain,this.DOM=[],this.i=this.start=this.audioNum=this.imgNum=this.videoNum=0,r.prot=(this.domain||"").includes("://")?this.domain.split("://")[0]:"http",this.options=r,this.state=this.Text,this.STACK=[],this.bubble=function(){for(var t,e=s.STACK.length;t=s.STACK[--e];){if(i.richOnlyTags[t.name])return"table"!=t.name||Object.hasOwnProperty.call(t,"c")||(t.c=1),!1;t.c=1}return!0},this.decode=function(t,s){for(var e,a,r=-1;;){if(-1==(r=t.indexOf("&",r+1)))break;if(-1==(e=t.indexOf(";",r+2)))break;"#"==t[r+1]?(a=parseInt(("x"==t[r+2]?"0":"")+t.substring(r+2,e)),isNaN(a)||(t=t.substr(0,r)+String.fromCharCode(a)+t.substr(e+1))):(a=t.substring(r+1,e),(i.entities[a]||a==s)&&(t=t.substr(0,r)+(i.entities[a]||"&")+t.substr(e+1)))}return t},this.getUrl=function(t){return"/"==t[0]?"/"==t[1]?t=s.options.prot+":"+t:s.domain&&(t=s.domain+t):s.domain&&0!=t.indexOf("data:")&&!t.includes("://")&&(t=s.domain+"/"+t),t},this.isClose=function(){return">"==s.data[s.i]||"/"==s.data[s.i]&&">"==s.data[s.i+1]},this.section=function(){return s.data.substring(s.start,s.i)},this.parent=function(){return s.STACK[s.STACK.length-1]},this.siblings=function(){return s.STACK.length?s.parent().children:s.DOM}}var i=require("./config.js"),s=i.blankChar,e=require("./CssHandler.js"),a=wx.getSystemInfoSync().windowWidth;t.prototype.parse=function(){emoji&&(this.data=emoji.parseEmoji(this.data));for(var t;t=this.data[this.i];this.i++)this.state(t);for(this.state==this.Text&&this.setText();this.STACK.length;)this.popNode(this.STACK.pop());return this.DOM},t.prototype.setAttr=function(){var t=this.attrName.toLowerCase(),e=this.attrVal;for(i.boolAttrs[t]?this.attrs[t]="T":e&&("src"==t||"data-src"==t&&!this.attrs.src?this.attrs.src=this.getUrl(this.decode(e,"amp")):"href"==t||"style"==t?this.attrs[t]=this.decode(e,"amp"):"data-"!=t.substr(0,5)&&(this.attrs[t]=e)),this.attrVal="";s[this.data[this.i]];)this.i++;this.isClose()?this.setNode():(this.start=this.i,this.state=this.AttrName)},t.prototype.setText=function(){var t,e=this.section();if(e)if(e=i.onText&&i.onText(e,function(){return t=!0})||e,t){this.data=this.data.substr(0,this.start)+e+this.data.substr(this.i);var a=this.start+e.length;for(this.i=this.start;this.i7&&(l=7);var d=["xx-small","x-small","small","medium","large","x-large","xx-large"];o["font-size"]=d[l-1],h.size=void 0}break;case"embed":var u=t.attrs.src||"",c=t.attrs.type||"";if(c.includes("video")||u.includes(".mp4")||u.includes(".3gp")||u.includes(".m3u8"))t.name="video";else{if(!(c.includes("audio")||u.includes(".m4a")||u.includes(".wav")||u.includes(".mp3")||u.includes(".aac")))break;t.name="audio"}t.attrs.autostart&&(t.attrs.autoplay="T"),t.attrs.controls="T";/*fallsthrough*/case"video":case"audio":h.id?this[t.name+"Num"]++:h.id=t.name+ ++this[t.name+"Num"],"video"==t.name&&(this.videoNum>3&&(t.lazyLoad=1),h.width&&(o.width=parseFloat(h.width)+(h.width.includes("%")?"%":"px"),h.width=void 0),h.height&&(o.height=parseFloat(h.height)+(h.height.includes("%")?"%":"px"),h.height=void 0)),h.controls||h.autoplay||(h.controls="T"),h.source=[],h.src&&(h.source.push(h.src),h.src=void 0),this.bubble();break;case"td":case"th":if(h.colspan||h.rowspan)for(var f,p=this.STACK.length;f=this.STACK[--p];)if("table"==f.name){f.c=void 0;break}}h.align&&(o["text-align"]=h.align,h.align=void 0);var m=n.split(";");n="";for(var g=0,v=m.length;ga&&(o.height="",h.height&&(h.height=void 0))),o.height?(h.height=o.height,o.height=""):h.height&&!h.height.includes("%")&&(h.height+="px")}for(var T in o){var w=o[T];if(w){if((T.includes("flex")||"order"==T||"self-align"==T)&&(t.c=1),w.includes("url")){var A=w.indexOf("(");if(-1!=A++){for(;'"'==w[A]||"'"==w[A]||s[w[A]];)A++;w=w.substr(0,A)+this.getUrl(w.substr(A))}}else w.includes("rpx")?w=w.replace(/[0-9.]+\s*rpx/g,function(t){return parseFloat(t)*a/750+"px"}):"white-space"==T&&w.includes("pre")&&!e&&(this.pre=t.pre=!0);n+=";"+T+":"+w}}n=n.substr(1),n&&(h.style=n),e?i.filter&&0==i.filter(t,this)||this.siblings().push(t):(t.children=[],"pre"==t.name&&i.highlight&&(this.remove(t),this.pre=t.pre=!0),this.siblings().push(t),this.STACK.push(t))}"/"==this.data[this.i]&&this.i++,this.start=this.i+1,this.state=this.Text},t.prototype.remove=function(t){var e=this,a=t.name,r=this.i,h=function(){var i=e.data.substring(r,e.i+1);t.attrs.xmlns||(i=' xmlns="http://www.w3.org/2000/svg"'+i);for(var s=r;"<"!=e.data[r];)r--;i=e.data.substring(r,s).replace("viewbox","viewBox")+i;var a=e.parent();"100%"==t.attrs.width&&a&&(a.attrs.style||"").includes("inline")&&(a.attrs.style="width:300px;max-width:100%;"+a.attrs.style),e.siblings().push({name:"img",attrs:{src:"data:image/svg+xml;utf8,"+i.replace(/#/g,"%23"),style:(/vertical[^;]+/.exec(t.attrs.style)||[]).shift(),ignore:"T"}})};if("svg"==t.name&&"/"==this.data[r])return h(this.i++);for(;;){if(-1==(this.i=this.data.indexOf("",this.i))&&(this.i=this.data.length),void("svg"==a&&h()))}},t.prototype.popNode=function(t){if(t.pre){t.pre=this.pre=void 0;for(var s=this.STACK.length;s--;)this.STACK[s].pre&&(this.pre=!0)}var e=this.siblings(),a=e.length,r=t.children;if("head"==t.name||i.filter&&0==i.filter(t,this))return e.pop();var h=t.attrs;if(i.blockTags[t.name]?t.name="div":i.trustTags[t.name]||(t.name="span"),t.c&&("ul"==t.name||"ol"==t.name))if((t.attrs.style||"").includes("list-style:none"))for(var n,o=0;n=r[o++];)"li"==n.name&&(n.name="div");else if("ul"==t.name){for(var l=1,d=this.STACK.length;d--;)"ul"==this.STACK[d].name&&l++;if(1!=l)for(var u=r.length;u--;)r[u].floor=l}else for(var c,f=0,p=1;c=r[f++];)"li"==c.name&&(c.type="ol",c.num=function(t,i){if("a"==i)return String.fromCharCode(97+(t-1)%26);if("A"==i)return String.fromCharCode(65+(t-1)%26);if("i"==i||"I"==i){t=(t-1)%99+1;var s=["I","II","III","IV","V","VI","VII","VIII","IX"],e=["X","XX","XXX","XL","L","LX","LXX","LXXX","XC"],a=(e[Math.floor(t/10)-1]||"")+(s[t%10-1]||"");return"i"==i?a.toLowerCase():a}return t}(p++,h.type)+".");if("table"==t.name){var m=h.cellpadding,g=h.cellspacing,v=h.border;if(t.c&&(this.bubble(),h.style=(h.style||"")+";display:table",m||(m=2),g||(g=2)),v&&(h.style="border:"+v+"px solid gray;"+(h.style||"")),g&&(h.style="border-spacing:"+g+"px;"+(h.style||"")),(v||m||t.c)&&function i(s){for(var e,a=0;e=s[a];a++)if("text"!=e.type){var r=e.attrs.style||"";t.c&&"t"==e.name[0]&&(e.c=1,r+=";display:table-"+("th"==e.name||"td"==e.name?"cell":"tr"==e.name?"row":"row-group")),"th"==e.name||"td"==e.name?(v&&(r="border:"+v+"px solid gray;"+r),m&&(r="padding:"+m+"px;"+r)):i(e.children||[]),r&&(e.attrs.style=r)}}(r),this.options.autoscroll){var b=Object.assign({},t);t.name="div",t.attrs={style:"overflow:scroll"},t.children=[b]}}this.CssHandler.pop&&this.CssHandler.pop(t),"div"!=t.name||Object.keys(h).length||1!=r.length||"div"!=r[0].name||(e[a-1]=r[0])},t.prototype.Text=function(t){if("<"==t){var i=this.data[this.i+1],s=function(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"};s(i)?(this.setText(),this.start=this.i+1,this.state=this.TagName):"/"==i?(this.setText(),s(this.data[++this.i+1])?(this.start=this.i+1,this.state=this.EndTag):this.Comment()):"!"!=i&&"?"!=i||(this.setText(),this.Comment())}},t.prototype.Comment=function(){var t;t="--"==this.data.substring(this.i+2,this.i+4)?"--\x3e":"[CDATA["==this.data.substring(this.i+2,this.i+9)?"]]>":">",-1==(this.i=this.data.indexOf(t,this.i+2))?this.i=this.data.length:this.i+=t.length-1,this.start=this.i+1,this.state=this.Text},t.prototype.TagName=function(t){if(s[t]){for(this.tagName=this.section();s[this.data[this.i]];)this.i++;this.isClose()?this.setNode():(this.start=this.i,this.state=this.AttrName)}else this.isClose()&&(this.tagName=this.section(),this.setNode())},t.prototype.AttrName=function(t){if("="==t||s[t]||this.isClose()){if(this.attrName=this.section(),s[t])for(;s[this.data[++this.i]];);if("="==this.data[this.i]){for(;s[this.data[++this.i]];);this.start=this.i--,this.state=this.AttrValue}else this.setAttr()}},t.prototype.AttrValue=function(t){if('"'==t||"'"==t){if(this.start++,-1==(this.i=this.data.indexOf(t,this.i+1)))return this.i=this.data.length;this.attrVal=this.section(),this.i++}else{for(;!s[this.data[this.i]]&&!this.isClose();this.i++);this.attrVal=this.section()}this.setAttr()},t.prototype.EndTag=function(t){if(s[t]||">"==t||"/"==t){for(var i=this.section().toLowerCase(),e=this.STACK.length;e--&&this.STACK[e].name!=i;);if(-1!=e){for(var a;(a=this.STACK.pop()).name!=i;)this.popNode(a);this.popNode(a)}else"p"!=i&&"br"!=i||this.siblings().push({name:i,attrs:{}});this.i=this.data.indexOf(">",this.i),this.start=this.i+1,-1==this.i?this.i=this.data.length:this.state=this.Text}},module.exports=t \ No newline at end of file diff --git a/config.js b/config.js index 427fe01..ae70f92 100644 --- a/config.js +++ b/config.js @@ -2,8 +2,8 @@ module.exports = { apiHost: 'https://9kuai8coffee.asia', // apiHost: 'https://api.it120.cc',//api工厂的值 subDomain: "9kuai8coffee.asia", // 固定值 - version: "6.1.1", - note: '已点菜品,合计按钮显示不正确', + version: "20.1.1", + note: '标签机 会员价 ', merchantId: 27, // 商户ID,可在后台工厂设置-->商户信息查看 customerServiceType: 'QW' // 客服类型,QW为企业微信,需要在后台系统参数配置企业ID和客服URL,否则为小程序的默认客服 } diff --git a/pages/asset/index.wxml b/pages/asset/index.wxml index a087cc5..aab852a 100644 --- a/pages/asset/index.wxml +++ b/pages/asset/index.wxml @@ -9,10 +9,10 @@ {{ $t.asset.send }}¥{{item.send}} - - {{ $t.asset.other }} - - + {{ $t.asset.confirmBtn }} diff --git a/pages/index/index.wxml b/pages/index/index.wxml index e89b3e9..a337316 100644 --- a/pages/index/index.wxml +++ b/pages/index/index.wxml @@ -230,14 +230,14 @@ - + - + - + {{ $t.index.order }} diff --git a/pages/pay/index.js b/pages/pay/index.js index ca18695..24993d4 100644 --- a/pages/pay/index.js +++ b/pages/pay/index.js @@ -383,7 +383,7 @@ Page({ console.log("余额支付:",r) if(r.code==700){ //打印的数据 - console.log("print:" ,that.data.goodsList,that.data.shopInfo,res.data) + console.log("print:" ,that.data,res.data) //小票 that.print2(res.data) //标签 @@ -401,9 +401,16 @@ Page({ data: res.data, //订单信息 goodsList:that.data.goodsList, //商品列表 shopInfo: that.data.shopInfo, //商铺信息 + mobile: that.data.mobile,//用户电话 + address: that.data.curAddressData.address,//配送地址 + remark: that.data.remark, //用户备注 + peisongType: that.data.peisongType,//配置方式zq,kd + isPrint: true //打印标志 } + //打印的数据 + console.log("print:" ,data) wxpay.wxpay('order', money, res.data.id, "/pages/all-orders/index",data) console.log("微信支付:") @@ -683,7 +690,7 @@ Page({ }//未来店 else if (that.data.shopInfo.id==1){ - sn = '' + sn = '32EL21088705948' } //如果没有打印机,则返回 @@ -695,17 +702,20 @@ Page({ let content = '' for(let i=0;i# '+(i+1) +'/' + that.data.goodsList.length + ' 总金额:'+data.amountReal + ''+ ''+ that.data.goodsList[i].name +'' for(let j=0;j'+ that.data.goodsList[i].sku[j].optionValueName +'' } - content+= ''+'单价: ¥'+ that.data.goodsList[i].price +'X'+ that.data.goodsList[i].number+ ''+ + content+= ''+'单价: ¥'+ that.data.goodsList[i].price + ''+ + ''+ data.orderNumber+ ''+ ''+ timeStr + ''+ ''+ that.data.shopInfo.name + '' + '' } + } //请求参数 @@ -755,7 +765,7 @@ Page({ } //未来店 else if (that.data.shopInfo.id==1){ - sn = '' + sn = '742N30GDRND8E4A' } //如果没有打印机,则返回 @@ -764,7 +774,7 @@ Page({ } //当前日期 时分秒 let timeStr = that.getDate() - let content = '9.8 COFFEE小票


' +'
' + data.goodsList[i].price + '元
' + let content = '9.8 COFFEE


' +'
' for(let i=0;i' + that.data.goodsList[i].number +'' @@ -773,15 +783,18 @@ Page({ content+= that.data.goodsList[i].sku[j].optionValueName + '|' } content+='' - - } content+='
' + that.data.goodsList[i].price + '元
' content+='合计:'+ data.amountReal+'元

' content+= '下单时间: '+ timeStr + '
'+ '订单编号: '+ data.orderNumber + '
' + - '门店名称: ' + that.data.shopInfo.name +'
' + '用户电话: '+ that.data.mobile + '
' + if(that.data.peisongType =='kd'){ + content+= '用户地址: '+ that.data.curAddressData.address + '
' + } + content+= '门店名称: ' + that.data.shopInfo.name +'
'+ + '备注: ' + that.data.remark +'
' content+= '
' diff --git a/project.private.config.json b/project.private.config.json index 1a7ab08..60a6e52 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -1,7 +1,7 @@ { "setting": { "compileHotReLoad": true, - "urlCheck": false + "urlCheck": true }, "condition": { "miniprogram": { @@ -307,7 +307,7 @@ ] } }, - "projectname": "bee-master", + "projectname": "bee-master2", "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", "libVersion": "3.4.10" } \ No newline at end of file diff --git a/utils/pay.js b/utils/pay.js index cb47afa..8e73373 100644 --- a/utils/pay.js +++ b/utils/pay.js @@ -112,6 +112,7 @@ function wxpay(type, money, orderId, redirectUrl, data) { let content = '' for(let i=0;i# '+(i+1) +'/' + data.goodsList.length + ' 总金额:'+data.data.amountReal + ''+ ''+ data.goodsList[i].name +'' @@ -119,9 +120,11 @@ for(let i=0;i'+ data.goodsList[i].sku[j].optionValueName +'' } content+= ''+'单价: ¥'+ data.goodsList[i].price +'X'+ data.goodsList[i].number+ ''+ + ''+ data.data.orderNumber+ ''+ ''+ timeStr + ''+ ''+ data.shopInfo.name + '' + '' +} } @@ -172,7 +175,7 @@ for(let i=0;i ' + let content = '9.8 COFFEE


' +' ' for(let i=0;i' + data.goodsList[i].number +'' @@ -197,9 +200,16 @@ for(let i=0;i
' content+= '下单时间: '+ timeStr + '
'+ - '订单编号: '+ data.orderNumber + '
' + - '门店名称: ' + data.shopInfo.name +'
' + '订单编号: '+ data.data.orderNumber + '
' + + '用户电话: '+ data.mobile + '
' + if(data.peisongType=='kd'){ + content+= '用户地址: '+data.address + '
' + } + content+='门店名称: ' + data.shopInfo.name +'
' + + '备注: ' + data.remark +'
' content+= '
' + + //请求参数 From b666eac0c0e383de4f5466b4c596f0c4f1696370 Mon Sep 17 00:00:00 2001 From: TOD-nights Date: Fri, 21 Mar 2025 18:01:06 +0800 Subject: [PATCH 14/40] sn = '742N30GDRND8E4A' --- utils/pay.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/pay.js b/utils/pay.js index 8e73373..bc23945 100644 --- a/utils/pay.js +++ b/utils/pay.js @@ -100,7 +100,7 @@ function wxpay(type, money, orderId, redirectUrl, data) { }//未来店 else if (data.shopInfo.id==1){ - sn = '' + sn = '742N30GDRND8E4A' } //如果没有打印机,则返回 From 551ae664ec7f72eb62afa660ce607e71a4405988 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=95=E8=87=AA=E5=BC=BA?= <124497517@qq.com> Date: Fri, 21 Mar 2025 18:10:36 +0800 Subject: [PATCH 15/40] =?UTF-8?q?=E6=89=93=E5=8D=B0=E5=B0=8F=E7=A5=A8?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=94=A8=E6=88=B7=E7=94=B5=E8=AF=9D=E3=80=81?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=9C=B0=E5=9D=80=E3=80=81=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=8F=B7=E7=AD=89=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 8 ++++++++ .idea/bee.iml | 9 +++++++++ .idea/misc.xml | 6 ++++++ .idea/modules.xml | 8 ++++++++ .idea/vcs.xml | 6 ++++++ pages/pay/index.js | 7 +++++-- utils/pay.js | 7 +++++-- 7 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/bee.iml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/bee.iml b/.idea/bee.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/bee.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..639900d --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..234b1f0 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/pages/pay/index.js b/pages/pay/index.js index 24993d4..52b597d 100644 --- a/pages/pay/index.js +++ b/pages/pay/index.js @@ -404,7 +404,7 @@ Page({ mobile: that.data.mobile,//用户电话 address: that.data.curAddressData.address,//配送地址 remark: that.data.remark, //用户备注 - peisongType: that.data.peisongType,//配置方式zq,kd + peisongType: that.data.peisongType,//zq,kd isPrint: true //打印标志 @@ -793,8 +793,11 @@ Page({ if(that.data.peisongType =='kd'){ content+= '用户地址: '+ that.data.curAddressData.address + '
' } + // if(that.data.peisongType=='zq'){ + // content+= ' 取单号: '+that.data.curAddressData.address + '
' + // } content+= '门店名称: ' + that.data.shopInfo.name +'
'+ - '备注: ' + that.data.remark +'
' + ' 备注: ' + that.data.remark +'
' content+= '' diff --git a/utils/pay.js b/utils/pay.js index 3aa202e..387243b 100644 --- a/utils/pay.js +++ b/utils/pay.js @@ -100,7 +100,7 @@ function wxpay(type, money, orderId, redirectUrl, data) { }//未来店 else if (data.shopInfo.id==1){ - sn = '32EL21088705948' + sn = '' } //如果没有打印机,则返回 @@ -205,8 +205,11 @@ for(let i=0;i' } + // if(data.peisongType=='zq'){ + // content+= ' 取单号: '+data.address + '
' + // } content+='门店名称: ' + data.shopInfo.name +'
' + - '备注: ' + data.remark +'
' + ' 备注: ' + data.remark +'
' content+= '' From 62ef35339b31d56e6205598966673a290bac3403 Mon Sep 17 00:00:00 2001 From: TOD-nights Date: Sat, 22 Mar 2025 03:47:56 +0800 Subject: [PATCH 16/40] Update pay.js --- utils/pay.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/utils/pay.js b/utils/pay.js index f0aaa70..f88f745 100644 --- a/utils/pay.js +++ b/utils/pay.js @@ -100,7 +100,9 @@ function wxpay(type, money, orderId, redirectUrl, data) { }//未来店 else if (data.shopInfo.id==1){ + sn = '32EL21088705948' + } //如果没有打印机,则返回 if(!sn){ From 950215846e6885def4755dea9927ab6ab453f071 Mon Sep 17 00:00:00 2001 From: TOD-nights Date: Sat, 22 Mar 2025 03:56:14 +0800 Subject: [PATCH 17/40] revert --- .../parser.20200731.min/libs/MpHtmlParser.js | 2 +- config.js | 2 ++ pages/asset/index.wxml | 8 ++++---- pages/index/index.wxml | 6 +++--- pages/pay/index.js | 17 +++++++---------- project.private.config.json | 4 ++-- utils/pay.js | 9 ++------- 7 files changed, 21 insertions(+), 27 deletions(-) diff --git a/components/parser.20200731.min/libs/MpHtmlParser.js b/components/parser.20200731.min/libs/MpHtmlParser.js index 486206c..6eee04f 100644 --- a/components/parser.20200731.min/libs/MpHtmlParser.js +++ b/components/parser.20200731.min/libs/MpHtmlParser.js @@ -1,2 +1,2 @@ // 小程序富文本插件 https://github.com/jin-yufeng/Parser -var emoji;function t(t){var s=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.attrs={},this.CssHandler=new e(r.tagStyle,a),this.data=t,this.domain=r.domain,this.DOM=[],this.i=this.start=this.audioNum=this.imgNum=this.videoNum=0,r.prot=(this.domain||"").includes("://")?this.domain.split("://")[0]:"http",this.options=r,this.state=this.Text,this.STACK=[],this.bubble=function(){for(var t,e=s.STACK.length;t=s.STACK[--e];){if(i.richOnlyTags[t.name])return"table"!=t.name||Object.hasOwnProperty.call(t,"c")||(t.c=1),!1;t.c=1}return!0},this.decode=function(t,s){for(var e,a,r=-1;;){if(-1==(r=t.indexOf("&",r+1)))break;if(-1==(e=t.indexOf(";",r+2)))break;"#"==t[r+1]?(a=parseInt(("x"==t[r+2]?"0":"")+t.substring(r+2,e)),isNaN(a)||(t=t.substr(0,r)+String.fromCharCode(a)+t.substr(e+1))):(a=t.substring(r+1,e),(i.entities[a]||a==s)&&(t=t.substr(0,r)+(i.entities[a]||"&")+t.substr(e+1)))}return t},this.getUrl=function(t){return"/"==t[0]?"/"==t[1]?t=s.options.prot+":"+t:s.domain&&(t=s.domain+t):s.domain&&0!=t.indexOf("data:")&&!t.includes("://")&&(t=s.domain+"/"+t),t},this.isClose=function(){return">"==s.data[s.i]||"/"==s.data[s.i]&&">"==s.data[s.i+1]},this.section=function(){return s.data.substring(s.start,s.i)},this.parent=function(){return s.STACK[s.STACK.length-1]},this.siblings=function(){return s.STACK.length?s.parent().children:s.DOM}}var i=require("./config.js"),s=i.blankChar,e=require("./CssHandler.js"),a=wx.getSystemInfoSync().windowWidth;t.prototype.parse=function(){emoji&&(this.data=emoji.parseEmoji(this.data));for(var t;t=this.data[this.i];this.i++)this.state(t);for(this.state==this.Text&&this.setText();this.STACK.length;)this.popNode(this.STACK.pop());return this.DOM},t.prototype.setAttr=function(){var t=this.attrName.toLowerCase(),e=this.attrVal;for(i.boolAttrs[t]?this.attrs[t]="T":e&&("src"==t||"data-src"==t&&!this.attrs.src?this.attrs.src=this.getUrl(this.decode(e,"amp")):"href"==t||"style"==t?this.attrs[t]=this.decode(e,"amp"):"data-"!=t.substr(0,5)&&(this.attrs[t]=e)),this.attrVal="";s[this.data[this.i]];)this.i++;this.isClose()?this.setNode():(this.start=this.i,this.state=this.AttrName)},t.prototype.setText=function(){var t,e=this.section();if(e)if(e=i.onText&&i.onText(e,function(){return t=!0})||e,t){this.data=this.data.substr(0,this.start)+e+this.data.substr(this.i);var a=this.start+e.length;for(this.i=this.start;this.i7&&(l=7);var d=["xx-small","x-small","small","medium","large","x-large","xx-large"];o["font-size"]=d[l-1],h.size=void 0}break;case"embed":var u=t.attrs.src||"",c=t.attrs.type||"";if(c.includes("video")||u.includes(".mp4")||u.includes(".3gp")||u.includes(".m3u8"))t.name="video";else{if(!(c.includes("audio")||u.includes(".m4a")||u.includes(".wav")||u.includes(".mp3")||u.includes(".aac")))break;t.name="audio"}t.attrs.autostart&&(t.attrs.autoplay="T"),t.attrs.controls="T";/*fallsthrough*/case"video":case"audio":h.id?this[t.name+"Num"]++:h.id=t.name+ ++this[t.name+"Num"],"video"==t.name&&(this.videoNum>3&&(t.lazyLoad=1),h.width&&(o.width=parseFloat(h.width)+(h.width.includes("%")?"%":"px"),h.width=void 0),h.height&&(o.height=parseFloat(h.height)+(h.height.includes("%")?"%":"px"),h.height=void 0)),h.controls||h.autoplay||(h.controls="T"),h.source=[],h.src&&(h.source.push(h.src),h.src=void 0),this.bubble();break;case"td":case"th":if(h.colspan||h.rowspan)for(var f,p=this.STACK.length;f=this.STACK[--p];)if("table"==f.name){f.c=void 0;break}}h.align&&(o["text-align"]=h.align,h.align=void 0);var m=n.split(";");n="";for(var g=0,v=m.length;ga&&(o.height="",h.height&&(h.height=void 0))),o.height?(h.height=o.height,o.height=""):h.height&&!h.height.includes("%")&&(h.height+="px")}for(var T in o){var w=o[T];if(w){if((T.includes("flex")||"order"==T||"self-align"==T)&&(t.c=1),w.includes("url")){var A=w.indexOf("(");if(-1!=A++){for(;'"'==w[A]||"'"==w[A]||s[w[A]];)A++;w=w.substr(0,A)+this.getUrl(w.substr(A))}}else w.includes("rpx")?w=w.replace(/[0-9.]+\s*rpx/g,function(t){return parseFloat(t)*a/750+"px"}):"white-space"==T&&w.includes("pre")&&!e&&(this.pre=t.pre=!0);n+=";"+T+":"+w}}n=n.substr(1),n&&(h.style=n),e?i.filter&&0==i.filter(t,this)||this.siblings().push(t):(t.children=[],"pre"==t.name&&i.highlight&&(this.remove(t),this.pre=t.pre=!0),this.siblings().push(t),this.STACK.push(t))}"/"==this.data[this.i]&&this.i++,this.start=this.i+1,this.state=this.Text},t.prototype.remove=function(t){var e=this,a=t.name,r=this.i,h=function(){var i=e.data.substring(r,e.i+1);t.attrs.xmlns||(i=' xmlns="http://www.w3.org/2000/svg"'+i);for(var s=r;"<"!=e.data[r];)r--;i=e.data.substring(r,s).replace("viewbox","viewBox")+i;var a=e.parent();"100%"==t.attrs.width&&a&&(a.attrs.style||"").includes("inline")&&(a.attrs.style="width:300px;max-width:100%;"+a.attrs.style),e.siblings().push({name:"img",attrs:{src:"data:image/svg+xml;utf8,"+i.replace(/#/g,"%23"),style:(/vertical[^;]+/.exec(t.attrs.style)||[]).shift(),ignore:"T"}})};if("svg"==t.name&&"/"==this.data[r])return h(this.i++);for(;;){if(-1==(this.i=this.data.indexOf("",this.i))&&(this.i=this.data.length),void("svg"==a&&h()))}},t.prototype.popNode=function(t){if(t.pre){t.pre=this.pre=void 0;for(var s=this.STACK.length;s--;)this.STACK[s].pre&&(this.pre=!0)}var e=this.siblings(),a=e.length,r=t.children;if("head"==t.name||i.filter&&0==i.filter(t,this))return e.pop();var h=t.attrs;if(i.blockTags[t.name]?t.name="div":i.trustTags[t.name]||(t.name="span"),t.c&&("ul"==t.name||"ol"==t.name))if((t.attrs.style||"").includes("list-style:none"))for(var n,o=0;n=r[o++];)"li"==n.name&&(n.name="div");else if("ul"==t.name){for(var l=1,d=this.STACK.length;d--;)"ul"==this.STACK[d].name&&l++;if(1!=l)for(var u=r.length;u--;)r[u].floor=l}else for(var c,f=0,p=1;c=r[f++];)"li"==c.name&&(c.type="ol",c.num=function(t,i){if("a"==i)return String.fromCharCode(97+(t-1)%26);if("A"==i)return String.fromCharCode(65+(t-1)%26);if("i"==i||"I"==i){t=(t-1)%99+1;var s=["I","II","III","IV","V","VI","VII","VIII","IX"],e=["X","XX","XXX","XL","L","LX","LXX","LXXX","XC"],a=(e[Math.floor(t/10)-1]||"")+(s[t%10-1]||"");return"i"==i?a.toLowerCase():a}return t}(p++,h.type)+".");if("table"==t.name){var m=h.cellpadding,g=h.cellspacing,v=h.border;if(t.c&&(this.bubble(),h.style=(h.style||"")+";display:table",m||(m=2),g||(g=2)),v&&(h.style="border:"+v+"px solid gray;"+(h.style||"")),g&&(h.style="border-spacing:"+g+"px;"+(h.style||"")),(v||m||t.c)&&function i(s){for(var e,a=0;e=s[a];a++)if("text"!=e.type){var r=e.attrs.style||"";t.c&&"t"==e.name[0]&&(e.c=1,r+=";display:table-"+("th"==e.name||"td"==e.name?"cell":"tr"==e.name?"row":"row-group")),"th"==e.name||"td"==e.name?(v&&(r="border:"+v+"px solid gray;"+r),m&&(r="padding:"+m+"px;"+r)):i(e.children||[]),r&&(e.attrs.style=r)}}(r),this.options.autoscroll){var b=Object.assign({},t);t.name="div",t.attrs={style:"overflow:scroll"},t.children=[b]}}this.CssHandler.pop&&this.CssHandler.pop(t),"div"!=t.name||Object.keys(h).length||1!=r.length||"div"!=r[0].name||(e[a-1]=r[0])},t.prototype.Text=function(t){if("<"==t){var i=this.data[this.i+1],s=function(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"};s(i)?(this.setText(),this.start=this.i+1,this.state=this.TagName):"/"==i?(this.setText(),s(this.data[++this.i+1])?(this.start=this.i+1,this.state=this.EndTag):this.Comment()):"!"!=i&&"?"!=i||(this.setText(),this.Comment())}},t.prototype.Comment=function(){var t;t="--"==this.data.substring(this.i+2,this.i+4)?"--\x3e":"[CDATA["==this.data.substring(this.i+2,this.i+9)?"]]>":">",-1==(this.i=this.data.indexOf(t,this.i+2))?this.i=this.data.length:this.i+=t.length-1,this.start=this.i+1,this.state=this.Text},t.prototype.TagName=function(t){if(s[t]){for(this.tagName=this.section();s[this.data[this.i]];)this.i++;this.isClose()?this.setNode():(this.start=this.i,this.state=this.AttrName)}else this.isClose()&&(this.tagName=this.section(),this.setNode())},t.prototype.AttrName=function(t){if("="==t||s[t]||this.isClose()){if(this.attrName=this.section(),s[t])for(;s[this.data[++this.i]];);if("="==this.data[this.i]){for(;s[this.data[++this.i]];);this.start=this.i--,this.state=this.AttrValue}else this.setAttr()}},t.prototype.AttrValue=function(t){if('"'==t||"'"==t){if(this.start++,-1==(this.i=this.data.indexOf(t,this.i+1)))return this.i=this.data.length;this.attrVal=this.section(),this.i++}else{for(;!s[this.data[this.i]]&&!this.isClose();this.i++);this.attrVal=this.section()}this.setAttr()},t.prototype.EndTag=function(t){if(s[t]||">"==t||"/"==t){for(var i=this.section().toLowerCase(),e=this.STACK.length;e--&&this.STACK[e].name!=i;);if(-1!=e){for(var a;(a=this.STACK.pop()).name!=i;)this.popNode(a);this.popNode(a)}else"p"!=i&&"br"!=i||this.siblings().push({name:i,attrs:{}});this.i=this.data.indexOf(">",this.i),this.start=this.i+1,-1==this.i?this.i=this.data.length:this.state=this.Text}},module.exports=t \ No newline at end of file +var emoji;function t(t){var s=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.attrs={},this.CssHandler=new e(r.tagStyle,a),this.data=t,this.domain=r.domain,this.DOM=[],this.i=this.start=this.audioNum=this.imgNum=this.videoNum=0,r.prot=(this.domain||"").includes("://")?this.domain.split("://")[0]:"http",this.options=r,this.state=this.Text,this.STACK=[],this.bubble=function(){for(var t,e=s.STACK.length;t=s.STACK[--e];){if(i.richOnlyTags[t.name])return"table"!=t.name||Object.hasOwnProperty.call(t,"c")||(t.c=1),!1;t.c=1}return!0},this.decode=function(t,s){for(var e,a,r=-1;;){if(-1==(r=t.indexOf("&",r+1)))break;if(-1==(e=t.indexOf(";",r+2)))break;"#"==t[r+1]?(a=parseInt(("x"==t[r+2]?"0":"")+t.substring(r+2,e)),isNaN(a)||(t=t.substr(0,r)+String.fromCharCode(a)+t.substr(e+1))):(a=t.substring(r+1,e),(i.entities[a]||a==s)&&(t=t.substr(0,r)+(i.entities[a]||"&")+t.substr(e+1)))}return t},this.getUrl=function(t){return"/"==t[0]?"/"==t[1]?t=s.options.prot+":"+t:s.domain&&(t=s.domain+t):s.domain&&0!=t.indexOf("data:")&&!t.includes("://")&&(t=s.domain+"/"+t),t},this.isClose=function(){return">"==s.data[s.i]||"/"==s.data[s.i]&&">"==s.data[s.i+1]},this.section=function(){return s.data.substring(s.start,s.i)},this.parent=function(){return s.STACK[s.STACK.length-1]},this.siblings=function(){return s.STACK.length?s.parent().children:s.DOM}}var i=require("./config.js"),s=i.blankChar,e=require("./CssHandler.js"),a=wx.getSystemInfoSync().windowWidth;t.prototype.parse=function(){emoji&&(this.data=emoji.parseEmoji(this.data));for(var t;t=this.data[this.i];this.i++)this.state(t);for(this.state==this.Text&&this.setText();this.STACK.length;)this.popNode(this.STACK.pop());return this.DOM},t.prototype.setAttr=function(){var t=this.attrName.toLowerCase(),e=this.attrVal;for(i.boolAttrs[t]?this.attrs[t]="T":e&&("src"==t||"data-src"==t&&!this.attrs.src?this.attrs.src=this.getUrl(this.decode(e,"amp")):"href"==t||"style"==t?this.attrs[t]=this.decode(e,"amp"):"data-"!=t.substr(0,5)&&(this.attrs[t]=e)),this.attrVal="";s[this.data[this.i]];)this.i++;this.isClose()?this.setNode():(this.start=this.i,this.state=this.AttrName)},t.prototype.setText=function(){var t,e=this.section();if(e)if(e=i.onText&&i.onText(e,function(){return t=!0})||e,t){this.data=this.data.substr(0,this.start)+e+this.data.substr(this.i);var a=this.start+e.length;for(this.i=this.start;this.i7&&(l=7);var d=["xx-small","x-small","small","medium","large","x-large","xx-large"];o["font-size"]=d[l-1],h.size=void 0}break;case"embed":var u=t.attrs.src||"",c=t.attrs.type||"";if(c.includes("video")||u.includes(".mp4")||u.includes(".3gp")||u.includes(".m3u8"))t.name="video";else{if(!(c.includes("audio")||u.includes(".m4a")||u.includes(".wav")||u.includes(".mp3")||u.includes(".aac")))break;t.name="audio"}t.attrs.autostart&&(t.attrs.autoplay="T"),t.attrs.controls="T";/*fallsthrough*/case"video":case"audio":h.id?this[t.name+"Num"]++:h.id=t.name+ ++this[t.name+"Num"],"video"==t.name&&(this.videoNum>3&&(t.lazyLoad=1),h.width&&(o.width=parseFloat(h.width)+(h.width.includes("%")?"%":"px"),h.width=void 0),h.height&&(o.height=parseFloat(h.height)+(h.height.includes("%")?"%":"px"),h.height=void 0)),h.controls||h.autoplay||(h.controls="T"),h.source=[],h.src&&(h.source.push(h.src),h.src=void 0),this.bubble();break;case"td":case"th":if(h.colspan||h.rowspan)for(var f,p=this.STACK.length;f=this.STACK[--p];)if("table"==f.name){f.c=void 0;break}}h.align&&(o["text-align"]=h.align,h.align=void 0);var m=n.split(";");n="";for(var g=0,v=m.length;ga&&(o.height="",h.height&&(h.height=void 0))),o.height?(h.height=o.height,o.height=""):h.height&&!h.height.includes("%")&&(h.height+="px")}for(var T in o){var w=o[T];if(w){if((T.includes("flex")||"order"==T||"self-align"==T)&&(t.c=1),w.includes("url")){var A=w.indexOf("(");if(-1!=A++){for(;'"'==w[A]||"'"==w[A]||s[w[A]];)A++;w=w.substr(0,A)+this.getUrl(w.substr(A))}}else w.includes("rpx")?w=w.replace(/[0-9.]+\s*rpx/g,function(t){return parseFloat(t)*a/750+"px"}):"white-space"==T&&w.includes("pre")&&!e&&(this.pre=t.pre=!0);n+=";"+T+":"+w}}n=n.substr(1),n&&(h.style=n),e?i.filter&&0==i.filter(t,this)||this.siblings().push(t):(t.children=[],"pre"==t.name&&i.highlight&&(this.remove(t),this.pre=t.pre=!0),this.siblings().push(t),this.STACK.push(t))}"/"==this.data[this.i]&&this.i++,this.start=this.i+1,this.state=this.Text},t.prototype.remove=function(t){var e=this,a=t.name,r=this.i,h=function(){var i=e.data.substring(r,e.i+1);t.attrs.xmlns||(i=' xmlns="http://www.w3.org/2000/svg"'+i);for(var s=r;"<"!=e.data[r];)r--;i=e.data.substring(r,s).replace("viewbox","viewBox")+i;var a=e.parent();"100%"==t.attrs.width&&a&&(a.attrs.style||"").includes("inline")&&(a.attrs.style="width:300px;max-width:100%;"+a.attrs.style),e.siblings().push({name:"img",attrs:{src:"data:image/svg+xml;utf8,"+i.replace(/#/g,"%23"),style:(/vertical[^;]+/.exec(t.attrs.style)||[]).shift(),ignore:"T"}})};if("svg"==t.name&&"/"==this.data[r])return h(this.i++);for(;;){if(-1==(this.i=this.data.indexOf("",this.i))&&(this.i=this.data.length),void("svg"==a&&h()))}},t.prototype.popNode=function(t){if(t.pre){t.pre=this.pre=void 0;for(var s=this.STACK.length;s--;)this.STACK[s].pre&&(this.pre=!0)}var e=this.siblings(),a=e.length,r=t.children;if("head"==t.name||i.filter&&0==i.filter(t,this))return e.pop();var h=t.attrs;if(i.blockTags[t.name]?t.name="div":i.trustTags[t.name]||(t.name="span"),t.c&&("ul"==t.name||"ol"==t.name))if((t.attrs.style||"").includes("list-style:none"))for(var n,o=0;n=r[o++];)"li"==n.name&&(n.name="div");else if("ul"==t.name){for(var l=1,d=this.STACK.length;d--;)"ul"==this.STACK[d].name&&l++;if(1!=l)for(var u=r.length;u--;)r[u].floor=l}else for(var c,f=0,p=1;c=r[f++];)"li"==c.name&&(c.type="ol",c.num=function(t,i){if("a"==i)return String.fromCharCode(97+(t-1)%26);if("A"==i)return String.fromCharCode(65+(t-1)%26);if("i"==i||"I"==i){t=(t-1)%99+1;var s=["I","II","III","IV","V","VI","VII","VIII","IX"],e=["X","XX","XXX","XL","L","LX","LXX","LXXX","XC"],a=(e[Math.floor(t/10)-1]||"")+(s[t%10-1]||"");return"i"==i?a.toLowerCase():a}return t}(p++,h.type)+".");if("table"==t.name){var m=h.cellpadding,g=h.cellspacing,v=h.border;if(t.c&&(this.bubble(),h.style=(h.style||"")+";display:table",m||(m=2),g||(g=2)),v&&(h.style="border:"+v+"px solid gray;"+(h.style||"")),g&&(h.style="border-spacing:"+g+"px;"+(h.style||"")),(v||m||t.c)&&function i(s){for(var e,a=0;e=s[a];a++)if("text"!=e.type){var r=e.attrs.style||"";t.c&&"t"==e.name[0]&&(e.c=1,r+=";display:table-"+("th"==e.name||"td"==e.name?"cell":"tr"==e.name?"row":"row-group")),"th"==e.name||"td"==e.name?(v&&(r="border:"+v+"px solid gray;"+r),m&&(r="padding:"+m+"px;"+r)):i(e.children||[]),r&&(e.attrs.style=r)}}(r),this.options.autoscroll){var b=Object.assign({},t);t.name="div",t.attrs={style:"overflow:scroll"},t.children=[b]}}this.CssHandler.pop&&this.CssHandler.pop(t),"div"!=t.name||Object.keys(h).length||1!=r.length||"div"!=r[0].name||(e[a-1]=r[0])},t.prototype.Text=function(t){if("<"==t){var i=this.data[this.i+1],s=function(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"};s(i)?(this.setText(),this.start=this.i+1,this.state=this.TagName):"/"==i?(this.setText(),s(this.data[++this.i+1])?(this.start=this.i+1,this.state=this.EndTag):this.Comment()):"!"!=i&&"?"!=i||(this.setText(),this.Comment())}},t.prototype.Comment=function(){var t;t="--"==this.data.substring(this.i+2,this.i+4)?"--\x3e":"[CDATA["==this.data.substring(this.i+2,this.i+9)?"]]>":">",-1==(this.i=this.data.indexOf(t,this.i+2))?this.i=this.data.length:this.i+=t.length-1,this.start=this.i+1,this.state=this.Text},t.prototype.TagName=function(t){if(s[t]){for(this.tagName=this.section();s[this.data[this.i]];)this.i++;this.isClose()?this.setNode():(this.start=this.i,this.state=this.AttrName)}else this.isClose()&&(this.tagName=this.section(),this.setNode())},t.prototype.AttrName=function(t){if("="==t||s[t]||this.isClose()){if(this.attrName=this.section(),s[t])for(;s[this.data[++this.i]];);if("="==this.data[this.i]){for(;s[this.data[++this.i]];);this.start=this.i--,this.state=this.AttrValue}else this.setAttr()}},t.prototype.AttrValue=function(t){if('"'==t||"'"==t){if(this.start++,-1==(this.i=this.data.indexOf(t,this.i+1)))return this.i=this.data.length;this.attrVal=this.section(),this.i++}else{for(;!s[this.data[this.i]]&&!this.isClose();this.i++);this.attrVal=this.section()}this.setAttr()},t.prototype.EndTag=function(t){if(s[t]||">"==t||"/"==t){for(var i=this.section().toLowerCase(),e=this.STACK.length;e--&&this.STACK[e].name!=i;);if(-1!=e){for(var a;(a=this.STACK.pop()).name!=i;)this.popNode(a);this.popNode(a)}else"p"!=i&&"br"!=i||this.siblings().push({name:i,attrs:{}});this.i=this.data.indexOf(">",this.i),this.start=this.i+1,-1==this.i?this.i=this.data.length:this.state=this.Text}},module.exports=t \ No newline at end of file diff --git a/config.js b/config.js index 6345c6d..196856f 100644 --- a/config.js +++ b/config.js @@ -3,9 +3,11 @@ module.exports = { // apiHost: 'https://api.it120.cc',//api工厂的值 subDomain: "9kuai8coffee.asia", // 固定值 + version: "20.1.2", note: '标签机 会员价 ', + merchantId: 27, // 商户ID,可在后台工厂设置-->商户信息查看 customerServiceType: 'QW' // 客服类型,QW为企业微信,需要在后台系统参数配置企业ID和客服URL,否则为小程序的默认客服 } diff --git a/pages/asset/index.wxml b/pages/asset/index.wxml index aab852a..a087cc5 100644 --- a/pages/asset/index.wxml +++ b/pages/asset/index.wxml @@ -9,10 +9,10 @@ {{ $t.asset.send }}¥{{item.send}} - + + {{ $t.asset.other }} + + {{ $t.asset.confirmBtn }} diff --git a/pages/index/index.wxml b/pages/index/index.wxml index a337316..e89b3e9 100644 --- a/pages/index/index.wxml +++ b/pages/index/index.wxml @@ -230,12 +230,12 @@ - + - + - + diff --git a/pages/pay/index.js b/pages/pay/index.js index 52b597d..81335e7 100644 --- a/pages/pay/index.js +++ b/pages/pay/index.js @@ -383,7 +383,7 @@ Page({ console.log("余额支付:",r) if(r.code==700){ //打印的数据 - console.log("print:" ,that.data,res.data) + console.log("print:" ,that.data.goodsList,that.data.shopInfo,res.data) //小票 that.print2(res.data) //标签 @@ -409,8 +409,6 @@ Page({ isPrint: true //打印标志 } - //打印的数据 - console.log("print:" ,data) wxpay.wxpay('order', money, res.data.id, "/pages/all-orders/index",data) console.log("微信支付:") @@ -690,7 +688,7 @@ Page({ }//未来店 else if (that.data.shopInfo.id==1){ - sn = '32EL21088705948' + sn = '' } //如果没有打印机,则返回 @@ -702,20 +700,17 @@ Page({ let content = '' for(let i=0;i# '+(i+1) +'/' + that.data.goodsList.length + ' 总金额:'+data.amountReal + ''+ ''+ that.data.goodsList[i].name +'' for(let j=0;j'+ that.data.goodsList[i].sku[j].optionValueName +'' } - content+= ''+'单价: ¥'+ that.data.goodsList[i].price + ''+ - ''+ data.orderNumber+ ''+ + content+= ''+'单价: ¥'+ that.data.goodsList[i].price +'X'+ that.data.goodsList[i].number+ ''+ ''+ timeStr + ''+ ''+ that.data.shopInfo.name + '' + '' } - } //请求参数 @@ -765,7 +760,7 @@ Page({ } //未来店 else if (that.data.shopInfo.id==1){ - sn = '742N30GDRND8E4A' + sn = '' } //如果没有打印机,则返回 @@ -774,7 +769,7 @@ Page({ } //当前日期 时分秒 let timeStr = that.getDate() - let content = '9.8 COFFEE


' +'
' + data.goodsList[i].price + '元
' + let content = '9.8 COFFEE小票


' +'
' for(let i=0;i' + that.data.goodsList[i].number +'' @@ -783,6 +778,8 @@ Page({ content+= that.data.goodsList[i].sku[j].optionValueName + '|' } content+='' + + } content+='
' + that.data.goodsList[i].price + '元
' content+='合计:'+ data.amountReal+'元

' diff --git a/project.private.config.json b/project.private.config.json index 60a6e52..1a7ab08 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -1,7 +1,7 @@ { "setting": { "compileHotReLoad": true, - "urlCheck": true + "urlCheck": false }, "condition": { "miniprogram": { @@ -307,7 +307,7 @@ ] } }, - "projectname": "bee-master2", + "projectname": "bee-master", "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", "libVersion": "3.4.10" } \ No newline at end of file diff --git a/utils/pay.js b/utils/pay.js index f88f745..3815d1e 100644 --- a/utils/pay.js +++ b/utils/pay.js @@ -113,7 +113,6 @@ function wxpay(type, money, orderId, redirectUrl, data) { let content = '' for(let i=0;i# '+(i+1) +'/' + data.goodsList.length + ' 总金额:'+data.data.amountReal + ''+ ''+ data.goodsList[i].name +'' @@ -121,11 +120,9 @@ for(let i=0;i'+ data.goodsList[i].sku[j].optionValueName +'' } content+= ''+'单价: ¥'+ data.goodsList[i].price +'X'+ data.goodsList[i].number+ ''+ - ''+ data.data.orderNumber+ ''+ ''+ timeStr + ''+ ''+ data.shopInfo.name + '' + '' -} } @@ -176,7 +173,7 @@ for(let i=0;i ' + let content = '9.8 COFFEE小票


' +' ' for(let i=0;i' + data.goodsList[i].number +'' @@ -212,8 +209,6 @@ for(let i=0;i' + ' 备注: ' + data.remark +'
' content+= '' - - //请求参数 From a1b749593d307ed59ddc80a9ccea8aaef6aeba97 Mon Sep 17 00:00:00 2001 From: TOD-nights Date: Sat, 22 Mar 2025 04:04:47 +0800 Subject: [PATCH 18/40] sn = '742N30GDRND8E4A' --- utils/pay.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/pay.js b/utils/pay.js index 3815d1e..e647bd5 100644 --- a/utils/pay.js +++ b/utils/pay.js @@ -173,7 +173,7 @@ for(let i=0;i Date: Sat, 22 Mar 2025 04:20:39 +0800 Subject: [PATCH 19/40] revert li --- .idea/.gitignore | 8 -------- .idea/bee.iml | 9 --------- .idea/misc.xml | 6 ------ .idea/modules.xml | 8 -------- .idea/vcs.xml | 6 ------ pages/pay/index.js | 7 ++----- utils/pay.js | 6 +----- 7 files changed, 3 insertions(+), 47 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/bee.iml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 13566b8..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/.idea/bee.iml b/.idea/bee.iml deleted file mode 100644 index d6ebd48..0000000 --- a/.idea/bee.iml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 639900d..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 234b1f0..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1dd..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/pages/pay/index.js b/pages/pay/index.js index 81335e7..943d6e4 100644 --- a/pages/pay/index.js +++ b/pages/pay/index.js @@ -404,7 +404,7 @@ Page({ mobile: that.data.mobile,//用户电话 address: that.data.curAddressData.address,//配送地址 remark: that.data.remark, //用户备注 - peisongType: that.data.peisongType,//zq,kd + peisongType: that.data.peisongType,//配置方式zq,kd isPrint: true //打印标志 @@ -790,11 +790,8 @@ Page({ if(that.data.peisongType =='kd'){ content+= '用户地址: '+ that.data.curAddressData.address + '
' } - // if(that.data.peisongType=='zq'){ - // content+= ' 取单号: '+that.data.curAddressData.address + '
' - // } content+= '门店名称: ' + that.data.shopInfo.name +'
'+ - ' 备注: ' + that.data.remark +'
' + '备注: ' + that.data.remark +'
' content+= '' diff --git a/utils/pay.js b/utils/pay.js index e647bd5..593af46 100644 --- a/utils/pay.js +++ b/utils/pay.js @@ -100,7 +100,6 @@ function wxpay(type, money, orderId, redirectUrl, data) { }//未来店 else if (data.shopInfo.id==1){ - sn = '32EL21088705948' } @@ -203,11 +202,8 @@ for(let i=0;i' } - // if(data.peisongType=='zq'){ - // content+= ' 取单号: '+data.address + '
' - // } content+='门店名称: ' + data.shopInfo.name +'
' + - ' 备注: ' + data.remark +'
' + '备注: ' + data.remark +'
' content+= '' From 20ac91d4bb8a64f6b6db7caa84670a3b7e869562 Mon Sep 17 00:00:00 2001 From: TOD-nights Date: Sat, 22 Mar 2025 04:24:25 +0800 Subject: [PATCH 20/40] Revert "revert" This reverts commit 950215846e6885def4755dea9927ab6ab453f071. --- .../parser.20200731.min/libs/MpHtmlParser.js | 2 +- config.js | 2 -- pages/asset/index.wxml | 8 ++++---- pages/index/index.wxml | 6 +++--- pages/pay/index.js | 17 ++++++++++------- project.private.config.json | 4 ++-- utils/pay.js | 7 ++++++- 7 files changed, 26 insertions(+), 20 deletions(-) diff --git a/components/parser.20200731.min/libs/MpHtmlParser.js b/components/parser.20200731.min/libs/MpHtmlParser.js index 6eee04f..486206c 100644 --- a/components/parser.20200731.min/libs/MpHtmlParser.js +++ b/components/parser.20200731.min/libs/MpHtmlParser.js @@ -1,2 +1,2 @@ // 小程序富文本插件 https://github.com/jin-yufeng/Parser -var emoji;function t(t){var s=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.attrs={},this.CssHandler=new e(r.tagStyle,a),this.data=t,this.domain=r.domain,this.DOM=[],this.i=this.start=this.audioNum=this.imgNum=this.videoNum=0,r.prot=(this.domain||"").includes("://")?this.domain.split("://")[0]:"http",this.options=r,this.state=this.Text,this.STACK=[],this.bubble=function(){for(var t,e=s.STACK.length;t=s.STACK[--e];){if(i.richOnlyTags[t.name])return"table"!=t.name||Object.hasOwnProperty.call(t,"c")||(t.c=1),!1;t.c=1}return!0},this.decode=function(t,s){for(var e,a,r=-1;;){if(-1==(r=t.indexOf("&",r+1)))break;if(-1==(e=t.indexOf(";",r+2)))break;"#"==t[r+1]?(a=parseInt(("x"==t[r+2]?"0":"")+t.substring(r+2,e)),isNaN(a)||(t=t.substr(0,r)+String.fromCharCode(a)+t.substr(e+1))):(a=t.substring(r+1,e),(i.entities[a]||a==s)&&(t=t.substr(0,r)+(i.entities[a]||"&")+t.substr(e+1)))}return t},this.getUrl=function(t){return"/"==t[0]?"/"==t[1]?t=s.options.prot+":"+t:s.domain&&(t=s.domain+t):s.domain&&0!=t.indexOf("data:")&&!t.includes("://")&&(t=s.domain+"/"+t),t},this.isClose=function(){return">"==s.data[s.i]||"/"==s.data[s.i]&&">"==s.data[s.i+1]},this.section=function(){return s.data.substring(s.start,s.i)},this.parent=function(){return s.STACK[s.STACK.length-1]},this.siblings=function(){return s.STACK.length?s.parent().children:s.DOM}}var i=require("./config.js"),s=i.blankChar,e=require("./CssHandler.js"),a=wx.getSystemInfoSync().windowWidth;t.prototype.parse=function(){emoji&&(this.data=emoji.parseEmoji(this.data));for(var t;t=this.data[this.i];this.i++)this.state(t);for(this.state==this.Text&&this.setText();this.STACK.length;)this.popNode(this.STACK.pop());return this.DOM},t.prototype.setAttr=function(){var t=this.attrName.toLowerCase(),e=this.attrVal;for(i.boolAttrs[t]?this.attrs[t]="T":e&&("src"==t||"data-src"==t&&!this.attrs.src?this.attrs.src=this.getUrl(this.decode(e,"amp")):"href"==t||"style"==t?this.attrs[t]=this.decode(e,"amp"):"data-"!=t.substr(0,5)&&(this.attrs[t]=e)),this.attrVal="";s[this.data[this.i]];)this.i++;this.isClose()?this.setNode():(this.start=this.i,this.state=this.AttrName)},t.prototype.setText=function(){var t,e=this.section();if(e)if(e=i.onText&&i.onText(e,function(){return t=!0})||e,t){this.data=this.data.substr(0,this.start)+e+this.data.substr(this.i);var a=this.start+e.length;for(this.i=this.start;this.i7&&(l=7);var d=["xx-small","x-small","small","medium","large","x-large","xx-large"];o["font-size"]=d[l-1],h.size=void 0}break;case"embed":var u=t.attrs.src||"",c=t.attrs.type||"";if(c.includes("video")||u.includes(".mp4")||u.includes(".3gp")||u.includes(".m3u8"))t.name="video";else{if(!(c.includes("audio")||u.includes(".m4a")||u.includes(".wav")||u.includes(".mp3")||u.includes(".aac")))break;t.name="audio"}t.attrs.autostart&&(t.attrs.autoplay="T"),t.attrs.controls="T";/*fallsthrough*/case"video":case"audio":h.id?this[t.name+"Num"]++:h.id=t.name+ ++this[t.name+"Num"],"video"==t.name&&(this.videoNum>3&&(t.lazyLoad=1),h.width&&(o.width=parseFloat(h.width)+(h.width.includes("%")?"%":"px"),h.width=void 0),h.height&&(o.height=parseFloat(h.height)+(h.height.includes("%")?"%":"px"),h.height=void 0)),h.controls||h.autoplay||(h.controls="T"),h.source=[],h.src&&(h.source.push(h.src),h.src=void 0),this.bubble();break;case"td":case"th":if(h.colspan||h.rowspan)for(var f,p=this.STACK.length;f=this.STACK[--p];)if("table"==f.name){f.c=void 0;break}}h.align&&(o["text-align"]=h.align,h.align=void 0);var m=n.split(";");n="";for(var g=0,v=m.length;ga&&(o.height="",h.height&&(h.height=void 0))),o.height?(h.height=o.height,o.height=""):h.height&&!h.height.includes("%")&&(h.height+="px")}for(var T in o){var w=o[T];if(w){if((T.includes("flex")||"order"==T||"self-align"==T)&&(t.c=1),w.includes("url")){var A=w.indexOf("(");if(-1!=A++){for(;'"'==w[A]||"'"==w[A]||s[w[A]];)A++;w=w.substr(0,A)+this.getUrl(w.substr(A))}}else w.includes("rpx")?w=w.replace(/[0-9.]+\s*rpx/g,function(t){return parseFloat(t)*a/750+"px"}):"white-space"==T&&w.includes("pre")&&!e&&(this.pre=t.pre=!0);n+=";"+T+":"+w}}n=n.substr(1),n&&(h.style=n),e?i.filter&&0==i.filter(t,this)||this.siblings().push(t):(t.children=[],"pre"==t.name&&i.highlight&&(this.remove(t),this.pre=t.pre=!0),this.siblings().push(t),this.STACK.push(t))}"/"==this.data[this.i]&&this.i++,this.start=this.i+1,this.state=this.Text},t.prototype.remove=function(t){var e=this,a=t.name,r=this.i,h=function(){var i=e.data.substring(r,e.i+1);t.attrs.xmlns||(i=' xmlns="http://www.w3.org/2000/svg"'+i);for(var s=r;"<"!=e.data[r];)r--;i=e.data.substring(r,s).replace("viewbox","viewBox")+i;var a=e.parent();"100%"==t.attrs.width&&a&&(a.attrs.style||"").includes("inline")&&(a.attrs.style="width:300px;max-width:100%;"+a.attrs.style),e.siblings().push({name:"img",attrs:{src:"data:image/svg+xml;utf8,"+i.replace(/#/g,"%23"),style:(/vertical[^;]+/.exec(t.attrs.style)||[]).shift(),ignore:"T"}})};if("svg"==t.name&&"/"==this.data[r])return h(this.i++);for(;;){if(-1==(this.i=this.data.indexOf("",this.i))&&(this.i=this.data.length),void("svg"==a&&h()))}},t.prototype.popNode=function(t){if(t.pre){t.pre=this.pre=void 0;for(var s=this.STACK.length;s--;)this.STACK[s].pre&&(this.pre=!0)}var e=this.siblings(),a=e.length,r=t.children;if("head"==t.name||i.filter&&0==i.filter(t,this))return e.pop();var h=t.attrs;if(i.blockTags[t.name]?t.name="div":i.trustTags[t.name]||(t.name="span"),t.c&&("ul"==t.name||"ol"==t.name))if((t.attrs.style||"").includes("list-style:none"))for(var n,o=0;n=r[o++];)"li"==n.name&&(n.name="div");else if("ul"==t.name){for(var l=1,d=this.STACK.length;d--;)"ul"==this.STACK[d].name&&l++;if(1!=l)for(var u=r.length;u--;)r[u].floor=l}else for(var c,f=0,p=1;c=r[f++];)"li"==c.name&&(c.type="ol",c.num=function(t,i){if("a"==i)return String.fromCharCode(97+(t-1)%26);if("A"==i)return String.fromCharCode(65+(t-1)%26);if("i"==i||"I"==i){t=(t-1)%99+1;var s=["I","II","III","IV","V","VI","VII","VIII","IX"],e=["X","XX","XXX","XL","L","LX","LXX","LXXX","XC"],a=(e[Math.floor(t/10)-1]||"")+(s[t%10-1]||"");return"i"==i?a.toLowerCase():a}return t}(p++,h.type)+".");if("table"==t.name){var m=h.cellpadding,g=h.cellspacing,v=h.border;if(t.c&&(this.bubble(),h.style=(h.style||"")+";display:table",m||(m=2),g||(g=2)),v&&(h.style="border:"+v+"px solid gray;"+(h.style||"")),g&&(h.style="border-spacing:"+g+"px;"+(h.style||"")),(v||m||t.c)&&function i(s){for(var e,a=0;e=s[a];a++)if("text"!=e.type){var r=e.attrs.style||"";t.c&&"t"==e.name[0]&&(e.c=1,r+=";display:table-"+("th"==e.name||"td"==e.name?"cell":"tr"==e.name?"row":"row-group")),"th"==e.name||"td"==e.name?(v&&(r="border:"+v+"px solid gray;"+r),m&&(r="padding:"+m+"px;"+r)):i(e.children||[]),r&&(e.attrs.style=r)}}(r),this.options.autoscroll){var b=Object.assign({},t);t.name="div",t.attrs={style:"overflow:scroll"},t.children=[b]}}this.CssHandler.pop&&this.CssHandler.pop(t),"div"!=t.name||Object.keys(h).length||1!=r.length||"div"!=r[0].name||(e[a-1]=r[0])},t.prototype.Text=function(t){if("<"==t){var i=this.data[this.i+1],s=function(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"};s(i)?(this.setText(),this.start=this.i+1,this.state=this.TagName):"/"==i?(this.setText(),s(this.data[++this.i+1])?(this.start=this.i+1,this.state=this.EndTag):this.Comment()):"!"!=i&&"?"!=i||(this.setText(),this.Comment())}},t.prototype.Comment=function(){var t;t="--"==this.data.substring(this.i+2,this.i+4)?"--\x3e":"[CDATA["==this.data.substring(this.i+2,this.i+9)?"]]>":">",-1==(this.i=this.data.indexOf(t,this.i+2))?this.i=this.data.length:this.i+=t.length-1,this.start=this.i+1,this.state=this.Text},t.prototype.TagName=function(t){if(s[t]){for(this.tagName=this.section();s[this.data[this.i]];)this.i++;this.isClose()?this.setNode():(this.start=this.i,this.state=this.AttrName)}else this.isClose()&&(this.tagName=this.section(),this.setNode())},t.prototype.AttrName=function(t){if("="==t||s[t]||this.isClose()){if(this.attrName=this.section(),s[t])for(;s[this.data[++this.i]];);if("="==this.data[this.i]){for(;s[this.data[++this.i]];);this.start=this.i--,this.state=this.AttrValue}else this.setAttr()}},t.prototype.AttrValue=function(t){if('"'==t||"'"==t){if(this.start++,-1==(this.i=this.data.indexOf(t,this.i+1)))return this.i=this.data.length;this.attrVal=this.section(),this.i++}else{for(;!s[this.data[this.i]]&&!this.isClose();this.i++);this.attrVal=this.section()}this.setAttr()},t.prototype.EndTag=function(t){if(s[t]||">"==t||"/"==t){for(var i=this.section().toLowerCase(),e=this.STACK.length;e--&&this.STACK[e].name!=i;);if(-1!=e){for(var a;(a=this.STACK.pop()).name!=i;)this.popNode(a);this.popNode(a)}else"p"!=i&&"br"!=i||this.siblings().push({name:i,attrs:{}});this.i=this.data.indexOf(">",this.i),this.start=this.i+1,-1==this.i?this.i=this.data.length:this.state=this.Text}},module.exports=t \ No newline at end of file +var emoji;function t(t){var s=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.attrs={},this.CssHandler=new e(r.tagStyle,a),this.data=t,this.domain=r.domain,this.DOM=[],this.i=this.start=this.audioNum=this.imgNum=this.videoNum=0,r.prot=(this.domain||"").includes("://")?this.domain.split("://")[0]:"http",this.options=r,this.state=this.Text,this.STACK=[],this.bubble=function(){for(var t,e=s.STACK.length;t=s.STACK[--e];){if(i.richOnlyTags[t.name])return"table"!=t.name||Object.hasOwnProperty.call(t,"c")||(t.c=1),!1;t.c=1}return!0},this.decode=function(t,s){for(var e,a,r=-1;;){if(-1==(r=t.indexOf("&",r+1)))break;if(-1==(e=t.indexOf(";",r+2)))break;"#"==t[r+1]?(a=parseInt(("x"==t[r+2]?"0":"")+t.substring(r+2,e)),isNaN(a)||(t=t.substr(0,r)+String.fromCharCode(a)+t.substr(e+1))):(a=t.substring(r+1,e),(i.entities[a]||a==s)&&(t=t.substr(0,r)+(i.entities[a]||"&")+t.substr(e+1)))}return t},this.getUrl=function(t){return"/"==t[0]?"/"==t[1]?t=s.options.prot+":"+t:s.domain&&(t=s.domain+t):s.domain&&0!=t.indexOf("data:")&&!t.includes("://")&&(t=s.domain+"/"+t),t},this.isClose=function(){return">"==s.data[s.i]||"/"==s.data[s.i]&&">"==s.data[s.i+1]},this.section=function(){return s.data.substring(s.start,s.i)},this.parent=function(){return s.STACK[s.STACK.length-1]},this.siblings=function(){return s.STACK.length?s.parent().children:s.DOM}}var i=require("./config.js"),s=i.blankChar,e=require("./CssHandler.js"),a=wx.getSystemInfoSync().windowWidth;t.prototype.parse=function(){emoji&&(this.data=emoji.parseEmoji(this.data));for(var t;t=this.data[this.i];this.i++)this.state(t);for(this.state==this.Text&&this.setText();this.STACK.length;)this.popNode(this.STACK.pop());return this.DOM},t.prototype.setAttr=function(){var t=this.attrName.toLowerCase(),e=this.attrVal;for(i.boolAttrs[t]?this.attrs[t]="T":e&&("src"==t||"data-src"==t&&!this.attrs.src?this.attrs.src=this.getUrl(this.decode(e,"amp")):"href"==t||"style"==t?this.attrs[t]=this.decode(e,"amp"):"data-"!=t.substr(0,5)&&(this.attrs[t]=e)),this.attrVal="";s[this.data[this.i]];)this.i++;this.isClose()?this.setNode():(this.start=this.i,this.state=this.AttrName)},t.prototype.setText=function(){var t,e=this.section();if(e)if(e=i.onText&&i.onText(e,function(){return t=!0})||e,t){this.data=this.data.substr(0,this.start)+e+this.data.substr(this.i);var a=this.start+e.length;for(this.i=this.start;this.i7&&(l=7);var d=["xx-small","x-small","small","medium","large","x-large","xx-large"];o["font-size"]=d[l-1],h.size=void 0}break;case"embed":var u=t.attrs.src||"",c=t.attrs.type||"";if(c.includes("video")||u.includes(".mp4")||u.includes(".3gp")||u.includes(".m3u8"))t.name="video";else{if(!(c.includes("audio")||u.includes(".m4a")||u.includes(".wav")||u.includes(".mp3")||u.includes(".aac")))break;t.name="audio"}t.attrs.autostart&&(t.attrs.autoplay="T"),t.attrs.controls="T";/*fallsthrough*/case"video":case"audio":h.id?this[t.name+"Num"]++:h.id=t.name+ ++this[t.name+"Num"],"video"==t.name&&(this.videoNum>3&&(t.lazyLoad=1),h.width&&(o.width=parseFloat(h.width)+(h.width.includes("%")?"%":"px"),h.width=void 0),h.height&&(o.height=parseFloat(h.height)+(h.height.includes("%")?"%":"px"),h.height=void 0)),h.controls||h.autoplay||(h.controls="T"),h.source=[],h.src&&(h.source.push(h.src),h.src=void 0),this.bubble();break;case"td":case"th":if(h.colspan||h.rowspan)for(var f,p=this.STACK.length;f=this.STACK[--p];)if("table"==f.name){f.c=void 0;break}}h.align&&(o["text-align"]=h.align,h.align=void 0);var m=n.split(";");n="";for(var g=0,v=m.length;ga&&(o.height="",h.height&&(h.height=void 0))),o.height?(h.height=o.height,o.height=""):h.height&&!h.height.includes("%")&&(h.height+="px")}for(var T in o){var w=o[T];if(w){if((T.includes("flex")||"order"==T||"self-align"==T)&&(t.c=1),w.includes("url")){var A=w.indexOf("(");if(-1!=A++){for(;'"'==w[A]||"'"==w[A]||s[w[A]];)A++;w=w.substr(0,A)+this.getUrl(w.substr(A))}}else w.includes("rpx")?w=w.replace(/[0-9.]+\s*rpx/g,function(t){return parseFloat(t)*a/750+"px"}):"white-space"==T&&w.includes("pre")&&!e&&(this.pre=t.pre=!0);n+=";"+T+":"+w}}n=n.substr(1),n&&(h.style=n),e?i.filter&&0==i.filter(t,this)||this.siblings().push(t):(t.children=[],"pre"==t.name&&i.highlight&&(this.remove(t),this.pre=t.pre=!0),this.siblings().push(t),this.STACK.push(t))}"/"==this.data[this.i]&&this.i++,this.start=this.i+1,this.state=this.Text},t.prototype.remove=function(t){var e=this,a=t.name,r=this.i,h=function(){var i=e.data.substring(r,e.i+1);t.attrs.xmlns||(i=' xmlns="http://www.w3.org/2000/svg"'+i);for(var s=r;"<"!=e.data[r];)r--;i=e.data.substring(r,s).replace("viewbox","viewBox")+i;var a=e.parent();"100%"==t.attrs.width&&a&&(a.attrs.style||"").includes("inline")&&(a.attrs.style="width:300px;max-width:100%;"+a.attrs.style),e.siblings().push({name:"img",attrs:{src:"data:image/svg+xml;utf8,"+i.replace(/#/g,"%23"),style:(/vertical[^;]+/.exec(t.attrs.style)||[]).shift(),ignore:"T"}})};if("svg"==t.name&&"/"==this.data[r])return h(this.i++);for(;;){if(-1==(this.i=this.data.indexOf("",this.i))&&(this.i=this.data.length),void("svg"==a&&h()))}},t.prototype.popNode=function(t){if(t.pre){t.pre=this.pre=void 0;for(var s=this.STACK.length;s--;)this.STACK[s].pre&&(this.pre=!0)}var e=this.siblings(),a=e.length,r=t.children;if("head"==t.name||i.filter&&0==i.filter(t,this))return e.pop();var h=t.attrs;if(i.blockTags[t.name]?t.name="div":i.trustTags[t.name]||(t.name="span"),t.c&&("ul"==t.name||"ol"==t.name))if((t.attrs.style||"").includes("list-style:none"))for(var n,o=0;n=r[o++];)"li"==n.name&&(n.name="div");else if("ul"==t.name){for(var l=1,d=this.STACK.length;d--;)"ul"==this.STACK[d].name&&l++;if(1!=l)for(var u=r.length;u--;)r[u].floor=l}else for(var c,f=0,p=1;c=r[f++];)"li"==c.name&&(c.type="ol",c.num=function(t,i){if("a"==i)return String.fromCharCode(97+(t-1)%26);if("A"==i)return String.fromCharCode(65+(t-1)%26);if("i"==i||"I"==i){t=(t-1)%99+1;var s=["I","II","III","IV","V","VI","VII","VIII","IX"],e=["X","XX","XXX","XL","L","LX","LXX","LXXX","XC"],a=(e[Math.floor(t/10)-1]||"")+(s[t%10-1]||"");return"i"==i?a.toLowerCase():a}return t}(p++,h.type)+".");if("table"==t.name){var m=h.cellpadding,g=h.cellspacing,v=h.border;if(t.c&&(this.bubble(),h.style=(h.style||"")+";display:table",m||(m=2),g||(g=2)),v&&(h.style="border:"+v+"px solid gray;"+(h.style||"")),g&&(h.style="border-spacing:"+g+"px;"+(h.style||"")),(v||m||t.c)&&function i(s){for(var e,a=0;e=s[a];a++)if("text"!=e.type){var r=e.attrs.style||"";t.c&&"t"==e.name[0]&&(e.c=1,r+=";display:table-"+("th"==e.name||"td"==e.name?"cell":"tr"==e.name?"row":"row-group")),"th"==e.name||"td"==e.name?(v&&(r="border:"+v+"px solid gray;"+r),m&&(r="padding:"+m+"px;"+r)):i(e.children||[]),r&&(e.attrs.style=r)}}(r),this.options.autoscroll){var b=Object.assign({},t);t.name="div",t.attrs={style:"overflow:scroll"},t.children=[b]}}this.CssHandler.pop&&this.CssHandler.pop(t),"div"!=t.name||Object.keys(h).length||1!=r.length||"div"!=r[0].name||(e[a-1]=r[0])},t.prototype.Text=function(t){if("<"==t){var i=this.data[this.i+1],s=function(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"};s(i)?(this.setText(),this.start=this.i+1,this.state=this.TagName):"/"==i?(this.setText(),s(this.data[++this.i+1])?(this.start=this.i+1,this.state=this.EndTag):this.Comment()):"!"!=i&&"?"!=i||(this.setText(),this.Comment())}},t.prototype.Comment=function(){var t;t="--"==this.data.substring(this.i+2,this.i+4)?"--\x3e":"[CDATA["==this.data.substring(this.i+2,this.i+9)?"]]>":">",-1==(this.i=this.data.indexOf(t,this.i+2))?this.i=this.data.length:this.i+=t.length-1,this.start=this.i+1,this.state=this.Text},t.prototype.TagName=function(t){if(s[t]){for(this.tagName=this.section();s[this.data[this.i]];)this.i++;this.isClose()?this.setNode():(this.start=this.i,this.state=this.AttrName)}else this.isClose()&&(this.tagName=this.section(),this.setNode())},t.prototype.AttrName=function(t){if("="==t||s[t]||this.isClose()){if(this.attrName=this.section(),s[t])for(;s[this.data[++this.i]];);if("="==this.data[this.i]){for(;s[this.data[++this.i]];);this.start=this.i--,this.state=this.AttrValue}else this.setAttr()}},t.prototype.AttrValue=function(t){if('"'==t||"'"==t){if(this.start++,-1==(this.i=this.data.indexOf(t,this.i+1)))return this.i=this.data.length;this.attrVal=this.section(),this.i++}else{for(;!s[this.data[this.i]]&&!this.isClose();this.i++);this.attrVal=this.section()}this.setAttr()},t.prototype.EndTag=function(t){if(s[t]||">"==t||"/"==t){for(var i=this.section().toLowerCase(),e=this.STACK.length;e--&&this.STACK[e].name!=i;);if(-1!=e){for(var a;(a=this.STACK.pop()).name!=i;)this.popNode(a);this.popNode(a)}else"p"!=i&&"br"!=i||this.siblings().push({name:i,attrs:{}});this.i=this.data.indexOf(">",this.i),this.start=this.i+1,-1==this.i?this.i=this.data.length:this.state=this.Text}},module.exports=t \ No newline at end of file diff --git a/config.js b/config.js index 196856f..6345c6d 100644 --- a/config.js +++ b/config.js @@ -3,11 +3,9 @@ module.exports = { // apiHost: 'https://api.it120.cc',//api工厂的值 subDomain: "9kuai8coffee.asia", // 固定值 - version: "20.1.2", note: '标签机 会员价 ', - merchantId: 27, // 商户ID,可在后台工厂设置-->商户信息查看 customerServiceType: 'QW' // 客服类型,QW为企业微信,需要在后台系统参数配置企业ID和客服URL,否则为小程序的默认客服 } diff --git a/pages/asset/index.wxml b/pages/asset/index.wxml index a087cc5..aab852a 100644 --- a/pages/asset/index.wxml +++ b/pages/asset/index.wxml @@ -9,10 +9,10 @@ {{ $t.asset.send }}¥{{item.send}} - - {{ $t.asset.other }} - - + {{ $t.asset.confirmBtn }} diff --git a/pages/index/index.wxml b/pages/index/index.wxml index e89b3e9..a337316 100644 --- a/pages/index/index.wxml +++ b/pages/index/index.wxml @@ -230,14 +230,14 @@ - + - + - + {{ $t.index.order }} diff --git a/pages/pay/index.js b/pages/pay/index.js index 943d6e4..24993d4 100644 --- a/pages/pay/index.js +++ b/pages/pay/index.js @@ -383,7 +383,7 @@ Page({ console.log("余额支付:",r) if(r.code==700){ //打印的数据 - console.log("print:" ,that.data.goodsList,that.data.shopInfo,res.data) + console.log("print:" ,that.data,res.data) //小票 that.print2(res.data) //标签 @@ -409,6 +409,8 @@ Page({ isPrint: true //打印标志 } + //打印的数据 + console.log("print:" ,data) wxpay.wxpay('order', money, res.data.id, "/pages/all-orders/index",data) console.log("微信支付:") @@ -688,7 +690,7 @@ Page({ }//未来店 else if (that.data.shopInfo.id==1){ - sn = '' + sn = '32EL21088705948' } //如果没有打印机,则返回 @@ -700,17 +702,20 @@ Page({ let content = '' for(let i=0;i# '+(i+1) +'/' + that.data.goodsList.length + ' 总金额:'+data.amountReal + ''+ ''+ that.data.goodsList[i].name +'' for(let j=0;j'+ that.data.goodsList[i].sku[j].optionValueName +'' } - content+= ''+'单价: ¥'+ that.data.goodsList[i].price +'X'+ that.data.goodsList[i].number+ ''+ + content+= ''+'单价: ¥'+ that.data.goodsList[i].price + ''+ + ''+ data.orderNumber+ ''+ ''+ timeStr + ''+ ''+ that.data.shopInfo.name + '' + '' } + } //请求参数 @@ -760,7 +765,7 @@ Page({ } //未来店 else if (that.data.shopInfo.id==1){ - sn = '' + sn = '742N30GDRND8E4A' } //如果没有打印机,则返回 @@ -769,7 +774,7 @@ Page({ } //当前日期 时分秒 let timeStr = that.getDate() - let content = '9.8 COFFEE小票


' +'
' + data.goodsList[i].price + '元
' + let content = '9.8 COFFEE


' +'
' for(let i=0;i' + that.data.goodsList[i].number +'' @@ -778,8 +783,6 @@ Page({ content+= that.data.goodsList[i].sku[j].optionValueName + '|' } content+='' - - } content+='
' + that.data.goodsList[i].price + '元
' content+='合计:'+ data.amountReal+'元

' diff --git a/project.private.config.json b/project.private.config.json index 1a7ab08..60a6e52 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -1,7 +1,7 @@ { "setting": { "compileHotReLoad": true, - "urlCheck": false + "urlCheck": true }, "condition": { "miniprogram": { @@ -307,7 +307,7 @@ ] } }, - "projectname": "bee-master", + "projectname": "bee-master2", "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", "libVersion": "3.4.10" } \ No newline at end of file diff --git a/utils/pay.js b/utils/pay.js index 593af46..3aa202e 100644 --- a/utils/pay.js +++ b/utils/pay.js @@ -112,6 +112,7 @@ function wxpay(type, money, orderId, redirectUrl, data) { let content = '' for(let i=0;i# '+(i+1) +'/' + data.goodsList.length + ' 总金额:'+data.data.amountReal + ''+ ''+ data.goodsList[i].name +'' @@ -119,9 +120,11 @@ for(let i=0;i'+ data.goodsList[i].sku[j].optionValueName +'' } content+= ''+'单价: ¥'+ data.goodsList[i].price +'X'+ data.goodsList[i].number+ ''+ + ''+ data.data.orderNumber+ ''+ ''+ timeStr + ''+ ''+ data.shopInfo.name + '' + '' +} } @@ -181,7 +184,7 @@ for(let i=0;i ' + let content = '9.8 COFFEE


' +' ' for(let i=0;i' + data.goodsList[i].number +'' @@ -205,6 +208,8 @@ for(let i=0;i' + '备注: ' + data.remark +'
' content+= '' + + //请求参数 From e81a4580e6eb5eb8e8e7e2ace9c96117e80e948c Mon Sep 17 00:00:00 2001 From: TOD-nights Date: Sat, 22 Mar 2025 06:18:58 +0800 Subject: [PATCH 21/40] =?UTF-8?q?=E5=9B=9E=E9=80=80=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 8 ------- .idea/bee.iml | 9 -------- .idea/misc.xml | 6 ------ .idea/modules.xml | 8 ------- .idea/vcs.xml | 6 ------ .../parser.20200731.min/libs/MpHtmlParser.js | 2 +- config.js | 2 ++ pages/asset/index.wxml | 8 +++---- pages/index/index.wxml | 2 +- pages/pay/index.js | 21 +++++++------------ project.private.config.json | 4 ++-- utils/pay.js | 13 +++--------- 12 files changed, 21 insertions(+), 68 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/bee.iml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 13566b8..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/.idea/bee.iml b/.idea/bee.iml deleted file mode 100644 index d6ebd48..0000000 --- a/.idea/bee.iml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 639900d..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 234b1f0..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1dd..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/components/parser.20200731.min/libs/MpHtmlParser.js b/components/parser.20200731.min/libs/MpHtmlParser.js index 486206c..6eee04f 100644 --- a/components/parser.20200731.min/libs/MpHtmlParser.js +++ b/components/parser.20200731.min/libs/MpHtmlParser.js @@ -1,2 +1,2 @@ // 小程序富文本插件 https://github.com/jin-yufeng/Parser -var emoji;function t(t){var s=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.attrs={},this.CssHandler=new e(r.tagStyle,a),this.data=t,this.domain=r.domain,this.DOM=[],this.i=this.start=this.audioNum=this.imgNum=this.videoNum=0,r.prot=(this.domain||"").includes("://")?this.domain.split("://")[0]:"http",this.options=r,this.state=this.Text,this.STACK=[],this.bubble=function(){for(var t,e=s.STACK.length;t=s.STACK[--e];){if(i.richOnlyTags[t.name])return"table"!=t.name||Object.hasOwnProperty.call(t,"c")||(t.c=1),!1;t.c=1}return!0},this.decode=function(t,s){for(var e,a,r=-1;;){if(-1==(r=t.indexOf("&",r+1)))break;if(-1==(e=t.indexOf(";",r+2)))break;"#"==t[r+1]?(a=parseInt(("x"==t[r+2]?"0":"")+t.substring(r+2,e)),isNaN(a)||(t=t.substr(0,r)+String.fromCharCode(a)+t.substr(e+1))):(a=t.substring(r+1,e),(i.entities[a]||a==s)&&(t=t.substr(0,r)+(i.entities[a]||"&")+t.substr(e+1)))}return t},this.getUrl=function(t){return"/"==t[0]?"/"==t[1]?t=s.options.prot+":"+t:s.domain&&(t=s.domain+t):s.domain&&0!=t.indexOf("data:")&&!t.includes("://")&&(t=s.domain+"/"+t),t},this.isClose=function(){return">"==s.data[s.i]||"/"==s.data[s.i]&&">"==s.data[s.i+1]},this.section=function(){return s.data.substring(s.start,s.i)},this.parent=function(){return s.STACK[s.STACK.length-1]},this.siblings=function(){return s.STACK.length?s.parent().children:s.DOM}}var i=require("./config.js"),s=i.blankChar,e=require("./CssHandler.js"),a=wx.getSystemInfoSync().windowWidth;t.prototype.parse=function(){emoji&&(this.data=emoji.parseEmoji(this.data));for(var t;t=this.data[this.i];this.i++)this.state(t);for(this.state==this.Text&&this.setText();this.STACK.length;)this.popNode(this.STACK.pop());return this.DOM},t.prototype.setAttr=function(){var t=this.attrName.toLowerCase(),e=this.attrVal;for(i.boolAttrs[t]?this.attrs[t]="T":e&&("src"==t||"data-src"==t&&!this.attrs.src?this.attrs.src=this.getUrl(this.decode(e,"amp")):"href"==t||"style"==t?this.attrs[t]=this.decode(e,"amp"):"data-"!=t.substr(0,5)&&(this.attrs[t]=e)),this.attrVal="";s[this.data[this.i]];)this.i++;this.isClose()?this.setNode():(this.start=this.i,this.state=this.AttrName)},t.prototype.setText=function(){var t,e=this.section();if(e)if(e=i.onText&&i.onText(e,function(){return t=!0})||e,t){this.data=this.data.substr(0,this.start)+e+this.data.substr(this.i);var a=this.start+e.length;for(this.i=this.start;this.i7&&(l=7);var d=["xx-small","x-small","small","medium","large","x-large","xx-large"];o["font-size"]=d[l-1],h.size=void 0}break;case"embed":var u=t.attrs.src||"",c=t.attrs.type||"";if(c.includes("video")||u.includes(".mp4")||u.includes(".3gp")||u.includes(".m3u8"))t.name="video";else{if(!(c.includes("audio")||u.includes(".m4a")||u.includes(".wav")||u.includes(".mp3")||u.includes(".aac")))break;t.name="audio"}t.attrs.autostart&&(t.attrs.autoplay="T"),t.attrs.controls="T";/*fallsthrough*/case"video":case"audio":h.id?this[t.name+"Num"]++:h.id=t.name+ ++this[t.name+"Num"],"video"==t.name&&(this.videoNum>3&&(t.lazyLoad=1),h.width&&(o.width=parseFloat(h.width)+(h.width.includes("%")?"%":"px"),h.width=void 0),h.height&&(o.height=parseFloat(h.height)+(h.height.includes("%")?"%":"px"),h.height=void 0)),h.controls||h.autoplay||(h.controls="T"),h.source=[],h.src&&(h.source.push(h.src),h.src=void 0),this.bubble();break;case"td":case"th":if(h.colspan||h.rowspan)for(var f,p=this.STACK.length;f=this.STACK[--p];)if("table"==f.name){f.c=void 0;break}}h.align&&(o["text-align"]=h.align,h.align=void 0);var m=n.split(";");n="";for(var g=0,v=m.length;ga&&(o.height="",h.height&&(h.height=void 0))),o.height?(h.height=o.height,o.height=""):h.height&&!h.height.includes("%")&&(h.height+="px")}for(var T in o){var w=o[T];if(w){if((T.includes("flex")||"order"==T||"self-align"==T)&&(t.c=1),w.includes("url")){var A=w.indexOf("(");if(-1!=A++){for(;'"'==w[A]||"'"==w[A]||s[w[A]];)A++;w=w.substr(0,A)+this.getUrl(w.substr(A))}}else w.includes("rpx")?w=w.replace(/[0-9.]+\s*rpx/g,function(t){return parseFloat(t)*a/750+"px"}):"white-space"==T&&w.includes("pre")&&!e&&(this.pre=t.pre=!0);n+=";"+T+":"+w}}n=n.substr(1),n&&(h.style=n),e?i.filter&&0==i.filter(t,this)||this.siblings().push(t):(t.children=[],"pre"==t.name&&i.highlight&&(this.remove(t),this.pre=t.pre=!0),this.siblings().push(t),this.STACK.push(t))}"/"==this.data[this.i]&&this.i++,this.start=this.i+1,this.state=this.Text},t.prototype.remove=function(t){var e=this,a=t.name,r=this.i,h=function(){var i=e.data.substring(r,e.i+1);t.attrs.xmlns||(i=' xmlns="http://www.w3.org/2000/svg"'+i);for(var s=r;"<"!=e.data[r];)r--;i=e.data.substring(r,s).replace("viewbox","viewBox")+i;var a=e.parent();"100%"==t.attrs.width&&a&&(a.attrs.style||"").includes("inline")&&(a.attrs.style="width:300px;max-width:100%;"+a.attrs.style),e.siblings().push({name:"img",attrs:{src:"data:image/svg+xml;utf8,"+i.replace(/#/g,"%23"),style:(/vertical[^;]+/.exec(t.attrs.style)||[]).shift(),ignore:"T"}})};if("svg"==t.name&&"/"==this.data[r])return h(this.i++);for(;;){if(-1==(this.i=this.data.indexOf("",this.i))&&(this.i=this.data.length),void("svg"==a&&h()))}},t.prototype.popNode=function(t){if(t.pre){t.pre=this.pre=void 0;for(var s=this.STACK.length;s--;)this.STACK[s].pre&&(this.pre=!0)}var e=this.siblings(),a=e.length,r=t.children;if("head"==t.name||i.filter&&0==i.filter(t,this))return e.pop();var h=t.attrs;if(i.blockTags[t.name]?t.name="div":i.trustTags[t.name]||(t.name="span"),t.c&&("ul"==t.name||"ol"==t.name))if((t.attrs.style||"").includes("list-style:none"))for(var n,o=0;n=r[o++];)"li"==n.name&&(n.name="div");else if("ul"==t.name){for(var l=1,d=this.STACK.length;d--;)"ul"==this.STACK[d].name&&l++;if(1!=l)for(var u=r.length;u--;)r[u].floor=l}else for(var c,f=0,p=1;c=r[f++];)"li"==c.name&&(c.type="ol",c.num=function(t,i){if("a"==i)return String.fromCharCode(97+(t-1)%26);if("A"==i)return String.fromCharCode(65+(t-1)%26);if("i"==i||"I"==i){t=(t-1)%99+1;var s=["I","II","III","IV","V","VI","VII","VIII","IX"],e=["X","XX","XXX","XL","L","LX","LXX","LXXX","XC"],a=(e[Math.floor(t/10)-1]||"")+(s[t%10-1]||"");return"i"==i?a.toLowerCase():a}return t}(p++,h.type)+".");if("table"==t.name){var m=h.cellpadding,g=h.cellspacing,v=h.border;if(t.c&&(this.bubble(),h.style=(h.style||"")+";display:table",m||(m=2),g||(g=2)),v&&(h.style="border:"+v+"px solid gray;"+(h.style||"")),g&&(h.style="border-spacing:"+g+"px;"+(h.style||"")),(v||m||t.c)&&function i(s){for(var e,a=0;e=s[a];a++)if("text"!=e.type){var r=e.attrs.style||"";t.c&&"t"==e.name[0]&&(e.c=1,r+=";display:table-"+("th"==e.name||"td"==e.name?"cell":"tr"==e.name?"row":"row-group")),"th"==e.name||"td"==e.name?(v&&(r="border:"+v+"px solid gray;"+r),m&&(r="padding:"+m+"px;"+r)):i(e.children||[]),r&&(e.attrs.style=r)}}(r),this.options.autoscroll){var b=Object.assign({},t);t.name="div",t.attrs={style:"overflow:scroll"},t.children=[b]}}this.CssHandler.pop&&this.CssHandler.pop(t),"div"!=t.name||Object.keys(h).length||1!=r.length||"div"!=r[0].name||(e[a-1]=r[0])},t.prototype.Text=function(t){if("<"==t){var i=this.data[this.i+1],s=function(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"};s(i)?(this.setText(),this.start=this.i+1,this.state=this.TagName):"/"==i?(this.setText(),s(this.data[++this.i+1])?(this.start=this.i+1,this.state=this.EndTag):this.Comment()):"!"!=i&&"?"!=i||(this.setText(),this.Comment())}},t.prototype.Comment=function(){var t;t="--"==this.data.substring(this.i+2,this.i+4)?"--\x3e":"[CDATA["==this.data.substring(this.i+2,this.i+9)?"]]>":">",-1==(this.i=this.data.indexOf(t,this.i+2))?this.i=this.data.length:this.i+=t.length-1,this.start=this.i+1,this.state=this.Text},t.prototype.TagName=function(t){if(s[t]){for(this.tagName=this.section();s[this.data[this.i]];)this.i++;this.isClose()?this.setNode():(this.start=this.i,this.state=this.AttrName)}else this.isClose()&&(this.tagName=this.section(),this.setNode())},t.prototype.AttrName=function(t){if("="==t||s[t]||this.isClose()){if(this.attrName=this.section(),s[t])for(;s[this.data[++this.i]];);if("="==this.data[this.i]){for(;s[this.data[++this.i]];);this.start=this.i--,this.state=this.AttrValue}else this.setAttr()}},t.prototype.AttrValue=function(t){if('"'==t||"'"==t){if(this.start++,-1==(this.i=this.data.indexOf(t,this.i+1)))return this.i=this.data.length;this.attrVal=this.section(),this.i++}else{for(;!s[this.data[this.i]]&&!this.isClose();this.i++);this.attrVal=this.section()}this.setAttr()},t.prototype.EndTag=function(t){if(s[t]||">"==t||"/"==t){for(var i=this.section().toLowerCase(),e=this.STACK.length;e--&&this.STACK[e].name!=i;);if(-1!=e){for(var a;(a=this.STACK.pop()).name!=i;)this.popNode(a);this.popNode(a)}else"p"!=i&&"br"!=i||this.siblings().push({name:i,attrs:{}});this.i=this.data.indexOf(">",this.i),this.start=this.i+1,-1==this.i?this.i=this.data.length:this.state=this.Text}},module.exports=t \ No newline at end of file +var emoji;function t(t){var s=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.attrs={},this.CssHandler=new e(r.tagStyle,a),this.data=t,this.domain=r.domain,this.DOM=[],this.i=this.start=this.audioNum=this.imgNum=this.videoNum=0,r.prot=(this.domain||"").includes("://")?this.domain.split("://")[0]:"http",this.options=r,this.state=this.Text,this.STACK=[],this.bubble=function(){for(var t,e=s.STACK.length;t=s.STACK[--e];){if(i.richOnlyTags[t.name])return"table"!=t.name||Object.hasOwnProperty.call(t,"c")||(t.c=1),!1;t.c=1}return!0},this.decode=function(t,s){for(var e,a,r=-1;;){if(-1==(r=t.indexOf("&",r+1)))break;if(-1==(e=t.indexOf(";",r+2)))break;"#"==t[r+1]?(a=parseInt(("x"==t[r+2]?"0":"")+t.substring(r+2,e)),isNaN(a)||(t=t.substr(0,r)+String.fromCharCode(a)+t.substr(e+1))):(a=t.substring(r+1,e),(i.entities[a]||a==s)&&(t=t.substr(0,r)+(i.entities[a]||"&")+t.substr(e+1)))}return t},this.getUrl=function(t){return"/"==t[0]?"/"==t[1]?t=s.options.prot+":"+t:s.domain&&(t=s.domain+t):s.domain&&0!=t.indexOf("data:")&&!t.includes("://")&&(t=s.domain+"/"+t),t},this.isClose=function(){return">"==s.data[s.i]||"/"==s.data[s.i]&&">"==s.data[s.i+1]},this.section=function(){return s.data.substring(s.start,s.i)},this.parent=function(){return s.STACK[s.STACK.length-1]},this.siblings=function(){return s.STACK.length?s.parent().children:s.DOM}}var i=require("./config.js"),s=i.blankChar,e=require("./CssHandler.js"),a=wx.getSystemInfoSync().windowWidth;t.prototype.parse=function(){emoji&&(this.data=emoji.parseEmoji(this.data));for(var t;t=this.data[this.i];this.i++)this.state(t);for(this.state==this.Text&&this.setText();this.STACK.length;)this.popNode(this.STACK.pop());return this.DOM},t.prototype.setAttr=function(){var t=this.attrName.toLowerCase(),e=this.attrVal;for(i.boolAttrs[t]?this.attrs[t]="T":e&&("src"==t||"data-src"==t&&!this.attrs.src?this.attrs.src=this.getUrl(this.decode(e,"amp")):"href"==t||"style"==t?this.attrs[t]=this.decode(e,"amp"):"data-"!=t.substr(0,5)&&(this.attrs[t]=e)),this.attrVal="";s[this.data[this.i]];)this.i++;this.isClose()?this.setNode():(this.start=this.i,this.state=this.AttrName)},t.prototype.setText=function(){var t,e=this.section();if(e)if(e=i.onText&&i.onText(e,function(){return t=!0})||e,t){this.data=this.data.substr(0,this.start)+e+this.data.substr(this.i);var a=this.start+e.length;for(this.i=this.start;this.i7&&(l=7);var d=["xx-small","x-small","small","medium","large","x-large","xx-large"];o["font-size"]=d[l-1],h.size=void 0}break;case"embed":var u=t.attrs.src||"",c=t.attrs.type||"";if(c.includes("video")||u.includes(".mp4")||u.includes(".3gp")||u.includes(".m3u8"))t.name="video";else{if(!(c.includes("audio")||u.includes(".m4a")||u.includes(".wav")||u.includes(".mp3")||u.includes(".aac")))break;t.name="audio"}t.attrs.autostart&&(t.attrs.autoplay="T"),t.attrs.controls="T";/*fallsthrough*/case"video":case"audio":h.id?this[t.name+"Num"]++:h.id=t.name+ ++this[t.name+"Num"],"video"==t.name&&(this.videoNum>3&&(t.lazyLoad=1),h.width&&(o.width=parseFloat(h.width)+(h.width.includes("%")?"%":"px"),h.width=void 0),h.height&&(o.height=parseFloat(h.height)+(h.height.includes("%")?"%":"px"),h.height=void 0)),h.controls||h.autoplay||(h.controls="T"),h.source=[],h.src&&(h.source.push(h.src),h.src=void 0),this.bubble();break;case"td":case"th":if(h.colspan||h.rowspan)for(var f,p=this.STACK.length;f=this.STACK[--p];)if("table"==f.name){f.c=void 0;break}}h.align&&(o["text-align"]=h.align,h.align=void 0);var m=n.split(";");n="";for(var g=0,v=m.length;ga&&(o.height="",h.height&&(h.height=void 0))),o.height?(h.height=o.height,o.height=""):h.height&&!h.height.includes("%")&&(h.height+="px")}for(var T in o){var w=o[T];if(w){if((T.includes("flex")||"order"==T||"self-align"==T)&&(t.c=1),w.includes("url")){var A=w.indexOf("(");if(-1!=A++){for(;'"'==w[A]||"'"==w[A]||s[w[A]];)A++;w=w.substr(0,A)+this.getUrl(w.substr(A))}}else w.includes("rpx")?w=w.replace(/[0-9.]+\s*rpx/g,function(t){return parseFloat(t)*a/750+"px"}):"white-space"==T&&w.includes("pre")&&!e&&(this.pre=t.pre=!0);n+=";"+T+":"+w}}n=n.substr(1),n&&(h.style=n),e?i.filter&&0==i.filter(t,this)||this.siblings().push(t):(t.children=[],"pre"==t.name&&i.highlight&&(this.remove(t),this.pre=t.pre=!0),this.siblings().push(t),this.STACK.push(t))}"/"==this.data[this.i]&&this.i++,this.start=this.i+1,this.state=this.Text},t.prototype.remove=function(t){var e=this,a=t.name,r=this.i,h=function(){var i=e.data.substring(r,e.i+1);t.attrs.xmlns||(i=' xmlns="http://www.w3.org/2000/svg"'+i);for(var s=r;"<"!=e.data[r];)r--;i=e.data.substring(r,s).replace("viewbox","viewBox")+i;var a=e.parent();"100%"==t.attrs.width&&a&&(a.attrs.style||"").includes("inline")&&(a.attrs.style="width:300px;max-width:100%;"+a.attrs.style),e.siblings().push({name:"img",attrs:{src:"data:image/svg+xml;utf8,"+i.replace(/#/g,"%23"),style:(/vertical[^;]+/.exec(t.attrs.style)||[]).shift(),ignore:"T"}})};if("svg"==t.name&&"/"==this.data[r])return h(this.i++);for(;;){if(-1==(this.i=this.data.indexOf("",this.i))&&(this.i=this.data.length),void("svg"==a&&h()))}},t.prototype.popNode=function(t){if(t.pre){t.pre=this.pre=void 0;for(var s=this.STACK.length;s--;)this.STACK[s].pre&&(this.pre=!0)}var e=this.siblings(),a=e.length,r=t.children;if("head"==t.name||i.filter&&0==i.filter(t,this))return e.pop();var h=t.attrs;if(i.blockTags[t.name]?t.name="div":i.trustTags[t.name]||(t.name="span"),t.c&&("ul"==t.name||"ol"==t.name))if((t.attrs.style||"").includes("list-style:none"))for(var n,o=0;n=r[o++];)"li"==n.name&&(n.name="div");else if("ul"==t.name){for(var l=1,d=this.STACK.length;d--;)"ul"==this.STACK[d].name&&l++;if(1!=l)for(var u=r.length;u--;)r[u].floor=l}else for(var c,f=0,p=1;c=r[f++];)"li"==c.name&&(c.type="ol",c.num=function(t,i){if("a"==i)return String.fromCharCode(97+(t-1)%26);if("A"==i)return String.fromCharCode(65+(t-1)%26);if("i"==i||"I"==i){t=(t-1)%99+1;var s=["I","II","III","IV","V","VI","VII","VIII","IX"],e=["X","XX","XXX","XL","L","LX","LXX","LXXX","XC"],a=(e[Math.floor(t/10)-1]||"")+(s[t%10-1]||"");return"i"==i?a.toLowerCase():a}return t}(p++,h.type)+".");if("table"==t.name){var m=h.cellpadding,g=h.cellspacing,v=h.border;if(t.c&&(this.bubble(),h.style=(h.style||"")+";display:table",m||(m=2),g||(g=2)),v&&(h.style="border:"+v+"px solid gray;"+(h.style||"")),g&&(h.style="border-spacing:"+g+"px;"+(h.style||"")),(v||m||t.c)&&function i(s){for(var e,a=0;e=s[a];a++)if("text"!=e.type){var r=e.attrs.style||"";t.c&&"t"==e.name[0]&&(e.c=1,r+=";display:table-"+("th"==e.name||"td"==e.name?"cell":"tr"==e.name?"row":"row-group")),"th"==e.name||"td"==e.name?(v&&(r="border:"+v+"px solid gray;"+r),m&&(r="padding:"+m+"px;"+r)):i(e.children||[]),r&&(e.attrs.style=r)}}(r),this.options.autoscroll){var b=Object.assign({},t);t.name="div",t.attrs={style:"overflow:scroll"},t.children=[b]}}this.CssHandler.pop&&this.CssHandler.pop(t),"div"!=t.name||Object.keys(h).length||1!=r.length||"div"!=r[0].name||(e[a-1]=r[0])},t.prototype.Text=function(t){if("<"==t){var i=this.data[this.i+1],s=function(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"};s(i)?(this.setText(),this.start=this.i+1,this.state=this.TagName):"/"==i?(this.setText(),s(this.data[++this.i+1])?(this.start=this.i+1,this.state=this.EndTag):this.Comment()):"!"!=i&&"?"!=i||(this.setText(),this.Comment())}},t.prototype.Comment=function(){var t;t="--"==this.data.substring(this.i+2,this.i+4)?"--\x3e":"[CDATA["==this.data.substring(this.i+2,this.i+9)?"]]>":">",-1==(this.i=this.data.indexOf(t,this.i+2))?this.i=this.data.length:this.i+=t.length-1,this.start=this.i+1,this.state=this.Text},t.prototype.TagName=function(t){if(s[t]){for(this.tagName=this.section();s[this.data[this.i]];)this.i++;this.isClose()?this.setNode():(this.start=this.i,this.state=this.AttrName)}else this.isClose()&&(this.tagName=this.section(),this.setNode())},t.prototype.AttrName=function(t){if("="==t||s[t]||this.isClose()){if(this.attrName=this.section(),s[t])for(;s[this.data[++this.i]];);if("="==this.data[this.i]){for(;s[this.data[++this.i]];);this.start=this.i--,this.state=this.AttrValue}else this.setAttr()}},t.prototype.AttrValue=function(t){if('"'==t||"'"==t){if(this.start++,-1==(this.i=this.data.indexOf(t,this.i+1)))return this.i=this.data.length;this.attrVal=this.section(),this.i++}else{for(;!s[this.data[this.i]]&&!this.isClose();this.i++);this.attrVal=this.section()}this.setAttr()},t.prototype.EndTag=function(t){if(s[t]||">"==t||"/"==t){for(var i=this.section().toLowerCase(),e=this.STACK.length;e--&&this.STACK[e].name!=i;);if(-1!=e){for(var a;(a=this.STACK.pop()).name!=i;)this.popNode(a);this.popNode(a)}else"p"!=i&&"br"!=i||this.siblings().push({name:i,attrs:{}});this.i=this.data.indexOf(">",this.i),this.start=this.i+1,-1==this.i?this.i=this.data.length:this.state=this.Text}},module.exports=t \ No newline at end of file diff --git a/config.js b/config.js index 6345c6d..196856f 100644 --- a/config.js +++ b/config.js @@ -3,9 +3,11 @@ module.exports = { // apiHost: 'https://api.it120.cc',//api工厂的值 subDomain: "9kuai8coffee.asia", // 固定值 + version: "20.1.2", note: '标签机 会员价 ', + merchantId: 27, // 商户ID,可在后台工厂设置-->商户信息查看 customerServiceType: 'QW' // 客服类型,QW为企业微信,需要在后台系统参数配置企业ID和客服URL,否则为小程序的默认客服 } diff --git a/pages/asset/index.wxml b/pages/asset/index.wxml index aab852a..a087cc5 100644 --- a/pages/asset/index.wxml +++ b/pages/asset/index.wxml @@ -9,10 +9,10 @@ {{ $t.asset.send }}¥{{item.send}} - + + {{ $t.asset.other }} + + {{ $t.asset.confirmBtn }} diff --git a/pages/index/index.wxml b/pages/index/index.wxml index a337316..69aa99f 100644 --- a/pages/index/index.wxml +++ b/pages/index/index.wxml @@ -234,8 +234,8 @@ - + diff --git a/pages/pay/index.js b/pages/pay/index.js index 52b597d..97ceb2a 100644 --- a/pages/pay/index.js +++ b/pages/pay/index.js @@ -383,7 +383,7 @@ Page({ console.log("余额支付:",r) if(r.code==700){ //打印的数据 - console.log("print:" ,that.data,res.data) + console.log("print:" ,that.data.goodsList,that.data.shopInfo,res.data) //小票 that.print2(res.data) //标签 @@ -404,13 +404,12 @@ Page({ mobile: that.data.mobile,//用户电话 address: that.data.curAddressData.address,//配送地址 remark: that.data.remark, //用户备注 - peisongType: that.data.peisongType,//zq,kd + peisongType: that.data.peisongType,//配置方式zq,kd + isPrint: true //打印标志 } - //打印的数据 - console.log("print:" ,data) wxpay.wxpay('order', money, res.data.id, "/pages/all-orders/index",data) console.log("微信支付:") @@ -702,20 +701,17 @@ Page({ let content = '' for(let i=0;i# '+(i+1) +'/' + that.data.goodsList.length + ' 总金额:'+data.amountReal + ''+ ''+ that.data.goodsList[i].name +'' for(let j=0;j'+ that.data.goodsList[i].sku[j].optionValueName +'' } - content+= ''+'单价: ¥'+ that.data.goodsList[i].price + ''+ - ''+ data.orderNumber+ ''+ + content+= ''+'单价: ¥'+ that.data.goodsList[i].price +'X'+ that.data.goodsList[i].number+ ''+ ''+ timeStr + ''+ ''+ that.data.shopInfo.name + '' + '' } - } //请求参数 @@ -774,7 +770,7 @@ Page({ } //当前日期 时分秒 let timeStr = that.getDate() - let content = '9.8 COFFEE


' +'
' + data.goodsList[i].price + '元
' + let content = '9.8 COFFEE小票


' +'
' for(let i=0;i' + that.data.goodsList[i].number +'' @@ -783,6 +779,8 @@ Page({ content+= that.data.goodsList[i].sku[j].optionValueName + '|' } content+='' + + } content+='
' + that.data.goodsList[i].price + '元
' content+='合计:'+ data.amountReal+'元

' @@ -793,11 +791,8 @@ Page({ if(that.data.peisongType =='kd'){ content+= '用户地址: '+ that.data.curAddressData.address + '
' } - // if(that.data.peisongType=='zq'){ - // content+= ' 取单号: '+that.data.curAddressData.address + '
' - // } content+= '门店名称: ' + that.data.shopInfo.name +'
'+ - ' 备注: ' + that.data.remark +'
' + '备注: ' + that.data.remark +'
' content+= '
' diff --git a/project.private.config.json b/project.private.config.json index 60a6e52..1a7ab08 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -1,7 +1,7 @@ { "setting": { "compileHotReLoad": true, - "urlCheck": true + "urlCheck": false }, "condition": { "miniprogram": { @@ -307,7 +307,7 @@ ] } }, - "projectname": "bee-master2", + "projectname": "bee-master", "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", "libVersion": "3.4.10" } \ No newline at end of file diff --git a/utils/pay.js b/utils/pay.js index f0aaa70..593af46 100644 --- a/utils/pay.js +++ b/utils/pay.js @@ -101,6 +101,7 @@ function wxpay(type, money, orderId, redirectUrl, data) { }//未来店 else if (data.shopInfo.id==1){ sn = '32EL21088705948' + } //如果没有打印机,则返回 if(!sn){ @@ -111,7 +112,6 @@ function wxpay(type, money, orderId, redirectUrl, data) { let content = '' for(let i=0;i# '+(i+1) +'/' + data.goodsList.length + ' 总金额:'+data.data.amountReal + ''+ ''+ data.goodsList[i].name +'' @@ -119,11 +119,9 @@ for(let i=0;i'+ data.goodsList[i].sku[j].optionValueName +'' } content+= ''+'单价: ¥'+ data.goodsList[i].price +'X'+ data.goodsList[i].number+ ''+ - ''+ data.data.orderNumber+ ''+ ''+ timeStr + ''+ ''+ data.shopInfo.name + '' + '' -} } @@ -183,7 +181,7 @@ for(let i=0;i ' + let content = '9.8 COFFEE小票


' +' ' for(let i=0;i' + data.goodsList[i].number +'' @@ -204,14 +202,9 @@ for(let i=0;i' } - // if(data.peisongType=='zq'){ - // content+= ' 取单号: '+data.address + '
' - // } content+='门店名称: ' + data.shopInfo.name +'
' + - ' 备注: ' + data.remark +'
' + '备注: ' + data.remark +'
' content+= '' - - //请求参数 From 15a91dc9641175c224ef5bf91519b4cfe12876f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=95=E8=87=AA=E5=BC=BA?= <124497517@qq.com> Date: Sat, 22 Mar 2025 09:09:18 +0800 Subject: [PATCH 22/40] =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E5=88=B0util.js=E8=AE=A2=E5=8D=95=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E5=A4=B1=E8=B4=A5=E6=89=93=E5=8D=B0=E4=B9=9F=E5=81=9A?= =?UTF-8?q?=E4=BA=86=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/all-orders/index.js | 24 ++++- pages/pay/index.js | 55 +++++++----- utils/pay.js | 174 ++---------------------------------- utils/util.js | 180 +++++++++++++++++++++++++++++++++++++- 4 files changed, 238 insertions(+), 195 deletions(-) diff --git a/pages/all-orders/index.js b/pages/all-orders/index.js index c1e5495..19decbb 100644 --- a/pages/all-orders/index.js +++ b/pages/all-orders/index.js @@ -2,6 +2,7 @@ const wxpay = require('../../utils/pay.js') const WXAPI = require('apifm-wxapi') const AUTH = require('../../utils/auth') const APP = getApp() +var util = require('../../utils/util.js') APP.configLoadOK = () => { } @@ -89,14 +90,33 @@ Page({ }, _toPayTap: function (orderId, money){ const _this = this + // console.log(orderId) + // console.log(wx.getStorageSync(orderId)) + //未支付的现金订单,从本地缓存中获取订单信息 + let data = wx.getStorageSync(orderId +"O") + console.log(data) if (money <= 0) { // 直接使用余额支付 WXAPI.orderPay(wx.getStorageSync('token'), orderId).then(function (res) { + console.log("余额支付:",r) + if(r.code==700){ + //打印的数据 + if(data2 && data2.isPrint ===true){ + + //小票 + util.print2(data) + //标签 + util.print(data) + } + + } _this.onShow(); }) } else { - wxpay.wxpay('order', money, orderId, "/pages/all-orders/index"); - } + + wxpay.wxpay('order', money, orderId, "/pages/all-orders/index"); + + } }, onLoad: function(options) { getApp().initLanguage(this) diff --git a/pages/pay/index.js b/pages/pay/index.js index 97ceb2a..8ccb807 100644 --- a/pages/pay/index.js +++ b/pages/pay/index.js @@ -376,18 +376,33 @@ Page({ }); return } + //保存支付相关信息,以订单号key + var data = { + data: res.data, //订单信息 + goodsList:that.data.goodsList, //商品列表 + shopInfo: that.data.shopInfo, //商铺信息 + mobile: that.data.mobile,//用户电话 + address: that.data.curAddressData.address,//配送地址 + remark: that.data.remark, //用户备注 + peisongType: that.data.peisongType,//zq,kd + + isPrint: true //打印标志 + + } + wx.setStorageSync(data.data.id +"O",data) const money = res.data.amountReal * 1 - res1.data.balance*1 if (money <= 0) { // 使用余额支付 await WXAPI.orderPay(token, res.data.id).then(r=>{ - console.log("余额支付:",r) + console.log(r) + if(r.code==700){ //打印的数据 - console.log("print:" ,that.data.goodsList,that.data.shopInfo,res.data) + // console.log("print:" ,that.data,res.data) //小票 - that.print2(res.data) + util.print2(data) //标签 - that.print(res.data) + util.print(data) } @@ -397,20 +412,10 @@ Page({ url: "/pages/all-orders/index" }) } else { - var data = { - data: res.data, //订单信息 - goodsList:that.data.goodsList, //商品列表 - shopInfo: that.data.shopInfo, //商铺信息 - mobile: that.data.mobile,//用户电话 - address: that.data.curAddressData.address,//配送地址 - remark: that.data.remark, //用户备注 - peisongType: that.data.peisongType,//配置方式zq,kd - - - isPrint: true //打印标志 - - } - wxpay.wxpay('order', money, res.data.id, "/pages/all-orders/index",data) + + //打印的数据 + console.log("print:" ,data) + wxpay.wxpay('order', money, res.data.id, "/pages/all-orders/index") console.log("微信支付:") } @@ -701,17 +706,20 @@ Page({ let content = '' for(let i=0;i# '+(i+1) +'/' + that.data.goodsList.length + ' 总金额:'+data.amountReal + ''+ ''+ that.data.goodsList[i].name +'' for(let j=0;j'+ that.data.goodsList[i].sku[j].optionValueName +'' } - content+= ''+'单价: ¥'+ that.data.goodsList[i].price +'X'+ that.data.goodsList[i].number+ ''+ + content+= ''+'单价: ¥'+ that.data.goodsList[i].price + ''+ + ''+ data.orderNumber+ ''+ ''+ timeStr + ''+ ''+ that.data.shopInfo.name + '' + '' } + } //请求参数 @@ -770,7 +778,7 @@ Page({ } //当前日期 时分秒 let timeStr = that.getDate() - let content = '9.8 COFFEE小票


' +'
' + data.goodsList[i].price + '元
' + let content = '9.8 COFFEE


' +'
' for(let i=0;i' + that.data.goodsList[i].number +'' @@ -779,8 +787,6 @@ Page({ content+= that.data.goodsList[i].sku[j].optionValueName + '|' } content+='' - - } content+='
' + that.data.goodsList[i].price + '元
' content+='合计:'+ data.amountReal+'元

' @@ -791,8 +797,11 @@ Page({ if(that.data.peisongType =='kd'){ content+= '用户地址: '+ that.data.curAddressData.address + '
' } + // if(that.data.peisongType=='zq'){ + // content+= ' 取单号: '+that.data.curAddressData.address + '
' + // } content+= '门店名称: ' + that.data.shopInfo.name +'
'+ - '备注: ' + that.data.remark +'
' + ' 备注: ' + that.data.remark +'
' content+= '' diff --git a/utils/pay.js b/utils/pay.js index 593af46..803f99b 100644 --- a/utils/pay.js +++ b/utils/pay.js @@ -54,11 +54,13 @@ function wxpay(type, money, orderId, redirectUrl, data) { }, success: function () { //打印 - if(data && data.isPrint ===true){ + //未支付的现金订单,从本地缓存中获取订单信息 + let data2 = wx.getStorageSync(orderId +"O") + if(data2 && data2.isPrint ===true){ //打印标签 - print(data) + util.print(data2) //打印小票 - print2(data) + util.print2(data2) } // 提示支付成功 wx.showToast({ @@ -81,173 +83,7 @@ function wxpay(type, money, orderId, redirectUrl, data) { } }) } - //打印标签,参数为支付返回的data数据 - function print(data){ - //芯烨云打印接口 - let url = 'https://open.xpyun.net/api/openapi/xprinter/printLabel' - //开发者密钥 - let userKey = 'b2e9014204774a058bc7e8640e36e8ed' - //开发者id xu1271669848@gmail.com - let userId = 'xu1271669848@gmail.com' - let timstamp = Math.trunc(new Date().getTime()/1000) + "" - let sign = userId + userKey + timstamp - //打印机序列号,店铺id对应打印机序列号 - let sn = '' - //紫金店 - if(data.shopInfo.id==2){ - sn = '32817SCU1VAF54B' - - }//未来店 - else if (data.shopInfo.id==1){ - sn = '32EL21088705948' - - } - //如果没有打印机,则返回 - if(!sn){ - return - } - //当前日期 时分秒 - let timeStr = getDate() - let content = '' - -for(let i=0;i# '+(i+1) +'/' + data.goodsList.length + ' 总金额:'+data.data.amountReal + ''+ - ''+ data.goodsList[i].name +'' - for(let j=0;j'+ data.goodsList[i].sku[j].optionValueName +'' - } - content+= ''+'单价: ¥'+ data.goodsList[i].price +'X'+ data.goodsList[i].number+ ''+ - ''+ timeStr + ''+ - ''+ data.shopInfo.name + '' + '' - -} - - - //请求参数 - let param = { - user: userId, - timestamp: timstamp, - sign: util.sha1(sign), - sn: sn, - content: content - } - console.log(param) - - let header = { - "Content-Type": "application/json;charset=UTF-8" - } - - wx.request({ - url: url, - data: param, - method: "post", - header:header, - success: res=>{ - console.log("标签打印返回:",res) - } - - - }) -} - //打印小票,参数为支付返回的data数据 - function print2(data){ - - - //芯烨云打印接口 - let url = 'https://open.xpyun.net/api/openapi/xprinter/print' - //开发者密钥 - let userKey = 'b2e9014204774a058bc7e8640e36e8ed' - //开发者id xu1271669848@gmail.com - let userId = 'xu1271669848@gmail.com' - let timstamp = Math.trunc(new Date().getTime()/1000) + "" - let sign = userId + userKey + timstamp - //打印机序列号,店铺id对应打印机序列号 - let sn = '' - //紫金店 - if(data.shopInfo.id==2){ - sn = '74Y4LWMD9R9AF4B' - - } - //未来店 - else if (data.shopInfo.id==1){ - sn = '742N30GDRND8E4A' - - } - //如果没有打印机,则返回 - if(!sn){ - return - } - //当前日期 时分秒 - let timeStr = getDate() - let content = '9.8 COFFEE小票


' +' ' - - for(let i=0;i' + data.goodsList[i].number +'' - content+='|' - for(let j=0;j
' - - content+= '下单时间: '+ timeStr + '
'+ - '订单编号: '+ data.data.orderNumber + '
' + - '用户电话: '+ data.mobile + '
' - if(data.peisongType=='kd'){ - content+= '用户地址: '+data.address + '
' - } - content+='门店名称: ' + data.shopInfo.name +'
' + - '备注: ' + data.remark +'
' - content+= '
' - - - //请求参数 - let param = { - user: userId, - timestamp: timstamp, - sign: util.sha1(sign), - sn: sn, - content: content - } - console.log(param) - - let header = { - "Content-Type": "application/json;charset=UTF-8" - } - - wx.request({ - url: url, - data: param, - method: "post", - header:header, - success: res=>{ - console.log("小票打印返回:",res) - } - - - }) - } - //获取当前年月日时分秒,打印时间 -function getDate(){ - var now = new Date(); -var year = now.getFullYear(); // 年 -var month = now.getMonth() + 1; // 月 -var day = now.getDate(); // 日 -var hour = now.getHours(); // 时 -var minute = now.getMinutes(); // 分 -var second = now.getSeconds(); // 秒 - -// 格式化输出 -var timeString = year + "-" + (month < 10 ? "0" + month : month) + "-" + (day < 10 ? "0" + day : day) + " " + (hour < 10 ? "0" + hour : hour) + ":" + (minute < 10 ? "0" + minute : minute) + ":" + (second < 10 ? "0" + second : second); -return timeString - -} module.exports = { diff --git a/utils/util.js b/utils/util.js index 221fd80..15b0c02 100644 --- a/utils/util.js +++ b/utils/util.js @@ -65,7 +65,185 @@ function sha1(s) { return hex; }; + //打印标签,参数为支付返回的data数据 + function print(data){ + + // console.log("wx.getStorageSync") + // console.log(wx.getStorageSync(data.data.id +'')) + + //芯烨云打印接口 + let url = 'https://open.xpyun.net/api/openapi/xprinter/printLabel' + //开发者密钥 + let userKey = 'b2e9014204774a058bc7e8640e36e8ed' + //开发者id xu1271669848@gmail.com + let userId = 'xu1271669848@gmail.com' + let timstamp = Math.trunc(new Date().getTime()/1000) + "" + let sign = userId + userKey + timstamp + //打印机序列号,店铺id对应打印机序列号 + let sn = '' + //紫金店 + if(data.shopInfo.id==2){ + sn = '32817SCU1VAF54B' + + }//未来店 + else if (data.shopInfo.id==1){ + sn = '742N30GDRND8E4A' + + } + //如果没有打印机,则返回 + if(!sn){ + return + } + //当前日期 时分秒 + let timeStr = getDate() + let content = '' + +for(let i=0;i# '+(i+1) +'/' + data.goodsList.length + ' 总金额:'+data.data.amountReal + ''+ + ''+ data.goodsList[i].name +'' + for(let j=0;j'+ data.goodsList[i].sku[j].optionValueName +'' + } + content+= ''+'单价: ¥'+ data.goodsList[i].price +'X'+ data.goodsList[i].number+ ''+ + ''+ data.data.orderNumber+ ''+ + ''+ timeStr + ''+ + ''+ data.shopInfo.name + '' + '' + +} +} + + + //请求参数 + let param = { + user: userId, + timestamp: timstamp, + sign: sha1(sign), + sn: sn, + content: content + } + console.log(param) + +let header = { + "Content-Type": "application/json;charset=UTF-8" +} + + wx.request({ + url: url, + data: param, + method: "post", + header:header, + success: res=>{ + console.log("标签打印返回:",res) + } + + + }) +} + //打印小票,参数为支付返回的data数据 + function print2(data){ + + + //芯烨云打印接口 + let url = 'https://open.xpyun.net/api/openapi/xprinter/print' + //开发者密钥 + let userKey = 'b2e9014204774a058bc7e8640e36e8ed' + //开发者id xu1271669848@gmail.com + let userId = 'xu1271669848@gmail.com' + let timstamp = Math.trunc(new Date().getTime()/1000) + "" + let sign = userId + userKey + timstamp + //打印机序列号,店铺id对应打印机序列号 + let sn = '' + //紫金店 + if(data.shopInfo.id==2){ + sn = '74Y4LWMD9R9AF4B' + + } + //未来店 + else if (data.shopInfo.id==1){ + sn = '742N30GDRND8E4A' + + } + //如果没有打印机,则返回 + if(!sn){ + return + } + //当前日期 时分秒 + let timeStr = getDate() + let content = '9.8 COFFEE


' +'
' + data.goodsList[i].price + '元
' + + for(let i=0;i' + data.goodsList[i].number +'' + content+='|' + for(let j=0;j
' + + content+= '下单时间: '+ timeStr + '
'+ + '订单编号: '+ data.data.orderNumber + '
' + + '用户电话: '+ data.mobile + '
' + if(data.peisongType=='kd'){ + content+= '用户地址: '+data.address + '
' + } + + content+='门店名称: ' + data.shopInfo.name +'
' + + ' 备注: ' + data.remark +'
' + content+= '
' + + + + + //请求参数 + let param = { + user: userId, + timestamp: timstamp, + sign: sha1(sign), + sn: sn, + content: content + } + console.log(param) + + let header = { + "Content-Type": "application/json;charset=UTF-8" + } + + wx.request({ + url: url, + data: param, + method: "post", + header:header, + success: res=>{ + console.log("小票打印返回:",res) + } + + + }) + } + //获取当前年月日时分秒,打印时间 +function getDate(){ + var now = new Date(); +var year = now.getFullYear(); // 年 +var month = now.getMonth() + 1; // 月 +var day = now.getDate(); // 日 +var hour = now.getHours(); // 时 +var minute = now.getMinutes(); // 分 +var second = now.getSeconds(); // 秒 + +// 格式化输出 +var timeString = year + "-" + (month < 10 ? "0" + month : month) + "-" + (day < 10 ? "0" + day : day) + " " + (hour < 10 ? "0" + hour : hour) + ":" + (minute < 10 ? "0" + minute : minute) + ":" + (second < 10 ? "0" + second : second); +return timeString + +} module.exports = { formatTime: formatTime, - sha1:sha1 + sha1:sha1, + print, + print2 } \ No newline at end of file From ea67fae95a06720f444556bbf992305009e2ba6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=95=E8=87=AA=E5=BC=BA?= <124497517@qq.com> Date: Sat, 22 Mar 2025 09:09:46 +0800 Subject: [PATCH 23/40] =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E5=88=B0util.js=E8=AE=A2=E5=8D=95=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E5=A4=B1=E8=B4=A5=E6=89=93=E5=8D=B0=E4=B9=9F=E5=81=9A?= =?UTF-8?q?=E4=BA=86=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 8 ++++++++ .idea/bee2.iml | 9 +++++++++ .idea/misc.xml | 6 ++++++ .idea/modules.xml | 8 ++++++++ .idea/vcs.xml | 6 ++++++ 5 files changed, 37 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/bee2.iml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/bee2.iml b/.idea/bee2.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/bee2.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..639900d --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..c6084d0 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file From fdbdc641576a0699e4fff7be68acc482462e508d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=95=E8=87=AA=E5=BC=BA?= <124497517@qq.com> Date: Sat, 22 Mar 2025 09:53:02 +0800 Subject: [PATCH 24/40] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E6=89=93=E5=8D=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/all-orders/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pages/all-orders/index.js b/pages/all-orders/index.js index 19decbb..6bb01b1 100644 --- a/pages/all-orders/index.js +++ b/pages/all-orders/index.js @@ -93,7 +93,7 @@ Page({ // console.log(orderId) // console.log(wx.getStorageSync(orderId)) //未支付的现金订单,从本地缓存中获取订单信息 - let data = wx.getStorageSync(orderId +"O") + let data2 = wx.getStorageSync(orderId +"O") console.log(data) if (money <= 0) { // 直接使用余额支付 @@ -104,9 +104,9 @@ Page({ if(data2 && data2.isPrint ===true){ //小票 - util.print2(data) + util.print2(data2) //标签 - util.print(data) + util.print(data2) } } From 387b281f8ec6bc2a7e2bcb18bd076fbda962436d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=95=E8=87=AA=E5=BC=BA?= <124497517@qq.com> Date: Mon, 24 Mar 2025 18:15:41 +0800 Subject: [PATCH 25/40] =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=9C=80=E7=BB=88?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=97=A0=E8=AF=AF=EF=BC=88=E6=9C=AA=E6=9D=A5?= =?UTF-8?q?=E7=A4=BE=E5=8C=BA=EF=BC=8C=E7=8E=B0=E9=87=91=E3=80=81=E4=BD=99?= =?UTF-8?q?=E9=A2=9D=E3=80=81=E9=87=8D=E6=96=B0=E6=94=AF=E4=BB=98=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/all-orders/index.js | 8 +- pages/pay/index.js | 106 +++++++------ utils/pay.js | 308 ++++++++++++++++++++------------------ utils/util.js | 179 +--------------------- 4 files changed, 228 insertions(+), 373 deletions(-) diff --git a/pages/all-orders/index.js b/pages/all-orders/index.js index 6bb01b1..547f3f5 100644 --- a/pages/all-orders/index.js +++ b/pages/all-orders/index.js @@ -93,7 +93,7 @@ Page({ // console.log(orderId) // console.log(wx.getStorageSync(orderId)) //未支付的现金订单,从本地缓存中获取订单信息 - let data2 = wx.getStorageSync(orderId +"O") + let data = wx.getStorageSync(orderId +"O") console.log(data) if (money <= 0) { // 直接使用余额支付 @@ -101,12 +101,12 @@ Page({ console.log("余额支付:",r) if(r.code==700){ //打印的数据 - if(data2 && data2.isPrint ===true){ + if(data && data.isPrint ===true){ //小票 - util.print2(data2) + util.print2(data) //标签 - util.print(data2) + util.print(data) } } diff --git a/pages/pay/index.js b/pages/pay/index.js index 7738521..c24c6a9 100644 --- a/pages/pay/index.js +++ b/pages/pay/index.js @@ -31,6 +31,7 @@ Page({ peisongType: '', // 配送方式 kd,zq 分别表示快递/到店自取【默认值到onshow修改,这里修改无效】 submitLoding: false, remark: '', + dataP: '',//打印信息保存 currentDate: new Date().getHours() + ':' + (new Date().getMinutes() % 10 === 0 ? new Date().getMinutes() : Math.ceil(new Date().getMinutes() / 10) * 10), minHour: new Date().getHours(), @@ -356,6 +357,27 @@ Page({ }, async processAfterCreateOrder(res) { var that = this + //保存支付相关信息,以订单号key + that.data.dataP = { + data: res.data, //订单信息 + goodsList:that.data.goodsList, //商品列表 + shopInfo: that.data.shopInfo, //商铺信息 + mobile: that.data.mobile,//用户电话 + address: that.data.curAddressData.address,//配送地址 + remark: that.data.remark, //用户备注 + peisongType: that.data.peisongType,//zq,kd + + isPrint: true //打印标志 + + } + // + console.log("缓存前的打印数据",that.data.dataP) + //存储打印数据 + wx.setStorage({ + key: that.data.dataP.data.id +"O", + data: that.data.dataP + + }) const token = wx.getStorageSync('token') if (res.data.status != 0) { // 待支付状态才需要支付 @@ -376,20 +398,8 @@ Page({ }); return } - //保存支付相关信息,以订单号key - var data = { - data: res.data, //订单信息 - goodsList:that.data.goodsList, //商品列表 - shopInfo: that.data.shopInfo, //商铺信息 - mobile: that.data.mobile,//用户电话 - address: that.data.curAddressData.address,//配送地址 - remark: that.data.remark, //用户备注 - peisongType: that.data.peisongType,//配置方式zq,kd - - isPrint: true //打印标志 - - } - wx.setStorageSync(data.data.id +"O",data) + + const money = res.data.amountReal * 1 - res1.data.balance*1 if (money <= 0) { // 使用余额支付 @@ -398,13 +408,19 @@ Page({ if(r.code==700){ //打印的数据 - // console.log("print:" ,that.data,res.data) - //小票 - util.print2(data) + console.log("print:" ,that.data.dataP) + //标签 - util.print(data) + that.print(that.data.dataP) + //小票 + that.print2(that.data.dataP) } + // wx.getStorage({ + // key: that.data.dataP.data.id +"O", // 缓存中的 key + // success(data2) { + // console.log("缓存中的打印数据:",data2) + // }}) }) // 跳到订单列表 @@ -413,8 +429,7 @@ Page({ }) } else { - //打印的数据 - console.log("print:" ,data) + wxpay.wxpay('order', money, res.data.id, "/pages/all-orders/index") console.log("微信支付:") @@ -689,11 +704,11 @@ Page({ //打印机序列号,店铺id对应打印机序列号 let sn = '' //紫金店 - if(that.data.shopInfo.id==2){ + if(data.shopInfo.id==2){ sn = '32817SCU1VAF54B' }//未来店 - else if (that.data.shopInfo.id==1){ + else if (data.shopInfo.id==1){ sn = '32EL21088705948' } @@ -705,18 +720,18 @@ Page({ let timeStr = that.getDate() let content = '' - for(let i=0;i# '+(i+1) +'/' + that.data.goodsList.length + ' 总金额:'+data.amountReal + ''+ - ''+ that.data.goodsList[i].name +'' - for(let j=0;j'+ that.data.goodsList[i].sku[j].optionValueName +'' + '# '+(i+1) +'/' + data.goodsList.length + ' 总金额:'+data.data.amountReal + ''+ + ''+ data.goodsList[i].name +'' + for(let j=0;j'+ data.goodsList[i].sku[j].optionValueName +'' } - content+= ''+'单价: ¥'+ that.data.goodsList[i].price + ''+ - ''+ data.orderNumber+ ''+ + content+= ''+'单价: ¥'+data.goodsList[i].price + ''+ + ''+ data.data.orderNumber+ ''+ ''+ timeStr + ''+ - ''+ that.data.shopInfo.name + '' + '' + ''+ data.shopInfo.name + '' + '' } } @@ -763,12 +778,12 @@ Page({ //打印机序列号,店铺id对应打印机序列号 let sn = '' //紫金店 - if(that.data.shopInfo.id==2){ + if(data.shopInfo.id==2){ sn = '74Y4LWMD9R9AF4B' } //未来店 - else if (that.data.shopInfo.id==1){ + else if (data.shopInfo.id==1){ sn = '742N30GDRND8E4A' } @@ -780,25 +795,28 @@ Page({ let timeStr = that.getDate() let content = '9.8 COFFEE


' +'
' + data.goodsList[i].price + '元
' - for(let i=0;i' + that.data.goodsList[i].number +'' + for(let i=0;i' + data.goodsList[i].number +'' content+='|' - for(let j=0;j
' + content+='合计:'+ data.data.amountReal+'元

' content+= '下单时间: '+ timeStr + '
'+ - '订单编号: '+ data.orderNumber + '
' + - '用户电话: '+ that.data.mobile + '
' - if(that.data.peisongType =='kd'){ - content+= '用户地址: '+ that.data.curAddressData.address + '
' + '订单编号: '+ data.data.orderNumber + '
' + + '用户电话: '+ data.mobile + '
' + if(data.peisongType =='kd'){ + content+= '用户地址: '+ data.curAddressData.address + '
' } - content+= '门店名称: ' + that.data.shopInfo.name +'
'+ - '备注: ' + that.data.remark +'
' + // if(that.data.peisongType=='zq'){ + // content+= ' 取单号: '+that.data.curAddressData.address + '
' + // } + content+= '门店名称: ' + data.shopInfo.name +'
'+ + '备注: ' + data.remark +'
' content+= '
' diff --git a/utils/pay.js b/utils/pay.js index 3aa202e..7daf1da 100644 --- a/utils/pay.js +++ b/utils/pay.js @@ -54,12 +54,25 @@ function wxpay(type, money, orderId, redirectUrl, data) { }, success: function () { //打印 - if(data && data.isPrint ===true){ + //未支付的现金订单,从本地缓存中获取订单信息 + wx.getStorage({ + key: orderId +"O", // 缓存中的 key + success(res) { + + + console.log("缓存中的打印数据:",res.data) + + if(res.data && res.data.isPrint ==true){ //打印标签 - print(data) + print(res.data) //打印小票 - print2(data) + print2(res.data) } + }, + fail(err) { + console.error(err) // 获取失败时的错误信息 + }}) + // 提示支付成功 wx.showToast({ title: $t.asset.success @@ -81,165 +94,165 @@ function wxpay(type, money, orderId, redirectUrl, data) { } }) } - //打印标签,参数为支付返回的data数据 - function print(data){ - //芯烨云打印接口 - let url = 'https://open.xpyun.net/api/openapi/xprinter/printLabel' - //开发者密钥 - let userKey = 'b2e9014204774a058bc7e8640e36e8ed' - //开发者id xu1271669848@gmail.com - let userId = 'xu1271669848@gmail.com' - let timstamp = Math.trunc(new Date().getTime()/1000) + "" - let sign = userId + userKey + timstamp - //打印机序列号,店铺id对应打印机序列号 - let sn = '' - //紫金店 - if(data.shopInfo.id==2){ - sn = '32817SCU1VAF54B' + //打印标签,参数为支付返回的data数据 + function print(data){ + + //芯烨云打印接口 + let url = 'https://open.xpyun.net/api/openapi/xprinter/printLabel' + //开发者密钥 + let userKey = 'b2e9014204774a058bc7e8640e36e8ed' + //开发者id xu1271669848@gmail.com + let userId = 'xu1271669848@gmail.com' + let timstamp = Math.trunc(new Date().getTime()/1000) + "" + let sign = userId + userKey + timstamp + //打印机序列号,店铺id对应打印机序列号 + let sn = '' + //紫金店 + if(data.shopInfo.id==2){ + sn = '32817SCU1VAF54B' - }//未来店 - else if (data.shopInfo.id==1){ - sn = '32EL21088705948' + }//未来店 + else if (data.shopInfo.id==1){ + sn = '32EL21088705948' + + } + //如果没有打印机,则返回 + if(!sn){ + return + } + //当前日期 时分秒 + let timeStr = getDate() + let content = '' + + for(let i=0;i# '+(i+1) +'/' + data.goodsList.length + ' 总金额:'+data.data.amountReal + ''+ + ''+ data.goodsList[i].name +'' + for(let j=0;j'+ data.goodsList[i].sku[j].optionValueName +'' + } + content+= ''+'单价: ¥'+data.goodsList[i].price + ''+ + ''+ data.data.orderNumber+ ''+ + ''+ timeStr + ''+ + ''+ data.shopInfo.name + '' + '' } - //如果没有打印机,则返回 - if(!sn){ - return - } - //当前日期 时分秒 - let timeStr = getDate() - let content = '' - -for(let i=0;i# '+(i+1) +'/' + data.goodsList.length + ' 总金额:'+data.data.amountReal + ''+ - ''+ data.goodsList[i].name +'' - for(let j=0;j'+ data.goodsList[i].sku[j].optionValueName +'' } - content+= ''+'单价: ¥'+ data.goodsList[i].price +'X'+ data.goodsList[i].number+ ''+ - ''+ data.data.orderNumber+ ''+ - ''+ timeStr + ''+ - ''+ data.shopInfo.name + '' + '' - -} -} - - - //请求参数 - let param = { - user: userId, - timestamp: timstamp, - sign: util.sha1(sign), - sn: sn, - content: content - } - console.log(param) - let header = { - "Content-Type": "application/json;charset=UTF-8" - } - wx.request({ - url: url, - data: param, - method: "post", - header:header, - success: res=>{ - console.log("标签打印返回:",res) + //请求参数 + let param = { + user: userId, + timestamp: timstamp, + sign: util.sha1(sign), + sn: sn, + content: content + } + console.log(param) + + let header = { + "Content-Type": "application/json;charset=UTF-8" } - + + wx.request({ + url: url, + data: param, + method: "post", + header:header, + success: res=>{ + console.log("标签打印返回:",res) + } + + + }) + } + //打印小票,参数为支付返回的data数据 + function print2(data){ + - }) -} - //打印小票,参数为支付返回的data数据 - function print2(data){ - - - //芯烨云打印接口 - let url = 'https://open.xpyun.net/api/openapi/xprinter/print' - //开发者密钥 - let userKey = 'b2e9014204774a058bc7e8640e36e8ed' - //开发者id xu1271669848@gmail.com - let userId = 'xu1271669848@gmail.com' - let timstamp = Math.trunc(new Date().getTime()/1000) + "" - let sign = userId + userKey + timstamp - //打印机序列号,店铺id对应打印机序列号 - let sn = '' - //紫金店 - if(data.shopInfo.id==2){ - sn = '74Y4LWMD9R9AF4B' + //芯烨云打印接口 + let url = 'https://open.xpyun.net/api/openapi/xprinter/print' + //开发者密钥 + let userKey = 'b2e9014204774a058bc7e8640e36e8ed' + //开发者id xu1271669848@gmail.com + let userId = 'xu1271669848@gmail.com' + let timstamp = Math.trunc(new Date().getTime()/1000) + "" + let sign = userId + userKey + timstamp + //打印机序列号,店铺id对应打印机序列号 + let sn = '' + //紫金店 + if(data.shopInfo.id==2){ + sn = '74Y4LWMD9R9AF4B' + + } + //未来店 + else if (data.shopInfo.id==1){ + sn = '742N30GDRND8E4A' + } + //如果没有打印机,则返回 + if(!sn){ + return + } + //当前日期 时分秒 + let timeStr = getDate() + let content = '9.8 COFFEE


' +'
' + that.data.goodsList[i].price + '元
' + data.goodsList[i].price + '元
' + + for(let i=0;i' + data.goodsList[i].number +'' + content+='|' + for(let j=0;j
' - } - //如果没有打印机,则返回 - if(!sn){ - return + content+= '下单时间: '+ timeStr + '
'+ + '订单编号: '+ data.data.orderNumber + '
' + + '用户电话: '+ data.mobile + '
' + if(data.peisongType =='kd'){ + content+= '用户地址: '+ data.curAddressData.address + '
' } - //当前日期 时分秒 - let timeStr = getDate() - let content = '9.8 COFFEE


' +'
' + data.goodsList[i].price + '元
' - - for(let i=0;i' + data.goodsList[i].number +'' - content+='|' - for(let j=0;j
' - - content+= '下单时间: '+ timeStr + '
'+ - '订单编号: '+ data.data.orderNumber + '
' + - '用户电话: '+ data.mobile + '
' - if(data.peisongType=='kd'){ - content+= '用户地址: '+data.address + '
' - } - content+='门店名称: ' + data.shopInfo.name +'
' + - '备注: ' + data.remark +'
' - content+= '
' - - - - - //请求参数 - let param = { - user: userId, - timestamp: timstamp, - sign: util.sha1(sign), - sn: sn, - content: content - } - console.log(param) + // if(that.data.peisongType=='zq'){ + // content+= ' 取单号: '+that.data.curAddressData.address + '
' + // } + content+= '门店名称: ' + data.shopInfo.name +'
'+ + '备注: ' + data.remark +'
' + content+= '' - let header = { - "Content-Type": "application/json;charset=UTF-8" - } - - wx.request({ - url: url, - data: param, - method: "post", - header:header, - success: res=>{ - console.log("小票打印返回:",res) + + //请求参数 + let param = { + user: userId, + timestamp: timstamp, + sign: util.sha1(sign), + sn: sn, + content: content + } + console.log(param) + + let header = { + "Content-Type": "application/json;charset=UTF-8" } - - - }) - } - //获取当前年月日时分秒,打印时间 -function getDate(){ + + wx.request({ + url: url, + data: param, + method: "post", + header:header, + success: res=>{ + console.log("小票打印返回:",res) + } + + + }) + } + //获取当前年月日时分秒,打印时间 + function getDate(){ var now = new Date(); var year = now.getFullYear(); // 年 var month = now.getMonth() + 1; // 月 @@ -255,6 +268,7 @@ return timeString } + module.exports = { wxpay: wxpay } \ No newline at end of file diff --git a/utils/util.js b/utils/util.js index 15b0c02..c32cf4a 100644 --- a/utils/util.js +++ b/utils/util.js @@ -65,185 +65,8 @@ function sha1(s) { return hex; }; - //打印标签,参数为支付返回的data数据 - function print(data){ - // console.log("wx.getStorageSync") - // console.log(wx.getStorageSync(data.data.id +'')) - - //芯烨云打印接口 - let url = 'https://open.xpyun.net/api/openapi/xprinter/printLabel' - //开发者密钥 - let userKey = 'b2e9014204774a058bc7e8640e36e8ed' - //开发者id xu1271669848@gmail.com - let userId = 'xu1271669848@gmail.com' - let timstamp = Math.trunc(new Date().getTime()/1000) + "" - let sign = userId + userKey + timstamp - //打印机序列号,店铺id对应打印机序列号 - let sn = '' - //紫金店 - if(data.shopInfo.id==2){ - sn = '32817SCU1VAF54B' - - }//未来店 - else if (data.shopInfo.id==1){ - sn = '742N30GDRND8E4A' - - } - //如果没有打印机,则返回 - if(!sn){ - return - } - //当前日期 时分秒 - let timeStr = getDate() - let content = '' - -for(let i=0;i# '+(i+1) +'/' + data.goodsList.length + ' 总金额:'+data.data.amountReal + ''+ - ''+ data.goodsList[i].name +'' - for(let j=0;j'+ data.goodsList[i].sku[j].optionValueName +'' - } - content+= ''+'单价: ¥'+ data.goodsList[i].price +'X'+ data.goodsList[i].number+ ''+ - ''+ data.data.orderNumber+ ''+ - ''+ timeStr + ''+ - ''+ data.shopInfo.name + '' + '' - -} -} - - - //请求参数 - let param = { - user: userId, - timestamp: timstamp, - sign: sha1(sign), - sn: sn, - content: content - } - console.log(param) - -let header = { - "Content-Type": "application/json;charset=UTF-8" -} - - wx.request({ - url: url, - data: param, - method: "post", - header:header, - success: res=>{ - console.log("标签打印返回:",res) - } - - - }) -} - //打印小票,参数为支付返回的data数据 - function print2(data){ - - - //芯烨云打印接口 - let url = 'https://open.xpyun.net/api/openapi/xprinter/print' - //开发者密钥 - let userKey = 'b2e9014204774a058bc7e8640e36e8ed' - //开发者id xu1271669848@gmail.com - let userId = 'xu1271669848@gmail.com' - let timstamp = Math.trunc(new Date().getTime()/1000) + "" - let sign = userId + userKey + timstamp - //打印机序列号,店铺id对应打印机序列号 - let sn = '' - //紫金店 - if(data.shopInfo.id==2){ - sn = '74Y4LWMD9R9AF4B' - - } - //未来店 - else if (data.shopInfo.id==1){ - sn = '742N30GDRND8E4A' - - } - //如果没有打印机,则返回 - if(!sn){ - return - } - //当前日期 时分秒 - let timeStr = getDate() - let content = '9.8 COFFEE


' +'
' + data.goodsList[i].price + '元
' - - for(let i=0;i' + data.goodsList[i].number +'' - content+='|' - for(let j=0;j
' - - content+= '下单时间: '+ timeStr + '
'+ - '订单编号: '+ data.data.orderNumber + '
' + - '用户电话: '+ data.mobile + '
' - if(data.peisongType=='kd'){ - content+= '用户地址: '+data.address + '
' - } - - content+='门店名称: ' + data.shopInfo.name +'
' + - ' 备注: ' + data.remark +'
' - content+= '
' - - - - - //请求参数 - let param = { - user: userId, - timestamp: timstamp, - sign: sha1(sign), - sn: sn, - content: content - } - console.log(param) - - let header = { - "Content-Type": "application/json;charset=UTF-8" - } - - wx.request({ - url: url, - data: param, - method: "post", - header:header, - success: res=>{ - console.log("小票打印返回:",res) - } - - - }) - } - //获取当前年月日时分秒,打印时间 -function getDate(){ - var now = new Date(); -var year = now.getFullYear(); // 年 -var month = now.getMonth() + 1; // 月 -var day = now.getDate(); // 日 -var hour = now.getHours(); // 时 -var minute = now.getMinutes(); // 分 -var second = now.getSeconds(); // 秒 - -// 格式化输出 -var timeString = year + "-" + (month < 10 ? "0" + month : month) + "-" + (day < 10 ? "0" + day : day) + " " + (hour < 10 ? "0" + hour : hour) + ":" + (minute < 10 ? "0" + minute : minute) + ":" + (second < 10 ? "0" + second : second); -return timeString - -} module.exports = { formatTime: formatTime, - sha1:sha1, - print, - print2 + sha1:sha1 } \ No newline at end of file From 7590a588cfa3bcb006ef17ee818999f253a08167 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=95=E8=87=AA=E5=BC=BA?= <124497517@qq.com> Date: Tue, 25 Mar 2025 09:06:40 +0800 Subject: [PATCH 26/40] =?UTF-8?q?=E4=B8=89=E7=A7=8D=E6=89=93=E5=8D=B0?= =?UTF-8?q?=EF=BC=8C=E6=9C=89=E7=9A=84=E6=89=8B=E6=9C=BA=E6=B2=A1=E6=B3=95?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E9=97=AE=E9=A2=98=EF=BC=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/all-orders/index.js | 203 ++++++++++++++++++++++++++++++++++++-- pages/pay/index.js | 26 +++-- utils/pay.js | 21 +--- 3 files changed, 212 insertions(+), 38 deletions(-) diff --git a/pages/all-orders/index.js b/pages/all-orders/index.js index 547f3f5..571e6fd 100644 --- a/pages/all-orders/index.js +++ b/pages/all-orders/index.js @@ -8,7 +8,8 @@ APP.configLoadOK = () => { } Page({ data: { - apiOk: false + apiOk: false, + dataP:'' }, cancelOrderTap: function(e) { const that = this; @@ -93,28 +94,43 @@ Page({ // console.log(orderId) // console.log(wx.getStorageSync(orderId)) //未支付的现金订单,从本地缓存中获取订单信息 - let data = wx.getStorageSync(orderId +"O") - console.log(data) + _this.data.dataP = '' + try{ + _this.data.dataP = wx.getStorageSync(orderId +"O") + console.log("缓存中取出的打印数据:", _this.data.dataP) + } + catch(e){ + console.log("缓存中取出的打印数据报错:",e) + } + if (money <= 0) { // 直接使用余额支付 WXAPI.orderPay(wx.getStorageSync('token'), orderId).then(function (res) { console.log("余额支付:",r) - if(r.code==700){ + if(r.code==700 &&_this.data.dataP){ //打印的数据 - if(data && data.isPrint ===true){ + if(_this.data.dataP && _this.data.dataP ===true){ //小票 - util.print2(data) + that.print2(_this.data.dataP) //标签 - util.print(data) + that.print(_this.data.dataP) } } _this.onShow(); }) } else { - + //缓存中有打印信息 + if(_this.data.dataP){ + wxpay.wxpay('order', money, orderId, "/pages/all-orders/index",_this.data.dataP); + + }//缓存中无打印信息 + else{ wxpay.wxpay('order', money, orderId, "/pages/all-orders/index"); + } + + } }, @@ -221,4 +237,175 @@ Page({ phoneNumber: res.data.info.linkPhone, }) }, + //打印标签,参数为支付返回的data数据 + print(data){ + var that = this + //芯烨云打印接口 + let url = 'https://open.xpyun.net/api/openapi/xprinter/printLabel' + //开发者密钥 + let userKey = 'b2e9014204774a058bc7e8640e36e8ed' + //开发者id xu1271669848@gmail.com + let userId = 'xu1271669848@gmail.com' + let timstamp = Math.trunc(new Date().getTime()/1000) + "" + let sign = userId + userKey + timstamp + //打印机序列号,店铺id对应打印机序列号 + let sn = '' + //紫金店 + if(data.shopInfo.id==2){ + sn = '32817SCU1VAF54B' + + }//未来店 + else if (data.shopInfo.id==1){ + sn = '32EL21088705948' + + } + //如果没有打印机,则返回 + if(!sn){ + return + } + //当前日期 时分秒 + let timeStr = that.getDate() + let content = '' + + for(let i=0;i# '+(i+1) +'/' + data.goodsList.length + ' 总金额:'+data.data.amountReal + ''+ + ''+ data.goodsList[i].name +'' + for(let j=0;j'+ data.goodsList[i].sku[j].optionValueName +'' + } + content+= ''+'单价: ¥'+data.goodsList[i].price + ''+ + ''+ data.data.orderNumber+ ''+ + ''+ timeStr + ''+ + ''+ data.shopInfo.name + '' + '' + + } + } + + + //请求参数 + let param = { + user: userId, + timestamp: timstamp, + sign: util.sha1(sign), + sn: sn, + content: content + } + console.log(param) + + let header = { + "Content-Type": "application/json;charset=UTF-8" + } + + wx.request({ + url: url, + data: param, + method: "post", + header:header, + success: res=>{ + console.log("标签打印返回:",res) + } + + + }) + }, + //打印小票,参数为支付返回的data数据 + print2(data){ + var that = this + + //芯烨云打印接口 + let url = 'https://open.xpyun.net/api/openapi/xprinter/print' + //开发者密钥 + let userKey = 'b2e9014204774a058bc7e8640e36e8ed' + //开发者id xu1271669848@gmail.com + let userId = 'xu1271669848@gmail.com' + let timstamp = Math.trunc(new Date().getTime()/1000) + "" + let sign = userId + userKey + timstamp + //打印机序列号,店铺id对应打印机序列号 + let sn = '' + //紫金店 + if(data.shopInfo.id==2){ + sn = '74Y4LWMD9R9AF4B' + + } + //未来店 + else if (data.shopInfo.id==1){ + sn = '742N30GDRND8E4A' + + } + //如果没有打印机,则返回 + if(!sn){ + return + } + //当前日期 时分秒 + let timeStr = that.getDate() + let content = '9.8 COFFEE


' +'
' + data.goodsList[i].price + '元
' + + for(let i=0;i' + data.goodsList[i].number +'' + content+='|' + for(let j=0;j
' + + content+= '下单时间: '+ timeStr + '
'+ + '订单编号: '+ data.data.orderNumber + '
' + + '用户电话: '+ data.mobile + '
' + if(data.peisongType =='kd'){ + content+= '用户地址: '+ data.curAddressData.address + '
' + } + // if(that.data.peisongType=='zq'){ + // content+= ' 取单号: '+that.data.curAddressData.address + '
' + // } + content+= '门店名称: ' + data.shopInfo.name +'
'+ + '备注: ' + data.remark +'
' + content+= '
' + + + //请求参数 + let param = { + user: userId, + timestamp: timstamp, + sign: util.sha1(sign), + sn: sn, + content: content + } + console.log(param) + + let header = { + "Content-Type": "application/json;charset=UTF-8" + } + + wx.request({ + url: url, + data: param, + method: "post", + header:header, + success: res=>{ + console.log("小票打印返回:",res) + } + + + }) + }, + //获取当前年月日时分秒,打印时间 +getDate(){ + var now = new Date(); +var year = now.getFullYear(); // 年 +var month = now.getMonth() + 1; // 月 +var day = now.getDate(); // 日 +var hour = now.getHours(); // 时 +var minute = now.getMinutes(); // 分 +var second = now.getSeconds(); // 秒 + +// 格式化输出 +var timeString = year + "-" + (month < 10 ? "0" + month : month) + "-" + (day < 10 ? "0" + day : day) + " " + (hour < 10 ? "0" + hour : hour) + ":" + (minute < 10 ? "0" + minute : minute) + ":" + (second < 10 ? "0" + second : second); +return timeString + +} }) \ No newline at end of file diff --git a/pages/pay/index.js b/pages/pay/index.js index c24c6a9..46dc657 100644 --- a/pages/pay/index.js +++ b/pages/pay/index.js @@ -372,12 +372,17 @@ Page({ } // console.log("缓存前的打印数据",that.data.dataP) - //存储打印数据 + try{ + //存储打印数据 wx.setStorage({ key: that.data.dataP.data.id +"O", data: that.data.dataP - }) + } + catch(e){ + console.log("存储打印数据报错:",e) + } + const token = wx.getStorageSync('token') if (res.data.status != 0) { // 待支付状态才需要支付 @@ -407,20 +412,13 @@ Page({ console.log(r) if(r.code==700){ - //打印的数据 - console.log("print:" ,that.data.dataP) - + //标签 that.print(that.data.dataP) //小票 that.print2(that.data.dataP) - } - // wx.getStorage({ - // key: that.data.dataP.data.id +"O", // 缓存中的 key - // success(data2) { - // console.log("缓存中的打印数据:",data2) - // }}) + } }) // 跳到订单列表 @@ -429,9 +427,9 @@ Page({ }) } else { - - wxpay.wxpay('order', money, res.data.id, "/pages/all-orders/index") - console.log("微信支付:") + console.log("微信支付:") + wxpay.wxpay('order', money, res.data.id, "/pages/all-orders/index",that.data.dataP) + } }, diff --git a/utils/pay.js b/utils/pay.js index 7daf1da..4dc90f5 100644 --- a/utils/pay.js +++ b/utils/pay.js @@ -53,25 +53,14 @@ function wxpay(type, money, orderId, redirectUrl, data) { } }, success: function () { - //打印 - //未支付的现金订单,从本地缓存中获取订单信息 - wx.getStorage({ - key: orderId +"O", // 缓存中的 key - success(res) { - - - console.log("缓存中的打印数据:",res.data) - - if(res.data && res.data.isPrint ==true){ + //打印 + if(data &&data.isPrint ==true){ //打印标签 - print(res.data) + print(data) //打印小票 - print2(res.data) + print2(data) } - }, - fail(err) { - console.error(err) // 获取失败时的错误信息 - }}) + // 提示支付成功 wx.showToast({ From 2c24b6871ac5239494310119a4b1a36d9271ae26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=95=E8=87=AA=E5=BC=BA?= <124497517@qq.com> Date: Tue, 25 Mar 2025 12:17:54 +0800 Subject: [PATCH 27/40] =?UTF-8?q?=E4=B8=89=E7=A7=8D=E6=89=93=E5=8D=B0?= =?UTF-8?q?=EF=BC=8C=E6=9C=89=E7=9A=84=E6=89=8B=E6=9C=BA=E6=B2=A1=E6=B3=95?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E9=97=AE=E9=A2=98=EF=BC=81=E5=9C=B0=E5=9D=80?= =?UTF-8?q?=E5=88=A4=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/all-orders/index.js | 2 +- pages/pay/index.js | 12 ++++++++++-- utils/pay.js | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/pages/all-orders/index.js b/pages/all-orders/index.js index 571e6fd..1dbf109 100644 --- a/pages/all-orders/index.js +++ b/pages/all-orders/index.js @@ -357,7 +357,7 @@ Page({ '订单编号: '+ data.data.orderNumber + '
' + '用户电话: '+ data.mobile + '
' if(data.peisongType =='kd'){ - content+= '用户地址: '+ data.curAddressData.address + '
' + content+= '用户地址: '+ data.address + '
' } // if(that.data.peisongType=='zq'){ // content+= ' 取单号: '+that.data.curAddressData.address + '
' diff --git a/pages/pay/index.js b/pages/pay/index.js index 46dc657..9cd4fa9 100644 --- a/pages/pay/index.js +++ b/pages/pay/index.js @@ -358,12 +358,20 @@ Page({ async processAfterCreateOrder(res) { var that = this //保存支付相关信息,以订单号key + let address = '' + if(that.data.curAddressData){ + if(that.data.curAddressData.address){ + address = that.data.curAddressData.address + + } + } + that.data.dataP = { data: res.data, //订单信息 goodsList:that.data.goodsList, //商品列表 shopInfo: that.data.shopInfo, //商铺信息 mobile: that.data.mobile,//用户电话 - address: that.data.curAddressData.address,//配送地址 + address: address,//配送地址 remark: that.data.remark, //用户备注 peisongType: that.data.peisongType,//zq,kd @@ -808,7 +816,7 @@ Page({ '订单编号: '+ data.data.orderNumber + '
' + '用户电话: '+ data.mobile + '
' if(data.peisongType =='kd'){ - content+= '用户地址: '+ data.curAddressData.address + '
' + content+= '用户地址: '+ data.address + '
' } // if(that.data.peisongType=='zq'){ // content+= ' 取单号: '+that.data.curAddressData.address + '
' diff --git a/utils/pay.js b/utils/pay.js index 4dc90f5..200b584 100644 --- a/utils/pay.js +++ b/utils/pay.js @@ -204,7 +204,7 @@ function wxpay(type, money, orderId, redirectUrl, data) { '订单编号: '+ data.data.orderNumber + '
' + '用户电话: '+ data.mobile + '
' if(data.peisongType =='kd'){ - content+= '用户地址: '+ data.curAddressData.address + '
' + content+= '用户地址: '+ data.address + '
' } // if(that.data.peisongType=='zq'){ // content+= ' 取单号: '+that.data.curAddressData.address + '
' From 22bb42a1f9cbdc69ea5e10f3bf13c3c01c5dc792 Mon Sep 17 00:00:00 2001 From: TOD-nights Date: Wed, 26 Mar 2025 11:41:56 +0800 Subject: [PATCH 28/40] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=A4=96=E5=8D=96?= =?UTF-8?q?=E9=85=8D=E9=80=81=E6=96=B9=E5=BC=8F=E5=8F=82=E6=95=B0=EF=BC=8C?= =?UTF-8?q?=E9=99=90=E5=88=B6=E5=A4=96=E5=8D=96=E6=97=A0=E5=9C=B0=E5=9D=80?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=20#7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/pay/index.wxml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pages/pay/index.wxml b/pages/pay/index.wxml index d70cecf..82e95e7 100644 --- a/pages/pay/index.wxml +++ b/pages/pay/index.wxml @@ -12,7 +12,7 @@ - + {{ $t.pay.Addaddress }} @@ -98,10 +98,10 @@ wx:if="{{ nick && avatarUrl }}" price="{{ amountReal*100 }}" label="{{ $t.PickingUp.total }}" - button-text="{{peisongType == 'kd' && amountReal < shopInfo.serviceAmountMin ? ('¥' + shopInfo.serviceAmountMin + $t.pay.qisong) : $t.order.toPayTap }}" + button-text="{{peisongType == 'pszq' && amountReal < shopInfo.serviceAmountMin ? ('¥' + shopInfo.serviceAmountMin + $t.pay.qisong) : $t.order.toPayTap }}" bind:submit="goCreateOrder" button-class="pay-btn" - disabled="{{(peisongType == 'kd' && amountReal < shopInfo.serviceAmountMin) || submitLoding }}" + disabled="{{(peisongType == 'pszq' && amountReal < shopInfo.serviceAmountMin || curAddressData == null) || submitLoding }}" /> Date: Wed, 26 Mar 2025 11:49:07 +0800 Subject: [PATCH 29/40] pszq --- pages/pay/index.wxml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/pay/index.wxml b/pages/pay/index.wxml index 82e95e7..b22af18 100644 --- a/pages/pay/index.wxml +++ b/pages/pay/index.wxml @@ -5,8 +5,8 @@ {{ $t.index.pickup }} - - + + {{ $t.index.Delivery }} From 4eba784b919aca7d57d6dfd1b88e14859f8aae1b Mon Sep 17 00:00:00 2001 From: TOD-nights Date: Thu, 27 Mar 2025 13:46:33 +0800 Subject: [PATCH 30/40] pszq --- pages/all-orders/index.js | 2 +- pages/pay/index.js | 2 +- project.private.config.json | 2 +- utils/pay.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pages/all-orders/index.js b/pages/all-orders/index.js index 1dbf109..8daeaf5 100644 --- a/pages/all-orders/index.js +++ b/pages/all-orders/index.js @@ -356,7 +356,7 @@ Page({ content+= '下单时间: '+ timeStr + '
'+ '订单编号: '+ data.data.orderNumber + '
' + '用户电话: '+ data.mobile + '
' - if(data.peisongType =='kd'){ + if(data.peisongType =='pszq'){ content+= '用户地址: '+ data.address + '
' } // if(that.data.peisongType=='zq'){ diff --git a/pages/pay/index.js b/pages/pay/index.js index 9cd4fa9..88d2393 100644 --- a/pages/pay/index.js +++ b/pages/pay/index.js @@ -815,7 +815,7 @@ Page({ content+= '下单时间: '+ timeStr + '
'+ '订单编号: '+ data.data.orderNumber + '
' + '用户电话: '+ data.mobile + '
' - if(data.peisongType =='kd'){ + if(data.peisongType =='pszq'){ content+= '用户地址: '+ data.address + '
' } // if(that.data.peisongType=='zq'){ diff --git a/project.private.config.json b/project.private.config.json index 1a7ab08..4315a3b 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -307,7 +307,7 @@ ] } }, - "projectname": "bee-master", + "projectname": "bee-gitee", "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", "libVersion": "3.4.10" } \ No newline at end of file diff --git a/utils/pay.js b/utils/pay.js index 200b584..335f0a7 100644 --- a/utils/pay.js +++ b/utils/pay.js @@ -203,7 +203,7 @@ function wxpay(type, money, orderId, redirectUrl, data) { content+= '下单时间: '+ timeStr + '
'+ '订单编号: '+ data.data.orderNumber + '
' + '用户电话: '+ data.mobile + '
' - if(data.peisongType =='kd'){ + if(data.peisongType =='pszq'){ content+= '用户地址: '+ data.address + '
' } // if(that.data.peisongType=='zq'){ From c3dc1437029447078ca3787915718b72d7bd86b6 Mon Sep 17 00:00:00 2001 From: TOD-nights Date: Sat, 29 Mar 2025 14:22:29 +0800 Subject: [PATCH 31/40] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BC=BA=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E6=97=A0=E6=B3=95=E4=B8=8B=E5=8D=95=E8=87=AA=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/pay/index.wxml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/pay/index.wxml b/pages/pay/index.wxml index b22af18..da700a0 100644 --- a/pages/pay/index.wxml +++ b/pages/pay/index.wxml @@ -101,7 +101,7 @@ button-text="{{peisongType == 'pszq' && amountReal < shopInfo.serviceAmountMin ? ('¥' + shopInfo.serviceAmountMin + $t.pay.qisong) : $t.order.toPayTap }}" bind:submit="goCreateOrder" button-class="pay-btn" - disabled="{{(peisongType == 'pszq' && amountReal < shopInfo.serviceAmountMin || curAddressData == null) || submitLoding }}" + disabled="{{(peisongType == 'pszq' && amountReal < shopInfo.serviceAmountMin) || submitLoding }}" /> Date: Wed, 2 Apr 2025 16:13:07 +0800 Subject: [PATCH 32/40] =?UTF-8?q?=E5=A1=98=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/all-orders/index.js | 25 ++++++++++++++++++++++--- pages/pay/index.js | 23 +++++++++++++++++++---- utils/pay.js | 20 ++++++++++++++++---- 3 files changed, 57 insertions(+), 11 deletions(-) diff --git a/pages/all-orders/index.js b/pages/all-orders/index.js index 8daeaf5..20d6872 100644 --- a/pages/all-orders/index.js +++ b/pages/all-orders/index.js @@ -257,8 +257,19 @@ Page({ }//未来店 else if (data.shopInfo.id==1){ sn = '32EL21088705948' - } + //塘下店 + else if (data.shopInfo.id==4){ + sn = '325Z1VC2ANA044B' + } + //瑞安店 + else if (data.shopInfo.id==3){ + sn = 'YOUR_RUIAN_SN_HERE' + } + + + + //如果没有打印机,则返回 if(!sn){ return @@ -327,13 +338,21 @@ Page({ //紫金店 if(data.shopInfo.id==2){ sn = '74Y4LWMD9R9AF4B' - } //未来店 else if (data.shopInfo.id==1){ sn = '742N30GDRND8E4A' - } + //塘下店 + else if (data.shopInfo.id==4){ + sn = '74S8LPEQ3584048' + } + //瑞安店 + else if (data.shopInfo.id==3){ + sn = 'YOUR_RUIAN_SN_HERE' + } + + //如果没有打印机,则返回 if(!sn){ return diff --git a/pages/pay/index.js b/pages/pay/index.js index 88d2393..c1dfb71 100644 --- a/pages/pay/index.js +++ b/pages/pay/index.js @@ -712,12 +712,20 @@ Page({ //紫金店 if(data.shopInfo.id==2){ sn = '32817SCU1VAF54B' - }//未来店 else if (data.shopInfo.id==1){ sn = '32EL21088705948' - } + //塘下店 + else if (data.shopInfo.id==4){ + sn = '325Z1VC2ANA044B' + } + //瑞安店 + else if (data.shopInfo.id==3){ + sn = 'YOUR_RUIAN_SN_HERE' + } + + //如果没有打印机,则返回 if(!sn){ return @@ -786,13 +794,20 @@ Page({ //紫金店 if(data.shopInfo.id==2){ sn = '74Y4LWMD9R9AF4B' - } //未来店 else if (data.shopInfo.id==1){ sn = '742N30GDRND8E4A' - } + //塘下店 + else if (data.shopInfo.id==4){ + sn = '74S8LPEQ3584048' + } + //瑞安店 + else if (data.shopInfo.id==3){ + sn = 'YOUR_RUIAN_SN_HERE' + } + //如果没有打印机,则返回 if(!sn){ return diff --git a/utils/pay.js b/utils/pay.js index 335f0a7..b90ede3 100644 --- a/utils/pay.js +++ b/utils/pay.js @@ -100,12 +100,18 @@ function wxpay(type, money, orderId, redirectUrl, data) { //紫金店 if(data.shopInfo.id==2){ sn = '32817SCU1VAF54B' - }//未来店 else if (data.shopInfo.id==1){ sn = '32EL21088705948' - } + //塘下店 + else if (data.shopInfo.id==4){ + sn = '325Z1VC2ANA044B' + } + //瑞安店 + else if (data.shopInfo.id==3){ + sn = 'YOUR_RUIAN_SN_HERE' + } //如果没有打印机,则返回 if(!sn){ return @@ -174,12 +180,18 @@ function wxpay(type, money, orderId, redirectUrl, data) { //紫金店 if(data.shopInfo.id==2){ sn = '74Y4LWMD9R9AF4B' - } //未来店 else if (data.shopInfo.id==1){ sn = '742N30GDRND8E4A' - + } + //塘下店 + else if (data.shopInfo.id==4){ + sn = '74S8LPEQ3584048' + } + //瑞安店 + else if (data.shopInfo.id==3){ + sn = 'YOUR_RUIAN_SN_HERE' } //如果没有打印机,则返回 if(!sn){ From 3332ef8509cbc3c0a9cac060c24d895df635fbc4 Mon Sep 17 00:00:00 2001 From: TOD-nights Date: Wed, 2 Apr 2025 21:35:24 +0800 Subject: [PATCH 33/40] =?UTF-8?q?=E7=91=9E=E5=AE=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/all-orders/index.js | 6 +++--- pages/pay/index.js | 4 ++-- utils/pay.js | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pages/all-orders/index.js b/pages/all-orders/index.js index 20d6872..980cfc6 100644 --- a/pages/all-orders/index.js +++ b/pages/all-orders/index.js @@ -264,7 +264,7 @@ Page({ } //瑞安店 else if (data.shopInfo.id==3){ - sn = 'YOUR_RUIAN_SN_HERE' + sn = '32EVUCUVY0B4848' } @@ -333,7 +333,7 @@ Page({ let userId = 'xu1271669848@gmail.com' let timstamp = Math.trunc(new Date().getTime()/1000) + "" let sign = userId + userKey + timstamp - //打印机序列号,店铺id对应打印机序列号 + //小票机序列号,店铺id对应小票机序列号 let sn = '' //紫金店 if(data.shopInfo.id==2){ @@ -349,7 +349,7 @@ Page({ } //瑞安店 else if (data.shopInfo.id==3){ - sn = 'YOUR_RUIAN_SN_HERE' + sn = '744905VQE26ED4A' } diff --git a/pages/pay/index.js b/pages/pay/index.js index c1dfb71..25ee96b 100644 --- a/pages/pay/index.js +++ b/pages/pay/index.js @@ -722,7 +722,7 @@ Page({ } //瑞安店 else if (data.shopInfo.id==3){ - sn = 'YOUR_RUIAN_SN_HERE' + sn = '32EVUCUVY0B4848' } @@ -805,7 +805,7 @@ Page({ } //瑞安店 else if (data.shopInfo.id==3){ - sn = 'YOUR_RUIAN_SN_HERE' + sn = '744905VQE26ED4A' } //如果没有打印机,则返回 diff --git a/utils/pay.js b/utils/pay.js index b90ede3..5e6189c 100644 --- a/utils/pay.js +++ b/utils/pay.js @@ -110,7 +110,7 @@ function wxpay(type, money, orderId, redirectUrl, data) { } //瑞安店 else if (data.shopInfo.id==3){ - sn = 'YOUR_RUIAN_SN_HERE' + sn = '32EVUCUVY0B4848' } //如果没有打印机,则返回 if(!sn){ @@ -191,7 +191,7 @@ function wxpay(type, money, orderId, redirectUrl, data) { } //瑞安店 else if (data.shopInfo.id==3){ - sn = 'YOUR_RUIAN_SN_HERE' + sn = '744905VQE26ED4A' } //如果没有打印机,则返回 if(!sn){ From 19af95ced029cd9ae409664de9e33e7cedce570f Mon Sep 17 00:00:00 2001 From: TOD-nights Date: Wed, 2 Apr 2025 22:03:03 +0800 Subject: [PATCH 34/40] =?UTF-8?q?//=20=E6=8C=89=E8=B7=9D=E7=A6=BB=E6=8E=92?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/index/index.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pages/index/index.js b/pages/index/index.js index 1e59072..2b62c94 100644 --- a/pages/index/index.js +++ b/pages/index/index.js @@ -18,6 +18,11 @@ Page({ menuButtonBoundingClientRect: wx.getMenuButtonBoundingClientRect(), }, onLoad: function (e) { + + // 清除店铺缓存 + wx.removeStorageSync('shopInfo') + wx.removeStorageSync('shopIds') + getApp().initLanguage(this) const _data = {} // 测试拼团入口 @@ -175,9 +180,12 @@ Page({ curlatitude: latitude, curlongitude: longitude, nameLike: kw, - pageSize: 1 + orderBy: 'distance', // 按距离排序 + sortBy: 'asc' // 升序排列 }) if (res.code == 0) { + res.data.sort((a, b) => parseFloat(a.distance) - parseFloat(b.distance)) + res.data.forEach(ele => { ele.distance = ele.distance.toFixed(1) // 距离保留3位小数 }) From 575626d01629988d62d552c32678e2606a0a7197 Mon Sep 17 00:00:00 2001 From: farwind Date: Wed, 2 Apr 2025 00:16:36 +0800 Subject: [PATCH 35/40] feat:coupons fetch/use/rollback (cherry picked from commit de1b511d06b770dbd35d78fc500ce30a1482049f) --- pages/coupons/index.js | 2 +- pages/coupons/index.wxml | 3 +- pages/pay/index.js | 2 +- utils/time.wxs | 60 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 64 insertions(+), 3 deletions(-) create mode 100644 utils/time.wxs diff --git a/pages/coupons/index.js b/pages/coupons/index.js index d55eca9..2134c02 100644 --- a/pages/coupons/index.js +++ b/pages/coupons/index.js @@ -77,7 +77,7 @@ Page({ wx.showLoading({ title: '', }) - WXAPI.coupons().then(function (res) { + WXAPI.coupons({token: wx.getStorageSync('token')}).then(function (res) { wx.hideLoading({ success: (res) => {}, }) diff --git a/pages/coupons/index.wxml b/pages/coupons/index.wxml index b4fd557..004ebd7 100644 --- a/pages/coupons/index.wxml +++ b/pages/coupons/index.wxml @@ -1,3 +1,4 @@ + @@ -28,7 +29,7 @@ {{item.name}}
- ({{item.dateEnd}} {{ $t.coupons.expire }}) {{ $t.coupons.over }} {{item.moneyHreshold}} + ({{filters.parseTime(item.expiryMillis,'date')}} {{ $t.coupons.expire }}) {{ $t.coupons.over }} {{item.moneyHreshold}} {{item.money}} {{item.money}}% diff --git a/pages/pay/index.js b/pages/pay/index.js index 9cd4fa9..8a7c809 100644 --- a/pages/pay/index.js +++ b/pages/pay/index.js @@ -326,7 +326,7 @@ Page({ moneyUnit = '%' } if (ele.moneyHreshold) { - ele.nameExt = ele.name + + ' ['+ that.data.$t.pay.Fullconsumption +'' + ele.moneyHreshold + that.data.$t.pay.RMBreduced + ele.money + moneyUnit +']' + ele.nameExt = ele.name + ' ['+ that.data.$t.pay.Fullconsumption +'' + ele.moneyHreshold + that.data.$t.pay.RMBreduced + ele.money + moneyUnit +']' } else { ele.nameExt = ele.name + ' ['+ that.data.$t.pay.Fullconsumption +'' + ele.money + moneyUnit + ']' } diff --git a/utils/time.wxs b/utils/time.wxs new file mode 100644 index 0000000..601ae09 --- /dev/null +++ b/utils/time.wxs @@ -0,0 +1,60 @@ +var filter = { + formatNumber: function (n) { + n = n.toString() + return n[1] ? n : '0' + n + }, + //写法一: + parseTime: function (time, type) { + if (time == null || type == '') { + return '' + } + if (arguments.length === 0) { + return null + } + var date = getDate(time);//在wxs中不能使用new Date()来处理日期 + var y = date.getFullYear(); + var m = filter.formatNumber(date.getMonth() + 1); + var d = filter.formatNumber(date.getDate()); + var h = filter.formatNumber(date.getHours()); + var i = filter.formatNumber(date.getMinutes()); + var s = filter.formatNumber(date.getSeconds()); + var a = filter.formatNumber(date.getDay()); + var time_str = ""; + if (type == 'month') { + time_str = y + '-' + m; + } else if (type == 'date') { + time_str = y + '-' + m + '-' + d; + } else if (type == 'datetime') { + time_str = y + '-' + m + '-' + d + ' ' + h + ':' + i + ':' + s; + } else if (type == 'onlyMonth') { + time_str = m; + } else if (type == 'onlyYear') { + time_str = y; + } + return time_str + }, + //写法二: + //用法 {{filters.formatDate(current,'Y-M-D h:m:s')}} + parseTime2: function (time, format) { + if (time == null || format == '' || time == "" || time == undefined) { + return '' + } + if (arguments.length === 0) { + return null + } + var formateArr = ['Y', 'M', 'D', 'h', 'm', 's'], arr = [], date = getDate(time); + arr.push(date.getFullYear());//Y + arr.push(filter.formatNumber(date.getMonth() + 1));//M + arr.push(filter.formatNumber(date.getDate()));//D + arr.push(filter.formatNumber(date.getHours()));//h + arr.push(filter.formatNumber(date.getMinutes()));//m + arr.push(filter.formatNumber(date.getSeconds()));//s + for (var i = 0; i < arr.length; i++) { + format = format.replace(formateArr[i], arr[i]) + } + return format + }, +} +module.exports = { + parseTime: filter.parseTime, +} \ No newline at end of file From 92b01992a18114bcc2277c290106a916b4b2e37c Mon Sep 17 00:00:00 2001 From: zhuotianxiao Date: Thu, 3 Apr 2025 13:50:54 +0800 Subject: [PATCH 36/40] =?UTF-8?q?=E9=97=A8=E5=BA=97=E5=85=85=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/asset/index.js | 1 + project.config.json | 9 +++++++-- project.private.config.json | 17 ++++++++++++++++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/pages/asset/index.js b/pages/asset/index.js index e2f87e0..51bab50 100644 --- a/pages/asset/index.js +++ b/pages/asset/index.js @@ -85,6 +85,7 @@ Page({ const postData = { token: wx.getStorageSync('token'), money: money, + shopId: wx.getStorageSync('shopInfo').id, payName: "在线充值", remark: "在线充值", } diff --git a/project.config.json b/project.config.json index a6f665e..284d797 100644 --- a/project.config.json +++ b/project.config.json @@ -37,7 +37,11 @@ "lazyloadPlaceholderEnable": false, "useStaticServer": true, "ignoreUploadUnusedFiles": true, - "condition": false + "condition": false, + "compileWorklet": false, + "localPlugins": false, + "swc": false, + "disableSWC": true }, "compileType": "miniprogram", "simulatorType": "wechat", @@ -65,5 +69,6 @@ "packOptions": { "ignore": [], "include": [] - } + }, + "libVersion": "3.4.10" } \ No newline at end of file diff --git a/project.private.config.json b/project.private.config.json index 4315a3b..609fd9d 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -1,7 +1,22 @@ { "setting": { "compileHotReLoad": true, - "urlCheck": false + "urlCheck": false, + "coverView": true, + "lazyloadPlaceholderEnable": false, + "skylineRenderEnable": false, + "preloadBackgroundData": false, + "autoAudits": false, + "useApiHook": true, + "useApiHostProcess": true, + "showShadowRootInWxmlPanel": true, + "useStaticServer": true, + "useLanDebug": false, + "showES6CompileOption": false, + "checkInvalidKey": true, + "ignoreDevUnusedFiles": true, + "bigPackageSizeSupport": false, + "useIsolateContext": false }, "condition": { "miniprogram": { From 8d4739f6906aa432ff6a22808781ac9634ab8c30 Mon Sep 17 00:00:00 2001 From: TOD-nights Date: Sat, 5 Apr 2025 01:33:49 +0800 Subject: [PATCH 37/40] =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E5=AE=9A=E4=BD=8D=E6=97=B6=E7=9A=84=E5=A4=84=E7=90=86=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/index/index.js | 35 +++++++++++++++++++++++----- pages/shop/select.js | 54 ++++++++++++++++++++++++++++++-------------- 2 files changed, 66 insertions(+), 23 deletions(-) diff --git a/pages/index/index.js b/pages/index/index.js index 2b62c94..8342080 100644 --- a/pages/index/index.js +++ b/pages/index/index.js @@ -156,20 +156,43 @@ Page({ wx.getLocation({ type: 'wgs84', //wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标 success: (res) => { - // console.log(res) this.data.latitude = res.latitude this.data.longitude = res.longitude this.fetchShops(res.latitude, res.longitude, '') }, fail: (e) => { if (e.errMsg.indexOf('fail auth deny') != -1) { - AUTH.checkAndAuthorize('scope.userLocation') + // 定位权限被拒绝,提供友好提示 + wx.showModal({ + title: this.data.$t.common.tips || '提示', + content: '为了给您推荐最近的门店,需要获取您的位置信息', + confirmText: this.data.$t.common.confirm || '去开启', + cancelText: this.data.$t.common.cancel || '暂不开启', + success: (res) => { + if (res.confirm) { + AUTH.checkAndAuthorize('scope.userLocation') + } else { + // 用户选择不开启定位,跳转到店铺列表 + wx.navigateTo({ + url: '/pages/shop/select?type=index' + }) + } + } + }) } else { + // 其他定位错误 wx.showModal({ - confirmText: this.data.$t.common.confirm, - cancelText: this.data.$t.common.cancel, - content: e.errMsg, - showCancel: false + title: this.data.$t.common.tips || '提示', + content: '无法获取您的位置,是否手动选择门店?', + confirmText: this.data.$t.common.confirm || '去选择', + cancelText: this.data.$t.common.cancel || '取消', + success: (res) => { + if (res.confirm) { + wx.navigateTo({ + url: '/pages/shop/select?type=index' + }) + } + } }) } } diff --git a/pages/shop/select.js b/pages/shop/select.js index a832739..adb2224 100644 --- a/pages/shop/select.js +++ b/pages/shop/select.js @@ -23,8 +23,10 @@ Page({ type: options.type, shop_join_open: wx.getStorageSync('shop_join_open') }) + this.fetchShops(null, null, '') }, onShow: function () { + const that = this wx.getLocation({ type: 'wgs84', //wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标 success: (res) => { @@ -33,27 +35,45 @@ Page({ this.fetchShops(res.latitude, res.longitude, '') }, fail(e){ - console.error(e) - AUTH.checkAndAuthorize('scope.userLocation') + // 定位失败时也获取店铺列表,但不传入位置参数 + this.fetchShops(null, null, '') } }) }, async fetchShops(latitude, longitude, kw){ - const res = await WXAPI.fetchShops({ - curlatitude: latitude, - curlongitude: longitude, - nameLike: kw - }) - if (res.code == 0) { - res.data.forEach(ele => { - ele.distance = ele.distance.toFixed(1) // 距离保留3位小数 - }) - this.setData({ - shops: res.data - }) - } else { - this.setData({ - shops: null + const params = { + nameLike: kw || '' + } + // 如果有位置信息,添加到请求参数中 + if (latitude && longitude) { + params.curlatitude = latitude + params.curlongitude = longitude + } + try { + const res = await WXAPI.fetchShops(params) + if (res.code == 0) { + if (latitude && longitude) { + res.data.forEach(ele => { + ele.distance = ele.distance.toFixed(1) + }) + } else { + res.data.forEach(ele => { + ele.distance = '-' + }) + } + this.setData({ + shops: res.data + }) + } else { + this.setData({ + shops: null + }) + } + } catch (error) { + console.error('获取店铺列表失败:', error) + wx.showToast({ + title: '获取店铺列表失败', + icon: 'none' }) } }, From e43e5435fa3fde1c901ab7c489c587cda79bfc3b Mon Sep 17 00:00:00 2001 From: zhuotianxiao Date: Tue, 8 Apr 2025 10:31:51 +0800 Subject: [PATCH 38/40] =?UTF-8?q?=E4=BD=99=E9=A2=9D=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- miniprogram_npm/apifm-wxapi/index.js | 6 ++++++ pages/pay/index.js | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/miniprogram_npm/apifm-wxapi/index.js b/miniprogram_npm/apifm-wxapi/index.js index d18a9c7..28395f9 100644 --- a/miniprogram_npm/apifm-wxapi/index.js +++ b/miniprogram_npm/apifm-wxapi/index.js @@ -980,6 +980,12 @@ module.exports = { token: token }); }, + balance_pay: function balance_pay(token, orderId) { + return request('/order/balance_pay', true, 'post', { + orderId: orderId, + token: token + }); + }, orderPayV2: function orderPayV2(data) { return request('/order/pay', true, 'post', data); }, diff --git a/pages/pay/index.js b/pages/pay/index.js index 9c4b19b..aceffa3 100644 --- a/pages/pay/index.js +++ b/pages/pay/index.js @@ -416,7 +416,7 @@ Page({ const money = res.data.amountReal * 1 - res1.data.balance*1 if (money <= 0) { // 使用余额支付 - await WXAPI.orderPay(token, res.data.id).then(r=>{ + await WXAPI.balance_pay(token, res.data.id).then(r=>{ console.log(r) if(r.code==700){ From 6c72067c303807a0655a07ca091fd707b2e02001 Mon Sep 17 00:00:00 2001 From: TOD-nights Date: Thu, 10 Apr 2025 16:59:40 +0800 Subject: [PATCH 39/40] Update config.js --- config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/config.js b/config.js index 196856f..15ecd9d 100644 --- a/config.js +++ b/config.js @@ -1,5 +1,6 @@ module.exports = { apiHost: 'https://9kuai8coffee.asia', + //apiHost: 'http://localhost:8081', // apiHost: 'https://api.it120.cc',//api工厂的值 subDomain: "9kuai8coffee.asia", // 固定值 From 5f4785b74e742edfdc1bf5b7bcfa930f9fb00c6a Mon Sep 17 00:00:00 2001 From: farwind Date: Wed, 9 Apr 2025 23:06:38 +0800 Subject: [PATCH 40/40] fix coupons discount display --- pages/coupons/index.wxml | 8 ++++---- utils/time.wxs | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/pages/coupons/index.wxml b/pages/coupons/index.wxml index 004ebd7..2ed6b80 100644 --- a/pages/coupons/index.wxml +++ b/pages/coupons/index.wxml @@ -15,8 +15,8 @@
{{ $t.coupons.over }} {{item.moneyHreshold}} - {{item.moneyMin}} - {{item.moneyMin}}% + {{item.money}} + {{filters.formatNumber(item.money)*100}}% {{ $t.coupons.btn }} @@ -31,7 +31,7 @@ ({{filters.parseTime(item.expiryMillis,'date')}} {{ $t.coupons.expire }}) {{ $t.coupons.over }} {{item.moneyHreshold}} {{item.money}} - {{item.money}}% + {{filters.formatNumber(item.money)*100}}% {{ $t.coupons.toUse }} @@ -46,7 +46,7 @@ {{ $t.coupons.over }} {{item.moneyHreshold}} {{item.money}} - {{item.money}}% + {{filters.formatNumber(item.money)*100}}% {{ item.statusStr }} diff --git a/utils/time.wxs b/utils/time.wxs index 601ae09..4432081 100644 --- a/utils/time.wxs +++ b/utils/time.wxs @@ -57,4 +57,5 @@ var filter = { } module.exports = { parseTime: filter.parseTime, + formatNumber: filter.formatNumber } \ No newline at end of file
' + data.goodsList[i].price + '元