first:修正上传地址,优化界面,尝试对接微信支付分免押(50%)
This commit is contained in:
+1
-1
@@ -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","main.js"],"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>","import App from './App'\r\nimport { orderMonitor } from './utils/orderMonitor.js'\r\n\r\nimport uView from \"uview-ui\";\r\n\r\n\r\n// #ifndef VUE3\r\nimport Vue from 'vue'\r\nimport './uni.promisify.adaptor'\r\nVue.config.productionTip = false\r\n\r\n// 注册全局订单监控服务\r\nVue.prototype.$orderMonitor = orderMonitor\r\n\r\nApp.mpType = 'app'\r\nVue.use(uView)\r\nconst app = new Vue({\r\n ...App\r\n})\r\napp.$mount()\r\n// #endif\r\n\r\n// #ifdef VUE3\r\nimport { createSSRApp } from 'vue'\r\nexport function createApp() {\r\n const app = createSSRApp(App)\r\n \r\n // 注册全局订单监控服务到VUE3\r\n app.config.globalProperties.$orderMonitor = orderMonitor\r\n \r\n return {\r\n app\r\n }\r\n}\r\n// #endif"],"names":["uni","wxLogin","createSSRApp","App","orderMonitor"],"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;ACZM,SAAS,YAAY;AAC1B,QAAM,MAAME,cAAY,aAACC,SAAG;AAG5B,MAAI,OAAO,iBAAiB,gBAAgBC,mBAAY;AAExD,SAAO;AAAA,IACL;AAAA,EACD;AACH;;;"}
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"assets.js","sources":["static/scan-icon.png","static/jl.png","static/complaint.png","static/hlep.png"],"sourcesContent":["export default \"__VITE_ASSET__b9d91c1a__\"","export default \"__VITE_ASSET__44ff4dfa__\"","export default \"__VITE_ASSET__d1c6bbb6__\"","export default \"__VITE_ASSET__f0ed8f64__\""],"names":[],"mappings":";AAAA,MAAe,eAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;;;;;"}
|
||||
{"version":3,"file":"assets.js","sources":["static/logo.png","static/scan-icon.png","static/jl.png","static/complaint.png","static/hlep.png","static/images/location-map.svg","static/images/Electricity.svg","static/images/wxpayflag.png"],"sourcesContent":["export default \"__VITE_ASSET__fcf1191c__\"","export default \"__VITE_ASSET__b9d91c1a__\"","export default \"__VITE_ASSET__44ff4dfa__\"","export default \"__VITE_ASSET__d1c6bbb6__\"","export default \"__VITE_ASSET__f0ed8f64__\"","export default \"__VITE_ASSET__52e4836e__\"","export default \"__VITE_ASSET__f8b20b4b__\"","export default \"__VITE_ASSET__9081434a__\""],"names":[],"mappings":";AAAA,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;;;;;;;;;"}
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
{"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;;;"}
|
||||
{"version":3,"file":"url.js","sources":["config/url.js"],"sourcesContent":["export const URL = \"https://my.gxfs123.com/api\"\r\n// export const URL = \"http://192.168.10.30:8080\"\r\n\r\nexport const appid = \"wx2165f0be356ae7a9\" "],"names":[],"mappings":";AAAY,MAAC,MAAM;AAGP,MAAC,QAAQ;;;"}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
{"version":3,"file":"index.js","sources":["pages/help/index.vue?type=page"],"sourcesContent":["import MiniProgramPage from '/Users/apple/Documents/subject/locker-fans/uni-fans/pages/help/index.vue'\nwx.createPage(MiniProgramPage)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,WAAW,eAAe;"}
|
||||
{"version":3,"file":"index.js","sources":["pages/help/index.vue","E:/HBuilderX.4.24.2024072208/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvaGVscC9pbmRleC52dWU"],"sourcesContent":["<template>\r\n <view class=\"help-container\">\r\n <!-- 常见问题 -->\r\n <view class=\"faq-list\">\r\n <view \r\n class=\"faq-item\"\r\n v-for=\"(item, index) in faqList\"\r\n :key=\"index\"\r\n @click=\"toggleFaq(index)\"\r\n >\r\n <view class=\"faq-header\">\r\n <text class=\"question\">{{ item.question }}</text>\r\n <view class=\"arrow\" :class=\"{ open: item.isOpen }\"></view>\r\n </view>\r\n <view class=\"answer\" v-show=\"item.isOpen\">\r\n {{ item.answer }}\r\n </view>\r\n </view>\r\n </view>\r\n\r\n <!-- 联系客服 -->\r\n <view class=\"contact-card\">\r\n <view class=\"contact-title\">{{ HELP_CONTENT.CONTACT.TITLE }}</view>\r\n <view class=\"contact-content\">\r\n <view class=\"contact-item\">\r\n <text class=\"label\">{{ HELP_CONTENT.CONTACT.PHONE.LABEL }}</text>\r\n <text class=\"value\" @click=\"makePhoneCall\">{{ HELP_CONTENT.CONTACT.PHONE.VALUE }}</text>\r\n </view>\r\n <view class=\"contact-item\">\r\n <text class=\"label\">{{ HELP_CONTENT.CONTACT.SERVICE_TIME.LABEL }}</text>\r\n <text class=\"value\">{{ HELP_CONTENT.CONTACT.SERVICE_TIME.VALUE }}</text>\r\n </view>\r\n </view>\r\n </view>\r\n </view>\r\n</template>\r\n\r\n<script>\r\nimport { HELP_CONTENT } from '@/constants/help'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n HELP_CONTENT,\r\n faqList: HELP_CONTENT.FAQ_LIST.map(item => ({\r\n ...item,\r\n isOpen: false\r\n }))\r\n }\r\n },\r\n methods: {\r\n toggleFaq(index) {\r\n this.faqList[index].isOpen = !this.faqList[index].isOpen\r\n },\r\n makePhoneCall() {\r\n uni.makePhoneCall({\r\n phoneNumber: HELP_CONTENT.CONTACT.PHONE.VALUE\r\n })\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.help-container {\r\n min-height: 100vh;\r\n background: #f8f8f8;\r\n padding: 30rpx;\r\n\r\n .faq-list {\r\n background: #fff;\r\n border-radius: 20rpx;\r\n padding: 20rpx;\r\n margin-bottom: 30rpx;\r\n box-shadow: 0 4rpx 16rpx rgba(0,0,0,0.04);\r\n\r\n .faq-item {\r\n border-bottom: 1rpx solid #f5f5f5;\r\n \r\n &:last-child {\r\n border-bottom: none;\r\n }\r\n\r\n .faq-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 30rpx 20rpx;\r\n\r\n .question {\r\n font-size: 30rpx;\r\n color: #333;\r\n flex: 1;\r\n padding-right: 20rpx;\r\n }\r\n\r\n .arrow {\r\n width: 16rpx;\r\n height: 16rpx;\r\n border-right: 4rpx solid #999;\r\n border-bottom: 4rpx solid #999;\r\n transform: rotate(45deg);\r\n transition: all 0.3s;\r\n\r\n &.open {\r\n transform: rotate(-135deg);\r\n }\r\n }\r\n }\r\n\r\n .answer {\r\n font-size: 28rpx;\r\n color: #666;\r\n line-height: 1.6;\r\n padding: 0 20rpx 30rpx;\r\n background: #f9f9f9;\r\n border-radius: 10rpx;\r\n margin: 0 20rpx 20rpx;\r\n }\r\n }\r\n }\r\n\r\n .contact-card {\r\n background: #fff;\r\n border-radius: 20rpx;\r\n padding: 30rpx;\r\n box-shadow: 0 4rpx 16rpx rgba(0,0,0,0.04);\r\n\r\n .contact-title {\r\n font-size: 32rpx;\r\n color: #333;\r\n font-weight: 500;\r\n margin-bottom: 20rpx;\r\n border-left: 8rpx solid #1976D2;\r\n padding-left: 20rpx;\r\n }\r\n\r\n .contact-content {\r\n .contact-item {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 20rpx 0;\r\n \r\n .label {\r\n font-size: 28rpx;\r\n color: #666;\r\n }\r\n\r\n .value {\r\n font-size: 28rpx;\r\n color: #333;\r\n font-weight: 500;\r\n\r\n &:active {\r\n opacity: 0.7;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n</style> ","import MiniProgramPage from 'D:/uni-fans/pages/help/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["HELP_CONTENT","uni"],"mappings":";;;AAwCA,MAAK,YAAU;AAAA,EACb,OAAO;AACL,WAAO;AAAA,oBACLA,eAAY;AAAA,MACZ,SAASA,eAAY,aAAC,SAAS,IAAI,WAAS;AAAA,QAC1C,GAAG;AAAA,QACH,QAAQ;AAAA,MACV,EAAE;AAAA,IACJ;AAAA,EACD;AAAA,EACD,SAAS;AAAA,IACP,UAAU,OAAO;AACf,WAAK,QAAQ,KAAK,EAAE,SAAS,CAAC,KAAK,QAAQ,KAAK,EAAE;AAAA,IACnD;AAAA,IACD,gBAAgB;AACdC,oBAAAA,MAAI,cAAc;AAAA,QAChB,aAAaD,eAAY,aAAC,QAAQ,MAAM;AAAA,OACzC;AAAA,IACH;AAAA,EACF;AACF;;;;;;;;;;;;;;;;;;;;;;AC3DA,GAAG,WAAW,eAAe;"}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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: \"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;;;;"}
|
||||
{"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: \"wx2165f0be356ae7a9\"\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;;;;"}
|
||||
+16
-8
@@ -1,10 +1,18 @@
|
||||
"use strict";
|
||||
const _imports_0$1 = "/static/scan-icon.png";
|
||||
const _imports_0 = "/static/jl.png";
|
||||
const _imports_1 = "/static/complaint.png";
|
||||
const _imports_2 = "/static/hlep.png";
|
||||
exports._imports_0 = _imports_0$1;
|
||||
exports._imports_0$1 = _imports_0;
|
||||
exports._imports_1 = _imports_1;
|
||||
exports._imports_2 = _imports_2;
|
||||
const _imports_0$2 = "/static/logo.png";
|
||||
const _imports_1$2 = "/static/scan-icon.png";
|
||||
const _imports_0$1 = "/static/jl.png";
|
||||
const _imports_1$1 = "/static/complaint.png";
|
||||
const _imports_2$1 = "/static/hlep.png";
|
||||
const _imports_0 = "/static/images/location-map.svg";
|
||||
const _imports_1 = "/static/images/Electricity.svg";
|
||||
const _imports_2 = "/static/images/wxpayflag.png";
|
||||
exports._imports_0 = _imports_0$2;
|
||||
exports._imports_0$1 = _imports_0$1;
|
||||
exports._imports_0$2 = _imports_0;
|
||||
exports._imports_1 = _imports_1$2;
|
||||
exports._imports_1$1 = _imports_1$1;
|
||||
exports._imports_1$2 = _imports_1;
|
||||
exports._imports_2 = _imports_2$1;
|
||||
exports._imports_2$1 = _imports_2;
|
||||
//# sourceMappingURL=../../.sourcemap/mp-weixin/common/assets.js.map
|
||||
|
||||
+184
-112
@@ -2570,21 +2570,21 @@ function injectHook(type, hook, target = currentInstance, prepend = false) {
|
||||
);
|
||||
}
|
||||
}
|
||||
const createHook = (lifecycle) => (hook, target = currentInstance) => (
|
||||
const createHook$1 = (lifecycle) => (hook, target = currentInstance) => (
|
||||
// post-create lifecycle registrations are noops during SSR (except for serverPrefetch)
|
||||
(!isInSSRComponentSetup || lifecycle === "sp") && injectHook(lifecycle, (...args) => hook(...args), target)
|
||||
);
|
||||
const onBeforeMount = createHook("bm");
|
||||
const onMounted = createHook("m");
|
||||
const onBeforeUpdate = createHook("bu");
|
||||
const onUpdated = createHook("u");
|
||||
const onBeforeUnmount = createHook("bum");
|
||||
const onUnmounted = createHook("um");
|
||||
const onServerPrefetch = createHook("sp");
|
||||
const onRenderTriggered = createHook(
|
||||
const onBeforeMount = createHook$1("bm");
|
||||
const onMounted = createHook$1("m");
|
||||
const onBeforeUpdate = createHook$1("bu");
|
||||
const onUpdated = createHook$1("u");
|
||||
const onBeforeUnmount = createHook$1("bum");
|
||||
const onUnmounted = createHook$1("um");
|
||||
const onServerPrefetch = createHook$1("sp");
|
||||
const onRenderTriggered = createHook$1(
|
||||
"rtg"
|
||||
);
|
||||
const onRenderTracked = createHook(
|
||||
const onRenderTracked = createHook$1(
|
||||
"rtc"
|
||||
);
|
||||
function onErrorCaptured(hook, target = currentInstance) {
|
||||
@@ -5119,9 +5119,10 @@ function createApp$1(rootComponent, rootProps = null) {
|
||||
}
|
||||
const createSSRApp = createApp$1;
|
||||
function getLocaleLanguage$1() {
|
||||
var _a;
|
||||
let localeLanguage = "";
|
||||
{
|
||||
const appBaseInfo = wx.getAppBaseInfo();
|
||||
const appBaseInfo = ((_a = wx.getAppBaseInfo) === null || _a === void 0 ? void 0 : _a.call(wx)) || wx.getSystemInfoSync();
|
||||
const language = appBaseInfo && appBaseInfo.language ? appBaseInfo.language : LOCALE_EN;
|
||||
localeLanguage = normalizeLocale(language) || LOCALE_EN;
|
||||
}
|
||||
@@ -5532,9 +5533,15 @@ let isIOS = false;
|
||||
let deviceWidth = 0;
|
||||
let deviceDPR = 0;
|
||||
function checkDeviceWidth() {
|
||||
const { windowWidth, pixelRatio, platform } = Object.assign({}, wx.getWindowInfo(), {
|
||||
platform: wx.getDeviceInfo().platform
|
||||
});
|
||||
var _a, _b;
|
||||
let windowWidth, pixelRatio, platform;
|
||||
{
|
||||
const windowInfo = ((_a = wx.getWindowInfo) === null || _a === void 0 ? void 0 : _a.call(wx)) || wx.getSystemInfoSync();
|
||||
const deviceInfo = ((_b = wx.getDeviceInfo) === null || _b === void 0 ? void 0 : _b.call(wx)) || wx.getSystemInfoSync();
|
||||
windowWidth = windowInfo.windowWidth;
|
||||
pixelRatio = windowInfo.pixelRatio;
|
||||
platform = deviceInfo.platform;
|
||||
}
|
||||
deviceWidth = windowWidth;
|
||||
deviceDPR = pixelRatio;
|
||||
isIOS = platform === "ios";
|
||||
@@ -5989,11 +5996,29 @@ function getOSInfo(system, platform) {
|
||||
osName = platform;
|
||||
osVersion = system;
|
||||
} else {
|
||||
osName = system.split(" ")[0] || "";
|
||||
osName = system.split(" ")[0] || platform;
|
||||
osVersion = system.split(" ")[1] || "";
|
||||
}
|
||||
osName = osName.toLocaleLowerCase();
|
||||
switch (osName) {
|
||||
case "harmony":
|
||||
case "ohos":
|
||||
case "openharmony":
|
||||
osName = "harmonyos";
|
||||
break;
|
||||
case "iphone os":
|
||||
osName = "ios";
|
||||
break;
|
||||
case "mac":
|
||||
case "darwin":
|
||||
osName = "macos";
|
||||
break;
|
||||
case "windows_nt":
|
||||
osName = "windows";
|
||||
break;
|
||||
}
|
||||
return {
|
||||
osName: osName.toLocaleLowerCase(),
|
||||
osName,
|
||||
osVersion
|
||||
};
|
||||
}
|
||||
@@ -6014,9 +6039,9 @@ function populateParameters(fromRes, toRes) {
|
||||
appVersion: "1.0.0",
|
||||
appVersionCode: "100",
|
||||
appLanguage: getAppLanguage(hostLanguage),
|
||||
uniCompileVersion: "4.57",
|
||||
uniCompilerVersion: "4.57",
|
||||
uniRuntimeVersion: "4.57",
|
||||
uniCompileVersion: "4.66",
|
||||
uniCompilerVersion: "4.66",
|
||||
uniRuntimeVersion: "4.66",
|
||||
uniPlatform: "mp-weixin",
|
||||
deviceBrand,
|
||||
deviceModel: model,
|
||||
@@ -6165,9 +6190,9 @@ const getAppBaseInfo = {
|
||||
appLanguage: getAppLanguage(hostLanguage),
|
||||
isUniAppX: false,
|
||||
uniPlatform: "mp-weixin",
|
||||
uniCompileVersion: "4.57",
|
||||
uniCompilerVersion: "4.57",
|
||||
uniRuntimeVersion: "4.57"
|
||||
uniCompileVersion: "4.66",
|
||||
uniCompilerVersion: "4.66",
|
||||
uniRuntimeVersion: "4.66"
|
||||
};
|
||||
extend(toRes, parameters);
|
||||
}
|
||||
@@ -6448,6 +6473,91 @@ function tryConnectSocket(host2, port, id) {
|
||||
});
|
||||
});
|
||||
}
|
||||
const CONSOLE_TYPES = ["log", "warn", "error", "info", "debug"];
|
||||
const originalConsole = /* @__PURE__ */ CONSOLE_TYPES.reduce((methods, type) => {
|
||||
methods[type] = console[type].bind(console);
|
||||
return methods;
|
||||
}, {});
|
||||
let sendError = null;
|
||||
const errorQueue = /* @__PURE__ */ new Set();
|
||||
const errorExtra = {};
|
||||
function sendErrorMessages(errors) {
|
||||
if (sendError == null) {
|
||||
errors.forEach((error) => {
|
||||
errorQueue.add(error);
|
||||
});
|
||||
return;
|
||||
}
|
||||
const data = errors.map((err) => {
|
||||
if (typeof err === "string") {
|
||||
return err;
|
||||
}
|
||||
const isPromiseRejection = err && "promise" in err && "reason" in err;
|
||||
const prefix = isPromiseRejection ? "UnhandledPromiseRejection: " : "";
|
||||
if (isPromiseRejection) {
|
||||
err = err.reason;
|
||||
}
|
||||
if (err instanceof Error && err.stack) {
|
||||
if (err.message && !err.stack.includes(err.message)) {
|
||||
return `${prefix}${err.message}
|
||||
${err.stack}`;
|
||||
}
|
||||
return `${prefix}${err.stack}`;
|
||||
}
|
||||
if (typeof err === "object" && err !== null) {
|
||||
try {
|
||||
return prefix + JSON.stringify(err);
|
||||
} catch (err2) {
|
||||
return prefix + String(err2);
|
||||
}
|
||||
}
|
||||
return prefix + String(err);
|
||||
}).filter(Boolean);
|
||||
if (data.length > 0) {
|
||||
sendError(JSON.stringify(Object.assign({
|
||||
type: "error",
|
||||
data
|
||||
}, errorExtra)));
|
||||
}
|
||||
}
|
||||
function setSendError(value, extra = {}) {
|
||||
sendError = value;
|
||||
Object.assign(errorExtra, extra);
|
||||
if (value != null && errorQueue.size > 0) {
|
||||
const errors = Array.from(errorQueue);
|
||||
errorQueue.clear();
|
||||
sendErrorMessages(errors);
|
||||
}
|
||||
}
|
||||
function initOnError() {
|
||||
function onError2(error) {
|
||||
try {
|
||||
if (typeof PromiseRejectionEvent !== "undefined" && error instanceof PromiseRejectionEvent && error.reason instanceof Error && error.reason.message && error.reason.message.includes(`Cannot create property 'errMsg' on string 'taskId`)) {
|
||||
return;
|
||||
}
|
||||
if (true) {
|
||||
originalConsole.error(error);
|
||||
}
|
||||
sendErrorMessages([error]);
|
||||
} catch (err) {
|
||||
originalConsole.error(err);
|
||||
}
|
||||
}
|
||||
if (typeof index.onError === "function") {
|
||||
index.onError(onError2);
|
||||
}
|
||||
if (typeof index.onUnhandledRejection === "function") {
|
||||
index.onUnhandledRejection(onError2);
|
||||
}
|
||||
return function offError2() {
|
||||
if (typeof index.offError === "function") {
|
||||
index.offError(onError2);
|
||||
}
|
||||
if (typeof index.offUnhandledRejection === "function") {
|
||||
index.offUnhandledRejection(onError2);
|
||||
}
|
||||
};
|
||||
}
|
||||
function formatMessage(type, args) {
|
||||
try {
|
||||
return {
|
||||
@@ -6480,7 +6590,16 @@ function formatArg(arg, depth = 0) {
|
||||
case "boolean":
|
||||
return formatBoolean(arg);
|
||||
case "object":
|
||||
return formatObject(arg, depth);
|
||||
try {
|
||||
return formatObject(arg, depth);
|
||||
} catch (e2) {
|
||||
return {
|
||||
type: "object",
|
||||
value: {
|
||||
properties: []
|
||||
}
|
||||
};
|
||||
}
|
||||
case "undefined":
|
||||
return formatUndefined();
|
||||
case "function":
|
||||
@@ -6626,14 +6745,21 @@ function formatObject(value, depth) {
|
||||
}
|
||||
}
|
||||
}
|
||||
let entries = Object.entries(value);
|
||||
if (isHarmonyBuilderParams(value)) {
|
||||
entries = entries.filter(([key]) => key !== "modifier" && key !== "nodeContent");
|
||||
}
|
||||
return {
|
||||
type: "object",
|
||||
className,
|
||||
value: {
|
||||
properties: Object.entries(value).map((entry) => formatObjectProperty(entry[0], entry[1], depth + 1))
|
||||
properties: entries.map((entry) => formatObjectProperty(entry[0], entry[1], depth + 1))
|
||||
}
|
||||
};
|
||||
}
|
||||
function isHarmonyBuilderParams(value) {
|
||||
return value.modifier && value.modifier._attribute && value.nodeContent;
|
||||
}
|
||||
function isComponentPublicInstance(value) {
|
||||
return value.$ && isComponentInternalInstance(value.$);
|
||||
}
|
||||
@@ -6711,10 +6837,11 @@ function formatMapEntry(value, depth) {
|
||||
value: formatArg(value[1], depth)
|
||||
};
|
||||
}
|
||||
const CONSOLE_TYPES = ["log", "warn", "error", "info", "debug"];
|
||||
let sendConsole = null;
|
||||
const messageQueue = [];
|
||||
const messageExtra = {};
|
||||
const EXCEPTION_BEGIN_MARK = "---BEGIN:EXCEPTION---";
|
||||
const EXCEPTION_END_MARK = "---END:EXCEPTION---";
|
||||
function sendConsoleMessages(messages) {
|
||||
if (sendConsole == null) {
|
||||
messageQueue.push(...messages);
|
||||
@@ -6734,10 +6861,6 @@ function setSendConsole(value, extra = {}) {
|
||||
sendConsoleMessages(messages);
|
||||
}
|
||||
}
|
||||
const originalConsole = /* @__PURE__ */ CONSOLE_TYPES.reduce((methods, type) => {
|
||||
methods[type] = console[type].bind(console);
|
||||
return methods;
|
||||
}, {});
|
||||
const atFileRegex = /^\s*at\s+[\w/./-]+:\d+$/;
|
||||
function rewriteConsole() {
|
||||
function wrapConsole(type) {
|
||||
@@ -6752,6 +6875,18 @@ function rewriteConsole() {
|
||||
{
|
||||
originalConsole[type](...originalArgs);
|
||||
}
|
||||
if (type === "error" && args.length === 1) {
|
||||
const arg = args[0];
|
||||
if (typeof arg === "string" && arg.startsWith(EXCEPTION_BEGIN_MARK)) {
|
||||
const startIndex = EXCEPTION_BEGIN_MARK.length;
|
||||
const endIndex = arg.length - EXCEPTION_END_MARK.length;
|
||||
sendErrorMessages([arg.slice(startIndex, endIndex)]);
|
||||
return;
|
||||
} else if (arg instanceof Error) {
|
||||
sendErrorMessages([arg]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
sendConsoleMessages([formatMessage(type, args)]);
|
||||
};
|
||||
}
|
||||
@@ -6796,87 +6931,10 @@ function isConsoleWritable() {
|
||||
console.log = value;
|
||||
return isWritable;
|
||||
}
|
||||
let sendError = null;
|
||||
const errorQueue = /* @__PURE__ */ new Set();
|
||||
const errorExtra = {};
|
||||
function sendErrorMessages(errors) {
|
||||
if (sendError == null) {
|
||||
errors.forEach((error) => {
|
||||
errorQueue.add(error);
|
||||
});
|
||||
return;
|
||||
}
|
||||
const data = errors.map((err) => {
|
||||
const isPromiseRejection = err && "promise" in err && "reason" in err;
|
||||
const prefix = isPromiseRejection ? "UnhandledPromiseRejection: " : "";
|
||||
if (isPromiseRejection) {
|
||||
err = err.reason;
|
||||
}
|
||||
if (err instanceof Error && err.stack) {
|
||||
if (err.message && !err.stack.includes(err.message)) {
|
||||
return `${prefix}${err.message}
|
||||
${err.stack}`;
|
||||
}
|
||||
return `${prefix}${err.stack}`;
|
||||
}
|
||||
if (typeof err === "object" && err !== null) {
|
||||
try {
|
||||
return prefix + JSON.stringify(err);
|
||||
} catch (err2) {
|
||||
return prefix + String(err2);
|
||||
}
|
||||
}
|
||||
return prefix + String(err);
|
||||
}).filter(Boolean);
|
||||
if (data.length > 0) {
|
||||
sendError(JSON.stringify(Object.assign({
|
||||
type: "error",
|
||||
data
|
||||
}, errorExtra)));
|
||||
}
|
||||
}
|
||||
function setSendError(value, extra = {}) {
|
||||
sendError = value;
|
||||
Object.assign(errorExtra, extra);
|
||||
if (value != null && errorQueue.size > 0) {
|
||||
const errors = Array.from(errorQueue);
|
||||
errorQueue.clear();
|
||||
sendErrorMessages(errors);
|
||||
}
|
||||
}
|
||||
function initOnError() {
|
||||
function onError2(error) {
|
||||
try {
|
||||
if (typeof PromiseRejectionEvent !== "undefined" && error instanceof PromiseRejectionEvent && error.reason instanceof Error && error.reason.message && error.reason.message.includes(`Cannot create property 'errMsg' on string 'taskId`)) {
|
||||
return;
|
||||
}
|
||||
if (true) {
|
||||
originalConsole.error(error);
|
||||
}
|
||||
sendErrorMessages([error]);
|
||||
} catch (err) {
|
||||
originalConsole.error(err);
|
||||
}
|
||||
}
|
||||
if (typeof index.onError === "function") {
|
||||
index.onError(onError2);
|
||||
}
|
||||
if (typeof index.onUnhandledRejection === "function") {
|
||||
index.onUnhandledRejection(onError2);
|
||||
}
|
||||
return function offError2() {
|
||||
if (typeof index.offError === "function") {
|
||||
index.offError(onError2);
|
||||
}
|
||||
if (typeof index.offUnhandledRejection === "function") {
|
||||
index.offUnhandledRejection(onError2);
|
||||
}
|
||||
};
|
||||
}
|
||||
function initRuntimeSocketService() {
|
||||
const hosts = "127.0.0.1,192.168.10.9";
|
||||
const hosts = "192.168.10.21,127.0.0.1";
|
||||
const port = "8090";
|
||||
const id = "mp-weixin_uN9NT1";
|
||||
const id = "mp-weixin_ZQiCij";
|
||||
const lazy = typeof swan !== "undefined";
|
||||
let restoreError = lazy ? () => {
|
||||
} : initOnError();
|
||||
@@ -6892,13 +6950,19 @@ function initRuntimeSocketService() {
|
||||
restoreError();
|
||||
restoreConsole();
|
||||
originalConsole.error(wrapError("开发模式下日志通道建立 socket 连接失败。"));
|
||||
originalConsole.error(wrapError("如果是小程序平台,请勾选不校验合法域名配置。"));
|
||||
{
|
||||
originalConsole.error(wrapError("小程序平台,请勾选不校验合法域名配置。"));
|
||||
}
|
||||
originalConsole.error(wrapError("如果是运行到真机,请确认手机与电脑处于同一网络。"));
|
||||
return false;
|
||||
}
|
||||
initMiniProgramGlobalFlag();
|
||||
{
|
||||
initMiniProgramGlobalFlag();
|
||||
}
|
||||
socket.onClose(() => {
|
||||
originalConsole.error(wrapError("开发模式下日志通道 socket 连接关闭,请在 HBuilderX 中重新运行。"));
|
||||
{
|
||||
originalConsole.error(wrapError("开发模式下日志通道 socket 连接关闭,请在 HBuilderX 中重新运行。"));
|
||||
}
|
||||
restoreError();
|
||||
restoreConsole();
|
||||
});
|
||||
@@ -7039,9 +7103,10 @@ function findVmByVueId(instance, vuePid) {
|
||||
}
|
||||
}
|
||||
function getLocaleLanguage() {
|
||||
var _a;
|
||||
let localeLanguage = "";
|
||||
{
|
||||
const appBaseInfo = wx.getAppBaseInfo();
|
||||
const appBaseInfo = ((_a = wx.getAppBaseInfo) === null || _a === void 0 ? void 0 : _a.call(wx)) || wx.getSystemInfoSync();
|
||||
const language = appBaseInfo && appBaseInfo.language ? appBaseInfo.language : LOCALE_EN;
|
||||
localeLanguage = normalizeLocale(language) || LOCALE_EN;
|
||||
}
|
||||
@@ -8747,6 +8812,10 @@ const $u = {
|
||||
throttle
|
||||
};
|
||||
index.$u = $u;
|
||||
const createHook = (lifecycle) => (hook, target = getCurrentInstance()) => {
|
||||
!isInSSRComponentSetup && injectHook(lifecycle, hook, target);
|
||||
};
|
||||
const onLoad = /* @__PURE__ */ createHook(ON_LOAD);
|
||||
exports._export_sfc = _export_sfc;
|
||||
exports.createSSRApp = createSSRApp;
|
||||
exports.e = e;
|
||||
@@ -8754,5 +8823,8 @@ exports.f = f;
|
||||
exports.index = index;
|
||||
exports.n = n;
|
||||
exports.o = o;
|
||||
exports.onLoad = onLoad;
|
||||
exports.reactive = reactive;
|
||||
exports.ref = ref;
|
||||
exports.t = t;
|
||||
//# sourceMappingURL=../../.sourcemap/mp-weixin/common/vendor.js.map
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
"use strict";
|
||||
const URL = "http://127.0.0.1:8080";
|
||||
const appid = "wxe752f45e7f7aa271";
|
||||
const URL = "https://my.gxfs123.com/api";
|
||||
const appid = "wx2165f0be356ae7a9";
|
||||
exports.URL = URL;
|
||||
exports.appid = appid;
|
||||
//# sourceMappingURL=../../.sourcemap/mp-weixin/config/url.js.map
|
||||
|
||||
+6
-6
@@ -70,12 +70,12 @@ const confirmPaymentAndRent = (orderId) => {
|
||||
method: "post"
|
||||
});
|
||||
};
|
||||
const updateOrderPackage = (data) => {
|
||||
common_vendor.index.__f__("log", "at config/user.js:159", "更新订单套餐信息:", data);
|
||||
const getOrderByOrderNoScore = (orderNo) => {
|
||||
common_vendor.index.__f__("log", "at config/user.js:157", "通过订单号获取支付分订单信息", orderNo);
|
||||
return config_http.request({
|
||||
url: "/app/device/updateOrderPackage",
|
||||
method: "post",
|
||||
data
|
||||
url: `/app/wx-payment/score/create/${orderNo}`,
|
||||
method: "get",
|
||||
hideLoading: true
|
||||
});
|
||||
};
|
||||
const updateUserBalance = (orderId) => {
|
||||
@@ -89,11 +89,11 @@ exports.checkOrdersByStatus = checkOrdersByStatus;
|
||||
exports.confirmPaymentAndRent = confirmPaymentAndRent;
|
||||
exports.getDeviceInfo = getDeviceInfo;
|
||||
exports.getMyIndexInfo = getMyIndexInfo;
|
||||
exports.getOrderByOrderNoScore = getOrderByOrderNoScore;
|
||||
exports.getOrderList = getOrderList;
|
||||
exports.login = login;
|
||||
exports.queryById = queryById;
|
||||
exports.rentPowerBank = rentPowerBank;
|
||||
exports.updateOrderPackage = updateOrderPackage;
|
||||
exports.updateUserBalance = updateUserBalance;
|
||||
exports.withdrawDeposit = withdrawDeposit;
|
||||
//# sourceMappingURL=../../.sourcemap/mp-weixin/config/user.js.map
|
||||
|
||||
+76
-277
@@ -1,77 +1,48 @@
|
||||
"use strict";
|
||||
const common_vendor = require("../../common/vendor.js");
|
||||
const common_assets = require("../../common/assets.js");
|
||||
const config_user = require("../../config/user.js");
|
||||
const _sfc_main = {
|
||||
data() {
|
||||
return {
|
||||
deviceInfo: {},
|
||||
deviceId: "",
|
||||
deviceLocation: "一号教学楼大厅",
|
||||
batteryLevel: 95,
|
||||
hasActiveOrder: false,
|
||||
deviceStatus: {
|
||||
text: "可使用",
|
||||
class: "available"
|
||||
},
|
||||
selectedPackage: 1,
|
||||
packages: [],
|
||||
depositAmount: "99.00",
|
||||
// 默认押金金额
|
||||
isLoggedIn: true,
|
||||
phoneNumber: ""
|
||||
};
|
||||
},
|
||||
onLoad(options) {
|
||||
this.deviceId = options.deviceNo;
|
||||
if (options.feeConfig) {
|
||||
try {
|
||||
common_vendor.index.__f__("log", "at pages/device/detail.vue:117", "从URL获取到feeConfig:", options.feeConfig);
|
||||
const feeConfigStr = decodeURIComponent(options.feeConfig);
|
||||
this.deviceInfo = { ...this.deviceInfo, feeConfig: feeConfigStr };
|
||||
this.parseFeeConfig();
|
||||
} catch (e) {
|
||||
common_vendor.index.__f__("error", "at pages/device/detail.vue:124", "解析URL中的feeConfig失败:", e);
|
||||
this.checkOrderStatus();
|
||||
this.getDeviceInfo();
|
||||
}
|
||||
} else {
|
||||
this.checkOrderStatus();
|
||||
common_vendor.index.__f__("log", "at pages/device/detail.vue:132", options.deviceNo);
|
||||
this.getDeviceInfo();
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 检查登录状态和订单
|
||||
async getDeviceInfo() {
|
||||
const res = await config_user.getDeviceInfo(this.deviceId);
|
||||
__name: "detail",
|
||||
setup(__props) {
|
||||
const deviceInfo = common_vendor.ref({});
|
||||
const deviceId = common_vendor.ref("");
|
||||
const deviceLocation = common_vendor.ref("一号教学楼大厅");
|
||||
const batteryLevel = common_vendor.ref(95);
|
||||
const hasActiveOrder = common_vendor.ref(false);
|
||||
const deviceStatus = common_vendor.reactive({
|
||||
text: "可使用",
|
||||
class: "available"
|
||||
});
|
||||
const isLoggedIn = common_vendor.ref(true);
|
||||
const phoneNumber = common_vendor.ref("");
|
||||
common_vendor.onLoad((options) => {
|
||||
deviceId.value = options.deviceNo;
|
||||
checkOrderStatus();
|
||||
common_vendor.index.__f__("log", "at pages/device/detail.vue:161", options.deviceNo);
|
||||
fetchDeviceInfo();
|
||||
});
|
||||
const fetchDeviceInfo = async () => {
|
||||
const res = await config_user.getDeviceInfo(deviceId.value);
|
||||
if (res.code == 200) {
|
||||
this.deviceInfo = res.data.device || {};
|
||||
if (this.deviceInfo.deviceLocation) {
|
||||
this.deviceLocation = this.deviceInfo.deviceLocation;
|
||||
deviceInfo.value = res.data.device || {};
|
||||
if (deviceInfo.value.deviceLocation) {
|
||||
deviceLocation.value = deviceInfo.value.deviceLocation;
|
||||
} else if (res.data.position && res.data.position.name) {
|
||||
this.deviceLocation = res.data.position.name;
|
||||
deviceLocation.value = res.data.position.name;
|
||||
}
|
||||
if (this.deviceInfo.depositAmount) {
|
||||
this.depositAmount = this.deviceInfo.depositAmount;
|
||||
}
|
||||
if (this.deviceInfo.status) {
|
||||
if (this.deviceInfo.status === "online") {
|
||||
this.deviceStatus = {
|
||||
text: "可使用",
|
||||
class: "available"
|
||||
};
|
||||
} else if (this.deviceInfo.status === "offline") {
|
||||
this.deviceStatus = {
|
||||
text: "离线",
|
||||
class: "offline"
|
||||
};
|
||||
if (deviceInfo.value.status) {
|
||||
if (deviceInfo.value.status === "online") {
|
||||
deviceStatus.text = "可使用";
|
||||
deviceStatus.class = "available";
|
||||
} else if (deviceInfo.value.status === "offline") {
|
||||
deviceStatus.text = "离线";
|
||||
deviceStatus.class = "offline";
|
||||
}
|
||||
}
|
||||
this.parseFeeConfig();
|
||||
}
|
||||
},
|
||||
// 显示登录提示
|
||||
showLoginTip() {
|
||||
};
|
||||
const showLoginTip = () => {
|
||||
common_vendor.index.showModal({
|
||||
title: "提示",
|
||||
content: "请先登录后再操作",
|
||||
@@ -84,23 +55,19 @@ const _sfc_main = {
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
selectPackage(index) {
|
||||
this.selectedPackage = index;
|
||||
},
|
||||
// 检查订单状态
|
||||
async checkOrderStatus() {
|
||||
};
|
||||
const checkOrderStatus = async () => {
|
||||
try {
|
||||
const result = await this.$api.checkActiveOrder();
|
||||
const result = await common_vendor.index.$api.checkActiveOrder();
|
||||
if (result.hasOrder) {
|
||||
const order = result.order;
|
||||
if (order.status === "waiting_for_payment") {
|
||||
common_vendor.index.redirectTo({
|
||||
url: `/pages/order/payment?orderId=${order.orderId}&deviceId=${this.deviceId}`
|
||||
url: `/pages/order/payment?orderId=${order.orderId}&deviceId=${deviceId.value}`
|
||||
});
|
||||
} else if (order.status === "in_used") {
|
||||
common_vendor.index.redirectTo({
|
||||
url: `/pages/device/return?deviceId=${this.deviceId}`
|
||||
url: `/pages/device/return?deviceId=${deviceId.value}`
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -110,70 +77,42 @@ const _sfc_main = {
|
||||
icon: "none"
|
||||
});
|
||||
}
|
||||
},
|
||||
// 处理租借操作
|
||||
handleRent() {
|
||||
if (!this.isLoggedIn) {
|
||||
this.showLoginTip();
|
||||
};
|
||||
const handleRent = () => {
|
||||
if (!isLoggedIn.value) {
|
||||
showLoginTip();
|
||||
return;
|
||||
}
|
||||
if (!this.phoneNumber) {
|
||||
if (!phoneNumber.value) {
|
||||
common_vendor.index.showToast({
|
||||
title: "请输入手机号码",
|
||||
icon: "none"
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (!/^1[3-9]\d{9}$/.test(this.phoneNumber)) {
|
||||
if (!/^1[3-9]\d{9}$/.test(phoneNumber.value)) {
|
||||
common_vendor.index.showToast({
|
||||
title: "请输入正确的手机号码",
|
||||
icon: "none"
|
||||
});
|
||||
return;
|
||||
}
|
||||
this.submitRentOrder();
|
||||
},
|
||||
// 提交租借订单
|
||||
async submitRentOrder() {
|
||||
submitRentOrder();
|
||||
};
|
||||
const submitRentOrder = async () => {
|
||||
try {
|
||||
common_vendor.index.showLoading({
|
||||
title: "处理中"
|
||||
});
|
||||
const selectedPkg = this.packages[this.selectedPackage];
|
||||
const rentResult = await config_user.rentPowerBank(this.deviceId, this.phoneNumber);
|
||||
const rentResult = await config_user.rentPowerBank(deviceId.value, phoneNumber.value);
|
||||
if (rentResult.code !== 200) {
|
||||
throw new Error(rentResult.msg || "设备租借失败");
|
||||
}
|
||||
const order = rentResult.data;
|
||||
try {
|
||||
let packageTimeMinutes = 0;
|
||||
if (selectedPkg.time.includes("小时")) {
|
||||
packageTimeMinutes = parseInt(selectedPkg.time) * 60;
|
||||
} else if (selectedPkg.time.includes("分钟")) {
|
||||
packageTimeMinutes = parseInt(selectedPkg.time);
|
||||
} else {
|
||||
packageTimeMinutes = parseInt(selectedPkg.time) * 60;
|
||||
}
|
||||
const updateRes = await config_user.updateOrderPackage({
|
||||
orderId: order.orderId,
|
||||
packageTime: packageTimeMinutes,
|
||||
packagePrice: parseFloat(selectedPkg.price)
|
||||
});
|
||||
if (updateRes.code !== 200) {
|
||||
common_vendor.index.__f__("warn", "at pages/device/detail.vue:292", "更新订单套餐信息失败:", updateRes.msg);
|
||||
} else {
|
||||
common_vendor.index.__f__("log", "at pages/device/detail.vue:295", "订单套餐信息已提前更新");
|
||||
}
|
||||
} catch (updateError) {
|
||||
common_vendor.index.__f__("error", "at pages/device/detail.vue:298", "更新订单套餐信息时出错:", updateError);
|
||||
}
|
||||
const deposit = parseFloat(this.depositAmount);
|
||||
const packagePrice = parseFloat(selectedPkg.price);
|
||||
const totalAmount = (deposit + packagePrice).toFixed(2);
|
||||
const res = await config_user.getOrderByOrderNoScore(order.orderNo);
|
||||
common_vendor.index.__f__("log", "at pages/device/detail.vue:282", res);
|
||||
common_vendor.index.hideLoading();
|
||||
common_vendor.index.redirectTo({
|
||||
url: `/pages/order/payment?orderId=${order.orderId}&packageTimeHours=${selectedPkg.time.replace("小时", "")}&packagePrice=${selectedPkg.price}&totalAmount=${totalAmount}&depositAmount=${this.depositAmount}${this.deviceInfo && this.deviceInfo.feeConfig ? "&feeConfig=" + encodeURIComponent(this.deviceInfo.feeConfig) : ""}`
|
||||
});
|
||||
common_vendor.index.__f__("log", "at pages/device/detail.vue:291", order);
|
||||
} catch (error) {
|
||||
common_vendor.index.hideLoading();
|
||||
common_vendor.index.showToast({
|
||||
@@ -181,170 +120,30 @@ const _sfc_main = {
|
||||
icon: "none"
|
||||
});
|
||||
}
|
||||
},
|
||||
// 单独抽取解析feeConfig的逻辑
|
||||
parseFeeConfig() {
|
||||
if (this.deviceInfo.feeConfig) {
|
||||
try {
|
||||
const feeConfig = JSON.parse(this.deviceInfo.feeConfig);
|
||||
if (feeConfig.length > 0 && "hour" in feeConfig[0] && "timesPrice" in feeConfig[0]) {
|
||||
this.packages = feeConfig.map((pkg) => {
|
||||
const hour = pkg.hour;
|
||||
const price = pkg.timesPrice;
|
||||
const unitPrice = (price / hour).toFixed(2);
|
||||
return {
|
||||
time: `${hour}小时`,
|
||||
price: price.toFixed(2),
|
||||
unitPrice,
|
||||
hour
|
||||
// 添加小时信息,用于后续处理
|
||||
};
|
||||
});
|
||||
this.packages.sort((a, b) => a.hour - b.hour);
|
||||
} else {
|
||||
const commonConfig = feeConfig.find((item) => item.specCode === "common") || feeConfig[0];
|
||||
if (commonConfig) {
|
||||
if (this.deviceInfo.feeType === "hour") {
|
||||
const hourPrice = commonConfig.hourPrice > 0 ? commonConfig.hourPrice : commonConfig.timesPrice / 6;
|
||||
this.packages = [
|
||||
{
|
||||
time: "1小时",
|
||||
price: hourPrice.toFixed(2),
|
||||
unitPrice: hourPrice.toFixed(2),
|
||||
hour: 1
|
||||
},
|
||||
{
|
||||
time: "6小时",
|
||||
price: (hourPrice * 6).toFixed(2),
|
||||
unitPrice: hourPrice.toFixed(2),
|
||||
hour: 6
|
||||
},
|
||||
{
|
||||
time: "12小时",
|
||||
price: (hourPrice * 12).toFixed(2),
|
||||
unitPrice: hourPrice.toFixed(2),
|
||||
hour: 12
|
||||
}
|
||||
];
|
||||
} else if (this.deviceInfo.feeType === "times") {
|
||||
const timesPrice = commonConfig.timesPrice;
|
||||
this.packages = [
|
||||
{
|
||||
time: "1次",
|
||||
price: timesPrice.toFixed(2),
|
||||
unitPrice: timesPrice.toFixed(2),
|
||||
hour: 1
|
||||
}
|
||||
];
|
||||
} else {
|
||||
this.packages = [
|
||||
{
|
||||
time: "1小时",
|
||||
price: "2.00",
|
||||
unitPrice: "2.00",
|
||||
hour: 1
|
||||
},
|
||||
{
|
||||
time: "6小时",
|
||||
price: "10.00",
|
||||
unitPrice: "1.67",
|
||||
hour: 6
|
||||
},
|
||||
{
|
||||
time: "12小时",
|
||||
price: "15.00",
|
||||
unitPrice: "1.25",
|
||||
hour: 12
|
||||
}
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
this.selectedPackage = Math.min(1, this.packages.length - 1);
|
||||
} catch (e) {
|
||||
common_vendor.index.__f__("error", "at pages/device/detail.vue:419", "解析设备费用配置失败:", e);
|
||||
this.packages = [
|
||||
{
|
||||
time: "1小时",
|
||||
price: "2.00",
|
||||
unitPrice: "2.00",
|
||||
hour: 1
|
||||
},
|
||||
{
|
||||
time: "6小时",
|
||||
price: "10.00",
|
||||
unitPrice: "1.67",
|
||||
hour: 6
|
||||
},
|
||||
{
|
||||
time: "12小时",
|
||||
price: "15.00",
|
||||
unitPrice: "1.25",
|
||||
hour: 12
|
||||
}
|
||||
];
|
||||
this.selectedPackage = 1;
|
||||
}
|
||||
} else {
|
||||
this.packages = [
|
||||
{
|
||||
time: "1小时",
|
||||
price: "2.00",
|
||||
unitPrice: "2.00",
|
||||
hour: 1
|
||||
},
|
||||
{
|
||||
time: "6小时",
|
||||
price: "10.00",
|
||||
unitPrice: "1.67",
|
||||
hour: 6
|
||||
},
|
||||
{
|
||||
time: "12小时",
|
||||
price: "15.00",
|
||||
unitPrice: "1.25",
|
||||
hour: 12
|
||||
}
|
||||
];
|
||||
this.selectedPackage = 1;
|
||||
}
|
||||
}
|
||||
};
|
||||
return (_ctx, _cache) => {
|
||||
return common_vendor.e({
|
||||
a: common_vendor.t(deviceStatus.text),
|
||||
b: common_vendor.n(deviceStatus.class),
|
||||
c: common_vendor.t(deviceId.value),
|
||||
d: common_assets._imports_0$2,
|
||||
e: common_vendor.t(deviceLocation.value),
|
||||
f: common_assets._imports_1$2,
|
||||
g: batteryLevel.value < 20 ? 1 : "",
|
||||
h: common_vendor.t(batteryLevel.value),
|
||||
i: !hasActiveOrder.value
|
||||
}, !hasActiveOrder.value ? {
|
||||
j: phoneNumber.value,
|
||||
k: common_vendor.o(($event) => phoneNumber.value = $event.detail.value)
|
||||
} : {}, {
|
||||
l: common_assets._imports_2$1,
|
||||
m: common_vendor.t(hasActiveOrder.value ? "归还设备" : "免押金租借"),
|
||||
n: hasActiveOrder.value ? 1 : "",
|
||||
o: common_vendor.o(handleRent)
|
||||
});
|
||||
};
|
||||
}
|
||||
};
|
||||
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
return common_vendor.e({
|
||||
a: common_vendor.t($data.deviceId),
|
||||
b: common_vendor.t($data.deviceStatus.text),
|
||||
c: common_vendor.n($data.deviceStatus.class),
|
||||
d: common_vendor.t($data.deviceLocation),
|
||||
e: common_vendor.t($data.batteryLevel),
|
||||
f: !$data.hasActiveOrder
|
||||
}, !$data.hasActiveOrder ? {
|
||||
g: common_vendor.f($data.packages, (pkg, index, i0) => {
|
||||
return {
|
||||
a: common_vendor.t(pkg.time),
|
||||
b: common_vendor.t(pkg.price),
|
||||
c: common_vendor.t(pkg.unitPrice),
|
||||
d: index,
|
||||
e: $data.selectedPackage === index ? 1 : "",
|
||||
f: common_vendor.o(($event) => $options.selectPackage(index), index)
|
||||
};
|
||||
})
|
||||
} : {}, {
|
||||
h: !$data.hasActiveOrder
|
||||
}, !$data.hasActiveOrder ? {
|
||||
i: $data.phoneNumber,
|
||||
j: common_vendor.o(($event) => $data.phoneNumber = $event.detail.value)
|
||||
} : {}, {
|
||||
k: !$data.hasActiveOrder
|
||||
}, !$data.hasActiveOrder ? {
|
||||
l: common_vendor.t($data.depositAmount)
|
||||
} : {}, {
|
||||
m: common_vendor.t($data.hasActiveOrder ? "归还设备" : "立即租借"),
|
||||
n: common_vendor.n($data.hasActiveOrder ? "return" : "rent"),
|
||||
o: common_vendor.o((...args) => $options.handleRent && $options.handleRent(...args))
|
||||
});
|
||||
}
|
||||
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-d65de3a7"]]);
|
||||
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-d65de3a7"]]);
|
||||
wx.createPage(MiniProgramPage);
|
||||
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/device/detail.js.map
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
<view class="detail-container data-v-d65de3a7"><view class="device-card data-v-d65de3a7"><view class="device-header data-v-d65de3a7"><view class="device-title data-v-d65de3a7"><text class="name data-v-d65de3a7">共享风扇</text><text class="id data-v-d65de3a7">设备号:{{a}}</text></view><view class="{{['status', 'data-v-d65de3a7', c]}}">{{b}}</view></view><view class="device-info data-v-d65de3a7"><view class="info-item data-v-d65de3a7"><text class="label data-v-d65de3a7">设备位置</text><text class="value data-v-d65de3a7">{{d}}</text></view><view class="info-item data-v-d65de3a7"><text class="label data-v-d65de3a7">电池电量</text><text class="value data-v-d65de3a7">{{e}}%</text></view></view></view><view wx:if="{{f}}" class="package-section data-v-d65de3a7"><view class="section-title data-v-d65de3a7">选择套餐</view><view class="package-list data-v-d65de3a7"><view wx:for="{{g}}" wx:for-item="pkg" wx:key="d" class="{{['package-item', 'data-v-d65de3a7', pkg.e && 'active']}}" bindtap="{{pkg.f}}"><view class="package-content data-v-d65de3a7"><text class="time data-v-d65de3a7">{{pkg.a}}</text><text class="price data-v-d65de3a7">¥{{pkg.b}}</text></view><text class="unit-price data-v-d65de3a7">约{{pkg.c}}元/小时</text></view></view></view><view wx:if="{{h}}" class="phone-section data-v-d65de3a7"><view class="section-title data-v-d65de3a7">联系方式</view><view class="phone-input-wrap data-v-d65de3a7"><input type="number" class="phone-input data-v-d65de3a7" maxlength="11" placeholder="请输入手机号码" value="{{i}}" bindinput="{{j}}"/></view></view><view class="notice-section data-v-d65de3a7"><view class="section-title data-v-d65de3a7">使用说明</view><view class="notice-list data-v-d65de3a7"><view class="notice-item data-v-d65de3a7"><view class="dot data-v-d65de3a7"></view><text class="data-v-d65de3a7">请在使用前检查设备是否完好</text></view><view class="notice-item data-v-d65de3a7"><view class="dot data-v-d65de3a7"></view><text class="data-v-d65de3a7">超出使用时间将自动按小时计费</text></view><view class="notice-item data-v-d65de3a7"><view class="dot data-v-d65de3a7"></view><text class="data-v-d65de3a7">请在指定区域内使用设备</text></view></view></view><view class="bottom-bar data-v-d65de3a7"><view wx:if="{{k}}" class="price-info data-v-d65de3a7"><text class="deposit-text data-v-d65de3a7">押金:</text><text class="deposit-amount data-v-d65de3a7">¥{{l}}</text></view><button class="{{['action-btn', 'data-v-d65de3a7', n]}}" bindtap="{{o}}">{{m}}</button></view></view>
|
||||
<view class="container data-v-d65de3a7"><view class="device-header data-v-d65de3a7"><view class="{{['device-status-card', 'data-v-d65de3a7', b]}}"><view class="status-indicator data-v-d65de3a7"></view><text class="status-text data-v-d65de3a7">{{a}}</text></view><view class="device-title data-v-d65de3a7"><text class="name data-v-d65de3a7">共享风扇</text><view class="device-meta data-v-d65de3a7"><text class="id-label data-v-d65de3a7">设备号:</text><text class="id-value data-v-d65de3a7">{{c}}</text></view></view></view><view class="card device-info-card data-v-d65de3a7"><view class="card-row data-v-d65de3a7"><view class="card-item data-v-d65de3a7"><view class="item-icon location-icon data-v-d65de3a7"><image class="data-v-d65de3a7" src="{{d}}" mode="aspectFill" style="width:45rpx;height:45rpx"></image></view><view class="item-content data-v-d65de3a7"><text class="item-label data-v-d65de3a7">当前位置</text><text class="item-value data-v-d65de3a7">{{e}}</text></view></view><view class="card-item data-v-d65de3a7"><view class="{{['item-icon', 'battery-icon', 'data-v-d65de3a7', g && 'battery-low']}}"><image class="data-v-d65de3a7" src="{{f}}" mode="aspectFill" style="width:45rpx;height:45rpx"></image></view><view class="item-content data-v-d65de3a7"><text class="item-label data-v-d65de3a7">电池电量</text><text class="item-value data-v-d65de3a7">{{h}}%</text></view></view></view></view><view class="card pricing-card data-v-d65de3a7"><view class="card-header data-v-d65de3a7"><text class="card-title data-v-d65de3a7">计费规则</text></view><view class="pricing-banner data-v-d65de3a7"><view class="pricing-main data-v-d65de3a7"><text class="price data-v-d65de3a7">¥5.00</text><text class="unit data-v-d65de3a7">/小时</text></view><text class="cap-price data-v-d65de3a7">封顶 ¥99</text></view><view class="pricing-rules data-v-d65de3a7"><view class="rule-item data-v-d65de3a7"><view class="rule-dot data-v-d65de3a7"></view><text class="rule-text data-v-d65de3a7">前15分钟内归还<text class="highlight data-v-d65de3a7">免费</text></text></view><view class="rule-item data-v-d65de3a7"><view class="rule-dot data-v-d65de3a7"></view><text class="rule-text data-v-d65de3a7">不足60分钟按60分钟计费</text></view><view class="rule-item data-v-d65de3a7"><view class="rule-dot data-v-d65de3a7"></view><text class="rule-text data-v-d65de3a7">持续计费至99元视为买断</text></view></view></view><view wx:if="{{i}}" class="card phone-card data-v-d65de3a7"><view class="card-header data-v-d65de3a7"><text class="card-title data-v-d65de3a7">联系方式</text></view><view class="phone-input-container data-v-d65de3a7"><view class="input-wrapper data-v-d65de3a7"><text class="prefix data-v-d65de3a7">+86</text><input type="number" class="phone-input data-v-d65de3a7" maxlength="11" placeholder="请输入手机号码" value="{{j}}" bindinput="{{k}}"/></view></view></view><view class="card notice-card data-v-d65de3a7"><view class="card-header data-v-d65de3a7"><text class="card-title data-v-d65de3a7">使用须知</text></view><view class="notice-items data-v-d65de3a7"><view class="notice-item data-v-d65de3a7"><view class="notice-dot data-v-d65de3a7"></view><text class="notice-text data-v-d65de3a7">请在使用前检查设备是否完好</text></view><view class="notice-item data-v-d65de3a7"><view class="notice-dot data-v-d65de3a7"></view><text class="notice-text data-v-d65de3a7">请在指定区域内使用设备</text></view><view class="notice-item data-v-d65de3a7"><view class="notice-dot data-v-d65de3a7"></view><text class="notice-text data-v-d65de3a7">归还时请确保设备完好,避免损坏</text></view></view></view><view class="footer data-v-d65de3a7"><view class="wechat-credit data-v-d65de3a7"><image src="{{l}}" mode="aspectFit" class="wx-icon data-v-d65de3a7"></image><view class="credit-text data-v-d65de3a7"><text class="data-v-d65de3a7">微信支付分</text><text class="credit-divider data-v-d65de3a7">|</text><text class="credit-score data-v-d65de3a7">支付分200分及以上优享</text></view></view><button class="{{['rent-button', 'data-v-d65de3a7', n && 'return-button']}}" bindtap="{{o}}"><text class="data-v-d65de3a7">{{m}}</text></button></view></view>
|
||||
+227
-170
@@ -23,225 +23,282 @@
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
.detail-container.data-v-d65de3a7 {
|
||||
.container.data-v-d65de3a7 {
|
||||
min-height: 100vh;
|
||||
background: #f8f8f8;
|
||||
padding: 30rpx;
|
||||
padding-bottom: 180rpx;
|
||||
background-color: #f5f7fa;
|
||||
padding: 30rpx 30rpx 240rpx;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.detail-container .device-card.data-v-d65de3a7 {
|
||||
background: #fff;
|
||||
border-radius: 24rpx;
|
||||
padding: 30rpx;
|
||||
margin-bottom: 30rpx;
|
||||
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.04);
|
||||
}
|
||||
.detail-container .device-card .device-header.data-v-d65de3a7 {
|
||||
.device-header.data-v-d65de3a7 {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
.detail-container .device-card .device-header .device-title .name.data-v-d65de3a7 {
|
||||
font-size: 36rpx;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
margin-right: 20rpx;
|
||||
.device-header .device-status-card.data-v-d65de3a7 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
.detail-container .device-card .device-header .device-title .id.data-v-d65de3a7 {
|
||||
font-size: 24rpx;
|
||||
.device-header .device-status-card .status-indicator.data-v-d65de3a7 {
|
||||
width: 20rpx;
|
||||
height: 20rpx;
|
||||
border-radius: 50%;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
.device-header .device-status-card.available .status-indicator.data-v-d65de3a7 {
|
||||
background-color: #10c469;
|
||||
box-shadow: 0 0 10rpx rgba(16, 196, 105, 0.5);
|
||||
}
|
||||
.device-header .device-status-card.available .status-text.data-v-d65de3a7 {
|
||||
color: #10c469;
|
||||
}
|
||||
.device-header .device-status-card.offline .status-indicator.data-v-d65de3a7 {
|
||||
background-color: #9a9a9a;
|
||||
}
|
||||
.device-header .device-status-card.offline .status-text.data-v-d65de3a7 {
|
||||
color: #9a9a9a;
|
||||
}
|
||||
.device-header .device-status-card .status-text.data-v-d65de3a7 {
|
||||
font-size: 28rpx;
|
||||
font-weight: 500;
|
||||
}
|
||||
.device-header .device-title .name.data-v-d65de3a7 {
|
||||
font-size: 48rpx;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
}
|
||||
.device-header .device-title .device-meta.data-v-d65de3a7 {
|
||||
margin-top: 10rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.device-header .device-title .device-meta .id-label.data-v-d65de3a7 {
|
||||
font-size: 26rpx;
|
||||
color: #999;
|
||||
}
|
||||
.detail-container .device-card .device-header .status.data-v-d65de3a7 {
|
||||
padding: 8rpx 24rpx;
|
||||
border-radius: 24rpx;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
.detail-container .device-card .device-header .status.available.data-v-d65de3a7 {
|
||||
background: #E8F5E9;
|
||||
color: #4CAF50;
|
||||
}
|
||||
.detail-container .device-card .device-header .status.in-use.data-v-d65de3a7 {
|
||||
background: #E3F2FD;
|
||||
color: #1976D2;
|
||||
}
|
||||
.detail-container .device-card .device-info .info-item.data-v-d65de3a7 {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 16rpx;
|
||||
}
|
||||
.detail-container .device-card .device-info .info-item.data-v-d65de3a7:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.detail-container .device-card .device-info .info-item .label.data-v-d65de3a7 {
|
||||
font-size: 28rpx;
|
||||
.device-header .device-title .device-meta .id-value.data-v-d65de3a7 {
|
||||
font-size: 26rpx;
|
||||
color: #666;
|
||||
}
|
||||
.detail-container .device-card .device-info .info-item .value.data-v-d65de3a7 {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
}
|
||||
.detail-container .package-section.data-v-d65de3a7 {
|
||||
background: #fff;
|
||||
.card.data-v-d65de3a7 {
|
||||
background-color: #fff;
|
||||
border-radius: 24rpx;
|
||||
box-shadow: 0 4rpx 24rpx rgba(0, 0, 0, 0.03);
|
||||
padding: 30rpx;
|
||||
margin-bottom: 30rpx;
|
||||
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.04);
|
||||
}
|
||||
.detail-container .package-section .section-title.data-v-d65de3a7 {
|
||||
.card .card-header.data-v-d65de3a7 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 24rpx;
|
||||
}
|
||||
.card .card-header .card-title.data-v-d65de3a7 {
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
margin-bottom: 24rpx;
|
||||
}
|
||||
.detail-container .package-section .package-list.data-v-d65de3a7 {
|
||||
.device-info-card .card-row.data-v-d65de3a7 {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.detail-container .package-section .package-list .package-item.data-v-d65de3a7 {
|
||||
flex: 1;
|
||||
margin: 0 10rpx;
|
||||
padding: 24rpx;
|
||||
background: #F5F5F5;
|
||||
border-radius: 16rpx;
|
||||
text-align: center;
|
||||
transition: all 0.3s;
|
||||
}
|
||||
.detail-container .package-section .package-list .package-item.data-v-d65de3a7:first-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
.detail-container .package-section .package-list .package-item.data-v-d65de3a7:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
.detail-container .package-section .package-list .package-item.active.data-v-d65de3a7 {
|
||||
background: #E3F2FD;
|
||||
border: 2rpx solid #1976D2;
|
||||
}
|
||||
.detail-container .package-section .package-list .package-item.active .package-content .time.data-v-d65de3a7,
|
||||
.detail-container .package-section .package-list .package-item.active .package-content .price.data-v-d65de3a7 {
|
||||
color: #1976D2;
|
||||
}
|
||||
.detail-container .package-section .package-list .package-item .package-content.data-v-d65de3a7 {
|
||||
margin-bottom: 8rpx;
|
||||
}
|
||||
.detail-container .package-section .package-list .package-item .package-content .time.data-v-d65de3a7 {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
margin-bottom: 8rpx;
|
||||
display: block;
|
||||
}
|
||||
.detail-container .package-section .package-list .package-item .package-content .price.data-v-d65de3a7 {
|
||||
font-size: 36rpx;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
}
|
||||
.detail-container .package-section .package-list .package-item .unit-price.data-v-d65de3a7 {
|
||||
font-size: 24rpx;
|
||||
color: #999;
|
||||
}
|
||||
.detail-container .phone-section.data-v-d65de3a7 {
|
||||
background: #fff;
|
||||
border-radius: 24rpx;
|
||||
padding: 30rpx;
|
||||
margin-bottom: 30rpx;
|
||||
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.04);
|
||||
}
|
||||
.detail-container .phone-section .section-title.data-v-d65de3a7 {
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
margin-bottom: 24rpx;
|
||||
}
|
||||
.detail-container .phone-section .phone-input-wrap .phone-input.data-v-d65de3a7 {
|
||||
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-d65de3a7::-webkit-input-placeholder {
|
||||
color: #999;
|
||||
}
|
||||
.detail-container .phone-section .phone-input-wrap .phone-input.data-v-d65de3a7::placeholder {
|
||||
color: #999;
|
||||
}
|
||||
.detail-container .notice-section.data-v-d65de3a7 {
|
||||
background: #fff;
|
||||
border-radius: 24rpx;
|
||||
padding: 30rpx;
|
||||
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.04);
|
||||
}
|
||||
.detail-container .notice-section .section-title.data-v-d65de3a7 {
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
margin-bottom: 24rpx;
|
||||
}
|
||||
.detail-container .notice-section .notice-list .notice-item.data-v-d65de3a7 {
|
||||
.device-info-card .card-item.data-v-d65de3a7 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 16rpx;
|
||||
flex: 1;
|
||||
}
|
||||
.detail-container .notice-section .notice-list .notice-item.data-v-d65de3a7:last-child {
|
||||
.device-info-card .card-item .item-icon.data-v-d65de3a7 {
|
||||
width: 60rpx;
|
||||
height: 60rpx;
|
||||
border-radius: 12rpx;
|
||||
margin-right: 20rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 30rpx;
|
||||
color: #fff;
|
||||
}
|
||||
.device-info-card .card-item .item-icon.location-icon.data-v-d65de3a7 {
|
||||
background: linear-gradient(135deg, #40c9ff, #32a5ff);
|
||||
}
|
||||
.device-info-card .card-item .item-icon.battery-icon.data-v-d65de3a7 {
|
||||
background: linear-gradient(135deg, #33db92, #10c469);
|
||||
}
|
||||
.device-info-card .card-item .item-icon.battery-icon.battery-low.data-v-d65de3a7 {
|
||||
background: linear-gradient(135deg, #ff7676, #f54f4f);
|
||||
}
|
||||
.device-info-card .card-item .item-content.data-v-d65de3a7 {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.device-info-card .card-item .item-content .item-label.data-v-d65de3a7 {
|
||||
font-size: 26rpx;
|
||||
color: #999;
|
||||
margin-bottom: 4rpx;
|
||||
}
|
||||
.device-info-card .card-item .item-content .item-value.data-v-d65de3a7 {
|
||||
font-size: 30rpx;
|
||||
color: #333;
|
||||
font-weight: 500;
|
||||
}
|
||||
.pricing-card .pricing-banner.data-v-d65de3a7 {
|
||||
background: linear-gradient(to right, #f8f9ff, #e8f0ff);
|
||||
border-radius: 16rpx;
|
||||
padding: 30rpx;
|
||||
margin-bottom: 30rpx;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
.pricing-card .pricing-banner .pricing-main.data-v-d65de3a7 {
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
}
|
||||
.pricing-card .pricing-banner .pricing-main .price.data-v-d65de3a7 {
|
||||
font-size: 60rpx;
|
||||
font-weight: bold;
|
||||
color: #ff6b6b;
|
||||
}
|
||||
.pricing-card .pricing-banner .pricing-main .unit.data-v-d65de3a7 {
|
||||
font-size: 28rpx;
|
||||
color: #999;
|
||||
margin-left: 4rpx;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
.pricing-card .pricing-banner .cap-price.data-v-d65de3a7 {
|
||||
margin-top: 10rpx;
|
||||
font-size: 26rpx;
|
||||
color: #666;
|
||||
background-color: rgba(255, 107, 107, 0.1);
|
||||
padding: 6rpx 20rpx;
|
||||
border-radius: 20rpx;
|
||||
}
|
||||
.pricing-card .pricing-rules .rule-item.data-v-d65de3a7 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
.pricing-card .pricing-rules .rule-item.data-v-d65de3a7:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.detail-container .notice-section .notice-list .notice-item .dot.data-v-d65de3a7 {
|
||||
width: 12rpx;
|
||||
height: 12rpx;
|
||||
background: #1976D2;
|
||||
.pricing-card .pricing-rules .rule-item .rule-dot.data-v-d65de3a7 {
|
||||
width: 10rpx;
|
||||
height: 10rpx;
|
||||
border-radius: 50%;
|
||||
background-color: #ff6b6b;
|
||||
margin-right: 16rpx;
|
||||
}
|
||||
.detail-container .notice-section .notice-list .notice-item text.data-v-d65de3a7 {
|
||||
.pricing-card .pricing-rules .rule-item .rule-text.data-v-d65de3a7 {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.detail-container .bottom-bar.data-v-d65de3a7 {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: #fff;
|
||||
padding: 20rpx 30rpx;
|
||||
padding-bottom: calc(20rpx + env(safe-area-inset-bottom));
|
||||
.pricing-card .pricing-rules .rule-item .rule-text .highlight.data-v-d65de3a7 {
|
||||
color: #ff6b6b;
|
||||
font-weight: bold;
|
||||
}
|
||||
.phone-card .phone-input-container .input-wrapper.data-v-d65de3a7 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
box-shadow: 0 -4rpx 16rpx rgba(0, 0, 0, 0.04);
|
||||
height: 88rpx;
|
||||
background-color: #f5f7fa;
|
||||
border-radius: 16rpx;
|
||||
padding: 0 24rpx;
|
||||
}
|
||||
.detail-container .bottom-bar .price-info .deposit-text.data-v-d65de3a7 {
|
||||
.phone-card .phone-input-container .input-wrapper .prefix.data-v-d65de3a7 {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
margin-right: 16rpx;
|
||||
padding-right: 16rpx;
|
||||
border-right: 1px solid #e0e0e0;
|
||||
}
|
||||
.detail-container .bottom-bar .price-info .deposit-amount.data-v-d65de3a7 {
|
||||
font-size: 36rpx;
|
||||
font-weight: 600;
|
||||
color: #FF9800;
|
||||
}
|
||||
.detail-container .bottom-bar .action-btn.data-v-d65de3a7 {
|
||||
.phone-card .phone-input-container .input-wrapper .phone-input.data-v-d65de3a7 {
|
||||
flex: 1;
|
||||
margin-left: 30rpx;
|
||||
height: 88rpx;
|
||||
border-radius: 44rpx;
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
padding-left: 10rpx;
|
||||
}
|
||||
.phone-card .phone-input-container .phone-tip.data-v-d65de3a7 {
|
||||
font-size: 24rpx;
|
||||
color: #999;
|
||||
margin-top: 16rpx;
|
||||
display: block;
|
||||
}
|
||||
.notice-card .notice-items .notice-item.data-v-d65de3a7 {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
margin-bottom: 16rpx;
|
||||
}
|
||||
.notice-card .notice-items .notice-item.data-v-d65de3a7:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.notice-card .notice-items .notice-item .notice-dot.data-v-d65de3a7 {
|
||||
width: 10rpx;
|
||||
height: 10rpx;
|
||||
border-radius: 50%;
|
||||
background-color: #32a5ff;
|
||||
margin-right: 16rpx;
|
||||
margin-top: 12rpx;
|
||||
}
|
||||
.notice-card .notice-items .notice-item .notice-text.data-v-d65de3a7 {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.footer.data-v-d65de3a7 {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
background-color: #fff;
|
||||
padding: 20rpx 30rpx;
|
||||
padding-bottom: calc(20rpx + env(safe-area-inset-bottom));
|
||||
box-shadow: 0 -2rpx 20rpx rgba(0, 0, 0, 0.05);
|
||||
z-index: 100;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
--footer-height: 180rpx;
|
||||
}
|
||||
.footer .wechat-credit.data-v-d65de3a7 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
.footer .wechat-credit .wx-icon.data-v-d65de3a7 {
|
||||
width: 50rpx;
|
||||
height: 40rpx;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
.footer .wechat-credit .credit-text.data-v-d65de3a7 {
|
||||
font-size: 24rpx;
|
||||
color: #07c160;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.footer .wechat-credit .credit-text .credit-divider.data-v-d65de3a7 {
|
||||
margin: 0 10rpx;
|
||||
}
|
||||
.footer .wechat-credit .credit-text .credit-score.data-v-d65de3a7 {
|
||||
font-weight: 500;
|
||||
}
|
||||
.footer .rent-button.data-v-d65de3a7 {
|
||||
height: 92rpx;
|
||||
border-radius: 46rpx;
|
||||
background: linear-gradient(135deg, #07c160, #10d673);
|
||||
color: #fff;
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border: none;
|
||||
width: 90%;
|
||||
}
|
||||
.detail-container .bottom-bar .action-btn.rent.data-v-d65de3a7 {
|
||||
background: linear-gradient(135deg, #1976D2, #42A5F5);
|
||||
color: #fff;
|
||||
}
|
||||
.detail-container .bottom-bar .action-btn.return.data-v-d65de3a7 {
|
||||
.footer .rent-button.return-button.data-v-d65de3a7 {
|
||||
background: linear-gradient(135deg, #FF9800, #FFB74D);
|
||||
color: #fff;
|
||||
}
|
||||
.detail-container .bottom-bar .action-btn.data-v-d65de3a7:active {
|
||||
.footer .rent-button.data-v-d65de3a7:active {
|
||||
transform: scale(0.98);
|
||||
opacity: 0.9;
|
||||
}
|
||||
+16
-14
@@ -14,9 +14,10 @@ const _sfc_main = {
|
||||
fail: reject
|
||||
});
|
||||
});
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:125", scanResult.path);
|
||||
let deviceNo = util_index.getQueryString(scanResult.path, "deviceNo");
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:68", "扫码路径:", scanResult.path);
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:69", "解析到的设备号:", deviceNo);
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:128", "扫码路径:", scanResult.path);
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:129", "解析到的设备号:", deviceNo);
|
||||
if (!deviceNo) {
|
||||
common_vendor.index.showToast({
|
||||
title: "无效的设备二维码",
|
||||
@@ -35,14 +36,14 @@ const _sfc_main = {
|
||||
"Clientid": common_vendor.index.getStorageSync("client_id")
|
||||
}
|
||||
});
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:94", "使用中订单检查结果:", JSON.stringify(inUseRes));
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:154", "使用中订单检查结果:", 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:99", "检测到使用中订单,准备跳转:", inUseOrder);
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:159", "检测到使用中订单,准备跳转:", 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:105", "已发起页面跳转");
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:165", "已发起页面跳转");
|
||||
return;
|
||||
}
|
||||
const orderRes = await common_vendor.index.request({
|
||||
@@ -53,28 +54,28 @@ const _sfc_main = {
|
||||
"Clientid": common_vendor.index.getStorageSync("client_id")
|
||||
}
|
||||
});
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:119", "待支付订单检查结果:", JSON.stringify(orderRes));
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:179", "待支付订单检查结果:", 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:124", "检测到待支付订单,准备跳转:", unpaidOrder);
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:184", "检测到待支付订单,准备跳转:", unpaidOrder);
|
||||
common_vendor.index.navigateTo({
|
||||
url: `/pages/order/payment?orderId=${unpaidOrder.orderId}`
|
||||
});
|
||||
} else {
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:130", "无待支付订单,获取设备信息, deviceNo:", deviceNo);
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:190", "无待支付订单,获取设备信息, deviceNo:", deviceNo);
|
||||
try {
|
||||
const deviceInfoRes = await config_user.getDeviceInfo(deviceNo);
|
||||
if (deviceInfoRes.code == 200 && deviceInfoRes.data && deviceInfoRes.data.device) {
|
||||
const deviceInfo = deviceInfoRes.data.device;
|
||||
if (deviceInfo.feeConfig) {
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:141", "获取到设备feeConfig信息:", deviceInfo.feeConfig);
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:201", "获取到设备feeConfig信息:", deviceInfo.feeConfig);
|
||||
try {
|
||||
const feeConfig = JSON.parse(deviceInfo.feeConfig);
|
||||
common_vendor.index.navigateTo({
|
||||
url: `/pages/device/detail?deviceNo=${deviceNo}&feeConfig=${encodeURIComponent(deviceInfo.feeConfig)}`
|
||||
});
|
||||
} catch (e) {
|
||||
common_vendor.index.__f__("error", "at pages/index/index.vue:152", "解析feeConfig失败:", e);
|
||||
common_vendor.index.__f__("error", "at pages/index/index.vue:212", "解析feeConfig失败:", e);
|
||||
common_vendor.index.navigateTo({
|
||||
url: `/pages/device/detail?deviceNo=${deviceNo}`
|
||||
});
|
||||
@@ -85,7 +86,7 @@ const _sfc_main = {
|
||||
});
|
||||
}
|
||||
} else {
|
||||
common_vendor.index.__f__("error", "at pages/index/index.vue:166", "获取设备信息失败:", deviceInfoRes.msg || "未知错误");
|
||||
common_vendor.index.__f__("error", "at pages/index/index.vue:226", "获取设备信息失败:", deviceInfoRes.msg || "未知错误");
|
||||
common_vendor.index.showToast({
|
||||
title: "获取设备信息失败",
|
||||
icon: "none"
|
||||
@@ -95,7 +96,7 @@ const _sfc_main = {
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
common_vendor.index.__f__("error", "at pages/index/index.vue:178", "获取设备信息异常:", error);
|
||||
common_vendor.index.__f__("error", "at pages/index/index.vue:238", "获取设备信息异常:", error);
|
||||
common_vendor.index.showToast({
|
||||
title: "获取设备信息失败",
|
||||
icon: "none"
|
||||
@@ -106,7 +107,7 @@ const _sfc_main = {
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
common_vendor.index.__f__("error", "at pages/index/index.vue:191", "扫码处理失败:", error);
|
||||
common_vendor.index.__f__("error", "at pages/index/index.vue:251", "扫码处理失败:", error);
|
||||
common_vendor.index.showToast({
|
||||
title: "扫码失败",
|
||||
icon: "none"
|
||||
@@ -118,7 +119,8 @@ const _sfc_main = {
|
||||
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
return {
|
||||
a: common_assets._imports_0,
|
||||
b: common_vendor.o((...args) => $options.handleScan && $options.handleScan(...args))
|
||||
b: common_assets._imports_1,
|
||||
c: common_vendor.o((...args) => $options.handleScan && $options.handleScan(...args))
|
||||
};
|
||||
}
|
||||
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-1cf27b2a"]]);
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
<view class="container data-v-1cf27b2a"><view class="banner data-v-1cf27b2a"><view class="temp-banner data-v-1cf27b2a"><text class="banner-text data-v-1cf27b2a">共享风扇</text><text class="banner-subtitle data-v-1cf27b2a">让清凉随身携带</text><view class="banner-bg data-v-1cf27b2a"></view></view></view><view class="scan-area data-v-1cf27b2a"><view class="scan-btn data-v-1cf27b2a" bindtap="{{b}}"><view class="btn-content data-v-1cf27b2a"><image class="btn-icon data-v-1cf27b2a" src="{{a}}" mode="aspectFit"/><text class="btn-text data-v-1cf27b2a">扫一扫</text></view><text class="btn-desc data-v-1cf27b2a">扫描设备二维码使用或归还</text></view></view><view class="tips-section data-v-1cf27b2a"><view class="tips-header data-v-1cf27b2a"><view class="tips-title data-v-1cf27b2a">使用小贴士</view></view><view class="tips-list data-v-1cf27b2a"><view class="tip-item data-v-1cf27b2a"><view class="tip-dot data-v-1cf27b2a"></view><text class="data-v-1cf27b2a">租借时间:每次最长可租借12小时</text></view><view class="tip-item data-v-1cf27b2a"><view class="tip-dot data-v-1cf27b2a"></view><text class="data-v-1cf27b2a">押金说明:租借需支付99元押金,归还后自动退还</text></view><view class="tip-item data-v-1cf27b2a"><view class="tip-dot data-v-1cf27b2a"></view><text class="data-v-1cf27b2a">收费标准:2元/小时,不足1小时按1小时计算</text></view><view class="tip-item data-v-1cf27b2a"><view class="tip-dot data-v-1cf27b2a"></view><text class="data-v-1cf27b2a">爱护提示:请勿将设备带离指定区域,保持设备清洁</text></view></view></view></view>
|
||||
<view class="container data-v-1cf27b2a"><view class="header data-v-1cf27b2a"><view class="header-bg data-v-1cf27b2a"><view class="circle-decoration circle-1 data-v-1cf27b2a"></view><view class="circle-decoration circle-2 data-v-1cf27b2a"></view><view class="wave-decoration data-v-1cf27b2a"></view></view><view class="header-content data-v-1cf27b2a"><view class="brand-area data-v-1cf27b2a"><image class="brand-logo data-v-1cf27b2a" src="{{a}}" mode="aspectFit"></image><view class="brand-text data-v-1cf27b2a"><text class="title data-v-1cf27b2a">共享风扇</text><text class="subtitle data-v-1cf27b2a">随时随地,享受清凉</text></view></view><view class="header-info data-v-1cf27b2a"><view class="service-tag data-v-1cf27b2a"><text class="data-v-1cf27b2a">便捷租赁</text><text class="dot data-v-1cf27b2a">·</text><text class="data-v-1cf27b2a">品质保障</text></view></view></view></view><view class="scan-section data-v-1cf27b2a"><view class="scan-card data-v-1cf27b2a"><view class="scan-btn data-v-1cf27b2a" bindtap="{{c}}"><image class="scan-icon data-v-1cf27b2a" src="{{b}}" mode="aspectFit"/><text class="scan-text data-v-1cf27b2a">扫码使用</text></view><view class="scan-desc data-v-1cf27b2a"><text class="data-v-1cf27b2a">扫描设备二维码即可使用或归还</text></view></view></view><view class="price-card data-v-1cf27b2a"><view class="card-header data-v-1cf27b2a"><text class="card-title data-v-1cf27b2a">收费规则</text></view><view class="price-rules data-v-1cf27b2a"><view class="price-item data-v-1cf27b2a"><view class="price-tag data-v-1cf27b2a">5.0<text class="unit data-v-1cf27b2a">元/小时</text></view></view><view class="divider data-v-1cf27b2a"></view><view class="rule-list data-v-1cf27b2a"><view class="rule-item data-v-1cf27b2a"><view class="rule-dot data-v-1cf27b2a"></view><text class="data-v-1cf27b2a">15分钟内归还免费</text></view><view class="rule-item data-v-1cf27b2a"><view class="rule-dot data-v-1cf27b2a"></view><text class="data-v-1cf27b2a">不足1小时按1小时计费</text></view><view class="rule-item data-v-1cf27b2a"><view class="rule-dot data-v-1cf27b2a"></view><text class="data-v-1cf27b2a">封顶99元,计费达99元视为买断</text></view></view></view></view><view class="usage-steps data-v-1cf27b2a"><view class="steps-header data-v-1cf27b2a"><text class="steps-title data-v-1cf27b2a">使用流程</text></view><view class="steps-container data-v-1cf27b2a"><view class="step-item data-v-1cf27b2a"><view class="step-icon data-v-1cf27b2a"><text class="step-number data-v-1cf27b2a">1</text></view><text class="step-text data-v-1cf27b2a">扫码开锁</text></view><view class="step-arrow data-v-1cf27b2a"></view><view class="step-item data-v-1cf27b2a"><view class="step-icon data-v-1cf27b2a"><text class="step-number data-v-1cf27b2a">2</text></view><text class="step-text data-v-1cf27b2a">使用风扇</text></view><view class="step-arrow data-v-1cf27b2a"></view><view class="step-item data-v-1cf27b2a"><view class="step-icon data-v-1cf27b2a"><text class="step-number data-v-1cf27b2a">3</text></view><text class="step-text data-v-1cf27b2a">归还结算</text></view></view></view></view>
|
||||
+281
-119
@@ -24,171 +24,333 @@
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
.container.data-v-1cf27b2a {
|
||||
height: 87.5vh;
|
||||
background: #f8f8f8;
|
||||
min-height: 100vh;
|
||||
background-color: #f6f7fb;
|
||||
padding-bottom: 40rpx;
|
||||
}
|
||||
.container .banner.data-v-1cf27b2a {
|
||||
padding: 30rpx;
|
||||
}
|
||||
.container .banner .temp-banner.data-v-1cf27b2a {
|
||||
|
||||
/* 顶部区域 */
|
||||
.header.data-v-1cf27b2a {
|
||||
height: 300rpx;
|
||||
background: linear-gradient(135deg, #1976D2, #42A5F5);
|
||||
border-radius: 30rpx;
|
||||
background: linear-gradient(135deg, #1E88E5, #29B6F6);
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
color: #fff;
|
||||
box-shadow: 0 8rpx 32rpx rgba(25, 118, 210, 0.2);
|
||||
}
|
||||
.container .banner .temp-banner .banner-text.data-v-1cf27b2a {
|
||||
font-size: 56rpx;
|
||||
font-weight: bold;
|
||||
margin-bottom: 20rpx;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.container .banner .temp-banner .banner-subtitle.data-v-1cf27b2a {
|
||||
font-size: 32rpx;
|
||||
opacity: 0.95;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.container .banner .temp-banner .banner-bg.data-v-1cf27b2a {
|
||||
.header .header-bg.data-v-1cf27b2a {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 1;
|
||||
}
|
||||
.header .header-bg .circle-decoration.data-v-1cf27b2a {
|
||||
position: absolute;
|
||||
right: -60rpx;
|
||||
bottom: -60rpx;
|
||||
width: 300rpx;
|
||||
height: 300rpx;
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
border-radius: 50%;
|
||||
transform: rotate(-15deg);
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.container .banner .temp-banner.data-v-1cf27b2a::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: -80rpx;
|
||||
top: -80rpx;
|
||||
.header .header-bg .circle-1.data-v-1cf27b2a {
|
||||
width: 240rpx;
|
||||
height: 240rpx;
|
||||
right: -60rpx;
|
||||
top: -90rpx;
|
||||
}
|
||||
.header .header-bg .circle-2.data-v-1cf27b2a {
|
||||
width: 160rpx;
|
||||
height: 160rpx;
|
||||
left: -40rpx;
|
||||
bottom: 30rpx;
|
||||
background: rgba(255, 255, 255, 0.08);
|
||||
border-radius: 50%;
|
||||
}
|
||||
.container .scan-area.data-v-1cf27b2a {
|
||||
padding: 20rpx 30rpx 40rpx;
|
||||
.header .header-bg .wave-decoration.data-v-1cf27b2a {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
height: 40rpx;
|
||||
background-size: auto 100%;
|
||||
opacity: 0.6;
|
||||
}
|
||||
.header .header-content.data-v-1cf27b2a {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
padding: 40rpx 40rpx 0;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.container .scan-area .scan-btn.data-v-1cf27b2a {
|
||||
width: 460rpx;
|
||||
height: 200rpx;
|
||||
.header .header-content .brand-area.data-v-1cf27b2a {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.header .header-content .brand-area .brand-logo.data-v-1cf27b2a {
|
||||
width: 90rpx;
|
||||
height: 90rpx;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
.header .header-content .brand-area .brand-text.data-v-1cf27b2a {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.header .header-content .brand-area .brand-text .title.data-v-1cf27b2a {
|
||||
font-size: 48rpx;
|
||||
color: #ffffff;
|
||||
font-weight: bold;
|
||||
line-height: 1.2;
|
||||
text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.header .header-content .brand-area .brand-text .subtitle.data-v-1cf27b2a {
|
||||
font-size: 28rpx;
|
||||
color: rgba(255, 255, 255, 0.9);
|
||||
}
|
||||
.header .header-content .header-info.data-v-1cf27b2a {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 20rpx;
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
.header .header-content .header-info .service-tag.data-v-1cf27b2a {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
border-radius: 40rpx;
|
||||
padding: 10rpx 20rpx;
|
||||
}
|
||||
.header .header-content .header-info .service-tag text.data-v-1cf27b2a {
|
||||
font-size: 24rpx;
|
||||
color: #ffffff;
|
||||
}
|
||||
.header .header-content .header-info .service-tag .dot.data-v-1cf27b2a {
|
||||
margin: 0 8rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* 扫码区域 */
|
||||
.scan-section.data-v-1cf27b2a {
|
||||
padding: 0 30rpx;
|
||||
margin-top: -60rpx;
|
||||
}
|
||||
.scan-section .scan-card.data-v-1cf27b2a {
|
||||
background: #ffffff;
|
||||
border-radius: 16rpx;
|
||||
box-shadow: 0 10rpx 30rpx rgba(0, 0, 0, 0.05);
|
||||
padding: 36rpx 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
.scan-section .scan-card .scan-btn.data-v-1cf27b2a {
|
||||
width: 220rpx;
|
||||
height: 220rpx;
|
||||
background: linear-gradient(135deg, #00B0FF, #0091EA);
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: linear-gradient(135deg, #00C853, #69F0AE);
|
||||
border-radius: 30rpx;
|
||||
box-shadow: 0 8rpx 32rpx rgba(0, 200, 83, 0.2);
|
||||
transition: all 0.3s ease;
|
||||
margin-bottom: 24rpx;
|
||||
box-shadow: 0 10rpx 20rpx rgba(0, 176, 255, 0.2);
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
.container .scan-area .scan-btn.data-v-1cf27b2a:active {
|
||||
transform: scale(0.98);
|
||||
box-shadow: 0 4rpx 16rpx rgba(0, 200, 83, 0.15);
|
||||
.scan-section .scan-card .scan-btn.data-v-1cf27b2a:active {
|
||||
transform: scale(0.96);
|
||||
}
|
||||
.container .scan-area .scan-btn.data-v-1cf27b2a::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: linear-gradient(rgba(255, 255, 255, 0.1), transparent);
|
||||
}
|
||||
.container .scan-area .scan-btn .btn-content.data-v-1cf27b2a {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
.scan-section .scan-card .scan-btn .scan-icon.data-v-1cf27b2a {
|
||||
width: 80rpx;
|
||||
height: 80rpx;
|
||||
margin-bottom: 12rpx;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
.container .scan-area .scan-btn .btn-content .btn-icon.data-v-1cf27b2a {
|
||||
width: 48rpx;
|
||||
height: 48rpx;
|
||||
margin-right: 16rpx;
|
||||
.scan-section .scan-card .scan-btn .scan-text.data-v-1cf27b2a {
|
||||
font-size: 36rpx;
|
||||
color: #ffffff;
|
||||
font-weight: 500;
|
||||
}
|
||||
.container .scan-area .scan-btn .btn-content .btn-text.data-v-1cf27b2a {
|
||||
font-size: 42rpx;
|
||||
font-weight: 600;
|
||||
color: #fff;
|
||||
text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.1);
|
||||
.scan-section .scan-card .scan-desc.data-v-1cf27b2a {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
}
|
||||
.container .scan-area .scan-btn .btn-desc.data-v-1cf27b2a {
|
||||
font-size: 26rpx;
|
||||
color: rgba(255, 255, 255, 0.95);
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
.container .tips-section.data-v-1cf27b2a {
|
||||
margin: 0 30rpx;
|
||||
background: #fff;
|
||||
border-radius: 24rpx;
|
||||
box-shadow: 0 8rpx 32rpx rgba(0, 0, 0, 0.05);
|
||||
|
||||
/* 收费规则卡片 */
|
||||
.price-card.data-v-1cf27b2a {
|
||||
margin: 30rpx;
|
||||
background: #ffffff;
|
||||
border-radius: 16rpx;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.04);
|
||||
/* 微信免押金区域 */
|
||||
}
|
||||
.container .tips-section .tips-header.data-v-1cf27b2a {
|
||||
padding: 30rpx;
|
||||
background: linear-gradient(to right, #F5F9FF, #fff);
|
||||
.price-card .card-header.data-v-1cf27b2a {
|
||||
padding: 24rpx 30rpx;
|
||||
background: linear-gradient(to right, #f5f9ff, #ffffff);
|
||||
border-bottom: 2rpx solid #f0f0f0;
|
||||
}
|
||||
.container .tips-section .tips-header .tips-title.data-v-1cf27b2a {
|
||||
.price-card .card-header .card-title.data-v-1cf27b2a {
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
position: relative;
|
||||
padding-left: 24rpx;
|
||||
padding-left: 20rpx;
|
||||
}
|
||||
.container .tips-section .tips-header .tips-title.data-v-1cf27b2a::before {
|
||||
.price-card .card-header .card-title.data-v-1cf27b2a::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
width: 8rpx;
|
||||
height: 32rpx;
|
||||
background: #1976D2;
|
||||
border-radius: 4rpx;
|
||||
width: 6rpx;
|
||||
height: 28rpx;
|
||||
background: #2196F3;
|
||||
border-radius: 3rpx;
|
||||
}
|
||||
.container .tips-section .tips-list.data-v-1cf27b2a {
|
||||
padding: 20rpx 30rpx;
|
||||
}
|
||||
.container .tips-section .tips-list .tip-item.data-v-1cf27b2a {
|
||||
.price-card .deposit-free.data-v-1cf27b2a {
|
||||
margin: 20rpx 30rpx 0;
|
||||
padding: 12rpx 16rpx;
|
||||
background: #f0f9ff;
|
||||
border-radius: 8rpx;
|
||||
border-left: 4rpx solid #03A9F4;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 24rpx;
|
||||
padding: 0 10rpx;
|
||||
}
|
||||
.container .tips-section .tips-list .tip-item.data-v-1cf27b2a:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.container .tips-section .tips-list .tip-item .tip-dot.data-v-1cf27b2a {
|
||||
width: 12rpx;
|
||||
height: 12rpx;
|
||||
background: #1976D2;
|
||||
border-radius: 50%;
|
||||
.price-card .deposit-free .deposit-icon.data-v-1cf27b2a {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
margin-right: 16rpx;
|
||||
flex-shrink: 0;
|
||||
box-shadow: 0 2rpx 6rpx rgba(25, 118, 210, 0.2);
|
||||
}
|
||||
.container .tips-section .tips-list .tip-item text.data-v-1cf27b2a {
|
||||
.price-card .deposit-free .deposit-text.data-v-1cf27b2a {
|
||||
font-size: 26rpx;
|
||||
color: #03A9F4;
|
||||
font-weight: 500;
|
||||
}
|
||||
.price-card .price-rules.data-v-1cf27b2a {
|
||||
padding: 20rpx 30rpx 30rpx;
|
||||
}
|
||||
.price-card .price-rules .price-item.data-v-1cf27b2a {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
.price-card .price-rules .price-item .price-tag.data-v-1cf27b2a {
|
||||
font-size: 60rpx;
|
||||
color: #FF6E00;
|
||||
font-weight: bold;
|
||||
line-height: 1;
|
||||
}
|
||||
.price-card .price-rules .price-item .price-tag .unit.data-v-1cf27b2a {
|
||||
font-size: 32rpx;
|
||||
font-weight: normal;
|
||||
margin-left: 4rpx;
|
||||
}
|
||||
.price-card .price-rules .price-item .price-desc.data-v-1cf27b2a {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
line-height: 1.6;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
.price-card .price-rules .divider.data-v-1cf27b2a {
|
||||
height: 2rpx;
|
||||
background-color: #f0f0f0;
|
||||
margin: 20rpx 0 30rpx;
|
||||
}
|
||||
.price-card .price-rules .rule-list .rule-item.data-v-1cf27b2a {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
.price-card .price-rules .rule-list .rule-item.data-v-1cf27b2a:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.price-card .price-rules .rule-list .rule-item .rule-dot.data-v-1cf27b2a {
|
||||
width: 12rpx;
|
||||
height: 12rpx;
|
||||
background: #2196F3;
|
||||
border-radius: 50%;
|
||||
margin: 12rpx 16rpx 0 0;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.price-card .price-rules .rule-list .rule-item text.data-v-1cf27b2a {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
/* 使用流程 */
|
||||
.usage-steps.data-v-1cf27b2a {
|
||||
margin: 0 30rpx;
|
||||
background: #ffffff;
|
||||
border-radius: 16rpx;
|
||||
box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.04);
|
||||
overflow: hidden;
|
||||
}
|
||||
.usage-steps .steps-header.data-v-1cf27b2a {
|
||||
padding: 24rpx 30rpx;
|
||||
background: linear-gradient(to right, #f5f9ff, #ffffff);
|
||||
border-bottom: 2rpx solid #f0f0f0;
|
||||
}
|
||||
.usage-steps .steps-header .steps-title.data-v-1cf27b2a {
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
position: relative;
|
||||
padding-left: 20rpx;
|
||||
}
|
||||
.usage-steps .steps-header .steps-title.data-v-1cf27b2a::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
width: 6rpx;
|
||||
height: 28rpx;
|
||||
background: #2196F3;
|
||||
border-radius: 3rpx;
|
||||
}
|
||||
.usage-steps .steps-container.data-v-1cf27b2a {
|
||||
padding: 40rpx 30rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.usage-steps .steps-container .step-item.data-v-1cf27b2a {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
flex: 1;
|
||||
}
|
||||
.usage-steps .steps-container .step-item .step-icon.data-v-1cf27b2a {
|
||||
width: 80rpx;
|
||||
height: 80rpx;
|
||||
background: #f0f9ff;
|
||||
border: 2rpx solid #e1f5fe;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-bottom: 16rpx;
|
||||
}
|
||||
.usage-steps .steps-container .step-item .step-icon .step-number.data-v-1cf27b2a {
|
||||
font-size: 36rpx;
|
||||
color: #2196F3;
|
||||
font-weight: 600;
|
||||
}
|
||||
.usage-steps .steps-container .step-item .step-text.data-v-1cf27b2a {
|
||||
font-size: 26rpx;
|
||||
color: #666;
|
||||
}
|
||||
.usage-steps .steps-container .step-arrow.data-v-1cf27b2a {
|
||||
width: 40rpx;
|
||||
height: 4rpx;
|
||||
background: #e1f5fe;
|
||||
position: relative;
|
||||
}
|
||||
.usage-steps .steps-container .step-arrow.data-v-1cf27b2a::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 50%;
|
||||
margin-top: -8rpx;
|
||||
border-left: 12rpx solid #e1f5fe;
|
||||
border-top: 8rpx solid transparent;
|
||||
border-bottom: 8rpx solid transparent;
|
||||
}
|
||||
+1
-1
@@ -65,7 +65,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
g: common_vendor.o(($event) => $options.navigateTo("/pages/deposit/index")),
|
||||
h: common_assets._imports_0$1,
|
||||
i: common_vendor.o(($event) => $options.navigateTo("/pages/order/index")),
|
||||
j: common_assets._imports_1,
|
||||
j: common_assets._imports_1$1,
|
||||
k: common_vendor.o(($event) => $options.navigateTo("/pages/feedback/index")),
|
||||
l: common_assets._imports_2,
|
||||
m: common_vendor.o(($event) => $options.navigateTo("/pages/help/index"))
|
||||
|
||||
+1
-1
@@ -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="pric 为了回馈他家新近三月公共努力公司决定五一假期22月1号减少,你喜欢这种什么嘿Siri换一个换一个App吃幼儿园那他那e-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 total data-v-13c3fb22"><text class="label data-v-13c3fb22">合计</text><text class="value data-v-13c3fb22">¥{{k}}</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">¥{{l}}</text></view><button class="pay-btn data-v-13c3fb22" bindtap="{{m}}">立即支付</button></view></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 total data-v-13c3fb22"><text class="label data-v-13c3fb22">合计</text><text class="value data-v-13c3fb22">¥{{k}}</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">¥{{l}}</text></view><button class="pay-btn data-v-13c3fb22" bindtap="{{m}}">立即支付</button></view></view>
|
||||
+31
-24
@@ -1,29 +1,36 @@
|
||||
{
|
||||
"description": "项目配置文件。",
|
||||
"packOptions": {
|
||||
"ignore": [],
|
||||
"include": []
|
||||
"description": "项目配置文件。",
|
||||
"packOptions": {
|
||||
"ignore": []
|
||||
},
|
||||
"setting": {
|
||||
"urlCheck": false,
|
||||
"es6": true,
|
||||
"postcss": false,
|
||||
"minified": false,
|
||||
"newFeature": true,
|
||||
"bigPackageSizeSupport": true
|
||||
},
|
||||
"compileType": "miniprogram",
|
||||
"libVersion": "",
|
||||
"appid": "wx2165f0be356ae7a9",
|
||||
"projectname": "fs",
|
||||
"condition": {
|
||||
"search": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
},
|
||||
"setting": {
|
||||
"urlCheck": false,
|
||||
"es6": true,
|
||||
"postcss": false,
|
||||
"minified": false,
|
||||
"newFeature": true,
|
||||
"bigPackageSizeSupport": true,
|
||||
"babelSetting": {
|
||||
"ignore": [],
|
||||
"disablePlugins": [],
|
||||
"outputPath": ""
|
||||
}
|
||||
"conversation": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
},
|
||||
"compileType": "miniprogram",
|
||||
"libVersion": "3.8.1",
|
||||
"appid": "wxe752f45e7f7aa271",
|
||||
"projectname": "fs",
|
||||
"condition": {},
|
||||
"editorSetting": {
|
||||
"tabIndent": "insertSpaces",
|
||||
"tabSize": 4
|
||||
"game": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
},
|
||||
"miniprogram": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
|
||||
"projectname": "fs",
|
||||
"setting": {
|
||||
"compileHotReLoad": true
|
||||
}
|
||||
"description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
|
||||
"projectname": "fs",
|
||||
"setting": {
|
||||
"compileHotReLoad": true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1751009018822" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7460" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M779.073919 133.586954H667.784787V66.793477C667.784787 29.997071 637.887706 0 600.991309 0H423.008691c-36.796407 0-66.793477 29.997071-66.793478 66.793477v66.793477H244.926081c-36.796407 0-66.793477 29.997071-66.793477 66.793478v756.826091c0 36.796407 29.997071 66.793477 66.793477 66.793477h534.247828c36.796407 0 66.793477-29.997071 66.793477-66.793477v-756.926082c-0.09999-36.796407-29.997071-66.693487-66.893467-66.693487zM400.710868 66.793477c0-12.298799 9.999024-22.297822 22.297823-22.297822h177.982618c12.298799 0 22.297822 9.999024 22.297823 22.297822v64.593692H400.710868V66.793477z m400.660873 890.313056c0 12.298799-9.999024 22.297822-22.297822 22.297822H244.926081c-12.298799 0-22.297822-9.999024-22.297822-22.297822V200.280441c0-12.298799 9.999024-22.297822 22.297822-22.297822h534.247828c12.298799 0 22.297822 9.999024 22.297822 22.297822v756.826092z" fill="#ffffff" p-id="7461"></path><path d="M645.586954 489.652182H378.413046c-12.198809 0-22.297822 9.999024-22.297823 22.297823 0 12.198809 9.999024 22.297822 22.297823 22.297822h267.073918c12.198809 0 22.297822-9.999024 22.297823-22.297822 0-12.198809-9.999024-22.297822-22.197833-22.297823zM645.586954 667.734792H378.413046c-12.198809 0-22.297822 9.999024-22.297823 22.297822s9.999024 22.297822 22.297823 22.297822h267.073918c12.198809 0 22.297822-9.999024 22.297823-22.297822s-9.999024-22.297822-22.197833-22.297822zM645.586954 845.817401H378.413046c-12.198809 0-22.297822 9.999024-22.297823 22.297822s9.999024 22.297822 22.297823 22.297823h267.073918c12.198809 0 22.297822-9.999024 22.297823-22.297823s-9.999024-22.297822-22.197833-22.297822zM645.586954 311.669564H378.413046c-12.198809 0-22.297822 9.999024-22.297823 22.297822 0 12.198809 9.999024 22.297822 22.297823 22.297822h267.073918c12.198809 0 22.297822-9.999024 22.297823-22.297822s-9.999024-22.297822-22.197833-22.297822z" fill="#ffffff" p-id="7462"></path></svg>
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1751008766607" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5409" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M512 427.023m-90 0a90 90 0 1 0 180 0 90 90 0 1 0-180 0Z" fill="#ffffff" p-id="5410"></path><path d="M512 910.402c-19.14 0-37.482-5.854-53.042-16.929-14.063-10.01-24.926-23.596-31.589-39.46L255.043 585.177l-0.154-0.25C225.522 537.209 210 482.605 210 427.021c0-80.667 31.414-156.506 88.454-213.546S431.333 125.021 512 125.021s156.506 31.414 213.546 88.454C782.587 270.515 814 346.354 814 427.021c0 55.849-15.655 110.671-45.274 158.539l-0.264 0.419-172.081 268.716c-6.755 15.726-17.66 29.176-31.704 39.055-15.485 10.895-33.7 16.652-52.677 16.652zM309.246 551.141l175.494 273.78 1.194 3.197c4.149 11.107 14.381 18.284 26.066 18.284 11.584 0 21.791-7.071 26.004-18.015l1.165-3.028L714.43 551.678C737.701 513.983 750 470.884 750 427.021c0-63.572-24.756-123.339-69.709-168.292-44.952-44.951-104.719-69.708-168.291-69.708s-123.339 24.756-168.292 69.708S274 363.449 274 427.021c0 43.64 12.186 86.552 35.246 124.12z" fill="#ffffff" p-id="5411"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 9.2 KiB |
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 5.2 KiB |
+1
-1
@@ -10,7 +10,7 @@ const wxLogin = () => {
|
||||
if (loginRes.code) {
|
||||
const result = await config_user.login({
|
||||
code: loginRes.code,
|
||||
appid: "wxe752f45e7f7aa271"
|
||||
appid: "wx2165f0be356ae7a9"
|
||||
});
|
||||
if (result.code === 200) {
|
||||
common_vendor.index.setStorageSync("token", result.data.LoginWxVo.access_token);
|
||||
|
||||
Reference in New Issue
Block a user