diff --git a/api/pointShop.js b/api/pointShop.js new file mode 100644 index 00000000..66bcca2f --- /dev/null +++ b/api/pointShop.js @@ -0,0 +1,10 @@ +export const apiArr = { + pointShopTab: "/api/v2/wechat/points-mall/tab", //积分商城tab + pointShopPage: "/api/v2/wechat/points-mall/page", //积分商城列表分页 + platformPointsRule: "/api/v2/wechat/points-mall/platform-points-rule", //平台积分规则 + pointShopRecord: "/api/v2/wechat/points-mall/order/record", //积分商城兑换记录 + pointShopPay: "/api/v2/wechat/points-mall/order/pay", //积分商城订单支付 + pointOrderInfo: "/api/v2/wechat/points-mall/order/info", //积分商城订单详情 + pointShopAdd: "/api/v2/wechat/points-mall/order/add", //积分商城创建订单 + pointGoodInfo: "/api/v2/wechat/points-mall/info", //积分商城商品详情 +}; diff --git a/packages/jfShop/detail/index.css b/packages/jfShop/detail/index.css new file mode 100644 index 00000000..1ea02bf9 --- /dev/null +++ b/packages/jfShop/detail/index.css @@ -0,0 +1,362 @@ +/* 全局样式重置 */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +/* 商品详情页容器 */ +.detail-container { + width: 100%; + min-height: 100vh; + background-color: #f5f5f5; + padding-bottom: 100rpx; +} + +/* 轮播图容器 */ +.swiper-container { + position: relative; + width: 100%; + height: 600rpx; + background-color: #fff; +} + +.swiper-image { + width: 100%; + height: 100%; + object-fit: cover; +} + +.swiper-indicator { + position: absolute; + bottom: 20rpx; + right: 20rpx; + background-color: rgba(0, 0, 0, 0.5); + color: #fff; + padding: 10rpx 20rpx; + border-radius: 20rpx; + font-size: 24rpx; +} + +/* 商品信息 */ +.product-info { + padding: 30rpx; + background-color: #fff; + margin-bottom: 20rpx; +} + +.product-price { + display: flex; + align-items: baseline; + margin-bottom: 20rpx; + justify-content: space-between; +} + +.price-number { + font-size: 48rpx; + font-weight: bold; + color: #ff4d4f; + margin-right: 10rpx; +} + +.price-unit { + font-size: 28rpx; + color: #ff4d4f; +} + +.product-name { + font-size: 32rpx; + font-weight: 500; + color: #333; + line-height: 48rpx; + margin-bottom: 15rpx; +} + +.exchange-info { + font-size: 24rpx; + color: #999; +} + +/* 商品详情 */ +.product-details { + padding: 30rpx; + background-color: #fff; +} + +.detail-title { + font-size: 32rpx; + font-weight: 500; + color: #333; + margin-bottom: 20rpx; + padding-bottom: 20rpx; + border-bottom: 1rpx solid #e8e8e8; + display: flex; + align-items: center; +} + +.line { + flex: 1; + height: 1rpx; + background-color: #000000; + margin: 0 20rpx; +} + +.detail-content { + width: 100%; +} + +.detail-image { + width: 100%; + height: auto; + margin-bottom: 20rpx; +} + +/* 底部操作栏 */ +.bottom-bar { + position: fixed; + bottom: 0; + left: 0; + width: 100%; + height: 150rpx; + background-color: #fff; + border-top: 1rpx solid #e8e8e8; + display: flex; + align-items: center; + padding: 0 30rpx; + z-index: 99; +} + +.points-info { + display: flex; + flex-direction: column; + margin-right: 30rpx; +} + +.points-label { + font-size: 24rpx; + color: #999; +} + +.points-number { + font-size: 32rpx; + font-weight: bold; + color: #ff6262; +} + +.insufficient-points { + width: 60%; + height: 70rpx; + line-height: 70rpx; + background-color: #f0f0f0; + color: #999; + text-align: center; + border-radius: 35rpx; + font-size: 28rpx; + margin-left: 10%; +} + +.exchange-btn { + width: 200rpx; + height: 70rpx; + line-height: 70rpx; + background-color: #ff4d4f; + color: #fff; + text-align: center; + border-radius: 25rpx; + font-size: 32rpx; + border: none; + position: absolute; + right: 100rpx; +} + +/* 规格选择弹窗 */ +.spec-popup { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + display: flex; + justify-content: flex-end; + align-items: flex-end; + z-index: 999; +} + +.popup-content { + width: 100%; + background-color: #fff; + border-radius: 30rpx 30rpx 0 0; + padding: 30rpx; + max-height: 80vh; + overflow-y: auto; + position: relative; +} + +.popup-header { + display: flex; + align-items: center; + margin-bottom: 30rpx; +} + +.spec-price { + display: flex; + align-items: baseline; +} + +.spec-price-number { + font-size: 48rpx; + font-weight: bold; + color: #ff4d4f; + margin-right: 10rpx; +} + +.spec-price-unit { + font-size: 28rpx; + color: #ff4d4f; +} + +.spec-selected { + font-size: 28rpx; + color: #333; + flex: 1; +} + +.close-btn { + font-size: 48rpx; + color: #999; + width: 50rpx; + height: 50rpx; + line-height: 50rpx; + text-align: center; + position: absolute; + top: 30rpx; + right: 30rpx; +} + +.spec-image { + width: 150rpx; + height: 150rpx; + margin-right: 30rpx; +} + +.spec-image-item { + width: 100%; + height: 100%; + object-fit: cover; + border-radius: 20rpx; +} + +.spec-section { + margin-bottom: 30rpx; +} + +.spec-title { + font-size: 28rpx; + font-weight: 500; + color: #333; + margin-bottom: 20rpx; +} + +.spec-options { + display: flex; + flex-wrap: wrap; + gap: 20rpx; +} + +.spec-option { + padding: 20rpx 30rpx; + border: 1rpx solid #e8e8e8; + border-radius: 10rpx; + font-size: 28rpx; + color: #333; + background-color: #fafafa; +} + +.spec-option.active { + border-color: #ff4d4f; + color: #ff4d4f; + background-color: #fff2f0; +} + +.quantity-section { + display: flex; + align-items: center; + justify-content: space-between; + margin: 50rpx 30rpx; +} + +.quantity-title { + font-size: 28rpx; + font-weight: 500; + color: #333; + margin-right: 30rpx; +} + +.quantity-control { + display: flex; + align-items: center; +} + +.quantity-btn { + width: 60rpx; + height: 60rpx; + line-height: 60rpx; + text-align: center; + border: 1rpx solid #e8e8e8; + background-color: #fafafa; + font-size: 32rpx; + color: #333; + display: flex; + justify-content: center; + align-items: center; +} + +.quantity-btn:disabled { + color: #ccc; +} + +.quantity-input { + width: 80rpx; + height: 60rpx; + line-height: 60rpx; + text-align: center; + font-size: 28rpx; + color: #333; + border-top: 1rpx solid #e8e8e8; + border-bottom: 1rpx solid #e8e8e8; +} + +.popup-footer { + margin: 30rpx; +} + +.confirm-btn { + width: 100%; + height: 80rpx; + line-height: 80rpx; + background-color: #ff4d4f; + color: #fff; + text-align: center; + border-radius: 40rpx; + font-size: 32rpx; + border: none; +} + +/* 适配不同屏幕尺寸 */ +@media screen and (max-width: 375px) { + + .price-number, + .spec-price-number { + font-size: 40rpx; + } + + .product-name { + font-size: 28rpx; + } + + .exchange-btn, + .confirm-btn { + font-size: 28rpx; + } +} \ No newline at end of file diff --git a/packages/jfShop/detail/index.vue b/packages/jfShop/detail/index.vue new file mode 100644 index 00000000..4b2822ff --- /dev/null +++ b/packages/jfShop/detail/index.vue @@ -0,0 +1,208 @@ + + + + \ No newline at end of file diff --git a/packages/jfShop/index/index.css b/packages/jfShop/index/index.css new file mode 100644 index 00000000..3c2a13f1 --- /dev/null +++ b/packages/jfShop/index/index.css @@ -0,0 +1,169 @@ +.header { + padding: 20rpx 0; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.header_top { + width: 50rpx; + height: 50rpx; +} + +.header_sum { + font-size: 55rpx; + font-weight: bold; + color: #333; +} + +.header_dec { + font-size: 20rpx; + color: #333; +} + +.center{ + padding: 20rpx 70rpx; + display: flex; + justify-content: space-between ; + align-items: center; + font-size: 24rpx; +} + +.center_item{ + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.image_item{ + width: 70rpx; + height: 70rpx; + background-color: #f0f7ff; + border-radius: 20rpx; + margin-bottom: 10rpx; + display: flex; + justify-content: center; + align-items: center; +} + +.image_item image{ + width: 45rpx; + height: 45rpx; +} + +/* 分类导航样式 */ +.category-nav { + border-bottom: 1rpx solid #f0f0f0; + background-color: #fff; +} + +.category-scroll { + white-space: nowrap; + padding: 0 20rpx; + margin-top: 20rpx; +} + +.category-item { + display: inline-block; + padding: 20rpx 30rpx; + font-size: 28rpx; + color: #333; + position: relative; +} + +.category-item.active { + color: #1e88e5; + font-weight: 500; +} + +.category-item.active::after { + content: ''; + position: absolute; + bottom: 0; + left: 50%; + transform: translateX(-50%); + width: 100rpx; + height: 4rpx; + background-color: #1e88e5; + border-radius: 2rpx; +} + +/* 商品列表样式 */ +.product-list { + padding: 20rpx; + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 20rpx; +} + +.product-item { + background-color: #fff; + border-radius: 12rpx; + padding: 20rpx; + display: flex; + flex-direction: column; + align-items: center; +} + +.product-image { + width: 300rpx; + height: 300rpx; + border-radius: 8rpx; + margin-bottom: 16rpx; +} + +.product-title { + font-size: 24rpx; + color: #333; + margin-bottom: 12rpx; + width: 100%; + line-height: 32rpx; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + text-overflow: ellipsis; +} + +.product-info { + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 16rpx; +} + +.product-points { + font-size: 28rpx; + font-weight: bold; + color: #ff4444; +} + +.product-sold { + font-size: 20rpx; + color: #999; +} + +.exchange-btn { + width: 100%; + height: 60rpx; + background-color: #ff4444; + color: #fff; + font-size: 24rpx; + font-weight: 500; + border-radius: 30rpx; + display: flex; + justify-content: center; + align-items: center; +} + +/* 加载状态样式 */ +.loading, .no-more { + text-align: center; + padding: 30rpx 0; + font-size: 24rpx; + color: #999; + grid-column: 1 / -1; +} \ No newline at end of file diff --git a/packages/jfShop/index/index.vue b/packages/jfShop/index/index.vue new file mode 100644 index 00000000..fb6edcdf --- /dev/null +++ b/packages/jfShop/index/index.vue @@ -0,0 +1,162 @@ + + + + + \ No newline at end of file diff --git a/packages/jfShop/myOrder/index.css b/packages/jfShop/myOrder/index.css new file mode 100644 index 00000000..42914f7f --- /dev/null +++ b/packages/jfShop/myOrder/index.css @@ -0,0 +1,223 @@ +page { + background-color: #F5F7FA; +} + +/* 订单详情页面样式 */ +.order-detail-container { + display: flex; + flex-direction: column; + padding-bottom: 20rpx; +} + +/* 通用区块样式 */ +.section { + background-color: #ffffff; + border-radius: 12rpx; + margin: 10rpx 20rpx; + padding: 24rpx; + box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05); +} + +.section-title { + font-size: 30rpx; + font-weight: 600; + color: #333333; + margin-bottom: 20rpx; +} + +/* 商品信息 */ +.goods-item { + display: flex; + align-items: center; + padding: 10rpx 0; +} + +.goods-image { + width: 140rpx; + height: 140rpx; + border-radius: 8rpx; + margin-right: 20rpx; +} + +.goods-info { + flex: 1; + min-width: 0; +} + +.goods-name { + font-size: 28rpx; + font-weight: 500; + color: #333333; + margin-bottom: 10rpx; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; +} + +.goods-quantity { + font-size: 24rpx; + color: #999999; +} + +/* 价格信息 */ +.price-item { + display: flex; + justify-content: space-between; + align-items: center; + padding: 16rpx 0; + border-bottom: 1rpx solid #F0F0F0; +} + +.price-item:last-child { + border-bottom: none; +} + +.price-label { + font-size: 26rpx; + color: #666666; +} + +.price-value { + font-size: 26rpx; + color: #333333; +} + +.total-price .price-label { + font-weight: 600; +} + +.total-price .price-value { + font-weight: 600; + color: #FF5000; +} + +/* 收货地址 */ +.address-info { + padding: 10rpx 0; +} + +.consignee { + font-size: 28rpx; + font-weight: 500; + color: #333333; + margin-bottom: 10rpx; +} + +.address-detail { + font-size: 26rpx; + color: #666666; + line-height: 36rpx; +} + +/* 订单信息 */ +.order-info-item { + display: flex; + justify-content: space-between; + align-items: center; + padding: 16rpx 0; + border-bottom: 1rpx solid #F0F0F0; +} + +.order-info-item:last-child { + border-bottom: none; +} + +.info-label { + font-size: 26rpx; + color: #666666; +} + +.info-value { + font-size: 26rpx; + color: #333333; + display: flex; + align-items: center; +} + +.copy-btn { + background-color: transparent; + border: none; + color: #4A6CF7; + font-size: 24rpx; + margin-left: 16rpx; + padding: 0; +} + +/* 门店信息卡片 */ +.store-card { + display: flex; + justify-content: space-between; + align-items: flex-start; + padding: 10rpx 0; +} + +.store-info { + flex: 1; + padding-right: 20rpx; +} + +.store-name { + font-size: 28rpx; + font-weight: 600; + color: #333333; + margin-bottom: 10rpx; +} + +.store-address { + font-size: 24rpx; + color: #666666; + line-height: 36rpx; +} + +.nav-btn { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + background-color: transparent; + border: none; + color: #ff4d4f; + font-size: 24rpx; + padding: 0; +} + +.nav-image { + width: 30rpx; + height: 30rpx; + margin-bottom: 10rpx; +} + +/* 响应式设计 */ +@media (max-width: 375px) { + .section { + margin: 16rpx; + padding: 20rpx; + } + + .section-title { + font-size: 28rpx; + } + + .goods-image { + width: 120rpx; + height: 120rpx; + } + + .goods-name { + font-size: 26rpx; + } + + .price-item, + .order-info-item { + padding: 14rpx 0; + } + + .price-label, + .price-value, + .info-label, + .info-value { + font-size: 24rpx; + } +} \ No newline at end of file diff --git a/packages/jfShop/myOrder/index.vue b/packages/jfShop/myOrder/index.vue new file mode 100644 index 00000000..1e6d0794 --- /dev/null +++ b/packages/jfShop/myOrder/index.vue @@ -0,0 +1,160 @@ + + + + + \ No newline at end of file diff --git a/packages/jfShop/orderDetail/index.css b/packages/jfShop/orderDetail/index.css new file mode 100644 index 00000000..457e3f46 --- /dev/null +++ b/packages/jfShop/orderDetail/index.css @@ -0,0 +1,160 @@ +/* 兑换成功页面样式 */ +.success-container { + display: flex; + flex-direction: column; + align-items: center; + padding: 40rpx 20rpx; + min-height: 100vh; + background-color: #ffffff; +} + +/* 成功图标和标题 */ +.success-header { + display: flex; + flex-direction: column; + align-items: center; + margin-bottom: 40rpx; +} + +.success-icon { + width: 140rpx; + height: 140rpx; + border-radius: 50%; + background-color: #E6F7EF; + display: flex; + justify-content: center; + align-items: center; + margin-bottom: 20rpx; +} + +.success-icon image { + width: 80rpx; + height: 80rpx; +} + +.success-title { + font-size: 36rpx; + font-weight: 600; + color: #333333; + margin-bottom: 10rpx; +} + +.points-consumed { + font-size: 28rpx; + color: #666666; +} + +/* 门店信息卡片 */ +.store-card { + width: 90%; + background-color: #f7f8fa; + border-radius: 12rpx; + padding: 24rpx; + display: flex; + justify-content: space-between; + align-items: flex-start; + box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05); + margin: 20rpx 0; +} + +.store-info { + flex: 1; + padding-right: 20rpx; +} + +.store-name { + font-size: 30rpx; + font-weight: 600; + color: #333333; + margin-bottom: 10rpx; +} + +.store-address { + font-size: 24rpx; + color: #666666; + line-height: 36rpx; +} + +.nav-btn { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + background-color: transparent; + border: none; + color: #ff4d4f; + font-size: 24rpx; + padding: 0; +} + +.nav-image { + width: 40rpx; + height: 40rpx; + margin-bottom: 10rpx; +} + +/* 提示信息 */ +.reminder { + font-size: 28rpx; + color: #333; + margin: 40rpx; + text-align: center; +} + +/* 操作按钮 */ +.action-buttons { + width: 100%; + display: flex; + flex-direction: column; + gap: 20rpx; +} + +.primary-btn { + width: 100%; + height: 90rpx; + background-color: #ff4d4f; + color: #ffffff; + font-size: 32rpx; + font-weight: 600; + border: none; + border-radius: 20rpx; + display: flex; + justify-content: center; + align-items: center; +} + +.secondary-btn { + width: 100%; + height: 90rpx; + background-color: #fff; + color: #333; + font-size: 32rpx; + font-weight: 500; + border: 1rpx solid #E5E7EB; + border-radius: 12rpx; + display: flex; + justify-content: center; + align-items: center; +} + +/* 响应式设计 */ +@media (max-width: 375px) { + .success-icon { + width: 120rpx; + height: 120rpx; + } + + .success-title { + font-size: 32rpx; + } + + .store-name { + font-size: 28rpx; + } + + .primary-btn, + .secondary-btn { + height: 80rpx; + font-size: 28rpx; + } +} \ No newline at end of file diff --git a/packages/jfShop/orderDetail/index.vue b/packages/jfShop/orderDetail/index.vue new file mode 100644 index 00000000..02476b5f --- /dev/null +++ b/packages/jfShop/orderDetail/index.vue @@ -0,0 +1,101 @@ + + + + + \ No newline at end of file diff --git a/packages/jfShop/record/index.css b/packages/jfShop/record/index.css new file mode 100644 index 00000000..ee89acca --- /dev/null +++ b/packages/jfShop/record/index.css @@ -0,0 +1,99 @@ +page { + background-color: #f6f7fbbe; +} + +/* 积分兑换记录页面样式 */ +.record-container { + padding: 16rpx; + min-height: 100vh; +} + +/* 月份分组 */ +.month-group { + margin-bottom: 32rpx; +} + +/* 月份头部 */ +.month-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 16rpx 0; + margin-bottom: 16rpx; +} + +.month-title { + font-size: 28rpx; + font-weight: 600; + color: #333333; +} + +.month-count { + font-size: 24rpx; + color: #999999; +} + +/* 记录项 */ +.record-item { + background-color: #ffffff; + border-radius: 16rpx; + padding: 24rpx; + margin-bottom: 16rpx; + box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05); +} + +.item-left { + display: flex; + margin-bottom: 24rpx; +} + +.item-image { + width: 160rpx; + height: 160rpx; + border-radius: 8rpx; + margin-right: 24rpx; +} + +.item-info { + flex: 1; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.item-name { + font-size: 28rpx; + font-weight: 600; + color: #333333; + margin-bottom: 12rpx; +} + +.item-data { + font-size: 24rpx; + color: #666666; + margin-bottom: 8rpx; + line-height: 36rpx; + display: flex; + justify-content: space-between; +} + +.item-label { + font-weight: bold; + width: 200rpx; +} + +.nav-btn { + width: 150rpx; + padding: 0 30rpx; + border: 1rpx solid #ddddddc7; + border-radius: 40rpx; + background-color: #ffffff; + font-size: 24rpx; + color: #333333; + position: relative; + right: -250rpx; +} + +.nav-btn:active { + background-color: #f5f5f5; +} \ No newline at end of file diff --git a/packages/jfShop/record/index.vue b/packages/jfShop/record/index.vue new file mode 100644 index 00000000..4f83f2e2 --- /dev/null +++ b/packages/jfShop/record/index.vue @@ -0,0 +1,105 @@ + + + + \ No newline at end of file diff --git a/packages/jfShop/rule/index.css b/packages/jfShop/rule/index.css new file mode 100644 index 00000000..6cece5af --- /dev/null +++ b/packages/jfShop/rule/index.css @@ -0,0 +1,55 @@ +page{ + background-color: #f6f6fa; +} + +.rule-container { + margin: 20rpx; + padding: 30rpx 20rpx; + background-color: #fff; + border-radius: 12rpx; +} + +.rule-title { + font-size: 32rpx; + font-weight: bold; + color: #333; + text-align: center; + margin-bottom: 15rpx; +} + +.rule-tip { + font-size: 24rpx; + color: #ff4444; + text-align: center; + margin-bottom: 20rpx; + line-height: 36rpx; +} + +.rule-details { + background-color: #fff; + border-radius: 12rpx; + padding: 30rpx 20rpx; +} + +.rule-item { + margin-bottom: 30rpx; +} + +.rule-item:last-child { + margin-bottom: 0; +} + +.rule-item-title { + font-size: 28rpx; + font-weight: 500; + color: #333; + margin-bottom: 15rpx; +} + +.rule-item-content { + font-size: 24rpx; + color: #666; + line-height: 36rpx; + text-align: justify; + margin-left: 20rpx; +} \ No newline at end of file diff --git a/packages/jfShop/rule/index.vue b/packages/jfShop/rule/index.vue new file mode 100644 index 00000000..e2039ec0 --- /dev/null +++ b/packages/jfShop/rule/index.vue @@ -0,0 +1,47 @@ + + + + \ No newline at end of file diff --git a/packages/jfShop/submitOrder/index.css b/packages/jfShop/submitOrder/index.css new file mode 100644 index 00000000..1bcec839 --- /dev/null +++ b/packages/jfShop/submitOrder/index.css @@ -0,0 +1,244 @@ +page{ + background-color: #F6F6FA; +} + +.container { + width: 100%; +} + +/* 收货地址部分 */ +.address-section { + background-color: #fff; + padding: 30rpx; + margin: 15rpx; + border-radius: 20rpx; +} + +.address-info { + display: flex; + align-items: center; + justify-content: space-between; +} + +.address-main { + flex: 1; +} + +.address-name-phone { + display: flex; + align-items: center; + margin-bottom: 15rpx; +} + +.name { + font-size: 32rpx; + font-weight: 600; + margin-right: 20rpx; +} + +.phone { + font-size: 30rpx; + color: #666; +} + +.address-detail { + font-size: 28rpx; + color: #666; + line-height: 1.4; +} + +.address-arrow { + color: #999; +} + +/* 分隔线 */ +.divider { + height: 10rpx; + background-color: #f5f5f5; +} + +/* 兑换商品部分 */ +.exchange-section { + background-color: #fff; + padding: 30rpx; + margin: 15rpx; + border-radius: 20rpx; +} + +.section-title { + font-size: 32rpx; + font-weight: 600; + margin-bottom: 25rpx; +} + +.goods-item { + display: flex; + margin-bottom: 25rpx; +} + +.goods-image { + width: 120rpx; + height: 120rpx; + margin-right: 20rpx; + overflow: hidden; + border-radius: 8rpx; +} + +.goods-image image { + width: 100%; + height: 100%; +} + +.goods-info { + flex: 1; +} + +.goods-name { + font-size: 30rpx; + margin-bottom: 15rpx; + line-height: 1.3; +} + +.goods-quantity { + font-size: 26rpx; + color: #999; +} + +.goods-points { + font-size: 30rpx; + font-weight: 600; +} + +.total-section { + display: flex; + justify-content: flex-end; + align-items: center; + font-size: 28rpx; +} + +.total-points { + font-size: 32rpx; + color: #f03d0e; + font-weight: 600; + margin-left: 10rpx; +} + +/* 积分计算部分 */ +.points-calculation { + background-color: #fff; + padding: 30rpx; + margin: 15rpx; + border-radius: 20rpx; +} + +.calculation-item { + height: 50rpx; + display: flex; + justify-content: space-between; + align-items: center; + font-size: 28rpx; + margin-bottom: 20rpx; +} + +.calculation-item:last-child { + margin-bottom: 0; +} + +/* 底部确认兑换部分 */ +.bottom-section { + height: 100rpx; + position: fixed; + bottom: 0; + left: 0; + right: 0; + background-color: #fff; + padding: 20rpx 30rpx; + display: flex; + align-items: center; + justify-content: space-between; + border-top: 1rpx solid #e5e5e5; +} + +.points-consumption { + display: flex; + align-items: center; + font-size: 28rpx; +} + +.consumption-points { + font-size: 34rpx; + color: #f03d0e; + font-weight: 600; + margin-left: 10rpx; +} + +.confirm-btn { + width: 280rpx; + height: 80rpx; + background-color: #f03d0e; + color: #fff; + font-size: 32rpx; + border-radius: 40rpx; + display: flex; + align-items: center; + justify-content: center; + position: absolute; + right: 50rpx; +} + +/* 响应式调整 */ +@media (max-width: 768px) { + .name { + font-size: 30rpx; + } + + .phone { + font-size: 28rpx; + } + + .address-detail { + font-size: 26rpx; + } + + .section-title { + font-size: 30rpx; + } + + .goods-name { + font-size: 28rpx; + } + + .goods-quantity { + font-size: 24rpx; + } + + .goods-points { + font-size: 28rpx; + } + + .total-section { + font-size: 26rpx; + } + + .total-points { + font-size: 30rpx; + } + + .calculation-item { + font-size: 26rpx; + } + + .points-consumption { + font-size: 26rpx; + } + + .consumption-points { + font-size: 32rpx; + } + + .confirm-btn { + width: 260rpx; + height: 76rpx; + font-size: 30rpx; + } +} \ No newline at end of file diff --git a/packages/jfShop/submitOrder/index.vue b/packages/jfShop/submitOrder/index.vue new file mode 100644 index 00000000..c2084aa7 --- /dev/null +++ b/packages/jfShop/submitOrder/index.vue @@ -0,0 +1,142 @@ + + + + + \ No newline at end of file diff --git a/packages/myOrders/index/index.css b/packages/myOrders/index/index.css index 3d462865..1bf97808 100644 --- a/packages/myOrders/index/index.css +++ b/packages/myOrders/index/index.css @@ -144,6 +144,10 @@ page { font-weight: bold; } +.order-footer-text view { + margin-left: 10rpx; +} + .btn-group { display: flex; justify-content: flex-end; diff --git a/packages/myOrders/index/index.vue b/packages/myOrders/index/index.vue index 1e071c83..10379e63 100644 --- a/packages/myOrders/index/index.vue +++ b/packages/myOrders/index/index.vue @@ -47,8 +47,11 @@ - 共{{ item.total_count }}件商品,共计 + + 共{{ item.total_count }}件商品,共计 {{ item.total_amount }} + + 积分 @@ -67,7 +70,8 @@ - + @@ -323,6 +327,10 @@ export default { NavgateTo(`/packages/shop/goodsSubmit/index?shopCarList=${JSON.stringify(transformedItems)}`) }, toDetails(item) { + if (item.order_cate == 4) { + NavgateTo(`/packages/jfShop/myOrder/index?order_id=${item.id}`); + return + } NavgateTo( `/packages/myOrders/orderDetails/index?item=${JSON.stringify(item)}` ); @@ -369,7 +377,7 @@ export default { good.commodity_pic = picUrl + good.commodity_pic; }) }) - this.orderData = res.order_list.filter(item => item.order_cate == 1); + this.orderData = res.order_list.filter(item => item.order_cate == 1 || item.order_cate == 4); this.getAfterSaleList(); }); }, diff --git a/packages/park/temporaryOrder/index.vue b/packages/park/temporaryOrder/index.vue index f44b7d3b..d56cf684 100644 --- a/packages/park/temporaryOrder/index.vue +++ b/packages/park/temporaryOrder/index.vue @@ -37,9 +37,17 @@ - - {{ selectedCar || '选择车辆' }} - + + 请登录后查看 + + + + {{ selectedCar || '选择车辆' }} + + + + 请先添加车辆 + @@ -70,8 +78,7 @@ - @@ -103,8 +110,7 @@ - 微信支付 @@ -115,8 +121,7 @@ - ⚠️ 支付成功,请于{{ countdownTime }}内离场否则将加收停车费 @@ -196,11 +201,21 @@ export default { payStatus: 0, payTime: '', countdownTime: '', - isTimeout: false + isTimeout: false, + isLogin: uni.getStorageSync('ctoken') ? true : false } }, + onLoad() { - this.getParkList(); + if (this.isLogin) { + this.getParkList(); + } + }, + + onShow() { + if (this.isLogin) { + this.getParkList(); + } }, // 在组件卸载时清除定时器 @@ -211,6 +226,9 @@ export default { } }, methods: { + goLogin() { + NavgateTo(`/pages/login/login`); + }, // 切换下拉列表显示状态 toggleDropdown() { this.isCarDropdownOpen = false @@ -330,6 +348,11 @@ export default { this.isCarDropdownOpen = !this.isCarDropdownOpen; }, + // 去添加车辆 + goAddCar() { + NavgateTo('/packages/park/addCar/index') + }, + // 选择车辆 selectCar(car) { this.selectedCar = car.car_number; @@ -533,7 +556,7 @@ export default { }, // 获取停车场列表 getParkList() { - request(apiArr.parkList, "POST", {}).then((res) => { + request(apiArr.parkList, "POST", {}, {}, false).then((res) => { // 计算每个停车场的距离并添加到对象中 this.parkingLots = res.parking_list.map(park => { try { @@ -577,9 +600,6 @@ export default { }); }) }, - }, - onShow() { - this.getCarList(); } } diff --git a/packages/smartDevice/index/index.vue b/packages/smartDevice/index/index.vue index 4c633a81..c44db897 100644 --- a/packages/smartDevice/index/index.vue +++ b/packages/smartDevice/index/index.vue @@ -29,7 +29,7 @@ export default { methods: { handleButtonClick(val) { if(val == 1){ - NavgateTo(`/packages/park/temporaryOrder/index`); + NavgateTo(`/packages/park/temporaryOrder/index`, { isLogin: false }); }else if(val == 2){ NavgateTo(`/packages/park/parkOrder/index`); }else if(val == 3){ diff --git a/pages.json b/pages.json index d6701591..95b5465f 100644 --- a/pages.json +++ b/pages.json @@ -1160,6 +1160,60 @@ } } ] + }, + { + "root": "packages/jfShop", + "pages": [ + { + "path": "index/index", + "style": { + "navigationBarTitleText": "积分商城", + "navigationBarBackgroundColor": "#fff" + } + }, + { + "path": "rule/index", + "style": { + "navigationBarTitleText": "积分规则", + "navigationBarBackgroundColor": "#fff" + } + }, + { + "path": "record/index", + "style": { + "navigationBarTitleText": "兑换记录", + "navigationBarBackgroundColor": "#fff" + } + }, + { + "path": "detail/index", + "style": { + "navigationBarTitleText": "积分兑换详情页", + "navigationBarBackgroundColor": "#fff" + } + }, + { + "path": "submitOrder/index", + "style": { + "navigationBarTitleText": "提交订单", + "navigationBarBackgroundColor": "#fff" + } + }, + { + "path": "orderDetail/index", + "style": { + "navigationBarTitleText": "兑换详情", + "navigationBarBackgroundColor": "#fff" + } + }, + { + "path": "myOrder/index", + "style": { + "navigationBarTitleText": "我的订单", + "navigationBarBackgroundColor": "#fff" + } + } + ] } ], "globalStyle": { diff --git a/pages/index/index.css b/pages/index/index.css index fe4c149e..0a735608 100644 --- a/pages/index/index.css +++ b/pages/index/index.css @@ -119,10 +119,11 @@ page { } .search2 { - padding: 10rpx 0; - width: 55%; - position: relative; - left: -190rpx; + padding: 20rpx; + /* width: 100%; */ + /* position: relative; + left: -190rpx; */ + background-color: #fff; } .function-nav { @@ -189,7 +190,7 @@ page { width: 710rpx; height: 300rpx; margin: 0 auto; - margin-top: 10rpx; + /* margin-top: 10rpx; */ position: relative; border-radius: 20rpx; overflow: hidden;