gitnore清理
|
|
@ -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: {
|
||||
|
|
|
|||
|
|
@ -1,8 +0,0 @@
|
|||
{
|
||||
"hash": "514f035c",
|
||||
"configHash": "641a3635",
|
||||
"lockfileHash": "e3b0c442",
|
||||
"browserHash": "88121bc0",
|
||||
"optimized": {},
|
||||
"chunks": {}
|
||||
}
|
||||
3
unpackage/dist/cache/.vite/deps/package.json
vendored
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
"type": "module"
|
||||
}
|
||||
|
|
@ -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;;;"}
|
||||
|
|
@ -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;;"}
|
||||
|
|
@ -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;;;"}
|
||||
|
|
@ -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;;;"}
|
||||
|
|
@ -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;"}
|
||||
|
|
@ -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;"}
|
||||
|
|
@ -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;"}
|
||||
|
|
@ -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;"}
|
||||
|
|
@ -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;"}
|
||||
|
|
@ -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;;;;"}
|
||||
|
|
@ -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;;"}
|
||||
|
|
@ -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;;"}
|
||||
|
|
@ -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
|
||||
11
unpackage/dist/dev/mp-weixin/api/auth/auth.js
vendored
|
|
@ -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
|
||||
31
unpackage/dist/dev/mp-weixin/app.js
vendored
|
|
@ -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
|
||||
42
unpackage/dist/dev/mp-weixin/app.json
vendored
|
|
@ -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": {}
|
||||
}
|
||||
51
unpackage/dist/dev/mp-weixin/app.wxss
vendored
|
|
@ -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;}
|
||||
7956
unpackage/dist/dev/mp-weixin/common/vendor.js
vendored
|
|
@ -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
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
{
|
||||
"component": true,
|
||||
"usingComponents": {}
|
||||
}
|
||||
|
|
@ -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>
|
||||
|
|
@ -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%);
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
{
|
||||
"component": true,
|
||||
"usingComponents": {}
|
||||
}
|
||||
|
|
@ -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>
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
{
|
||||
"component": true,
|
||||
"usingComponents": {}
|
||||
}
|
||||
|
|
@ -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>
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
{
|
||||
"component": true,
|
||||
"usingComponents": {}
|
||||
}
|
||||
|
|
@ -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>
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
{
|
||||
"component": true,
|
||||
"usingComponents": {}
|
||||
}
|
||||
|
|
@ -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>
|
||||
|
|
@ -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;
|
||||
}
|
||||
26
unpackage/dist/dev/mp-weixin/config/dev.js
vendored
|
|
@ -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
|
||||
17
unpackage/dist/dev/mp-weixin/enum/commonEnum.js
vendored
|
|
@ -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
|
||||
|
|
@ -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
|
||||
162
unpackage/dist/dev/mp-weixin/pages/index/index.js
vendored
|
|
@ -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
|
||||
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
|
|
@ -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>
|
||||
|
|
@ -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;
|
||||
}
|
||||
116
unpackage/dist/dev/mp-weixin/pages/lease/lease.js
vendored
|
|
@ -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
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
{
|
||||
"navigationBarTitleText": "租赁申请",
|
||||
"navigationStyle": "custom",
|
||||
"usingComponents": {}
|
||||
}
|
||||
|
|
@ -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>
|
||||
277
unpackage/dist/dev/mp-weixin/pages/lease/lease.wxss
vendored
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
247
unpackage/dist/dev/mp-weixin/pages/login/login.js
vendored
|
|
@ -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
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
{
|
||||
"navigationStyle": "custom",
|
||||
"usingComponents": {}
|
||||
}
|
||||
|
|
@ -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>
|
||||
205
unpackage/dist/dev/mp-weixin/pages/login/login.wxss
vendored
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
{
|
||||
"navigationBarTitleText": "个人中心",
|
||||
"navigationStyle": "custom",
|
||||
"usingComponents": {}
|
||||
}
|
||||
|
|
@ -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>
|
||||
|
|
@ -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;
|
||||
}
|
||||
36
unpackage/dist/dev/mp-weixin/project.config.json
vendored
|
|
@ -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": []
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
25
unpackage/dist/dev/mp-weixin/static/burner.svg
vendored
|
|
@ -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 |
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
@ -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` 脚本
|
||||
|
Before Width: | Height: | Size: 882 B |
BIN
unpackage/dist/dev/mp-weixin/static/icons/home.png
vendored
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 846 B |
BIN
unpackage/dist/dev/mp-weixin/static/icons/rent.png
vendored
|
Before Width: | Height: | Size: 1.3 KiB |
BIN
unpackage/dist/dev/mp-weixin/static/logo.png
vendored
|
Before Width: | Height: | Size: 3.9 KiB |
30
unpackage/dist/dev/mp-weixin/static/stove.svg
vendored
|
|
@ -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 |
|
|
@ -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
|
||||
221
unpackage/dist/dev/mp-weixin/utils/request.js
vendored
|
|
@ -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
|
||||
65
unpackage/dist/dev/mp-weixin/utils/router.js
vendored
|
|
@ -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
|
||||