gitnore清理

This commit is contained in:
minimaxagent1 2025-08-13 11:50:23 +08:00
parent 5e266f0846
commit 0a54a05071
84 changed files with 0 additions and 10743 deletions

View File

@ -43,7 +43,6 @@ import HomeHeader from '../../components/home-header/home-header.vue'
import AnnouncementBar from '../../components/announcement-bar/announcement-bar.vue'
import BannerSwiper from '../../components/banner-swiper/banner-swiper.vue'
import EquipmentList from '../../components/equipment-list/equipment-list.vue'
import BottomNav from '../../components/bottom-nav/bottom-nav.vue'
export default {
components: {

View File

@ -1,8 +0,0 @@
{
"hash": "514f035c",
"configHash": "641a3635",
"lockfileHash": "e3b0c442",
"browserHash": "88121bc0",
"optimized": {},
"chunks": {}
}

View File

@ -1,3 +0,0 @@
{
"type": "module"
}

View File

@ -1 +0,0 @@
{"version":3,"file":"article.js","sources":["api/article/article.js"],"sourcesContent":["import request from '@/utils/request'\n\n/**\n * 获取条款和隐私政策\n * @param {Object} params - 查询参数\n * @param {string} params.type - 类型 5:服务条款 6:隐私条款\n * @param {string} params.status - 状态\n * @returns {Promise} 返回条款数据\n */\nexport function getArticleByType(params = {}) {\n return request({\n url: '/app/article/listByType',\n method: 'GET',\n params: {\n status: 1,\n ...params,\n },\n })\n}\n\n/**\n * 根据ID获取文章详情\n * @param {string} id - 文章ID\n * @param {Object} params - 查询参数\n * @returns {Promise} 返回文章详情数据\n */\nexport function getArticleById(id, params = {}) {\n return request({\n url: '/app/article/byId',\n method: 'GET',\n params: {\n id: id,\n ...params,\n },\n })\n}\n\n/**\n * 获取服务条款\n * @returns {Promise} 返回服务条款数据\n */\nexport function getServiceTerms() {\n return request({\n url: '/app/article/listByType',\n method: 'GET',\n params: {\n status: 1,\n type: '5',\n },\n })\n}\n\n/**\n * 获取隐私政策\n * @returns {Promise} 返回隐私政策数据\n */\nexport function getPrivacyPolicy() {\n return request({\n url: '/app/article/listByType',\n method: 'GET',\n params: {\n status: 1,\n type: '6',\n },\n })\n}\n\n/**\n * 获取古刹巡礼数据\n * @param {Object} params - 查询参数\n * @returns {Promise} 返回古刹巡礼列表数据\n */\nexport function getTempleTours(params = {}) {\n return request({\n url: '/app/article/tours',\n method: 'GET',\n params,\n })\n}\n"],"names":["request"],"mappings":";;AAyCO,SAAS,kBAAkB;AAChC,SAAOA,sBAAQ;AAAA,IACb,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,IACP;AAAA,EACL,CAAG;AACH;AAMO,SAAS,mBAAmB;AACjC,SAAOA,sBAAQ;AAAA,IACb,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,IACP;AAAA,EACL,CAAG;AACH;;;"}

View File

@ -1 +0,0 @@
{"version":3,"file":"auth.js","sources":["api/auth/auth.js"],"sourcesContent":["// 认证相关API\nimport { post } from '@/utils/request'\n\n/**\n * 微信登录\n * @param {Object} data - 登录数据\n * @param {string} data.loginCode - 微信登录code\n * @param {number} data.appId - 应用ID\n * @returns {Promise} 返回登录结果\n */\nexport function wxLogin(data) {\n return post('/wxLogin', data, {\n noToken: true,\n showLoading: true,\n loadingText: '登录中...',\n })\n}\n\n/**\n * 用户登录\n * @param {Object} data - 登录数据\n * @returns {Promise} 返回登录结果\n */\nexport function userLogin(data) {\n return post('/user/login', data, {\n noToken: true,\n showLoading: true,\n loadingText: '登录中...',\n })\n}\n\n/**\n * 用户登出\n * @returns {Promise} 返回登出结果\n */\nexport function userLogout() {\n return post('/user/logout')\n}\n\n/**\n * 刷新token\n * @param {string} refreshToken - 刷新token\n * @returns {Promise} 返回刷新结果\n */\nexport function refreshToken(refreshToken) {\n return post('/user/refresh', { refreshToken }, { noToken: true })\n}\n"],"names":["post"],"mappings":";;AAUO,SAAS,QAAQ,MAAM;AAC5B,SAAOA,cAAI,KAAC,YAAY,MAAM;AAAA,IAC5B,SAAS;AAAA,IACT,aAAa;AAAA,IACb,aAAa;AAAA,EACjB,CAAG;AACH;;"}

View File

@ -1 +0,0 @@
{"version":3,"file":"app.js","sources":["App.vue","main.js"],"sourcesContent":["<script>\nexport default {\n onLaunch: function () {\n console.log('App Launch')\n },\n onShow: function () {\n console.log('App Show')\n },\n onHide: function () {\n console.log('App Hide')\n },\n}\n</script>\n\n<style>\n/*每个页面公共css */\n@import './static/css/tabbar.css';\n</style>\n","import App from './App'\n\n// #ifndef VUE3\nimport Vue from 'vue'\nimport './uni.promisify.adaptor'\nVue.config.productionTip = false\nApp.mpType = 'app'\nconst app = new Vue({\n ...App,\n})\napp.$mount()\n// #endif\n\n// #ifdef VUE3\nimport { createSSRApp } from 'vue'\nimport PageScrollMixin from './mixins/page-scroll-mixin.js'\n\nexport function createApp() {\n const app = createSSRApp(App)\n\n // 注册全局 mixin (Vue3 方式)\n app.mixin(PageScrollMixin)\n\n return {\n app,\n }\n}\n// #endif\n"],"names":["uni","createSSRApp","App","PageScrollMixin"],"mappings":";;;;;;;;;;AACA,MAAK,YAAU;AAAA,EACb,UAAU,WAAY;AACpBA,kBAAAA,MAAY,MAAA,OAAA,gBAAA,YAAY;AAAA,EACzB;AAAA,EACD,QAAQ,WAAY;AAClBA,kBAAAA,MAAA,MAAA,OAAA,gBAAY,UAAU;AAAA,EACvB;AAAA,EACD,QAAQ,WAAY;AAClBA,kBAAAA,MAAA,MAAA,OAAA,iBAAY,UAAU;AAAA,EACvB;AACH;ACMO,SAAS,YAAY;AAC1B,QAAM,MAAMC,cAAY,aAACC,SAAG;AAG5B,MAAI,MAAMC,sCAAe;AAEzB,SAAO;AAAA,IACL;AAAA,EACD;AACH;;;"}

View File

@ -1 +0,0 @@
{"version":3,"file":"assets.js","sources":["static/stove.svg","static/burner.svg"],"sourcesContent":["export default \"__VITE_ASSET__04f816ad__\"","export default \"__VITE_ASSET__27ad3094__\""],"names":[],"mappings":";AAAA,MAAe,aAAA;ACAf,MAAe,aAAA;;;"}

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
{"version":3,"file":"announcement-bar.js","sources":["components/announcement-bar/announcement-bar.vue","C:/Users/Administrator/Downloads/HBuilderX/plugins/uniapp-cli-vite/uniComponent:/RDovd29yay9IQnVpbGRlclByb2plY3RzL0hvbWVMZWFzZS9jb21wb25lbnRzL2Fubm91bmNlbWVudC1iYXIvYW5ub3VuY2VtZW50LWJhci52dWU"],"sourcesContent":["<template>\n <view class=\"announcement-bar\" @click=\"onAnnouncementClick\">\n <image class=\"announcementIcon\" :src=\"announcementIcon\"></image>\n <view class=\"announcement-box\">\n <text class=\"announcement-text\">{{ announcementText }}</text>\n </view>\n </view>\n</template>\n\n<script>\nexport default {\n name: 'AnnouncementBar',\n props: {\n announcementText: {\n type: String,\n default: '暂无更多公告! 暂无更多公告! 暂无更多公告!',\n },\n announcementIcon: {\n type: String,\n required: true,\n },\n },\n methods: {\n onAnnouncementClick() {\n this.$emit('announcement-click')\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.announcement-bar {\n background: white;\n opacity: 0.5;\n margin: 34rpx 19rpx 0 19rpx;\n padding: 15rpx 30rpx;\n display: flex;\n align-items: center;\n gap: 15rpx;\n overflow: hidden;\n height: 34rpx;\n border-radius: 100rpx;\n\n .announcementIcon {\n height: 32rpx;\n width: 32rpx;\n flex-shrink: 0;\n }\n\n .announcement-box {\n flex: 1;\n overflow: hidden;\n position: relative;\n\n .announcement-text {\n font-size: 13px;\n opacity: 1;\n color: black;\n white-space: nowrap;\n animation: scroll-text 10s linear infinite;\n display: inline-block;\n padding-left: 100%;\n }\n\n @keyframes scroll-text {\n 0% {\n transform: translateX(0);\n }\n 100% {\n transform: translateX(-100%);\n }\n }\n }\n}\n</style>\n","import Component from 'D:/work/HBuilderProjects/HomeLease/components/announcement-bar/announcement-bar.vue'\nwx.createComponent(Component)"],"names":[],"mappings":";;AAUA,MAAK,YAAU;AAAA,EACb,MAAM;AAAA,EACN,OAAO;AAAA,IACL,kBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACD,kBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,UAAU;AAAA,IACX;AAAA,EACF;AAAA,EACD,SAAS;AAAA,IACP,sBAAsB;AACpB,WAAK,MAAM,oBAAoB;AAAA,IAChC;AAAA,EACF;AACH;;;;;;;;;AC1BA,GAAG,gBAAgB,SAAS;"}

View File

@ -1 +0,0 @@
{"version":3,"file":"banner-swiper.js","sources":["components/banner-swiper/banner-swiper.vue","C:/Users/Administrator/Downloads/HBuilderX/plugins/uniapp-cli-vite/uniComponent:/RDovd29yay9IQnVpbGRlclByb2plY3RzL0hvbWVMZWFzZS9jb21wb25lbnRzL2Jhbm5lci1zd2lwZXIvYmFubmVyLXN3aXBlci52dWU"],"sourcesContent":["<template>\n <view class=\"banner-section\">\n <swiper\n :autoplay=\"autoplay\"\n :duration=\"duration\"\n :indicator-dots=\"indicatorDots\"\n :interval=\"interval\"\n circular\n class=\"swiper\"\n indicator-active-color=\"#F15A04\"\n indicator-color=\"#D8D8D8\"\n >\n <swiper-item\n v-for=\"(item, index) in bannerList\"\n :key=\"index\"\n @click=\"onBannerClick(item, index)\"\n >\n <image :src=\"item.image\" mode=\"aspectFill\"></image>\n </swiper-item>\n </swiper>\n </view>\n</template>\n\n<script>\nexport default {\n name: 'BannerSwiper',\n props: {\n bannerList: {\n type: Array,\n default: () => [],\n },\n indicatorDots: {\n type: Boolean,\n default: true,\n },\n autoplay: {\n type: Boolean,\n default: true,\n },\n interval: {\n type: Number,\n default: 2000,\n },\n duration: {\n type: Number,\n default: 500,\n },\n },\n methods: {\n onSwiperChange(e) {\n this.$emit('change', e.detail.current)\n },\n onBannerClick(item, index) {\n this.$emit('banner-click', { item, index })\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.banner-section {\n padding: 30rpx;\n}\n\n.swiper {\n height: 300rpx;\n /* 通用指示器样式 - 覆盖所有可能的类名 */\n\n :deep([class*='swiper-dot']) {\n border-radius: 50% !important;\n transition: all 0.3s ease !important;\n }\n\n .swiper-item {\n display: block;\n height: 300rpx;\n line-height: 300rpx;\n text-align: center;\n\n image {\n width: 100%;\n height: 100%;\n border-radius: 20rpx;\n }\n }\n}\n</style>\n","import Component from 'D:/work/HBuilderProjects/HomeLease/components/banner-swiper/banner-swiper.vue'\nwx.createComponent(Component)"],"names":[],"mappings":";;AAwBA,MAAK,YAAU;AAAA,EACb,MAAM;AAAA,EACN,OAAO;AAAA,IACL,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS,MAAM,CAAE;AAAA,IAClB;AAAA,IACD,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,EACF;AAAA,EACD,SAAS;AAAA,IACP,eAAe,GAAG;AAChB,WAAK,MAAM,UAAU,EAAE,OAAO,OAAO;AAAA,IACtC;AAAA,IACD,cAAc,MAAM,OAAO;AACzB,WAAK,MAAM,gBAAgB,EAAE,MAAM,OAAO;AAAA,IAC3C;AAAA,EACF;AACH;;;;;;;;;;;;;;;;;ACvDA,GAAG,gBAAgB,SAAS;"}

View File

@ -1 +0,0 @@
{"version":3,"file":"bottom-nav.js","sources":["components/bottom-nav/bottom-nav.vue","C:/Users/Administrator/Downloads/HBuilderX/plugins/uniapp-cli-vite/uniComponent:/RDovd29yay9IQnVpbGRlclByb2plY3RzL0hvbWVMZWFzZS9jb21wb25lbnRzL2JvdHRvbS1uYXYvYm90dG9tLW5hdi52dWU"],"sourcesContent":["<template>\n <view class=\"bottom-nav\">\n <view\n v-for=\"(nav, index) in navItems\"\n :key=\"index\"\n class=\"nav-item\"\n :class=\"{ active: index === activeIndex }\"\n @click=\"onNavClick(index)\"\n >\n <image class=\"nav-icon\" :src=\"getNavIcon(index)\" mode=\"aspectFit\"></image>\n <text class=\"nav-text\">{{ nav }}</text>\n </view>\n </view>\n</template>\n\n<script>\nexport default {\n name: 'BottomNav',\n props: {\n navItems: {\n type: Array,\n default: () => ['首页', '申请租赁', '个人中心'],\n },\n activeIndex: {\n type: Number,\n default: 0,\n },\n iconConfig: {\n type: Object,\n required: true,\n },\n },\n methods: {\n onNavClick(index) {\n this.$emit('nav-click', index)\n },\n\n getNavIcon(index) {\n const isActive = index === this.activeIndex\n const icons = this.iconConfig\n\n switch (index) {\n case 0: // 首页\n return isActive ? icons.HOME_ACTIVE : icons.HOME\n case 1: // 申请租赁\n return isActive ? icons.RENT_ACTIVE : icons.RENT\n case 2: // 个人中心\n return isActive ? icons.PERSONAL_CENTER_ACTIVE : icons.PERSONAL_CENTER\n default:\n return icons.HOME\n }\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.bottom-nav {\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n background: #fff;\n display: flex;\n justify-content: space-around;\n align-items: center;\n padding: 20rpx 0;\n box-shadow: 0 -4rpx 20rpx rgba(0, 0, 0, 0.1);\n z-index: 1000;\n}\n\n.nav-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8rpx;\n padding: 10rpx;\n transition: all 0.3s ease;\n}\n\n.nav-item:active {\n transform: scale(0.95);\n}\n\n.nav-icon {\n width: 48rpx;\n height: 48rpx;\n}\n\n.nav-text {\n font-size: 20rpx;\n color: #999;\n}\n\n.nav-item.active .nav-text {\n color: #ff9a9e;\n}\n</style>\n","import Component from 'D:/work/HBuilderProjects/HomeLease/components/bottom-nav/bottom-nav.vue'\nwx.createComponent(Component)"],"names":[],"mappings":";;AAgBA,MAAK,YAAU;AAAA,EACb,MAAM;AAAA,EACN,OAAO;AAAA,IACL,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS,MAAM,CAAC,MAAM,QAAQ,MAAM;AAAA,IACrC;AAAA,IACD,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACD,YAAY;AAAA,MACV,MAAM;AAAA,MACN,UAAU;AAAA,IACX;AAAA,EACF;AAAA,EACD,SAAS;AAAA,IACP,WAAW,OAAO;AAChB,WAAK,MAAM,aAAa,KAAK;AAAA,IAC9B;AAAA,IAED,WAAW,OAAO;AAChB,YAAM,WAAW,UAAU,KAAK;AAChC,YAAM,QAAQ,KAAK;AAEnB,cAAQ,OAAK;AAAA,QACX,KAAK;AACH,iBAAO,WAAW,MAAM,cAAc,MAAM;AAAA,QAC9C,KAAK;AACH,iBAAO,WAAW,MAAM,cAAc,MAAM;AAAA,QAC9C,KAAK;AACH,iBAAO,WAAW,MAAM,yBAAyB,MAAM;AAAA,QACzD;AACE,iBAAO,MAAM;AAAA,MACjB;AAAA,IACD;AAAA,EACF;AACH;;;;;;;;;;;;;;;ACpDA,GAAG,gBAAgB,SAAS;"}

View File

@ -1 +0,0 @@
{"version":3,"file":"equipment-list.js","sources":["components/equipment-list/equipment-list.vue","C:/Users/Administrator/Downloads/HBuilderX/plugins/uniapp-cli-vite/uniComponent:/RDovd29yay9IQnVpbGRlclByb2plY3RzL0hvbWVMZWFzZS9jb21wb25lbnRzL2VxdWlwbWVudC1saXN0L2VxdWlwbWVudC1saXN0LnZ1ZQ"],"sourcesContent":["<template>\n <view class=\"equipment-section\">\n <view class=\"section-title\">{{ title }}</view>\n <view class=\"equipment-list\">\n <view\n v-for=\"equipment in equipmentList\"\n :key=\"equipment.id\"\n class=\"equipment-item\"\n @click=\"onEquipmentClick(equipment)\"\n >\n <image class=\"equipment-image\" :src=\"equipment.image\" mode=\"aspectFit\"></image>\n <view class=\"equipment-info\">\n <view class=\"equipment-header\">\n <text class=\"equipment-name\">{{ equipment.name }}</text>\n <text class=\"status-badge\" :class=\"equipment.status\">\n {{ getStatusText(equipment.status) }}\n </text>\n </view>\n <view class=\"equipment-details\">\n <view class=\"detail-item-row\">\n <text class=\"detail-item-time\">租赁时间:</text>\n <text class=\"detail-item\">{{ equipment.startTime }}</text>\n </view>\n <view class=\"detail-item-row\">\n <text class=\"detail-item-time\">到期时间:</text>\n <text class=\"detail-item\">{{ equipment.endTime }}</text>\n </view>\n </view>\n <button class=\"renew-btn\" @click.stop=\"onRenew(equipment)\">去续费</button>\n </view>\n </view>\n </view>\n </view>\n</template>\n\n<script>\nexport default {\n name: 'EquipmentList',\n props: {\n title: {\n type: String,\n default: '我的租赁设备',\n },\n equipmentList: {\n type: Array,\n default: () => [],\n },\n },\n methods: {\n getStatusText(status) {\n const statusMap = {\n normal: '正常',\n warning: '警告',\n error: '异常',\n }\n return statusMap[status] || '未知'\n },\n\n onEquipmentClick(equipment) {\n this.$emit('equipment-click', equipment)\n },\n\n onRenew(equipment) {\n this.$emit('renew', equipment)\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.equipment-section {\n padding: 0 30rpx;\n}\n\n.section-title {\n width: 180rpx;\n height: 33rpx;\n background: #ffffff;\n font-size: 14px;\n font-weight: 400;\n color: #3d3d3d;\n margin-bottom: 20rpx;\n padding: 14rpx 20rpx;\n border-radius: 4px;\n}\n\n.equipment-list {\n display: flex;\n flex-direction: column;\n gap: 20rpx;\n}\n\n.equipment-item {\n background: #fff;\n border-radius: 20rpx;\n padding: 30rpx;\n display: flex;\n gap: 30rpx;\n box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.1);\n transition: all 0.3s ease;\n justify-content: center;\n align-items: center;\n\n .equipment-image {\n width: 160rpx;\n height: 106rpx;\n border-radius: 10rpx;\n background-color: #f8f9fa;\n flex-shrink: 0;\n }\n}\n\n.equipment-item:active {\n transform: scale(0.98);\n box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.15);\n}\n\n.equipment-info {\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n\n.equipment-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 15rpx;\n}\n\n.equipment-name {\n font-size: 16px;\n font-weight: 500;\n color: #3d3d3d;\n}\n\n.status-badge {\n padding: 4rpx 26rpx;\n border-radius: 5rpx;\n font-size: 24rpx;\n color: #40c186;\n\n &.normal {\n background-color: #ebfff6;\n }\n\n &.warning {\n background-color: #faad14;\n }\n\n &.error {\n background-color: #ff4d4f;\n }\n}\n\n.equipment-details {\n display: flex;\n flex-direction: column;\n gap: 8rpx;\n margin-bottom: 15rpx;\n}\n\n.detail-item-row {\n display: flex;\n justify-content: space-between;\n\n .detail-item-time {\n color: #817f7f;\n font-size: 26rpx;\n }\n\n .detail-item {\n font-size: 24rpx;\n color: #666;\n }\n}\n\n.renew-btn {\n margin-right: 0;\n background: #f15a04;\n color: #fff;\n border-radius: 5px;\n padding: 0 57rpx;\n font-size: 32rpx;\n font-weight: 500;\n margin-top: 10rpx;\n}\n</style>\n","import Component from 'D:/work/HBuilderProjects/HomeLease/components/equipment-list/equipment-list.vue'\nwx.createComponent(Component)"],"names":[],"mappings":";;AAoCA,MAAK,YAAU;AAAA,EACb,MAAM;AAAA,EACN,OAAO;AAAA,IACL,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACD,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAAS,MAAM,CAAE;AAAA,IAClB;AAAA,EACF;AAAA,EACD,SAAS;AAAA,IACP,cAAc,QAAQ;AACpB,YAAM,YAAY;AAAA,QAChB,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,OAAO;AAAA,MACT;AACA,aAAO,UAAU,MAAM,KAAK;AAAA,IAC7B;AAAA,IAED,iBAAiB,WAAW;AAC1B,WAAK,MAAM,mBAAmB,SAAS;AAAA,IACxC;AAAA,IAED,QAAQ,WAAW;AACjB,WAAK,MAAM,SAAS,SAAS;AAAA,IAC9B;AAAA,EACF;AACH;;;;;;;;;;;;;;;;;;;;ACjEA,GAAG,gBAAgB,SAAS;"}

View File

@ -1 +0,0 @@
{"version":3,"file":"home-header.js","sources":["components/home-header/home-header.vue","C:/Users/Administrator/Downloads/HBuilderX/plugins/uniapp-cli-vite/uniComponent:/RDovd29yay9IQnVpbGRlclByb2plY3RzL0hvbWVMZWFzZS9jb21wb25lbnRzL2hvbWUtaGVhZGVyL2hvbWUtaGVhZGVyLnZ1ZQ"],"sourcesContent":["<template>\n <view class=\"header\">\n <view class=\"location-info\" @click=\"onLocationClick\">\n <image class=\"location\" :src=\"locationIcon\"></image>\n <text class=\"company-name\">{{ companyName }}</text>\n <text class=\"arrow\">></text>\n </view>\n </view>\n</template>\n\n<script>\nexport default {\n name: 'HomeHeader',\n props: {\n companyName: {\n type: String,\n default: '福鼎创特物联科技有限公司',\n },\n locationIcon: {\n type: String,\n required: true,\n },\n },\n methods: {\n onLocationClick() {\n this.$emit('location-click')\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.header {\n padding: 106rpx 30rpx 20rpx 30rpx;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: #ffddca;\n z-index: 999;\n\n .location-info {\n display: flex;\n align-items: center;\n gap: 10rpx;\n flex: 1;\n\n .location {\n width: 27rpx;\n height: 31rpx;\n }\n\n .company-name {\n color: #3d3d3d;\n font-size: 16px;\n font-weight: 500;\n }\n\n .arrow {\n font-size: 24rpx;\n color: #666;\n }\n }\n}\n</style>\n","import Component from 'D:/work/HBuilderProjects/HomeLease/components/home-header/home-header.vue'\nwx.createComponent(Component)"],"names":[],"mappings":";;AAWA,MAAK,YAAU;AAAA,EACb,MAAM;AAAA,EACN,OAAO;AAAA,IACL,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACD,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,UAAU;AAAA,IACX;AAAA,EACF;AAAA,EACD,SAAS;AAAA,IACP,kBAAkB;AAChB,WAAK,MAAM,gBAAgB;AAAA,IAC5B;AAAA,EACF;AACH;;;;;;;;;AC3BA,GAAG,gBAAgB,SAAS;"}

View File

@ -1 +0,0 @@
{"version":3,"file":"dev.js","sources":["config/dev.js"],"sourcesContent":["// 开发环境配置\nexport const DEV_CONFIG = {\n // 临时token用于开发测试\n TEMP_TOKEN:\n 'eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImY3OTUyZDY4LTI3NWItNDQ2ZS1iNjAwLWZkNGFiYmVkZjkyYSJ9.Nw8an_L7efznUuF3NdFrpCOOlK5xLGcgQ6xhAwat8kxiNkmDLsgJ3rprFD_o3yueApzomDj1vZSOMLcEsBa8Dg',\n\n // 是否使用临时token\n USE_TEMP_TOKEN: true,\n\n // 应用ID - 需要根据实际后端配置调整\n APP_ID: 1, // TODO: 请根据实际后端API要求调整此值\n\n // 是否显示调试信息\n DEBUG: true,\n}\n\n// 获取临时token\nexport function getTempToken() {\n return DEV_CONFIG.TEMP_TOKEN\n}\n\n// 是否使用临时token\nexport function shouldUseTempToken() {\n return DEV_CONFIG.USE_TEMP_TOKEN\n}\n\n// 获取API基础地址\nexport function getApiBaseUrl() {\n return DEV_CONFIG.API_BASE_URL\n}\n\n// 获取应用ID\nexport function getAppId() {\n return DEV_CONFIG.APP_ID\n}\n\n// 是否开启调试模式\nexport function isDebugMode() {\n return DEV_CONFIG.DEBUG\n}\n\n// 开发环境日志\nexport function devLog(...args) {\n if (isDebugMode()) {\n console.log('[DEV]', ...args)\n }\n}\n\n// 开发环境错误日志\nexport function devError(...args) {\n if (isDebugMode()) {\n console.error('[DEV ERROR]', ...args)\n }\n}\n"],"names":[],"mappings":";;AACO,MAAM,aAAa;AAAA;AAAA,EAExB,YACE;AAAA;AAAA,EAGF,gBAAgB;AAAA;AAAA,EAGhB,QAAQ;AAAA;AAAA;AAAA,EAGR,OAAO;AACT;AAGO,SAAS,eAAe;AAC7B,SAAO,WAAW;AACpB;AAGO,SAAS,qBAAqB;AACnC,SAAO,WAAW;AACpB;AAQO,SAAS,WAAW;AACzB,SAAO,WAAW;AACpB;;;;"}

View File

@ -1 +0,0 @@
{"version":3,"file":"commonEnum.js","sources":["enum/commonEnum.js"],"sourcesContent":["export const commonEnum = {\n LOGIN_SRC: 'https://api.ccttiot.com/image-1754981670820.png',\n HOME_ACTIVE: 'https://api.ccttiot.com/image-1754981895711.png',\n HOME: 'https://api.ccttiot.com/image-1754981938495.png',\n RENT: 'https://api.ccttiot.com/image-1754981988082.png',\n RENT_ACTIVE: ' https://api.ccttiot.com/image-1754986634575.png',\n PERSONAL_CENTER: 'https://api.ccttiot.com/image-1754986718771.png',\n PERSONAL_CENTER_ACTIVE: 'https://api.ccttiot.com/image-1754986763842.png',\n LOCATION: 'https://api.ccttiot.com/image-1754986786418.png',\n ANNOUNCEMENT_ICON: 'https://api.ccttiot.com/image-1754990087627.png',\n TEMP1: 'https://api.ccttiot.com/image-1754987048988.png',\n TEMP2: 'https://api.ccttiot.com/image-1754987114695.png',\n TEMP3: 'https://api.ccttiot.com/image-1754987141539.png',\n}\nexport default commonEnum\n"],"names":[],"mappings":";AAAY,MAAC,aAAa;AAAA,EACxB,WAAW;AAAA,EACX,aAAa;AAAA,EACb,MAAM;AAAA,EACN,MAAM;AAAA,EACN,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,wBAAwB;AAAA,EACxB,UAAU;AAAA,EACV,mBAAmB;AAAA,EACnB,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AACT;;"}

View File

@ -1 +0,0 @@
{"version":3,"file":"page-scroll-mixin.js","sources":["mixins/page-scroll-mixin.js"],"sourcesContent":["/**\n * 页面滚动监听 Mixin\n * 用于自动处理 custom-navbar 组件的滚动事件传递\n *\n * 使用方法:\n * 1. 在页面中引入此 mixin\n * 2. 确保 custom-navbar 组件有 ref=\"customNavbar\"(默认)或自定义 ref\n * 3. 自动处理滚动事件传递\n *\n * 配置选项:\n * - scrollRefs: 需要传递滚动事件的组件 ref 数组,默认为 ['customNavbar']\n *\n * 使用示例:\n *\n * // 基础用法(使用默认 ref=\"customNavbar\"\n * export default {\n * mixins: [PageScrollMixin],\n * // ... 其他配置\n * }\n *\n * // 自定义 ref 名称\n * export default {\n * mixins: [PageScrollMixin],\n * scrollRefs: ['myNavbar'], // 自定义 ref 名称\n * // ... 其他配置\n * }\n *\n * // 多个组件\n * export default {\n * mixins: [PageScrollMixin],\n * scrollRefs: ['customNavbar', 'floatingButton'], // 多个组件\n * // ... 其他配置\n * }\n */\n\nexport default {\n data() {\n return {\n // 默认的滚动组件 ref 列表\n scrollRefs: this.$options.scrollRefs || ['customNavbar'],\n }\n },\n\n // 页面生命周期\n onPageScroll(e) {\n // 自动将页面滚动事件传递给所有配置的组件\n this.scrollRefs.forEach(refName => {\n if (this.$refs[refName] && typeof this.$refs[refName].handlePageScroll === 'function') {\n this.$refs[refName].handlePageScroll(e)\n }\n })\n },\n}\n"],"names":[],"mappings":";AAmCA,MAAe,kBAAA;AAAA,EACb,OAAO;AACL,WAAO;AAAA;AAAA,MAEL,YAAY,KAAK,SAAS,cAAc,CAAC,cAAc;AAAA,IACxD;AAAA,EACF;AAAA;AAAA,EAGD,aAAa,GAAG;AAEd,SAAK,WAAW,QAAQ,aAAW;AACjC,UAAI,KAAK,MAAM,OAAO,KAAK,OAAO,KAAK,MAAM,OAAO,EAAE,qBAAqB,YAAY;AACrF,aAAK,MAAM,OAAO,EAAE,iBAAiB,CAAC;AAAA,MACvC;AAAA,IACP,CAAK;AAAA,EACF;AACH;;"}

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

View File

@ -1,25 +0,0 @@
"use strict";
const utils_request = require("../../utils/request.js");
function getServiceTerms() {
return utils_request.request({
url: "/app/article/listByType",
method: "GET",
params: {
status: 1,
type: "5"
}
});
}
function getPrivacyPolicy() {
return utils_request.request({
url: "/app/article/listByType",
method: "GET",
params: {
status: 1,
type: "6"
}
});
}
exports.getPrivacyPolicy = getPrivacyPolicy;
exports.getServiceTerms = getServiceTerms;
//# sourceMappingURL=../../../.sourcemap/mp-weixin/api/article/article.js.map

View File

@ -1,11 +0,0 @@
"use strict";
const utils_request = require("../../utils/request.js");
function wxLogin(data) {
return utils_request.post("/wxLogin", data, {
noToken: true,
showLoading: true,
loadingText: "登录中..."
});
}
exports.wxLogin = wxLogin;
//# sourceMappingURL=../../../.sourcemap/mp-weixin/api/auth/auth.js.map

View File

@ -1,31 +0,0 @@
"use strict";
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const common_vendor = require("./common/vendor.js");
const mixins_pageScrollMixin = require("./mixins/page-scroll-mixin.js");
if (!Math) {
"./pages/index/index.js";
"./pages/login/login.js";
"./pages/lease/lease.js";
"./pages/profile/profile.js";
}
const _sfc_main = {
onLaunch: function() {
common_vendor.index.__f__("log", "at App.vue:4", "App Launch");
},
onShow: function() {
common_vendor.index.__f__("log", "at App.vue:7", "App Show");
},
onHide: function() {
common_vendor.index.__f__("log", "at App.vue:10", "App Hide");
}
};
function createApp() {
const app = common_vendor.createSSRApp(_sfc_main);
app.mixin(mixins_pageScrollMixin.PageScrollMixin);
return {
app
};
}
createApp().app.mount("#app");
exports.createApp = createApp;
//# sourceMappingURL=../.sourcemap/mp-weixin/app.js.map

View File

@ -1,42 +0,0 @@
{
"pages": [
"pages/index/index",
"pages/login/login",
"pages/lease/lease",
"pages/profile/profile"
],
"window": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "设备租赁",
"navigationBarBackgroundColor": "#F8F8F8",
"backgroundColor": "#F8F8F8"
},
"tabBar": {
"color": "#999999",
"selectedColor": "#ff6b6b",
"backgroundColor": "#ffffff",
"borderStyle": "white",
"iconHeight": "24px",
"list": [
{
"pagePath": "pages/index/index",
"text": "首页",
"iconPath": "static/icons/home.png",
"selectedIconPath": "static/icons/home-active.png"
},
{
"pagePath": "pages/lease/lease",
"text": "申请租赁",
"iconPath": "static/icons/rent.png",
"selectedIconPath": "static/icons/rent-active.png"
},
{
"pagePath": "pages/profile/profile",
"text": "个人中心",
"iconPath": "static/icons/profile.png",
"selectedIconPath": "static/icons/profile-active.png"
}
]
},
"usingComponents": {}
}

View File

@ -1,51 +0,0 @@
/*每个页面公共css */
/* 自定义TabBar样式 */
.uni-tabbar {
padding: 8px 0 4px 0;
box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.05);
}
.uni-tabbar-item {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 4px 0;
min-height: 50px;
}
.uni-tabbar-item__icon {
margin-bottom: 4px;
width: 24px;
height: 24px;
display: flex;
align-items: center;
justify-content: center;
}
.uni-tabbar-item__text {
font-size: 12px;
line-height: 1.2;
text-align: center;
margin-top: 2px;
}
/* 选中状态优化 */
.uni-tabbar-item--selected .uni-tabbar-item__text {
font-weight: 500;
}
/* 图标和文字间距 */
.uni-tabbar-item__icon + .uni-tabbar-item__text {
margin-top: 4px;
}
/* 整体间距优化 */
.uni-tabbar__list {
display: flex;
justify-content: space-around;
align-items: center;
padding: 0 20px;
}
/* 安全区域适配 */
@supports (padding-bottom: env(safe-area-inset-bottom)) {
.uni-tabbar {
padding-bottom: calc(4px + env(safe-area-inset-bottom));
}
}
page{--status-bar-height:25px;--top-window-height:0px;--window-top:0px;--window-bottom:0px;--window-left:0px;--window-right:0px;--window-magin:0px}[data-c-h="true"]{display: none !important;}

File diff suppressed because it is too large Load Diff

View File

@ -1,30 +0,0 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const _sfc_main = {
name: "AnnouncementBar",
props: {
announcementText: {
type: String,
default: "暂无更多公告! 暂无更多公告! 暂无更多公告!"
},
announcementIcon: {
type: String,
required: true
}
},
methods: {
onAnnouncementClick() {
this.$emit("announcement-click");
}
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: $props.announcementIcon,
b: common_vendor.t($props.announcementText),
c: common_vendor.o((...args) => $options.onAnnouncementClick && $options.onAnnouncementClick(...args))
};
}
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-3c038241"]]);
wx.createComponent(Component);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/components/announcement-bar/announcement-bar.js.map

View File

@ -1,4 +0,0 @@
{
"component": true,
"usingComponents": {}
}

View File

@ -1 +0,0 @@
<view class="announcement-bar data-v-3c038241" bindtap="{{c}}"><image class="announcementIcon data-v-3c038241" src="{{a}}"></image><view class="announcement-box data-v-3c038241"><text class="announcement-text data-v-3c038241">{{b}}</text></view></view>

View File

@ -1,64 +0,0 @@
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场https://ext.dcloud.net.cn上很多三方插件均使用了这些样式变量
* 如果你是插件开发者建议你使用scss预处理并在插件代码中直接使用这些变量无需 import 这个文件方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者插件使用者你可以通过修改这些变量来定制自己的插件主题实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
.announcement-bar.data-v-3c038241 {
background: white;
opacity: 0.5;
margin: 34rpx 19rpx 0 19rpx;
padding: 15rpx 30rpx;
display: flex;
align-items: center;
gap: 15rpx;
overflow: hidden;
height: 34rpx;
border-radius: 100rpx;
}
.announcement-bar .announcementIcon.data-v-3c038241 {
height: 32rpx;
width: 32rpx;
flex-shrink: 0;
}
.announcement-bar .announcement-box.data-v-3c038241 {
flex: 1;
overflow: hidden;
position: relative;
}
.announcement-bar .announcement-box .announcement-text.data-v-3c038241 {
font-size: 13px;
opacity: 1;
color: black;
white-space: nowrap;
animation: scroll-text-3c038241 10s linear infinite;
display: inline-block;
padding-left: 100%;
}
@keyframes scroll-text-3c038241 {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-100%);
}
}

View File

@ -1,53 +0,0 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const _sfc_main = {
name: "BannerSwiper",
props: {
bannerList: {
type: Array,
default: () => []
},
indicatorDots: {
type: Boolean,
default: true
},
autoplay: {
type: Boolean,
default: true
},
interval: {
type: Number,
default: 2e3
},
duration: {
type: Number,
default: 500
}
},
methods: {
onSwiperChange(e) {
this.$emit("change", e.detail.current);
},
onBannerClick(item, index) {
this.$emit("banner-click", { item, index });
}
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: common_vendor.f($props.bannerList, (item, index, i0) => {
return {
a: item.image,
b: index,
c: common_vendor.o(($event) => $options.onBannerClick(item, index), index)
};
}),
b: $props.autoplay,
c: $props.duration,
d: $props.indicatorDots,
e: $props.interval
};
}
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-f6b62634"]]);
wx.createComponent(Component);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/components/banner-swiper/banner-swiper.js.map

View File

@ -1,4 +0,0 @@
{
"component": true,
"usingComponents": {}
}

View File

@ -1 +0,0 @@
<view class="banner-section data-v-f6b62634"><swiper autoplay="{{b}}" duration="{{c}}" indicator-dots="{{d}}" interval="{{e}}" circular class="swiper data-v-f6b62634" indicator-active-color="#F15A04" indicator-color="#D8D8D8"><swiper-item wx:for="{{a}}" wx:for-item="item" wx:key="b" class="data-v-f6b62634" bindtap="{{item.c}}"><image class="data-v-f6b62634" src="{{item.a}}" mode="aspectFill"></image></swiper-item></swiper></view>

View File

@ -1,47 +0,0 @@
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场https://ext.dcloud.net.cn上很多三方插件均使用了这些样式变量
* 如果你是插件开发者建议你使用scss预处理并在插件代码中直接使用这些变量无需 import 这个文件方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者插件使用者你可以通过修改这些变量来定制自己的插件主题实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
.banner-section.data-v-f6b62634 {
padding: 30rpx;
}
.swiper.data-v-f6b62634 {
height: 300rpx;
/* 通用指示器样式 - 覆盖所有可能的类名 */
}
.swiper.data-v-f6b62634 [class*="swiper-dot"] {
border-radius: 50% !important;
transition: all 0.3s ease !important;
}
.swiper .swiper-item.data-v-f6b62634 {
display: block;
height: 300rpx;
line-height: 300rpx;
text-align: center;
}
.swiper .swiper-item image.data-v-f6b62634 {
width: 100%;
height: 100%;
border-radius: 20rpx;
}

View File

@ -1,54 +0,0 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const _sfc_main = {
name: "BottomNav",
props: {
navItems: {
type: Array,
default: () => ["首页", "申请租赁", "个人中心"]
},
activeIndex: {
type: Number,
default: 0
},
iconConfig: {
type: Object,
required: true
}
},
methods: {
onNavClick(index) {
this.$emit("nav-click", index);
},
getNavIcon(index) {
const isActive = index === this.activeIndex;
const icons = this.iconConfig;
switch (index) {
case 0:
return isActive ? icons.HOME_ACTIVE : icons.HOME;
case 1:
return isActive ? icons.RENT_ACTIVE : icons.RENT;
case 2:
return isActive ? icons.PERSONAL_CENTER_ACTIVE : icons.PERSONAL_CENTER;
default:
return icons.HOME;
}
}
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: common_vendor.f($props.navItems, (nav, index, i0) => {
return {
a: $options.getNavIcon(index),
b: common_vendor.t(nav),
c: index,
d: index === $props.activeIndex ? 1 : "",
e: common_vendor.o(($event) => $options.onNavClick(index), index)
};
})
};
}
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-55d8123a"]]);
wx.createComponent(Component);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/components/bottom-nav/bottom-nav.js.map

View File

@ -1,4 +0,0 @@
{
"component": true,
"usingComponents": {}
}

View File

@ -1 +0,0 @@
<view class="bottom-nav data-v-55d8123a"><view wx:for="{{a}}" wx:for-item="nav" wx:key="c" class="{{['nav-item', 'data-v-55d8123a', nav.d && 'active']}}" bindtap="{{nav.e}}"><image class="nav-icon data-v-55d8123a" src="{{nav.a}}" mode="aspectFit"></image><text class="nav-text data-v-55d8123a">{{nav.b}}</text></view></view>

View File

@ -1,60 +0,0 @@
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场https://ext.dcloud.net.cn上很多三方插件均使用了这些样式变量
* 如果你是插件开发者建议你使用scss预处理并在插件代码中直接使用这些变量无需 import 这个文件方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者插件使用者你可以通过修改这些变量来定制自己的插件主题实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
.bottom-nav.data-v-55d8123a {
position: fixed;
bottom: 0;
left: 0;
right: 0;
background: #fff;
display: flex;
justify-content: space-around;
align-items: center;
padding: 20rpx 0;
box-shadow: 0 -4rpx 20rpx rgba(0, 0, 0, 0.1);
z-index: 1000;
}
.nav-item.data-v-55d8123a {
display: flex;
flex-direction: column;
align-items: center;
gap: 8rpx;
padding: 10rpx;
transition: all 0.3s ease;
}
.nav-item.data-v-55d8123a:active {
transform: scale(0.95);
}
.nav-icon.data-v-55d8123a {
width: 48rpx;
height: 48rpx;
}
.nav-text.data-v-55d8123a {
font-size: 20rpx;
color: #999;
}
.nav-item.active .nav-text.data-v-55d8123a {
color: #ff9a9e;
}

View File

@ -1,52 +0,0 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const _sfc_main = {
name: "EquipmentList",
props: {
title: {
type: String,
default: "我的租赁设备"
},
equipmentList: {
type: Array,
default: () => []
}
},
methods: {
getStatusText(status) {
const statusMap = {
normal: "正常",
warning: "警告",
error: "异常"
};
return statusMap[status] || "未知";
},
onEquipmentClick(equipment) {
this.$emit("equipment-click", equipment);
},
onRenew(equipment) {
this.$emit("renew", equipment);
}
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: common_vendor.t($props.title),
b: common_vendor.f($props.equipmentList, (equipment, k0, i0) => {
return {
a: equipment.image,
b: common_vendor.t(equipment.name),
c: common_vendor.t($options.getStatusText(equipment.status)),
d: common_vendor.n(equipment.status),
e: common_vendor.t(equipment.startTime),
f: common_vendor.t(equipment.endTime),
g: common_vendor.o(($event) => $options.onRenew(equipment), equipment.id),
h: equipment.id,
i: common_vendor.o(($event) => $options.onEquipmentClick(equipment), equipment.id)
};
})
};
}
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-401af284"]]);
wx.createComponent(Component);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/components/equipment-list/equipment-list.js.map

View File

@ -1,4 +0,0 @@
{
"component": true,
"usingComponents": {}
}

View File

@ -1 +0,0 @@
<view class="equipment-section data-v-401af284"><view class="section-title data-v-401af284">{{a}}</view><view class="equipment-list data-v-401af284"><view wx:for="{{b}}" wx:for-item="equipment" wx:key="h" class="equipment-item data-v-401af284" bindtap="{{equipment.i}}"><image class="equipment-image data-v-401af284" src="{{equipment.a}}" mode="aspectFit"></image><view class="equipment-info data-v-401af284"><view class="equipment-header data-v-401af284"><text class="equipment-name data-v-401af284">{{equipment.b}}</text><text class="{{['status-badge', 'data-v-401af284', equipment.d]}}">{{equipment.c}}</text></view><view class="equipment-details data-v-401af284"><view class="detail-item-row data-v-401af284"><text class="detail-item-time data-v-401af284">租赁时间:</text><text class="detail-item data-v-401af284">{{equipment.e}}</text></view><view class="detail-item-row data-v-401af284"><text class="detail-item-time data-v-401af284">到期时间:</text><text class="detail-item data-v-401af284">{{equipment.f}}</text></view></view><button class="renew-btn data-v-401af284" catchtap="{{equipment.g}}">去续费</button></view></view></view></view>

View File

@ -1,126 +0,0 @@
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场https://ext.dcloud.net.cn上很多三方插件均使用了这些样式变量
* 如果你是插件开发者建议你使用scss预处理并在插件代码中直接使用这些变量无需 import 这个文件方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者插件使用者你可以通过修改这些变量来定制自己的插件主题实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
.equipment-section.data-v-401af284 {
padding: 0 30rpx;
}
.section-title.data-v-401af284 {
width: 180rpx;
height: 33rpx;
background: #ffffff;
font-size: 14px;
font-weight: 400;
color: #3d3d3d;
margin-bottom: 20rpx;
padding: 14rpx 20rpx;
border-radius: 4px;
}
.equipment-list.data-v-401af284 {
display: flex;
flex-direction: column;
gap: 20rpx;
}
.equipment-item.data-v-401af284 {
background: #fff;
border-radius: 20rpx;
padding: 30rpx;
display: flex;
gap: 30rpx;
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.1);
transition: all 0.3s ease;
justify-content: center;
align-items: center;
}
.equipment-item .equipment-image.data-v-401af284 {
width: 160rpx;
height: 106rpx;
border-radius: 10rpx;
background-color: #f8f9fa;
flex-shrink: 0;
}
.equipment-item.data-v-401af284:active {
transform: scale(0.98);
box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.15);
}
.equipment-info.data-v-401af284 {
flex: 1;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.equipment-header.data-v-401af284 {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 15rpx;
}
.equipment-name.data-v-401af284 {
font-size: 16px;
font-weight: 500;
color: #3d3d3d;
}
.status-badge.data-v-401af284 {
padding: 4rpx 26rpx;
border-radius: 5rpx;
font-size: 24rpx;
color: #40c186;
}
.status-badge.normal.data-v-401af284 {
background-color: #ebfff6;
}
.status-badge.warning.data-v-401af284 {
background-color: #faad14;
}
.status-badge.error.data-v-401af284 {
background-color: #ff4d4f;
}
.equipment-details.data-v-401af284 {
display: flex;
flex-direction: column;
gap: 8rpx;
margin-bottom: 15rpx;
}
.detail-item-row.data-v-401af284 {
display: flex;
justify-content: space-between;
}
.detail-item-row .detail-item-time.data-v-401af284 {
color: #817f7f;
font-size: 26rpx;
}
.detail-item-row .detail-item.data-v-401af284 {
font-size: 24rpx;
color: #666;
}
.renew-btn.data-v-401af284 {
margin-right: 0;
background: #f15a04;
color: #fff;
border-radius: 5px;
padding: 0 57rpx;
font-size: 32rpx;
font-weight: 500;
margin-top: 10rpx;
}

View File

@ -1,30 +0,0 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const _sfc_main = {
name: "HomeHeader",
props: {
companyName: {
type: String,
default: "福鼎创特物联科技有限公司"
},
locationIcon: {
type: String,
required: true
}
},
methods: {
onLocationClick() {
this.$emit("location-click");
}
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: $props.locationIcon,
b: common_vendor.t($props.companyName),
c: common_vendor.o((...args) => $options.onLocationClick && $options.onLocationClick(...args))
};
}
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-e1c5b648"]]);
wx.createComponent(Component);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/components/home-header/home-header.js.map

View File

@ -1,4 +0,0 @@
{
"component": true,
"usingComponents": {}
}

View File

@ -1 +0,0 @@
<view class="header data-v-e1c5b648"><view class="location-info data-v-e1c5b648" bindtap="{{c}}"><image class="location data-v-e1c5b648" src="{{a}}"></image><text class="company-name data-v-e1c5b648">{{b}}</text><text class="arrow data-v-e1c5b648">></text></view></view>

View File

@ -1,52 +0,0 @@
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场https://ext.dcloud.net.cn上很多三方插件均使用了这些样式变量
* 如果你是插件开发者建议你使用scss预处理并在插件代码中直接使用这些变量无需 import 这个文件方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者插件使用者你可以通过修改这些变量来定制自己的插件主题实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
.header.data-v-e1c5b648 {
padding: 106rpx 30rpx 20rpx 30rpx;
display: flex;
justify-content: space-between;
align-items: center;
background: #ffddca;
z-index: 999;
}
.header .location-info.data-v-e1c5b648 {
display: flex;
align-items: center;
gap: 10rpx;
flex: 1;
}
.header .location-info .location.data-v-e1c5b648 {
width: 27rpx;
height: 31rpx;
}
.header .location-info .company-name.data-v-e1c5b648 {
color: #3d3d3d;
font-size: 16px;
font-weight: 500;
}
.header .location-info .arrow.data-v-e1c5b648 {
font-size: 24rpx;
color: #666;
}

View File

@ -1,26 +0,0 @@
"use strict";
require("../common/vendor.js");
const DEV_CONFIG = {
// 临时token用于开发测试
TEMP_TOKEN: "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImY3OTUyZDY4LTI3NWItNDQ2ZS1iNjAwLWZkNGFiYmVkZjkyYSJ9.Nw8an_L7efznUuF3NdFrpCOOlK5xLGcgQ6xhAwat8kxiNkmDLsgJ3rprFD_o3yueApzomDj1vZSOMLcEsBa8Dg",
// 是否使用临时token
USE_TEMP_TOKEN: true,
// 应用ID - 需要根据实际后端配置调整
APP_ID: 1,
// TODO: 请根据实际后端API要求调整此值
// 是否显示调试信息
DEBUG: true
};
function getTempToken() {
return DEV_CONFIG.TEMP_TOKEN;
}
function shouldUseTempToken() {
return DEV_CONFIG.USE_TEMP_TOKEN;
}
function getAppId() {
return DEV_CONFIG.APP_ID;
}
exports.getAppId = getAppId;
exports.getTempToken = getTempToken;
exports.shouldUseTempToken = shouldUseTempToken;
//# sourceMappingURL=../../.sourcemap/mp-weixin/config/dev.js.map

View File

@ -1,17 +0,0 @@
"use strict";
const commonEnum = {
LOGIN_SRC: "https://api.ccttiot.com/image-1754981670820.png",
HOME_ACTIVE: "https://api.ccttiot.com/image-1754981895711.png",
HOME: "https://api.ccttiot.com/image-1754981938495.png",
RENT: "https://api.ccttiot.com/image-1754981988082.png",
RENT_ACTIVE: " https://api.ccttiot.com/image-1754986634575.png",
PERSONAL_CENTER: "https://api.ccttiot.com/image-1754986718771.png",
PERSONAL_CENTER_ACTIVE: "https://api.ccttiot.com/image-1754986763842.png",
LOCATION: "https://api.ccttiot.com/image-1754986786418.png",
ANNOUNCEMENT_ICON: "https://api.ccttiot.com/image-1754990087627.png",
TEMP1: "https://api.ccttiot.com/image-1754987048988.png",
TEMP2: "https://api.ccttiot.com/image-1754987114695.png",
TEMP3: "https://api.ccttiot.com/image-1754987141539.png"
};
exports.commonEnum = commonEnum;
//# sourceMappingURL=../../.sourcemap/mp-weixin/enum/commonEnum.js.map

View File

@ -1,19 +0,0 @@
"use strict";
const PageScrollMixin = {
data() {
return {
// 默认的滚动组件 ref 列表
scrollRefs: this.$options.scrollRefs || ["customNavbar"]
};
},
// 页面生命周期
onPageScroll(e) {
this.scrollRefs.forEach((refName) => {
if (this.$refs[refName] && typeof this.$refs[refName].handlePageScroll === "function") {
this.$refs[refName].handlePageScroll(e);
}
});
}
};
exports.PageScrollMixin = PageScrollMixin;
//# sourceMappingURL=../../.sourcemap/mp-weixin/mixins/page-scroll-mixin.js.map

View File

@ -1,162 +0,0 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const enum_commonEnum = require("../../enum/commonEnum.js");
const HomeHeader = () => "../../components/home-header/home-header.js";
const AnnouncementBar = () => "../../components/announcement-bar/announcement-bar.js";
const BannerSwiper = () => "../../components/banner-swiper/banner-swiper.js";
const EquipmentList = () => "../../components/equipment-list/equipment-list.js";
const _sfc_main = {
components: {
HomeHeader,
AnnouncementBar,
BannerSwiper,
EquipmentList
},
data() {
return {
// 基础配置
indicatorDots: true,
autoplay: true,
interval: 2e3,
duration: 500,
commonEnum: enum_commonEnum.commonEnum,
// 页面数据
companyName: "福鼎创特物联科技有限公司",
announcementText: "暂无更多公告! 暂无更多公告! 暂无更多公告!",
equipmentTitle: "我的租赁设备",
navItems: ["首页", "申请租赁", "个人中心"],
activeNavIndex: 0,
// 轮播图数据
currentBannerIndex: 0,
bannerList: [
{
image: enum_commonEnum.commonEnum.TEMP1
},
{
image: enum_commonEnum.commonEnum.TEMP1
},
{
image: enum_commonEnum.commonEnum.TEMP2
},
{
image: enum_commonEnum.commonEnum.TEMP1
}
],
// 设备列表数据
equipmentList: [
{
id: 1,
name: "商用节能灶",
status: "normal",
startTime: "2025-07-25 13:23:59",
endTime: "2026-07-25 13:23:59",
image: enum_commonEnum.commonEnum.TEMP2
},
{
id: 2,
name: "节能燃烧器",
status: "normal",
startTime: "2025-07-25 13:23:59",
endTime: "2026-07-25 13:23:59",
image: enum_commonEnum.commonEnum.TEMP3
}
]
};
},
methods: {
// 头部点击事件
onLocationClick() {
common_vendor.index.showToast({
title: "选择位置",
icon: "none"
});
},
// 公告栏点击事件
onAnnouncementClick() {
common_vendor.index.showToast({
title: "查看公告详情",
icon: "none"
});
},
// 轮播图变化事件
onBannerChange(index) {
this.currentBannerIndex = index;
},
// 轮播图点击事件
onBannerClick({ item, index }) {
common_vendor.index.showToast({
title: `查看${item.name}详情`,
icon: "none"
});
},
// 设备点击事件
onEquipmentClick(equipment) {
common_vendor.index.showToast({
title: `查看${equipment.name}详情`,
icon: "none"
});
},
// 续费事件
onRenew(equipment) {
common_vendor.index.showToast({
title: `正在处理${equipment.name}的续费`,
icon: "none"
});
},
// 底部导航点击事件
onNavClick(index) {
this.activeNavIndex = index;
const navItems = ["首页", "申请租赁", "个人中心"];
common_vendor.index.showToast({
title: `切换到${navItems[index]}`,
icon: "none"
});
}
}
};
if (!Array) {
const _easycom_home_header2 = common_vendor.resolveComponent("home-header");
const _easycom_announcement_bar2 = common_vendor.resolveComponent("announcement-bar");
const _easycom_banner_swiper2 = common_vendor.resolveComponent("banner-swiper");
const _easycom_equipment_list2 = common_vendor.resolveComponent("equipment-list");
(_easycom_home_header2 + _easycom_announcement_bar2 + _easycom_banner_swiper2 + _easycom_equipment_list2)();
}
const _easycom_home_header = () => "../../components/home-header/home-header.js";
const _easycom_announcement_bar = () => "../../components/announcement-bar/announcement-bar.js";
const _easycom_banner_swiper = () => "../../components/banner-swiper/banner-swiper.js";
const _easycom_equipment_list = () => "../../components/equipment-list/equipment-list.js";
if (!Math) {
(_easycom_home_header + _easycom_announcement_bar + _easycom_banner_swiper + _easycom_equipment_list)();
}
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: common_vendor.o($options.onLocationClick),
b: common_vendor.p({
["company-name"]: $data.companyName,
["location-icon"]: $data.commonEnum.LOCATION
}),
c: common_vendor.o($options.onAnnouncementClick),
d: common_vendor.p({
["announcement-icon"]: $data.commonEnum.ANNOUNCEMENT_ICON,
["announcement-text"]: $data.announcementText
}),
e: common_vendor.o($options.onBannerChange),
f: common_vendor.o($options.onBannerClick),
g: common_vendor.p({
autoplay: $data.autoplay,
["banner-list"]: $data.bannerList,
duration: $data.duration,
["indicator-dots"]: $data.indicatorDots,
interval: $data.interval
}),
h: common_vendor.o($options.onRenew),
i: common_vendor.o($options.onEquipmentClick),
j: common_vendor.p({
["equipment-list"]: $data.equipmentList,
title: $data.equipmentTitle
})
};
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-1cf27b2a"]]);
wx.createPage(MiniProgramPage);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/index/index.js.map

View File

@ -1,10 +0,0 @@
{
"navigationBarTitleText": "设备租赁",
"navigationStyle": "custom",
"usingComponents": {
"home-header": "../../components/home-header/home-header",
"announcement-bar": "../../components/announcement-bar/announcement-bar",
"banner-swiper": "../../components/banner-swiper/banner-swiper",
"equipment-list": "../../components/equipment-list/equipment-list"
}
}

View File

@ -1 +0,0 @@
<view class="home-container data-v-1cf27b2a"><home-header wx:if="{{b}}" class="data-v-1cf27b2a" bindlocationClick="{{a}}" u-i="1cf27b2a-0" bind:__l="__l" u-p="{{b}}"/><announcement-bar wx:if="{{d}}" class="data-v-1cf27b2a" bindannouncementClick="{{c}}" u-i="1cf27b2a-1" bind:__l="__l" u-p="{{d}}"/><banner-swiper wx:if="{{g}}" class="data-v-1cf27b2a" bindchange="{{e}}" bindbannerClick="{{f}}" u-i="1cf27b2a-2" bind:__l="__l" u-p="{{g}}"/><equipment-list wx:if="{{j}}" class="data-v-1cf27b2a" bindrenew="{{h}}" bindequipmentClick="{{i}}" u-i="1cf27b2a-3" bind:__l="__l" u-p="{{j}}"/></view>

View File

@ -1,34 +0,0 @@
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场https://ext.dcloud.net.cn上很多三方插件均使用了这些样式变量
* 如果你是插件开发者建议你使用scss预处理并在插件代码中直接使用这些变量无需 import 这个文件方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者插件使用者你可以通过修改这些变量来定制自己的插件主题实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
.home-container.data-v-1cf27b2a {
background: linear-gradient(to bottom, #ffddca 0px, #ffddca 450rpx, #f5f5f5 450rpx, #f5f5f5 100%);
min-height: 100vh;
padding-bottom: 120rpx;
/* 为底部导航留出空间 */
max-width: 750rpx;
margin: 0 auto;
z-index: -2;
}

View File

@ -1,116 +0,0 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const _sfc_main = {
name: "LeasePage",
data() {
return {
formData: {
name: "张珊珊",
phone: "",
address: "",
detailAddress: "",
equipment: "",
period: "1年"
},
currentLocation: {
company: "福鼎创特物联科技有限公司",
address: "福建宁德市福鼎市"
},
showDetails: false,
totalAmount: "100.10"
};
},
methods: {
selectAddress() {
common_vendor.index.showToast({
title: "选择地址功能",
icon: "none"
});
},
useCurrentLocation() {
this.formData.address = this.currentLocation.company + " " + this.currentLocation.address;
common_vendor.index.showToast({
title: "已使用当前定位",
icon: "success"
});
},
selectEquipment() {
common_vendor.index.showActionSheet({
itemList: ["节能灶", "燃烧器", "燃气灶", "电磁炉"],
success: (res) => {
const equipmentList = ["节能灶", "燃烧器", "燃气灶", "电磁炉"];
this.formData.equipment = equipmentList[res.tapIndex];
}
});
},
selectPeriod() {
common_vendor.index.showActionSheet({
itemList: ["1个月", "3个月", "6个月", "1年", "2年"],
success: (res) => {
const periodList = ["1个月", "3个月", "6个月", "1年", "2年"];
this.formData.period = periodList[res.tapIndex];
}
});
},
toggleDetails() {
this.showDetails = !this.showDetails;
},
handlePayment() {
common_vendor.index.showModal({
title: "确认支付",
content: `确认支付 ¥${this.totalAmount} 吗?`,
success: (res) => {
if (res.confirm) {
common_vendor.index.showToast({
title: "支付成功",
icon: "success"
});
}
}
});
},
// 页面跳转现在由系统tabBar处理
goToHome() {
common_vendor.index.switchTab({
url: "/pages/index/index"
});
},
goToProfile() {
common_vendor.index.switchTab({
url: "/pages/profile/profile"
});
}
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return common_vendor.e({
a: $data.formData.name,
b: common_vendor.o(($event) => $data.formData.name = $event.detail.value),
c: $data.formData.phone,
d: common_vendor.o(($event) => $data.formData.phone = $event.detail.value),
e: common_vendor.t($data.formData.address || "选择收货地址"),
f: common_vendor.o((...args) => $options.selectAddress && $options.selectAddress(...args)),
g: $data.currentLocation
}, $data.currentLocation ? {
h: common_vendor.t($data.currentLocation.company),
i: common_vendor.t($data.currentLocation.address),
j: common_vendor.o((...args) => $options.useCurrentLocation && $options.useCurrentLocation(...args))
} : {}, {
k: $data.formData.detailAddress,
l: common_vendor.o(($event) => $data.formData.detailAddress = $event.detail.value),
m: common_vendor.t($data.formData.equipment || "选择设备类型"),
n: common_vendor.o((...args) => $options.selectEquipment && $options.selectEquipment(...args)),
o: common_vendor.t($data.formData.period || "1年"),
p: common_vendor.o((...args) => $options.selectPeriod && $options.selectPeriod(...args)),
q: common_vendor.t($data.totalAmount),
r: common_vendor.o((...args) => $options.handlePayment && $options.handlePayment(...args)),
s: $data.showDetails ? 1 : "",
t: common_vendor.o((...args) => $options.toggleDetails && $options.toggleDetails(...args)),
v: $data.showDetails
}, $data.showDetails ? {
w: common_vendor.t($data.totalAmount)
} : {});
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-45bce28e"]]);
wx.createPage(MiniProgramPage);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/lease/lease.js.map

View File

@ -1,5 +0,0 @@
{
"navigationBarTitleText": "租赁申请",
"navigationStyle": "custom",
"usingComponents": {}
}

View File

@ -1 +0,0 @@
<view class="lease-page data-v-45bce28e"><view class="status-bar data-v-45bce28e"><text class="time data-v-45bce28e">9:41</text><view class="status-icons data-v-45bce28e"><text class="signal data-v-45bce28e">📶</text><text class="wifi data-v-45bce28e">📶</text><text class="battery data-v-45bce28e">🔋</text></view></view><view class="header data-v-45bce28e"><view class="header-content data-v-45bce28e"><view class="title-section data-v-45bce28e"><text class="page-title data-v-45bce28e">租赁申请</text><view class="header-actions data-v-45bce28e"><text class="action-icon data-v-45bce28e">⋯</text><text class="action-icon data-v-45bce28e">🎯</text></view></view><view class="product-info data-v-45bce28e"><text class="product-name data-v-45bce28e">渝锦汇节能灶燃烧器</text><text class="product-slogan data-v-45bce28e">租来节能,灶就省钱</text></view><view class="header-graphic data-v-45bce28e"><view class="flame-graphic data-v-45bce28e"></view></view></view></view><view class="main-content data-v-45bce28e"><view class="form-section data-v-45bce28e"><view class="section-header data-v-45bce28e"><view class="section-indicator data-v-45bce28e"></view><text class="section-title data-v-45bce28e">填写租赁信息</text></view><view class="form-fields data-v-45bce28e"><view class="form-item data-v-45bce28e"><text class="field-label data-v-45bce28e">姓名</text><input class="field-input data-v-45bce28e" placeholder="请输入姓名" value="{{a}}" bindinput="{{b}}"/></view><view class="form-item data-v-45bce28e"><text class="field-label data-v-45bce28e">手机号</text><input class="field-input data-v-45bce28e" placeholder="请填写手机号" type="number" value="{{c}}" bindinput="{{d}}"/></view><view class="form-item data-v-45bce28e"><text class="field-label data-v-45bce28e">地址</text><view class="address-selector data-v-45bce28e" bindtap="{{f}}"><text class="address-text data-v-45bce28e">{{e}}</text><text class="map-icon data-v-45bce28e">📍</text></view></view><view wx:if="{{g}}" class="location-info data-v-45bce28e"><view class="location-details data-v-45bce28e"><text class="location-title data-v-45bce28e">当前定位:{{h}}</text><text class="location-address data-v-45bce28e">{{i}}</text></view><button class="use-location-btn data-v-45bce28e" bindtap="{{j}}">使用</button></view><view class="form-item data-v-45bce28e"><text class="field-label data-v-45bce28e">详细位置</text><input class="field-input data-v-45bce28e" placeholder="例:6栋201室" value="{{k}}" bindinput="{{l}}"/></view><view class="form-item data-v-45bce28e"><text class="field-label data-v-45bce28e">租赁设备</text><view class="selector data-v-45bce28e" bindtap="{{n}}"><text class="selector-text data-v-45bce28e">{{m}}</text><text class="arrow-icon data-v-45bce28e">></text></view></view><view class="form-item data-v-45bce28e"><text class="field-label data-v-45bce28e">租赁周期</text><view class="selector data-v-45bce28e" bindtap="{{p}}"><text class="selector-text data-v-45bce28e">{{o}}</text><text class="arrow-icon data-v-45bce28e">></text></view></view></view></view><view class="payment-section data-v-45bce28e"><button class="pay-button data-v-45bce28e" bindtap="{{r}}"> 立即支付 ¥{{q}}</button><view class="payment-details data-v-45bce28e"><view class="details-header data-v-45bce28e" bindtap="{{t}}"><text class="details-title data-v-45bce28e">明细</text><text class="{{['details-arrow', 'data-v-45bce28e', s && 'expanded']}}">▼</text></view><view wx:if="{{v}}" class="details-content data-v-45bce28e"><view class="detail-item data-v-45bce28e"><text class="detail-label data-v-45bce28e">租金</text><text class="detail-value data-v-45bce28e">¥{{w}}</text></view></view></view></view></view></view>

View File

@ -1,277 +0,0 @@
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场https://ext.dcloud.net.cn上很多三方插件均使用了这些样式变量
* 如果你是插件开发者建议你使用scss预处理并在插件代码中直接使用这些变量无需 import 这个文件方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者插件使用者你可以通过修改这些变量来定制自己的插件主题实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
.lease-page.data-v-45bce28e {
min-height: 100vh;
background: linear-gradient(135deg, #ff9a9e 0%, #fecfef 100%);
position: relative;
}
.status-bar.data-v-45bce28e {
display: flex;
justify-content: space-between;
align-items: center;
padding: 20rpx 40rpx;
color: #fff;
font-size: 28rpx;
}
.status-bar .status-icons.data-v-45bce28e {
display: flex;
gap: 10rpx;
}
.header.data-v-45bce28e {
padding: 40rpx;
color: #fff;
}
.header .header-content.data-v-45bce28e {
position: relative;
}
.header .title-section.data-v-45bce28e {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 40rpx;
}
.header .title-section .page-title.data-v-45bce28e {
font-size: 36rpx;
font-weight: bold;
}
.header .title-section .header-actions.data-v-45bce28e {
display: flex;
gap: 20rpx;
}
.header .title-section .header-actions .action-icon.data-v-45bce28e {
font-size: 32rpx;
width: 60rpx;
height: 60rpx;
background: rgba(255, 255, 255, 0.2);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
}
.header .product-info.data-v-45bce28e {
margin-bottom: 40rpx;
}
.header .product-info .product-name.data-v-45bce28e {
display: block;
font-size: 48rpx;
font-weight: bold;
margin-bottom: 20rpx;
}
.header .product-info .product-slogan.data-v-45bce28e {
font-size: 28rpx;
color: #ff6b35;
}
.header .header-graphic.data-v-45bce28e {
position: absolute;
right: 0;
top: 0;
}
.header .header-graphic .flame-graphic.data-v-45bce28e {
width: 120rpx;
height: 120rpx;
background: radial-gradient(circle, #ff6b35 0%, #ff9a9e 100%);
border-radius: 50%;
box-shadow: 0 0 40rpx rgba(255, 107, 53, 0.6);
animation: pulse-45bce28e 2s infinite;
}
.main-content.data-v-45bce28e {
background: #fff;
border-radius: 40rpx 40rpx 0 0;
margin-top: -20rpx;
padding: 40rpx;
min-height: 60vh;
}
.form-section.data-v-45bce28e {
margin-bottom: 60rpx;
}
.form-section .section-header.data-v-45bce28e {
display: flex;
align-items: center;
margin-bottom: 40rpx;
}
.form-section .section-header .section-indicator.data-v-45bce28e {
width: 8rpx;
height: 40rpx;
background: #ff4757;
border-radius: 4rpx;
margin-right: 20rpx;
}
.form-section .section-header .section-title.data-v-45bce28e {
font-size: 32rpx;
font-weight: bold;
color: #333;
}
.form-fields .form-item.data-v-45bce28e {
margin-bottom: 40rpx;
}
.form-fields .form-item .field-label.data-v-45bce28e {
display: block;
font-size: 28rpx;
color: #333;
margin-bottom: 20rpx;
font-weight: 500;
}
.form-fields .form-item .field-input.data-v-45bce28e {
width: 100%;
height: 80rpx;
border: 2rpx solid #e0e0e0;
border-radius: 12rpx;
padding: 0 20rpx;
font-size: 28rpx;
background: #f8f9fa;
}
.form-fields .form-item .field-input.data-v-45bce28e:focus {
border-color: #ff9a9e;
background: #fff;
}
.address-selector.data-v-45bce28e {
display: flex;
justify-content: space-between;
align-items: center;
height: 80rpx;
border: 2rpx solid #e0e0e0;
border-radius: 12rpx;
padding: 0 20rpx;
background: #f8f9fa;
}
.address-selector .address-text.data-v-45bce28e {
font-size: 28rpx;
color: #666;
}
.address-selector .map-icon.data-v-45bce28e {
font-size: 32rpx;
}
.location-info.data-v-45bce28e {
display: flex;
justify-content: space-between;
align-items: center;
background: #f5f5f5;
border-radius: 12rpx;
padding: 20rpx;
margin-bottom: 40rpx;
}
.location-info .location-details.data-v-45bce28e {
flex: 1;
}
.location-info .location-details .location-title.data-v-45bce28e {
display: block;
font-size: 26rpx;
color: #333;
margin-bottom: 10rpx;
}
.location-info .location-details .location-address.data-v-45bce28e {
font-size: 24rpx;
color: #666;
}
.location-info .use-location-btn.data-v-45bce28e {
background: #ff9a9e;
color: #fff;
border: none;
border-radius: 20rpx;
padding: 10rpx 30rpx;
font-size: 24rpx;
}
.selector.data-v-45bce28e {
display: flex;
justify-content: space-between;
align-items: center;
height: 80rpx;
border: 2rpx solid #e0e0e0;
border-radius: 12rpx;
padding: 0 20rpx;
background: #f8f9fa;
}
.selector .selector-text.data-v-45bce28e {
font-size: 28rpx;
color: #666;
}
.selector .arrow-icon.data-v-45bce28e {
font-size: 24rpx;
color: #999;
}
.payment-section .pay-button.data-v-45bce28e {
width: 100%;
height: 100rpx;
background: linear-gradient(135deg, #ff9a9e 0%, #fecfef 100%);
color: #fff;
border: none;
border-radius: 50rpx;
font-size: 32rpx;
font-weight: bold;
margin-bottom: 40rpx;
box-shadow: 0 10rpx 30rpx rgba(255, 154, 158, 0.3);
}
.payment-section .payment-details .details-header.data-v-45bce28e {
display: flex;
justify-content: space-between;
align-items: center;
padding: 20rpx 0;
border-bottom: 2rpx solid #f0f0f0;
}
.payment-section .payment-details .details-header .details-title.data-v-45bce28e {
font-size: 28rpx;
color: #333;
}
.payment-section .payment-details .details-header .details-arrow.data-v-45bce28e {
font-size: 24rpx;
color: #999;
transition: transform 0.3s;
}
.payment-section .payment-details .details-header .details-arrow.expanded.data-v-45bce28e {
transform: rotate(180deg);
}
.payment-section .payment-details .details-content.data-v-45bce28e {
padding: 20rpx 0;
}
.payment-section .payment-details .details-content .detail-item.data-v-45bce28e {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20rpx;
}
.payment-section .payment-details .details-content .detail-item .detail-label.data-v-45bce28e {
font-size: 28rpx;
color: #333;
}
.payment-section .payment-details .details-content .detail-item .detail-value.data-v-45bce28e {
font-size: 28rpx;
color: #ff4757;
font-weight: bold;
}
@keyframes pulse-45bce28e {
0% {
transform: scale(1);
opacity: 1;
}
50% {
transform: scale(1.1);
opacity: 0.8;
}
100% {
transform: scale(1);
opacity: 1;
}
}

View File

@ -1,247 +0,0 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const utils_router = require("../../utils/router.js");
const api_auth_auth = require("../../api/auth/auth.js");
require("../../utils/request.js");
const api_article_article = require("../../api/article/article.js");
const enum_commonEnum = require("../../enum/commonEnum.js");
const utils_loadingManager = require("../../utils/loading-manager.js");
const _sfc_main = {
data() {
return {
loginLoading: false,
hasAgreed: false,
hasReadServiceTerms: false,
hasReadPrivacyPolicy: false,
showServiceTermsPopup: false,
showPrivacyPolicyPopup: false,
serviceTermsContent: "",
privacyPolicyContent: "",
scrollTop: 0
};
},
computed: {
CommonEnum() {
return enum_commonEnum.commonEnum;
}
},
onLoad() {
this.pageLoading = new utils_loadingManager.AutoLoadingManager();
},
onUnload() {
utils_loadingManager.forceHideLoading();
if (this.pageLoading) {
this.pageLoading.destroy();
}
},
methods: {
toggleAgreement() {
if (this.hasReadServiceTerms && this.hasReadPrivacyPolicy) {
this.hasAgreed = !this.hasAgreed;
} else {
common_vendor.index.showToast({
title: "请先阅读服务条款和隐私政策",
icon: "none"
});
}
},
async showServiceTerms() {
try {
const res = await api_article_article.getServiceTerms();
if (res.code === 200 && res.data) {
let content = res.data.content || "暂无服务条款内容";
content = content.replace(/\n/g, "<br/>");
content = `<div style="word-wrap: break-word; word-break: break-all; line-height: 1.8; font-size: 28rpx; color: #333; padding: 0; margin: 0;">${content}</div>`;
this.serviceTermsContent = content;
this.showServiceTermsPopup = true;
this.scrollTop = 0;
} else {
common_vendor.index.showToast({
title: "获取服务条款失败",
icon: "none"
});
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/login/login.vue:140", "获取服务条款失败:", error);
common_vendor.index.showToast({
title: "获取服务条款失败",
icon: "none"
});
}
},
async showPrivacyPolicy() {
try {
const res = await api_article_article.getPrivacyPolicy();
if (res.code === 200 && res.data) {
let content = res.data.content || "暂无隐私政策内容";
content = content.replace(/\n/g, "<br/>");
content = `<div style="word-wrap: break-word; word-break: break-all; line-height: 1.8; font-size: 28rpx; color: #333; padding: 0; margin: 0;">${content}</div>`;
this.privacyPolicyContent = content;
this.showPrivacyPolicyPopup = true;
this.scrollTop = 0;
} else {
common_vendor.index.showToast({
title: "获取隐私政策失败",
icon: "none"
});
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/login/login.vue:165", "获取隐私政策失败:", error);
common_vendor.index.showToast({
title: "获取隐私政策失败",
icon: "none"
});
}
},
closeServiceTermsPopup() {
this.showServiceTermsPopup = false;
},
closePrivacyPolicyPopup() {
this.showPrivacyPolicyPopup = false;
},
async agreeServiceTerms() {
this.hasReadServiceTerms = true;
this.closeServiceTermsPopup();
this.checkAgreementStatus();
if (!this.hasReadPrivacyPolicy) {
setTimeout(() => {
this.showPrivacyPolicy();
}, 500);
}
},
async agreePrivacyPolicy() {
this.hasReadPrivacyPolicy = true;
this.closePrivacyPolicyPopup();
this.checkAgreementStatus();
if (!this.hasReadServiceTerms) {
setTimeout(() => {
this.showServiceTerms();
}, 500);
}
},
checkAgreementStatus() {
if (this.hasReadServiceTerms && this.hasReadPrivacyPolicy) {
this.hasAgreed = true;
}
},
async showUnreadTerms() {
if (!this.hasReadServiceTerms) {
await this.showServiceTerms();
return;
}
if (!this.hasReadPrivacyPolicy) {
await this.showPrivacyPolicy();
return;
}
},
getPhoneNumber() {
if (!this.hasReadServiceTerms || !this.hasReadPrivacyPolicy) {
common_vendor.index.showToast({
title: "请先阅读服务条款和隐私政策",
icon: "none",
duration: 2e3
});
this.showUnreadTerms();
return;
}
const that = this;
common_vendor.index.login({
success(res) {
if (res.code) {
common_vendor.index.__f__("log", "at pages/login/login.vue:239", "登录!", res);
const data = {
loginCode: res.code,
appId: 1
};
if (that.pageLoading) {
that.pageLoading.show("登录中...");
}
api_auth_auth.wxLogin(data).then((res2) => {
if (that.pageLoading) {
that.pageLoading.hide();
}
utils_loadingManager.forceHideLoading();
if (res2.code == 200) {
common_vendor.index.__f__("log", "at pages/login/login.vue:257", res2, "resres");
common_vendor.index.setStorageSync("token", res2.token);
common_vendor.index.showToast({
title: "登录成功",
icon: "success",
duration: 1500
});
setTimeout(() => {
that.ceshi();
}, 1500);
} else {
common_vendor.index.showToast({
title: res2.msg || "登录失败",
icon: "none"
});
}
}).catch((error) => {
if (that.pageLoading) {
that.pageLoading.hide();
}
utils_loadingManager.forceHideLoading();
common_vendor.index.__f__("error", "at pages/login/login.vue:280", "登录失败:", error);
common_vendor.index.showToast({
title: "登录失败",
icon: "none"
});
});
}
},
fail(err) {
common_vendor.index.__f__("error", "at pages/login/login.vue:289", "微信登录失败:", err);
common_vendor.index.showToast({
title: "微信登录失败",
icon: "none"
});
}
});
},
async ceshi() {
if (this.pageLoading) {
this.pageLoading.hide();
}
utils_loadingManager.forceHideLoading();
utils_router.navigateToPage("index");
}
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return common_vendor.e({
a: $options.CommonEnum.LOGIN_SRC,
b: common_vendor.t($data.loginLoading ? "登录中..." : "微信用户一键登录"),
c: common_vendor.o((...args) => $options.getPhoneNumber && $options.getPhoneNumber(...args)),
d: $data.loginLoading,
e: $data.hasAgreed
}, $data.hasAgreed ? {} : {}, {
f: $data.hasAgreed ? 1 : "",
g: common_vendor.o((...args) => $options.toggleAgreement && $options.toggleAgreement(...args)),
h: common_vendor.o((...args) => $options.showServiceTerms && $options.showServiceTerms(...args)),
i: common_vendor.o((...args) => $options.showPrivacyPolicy && $options.showPrivacyPolicy(...args)),
j: $data.showServiceTermsPopup
}, $data.showServiceTermsPopup ? {
k: common_vendor.o((...args) => $options.closeServiceTermsPopup && $options.closeServiceTermsPopup(...args)),
l: $data.serviceTermsContent,
m: $data.scrollTop,
n: common_vendor.o((...args) => $options.agreeServiceTerms && $options.agreeServiceTerms(...args)),
o: common_vendor.o(() => {
}),
p: common_vendor.o((...args) => $options.closeServiceTermsPopup && $options.closeServiceTermsPopup(...args))
} : {}, {
q: $data.showPrivacyPolicyPopup
}, $data.showPrivacyPolicyPopup ? {
r: common_vendor.o((...args) => $options.closePrivacyPolicyPopup && $options.closePrivacyPolicyPopup(...args)),
s: $data.privacyPolicyContent,
t: $data.scrollTop,
v: common_vendor.o((...args) => $options.agreePrivacyPolicy && $options.agreePrivacyPolicy(...args)),
w: common_vendor.o(() => {
}),
x: common_vendor.o((...args) => $options.closePrivacyPolicyPopup && $options.closePrivacyPolicyPopup(...args))
} : {});
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]);
wx.createPage(MiniProgramPage);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/login/login.js.map

View File

@ -1,4 +0,0 @@
{
"navigationStyle": "custom",
"usingComponents": {}
}

View File

@ -1 +0,0 @@
<view class="login-container"><view class="logo-section"><image src="{{a}}" class="logo-image"></image></view><view class="main-content"><button class="login-btn" bindtap="{{c}}" disabled="{{d}}"><text class="btn-text">{{b}}</text></button></view><view class="agreement-section"><view class="agreement-checkbox" bindtap="{{g}}"><view class="{{['checkbox', f && 'checked']}}"><text wx:if="{{e}}" class="checkmark">✓</text></view></view><text class="agreement-text">我已阅读并同意</text><text class="agreement-link" bindtap="{{h}}">《服务协议》</text><text class="agreement-text">与</text><text class="agreement-link" bindtap="{{i}}">《隐私政策》</text></view><view wx:if="{{j}}" class="popup-overlay" bindtap="{{p}}"><view class="popup-content" catchtap="{{o}}"><view class="popup-header"><text class="popup-title">服务条款</text><text class="popup-close" bindtap="{{k}}">×</text></view><scroll-view class="popup-body" scroll-y="true" scroll-top="{{m}}" show-scrollbar="true"><view class="terms-content"><rich-text nodes="{{l}}"></rich-text></view></scroll-view><view class="popup-footer"><text class="popup-tip">请仔细阅读服务条款,阅读完毕后点击同意</text><button class="popup-btn" bindtap="{{n}}">同意</button></view></view></view><view wx:if="{{q}}" class="popup-overlay" bindtap="{{x}}"><view class="popup-content" catchtap="{{w}}"><view class="popup-header"><text class="popup-title">隐私政策</text><text class="popup-close" bindtap="{{r}}">×</text></view><scroll-view class="popup-body" scroll-y="true" scroll-top="{{t}}" show-scrollbar="true"><view class="terms-content"><rich-text nodes="{{s}}"></rich-text></view></scroll-view><view class="popup-footer"><text class="popup-tip">请仔细阅读隐私政策,阅读完毕后点击同意</text><button class="popup-btn" bindtap="{{v}}">同意</button></view></view></view></view>

View File

@ -1,205 +0,0 @@
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场https://ext.dcloud.net.cn上很多三方插件均使用了这些样式变量
* 如果你是插件开发者建议你使用scss预处理并在插件代码中直接使用这些变量无需 import 这个文件方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者插件使用者你可以通过修改这些变量来定制自己的插件主题实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
page {
background: #ffffff;
}
.login-container {
padding-bottom: 40rpx;
max-width: 750rpx;
background: #ffffff;
}
.logo-section {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
margin-bottom: 80rpx;
width: 100%;
margin-top: 330rpx;
}
.logo-image {
width: 276rpx;
height: 276rpx;
}
.main-content {
padding: 0 53rpx;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
margin-top: 654rpx;
}
.login-btn {
width: 100%;
height: 98rpx;
background: #f15a04;
border-radius: 10rpx;
border: none;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.3s ease;
box-shadow: 0 4rpx 12rpx rgba(255, 107, 53, 0.3);
}
.login-btn:active {
transform: translateY(2rpx);
box-shadow: 0 2rpx 8rpx rgba(255, 107, 53, 0.3);
}
.login-btn:disabled {
background: #ccc;
box-shadow: none;
}
.btn-text {
font-size: 32rpx;
font-weight: 600;
color: #fff;
}
.agreement-section {
display: flex;
align-items: center;
justify-content: center;
gap: 8rpx;
padding: 30rpx;
margin-top: 40rpx;
flex-wrap: wrap;
}
.agreement-checkbox {
display: flex;
align-items: center;
}
.checkbox {
width: 28rpx;
height: 28rpx;
border: 2rpx solid #ff6b35;
border-radius: 6rpx;
display: flex;
align-items: center;
justify-content: center;
background: #fff;
transition: all 0.3s ease;
}
.checkbox.checked {
background: #ff6b35;
border-color: #ff6b35;
}
.checkmark {
color: #fff;
font-size: 18rpx;
font-weight: bold;
}
.agreement-text {
font-size: 24rpx;
color: #666;
}
.agreement-link {
font-size: 24rpx;
color: #ff6b35;
text-decoration: underline;
}
.popup-overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
z-index: 1000;
display: flex;
align-items: center;
justify-content: center;
padding: 40rpx;
box-sizing: border-box;
}
.popup-content {
background: #fff;
border-radius: 20rpx;
overflow: hidden;
display: flex;
flex-direction: column;
width: 100%;
max-width: 680rpx;
height: 85vh;
max-height: 900rpx;
min-height: 600rpx;
margin: 0;
}
.popup-header {
padding: 30rpx;
border-bottom: 1rpx solid #eee;
display: flex;
align-items: center;
justify-content: space-between;
flex-shrink: 0;
}
.popup-title {
font-size: 32rpx;
font-weight: 500;
color: #333;
}
.popup-close {
font-size: 40rpx;
color: #999;
cursor: pointer;
padding: 10rpx;
}
.popup-body {
flex: 1;
padding: 30rpx;
overflow: hidden;
position: relative;
height: 0;
}
.terms-content {
line-height: 1.8;
font-size: 28rpx;
color: #333;
word-wrap: break-word;
word-break: break-all;
padding-bottom: 20rpx;
}
.popup-footer {
padding: 30rpx;
border-top: 1rpx solid #eee;
display: flex;
flex-direction: column;
align-items: center;
flex-shrink: 0;
}
.popup-tip {
font-size: 24rpx;
color: #999;
margin-bottom: 20rpx;
text-align: center;
}
.popup-btn {
width: 200rpx;
height: 70rpx;
background: linear-gradient(135deg, #ff9a9e 0%, #fecfef 100%);
border-radius: 35rpx;
font-size: 28rpx;
color: #ffffff;
border: none;
}

View File

@ -1,90 +0,0 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const _sfc_main = {
name: "ProfilePage",
data() {
return {
userInfo: {
name: "张珊珊",
phone: "138****8888",
avatar: "张"
},
stats: {
leaseCount: 2,
totalRent: "¥200.20",
leaseDays: 365
}
};
},
methods: {
goToMyLeases() {
common_vendor.index.showToast({
title: "我的租赁",
icon: "none"
});
},
goToPayments() {
common_vendor.index.showToast({
title: "支付记录",
icon: "none"
});
},
goToAddress() {
common_vendor.index.showToast({
title: "收货地址",
icon: "none"
});
},
goToSettings() {
common_vendor.index.showToast({
title: "设置",
icon: "none"
});
},
goToHelp() {
common_vendor.index.showToast({
title: "帮助中心",
icon: "none"
});
},
goToAbout() {
common_vendor.index.showToast({
title: "关于我们",
icon: "none"
});
},
handleLogout() {
common_vendor.index.showModal({
title: "确认退出",
content: "确定要退出登录吗?",
success: (res) => {
if (res.confirm) {
common_vendor.index.showToast({
title: "已退出登录",
icon: "success"
});
setTimeout(() => {
common_vendor.index.reLaunch({
url: "/pages/login/login"
});
}, 1500);
}
}
});
}
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: common_vendor.o((...args) => $options.goToMyLeases && $options.goToMyLeases(...args)),
b: common_vendor.o((...args) => $options.goToPayments && $options.goToPayments(...args)),
c: common_vendor.o((...args) => $options.goToAddress && $options.goToAddress(...args)),
d: common_vendor.o((...args) => $options.goToSettings && $options.goToSettings(...args)),
e: common_vendor.o((...args) => $options.goToHelp && $options.goToHelp(...args)),
f: common_vendor.o((...args) => $options.goToAbout && $options.goToAbout(...args)),
g: common_vendor.o((...args) => $options.handleLogout && $options.handleLogout(...args))
};
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-dd383ca2"]]);
wx.createPage(MiniProgramPage);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/profile/profile.js.map

View File

@ -1,5 +0,0 @@
{
"navigationBarTitleText": "个人中心",
"navigationStyle": "custom",
"usingComponents": {}
}

View File

@ -1 +0,0 @@
<view class="profile-page data-v-dd383ca2"><view class="status-bar data-v-dd383ca2"><text class="time data-v-dd383ca2">9:41</text><view class="status-icons data-v-dd383ca2"><text class="signal data-v-dd383ca2">📶</text><text class="wifi data-v-dd383ca2">📶</text><text class="battery data-v-dd383ca2">🔋</text></view></view><view class="user-header data-v-dd383ca2"><view class="user-info data-v-dd383ca2"><view class="avatar data-v-dd383ca2"><text class="avatar-text data-v-dd383ca2">张</text></view><view class="user-details data-v-dd383ca2"><text class="user-name data-v-dd383ca2">张珊珊</text><text class="user-phone data-v-dd383ca2">138****8888</text></view></view><view class="edit-btn data-v-dd383ca2"><text class="edit-icon data-v-dd383ca2">✏️</text></view></view><view class="stats-section data-v-dd383ca2"><view class="stat-item data-v-dd383ca2"><text class="stat-number data-v-dd383ca2">2</text><text class="stat-label data-v-dd383ca2">租赁设备</text></view><view class="stat-item data-v-dd383ca2"><text class="stat-number data-v-dd383ca2">¥200.20</text><text class="stat-label data-v-dd383ca2">累计租金</text></view><view class="stat-item data-v-dd383ca2"><text class="stat-number data-v-dd383ca2">365</text><text class="stat-label data-v-dd383ca2">租赁天数</text></view></view><view class="menu-section data-v-dd383ca2"><view class="menu-group data-v-dd383ca2"><view class="menu-item data-v-dd383ca2" bindtap="{{a}}"><view class="menu-left data-v-dd383ca2"><text class="menu-icon data-v-dd383ca2">📋</text><text class="menu-title data-v-dd383ca2">我的租赁</text></view><text class="menu-arrow data-v-dd383ca2">></text></view><view class="menu-item data-v-dd383ca2" bindtap="{{b}}"><view class="menu-left data-v-dd383ca2"><text class="menu-icon data-v-dd383ca2">💰</text><text class="menu-title data-v-dd383ca2">支付记录</text></view><text class="menu-arrow data-v-dd383ca2">></text></view><view class="menu-item data-v-dd383ca2" bindtap="{{c}}"><view class="menu-left data-v-dd383ca2"><text class="menu-icon data-v-dd383ca2">📍</text><text class="menu-title data-v-dd383ca2">收货地址</text></view><text class="menu-arrow data-v-dd383ca2">></text></view></view><view class="menu-group data-v-dd383ca2"><view class="menu-item data-v-dd383ca2" bindtap="{{d}}"><view class="menu-left data-v-dd383ca2"><text class="menu-icon data-v-dd383ca2">⚙️</text><text class="menu-title data-v-dd383ca2">设置</text></view><text class="menu-arrow data-v-dd383ca2">></text></view><view class="menu-item data-v-dd383ca2" bindtap="{{e}}"><view class="menu-left data-v-dd383ca2"><text class="menu-icon data-v-dd383ca2">❓</text><text class="menu-title data-v-dd383ca2">帮助中心</text></view><text class="menu-arrow data-v-dd383ca2">></text></view><view class="menu-item data-v-dd383ca2" bindtap="{{f}}"><view class="menu-left data-v-dd383ca2"><text class="menu-icon data-v-dd383ca2"></text><text class="menu-title data-v-dd383ca2">关于我们</text></view><text class="menu-arrow data-v-dd383ca2">></text></view></view></view><view class="logout-section data-v-dd383ca2"><button class="logout-btn data-v-dd383ca2" bindtap="{{g}}">退出登录</button></view></view>

View File

@ -1,171 +0,0 @@
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场https://ext.dcloud.net.cn上很多三方插件均使用了这些样式变量
* 如果你是插件开发者建议你使用scss预处理并在插件代码中直接使用这些变量无需 import 这个文件方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者插件使用者你可以通过修改这些变量来定制自己的插件主题实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
.profile-page.data-v-dd383ca2 {
min-height: 100vh;
background: linear-gradient(135deg, #ff9a9e 0%, #fecfef 100%);
padding-bottom: 120rpx;
/* 为tabBar留出空间 */
}
.status-bar.data-v-dd383ca2 {
display: flex;
justify-content: space-between;
align-items: center;
padding: 20rpx 40rpx;
color: #fff;
font-size: 28rpx;
}
.status-bar .status-icons.data-v-dd383ca2 {
display: flex;
gap: 10rpx;
}
.user-header.data-v-dd383ca2 {
display: flex;
justify-content: space-between;
align-items: center;
padding: 40rpx;
color: #fff;
}
.user-header .user-info.data-v-dd383ca2 {
display: flex;
align-items: center;
}
.user-header .user-info .avatar.data-v-dd383ca2 {
width: 120rpx;
height: 120rpx;
background: rgba(255, 255, 255, 0.2);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin-right: 30rpx;
}
.user-header .user-info .avatar .avatar-text.data-v-dd383ca2 {
font-size: 48rpx;
font-weight: bold;
color: #fff;
}
.user-header .user-info .user-details .user-name.data-v-dd383ca2 {
display: block;
font-size: 36rpx;
font-weight: bold;
margin-bottom: 10rpx;
}
.user-header .user-info .user-details .user-phone.data-v-dd383ca2 {
font-size: 28rpx;
opacity: 0.8;
}
.user-header .edit-btn.data-v-dd383ca2 {
width: 60rpx;
height: 60rpx;
background: rgba(255, 255, 255, 0.2);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
}
.user-header .edit-btn .edit-icon.data-v-dd383ca2 {
font-size: 32rpx;
}
.stats-section.data-v-dd383ca2 {
background: #fff;
margin: 0 40rpx;
border-radius: 20rpx;
padding: 40rpx;
display: flex;
justify-content: space-around;
box-shadow: 0 10rpx 30rpx rgba(0, 0, 0, 0.1);
}
.stats-section .stat-item.data-v-dd383ca2 {
display: flex;
flex-direction: column;
align-items: center;
}
.stats-section .stat-item .stat-number.data-v-dd383ca2 {
font-size: 36rpx;
font-weight: bold;
color: #ff9a9e;
margin-bottom: 10rpx;
}
.stats-section .stat-item .stat-label.data-v-dd383ca2 {
font-size: 24rpx;
color: #666;
}
.menu-section.data-v-dd383ca2 {
margin: 40rpx;
}
.menu-section .menu-group.data-v-dd383ca2 {
background: #fff;
border-radius: 20rpx;
margin-bottom: 30rpx;
overflow: hidden;
box-shadow: 0 5rpx 20rpx rgba(0, 0, 0, 0.05);
}
.menu-section .menu-group .menu-item.data-v-dd383ca2 {
display: flex;
justify-content: space-between;
align-items: center;
padding: 30rpx 40rpx;
border-bottom: 2rpx solid #f5f5f5;
}
.menu-section .menu-group .menu-item.data-v-dd383ca2:last-child {
border-bottom: none;
}
.menu-section .menu-group .menu-item .menu-left.data-v-dd383ca2 {
display: flex;
align-items: center;
}
.menu-section .menu-group .menu-item .menu-left .menu-icon.data-v-dd383ca2 {
font-size: 40rpx;
margin-right: 30rpx;
}
.menu-section .menu-group .menu-item .menu-left .menu-title.data-v-dd383ca2 {
font-size: 32rpx;
color: #333;
}
.menu-section .menu-group .menu-item .menu-arrow.data-v-dd383ca2 {
font-size: 28rpx;
color: #999;
}
.menu-section .menu-group .menu-item.data-v-dd383ca2:active {
background: #f8f9fa;
}
.logout-section.data-v-dd383ca2 {
margin: 40rpx;
}
.logout-section .logout-btn.data-v-dd383ca2 {
width: 100%;
height: 100rpx;
background: #fff;
color: #ff4757;
border: 2rpx solid #ff4757;
border-radius: 50rpx;
font-size: 32rpx;
font-weight: bold;
}
.logout-section .logout-btn.data-v-dd383ca2:active {
background: #ff4757;
color: #fff;
}

View File

@ -1,36 +0,0 @@
{
"description": "项目配置文件。",
"packOptions": {
"ignore": []
},
"setting": {
"urlCheck": false,
"es6": true,
"postcss": false,
"minified": false,
"newFeature": true,
"bigPackageSizeSupport": true
},
"compileType": "miniprogram",
"libVersion": "",
"appid": "wx303943e10cbe2743",
"projectname": "HomeLease",
"condition": {
"search": {
"current": -1,
"list": []
},
"conversation": {
"current": -1,
"list": []
},
"game": {
"current": -1,
"list": []
},
"miniprogram": {
"current": -1,
"list": []
}
}
}

View File

@ -1,29 +0,0 @@
{
"condition": {
"miniprogram": {
"list": [
{
"name": "pages/lease/lease",
"pathName": "pages/lease/lease",
"query": "",
"scene": null,
"launchMode": "default"
},
{
"name": "pages/login/login",
"pathName": "pages/login/login",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "pages/index/index",
"pathName": "pages/index/index",
"query": "",
"launchMode": "default",
"scene": null
}
]
}
}
}

View File

@ -1,25 +0,0 @@
<svg width="120" height="120" viewBox="0 0 120 120" xmlns="http://www.w3.org/2000/svg">
<!-- 燃烧器主体 -->
<circle cx="60" cy="60" r="50" fill="#e0e0e0" stroke="#999" stroke-width="3"/>
<!-- 内圈 -->
<circle cx="60" cy="60" r="35" fill="#d0d0d0" stroke="#666" stroke-width="2"/>
<!-- 中心孔 -->
<circle cx="60" cy="60" r="20" fill="#b0b0b0"/>
<!-- 火焰孔 -->
<circle cx="60" cy="25" r="3" fill="#FF5722"/>
<circle cx="60" cy="95" r="3" fill="#FF5722"/>
<circle cx="25" cy="60" r="3" fill="#FF5722"/>
<circle cx="95" cy="60" r="3" fill="#FF5722"/>
<!-- 火焰效果 -->
<path d="M 55 20 Q 60 15 65 20 Q 60 25 55 20" fill="#FF5722" opacity="0.8"/>
<path d="M 55 100 Q 60 95 65 100 Q 60 105 55 100" fill="#FF5722" opacity="0.8"/>
<path d="M 20 55 Q 15 60 20 65 Q 25 60 20 55" fill="#FF5722" opacity="0.8"/>
<path d="M 100 55 Q 95 60 100 65 Q 105 60 100 55" fill="#FF5722" opacity="0.8"/>
<!-- 装饰环 -->
<circle cx="60" cy="60" r="45" fill="none" stroke="#ccc" stroke-width="1" stroke-dasharray="5,5"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -1,55 +0,0 @@
/* 自定义TabBar样式 */
.uni-tabbar {
padding: 8px 0 4px 0;
box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.05);
}
.uni-tabbar-item {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 4px 0;
min-height: 50px;
}
.uni-tabbar-item__icon {
margin-bottom: 4px;
width: 24px;
height: 24px;
display: flex;
align-items: center;
justify-content: center;
}
.uni-tabbar-item__text {
font-size: 12px;
line-height: 1.2;
text-align: center;
margin-top: 2px;
}
/* 选中状态优化 */
.uni-tabbar-item--selected .uni-tabbar-item__text {
font-weight: 500;
}
/* 图标和文字间距 */
.uni-tabbar-item__icon + .uni-tabbar-item__text {
margin-top: 4px;
}
/* 整体间距优化 */
.uni-tabbar__list {
display: flex;
justify-content: space-around;
align-items: center;
padding: 0 20px;
}
/* 安全区域适配 */
@supports (padding-bottom: env(safe-area-inset-bottom)) {
.uni-tabbar {
padding-bottom: calc(4px + env(safe-area-inset-bottom));
}
}

View File

@ -1,37 +0,0 @@
# 图标文件说明
当前使用的图标已下载到本地,原始资源来自 `enum/commonEnum.js` 中定义的远程资源:
## 首页图标
- 未选中:`home.png` (原URL: https://api.ccttiot.com/image-1754981938495.png)
- 选中:`home-active.png` (原URL: https://api.ccttiot.com/image-1754981895711.png)
## 租赁图标
- 未选中:`rent.png` (原URL: https://api.ccttiot.com/image-1754981988082.png)
- 选中:`rent-active.png` (原URL: https://api.ccttiot.com/image-1754986634575.png)
## 个人中心图标
- 未选中:`profile.png` (原URL: https://api.ccttiot.com/image-1754986718771.png)
- 选中:`profile-active.png` (原URL: https://api.ccttiot.com/image-1754986763842.png)
## 图标配置
- 未选中颜色:`#999999`
- 选中颜色:`#ff6b6b`
- 背景色:`#ffffff`
- 边框样式:`white`
- 高度:`60px`
- 字体大小:`12px`
- 图标尺寸:`24px x 24px`
- 间距:`4px`
## 相关文件
- `pages.json` - tabBar配置
- `enum/commonEnum.js` - 图标资源定义
- `download-icons.js` - 图标下载脚本
- `static/css/tabbar.css` - 自定义tabBar样式
- `App.vue` - 全局样式引入
## 注意事项
- 微信小程序不支持在tabBar中使用网络图片
- 图标已下载到本地 `static/icons/` 目录
- 如需更新图标,请重新运行 `download-icons.js` 脚本

Binary file not shown.

Before

Width:  |  Height:  |  Size: 882 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 846 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -1,30 +0,0 @@
<svg width="200" height="150" viewBox="0 0 200 150" xmlns="http://www.w3.org/2000/svg">
<!-- 灶具主体 -->
<rect x="20" y="80" width="160" height="50" fill="#e0e0e0" stroke="#999" stroke-width="2"/>
<!-- 燃烧器1 -->
<circle cx="50" cy="105" r="15" fill="#d0d0d0" stroke="#666" stroke-width="1"/>
<circle cx="50" cy="105" r="8" fill="#b0b0b0"/>
<!-- 燃烧器2 -->
<circle cx="100" cy="105" r="15" fill="#d0d0d0" stroke="#666" stroke-width="1"/>
<circle cx="100" cy="105" r="8" fill="#b0b0b0"/>
<!-- 燃烧器3 -->
<circle cx="150" cy="105" r="15" fill="#d0d0d0" stroke="#666" stroke-width="1"/>
<circle cx="150" cy="105" r="8" fill="#b0b0b0"/>
<!-- 控制面板 -->
<rect x="30" y="40" width="140" height="30" fill="#f5f5f5" stroke="#ccc" stroke-width="1" rx="5"/>
<!-- 控制按钮 -->
<circle cx="50" cy="55" r="8" fill="#4CAF50"/>
<circle cx="80" cy="55" r="8" fill="#FF9800"/>
<circle cx="110" cy="55" r="8" fill="#2196F3"/>
<circle cx="140" cy="55" r="8" fill="#9C27B0"/>
<!-- 火焰效果 -->
<path d="M 45 90 Q 50 85 55 90 Q 50 95 45 90" fill="#FF5722" opacity="0.8"/>
<path d="M 95 90 Q 100 85 105 90 Q 100 95 95 90" fill="#FF5722" opacity="0.8"/>
<path d="M 145 90 Q 150 85 155 90 Q 150 95 145 90" fill="#FF5722" opacity="0.8"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -1,112 +0,0 @@
"use strict";
const common_vendor = require("../common/vendor.js");
const ENV_CONFIG = {
develop: {
loadingText: "开发环境加载中~",
loadingTime: 100
},
trial: {
loadingText: "体验版加载中~",
loadingTime: 100
},
release: {
loadingText: "加载中~",
loadingTime: 100
}
};
const getCurrentConfig = () => {
try {
const { envVersion } = common_vendor.wx$1.getAccountInfoSync().miniProgram;
common_vendor.index.__f__("log", "at utils/loading-manager.js:26", "当前环境:", envVersion);
return ENV_CONFIG[envVersion] || ENV_CONFIG.release;
} catch (error) {
common_vendor.index.__f__("warn", "at utils/loading-manager.js:29", "获取环境失败,默认使用正式环境:", error);
return ENV_CONFIG.release;
}
};
const config = getCurrentConfig();
let isLoading = false;
let loadingTimer = null;
let loadingCount = 0;
const setLoadingTimeout = () => {
if (loadingTimer) {
clearTimeout(loadingTimer);
}
loadingTimer = setTimeout(() => {
common_vendor.index.__f__("warn", "at utils/loading-manager.js:49", "Loading超时强制清除");
forceHideLoading();
}, 3e4);
};
function showLoading(text = config.loadingText) {
try {
loadingCount++;
if (!isLoading) {
isLoading = true;
common_vendor.index.showLoading({
title: text,
mask: true
});
setLoadingTimeout();
common_vendor.index.__f__("log", "at utils/loading-manager.js:69", "显示Loading:", text);
}
} catch (error) {
common_vendor.index.__f__("warn", "at utils/loading-manager.js:72", "显示loading失败:", error);
}
}
function hideLoading() {
try {
loadingCount--;
if (loadingCount > 0) {
common_vendor.index.__f__("log", "at utils/loading-manager.js:83", "还有其他请求在进行不隐藏Loading, 剩余请求数:", loadingCount);
return;
}
if (isLoading) {
isLoading = false;
if (loadingTimer) {
clearTimeout(loadingTimer);
loadingTimer = null;
}
common_vendor.index.hideLoading();
common_vendor.index.__f__("log", "at utils/loading-manager.js:94", "隐藏Loading");
}
} catch (error) {
common_vendor.index.__f__("warn", "at utils/loading-manager.js:97", "隐藏loading失败:", error);
}
}
function forceHideLoading() {
try {
isLoading = false;
loadingCount = 0;
if (loadingTimer) {
clearTimeout(loadingTimer);
loadingTimer = null;
}
common_vendor.index.hideLoading();
common_vendor.index.__f__("log", "at utils/loading-manager.js:113", "强制隐藏Loading");
} catch (error) {
common_vendor.index.__f__("warn", "at utils/loading-manager.js:115", "强制隐藏loading失败:", error);
}
}
class AutoLoadingManager {
constructor() {
this.isActive = false;
}
// 显示loading可选
show(text = "加载中...") {
this.isActive = true;
}
// 隐藏loading可选
hide() {
this.isActive = false;
}
// 销毁管理器
destroy() {
this.isActive = false;
}
}
exports.AutoLoadingManager = AutoLoadingManager;
exports.config = config;
exports.forceHideLoading = forceHideLoading;
exports.hideLoading = hideLoading;
exports.showLoading = showLoading;
//# sourceMappingURL=../../.sourcemap/mp-weixin/utils/loading-manager.js.map

View File

@ -1,221 +0,0 @@
"use strict";
const common_vendor = require("../common/vendor.js");
const config_dev = require("../config/dev.js");
const utils_loadingManager = require("./loading-manager.js");
const ENV_CONFIG = {
develop: {
// 开发环境
// baseUrl: 'http://192.168.2.136:4501',
baseUrl: "https://testlu.chuangtewl.com/prod-api",
appId: 1
// TODO: 根据实际后端配置调整
},
trial: {
// 体验版
baseUrl: "https://testlu.chuangtewl.com/prod-api",
appId: 1
// TODO: 根据实际后端配置调整
},
release: {
// 正式版
baseUrl: "https://testlu.chuangtewl.com/prod-api",
appId: 1
// TODO: 根据实际后端配置调整
}
};
const getCurrentConfig = () => {
try {
const { envVersion } = common_vendor.wx$1.getAccountInfoSync().miniProgram;
common_vendor.index.__f__("log", "at utils/request.js:41", "当前环境:", envVersion);
const envConfig = ENV_CONFIG[envVersion] || ENV_CONFIG.release;
return {
baseUrl: envConfig.baseUrl,
appId: envConfig.appId || 1
// 确保appId有默认值
};
} catch (error) {
common_vendor.index.__f__("warn", "at utils/request.js:49", "获取环境失败,默认使用正式环境:", error);
const fallbackConfig = ENV_CONFIG.release;
return {
baseUrl: fallbackConfig.baseUrl,
appId: fallbackConfig.appId || 1
// 确保appId有默认值
};
}
};
const config = getCurrentConfig();
const BASE_URL = config.baseUrl;
common_vendor.index.__f__("log", "at utils/request.js:62", "HTTP配置:", {
baseUrl: BASE_URL,
config
});
function getRequestHeaders(customHeader = {}) {
let token = common_vendor.index.getStorageSync("token");
if (!token) {
token = config_dev.getTempToken();
}
let authorization = token;
return {
"Content-Type": "application/json;charset=UTF-8",
Authorization: authorization,
...customHeader
};
}
function handleResponseError(res, reject, options = {}) {
var _a;
if (options.showLoading !== false) {
utils_loadingManager.hideLoading();
}
const errorMap = {
401: {
title: "登录已过期,请重新登录",
action: () => {
setTimeout(() => {
common_vendor.index.reLaunch({
url: "/pages/login/login"
});
}, 1500);
}
},
403: {
title: "权限不足",
action: () => {
}
},
404: {
title: "请求的资源不存在",
action: () => {
}
},
500: {
title: "服务器错误",
action: () => {
}
}
};
const error = errorMap[res.statusCode] || {
title: ((_a = res.data) == null ? void 0 : _a.msg) || "请求失败",
action: () => {
}
};
common_vendor.index.showToast({
title: error.title,
icon: "none",
duration: 2e3
});
error.action();
reject(new Error(error.title));
}
function request(options = {}) {
return new Promise((resolve, reject) => {
const localToken = common_vendor.index.getStorageSync("token");
let token = localToken;
if (!token && config_dev.shouldUseTempToken() && !options.noToken) {
token = config_dev.getTempToken();
common_vendor.index.__f__("log", "at utils/request.js:173", "使用临时token进行开发测试");
}
if (!options.url || typeof options.url !== "string") {
reject(new Error("无效的URL"));
return;
}
const url = options.url.startsWith("/") ? options.url : "/" + options.url;
const requestOptions = {
url: BASE_URL + url,
method: options.method || "GET",
header: getRequestHeaders(options.header),
timeout: options.timeout || 6e4,
// 默认60秒超时
success: (res) => {
if (options.showLoading !== false) {
utils_loadingManager.hideLoading();
}
if (res.statusCode === 200) {
resolve(res.data);
} else {
handleResponseError(res, reject, options);
}
},
fail: (err) => {
if (options.showLoading !== false) {
utils_loadingManager.hideLoading();
}
common_vendor.index.__f__("error", "at utils/request.js:212", "请求失败:", {
error: err,
url: requestOptions.url,
method: requestOptions.method,
baseUrl: BASE_URL,
originalUrl: options.url
});
let errorMessage = "网络错误";
if (err.errMsg) {
if (err.errMsg.includes("timeout")) {
errorMessage = "请求超时";
} else if (err.errMsg.includes("fail")) {
errorMessage = "网络连接失败";
}
}
common_vendor.index.showToast({
title: errorMessage,
icon: "none",
duration: 2e3
});
reject(err);
}
};
const noTokenUrls = ["/wxLogin", "/user/login"];
if (noTokenUrls.includes(url) || options.noToken) {
delete requestOptions.header.Authorization;
common_vendor.index.__f__("log", "at utils/request.js:244", "跳过token验证的接口:", url);
}
if (options.params && Object.keys(options.params).length > 0) {
requestOptions.data = { ...options.params };
} else if (options.data && Object.keys(options.data).length > 0) {
requestOptions.data = { ...options.data };
} else {
requestOptions.data = {};
}
try {
if (!options.noAppId && requestOptions.data && !requestOptions.data.appId) {
const appId = getCurrentAppId();
requestOptions.data.appId = appId;
common_vendor.index.__f__("log", "at utils/request.js:262", "自动添加appId:", appId, "到请求:", requestOptions.url);
}
} catch (error) {
common_vendor.index.__f__("error", "at utils/request.js:265", "添加appId时出错:", error);
if (requestOptions.data) {
requestOptions.data.appId = 1;
}
}
common_vendor.index.__f__("log", "at utils/request.js:273", "发起请求:", {
url: requestOptions.url,
method: requestOptions.method,
header: requestOptions.header,
data: requestOptions.data,
timeout: requestOptions.timeout,
baseUrl: BASE_URL
});
if (options.showLoading !== false) {
utils_loadingManager.showLoading(options.loadingText || utils_loadingManager.config.loadingText);
}
common_vendor.index.request(requestOptions);
});
}
function post(url, data = {}, options = {}) {
return request({
url,
method: "POST",
data,
...options
});
}
function getCurrentAppId() {
try {
return config.appId || config_dev.getAppId() || 1;
} catch (error) {
common_vendor.index.__f__("error", "at utils/request.js:361", "获取appId失败使用默认值:", error);
return 1;
}
}
exports.post = post;
exports.request = request;
//# sourceMappingURL=../../.sourcemap/mp-weixin/utils/request.js.map

View File

@ -1,65 +0,0 @@
"use strict";
const common_vendor = require("../common/vendor.js");
const PAGE_ROUTES = {
// 主要功能页面
MONK: "/pages/monk/monk",
MONK_DETAIL: "/pages/monk/monkDetail",
WALK_INTO: "/pages/walkInto/walkInto",
INSTITUTIONAL_STRUCTURE: "/pages/institutionalStructure/institutionalStructure",
ACTIVITY: "/pages/activity/activity",
PRAY: "/pages/pray/pray",
// 待开发页面
NEWS: "/pages/news/news",
ABBOT: "/pages/abbot/abbot",
ANCIENT: "/pages/ancient/ancient",
FUTURE: "/pages/future/future",
// 其他页面
LOGIN: "/pages/login/login",
INDEX: "/pages/nearbystores/index",
MY: "/pages/my/my",
MY_ORDER: "/pages/myorder/index",
MY_ORDER_RETURNED: "/pages/myorder/returned/index"
};
const PAGE_TYPE_MAP = {
monk: PAGE_ROUTES.MONK,
monkDetail: PAGE_ROUTES.MONK_DETAIL,
walkInto: PAGE_ROUTES.WALK_INTO,
institutionalStructure: PAGE_ROUTES.INSTITUTIONAL_STRUCTURE,
activity: PAGE_ROUTES.ACTIVITY,
news: PAGE_ROUTES.NEWS,
abbot: PAGE_ROUTES.ABBOT,
ancient: PAGE_ROUTES.ANCIENT,
future: PAGE_ROUTES.FUTURE,
index: PAGE_ROUTES.INDEX,
pray: PAGE_ROUTES.PRAY
};
function navigateToPage(pageType, options = {}) {
try {
common_vendor.index.hideLoading();
} catch (error) {
common_vendor.index.__f__("warn", "at utils/router.js:56", "清除loading失败:", error);
}
const targetPage = PAGE_TYPE_MAP[pageType];
if (!targetPage) {
common_vendor.index.showToast({
title: "页面配置错误",
icon: "none"
});
return;
}
const defaultOptions = {
url: targetPage,
fail: (err) => {
common_vendor.index.showToast({
title: "页面开发中",
icon: "none"
});
}
};
common_vendor.index.navigateTo({
...defaultOptions,
...options
});
}
exports.navigateToPage = navigateToPage;
//# sourceMappingURL=../../.sourcemap/mp-weixin/utils/router.js.map