feat: 新增多个页面及功能,优化用户体验

在项目中新增了多个页面,包括押金页面、设备详情页面、反馈页面和帮助页面。同时,更新了订单支付和归还成功页面的逻辑,确保用户在支付和归还设备时能够获得清晰的反馈。优化了扫码和订单状态处理逻辑,提升了整体用户体验。
This commit is contained in:
8vd8
2025-04-16 18:26:02 +08:00
parent f96ff2b030
commit 431ceb4bdb
117 changed files with 1854 additions and 616 deletions
@@ -0,0 +1 @@
{"version":3,"names":["_sfc_main","onLaunch","common_vendor","index","__f__","onShow","_onShow","_asyncToGenerator2","_regeneratorRuntime2","mark","_callee","wrap","_callee$","_context","prev","next","autoLogin","stop","apply","arguments","onHide","methods","_callee2","loginResult","_callee2$","_context2","util_index","wxLogin","sent","t0"],"sources":["App.vue"],"sourcesContent":["<script>\r\n\timport {\r\n\t\twxLogin,\r\n\t\tgetUserInfo\r\n\t} from './util/index'\r\n\r\n\r\n\texport default {\r\n\t\tonLaunch: function() {\r\n\t\t\tconsole.log('App Launch')\r\n\t\t\t\r\n\t\t},\r\n\t\tonShow: async function() {\r\n\t\t\tconsole.log('App Show')\r\n\t\t\tawait this.autoLogin()\r\n\r\n\t\t},\r\n\t\tonHide: function() {\r\n\t\t\tconsole.log('App Hide')\r\n\t\t},\r\n\r\n\r\n\r\n\t\tmethods: {\r\n\t\t\tasync autoLogin() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst loginResult = await wxLogin()\r\n\t\t\t\t\tconsole.log('自动登录成功:', loginResult)\r\n\t\t\t\t\t// await getUserInfo()\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\tconsole.error('自动登录失败:', error)\r\n\t\t\t\t\t// 登录失败的处理可以在 wxLogin 中统一处理\r\n\t\t\t\t\t// 这里可以添加特殊的错误处理逻辑\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n\t@import \"uview-ui/index.scss\"\r\n\r\n\t/*每个页面公共css */\r\n</style>"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAOC,IAAKA,SAAA,GAAU;EACdC,QAAA,EAAU,SAAVA,SAAA,EAAqB;IACpBC,aAAA,CAAAC,KAAA,CAAAC,KAAA,yBAAY,YAAY;EAExB;EACDC,MAAA;IAAA,IAAAC,OAAA,GAAAC,kBAAA,eAAAC,oBAAA,GAAAC,IAAA,CAAQ,SAAAC,QAAA;MAAA,OAAAF,oBAAA,GAAAG,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YACPb,aAAA,CAAAC,KAAA,CAAYC,KAAA,mCAAU;YAAAS,QAAA,CAAAE,IAAA;YAAA,OAChB,KAAKC,SAAA,EAAU;UAAA;UAAA;YAAA,OAAAH,QAAA,CAAAI,IAAA;QAAA;MAAA,GAAAP,OAAA;IAAA,CAErB;IAAA,SAJDL,OAAA;MAAA,OAAAC,OAAA,CAAAY,KAAA,OAAAC,SAAA;IAAA;IAAA,OAAAd,MAAA;EAAA,GAIC;EACDe,MAAA,EAAQ,SAARA,OAAA,EAAmB;IAClBlB,aAAA,CAAAC,KAAA,CAAYC,KAAA,mCAAU;EACtB;EAIDiB,OAAA,EAAS;IACFL,SAAA,WAAAA,UAAA,EAAY;MAAA,OAAAT,kBAAA,eAAAC,oBAAA,GAAAC,IAAA,UAAAa,SAAA;QAAA,IAAAC,WAAA;QAAA,OAAAf,oBAAA,GAAAG,IAAA,UAAAa,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAX,IAAA,GAAAW,SAAA,CAAAV,IAAA;YAAA;cAAAU,SAAA,CAAAX,IAAA;cAAAW,SAAA,CAAAV,IAAA;cAAA,OAEUW,UAAA,CAAAC,OAAA,EAAQ;YAAA;cAA5BJ,WAAA,GAAAE,SAAA,CAAAG,IAAA;cACN1B,aAAA,CAAAC,KAAA,CAAYC,KAAA,oCAAWmB,WAAW;cAAAE,SAAA,CAAAV,IAAA;cAAA;YAAA;cAAAU,SAAA,CAAAX,IAAA;cAAAW,SAAA,CAAAI,EAAA,GAAAJ,SAAA;cAGlCvB,aAAA,CAAAC,KAAA,CAAAC,KAAA,2BAAc,WAAAqB,SAAA,CAAAI,EAAA,CAAgB;YAAA;YAAA;cAAA,OAAAJ,SAAA,CAAAR,IAAA;UAAA;QAAA,GAAAK,QAAA;MAAA;IAIhC;EACD;AACD","ignoreList":[]}
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"app.js","sources":["App.vue"],"sourcesContent":["<script>\r\n\timport {\r\n\t\twxLogin,\r\n\t\tgetUserInfo\r\n\t} from './util/index'\r\n\r\n\r\n\texport default {\r\n\t\tonLaunch: function() {\r\n\t\t\tconsole.log('App Launch')\r\n\t\t\t\r\n\t\t},\r\n\t\tonShow: async function() {\r\n\t\t\tconsole.log('App Show')\r\n\t\t\tawait this.autoLogin()\r\n\r\n\t\t},\r\n\t\tonHide: function() {\r\n\t\t\tconsole.log('App Hide')\r\n\t\t},\r\n\r\n\r\n\r\n\t\tmethods: {\r\n\t\t\tasync autoLogin() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst loginResult = await wxLogin()\r\n\t\t\t\t\tconsole.log('自动登录成功:', loginResult)\r\n\t\t\t\t\t// await getUserInfo()\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\tconsole.error('自动登录失败:', error)\r\n\t\t\t\t\t// 登录失败的处理可以在 wxLogin 中统一处理\r\n\t\t\t\t\t// 这里可以添加特殊的错误处理逻辑\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n\t@import \"uview-ui/index.scss\"\r\n\r\n\t/*每个页面公共css */\r\n</style>"],"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;;;;;;;;;"}
{"version":3,"file":"app.js","sources":["App.vue"],"sourcesContent":["<script>\r\n\timport {\r\n\t\twxLogin,\r\n\t\tgetUserInfo\r\n\t} from './util/index'\r\n\r\n\r\n\texport default {\r\n\t\tonLaunch: function() {\r\n\t\t\tconsole.log('App Launch')\r\n\t\t\t\r\n\t\t},\r\n\t\tonShow: async function() {\r\n\t\t\tconsole.log('App Show')\r\n\t\t\tawait this.autoLogin()\r\n\r\n\t\t},\r\n\t\tonHide: function() {\r\n\t\t\tconsole.log('App Hide')\r\n\t\t},\r\n\r\n\r\n\r\n\t\tmethods: {\r\n\t\t\tasync autoLogin() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst loginResult = await wxLogin()\r\n\t\t\t\t\tconsole.log('自动登录成功:', loginResult)\r\n\t\t\t\t\t// await getUserInfo()\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\tconsole.error('自动登录失败:', error)\r\n\t\t\t\t\t// 登录失败的处理可以在 wxLogin 中统一处理\r\n\t\t\t\t\t// 这里可以添加特殊的错误处理逻辑\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n\t@import \"uview-ui/index.scss\"\r\n\r\n\t/*每个页面公共css */\r\n</style>"],"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;;;;;;;;;;"}
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"url.js","sources":["config/url.js"],"sourcesContent":["// export const URL = \"https://notify.gxfs123.com\"\r\nexport const URL = \"http://127.0.0.1:8080\"\r\n\r\nexport const appid = \"wx3ae63fb09936b379\""],"names":[],"mappings":";AACY,MAAC,MAAM;AAEP,MAAC,QAAQ;;;"}
{"version":3,"file":"url.js","sources":["config/url.js"],"sourcesContent":["// export const URL = \"https://unifans.gxfs123.com\"\r\nexport const URL = \"http://127.0.0.1:8080\"\r\n\r\nexport const appid = \"wxe752f45e7f7aa271\" "],"names":[],"mappings":";AACY,MAAC,MAAM;AAEP,MAAC,QAAQ;;;"}
+1 -1
View File
@@ -1 +1 @@
{"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;;;;;;;;;;"}
{"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// 添加押金提现API\nexport const withdrawDeposit = (orderId) => {\n console.log('调用提现API,订单ID', orderId)\n return request({\n url: `/app/withdraw/add/${orderId}`,\n method: 'get',\n hideLoading: true\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\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,kBAAkB,CAAC,YAAY;AACxCC,gBAAAA,MAAA,MAAA,OAAA,wBAAY,iBAAiB,OAAO;AACpC,SAAOD,oBAAQ;AAAA,IACX,KAAK,qBAAqB,OAAO;AAAA,IACjC,QAAQ;AAAA,IACR,aAAa;AAAA,EACrB,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,yBAAA,wBAAwB,OAAO,EAAE;AAC7C,SAAOD,oBAAQ;AAAA,IACX,KAAK,6CAA6C,OAAO;AAAA,IACzD,QAAQ;AAAA,EAChB,CAAK;AACL;;;;;;;;;;"}
@@ -1 +1 @@
{"version":3,"file":"index.js","sources":["E:/迅雷下载/HBuilderX.4.57.2025032507/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvZGVwb3NpdC9pbmRleC52dWU"],"sourcesContent":["import MiniProgramPage from 'C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/pages/deposit/index.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"}
{"version":3,"file":"index.js","sources":["E:/迅雷下载/HBuilderX.4.57.2025032507/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvZGVwb3NpdC9pbmRleC52dWU"],"sourcesContent":["import MiniProgramPage from 'C:/Users/Administrator.DESKTOP-IRCM9I0/Desktop/locker-fans/locker-fans/uni-fans/pages/deposit/index.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"}
@@ -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;"}
{"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;"}
@@ -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;"}
{"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;"}
@@ -1 +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;"}
{"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;"}
@@ -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;"}
{"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;"}
@@ -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;"}
{"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;"}
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"index.js","sources":["util/index.js"],"sourcesContent":["import {\r\n\tlogin,\r\n\tgetMyIndexInfo\r\n} from \"../config/user\"\r\n\r\n// 微信登录方法\r\nexport const wxLogin = () => {\r\n\treturn new Promise((resolve, reject) => {\r\n\t\t// 1. 获取微信登录凭证\r\n\t\tuni.login({\r\n\t\t\tprovider: 'weixin',\r\n\t\t\tsuccess: async (loginRes) => {\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tif (loginRes.code) {\r\n\t\t\t\t\t\t// 2. 发送 code 到后端换取 token\r\n\t\t\t\t\t\tconst result = await login({\r\n\t\t\t\t\t\t\tcode: loginRes.code,\r\n\t\t\t\t\t\t\tappid: \"wx3ae63fb09936b379\"\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\tif (result.code === 200) {\r\n\t\t\t\t\t\t\t// 3. 保存token和用户信息\r\n\r\n\t\t\t\t\t\t\tuni.setStorageSync('token', result.data.LoginWxVo.access_token)\r\n\t\t\t\t\t\t\tuni.setStorageSync('client_id', result.data.LoginWxVo.client_id)\r\n\r\n\t\t\t\t\t\t\tresolve(result.data)\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthrow new Error(result.message || '登录失败')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow new Error('获取微信登录凭证失败')\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (error) {\r\n\r\n\t\t\t\t\tuni.showToast({\r\n\t\t\t\t\t\ttitle: error.message || '登录失败',\r\n\t\t\t\t\t\ticon: 'none'\r\n\t\t\t\t\t})\r\n\t\t\t\t\treject(error)\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tfail: (error) => {\r\n\t\t\t\tuni.showToast({\r\n\t\t\t\t\ttitle: '微信登录失败',\r\n\t\t\t\t\ticon: 'none'\r\n\t\t\t\t})\r\n\t\t\t\treject(error)\r\n\t\t\t}\r\n\t\t})\r\n\t})\r\n}\r\n\r\n// 检查登录状态\r\n// export const checkLogin = () => {\r\n// const token = uni.getStorageSync('token')\r\n// return !!token\r\n// }\r\n\r\n// 获取用户信息\r\nexport const getUserInfo = () => {\r\n\r\n\r\n\r\n\treturn new Promise(async (res, rej) => {\r\n\r\n\t\tconst result = await getMyIndexInfo({\r\n\t\t\tisHide: false,\r\n\t\t})\r\n\t\tres(result)\r\n\t})\r\n}\r\n\r\n\r\n\r\nexport const getQueryString = function (url, name) {\r\n var reg = new RegExp('(^|&|/?)' + name + '=([^&|/?]*)(&|/?|$)', 'i')\r\n var r = url.substr(1).match(reg)\r\n if (r != null) {\r\n return r[2]\r\n }\r\n return null;\r\n}"],"names":["uni","login","getMyIndexInfo"],"mappings":";;;AAMY,MAAC,UAAU,MAAM;AAC5B,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAEvCA,kBAAAA,MAAI,MAAM;AAAA,MACT,UAAU;AAAA,MACV,SAAS,OAAO,aAAa;AAE5B,YAAI;AACH,cAAI,SAAS,MAAM;AAElB,kBAAM,SAAS,MAAMC,kBAAM;AAAA,cAC1B,MAAM,SAAS;AAAA,cACf,OAAO;AAAA,YACd,CAAO;AAED,gBAAI,OAAO,SAAS,KAAK;AAGxBD,4BAAG,MAAC,eAAe,SAAS,OAAO,KAAK,UAAU,YAAY;AAC9DA,4BAAG,MAAC,eAAe,aAAa,OAAO,KAAK,UAAU,SAAS;AAE/D,sBAAQ,OAAO,IAAI;AAAA,YAC1B,OAAa;AACN,oBAAM,IAAI,MAAM,OAAO,WAAW,MAAM;AAAA,YACxC;AAAA,UACP,OAAY;AACN,kBAAM,IAAI,MAAM,YAAY;AAAA,UAC5B;AAAA,QACD,SAAQ,OAAO;AAEfA,wBAAAA,MAAI,UAAU;AAAA,YACb,OAAO,MAAM,WAAW;AAAA,YACxB,MAAM;AAAA,UACZ,CAAM;AACD,iBAAO,KAAK;AAAA,QACZ;AAAA,MACD;AAAA,MACD,MAAM,CAAC,UAAU;AAChBA,sBAAAA,MAAI,UAAU;AAAA,UACb,OAAO;AAAA,UACP,MAAM;AAAA,QACX,CAAK;AACD,eAAO,KAAK;AAAA,MACZ;AAAA,IACJ,CAAG;AAAA,EACH,CAAE;AACF;AASY,MAAC,cAAc,MAAM;AAIhC,SAAO,IAAI,QAAQ,OAAO,KAAK,QAAQ;AAEtC,UAAM,SAAS,MAAME,2BAAe;AAAA,MACnC,QAAQ;AAAA,IACX,CAAG;AACD,QAAI,MAAM;AAAA,EACZ,CAAE;AACF;AAIY,MAAC,iBAAiB,SAAU,KAAK,MAAM;AAC/C,MAAI,MAAM,IAAI,OAAO,aAAa,OAAO,uBAAuB,GAAG;AACnE,MAAI,IAAI,IAAI,OAAO,CAAC,EAAE,MAAM,GAAG;AAC/B,MAAI,KAAK,MAAM;AACX,WAAO,EAAE,CAAC;AAAA,EACb;AACD,SAAO;AACX;;;;"}
{"version":3,"file":"index.js","sources":["util/index.js"],"sourcesContent":["import {\r\n\tlogin,\r\n\tgetMyIndexInfo\r\n} from \"../config/user\"\r\n\r\n// 微信登录方法\r\nexport const wxLogin = () => {\r\n\treturn new Promise((resolve, reject) => {\r\n\t\t// 1. 获取微信登录凭证\r\n\t\tuni.login({\r\n\t\t\tprovider: 'weixin',\r\n\t\t\tsuccess: async (loginRes) => {\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tif (loginRes.code) {\r\n\t\t\t\t\t\t// 2. 发送 code 到后端换取 token\r\n\t\t\t\t\t\tconst result = await login({\r\n\t\t\t\t\t\t\tcode: loginRes.code,\r\n\t\t\t\t\t\t\tappid: \"wxe752f45e7f7aa271\"\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\tif (result.code === 200) {\r\n\t\t\t\t\t\t\t// 3. 保存token和用户信息\r\n\r\n\t\t\t\t\t\t\tuni.setStorageSync('token', result.data.LoginWxVo.access_token)\r\n\t\t\t\t\t\t\tuni.setStorageSync('client_id', result.data.LoginWxVo.client_id)\r\n\r\n\t\t\t\t\t\t\tresolve(result.data)\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthrow new Error(result.message || '登录失败')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow new Error('获取微信登录凭证失败')\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (error) {\r\n\r\n\t\t\t\t\tuni.showToast({\r\n\t\t\t\t\t\ttitle: error.message || '登录失败',\r\n\t\t\t\t\t\ticon: 'none'\r\n\t\t\t\t\t})\r\n\t\t\t\t\treject(error)\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tfail: (error) => {\r\n\t\t\t\tuni.showToast({\r\n\t\t\t\t\ttitle: '微信登录失败',\r\n\t\t\t\t\ticon: 'none'\r\n\t\t\t\t})\r\n\t\t\t\treject(error)\r\n\t\t\t}\r\n\t\t})\r\n\t})\r\n}\r\n\r\n// 检查登录状态\r\n// export const checkLogin = () => {\r\n// const token = uni.getStorageSync('token')\r\n// return !!token\r\n// }\r\n\r\n// 获取用户信息\r\nexport const getUserInfo = () => {\r\n\r\n\r\n\r\n\treturn new Promise(async (res, rej) => {\r\n\r\n\t\tconst result = await getMyIndexInfo({\r\n\t\t\tisHide: false,\r\n\t\t})\r\n\t\tres(result)\r\n\t})\r\n}\r\n\r\n\r\n\r\nexport const getQueryString = function (url, name) {\r\n var reg = new RegExp('(^|&|/?)' + name + '=([^&|/?]*)(&|/?|$)', 'i')\r\n var r = url.substr(1).match(reg)\r\n if (r != null) {\r\n return r[2]\r\n }\r\n return null;\r\n}"],"names":["uni","login","getMyIndexInfo"],"mappings":";;;AAMY,MAAC,UAAU,MAAM;AAC5B,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAEvCA,kBAAAA,MAAI,MAAM;AAAA,MACT,UAAU;AAAA,MACV,SAAS,OAAO,aAAa;AAE5B,YAAI;AACH,cAAI,SAAS,MAAM;AAElB,kBAAM,SAAS,MAAMC,kBAAM;AAAA,cAC1B,MAAM,SAAS;AAAA,cACf,OAAO;AAAA,YACd,CAAO;AAED,gBAAI,OAAO,SAAS,KAAK;AAGxBD,4BAAG,MAAC,eAAe,SAAS,OAAO,KAAK,UAAU,YAAY;AAC9DA,4BAAG,MAAC,eAAe,aAAa,OAAO,KAAK,UAAU,SAAS;AAE/D,sBAAQ,OAAO,IAAI;AAAA,YAC1B,OAAa;AACN,oBAAM,IAAI,MAAM,OAAO,WAAW,MAAM;AAAA,YACxC;AAAA,UACP,OAAY;AACN,kBAAM,IAAI,MAAM,YAAY;AAAA,UAC5B;AAAA,QACD,SAAQ,OAAO;AAEfA,wBAAAA,MAAI,UAAU;AAAA,YACb,OAAO,MAAM,WAAW;AAAA,YACxB,MAAM;AAAA,UACZ,CAAM;AACD,iBAAO,KAAK;AAAA,QACZ;AAAA,MACD;AAAA,MACD,MAAM,CAAC,UAAU;AAChBA,sBAAAA,MAAI,UAAU;AAAA,UACb,OAAO;AAAA,UACP,MAAM;AAAA,QACX,CAAK;AACD,eAAO,KAAK;AAAA,MACZ;AAAA,IACJ,CAAG;AAAA,EACH,CAAE;AACF;AASY,MAAC,cAAc,MAAM;AAIhC,SAAO,IAAI,QAAQ,OAAO,KAAK,QAAQ;AAEtC,UAAM,SAAS,MAAME,2BAAe;AAAA,MACnC,QAAQ;AAAA,IACX,CAAG;AACD,QAAI,MAAM;AAAA,EACZ,CAAE;AACF;AAIY,MAAC,iBAAiB,SAAU,KAAK,MAAM;AAC/C,MAAI,MAAM,IAAI,OAAO,aAAa,OAAO,uBAAuB,GAAG;AACnE,MAAI,IAAI,IAAI,OAAO,CAAC,EAAE,MAAM,GAAG;AAC/B,MAAI,KAAK,MAAM;AACX,WAAO,EAAE,CAAC;AAAA,EACb;AACD,SAAO;AACX;;;;"}
File diff suppressed because one or more lines are too long
+2
View File
@@ -2,6 +2,7 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const common_vendor = require("./common/vendor.js");
const util_index = require("./util/index.js");
const utils_orderMonitor = require("./utils/orderMonitor.js");
if (!Math) {
"./pages/index/index.js";
"./pages/my/index.js";
@@ -40,6 +41,7 @@ const _sfc_main = {
};
function createApp() {
const app = common_vendor.createSSRApp(_sfc_main);
app.config.globalProperties.$orderMonitor = utils_orderMonitor.orderMonitor;
return {
app
};
+4 -4
View File
@@ -6009,7 +6009,7 @@ function populateParameters(fromRes, toRes) {
let _SDKVersion = SDKVersion;
const hostLanguage = (language || "").replace(/_/g, "-");
const parameters = {
appId: "__UNI__66470C9",
appId: "__UNI__4630191",
appName: "fs",
appVersion: "1.0.0",
appVersionCode: "100",
@@ -6158,7 +6158,7 @@ const getAppBaseInfo = {
hostName: _hostName,
hostSDKVersion: SDKVersion,
hostTheme: theme,
appId: "__UNI__66470C9",
appId: "__UNI__4630191",
appName: "fs",
appVersion: "1.0.0",
appVersionCode: "100",
@@ -6874,9 +6874,9 @@ function initOnError() {
};
}
function initRuntimeSocketService() {
const hosts = "192.168.1.15,127.0.0.1";
const hosts = "10.8.0.5,192.168.1.15,127.0.0.1";
const port = "8090";
const id = "mp-weixin_JcUW_t";
const id = "mp-weixin_hczUPf";
const lazy = typeof swan !== "undefined";
let restoreError = lazy ? () => {
} : initOnError();
+1 -1
View File
@@ -1,6 +1,6 @@
"use strict";
const URL = "http://127.0.0.1:8080";
const appid = "wx3ae63fb09936b379";
const appid = "wxe752f45e7f7aa271";
exports.URL = URL;
exports.appid = appid;
//# sourceMappingURL=../../.sourcemap/mp-weixin/config/url.js.map
+11 -10
View File
@@ -15,6 +15,14 @@ const getMyIndexInfo = (data) => {
data
});
};
const withdrawDeposit = (orderId) => {
common_vendor.index.__f__("log", "at config/user.js:23", "调用提现API,订单ID", orderId);
return config_http.request({
url: `/app/withdraw/add/${orderId}`,
method: "get",
hideLoading: true
});
};
const getOrderList = (data) => {
return config_http.request({
url: "/app/order/list",
@@ -36,7 +44,7 @@ const getDeviceInfo = (deviceNo) => {
});
};
const queryById = (id) => {
common_vendor.index.__f__("log", "at config/user.js:59", `查询订单详情, orderId: ${id}`);
common_vendor.index.__f__("log", "at config/user.js:69", `查询订单详情, orderId: ${id}`);
return config_http.request({
url: `/app/order/${id}`,
method: "get",
@@ -51,19 +59,12 @@ const rentPowerBank = (deviceNo, phone) => {
});
};
const confirmPaymentAndRent = (orderId) => {
common_vendor.index.__f__("log", "at config/user.js:98", `确认支付并弹出充电宝, orderId: ${orderId}`);
common_vendor.index.__f__("log", "at config/user.js:108", `确认支付并弹出充电宝, 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;
@@ -72,5 +73,5 @@ exports.login = login;
exports.queryById = queryById;
exports.queryHasOrder = queryHasOrder;
exports.rentPowerBank = rentPowerBank;
exports.sendRentCommand = sendRentCommand;
exports.withdrawDeposit = withdrawDeposit;
//# sourceMappingURL=../../.sourcemap/mp-weixin/config/user.js.map
+119 -13
View File
@@ -1,37 +1,143 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const util_index = require("../../util/index.js");
const config_user = require("../../config/user.js");
const _sfc_main = {
data() {
return {
depositAmount: "99.00",
records: [
{ type: "支付", time: "2024-03-20 15:30", amount: "99.00" },
{ type: "退还", time: "2024-03-19 12:00", amount: "99.00" }
]
depositAmount: "0.00",
orderNo: "",
records: [],
orderId: "",
isLoading: false
};
},
onLoad() {
},
onShow() {
this.loadUserInfo();
},
methods: {
handleWithdraw() {
async loadUserInfo() {
try {
this.isLoading = true;
const res = await util_index.getUserInfo();
common_vendor.index.__f__("log", "at pages/deposit/index.vue:66", "loadUserInfo", res);
if (res.code === 200) {
this.depositAmount = res.data.balanceAmount || "0.00";
this.orderNo = res.data.latestOrderNo || "";
this.orderId = res.data.latestOrderId || "";
if (parseFloat(this.depositAmount) > 0 && !this.orderId) {
common_vendor.index.__f__("log", "at pages/deposit/index.vue:74", "没有latestOrderId但有余额,尝试查询订单列表");
const orderRes = await config_user.getOrderList({ pageNum: 1, pageSize: 10 });
if (orderRes.code === 200 && orderRes.data && orderRes.data.records && orderRes.data.records.length > 0) {
const depositOrder = orderRes.data.records.find(
(order) => order.depositAmount && parseFloat(order.depositAmount) > 0
);
if (depositOrder) {
common_vendor.index.__f__("log", "at pages/deposit/index.vue:83", "找到押金订单:", depositOrder);
this.orderId = depositOrder.orderId;
this.orderNo = depositOrder.orderNo;
}
}
}
if (parseFloat(this.depositAmount) > 0) {
this.records = [
{
type: "支付",
time: this.formatDate(/* @__PURE__ */ new Date()),
amount: this.depositAmount
}
];
} else {
this.records = [];
}
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/deposit/index.vue:104", "获取用户信息失败:", error);
common_vendor.index.showToast({
title: "获取用户信息失败",
icon: "none"
});
} finally {
this.isLoading = false;
}
},
async handleWithdraw() {
if (parseFloat(this.depositAmount) <= 0) {
common_vendor.index.showToast({
title: "无可提现余额",
icon: "none"
});
return;
}
if (!this.orderId) {
common_vendor.index.showToast({
title: "无法找到押金订单",
icon: "none"
});
return;
}
common_vendor.index.showModal({
title: "确认提现",
content: "押金将原路退回,预计0-7个工作日到账",
success: (res) => {
success: async (res) => {
if (res.confirm) {
common_vendor.index.showToast({
title: "提现申请已提交",
icon: "success"
common_vendor.index.showLoading({
title: "提现中..."
});
try {
common_vendor.index.__f__("log", "at pages/deposit/index.vue:140", "发起提现请求,订单ID", this.orderId);
const result = await config_user.withdrawDeposit(this.orderId);
common_vendor.index.__f__("log", "at pages/deposit/index.vue:142", "提现响应:", result);
if (result.code === 200) {
common_vendor.index.hideLoading();
common_vendor.index.showToast({
title: "提现申请已提交",
icon: "success"
});
this.depositAmount = "0.00";
this.records.push({
type: "退还",
time: this.formatDate(/* @__PURE__ */ new Date()),
amount: this.depositAmount
});
setTimeout(() => {
this.loadUserInfo();
}, 1500);
} else {
throw new Error(result.msg || "提现失败");
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/deposit/index.vue:167", "提现失败:", error);
common_vendor.index.hideLoading();
common_vendor.index.showToast({
title: error.message || "提现失败,请稍后再试",
icon: "none"
});
}
}
}
});
},
formatDate(date) {
const year = date.getFullYear();
const month = (date.getMonth() + 1).toString().padStart(2, "0");
const day = date.getDate().toString().padStart(2, "0");
const hours = date.getHours().toString().padStart(2, "0");
const minutes = date.getMinutes().toString().padStart(2, "0");
return `${year}-${month}-${day} ${hours}:${minutes}`;
}
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
return common_vendor.e({
a: common_vendor.t($data.depositAmount),
b: common_vendor.o((...args) => $options.handleWithdraw && $options.handleWithdraw(...args)),
c: common_vendor.f($data.records, (item, index, i0) => {
c: $data.depositAmount <= 0,
d: $data.records.length > 0
}, $data.records.length > 0 ? {
e: common_vendor.f($data.records, (item, index, i0) => {
return {
a: common_vendor.t(item.type),
b: common_vendor.t(item.time),
@@ -41,7 +147,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
f: index
};
})
};
} : {});
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-c7792057"]]);
wx.createPage(MiniProgramPage);
+1 -1
View File
@@ -1 +1 @@
<view class="deposit-container data-v-c7792057"><view class="deposit-card data-v-c7792057"><view class="title data-v-c7792057">押金余额</view><view class="amount data-v-c7792057">¥{{a}}</view><button class="withdraw-btn data-v-c7792057" bindtap="{{b}}">提现</button></view><view class="notice-card data-v-c7792057"><view class="notice-title data-v-c7792057"><view class="dot data-v-c7792057"></view><text class="data-v-c7792057">提现说明</text></view><view class="notice-content data-v-c7792057"><view class="notice-item data-v-c7792057">1. 提现金额将原路退回支付账户</view><view class="notice-item data-v-c7792057">2. 提现申请提交后预计0-7个工作日到账</view><view class="notice-item data-v-c7792057">3. 如超时未收到,请联系客服处理</view></view></view><view class="record-card data-v-c7792057"><view class="record-title data-v-c7792057">押金记录</view><view class="record-list data-v-c7792057"><view wx:for="{{c}}" wx:for-item="item" wx:key="f" class="record-item data-v-c7792057"><view class="record-info data-v-c7792057"><text class="record-type data-v-c7792057">{{item.a}}</text><text class="record-time data-v-c7792057">{{item.b}}</text></view><text class="{{['record-amount', 'data-v-c7792057', item.e]}}">{{item.c}}¥{{item.d}}</text></view></view></view></view>
<view class="deposit-container data-v-c7792057"><view class="deposit-card data-v-c7792057"><view class="title data-v-c7792057">押金余额</view><view class="amount data-v-c7792057">¥{{a}}</view><button class="withdraw-btn data-v-c7792057" bindtap="{{b}}" disabled="{{c}}">提现</button></view><view class="notice-card data-v-c7792057"><view class="notice-title data-v-c7792057"><view class="dot data-v-c7792057"></view><text class="data-v-c7792057">提现说明</text></view><view class="notice-content data-v-c7792057"><view class="notice-item data-v-c7792057">1. 提现金额将原路退回支付账户</view><view class="notice-item data-v-c7792057">2. 提现申请提交后预计0-7个工作日到账</view><view class="notice-item data-v-c7792057">3. 如超时未收到,请联系客服处理</view></view></view><view wx:if="{{d}}" class="record-card data-v-c7792057"><view class="record-title data-v-c7792057">押金记录</view><view class="record-list data-v-c7792057"><view wx:for="{{e}}" wx:for-item="item" wx:key="f" class="record-item data-v-c7792057"><view class="record-info data-v-c7792057"><text class="record-type data-v-c7792057">{{item.a}}</text><text class="record-time data-v-c7792057">{{item.b}}</text></view><text class="{{['record-amount', 'data-v-c7792057', item.e]}}">{{item.c}}¥{{item.d}}</text></view></view></view></view>
+4
View File
@@ -60,6 +60,10 @@
.deposit-container .deposit-card .withdraw-btn.data-v-c7792057:active {
transform: scale(0.98);
}
.deposit-container .deposit-card .withdraw-btn[disabled].data-v-c7792057 {
background: rgba(255, 255, 255, 0.6);
color: rgba(25, 118, 210, 0.5);
}
.deposit-container .notice-card.data-v-c7792057 {
margin-top: 30rpx;
background: #fff;
+14 -13
View File
@@ -1,6 +1,7 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const util_index = require("../../util/index.js");
const config_url = require("../../config/url.js");
const common_assets = require("../../common/assets.js");
const _sfc_main = {
methods: {
@@ -13,8 +14,8 @@ 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);
common_vendor.index.__f__("log", "at pages/index/index.vue:67", "扫码路径:", scanResult.path);
common_vendor.index.__f__("log", "at pages/index/index.vue:68", "解析到的设备号:", deviceNo);
if (!deviceNo) {
common_vendor.index.showToast({
title: "无效的设备二维码",
@@ -26,46 +27,46 @@ const _sfc_main = {
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`,
url: `${config_url.URL || "http://127.0.0.1:8080"}/app/order/inUse`,
method: "GET",
header: {
"Authorization": "Bearer " + common_vendor.index.getStorageSync("token"),
"Clientid": common_vendor.index.getStorageSync("client_id")
}
});
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) {
common_vendor.index.__f__("log", "at pages/index/index.vue:93", "使用中订单检查结果:", 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:95", "检测到使用中订单,准备跳转:", inUseOrder);
common_vendor.index.__f__("log", "at pages/index/index.vue:98", "检测到使用中订单,准备跳转:", 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:101", "已发起页面跳转");
common_vendor.index.__f__("log", "at pages/index/index.vue:104", "已发起页面跳转");
return;
}
const orderRes = await common_vendor.index.request({
url: `${common_vendor.index.getStorageSync("baseUrl") || "http://127.0.0.1:8080"}/app/order/unpaid`,
url: `${config_url.URL || "http://127.0.0.1:8080"}/app/order/unpaid`,
method: "GET",
header: {
"Authorization": "Bearer " + common_vendor.index.getStorageSync("token"),
"Clientid": common_vendor.index.getStorageSync("client_id")
}
});
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) {
common_vendor.index.__f__("log", "at pages/index/index.vue:118", "待支付订单检查结果:", 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:120", "检测到待支付订单,准备跳转:", unpaidOrder);
common_vendor.index.__f__("log", "at pages/index/index.vue:123", "检测到待支付订单,准备跳转:", unpaidOrder);
common_vendor.index.navigateTo({
url: `/pages/order/payment?orderId=${unpaidOrder.orderId}`
});
} else {
common_vendor.index.__f__("log", "at pages/index/index.vue:126", "无待支付订单,直接跳转到设备详情页面, deviceNo:", deviceNo);
common_vendor.index.__f__("log", "at pages/index/index.vue:129", "无待支付订单,直接跳转到设备详情页面, deviceNo:", deviceNo);
common_vendor.index.navigateTo({
url: `/pages/device/detail?deviceNo=${deviceNo}`
});
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/index/index.vue:132", "扫码处理失败:", error);
common_vendor.index.__f__("error", "at pages/index/index.vue:135", "扫码处理失败:", error);
common_vendor.index.showToast({
title: "扫码失败",
icon: "none"
+109 -100
View File
@@ -1,6 +1,7 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const config_user = require("../../config/user.js");
const config_url = require("../../config/url.js");
const _sfc_main = {
data() {
return {
@@ -14,18 +15,7 @@ const _sfc_main = {
text: "等待支付",
desc: "请在15分钟内完成支付",
class: "waiting"
},
paymentMethods: [
{
name: "微信支付",
icon: "wechat"
},
{
name: "支付宝",
icon: "alipay"
}
],
selectedMethod: 0
}
};
},
computed: {
@@ -67,10 +57,21 @@ const _sfc_main = {
const res = await config_user.queryById(this.orderId);
if (res.code === 200 && res.data) {
const orderData = res.data;
let formattedTime;
try {
if (orderData.createTime) {
formattedTime = this.formatTime(new Date(orderData.createTime));
} else {
formattedTime = this.formatTime(/* @__PURE__ */ new Date());
}
} catch (e) {
common_vendor.index.__f__("error", "at pages/order/payment.vue:143", "时间格式化错误:", e);
formattedTime = this.formatTime(/* @__PURE__ */ new Date());
}
this.orderInfo = {
orderNo: orderData.orderNo || orderData.orderId,
deviceNo: orderData.deviceNo,
createTime: orderData.createTime,
createTime: formattedTime,
phone: orderData.phone,
deposit: "99.00",
// 假设押金固定为99元
@@ -92,68 +93,36 @@ const _sfc_main = {
});
}
},
// 选择支付方式
selectMethod(index) {
this.selectedMethod = index;
},
// 处理支付
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/payment/${this.orderInfo.orderNo}`,
url: `${config_url.URL || "http://127.0.0.1:8080"}/app/wx-payment/create/${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) {
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();
await common_vendor.index.requestPayment({
...payParams,
success: () => {
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", "支付流程结束");
common_vendor.index.__f__("error", "at pages/order/payment.vue:203", "支付失败:", err);
throw new Error("支付失败,请重试");
}
});
} else {
throw new Error(((_a = res.data) == null ? void 0 : _a.msg) || "支付请求失败");
throw new Error(res.data.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 || "支付失败",
@@ -161,27 +130,96 @@ 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: `${config_url.URL}/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 = 30;
const interval = 2e3;
const maxRetries = 10;
const interval = 1e3;
const checkStatus = async () => {
try {
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);
const res = await common_vendor.index.request({
url: `${config_url.URL || "http://127.0.0.1:8080"}/app/wx-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") {
common_vendor.index.showToast({
title: "支付成功,充电宝已弹出",
icon: "success",
duration: 2e3
title: "支付成功",
icon: "success"
});
setTimeout(() => {
common_vendor.index.redirectTo({
url: `/pages/order/success?orderId=${this.orderId}`
url: `/pages/order/index?orderId=${this.orderId}`
});
}, 1500);
return;
@@ -189,34 +227,15 @@ const _sfc_main = {
}
if (retryCount < maxRetries) {
retryCount++;
common_vendor.index.__f__("log", "at pages/order/payment.vue:314", `${retryCount}次轮询,等待订单状态更新...`);
setTimeout(checkStatus, interval);
} else {
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"
});
}
}
});
throw new Error("订单状态查询超时");
}
} catch (error) {
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"
});
}
common_vendor.index.showToast({
title: error.message || "查询订单状态失败",
icon: "none"
});
}
};
checkStatus();
@@ -237,18 +256,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
j: common_vendor.t($data.packageInfo.price),
k: common_vendor.t($data.orderInfo.amount || $data.packageInfo.price),
l: common_vendor.t($options.totalAmount),
m: common_vendor.f($data.paymentMethods, (method, index, i0) => {
return {
a: common_vendor.n(method.icon),
b: common_vendor.t(method.name),
c: index,
d: $data.selectedMethod === index ? 1 : "",
e: common_vendor.o(($event) => $options.selectMethod(index), index)
};
}),
n: common_vendor.t($options.totalAmount),
o: common_vendor.o((...args) => $options.handlePayment && $options.handlePayment(...args)),
p: common_vendor.o((...args) => _ctx.navigateBack && _ctx.navigateBack(...args))
m: common_vendor.t($options.totalAmount),
n: common_vendor.o((...args) => $options.handlePayment && $options.handlePayment(...args))
};
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-13c3fb22"]]);
+1 -1
View File
@@ -1 +1 @@
<view class="payment-container data-v-13c3fb22"><view class="status-card data-v-13c3fb22"><view class="{{['status-icon', 'data-v-13c3fb22', a]}}"></view><view class="status-text data-v-13c3fb22">{{b}}</view><view class="status-desc data-v-13c3fb22">{{c}}</view></view><view class="order-card data-v-13c3fb22"><view class="card-title data-v-13c3fb22">订单信息</view><view class="info-item data-v-13c3fb22"><text class="label data-v-13c3fb22">订单号</text><text class="value data-v-13c3fb22">{{d}}</text></view><view class="info-item data-v-13c3fb22"><text class="label data-v-13c3fb22">设备号</text><text class="value data-v-13c3fb22">{{e}}</text></view><view class="info-item data-v-13c3fb22"><text class="label data-v-13c3fb22">创建时间</text><text class="value data-v-13c3fb22">{{f}}</text></view><view class="info-item data-v-13c3fb22"><text class="label data-v-13c3fb22">联系电话</text><text class="value data-v-13c3fb22">{{g}}</text></view></view><view class="price-card data-v-13c3fb22"><view class="card-title data-v-13c3fb22">费用信息</view><view class="price-item data-v-13c3fb22"><text class="label data-v-13c3fb22">押金</text><text class="value data-v-13c3fb22">¥{{h}}</text></view><view class="price-item data-v-13c3fb22"><text class="label data-v-13c3fb22">套餐</text><text class="value data-v-13c3fb22">{{i}} (¥{{j}})</text></view><view class="price-item data-v-13c3fb22"><text class="label data-v-13c3fb22">租借费用</text><text class="value data-v-13c3fb22">¥{{k}}</text></view><view class="price-item total data-v-13c3fb22"><text class="label data-v-13c3fb22">合计</text><text class="value data-v-13c3fb22">¥{{l}}</text></view></view><view class="payment-methods data-v-13c3fb22"><view class="card-title data-v-13c3fb22">支付方式</view><view wx:for="{{m}}" wx:for-item="method" wx:key="c" class="{{['method-item', 'data-v-13c3fb22', method.d && 'active']}}" bindtap="{{method.e}}"><view class="{{['method-icon', 'data-v-13c3fb22', method.a]}}"></view><view class="method-name data-v-13c3fb22">{{method.b}}</view><view class="method-check data-v-13c3fb22"></view></view></view><view class="bottom-bar data-v-13c3fb22"><view class="total-amount data-v-13c3fb22"><text class="data-v-13c3fb22">合计:</text><text class="amount data-v-13c3fb22">¥{{n}}</text></view><button class="pay-btn data-v-13c3fb22" bindtap="{{o}}">立即支付</button></view><view class="back-btn data-v-13c3fb22" bindtap="{{p}}"><text class="data-v-13c3fb22">返回设备详情</text></view> methods: { navigateBack() { uni.redirectTo({ url: `/pages/device/detail?deviceId=${this.deviceId}` }) } } </view>
<view class="payment-container data-v-13c3fb22"><view class="status-card data-v-13c3fb22"><view class="{{['status-icon', 'data-v-13c3fb22', a]}}"></view><view class="status-text data-v-13c3fb22">{{b}}</view><view class="status-desc data-v-13c3fb22">{{c}}</view></view><view class="order-card data-v-13c3fb22"><view class="card-title data-v-13c3fb22">订单信息</view><view class="info-item data-v-13c3fb22"><text class="label data-v-13c3fb22">订单号</text><text class="value data-v-13c3fb22">{{d}}</text></view><view class="info-item data-v-13c3fb22"><text class="label data-v-13c3fb22">设备号</text><text class="value data-v-13c3fb22">{{e}}</text></view><view class="info-item data-v-13c3fb22"><text class="label data-v-13c3fb22">创建时间</text><text class="value data-v-13c3fb22">{{f}}</text></view><view class="info-item data-v-13c3fb22"><text class="label data-v-13c3fb22">联系电话</text><text class="value data-v-13c3fb22">{{g}}</text></view></view><view class="price-card data-v-13c3fb22"><view class="card-title data-v-13c3fb22">费用信息</view><view class="price-item data-v-13c3fb22"><text class="label data-v-13c3fb22">押金</text><text class="value data-v-13c3fb22">¥{{h}}</text></view><view class="price-item data-v-13c3fb22"><text class="label data-v-13c3fb22">套餐</text><text class="value data-v-13c3fb22">{{i}} (¥{{j}})</text></view><view class="price-item data-v-13c3fb22"><text class="label data-v-13c3fb22">租借费用</text><text class="value data-v-13c3fb22">¥{{k}}</text></view><view class="price-item total data-v-13c3fb22"><text class="label data-v-13c3fb22">合计</text><text class="value data-v-13c3fb22">¥{{l}}</text></view></view><view class="bottom-bar data-v-13c3fb22"><view class="total-amount data-v-13c3fb22"><text class="data-v-13c3fb22">合计:</text><text class="amount data-v-13c3fb22">¥{{m}}</text></view><button class="pay-btn data-v-13c3fb22" bindtap="{{n}}">立即支付</button></view></view>
+5 -40
View File
@@ -123,62 +123,27 @@
.payment-container .order-card .info-item.total .value.data-v-13c3fb22, .payment-container .order-card .price-item.total .value.data-v-13c3fb22, .payment-container .price-card .info-item.total .value.data-v-13c3fb22, .payment-container .price-card .price-item.total .value.data-v-13c3fb22 {
color: #FF5722;
}
.payment-container .payment-methods.data-v-13c3fb22 {
.payment-container .wechat-tip.data-v-13c3fb22 {
background: #fff;
border-radius: 24rpx;
padding: 30rpx;
margin-bottom: 30rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.04);
}
.payment-container .payment-methods .method-item.data-v-13c3fb22 {
display: flex;
align-items: center;
padding: 30rpx 20rpx;
border-bottom: 1px solid #f5f5f5;
position: relative;
}
.payment-container .payment-methods .method-item.data-v-13c3fb22:last-child {
border-bottom: none;
}
.payment-container .payment-methods .method-item.active.data-v-13c3fb22 {
background: #F5F5F5;
}
.payment-container .payment-methods .method-item.active .method-check.data-v-13c3fb22 {
background: #1976D2;
}
.payment-container .payment-methods .method-item.active .method-check.data-v-13c3fb22::after {
content: "";
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
width: 12rpx;
height: 12rpx;
background: #fff;
border-radius: 50%;
}
.payment-container .payment-methods .method-item .method-icon.data-v-13c3fb22 {
.payment-container .wechat-tip .method-icon.data-v-13c3fb22 {
width: 48rpx;
height: 48rpx;
margin-right: 20rpx;
}
.payment-container .payment-methods .method-item .method-icon.wechat.data-v-13c3fb22 {
.payment-container .wechat-tip .method-icon.wechat.data-v-13c3fb22 {
background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZmlsbD0iIzA3QzE2MCIgZD0iTTkuODI3MjcyNzMsMjQgQzkuODI3MjcyNzMsMjQgOS44MjcyNzI3MywyNCA5LjgyNzI3MjczLDI0IEw5LjgyNzI3MjczLDI0IEM3LjQxNzczMTYzLDI0IDQuOTUzMTgxODIsMjMuNTMxODE4MiA0Ljk1MzE4MTgyLDIzLjUzMTgxODIgQzQuOTUzMTgxODIsMjMuNTMxODE4MiAzLDIzLjExMzYzNjQgMS41LDIyLjIyNzI3MjcgQzEuNSwyMi4yMjcyNzI3IDAuOTU0NTQ1NDU1LDIyLjA4NjM2MzYgMS4wNDMxODE4MiwyMS41NDU0NTQ1IEMxLjEzMTgxODE4LDIxLjAwNDU0NTUgMS4zNjM2MzYzNiwyMC4yNSAxLjM2MzYzNjM2LDIwLjI1IEwyLjI1LDE3LjcyNzI3MjcgQzAuNDA5MDkwOTA5LDE2LjAyMjcyNzMgMCwxNC4wNDU0NTQ1IDAsMTIuODE4MTgxOCBDMCw4LjQ1NDU0NTQ1IDQuOTA5MDkwOTEsNC45MDkwOTA5MSA5LjgyNzI3MjczLDQuOTA5MDkwOTEgQzEzLjc0NTQ1NDUsNC45MDkwOTA5MSAxNy4xODE4MTgyLDcuMTA0NTQ1NDUgMTguNTQ1NDU0NSwxMC4yMjcyNzI3IEMxOS4wOTA5MDkxLDEwLjEzMTgxODIgMTkuNjM2MzYzNiwxMC4wOTA5MDkxIDIwLjE4MTgxODIsMTAuMDkwOTA5MSBDMjQuNTQ1NDU0NSwxMC4wOTA5MDkxIDI4LjA5MDkwOTEsMTMuMTgxODE4MiAyOC4wOTA5MDkxLDE2LjkwOTA5MDkgQzI4LjA5MDkwOTEsMTguODE4MTgxOCAyNi43MjcyNzI3LDIwLjU5MDkwOTEgMjQuNzI3MjcyNywyMS43MjcyNzI3IEwyNS4zNjM2MzY0LDIzLjU5MDkwOTEgQzI1LjM2MzYzNjQsMjMuNTkwOTA5MSAyNS41LDI0LjA0NTQ1NDUgMjUuNTkwOTA5MSwyNC40MDkwOTA5IEMyNS42ODE4MTgyLDI0Ljc3MjcyNzMgMjUuMzYzNjM2NCwyNC45NTQ1NDU1IDI1LjM2MzYzNjQsMjQuOTU0NTQ1NSBDMjQuMjcyNzI3MywyNS42MzYzNjM2IDIyLjcyNzI3MjcsMjYuMDQ1NDU0NSAyMi43MjcyNzI3LDI2LjA0NTQ1NDUgQzIyLjcyNzI3MjcsMjYuMDQ1NDU0NSAyMC43MjcyNzI3LDI2LjQ1NDU0NTUgMTguNzI3MjcyNywyNi40NTQ1NDU1IEMxNi43MjcyNzI3LDI2LjQ1NDU0NTUgMTQuNzI3MjcyNywyNi4wNDU0NTQ1IDE0LjcyNzI3MjcsMjYuMDQ1NDU0NSBDMTMuNjM2MzYzNiwyNS43NzI3MjczIDEyLjU0NTQ1NDUsMjUuNDA5MDkwOSAxMS41NDU0NTQ1LDI0Ljk1NDU0NTUgQzEwLjkwOTA5MDksMjQuNjgxODE4MiAxMC4zNjM2MzY0LDI0LjM2MzYzNjQgOS44MjcyNzI3MywyNCBaIE02LjEzNjM2MzY0LDExLjMxODE4MTggQzUuMDQ1NDU0NTUsMTEuMzE4MTgxOCA0LjE4MTgxODE4LDEyLjE4MTgxODIgNC4xODE4MTgxOCwxMy4yNzI3MjczIEM0LjE4MTgxODE4LDE0LjM2MzYzNjQgNS4wNDU0NTQ1NSwxNS4yMjcyNzI3IDYuMTM2MzYzNjQsMTUuMjI3MjcyNyBDNy4yMjcyNzI3MywxNS4yMjcyNzI3IDguMDkwOTA5MDksMTQuMzYzNjM2NCA4LjA5MDkwOTA5LDEzLjI3MjcyNzMgQzguMDkwOTA5MDksMTIuMTgxODE4MiA3LjIyNzI3MjczLDExLjMxODE4MTggNi4xMzYzNjM2NCwxMS4zMTgxODE4IFogTTEzLjUsMTEuMzE4MTgxOCBDMTIuNDA5MDkwOSwxMS4zMTgxODE4IDExLjU0NTQ1NDUsMTIuMTgxODE4MiAxMS41NDU0NTQ1LDEzLjI3MjcyNzMgQzExLjU0NTQ1NDUsMTQuMzYzNjM2NCAxMi40MDkwOTA5LDE1LjIyNzI3MjcgMTMuNSwxNS4yMjcyNzI3IEMxNC41OTA5MDkxLDE1LjIyNzI3MjcgMTUuNDU0NTQ1NSwxNC4zNjM2MzY0IDE1LjQ1NDU0NTUsMTMuMjcyNzI3MyBDMTUuNDU0NTQ1NSwxMi4xODE4MTgyIDE0LjU5MDkwOTEsMTEuMzE4MTgxOCAxMy41LDExLjMxODE4MTggWiBNMjAuMTgxODE4MiwxNi41IEMxOS4wOTA5MDkxLDE2LjUgMTguMjI3MjcyNywxNy4zNjM2MzY0IDE4LjIyNzI3MjcsMTguNDU0NTQ1NSBDMTguMjI3MjcyNywxOS41NDU0NTQ1IDE5LjA5MDkwOTEsMjAuNDA5MDkwOSAyMC4xODE4MTgyLDIwLjQwOTA5MDkgQzIxLjI3MjcyNzMsMjAuNDA5MDkwOSAyMi4xMzYzNjM2LDE5LjU0NTQ1NDUgMjIuMTM2MzYzNiwxOC40NTQ1NDU1IEMyMi4xMzYzNjM2LDE3LjM2MzYzNjQgMjEuMjcyNzI3MywxNi41IDIwLjE4MTgxODIsMTYuNSBaIE0yNS41LDE2LjUgQzI0LjQwOTA5MDksMTYuNSAyMy41NDU0NTQ1LDE3LjM2MzYzNjQgMjMuNTQ1NDU0NSwxOC40NTQ1NDU1IEMyMy41NDU0NTQ1LDE5LjU0NTQ1NDUgMjQuNDA5MDkwOSwyMC40MDkwOTA5IDI1LjUsMjAuNDA5MDkwOSBDMjYuNTkwOTA5MSwyMC40MDkwOTA5IDI3LjQ1NDU0NTUsMTkuNTQ1NDU0NSAyNy40NTQ1NDU1LDE4LjQ1NDU0NTUgQzI3LjQ1NDU0NTUsMTcuMzYzNjM2NCAyNi41OTA5MDkxLDE2LjUgMjUuNSwxNi41IFoiLz48L3N2Zz4=") no-repeat center/contain;
}
.payment-container .payment-methods .method-item .method-icon.alipay.data-v-13c3fb22 {
background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZmlsbD0iIzE2NzdGRiIgZD0iTTIzLjg1MzU1MzQsMTUuMTQ2NDQ2NiBDMjQuMDQ4ODE1NSwxNS4zNDE3MDg4IDI0LjA0ODgxNTUsMTUuNjU4MjkxMiAyMy44NTM1NTM0LDE1Ljg1MzU1MzQgTDE1Ljg1MzU1MzQsMjMuODUzNTUzNCBDMTUuNjU4MjkxMiwyNC4wNDg4MTU1IDE1LjM0MTcwODgsMjQuMDQ4ODE1NSAxNS4xNDY0NDY2LDIzLjg1MzU1MzQgTDAuMTQ2NDQ2NjA5LDguODUzNTUzMzkgQy0wLjA0ODgxNTUzNjUsOC42NTgyOTEyNCAtMC4wNDg4MTU1MzY1LDguMzQxNzA4NzYgMC4xNDY0NDY2MDksOC4xNDY0NDY2MSBMOC4xNDY0NDY2MSwwLjE0NjQ0NjYwOSBDOC4zNDE3MDg3NiwtMC4wNDg4MTU1MzY1IDguNjU4MjkxMjQsLTAuMDQ4ODE1NTM2NSA4Ljg1MzU1MzM5LDAuMTQ2NDQ2NjA5IEwyMy44NTM1NTM0LDE1LjE0NjQ0NjYgWiBNMTcuMDM1NTMzOSwxNy4wMzU1MzM5IEwxOS4wMzU1MzM5LDE1LjAzNTUzMzkgTDE1LjAzNTUzMzksMTEuMDM1NTMzOSBMMTMuMDM1NTMzOSwxMy4wMzU1MzM5IEwxNy4wMzU1MzM5LDE3LjAzNTUzMzkgWiBNMTEuMDM1NTMzOSwxNS4wMzU1MzM5IEwxMy4wMzU1MzM5LDE3LjAzNTUzMzkgTDkuMDM1NTMzOTEsMjEuMDM1NTMzOSBMNy4wMzU1MzM5MSwxOS4wMzU1MzM5IEwxMS4wMzU1MzM5LDE1LjAzNTUzMzkgWiBNOS4wMzU1MzM5MSw5LjAzNTUzMzkxIEwxMS4wMzU1MzM5LDExLjAzNTUzMzkgTDcuMDM1NTMzOTEsMTUuMDM1NTMzOSBMNS4wMzU1MzM5MSwxMy4wMzU1MzM5IEw5LjAzNTUzMzkxLDkuMDM1NTMzOTEgWiBNMy4wMzU1MzM5MSwxMS4wMzU1MzM5IEw1LjAzNTUzMzkxLDEzLjAzNTUzMzkgTDMuMDM1NTMzOTEsMTUuMDM1NTMzOSBMMS4wMzU1MzM5MSwxMy4wMzU1MzM5IEwzLjAzNTUzMzkxLDExLjAzNTUzMzkgWiBNMTMuMDM1NTMzOSw3LjAzNTUzMzkxIEwxNS4wMzU1MzM5LDkuMDM1NTMzOTEgTDExLjAzNTUzMzksMTMuMDM1NTMzOSBMOS4wMzU1MzM5MSwxMS4wMzU1MzM5IEwxMy4wMzU1MzM5LDcuMDM1NTMzOTEgWiBNMTcuMDM1NTMzOSwzLjAzNTUzMzkxIEwxOS4wMzU1MzM5LDUuMDM1NTMzOTEgTDE1LjAzNTUzMzksOS4wMzU1MzM5MSBMMTMuMDM1NTMzOSw3LjAzNTUzMzkxIEwxNy4wMzU1MzM5LDMuMDM1NTMzOTEgWiBNMjEuMDM1NTMzOSw3LjAzNTUzMzkxIEwyMy4wMzU1MzM5LDkuMDM1NTMzOTEgTDE5LjAzNTUzMzksMTMuMDM1NTMzOSBMMTcuMDM1NTMzOSwxMS4wMzU1MzM5IEwyMS4wMzU1MzM5LDcuMDM1NTMzOTEgWiIvPjwvc3ZnPg==") no-repeat center/contain;
}
.payment-container .payment-methods .method-item .method-name.data-v-13c3fb22 {
flex: 1;
.payment-container .wechat-tip .method-text.data-v-13c3fb22 {
font-size: 28rpx;
color: #333;
}
.payment-container .payment-methods .method-item .method-check.data-v-13c3fb22 {
width: 32rpx;
height: 32rpx;
border-radius: 50%;
border: 2rpx solid #ddd;
position: relative;
font-weight: 500;
}
.payment-container .bottom-bar.data-v-13c3fb22 {
position: fixed;
+130 -49
View File
@@ -1,6 +1,7 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const config_user = require("../../config/user.js");
const config_url = require("../../config/url.js");
const _sfc_main = {
data() {
return {
@@ -8,12 +9,13 @@ const _sfc_main = {
orderInfo: {
orderNo: "",
deviceNo: "",
startTime: "",
usedTime: "",
currentFee: "0.00",
deposit: "99.00",
refundAmount: "99.00",
endTime: ""
endTime: "",
withdrawStatus: "waiting",
isWithdrawn: false
}
};
},
@@ -23,7 +25,7 @@ const _sfc_main = {
this.loadOrderInfo();
} else {
common_vendor.index.showToast({
title: "订单信息不存在",
title: "订单ID不能为空",
icon: "none"
});
setTimeout(() => {
@@ -32,76 +34,155 @@ const _sfc_main = {
}
},
methods: {
// 获取退款状态文本
getWithdrawStatusText() {
const statusMap = {
"waiting": "待申请",
"processing": "处理中",
"success": "已退款",
"failed": "退款失败"
};
return statusMap[this.orderInfo.withdrawStatus] || "待申请";
},
// 加载订单信息
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);
common_vendor.index.showLoading({ title: "加载中" });
const result = await config_user.queryById(this.orderId);
if (result.code === 200 && result.data) {
const orderData = result.data;
let packageMinutes = 60;
let extraMinutes = 0;
let usedMinutes = 0;
let packagePrice = "0.00";
let extraFee = "0.00";
if (orderData.remark) {
try {
const remarkInfo = orderData.remark;
const usedTimeMatch = remarkInfo.match(/使用时长:(\d+)分钟/);
if (usedTimeMatch && usedTimeMatch[1]) {
usedMinutes = parseInt(usedTimeMatch[1]);
}
const packageTimeMatch = remarkInfo.match(/套餐时长:(\d+)分钟/);
if (packageTimeMatch && packageTimeMatch[1]) {
packageMinutes = parseInt(packageTimeMatch[1]);
}
const extraTimeMatch = remarkInfo.match(/超出时长:(\d+)分钟/);
if (extraTimeMatch && extraTimeMatch[1]) {
extraMinutes = parseInt(extraTimeMatch[1]);
}
const packagePriceMatch = remarkInfo.match(/套餐费用:([\d.]+)元/);
if (packagePriceMatch && packagePriceMatch[1]) {
packagePrice = packagePriceMatch[1];
}
const extraFeeMatch = remarkInfo.match(/超时费用:([\d.]+)元/);
if (extraFeeMatch && extraFeeMatch[1]) {
extraFee = extraFeeMatch[1];
}
common_vendor.index.__f__("log", "at pages/order/return-success.vue:186", "从remark解析到的信息:", {
usedMinutes,
packageMinutes,
extraMinutes,
packagePrice,
extraFee
});
} catch (e) {
common_vendor.index.__f__("error", "at pages/order/return-success.vue:194", "解析remark字段失败:", e);
}
}
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())
orderNo: orderData.orderNo || "",
deviceNo: orderData.deviceNo || "",
usedTime: usedMinutes + "分钟",
packageTime: packageMinutes + "分钟",
extraTime: extraMinutes + "分钟",
packagePrice,
extraFee,
currentFee: orderData.actualDeviceAmount || "0.00",
deposit: orderData.depositAmount || "99.00",
refundAmount: orderData.residueAmount || "99.00",
endTime: orderData.endTime || "",
withdrawStatus: orderData.withdrawStatus || "waiting",
isWithdrawn: orderData.withdrawStatus === "success"
};
common_vendor.index.__f__("log", "at pages/order/return-success.vue:124", "处理后的订单信息:", JSON.stringify(this.orderInfo));
} else {
throw new Error("获取订单信息失败");
throw new Error(result.msg || "获取订单信息失败");
}
common_vendor.index.hideLoading();
} catch (error) {
common_vendor.index.hideLoading();
common_vendor.index.__f__("error", "at pages/order/return-success.vue:217", "加载订单信息错误:", error);
common_vendor.index.showToast({
title: error.message || "获取订单信息失败",
icon: "none"
});
} finally {
common_vendor.index.hideLoading();
}
},
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}`;
// 申请退款
async handleWithdraw() {
try {
common_vendor.index.showLoading({ title: "处理中" });
const res = await common_vendor.index.request({
url: `${config_url.URL || "http://127.0.0.1:8080"}/app/withdraw/add/${this.orderInfo.orderNo}`,
method: "GET",
header: {
"Content-Type": "application/json",
"Authorization": "Bearer " + common_vendor.index.getStorageSync("token"),
"Clientid": common_vendor.index.getStorageSync("client_id")
}
});
if (res.statusCode === 200 && res.data.code === 200) {
common_vendor.index.showToast({
title: "退款申请成功",
icon: "success"
});
this.orderInfo.withdrawStatus = "processing";
this.orderInfo.isWithdrawn = true;
setTimeout(() => {
this.loadOrderInfo();
}, 1500);
} else {
throw new Error(res.data.msg || "退款申请失败");
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/order/return-success.vue:260", "退款申请错误:", error);
common_vendor.index.showToast({
title: error.message || "退款申请失败",
icon: "none"
});
} finally {
common_vendor.index.hideLoading();
}
},
// 返回首页
goToHome() {
common_vendor.index.switchTab({
common_vendor.index.reLaunch({
url: "/pages/index/index"
});
},
goToOrderList() {
common_vendor.index.redirectTo({
url: "/pages/order/index"
});
}
}
};
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.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))
};
d: common_vendor.t($data.orderInfo.packageTime || "1小时"),
e: common_vendor.t($data.orderInfo.extraTime || "0分钟"),
f: common_vendor.t($data.orderInfo.endTime || "-"),
g: common_vendor.t($data.orderInfo.packagePrice || "0.00"),
h: common_vendor.t($data.orderInfo.extraFee || "0.00"),
i: common_vendor.t($data.orderInfo.currentFee || "0.00"),
j: common_vendor.t($data.orderInfo.deposit || "99.00"),
k: common_vendor.t($data.orderInfo.refundAmount || "99.00"),
l: common_vendor.t($options.getWithdrawStatusText()),
m: common_vendor.n($data.orderInfo.withdrawStatus || "waiting"),
n: !$data.orderInfo.isWithdrawn && $data.orderInfo.refundAmount > 0
}, !$data.orderInfo.isWithdrawn && $data.orderInfo.refundAmount > 0 ? {
o: common_vendor.o((...args) => $options.handleWithdraw && $options.handleWithdraw(...args))
} : {}, {
p: common_vendor.o((...args) => $options.goToHome && $options.goToHome(...args))
});
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-eb1f1ee2"]]);
wx.createPage(MiniProgramPage);
@@ -1 +1 @@
<view class="success-container data-v-eb1f1ee2"><view class="status-card data-v-eb1f1ee2"><view class="status-icon success data-v-eb1f1ee2"></view><view class="status-text data-v-eb1f1ee2">归还成功</view><view class="status-desc data-v-eb1f1ee2">您的充电宝已归还,押金已退回</view></view><view class="order-card data-v-eb1f1ee2"><view class="card-title data-v-eb1f1ee2">订单信息</view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">订单号</text><text class="value data-v-eb1f1ee2">{{a}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">设备号</text><text class="value data-v-eb1f1ee2">{{b}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">使用时长</text><text class="value data-v-eb1f1ee2">{{c}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">费用</text><text class="value data-v-eb1f1ee2">{{d}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">归还时间</text><text class="value data-v-eb1f1ee2">{{e}}</text></view></view><view class="refund-card data-v-eb1f1ee2"><view class="card-title data-v-eb1f1ee2">退还信息</view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">押金</text><text class="value data-v-eb1f1ee2">¥{{f}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">退还金额</text><text class="value highlight data-v-eb1f1ee2">¥{{g}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">退还状态</text><text class="value success data-v-eb1f1ee2">已退还</text></view></view><view class="button-group data-v-eb1f1ee2"><button class="primary-btn data-v-eb1f1ee2" bindtap="{{h}}">返回首页</button><button class="secondary-btn data-v-eb1f1ee2" bindtap="{{i}}">查看订单</button></view></view>
<view class="success-container data-v-eb1f1ee2"><view class="status-card data-v-eb1f1ee2"><view class="status-icon success data-v-eb1f1ee2"></view><view class="status-text data-v-eb1f1ee2">归还成功</view><view class="status-desc data-v-eb1f1ee2">您的充电宝已归还,费用已从押金中扣除</view></view><view class="order-card data-v-eb1f1ee2"><view class="card-title data-v-eb1f1ee2">订单信息</view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">订单号</text><text class="value data-v-eb1f1ee2">{{a}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">设备号</text><text class="value data-v-eb1f1ee2">{{b}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">使用时长</text><text class="value data-v-eb1f1ee2">{{c}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">套餐时长</text><text class="value data-v-eb1f1ee2">{{d}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">超出时长</text><text class="value data-v-eb1f1ee2">{{e}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">归还时间</text><text class="value data-v-eb1f1ee2">{{f}}</text></view></view><view class="refund-card data-v-eb1f1ee2"><view class="card-title data-v-eb1f1ee2">费用信息</view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">套餐费用</text><text class="value data-v-eb1f1ee2">¥{{g}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">超时费用</text><text class="value data-v-eb1f1ee2">¥{{h}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">总费用</text><text class="value data-v-eb1f1ee2">¥{{i}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">押金</text><text class="value data-v-eb1f1ee2">¥{{j}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">退还金额</text><text class="value highlight data-v-eb1f1ee2">¥{{k}}</text></view><view class="info-item data-v-eb1f1ee2"><text class="label data-v-eb1f1ee2">退还状态</text><text class="{{['value', 'data-v-eb1f1ee2', m]}}">{{l}}</text></view></view><view class="notice-card data-v-eb1f1ee2"><view class="card-title data-v-eb1f1ee2">退款说明</view><view class="notice-content data-v-eb1f1ee2"><text class="data-v-eb1f1ee2">1. 押金剩余金额需要您手动申请提现</text><text class="data-v-eb1f1ee2">2. 提现申请提交后将在1-3个工作日内退还到原支付账户</text><text class="data-v-eb1f1ee2">3. 如有疑问,请联系客服</text></view></view><view class="button-group data-v-eb1f1ee2"><button wx:if="{{n}}" class="primary-btn data-v-eb1f1ee2" bindtap="{{o}}">申请退款</button><button class="primary-btn data-v-eb1f1ee2" bindtap="{{p}}">返回首页</button></view></view>
+39 -15
View File
@@ -110,30 +110,54 @@
color: #07c160;
}
.button-group.data-v-eb1f1ee2 {
margin-top: 30px;
margin-top: 40rpx;
display: flex;
flex-direction: column;
gap: 16px;
justify-content: center;
gap: 20rpx;
}
.button-group .primary-btn.data-v-eb1f1ee2, .button-group .secondary-btn.data-v-eb1f1ee2 {
width: 50%;
height: 88rpx;
line-height: 88rpx;
border-radius: 44rpx;
text-align: center;
font-size: 32rpx;
}
.button-group .primary-btn.data-v-eb1f1ee2 {
background-color: #07c160;
background: #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;
background: #f0f0f0;
color: #333;
}
.button-group .secondary-btn.data-v-eb1f1ee2:active {
background-color: #f5f5f5;
opacity: 0.8;
}
.notice-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);
}
.notice-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;
}
.notice-card .notice-content.data-v-eb1f1ee2 {
text-align: left;
color: #666;
font-size: 14px;
}
.waiting.data-v-eb1f1ee2 {
color: #ffaa00;
font-weight: bold;
}
+3 -10
View File
@@ -78,15 +78,8 @@ const _sfc_main = {
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));
}
const result = await config_user.confirmPaymentAndRent(this.orderId);
common_vendor.index.__f__("log", "at pages/order/success.vue:143", "确认支付并弹出充电宝结果:", JSON.stringify(result));
if (result && result.code === 200) {
this.deviceMessage = "设备已弹出,请取走您的充电宝";
common_vendor.index.showToast({
@@ -97,7 +90,7 @@ const _sfc_main = {
throw new Error(result && result.msg || "弹出充电宝失败");
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/order/success.vue:163", "弹出充电宝错误:", error);
common_vendor.index.__f__("error", "at pages/order/success.vue:155", "弹出充电宝错误:", error);
this.deviceMessage = "弹出设备失败,请联系客服";
common_vendor.index.showToast({
title: error.message || "弹出充电宝失败,请联系客服",
+64 -26
View File
@@ -1,6 +1,7 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const config_user = require("../../config/user.js");
const config_url = require("../../config/url.js");
const _sfc_main = {
data() {
return {
@@ -25,16 +26,27 @@ const _sfc_main = {
};
},
onLoad(options) {
common_vendor.index.__f__("log", "at pages/return/index.vue:93", "Return page loaded with options:", JSON.stringify(options));
common_vendor.index.__f__("log", "at pages/return/index.vue:96", "Return page loaded with options:", JSON.stringify(options));
this.orderInfo.orderId = options.orderId || "";
this.deviceId = options.deviceNo || options.deviceId || "";
common_vendor.index.__f__("log", "at pages/return/index.vue:99", `初始化参数: orderId=${this.orderInfo.orderId}, deviceId=${this.deviceId}`);
common_vendor.index.__f__("log", "at pages/return/index.vue:102", `初始化参数: 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();
common_vendor.index.setStorageSync("activeOrderId", this.orderInfo.orderId);
try {
if (this.$orderMonitor) {
this.$orderMonitor.addOrder({ orderId: this.orderInfo.orderId });
common_vendor.index.__f__("log", "at pages/return/index.vue:122", "订单已添加到监控队列:", this.orderInfo.orderId);
} else {
common_vendor.index.__f__("warn", "at pages/return/index.vue:124", "$orderMonitor 未定义,无法添加订单到监控队列");
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/return/index.vue:127", "添加订单到监控队列失败:", error);
}
} else {
common_vendor.index.showToast({
title: "缺少订单信息",
@@ -44,12 +56,42 @@ const _sfc_main = {
this.goToHome();
}, 1500);
}
common_vendor.index.$on("orderCompleted", this.handleOrderCompleted);
},
onUnload() {
this.clearTimer();
this.clearStatusCheckTimer();
common_vendor.index.$off("orderCompleted", this.handleOrderCompleted);
},
methods: {
// 处理订单完成事件(可由任何地方触发)
handleOrderCompleted(orderData) {
common_vendor.index.__f__("log", "at pages/return/index.vue:155", "收到订单完成事件:", orderData);
if (orderData.orderId === this.orderInfo.orderId || orderData.orderNo === this.orderInfo.orderNo) {
this.showReturnSuccessModal(orderData);
}
},
// 显示归还成功弹窗
showReturnSuccessModal(orderData) {
this.clearTimer();
this.clearStatusCheckTimer();
common_vendor.index.showModal({
title: "归还成功",
content: "充电宝已归还成功,剩余押金将退还到您的账户",
confirmText: "查看详情",
success: (res) => {
if (res.confirm) {
common_vendor.index.redirectTo({
url: `/pages/order/return-success?orderId=${orderData.orderId || this.orderInfo.orderId}`
});
} else {
common_vendor.index.reLaunch({
url: "/pages/index/index"
});
}
}
});
},
// 根据订单状态获取对应的文字显示
getOrderStatusText() {
const statusMap = {
@@ -71,32 +113,28 @@ const _sfc_main = {
if (!this.orderInfo.orderId) {
throw new Error("订单ID不能为空");
}
common_vendor.index.__f__("log", "at pages/return/index.vue:155", "请求订单详情, orderId:", this.orderInfo.orderId);
common_vendor.index.__f__("log", "at pages/return/index.vue:216", "请求订单详情, orderId:", this.orderInfo.orderId);
const result = await config_user.queryById(this.orderInfo.orderId);
common_vendor.index.__f__("log", "at pages/return/index.vue:157", "订单详情结果:", JSON.stringify(result));
common_vendor.index.__f__("log", "at pages/return/index.vue:218", "订单详情结果:", JSON.stringify(result));
if (result.code === 200 && result.data) {
const orderData = result.data;
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);
common_vendor.index.__f__("log", "at pages/return/index.vue:222", "订单原始数据:", orderData);
common_vendor.index.__f__("log", "at pages/return/index.vue:223", "开始时间字段:", 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}`
});
if (orderData.orderStatus && (orderData.orderStatus === "used_done" || orderData.orderStatus === "used_down")) {
common_vendor.index.$emit("orderCompleted", orderData);
this.showReturnSuccessModal(orderData);
return;
}
this.updateOrderInfo(orderData);
common_vendor.index.__f__("log", "at pages/return/index.vue:187", "更新后的开始时间:", this.orderInfo.startTime);
common_vendor.index.__f__("log", "at pages/return/index.vue:245", "更新后的开始时间:", this.orderInfo.startTime);
} else {
throw new Error(result.msg || "获取订单详情失败");
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/return/index.vue:192", "获取订单详情错误:", error);
common_vendor.index.__f__("error", "at pages/return/index.vue:250", "获取订单详情错误:", error);
common_vendor.index.showToast({
title: error.message || "获取订单信息失败",
icon: "none"
@@ -119,7 +157,7 @@ const _sfc_main = {
},
// 使用后端返回的使用时长和费用数据
updateOrderInfo(orderData) {
common_vendor.index.__f__("log", "at pages/return/index.vue:220", "更新订单信息:", JSON.stringify(orderData));
common_vendor.index.__f__("log", "at pages/return/index.vue:278", "更新订单信息:", JSON.stringify(orderData));
this.orderInfo.usedTime = orderData.usedTime || "0分钟";
this.orderInfo.currentFee = orderData.currentFee || orderData.actualDeviceAmount || orderData.payAmount || "0.00";
if (orderData.orderStatus) {
@@ -128,16 +166,16 @@ const _sfc_main = {
this.orderInfo._rawStartTime = orderData.startTime;
if (orderData.startTime) {
try {
common_vendor.index.__f__("log", "at pages/return/index.vue:239", "API返回的开始时间:", orderData.startTime);
common_vendor.index.__f__("log", "at pages/return/index.vue:297", "API返回的开始时间:", orderData.startTime);
this.orderInfo.startTime = orderData.startTime;
} catch (e) {
common_vendor.index.__f__("error", "at pages/return/index.vue:243", "更新开始时间错误:", e);
common_vendor.index.__f__("error", "at pages/return/index.vue:301", "更新开始时间错误:", e);
this.orderInfo.startTime = "未知";
}
} else {
common_vendor.index.__f__("warn", "at pages/return/index.vue:247", "API返回的订单数据中没有startTime字段");
common_vendor.index.__f__("warn", "at pages/return/index.vue:305", "API返回的订单数据中没有startTime字段");
if (orderData.createTime) {
common_vendor.index.__f__("log", "at pages/return/index.vue:250", "使用createTime作为备选:", orderData.createTime);
common_vendor.index.__f__("log", "at pages/return/index.vue:308", "使用createTime作为备选:", orderData.createTime);
this.orderInfo.startTime = orderData.createTime;
} else {
this.orderInfo.startTime = "未知";
@@ -192,23 +230,23 @@ const _sfc_main = {
throw new Error("设备号不能为空");
}
const inUseRes = await common_vendor.index.request({
url: `${common_vendor.index.getStorageSync("baseUrl") || "http://127.0.0.1:8080"}/app/order/inUse`,
url: `${config_url.URL || "http://127.0.0.1:8080"}/app/order/inUse`,
method: "GET",
header: {
"Authorization": "Bearer " + common_vendor.index.getStorageSync("token"),
"Clientid": common_vendor.index.getStorageSync("client_id")
}
});
common_vendor.index.__f__("log", "at pages/return/index.vue:329", "通过设备号查询订单结果:", JSON.stringify(inUseRes));
common_vendor.index.__f__("log", "at pages/return/index.vue:387", "通过设备号查询订单结果:", 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);
common_vendor.index.__f__("log", "at pages/return/index.vue:391", "使用中的订单:", 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);
common_vendor.index.__f__("log", "at pages/return/index.vue:403", "inUse API返回的开始时间:", inUseOrder.startTime);
this.orderInfo.startTime = inUseOrder.startTime;
}
this.getOrderDetails();
@@ -218,7 +256,7 @@ const _sfc_main = {
throw new Error("未找到使用中的订单");
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/return/index.vue:359", "通过设备号查询订单失败:", error);
common_vendor.index.__f__("error", "at pages/return/index.vue:417", "通过设备号查询订单失败:", error);
common_vendor.index.showToast({
title: error.message || "获取订单信息失败",
icon: "none"
@@ -235,7 +273,7 @@ const _sfc_main = {
try {
await this.getOrderDetails();
} catch (error) {
common_vendor.index.__f__("error", "at pages/return/index.vue:379", "检查归还状态失败:", error);
common_vendor.index.__f__("error", "at pages/return/index.vue:437", "检查归还状态失败:", error);
}
},
// 返回首页
+1 -1
View File
@@ -19,7 +19,7 @@
},
"compileType": "miniprogram",
"libVersion": "3.8.0",
"appid": "wx3ae63fb09936b379",
"appid": "wxe752f45e7f7aa271",
"projectname": "fs",
"condition": {},
"editorSetting": {
+1 -1
View File
@@ -10,7 +10,7 @@ const wxLogin = () => {
if (loginRes.code) {
const result = await config_user.login({
code: loginRes.code,
appid: "wx3ae63fb09936b379"
appid: "wxe752f45e7f7aa271"
});
if (result.code === 200) {
common_vendor.index.setStorageSync("token", result.data.LoginWxVo.access_token);
+134
View File
@@ -0,0 +1,134 @@
"use strict";
const common_vendor = require("../common/vendor.js");
const config_user = require("../config/user.js");
class OrderMonitor {
constructor() {
this.activeOrders = /* @__PURE__ */ new Map();
this.timer = null;
this.checkInterval = 1e4;
this.isRunning = false;
}
/**
* 添加订单到监控队列
* @param {Object} orderData 订单数据对象,必须包含orderId字段
*/
addOrder(orderData) {
if (!orderData || !orderData.orderId) {
common_vendor.index.__f__("error", "at utils/orderMonitor.js:21", "添加订单监控失败:无效的订单数据");
return;
}
common_vendor.index.__f__("log", "at utils/orderMonitor.js:25", "添加订单到监控队列:", orderData.orderId);
this.activeOrders.set(orderData.orderId, orderData);
if (!this.isRunning) {
this.start();
}
}
/**
* 移除订单的监控
* @param {String} orderId 订单ID
*/
removeOrder(orderId) {
if (this.activeOrders.has(orderId)) {
common_vendor.index.__f__("log", "at utils/orderMonitor.js:40", "从监控队列移除订单:", orderId);
this.activeOrders.delete(orderId);
if (this.activeOrders.size === 0) {
this.stop();
}
}
}
/**
* 启动监控服务
*/
start() {
if (this.isRunning)
return;
common_vendor.index.__f__("log", "at utils/orderMonitor.js:56", "启动订单监控服务");
this.isRunning = true;
this.checkOrders();
this.timer = setInterval(() => {
this.checkOrders();
}, this.checkInterval);
}
/**
* 停止监控服务
*/
stop() {
if (!this.isRunning)
return;
common_vendor.index.__f__("log", "at utils/orderMonitor.js:71", "停止订单监控服务");
this.isRunning = false;
if (this.timer) {
clearInterval(this.timer);
this.timer = null;
}
}
/**
* 检查所有活跃订单的状态
*/
async checkOrders() {
if (this.activeOrders.size === 0)
return;
common_vendor.index.__f__("log", "at utils/orderMonitor.js:86", `检查 ${this.activeOrders.size} 个活跃订单状态`);
for (const [orderId, orderData] of this.activeOrders.entries()) {
try {
await this.checkOrderStatus(orderId);
} catch (error) {
common_vendor.index.__f__("error", "at utils/orderMonitor.js:92", `检查订单状态失败: ${orderId}`, error);
}
}
}
/**
* 检查单个订单的状态
* @param {String} orderId 订单ID
*/
async checkOrderStatus(orderId) {
try {
common_vendor.index.__f__("log", "at utils/orderMonitor.js:103", `检查订单 ${orderId} 的状态`);
const result = await config_user.queryById(orderId);
if (result.code === 200 && result.data) {
const orderData = result.data;
this.activeOrders.set(orderId, orderData);
if (orderData.orderStatus === "used_done" || orderData.orderStatus === "used_down") {
common_vendor.index.__f__("log", "at utils/orderMonitor.js:114", `订单 ${orderId} 已完成!`);
common_vendor.index.$emit("orderCompleted", orderData);
common_vendor.index.showToast({
title: "充电宝归还成功",
icon: "success",
duration: 2e3
});
const innerAudioContext = common_vendor.index.createInnerAudioContext();
innerAudioContext.src = "/static/audio/return_success.mp3";
innerAudioContext.play();
this.removeOrder(orderId);
setTimeout(() => {
common_vendor.index.showModal({
title: "归还成功",
content: "充电宝已归还成功,剩余押金将退还到您的账户",
confirmText: "查看详情",
success: (res) => {
if (res.confirm) {
common_vendor.index.redirectTo({
url: `/pages/order/return-success?orderId=${orderId}`
});
}
}
});
}, 500);
}
}
} catch (error) {
common_vendor.index.__f__("error", "at utils/orderMonitor.js:153", `检查订单 ${orderId} 状态出错:`, error);
}
}
}
const orderMonitor = new OrderMonitor();
const initOrderMonitor = () => {
const lastActiveOrderId = common_vendor.index.getStorageSync("activeOrderId");
if (lastActiveOrderId) {
const lastOrderData = { orderId: lastActiveOrderId };
orderMonitor.addOrder(lastOrderData);
}
};
initOrderMonitor();
exports.orderMonitor = orderMonitor;
//# sourceMappingURL=../../.sourcemap/mp-weixin/utils/orderMonitor.js.map