From 3b28b1f7ab18aa04a53c3dd4953090868430935b Mon Sep 17 00:00:00 2001 From: guoxing <1369478551@qq.com> Date: Mon, 8 Jan 2024 22:18:19 +0800 Subject: [PATCH] 2023-1-8 --- common/config.js | 4 +- common/request.api.js | 2 + main.js | 6 +- pages.json | 16 +- pages/cloud/detail_cloudCard.vue | 93 ++++++- pages/cloud/optionalCard.vue | 62 ++++- pages/detail/detail_affeection.vue | 5 +- pages/detail/detail_affeection2.vue | 4 + pages/detail/detail_enterprise.vue | 5 +- pages/detail/detail_enterprise2.vue | 4 + pages/detail/detail_family.vue | 5 +- pages/detail/detail_family2.vue | 4 + uni_modules/common-pay/changelog.md | 0 .../components/common-pay/common-pay.vue | 6 + uni_modules/common-pay/package.json | 83 ++++++ uni_modules/common-pay/pages/pay/pay.vue | 252 ++++++++++++++++++ .../common-pay/pages/success/success.vue | 231 ++++++++++++++++ uni_modules/common-pay/pages_init.json | 17 ++ uni_modules/common-pay/readme.md | 49 ++++ uni_modules/common-pay/utils/pay.js | 13 + uni_modules/common-pay/utils/pay_http.js | 107 ++++++++ 21 files changed, 948 insertions(+), 20 deletions(-) create mode 100644 uni_modules/common-pay/changelog.md create mode 100644 uni_modules/common-pay/components/common-pay/common-pay.vue create mode 100644 uni_modules/common-pay/package.json create mode 100644 uni_modules/common-pay/pages/pay/pay.vue create mode 100644 uni_modules/common-pay/pages/success/success.vue create mode 100644 uni_modules/common-pay/pages_init.json create mode 100644 uni_modules/common-pay/readme.md create mode 100644 uni_modules/common-pay/utils/pay.js create mode 100644 uni_modules/common-pay/utils/pay_http.js diff --git a/common/config.js b/common/config.js index 4c156c5..be01d32 100644 --- a/common/config.js +++ b/common/config.js @@ -6,9 +6,9 @@ * loginTimeoutPage = "/pages/login/index", // 登录超时或失效的情况下,跳转到的登录页面 */ module.exports = { - baseUrl: 'http://192.168.2.106:7201', // 本地 + // baseUrl: 'http://192.168.2.106:7201', // 本地 // baseUrl: 'https://lpk.yyundong.com/lpkapi', // 测试服务器 - // baseUrl: 'https://supervise.yxtsoft.com/lpkapi', // 正式服务器 + baseUrl: 'https://supervise.yxtsoft.com/lpkapi', // 正式服务器 tokenName: "Authorization", // 请求头中token的名字,与服务器端对应 loginTimeoutCode: "5001", // 登录超时或失效的情况下,服务器端返回的错误码 loginTimeoutPage: "/pages/login/index", // 登录超时或失效的情况下,跳转到的登录页面 diff --git a/common/request.api.js b/common/request.api.js index 05b08ff..ac25101 100644 --- a/common/request.api.js +++ b/common/request.api.js @@ -66,5 +66,7 @@ export default { getGiftBagBySid: (params = {}) => request.get("/appletgiftbag/getGiftBagBySid/"+params, params), // 自选菜窖 商品信息 getAllGiftBag: (params = {}) => request.get("/lpkgoods/getAllGiftBag", params), + // 結算商品 + createOrder: (params = {}) => request.post("/empsreservoorder/createOrder", params), } \ No newline at end of file diff --git a/main.js b/main.js index 5ba2691..5c10179 100644 --- a/main.js +++ b/main.js @@ -31,10 +31,14 @@ Vue.prototype.longToast = longToast import bus from './common/bus.js'; - + //挂载到this上 Vue.prototype.$bus = bus; +import {pay} from './uni_modules/common-pay/utils/pay.js' +//挂载到this上 +Vue.prototype.$pay = pay; + const app = new Vue({ store, ...App diff --git a/pages.json b/pages.json index e8b4c6c..92a72a8 100644 --- a/pages.json +++ b/pages.json @@ -243,7 +243,21 @@ "style": { "navigationStyle": "custom" } - } + }, + { + "path": "uni_modules/common-pay/pages/pay/pay", + "style": { + "navigationBarTitleText": "支付订单", + "backgroundColor": "#F8F8F8" + } + }, + { + "path": "uni_modules/common-pay/pages/success/success", + "style": { + "navigationBarTitleText": "支付完成", + "backgroundColor": "#F8F8F8" + } + } ], "globalStyle": { diff --git a/pages/cloud/detail_cloudCard.vue b/pages/cloud/detail_cloudCard.vue index ed23b0e..e5e4847 100644 --- a/pages/cloud/detail_cloudCard.vue +++ b/pages/cloud/detail_cloudCard.vue @@ -28,14 +28,14 @@ 我要定 - 个云窖菜 + 个云菜窖 + style="display: flex;flex-direction: column;margin-top: 14px; "> @@ -94,7 +94,8 @@ 结算 + style="background: #EE752F; text-align: center; color: #fff; border-radius: 5px;padding: 5px 20px; margin-right: 40px; " + @click="settlement()">结算 @@ -141,6 +142,10 @@ this.request() }, + onPageScroll(res) { + // 渐变 + this.$refs.nav.defaultColorBgAlpha(res) + }, methods: { itemClick(goodsSid) { uni.navigateTo({ @@ -149,11 +154,6 @@ }, request() { let _this = this - // _this.$nextTick(() => { - // _this.$refs.pageView.setLoadState(2) - // }) - // this.getPrice() - _this.$api.getGiftBagBySid(this.page.sid).then((resp) => { @@ -180,6 +180,83 @@ this.page.price = Number(this.data.price * this.page.number).toFixed(2) else this.page.price = "0.00" + }, + settlement() { + // 支付 + + + if (!Number(this.page.number) > 0) { + this.shortToast('请输入要定制几份云菜窖') + return + } + + + let list = [] + + for (var i = 0; i < this.data.goods.length; i++) { + var item = this.data.goods[i] + if (item.goodsNumber > 0) + list.push({ + goodsSid: item.goodsSid, + goodsName: item.name, + partNumber: item.goodsNumber, + numofPart: item.weight, + priceUnit: item.jprice, + pricePart: item.price, + }) + } + // console.log("ddd", list); + + if(list.length==0){ + this.shortToast('请添加商品') + return + } + + + var params = { + customerSid: getApp().globalData.sid, + cardNumber: this.page.number, + totalTee: this.page.price, + ordOrderDetailsVoList: list + } + // console.log("params", params); + + let _this = this + _this.$api.createOrder(params).then((resp) => { + + // console.log("resp", resp); + this.$pay(resp) + }).catch(e => { + }) + + + + // var data = { + // "price": "0.01", + // "trade_no_url": { + // "url": "http://192.168.2.110:7777/order/orderQuery", + // "params": { + // "mainSid": "954fbec1-b12e-4f29-87c1-4d9ff6332e7c" + // } + // }, + // "pay_url": { + // "url": "http://192.168.2.110:7777/order/pay ", + // "params": { + // "mainSid": "954fbec1-b12e-4f29-87c1-4d9ff6332e7c" + // } + // }, + // "order_url": { + // "page": "/pages/index2/index2", + // "params": {} + // }, + // "orderId": "288320940398", + // "remainder": 96, + // "goods": "无骨鸡柳等3件商品", + // "bus": [ + // "pay" + // ] + // } + } } } diff --git a/pages/cloud/optionalCard.vue b/pages/cloud/optionalCard.vue index e3a8257..bf13b58 100644 --- a/pages/cloud/optionalCard.vue +++ b/pages/cloud/optionalCard.vue @@ -31,7 +31,7 @@ 我要定 - 个云窖菜 + 个云菜窖 @@ -106,7 +106,8 @@ 结算 + style="background: #EE752F; text-align: center; color: #fff; border-radius: 5px;padding: 5px 20px; margin-right: 40px; " + @click="settlement()">结算 @@ -136,6 +137,10 @@ } }, + onPageScroll(res) { + // 渐变 + this.$refs.nav.defaultColorBgAlpha(res) + }, onLoad(options) { let info = uni.getSystemInfoSync(); @@ -208,6 +213,59 @@ } this.page.weight = num + }, + settlement() { + // 支付 + + if (this.page.weight < 200) { + this.shortToast('满200斤才可定制云菜窖哦,请继续选菜吧。') + return + } + + if (!Number(this.page.number) > 0) { + this.shortToast('请输入要定制几份云菜窖') + return + } + + + + let list = [] + + for (var i = 0; i < this.data.length; i++) { + var item = this.data[i] + if (item.goodsNumber > 0) + list.push({ + goodsSid: item.goodsSid, + goodsName: item.name, + partNumber: item.goodsNumber, + numofPart: item.weight, + priceUnit: item.jprice, + pricePart: item.price, + }) + } + // console.log("ddd", list); + + if(list.length==0){ + this.shortToast('请添加商品') + return + } + + var params = { + customerSid: getApp().globalData.sid, + cardNumber: this.page.number, + totalTee: this.page.price, + ordOrderDetailsVoList: list + } + // console.log("params", params); + + let _this = this + _this.$api.createOrder(params).then((resp) => { + + // console.log("resp", resp); + this.$pay(resp) + }).catch(e => { + }) + } } diff --git a/pages/detail/detail_affeection.vue b/pages/detail/detail_affeection.vue index 112ff0a..aac5062 100644 --- a/pages/detail/detail_affeection.vue +++ b/pages/detail/detail_affeection.vue @@ -416,8 +416,9 @@ uni.$off('order'); uni.$off('address'); }, - onPageScroll(e) { - // console.log("aaa",e.scrollTop); + onPageScroll(res) { + // 渐变 + this.$refs.nav.defaultColorBgAlpha(res) }, methods: { showDialog() { diff --git a/pages/detail/detail_affeection2.vue b/pages/detail/detail_affeection2.vue index fbf4440..bf77f5d 100644 --- a/pages/detail/detail_affeection2.vue +++ b/pages/detail/detail_affeection2.vue @@ -227,6 +227,10 @@ onUnload() { uni.$off('order'); }, + onPageScroll(res) { + // 渐变 + this.$refs.nav.defaultColorBgAlpha(res) + }, methods: { request() { diff --git a/pages/detail/detail_enterprise.vue b/pages/detail/detail_enterprise.vue index d1090aa..581c364 100644 --- a/pages/detail/detail_enterprise.vue +++ b/pages/detail/detail_enterprise.vue @@ -428,8 +428,9 @@ uni.$off('order'); uni.$off('address'); }, - onPageScroll(e) { - // console.log("aaa",e.scrollTop); + onPageScroll(res) { + // 渐变 + this.$refs.nav.defaultColorBgAlpha(res) }, methods: { showDialog() { diff --git a/pages/detail/detail_enterprise2.vue b/pages/detail/detail_enterprise2.vue index baad94c..bfb4794 100644 --- a/pages/detail/detail_enterprise2.vue +++ b/pages/detail/detail_enterprise2.vue @@ -220,6 +220,10 @@ onUnload() { uni.$off('order'); }, + onPageScroll(res) { + // 渐变 + this.$refs.nav.defaultColorBgAlpha(res) + }, methods: { request() { diff --git a/pages/detail/detail_family.vue b/pages/detail/detail_family.vue index 811ff6f..d877524 100644 --- a/pages/detail/detail_family.vue +++ b/pages/detail/detail_family.vue @@ -416,8 +416,9 @@ uni.$off('order'); uni.$off('address'); }, - onPageScroll(e) { - console.log("aaa", e.scrollTop); + onPageScroll(res) { + // 渐变 + this.$refs.nav.defaultColorBgAlpha(res) }, methods: { showDialog() { diff --git a/pages/detail/detail_family2.vue b/pages/detail/detail_family2.vue index d70a25f..730ddc5 100644 --- a/pages/detail/detail_family2.vue +++ b/pages/detail/detail_family2.vue @@ -228,6 +228,10 @@ onUnload() { uni.$off('order'); }, + onPageScroll(res) { + // 渐变 + this.$refs.nav.defaultColorBgAlpha(res) + }, methods: { request() { diff --git a/uni_modules/common-pay/changelog.md b/uni_modules/common-pay/changelog.md new file mode 100644 index 0000000..e69de29 diff --git a/uni_modules/common-pay/components/common-pay/common-pay.vue b/uni_modules/common-pay/components/common-pay/common-pay.vue new file mode 100644 index 0000000..baf45e9 --- /dev/null +++ b/uni_modules/common-pay/components/common-pay/common-pay.vue @@ -0,0 +1,6 @@ + + + diff --git a/uni_modules/common-pay/package.json b/uni_modules/common-pay/package.json new file mode 100644 index 0000000..11c3112 --- /dev/null +++ b/uni_modules/common-pay/package.json @@ -0,0 +1,83 @@ +{ + "id": "common-pay", + "displayName": "common-pay", + "version": "1.0.0", + "description": "common-pay", + "keywords": [ + "common-pay" + ], + "repository": "", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "type": "component-vue", + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "", + "data": "", + "permissions": "" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "u", + "aliyun": "u", + "alipay": "u" + }, + "client": { + "Vue": { + "vue2": "u", + "vue3": "u" + }, + "App": { + "app-vue": "u", + "app-nvue": "u", + "app-uvue": "u" + }, + "H5-mobile": { + "Safari": "u", + "Android Browser": "u", + "微信浏览器(Android)": "u", + "QQ浏览器(Android)": "u" + }, + "H5-pc": { + "Chrome": "u", + "IE": "u", + "Edge": "u", + "Firefox": "u", + "Safari": "u" + }, + "小程序": { + "微信": "u", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u", + "钉钉": "u", + "快手": "u", + "飞书": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/common-pay/pages/pay/pay.vue b/uni_modules/common-pay/pages/pay/pay.vue new file mode 100644 index 0000000..f03729c --- /dev/null +++ b/uni_modules/common-pay/pages/pay/pay.vue @@ -0,0 +1,252 @@ + + + + + \ No newline at end of file diff --git a/uni_modules/common-pay/pages/success/success.vue b/uni_modules/common-pay/pages/success/success.vue new file mode 100644 index 0000000..41c62b6 --- /dev/null +++ b/uni_modules/common-pay/pages/success/success.vue @@ -0,0 +1,231 @@ + + + + \ No newline at end of file diff --git a/uni_modules/common-pay/pages_init.json b/uni_modules/common-pay/pages_init.json new file mode 100644 index 0000000..581b65c --- /dev/null +++ b/uni_modules/common-pay/pages_init.json @@ -0,0 +1,17 @@ +{ + "pages": [{ + "path": "uni_modules/common-pay/pages/pay/pay", + "style": { + "navigationBarTitleText": "支付订单", + "backgroundColor": "#F8F8F8" + } + }, + { + "path": "uni_modules/common-pay/pages/success/success", + "style": { + "navigationBarTitleText": "支付完成", + "backgroundColor": "#F8F8F8" + } + } + ] +} \ No newline at end of file diff --git a/uni_modules/common-pay/readme.md b/uni_modules/common-pay/readme.md new file mode 100644 index 0000000..462ad06 --- /dev/null +++ b/uni_modules/common-pay/readme.md @@ -0,0 +1,49 @@ +# common-pay + +## 支付流程: + +1. 前端提交,后台生成待支付的订单 +2. 订单生成后,跳转到前端收银台页面 +3. 客户选择支付方式后,调后台接口生成orderInfo + +### 移植到项目: + +1. 复制 `common-pay`到自己的项目里 +2. 复制 `common-pay`里的`pages_init`到自己项目里的`page.json` + +### 配置支付方式: + +`pay.vue ` + +修改属性:`use:[]` + +### 跳转支付: + +`pay.js `,调用`pay`方法 + +``` +import { + pay +} from '../../uni_modules/common-pay/utils/pay.js' + +// 请按照格式去传参 +let o = { + price: '10.00', + goods: '测试商品' + ... +} + +pay(o); +``` + +### 接参: + + +``` +try { + // 跳转携带数据 + this.data = JSON.parse(options.data) +} catch (e) { + this.data = JSON.parse(decodeURIComponent(options.data)) +} +``` \ No newline at end of file diff --git a/uni_modules/common-pay/utils/pay.js b/uni_modules/common-pay/utils/pay.js new file mode 100644 index 0000000..acbc840 --- /dev/null +++ b/uni_modules/common-pay/utils/pay.js @@ -0,0 +1,13 @@ +function pay(o) { + // 数据源转换成字符 + let data = JSON.stringify(o) + // 转码传输 + let value = encodeURIComponent(data) + uni.navigateTo({ + url: '/uni_modules/common-pay/pages/pay/pay?data=' + value + }) +} + +export { + pay +} \ No newline at end of file diff --git a/uni_modules/common-pay/utils/pay_http.js b/uni_modules/common-pay/utils/pay_http.js new file mode 100644 index 0000000..8a42cba --- /dev/null +++ b/uni_modules/common-pay/utils/pay_http.js @@ -0,0 +1,107 @@ +/** + * 支付专用网络请求 + * url: 绝对路径请求地址 + * token: 如需请传 + * data: 参数 + */ +function http(options) { + + return new Promise((resolve, reject) => { + + uni.showLoading({ + title: '加载中...', + mask: true + }); + + var url = options.url + + uni.request({ + // 组装请求地址 + url: url, + // 请求方式 POST + method: 'POST', + header: { + 'content-type': "application/x-www-form-urlencoded", + 'token': (options.token == undefined || options.token == '') ? "token is null" : options + .token + }, + // 具体参数 + data: options.data, + success: res => { + + // 关闭显示框 + uni.hideLoading(); + + console.log('Http网络路径', url) + console.log('Http网络请求结果', JSON.stringify(res.data)) + + if (res.statusCode == 200) { + + // 进行success字段检查 + + if (!res.data.success) { + + uni.showToast({ + title: res.data.msg, + // 保证文字长度 + icon: "none", + duration: 3000 + }) + + // 直接返回Response + reject(res.data) + + } else { + // 直接返回Response + resolve(res.data) + } + + } else { + + uni.showToast({ + title: res.statusCode + ":" + res.data.error, + // 保证文字长度 + icon: "none", + duration: 3000 + }) + + // 返回错误数据 + reject({ + success: false, + msg: res.data.error, + code: '1111' + }) + } + + }, + fail: (err) => { + + // 关闭显示框 + uni.hideLoading(); + + console.log("Http网络请求fail", err) + + uni.showToast({ + title: err.errMsg, + icon: 'none' + }) + + // 返回错误数据 + reject({ + success: false, + msg: err.errMsg, + code: '1111' + }) + }, + complete: () => { + + } + }); + + }) +} + + +export { + http +} \ No newline at end of file