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 @@
+
+
+
+
+ {{convertSecondsToHMS(page.countdown)}}
+
+
+ ¥
+ {{data.price}}
+
+
+ {{data.goods}}
+
+
+
+
+
+
+
+
+
+ {{page.submitText}}
+
+
+
+
+
+
+
\ 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 @@
+
+
+
+
+ ¥ {{ data.price }}
+
+
+
+
+ 订单编号
+ {{ data.orderId }}
+
+
+ 下单时间
+ {{page.createTime}}
+
+
+ 支付方式
+ {{ data.pay }}
+
+
+ 支付时间
+ {{page.payTime}}
+
+
+
+ 查看订单
+
+
+
+
+
+
+
\ 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