Browse Source

添加线下消费记录页面
对接线下消费记录页面页面接口
扫码后的账单确认页100%
对接获取用户余额接口
对接获取账单详情接口
对接账单确认接口
添加账单确认密码弹窗
添加账单详情页面

suixueyan 8 months ago
parent
commit
1bc771a79d

+ 14 - 0
common/api/order.js

@@ -12,6 +12,20 @@ export const createOrder = data => {
 export const orderDetail = data => {
 	return request.post('/wechat/auth.order/read', data)
 }
+// 店内消费详情
+export const expenseDetail = (query)=> {
+	return request.post('/wechat/auth.expense/read?order_no='+query)
+}
+export const expensePay = (data)=> {
+	return request.post('/wechat/auth.expense/pay?order_no='+data.order_no+"&pay_pswd="+data.pay_pswd)
+}
+export const expenseList = (data)=> {
+	return request.post('/wechat/auth.expense/index', data)
+}
+
+
+
+
 
 // 根据订单获取用户可用优惠券
 export const getCouponByOrder = data => {

+ 4 - 0
common/api/user.js

@@ -23,6 +23,10 @@ export const userBindPhone = data => {
 export const getUserInfo = data => {
 	return request.get('/wechat/auth.center/get', data)
 }
+// 获取用户数据
+export const getCustomerInfo = data => {
+	return request.get('/wechat/auth.center/customer', data)
+}
 // 更新用户资料
 export const updateUserInfo = data => {
 	return request.post('/wechat/auth.center/save', data)

+ 12 - 0
common/styles/common.scss

@@ -66,12 +66,18 @@ ol, ul {
 .mt10 {
   margin-top: 10px;
 }
+.mt20 {
+	margin-top: 20px;
+}
 .mt15 {
   margin-top: 15px;
 }
 .mt9 {
 	margin-top: 18rpx;
 }
+.mt6 {
+	margin-top: 12rpx;
+}
 .mt8 {
 	margin-top: 16rpx;
 }
@@ -228,6 +234,9 @@ ol, ul {
 .fs20 {
 	font-size: 40rpx;
 }
+.fs24 {
+	font-size: 48rpx;
+}
 .fs26 {
 	font-size: 52rpx;
 }
@@ -258,6 +267,9 @@ ol, ul {
 .lh18{
 	line-height: 36rpx;
 }
+.lh20{
+	line-height: 40rpx;
+}
 .color-black {
 	color: #000;
 }

+ 1 - 1
manifest.json

@@ -4,7 +4,7 @@
     "description" : "",
     "versionName" : "1.0.0",
     "versionCode" : "100",
-    "sassImplementationName": "node-sass",
+    "sassImplementationName" : "node-sass",
     "transformPx" : false,
     /* 5+App特有相关 */
     "app-plus" : {

+ 202 - 104
package-lock.json

@@ -1,299 +1,387 @@
 {
+  "name": "fangliaoxiaochengxv",
+  "lockfileVersion": 3,
   "requires": true,
-  "lockfileVersion": 1,
-  "dependencies": {
-    "@babel/runtime": {
+  "packages": {
+    "": {
+      "dependencies": {
+        "@vant/weapp": "^1.11.7",
+        "dayjs": "^1.11.9",
+        "html2canvas": "^1.4.1",
+        "js-md5": "^0.7.3",
+        "jsqr": "^1.4.0",
+        "moment": "^2.29.4",
+        "vant-weapp": "^0.5.29",
+        "vconsole": "^3.14.6",
+        "vue-baidu-map": "^0.21.22",
+        "vue-jsonp": "^2.0.0",
+        "vue-pdf": "^4.3.0"
+      }
+    },
+    "node_modules/@babel/runtime": {
       "version": "7.18.9",
       "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz",
       "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==",
-      "requires": {
+      "dependencies": {
         "regenerator-runtime": "^0.13.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
       }
     },
-    "@types/json-schema": {
+    "node_modules/@types/json-schema": {
       "version": "7.0.11",
       "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
       "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ=="
     },
-    "@vant/weapp": {
+    "node_modules/@vant/weapp": {
       "version": "1.11.7",
       "resolved": "https://registry.npmmirror.com/@vant/weapp/-/weapp-1.11.7.tgz",
       "integrity": "sha512-Rwn9BBnb4kHSV4XmvBicwtd42J+amEUfnFDcXJsGNPNX4a9c/DoT6YLsm4X1wB2+sQbdiQsbFBLAvGRBxCkD8g=="
     },
-    "ajv": {
+    "node_modules/ajv": {
       "version": "6.12.6",
       "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
       "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "requires": {
+      "dependencies": {
         "fast-deep-equal": "^3.1.1",
         "fast-json-stable-stringify": "^2.0.0",
         "json-schema-traverse": "^0.4.1",
         "uri-js": "^4.2.2"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/epoberezkin"
       }
     },
-    "ajv-keywords": {
+    "node_modules/ajv-keywords": {
       "version": "3.5.2",
       "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
-      "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ=="
+      "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+      "peerDependencies": {
+        "ajv": "^6.9.1"
+      }
     },
-    "argparse": {
+    "node_modules/argparse": {
       "version": "1.0.10",
       "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
       "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
-      "requires": {
+      "dependencies": {
         "sprintf-js": "~1.0.2"
       }
     },
-    "babel-plugin-syntax-dynamic-import": {
+    "node_modules/babel-plugin-syntax-dynamic-import": {
       "version": "6.18.0",
       "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz",
       "integrity": "sha512-MioUE+LfjCEz65Wf7Z/Rm4XCP5k2c+TbMd2Z2JKc7U9uwjBhAfNPE48KC4GTGKhppMeYVepwDBNO/nGY6NYHBA=="
     },
-    "base64-arraybuffer": {
+    "node_modules/base64-arraybuffer": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
-      "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ=="
+      "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==",
+      "engines": {
+        "node": ">= 0.6.0"
+      }
     },
-    "big.js": {
+    "node_modules/big.js": {
       "version": "5.2.2",
       "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
-      "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="
+      "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+      "engines": {
+        "node": "*"
+      }
     },
-    "bmaplib.curveline": {
+    "node_modules/bmaplib.curveline": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/bmaplib.curveline/-/bmaplib.curveline-1.0.0.tgz",
       "integrity": "sha512-9wcFMVhiYxNPqpvsLDAADn3qDhNzXp2mA6VyHSHg2XOAgSooC7ZiujdFhy0sp+0QYjTfJ/MjmLuNoUg2HHxH4Q=="
     },
-    "bmaplib.heatmap": {
+    "node_modules/bmaplib.heatmap": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/bmaplib.heatmap/-/bmaplib.heatmap-1.0.4.tgz",
       "integrity": "sha512-rmhqUARBpUSJ9jXzUI2j7dIOqnc38bqubkx/8a349U2qtw/ulLUwyzRD535OrA8G7w5cz4aPKm6/rNvUAarg/Q=="
     },
-    "bmaplib.lushu": {
+    "node_modules/bmaplib.lushu": {
       "version": "1.0.7",
       "resolved": "https://registry.npmjs.org/bmaplib.lushu/-/bmaplib.lushu-1.0.7.tgz",
       "integrity": "sha512-LVvgpESPii6xGxyjnQjq8u+ic4NjvhdCPV/RiSS/PGTUdZKeTDS7prSpleJLZH3ES0+oc0gYn8bw0LtPYUSz2w=="
     },
-    "bmaplib.markerclusterer": {
+    "node_modules/bmaplib.markerclusterer": {
       "version": "1.0.13",
       "resolved": "https://registry.npmjs.org/bmaplib.markerclusterer/-/bmaplib.markerclusterer-1.0.13.tgz",
       "integrity": "sha512-VrLyWSiuDEVNi0yUfwOhFQ6z1oEEHS4w36GNu3iASu6p52QIx9uAXMUkuSCHReNR0bj2Cp9SA1dSx5RpojXajQ==",
-      "requires": {
+      "dependencies": {
         "bmaplib.texticonoverlay": "^1.0.2"
       }
     },
-    "bmaplib.texticonoverlay": {
+    "node_modules/bmaplib.texticonoverlay": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/bmaplib.texticonoverlay/-/bmaplib.texticonoverlay-1.0.2.tgz",
       "integrity": "sha512-4ZTWr4ZP3B6qEWput5Tut16CfZgII38YwM3bpyb4gFTQyORlKYryFp9WHWrwZZaHlOyYDAXG9SX0hka43jTADg=="
     },
-    "copy-text-to-clipboard": {
+    "node_modules/copy-text-to-clipboard": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz",
-      "integrity": "sha512-rvVsHrpFcL4F2P8ihsoLdFHmd404+CMg71S756oRSeQgqk51U3kicGdnvfkrxva0xXH92SjGS62B0XIJsbh+9Q=="
+      "integrity": "sha512-rvVsHrpFcL4F2P8ihsoLdFHmd404+CMg71S756oRSeQgqk51U3kicGdnvfkrxva0xXH92SjGS62B0XIJsbh+9Q==",
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
     },
-    "core-js": {
+    "node_modules/core-js": {
       "version": "3.24.1",
       "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.24.1.tgz",
-      "integrity": "sha512-0QTBSYSUZ6Gq21utGzkfITDylE8jWC9Ne1D2MrhvlsZBI1x39OdDIVbzSqtgMndIy6BlHxBXpMGqzZmnztg2rg=="
+      "integrity": "sha512-0QTBSYSUZ6Gq21utGzkfITDylE8jWC9Ne1D2MrhvlsZBI1x39OdDIVbzSqtgMndIy6BlHxBXpMGqzZmnztg2rg==",
+      "hasInstallScript": true,
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/core-js"
+      }
     },
-    "css-line-break": {
+    "node_modules/css-line-break": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz",
       "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
-      "requires": {
+      "dependencies": {
         "utrie": "^1.0.2"
       }
     },
-    "dayjs": {
+    "node_modules/dayjs": {
       "version": "1.11.9",
       "resolved": "http://106.54.170.196:4873/dayjs/-/dayjs-1.11.9.tgz",
       "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA=="
     },
-    "emojis-list": {
+    "node_modules/emojis-list": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
-      "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="
+      "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+      "engines": {
+        "node": ">= 4"
+      }
     },
-    "entities": {
+    "node_modules/entities": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
       "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w=="
     },
-    "fast-deep-equal": {
+    "node_modules/fast-deep-equal": {
       "version": "3.1.3",
       "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
       "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
     },
-    "fast-json-stable-stringify": {
+    "node_modules/fast-json-stable-stringify": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
       "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
     },
-    "html2canvas": {
+    "node_modules/html2canvas": {
       "version": "1.4.1",
       "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz",
       "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
-      "requires": {
+      "dependencies": {
         "css-line-break": "^2.1.0",
         "text-segmentation": "^1.0.3"
+      },
+      "engines": {
+        "node": ">=8.0.0"
       }
     },
-    "js-md5": {
+    "node_modules/js-md5": {
       "version": "0.7.3",
       "resolved": "https://registry.npmjs.org/js-md5/-/js-md5-0.7.3.tgz",
       "integrity": "sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ=="
     },
-    "json-schema-traverse": {
+    "node_modules/json-schema-traverse": {
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
       "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
     },
-    "json5": {
+    "node_modules/json5": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
       "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
-      "requires": {
+      "dependencies": {
         "minimist": "^1.2.0"
+      },
+      "bin": {
+        "json5": "lib/cli.js"
       }
     },
-    "jsqr": {
+    "node_modules/jsqr": {
       "version": "1.4.0",
       "resolved": "https://registry.npmmirror.com/jsqr/-/jsqr-1.4.0.tgz",
       "integrity": "sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A=="
     },
-    "linkify-it": {
+    "node_modules/linkify-it": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz",
       "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==",
-      "requires": {
+      "dependencies": {
         "uc.micro": "^1.0.1"
       }
     },
-    "loader-utils": {
+    "node_modules/loader-utils": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
       "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
-      "requires": {
+      "dependencies": {
         "big.js": "^5.2.2",
         "emojis-list": "^3.0.0",
         "json5": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4.0.0"
       }
     },
-    "markdown-it": {
+    "node_modules/markdown-it": {
       "version": "8.4.2",
       "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz",
       "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==",
-      "requires": {
+      "dependencies": {
         "argparse": "^1.0.7",
         "entities": "~1.1.1",
         "linkify-it": "^2.0.0",
         "mdurl": "^1.0.1",
         "uc.micro": "^1.0.5"
+      },
+      "bin": {
+        "markdown-it": "bin/markdown-it.js"
       }
     },
-    "mdurl": {
+    "node_modules/mdurl": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
       "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g=="
     },
-    "minimist": {
+    "node_modules/minimist": {
       "version": "1.2.6",
       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
       "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
     },
-    "moment": {
+    "node_modules/moment": {
       "version": "2.29.4",
       "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
-      "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
+      "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
+      "engines": {
+        "node": "*"
+      }
     },
-    "mutation-observer": {
+    "node_modules/mutation-observer": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/mutation-observer/-/mutation-observer-1.0.3.tgz",
       "integrity": "sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA=="
     },
-    "pdfjs-dist": {
+    "node_modules/pdfjs-dist": {
       "version": "2.6.347",
       "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.6.347.tgz",
       "integrity": "sha512-QC+h7hG2su9v/nU1wEI3SnpPIrqJODL7GTDFvR74ANKGq1AFJW16PH8VWnhpiTi9YcLSFV9xLeWSgq+ckHLdVQ=="
     },
-    "punycode": {
+    "node_modules/punycode": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
+      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+      "engines": {
+        "node": ">=6"
+      }
     },
-    "raw-loader": {
+    "node_modules/raw-loader": {
       "version": "4.0.2",
       "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz",
       "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==",
-      "requires": {
+      "dependencies": {
         "loader-utils": "^2.0.0",
         "schema-utils": "^3.0.0"
       },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
+      },
+      "peerDependencies": {
+        "webpack": "^4.0.0 || ^5.0.0"
+      }
+    },
+    "node_modules/raw-loader/node_modules/json5": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
+      "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
+      "bin": {
+        "json5": "lib/cli.js"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/raw-loader/node_modules/loader-utils": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz",
+      "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==",
       "dependencies": {
-        "json5": {
-          "version": "2.2.1",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
-          "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA=="
-        },
-        "loader-utils": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz",
-          "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==",
-          "requires": {
-            "big.js": "^5.2.2",
-            "emojis-list": "^3.0.0",
-            "json5": "^2.1.2"
-          }
-        }
+        "big.js": "^5.2.2",
+        "emojis-list": "^3.0.0",
+        "json5": "^2.1.2"
+      },
+      "engines": {
+        "node": ">=8.9.0"
       }
     },
-    "regenerator-runtime": {
+    "node_modules/regenerator-runtime": {
       "version": "0.13.9",
       "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
       "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
     },
-    "schema-utils": {
+    "node_modules/schema-utils": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
       "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
-      "requires": {
+      "dependencies": {
         "@types/json-schema": "^7.0.8",
         "ajv": "^6.12.5",
         "ajv-keywords": "^3.5.2"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/webpack"
       }
     },
-    "sprintf-js": {
+    "node_modules/sprintf-js": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
       "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
     },
-    "text-segmentation": {
+    "node_modules/text-segmentation": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz",
       "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
-      "requires": {
+      "dependencies": {
         "utrie": "^1.0.2"
       }
     },
-    "uc.micro": {
+    "node_modules/uc.micro": {
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
       "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="
     },
-    "uri-js": {
+    "node_modules/uri-js": {
       "version": "4.4.1",
       "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
       "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-      "requires": {
+      "dependencies": {
         "punycode": "^2.1.0"
       }
     },
-    "utrie": {
+    "node_modules/utrie": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz",
       "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
-      "requires": {
+      "dependencies": {
         "base64-arraybuffer": "^1.0.2"
       }
     },
@@ -302,44 +390,47 @@
       "resolved": "https://registry.npmmirror.com/uview-ui/-/uview-ui-2.0.38.tgz",
       "integrity": "sha512-6egHDf9lXHKpG3hEjRE0vMx4+VWwKk/ReTf5x18KrIKqdvdPRqO3+B8Unh7vYYwrIxzAWIlmhZ9RJpKI/4UqPQ=="
     },
-    "vant-weapp": {
+    "node_modules/vant-weapp": {
       "version": "0.5.29",
       "resolved": "https://registry.npmmirror.com/vant-weapp/-/vant-weapp-0.5.29.tgz",
       "integrity": "sha512-RMc0Ga914XFwspw2WuOMU8bOHlIkua8X1DoQ/KPnGQzjwT1uEL4S7W186EmaHF1wN2krB9BVd0LdRRt39dGh6Q=="
     },
-    "vconsole": {
+    "node_modules/vconsole": {
       "version": "3.14.6",
       "resolved": "https://registry.npmjs.org/vconsole/-/vconsole-3.14.6.tgz",
       "integrity": "sha512-8Ffk2SfNe6EzKqZ0aNnNjpAVBVT7zgJo81lYEJdKySYLVYBeSawdSkWi9fSjDg3WsQhgS1vNPmRqJDTuwdVbnQ==",
-      "requires": {
+      "dependencies": {
         "@babel/runtime": "^7.17.2",
         "copy-text-to-clipboard": "^3.0.1",
         "core-js": "^3.11.0",
         "mutation-observer": "^1.0.3"
       }
     },
-    "vue-baidu-map": {
+    "node_modules/vue-baidu-map": {
       "version": "0.21.22",
       "resolved": "https://registry.npmjs.org/vue-baidu-map/-/vue-baidu-map-0.21.22.tgz",
       "integrity": "sha512-WQMPCih4UTh0AZCKKH/OVOYnyAWjfRNeK6BIeoLmscyY5aF8zzlJhz/NOHLb3mdztIpB0Z6aohn4Jd9mfCSjQw==",
-      "requires": {
+      "dependencies": {
         "bmaplib.curveline": "^1.0.0",
         "bmaplib.heatmap": "^1.0.4",
         "bmaplib.lushu": "^1.0.7",
         "bmaplib.markerclusterer": "^1.0.13",
         "markdown-it": "^8.4.0"
+      },
+      "peerDependencies": {
+        "vue": "^2.1.8"
       }
     },
-    "vue-jsonp": {
+    "node_modules/vue-jsonp": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/vue-jsonp/-/vue-jsonp-2.0.0.tgz",
       "integrity": "sha512-Mzd9GNeuKP5hHFDWZNMWOsCuMILSkA6jo2l4A02wheFz3qqBzH7aSEFTey1BRCZCLizlaf1EqJ5YUtF392KspA=="
     },
-    "vue-pdf": {
+    "node_modules/vue-pdf": {
       "version": "4.3.0",
       "resolved": "https://registry.npmjs.org/vue-pdf/-/vue-pdf-4.3.0.tgz",
       "integrity": "sha512-zd3lJj6CbtrawgaaDDciTDjkJMUKiLWtbEmBg5CvFn9Noe9oAO/GNy/fc5c59qGuFCJ14ibIV1baw4S07e5bSQ==",
-      "requires": {
+      "dependencies": {
         "babel-plugin-syntax-dynamic-import": "^6.18.0",
         "loader-utils": "^1.4.0",
         "pdfjs-dist": "2.6.347",
@@ -348,29 +439,36 @@
         "worker-loader": "^2.0.0"
       }
     },
-    "vue-resize-sensor": {
+    "node_modules/vue-resize-sensor": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/vue-resize-sensor/-/vue-resize-sensor-2.0.0.tgz",
       "integrity": "sha512-W+y2EAI/BxS4Vlcca9scQv8ifeBFck56DRtSwWJ2H4Cw1GLNUYxiZxUHHkuzuI5JPW/cYtL1bPO5xPyEXx4LmQ=="
     },
-    "worker-loader": {
+    "node_modules/worker-loader": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/worker-loader/-/worker-loader-2.0.0.tgz",
       "integrity": "sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw==",
-      "requires": {
+      "dependencies": {
         "loader-utils": "^1.0.0",
         "schema-utils": "^0.4.0"
       },
+      "engines": {
+        "node": ">= 6.9.0 || >= 8.9.0"
+      },
+      "peerDependencies": {
+        "webpack": "^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0"
+      }
+    },
+    "node_modules/worker-loader/node_modules/schema-utils": {
+      "version": "0.4.7",
+      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz",
+      "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==",
       "dependencies": {
-        "schema-utils": {
-          "version": "0.4.7",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz",
-          "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==",
-          "requires": {
-            "ajv": "^6.1.0",
-            "ajv-keywords": "^3.1.0"
-          }
-        }
+        "ajv": "^6.1.0",
+        "ajv-keywords": "^3.1.0"
+      },
+      "engines": {
+        "node": ">= 4"
       }
     },
     "wot-design-uni": {

+ 17 - 1
pages.json

@@ -137,7 +137,23 @@
 					//					 "enablePullDownRefresh": false
 				}
 			},
-
+			{
+				"path": "storeConsumption/storeConsumption",
+				"style": {
+					"navigationBarTitleText": "订单确认",
+					"navigationBarBackgroundColor": "#F5F6F8",
+					"enablePullDownRefresh": false
+				}
+			},
+			{
+				"path": "storeConsumption/storeConsumptionOrder",
+				"style": {
+					"navigationBarTitleText": "",
+					"navigationStyle": "custom",
+					"navigationBarBackgroundColor": "#F5F6F8",
+					"enablePullDownRefresh": false
+				}
+			},
 			{
 				"path": "myOrder/myActivityOrder",
 				"style": {

+ 2 - 5
pages/home/index.vue

@@ -660,15 +660,12 @@ export default {
 
   .custom-indicator {
     position: absolute;
-    left: 0rpx;
-    right: 0rpx;
     bottom: 29rpx;
-    width: 712rpx;
     display: flex;
-    margin: 0 20rpx 0 20rpx;
+    margin: 0 0rpx 0 0rpx;
     flex-direction: row;
     justify-content: center;
-    transform: translateX(-48rpx);
+    transform: translateX(-80rpx);
 
     .custom-indicator-item {
       width: 16rpx;

+ 7 - 1
pages/mine/index.vue

@@ -284,9 +284,15 @@ export default {
         {
           name: "线下消费记录",
           url: require("@/static/ic-other-i.png"),
-          path: "/subPages/myOrder/myCourseOrder",
+          path: "/subPages/storeConsumption/storeConsumptionOrder",
           isVip: true
         },
+        // {
+        //   name: "线下消费记录",
+        //   url: require("@/static/ic-other-i.png"),
+        //   path: "/subPages/storeConsumption/storeConsumption?orderNo=SP20250509562476",
+        //   isVip: true
+        // },
         {
           name: "课程订单",
           url: require("@/static/ic-other-f.png"),

+ 1 - 1
subPages/goodsDetail/goodsDetail.vue

@@ -700,7 +700,6 @@ export default {
       })
     },
     submit() {
-      // console.log(2345, ths.selectSuitData)
       if (!this.isUserRegister) {
         this.showUserRegister = true
         return
@@ -718,6 +717,7 @@ export default {
           this.getCartNumber()
         })
       } else if (this.currentOperateType === 2) {
+
         // this.show = false
         if (this.goodsType == 'common') {
           let specText = this.selectedSuitPriceData.map(item => {

+ 2 - 2
subPages/personalDataManagement/index.vue

@@ -18,7 +18,7 @@
         <text class="left-title">昵称</text>
         <view class="h-view">
           <u-input v-model="form.nickname" placeholder="请输入" type="nickname" border="none" :auto-height="true"
-                   clearable customStyle="margin:0;text-align: right;" />
+                   clearable inputAlign="right"  />
         </view>
       </view>
       <u-divider  ></u-divider>
@@ -26,7 +26,7 @@
         <text class="left-title">姓名</text>
         <view class="h-view">
           <u-input v-model="form.realname" placeholder="请输入" border="none" :auto-height="true" clearable
-                   customStyle="margin:0;text-align: right;" />
+                   inputAlign="right"  />
         </view>
       </view>
       <u-divider  ></u-divider>

+ 4 - 4
subPages/service/serviceSave.vue

@@ -79,8 +79,8 @@
         <view class="display-flex-between" >
           <text class="left-title">预约人</text>
           <view class="h-view">
-            <u-input v-model="form.user_name" placeholder="请输入预约人" border="none" :auto-height="true"
-                     customStyle="margin:0;text-align: right;" />
+            <u-input v-model="form.user_name" placeholder="请输入预约人" border="none" inputAlign="right" :auto-height="true"
+                     />
           </view>
         </view>
         <u-divider  ></u-divider>
@@ -88,7 +88,7 @@
           <text class="left-title">联系方式</text>
           <view class="h-view" >
             <u-input type="number" v-model="form.user_phone" placeholder="请输入联系方式" border="none" :auto-height="true"
-                     customStyle="margin:0;text-align: right;" />
+                     inputAlign="right"  />
           </view>
         </view>
         <u-divider  ></u-divider>
@@ -132,7 +132,7 @@
           <text class="left-title">备注</text>
           <view class="h-view">
             <u-input v-model="form.order_remark" placeholder="请输入您的要求" border="none" :auto-height="true"
-                     customStyle="margin:0;text-align: right;" />
+                     inputAlign="right"  />
           </view>
         </view>
       </view>

+ 13 - 0
subPages/settleCenter/settleCenter.vue

@@ -466,6 +466,19 @@ export default {
   padding-bottom: 188rpx;
   box-sizing: border-box;
 }
+.bottom-box {
+  position: fixed;
+  bottom: 0;
+  width: 100%;
+  height: 170rpx;
+  left: 0;
+  right: 0;
+  box-sizing: border-box;
+  padding: 27rpx 30rpx;
+  background-color: #fff;
+  z-index: 1000;
+  border-radius: 24rpx 24rpx 0rpx 0rpx;
+}
 .settle-center-btn {
   height: 76rpx;
   line-height: 78rpx;

BIN
subPages/static/store-1.png


BIN
subPages/static/store-2.png


BIN
subPages/static/store-3.png


+ 401 - 0
subPages/storeConsumption/storeConsumption.vue

@@ -0,0 +1,401 @@
+<script>
+import {expenseDetail,expensePay} from "../../common/api";
+import UCodeInput from "../../components/uview-ui/components/u-code-input/u-code-input.vue";
+import {
+  getCustomerInfo,
+} from "../../common/api/user.js";
+export default {
+  name: "storeConsumption",
+  components: {UCodeInput},
+  data() {
+    return {
+      orderNo: '',
+      goodsList: [
+        {}, {}
+      ],
+      pwd:"",
+      show: false,
+      userInfo: {},
+      customerInfo: {},
+      detailData: {},
+      topData: {
+        top: 0,
+        height: 0
+      },
+    }
+  },
+  onLoad(options) {
+    this.orderNo = options.orderNo
+    console.log(
+        'options',
+        options
+    )
+    // const mData = uni.getStorageSync('selectTaskData') || undefined
+  },
+  onShow() {
+    const topData = uni.getMenuButtonBoundingClientRect()
+    this.topData.top = topData.top
+    this.topData.height = topData.height
+    const userInfo = uni.getStorageSync("userInfo");
+    this.userInfo = JSON.parse(userInfo);
+    this.expenseDetail()
+  },
+  methods: {
+    splitStr(str) {
+      if (!str) return ""
+      var split = str.split(';;');
+      return split[split.length - 1]
+    },
+    toPay() {
+      this.show = true
+    },
+    expenseDetail() {
+      getCustomerInfo().then(res => {
+        this.customerInfo = res.data||{}
+        if (this.customerInfo){
+          this.customerInfo.balance_total = this.customerInfo.balance_total ? parseFloat(this.customerInfo.balance_total) : 0;
+          this.customerInfo.balance_used = this.customerInfo.balance_used ? parseFloat(this.customerInfo.balance_used) : 0;
+          this.customerInfo.balance_num = this.customerInfo.balance_total - this.customerInfo.balance_used;
+        }
+      })
+      this.$api.expenseDetail(this.orderNo).then(res => {
+        this.detailData = res.data
+        this.goodsList = res.data.items || []
+      })
+    },
+    open() {
+    },
+    finish(e) {
+      this.$api.expensePay({order_no:this.orderNo,pay_pswd:e}).then(res => {
+        uni.showToast({
+          title: res.msg,
+          success: (res) => {
+            this.close()
+            this.expenseDetail()
+          },
+        });
+      })
+    },
+    forgotPwd(){
+      if (this.userInfo.pay_pswd && this.userInfo.pay_pswd.length > 0 ) {
+
+        uni.navigateTo({
+          url:  "/subPages/setting/setPwd?type=set-2",
+        });
+      }else{
+        uni.navigateTo({
+          url:  "/subPages/setting/setPwd?type=add",
+        });
+      }
+    },
+    close() {
+      this.show = false
+      // console.log('close');
+    }
+  }
+}
+</script>
+
+<template>
+  <view class="common-page">
+    <view class="header-box" :style="{
+				paddingBottom: '30rpx',
+				paddingTop: '60rpx',
+		  }" id="headerBox" ref="headerBox">
+      <view class="success-con  fs16" v-if="detailData.status===0">
+        <view class="display-flex-content-center">
+          <u-icon size="50rpx" name="checkmark-circle-fill" color="#E2B98E"></u-icon>
+          <text class="fw700 ml5 success-title-text">待确认</text>
+        </view>
+        <view class="text-center mtr20 mt5">请确认您的店内消费订单信息。</view>
+      </view>
+      <view class="success-con  fs16" v-else>
+        <view class="display-flex-content-center">
+          <u-icon size="50rpx" name="checkmark-circle-fill" color="#E2B98E"></u-icon>
+          <text class="fw700 ml5 success-title-text">已确认</text>
+        </view>
+        <view class="text-center mtr20 mt5">您的店内消费订单已确认。</view>
+      </view>
+    </view>
+
+    <view class="content-box">
+      <view class="common-card">
+        <view class="display-flex-center" style="justify-content: space-between;">
+          <text class="fs14 fw400 color-666">用户信息:</text>
+          <view class="display-flex-center">
+            <text class="fs14 fw400 color-333">{{ userInfo.username }}</text>
+            <text class="fs14 fw400 color-333 ml15">{{ userInfo.phone }}</text>
+          </view>
+
+        </view>
+        <view class="display-flex-center mt15" style="justify-content: space-between;">
+          <text class="fs14 fw400 color-666">订单编号:</text>
+          <text class="fs14 fw400 color-333">{{ detailData.order_no }}</text>
+        </view>
+        <view class="display-flex-center mt15" style="justify-content: space-between;">
+          <text class="fs14 fw400 color-666">生成时间:</text>
+          <text class="fs14 fw400 color-333">{{ detailData.created_at }}</text>
+        </view>
+      </view>
+      <!-- 订单编号 -->
+      <view class="common-card">
+        <view style="margin: 0 auto;" class="color-333 fw600 fs16 lh20">
+          消费信息
+        </view>
+        <!-- 已选商品 -->
+        <view class="display-flex-center" style="margin-top: 30rpx" v-for="(item, index) in goodsList" :key="index">
+          <image style="width: 155rpx; height: 155rpx; border-radius: 10rpx;margin-right: 10rpx;flex-shrink: 0;"
+                 :src="item.goods_cover" mode="aspectFill">
+          </image>
+          <view class="ml10" style=" width: 100%">
+            <view class="display-flex-center mb10">
+              <text class=" text-overflow-single goods-name">{{ item.goods_name }}</text>
+            </view>
+            <view class="display-flex-center mb10">
+              <text class="color-888 flex-shrink fw400 fs12 lh16">规格:</text>
+              <text class=" text-overflow-single fw400 fs12 lh16">{{ splitStr(item.goods_spec) }}</text>
+            </view>
+            <view class="display-flex-between " style="justify-content: space-between; width: 100%">
+              <text class="fw400 color-333   fs12 mb8">¥
+                <text class="fw700 color-333  fs16 mb8">{{ item.price_selling }}</text>
+              </text>
+              <text class="color-888">×{{ item.item_num }}</text>
+            </view>
+          </view>
+        </view>
+        <u-divider :dashed="true"></u-divider>
+        <view class="goods-total display-flex-center">
+          <view class="fs12 color-333 fw400">
+            共{{ detailData.number_item }}件商品&nbsp;&nbsp; 总计:
+            <text class=" fs12 fw400">¥</text>
+            <text class="fw700 fs18">{{ detailData.amount_goods }}</text>
+          </view>
+        </view>
+      </view>
+      <view class="common-card">
+        <view class="display-flex-center mt15" style="justify-content: space-between;">
+          <text class="fs14 fw400 color-666">折扣</text>
+          <text class="fs14 fw400 color-333">{{ detailData.discount }}</text>
+        </view>
+        <view class="display-flex-center mt15" style="justify-content: space-between;">
+          <text class="fs14 fw400 color-666">折扣后</text>
+          <text class=" fs12 fw400">¥
+            <text class="fw700 fs18">{{ detailData.amount_discount }}</text>
+          </text>
+        </view>
+      </view>
+    </view>
+
+    <!-- 底部支付区域 -->
+    <view class="bottom-box " v-if="detailData.status===0" >
+      <view class="balance display-flex-center" >
+        <image style="width: 32rpx;height: 32rpx;" :src="require('../static/store-1.png')">
+        </image>
+        <text class="balance-text ml10">账户余额:¥{{ customerInfo.balance_num }}</text>
+      </view>
+      <view class=" display-flex-center"  style="justify-content: space-between; width:  calc(100% - 60rpx); padding: 27rpx 30rpx;">
+        <view>应付:
+          <text class="color-556 fs12 fw400">¥</text>
+          <text class="fw700 fs20 color-556">{{ detailData.amount_discount }}</text>
+        </view>
+        <view class="settle-center-btn" @click="toPay">确认账单</view>
+      </view>
+    </view>
+    <u-popup :show="show" :round="10" :closeable="true" mode="center" @close="close" @open="open">
+      <view class="payment-popup">
+        <view class="payment-popup-title  display-flex-content-center mt20">请输入安全密码</view>
+        <view class=" display-flex-content-center mt20">
+          <text class=" fs12 fw400">¥
+            <text class="fw700 fs20">{{ detailData.amount_discount }}</text>
+          </text>
+        </view>
+        <view class=" display-flex-content-center mt30">
+          <u-code-input @finish="finish" v-model="pwd" :maxlength="6" mode="box"  dot :focus="true"></u-code-input>
+        </view>
+        <view class="forgot-password  display-flex-content-center mt20" @click="forgotPwd">未设置/忘记密码?</view>
+      </view>
+    </u-popup>
+  </view>
+</template>
+
+
+<style lang="scss" scoped>
+.payment-popup {
+  width: 500rpx;
+  height: 408rpx;
+  padding: 0 30rpx;
+  background: #FFFFFF;
+  border-radius: 32rpx 32rpx 32rpx 32rpx;
+}
+
+.payment-popup-title {
+  font-weight: 400;
+  font-size: 32rpx;
+  color: #333333;
+  line-height: 40rpx;
+  text-align: center;
+  font-style: normal;
+  text-transform: none;
+}
+
+.forgot-password{
+  font-weight: 400;
+  font-size: 24rpx;
+  color: #888888;
+  line-height: 32rpx;
+  text-align: justify;
+  font-style: normal;
+  text-transform: none;
+}
+.common-page {
+  height: 100vh;
+  overflow-y: auto;
+  // padding: 20rpx;
+  color: #2C2C2C;
+  padding-bottom: 188rpx;
+  box-sizing: border-box;
+}
+
+.coupon-list {
+  padding: 30rpx 20rpx;
+  background-color: #fff;
+  border-radius: 20rpx 20rpx 0 0;
+}
+
+.bottom-box {
+  position: fixed;
+  bottom: 0;
+  width: 100%;
+  height: 242rpx;
+  padding: 0;
+  left: 0;
+  right: 0;
+  box-sizing: border-box;
+  background-color: #fff;
+  z-index: 1000;
+  border-radius: 24rpx 24rpx 0rpx 0rpx;
+}
+.balance{
+  position: relative;
+  width: 100%;
+  height: 72rpx;
+  padding: 0 30rpx;
+}
+.balance::before {
+  content: '';
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  background: linear-gradient(315deg, #CA9359 0%, #E2B98E 100%);
+  border-radius: 0;
+  opacity: 0.1;
+  z-index: -1;
+}
+.balance-text{
+  font-weight: 400;
+  font-size: 28rpx;
+  color: #C29556;
+  line-height: 36rpx;
+  text-align: center;
+  font-style: normal;
+  text-transform: none;
+}
+
+.settle-center-btn {
+  height: 76rpx;
+  line-height: 78rpx;
+  width: 170rpx;
+  padding: 0 29rpx;
+  color: #fff;
+  background: linear-gradient(315deg, #CA9359 0%, #E2B98E 100%);
+  border-radius: 292rpx 292rpx 292rpx 292rpx;
+  font-size: 32rpx;
+  text-align: center;
+  margin-left: 30rpx;
+}
+
+.goods-name {
+  font-family: PingFang SC-Bold;
+  font-weight: 400;
+  font-size: 28rpx;
+  color: #333333;
+  line-height: 40rpx;
+  text-align: left;
+  font-style: normal;
+  text-transform: none;
+  // 加粗
+  font-weight: bold;
+}
+
+.content-box {
+  padding: 20rpx;
+}
+
+.goods-price {
+  font-family: D-DIN-Regular;
+  font-weight: 400;
+  font-size: 28rpx;
+  color: #333333;
+  line-height: 48rpx;
+  text-align: center;
+  font-style: normal;
+  text-transform: none;
+}
+
+.navbar-box {
+  position: relative;
+}
+
+.success-title-text {
+  font-size: 40rpx;
+  color: #333333;
+  line-height: 50rpx;
+  text-align: center;
+  font-style: normal;
+  text-transform: none;
+  // 加粗
+  font-weight: bold;
+}
+
+.text-center {
+  font-family: PingFang SC, PingFang SC;
+  font-weight: 400;
+  font-size: 24rpx;
+  color: #666666;
+  line-height: 40rpx;
+  text-align: center;
+  font-style: normal;
+  text-transform: none;
+}
+
+.good-card {
+  padding: 38rpx 22rpx;
+  color: #7A7A7A;
+
+  ::v-deep {
+    .u-textarea {
+      background: #F6F6F6;
+      border-radius: 12rpx 12rpx 12rpx 12rpx;
+      border: none;
+      padding: 18rpx;
+
+      .u-textarea__count {
+        background-color: transparent !important;
+      }
+    }
+  }
+}
+
+.goods-list {
+  margin: 0 30rpx;
+  padding: 30rpx 0;
+  border-bottom: 1rpx solid #F5F5F5;
+}
+
+.goods-total {
+  justify-content: flex-end;
+  margin: 27rpx 20rpx;
+}
+</style>

+ 184 - 0
subPages/storeConsumption/storeConsumptionOrder.vue

@@ -0,0 +1,184 @@
+<script>
+import {expenseDetail, expenseList, expensePay} from "../../common/api";
+import UCodeInput from "../../components/uview-ui/components/u-code-input/u-code-input.vue";
+import {getCustomerInfo} from "../../common/api/user";
+
+export default {
+  name: "storeConsumptionOrder",
+  components: { UCodeInput},
+  data() {
+    return {
+      orderNo: '',
+      goodsList: [
+        {}, {}
+      ],
+      pwd:"",
+      show: false,
+      userInfo: {},
+      customerInfo: {},
+      detailDataList: [],
+      pageParams: {
+        page: 1,
+        pageSize: 5,
+      },
+      topData: {
+        top: 0,
+        height: 0
+      },
+    }
+  },
+  onLoad(options) {
+    this.orderNo = options.orderNo
+    console.log(
+        'options',
+        options
+    )
+    // const mData = uni.getStorageSync('selectTaskData') || undefined
+  },
+  onReachBottom() {
+    this.expenseDetail()
+  },
+  onShow() {
+    const topData = uni.getMenuButtonBoundingClientRect()
+    this.topData.top = topData.top
+    this.topData.height = topData.height
+    const userInfo = uni.getStorageSync("userInfo");
+    this.userInfo = JSON.parse(userInfo);
+    this.expenseDetail(true)
+    this.getCustomerInfo()
+  },
+  methods: {
+    getCustomerInfo(){
+      getCustomerInfo().then(res => {
+        this.customerInfo = res.data||{}
+        if (this.customerInfo){
+          this.customerInfo.balance_total = this.customerInfo.balance_total ? parseFloat(this.customerInfo.balance_total) : 0;
+          this.customerInfo.balance_used = this.customerInfo.balance_used ? parseFloat(this.customerInfo.balance_used) : 0;
+          this.customerInfo.balance_num = this.customerInfo.balance_total - this.customerInfo.balance_used;
+        }
+      })
+    },
+    expenseDetail(initFlag) {
+      if (!initFlag) {
+        if (this.pageParams.page * this.pageParams.pageSize < this.total) {
+          this.pageParams.page++
+        } else {
+          return
+        }
+      } else {
+        this.pageParams.page = 1
+        this.total = 0
+        this.detailDataList = []
+      }
+      this.$api.expenseList(this.pageParams).then(res => {
+        this.detailDataList = res.data.list
+        this.total = res.data.page.total
+      })
+    },
+
+    toHome() {
+      uni.switchTab({
+        url: '/pages/home/index'
+      })
+    },
+
+  }
+}
+</script>
+
+<template>
+  <view class="common-page">
+    <view class="header-box" :style="{
+				paddingTop: '60rpx',
+		  }" id="headerBox" ref="headerBox">
+      <view class="navbar-box display-flex-content-center" :style="{
+					height: `${topData.height}px`,
+					paddingTop: `${topData.top}px`,
+					paddingBottom: '30rpx',
+					color: '#666666',
+					fontSize: '34rpx',
+					fontWeight: 'bold'
+				}">
+        <view @click="toHome" style="position: absolute;left:30rpx">
+          <u-icon size="20" name="arrow-left" color="#666666"></u-icon>
+        </view>
+        <text class="page-title">消费订单</text>
+      </view>
+    </view>
+
+    <view class="content-box">
+      <view class="common-card">
+        <view class="display-flex-center" style="justify-content: space-between;">
+          <view class="display-flex-center">
+            <image style="width: 32rpx;height: 32rpx;" :src="require('../static/store-2.png')">
+            </image>
+            <text style="margin-left: 16rpx" class="color-333 fs14">账户余额:</text>
+          </view>
+          <text style="margin-left: 16rpx" class="color-333 fw700 fs14">¥{{ customerInfo.balance_num }}</text>
+        </view>
+      </view>
+      <view class="common-card">
+        <view  v-for="(item, index) in detailDataList" :key="index">
+          <view class="display-flex-center"  >
+            <image style="width: 56rpx;height: 56rpx; margin-right: 16rpx" :src="require('../static/store-3.png')">
+            </image>
+            <view class="flex-center-column" style="width: 100%">
+              <text class="color-333 lh20 fs13 fw400" style="width: 100%">消费单号:{{ item.order_no }}</text>
+              <view class="display-flex-center mt6"   style="justify-content: space-between;width: 100%">
+                <text class="color-888 lh16 fs12 fw400 " >{{ item.created_at }}</text>
+                <text class="color-333 lh20 fs14 fw400 " >- ¥{{ item.amount_real }}</text>
+              </view>
+            </view>
+          </view>
+          <u-divider  v-if="detailDataList.length>0 &&  index <(detailDataList.length-1)" :dashed="true"></u-divider>
+        </view>
+
+      </view>
+    </view>
+
+  </view>
+</template>
+
+
+<style lang="scss" scoped>
+
+.page-title{
+  font-weight: 400;
+  font-size: 36rpx;
+  color: #333333;
+  line-height: 50rpx;
+  text-align: center;
+  font-style: normal;
+  text-transform: none;
+}
+
+
+.common-page {
+  height: 100vh;
+  overflow-y: auto;
+  // padding: 20rpx;
+  color: #2C2C2C;
+  padding-bottom: 188rpx;
+  box-sizing: border-box;
+}
+
+
+
+
+
+
+
+.content-box {
+  padding: 20rpx;
+}
+
+
+.navbar-box {
+  position: relative;
+}
+
+
+
+
+
+</style>

File diff suppressed because it is too large
+ 6 - 1041
yarn.lock


Some files were not shown because too many files changed in this diff