From f96ff2b030b91ddfe5e79328a7beec29f05c3101 Mon Sep 17 00:00:00 2001 From: 8vd8 <1936002261@qq.com> Date: Fri, 11 Apr 2025 18:03:32 +0800 Subject: [PATCH 1/9] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=BD=92?= =?UTF-8?q?=E8=BF=98=E6=88=90=E5=8A=9F=E9=A1=B5=E9=9D=A2=E5=8F=8A=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在 `pages.json` 中新增归还成功页面的配置,并在 `order/success.vue` 中实现设备状态提示和加载动画。同时,更新了订单支付逻辑,确保在支付成功后能够正确弹出充电宝。优化了订单状态查询和处理逻辑,提升用户体验。 --- config/user.js | 28 ++ pages.json | 8 + pages/index/index.vue | 21 +- pages/order/index.vue | 39 +- pages/order/payment.vue | 199 +++++----- pages/order/return-success.vue | 298 ++++++++++++++ pages/order/success.vue | 125 +++++- pages/return/index.vue | 362 +++++++++++------- .../dist/dev/.sourcemap/mp-weixin/app.js.map | 2 +- .../.sourcemap/mp-weixin/config/user.js.map | 2 +- .../mp-weixin/pages/index/index.js.map | 2 +- .../mp-weixin/pages/order/index.js.map | 2 +- .../mp-weixin/pages/order/payment.js.map | 2 +- .../pages/order/return-success.js.map | 1 + .../mp-weixin/pages/order/success.js.map | 2 +- .../mp-weixin/pages/return/index.js.map | 2 +- unpackage/dist/dev/mp-weixin/app.js | 1 + unpackage/dist/dev/mp-weixin/app.json | 3 +- unpackage/dist/dev/mp-weixin/common/vendor.js | 4 +- unpackage/dist/dev/mp-weixin/config/user.js | 28 +- .../dist/dev/mp-weixin/pages/index/index.js | 26 +- .../dist/dev/mp-weixin/pages/order/index.js | 36 +- .../dist/dev/mp-weixin/pages/order/payment.js | 165 ++++---- .../mp-weixin/pages/order/return-success.js | 108 ++++++ .../mp-weixin/pages/order/return-success.json | 6 + .../mp-weixin/pages/order/return-success.wxml | 1 + .../mp-weixin/pages/order/return-success.wxss | 139 +++++++ .../dist/dev/mp-weixin/pages/order/success.js | 75 +++- .../dev/mp-weixin/pages/order/success.wxml | 2 +- .../dev/mp-weixin/pages/order/success.wxss | 34 ++ .../dist/dev/mp-weixin/pages/return/index.js | 229 ++++++----- .../dev/mp-weixin/pages/return/index.wxml | 2 +- .../dev/mp-weixin/pages/return/index.wxss | 87 +++-- 33 files changed, 1505 insertions(+), 536 deletions(-) create mode 100644 pages/order/return-success.vue create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/pages/order/return-success.js.map create mode 100644 unpackage/dist/dev/mp-weixin/pages/order/return-success.js create mode 100644 unpackage/dist/dev/mp-weixin/pages/order/return-success.json create mode 100644 unpackage/dist/dev/mp-weixin/pages/order/return-success.wxml create mode 100644 unpackage/dist/dev/mp-weixin/pages/order/return-success.wxss diff --git a/config/user.js b/config/user.js index bb3d6a0..adbc6ff 100644 --- a/config/user.js +++ b/config/user.js @@ -56,9 +56,11 @@ export const createOrder = (data) => { //查询订单 export const queryById = (id) => { + console.log(`查询订单详情, orderId: ${id}`) return request({ url: `/app/order/${id}`, method: 'get', + hideLoading: true }) } @@ -91,6 +93,23 @@ export const rentPowerBank = (deviceNo, phone) => { }) } +//确认支付并弹出充电宝 +export const confirmPaymentAndRent = (orderId) => { + console.log(`确认支付并弹出充电宝, orderId: ${orderId}`) + return request({ + url: `/app/device/confirmPaymentAndRent?orderId=${orderId}`, + method: 'post' + }) +} + +//备用方法:直接发送租借指令 +export const sendRentCommand = (orderId) => { + console.log(`直接发送租借指令, orderId: ${orderId}`) + return request({ + url: `/app/device/sendRentCommand?orderId=${orderId}`, + method: 'post' + }) +} //投诉反馈 export const addUserFeedback = (data) => { @@ -100,3 +119,12 @@ export const addUserFeedback = (data) => { data, }) } + +//强制打开空格子 +export const forcefOpenEmptyGrid = (deviceNo) => { + console.log(`强制打开空格子, deviceNo: ${deviceNo}`) + return request({ + url: `/app/device/forcef/${deviceNo}`, + method: 'post' + }) +} diff --git a/pages.json b/pages.json index 0dc0761..417a27c 100644 --- a/pages.json +++ b/pages.json @@ -76,6 +76,14 @@ "navigationBarBackgroundColor": "#ffffff", "navigationBarTextStyle": "black" } + }, + { + "path": "pages/order/return-success", + "style": { + "navigationBarTitleText": "归还成功", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black" + } } ], "globalStyle": { diff --git a/pages/index/index.vue b/pages/index/index.vue index e6a7498..07b368e 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -48,7 +48,7 @@ + + \ No newline at end of file diff --git a/pages/order/success.vue b/pages/order/success.vue index 8643481..ddf3539 100644 --- a/pages/order/success.vue +++ b/pages/order/success.vue @@ -28,6 +28,14 @@ + + + {{ deviceMessage }} + + + + + @@ -37,19 +45,28 @@ \r\n\r\n"],"names":["uni","wxLogin"],"mappings":";;;;;;;;;;;;;;;;;AAOC,MAAK,YAAU;AAAA,EACd,UAAU,WAAW;AACpBA,kBAAAA,MAAA,MAAA,OAAA,iBAAY,YAAY;AAAA,EAExB;AAAA,EACD,QAAQ,iBAAiB;AACxBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AACtB,UAAM,KAAK,UAAU;AAAA,EAErB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AAAA,EACtB;AAAA,EAID,SAAS;AAAA,IACR,MAAM,YAAY;AACjB,UAAI;AACH,cAAM,cAAc,MAAMC,mBAAQ;AAClCD,sBAAAA,MAAY,MAAA,OAAA,iBAAA,WAAW,WAAW;AAAA,MAEjC,SAAO,OAAO;AACfA,sBAAAA,sCAAc,WAAW,KAAK;AAAA,MAG/B;AAAA,IACD;AAAA,EACD;AACD;;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"app.js","sources":["App.vue"],"sourcesContent":["\r\n\r\n"],"names":["uni","wxLogin"],"mappings":";;;;;;;;;;;;;;;;;;AAOC,MAAK,YAAU;AAAA,EACd,UAAU,WAAW;AACpBA,kBAAAA,MAAA,MAAA,OAAA,iBAAY,YAAY;AAAA,EAExB;AAAA,EACD,QAAQ,iBAAiB;AACxBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AACtB,UAAM,KAAK,UAAU;AAAA,EAErB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AAAA,EACtB;AAAA,EAID,SAAS;AAAA,IACR,MAAM,YAAY;AACjB,UAAI;AACH,cAAM,cAAc,MAAMC,mBAAQ;AAClCD,sBAAAA,MAAY,MAAA,OAAA,iBAAA,WAAW,WAAW;AAAA,MAEjC,SAAO,OAAO;AACfA,sBAAAA,sCAAc,WAAW,KAAK;AAAA,MAG/B;AAAA,IACD;AAAA,EACD;AACD;;;;;;;;;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/config/user.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/config/user.js.map index 4bbd045..2ffc8c6 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/config/user.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/config/user.js.map @@ -1 +1 @@ -{"version":3,"file":"user.js","sources":["config/user.js"],"sourcesContent":["import request from './http'\r\n\r\n\r\nexport const login = (data) => {\r\n return request({\r\n url: '/app/user/login',\r\n method: 'get',\r\n data\r\n })\r\n}\r\n\r\n\r\nexport const getMyIndexInfo = (data) => {\r\n return request({\r\n url: '/app/user/userInfo',\r\n method: 'get',\r\n data,\r\n })\r\n}\r\n\r\n//获取所有全部订单\r\nexport const getOrderList = (data) => {\r\n return request({\r\n url: '/app/order/list',\r\n method: 'get',\r\n data,\r\n hideLoading:true\r\n })\r\n}\r\n\r\n//查询是否有订单\r\nexport const queryHasOrder = (deviceNo) => {\r\n return request({\r\n url: `/app/order/list?deviceNo=${deviceNo}&orderStatus=in_used`,\r\n method: 'get',\r\n })\r\n}\r\n\r\n//设备查询\r\nexport const getDeviceInfo = (deviceNo) => {\r\n return request({\r\n url: `/app/device/${deviceNo}`,\r\n method: 'get',\r\n })\r\n}\r\n\r\n\r\n//创建订单\r\nexport const createOrder = (data) => {\r\n return request({\r\n url: '/app/order/add',\r\n method: 'post',\r\n data,\r\n })\r\n}\r\n\r\n//查询订单\r\nexport const queryById = (id) => {\r\n return request({\r\n url: `/app/order/${id}`,\r\n method: 'get',\r\n })\r\n}\r\n\r\n\r\n//取消订单\r\nexport const cancelOrder = (data) => {\r\n return request({\r\n url: '/orderInfo/cancelOrder',\r\n method: 'get',\r\n data,\r\n })\r\n}\r\n\r\n\r\n//结束订单\r\nexport const overOrderById = (orderId) => {\r\n console.log(`调用结束订单API, orderId: ${orderId}`)\r\n return request({\r\n url: `/app/order/close/${orderId}`,\r\n method: 'get',\r\n })\r\n}\r\n\r\n//立即租借\r\nexport const rentPowerBank = (deviceNo, phone) => {\r\n return request({\r\n url: '/app/device/rentPowerBank',\r\n method: 'post',\r\n data: { deviceNo, phone }\r\n })\r\n}\r\n\r\n\r\n//投诉反馈\r\nexport const addUserFeedback = (data) => {\r\n return request({\r\n url: '/app/feedback/add',\r\n method: 'post',\r\n data,\r\n })\r\n}\r\n"],"names":["request","uni"],"mappings":";;;AAGY,MAAC,QAAQ,CAAC,SAAS;AAC3B,SAAOA,oBAAQ;AAAA,IACX,KAAK;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,EACR,CAAK;AACL;AAGY,MAAC,iBAAiB,CAAC,SAAS;AACpC,SAAOA,oBAAQ;AAAA,IACX,KAAK;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,EACR,CAAK;AACL;AAGY,MAAC,eAAe,CAAC,SAAS;AAClC,SAAOA,oBAAQ;AAAA,IACX,KAAK;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,IACA,aAAY;AAAA,EACpB,CAAK;AACL;AAGY,MAAC,gBAAgB,CAAC,aAAa;AACvC,SAAOA,oBAAQ;AAAA,IACX,KAAK,4BAA4B,QAAQ;AAAA,IACzC,QAAQ;AAAA,EAChB,CAAK;AACL;AAGY,MAAC,gBAAgB,CAAC,aAAa;AACvC,SAAOA,oBAAQ;AAAA,IACX,KAAK,eAAe,QAAQ;AAAA,IAC5B,QAAQ;AAAA,EAChB,CAAK;AACL;AAaY,MAAC,YAAY,CAAC,OAAO;AAC7B,SAAOA,oBAAQ;AAAA,IACX,KAAK,cAAc,EAAE;AAAA,IACrB,QAAQ;AAAA,EAChB,CAAK;AACL;AAcY,MAAC,gBAAgB,CAAC,YAAY;AACtCC,gBAAY,MAAA,MAAA,OAAA,wBAAA,uBAAuB,OAAO,EAAE;AAC5C,SAAOD,oBAAQ;AAAA,IACX,KAAK,oBAAoB,OAAO;AAAA,IAChC,QAAQ;AAAA,EAChB,CAAK;AACL;AAGY,MAAC,gBAAgB,CAAC,UAAU,UAAU;AAC9C,SAAOA,oBAAQ;AAAA,IACX,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,MAAM,EAAE,UAAU,MAAO;AAAA,EACjC,CAAK;AACL;;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"user.js","sources":["config/user.js"],"sourcesContent":["import request from './http'\n\n\nexport const login = (data) => {\n return request({\n url: '/app/user/login',\n method: 'get',\n data\n })\n}\n\n\nexport const getMyIndexInfo = (data) => {\n return request({\n url: '/app/user/userInfo',\n method: 'get',\n data,\n })\n}\n\n//获取所有全部订单\nexport const getOrderList = (data) => {\n return request({\n url: '/app/order/list',\n method: 'get',\n data,\n hideLoading:true\n })\n}\n\n//查询是否有订单\nexport const queryHasOrder = (deviceNo) => {\n return request({\n url: `/app/order/list?deviceNo=${deviceNo}&orderStatus=in_used`,\n method: 'get',\n })\n}\n\n//设备查询\nexport const getDeviceInfo = (deviceNo) => {\n return request({\n url: `/app/device/${deviceNo}`,\n method: 'get',\n })\n}\n\n\n//创建订单\nexport const createOrder = (data) => {\n return request({\n url: '/app/order/add',\n method: 'post',\n data,\n })\n}\n\n//查询订单\nexport const queryById = (id) => {\n console.log(`查询订单详情, orderId: ${id}`)\n return request({\n url: `/app/order/${id}`,\n method: 'get',\n hideLoading: true\n })\n}\n\n\n//取消订单\nexport const cancelOrder = (data) => {\n return request({\n url: '/orderInfo/cancelOrder',\n method: 'get',\n data,\n })\n}\n\n\n//结束订单\nexport const overOrderById = (orderId) => {\n console.log(`调用结束订单API, orderId: ${orderId}`)\n return request({\n url: `/app/order/close/${orderId}`,\n method: 'get',\n })\n}\n\n//立即租借\nexport const rentPowerBank = (deviceNo, phone) => {\n return request({\n url: '/app/device/rentPowerBank',\n method: 'post',\n data: { deviceNo, phone }\n })\n}\n\n//确认支付并弹出充电宝\nexport const confirmPaymentAndRent = (orderId) => {\n console.log(`确认支付并弹出充电宝, orderId: ${orderId}`)\n return request({\n url: `/app/device/confirmPaymentAndRent?orderId=${orderId}`,\n method: 'post'\n })\n}\n\n//备用方法:直接发送租借指令\nexport const sendRentCommand = (orderId) => {\n console.log(`直接发送租借指令, orderId: ${orderId}`)\n return request({\n url: `/app/device/sendRentCommand?orderId=${orderId}`,\n method: 'post'\n })\n}\n\n//投诉反馈\nexport const addUserFeedback = (data) => {\n return request({\n url: '/app/feedback/add',\n method: 'post',\n data,\n })\n}\n\n//强制打开空格子\nexport const forcefOpenEmptyGrid = (deviceNo) => {\n console.log(`强制打开空格子, deviceNo: ${deviceNo}`)\n return request({\n url: `/app/device/forcef/${deviceNo}`,\n method: 'post'\n })\n}\n"],"names":["request","uni"],"mappings":";;;AAGY,MAAC,QAAQ,CAAC,SAAS;AAC3B,SAAOA,oBAAQ;AAAA,IACX,KAAK;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,EACR,CAAK;AACL;AAGY,MAAC,iBAAiB,CAAC,SAAS;AACpC,SAAOA,oBAAQ;AAAA,IACX,KAAK;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,EACR,CAAK;AACL;AAGY,MAAC,eAAe,CAAC,SAAS;AAClC,SAAOA,oBAAQ;AAAA,IACX,KAAK;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,IACA,aAAY;AAAA,EACpB,CAAK;AACL;AAGY,MAAC,gBAAgB,CAAC,aAAa;AACvC,SAAOA,oBAAQ;AAAA,IACX,KAAK,4BAA4B,QAAQ;AAAA,IACzC,QAAQ;AAAA,EAChB,CAAK;AACL;AAGY,MAAC,gBAAgB,CAAC,aAAa;AACvC,SAAOA,oBAAQ;AAAA,IACX,KAAK,eAAe,QAAQ;AAAA,IAC5B,QAAQ;AAAA,EAChB,CAAK;AACL;AAaY,MAAC,YAAY,CAAC,OAAO;AAC7BC,gBAAA,MAAA,MAAA,OAAA,wBAAY,oBAAoB,EAAE,EAAE;AACpC,SAAOD,oBAAQ;AAAA,IACX,KAAK,cAAc,EAAE;AAAA,IACrB,QAAQ;AAAA,IACR,aAAa;AAAA,EACrB,CAAK;AACL;AAuBY,MAAC,gBAAgB,CAAC,UAAU,UAAU;AAC9C,SAAOA,oBAAQ;AAAA,IACX,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,MAAM,EAAE,UAAU,MAAO;AAAA,EACjC,CAAK;AACL;AAGY,MAAC,wBAAwB,CAAC,YAAY;AAC9CC,gBAAY,MAAA,MAAA,OAAA,wBAAA,wBAAwB,OAAO,EAAE;AAC7C,SAAOD,oBAAQ;AAAA,IACX,KAAK,6CAA6C,OAAO;AAAA,IACzD,QAAQ;AAAA,EAChB,CAAK;AACL;AAGY,MAAC,kBAAkB,CAAC,YAAY;AACxCC,gBAAA,MAAA,MAAA,OAAA,yBAAY,sBAAsB,OAAO,EAAE;AAC3C,SAAOD,oBAAQ;AAAA,IACX,KAAK,uCAAuC,OAAO;AAAA,IACnD,QAAQ;AAAA,EAChB,CAAK;AACL;;;;;;;;;;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map index 95259c2..02bfb02 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["E:/迅雷下载/HBuilderX.4.57.2025032507/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvaW5kZXgvaW5kZXgudnVl"],"sourcesContent":["import MiniProgramPage from 'C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/pages/index/index.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["E:/迅雷下载/HBuilderX.4.57.2025032507/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvaW5kZXgvaW5kZXgudnVl"],"sourcesContent":["import MiniProgramPage from 'C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/pages/index/index.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/order/index.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/order/index.js.map index 2e30ddc..19e34df 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/order/index.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/order/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["E:/迅雷下载/HBuilderX.4.57.2025032507/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvb3JkZXIvaW5kZXgudnVl"],"sourcesContent":["import MiniProgramPage from 'C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/pages/order/index.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["E:/迅雷下载/HBuilderX.4.57.2025032507/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvb3JkZXIvaW5kZXgudnVl"],"sourcesContent":["import MiniProgramPage from 'C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/pages/order/index.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/order/payment.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/order/payment.js.map index b35cb9b..a3aca58 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/order/payment.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/order/payment.js.map @@ -1 +1 @@ -{"version":3,"file":"payment.js","sources":["E:/迅雷下载/HBuilderX.4.57.2025032507/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvb3JkZXIvcGF5bWVudC52dWU"],"sourcesContent":["import MiniProgramPage from 'C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/pages/order/payment.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"} \ No newline at end of file +{"version":3,"file":"payment.js","sources":["E:/迅雷下载/HBuilderX.4.57.2025032507/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvb3JkZXIvcGF5bWVudC52dWU"],"sourcesContent":["import MiniProgramPage from 'C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/pages/order/payment.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/order/return-success.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/order/return-success.js.map new file mode 100644 index 0000000..72cf303 --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/order/return-success.js.map @@ -0,0 +1 @@ +{"version":3,"file":"return-success.js","sources":["E:/迅雷下载/HBuilderX.4.57.2025032507/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvb3JkZXIvcmV0dXJuLXN1Y2Nlc3MudnVl"],"sourcesContent":["import MiniProgramPage from 'C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/pages/order/return-success.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/order/success.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/order/success.js.map index ab4d79a..1adb22a 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/order/success.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/order/success.js.map @@ -1 +1 @@ -{"version":3,"file":"success.js","sources":["E:/迅雷下载/HBuilderX.4.57.2025032507/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvb3JkZXIvc3VjY2Vzcy52dWU"],"sourcesContent":["import MiniProgramPage from 'C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/pages/order/success.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"} \ No newline at end of file +{"version":3,"file":"success.js","sources":["E:/迅雷下载/HBuilderX.4.57.2025032507/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvb3JkZXIvc3VjY2Vzcy52dWU"],"sourcesContent":["import MiniProgramPage from 'C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/pages/order/success.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/return/index.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/return/index.js.map index 1042ad6..1bf9be4 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/return/index.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/return/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["E:/迅雷下载/HBuilderX.4.57.2025032507/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvcmV0dXJuL2luZGV4LnZ1ZQ"],"sourcesContent":["import MiniProgramPage from 'C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/pages/return/index.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["E:/迅雷下载/HBuilderX.4.57.2025032507/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvcmV0dXJuL2luZGV4LnZ1ZQ"],"sourcesContent":["import MiniProgramPage from 'C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/pages/return/index.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/app.js b/unpackage/dist/dev/mp-weixin/app.js index f883f0d..904a26c 100644 --- a/unpackage/dist/dev/mp-weixin/app.js +++ b/unpackage/dist/dev/mp-weixin/app.js @@ -14,6 +14,7 @@ if (!Math) { "./pages/serve/bagCheck/index.js"; "./pages/return/index.js"; "./pages/order/success.js"; + "./pages/order/return-success.js"; } const _sfc_main = { onLaunch: function() { diff --git a/unpackage/dist/dev/mp-weixin/app.json b/unpackage/dist/dev/mp-weixin/app.json index e86f0fc..0a54f7f 100644 --- a/unpackage/dist/dev/mp-weixin/app.json +++ b/unpackage/dist/dev/mp-weixin/app.json @@ -10,7 +10,8 @@ "pages/device/detail", "pages/serve/bagCheck/index", "pages/return/index", - "pages/order/success" + "pages/order/success", + "pages/order/return-success" ], "window": { "navigationBarTextStyle": "black", diff --git a/unpackage/dist/dev/mp-weixin/common/vendor.js b/unpackage/dist/dev/mp-weixin/common/vendor.js index 09aabd0..0485fac 100644 --- a/unpackage/dist/dev/mp-weixin/common/vendor.js +++ b/unpackage/dist/dev/mp-weixin/common/vendor.js @@ -6874,9 +6874,9 @@ function initOnError() { }; } function initRuntimeSocketService() { - const hosts = "10.8.0.5,192.168.1.15,127.0.0.1"; + const hosts = "192.168.1.15,127.0.0.1"; const port = "8090"; - const id = "mp-weixin_07I937"; + const id = "mp-weixin_JcUW_t"; const lazy = typeof swan !== "undefined"; let restoreError = lazy ? () => { } : initOnError(); diff --git a/unpackage/dist/dev/mp-weixin/config/user.js b/unpackage/dist/dev/mp-weixin/config/user.js index ea492ae..0bad267 100644 --- a/unpackage/dist/dev/mp-weixin/config/user.js +++ b/unpackage/dist/dev/mp-weixin/config/user.js @@ -36,16 +36,11 @@ const getDeviceInfo = (deviceNo) => { }); }; const queryById = (id) => { + common_vendor.index.__f__("log", "at config/user.js:59", `查询订单详情, orderId: ${id}`); return config_http.request({ url: `/app/order/${id}`, - method: "get" - }); -}; -const overOrderById = (orderId) => { - common_vendor.index.__f__("log", "at config/user.js:78", `调用结束订单API, orderId: ${orderId}`); - return config_http.request({ - url: `/app/order/close/${orderId}`, - method: "get" + method: "get", + hideLoading: true }); }; const rentPowerBank = (deviceNo, phone) => { @@ -55,12 +50,27 @@ const rentPowerBank = (deviceNo, phone) => { data: { deviceNo, phone } }); }; +const confirmPaymentAndRent = (orderId) => { + common_vendor.index.__f__("log", "at config/user.js:98", `确认支付并弹出充电宝, orderId: ${orderId}`); + return config_http.request({ + url: `/app/device/confirmPaymentAndRent?orderId=${orderId}`, + method: "post" + }); +}; +const sendRentCommand = (orderId) => { + common_vendor.index.__f__("log", "at config/user.js:107", `直接发送租借指令, orderId: ${orderId}`); + return config_http.request({ + url: `/app/device/sendRentCommand?orderId=${orderId}`, + method: "post" + }); +}; +exports.confirmPaymentAndRent = confirmPaymentAndRent; exports.getDeviceInfo = getDeviceInfo; exports.getMyIndexInfo = getMyIndexInfo; exports.getOrderList = getOrderList; exports.login = login; -exports.overOrderById = overOrderById; exports.queryById = queryById; exports.queryHasOrder = queryHasOrder; exports.rentPowerBank = rentPowerBank; +exports.sendRentCommand = sendRentCommand; //# sourceMappingURL=../../.sourcemap/mp-weixin/config/user.js.map diff --git a/unpackage/dist/dev/mp-weixin/pages/index/index.js b/unpackage/dist/dev/mp-weixin/pages/index/index.js index 0971ef9..8ed3da1 100644 --- a/unpackage/dist/dev/mp-weixin/pages/index/index.js +++ b/unpackage/dist/dev/mp-weixin/pages/index/index.js @@ -15,6 +15,16 @@ const _sfc_main = { let deviceNo = util_index.getQueryString(scanResult.path, "deviceNo"); common_vendor.index.__f__("log", "at pages/index/index.vue:64", "扫码路径:", scanResult.path); common_vendor.index.__f__("log", "at pages/index/index.vue:65", "解析到的设备号:", deviceNo); + if (!deviceNo) { + common_vendor.index.showToast({ + title: "无效的设备二维码", + icon: "none" + }); + return; + } + if (!common_vendor.index.getStorageSync("token")) { + await util_index.wxLogin(); + } const inUseRes = await common_vendor.index.request({ url: `${common_vendor.index.getStorageSync("baseUrl") || "http://127.0.0.1:8080"}/app/order/inUse`, method: "GET", @@ -23,14 +33,14 @@ const _sfc_main = { "Clientid": common_vendor.index.getStorageSync("client_id") } }); - common_vendor.index.__f__("log", "at pages/index/index.vue:77", "使用中订单检查结果:", JSON.stringify(inUseRes)); + common_vendor.index.__f__("log", "at pages/index/index.vue:90", "使用中订单检查结果:", JSON.stringify(inUseRes)); if (inUseRes.statusCode === 200 && inUseRes.data.code === 200 && inUseRes.data.data) { const inUseOrder = inUseRes.data.data; - common_vendor.index.__f__("log", "at pages/index/index.vue:82", "检测到使用中订单,准备跳转:", inUseOrder); + common_vendor.index.__f__("log", "at pages/index/index.vue:95", "检测到使用中订单,准备跳转:", inUseOrder); common_vendor.index.reLaunch({ url: `/pages/return/index?orderId=${inUseOrder.orderId}&deviceId=${deviceNo || inUseOrder.deviceNo}` }); - common_vendor.index.__f__("log", "at pages/index/index.vue:88", "已发起页面跳转"); + common_vendor.index.__f__("log", "at pages/index/index.vue:101", "已发起页面跳转"); return; } const orderRes = await common_vendor.index.request({ @@ -41,21 +51,21 @@ const _sfc_main = { "Clientid": common_vendor.index.getStorageSync("client_id") } }); - common_vendor.index.__f__("log", "at pages/index/index.vue:102", "待支付订单检查结果:", JSON.stringify(orderRes)); + common_vendor.index.__f__("log", "at pages/index/index.vue:115", "待支付订单检查结果:", JSON.stringify(orderRes)); if (orderRes.statusCode === 200 && orderRes.data.code === 200 && orderRes.data.data) { const unpaidOrder = orderRes.data.data; - common_vendor.index.__f__("log", "at pages/index/index.vue:107", "检测到待支付订单,准备跳转:", unpaidOrder); + common_vendor.index.__f__("log", "at pages/index/index.vue:120", "检测到待支付订单,准备跳转:", unpaidOrder); common_vendor.index.navigateTo({ url: `/pages/order/payment?orderId=${unpaidOrder.orderId}` }); } else { - common_vendor.index.__f__("log", "at pages/index/index.vue:113", "无待支付订单,跳转到设备检查页面, deviceNo:", deviceNo); + common_vendor.index.__f__("log", "at pages/index/index.vue:126", "无待支付订单,直接跳转到设备详情页面, deviceNo:", deviceNo); common_vendor.index.navigateTo({ - url: `/pages/serve/bagCheck/index?deviceNo=${deviceNo}` + url: `/pages/device/detail?deviceNo=${deviceNo}` }); } } catch (error) { - common_vendor.index.__f__("error", "at pages/index/index.vue:119", "扫码处理失败:", error); + common_vendor.index.__f__("error", "at pages/index/index.vue:132", "扫码处理失败:", error); common_vendor.index.showToast({ title: "扫码失败", icon: "none" diff --git a/unpackage/dist/dev/mp-weixin/pages/order/index.js b/unpackage/dist/dev/mp-weixin/pages/order/index.js index c1075bd..d9a30e7 100644 --- a/unpackage/dist/dev/mp-weixin/pages/order/index.js +++ b/unpackage/dist/dev/mp-weixin/pages/order/index.js @@ -17,13 +17,18 @@ const _sfc_main = { const res = await config_user.queryById(options.orderId); if (res.code === 200 && res.data) { const orderData = res.data; + common_vendor.index.__f__("log", "at pages/order/index.vue:76", "特定订单数据:", JSON.stringify(orderData)); + common_vendor.index.__f__("log", "at pages/order/index.vue:77", "特定订单的开始时间:", orderData.startTime); + common_vendor.index.__f__("log", "at pages/order/index.vue:78", "特定订单的创建时间:", orderData.createTime); + const orderStartTime = orderData.startTime || orderData.createTime || ""; + common_vendor.index.__f__("log", "at pages/order/index.vue:82", "特定订单最终显示的开始时间:", orderStartTime); const formattedOrder = { orderNo: orderData.orderId, status: orderData.orderStatus, deviceId: orderData.deviceNo, - startTime: orderData.createTime, + startTime: orderStartTime, endTime: orderData.endTime || "", - amount: orderData.amount || "0.00" + amount: orderData.payAmount || orderData.actualDeviceAmount || "0.00" }; this.orderList = [formattedOrder, ...this.orderList]; const tabIndex = this.OrderStatusTabs.findIndex( @@ -34,7 +39,7 @@ const _sfc_main = { } } } catch (error) { - common_vendor.index.__f__("error", "at pages/order/index.vue:98", "获取订单详情失败:", error); + common_vendor.index.__f__("error", "at pages/order/index.vue:106", "获取订单详情失败:", error); } } await this.getOrderList(); @@ -44,17 +49,24 @@ const _sfc_main = { try { const res = await config_user.getOrderList(statusList); if (res.code === 200 && res.data && res.data.records) { - this.orderList = res.data.records.map((item) => ({ - orderNo: item.orderId, - status: item.orderStatus, - deviceId: item.deviceNo, - startTime: item.createTime, - endTime: item.endTime || "", - amount: item.amount || "0.00" - })); + common_vendor.index.__f__("log", "at pages/order/index.vue:118", "API返回的订单列表数据:", JSON.stringify(res.data.records)); + this.orderList = res.data.records.map((item) => { + common_vendor.index.__f__("log", "at pages/order/index.vue:122", `订单 ${item.orderId} 的开始时间:`, item.startTime); + common_vendor.index.__f__("log", "at pages/order/index.vue:123", `订单 ${item.orderId} 的创建时间:`, item.createTime); + const orderStartTime = item.startTime || item.createTime || ""; + common_vendor.index.__f__("log", "at pages/order/index.vue:127", `订单 ${item.orderId} 最终显示的开始时间:`, orderStartTime); + return { + orderNo: item.orderId, + status: item.orderStatus, + deviceId: item.deviceNo, + startTime: orderStartTime, + endTime: item.endTime || "", + amount: item.payAmount || item.actualDeviceAmount || "0.00" + }; + }); } } catch (error) { - common_vendor.index.__f__("error", "at pages/order/index.vue:121", "获取订单列表失败:", error); + common_vendor.index.__f__("error", "at pages/order/index.vue:140", "获取订单列表失败:", error); common_vendor.index.showToast({ title: "获取订单列表失败", icon: "none" diff --git a/unpackage/dist/dev/mp-weixin/pages/order/payment.js b/unpackage/dist/dev/mp-weixin/pages/order/payment.js index 607daee..4c9ab8c 100644 --- a/unpackage/dist/dev/mp-weixin/pages/order/payment.js +++ b/unpackage/dist/dev/mp-weixin/pages/order/payment.js @@ -98,27 +98,62 @@ const _sfc_main = { }, // 处理支付 async handlePayment() { + var _a; try { common_vendor.index.showLoading({ title: "处理中" }); + common_vendor.index.__f__("log", "at pages/order/payment.vue:206", "开始处理支付,订单号:", this.orderId); const res = await common_vendor.index.request({ - url: `${common_vendor.index.getStorageSync("baseUrl") || "http://127.0.0.1:8080"}/app/wx-payment/create/${this.orderInfo.orderNo}`, + url: `${common_vendor.index.getStorageSync("baseUrl") || "http://127.0.0.1:8080"}/app/payment/${this.orderInfo.orderNo}`, method: "GET", header: { "Authorization": "Bearer " + common_vendor.index.getStorageSync("token"), "Clientid": common_vendor.index.getStorageSync("client_id") } }); + common_vendor.index.__f__("log", "at pages/order/payment.vue:218", "支付API返回结果:", res.data); if (res.statusCode === 200 && res.data.code === 200) { - common_vendor.index.hideLoading(); - common_vendor.index.redirectTo({ - url: `/pages/order/success?orderId=${this.orderId}` + const payParams = res.data.data; + common_vendor.index.__f__("log", "at pages/order/payment.vue:224", "准备调用微信支付,参数:", payParams); + if (!payParams.timeStamp || !payParams.nonceStr || !payParams.packageValue || !payParams.paySign) { + common_vendor.index.__f__("error", "at pages/order/payment.vue:229", "支付参数不完整:", payParams); + throw new Error("支付参数不完整,请联系客服"); + } + common_vendor.index.requestPayment({ + provider: "wxpay", + timeStamp: payParams.timeStamp, + nonceStr: payParams.nonceStr, + package: payParams.packageValue, + // 后端返回的是packageValue字段 + signType: payParams.signType || "MD5", + paySign: payParams.paySign, + success: (payRes) => { + common_vendor.index.__f__("log", "at pages/order/payment.vue:242", "支付成功:", payRes); + common_vendor.index.hideLoading(); + this.pollOrderStatus(); + }, + fail: (err) => { + common_vendor.index.__f__("error", "at pages/order/payment.vue:248", "支付失败:", err); + common_vendor.index.hideLoading(); + if (err.errMsg === "requestPayment:fail cancel") { + common_vendor.index.__f__("log", "at pages/order/payment.vue:252", "用户取消了支付"); + return; + } + common_vendor.index.showToast({ + title: err.errMsg || "支付失败", + icon: "none" + }); + }, + complete: () => { + common_vendor.index.__f__("log", "at pages/order/payment.vue:261", "支付流程结束"); + } }); } else { - throw new Error(res.data.msg || "支付失败"); + throw new Error(((_a = res.data) == null ? void 0 : _a.msg) || "支付请求失败"); } } catch (error) { + common_vendor.index.__f__("error", "at pages/order/payment.vue:268", "支付处理错误:", error); common_vendor.index.hideLoading(); common_vendor.index.showToast({ title: error.message || "支付失败", @@ -126,92 +161,23 @@ const _sfc_main = { }); } }, - // 发送租借指令 - async sendRentCommand() { - try { - common_vendor.index.showLoading({ - title: "处理中" - }); - const res = await this.sendRentRequest(); - if (res.code === 200) { - common_vendor.index.hideLoading(); - common_vendor.index.showToast({ - title: "租借成功", - icon: "success" - }); - setTimeout(() => { - common_vendor.index.redirectTo({ - url: `/pages/order/index?orderId=${this.orderId}` - }); - }, 1500); - } else { - throw new Error(res.msg || "租借失败"); - } - } catch (error) { - common_vendor.index.hideLoading(); - common_vendor.index.showToast({ - title: error.message || "租借失败", - icon: "none" - }); - } - }, - // 发送租借请求 - sendRentRequest() { - return new Promise((resolve, reject) => { - common_vendor.index.request({ - url: `${common_vendor.index.getStorageSync("baseUrl") || "http://127.0.0.1:8080"}/app/device/sendRentCommand`, - method: "POST", - data: { - orderId: this.orderId - }, - header: { - "Content-Type": "application/x-www-form-urlencoded", - "Authorization": "Bearer " + common_vendor.index.getStorageSync("token"), - "Clientid": common_vendor.index.getStorageSync("client_id") - }, - success(res) { - if (res.statusCode === 200) { - resolve(res.data); - } else { - reject(new Error("请求失败")); - } - }, - fail(err) { - reject(err); - } - }); - }); - }, - // 格式化时间 - formatTime(date) { - const year = date.getFullYear(); - const month = (date.getMonth() + 1).toString().padStart(2, "0"); - const day = date.getDate().toString().padStart(2, "0"); - const hour = date.getHours().toString().padStart(2, "0"); - const minute = date.getMinutes().toString().padStart(2, "0"); - return `${year}-${month}-${day} ${hour}:${minute}`; - }, // 轮询订单状态 async pollOrderStatus() { let retryCount = 0; - const maxRetries = 10; - const interval = 1e3; + const maxRetries = 30; + const interval = 2e3; const checkStatus = async () => { try { - const res = await common_vendor.index.request({ - url: `${common_vendor.index.getStorageSync("baseUrl") || "http://127.0.0.1:8080"}/app/payment/status/${this.orderInfo.orderNo}`, - method: "GET", - header: { - "Authorization": "Bearer " + common_vendor.index.getStorageSync("token"), - "Clientid": common_vendor.index.getStorageSync("client_id") - } - }); - if (res.statusCode === 200 && res.data.code === 200) { - const orderData = res.data.data; - if (orderData.orderStatus === "IN_USED") { + const res = await config_user.queryById(this.orderId); + common_vendor.index.__f__("log", "at pages/order/payment.vue:287", "轮询订单状态结果:", res); + if (res.code === 200 && res.data) { + const orderData = res.data; + if (orderData.orderStatus === "IN_USED" || orderData.orderStatus === "PAYMENT_SUCCESSFUL") { + common_vendor.index.__f__("log", "at pages/order/payment.vue:294", "支付成功,订单状态:", orderData.orderStatus); common_vendor.index.showToast({ - title: "支付成功", - icon: "success" + title: "支付成功,充电宝已弹出", + icon: "success", + duration: 2e3 }); setTimeout(() => { common_vendor.index.redirectTo({ @@ -223,15 +189,34 @@ const _sfc_main = { } if (retryCount < maxRetries) { retryCount++; + common_vendor.index.__f__("log", "at pages/order/payment.vue:314", `第${retryCount}次轮询,等待订单状态更新...`); setTimeout(checkStatus, interval); } else { - throw new Error("订单状态查询超时"); + common_vendor.index.__f__("error", "at pages/order/payment.vue:317", "轮询订单状态超时"); + common_vendor.index.showModal({ + title: "提示", + content: '订单状态查询超时,请在"我的订单"中查看订单状态', + showCancel: false, + success: function(res2) { + if (res2.confirm) { + common_vendor.index.redirectTo({ + url: "/pages/order/index" + }); + } + } + }); } } catch (error) { - common_vendor.index.showToast({ - title: error.message || "查询订单状态失败", - icon: "none" - }); + common_vendor.index.__f__("error", "at pages/order/payment.vue:332", "查询订单状态失败:", error); + if (retryCount < maxRetries) { + retryCount++; + setTimeout(checkStatus, interval); + } else { + common_vendor.index.showToast({ + title: "查询订单状态失败", + icon: "none" + }); + } } }; checkStatus(); diff --git a/unpackage/dist/dev/mp-weixin/pages/order/return-success.js b/unpackage/dist/dev/mp-weixin/pages/order/return-success.js new file mode 100644 index 0000000..0dbe3f9 --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/pages/order/return-success.js @@ -0,0 +1,108 @@ +"use strict"; +const common_vendor = require("../../common/vendor.js"); +const config_user = require("../../config/user.js"); +const _sfc_main = { + data() { + return { + orderId: "", + orderInfo: { + orderNo: "", + deviceNo: "", + startTime: "", + usedTime: "", + currentFee: "0.00", + deposit: "99.00", + refundAmount: "99.00", + endTime: "" + } + }; + }, + onLoad(options) { + if (options && options.orderId) { + this.orderId = options.orderId; + this.loadOrderInfo(); + } else { + common_vendor.index.showToast({ + title: "订单信息不存在", + icon: "none" + }); + setTimeout(() => { + this.goToHome(); + }, 1500); + } + }, + methods: { + async loadOrderInfo() { + try { + common_vendor.index.showLoading({ + title: "加载中" + }); + const res = await config_user.queryById(this.orderId); + common_vendor.index.__f__("log", "at pages/order/return-success.vue:101", "归还成功页面获取的订单数据:", JSON.stringify(res.data)); + if (res.code === 200 && res.data) { + const orderData = res.data; + common_vendor.index.__f__("log", "at pages/order/return-success.vue:105", "订单的开始时间:", orderData.startTime); + common_vendor.index.__f__("log", "at pages/order/return-success.vue:106", "订单的创建时间:", orderData.createTime); + const deposit = 99; + const fee = parseFloat(orderData.currentFee || orderData.actualDeviceAmount || orderData.payAmount || "0"); + const refundAmount = (deposit - fee).toFixed(2); + this.orderInfo = { + orderNo: orderData.orderNo || orderData.orderId, + deviceNo: orderData.deviceNo, + startTime: orderData.startTime || orderData.createTime || "-", + usedTime: orderData.usedTime || "-", + currentFee: orderData.currentFee || orderData.actualDeviceAmount || orderData.payAmount || "0.00", + deposit: deposit.toFixed(2), + refundAmount, + endTime: orderData.endTime || this.formatTime(/* @__PURE__ */ new Date()) + }; + common_vendor.index.__f__("log", "at pages/order/return-success.vue:124", "处理后的订单信息:", JSON.stringify(this.orderInfo)); + } else { + throw new Error("获取订单信息失败"); + } + common_vendor.index.hideLoading(); + } catch (error) { + common_vendor.index.hideLoading(); + common_vendor.index.showToast({ + title: error.message || "获取订单信息失败", + icon: "none" + }); + } + }, + formatTime(date) { + const year = date.getFullYear(); + const month = (date.getMonth() + 1).toString().padStart(2, "0"); + const day = date.getDate().toString().padStart(2, "0"); + const hour = date.getHours().toString().padStart(2, "0"); + const minute = date.getMinutes().toString().padStart(2, "0"); + const second = date.getSeconds().toString().padStart(2, "0"); + return `${year}-${month}-${day} ${hour}:${minute}:${second}`; + }, + goToHome() { + common_vendor.index.switchTab({ + url: "/pages/index/index" + }); + }, + goToOrderList() { + common_vendor.index.redirectTo({ + url: "/pages/order/index" + }); + } + } +}; +function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return { + a: common_vendor.t($data.orderInfo.orderNo || "-"), + b: common_vendor.t($data.orderInfo.deviceNo || "-"), + c: common_vendor.t($data.orderInfo.usedTime || "-"), + d: common_vendor.t($data.orderInfo.currentFee || "0.00"), + e: common_vendor.t($data.orderInfo.endTime || "-"), + f: common_vendor.t($data.orderInfo.deposit || "99.00"), + g: common_vendor.t($data.orderInfo.refundAmount || "99.00"), + h: common_vendor.o((...args) => $options.goToHome && $options.goToHome(...args)), + i: common_vendor.o((...args) => $options.goToOrderList && $options.goToOrderList(...args)) + }; +} +const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-eb1f1ee2"]]); +wx.createPage(MiniProgramPage); +//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/order/return-success.js.map diff --git a/unpackage/dist/dev/mp-weixin/pages/order/return-success.json b/unpackage/dist/dev/mp-weixin/pages/order/return-success.json new file mode 100644 index 0000000..0bd5924 --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/pages/order/return-success.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "归还成功", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "usingComponents": {} +} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/pages/order/return-success.wxml b/unpackage/dist/dev/mp-weixin/pages/order/return-success.wxml new file mode 100644 index 0000000..b7f5cdf --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/pages/order/return-success.wxml @@ -0,0 +1 @@ +归还成功您的充电宝已归还,押金已退回订单信息订单号{{a}}设备号{{b}}使用时长{{c}}费用¥{{d}}归还时间{{e}}退还信息押金¥{{f}}退还金额¥{{g}}退还状态已退还 \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/pages/order/return-success.wxss b/unpackage/dist/dev/mp-weixin/pages/order/return-success.wxss new file mode 100644 index 0000000..a7fc30c --- /dev/null +++ b/unpackage/dist/dev/mp-weixin/pages/order/return-success.wxss @@ -0,0 +1,139 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ +/* 颜色变量 */ +/* 行为相关颜色 */ +/* 文字基本颜色 */ +/* 背景颜色 */ +/* 边框颜色 */ +/* 尺寸变量 */ +/* 文字尺寸 */ +/* 图片尺寸 */ +/* Border Radius */ +/* 水平间距 */ +/* 垂直间距 */ +/* 透明度 */ +/* 文章场景相关 */ +.success-container.data-v-eb1f1ee2 { + padding: 20px; + background-color: #f8f8f8; + min-height: 100vh; +} +.status-card.data-v-eb1f1ee2 { + background-color: #fff; + border-radius: 12px; + padding: 30px; + text-align: center; + margin-bottom: 20px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04); +} +.status-card .status-icon.data-v-eb1f1ee2 { + width: 60px; + height: 60px; + margin: 0 auto 16px; +} +.status-card .status-icon.success.data-v-eb1f1ee2 { + background-color: #07c160; + border-radius: 50%; + position: relative; +} +.status-card .status-icon.success.data-v-eb1f1ee2::after { + content: ""; + position: absolute; + left: 50%; + top: 50%; + width: 30px; + height: 20px; + border: 3px solid #fff; + border-top: none; + border-right: none; + transform-origin: center; + transform: translate(-50%, -70%) rotate(-45deg); +} +.status-card .status-text.data-v-eb1f1ee2 { + font-size: 24px; + font-weight: bold; + color: #07c160; + margin-bottom: 8px; +} +.status-card .status-desc.data-v-eb1f1ee2 { + font-size: 14px; + color: #666; +} +.order-card.data-v-eb1f1ee2, .refund-card.data-v-eb1f1ee2 { + background-color: #fff; + border-radius: 12px; + padding: 20px; + margin-bottom: 20px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04); +} +.order-card .card-title.data-v-eb1f1ee2, .refund-card .card-title.data-v-eb1f1ee2 { + font-size: 16px; + font-weight: bold; + margin-bottom: 16px; + color: #333; + border-bottom: 1px solid #f0f0f0; + padding-bottom: 10px; +} +.order-card .info-item.data-v-eb1f1ee2, .refund-card .info-item.data-v-eb1f1ee2 { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 12px; +} +.order-card .info-item.data-v-eb1f1ee2:last-child, .refund-card .info-item.data-v-eb1f1ee2:last-child { + margin-bottom: 0; +} +.order-card .info-item .label.data-v-eb1f1ee2, .refund-card .info-item .label.data-v-eb1f1ee2 { + color: #666; + font-size: 14px; +} +.order-card .info-item .value.data-v-eb1f1ee2, .refund-card .info-item .value.data-v-eb1f1ee2 { + color: #333; + font-size: 14px; +} +.order-card .info-item .value.highlight.data-v-eb1f1ee2, .refund-card .info-item .value.highlight.data-v-eb1f1ee2 { + color: #ff6b00; + font-weight: bold; + font-size: 16px; +} +.order-card .info-item .value.success.data-v-eb1f1ee2, .refund-card .info-item .value.success.data-v-eb1f1ee2 { + color: #07c160; +} +.button-group.data-v-eb1f1ee2 { + margin-top: 30px; + display: flex; + flex-direction: column; + gap: 16px; +} +.button-group .primary-btn.data-v-eb1f1ee2 { + background-color: #07c160; + color: #fff; + border: none; + border-radius: 24px; + padding: 12px; + font-size: 16px; +} +.button-group .primary-btn.data-v-eb1f1ee2:active { + opacity: 0.8; +} +.button-group .secondary-btn.data-v-eb1f1ee2 { + background-color: #fff; + color: #07c160; + border: 1px solid #07c160; + border-radius: 24px; + padding: 12px; + font-size: 16px; +} +.button-group .secondary-btn.data-v-eb1f1ee2:active { + background-color: #f5f5f5; +} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/pages/order/success.js b/unpackage/dist/dev/mp-weixin/pages/order/success.js index 7ea6aba..f05e875 100644 --- a/unpackage/dist/dev/mp-weixin/pages/order/success.js +++ b/unpackage/dist/dev/mp-weixin/pages/order/success.js @@ -5,13 +5,20 @@ const _sfc_main = { data() { return { orderId: "", - orderInfo: {} + orderInfo: {}, + isLoading: true, + deviceMessage: "正在准备您的设备,请稍候...", + hasTriggeredDevice: false }; }, onLoad(options) { if (options && options.orderId) { this.orderId = options.orderId; this.loadOrderInfo(); + common_vendor.index.$once("orderSuccess:" + this.orderId, () => { + common_vendor.index.__f__("log", "at pages/order/success.vue:67", "已经触发过弹出逻辑,不再重复触发"); + this.hasTriggeredDevice = true; + }); } else { common_vendor.index.showToast({ title: "订单信息不存在", @@ -34,9 +41,19 @@ const _sfc_main = { this.orderInfo = { orderNo: orderData.orderNo || orderData.orderId, deviceNo: orderData.deviceNo, - amount: orderData.amount, - payTime: this.formatTime(/* @__PURE__ */ new Date()) + amount: orderData.payAmount || orderData.amount, + payTime: orderData.payTime || this.formatTime(/* @__PURE__ */ new Date()) }; + if (orderData.orderStatus === "IN_USED") { + this.deviceMessage = "设备已弹出,请取走您的充电宝"; + this.isLoading = false; + if (!this.hasTriggeredDevice) { + common_vendor.index.$emit("orderSuccess:" + this.orderId); + this.hasTriggeredDevice = true; + } + } else { + this.triggerDeviceEject(); + } } else { throw new Error("获取订单信息失败"); } @@ -49,6 +66,47 @@ const _sfc_main = { }); } }, + // 触发弹出充电宝 + async triggerDeviceEject() { + if (this.hasTriggeredDevice) { + common_vendor.index.__f__("log", "at pages/order/success.vue:129", "已经触发过弹出充电宝,不重复触发"); + return; + } + this.hasTriggeredDevice = true; + common_vendor.index.$emit("orderSuccess:" + this.orderId); + this.isLoading = true; + this.deviceMessage = "正在准备您的设备,请稍候..."; + try { + common_vendor.index.__f__("log", "at pages/order/success.vue:139", `准备触发弹出充电宝,orderId: ${this.orderId}`); + let result; + try { + result = await config_user.confirmPaymentAndRent(this.orderId); + common_vendor.index.__f__("log", "at pages/order/success.vue:145", "确认支付并弹出充电宝结果:", JSON.stringify(result)); + } catch (error) { + common_vendor.index.__f__("error", "at pages/order/success.vue:147", "确认支付并弹出失败,尝试备用方法:", error); + result = await config_user.sendRentCommand(this.orderId); + common_vendor.index.__f__("log", "at pages/order/success.vue:150", "发送租借指令结果:", JSON.stringify(result)); + } + if (result && result.code === 200) { + this.deviceMessage = "设备已弹出,请取走您的充电宝"; + common_vendor.index.showToast({ + title: "充电宝已弹出", + icon: "success" + }); + } else { + throw new Error(result && result.msg || "弹出充电宝失败"); + } + } catch (error) { + common_vendor.index.__f__("error", "at pages/order/success.vue:163", "弹出充电宝错误:", error); + this.deviceMessage = "弹出设备失败,请联系客服"; + common_vendor.index.showToast({ + title: error.message || "弹出充电宝失败,请联系客服", + icon: "none" + }); + } finally { + this.isLoading = false; + } + }, formatTime(date) { const year = date.getFullYear(); const month = (date.getMonth() + 1).toString().padStart(2, "0"); @@ -71,14 +129,17 @@ const _sfc_main = { } }; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { - return { + return common_vendor.e({ a: common_vendor.t($data.orderInfo.orderNo || "-"), b: common_vendor.t($data.orderInfo.deviceNo || "-"), c: common_vendor.t($data.orderInfo.amount || "0.00"), d: common_vendor.t($data.orderInfo.payTime || "-"), - e: common_vendor.o((...args) => $options.goToHome && $options.goToHome(...args)), - f: common_vendor.o((...args) => $options.goToOrderList && $options.goToOrderList(...args)) - }; + e: common_vendor.t($data.deviceMessage), + f: $data.isLoading + }, $data.isLoading ? {} : {}, { + g: common_vendor.o((...args) => $options.goToHome && $options.goToHome(...args)), + h: common_vendor.o((...args) => $options.goToOrderList && $options.goToOrderList(...args)) + }); } const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-2795c576"]]); wx.createPage(MiniProgramPage); diff --git a/unpackage/dist/dev/mp-weixin/pages/order/success.wxml b/unpackage/dist/dev/mp-weixin/pages/order/success.wxml index 8221df9..5f0f785 100644 --- a/unpackage/dist/dev/mp-weixin/pages/order/success.wxml +++ b/unpackage/dist/dev/mp-weixin/pages/order/success.wxml @@ -1 +1 @@ -支付成功您的订单已支付成功订单信息订单号{{a}}设备号{{b}}支付金额¥{{c}}支付时间{{d}} \ No newline at end of file +支付成功您的订单已支付成功订单信息订单号{{a}}设备号{{b}}支付金额¥{{c}}支付时间{{d}}{{e}} \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/pages/order/success.wxss b/unpackage/dist/dev/mp-weixin/pages/order/success.wxss index b65872a..ab42c95 100644 --- a/unpackage/dist/dev/mp-weixin/pages/order/success.wxss +++ b/unpackage/dist/dev/mp-weixin/pages/order/success.wxss @@ -93,6 +93,40 @@ color: #333; font-size: 14px; } +.device-status.data-v-2795c576 { + background-color: #fff; + border-radius: 12px; + padding: 20px; + margin-bottom: 20px; + text-align: center; +} +.device-status .status-message.data-v-2795c576 { + font-size: 16px; + color: #333; + margin-bottom: 12px; +} +.device-status .loading-animation.data-v-2795c576 { + display: flex; + justify-content: center; + align-items: center; + height: 40px; +} +.device-status .loading-animation .loading-circle.data-v-2795c576 { + width: 30px; + height: 30px; + border-radius: 50%; + border: 3px solid #f0f0f0; + border-top-color: #07c160; + animation: spin-2795c576 1s linear infinite; +} +@keyframes spin-2795c576 { +0% { + transform: rotate(0deg); +} +100% { + transform: rotate(360deg); +} +} .button-group.data-v-2795c576 { margin-top: 30px; display: flex; diff --git a/unpackage/dist/dev/mp-weixin/pages/return/index.js b/unpackage/dist/dev/mp-weixin/pages/return/index.js index ad07764..c634427 100644 --- a/unpackage/dist/dev/mp-weixin/pages/return/index.js +++ b/unpackage/dist/dev/mp-weixin/pages/return/index.js @@ -8,39 +8,62 @@ const _sfc_main = { orderInfo: { orderId: "", startTime: "", + _rawStartTime: "", + // 用于调试 usedTime: "0分钟", - currentFee: "0.00" + currentFee: "0.00", + orderStatus: "in_used" + // 默认状态为使用中 }, - unlocking: false, - timer: null + timer: null, + statusCheckTimer: null, + maxStatusChecks: 30, + // 最多检查30次 + currentStatusChecks: 0, + statusCheckInterval: 5e3 + // 5秒检查一次 }; }, onLoad(options) { - common_vendor.index.__f__("log", "at pages/return/index.vue:77", "Return page loaded with options:", JSON.stringify(options)); + common_vendor.index.__f__("log", "at pages/return/index.vue:93", "Return page loaded with options:", JSON.stringify(options)); this.orderInfo.orderId = options.orderId || ""; - this.deviceId = options.deviceId || ""; - common_vendor.index.__f__("log", "at pages/return/index.vue:83", `初始化参数: orderId=${this.orderInfo.orderId}, deviceId=${this.deviceId}`); + this.deviceId = options.deviceNo || options.deviceId || ""; + common_vendor.index.__f__("log", "at pages/return/index.vue:99", `初始化参数: orderId=${this.orderInfo.orderId}, deviceId=${this.deviceId}`); if (!this.orderInfo.orderId && this.deviceId) { this.getOrderByDevice(); } else if (this.orderInfo.orderId) { this.getOrderDetails(); this.startTimer(); + this.startStatusCheckTimer(); } else { common_vendor.index.showToast({ title: "缺少订单信息", icon: "none" }); setTimeout(() => { - common_vendor.index.reLaunch({ - url: "/pages/index/index" - }); + this.goToHome(); }, 1500); } }, onUnload() { this.clearTimer(); + this.clearStatusCheckTimer(); }, methods: { + // 根据订单状态获取对应的文字显示 + getOrderStatusText() { + const statusMap = { + "waiting_for_payment": "待支付", + "payment_in_progress": "支付中", + "payment_successful": "支付成功", + "in_used": "使用中", + "payment_failed": "支付失败", + "order_cancelled": "订单取消", + "used_done": "订单完成", + "used_down": "订单完成" + }; + return statusMap[this.orderInfo.orderStatus] || "使用中"; + }, // 获取订单详情 async getOrderDetails() { try { @@ -48,43 +71,38 @@ const _sfc_main = { if (!this.orderInfo.orderId) { throw new Error("订单ID不能为空"); } - common_vendor.index.__f__("log", "at pages/return/index.vue:122", "请求订单详情, orderId:", this.orderInfo.orderId); + common_vendor.index.__f__("log", "at pages/return/index.vue:155", "请求订单详情, orderId:", this.orderInfo.orderId); const result = await config_user.queryById(this.orderInfo.orderId); - common_vendor.index.__f__("log", "at pages/return/index.vue:124", "订单详情结果:", JSON.stringify(result)); + common_vendor.index.__f__("log", "at pages/return/index.vue:157", "订单详情结果:", JSON.stringify(result)); if (result.code === 200 && result.data) { const orderData = result.data; - common_vendor.index.__f__("log", "at pages/return/index.vue:128", "订单数据:", JSON.stringify(orderData)); - this.updateOrderInfo(orderData); - const rawTime = orderData.startTime; - common_vendor.index.__f__("log", "at pages/return/index.vue:135", "开始时间:", rawTime); - if (rawTime) { - try { - const date = new Date(rawTime.replace(" ", "T")); - if (!isNaN(date.getTime())) { - this.orderInfo.startTime = this.formatTime(date); - } else { - this.orderInfo.startTime = rawTime; - } - } catch (e) { - common_vendor.index.__f__("error", "at pages/return/index.vue:148", "时间格式化错误:", e); - this.orderInfo.startTime = rawTime; - } - } else { - this.orderInfo.startTime = "未知"; + common_vendor.index.__f__("log", "at pages/return/index.vue:161", "订单原始数据:", orderData); + common_vendor.index.__f__("log", "at pages/return/index.vue:162", "开始时间字段:", orderData.startTime, typeof orderData.startTime); + if (orderData.orderStatus) { + this.orderInfo.orderStatus = orderData.orderStatus; } + if (orderData.orderStatus && orderData.orderStatus === "used_down") { + this.clearTimer(); + this.clearStatusCheckTimer(); + common_vendor.index.__f__("log", "at pages/return/index.vue:176", "订单已完成,准备跳转到归还成功页面"); + common_vendor.index.redirectTo({ + url: `/pages/order/return-success?orderId=${this.orderInfo.orderId}` + }); + return; + } + this.updateOrderInfo(orderData); + common_vendor.index.__f__("log", "at pages/return/index.vue:187", "更新后的开始时间:", this.orderInfo.startTime); } else { throw new Error(result.msg || "获取订单详情失败"); } } catch (error) { - common_vendor.index.__f__("error", "at pages/return/index.vue:158", "获取订单详情错误:", error); + common_vendor.index.__f__("error", "at pages/return/index.vue:192", "获取订单详情错误:", error); common_vendor.index.showToast({ title: error.message || "获取订单信息失败", icon: "none" }); setTimeout(() => { - common_vendor.index.reLaunch({ - url: "/pages/index/index" - }); + this.goToHome(); }, 1500); } finally { common_vendor.index.hideLoading(); @@ -101,9 +119,30 @@ const _sfc_main = { }, // 使用后端返回的使用时长和费用数据 updateOrderInfo(orderData) { - common_vendor.index.__f__("log", "at pages/return/index.vue:188", "更新订单信息:", JSON.stringify(orderData)); + common_vendor.index.__f__("log", "at pages/return/index.vue:220", "更新订单信息:", JSON.stringify(orderData)); this.orderInfo.usedTime = orderData.usedTime || "0分钟"; - this.orderInfo.currentFee = orderData.currentFee || "0.00"; + this.orderInfo.currentFee = orderData.currentFee || orderData.actualDeviceAmount || orderData.payAmount || "0.00"; + if (orderData.orderStatus) { + this.orderInfo.orderStatus = orderData.orderStatus; + } + this.orderInfo._rawStartTime = orderData.startTime; + if (orderData.startTime) { + try { + common_vendor.index.__f__("log", "at pages/return/index.vue:239", "API返回的开始时间:", orderData.startTime); + this.orderInfo.startTime = orderData.startTime; + } catch (e) { + common_vendor.index.__f__("error", "at pages/return/index.vue:243", "更新开始时间错误:", e); + this.orderInfo.startTime = "未知"; + } + } else { + common_vendor.index.__f__("warn", "at pages/return/index.vue:247", "API返回的订单数据中没有startTime字段"); + if (orderData.createTime) { + common_vendor.index.__f__("log", "at pages/return/index.vue:250", "使用createTime作为备选:", orderData.createTime); + this.orderInfo.startTime = orderData.createTime; + } else { + this.orderInfo.startTime = "未知"; + } + } if (orderData.deviceNo && !this.deviceId) { this.deviceId = orderData.deviceNo; } @@ -121,54 +160,30 @@ const _sfc_main = { this.timer = null; } }, - // 处理开锁归还 - async handleUnlock() { - if (this.unlocking) - return; - try { - this.unlocking = true; - common_vendor.index.showLoading({ title: "开锁中" }); - const confirmResult = await new Promise((resolve) => { - common_vendor.index.showModal({ - title: "确认归还", - content: "确定要归还设备吗?", - success: (res) => { - resolve(res.confirm); - } - }); - }); - if (!confirmResult) { - this.unlocking = false; - common_vendor.index.hideLoading(); - return; - } - common_vendor.index.__f__("log", "at pages/return/index.vue:239", `准备结束订单, orderId: ${this.orderInfo.orderId}`); - const result = await config_user.overOrderById(this.orderInfo.orderId); - common_vendor.index.__f__("log", "at pages/return/index.vue:244", "结束订单结果:", JSON.stringify(result)); - if (result.code === 200) { - common_vendor.index.showToast({ - title: "归还成功", - icon: "success" - }); - setTimeout(() => { - common_vendor.index.reLaunch({ - url: "/pages/index/index" - }); - }, 1500); - } else { - throw new Error(result.msg || "归还失败"); - } - } catch (error) { - common_vendor.index.__f__("error", "at pages/return/index.vue:262", "归还操作错误:", error); - common_vendor.index.showToast({ - title: error.message || "归还失败,请重试", - icon: "none" - }); - } finally { - this.unlocking = false; - common_vendor.index.hideLoading(); + // 清除状态检查定时器 + clearStatusCheckTimer() { + if (this.statusCheckTimer) { + clearInterval(this.statusCheckTimer); + this.statusCheckTimer = null; } }, + // 开始状态检查定时器 + startStatusCheckTimer() { + this.currentStatusChecks = 0; + this.clearStatusCheckTimer(); + this.statusCheckTimer = setInterval(() => { + this.currentStatusChecks++; + this.checkReturnStatus(); + if (this.currentStatusChecks >= this.maxStatusChecks) { + this.clearStatusCheckTimer(); + common_vendor.index.showToast({ + title: "请手动刷新查看归还状态", + icon: "none", + duration: 3e3 + }); + } + }, this.statusCheckInterval); + }, // 通过设备号查询使用中的订单 async getOrderByDevice() { try { @@ -184,43 +199,65 @@ const _sfc_main = { "Clientid": common_vendor.index.getStorageSync("client_id") } }); - common_vendor.index.__f__("log", "at pages/return/index.vue:292", "通过设备号查询订单结果:", JSON.stringify(inUseRes)); + common_vendor.index.__f__("log", "at pages/return/index.vue:329", "通过设备号查询订单结果:", JSON.stringify(inUseRes)); if (inUseRes.statusCode === 200 && inUseRes.data.code === 200 && inUseRes.data.data) { const inUseOrder = inUseRes.data.data; + common_vendor.index.__f__("log", "at pages/return/index.vue:333", "使用中的订单:", inUseOrder); this.orderInfo.orderId = inUseOrder.orderId; + if (inUseOrder.orderStatus) { + this.orderInfo.orderStatus = inUseOrder.orderStatus; + } + if (inUseOrder.startTime) { + common_vendor.index.__f__("log", "at pages/return/index.vue:345", "inUse API返回的开始时间:", inUseOrder.startTime); + this.orderInfo.startTime = inUseOrder.startTime; + } this.getOrderDetails(); this.startTimer(); + this.startStatusCheckTimer(); } else { throw new Error("未找到使用中的订单"); } } catch (error) { - common_vendor.index.__f__("error", "at pages/return/index.vue:307", "通过设备号查询订单失败:", error); + common_vendor.index.__f__("error", "at pages/return/index.vue:359", "通过设备号查询订单失败:", error); common_vendor.index.showToast({ title: error.message || "获取订单信息失败", icon: "none" }); setTimeout(() => { - common_vendor.index.reLaunch({ - url: "/pages/index/index" - }); + this.goToHome(); }, 1500); } finally { common_vendor.index.hideLoading(); } + }, + // 检查归还状态 + async checkReturnStatus() { + try { + await this.getOrderDetails(); + } catch (error) { + common_vendor.index.__f__("error", "at pages/return/index.vue:379", "检查归还状态失败:", error); + } + }, + // 返回首页 + goToHome() { + common_vendor.index.reLaunch({ + url: "/pages/index/index" + }); } } }; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { - return { - a: common_vendor.t($data.orderInfo.orderId), - b: common_vendor.t($data.deviceId), - c: common_vendor.t($data.orderInfo.startTime), - d: common_vendor.t($data.orderInfo.usedTime), - e: common_vendor.t($data.orderInfo.currentFee), - f: common_vendor.t($data.unlocking ? "开锁中..." : "开锁归还"), - g: common_vendor.o((...args) => $options.handleUnlock && $options.handleUnlock(...args)), - h: $data.unlocking - }; + return common_vendor.e({ + a: common_vendor.t($options.getOrderStatusText()), + b: common_vendor.t($data.orderInfo.orderId), + c: common_vendor.t($data.deviceId), + d: common_vendor.t($data.orderInfo.startTime), + e: common_vendor.t($data.orderInfo.usedTime), + f: common_vendor.t($data.orderInfo.currentFee) + }, {}, { + j: common_vendor.o((...args) => $options.checkReturnStatus && $options.checkReturnStatus(...args)), + k: common_vendor.o((...args) => $options.goToHome && $options.goToHome(...args)) + }); } const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-6d22bdf8"]]); wx.createPage(MiniProgramPage); diff --git a/unpackage/dist/dev/mp-weixin/pages/return/index.wxml b/unpackage/dist/dev/mp-weixin/pages/return/index.wxml index a67b208..e9cee0a 100644 --- a/unpackage/dist/dev/mp-weixin/pages/return/index.wxml +++ b/unpackage/dist/dev/mp-weixin/pages/return/index.wxml @@ -1 +1 @@ -使用中订单号:{{a}}共享风扇设备号:{{b}}开始时间{{c}}已使用时长{{d}}当前费用¥{{e}}归还说明请确保设备完好无损请在指定区域内归还设备归还后押金将自动退还 \ No newline at end of file +{{a}}订单号:{{b}}共享风扇设备号:{{c}}开始时间{{d}}已使用时长{{e}}当前费用¥{{f}}调试信息原始开始时间: {{g}}处理后开始时间: {{h}}订单状态: {{i}}归还说明请确保设备完好无损将充电宝插入原位置或空闲插口系统将自动检测归还并处理退款归还成功后将自动跳转到成功页面 \ No newline at end of file diff --git a/unpackage/dist/dev/mp-weixin/pages/return/index.wxss b/unpackage/dist/dev/mp-weixin/pages/return/index.wxss index 08c0c70..5071ea6 100644 --- a/unpackage/dist/dev/mp-weixin/pages/return/index.wxss +++ b/unpackage/dist/dev/mp-weixin/pages/return/index.wxss @@ -44,46 +44,52 @@ margin-bottom: 30rpx; } .return-container .order-card .order-header .title.data-v-6d22bdf8 { - font-size: 36rpx; - font-weight: 600; - color: #1976D2; + font-size: 32rpx; + font-weight: bold; + color: #333; } .return-container .order-card .order-header .order-no.data-v-6d22bdf8 { font-size: 24rpx; color: #999; } .return-container .order-card .device-info.data-v-6d22bdf8 { - margin-bottom: 20rpx; + margin-bottom: 30rpx; } .return-container .order-card .device-info .device-name.data-v-6d22bdf8 { - font-size: 32rpx; - font-weight: 500; + font-size: 28rpx; color: #333; - margin-right: 20rpx; + display: block; + margin-bottom: 10rpx; } .return-container .order-card .device-info .device-id.data-v-6d22bdf8 { font-size: 24rpx; color: #666; } +.return-container .order-card .time-info.data-v-6d22bdf8 { + background: #f9f9f9; + border-radius: 16rpx; + padding: 20rpx; +} .return-container .order-card .time-info .time-item.data-v-6d22bdf8 { display: flex; justify-content: space-between; + align-items: center; margin-bottom: 16rpx; } .return-container .order-card .time-info .time-item.data-v-6d22bdf8:last-child { margin-bottom: 0; } .return-container .order-card .time-info .time-item .label.data-v-6d22bdf8 { - font-size: 28rpx; + font-size: 26rpx; color: #666; } .return-container .order-card .time-info .time-item .value.data-v-6d22bdf8 { - font-size: 28rpx; + font-size: 26rpx; color: #333; } .return-container .order-card .time-info .time-item .value.highlight.data-v-6d22bdf8 { - color: #1976D2; - font-weight: 500; + color: #ff6b00; + font-weight: bold; } .return-container .notice-card.data-v-6d22bdf8 { background: #fff; @@ -93,14 +99,14 @@ box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.04); } .return-container .notice-card .notice-title.data-v-6d22bdf8 { - font-size: 32rpx; - font-weight: 600; + font-size: 28rpx; + font-weight: bold; color: #333; - margin-bottom: 24rpx; + margin-bottom: 20rpx; } .return-container .notice-card .notice-list .notice-item.data-v-6d22bdf8 { display: flex; - align-items: center; + align-items: flex-start; margin-bottom: 16rpx; } .return-container .notice-card .notice-list .notice-item.data-v-6d22bdf8:last-child { @@ -109,12 +115,14 @@ .return-container .notice-card .notice-list .notice-item .dot.data-v-6d22bdf8 { width: 12rpx; height: 12rpx; - background: #1976D2; + background: #07c160; border-radius: 50%; + margin-top: 10rpx; margin-right: 16rpx; + flex-shrink: 0; } .return-container .notice-card .notice-list .notice-item text.data-v-6d22bdf8 { - font-size: 28rpx; + font-size: 26rpx; color: #666; line-height: 1.5; } @@ -123,30 +131,33 @@ left: 0; right: 0; bottom: 0; + padding: 30rpx; background: #fff; - padding: 20rpx 30rpx; - padding-bottom: calc(20rpx + env(safe-area-inset-bottom)); - display: flex; - align-items: center; - justify-content: center; box-shadow: 0 -4rpx 16rpx rgba(0, 0, 0, 0.04); -} -.return-container .bottom-bar .unlock-btn.data-v-6d22bdf8 { - width: 100%; - height: 88rpx; - border-radius: 44rpx; - background: linear-gradient(135deg, #FF9800, #FFB74D); - color: #fff; - font-size: 32rpx; - font-weight: 600; + z-index: 10; display: flex; - align-items: center; - justify-content: center; - border: none; + justify-content: space-between; + gap: 20rpx; } -.return-container .bottom-bar .unlock-btn.data-v-6d22bdf8:active { - transform: scale(0.98); +.return-container .bottom-bar .primary-btn.data-v-6d22bdf8, .return-container .bottom-bar .secondary-btn.data-v-6d22bdf8 { + height: 88rpx; + line-height: 88rpx; + font-size: 32rpx; + border-radius: 44rpx; + text-align: center; + flex: 1; } -.return-container .bottom-bar .unlock-btn.data-v-6d22bdf8:disabled { - opacity: 0.7; +.return-container .bottom-bar .primary-btn.data-v-6d22bdf8 { + background: #07c160; + color: #fff; +} +.return-container .bottom-bar .primary-btn.data-v-6d22bdf8:active { + opacity: 0.8; +} +.return-container .bottom-bar .secondary-btn.data-v-6d22bdf8 { + background: #f0f0f0; + color: #333; +} +.return-container .bottom-bar .secondary-btn.data-v-6d22bdf8:active { + opacity: 0.8; } \ No newline at end of file From 431ceb4bdbea54595aa75a6893b518c1dd5dd544 Mon Sep 17 00:00:00 2001 From: 8vd8 <1936002261@qq.com> Date: Wed, 16 Apr 2025 18:26:02 +0800 Subject: [PATCH 2/9] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=A4=9A?= =?UTF-8?q?=E4=B8=AA=E9=A1=B5=E9=9D=A2=E5=8F=8A=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=94=A8=E6=88=B7=E4=BD=93=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在项目中新增了多个页面,包括押金页面、设备详情页面、反馈页面和帮助页面。同时,更新了订单支付和归还成功页面的逻辑,确保用户在支付和归还设备时能够获得清晰的反馈。优化了扫码和订单状态处理逻辑,提升了整体用户体验。 --- config/url.js | 4 +- config/user.js | 19 +- main.js | 8 + manifest.json | 4 +- pages/deposit/index.vue | 149 +++++++- pages/index/index.vue | 11 +- pages/order/payment.vue | 338 ++++++++---------- pages/order/return-success.vue | 295 +++++++++++---- pages/order/success.vue | 16 +- pages/return/index.vue | 80 ++++- pages/user/index.vue | 230 ++++++++++++ unpackage/dist/build/mp-weixin/app.js | 1 + unpackage/dist/build/mp-weixin/app.json | 42 +++ unpackage/dist/build/mp-weixin/app.wxss | 2 + .../dist/build/mp-weixin/common/assets.js | 1 + .../dist/build/mp-weixin/common/vendor.js | 7 + unpackage/dist/build/mp-weixin/config/http.js | 1 + unpackage/dist/build/mp-weixin/config/url.js | 1 + unpackage/dist/build/mp-weixin/config/user.js | 1 + .../dist/build/mp-weixin/constants/help.js | 1 + .../build/mp-weixin/constants/orderStatus.js | 1 + .../build/mp-weixin/pages/deposit/index.js | 1 + .../build/mp-weixin/pages/deposit/index.json | 4 + .../build/mp-weixin/pages/deposit/index.wxml | 1 + .../build/mp-weixin/pages/deposit/index.wxss | 1 + .../build/mp-weixin/pages/device/detail.js | 1 + .../build/mp-weixin/pages/device/detail.json | 6 + .../build/mp-weixin/pages/device/detail.wxml | 1 + .../build/mp-weixin/pages/device/detail.wxss | 1 + .../build/mp-weixin/pages/feedback/index.js | 1 + .../build/mp-weixin/pages/feedback/index.json | 4 + .../build/mp-weixin/pages/feedback/index.wxml | 1 + .../build/mp-weixin/pages/feedback/index.wxss | 1 + .../dist/build/mp-weixin/pages/help/index.js | 1 + .../build/mp-weixin/pages/help/index.json | 4 + .../build/mp-weixin/pages/help/index.wxml | 1 + .../build/mp-weixin/pages/help/index.wxss | 1 + .../dist/build/mp-weixin/pages/index/index.js | 1 + .../build/mp-weixin/pages/index/index.json | 4 + .../build/mp-weixin/pages/index/index.wxml | 1 + .../build/mp-weixin/pages/index/index.wxss | 1 + .../dist/build/mp-weixin/pages/my/index.js | 1 + .../dist/build/mp-weixin/pages/my/index.json | 4 + .../dist/build/mp-weixin/pages/my/index.wxml | 1 + .../dist/build/mp-weixin/pages/my/index.wxss | 1 + .../dist/build/mp-weixin/pages/order/index.js | 1 + .../build/mp-weixin/pages/order/index.json | 4 + .../build/mp-weixin/pages/order/index.wxml | 1 + .../build/mp-weixin/pages/order/index.wxss | 1 + .../build/mp-weixin/pages/order/payment.js | 1 + .../build/mp-weixin/pages/order/payment.json | 6 + .../build/mp-weixin/pages/order/payment.wxml | 1 + .../build/mp-weixin/pages/order/payment.wxss | 1 + .../mp-weixin/pages/order/return-success.js | 1 + .../mp-weixin/pages/order/return-success.json | 6 + .../mp-weixin/pages/order/return-success.wxml | 1 + .../mp-weixin/pages/order/return-success.wxss | 1 + .../build/mp-weixin/pages/order/success.js | 1 + .../build/mp-weixin/pages/order/success.json | 6 + .../build/mp-weixin/pages/order/success.wxml | 1 + .../build/mp-weixin/pages/order/success.wxss | 1 + .../build/mp-weixin/pages/return/index.js | 1 + .../build/mp-weixin/pages/return/index.json | 6 + .../build/mp-weixin/pages/return/index.wxml | 1 + .../build/mp-weixin/pages/return/index.wxss | 1 + .../mp-weixin/pages/serve/bagCheck/index.js | 1 + .../mp-weixin/pages/serve/bagCheck/index.json | 4 + .../mp-weixin/pages/serve/bagCheck/index.wxml | 1 + .../mp-weixin/pages/serve/bagCheck/index.wxss | 0 .../dist/build/mp-weixin/project.config.json | 36 ++ .../dist/build/mp-weixin/static/complaint.png | Bin 0 -> 5582 bytes .../dist/build/mp-weixin/static/head.png | Bin 0 -> 10898 bytes .../dist/build/mp-weixin/static/hlep.png | Bin 0 -> 4113 bytes .../build/mp-weixin/static/home-active.png | Bin 0 -> 7165 bytes .../dist/build/mp-weixin/static/home.png | Bin 0 -> 6825 bytes .../build/mp-weixin/static/images/alipay.svg | 1 + .../build/mp-weixin/static/images/wechat.svg | 1 + unpackage/dist/build/mp-weixin/static/jl.png | Bin 0 -> 4139 bytes .../dist/build/mp-weixin/static/logo.png | Bin 0 -> 4023 bytes .../dist/build/mp-weixin/static/scan-icon.png | Bin 0 -> 3222 bytes .../build/mp-weixin/static/user-active.png | Bin 0 -> 12135 bytes .../dist/build/mp-weixin/static/user.png | Bin 0 -> 11317 bytes unpackage/dist/build/mp-weixin/util/index.js | 1 + .../build/mp-weixin/utils/orderMonitor.js | 1 + .../.sourcemap/mp-weixin-devtools/app.js.map | 1 + .../dist/dev/.sourcemap/mp-weixin/app.js.map | 2 +- .../.sourcemap/mp-weixin/config/url.js.map | 2 +- .../.sourcemap/mp-weixin/config/user.js.map | 2 +- .../mp-weixin/pages/deposit/index.js.map | 2 +- .../mp-weixin/pages/index/index.js.map | 2 +- .../mp-weixin/pages/order/payment.js.map | 2 +- .../pages/order/return-success.js.map | 2 +- .../mp-weixin/pages/order/success.js.map | 2 +- .../mp-weixin/pages/return/index.js.map | 2 +- .../.sourcemap/mp-weixin/util/index.js.map | 2 +- .../mp-weixin/utils/orderMonitor.js.map | 1 + unpackage/dist/dev/mp-weixin/app.js | 2 + unpackage/dist/dev/mp-weixin/common/vendor.js | 8 +- unpackage/dist/dev/mp-weixin/config/url.js | 2 +- unpackage/dist/dev/mp-weixin/config/user.js | 21 +- .../dist/dev/mp-weixin/pages/deposit/index.js | 132 ++++++- .../dev/mp-weixin/pages/deposit/index.wxml | 2 +- .../dev/mp-weixin/pages/deposit/index.wxss | 4 + .../dist/dev/mp-weixin/pages/index/index.js | 27 +- .../dist/dev/mp-weixin/pages/order/payment.js | 209 +++++------ .../dev/mp-weixin/pages/order/payment.wxml | 2 +- .../dev/mp-weixin/pages/order/payment.wxss | 45 +-- .../mp-weixin/pages/order/return-success.js | 179 +++++++--- .../mp-weixin/pages/order/return-success.wxml | 2 +- .../mp-weixin/pages/order/return-success.wxss | 54 ++- .../dist/dev/mp-weixin/pages/order/success.js | 13 +- .../dist/dev/mp-weixin/pages/return/index.js | 90 +++-- .../dist/dev/mp-weixin/project.config.json | 2 +- unpackage/dist/dev/mp-weixin/util/index.js | 2 +- .../dist/dev/mp-weixin/utils/orderMonitor.js | 134 +++++++ util/index.js | 2 +- utils/orderMonitor.js | 171 +++++++++ 117 files changed, 1854 insertions(+), 616 deletions(-) create mode 100644 pages/user/index.vue create mode 100644 unpackage/dist/build/mp-weixin/app.js create mode 100644 unpackage/dist/build/mp-weixin/app.json create mode 100644 unpackage/dist/build/mp-weixin/app.wxss create mode 100644 unpackage/dist/build/mp-weixin/common/assets.js create mode 100644 unpackage/dist/build/mp-weixin/common/vendor.js create mode 100644 unpackage/dist/build/mp-weixin/config/http.js create mode 100644 unpackage/dist/build/mp-weixin/config/url.js create mode 100644 unpackage/dist/build/mp-weixin/config/user.js create mode 100644 unpackage/dist/build/mp-weixin/constants/help.js create mode 100644 unpackage/dist/build/mp-weixin/constants/orderStatus.js create mode 100644 unpackage/dist/build/mp-weixin/pages/deposit/index.js create mode 100644 unpackage/dist/build/mp-weixin/pages/deposit/index.json create mode 100644 unpackage/dist/build/mp-weixin/pages/deposit/index.wxml create mode 100644 unpackage/dist/build/mp-weixin/pages/deposit/index.wxss create mode 100644 unpackage/dist/build/mp-weixin/pages/device/detail.js create mode 100644 unpackage/dist/build/mp-weixin/pages/device/detail.json create mode 100644 unpackage/dist/build/mp-weixin/pages/device/detail.wxml create mode 100644 unpackage/dist/build/mp-weixin/pages/device/detail.wxss create mode 100644 unpackage/dist/build/mp-weixin/pages/feedback/index.js create mode 100644 unpackage/dist/build/mp-weixin/pages/feedback/index.json create mode 100644 unpackage/dist/build/mp-weixin/pages/feedback/index.wxml create mode 100644 unpackage/dist/build/mp-weixin/pages/feedback/index.wxss create mode 100644 unpackage/dist/build/mp-weixin/pages/help/index.js create mode 100644 unpackage/dist/build/mp-weixin/pages/help/index.json create mode 100644 unpackage/dist/build/mp-weixin/pages/help/index.wxml create mode 100644 unpackage/dist/build/mp-weixin/pages/help/index.wxss create mode 100644 unpackage/dist/build/mp-weixin/pages/index/index.js create mode 100644 unpackage/dist/build/mp-weixin/pages/index/index.json create mode 100644 unpackage/dist/build/mp-weixin/pages/index/index.wxml create mode 100644 unpackage/dist/build/mp-weixin/pages/index/index.wxss create mode 100644 unpackage/dist/build/mp-weixin/pages/my/index.js create mode 100644 unpackage/dist/build/mp-weixin/pages/my/index.json create mode 100644 unpackage/dist/build/mp-weixin/pages/my/index.wxml create mode 100644 unpackage/dist/build/mp-weixin/pages/my/index.wxss create mode 100644 unpackage/dist/build/mp-weixin/pages/order/index.js create mode 100644 unpackage/dist/build/mp-weixin/pages/order/index.json create mode 100644 unpackage/dist/build/mp-weixin/pages/order/index.wxml create mode 100644 unpackage/dist/build/mp-weixin/pages/order/index.wxss create mode 100644 unpackage/dist/build/mp-weixin/pages/order/payment.js create mode 100644 unpackage/dist/build/mp-weixin/pages/order/payment.json create mode 100644 unpackage/dist/build/mp-weixin/pages/order/payment.wxml create mode 100644 unpackage/dist/build/mp-weixin/pages/order/payment.wxss create mode 100644 unpackage/dist/build/mp-weixin/pages/order/return-success.js create mode 100644 unpackage/dist/build/mp-weixin/pages/order/return-success.json create mode 100644 unpackage/dist/build/mp-weixin/pages/order/return-success.wxml create mode 100644 unpackage/dist/build/mp-weixin/pages/order/return-success.wxss create mode 100644 unpackage/dist/build/mp-weixin/pages/order/success.js create mode 100644 unpackage/dist/build/mp-weixin/pages/order/success.json create mode 100644 unpackage/dist/build/mp-weixin/pages/order/success.wxml create mode 100644 unpackage/dist/build/mp-weixin/pages/order/success.wxss create mode 100644 unpackage/dist/build/mp-weixin/pages/return/index.js create mode 100644 unpackage/dist/build/mp-weixin/pages/return/index.json create mode 100644 unpackage/dist/build/mp-weixin/pages/return/index.wxml create mode 100644 unpackage/dist/build/mp-weixin/pages/return/index.wxss create mode 100644 unpackage/dist/build/mp-weixin/pages/serve/bagCheck/index.js create mode 100644 unpackage/dist/build/mp-weixin/pages/serve/bagCheck/index.json create mode 100644 unpackage/dist/build/mp-weixin/pages/serve/bagCheck/index.wxml create mode 100644 unpackage/dist/build/mp-weixin/pages/serve/bagCheck/index.wxss create mode 100644 unpackage/dist/build/mp-weixin/project.config.json create mode 100644 unpackage/dist/build/mp-weixin/static/complaint.png create mode 100644 unpackage/dist/build/mp-weixin/static/head.png create mode 100644 unpackage/dist/build/mp-weixin/static/hlep.png create mode 100644 unpackage/dist/build/mp-weixin/static/home-active.png create mode 100644 unpackage/dist/build/mp-weixin/static/home.png create mode 100644 unpackage/dist/build/mp-weixin/static/images/alipay.svg create mode 100644 unpackage/dist/build/mp-weixin/static/images/wechat.svg create mode 100644 unpackage/dist/build/mp-weixin/static/jl.png create mode 100644 unpackage/dist/build/mp-weixin/static/logo.png create mode 100644 unpackage/dist/build/mp-weixin/static/scan-icon.png create mode 100644 unpackage/dist/build/mp-weixin/static/user-active.png create mode 100644 unpackage/dist/build/mp-weixin/static/user.png create mode 100644 unpackage/dist/build/mp-weixin/util/index.js create mode 100644 unpackage/dist/build/mp-weixin/utils/orderMonitor.js create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin-devtools/app.js.map create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/utils/orderMonitor.js.map create mode 100644 unpackage/dist/dev/mp-weixin/utils/orderMonitor.js create mode 100644 utils/orderMonitor.js diff --git a/config/url.js b/config/url.js index 7108441..6a31d63 100644 --- a/config/url.js +++ b/config/url.js @@ -1,4 +1,4 @@ -// export const URL = "https://notify.gxfs123.com" +// export const URL = "https://unifans.gxfs123.com" export const URL = "http://127.0.0.1:8080" -export const appid = "wx3ae63fb09936b379" \ No newline at end of file +export const appid = "wxe752f45e7f7aa271" \ No newline at end of file diff --git a/config/user.js b/config/user.js index adbc6ff..f3d7b7a 100644 --- a/config/user.js +++ b/config/user.js @@ -18,6 +18,16 @@ export const getMyIndexInfo = (data) => { }) } +// 添加押金提现API +export const withdrawDeposit = (orderId) => { + console.log('调用提现API,订单ID:', orderId) + return request({ + url: `/app/withdraw/add/${orderId}`, + method: 'get', + hideLoading: true + }) +} + //获取所有全部订单 export const getOrderList = (data) => { return request({ @@ -102,14 +112,7 @@ export const confirmPaymentAndRent = (orderId) => { }) } -//备用方法:直接发送租借指令 -export const sendRentCommand = (orderId) => { - console.log(`直接发送租借指令, orderId: ${orderId}`) - return request({ - url: `/app/device/sendRentCommand?orderId=${orderId}`, - method: 'post' - }) -} + //投诉反馈 export const addUserFeedback = (data) => { diff --git a/main.js b/main.js index 3337180..335b305 100644 --- a/main.js +++ b/main.js @@ -1,4 +1,5 @@ import App from './App' +import { orderMonitor } from './utils/orderMonitor.js' import uView from "uview-ui"; @@ -7,6 +8,10 @@ import uView from "uview-ui"; import Vue from 'vue' import './uni.promisify.adaptor' Vue.config.productionTip = false + +// 注册全局订单监控服务 +Vue.prototype.$orderMonitor = orderMonitor + App.mpType = 'app' Vue.use(uView) const app = new Vue({ @@ -20,6 +25,9 @@ import { createSSRApp } from 'vue' export function createApp() { const app = createSSRApp(App) + // 注册全局订单监控服务到VUE3 + app.config.globalProperties.$orderMonitor = orderMonitor + return { app } diff --git a/manifest.json b/manifest.json index 4656b91..638c563 100644 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,6 @@ { "name" : "fs", - "appid" : "__UNI__66470C9", + "appid" : "__UNI__4630191", "description" : "", "versionName" : "1.0.0", "versionCode" : "100", @@ -50,7 +50,7 @@ "quickapp" : {}, /* 小程序特有相关 */ "mp-weixin" : { - "appid" : "wx3ae63fb09936b379", + "appid" : "wxe752f45e7f7aa271", "setting" : { "urlCheck" : false }, diff --git a/pages/deposit/index.vue b/pages/deposit/index.vue index dcc9222..89de25b 100644 --- a/pages/deposit/index.vue +++ b/pages/deposit/index.vue @@ -4,7 +4,7 @@ 押金余额 ¥{{ depositAmount }} - + @@ -21,7 +21,7 @@ - + 押金记录 @@ -39,30 +39,150 @@ + + \ No newline at end of file diff --git a/unpackage/dist/build/mp-weixin/app.js b/unpackage/dist/build/mp-weixin/app.js new file mode 100644 index 0000000..405b683 --- /dev/null +++ b/unpackage/dist/build/mp-weixin/app.js @@ -0,0 +1 @@ +"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./common/vendor.js"),n=require("./util/index.js"),e=require("./utils/orderMonitor.js");Math;const t={onLaunch:function(){console.log("App Launch")},onShow:async function(){console.log("App Show"),await this.autoLogin()},onHide:function(){console.log("App Hide")},methods:{async autoLogin(){try{const o=await n.wxLogin();console.log("自动登录成功:",o)}catch(o){console.error("自动登录失败:",o)}}}};function r(){const n=o.createSSRApp(t);return n.config.globalProperties.$orderMonitor=e.orderMonitor,{app:n}}r().app.mount("#app"),exports.createApp=r; diff --git a/unpackage/dist/build/mp-weixin/app.json b/unpackage/dist/build/mp-weixin/app.json new file mode 100644 index 0000000..0a54f7f --- /dev/null +++ b/unpackage/dist/build/mp-weixin/app.json @@ -0,0 +1,42 @@ +{ + "pages": [ + "pages/index/index", + "pages/my/index", + "pages/deposit/index", + "pages/order/index", + "pages/order/payment", + "pages/feedback/index", + "pages/help/index", + "pages/device/detail", + "pages/serve/bagCheck/index", + "pages/return/index", + "pages/order/success", + "pages/order/return-success" + ], + "window": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "共享风扇", + "navigationBarBackgroundColor": "#F8F8F8", + "backgroundColor": "#F8F8F8" + }, + "tabBar": { + "color": "#999999", + "selectedColor": "#1976D2", + "backgroundColor": "#ffffff", + "list": [ + { + "pagePath": "pages/index/index", + "text": "首页", + "iconPath": "static/home.png", + "selectedIconPath": "static/home-active.png" + }, + { + "pagePath": "pages/my/index", + "text": "我的", + "iconPath": "static/user.png", + "selectedIconPath": "static/user-active.png" + } + ] + }, + "usingComponents": {} +} \ No newline at end of file diff --git a/unpackage/dist/build/mp-weixin/app.wxss b/unpackage/dist/build/mp-weixin/app.wxss new file mode 100644 index 0000000..1f13b8c --- /dev/null +++ b/unpackage/dist/build/mp-weixin/app.wxss @@ -0,0 +1,2 @@ +.u-relative,.u-rela{position:relative}.u-absolute,.u-abso{position:absolute}image{display:inline-block}view,text{box-sizing:border-box}.u-font-xs{font-size:22rpx}.u-font-sm{font-size:26rpx}.u-font-md{font-size:28rpx}.u-font-lg{font-size:30rpx}.u-font-xl{font-size:34rpx}.u-flex{display:flex;flex-direction:row;align-items:center}.u-flex-wrap{flex-wrap:wrap}.u-flex-nowrap{flex-wrap:nowrap}.u-col-center{align-items:center}.u-col-top{align-items:flex-start}.u-col-bottom{align-items:flex-end}.u-row-center{justify-content:center}.u-row-left{justify-content:flex-start}.u-row-right{justify-content:flex-end}.u-row-between{justify-content:space-between}.u-row-around{justify-content:space-around}.u-text-left{text-align:left}.u-text-center{text-align:center}.u-text-right{text-align:right}.u-flex-col{display:flex;flex-direction:column}.u-flex-0{flex:0}.u-flex-1{flex:1}.u-flex-2{flex:2}.u-flex-3{flex:3}.u-flex-4{flex:4}.u-flex-5{flex:5}.u-flex-6{flex:6}.u-flex-7{flex:7}.u-flex-8{flex:8}.u-flex-9{flex:9}.u-flex-10{flex:10}.u-flex-11{flex:11}.u-flex-12{flex:12}.u-font-9{font-size:9px}.u-font-10{font-size:10px}.u-font-11{font-size:11px}.u-font-12{font-size:12px}.u-font-13{font-size:13px}.u-font-14{font-size:14px}.u-font-15{font-size:15px}.u-font-16{font-size:16px}.u-font-17{font-size:17px}.u-font-18{font-size:18px}.u-font-19{font-size:19px}.u-font-20{font-size:20rpx}.u-font-21{font-size:21rpx}.u-font-22{font-size:22rpx}.u-font-23{font-size:23rpx}.u-font-24{font-size:24rpx}.u-font-25{font-size:25rpx}.u-font-26{font-size:26rpx}.u-font-27{font-size:27rpx}.u-font-28{font-size:28rpx}.u-font-29{font-size:29rpx}.u-font-30{font-size:30rpx}.u-font-31{font-size:31rpx}.u-font-32{font-size:32rpx}.u-font-33{font-size:33rpx}.u-font-34{font-size:34rpx}.u-font-35{font-size:35rpx}.u-font-36{font-size:36rpx}.u-font-37{font-size:37rpx}.u-font-38{font-size:38rpx}.u-font-39{font-size:39rpx}.u-font-40{font-size:40rpx}.u-margin-0,.u-m-0{margin:0rpx!important}.u-padding-0,.u-p-0{padding:0rpx!important}.u-m-l-0{margin-left:0rpx!important}.u-p-l-0{padding-left:0rpx!important}.u-margin-left-0{margin-left:0rpx!important}.u-padding-left-0{padding-left:0rpx!important}.u-m-t-0{margin-top:0rpx!important}.u-p-t-0{padding-top:0rpx!important}.u-margin-top-0{margin-top:0rpx!important}.u-padding-top-0{padding-top:0rpx!important}.u-m-r-0{margin-right:0rpx!important}.u-p-r-0{padding-right:0rpx!important}.u-margin-right-0{margin-right:0rpx!important}.u-padding-right-0{padding-right:0rpx!important}.u-m-b-0{margin-bottom:0rpx!important}.u-p-b-0{padding-bottom:0rpx!important}.u-margin-bottom-0{margin-bottom:0rpx!important}.u-padding-bottom-0{padding-bottom:0rpx!important}.u-margin-2,.u-m-2{margin:2rpx!important}.u-padding-2,.u-p-2{padding:2rpx!important}.u-m-l-2{margin-left:2rpx!important}.u-p-l-2{padding-left:2rpx!important}.u-margin-left-2{margin-left:2rpx!important}.u-padding-left-2{padding-left:2rpx!important}.u-m-t-2{margin-top:2rpx!important}.u-p-t-2{padding-top:2rpx!important}.u-margin-top-2{margin-top:2rpx!important}.u-padding-top-2{padding-top:2rpx!important}.u-m-r-2{margin-right:2rpx!important}.u-p-r-2{padding-right:2rpx!important}.u-margin-right-2{margin-right:2rpx!important}.u-padding-right-2{padding-right:2rpx!important}.u-m-b-2{margin-bottom:2rpx!important}.u-p-b-2{padding-bottom:2rpx!important}.u-margin-bottom-2{margin-bottom:2rpx!important}.u-padding-bottom-2{padding-bottom:2rpx!important}.u-margin-4,.u-m-4{margin:4rpx!important}.u-padding-4,.u-p-4{padding:4rpx!important}.u-m-l-4{margin-left:4rpx!important}.u-p-l-4{padding-left:4rpx!important}.u-margin-left-4{margin-left:4rpx!important}.u-padding-left-4{padding-left:4rpx!important}.u-m-t-4{margin-top:4rpx!important}.u-p-t-4{padding-top:4rpx!important}.u-margin-top-4{margin-top:4rpx!important}.u-padding-top-4{padding-top:4rpx!important}.u-m-r-4{margin-right:4rpx!important}.u-p-r-4{padding-right:4rpx!important}.u-margin-right-4{margin-right:4rpx!important}.u-padding-right-4{padding-right:4rpx!important}.u-m-b-4{margin-bottom:4rpx!important}.u-p-b-4{padding-bottom:4rpx!important}.u-margin-bottom-4{margin-bottom:4rpx!important}.u-padding-bottom-4{padding-bottom:4rpx!important}.u-margin-5,.u-m-5{margin:5rpx!important}.u-padding-5,.u-p-5{padding:5rpx!important}.u-m-l-5{margin-left:5rpx!important}.u-p-l-5{padding-left:5rpx!important}.u-margin-left-5{margin-left:5rpx!important}.u-padding-left-5{padding-left:5rpx!important}.u-m-t-5{margin-top:5rpx!important}.u-p-t-5{padding-top:5rpx!important}.u-margin-top-5{margin-top:5rpx!important}.u-padding-top-5{padding-top:5rpx!important}.u-m-r-5{margin-right:5rpx!important}.u-p-r-5{padding-right:5rpx!important}.u-margin-right-5{margin-right:5rpx!important}.u-padding-right-5{padding-right:5rpx!important}.u-m-b-5{margin-bottom:5rpx!important}.u-p-b-5{padding-bottom:5rpx!important}.u-margin-bottom-5{margin-bottom:5rpx!important}.u-padding-bottom-5{padding-bottom:5rpx!important}.u-margin-6,.u-m-6{margin:6rpx!important}.u-padding-6,.u-p-6{padding:6rpx!important}.u-m-l-6{margin-left:6rpx!important}.u-p-l-6{padding-left:6rpx!important}.u-margin-left-6{margin-left:6rpx!important}.u-padding-left-6{padding-left:6rpx!important}.u-m-t-6{margin-top:6rpx!important}.u-p-t-6{padding-top:6rpx!important}.u-margin-top-6{margin-top:6rpx!important}.u-padding-top-6{padding-top:6rpx!important}.u-m-r-6{margin-right:6rpx!important}.u-p-r-6{padding-right:6rpx!important}.u-margin-right-6{margin-right:6rpx!important}.u-padding-right-6{padding-right:6rpx!important}.u-m-b-6{margin-bottom:6rpx!important}.u-p-b-6{padding-bottom:6rpx!important}.u-margin-bottom-6{margin-bottom:6rpx!important}.u-padding-bottom-6{padding-bottom:6rpx!important}.u-margin-8,.u-m-8{margin:8rpx!important}.u-padding-8,.u-p-8{padding:8rpx!important}.u-m-l-8{margin-left:8rpx!important}.u-p-l-8{padding-left:8rpx!important}.u-margin-left-8{margin-left:8rpx!important}.u-padding-left-8{padding-left:8rpx!important}.u-m-t-8{margin-top:8rpx!important}.u-p-t-8{padding-top:8rpx!important}.u-margin-top-8{margin-top:8rpx!important}.u-padding-top-8{padding-top:8rpx!important}.u-m-r-8{margin-right:8rpx!important}.u-p-r-8{padding-right:8rpx!important}.u-margin-right-8{margin-right:8rpx!important}.u-padding-right-8{padding-right:8rpx!important}.u-m-b-8{margin-bottom:8rpx!important}.u-p-b-8{padding-bottom:8rpx!important}.u-margin-bottom-8{margin-bottom:8rpx!important}.u-padding-bottom-8{padding-bottom:8rpx!important}.u-margin-10,.u-m-10{margin:10rpx!important}.u-padding-10,.u-p-10{padding:10rpx!important}.u-m-l-10{margin-left:10rpx!important}.u-p-l-10{padding-left:10rpx!important}.u-margin-left-10{margin-left:10rpx!important}.u-padding-left-10{padding-left:10rpx!important}.u-m-t-10{margin-top:10rpx!important}.u-p-t-10{padding-top:10rpx!important}.u-margin-top-10{margin-top:10rpx!important}.u-padding-top-10{padding-top:10rpx!important}.u-m-r-10{margin-right:10rpx!important}.u-p-r-10{padding-right:10rpx!important}.u-margin-right-10{margin-right:10rpx!important}.u-padding-right-10{padding-right:10rpx!important}.u-m-b-10{margin-bottom:10rpx!important}.u-p-b-10{padding-bottom:10rpx!important}.u-margin-bottom-10{margin-bottom:10rpx!important}.u-padding-bottom-10{padding-bottom:10rpx!important}.u-margin-12,.u-m-12{margin:12rpx!important}.u-padding-12,.u-p-12{padding:12rpx!important}.u-m-l-12{margin-left:12rpx!important}.u-p-l-12{padding-left:12rpx!important}.u-margin-left-12{margin-left:12rpx!important}.u-padding-left-12{padding-left:12rpx!important}.u-m-t-12{margin-top:12rpx!important}.u-p-t-12{padding-top:12rpx!important}.u-margin-top-12{margin-top:12rpx!important}.u-padding-top-12{padding-top:12rpx!important}.u-m-r-12{margin-right:12rpx!important}.u-p-r-12{padding-right:12rpx!important}.u-margin-right-12{margin-right:12rpx!important}.u-padding-right-12{padding-right:12rpx!important}.u-m-b-12{margin-bottom:12rpx!important}.u-p-b-12{padding-bottom:12rpx!important}.u-margin-bottom-12{margin-bottom:12rpx!important}.u-padding-bottom-12{padding-bottom:12rpx!important}.u-margin-14,.u-m-14{margin:14rpx!important}.u-padding-14,.u-p-14{padding:14rpx!important}.u-m-l-14{margin-left:14rpx!important}.u-p-l-14{padding-left:14rpx!important}.u-margin-left-14{margin-left:14rpx!important}.u-padding-left-14{padding-left:14rpx!important}.u-m-t-14{margin-top:14rpx!important}.u-p-t-14{padding-top:14rpx!important}.u-margin-top-14{margin-top:14rpx!important}.u-padding-top-14{padding-top:14rpx!important}.u-m-r-14{margin-right:14rpx!important}.u-p-r-14{padding-right:14rpx!important}.u-margin-right-14{margin-right:14rpx!important}.u-padding-right-14{padding-right:14rpx!important}.u-m-b-14{margin-bottom:14rpx!important}.u-p-b-14{padding-bottom:14rpx!important}.u-margin-bottom-14{margin-bottom:14rpx!important}.u-padding-bottom-14{padding-bottom:14rpx!important}.u-margin-15,.u-m-15{margin:15rpx!important}.u-padding-15,.u-p-15{padding:15rpx!important}.u-m-l-15{margin-left:15rpx!important}.u-p-l-15{padding-left:15rpx!important}.u-margin-left-15{margin-left:15rpx!important}.u-padding-left-15{padding-left:15rpx!important}.u-m-t-15{margin-top:15rpx!important}.u-p-t-15{padding-top:15rpx!important}.u-margin-top-15{margin-top:15rpx!important}.u-padding-top-15{padding-top:15rpx!important}.u-m-r-15{margin-right:15rpx!important}.u-p-r-15{padding-right:15rpx!important}.u-margin-right-15{margin-right:15rpx!important}.u-padding-right-15{padding-right:15rpx!important}.u-m-b-15{margin-bottom:15rpx!important}.u-p-b-15{padding-bottom:15rpx!important}.u-margin-bottom-15{margin-bottom:15rpx!important}.u-padding-bottom-15{padding-bottom:15rpx!important}.u-margin-16,.u-m-16{margin:16rpx!important}.u-padding-16,.u-p-16{padding:16rpx!important}.u-m-l-16{margin-left:16rpx!important}.u-p-l-16{padding-left:16rpx!important}.u-margin-left-16{margin-left:16rpx!important}.u-padding-left-16{padding-left:16rpx!important}.u-m-t-16{margin-top:16rpx!important}.u-p-t-16{padding-top:16rpx!important}.u-margin-top-16{margin-top:16rpx!important}.u-padding-top-16{padding-top:16rpx!important}.u-m-r-16{margin-right:16rpx!important}.u-p-r-16{padding-right:16rpx!important}.u-margin-right-16{margin-right:16rpx!important}.u-padding-right-16{padding-right:16rpx!important}.u-m-b-16{margin-bottom:16rpx!important}.u-p-b-16{padding-bottom:16rpx!important}.u-margin-bottom-16{margin-bottom:16rpx!important}.u-padding-bottom-16{padding-bottom:16rpx!important}.u-margin-18,.u-m-18{margin:18rpx!important}.u-padding-18,.u-p-18{padding:18rpx!important}.u-m-l-18{margin-left:18rpx!important}.u-p-l-18{padding-left:18rpx!important}.u-margin-left-18{margin-left:18rpx!important}.u-padding-left-18{padding-left:18rpx!important}.u-m-t-18{margin-top:18rpx!important}.u-p-t-18{padding-top:18rpx!important}.u-margin-top-18{margin-top:18rpx!important}.u-padding-top-18{padding-top:18rpx!important}.u-m-r-18{margin-right:18rpx!important}.u-p-r-18{padding-right:18rpx!important}.u-margin-right-18{margin-right:18rpx!important}.u-padding-right-18{padding-right:18rpx!important}.u-m-b-18{margin-bottom:18rpx!important}.u-p-b-18{padding-bottom:18rpx!important}.u-margin-bottom-18{margin-bottom:18rpx!important}.u-padding-bottom-18{padding-bottom:18rpx!important}.u-margin-20,.u-m-20{margin:20rpx!important}.u-padding-20,.u-p-20{padding:20rpx!important}.u-m-l-20{margin-left:20rpx!important}.u-p-l-20{padding-left:20rpx!important}.u-margin-left-20{margin-left:20rpx!important}.u-padding-left-20{padding-left:20rpx!important}.u-m-t-20{margin-top:20rpx!important}.u-p-t-20{padding-top:20rpx!important}.u-margin-top-20{margin-top:20rpx!important}.u-padding-top-20{padding-top:20rpx!important}.u-m-r-20{margin-right:20rpx!important}.u-p-r-20{padding-right:20rpx!important}.u-margin-right-20{margin-right:20rpx!important}.u-padding-right-20{padding-right:20rpx!important}.u-m-b-20{margin-bottom:20rpx!important}.u-p-b-20{padding-bottom:20rpx!important}.u-margin-bottom-20{margin-bottom:20rpx!important}.u-padding-bottom-20{padding-bottom:20rpx!important}.u-margin-22,.u-m-22{margin:22rpx!important}.u-padding-22,.u-p-22{padding:22rpx!important}.u-m-l-22{margin-left:22rpx!important}.u-p-l-22{padding-left:22rpx!important}.u-margin-left-22{margin-left:22rpx!important}.u-padding-left-22{padding-left:22rpx!important}.u-m-t-22{margin-top:22rpx!important}.u-p-t-22{padding-top:22rpx!important}.u-margin-top-22{margin-top:22rpx!important}.u-padding-top-22{padding-top:22rpx!important}.u-m-r-22{margin-right:22rpx!important}.u-p-r-22{padding-right:22rpx!important}.u-margin-right-22{margin-right:22rpx!important}.u-padding-right-22{padding-right:22rpx!important}.u-m-b-22{margin-bottom:22rpx!important}.u-p-b-22{padding-bottom:22rpx!important}.u-margin-bottom-22{margin-bottom:22rpx!important}.u-padding-bottom-22{padding-bottom:22rpx!important}.u-margin-24,.u-m-24{margin:24rpx!important}.u-padding-24,.u-p-24{padding:24rpx!important}.u-m-l-24{margin-left:24rpx!important}.u-p-l-24{padding-left:24rpx!important}.u-margin-left-24{margin-left:24rpx!important}.u-padding-left-24{padding-left:24rpx!important}.u-m-t-24{margin-top:24rpx!important}.u-p-t-24{padding-top:24rpx!important}.u-margin-top-24{margin-top:24rpx!important}.u-padding-top-24{padding-top:24rpx!important}.u-m-r-24{margin-right:24rpx!important}.u-p-r-24{padding-right:24rpx!important}.u-margin-right-24{margin-right:24rpx!important}.u-padding-right-24{padding-right:24rpx!important}.u-m-b-24{margin-bottom:24rpx!important}.u-p-b-24{padding-bottom:24rpx!important}.u-margin-bottom-24{margin-bottom:24rpx!important}.u-padding-bottom-24{padding-bottom:24rpx!important}.u-margin-25,.u-m-25{margin:25rpx!important}.u-padding-25,.u-p-25{padding:25rpx!important}.u-m-l-25{margin-left:25rpx!important}.u-p-l-25{padding-left:25rpx!important}.u-margin-left-25{margin-left:25rpx!important}.u-padding-left-25{padding-left:25rpx!important}.u-m-t-25{margin-top:25rpx!important}.u-p-t-25{padding-top:25rpx!important}.u-margin-top-25{margin-top:25rpx!important}.u-padding-top-25{padding-top:25rpx!important}.u-m-r-25{margin-right:25rpx!important}.u-p-r-25{padding-right:25rpx!important}.u-margin-right-25{margin-right:25rpx!important}.u-padding-right-25{padding-right:25rpx!important}.u-m-b-25{margin-bottom:25rpx!important}.u-p-b-25{padding-bottom:25rpx!important}.u-margin-bottom-25{margin-bottom:25rpx!important}.u-padding-bottom-25{padding-bottom:25rpx!important}.u-margin-26,.u-m-26{margin:26rpx!important}.u-padding-26,.u-p-26{padding:26rpx!important}.u-m-l-26{margin-left:26rpx!important}.u-p-l-26{padding-left:26rpx!important}.u-margin-left-26{margin-left:26rpx!important}.u-padding-left-26{padding-left:26rpx!important}.u-m-t-26{margin-top:26rpx!important}.u-p-t-26{padding-top:26rpx!important}.u-margin-top-26{margin-top:26rpx!important}.u-padding-top-26{padding-top:26rpx!important}.u-m-r-26{margin-right:26rpx!important}.u-p-r-26{padding-right:26rpx!important}.u-margin-right-26{margin-right:26rpx!important}.u-padding-right-26{padding-right:26rpx!important}.u-m-b-26{margin-bottom:26rpx!important}.u-p-b-26{padding-bottom:26rpx!important}.u-margin-bottom-26{margin-bottom:26rpx!important}.u-padding-bottom-26{padding-bottom:26rpx!important}.u-margin-28,.u-m-28{margin:28rpx!important}.u-padding-28,.u-p-28{padding:28rpx!important}.u-m-l-28{margin-left:28rpx!important}.u-p-l-28{padding-left:28rpx!important}.u-margin-left-28{margin-left:28rpx!important}.u-padding-left-28{padding-left:28rpx!important}.u-m-t-28{margin-top:28rpx!important}.u-p-t-28{padding-top:28rpx!important}.u-margin-top-28{margin-top:28rpx!important}.u-padding-top-28{padding-top:28rpx!important}.u-m-r-28{margin-right:28rpx!important}.u-p-r-28{padding-right:28rpx!important}.u-margin-right-28{margin-right:28rpx!important}.u-padding-right-28{padding-right:28rpx!important}.u-m-b-28{margin-bottom:28rpx!important}.u-p-b-28{padding-bottom:28rpx!important}.u-margin-bottom-28{margin-bottom:28rpx!important}.u-padding-bottom-28{padding-bottom:28rpx!important}.u-margin-30,.u-m-30{margin:30rpx!important}.u-padding-30,.u-p-30{padding:30rpx!important}.u-m-l-30{margin-left:30rpx!important}.u-p-l-30{padding-left:30rpx!important}.u-margin-left-30{margin-left:30rpx!important}.u-padding-left-30{padding-left:30rpx!important}.u-m-t-30{margin-top:30rpx!important}.u-p-t-30{padding-top:30rpx!important}.u-margin-top-30{margin-top:30rpx!important}.u-padding-top-30{padding-top:30rpx!important}.u-m-r-30{margin-right:30rpx!important}.u-p-r-30{padding-right:30rpx!important}.u-margin-right-30{margin-right:30rpx!important}.u-padding-right-30{padding-right:30rpx!important}.u-m-b-30{margin-bottom:30rpx!important}.u-p-b-30{padding-bottom:30rpx!important}.u-margin-bottom-30{margin-bottom:30rpx!important}.u-padding-bottom-30{padding-bottom:30rpx!important}.u-margin-32,.u-m-32{margin:32rpx!important}.u-padding-32,.u-p-32{padding:32rpx!important}.u-m-l-32{margin-left:32rpx!important}.u-p-l-32{padding-left:32rpx!important}.u-margin-left-32{margin-left:32rpx!important}.u-padding-left-32{padding-left:32rpx!important}.u-m-t-32{margin-top:32rpx!important}.u-p-t-32{padding-top:32rpx!important}.u-margin-top-32{margin-top:32rpx!important}.u-padding-top-32{padding-top:32rpx!important}.u-m-r-32{margin-right:32rpx!important}.u-p-r-32{padding-right:32rpx!important}.u-margin-right-32{margin-right:32rpx!important}.u-padding-right-32{padding-right:32rpx!important}.u-m-b-32{margin-bottom:32rpx!important}.u-p-b-32{padding-bottom:32rpx!important}.u-margin-bottom-32{margin-bottom:32rpx!important}.u-padding-bottom-32{padding-bottom:32rpx!important}.u-margin-34,.u-m-34{margin:34rpx!important}.u-padding-34,.u-p-34{padding:34rpx!important}.u-m-l-34{margin-left:34rpx!important}.u-p-l-34{padding-left:34rpx!important}.u-margin-left-34{margin-left:34rpx!important}.u-padding-left-34{padding-left:34rpx!important}.u-m-t-34{margin-top:34rpx!important}.u-p-t-34{padding-top:34rpx!important}.u-margin-top-34{margin-top:34rpx!important}.u-padding-top-34{padding-top:34rpx!important}.u-m-r-34{margin-right:34rpx!important}.u-p-r-34{padding-right:34rpx!important}.u-margin-right-34{margin-right:34rpx!important}.u-padding-right-34{padding-right:34rpx!important}.u-m-b-34{margin-bottom:34rpx!important}.u-p-b-34{padding-bottom:34rpx!important}.u-margin-bottom-34{margin-bottom:34rpx!important}.u-padding-bottom-34{padding-bottom:34rpx!important}.u-margin-35,.u-m-35{margin:35rpx!important}.u-padding-35,.u-p-35{padding:35rpx!important}.u-m-l-35{margin-left:35rpx!important}.u-p-l-35{padding-left:35rpx!important}.u-margin-left-35{margin-left:35rpx!important}.u-padding-left-35{padding-left:35rpx!important}.u-m-t-35{margin-top:35rpx!important}.u-p-t-35{padding-top:35rpx!important}.u-margin-top-35{margin-top:35rpx!important}.u-padding-top-35{padding-top:35rpx!important}.u-m-r-35{margin-right:35rpx!important}.u-p-r-35{padding-right:35rpx!important}.u-margin-right-35{margin-right:35rpx!important}.u-padding-right-35{padding-right:35rpx!important}.u-m-b-35{margin-bottom:35rpx!important}.u-p-b-35{padding-bottom:35rpx!important}.u-margin-bottom-35{margin-bottom:35rpx!important}.u-padding-bottom-35{padding-bottom:35rpx!important}.u-margin-36,.u-m-36{margin:36rpx!important}.u-padding-36,.u-p-36{padding:36rpx!important}.u-m-l-36{margin-left:36rpx!important}.u-p-l-36{padding-left:36rpx!important}.u-margin-left-36{margin-left:36rpx!important}.u-padding-left-36{padding-left:36rpx!important}.u-m-t-36{margin-top:36rpx!important}.u-p-t-36{padding-top:36rpx!important}.u-margin-top-36{margin-top:36rpx!important}.u-padding-top-36{padding-top:36rpx!important}.u-m-r-36{margin-right:36rpx!important}.u-p-r-36{padding-right:36rpx!important}.u-margin-right-36{margin-right:36rpx!important}.u-padding-right-36{padding-right:36rpx!important}.u-m-b-36{margin-bottom:36rpx!important}.u-p-b-36{padding-bottom:36rpx!important}.u-margin-bottom-36{margin-bottom:36rpx!important}.u-padding-bottom-36{padding-bottom:36rpx!important}.u-margin-38,.u-m-38{margin:38rpx!important}.u-padding-38,.u-p-38{padding:38rpx!important}.u-m-l-38{margin-left:38rpx!important}.u-p-l-38{padding-left:38rpx!important}.u-margin-left-38{margin-left:38rpx!important}.u-padding-left-38{padding-left:38rpx!important}.u-m-t-38{margin-top:38rpx!important}.u-p-t-38{padding-top:38rpx!important}.u-margin-top-38{margin-top:38rpx!important}.u-padding-top-38{padding-top:38rpx!important}.u-m-r-38{margin-right:38rpx!important}.u-p-r-38{padding-right:38rpx!important}.u-margin-right-38{margin-right:38rpx!important}.u-padding-right-38{padding-right:38rpx!important}.u-m-b-38{margin-bottom:38rpx!important}.u-p-b-38{padding-bottom:38rpx!important}.u-margin-bottom-38{margin-bottom:38rpx!important}.u-padding-bottom-38{padding-bottom:38rpx!important}.u-margin-40,.u-m-40{margin:40rpx!important}.u-padding-40,.u-p-40{padding:40rpx!important}.u-m-l-40{margin-left:40rpx!important}.u-p-l-40{padding-left:40rpx!important}.u-margin-left-40{margin-left:40rpx!important}.u-padding-left-40{padding-left:40rpx!important}.u-m-t-40{margin-top:40rpx!important}.u-p-t-40{padding-top:40rpx!important}.u-margin-top-40{margin-top:40rpx!important}.u-padding-top-40{padding-top:40rpx!important}.u-m-r-40{margin-right:40rpx!important}.u-p-r-40{padding-right:40rpx!important}.u-margin-right-40{margin-right:40rpx!important}.u-padding-right-40{padding-right:40rpx!important}.u-m-b-40{margin-bottom:40rpx!important}.u-p-b-40{padding-bottom:40rpx!important}.u-margin-bottom-40{margin-bottom:40rpx!important}.u-padding-bottom-40{padding-bottom:40rpx!important}.u-margin-42,.u-m-42{margin:42rpx!important}.u-padding-42,.u-p-42{padding:42rpx!important}.u-m-l-42{margin-left:42rpx!important}.u-p-l-42{padding-left:42rpx!important}.u-margin-left-42{margin-left:42rpx!important}.u-padding-left-42{padding-left:42rpx!important}.u-m-t-42{margin-top:42rpx!important}.u-p-t-42{padding-top:42rpx!important}.u-margin-top-42{margin-top:42rpx!important}.u-padding-top-42{padding-top:42rpx!important}.u-m-r-42{margin-right:42rpx!important}.u-p-r-42{padding-right:42rpx!important}.u-margin-right-42{margin-right:42rpx!important}.u-padding-right-42{padding-right:42rpx!important}.u-m-b-42{margin-bottom:42rpx!important}.u-p-b-42{padding-bottom:42rpx!important}.u-margin-bottom-42{margin-bottom:42rpx!important}.u-padding-bottom-42{padding-bottom:42rpx!important}.u-margin-44,.u-m-44{margin:44rpx!important}.u-padding-44,.u-p-44{padding:44rpx!important}.u-m-l-44{margin-left:44rpx!important}.u-p-l-44{padding-left:44rpx!important}.u-margin-left-44{margin-left:44rpx!important}.u-padding-left-44{padding-left:44rpx!important}.u-m-t-44{margin-top:44rpx!important}.u-p-t-44{padding-top:44rpx!important}.u-margin-top-44{margin-top:44rpx!important}.u-padding-top-44{padding-top:44rpx!important}.u-m-r-44{margin-right:44rpx!important}.u-p-r-44{padding-right:44rpx!important}.u-margin-right-44{margin-right:44rpx!important}.u-padding-right-44{padding-right:44rpx!important}.u-m-b-44{margin-bottom:44rpx!important}.u-p-b-44{padding-bottom:44rpx!important}.u-margin-bottom-44{margin-bottom:44rpx!important}.u-padding-bottom-44{padding-bottom:44rpx!important}.u-margin-45,.u-m-45{margin:45rpx!important}.u-padding-45,.u-p-45{padding:45rpx!important}.u-m-l-45{margin-left:45rpx!important}.u-p-l-45{padding-left:45rpx!important}.u-margin-left-45{margin-left:45rpx!important}.u-padding-left-45{padding-left:45rpx!important}.u-m-t-45{margin-top:45rpx!important}.u-p-t-45{padding-top:45rpx!important}.u-margin-top-45{margin-top:45rpx!important}.u-padding-top-45{padding-top:45rpx!important}.u-m-r-45{margin-right:45rpx!important}.u-p-r-45{padding-right:45rpx!important}.u-margin-right-45{margin-right:45rpx!important}.u-padding-right-45{padding-right:45rpx!important}.u-m-b-45{margin-bottom:45rpx!important}.u-p-b-45{padding-bottom:45rpx!important}.u-margin-bottom-45{margin-bottom:45rpx!important}.u-padding-bottom-45{padding-bottom:45rpx!important}.u-margin-46,.u-m-46{margin:46rpx!important}.u-padding-46,.u-p-46{padding:46rpx!important}.u-m-l-46{margin-left:46rpx!important}.u-p-l-46{padding-left:46rpx!important}.u-margin-left-46{margin-left:46rpx!important}.u-padding-left-46{padding-left:46rpx!important}.u-m-t-46{margin-top:46rpx!important}.u-p-t-46{padding-top:46rpx!important}.u-margin-top-46{margin-top:46rpx!important}.u-padding-top-46{padding-top:46rpx!important}.u-m-r-46{margin-right:46rpx!important}.u-p-r-46{padding-right:46rpx!important}.u-margin-right-46{margin-right:46rpx!important}.u-padding-right-46{padding-right:46rpx!important}.u-m-b-46{margin-bottom:46rpx!important}.u-p-b-46{padding-bottom:46rpx!important}.u-margin-bottom-46{margin-bottom:46rpx!important}.u-padding-bottom-46{padding-bottom:46rpx!important}.u-margin-48,.u-m-48{margin:48rpx!important}.u-padding-48,.u-p-48{padding:48rpx!important}.u-m-l-48{margin-left:48rpx!important}.u-p-l-48{padding-left:48rpx!important}.u-margin-left-48{margin-left:48rpx!important}.u-padding-left-48{padding-left:48rpx!important}.u-m-t-48{margin-top:48rpx!important}.u-p-t-48{padding-top:48rpx!important}.u-margin-top-48{margin-top:48rpx!important}.u-padding-top-48{padding-top:48rpx!important}.u-m-r-48{margin-right:48rpx!important}.u-p-r-48{padding-right:48rpx!important}.u-margin-right-48{margin-right:48rpx!important}.u-padding-right-48{padding-right:48rpx!important}.u-m-b-48{margin-bottom:48rpx!important}.u-p-b-48{padding-bottom:48rpx!important}.u-margin-bottom-48{margin-bottom:48rpx!important}.u-padding-bottom-48{padding-bottom:48rpx!important}.u-margin-50,.u-m-50{margin:50rpx!important}.u-padding-50,.u-p-50{padding:50rpx!important}.u-m-l-50{margin-left:50rpx!important}.u-p-l-50{padding-left:50rpx!important}.u-margin-left-50{margin-left:50rpx!important}.u-padding-left-50{padding-left:50rpx!important}.u-m-t-50{margin-top:50rpx!important}.u-p-t-50{padding-top:50rpx!important}.u-margin-top-50{margin-top:50rpx!important}.u-padding-top-50{padding-top:50rpx!important}.u-m-r-50{margin-right:50rpx!important}.u-p-r-50{padding-right:50rpx!important}.u-margin-right-50{margin-right:50rpx!important}.u-padding-right-50{padding-right:50rpx!important}.u-m-b-50{margin-bottom:50rpx!important}.u-p-b-50{padding-bottom:50rpx!important}.u-margin-bottom-50{margin-bottom:50rpx!important}.u-padding-bottom-50{padding-bottom:50rpx!important}.u-margin-52,.u-m-52{margin:52rpx!important}.u-padding-52,.u-p-52{padding:52rpx!important}.u-m-l-52{margin-left:52rpx!important}.u-p-l-52{padding-left:52rpx!important}.u-margin-left-52{margin-left:52rpx!important}.u-padding-left-52{padding-left:52rpx!important}.u-m-t-52{margin-top:52rpx!important}.u-p-t-52{padding-top:52rpx!important}.u-margin-top-52{margin-top:52rpx!important}.u-padding-top-52{padding-top:52rpx!important}.u-m-r-52{margin-right:52rpx!important}.u-p-r-52{padding-right:52rpx!important}.u-margin-right-52{margin-right:52rpx!important}.u-padding-right-52{padding-right:52rpx!important}.u-m-b-52{margin-bottom:52rpx!important}.u-p-b-52{padding-bottom:52rpx!important}.u-margin-bottom-52{margin-bottom:52rpx!important}.u-padding-bottom-52{padding-bottom:52rpx!important}.u-margin-54,.u-m-54{margin:54rpx!important}.u-padding-54,.u-p-54{padding:54rpx!important}.u-m-l-54{margin-left:54rpx!important}.u-p-l-54{padding-left:54rpx!important}.u-margin-left-54{margin-left:54rpx!important}.u-padding-left-54{padding-left:54rpx!important}.u-m-t-54{margin-top:54rpx!important}.u-p-t-54{padding-top:54rpx!important}.u-margin-top-54{margin-top:54rpx!important}.u-padding-top-54{padding-top:54rpx!important}.u-m-r-54{margin-right:54rpx!important}.u-p-r-54{padding-right:54rpx!important}.u-margin-right-54{margin-right:54rpx!important}.u-padding-right-54{padding-right:54rpx!important}.u-m-b-54{margin-bottom:54rpx!important}.u-p-b-54{padding-bottom:54rpx!important}.u-margin-bottom-54{margin-bottom:54rpx!important}.u-padding-bottom-54{padding-bottom:54rpx!important}.u-margin-55,.u-m-55{margin:55rpx!important}.u-padding-55,.u-p-55{padding:55rpx!important}.u-m-l-55{margin-left:55rpx!important}.u-p-l-55{padding-left:55rpx!important}.u-margin-left-55{margin-left:55rpx!important}.u-padding-left-55{padding-left:55rpx!important}.u-m-t-55{margin-top:55rpx!important}.u-p-t-55{padding-top:55rpx!important}.u-margin-top-55{margin-top:55rpx!important}.u-padding-top-55{padding-top:55rpx!important}.u-m-r-55{margin-right:55rpx!important}.u-p-r-55{padding-right:55rpx!important}.u-margin-right-55{margin-right:55rpx!important}.u-padding-right-55{padding-right:55rpx!important}.u-m-b-55{margin-bottom:55rpx!important}.u-p-b-55{padding-bottom:55rpx!important}.u-margin-bottom-55{margin-bottom:55rpx!important}.u-padding-bottom-55{padding-bottom:55rpx!important}.u-margin-56,.u-m-56{margin:56rpx!important}.u-padding-56,.u-p-56{padding:56rpx!important}.u-m-l-56{margin-left:56rpx!important}.u-p-l-56{padding-left:56rpx!important}.u-margin-left-56{margin-left:56rpx!important}.u-padding-left-56{padding-left:56rpx!important}.u-m-t-56{margin-top:56rpx!important}.u-p-t-56{padding-top:56rpx!important}.u-margin-top-56{margin-top:56rpx!important}.u-padding-top-56{padding-top:56rpx!important}.u-m-r-56{margin-right:56rpx!important}.u-p-r-56{padding-right:56rpx!important}.u-margin-right-56{margin-right:56rpx!important}.u-padding-right-56{padding-right:56rpx!important}.u-m-b-56{margin-bottom:56rpx!important}.u-p-b-56{padding-bottom:56rpx!important}.u-margin-bottom-56{margin-bottom:56rpx!important}.u-padding-bottom-56{padding-bottom:56rpx!important}.u-margin-58,.u-m-58{margin:58rpx!important}.u-padding-58,.u-p-58{padding:58rpx!important}.u-m-l-58{margin-left:58rpx!important}.u-p-l-58{padding-left:58rpx!important}.u-margin-left-58{margin-left:58rpx!important}.u-padding-left-58{padding-left:58rpx!important}.u-m-t-58{margin-top:58rpx!important}.u-p-t-58{padding-top:58rpx!important}.u-margin-top-58{margin-top:58rpx!important}.u-padding-top-58{padding-top:58rpx!important}.u-m-r-58{margin-right:58rpx!important}.u-p-r-58{padding-right:58rpx!important}.u-margin-right-58{margin-right:58rpx!important}.u-padding-right-58{padding-right:58rpx!important}.u-m-b-58{margin-bottom:58rpx!important}.u-p-b-58{padding-bottom:58rpx!important}.u-margin-bottom-58{margin-bottom:58rpx!important}.u-padding-bottom-58{padding-bottom:58rpx!important}.u-margin-60,.u-m-60{margin:60rpx!important}.u-padding-60,.u-p-60{padding:60rpx!important}.u-m-l-60{margin-left:60rpx!important}.u-p-l-60{padding-left:60rpx!important}.u-margin-left-60{margin-left:60rpx!important}.u-padding-left-60{padding-left:60rpx!important}.u-m-t-60{margin-top:60rpx!important}.u-p-t-60{padding-top:60rpx!important}.u-margin-top-60{margin-top:60rpx!important}.u-padding-top-60{padding-top:60rpx!important}.u-m-r-60{margin-right:60rpx!important}.u-p-r-60{padding-right:60rpx!important}.u-margin-right-60{margin-right:60rpx!important}.u-padding-right-60{padding-right:60rpx!important}.u-m-b-60{margin-bottom:60rpx!important}.u-p-b-60{padding-bottom:60rpx!important}.u-margin-bottom-60{margin-bottom:60rpx!important}.u-padding-bottom-60{padding-bottom:60rpx!important}.u-margin-62,.u-m-62{margin:62rpx!important}.u-padding-62,.u-p-62{padding:62rpx!important}.u-m-l-62{margin-left:62rpx!important}.u-p-l-62{padding-left:62rpx!important}.u-margin-left-62{margin-left:62rpx!important}.u-padding-left-62{padding-left:62rpx!important}.u-m-t-62{margin-top:62rpx!important}.u-p-t-62{padding-top:62rpx!important}.u-margin-top-62{margin-top:62rpx!important}.u-padding-top-62{padding-top:62rpx!important}.u-m-r-62{margin-right:62rpx!important}.u-p-r-62{padding-right:62rpx!important}.u-margin-right-62{margin-right:62rpx!important}.u-padding-right-62{padding-right:62rpx!important}.u-m-b-62{margin-bottom:62rpx!important}.u-p-b-62{padding-bottom:62rpx!important}.u-margin-bottom-62{margin-bottom:62rpx!important}.u-padding-bottom-62{padding-bottom:62rpx!important}.u-margin-64,.u-m-64{margin:64rpx!important}.u-padding-64,.u-p-64{padding:64rpx!important}.u-m-l-64{margin-left:64rpx!important}.u-p-l-64{padding-left:64rpx!important}.u-margin-left-64{margin-left:64rpx!important}.u-padding-left-64{padding-left:64rpx!important}.u-m-t-64{margin-top:64rpx!important}.u-p-t-64{padding-top:64rpx!important}.u-margin-top-64{margin-top:64rpx!important}.u-padding-top-64{padding-top:64rpx!important}.u-m-r-64{margin-right:64rpx!important}.u-p-r-64{padding-right:64rpx!important}.u-margin-right-64{margin-right:64rpx!important}.u-padding-right-64{padding-right:64rpx!important}.u-m-b-64{margin-bottom:64rpx!important}.u-p-b-64{padding-bottom:64rpx!important}.u-margin-bottom-64{margin-bottom:64rpx!important}.u-padding-bottom-64{padding-bottom:64rpx!important}.u-margin-65,.u-m-65{margin:65rpx!important}.u-padding-65,.u-p-65{padding:65rpx!important}.u-m-l-65{margin-left:65rpx!important}.u-p-l-65{padding-left:65rpx!important}.u-margin-left-65{margin-left:65rpx!important}.u-padding-left-65{padding-left:65rpx!important}.u-m-t-65{margin-top:65rpx!important}.u-p-t-65{padding-top:65rpx!important}.u-margin-top-65{margin-top:65rpx!important}.u-padding-top-65{padding-top:65rpx!important}.u-m-r-65{margin-right:65rpx!important}.u-p-r-65{padding-right:65rpx!important}.u-margin-right-65{margin-right:65rpx!important}.u-padding-right-65{padding-right:65rpx!important}.u-m-b-65{margin-bottom:65rpx!important}.u-p-b-65{padding-bottom:65rpx!important}.u-margin-bottom-65{margin-bottom:65rpx!important}.u-padding-bottom-65{padding-bottom:65rpx!important}.u-margin-66,.u-m-66{margin:66rpx!important}.u-padding-66,.u-p-66{padding:66rpx!important}.u-m-l-66{margin-left:66rpx!important}.u-p-l-66{padding-left:66rpx!important}.u-margin-left-66{margin-left:66rpx!important}.u-padding-left-66{padding-left:66rpx!important}.u-m-t-66{margin-top:66rpx!important}.u-p-t-66{padding-top:66rpx!important}.u-margin-top-66{margin-top:66rpx!important}.u-padding-top-66{padding-top:66rpx!important}.u-m-r-66{margin-right:66rpx!important}.u-p-r-66{padding-right:66rpx!important}.u-margin-right-66{margin-right:66rpx!important}.u-padding-right-66{padding-right:66rpx!important}.u-m-b-66{margin-bottom:66rpx!important}.u-p-b-66{padding-bottom:66rpx!important}.u-margin-bottom-66{margin-bottom:66rpx!important}.u-padding-bottom-66{padding-bottom:66rpx!important}.u-margin-68,.u-m-68{margin:68rpx!important}.u-padding-68,.u-p-68{padding:68rpx!important}.u-m-l-68{margin-left:68rpx!important}.u-p-l-68{padding-left:68rpx!important}.u-margin-left-68{margin-left:68rpx!important}.u-padding-left-68{padding-left:68rpx!important}.u-m-t-68{margin-top:68rpx!important}.u-p-t-68{padding-top:68rpx!important}.u-margin-top-68{margin-top:68rpx!important}.u-padding-top-68{padding-top:68rpx!important}.u-m-r-68{margin-right:68rpx!important}.u-p-r-68{padding-right:68rpx!important}.u-margin-right-68{margin-right:68rpx!important}.u-padding-right-68{padding-right:68rpx!important}.u-m-b-68{margin-bottom:68rpx!important}.u-p-b-68{padding-bottom:68rpx!important}.u-margin-bottom-68{margin-bottom:68rpx!important}.u-padding-bottom-68{padding-bottom:68rpx!important}.u-margin-70,.u-m-70{margin:70rpx!important}.u-padding-70,.u-p-70{padding:70rpx!important}.u-m-l-70{margin-left:70rpx!important}.u-p-l-70{padding-left:70rpx!important}.u-margin-left-70{margin-left:70rpx!important}.u-padding-left-70{padding-left:70rpx!important}.u-m-t-70{margin-top:70rpx!important}.u-p-t-70{padding-top:70rpx!important}.u-margin-top-70{margin-top:70rpx!important}.u-padding-top-70{padding-top:70rpx!important}.u-m-r-70{margin-right:70rpx!important}.u-p-r-70{padding-right:70rpx!important}.u-margin-right-70{margin-right:70rpx!important}.u-padding-right-70{padding-right:70rpx!important}.u-m-b-70{margin-bottom:70rpx!important}.u-p-b-70{padding-bottom:70rpx!important}.u-margin-bottom-70{margin-bottom:70rpx!important}.u-padding-bottom-70{padding-bottom:70rpx!important}.u-margin-72,.u-m-72{margin:72rpx!important}.u-padding-72,.u-p-72{padding:72rpx!important}.u-m-l-72{margin-left:72rpx!important}.u-p-l-72{padding-left:72rpx!important}.u-margin-left-72{margin-left:72rpx!important}.u-padding-left-72{padding-left:72rpx!important}.u-m-t-72{margin-top:72rpx!important}.u-p-t-72{padding-top:72rpx!important}.u-margin-top-72{margin-top:72rpx!important}.u-padding-top-72{padding-top:72rpx!important}.u-m-r-72{margin-right:72rpx!important}.u-p-r-72{padding-right:72rpx!important}.u-margin-right-72{margin-right:72rpx!important}.u-padding-right-72{padding-right:72rpx!important}.u-m-b-72{margin-bottom:72rpx!important}.u-p-b-72{padding-bottom:72rpx!important}.u-margin-bottom-72{margin-bottom:72rpx!important}.u-padding-bottom-72{padding-bottom:72rpx!important}.u-margin-74,.u-m-74{margin:74rpx!important}.u-padding-74,.u-p-74{padding:74rpx!important}.u-m-l-74{margin-left:74rpx!important}.u-p-l-74{padding-left:74rpx!important}.u-margin-left-74{margin-left:74rpx!important}.u-padding-left-74{padding-left:74rpx!important}.u-m-t-74{margin-top:74rpx!important}.u-p-t-74{padding-top:74rpx!important}.u-margin-top-74{margin-top:74rpx!important}.u-padding-top-74{padding-top:74rpx!important}.u-m-r-74{margin-right:74rpx!important}.u-p-r-74{padding-right:74rpx!important}.u-margin-right-74{margin-right:74rpx!important}.u-padding-right-74{padding-right:74rpx!important}.u-m-b-74{margin-bottom:74rpx!important}.u-p-b-74{padding-bottom:74rpx!important}.u-margin-bottom-74{margin-bottom:74rpx!important}.u-padding-bottom-74{padding-bottom:74rpx!important}.u-margin-75,.u-m-75{margin:75rpx!important}.u-padding-75,.u-p-75{padding:75rpx!important}.u-m-l-75{margin-left:75rpx!important}.u-p-l-75{padding-left:75rpx!important}.u-margin-left-75{margin-left:75rpx!important}.u-padding-left-75{padding-left:75rpx!important}.u-m-t-75{margin-top:75rpx!important}.u-p-t-75{padding-top:75rpx!important}.u-margin-top-75{margin-top:75rpx!important}.u-padding-top-75{padding-top:75rpx!important}.u-m-r-75{margin-right:75rpx!important}.u-p-r-75{padding-right:75rpx!important}.u-margin-right-75{margin-right:75rpx!important}.u-padding-right-75{padding-right:75rpx!important}.u-m-b-75{margin-bottom:75rpx!important}.u-p-b-75{padding-bottom:75rpx!important}.u-margin-bottom-75{margin-bottom:75rpx!important}.u-padding-bottom-75{padding-bottom:75rpx!important}.u-margin-76,.u-m-76{margin:76rpx!important}.u-padding-76,.u-p-76{padding:76rpx!important}.u-m-l-76{margin-left:76rpx!important}.u-p-l-76{padding-left:76rpx!important}.u-margin-left-76{margin-left:76rpx!important}.u-padding-left-76{padding-left:76rpx!important}.u-m-t-76{margin-top:76rpx!important}.u-p-t-76{padding-top:76rpx!important}.u-margin-top-76{margin-top:76rpx!important}.u-padding-top-76{padding-top:76rpx!important}.u-m-r-76{margin-right:76rpx!important}.u-p-r-76{padding-right:76rpx!important}.u-margin-right-76{margin-right:76rpx!important}.u-padding-right-76{padding-right:76rpx!important}.u-m-b-76{margin-bottom:76rpx!important}.u-p-b-76{padding-bottom:76rpx!important}.u-margin-bottom-76{margin-bottom:76rpx!important}.u-padding-bottom-76{padding-bottom:76rpx!important}.u-margin-78,.u-m-78{margin:78rpx!important}.u-padding-78,.u-p-78{padding:78rpx!important}.u-m-l-78{margin-left:78rpx!important}.u-p-l-78{padding-left:78rpx!important}.u-margin-left-78{margin-left:78rpx!important}.u-padding-left-78{padding-left:78rpx!important}.u-m-t-78{margin-top:78rpx!important}.u-p-t-78{padding-top:78rpx!important}.u-margin-top-78{margin-top:78rpx!important}.u-padding-top-78{padding-top:78rpx!important}.u-m-r-78{margin-right:78rpx!important}.u-p-r-78{padding-right:78rpx!important}.u-margin-right-78{margin-right:78rpx!important}.u-padding-right-78{padding-right:78rpx!important}.u-m-b-78{margin-bottom:78rpx!important}.u-p-b-78{padding-bottom:78rpx!important}.u-margin-bottom-78{margin-bottom:78rpx!important}.u-padding-bottom-78{padding-bottom:78rpx!important}.u-margin-80,.u-m-80{margin:80rpx!important}.u-padding-80,.u-p-80{padding:80rpx!important}.u-m-l-80{margin-left:80rpx!important}.u-p-l-80{padding-left:80rpx!important}.u-margin-left-80{margin-left:80rpx!important}.u-padding-left-80{padding-left:80rpx!important}.u-m-t-80{margin-top:80rpx!important}.u-p-t-80{padding-top:80rpx!important}.u-margin-top-80{margin-top:80rpx!important}.u-padding-top-80{padding-top:80rpx!important}.u-m-r-80{margin-right:80rpx!important}.u-p-r-80{padding-right:80rpx!important}.u-margin-right-80{margin-right:80rpx!important}.u-padding-right-80{padding-right:80rpx!important}.u-m-b-80{margin-bottom:80rpx!important}.u-p-b-80{padding-bottom:80rpx!important}.u-margin-bottom-80{margin-bottom:80rpx!important}.u-padding-bottom-80{padding-bottom:80rpx!important}.u-reset-nvue{flex-direction:row;align-items:center}.u-type-primary-light{color:#ecf5ff}.u-type-warning-light{color:#fdf6ec}.u-type-success-light{color:#dbf1e1}.u-type-error-light{color:#fef0f0}.u-type-info-light{color:#f4f4f5}.u-type-primary-light-bg{background-color:#ecf5ff}.u-type-warning-light-bg{background-color:#fdf6ec}.u-type-success-light-bg{background-color:#dbf1e1}.u-type-error-light-bg{background-color:#fef0f0}.u-type-info-light-bg{background-color:#f4f4f5}.u-type-primary-dark{color:#2b85e4}.u-type-warning-dark{color:#f29100}.u-type-success-dark{color:#18b566}.u-type-error-dark{color:#dd6161}.u-type-info-dark{color:#82848a}.u-type-primary-dark-bg{background-color:#2b85e4}.u-type-warning-dark-bg{background-color:#f29100}.u-type-success-dark-bg{background-color:#18b566}.u-type-error-dark-bg{background-color:#dd6161}.u-type-info-dark-bg{background-color:#82848a}.u-type-primary-disabled{color:#a0cfff}.u-type-warning-disabled{color:#fcbd71}.u-type-success-disabled{color:#71d5a1}.u-type-error-disabled{color:#fab6b6}.u-type-info-disabled{color:#c8c9cc}.u-type-primary{color:#2979ff}.u-type-warning{color:#f90}.u-type-success{color:#19be6b}.u-type-error{color:#fa3534}.u-type-info{color:#909399}.u-type-primary-bg{background-color:#2979ff}.u-type-warning-bg{background-color:#f90}.u-type-success-bg{background-color:#19be6b}.u-type-error-bg{background-color:#fa3534}.u-type-info-bg{background-color:#909399}.u-main-color{color:#303133}.u-content-color{color:#606266}.u-tips-color{color:#909399}.u-light-color{color:#c0c4cc}page{color:#303133;font-size:28rpx}.u-fix-ios-appearance{-webkit-appearance:none}.u-icon-wrap{display:flex;align-items:center}.safe-area-inset-bottom{padding-bottom:0;padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.u-hover-class{opacity:.6}.u-cell-hover{background-color:#f7f8f9!important}.u-line-1{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.u-line-2{-webkit-line-clamp:2}.u-line-3{-webkit-line-clamp:3}.u-line-4{-webkit-line-clamp:4}.u-line-5{-webkit-line-clamp:5}.u-line-2,.u-line-3,.u-line-4,.u-line-5{overflow:hidden;word-break:break-all;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical}.u-border,.u-border-bottom,.u-border-left,.u-border-right,.u-border-top,.u-border-top-bottom{position:relative}.u-border-bottom:after,.u-border-left:after,.u-border-right:after,.u-border-top-bottom:after,.u-border-top:after,.u-border:after{content:" ";position:absolute;left:0;top:0;pointer-events:none;box-sizing:border-box;transform-origin:0 0;width:199.8%;height:199.7%;transform:scale(.5);border:0 solid #e4e7ed;z-index:2}.u-border-top:after{border-top-width:1px}.u-border-left:after{border-left-width:1px}.u-border-right:after{border-right-width:1px}.u-border-bottom:after{border-bottom-width:1px}.u-border-top-bottom:after{border-width:1px 0}.u-border:after{border-width:1px}.u-clearfix:after,.clearfix:after{content:"";display:table;clear:both}.u-blur-effect-inset{width:750rpx;height:var(--window-bottom);background-color:#fff}.u-reset-button{padding:0;font-size:inherit;line-height:inherit;background-color:transparent;color:inherit}.u-reset-button:after{border:none}u-td,u-th{flex:1;align-self:stretch}.u-td{height:100%}u-icon{display:inline-flex;align-items:center}u-grid{width:100%;flex:0 0 100%}u-line{flex:1}u-switch{display:inline-flex;align-items:center}u-dropdown{flex:1} +page::after{position:fixed;content:'';left:-1000px;top:-1000px;-webkit-animation:shadow-preload .1s;-webkit-animation-delay:3s;animation:shadow-preload .1s;animation-delay:3s}@-webkit-keyframes shadow-preload{0%{background-image:url(https://cdn1.dcloud.net.cn/4e44597a4d4445354d53556c6433686c4e7a55795a6a51315a54646d4e3246684d6a6378/img/shadow-grey.png)}100%{background-image:url(https://cdn1.dcloud.net.cn/4e44597a4d4445354d53556c6433686c4e7a55795a6a51315a54646d4e3246684d6a6378/img/shadow-grey.png)}}@keyframes shadow-preload{0%{background-image:url(https://cdn1.dcloud.net.cn/4e44597a4d4445354d53556c6433686c4e7a55795a6a51315a54646d4e3246684d6a6378/img/shadow-grey.png)}100%{background-image:url(https://cdn1.dcloud.net.cn/4e44597a4d4445354d53556c6433686c4e7a55795a6a51315a54646d4e3246684d6a6378/img/shadow-grey.png)}}page{--status-bar-height:25px;--top-window-height:0px;--window-top:0px;--window-bottom:0px;--window-left:0px;--window-right:0px;--window-magin:0px}[data-c-h="true"]{display: none !important;} \ No newline at end of file diff --git a/unpackage/dist/build/mp-weixin/common/assets.js b/unpackage/dist/build/mp-weixin/common/assets.js new file mode 100644 index 0000000..029abfa --- /dev/null +++ b/unpackage/dist/build/mp-weixin/common/assets.js @@ -0,0 +1 @@ +"use strict";exports._imports_0="/static/scan-icon.png",exports._imports_0$1="/static/jl.png",exports._imports_1="/static/complaint.png",exports._imports_2="/static/hlep.png"; diff --git a/unpackage/dist/build/mp-weixin/common/vendor.js b/unpackage/dist/build/mp-weixin/common/vendor.js new file mode 100644 index 0000000..0ce38ae --- /dev/null +++ b/unpackage/dist/build/mp-weixin/common/vendor.js @@ -0,0 +1,7 @@ +"use strict"; +/** +* @vue/shared v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +function e(e,t){const n=new Set(e.split(","));return t?e=>n.has(e.toLowerCase()):e=>n.has(e)}const t={},n=[],o=()=>{},r=()=>!1,i=e=>111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),s=e=>e.startsWith("onUpdate:"),c=Object.assign,a=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},u=Object.prototype.hasOwnProperty,l=(e,t)=>u.call(e,t),f=Array.isArray,p=e=>"[object Map]"===b(e),d=e=>"[object Set]"===b(e),h=e=>"function"==typeof e,g=e=>"string"==typeof e,m=e=>"symbol"==typeof e,y=e=>null!==e&&"object"==typeof e,v=e=>(y(e)||h(e))&&h(e.then)&&h(e.catch),_=Object.prototype.toString,b=e=>_.call(e),x=e=>"[object Object]"===b(e),w=e=>g(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,$=e(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),S=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},k=/-(\w)/g,O=S((e=>e.replace(k,((e,t)=>t?t.toUpperCase():"")))),P=/\B([A-Z])/g,A=S((e=>e.replace(P,"-$1").toLowerCase())),E=S((e=>e.charAt(0).toUpperCase()+e.slice(1))),C=S((e=>e?`on${E(e)}`:"")),j=(e,t)=>!Object.is(e,t),I=(e,t)=>{for(let n=0;n{const t=parseFloat(e);return isNaN(t)?e:t};function R(e){let t="";if(g(e))t=e;else if(f(e))for(let n=0;nt&&t.__v_isRef?L(e,t.value):p(t)?{[`Map(${t.size})`]:[...t.entries()].reduce(((e,[t,n],o)=>(e[M(t,o)+" =>"]=n,e)),{})}:d(t)?{[`Set(${t.size})`]:[...t.values()].map((e=>M(e)))}:m(t)?M(t):!y(t)||f(t)||x(t)?t:String(t),M=(e,t="")=>{var n;return m(e)?`Symbol(${null!=(n=e.description)?n:t})`:e},D="onShow",V="onHide",N="onLaunch",H="onError",B="onThemeChange",U="onPageNotFound",W="onUnhandledRejection",z="onLoad",q="onReady",F="onUnload",K="onInit",Z="onSaveExitState",G="onResize",J="onBackPress",Q="onPageScroll",X="onTabItemTap",Y="onReachBottom",ee="onPullDownRefresh",te="onShareTimeline",ne="onShareChat",oe="onAddToFavorites",re="onShareAppMessage",ie="onNavigationBarButtonTap",se="onNavigationBarSearchInputClicked",ce="onNavigationBarSearchInputChanged",ae="onNavigationBarSearchInputConfirmed",ue="onNavigationBarSearchInputFocusChanged",le="virtualHostId";function fe(e,t=null){let n;return(...o)=>(e&&(n=e.apply(t,o),e=null),n)}function pe(e,t){if(!g(t))return;const n=(t=t.replace(/\[(\d+)\]/g,".$1")).split(".");let o=n[0];return e||(e={}),1===n.length?e[o]:pe(e[o],n.slice(1).join("."))}function de(e){let t={};return x(e)&&Object.keys(e).sort().forEach((n=>{const o=n;t[o]=e[o]})),Object.keys(t)?t:e}const he=/:/g;const ge=encodeURIComponent;function me(e,t=ge){const n=e?Object.keys(e).map((n=>{let o=e[n];return void 0===typeof o||null===o?o="":x(o)&&(o=JSON.stringify(o)),t(n)+"="+t(o)})).filter((e=>e.length>0)).join("&"):null;return n?`?${n}`:""}const ye=[K,z,D,V,F,J,Q,X,Y,ee,te,re,ne,oe,Z,ie,se,ce,ae,ue];const ve=[D,V,N,H,B,U,W,"onExit",K,z,q,F,G,J,Q,X,Y,ee,te,oe,re,ne,Z,ie,se,ce,ae,ue],_e=(()=>({onPageScroll:1,onShareAppMessage:2,onShareTimeline:4}))();function be(e,t,n=!0){return!(n&&!h(t))&&(ve.indexOf(e)>-1||0===e.indexOf("on"))}let xe;const we=[];const $e=fe(((e,t)=>t(e))),Se=function(){};Se.prototype={_id:1,on:function(e,t,n){var o=this.e||(this.e={});return(o[e]||(o[e]=[])).push({fn:t,ctx:n,_id:this._id}),this._id++},once:function(e,t,n){var o=this;function r(){o.off(e,r),t.apply(n,arguments)}return r._=t,this.on(e,r,n)},emit:function(e){for(var t=[].slice.call(arguments,1),n=((this.e||(this.e={}))[e]||[]).slice(),o=0,r=n.length;o=0;i--)if(o[i].fn===t||o[i].fn._===t||o[i]._id===t){o.splice(i,1);break}r=o}return r.length?n[e]=r:delete n[e],this}};var ke=Se;const Oe="zh-Hans",Pe="zh-Hant",Ae="en";function Ee(e,t){if(!e)return;if(e=e.trim().replace(/_/g,"-"),t&&t[e])return e;if("chinese"===(e=e.toLowerCase()))return Oe;if(0===e.indexOf("zh"))return e.indexOf("-hans")>-1?Oe:e.indexOf("-hant")>-1?Pe:(n=e,["-tw","-hk","-mo","-cht"].find((e=>-1!==n.indexOf(e)))?Pe:Oe);var n;let o=[Ae,"fr","es"];t&&Object.keys(t).length>0&&(o=Object.keys(t));const r=function(e,t){return t.find((t=>0===e.indexOf(t)))}(e,o);return r||void 0}function Ce(e){return function(){try{return e.apply(e,arguments)}catch(t){console.error(t)}}}let je=1;const Ie={};function Te(e,t,n){if("number"==typeof e){const o=Ie[e];if(o)return o.keepAlive||delete Ie[e],o.callback(t,n)}return t}const Re="success",Le="fail",Me="complete";function De(e,t={},{beforeAll:n,beforeSuccess:o}={}){x(t)||(t={});const{success:r,fail:i,complete:s}=function(e){const t={};for(const n in e){const o=e[n];h(o)&&(t[n]=Ce(o),delete e[n])}return t}(t),c=h(r),a=h(i),u=h(s),l=je++;return function(e,t,n,o=!1){Ie[e]={name:t,keepAlive:o,callback:n}}(l,e,(l=>{(l=l||{}).errMsg=function(e,t){return e&&-1!==e.indexOf(":fail")?t+e.substring(e.indexOf(":fail")):t+":ok"}(l.errMsg,e),h(n)&&n(l),l.errMsg===e+":ok"?(h(o)&&o(l,t),c&&r(l)):a&&i(l),u&&s(l)})),l}const Ve="success",Ne="fail",He="complete",Be={},Ue={};function We(e,t){return function(n){return e(n,t)||n}}function ze(e,t,n){let o=!1;for(let r=0;re(t),catch(){}}}function qe(e,t={}){return[Ve,Ne,He].forEach((n=>{const o=e[n];if(!f(o))return;const r=t[n];t[n]=function(e){ze(o,e,t).then((e=>h(r)&&r(e)||e))}})),t}function Fe(e,t){const n=[];f(Be.returnValue)&&n.push(...Be.returnValue);const o=Ue[e];return o&&f(o.returnValue)&&n.push(...o.returnValue),n.forEach((e=>{t=e(t)||t})),t}function Ke(e){const t=Object.create(null);Object.keys(Be).forEach((e=>{"returnValue"!==e&&(t[e]=Be[e].slice())}));const n=Ue[e];return n&&Object.keys(n).forEach((e=>{"returnValue"!==e&&(t[e]=(t[e]||[]).concat(n[e]))})),t}function Ze(e,t,n,o){const r=Ke(e);if(r&&Object.keys(r).length){if(f(r.invoke)){return ze(r.invoke,n).then((n=>t(qe(Ke(e),n),...o)))}return t(qe(r,n),...o)}return t(n,...o)}function Ge(e,t){return(n={},...o)=>function(e){return!(!x(e)||![Re,Le,Me].find((t=>h(e[t]))))}(n)?Fe(e,Ze(e,t,n,o)):Fe(e,new Promise(((r,i)=>{Ze(e,t,c(n,{success:r,fail:i}),o)})))}function Je(e,t,n,o={}){const r=t+":fail";let i="";return i=n?0===n.indexOf(r)?n:r+" "+n:r,delete o.errCode,Te(e,c({errMsg:i},o))}function Qe(e,t,n,o){const r=function(e){e[0]}(t);if(r)return r}function Xe(e,t,n,o){return n=>{const r=De(e,n,o),i=Qe(0,[n]);return i?Je(r,e,i):t(n,{resolve:t=>function(e,t,n){return Te(e,c(n||{},{errMsg:t+":ok"}))}(r,e,t),reject:(t,n)=>Je(r,e,function(e){return!e||g(e)?e:e.stack?("undefined"!=typeof globalThis&&globalThis.harmonyChannel||console.error(e.message+"\n"+e.stack),e.message):e}(t),n)})}}function Ye(e,t,n,o){return function(e,t){return(...e)=>{const n=Qe(0,e);if(n)throw new Error(n);return t.apply(null,e)}}(0,t)}let et=!1,tt=0,nt=0;const ot=Ye(0,((e,t)=>{if(0===tt&&function(){const{windowWidth:e,pixelRatio:t,platform:n}=Object.assign({},wx.getWindowInfo(),{platform:wx.getDeviceInfo().platform});tt=e,nt=t,et="ios"===n}(),0===(e=Number(e)))return 0;let n=e/750*(t||tt);return n<0&&(n=-n),n=Math.floor(n+1e-4),0===n&&(n=1!==nt&&et?.5:1),e<0?-n:n}));function rt(e,t){Object.keys(t).forEach((n=>{h(t[n])&&(e[n]=function(e,t){const n=t?e?e.concat(t):f(t)?t:[t]:e;return n?function(e){const t=[];for(let n=0;n{const o=e[n],r=t[n];f(o)&&h(r)&&a(o,r)}))}const st=Ye(0,((e,t)=>{g(e)&&x(t)?rt(Ue[e]||(Ue[e]={}),t):x(e)&&rt(Be,e)})),ct=Ye(0,((e,t)=>{g(e)?x(t)?it(Ue[e],t):delete Ue[e]:x(e)&&it(Be,e)}));const at=new class{constructor(){this.$emitter=new ke}on(e,t){return this.$emitter.on(e,t)}once(e,t){return this.$emitter.once(e,t)}off(e,t){e?this.$emitter.off(e,t):this.$emitter.e={}}emit(e,...t){this.$emitter.emit(e,...t)}},ut=Ye(0,((e,t)=>(at.on(e,t),()=>at.off(e,t)))),lt=Ye(0,((e,t)=>(at.once(e,t),()=>at.off(e,t)))),ft=Ye(0,((e,t)=>{f(e)||(e=e?[e]:[]),e.forEach((e=>{at.off(e,t)}))})),pt=Ye(0,((e,...t)=>{at.emit(e,...t)}));let dt,ht,gt;function mt(e){try{return JSON.parse(e)}catch(t){}return e}const yt=[];function vt(e,t){yt.forEach((n=>{n(e,t)})),yt.length=0}const _t=Ge(bt="getPushClientId",function(e,t,n,o){return Xe(e,t,0,o)}(bt,((e,{resolve:t,reject:n})=>{Promise.resolve().then((()=>{void 0===gt&&(gt=!1,dt="",ht="uniPush is not enabled"),yt.push(((e,o)=>{e?t({cid:e}):n(o)})),void 0!==dt&&vt(dt,ht)}))}),0,xt));var bt,xt;const wt=[],$t=/^\$|__f__|getLocale|setLocale|sendNativeEvent|restoreGlobal|requireGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|rpx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64|getDeviceInfo|getAppBaseInfo|getWindowInfo|getSystemSetting|getAppAuthorizeSetting/,St=/^create|Manager$/,kt=["createBLEConnection"],Ot=["request","downloadFile","uploadFile","connectSocket"],Pt=["createBLEConnection"],At=/^on|^off/;function Et(e){return St.test(e)&&-1===kt.indexOf(e)}function Ct(e){return $t.test(e)&&-1===Pt.indexOf(e)}function jt(e){return-1!==Ot.indexOf(e)}function It(e){return!(Et(e)||Ct(e)||function(e){return At.test(e)&&"onPush"!==e}(e))}function Tt(e,t){return It(e)&&h(t)?function(n={},...o){return h(n.success)||h(n.fail)||h(n.complete)?Fe(e,Ze(e,t,n,o)):Fe(e,new Promise(((r,i)=>{Ze(e,t,c({},n,{success:r,fail:i}),o)})))}:t}Promise.prototype.finally||(Promise.prototype.finally=function(e){const t=this.constructor;return this.then((n=>t.resolve(e&&e()).then((()=>n))),(n=>t.resolve(e&&e()).then((()=>{throw n}))))});const Rt=["success","fail","cancel","complete"];const Lt=()=>{const e=h(getApp)&&getApp({allowDefault:!0});return e&&e.$vm?e.$vm.$locale:function(){let e="";{const t=wx.getAppBaseInfo();e=Ee(t&&t.language?t.language:Ae)||Ae}return e}()},Mt=[];"undefined"!=typeof global&&(global.getLocale=Lt);const Dt="__DC_STAT_UUID";let Vt;function Nt(e=wx){return function(t,n){Vt=Vt||e.getStorageSync(Dt),Vt||(Vt=Date.now()+""+Math.floor(1e7*Math.random()),wx.setStorage({key:Dt,data:Vt})),n.deviceId=Vt}}function Ht(e,t){if(e.safeArea){const n=e.safeArea;t.safeAreaInsets={top:n.top,left:n.left,right:e.windowWidth-n.right,bottom:e.screenHeight-n.bottom}}}function Bt(e,t){let n="",o="";return n=e.split(" ")[0]||"",o=e.split(" ")[1]||"",{osName:n.toLocaleLowerCase(),osVersion:o}}function Ut(e,t){let n=e.deviceType||"phone";{const e={ipad:"pad",windows:"pc",mac:"pc"},o=Object.keys(e),r=t.toLocaleLowerCase();for(let t=0;t{Ht(e,t),Nt()(e,t),function(e,t){const{brand:n="",model:o="",system:r="",language:i="",theme:s,version:a,platform:u,fontSizeSetting:l,SDKVersion:f,pixelRatio:p,deviceOrientation:d}=e,{osName:h,osVersion:g}=Bt(r);let m=a,y=Ut(e,o),v=Wt(n),_=qt(e),b=d,x=p,w=f;const $=(i||"").replace(/_/g,"-"),S={appId:"__UNI__4630191",appName:"fs",appVersion:"1.0.0",appVersionCode:"100",appLanguage:zt($),uniCompileVersion:"4.57",uniCompilerVersion:"4.57",uniRuntimeVersion:"4.57",uniPlatform:"mp-weixin",deviceBrand:v,deviceModel:o,deviceType:y,devicePixelRatio:x,deviceOrientation:b,osName:h,osVersion:g,hostTheme:s,hostVersion:m,hostLanguage:$,hostName:_,hostSDKVersion:w,hostFontSizeSetting:l,windowTop:0,windowBottom:0,osLanguage:void 0,osTheme:void 0,ua:void 0,hostPackageName:void 0,browserName:void 0,browserVersion:void 0,isUniAppX:!1};c(t,S)}(e,t)}},Kt=Ft,Zt={args(e,t){let n=parseInt(e.current);if(isNaN(n))return;const o=e.urls;if(!f(o))return;const r=o.length;return r?(n<0?n=0:n>=r&&(n=r-1),n>0?(t.current=o[n],t.urls=o.filter(((e,t)=>!(t{const{brand:n,model:o,system:r="",platform:i=""}=e;let s=Ut(e,o),a=Wt(n);Nt()(e,t);const{osName:u,osVersion:l}=Bt(r);t=de(c(t,{deviceType:s,deviceBrand:a,deviceModel:o,osName:u,osVersion:l}))}},Qt={returnValue:(e,t)=>{const{version:n,language:o,SDKVersion:r,theme:i}=e;let s=qt(e),a=(o||"").replace(/_/g,"-");const u={hostVersion:n,hostLanguage:a,hostName:s,hostSDKVersion:r,hostTheme:i,appId:"__UNI__4630191",appName:"fs",appVersion:"1.0.0",appVersionCode:"100",appLanguage:zt(a),isUniAppX:!1,uniPlatform:"mp-weixin",uniCompileVersion:"4.57",uniCompilerVersion:"4.57",uniRuntimeVersion:"4.57"};c(t,u)}},Xt={returnValue:(e,t)=>{Ht(e,t),t=de(c(t,{windowTop:0,windowBottom:0}))}},Yt={args(e){const t=getApp({allowDefault:!0})||{};t.$vm?Ir(H,e,t.$vm.$):(wx.$onErrorHandlers||(wx.$onErrorHandlers=[]),wx.$onErrorHandlers.push(e))}},en={args(e){const t=getApp({allowDefault:!0})||{};if(t.$vm){if(e.__weh){const n=t.$vm.$[H];if(n){const t=n.indexOf(e.__weh);t>-1&&n.splice(t,1)}}}else{if(!wx.$onErrorHandlers)return;const t=wx.$onErrorHandlers.findIndex((t=>t===e));-1!==t&&wx.$onErrorHandlers.splice(t,1)}}},tn={args(){if(wx.__uni_console__){if(wx.__uni_console_warned__)return;wx.__uni_console_warned__=!0,console.warn("开发模式下小程序日志回显会使用 socket 连接,为了避免冲突,建议使用 SocketTask 的方式去管理 WebSocket 或手动关闭日志回显功能。[详情](https://uniapp.dcloud.net.cn/tutorial/run/mp-log.html)")}}},nn=tn,on={$on:ut,$off:ft,$once:lt,$emit:pt,upx2px:ot,rpx2px:ot,interceptors:{},addInterceptor:st,removeInterceptor:ct,onCreateVueApp:function(e){if(xe)return e(xe);we.push(e)},invokeCreateVueAppHook:function(e){xe=e,we.forEach((t=>t(e)))},getLocale:Lt,setLocale:e=>{const t=h(getApp)&&getApp();if(!t)return!1;return t.$vm.$locale!==e&&(t.$vm.$locale=e,Mt.forEach((t=>t({locale:e}))),!0)},onLocaleChange:e=>{-1===Mt.indexOf(e)&&Mt.push(e)},getPushClientId:_t,onPushMessage:e=>{-1===wt.indexOf(e)&&wt.push(e)},offPushMessage:e=>{if(e){const t=wt.indexOf(e);t>-1&&wt.splice(t,1)}else wt.length=0},invokePushCallback:function(e){if("enabled"===e.type)gt=!0;else if("clientId"===e.type)dt=e.cid,ht=e.errMsg,vt(dt,e.errMsg);else if("pushMsg"===e.type){const t={type:"receive",data:mt(e.message)};for(let e=0;e{t({type:"click",data:mt(e.message)})}))},__f__:function(e,t,...n){t&&n.push(t),console[e].apply(console,n)}};const rn=["qy","env","error","version","lanDebug","cloud","serviceMarket","router","worklet","__webpack_require_UNI_MP_PLUGIN__"],sn=["lanDebug","router","worklet"],cn=wx.getLaunchOptionsSync?wx.getLaunchOptionsSync():null;function an(e){return(!cn||1154!==cn.scene||!sn.includes(e))&&(rn.indexOf(e)>-1||"function"==typeof wx[e])}function un(){const e={};for(const t in wx)an(t)&&(e[t]=wx[t]);return"undefined"!=typeof globalThis&&"undefined"==typeof requireMiniProgram&&(globalThis.wx=e),e}const ln=["__route__","__wxExparserNodeId__","__wxWebviewId__"],fn=(pn={oauth:["weixin"],share:["weixin"],payment:["wxpay"],push:["weixin"]},function({service:e,success:t,fail:n,complete:o}){let r;pn[e]?(r={errMsg:"getProvider:ok",service:e,provider:pn[e]},h(t)&&t(r)):(r={errMsg:"getProvider:fail:服务["+e+"]不存在"},h(n)&&n(r)),h(o)&&o(r)});var pn;const dn=un();dn.canIUse("getAppBaseInfo")||(dn.getAppBaseInfo=dn.getSystemInfoSync),dn.canIUse("getWindowInfo")||(dn.getWindowInfo=dn.getSystemInfoSync),dn.canIUse("getDeviceInfo")||(dn.getDeviceInfo=dn.getSystemInfoSync);let hn=dn.getAppBaseInfo&&dn.getAppBaseInfo();hn||(hn=dn.getSystemInfoSync());const gn=hn?hn.host:null,mn=gn&&"SAAASDK"===gn.env?dn.miniapp.shareVideoMessage:dn.shareVideoMessage;var yn=Object.freeze({__proto__:null,createSelectorQuery:function(){const e=dn.createSelectorQuery(),t=e.in;return e.in=function(e){return e.$scope?t.call(this,e.$scope):t.call(this,function(e){const t=Object.create(null);return ln.forEach((n=>{t[n]=e[n]})),t}(e))},e},getProvider:fn,shareVideoMessage:mn});const vn={args(e,t){e.compressedHeight&&!t.compressHeight&&(t.compressHeight=e.compressedHeight),e.compressedWidth&&!t.compressWidth&&(t.compressWidth=e.compressedWidth)}};var _n=function(e,t,n=wx){const o=function(e){function t(e,t,n){return function(r){return t(o(e,r,n))}}function n(e,n,o={},r={},i=!1){if(x(n)){const s=!0===i?n:{};h(o)&&(o=o(n,s)||{});for(const c in n)if(l(o,c)){let t=o[c];h(t)&&(t=t(n[c],n,s)),t?g(t)?s[t]=n[c]:x(t)&&(s[t.name?t.name:c]=t.value):console.warn(`微信小程序 ${e} 暂不支持 ${c}`)}else if(-1!==Rt.indexOf(c)){const o=n[c];h(o)&&(s[c]=t(e,o,r))}else i||l(s,c)||(s[c]=n[c]);return s}return h(n)&&(h(o)&&o(n,{}),n=t(e,n,r)),n}function o(t,o,r,i=!1){return h(e.returnValue)&&(o=e.returnValue(t,o)),n(t,o,r,{},i||!1)}return function(t,r){const i=l(e,t);if(!i&&"function"!=typeof wx[t])return r;const s=i||h(e.returnValue)||Et(t)||jt(t),c=i||h(r);if(!i&&!r)return function(){console.error(`微信小程序 暂不支持${t}`)};if(!s||!c)return r;const a=e[t];return function(e,r){let i=a||{};h(a)&&(i=a(e));const s=[e=n(t,e,i.args,i.returnValue)];void 0!==r&&s.push(r);const c=wx[i.name||t].apply(wx,s);return(Et(t)||jt(t))&&c&&!c.__v_skip&&(c.__v_skip=!0),Ct(t)?o(t,c,i.returnValue,Et(t)):c}}}(t);return new Proxy({},{get:(t,r)=>l(t,r)?t[r]:l(e,r)?Tt(r,e[r]):l(on,r)?Tt(r,on[r]):Tt(r,o(r,n[r]))})}(yn,Object.freeze({__proto__:null,compressImage:vn,getAppAuthorizeSetting:{returnValue:function(e,t){const{locationReducedAccuracy:n}=e;t.locationAccuracy="unsupported",!0===n?t.locationAccuracy="reduced":!1===n&&(t.locationAccuracy="full")}},getAppBaseInfo:Qt,getDeviceInfo:Jt,getSystemInfo:Ft,getSystemInfoSync:Kt,getWindowInfo:Xt,offError:en,onError:Yt,onSocketMessage:nn,onSocketOpen:tn,previewImage:Zt,redirectTo:{},showActionSheet:Gt}),un());let bn,xn;class wn{constructor(e=!1){this.detached=e,this._active=!0,this.effects=[],this.cleanups=[],this.parent=bn,!e&&bn&&(this.index=(bn.scopes||(bn.scopes=[])).push(this)-1)}get active(){return this._active}run(e){if(this._active){const t=bn;try{return bn=this,e()}finally{bn=t}}}on(){bn=this}off(){bn=this.parent}stop(e){if(this._active){let t,n;for(t=0,n=this.effects.length;t=4))break}1===this._dirtyLevel&&(this._dirtyLevel=0),jn()}return this._dirtyLevel>=4}set dirty(e){this._dirtyLevel=e?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let e=Pn,t=xn;try{return Pn=!0,xn=this,this._runnings++,Sn(this),this.fn()}finally{kn(this),this._runnings--,xn=t,Pn=e}}stop(){var e;this.active&&(Sn(this),kn(this),null==(e=this.onStop)||e.call(this),this.active=!1)}}function Sn(e){e._trackId++,e._depsLength=0}function kn(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},Vn=new WeakMap,Nn=Symbol(""),Hn=Symbol("");function Bn(e,t,n){if(Pn&&xn){let t=Vn.get(e);t||Vn.set(e,t=new Map);let o=t.get(n);o||t.set(n,o=Dn((()=>t.delete(n)))),Rn(xn,o)}}function Un(e,t,n,o,r,i){const s=Vn.get(e);if(!s)return;let c=[];if("clear"===t)c=[...s.values()];else if("length"===n&&f(e)){const e=Number(o);s.forEach(((t,n)=>{("length"===n||!m(n)&&n>=e)&&c.push(t)}))}else switch(void 0!==n&&c.push(s.get(n)),t){case"add":f(e)?w(n)&&c.push(s.get("length")):(c.push(s.get(Nn)),p(e)&&c.push(s.get(Hn)));break;case"delete":f(e)||(c.push(s.get(Nn)),p(e)&&c.push(s.get(Hn)));break;case"set":p(e)&&c.push(s.get(Nn))}In();for(const a of c)a&&Mn(a,4);Tn()}const Wn=e("__proto__,__v_isRef,__isVue"),zn=new Set(Object.getOwnPropertyNames(Symbol).filter((e=>"arguments"!==e&&"caller"!==e)).map((e=>Symbol[e])).filter(m)),qn=Fn();function Fn(){const e={};return["includes","indexOf","lastIndexOf"].forEach((t=>{e[t]=function(...e){const n=To(this);for(let t=0,r=this.length;t{e[t]=function(...e){Cn(),In();const n=To(this)[t].apply(this,e);return Tn(),jn(),n}})),e}function Kn(e){const t=To(this);return Bn(t,0,e),t.hasOwnProperty(e)}class Zn{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,n){const o=this._isReadonly,r=this._isShallow;if("__v_isReactive"===t)return!o;if("__v_isReadonly"===t)return o;if("__v_isShallow"===t)return r;if("__v_raw"===t)return n===(o?r?ko:So:r?$o:wo).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;const i=f(e);if(!o){if(i&&l(qn,t))return Reflect.get(qn,t,n);if("hasOwnProperty"===t)return Kn}const s=Reflect.get(e,t,n);return(m(t)?zn.has(t):Wn(t))?s:(o||Bn(e,0,t),r?s:Ho(s)?i&&w(t)?s:s.value:y(s)?o?Ao(s):Po(s):s)}}class Gn extends Zn{constructor(e=!1){super(!1,e)}set(e,t,n,o){let r=e[t];if(!this._isShallow){const t=jo(r);if(Io(n)||jo(n)||(r=To(r),n=To(n)),!f(e)&&Ho(r)&&!Ho(n))return!t&&(r.value=n,!0)}const i=f(e)&&w(t)?Number(t)e,to=e=>Reflect.getPrototypeOf(e);function no(e,t,n=!1,o=!1){const r=To(e=e.__v_raw),i=To(t);n||(j(t,i)&&Bn(r,0,t),Bn(r,0,i));const{has:s}=to(r),c=o?eo:n?Mo:Lo;return s.call(r,t)?c(e.get(t)):s.call(r,i)?c(e.get(i)):void(e!==r&&e.get(t))}function oo(e,t=!1){const n=this.__v_raw,o=To(n),r=To(e);return t||(j(e,r)&&Bn(o,0,e),Bn(o,0,r)),e===r?n.has(e):n.has(e)||n.has(r)}function ro(e,t=!1){return e=e.__v_raw,!t&&Bn(To(e),0,Nn),Reflect.get(e,"size",e)}function io(e){e=To(e);const t=To(this);return to(t).has.call(t,e)||(t.add(e),Un(t,"add",e,e)),this}function so(e,t){t=To(t);const n=To(this),{has:o,get:r}=to(n);let i=o.call(n,e);i||(e=To(e),i=o.call(n,e));const s=r.call(n,e);return n.set(e,t),i?j(t,s)&&Un(n,"set",e,t):Un(n,"add",e,t),this}function co(e){const t=To(this),{has:n,get:o}=to(t);let r=n.call(t,e);r||(e=To(e),r=n.call(t,e)),o&&o.call(t,e);const i=t.delete(e);return r&&Un(t,"delete",e,void 0),i}function ao(){const e=To(this),t=0!==e.size,n=e.clear();return t&&Un(e,"clear",void 0,void 0),n}function uo(e,t){return function(n,o){const r=this,i=r.__v_raw,s=To(i),c=t?eo:e?Mo:Lo;return!e&&Bn(s,0,Nn),i.forEach(((e,t)=>n.call(o,c(e),c(t),r)))}}function lo(e,t,n){return function(...o){const r=this.__v_raw,i=To(r),s=p(i),c="entries"===e||e===Symbol.iterator&&s,a="keys"===e&&s,u=r[e](...o),l=n?eo:t?Mo:Lo;return!t&&Bn(i,0,a?Hn:Nn),{next(){const{value:e,done:t}=u.next();return t?{value:e,done:t}:{value:c?[l(e[0]),l(e[1])]:l(e),done:t}},[Symbol.iterator](){return this}}}}function fo(e){return function(...t){return"delete"!==e&&("clear"===e?void 0:this)}}function po(){const e={get(e){return no(this,e)},get size(){return ro(this)},has:oo,add:io,set:so,delete:co,clear:ao,forEach:uo(!1,!1)},t={get(e){return no(this,e,!1,!0)},get size(){return ro(this)},has:oo,add:io,set:so,delete:co,clear:ao,forEach:uo(!1,!0)},n={get(e){return no(this,e,!0)},get size(){return ro(this,!0)},has(e){return oo.call(this,e,!0)},add:fo("add"),set:fo("set"),delete:fo("delete"),clear:fo("clear"),forEach:uo(!0,!1)},o={get(e){return no(this,e,!0,!0)},get size(){return ro(this,!0)},has(e){return oo.call(this,e,!0)},add:fo("add"),set:fo("set"),delete:fo("delete"),clear:fo("clear"),forEach:uo(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach((r=>{e[r]=lo(r,!1,!1),n[r]=lo(r,!0,!1),t[r]=lo(r,!1,!0),o[r]=lo(r,!0,!0)})),[e,n,t,o]}const[ho,go,mo,yo]=po();function vo(e,t){const n=t?e?yo:mo:e?go:ho;return(t,o,r)=>"__v_isReactive"===o?!e:"__v_isReadonly"===o?e:"__v_raw"===o?t:Reflect.get(l(n,o)&&o in t?n:t,o,r)}const _o={get:vo(!1,!1)},bo={get:vo(!1,!0)},xo={get:vo(!0,!1)},wo=new WeakMap,$o=new WeakMap,So=new WeakMap,ko=new WeakMap;function Oo(e){return e.__v_skip||!Object.isExtensible(e)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}((e=>b(e).slice(8,-1))(e))}function Po(e){return jo(e)?e:Eo(e,!1,Qn,_o,wo)}function Ao(e){return Eo(e,!0,Xn,xo,So)}function Eo(e,t,n,o,r){if(!y(e))return e;if(e.__v_raw&&(!t||!e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const s=Oo(e);if(0===s)return e;const c=new Proxy(e,2===s?o:n);return r.set(e,c),c}function Co(e){return jo(e)?Co(e.__v_raw):!(!e||!e.__v_isReactive)}function jo(e){return!(!e||!e.__v_isReadonly)}function Io(e){return!(!e||!e.__v_isShallow)}function To(e){const t=e&&e.__v_raw;return t?To(t):e}function Ro(e){return Object.isExtensible(e)&&((e,t,n)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})})(e,"__v_skip",!0),e}const Lo=e=>y(e)?Po(e):e,Mo=e=>y(e)?Ao(e):e;class Do{constructor(e,t,n,o){this.getter=e,this._setter=t,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new $n((()=>e(this._value)),(()=>No(this,2===this.effect._dirtyLevel?2:3))),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=n}get value(){const e=To(this);return e._cacheable&&!e.effect.dirty||!j(e._value,e._value=e.effect.run())||No(e,4),Vo(e),e.effect._dirtyLevel>=2&&No(e,2),e._value}set value(e){this._setter(e)}get _dirty(){return this.effect.dirty}set _dirty(e){this.effect.dirty=e}}function Vo(e){var t;Pn&&xn&&(e=To(e),Rn(xn,null!=(t=e.dep)?t:e.dep=Dn((()=>e.dep=void 0),e instanceof Do?e:void 0)))}function No(e,t=4,n){const o=(e=To(e)).dep;o&&Mn(o,t)}function Ho(e){return!(!e||!0!==e.__v_isRef)}function Bo(e){return function(e,t){if(Ho(e))return e;return new Uo(e,t)}(e,!1)}class Uo{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:To(e),this._value=t?e:Lo(e)}get value(){return Vo(this),this._value}set value(e){const t=this.__v_isShallow||Io(e)||jo(e);e=t?e:To(e),j(e,this._rawValue)&&(this._rawValue=e,this._value=t?e:Lo(e),No(this,4))}}function Wo(e){return Ho(e)?e.value:e}const zo={get:(e,t,n)=>Wo(Reflect.get(e,t,n)),set:(e,t,n,o)=>{const r=e[t];return Ho(r)&&!Ho(n)?(r.value=n,!0):Reflect.set(e,t,n,o)}};function qo(e){return Co(e)?e:new Proxy(e,zo)}function Fo(e,t,n,o){try{return o?e(...o):e()}catch(r){Zo(r,t,n)}}function Ko(e,t,n,o){if(h(e)){const r=Fo(e,t,n,o);return r&&v(r)&&r.catch((e=>{Zo(e,t,n)})),r}const r=[];for(let i=0;i>>1,r=Xo[o],i=lr(r);inull==e.id?1/0:e.id,fr=(e,t)=>{const n=lr(e)-lr(t);if(0===n){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function pr(e){Qo=!1,Jo=!0,Xo.sort(fr);try{for(Yo=0;Yolr(e)-lr(t)));if(er.length=0,tr)return void tr.push(...e);for(tr=e,nr=0;nrg(e)?e.trim():e))),n&&(i=o.map(T))}let a,u=r[a=C(n)]||r[a=C(O(n))];!u&&s&&(u=r[a=C(A(n))]),u&&Ko(u,e,6,i);const l=r[a+"Once"];if(l){if(e.emitted){if(e.emitted[a])return}else e.emitted={};e.emitted[a]=!0,Ko(l,e,6,i)}}function hr(e,t,n=!1){const o=t.emitsCache,r=o.get(e);if(void 0!==r)return r;const i=e.emits;let s={},a=!1;if(!h(e)){const o=e=>{const n=hr(e,t,!0);n&&(a=!0,c(s,n))};!n&&t.mixins.length&&t.mixins.forEach(o),e.extends&&o(e.extends),e.mixins&&e.mixins.forEach(o)}return i||a?(f(i)?i.forEach((e=>s[e]=null)):c(s,i),y(e)&&o.set(e,s),s):(y(e)&&o.set(e,null),null)}function gr(e,t){return!(!e||!i(t))&&(t=t.slice(2).replace(/Once$/,""),l(e,t[0].toLowerCase()+t.slice(1))||l(e,A(t))||l(e,t))}let mr=null;function yr(e){const t=mr;return mr=e,e&&e.type.__scopeId,t}const vr={};function _r(e,t,n){return br(e,t,n)}function br(e,n,{immediate:r,deep:i,flush:s,once:c,onTrack:u,onTrigger:l}=t){if(n&&c){const e=n;n=(...t)=>{e(...t),k()}}const p=_i,d=e=>!0===i?e:$r(e,!1===i?1:void 0);let g,m,y=!1,v=!1;if(Ho(e)?(g=()=>e.value,y=Io(e)):Co(e)?(g=()=>d(e),y=!0):f(e)?(v=!0,y=e.some((e=>Co(e)||Io(e))),g=()=>e.map((e=>Ho(e)?e.value:Co(e)?d(e):h(e)?Fo(e,p,2):void 0))):g=h(e)?n?()=>Fo(e,p,2):()=>(m&&m(),Ko(e,p,3,[_])):o,n&&i){const e=g;g=()=>$r(e())}let _=e=>{m=$.onStop=()=>{Fo(e,p,4),m=$.onStop=void 0}},b=v?new Array(e.length).fill(vr):vr;const x=()=>{if($.active&&$.dirty)if(n){const e=$.run();(i||y||(v?e.some(((e,t)=>j(e,b[t]))):j(e,b)))&&(m&&m(),Ko(n,p,3,[e,b===vr?void 0:v&&b[0]===vr?[]:b,_]),b=e)}else $.run()};let w;x.allowRecurse=!!n,"sync"===s?w=x:"post"===s?w=()=>gi(x,p&&p.suspense):(x.pre=!0,p&&(x.id=p.uid),w=()=>sr(x));const $=new $n(g,o,w),S=bn,k=()=>{$.stop(),S&&a(S.effects,$)};return n?r?x():b=$.run():"post"===s?gi($.run.bind($),p&&p.suspense):$.run(),k}function xr(e,t,n){const o=this.proxy,r=g(e)?e.includes(".")?wr(o,e):()=>o[e]:e.bind(o,o);let i;h(t)?i=t:(i=t.handler,n=t);const s=wi(this),c=br(r,i.bind(o),n);return s(),c}function wr(e,t){const n=t.split(".");return()=>{let t=e;for(let e=0;e0){if(n>=t)return e;n++}if((o=o||new Set).has(e))return e;if(o.add(e),Ho(e))$r(e.value,t,n,o);else if(f(e))for(let r=0;r{$r(e,t,n,o)}));else if(x(e))for(const r in e)$r(e[r],t,n,o);return e}function Sr(){return{app:null,config:{isNativeTag:r,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let kr=0;let Or=null;function Pr(e,t,n=!1){const o=_i||mr;if(o||Or){const r=o?null==o.parent?o.vnode.appContext&&o.vnode.appContext.provides:o.parent.provides:Or._context.provides;if(r&&e in r)return r[e];if(arguments.length>1)return n&&h(t)?t.call(o&&o.proxy):t}}function Ar(e,t){Cr(e,"a",t)}function Er(e,t){Cr(e,"da",t)}function Cr(e,t,n=_i){const o=e.__wdc||(e.__wdc=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()});if(Ir(t,o,n),n){let e=n.parent;for(;e&&e.parent;)e.parent.vnode.type.__isKeepAlive&&jr(o,t,n,e),e=e.parent}}function jr(e,t,n,o){const r=Ir(t,e,o,!0);Nr((()=>{a(o[t],r)}),n)}function Ir(e,t,n=_i,o=!1){if(n){(function(e){return ye.indexOf(e)>-1})(e)&&(n=n.root);const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;Cn();const r=wi(n),i=Ko(t,n,e,o);return r(),jn(),i});return o?r.unshift(i):r.push(i),i}}const Tr=e=>(t,n=_i)=>(!ki||"sp"===e)&&Ir(e,((...e)=>t(...e)),n),Rr=Tr("bm"),Lr=Tr("m"),Mr=Tr("bu"),Dr=Tr("u"),Vr=Tr("bum"),Nr=Tr("um"),Hr=Tr("sp"),Br=Tr("rtg"),Ur=Tr("rtc");function Wr(e,t=_i){Ir("ec",e,t)}const zr=e=>e?Si(e)?Ai(e)||e.proxy:zr(e.parent):null,qr=c(Object.create(null),{$:e=>e,$el:e=>e.__$el||(e.__$el={}),$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>zr(e.parent),$root:e=>zr(e.root),$emit:e=>e.emit,$options:e=>Yr(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,sr(e.update)}),$watch:e=>xr.bind(e)}),Fr=(e,n)=>e!==t&&!e.__isScriptSetup&&l(e,n),Kr={get({_:e},n){const{ctx:o,setupState:r,data:i,props:s,accessCache:c,type:a,appContext:u}=e;let f;if("$"!==n[0]){const a=c[n];if(void 0!==a)switch(a){case 1:return r[n];case 2:return i[n];case 4:return o[n];case 3:return s[n]}else{if(Fr(r,n))return c[n]=1,r[n];if(i!==t&&l(i,n))return c[n]=2,i[n];if((f=e.propsOptions[0])&&l(f,n))return c[n]=3,s[n];if(o!==t&&l(o,n))return c[n]=4,o[n];Gr&&(c[n]=0)}}const p=qr[n];let d,h;return p?("$attrs"===n&&Bn(e,0,n),p(e)):(d=a.__cssModules)&&(d=d[n])?d:o!==t&&l(o,n)?(c[n]=4,o[n]):(h=u.config.globalProperties,l(h,n)?h[n]:void 0)},set({_:e},n,o){const{data:r,setupState:i,ctx:s}=e;return Fr(i,n)?(i[n]=o,!0):r!==t&&l(r,n)?(r[n]=o,!0):!l(e.props,n)&&(("$"!==n[0]||!(n.slice(1)in e))&&(s[n]=o,!0))},has({_:{data:e,setupState:n,accessCache:o,ctx:r,appContext:i,propsOptions:s}},c){let a;return!!o[c]||e!==t&&l(e,c)||Fr(n,c)||(a=s[0])&&l(a,c)||l(r,c)||l(qr,c)||l(i.config.globalProperties,c)},defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:l(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Zr(e){return f(e)?e.reduce(((e,t)=>(e[t]=null,e)),{}):e}let Gr=!0;function Jr(e){const t=Yr(e),n=e.proxy,r=e.ctx;Gr=!1,t.beforeCreate&&Qr(t.beforeCreate,e,"bc");const{data:i,computed:s,methods:c,watch:a,provide:u,inject:l,created:p,beforeMount:d,mounted:g,beforeUpdate:m,updated:v,activated:_,deactivated:b,beforeDestroy:x,beforeUnmount:w,destroyed:$,unmounted:S,render:k,renderTracked:O,renderTriggered:P,errorCaptured:A,serverPrefetch:E,expose:C,inheritAttrs:j,components:I,directives:T,filters:R}=t;if(l&&function(e,t){f(e)&&(e=oi(e));for(const n in e){const o=e[n];let r;r=y(o)?"default"in o?Pr(o.from||n,o.default,!0):Pr(o.from||n):Pr(o),Ho(r)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>r.value,set:e=>r.value=e}):t[n]=r}}(l,r),c)for(const o in c){const e=c[o];h(e)&&(r[o]=e.bind(n))}if(i){const t=i.call(n,n);y(t)&&(e.data=Po(t))}if(Gr=!0,s)for(const f in s){const e=s[f],t=h(e)?e.bind(n,n):h(e.get)?e.get.bind(n,n):o,i=!h(e)&&h(e.set)?e.set.bind(n):o,c=Ei({get:t,set:i});Object.defineProperty(r,f,{enumerable:!0,configurable:!0,get:()=>c.value,set:e=>c.value=e})}if(a)for(const o in a)Xr(a[o],r,n,o);function L(e,t){f(t)?t.forEach((t=>e(t.bind(n)))):t&&e(t.bind(n))}if(function(){if(u){const e=h(u)?u.call(n):u;Reflect.ownKeys(e).forEach((t=>{!function(e,t){if(_i){let n=_i.provides;const o=_i.parent&&_i.parent.provides;o===n&&(n=_i.provides=Object.create(o)),n[e]=t,"app"===_i.type.mpType&&_i.appContext.app.provide(e,t)}}(t,e[t])}))}}(),p&&Qr(p,e,"c"),L(Rr,d),L(Lr,g),L(Mr,m),L(Dr,v),L(Ar,_),L(Er,b),L(Wr,A),L(Ur,O),L(Br,P),L(Vr,w),L(Nr,S),L(Hr,E),f(C))if(C.length){const t=e.exposed||(e.exposed={});C.forEach((e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t})}))}else e.exposed||(e.exposed={});k&&e.render===o&&(e.render=k),null!=j&&(e.inheritAttrs=j),I&&(e.components=I),T&&(e.directives=T),e.ctx.$onApplyOptions&&e.ctx.$onApplyOptions(t,e,n)}function Qr(e,t,n){Ko(f(e)?e.map((e=>e.bind(t.proxy))):e.bind(t.proxy),t,n)}function Xr(e,t,n,o){const r=o.includes(".")?wr(n,o):()=>n[o];if(g(e)){const n=t[e];h(n)&&_r(r,n)}else if(h(e))_r(r,e.bind(n));else if(y(e))if(f(e))e.forEach((e=>Xr(e,t,n,o)));else{const o=h(e.handler)?e.handler.bind(n):t[e.handler];h(o)&&_r(r,o,e)}}function Yr(e){const t=e.type,{mixins:n,extends:o}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:s}}=e.appContext,c=i.get(t);let a;return c?a=c:r.length||n||o?(a={},r.length&&r.forEach((e=>ei(a,e,s,!0))),ei(a,t,s)):a=t,y(t)&&i.set(t,a),a}function ei(e,t,n,o=!1){const{mixins:r,extends:i}=t;i&&ei(e,i,n,!0),r&&r.forEach((t=>ei(e,t,n,!0)));for(const s in t)if(o&&"expose"===s);else{const o=ti[s]||n&&n[s];e[s]=o?o(e[s],t[s]):t[s]}return e}const ti={data:ni,props:si,emits:si,methods:ii,computed:ii,beforeCreate:ri,created:ri,beforeMount:ri,mounted:ri,beforeUpdate:ri,updated:ri,beforeDestroy:ri,beforeUnmount:ri,destroyed:ri,unmounted:ri,activated:ri,deactivated:ri,errorCaptured:ri,serverPrefetch:ri,components:ii,directives:ii,watch:function(e,t){if(!e)return t;if(!t)return e;const n=c(Object.create(null),e);for(const o in t)n[o]=ri(e[o],t[o]);return n},provide:ni,inject:function(e,t){return ii(oi(e),oi(t))}};function ni(e,t){return t?e?function(){return c(h(e)?e.call(this,this):e,h(t)?t.call(this,this):t)}:t:e}function oi(e){if(f(e)){const t={};for(let n=0;n{d=!0;const[t,n]=li(e,o,!0);c(u,t),n&&p.push(...n)};!r&&o.mixins.length&&o.mixins.forEach(t),e.extends&&t(e.extends),e.mixins&&e.mixins.forEach(t)}if(!a&&!d)return y(e)&&i.set(e,n),n;if(f(a))for(let n=0;n-1,o[1]=n<0||t-1||l(o,"default"))&&p.push(e)}}}const g=[u,p];return y(e)&&i.set(e,g),g}function fi(e){return"$"!==e[0]&&!$(e)}function pi(e){if(null===e)return"null";if("function"==typeof e)return e.name||"";if("object"==typeof e){return e.constructor&&e.constructor.name||""}return""}function di(e,t){return pi(e)===pi(t)}function hi(e,t){return f(t)?t.findIndex((t=>di(t,e))):h(t)&&di(t,e)?0:-1}const gi=ar,mi=Sr();let yi=0;function vi(e,n,o){const r=e.type,i=(n?n.appContext:e.appContext)||mi,s={uid:yi++,vnode:e,type:r,parent:n,appContext:i,root:null,next:null,subTree:null,effect:null,update:null,scope:new wn(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:n?n.provides:Object.create(i.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:li(r,i),emitsOptions:hr(r,i),emit:null,emitted:null,propsDefaults:t,inheritAttrs:r.inheritAttrs,ctx:t,data:t,props:t,attrs:t,slots:t,refs:t,setupState:t,setupContext:null,attrsProxy:null,slotsProxy:null,suspense:o,suspenseId:o?o.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null,$uniElements:new Map,$templateUniElementRefs:[],$templateUniElementStyles:{},$eS:{},$eA:{}};return s.ctx={_:s},s.root=n?n.root:s,s.emit=dr.bind(null,s),e.ce&&e.ce(s),s}let _i=null;let bi,xi;bi=e=>{_i=e},xi=e=>{ki=e};const wi=e=>{const t=_i;return bi(e),e.scope.on(),()=>{e.scope.off(),bi(t)}},$i=()=>{_i&&_i.scope.off(),bi(null)};function Si(e){return 4&e.vnode.shapeFlag}let ki=!1;function Oi(e,t=!1){t&&xi(t);const{props:n}=e.vnode,o=Si(e);ci(e,n,o,t);const r=o?function(e){const t=e.type;e.accessCache=Object.create(null),e.proxy=Ro(new Proxy(e.ctx,Kr));const{setup:n}=t;if(n){const t=e.setupContext=n.length>1?function(e){const t=t=>{e.exposed=t||{}};return{get attrs(){return function(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get:(t,n)=>(Bn(e,0,"$attrs"),t[n])}))}(e)},slots:e.slots,emit:e.emit,expose:t}}(e):null,o=wi(e);Cn();const r=Fo(n,e,0,[e.props,t]);jn(),o(),v(r)?r.then($i,$i):function(e,t){h(t)?e.render=t:y(t)&&(e.setupState=qo(t));Pi(e)}(e,r)}else Pi(e)}(e):void 0;return t&&xi(!1),r}function Pi(e,t,n){const r=e.type;e.render||(e.render=r.render||o);{const t=wi(e);Cn();try{Jr(e)}finally{jn(),t()}}}function Ai(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(qo(Ro(e.exposed)),{get:(t,n)=>n in t?t[n]:e.proxy[n],has:(e,t)=>t in e||t in qr}))}const Ei=(e,t)=>{const n=function(e,t,n=!1){let r,i;const s=h(e);return s?(r=e,i=o):(r=e.get,i=e.set),new Do(r,i,s||!i,n)}(e,0,ki);return n},Ci="3.4.21";function ji(e){return Wo(e)}const Ii="[object Array]",Ti="[object Object]";function Ri(e,t){const n={};return Li(e,t),Mi(e,t,"",n),n}function Li(e,t){if((e=ji(e))===t)return;const n=b(e),o=b(t);if(n==Ti&&o==Ti)for(let r in t){const n=e[r];void 0===n?e[r]=null:Li(n,t[r])}else n==Ii&&o==Ii&&e.length>=t.length&&t.forEach(((t,n)=>{Li(e[n],t)}))}function Mi(e,t,n,o){if((e=ji(e))===t)return;const r=b(e),i=b(t);if(r==Ti)if(i!=Ti||Object.keys(e).length{Mi(e,i[t],(""==n?"":n+".")+s+"["+t+"]",o)}));else if(c==Ti)if(a!=Ti||Object.keys(r).length{Mi(e,t[r],n+"["+r+"]",o)})):Di(o,n,e)}function Di(e,t,n){e[t]=n}function Vi(e){const t=e.ctx.__next_tick_callbacks;if(t&&t.length){const e=t.slice(0);t.length=0;for(let t=0;t{t?Fo(t.bind(e.proxy),e,14):o&&o(e.proxy)})),new Promise((e=>{o=e}))}function Hi(e,t){const n=typeof(e=ji(e));if("object"===n&&null!==e){let n=t.get(e);if(void 0!==n)return n;if(f(e)){const o=e.length;n=new Array(o),t.set(e,n);for(let r=0;r{o[e]=n[e]})),o}(r,i));Object.keys(s).length?(o.__next_tick_pending=!0,r.setData(s,(()=>{o.__next_tick_pending=!1,Vi(e)})),ur()):Vi(e)}}function Wi(e,t,n){t.appContext.config.globalProperties.$applyOptions(e,t,n);const o=e.computed;if(o){const e=Object.keys(o);if(e.length){const n=t.ctx;n.$computedKeys||(n.$computedKeys=[]),n.$computedKeys.push(...e)}}delete t.ctx.$onApplyOptions}function zi(e,t=!1){const{setupState:n,$templateRefs:o,$templateUniElementRefs:r,ctx:{$scope:i,$mpPlatform:s}}=e;if("mp-alipay"===s)return;if(!i||!o&&!r)return;if(t)return o&&o.forEach((e=>qi(e,null,n))),void(r&&r.forEach((e=>qi(e,null,n))));const c="mp-baidu"===s||"mp-toutiao"===s,a=e=>{if(0===e.length)return[];const t=(i.selectAllComponents(".r")||[]).concat(i.selectAllComponents(".r-i-f")||[]);return e.filter((e=>{const o=function(e,t){const n=e.find((e=>e&&(e.properties||e.props).uI===t));if(n){const e=n.$vm;return e?Ai(e.$)||e:function(e){y(e)&&Ro(e);return e}(n)}return null}(t,e.i);return!(!c||null!==o)||(qi(e,o,n),!1)}))},u=()=>{if(o){const t=a(o);t.length&&e.proxy&&e.proxy.$scope&&e.proxy.$scope.setData({r1:1},(()=>{a(t)}))}};r&&r.length&&Ni(e,(()=>{r.forEach((e=>{f(e.v)?e.v.forEach((t=>{qi(e,t,n)})):qi(e,e.v,n)}))})),i._$setRef?i._$setRef(u):Ni(e,u)}function qi({r:e,f:t},n,o){if(h(e))e(n,{});else{const r=g(e),i=Ho(e);if(r||i)if(t){if(!i)return;f(e.value)||(e.value=[]);const t=e.value;if(-1===t.indexOf(n)){if(t.push(n),!n)return;n.$&&Vr((()=>a(t,n)),n.$)}}else r?l(o,e)&&(o[e]=n):Ho(e)&&(e.value=n)}}const Fi=ar;function Ki(e,t){const n=e.component=vi(e,t.parentComponent,null);return n.ctx.$onApplyOptions=Wi,n.ctx.$children=[],"app"===t.mpType&&(n.render=o),t.onBeforeSetup&&t.onBeforeSetup(n,t),Oi(n),t.parentComponent&&n.proxy&&t.parentComponent.ctx.$children.push(Ai(n)||n.proxy),function(e){const t=Xi.bind(e);e.$updateScopedSlots=()=>ir((()=>sr(t)));const n=()=>{if(e.isMounted){const{next:t,bu:n,u:o}=e;Yi(e,!1),Qi(),n&&I(n),Yi(e,!0),Ui(e,Gi(e)),o&&Fi(o)}else Vr((()=>{zi(e,!0)}),e),Ui(e,Gi(e))},r=e.effect=new $n(n,o,(()=>sr(i)),e.scope),i=e.update=()=>{r.dirty&&r.run()};i.id=e.uid,Yi(e,!0),i()}(n),n.proxy}const Zi=e=>{let t;for(const n in e)("class"===n||"style"===n||i(n))&&((t||(t={}))[n]=e[n]);return t};function Gi(e){const{type:t,vnode:n,proxy:o,withProxy:r,props:i,propsOptions:[s],slots:c,attrs:a,emit:u,render:l,renderCache:f,data:p,setupState:d,ctx:h,uid:g,appContext:{app:{config:{globalProperties:{pruneComponentPropsCache:m}}}},inheritAttrs:y}=e;let v;e.$uniElementIds=new Map,e.$templateRefs=[],e.$templateUniElementRefs=[],e.$templateUniElementStyles={},e.$ei=0,m(g),e.__counter=0===e.__counter?1:0;const _=yr(e);try{if(4&n.shapeFlag){Ji(y,i,s,a);const e=r||o;v=l.call(e,e,f,i,d,p,h)}else{Ji(y,i,s,t.props?a:Zi(a));const e=t;v=e.length>1?e(i,{attrs:a,slots:c,emit:u}):e(i,null)}}catch(b){Zo(b,e,1),v=!1}return zi(e),yr(_),v}function Ji(e,t,n,o){if(t&&o&&!1!==e){const e=Object.keys(o).filter((e=>"class"!==e&&"style"!==e));if(!e.length)return;n&&e.some(s)?e.forEach((e=>{s(e)&&e.slice(9)in n||(t[e]=o[e])})):e.forEach((e=>t[e]=o[e]))}}const Qi=e=>{Cn(),ur(),jn()};function Xi(){const e=this.$scopedSlotsData;if(!e||0===e.length)return;const t=this.ctx.$scope,n=t.data,o=Object.create(null);e.forEach((({path:e,index:t,data:r})=>{const i=pe(n,e),s=g(t)?`${e}.${t}`:`${e}[${t}]`;if(void 0===i||void 0===i[t])o[s]=r;else{const e=Ri(r,i[t]);Object.keys(e).forEach((t=>{o[s+"."+t]=e[t]}))}})),e.length=0,Object.keys(o).length&&t.setData(o)}function Yi({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}const es=function(e,t=null){h(e)||(e=c({},e)),null==t||y(t)||(t=null);const n=Sr(),o=new WeakSet,r=n.app={_uid:kr++,_component:e,_props:t,_container:null,_context:n,_instance:null,version:Ci,get config(){return n.config},set config(e){},use:(e,...t)=>(o.has(e)||(e&&h(e.install)?(o.add(e),e.install(r,...t)):h(e)&&(o.add(e),e(r,...t))),r),mixin:e=>(n.mixins.includes(e)||n.mixins.push(e),r),component:(e,t)=>t?(n.components[e]=t,r):n.components[e],directive:(e,t)=>t?(n.directives[e]=t,r):n.directives[e],mount(){},unmount(){},provide:(e,t)=>(n.provides[e]=t,r),runWithContext(e){const t=Or;Or=r;try{return e()}finally{Or=t}}};return r};function ts(e,t=null){("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof my?my:void 0).__VUE__=!0;const n=es(e,t),r=n._context;r.config.globalProperties.$nextTick=function(e){return Ni(this.$,e)};const i=e=>(e.appContext=r,e.shapeFlag=6,e),s=function(e,t){return Ki(i(e),t)},c=function(e){return e&&function(e){const{bum:t,scope:n,update:o,um:r}=e;t&&I(t);{const t=e.parent;if(t){const n=t.ctx.$children,o=Ai(e)||e.proxy,r=n.indexOf(o);r>-1&&n.splice(r,1)}}n.stop(),o&&(o.active=!1),r&&Fi(r),Fi((()=>{e.isUnmounted=!0}))}(e.$)};return n.mount=function(){e.render=o;const t=Ki(i({type:e}),{mpType:"app",mpInstance:null,parentComponent:null,slots:[],props:null});return n._instance=t.$,t.$app=n,t.$createComponent=s,t.$destroyComponent=c,r.$appInstance=t,t},n.unmount=function(){},n}function ns(e,t,n,o){h(t)&&Ir(e,t.bind(n),o)}function os(e,t,n){!function(e,t,n){const o=e.mpType||n.$mpType;o&&"component"!==o&&Object.keys(e).forEach((o=>{if(be(o,e[o],!1)){const r=e[o];f(r)?r.forEach((e=>ns(o,e,n,t))):ns(o,r,n,t)}}))}(e,t,n)}function rs(e,t,n){return e[t]=n}function is(e,...t){const n=this[e];return n?n(...t):(console.error(`method ${e} not found`),null)}function ss(e){const t=e.config.errorHandler;return function(n,o,r){t&&t(n,o,r);const i=e._instance;if(!i||!i.proxy)throw n;i[H]?i.proxy.$callHook(H,n):Go(n,0,o&&o.$.vnode,!1)}}function cs(e,t){return e?[...new Set([].concat(e,t))]:t}let as;const us="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",ls=/^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/;function fs(){const e=_n.getStorageSync("uni_id_token")||"",t=e.split(".");if(!e||3!==t.length)return{uid:null,role:[],permission:[],tokenExpired:0};let n;try{n=JSON.parse((o=t[1],decodeURIComponent(as(o).split("").map((function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)})).join(""))))}catch(r){throw new Error("获取当前用户信息出错,详细错误信息为:"+r.message)}var o;return n.tokenExpired=1e3*n.exp,delete n.exp,delete n.iat,n}function ps(e){const t=e.config;var n;t.errorHandler=$e(e,ss),n=t.optionMergeStrategies,ve.forEach((e=>{n[e]=cs}));const o=t.globalProperties;!function(e){e.uniIDHasRole=function(e){const{role:t}=fs();return t.indexOf(e)>-1},e.uniIDHasPermission=function(e){const{permission:t}=fs();return this.uniIDHasRole("admin")||t.indexOf(e)>-1},e.uniIDTokenValid=function(){const{tokenExpired:e}=fs();return e>Date.now()}}(o),o.$set=rs,o.$applyOptions=os,o.$callMethod=is,_n.invokeCreateVueAppHook(e)}as="function"!=typeof atob?function(e){if(e=String(e).replace(/[\t\n\f\r ]+/g,""),!ls.test(e))throw new Error("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");var t;e+="==".slice(2-(3&e.length));for(var n,o,r="",i=0;i>16&255):64===o?String.fromCharCode(t>>16&255,t>>8&255):String.fromCharCode(t>>16&255,t>>8&255,255&t);return r}:atob;const ds=Object.create(null);function hs(e){delete ds[e]}function gs(e){if(!e)return;const[t,n]=e.split(",");return ds[t]?ds[t][parseInt(n)]:void 0}var ms={install(e){ps(e),e.config.globalProperties.pruneComponentPropsCache=hs;const t=e.mount;e.mount=function(n){const o=t.call(e,n),r=function(){const e="createApp";if("undefined"!=typeof global&&void 0!==global[e])return global[e];if("undefined"!=typeof my)return my[e]}();return r?r(o):"undefined"!=typeof createMiniProgramApp&&createMiniProgramApp(o),o}}};function ys(e,t){const n=_i||mr,r=n.ctx,i=void 0===t||"mp-weixin"!==r.$mpPlatform&&"mp-qq"!==r.$mpPlatform&&"mp-xhs"!==r.$mpPlatform||!g(t)&&"number"!=typeof t?"":"_"+t,s="e"+n.$ei+++i,a=r.$scope;if(!e)return delete a[s],s;const u=a[s];return u?u.value=e:a[s]=function(e,t){const n=e=>{var r;(r=e).type&&r.target&&(r.preventDefault=o,r.stopPropagation=o,r.stopImmediatePropagation=o,l(r,"detail")||(r.detail={}),l(r,"markerId")&&(r.detail="object"==typeof r.detail?r.detail:{},r.detail.markerId=r.markerId),x(r.detail)&&l(r.detail,"checked")&&!l(r.detail,"value")&&(r.detail.value=r.detail.checked),x(r.detail)&&(r.target=c({},r.target,r.detail)));let i=[e];t&&t.ctx.$getTriggerEventDetail&&"number"==typeof e.detail&&(e.detail=t.ctx.$getTriggerEventDetail(e.detail)),e.detail&&e.detail.__args__&&(i=e.detail.__args__);const s=n.value,a=()=>Ko(function(e,t){if(f(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n&&n.call(e),e._stopped=!0},t.map((e=>t=>!t._stopped&&e(t)))}return t}(e,s),t,5,i),u=e.target,p=!!u&&(!!u.dataset&&"true"===String(u.dataset.eventsync));if(!vs.includes(e.type)||p){const t=a();if("input"===e.type&&(f(t)||v(t)))return;return t}setTimeout(a)};return n.value=e,n}(e,n),s}const vs=["tap","longpress","longtap","transitionend","animationstart","animationiteration","animationend","touchforcechange"];const _s=function(e,t=null){return e&&(e.mpType="app"),ts(e,t).use(ms)};const bs=["externalClasses"];const xs=/_(.*)_worklet_factory_/;function ws(e,t){const n=e.$children;for(let r=n.length-1;r>=0;r--){const e=n[r];if(e.$scope._$vueId===t)return e}let o;for(let r=n.length-1;r>=0;r--)if(o=ws(n[r],t),o)return o}const $s=["createSelectorQuery","createIntersectionObserver","selectAllComponents","selectComponent"];function Ss(e,t){const n=e.ctx;n.mpType=t.mpType,n.$mpType=t.mpType,n.$mpPlatform="mp-weixin",n.$scope=t.mpInstance,Object.defineProperties(n,{[le]:{get(){const e=this.$scope.data[le];return void 0===e?"":e}}}),n.$mp={},n._self={},e.slots={},f(t.slots)&&t.slots.length&&(t.slots.forEach((t=>{e.slots[t]=!0})),e.slots.d&&(e.slots.default=!0)),n.getOpenerEventChannel=function(){return t.mpInstance.getOpenerEventChannel()},n.$hasHook=ks,n.$callHook=Os,e.emit=function(e,t){return function(n,...o){const r=t.$scope;if(r&&n){const e={__args__:o};r.triggerEvent(n,e)}return e.apply(this,[n,...o])}}(e.emit,n)}function ks(e){const t=this.$[e];return!(!t||!t.length)}function Os(e,t){"mounted"===e&&(Os.call(this,"bm"),this.$.isMounted=!0,e="m");const n=this.$[e];return n&&((e,t)=>{let n;for(let o=0;o{be(n,e[n])&&t.add(n)}));{const{extends:n,mixins:o}=e;o&&o.forEach((e=>As(e,t))),n&&As(n,t)}}return t}function Es(e,t,n){-1!==n.indexOf(t)||l(e,t)||(e[t]=function(e){return this.$vm&&this.$vm.$callHook(t,e)})}const Cs=[q];function js(e,t,n=Cs){t.forEach((t=>Es(e,t,n)))}function Is(e,t,n=Cs){As(t).forEach((t=>Es(e,t,n)))}const Ts=fe((()=>{const e=[],t=h(getApp)&&getApp({allowDefault:!0});if(t&&t.$vm&&t.$vm.$){const n=t.$vm.$.appContext.mixins;if(f(n)){const t=Object.keys(_e);n.forEach((n=>{t.forEach((t=>{l(n,t)&&!e.includes(t)&&e.push(t)}))}))}}return e}));const Rs=[D,V,H,B,U,W];function Ls(e,t){const n=e.$,o={globalData:e.$options&&e.$options.globalData||{},$vm:e,onLaunch(t){this.$vm=e;const o=n.ctx;this.$vm&&o.$scope&&o.$callHook||(Ss(n,{mpType:"app",mpInstance:this,slots:[]}),o.globalData=this.globalData,e.$callHook(N,t))}},r=wx.$onErrorHandlers;r&&(r.forEach((e=>{Ir(H,e,n)})),r.length=0),function(e){const t=Bo(function(){let e="";{const t=wx.getAppBaseInfo();e=Ee(t&&t.language?t.language:Ae)||Ae}return e}());Object.defineProperty(e,"$locale",{get:()=>t.value,set(e){t.value=e}})}(e);const i=e.$.type;js(o,Rs),Is(o,i);{const e=i.methods;e&&c(o,e)}return o}function Ms(e,t){if(h(e.onLaunch)){const t=wx.getLaunchOptionsSync&&wx.getLaunchOptionsSync();e.onLaunch(t)}h(e.onShow)&&wx.onAppShow&&wx.onAppShow((e=>{t.$callHook("onShow",e)})),h(e.onHide)&&wx.onAppHide&&wx.onAppHide((e=>{t.$callHook("onHide",e)}))}const Ds=["eO","uR","uRIF","uI","uT","uP","uS"];function Vs(e){e.properties||(e.properties={}),c(e.properties,function(e,t=!1){const n={};if(!t){let e=function(e){const t=Object.create(null);e&&e.forEach((e=>{t[e]=!0})),this.setData({$slots:t})};Ds.forEach((e=>{n[e]={type:null,value:""}})),n.uS={type:null,value:[]},n.uS.observer=e}return e.behaviors&&e.behaviors.includes("wx://form-field")&&(e.properties&&e.properties.name||(n.name={type:null,value:""}),e.properties&&e.properties.value||(n.value={type:null,value:""})),n}(e),function(e){const t={};return e&&e.virtualHost&&(t.virtualHostStyle={type:null,value:""},t.virtualHostClass={type:null,value:""},t.virtualHostHidden={type:null,value:""},t[le]={type:null,value:""}),t}(e.options))}const Ns=[String,Number,Boolean,Object,Array,null];function Hs(e,t){const n=function(e){return f(e)&&1===e.length?e[0]:e}(e);return-1!==Ns.indexOf(n)?n:null}function Bs(e,t){return(t?function(e){const t={};x(e)&&Object.keys(e).forEach((n=>{-1===Ds.indexOf(n)&&(t[n]=e[n])}));return t}(e):gs(e.uP))||{}}function Us(e){const t=function(){const e=this.properties.uP;e&&(this.$vm?function(e,t){const n=To(t.props),o=gs(e)||{};Ws(n,o)&&(!function(e,t,n,o){const{props:r,attrs:i,vnode:{patchFlag:s}}=e,c=To(r),[a]=e.propsOptions;let u=!1;if(!(o||s>0)||16&s){let o;ai(e,t,r,i)&&(u=!0);for(const i in c)t&&(l(t,i)||(o=A(i))!==i&&l(t,o))||(a?!n||void 0===n[i]&&void 0===n[o]||(r[i]=ui(a,c,i,void 0,e,!0)):delete r[i]);if(i!==c)for(const e in i)t&&l(t,e)||(delete i[e],u=!0)}else if(8&s){const n=e.vnode.dynamicProps;for(let o=0;o-1&&function(e){const t=Xo.indexOf(e);t>Yo&&Xo.splice(t,1)}(t.update),t.update());var r}(e,this.$vm.$):"m"===this.properties.uT&&function(e,t){const n=t.properties,o=gs(e)||{};Ws(n,o,!1)&&t.setData(o)}(e,this))};e.observers||(e.observers={}),e.observers.uP=t}function Ws(e,t,n=!0){const o=Object.keys(t);if(n&&o.length!==Object.keys(e).length)return!0;for(let r=0;r{o.push(e.replace("uni://","wx://")),"uni://form-field"===e&&(f(n)?(n.push("name"),n.push("modelValue")):(n.name={type:String,default:""},n.modelValue={type:[String,Number,Boolean,Array,Object,Date],default:""}))})),o}(t)}function qs(e,{parse:t,mocks:n,isPage:o,isPageInProject:r,initRelation:i,handleLink:s,initLifetimes:a}){e=e.default||e;const u={multipleSlots:!0,addGlobalClass:!0,pureDataPattern:/^uP$/};f(e.mixins)&&e.mixins.forEach((e=>{y(e.options)&&c(u,e.options)})),e.options&&c(u,e.options);const p={options:u,lifetimes:a({mocks:n,isPage:o,initRelation:i,vueOptions:e}),pageLifetimes:{show(){this.$vm&&this.$vm.$callHook("onPageShow")},hide(){this.$vm&&this.$vm.$callHook("onPageHide")},resize(e){this.$vm&&this.$vm.$callHook("onPageResize",e)}},methods:{__l:s}};var d,h,g,m;return zs(p,e),Vs(p),Us(p),function(e,t){bs.forEach((n=>{l(t,n)&&(e[n]=t[n])}))}(p,e),d=p.methods,h=e.wxsCallMethods,f(h)&&h.forEach((e=>{d[e]=function(t){return this.$vm[e](t)}})),g=p.methods,(m=e.methods)&&Object.keys(m).forEach((e=>{const t=e.match(xs);if(t){const n=t[1];g[e]=m[e],g[n]=m[n]}})),t&&t(p,{handleLink:s}),p}let Fs,Ks;function Zs(){return getApp().$vm}function Gs(e,t){const{parse:n,mocks:o,isPage:r,initRelation:i,handleLink:s,initLifetimes:c}=t,a=qs(e,{mocks:o,isPage:r,isPageInProject:!0,initRelation:i,handleLink:s,initLifetimes:c});!function({properties:e},t){f(t)?t.forEach((t=>{e[t]={type:String,value:""}})):x(t)&&Object.keys(t).forEach((n=>{const o=t[n];if(x(o)){let t=o.default;h(t)&&(t=t());const r=o.type;o.type=Hs(r),e[n]={type:o.type,value:t}}else e[n]={type:Hs(o)}}))}(a,(e.default||e).props);const u=a.methods;return u.onLoad=function(e){var t;return this.options=e,this.$page={fullPath:(t=this.route+me(e),function(e){return 0===e.indexOf("/")}(t)?t:"/"+t)},this.$vm&&this.$vm.$callHook(z,e)},js(u,Ps),Is(u,e),function(e,t){if(!t)return;Object.keys(_e).forEach((n=>{t&_e[n]&&Es(e,n,[])}))}(u,e.__runtimeHooks),js(u,Ts()),n&&n(a,{handleLink:s}),a}const Js=Page,Qs=Component;function Xs(e){const t=e.triggerEvent,n=function(n,...o){return t.apply(e,[(r=n,O(r.replace(he,"-"))),...o]);var r};try{e.triggerEvent=n}catch(o){e._triggerEvent=n}}function Ys(e,t,n){const o=t[e];t[e]=o?function(...e){return Xs(this),o.apply(this,e)}:function(){Xs(this)}}Page=function(e){return Ys(z,e),Js(e)},Component=function(e){Ys("created",e);return e.properties&&e.properties.uP||(Vs(e),Us(e)),Qs(e)};var ec=Object.freeze({__proto__:null,handleLink:function(e){const t=e.detail||e.value,n=t.vuePid;let o;n&&(o=ws(this.$vm,n)),o||(o=this.$vm),t.parent=o},initLifetimes:function({mocks:e,isPage:t,initRelation:n,vueOptions:o}){return{attached(){let r=this.properties;!function(e,t){if(!e)return;const n=e.split(","),o=n.length;1===o?t._$vueId=n[0]:2===o&&(t._$vueId=n[0],t._$vuePid=n[1])}(r.uI,this);const i={vuePid:this._$vuePid};n(this,i);const s=this,c=t(s);let a=r;this.$vm=function(e,t){Fs||(Fs=Zs().$createComponent);const n=Fs(e,t);return Ai(n.$)||n}({type:o,props:Bs(a,c)},{mpType:c?"page":"component",mpInstance:s,slots:r.uS||{},parentComponent:i.parent&&i.parent.$,onBeforeSetup(t,n){!function(e,t){Object.defineProperty(e,"refs",{get(){const e={};return function(e,t,n){e.selectAllComponents(t).forEach((e=>{const t=e.properties.uR;n[t]=e.$vm||e}))}(t,".r",e),t.selectAllComponents(".r-i-f").forEach((t=>{const n=t.properties.uR;n&&(e[n]||(e[n]=[]),e[n].push(t.$vm||t))})),e}})}(t,s),function(e,t,n){const o=e.ctx;n.forEach((n=>{l(t,n)&&(e[n]=o[n]=t[n])}))}(t,s,e),function(e,t){Ss(e,t);const n=e.ctx;$s.forEach((e=>{n[e]=function(...t){const o=n.$scope;if(o&&o[e])return o[e].apply(o,t)}}))}(t,n)}}),c||function(e){const t=e.$options;f(t.behaviors)&&t.behaviors.includes("uni://form-field")&&e.$watch("modelValue",(()=>{e.$scope&&e.$scope.setData({name:e.name,value:e.modelValue})}),{immediate:!0})}(this.$vm)},ready(){this.$vm&&(this.$vm.$callHook("mounted"),this.$vm.$callHook(q))},detached(){var e;this.$vm&&(hs(this.$vm.$.uid),e=this.$vm,Ks||(Ks=Zs().$destroyComponent),Ks(e))}}},initRelation:function(e,t){e.triggerEvent("__l",t)},isPage:function(e){return!!e.route},mocks:["__route__","__wxExparserNodeId__","__wxWebviewId__"]});const tc=function(e){return App(Ls(e))},nc=(oc=ec,function(e){return Component(Gs(e,oc))});var oc;const rc=function(e){return function(t){return Component(qs(t,e))}}(ec),ic=function(e){Ms(Ls(e),e)},sc=function(e){const t=Ls(e),n=h(getApp)&&getApp({allowDefault:!0});if(!n)return;e.$.ctx.$scope=n;const o=n.globalData;o&&Object.keys(t.globalData).forEach((e=>{l(o,e)||(o[e]=t.globalData[e])})),Object.keys(t).forEach((e=>{l(n,e)||(n[e]=t[e])})),Ms(t,e)};function cc(e,t=new WeakMap){if(null===e||"object"!=typeof e)return e;if(t.has(e))return t.get(e);let n;if(e instanceof Date)n=new Date(e.getTime());else if(e instanceof RegExp)n=new RegExp(e);else if(e instanceof Map)n=new Map(Array.from(e,(([e,n])=>[e,cc(n,t)])));else if(e instanceof Set)n=new Set(Array.from(e,(e=>cc(e,t))));else if(Array.isArray(e))n=e.map((e=>cc(e,t)));else if("[object Object]"===Object.prototype.toString.call(e)){n=Object.create(Object.getPrototypeOf(e)),t.set(e,n);for(const[o,r]of Object.entries(e))n[o]=cc(r,t)}else n=Object.assign({},e);return t.set(e,n),n}function ac(e={},t={}){if("object"!=typeof(e=cc(e))||null===e||"object"!=typeof t||null===t)return e;const n=Array.isArray(e)?e.slice():Object.assign({},e);for(const o in t){if(!t.hasOwnProperty(o))continue;const e=t[o],r=n[o];e instanceof Date?n[o]=new Date(e):e instanceof RegExp?n[o]=new RegExp(e):e instanceof Map?n[o]=new Map(e):e instanceof Set?n[o]=new Set(e):n[o]="object"==typeof e&&null!==e?ac(r,e):e}return n}function uc(e){switch(typeof e){case"undefined":return!0;case"string":if(0==e.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g,"").length)return!0;break;case"boolean":if(!e)return!0;break;case"number":if(0===e||isNaN(e))return!0;break;case"object":if(null===e||0===e.length)return!0;for(var t in e)return!1;return!0}return!1}wx.createApp=global.createApp=tc,wx.createPage=nc,wx.createComponent=rc,wx.createPluginApp=global.createPluginApp=ic,wx.createSubpackageApp=global.createSubpackageApp=sc;const lc={email:function(e){return/[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/.test(e)},mobile:function(e){return/^1[3-9]\d{9}$/.test(e)},url:function(e){return/http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w-.\/?%&=]*)?/.test(e)},date:function(e){return!/Invalid|NaN/.test(new Date(e).toString())},dateISO:function(e){return/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(e)},number:function(e){return/^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/.test(e)},digits:function(e){return/^\d+$/.test(e)},idCard:function(e){return/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(e)},carNo:function(e){const t=/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/,n=/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;return 7===e.length?n.test(e):8===e.length&&t.test(e)},amount:function(e){return/^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(e)},chinese:function(e){return/^[\u4e00-\u9fa5]+$/gi.test(e)},letter:function(e){return/^[a-zA-Z]*$/.test(e)},enOrNum:function(e){return/^[0-9a-zA-Z]*$/g.test(e)},contains:function(e,t){return e.indexOf(t)>=0},range:function(e,t){return e>=t[0]&&e<=t[1]},rangeLength:function(e,t){return e.length>=t[0]&&e.length<=t[1]},empty:uc,isEmpty:uc,jsonString:function(e){if("string"==typeof e)try{var t=JSON.parse(e);return!("object"!=typeof t||!t)}catch(n){return!1}return!1},landline:function(e){return/^\d{3,4}-\d{7,8}(-\d{3,4})?$/.test(e)},object:function(e){return"[object Object]"===Object.prototype.toString.call(e)},array:function(e){return"function"==typeof Array.isArray?Array.isArray(e):"[object Array]"===Object.prototype.toString.call(e)},code:function(e,t=6){return new RegExp(`^\\d{${t}}$`).test(e)}};const fc=new class{setConfig(e){this.config=ac(this.config,e)}request(e={}){if(this.interceptor.request&&"function"==typeof this.interceptor.request){let t=this.interceptor.request(e);if(!1===t)return new Promise((()=>{}));this.options=t}return e.dataType=e.dataType||this.config.dataType,e.responseType=e.responseType||this.config.responseType,e.url=e.url||"",e.params=e.params||{},e.header=Object.assign({},this.config.header,e.header),e.method=e.method||this.config.method,new Promise(((t,n)=>{e.complete=e=>{if(_n.hideLoading(),clearTimeout(this.config.timer),this.config.timer=null,this.config.originalData)if(this.interceptor.response&&"function"==typeof this.interceptor.response){let o=this.interceptor.response(e);!1!==o?t(o):n(e)}else t(e);else if(200==e.statusCode)if(this.interceptor.response&&"function"==typeof this.interceptor.response){let o=this.interceptor.response(e.data);!1!==o?t(o):n(e.data)}else t(e.data);else n(e)},e.url=lc.url(e.url)?e.url:this.config.baseUrl+(0==e.url.indexOf("/")?e.url:"/"+e.url),this.config.showLoading&&!this.config.timer&&(this.config.timer=setTimeout((()=>{_n.showLoading({title:this.config.loadingText,mask:this.config.loadingMask}),this.config.timer=null}),this.config.loadingTime)),_n.request(e)}))}constructor(){this.config={baseUrl:"",header:{},method:"POST",dataType:"json",responseType:"text",showLoading:!0,loadingText:"请求中...",loadingTime:800,timer:null,originalData:!1,loadingMask:!0},this.interceptor={request:null,response:null},this.get=(e,t={},n={})=>this.request({method:"GET",url:e,header:n,data:t}),this.post=(e,t={},n={})=>this.request({url:e,method:"POST",header:n,data:t}),this.put=(e,t={},n={})=>this.request({url:e,method:"PUT",header:n,data:t}),this.delete=(e,t={},n={})=>this.request({url:e,method:"DELETE",header:n,data:t})}};const pc=(new class{constructor(){this.config={type:"navigateTo",url:"",delta:1,params:{},animationType:"pop-in",animationDuration:300,intercept:!1},this.route=this.route.bind(this)}addRootPath(e){return"/"===e[0]?e:`/${e}`}mixinParam(e,t){e=e&&this.addRootPath(e);let n="";return/.*\/.*\?.*=.*/.test(e)?(n=_n.$u.queryParams(t,!1),e+"&"+n):(n=_n.$u.queryParams(t),e+n)}async route(e={},t={}){let n={};if("string"==typeof e?(n.url=this.mixinParam(e,t),n.type="navigateTo"):(n=_n.$u.deepMerge(this.config,e),n.url=this.mixinParam(e.url,e.params)),t.intercept&&(this.config.intercept=t.intercept),n.params=t,n=_n.$u.deepMerge(this.config,n),"function"==typeof _n.$u.routeIntercept){await new Promise(((e,t)=>{_n.$u.routeIntercept(n,e)}))&&this.openPage(n)}else this.openPage(n)}openPage(e){const{url:t,type:n,delta:o,animationType:r,animationDuration:i}=e;"navigateTo"!=e.type&&"to"!=e.type||_n.navigateTo({url:t,animationType:r,animationDuration:i}),"redirectTo"!=e.type&&"redirect"!=e.type||_n.redirectTo({url:t}),"switchTab"!=e.type&&"tab"!=e.type||_n.switchTab({url:t}),"reLaunch"!=e.type&&"launch"!=e.type||_n.reLaunch({url:t}),"navigateBack"!=e.type&&"back"!=e.type||_n.navigateBack({delta:o})}}).route;function dc(e=null,t="yyyy-mm-dd"){e||(e=Number(new Date)),10==e.toString().length&&(e*=1e3);let n,o=new Date(e),r={"y+":o.getFullYear().toString(),"m+":(o.getMonth()+1).toString(),"d+":o.getDate().toString(),"h+":o.getHours().toString(),"M+":o.getMinutes().toString(),"s+":o.getSeconds().toString()};for(let i in r)n=new RegExp("("+i+")").exec(t),n&&(t=t.replace(n[1],1==n[1].length?r[i]:r[i].padStart(n[1].length,"0")));return t}function hc(e,t=!0){if((e=e.toLowerCase())&&/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(e)){if(4===e.length){let t="#";for(let n=1;n<4;n+=1)t+=e.slice(n,n+1).concat(e.slice(n,n+1));e=t}let n=[];for(let t=1;t<7;t+=2)n.push(parseInt("0x"+e.slice(t,t+2)));return t?`rgb(${n[0]},${n[1]},${n[2]})`:n}if(/^(rgb|RGB)/.test(e)){return e.replace(/(?:\(|\)|rgb|RGB)*/g,"").split(",").map((e=>Number(e)))}return e}function gc(e){let t=e;if(/^(rgb|RGB)/.test(t)){let e=t.replace(/(?:\(|\)|rgb|RGB)*/g,"").split(","),n="#";for(let t=0;t=e)return String(n);let o=e-n.length,r=Math.ceil(o/t.length);for(;r>>=1;)t+=t,1===r&&(t+=t);return t.slice(0,o)+n});const mc={colorGradient:function(e="rgb(0, 0, 0)",t="rgb(255, 255, 255)",n=10){let o=hc(e,!1),r=o[0],i=o[1],s=o[2],c=hc(t,!1),a=(c[0]-r)/n,u=(c[1]-i)/n,l=(c[2]-s)/n,f=[];for(let p=0;p=0))if(t.constructor===Array)switch(n){case"indices":for(let n=0;n{r.push(i+"[]="+e)}));break;case"repeat":t.forEach((e=>{r.push(i+"="+e)}));break;case"comma":let e="";t.forEach((t=>{e+=(e?",":"")+t})),r.push(i+"="+e)}else r.push(i+"="+t)}return r.length?o+r.join("&"):""},route:pc,timeFormat:dc,date:dc,timeFrom:function(e=null,t="yyyy-mm-dd"){e||(e=Number(new Date)),10==e.toString().length&&(e*=1e3);let n=+new Date(Number(e)),o=(Number(new Date)-n)/1e3,r="";switch(!0){case o<300:r="刚刚";break;case o>=300&&o<3600:r=parseInt(o/60)+"分钟前";break;case o>=3600&&o<86400:r=parseInt(o/3600)+"小时前";break;case o>=86400&&o<2592e3:r=parseInt(o/86400)+"天前";break;default:r=!1===t?o>=2592e3&&o<31536e3?parseInt(o/2592e3)+"个月前":parseInt(o/31536e3)+"年前":dc(n,t)}return r},colorGradient:mc.colorGradient,colorToRgba:mc.colorToRgba,guid:function(e=32,t=!0,n=null){let o="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),r=[];if(n=n||o.length,e)for(let i=0;iMath.random()-.5))},wranning:function(e){},get:fc.get,post:fc.post,put:fc.put,delete:fc.delete,hexToRgb:mc.hexToRgb,rgbToHex:mc.rgbToHex,test:lc,random:function(e,t){if(e>=0&&t>0&&t>=e){let n=t-e+1;return Math.floor(Math.random()*n+e)}return 0},deepClone:cc,deepMerge:ac,getParent:function(e,t){let n=this.$parent;for(;n;){if(n.$options.name===e){let e={};if(Array.isArray(t))t.map((t=>{e[t]=n[t]?n[t]:""}));else for(let o in t)Array.isArray(t[o])?t[o].length?e[o]=t[o]:e[o]=n[o]:t[o].constructor===Object?Object.keys(t[o]).length?e[o]=t[o]:e[o]=n[o]:e[o]=t[o]||!1===t[o]?t[o]:n[o];return e}n=n.$parent}return{}},$parent:function(e=void 0){let t=this.$parent;for(;t;){if(!t.$options||t.$options.name===e)return t;t=t.$parent}return!1},addUnit:function(e="auto",t="rpx"){return e=String(e),lc.number(e)?`${e}${t}`:e},trim:function(e,t="both"){return"both"==t?e.replace(/^\s+|\s+$/g,""):"left"==t?e.replace(/^\s*/,""):"right"==t?e.replace(/(\s*$)/g,""):"all"==t?e.replace(/\s+/g,""):e},type:["primary","success","error","warning","info"],http:fc,toast:function(e,t=1500){_n.showToast({title:e,icon:"none",duration:t})},config:bc,zIndex:{toast:10090,noNetwork:10080,popup:10075,mask:10070,navbar:980,topTips:975,sticky:970,indexListSticky:965},debounce:function(e,t=500,n=!1){if(null!==vc&&clearTimeout(vc),n){var o=!vc;vc=setTimeout((function(){vc=null}),t),o&&"function"==typeof e&&e()}else vc=setTimeout((function(){"function"==typeof e&&e()}),t)},throttle:function(e,t=500,n=!0){n?yc||(yc=!0,"function"==typeof e&&e(),setTimeout((()=>{yc=!1}),t)):yc||(yc=!0,setTimeout((()=>{yc=!1,"function"==typeof e&&e()}),t))}};_n.$u=xc,exports._export_sfc=(e,t)=>{const n=e.__vccOpts||e;for(const[o,r]of t)n[o]=r;return n},exports.createSSRApp=_s,exports.e=(e,...t)=>c(e,...t),exports.f=(e,t)=>function(e,t){let n;if(f(e)||g(e)){n=new Array(e.length);for(let o=0,r=e.length;ot(e,n,n)));else{const o=Object.keys(e);n=new Array(o.length);for(let r=0,i=o.length;rR(e),exports.o=(e,t)=>ys(e,t),exports.t=e=>(e=>g(e)?e:null==e?"":f(e)||y(e)&&(e.toString===_||!h(e.toString))?JSON.stringify(e,L,2):String(e))(e); diff --git a/unpackage/dist/build/mp-weixin/config/http.js b/unpackage/dist/build/mp-weixin/config/http.js new file mode 100644 index 0000000..6d9821f --- /dev/null +++ b/unpackage/dist/build/mp-weixin/config/http.js @@ -0,0 +1 @@ +"use strict";const e=require("../common/vendor.js"),o=require("./url.js");exports.request=a=>new Promise(((t,d)=>{console.log(`发起请求: ${a.method} ${o.URL+a.url}`,a.data),e.index.request({url:o.URL+a.url,method:a.method,data:a.data,header:{"Content-Type":"application/x-www-form-urlencoded",...a.headers,appid:o.appid,Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")},success:e=>(console.log(`请求响应: ${a.url}`,e),200!==e.statusCode?(console.error(`HTTP状态码错误: ${e.statusCode}`,e.data),e.data?void t(e.data):void d({msg:`请求失败,状态码:${e.statusCode}`})):e.data&&200!==e.data.code?(console.warn(`业务状态码错误: ${e.data.code}`,e.data),void t(e.data)):void t(e.data)),fail(e){console.error(`请求失败: ${a.url}`,e),d(e)}})})); diff --git a/unpackage/dist/build/mp-weixin/config/url.js b/unpackage/dist/build/mp-weixin/config/url.js new file mode 100644 index 0000000..fb6a965 --- /dev/null +++ b/unpackage/dist/build/mp-weixin/config/url.js @@ -0,0 +1 @@ +"use strict";exports.URL="https://unifans.gxfs123.com",exports.appid="wxe752f45e7f7aa271"; diff --git a/unpackage/dist/build/mp-weixin/config/user.js b/unpackage/dist/build/mp-weixin/config/user.js new file mode 100644 index 0000000..88d1525 --- /dev/null +++ b/unpackage/dist/build/mp-weixin/config/user.js @@ -0,0 +1 @@ +"use strict";const e=require("./http.js");exports.confirmPaymentAndRent=r=>(console.log(`确认支付并弹出充电宝, orderId: ${r}`),e.request({url:`/app/device/confirmPaymentAndRent?orderId=${r}`,method:"post"})),exports.getDeviceInfo=r=>e.request({url:`/app/device/${r}`,method:"get"}),exports.getMyIndexInfo=r=>e.request({url:"/app/user/userInfo",method:"get",data:r}),exports.getOrderList=r=>e.request({url:"/app/order/list",method:"get",data:r,hideLoading:!0}),exports.login=r=>e.request({url:"/app/user/login",method:"get",data:r}),exports.queryById=r=>(console.log(`查询订单详情, orderId: ${r}`),e.request({url:`/app/order/${r}`,method:"get",hideLoading:!0})),exports.queryHasOrder=r=>e.request({url:`/app/order/list?deviceNo=${r}&orderStatus=in_used`,method:"get"}),exports.rentPowerBank=(r,t)=>e.request({url:"/app/device/rentPowerBank",method:"post",data:{deviceNo:r,phone:t}}); diff --git a/unpackage/dist/build/mp-weixin/constants/help.js b/unpackage/dist/build/mp-weixin/constants/help.js new file mode 100644 index 0000000..0883091 --- /dev/null +++ b/unpackage/dist/build/mp-weixin/constants/help.js @@ -0,0 +1 @@ +"use strict";exports.HELP_CONTENT={FAQ_LIST:[{question:"如何租借风扇?",answer:'点击首页"扫码租借"按钮,使用微信扫描设备上的二维码,按提示完成支付即可使用。'},{question:"收费标准是怎样的?",answer:"使用费用为2元/小时,不足1小时按1小时计算。押金99元,归还后自动退还。"},{question:"如何归还风扇?",answer:'将风扇带到任意归还点,点击首页"扫码归还"按钮,扫描归还点二维码即可完成归还。'},{question:"押金多久能退还?",answer:"归还设备后押金将自动发起退款,预计0-7个工作日到账。"},{question:"设备无法正常使用怎么办?",answer:'您可以通过"我的-投诉与建议"提交故障反馈,或直接拨打客服电话处理。'}],CONTACT:{TITLE:"联系客服",PHONE:{LABEL:"客服电话",VALUE:"400-888-8888"},SERVICE_TIME:{LABEL:"服务时间",VALUE:"周一至周日 09:00-22:00"}}}; diff --git a/unpackage/dist/build/mp-weixin/constants/orderStatus.js b/unpackage/dist/build/mp-weixin/constants/orderStatus.js new file mode 100644 index 0000000..e673b1c --- /dev/null +++ b/unpackage/dist/build/mp-weixin/constants/orderStatus.js @@ -0,0 +1 @@ +"use strict";exports.OrderStatusMap={waiting_for_payment:{text:"待支付",class:"status-waiting"},payment_in_progress:{text:"支付中",class:"status-progress"},payment_successful:{text:"支付成功",class:"status-success"},in_used:{text:"使用中",class:"status-using"},payment_failed:{text:"支付失败",class:"status-failed"},order_cancelled:{text:"已取消",class:"status-cancelled"},used_done:{text:"已完成",class:"status-finished"}},exports.OrderStatusTabs=[{text:"全部",status:[]},{text:"待支付",status:["waiting_for_payment","payment_in_progress"]},{text:"使用中",status:["payment_successful","in_used"]},{text:"已完成",status:["used_done","payment_failed","order_cancelled"]}]; diff --git a/unpackage/dist/build/mp-weixin/pages/deposit/index.js b/unpackage/dist/build/mp-weixin/pages/deposit/index.js new file mode 100644 index 0000000..c2d925c --- /dev/null +++ b/unpackage/dist/build/mp-weixin/pages/deposit/index.js @@ -0,0 +1 @@ +"use strict";const t=require("../../common/vendor.js"),e={data:()=>({depositAmount:"99.00",records:[{type:"支付",time:"2024-03-20 15:30",amount:"99.00"},{type:"退还",time:"2024-03-19 12:00",amount:"99.00"}]}),methods:{handleWithdraw(){t.index.showModal({title:"确认提现",content:"押金将原路退回,预计0-7个工作日到账",success:e=>{e.confirm&&t.index.showToast({title:"提现申请已提交",icon:"success"})}})}}};const o=t._export_sfc(e,[["render",function(e,o,n,d,s,a){return{a:t.t(s.depositAmount),b:t.o(((...t)=>a.handleWithdraw&&a.handleWithdraw(...t))),c:t.f(s.records,((e,o,n)=>({a:t.t(e.type),b:t.t(e.time),c:t.t("退还"===e.type?"+":"-"),d:t.t(e.amount),e:t.n("退还"===e.type?"refund":""),f:o})))}}],["__scopeId","data-v-a3ef2e56"]]);wx.createPage(o); diff --git a/unpackage/dist/build/mp-weixin/pages/deposit/index.json b/unpackage/dist/build/mp-weixin/pages/deposit/index.json new file mode 100644 index 0000000..7ea70a9 --- /dev/null +++ b/unpackage/dist/build/mp-weixin/pages/deposit/index.json @@ -0,0 +1,4 @@ +{ + "navigationBarTitleText": "押金管理", + "usingComponents": {} +} \ No newline at end of file diff --git a/unpackage/dist/build/mp-weixin/pages/deposit/index.wxml b/unpackage/dist/build/mp-weixin/pages/deposit/index.wxml new file mode 100644 index 0000000..fcf3759 --- /dev/null +++ b/unpackage/dist/build/mp-weixin/pages/deposit/index.wxml @@ -0,0 +1 @@ +押金余额¥{{a}}提现说明1. 提现金额将原路退回支付账户2. 提现申请提交后预计0-7个工作日到账3. 如超时未收到,请联系客服处理押金记录{{item.a}}{{item.b}}{{item.c}}¥{{item.d}} \ No newline at end of file diff --git a/unpackage/dist/build/mp-weixin/pages/deposit/index.wxss b/unpackage/dist/build/mp-weixin/pages/deposit/index.wxss new file mode 100644 index 0000000..0063c3f --- /dev/null +++ b/unpackage/dist/build/mp-weixin/pages/deposit/index.wxss @@ -0,0 +1 @@ +.deposit-container.data-v-a3ef2e56{min-height:100vh;background:#f8f8f8;padding:30rpx}.deposit-container .deposit-card.data-v-a3ef2e56{background:linear-gradient(135deg,#1976d2,#64b5f6);border-radius:20rpx;padding:40rpx;color:#fff;text-align:center;box-shadow:0 4rpx 20rpx rgba(25,118,210,.2)}.deposit-container .deposit-card .title.data-v-a3ef2e56{font-size:28rpx;opacity:.9;margin-bottom:20rpx}.deposit-container .deposit-card .amount.data-v-a3ef2e56{font-size:72rpx;font-weight:700;margin-bottom:40rpx}.deposit-container .deposit-card .withdraw-btn.data-v-a3ef2e56{background:#fff;color:#1976d2;width:80%;height:80rpx;line-height:80rpx;border-radius:40rpx;font-size:32rpx;font-weight:500;margin:0 auto}.deposit-container .deposit-card .withdraw-btn.data-v-a3ef2e56:active{transform:scale(.98)}.deposit-container .notice-card.data-v-a3ef2e56{margin-top:30rpx;background:#fff;border-radius:20rpx;padding:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.deposit-container .notice-card .notice-title.data-v-a3ef2e56{display:flex;align-items:center;margin-bottom:20rpx}.deposit-container .notice-card .notice-title .dot.data-v-a3ef2e56{width:12rpx;height:12rpx;background:#1976d2;border-radius:50%;margin-right:10rpx}.deposit-container .notice-card .notice-title text.data-v-a3ef2e56{font-size:30rpx;font-weight:500;color:#333}.deposit-container .notice-card .notice-content .notice-item.data-v-a3ef2e56{font-size:26rpx;color:#666;line-height:1.8;padding-left:22rpx}.deposit-container .record-card.data-v-a3ef2e56{margin-top:30rpx;background:#fff;border-radius:20rpx;padding:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.deposit-container .record-card .record-title.data-v-a3ef2e56{font-size:30rpx;font-weight:500;color:#333;margin-bottom:20rpx;border-left:8rpx solid #1976D2;padding-left:20rpx}.deposit-container .record-card .record-list .record-item.data-v-a3ef2e56{display:flex;justify-content:space-between;align-items:center;padding:20rpx 0;border-bottom:1rpx solid #f5f5f5}.deposit-container .record-card .record-list .record-item.data-v-a3ef2e56:last-child{border-bottom:none}.deposit-container .record-card .record-list .record-item .record-info .record-type.data-v-a3ef2e56{font-size:28rpx;color:#333;margin-bottom:6rpx;display:block}.deposit-container .record-card .record-list .record-item .record-info .record-time.data-v-a3ef2e56{font-size:24rpx;color:#999}.deposit-container .record-card .record-list .record-item .record-amount.data-v-a3ef2e56{font-size:32rpx;color:#333;font-weight:500}.deposit-container .record-card .record-list .record-item .record-amount.refund.data-v-a3ef2e56{color:#4caf50} diff --git a/unpackage/dist/build/mp-weixin/pages/device/detail.js b/unpackage/dist/build/mp-weixin/pages/device/detail.js new file mode 100644 index 0000000..11f4ee8 --- /dev/null +++ b/unpackage/dist/build/mp-weixin/pages/device/detail.js @@ -0,0 +1 @@ +"use strict";const e=require("../../common/vendor.js"),t=require("../../config/user.js"),i={data:()=>({deviceInfo:{},deviceId:"",deviceLocation:"一号教学楼大厅",batteryLevel:95,hasActiveOrder:!1,deviceStatus:{text:"可使用",class:"available"},selectedPackage:1,packages:[{time:"1小时",price:"2.00",unitPrice:"2.00"},{time:"4小时",price:"6.00",unitPrice:"1.50"},{time:"12小时",price:"15.00",unitPrice:"1.25"}],isLoggedIn:!0,phoneNumber:""}),onLoad(e){this.deviceId=e.deviceNo,console.log(e.deviceNo),this.getDeviceInfo()},methods:{async getDeviceInfo(){const e=await t.getDeviceInfo(this.deviceId);200==e.code&&(this.deviceInfo=e.data)},showLoginTip(){e.index.showModal({title:"提示",content:"请先登录后再操作",confirmText:"去登录",success:t=>{t.confirm&&e.index.navigateTo({url:"/pages/login/index"})}})},selectPackage(e){this.selectedPackage=e},async checkOrderStatus(){try{(await this.$api.checkActiveOrder()).hasOrder&&e.index.redirectTo({url:`/pages/device/return?deviceId=${this.deviceId}`})}catch(t){e.index.showToast({title:"订单状态查询失败",icon:"none"})}},handleRent(){if(!this.isLoggedIn)return void this.showLoginTip();if(!this.phoneNumber)return void e.index.showToast({title:"请输入手机号码",icon:"none"});if(!/^1[3-9]\d{9}$/.test(this.phoneNumber))return void e.index.showToast({title:"请输入正确的手机号码",icon:"none"});const t=this.packages[this.selectedPackage];e.index.showModal({title:"确认租借",content:`确认支付押金¥99.00及${t.time}套餐费用¥${t.price}?`,success:e=>{e.confirm&&this.submitRentOrder()}})},async submitRentOrder(){try{e.index.showLoading({title:"处理中"});const i=this.packages[this.selectedPackage],c=await t.rentPowerBank(this.deviceId,this.phoneNumber);if(200!==c.code)throw new Error(c.msg||"设备租借失败");const n=c.data;e.index.hideLoading(),e.index.redirectTo({url:`/pages/order/payment?orderId=${n.orderId}&packageTime=${i.time}&packagePrice=${i.price}`})}catch(i){e.index.hideLoading(),e.index.showToast({title:i.message||"租借失败,请重试",icon:"none"})}}}};const c=e._export_sfc(i,[["render",function(t,i,c,n,a,r){return e.e({a:e.t(a.deviceId),b:e.t(a.deviceStatus.text),c:e.n(a.deviceStatus.class),d:e.t(a.deviceLocation),e:e.t(a.batteryLevel),f:!a.hasActiveOrder},a.hasActiveOrder?{}:{g:e.f(a.packages,((t,i,c)=>({a:e.t(t.time),b:e.t(t.price),c:e.t(t.unitPrice),d:i,e:a.selectedPackage===i?1:"",f:e.o((e=>r.selectPackage(i)),i)})))},{h:!a.hasActiveOrder},a.hasActiveOrder?{}:{i:a.phoneNumber,j:e.o((e=>a.phoneNumber=e.detail.value))},{k:!a.hasActiveOrder},(a.hasActiveOrder,{}),{l:e.t(a.hasActiveOrder?"归还设备":"立即租借"),m:e.n(a.hasActiveOrder?"return":"rent"),n:e.o(((...e)=>r.handleRent&&r.handleRent(...e)))})}],["__scopeId","data-v-b8e15e19"]]);wx.createPage(c); diff --git a/unpackage/dist/build/mp-weixin/pages/device/detail.json b/unpackage/dist/build/mp-weixin/pages/device/detail.json new file mode 100644 index 0000000..c908336 --- /dev/null +++ b/unpackage/dist/build/mp-weixin/pages/device/detail.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "设备详情", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "usingComponents": {} +} \ No newline at end of file diff --git a/unpackage/dist/build/mp-weixin/pages/device/detail.wxml b/unpackage/dist/build/mp-weixin/pages/device/detail.wxml new file mode 100644 index 0000000..db39782 --- /dev/null +++ b/unpackage/dist/build/mp-weixin/pages/device/detail.wxml @@ -0,0 +1 @@ +共享风扇设备号:{{a}}{{b}}设备位置{{d}}电池电量{{e}}%选择套餐{{pkg.a}}¥{{pkg.b}}约{{pkg.c}}元/小时联系方式使用说明请在使用前检查设备是否完好超出使用时间将自动按小时计费请在指定区域内使用设备押金:¥99 \ No newline at end of file diff --git a/unpackage/dist/build/mp-weixin/pages/device/detail.wxss b/unpackage/dist/build/mp-weixin/pages/device/detail.wxss new file mode 100644 index 0000000..6d8d234 --- /dev/null +++ b/unpackage/dist/build/mp-weixin/pages/device/detail.wxss @@ -0,0 +1 @@ +.detail-container.data-v-b8e15e19{min-height:100vh;background:#f8f8f8;padding:30rpx 30rpx 180rpx;box-sizing:border-box}.detail-container .device-card.data-v-b8e15e19{background:#fff;border-radius:24rpx;padding:30rpx;margin-bottom:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.detail-container .device-card .device-header.data-v-b8e15e19{display:flex;justify-content:space-between;align-items:center;margin-bottom:30rpx}.detail-container .device-card .device-header .device-title .name.data-v-b8e15e19{font-size:36rpx;font-weight:600;color:#333;margin-right:20rpx}.detail-container .device-card .device-header .device-title .id.data-v-b8e15e19{font-size:24rpx;color:#999}.detail-container .device-card .device-header .status.data-v-b8e15e19{padding:8rpx 24rpx;border-radius:24rpx;font-size:24rpx}.detail-container .device-card .device-header .status.available.data-v-b8e15e19{background:#e8f5e9;color:#4caf50}.detail-container .device-card .device-header .status.in-use.data-v-b8e15e19{background:#e3f2fd;color:#1976d2}.detail-container .device-card .device-info .info-item.data-v-b8e15e19{display:flex;justify-content:space-between;margin-bottom:16rpx}.detail-container .device-card .device-info .info-item.data-v-b8e15e19:last-child{margin-bottom:0}.detail-container .device-card .device-info .info-item .label.data-v-b8e15e19{font-size:28rpx;color:#666}.detail-container .device-card .device-info .info-item .value.data-v-b8e15e19{font-size:28rpx;color:#333}.detail-container .package-section.data-v-b8e15e19{background:#fff;border-radius:24rpx;padding:30rpx;margin-bottom:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.detail-container .package-section .section-title.data-v-b8e15e19{font-size:32rpx;font-weight:600;color:#333;margin-bottom:24rpx}.detail-container .package-section .package-list.data-v-b8e15e19{display:flex;justify-content:space-between}.detail-container .package-section .package-list .package-item.data-v-b8e15e19{flex:1;margin:0 10rpx;padding:24rpx;background:#f5f5f5;border-radius:16rpx;text-align:center;transition:all .3s}.detail-container .package-section .package-list .package-item.data-v-b8e15e19:first-child{margin-left:0}.detail-container .package-section .package-list .package-item.data-v-b8e15e19:last-child{margin-right:0}.detail-container .package-section .package-list .package-item.active.data-v-b8e15e19{background:#e3f2fd;border:2rpx solid #1976D2}.detail-container .package-section .package-list .package-item.active .package-content .time.data-v-b8e15e19,.detail-container .package-section .package-list .package-item.active .package-content .price.data-v-b8e15e19{color:#1976d2}.detail-container .package-section .package-list .package-item .package-content.data-v-b8e15e19{margin-bottom:8rpx}.detail-container .package-section .package-list .package-item .package-content .time.data-v-b8e15e19{font-size:28rpx;color:#333;margin-bottom:8rpx;display:block}.detail-container .package-section .package-list .package-item .package-content .price.data-v-b8e15e19{font-size:36rpx;font-weight:600;color:#333}.detail-container .package-section .package-list .package-item .unit-price.data-v-b8e15e19{font-size:24rpx;color:#999}.detail-container .phone-section.data-v-b8e15e19{background:#fff;border-radius:24rpx;padding:30rpx;margin-bottom:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.detail-container .phone-section .section-title.data-v-b8e15e19{font-size:32rpx;font-weight:600;color:#333;margin-bottom:24rpx}.detail-container .phone-section .phone-input-wrap .phone-input.data-v-b8e15e19{width:100%;height:88rpx;background:#f5f5f5;border-radius:16rpx;padding:0 30rpx;font-size:28rpx;box-sizing:border-box}.detail-container .phone-section .phone-input-wrap .phone-input.data-v-b8e15e19::-webkit-input-placeholder{color:#999}.detail-container .phone-section .phone-input-wrap .phone-input.data-v-b8e15e19::placeholder{color:#999}.detail-container .notice-section.data-v-b8e15e19{background:#fff;border-radius:24rpx;padding:30rpx;box-shadow:0 4rpx 16rpx rgba(0,0,0,.04)}.detail-container .notice-section .section-title.data-v-b8e15e19{font-size:32rpx;font-weight:600;color:#333;margin-bottom:24rpx}.detail-container .notice-section .notice-list .notice-item.data-v-b8e15e19{display:flex;align-items:center;margin-bottom:16rpx}.detail-container .notice-section .notice-list .notice-item.data-v-b8e15e19:last-child{margin-bottom:0}.detail-container .notice-section .notice-list .notice-item .dot.data-v-b8e15e19{width:12rpx;height:12rpx;background:#1976d2;border-radius:50%;margin-right:16rpx}.detail-container .notice-section .notice-list .notice-item text.data-v-b8e15e19{font-size:28rpx;color:#666;line-height:1.5}.detail-container .bottom-bar.data-v-b8e15e19{position:fixed;left:0;right:0;bottom:0;background:#fff;padding:20rpx 30rpx;padding-bottom:calc(20rpx + env(safe-area-inset-bottom));display:flex;align-items:center;justify-content:space-between;box-shadow:0 -4rpx 16rpx rgba(0,0,0,.04)}.detail-container .bottom-bar .price-info .deposit-text.data-v-b8e15e19{font-size:28rpx;color:#666}.detail-container .bottom-bar .price-info .deposit-amount.data-v-b8e15e19{font-size:36rpx;font-weight:600;color:#ff9800}.detail-container .bottom-bar .action-btn.data-v-b8e15e19{flex:1;margin-left:30rpx;height:88rpx;border-radius:44rpx;font-size:32rpx;font-weight:600;display:flex;align-items:center;justify-content:center;border:none}.detail-container .bottom-bar .action-btn.rent.data-v-b8e15e19{background:linear-gradient(135deg,#1976d2,#42a5f5);color:#fff}.detail-container .bottom-bar .action-btn.return.data-v-b8e15e19{background:linear-gradient(135deg,#ff9800,#ffb74d);color:#fff}.detail-container .bottom-bar .action-btn.data-v-b8e15e19:active{transform:scale(.98)} diff --git a/unpackage/dist/build/mp-weixin/pages/feedback/index.js b/unpackage/dist/build/mp-weixin/pages/feedback/index.js new file mode 100644 index 0000000..6a5157f --- /dev/null +++ b/unpackage/dist/build/mp-weixin/pages/feedback/index.js @@ -0,0 +1 @@ +"use strict";const e=require("../../common/vendor.js"),t={data:()=>({types:["设备故障","收费问题","使用建议","其他"],selectedType:-1,description:"",images:[],contact:""}),methods:{selectType(e){this.selectedType=e},chooseImage(){e.index.chooseImage({count:3-this.images.length,success:e=>{this.images=[...this.images,...e.tempFilePaths]}})},deleteImage(e){this.images.splice(e,1)},submitFeedback(){-1!==this.selectedType?this.description.trim()?this.contact?e.index.showToast({title:"提交成功",icon:"success"}):e.index.showToast({title:"请留下联系方式",icon:"none"}):e.index.showToast({title:"请描述您的问题",icon:"none"}):e.index.showToast({title:"请选择问题类型",icon:"none"})}}};const s=e._export_sfc(t,[["render",function(t,s,i,c,o,a){return e.e({a:e.f(o.types,((t,s,i)=>({a:e.t(t),b:s,c:o.selectedType===s?1:"",d:e.o((e=>a.selectType(s)),s)}))),b:o.description,c:e.o((e=>o.description=e.detail.value)),d:e.t(o.description.length),e:e.f(o.images,((t,s,i)=>({a:t,b:e.o((e=>a.deleteImage(s)),s),c:s}))),f:o.images.length<3},o.images.length<3?{g:e.o(((...e)=>a.chooseImage&&a.chooseImage(...e)))}:{},{h:o.contact,i:e.o((e=>o.contact=e.detail.value)),j:e.o(((...e)=>a.submitFeedback&&a.submitFeedback(...e)))})}],["__scopeId","data-v-229c69af"]]);wx.createPage(s); diff --git a/unpackage/dist/build/mp-weixin/pages/feedback/index.json b/unpackage/dist/build/mp-weixin/pages/feedback/index.json new file mode 100644 index 0000000..5f30bba --- /dev/null +++ b/unpackage/dist/build/mp-weixin/pages/feedback/index.json @@ -0,0 +1,4 @@ +{ + "navigationBarTitleText": "投诉与建议", + "usingComponents": {} +} \ No newline at end of file diff --git a/unpackage/dist/build/mp-weixin/pages/feedback/index.wxml b/unpackage/dist/build/mp-weixin/pages/feedback/index.wxml new file mode 100644 index 0000000..1fe3740 --- /dev/null +++ b/unpackage/dist/build/mp-weixin/pages/feedback/index.wxml @@ -0,0 +1 @@ +