Răsfoiți Sursa

Merge branch 'master' into wj

wenjie 6 zile în urmă
părinte
comite
30d4691517

+ 8 - 0
.idea/.gitignore

@@ -0,0 +1,8 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml

+ 12 - 0
.idea/city-gather.iml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$">
+      <excludeFolder url="file://$MODULE_DIR$/.tmp" />
+      <excludeFolder url="file://$MODULE_DIR$/temp" />
+      <excludeFolder url="file://$MODULE_DIR$/tmp" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>

+ 6 - 0
.idea/inspectionProfiles/Project_Default.xml

@@ -0,0 +1,6 @@
+<component name="InspectionProjectProfileManager">
+  <profile version="1.0">
+    <option name="myName" value="Project Default" />
+    <inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
+  </profile>
+</component>

+ 8 - 0
.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/city-gather.iml" filepath="$PROJECT_DIR$/.idea/city-gather.iml" />
+    </modules>
+  </component>
+</project>

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>

+ 8 - 0
async-component.d.ts

@@ -14,3 +14,11 @@ declare module '@/subPack-xsb/components/xsbTabbar/index.vue?async' {
   const component: typeof import('@/subPack-xsb/components/xsbTabbar/index.vue')
   export = component
 }
+declare module '../../subPack-smqjh/components/charge-orderList/charge-orderList.vue?async' {
+  const component: typeof import('../../subPack-smqjh/components/charge-orderList/charge-orderList.vue')
+  export = component
+}
+declare module '@/subPack-smqjh/components/charge-orderList/charge-orderList.vue?async' {
+  const component: typeof import('@/subPack-smqjh/components/charge-orderList/charge-orderList.vue')
+  export = component
+}

+ 2 - 2
src/config/index.ts

@@ -6,12 +6,12 @@ const mapEnvVersion = {
   // develop: 'http://192.168.1.101:8080',
   // develop: 'http://192.168.0.157:8080',
   // develop: 'http://192.168.1.253:8080',
-  // develop: 'http://192.168.0.19:8080',
+  develop: 'http://192.168.0.19:8080',
   // develop: 'http://192.168.0.217:8080',
   // develop: 'http://192.168.1.89:8080', // 田
   // develop: 'http://74949mkfh190.vicp.fun', // 付
   // develop: 'http://47.109.84.152:8081',
-  develop: 'https://smqjh.api.zswlgz.com',
+  // develop: 'https://smqjh.api.zswlgz.com',
   /**
    * 体验版
    */

+ 22 - 0
src/pages.json

@@ -472,6 +472,28 @@
           }
         }
       ]
+    },
+    {
+      "root": "subPack-videoRights",
+      "pages": [
+        {
+          "path": "commonTab/index",
+          "name": "video-rights-tabbar",
+          "islogin": false,
+          "style": {
+            "navigationBarTitleText": "",
+            "navigationStyle": "custom"
+          }
+        },
+        {
+          "path": "videoRightsDetail/videoRightsDetail",
+          "name": "video-rights-detail",
+          "islogin": false,
+          "style": {
+            "navigationBarTitleText": "详情"
+          }
+        }
+      ]
     }
   ]
 }

+ 1 - 1
src/subPack-charge/chargeOrderDetail/chargeOrderDetail.vue

@@ -96,7 +96,7 @@ async function getOrderDetail() {
             订单编号
           </view>
           <view class="text-28rpx text-#AAA">
-            {{ chargeOrderDetail?.chargeOrderNo }}
+            {{ chargeOrderDetail?.orderNumber }}
           </view>
         </view>
         <view class="mt-28rpx flex items-center justify-between">

+ 2 - 52
src/subPack-charge/chargeOrderList/chargeOrderList.vue

@@ -1,9 +1,8 @@
 <script setup lang="ts">
 import { navTabTypeList } from '../utils/order-data'
-import { chargeOrderStatus } from '../utils/index'
+import chargeList from '@/subPack-smqjh/components/charge-orderList/charge-orderList.vue?async'
 import router from '@/router'
 import { createGlobalLoadingMiddleware } from '@/api/core/middleware'
-import { StaticUrl } from '@/config'
 
 const navActiveTab = ref(0)
 const { statusBarHeight, MenuButtonHeight, opcity } = storeToRefs(useSysStore())
@@ -49,20 +48,6 @@ function handleChangeTypeNav(value: number) {
   navActiveTab.value = value
   orderList.value = []
   reload()
-  console.log(navActiveTab.value, '===============')
-}
-
-function handleItemClick(item: Api.xsbOrderList) {
-  const orderNumber = item.orderNumber
-  if (orderNumber) {
-    router.push({
-      name: 'charge-order-detail',
-      params: { orderNo: orderNumber },
-    })
-  }
-  else {
-    console.warn('订单号不存在,无法跳转到详情页')
-  }
 }
 </script>
 
@@ -89,42 +74,7 @@ function handleItemClick(item: Api.xsbOrderList) {
       </view>
     </view>
     <view class="box-border px24rpx">
-      <view v-for="item in orderList" :key="item.orderNumber" class="mt-20rpx mt20rpx rounded-16rpx bg-#FFF p-24rpx" @click="handleItemClick(item)">
-        <view class="flex items-center justify-between">
-          <view>
-            <view class="text-28rpx font-bold">
-              {{ item.chargeOrder?.powerStationName }}
-            </view>
-            <view class="mt-20rpx text-24rpx text-#AAA">
-              订单时间:{{ item.chargeOrder?.createTime || '未知' }}
-            </view>
-            <view class="mt-20rpx text-24rpx text-#AAA">
-              终端编号:{{ item.chargeOrder?.connectorId || '未知' }}
-            </view>
-          </view>
-          <view v-if="item.chargeOrder?.status" class="text-center text-28rpx text-#4EDC86">
-            <image
-              class="h-64rpx w-64rpx"
-              :src="`${StaticUrl}/${chargeOrderStatus(item.chargeOrder?.status).icon}.png`"
-            />
-            <view :style="{ color: chargeOrderStatus(item.chargeOrder?.status).color }">
-              {{ chargeOrderStatus(item.chargeOrder?.status).text }}
-            </view>
-          </view>
-        </view>
-        <view class="my-20rpx h-2rpx w-full bg-#F0F0F0" />
-        <view class="flex items-center justify-between">
-          <view class="text-28rpx">
-            充电费用:
-          </view>
-          <view class="text-32rpx text-#FF6464 font-800">
-            <text class="text-18rpx">
-              ¥
-            </text>
-            {{ item.chargeOrder?.realCost }}
-          </view>
-        </view>
-      </view>
+      <chargeList :order-list="orderList" />
       <StatusTip v-if="!orderList.length" tip="暂无内容" />
     </view>
   </view>

+ 3 - 3
src/subPack-charge/index/index.vue

@@ -119,7 +119,7 @@ function handleFilterClick(filterKey: number) {
             <view class="mt-24rpx flex items-center gap-30rpx text-28rpx text-#9ED605 font-500">
               <view class="flex items-center gap-20rpx">
                 <text class="w-120rpx overflow-hidden truncate whitespace-nowrap">
-                  {{ userAccountInfo?.availablePoints || '--' }}
+                  {{ userAccountInfo?.availablePoints || '0.00' }}
                 </text>
                 <image class="h-30rpx w-30rpx" :src="`${StaticUrl}/charge-acc.png`" />
               </view>
@@ -127,7 +127,7 @@ function handleFilterClick(filterKey: number) {
                 <text class="text-20rpx">
                 </text>
-                {{ userAccountInfo?.balance || '--' }}
+                {{ userAccountInfo?.balance || '0.00' }}
               </view>
             </view>
           </view>
@@ -137,7 +137,7 @@ function handleFilterClick(filterKey: number) {
                 充电订单
               </view>
               <view class="mt-24rpx text-28rpx text-#9ED605 font-500">
-                {{ userAccountInfo?.chargingOrderCount || '--' }}
+                {{ userAccountInfo?.chargingOrderCount || '0' }}
               </view>
             </view>
             <image class="h-80rpx w-80rpx" :src="`${StaticUrl}/charge-order.png`" />

+ 17 - 8
src/subPack-smqjh/components/charge-orderList/charge-orderList.vue

@@ -5,16 +5,23 @@ import { StaticUrl } from '@/config'
 
 defineProps<{
   orderList: Api.xsbOrderList[]
-  subPackOrder: any
 }>()
 
 function handleItemClick(item: Api.xsbOrderList) {
   const orderNumber = item.orderNumber
   if (orderNumber) {
-    router.push({
-      name: 'charge-order-detail',
-      params: { orderNo: orderNumber },
-    })
+    if (item.hbOrderStatus !== 80) {
+      router.push({
+        name: 'chargeing',
+        params: { orderNo: orderNumber },
+      })
+    }
+    else {
+      router.push({
+        name: 'charge-order-detail',
+        params: { orderNo: orderNumber },
+      })
+    }
   }
   else {
     console.warn('订单号不存在,无法跳转到详情页')
@@ -37,12 +44,14 @@ function handleItemClick(item: Api.xsbOrderList) {
             终端编号:{{ item.chargeOrder?.connectorId || '未知' }}
           </view>
         </view>
-        <view class="text-center text-28rpx text-#4EDC86">
+        <view class="text-center text-28rpx">
           <image
             class="h-64rpx w-64rpx"
-            :src="`${StaticUrl}/${chargeOrderStatus(item.chargeOrder?.status).icon}.png`"
+            :src="`${StaticUrl}/${chargeOrderStatus(item.hbOrderStatus).icon}.png`"
           />
-          <view>{{ chargeOrderStatus(item.chargeOrder?.status).text }}</view>
+          <view :style="{ color: chargeOrderStatus(item.hbOrderStatus).color }">
+            {{ chargeOrderStatus(item.hbOrderStatus).text }}
+          </view>
         </view>
       </view>
       <view class="my-20rpx h-2rpx w-full bg-#F0F0F0" />

+ 2 - 2
src/subPack-smqjh/order/components/OrderRenderer.vue

@@ -39,7 +39,7 @@ onMounted(async () => {
         @submit="$emit('submit', $event)" @del="$emit('del', $event)" @after-sale="$emit('after-sale', $event)"
         @refresh="$emit('refresh')"
       />
-      <chargeList v-else-if="order.businessType === 'CD'" :order-list="[order]" :sub-pack-order="subPackOrder" />
+      <chargeList v-else-if="order.businessType === 'CD'" :order-list="[order]" />
       <filmList
         v-else-if="order.businessType === 'DYY'" :order-list="[order]" :sub-pack-order="subPackFilmOrder"
         :sub-pack-confirm="subPackFilmComfirm" @cancel="$emit('cancel', $event)" @pay="$emit('pay', $event)"
@@ -54,7 +54,7 @@ onMounted(async () => {
     @submit="$emit('submit', $event)" @del="$emit('del', $event)" @after-sale="$emit('after-sale', $event)"
     @refresh="$emit('refresh')"
   />
-  <chargeList v-else-if="navActiveTab === 'CD'" :order-list="orderList" :sub-pack-order="subPackOrder" />
+  <chargeList v-else-if="navActiveTab === 'CD'" :order-list="orderList" />
   <filmList
     v-else-if="navActiveTab === 'DYY'" :order-list="orderList" :sub-pack-order="subPackFilmOrder"
     :sub-pack-confirm="subPackFilmComfirm" @cancel="$emit('cancel', $event)" @pay="$emit('pay', $event)"

+ 2 - 2
src/subPack-smqjh/order/index.vue

@@ -105,8 +105,8 @@ async function handleAfterSale(item: Api.xsbOrderList) {
   <view class="page-smqjh">
     <view class="nav sticky top-0 z-10 bg-white px-24rpx py-18rpx">
       <scroll-view
-        scroll-x class="whitespace-nowrap" :scroll-into-view="`id-${scrollViewId}`"
-        :scroll-into-view-offset="-150" scroll-with-animation enable-passive
+        class="whitespace-nowrap" :scroll-into-view="`id-${scrollViewId}`"
+        :scroll-into-view-offset="-150" scroll-with-animation scroll-x enable-passive
       >
         <view class="flex items-center">
           <view

+ 14 - 5
src/subPack-smqjh/order/order-data.ts

@@ -35,31 +35,40 @@ export function handleCommonCancelOrder(order: any) {
 
 /**
  * 统一充电订单状态处理
- * @param order
+ * @param status 0:待充电,20:充电中,30:结算中,80:已完成
  */
 export function chargeOrderStatus(status: any) {
   const statusObj = { icon: '', text: '', color: '' }
   switch (status) {
+    // 0:待充电
     case 0:
-      statusObj.icon = 'charge-order-settlement'
+      statusObj.icon = 'charge-order-unknown'
       statusObj.text = '待充电'
       statusObj.color = '#FFA500'
       break
-    case 1:
+    // 20:充电中
+    case 20:
       statusObj.icon = 'charge-order-ing'
       statusObj.text = '充电中'
       statusObj.color = '#4EDC86'
       break
-    case 2:
+    // 30:结算中
+    case 30:
       statusObj.icon = 'charge-order-settlement'
       statusObj.text = '结算中'
       statusObj.color = '#3EB6F8'
       break
-    case 3:
+    // 80:已完成
+    case 80:
       statusObj.icon = 'charge-order-settled'
       statusObj.text = '已完成'
       statusObj.color = '#AAAAAA'
       break
+    default:
+      statusObj.icon = 'charge-order-unknown'
+      statusObj.text = '未知状态'
+      statusObj.color = '#CCCCCC'
+      break
   }
   return statusObj
 }

+ 49 - 0
src/subPack-videoRights/commonTab/components/home.vue

@@ -0,0 +1,49 @@
+<script setup lang="ts">
+import router from '@/router'
+
+const { statusBarHeight, MenuButtonHeight } = storeToRefs(useSysStore())
+</script>
+
+<template>
+  <view class="video-rights-home-page">
+    <wd-navbar
+      title="视频权益" custom-style="background-color:#FFF" :bordered="false" :z-index="99"
+      safe-area-inset-top left-arrow fixed @click-left="router.back()"
+    />
+    <view :style="{ paddingTop: `${(Number(statusBarHeight) || 44) + MenuButtonHeight + 12}px` }" />
+    <view class="box-border px24rpx">
+      <scroll-view scroll-y type="custom">
+        <grid-view type="masonry" cross-axis-count="2" main-axis-gap="10" cross-axis-gap="10">
+          <view class="mt-18rpx rounded-16rpx bg-#FFF" @click="router.push({ name: 'video-rights-detail' })">
+            <view>
+              <image
+                class="h-342rpx w-342rpx rounded-16rpx"
+                src="../../../static/tab/class-tab1.png"
+              />
+            </view>
+            <view class="mx20rpx my-24rpx">
+              <view class="text-28rpx font-bold">
+                网易云黑胶VIP月卡
+              </view>
+              <view class="mt-30rpx flex items-center gap-18rpx">
+                <view class="text-#FF4D3A">
+                  <text class="text-22rpx font-500">
+                    ¥
+                  </text>
+                  <text class="text-36rpx font-800">
+                    18
+                  </text>
+                </view>
+                <view class="text-24rpx text-#AAA decoration-line-through">
+                  市场价¥30
+                </view>
+              </view>
+            </view>
+          </view>
+        </grid-view>
+      </scroll-view>
+    </view>
+  </view>
+</template>
+
+<style lang="scss" scoped></style>

+ 61 - 0
src/subPack-videoRights/commonTab/components/order.vue

@@ -0,0 +1,61 @@
+<script setup lang="ts">
+const { statusBarHeight, MenuButtonHeight } = storeToRefs(useSysStore())
+const tab = ref<number>(0)
+const tabsList = ref(['全部', '成功', '失败'])
+</script>
+
+<template>
+  <view class="video-rights-order-page">
+    <wd-navbar
+      title="订单" custom-style="background-color:#FFF" :bordered="false" :z-index="99"
+      safe-area-inset-top fixed
+    />
+    <view :style="{ paddingTop: `${(Number(statusBarHeight) || 44) + MenuButtonHeight + 12}px` }" />
+    <wd-tabs v-model="tab" animated>
+      <block v-for="item in tabsList" :key="item">
+        <wd-tab :title="item">
+          <view class="box-border bg-#f6f6f6 px24rpx">
+            <view class="h-28rpx" />
+            <view class="rounded-16rpx bg-#FFF p-24rpx">
+              <view class="flex items-center justify-between">
+                <view class="text-28rpx">
+                  2024-12-13 11:12:30
+                </view>
+                <view class="text-28rpx font-bold">
+                  充值成功
+                </view>
+              </view>
+              <view class="mt-24rpx h-2rpx w-full bg-#F0F0F0" />
+              <view class="mt-24rpx flex items-center justify-between">
+                <view class="flex items-center gap-20rpx">
+                  <view class="h-160rpx w-160rpx">
+                    image
+                  </view>
+                  <view>
+                    <view class="text-32rpx font-bold">
+                      网易云黑胶VIP月卡
+                    </view>
+                    <view class="mt-16rpx text-#FF4D3A">
+                      <text class="text-22rpx font-500">
+                        ¥
+                      </text>
+                      <text class="text-36rpx font-800">
+                        18
+                      </text>
+                    </view>
+                    <view class="mt-16rpx text-24rpx">
+                      XN123458625484359845
+                    </view>
+                  </view>
+                </view>
+                <wd-icon name="chevron-right" size="22px" color="#222222" />
+              </view>
+            </view>
+          </view>
+        </wd-tab>
+      </block>
+    </wd-tabs>
+  </view>
+</template>
+
+<style lang="scss" scoped></style>

+ 27 - 0
src/subPack-videoRights/commonTab/index.vue

@@ -0,0 +1,27 @@
+<script setup lang="ts">
+import home from './components/home.vue'
+import order from './components/order.vue'
+
+definePage({
+  name: 'video-rights-tabbar',
+  islogin: false,
+  style: {
+    navigationBarTitleText: '',
+    navigationStyle: 'custom',
+  },
+})
+const tabbar = ref(0)
+</script>
+
+<template>
+  <home v-if="tabbar === 0" />
+  <order v-if="tabbar === 1" />
+  <view class="">
+    <wd-tabbar v-model="tabbar" placeholder safe-area-inset-bottom fixed :bordered="false" :z-index="99999">
+      <wd-tabbar-item title="商品" icon="goods" />
+      <wd-tabbar-item title="订单记录" icon="list" />
+    </wd-tabbar>
+  </view>
+</template>
+
+<style lang="scss" scoped></style>

+ 94 - 0
src/subPack-videoRights/videoRightsDetail/videoRightsDetail.vue

@@ -0,0 +1,94 @@
+<script setup lang="ts">
+import { StaticUrl } from '@/config'
+
+definePage({
+  name: 'video-rights-detail',
+  islogin: false,
+  style: {
+    navigationBarTitleText: '详情',
+  },
+})
+</script>
+
+<template>
+  <view class="video-rights-detail-page">
+    <view class="relative h-750rpx">
+      <image class="h-750rpx w-full" src="https://picx.zhimg.com/v2-ab23d513fab6abd0a27cda9ba9676383_720w.jpg?source=172ae18b" />
+      <view class="absolute bottom-0 left-24rpx right-24rpx rounded-16rpx bg-#FFF p-24rpx">
+        <view class="flex items-center gap-18rpx">
+          <view class="text-#FF4D3A">
+            <text class="text-22rpx font-500">
+              ¥
+            </text>
+            <text class="text-36rpx font-800">
+              18
+            </text>
+          </view>
+          <view class="text-24rpx text-#AAA decoration-line-through">
+            ¥30
+          </view>
+        </view>
+        <view class="mt-20rpx text-32rpx font-bold">
+          网易云黑胶VIP月卡
+        </view>
+      </view>
+    </view>
+    <view class="mt-20rpx px24rpx">
+      <view class="rounded-16rpx bg-#FFF p-24rpx">
+        <view class="text-28rpx font-bold">
+          购买流程
+        </view>
+        <view class="mt-24rpx flex items-center gap-20rpx">
+          <view class="text-center">
+            <image class="h-40rpx w-40rpx" :src="`${StaticUrl}/videoRight-selectGoods.png`" />
+            <view class="text-24rpx text-#9ED605">
+              选择商品
+            </view>
+          </view>
+          <view class="text-#9ED605 font-500">
+            ····>
+          </view>
+          <view class="text-center">
+            <image class="h-40rpx w-40rpx" :src="`${StaticUrl}/videoRight-accect.png`" />
+            <view class="text-24rpx text-#9ED605">
+              输入账户
+            </view>
+          </view>
+          <view class="text-#9ED605 font-500">
+            ····>
+          </view>
+          <view class="text-center">
+            <image class="h-40rpx w-40rpx" :src="`${StaticUrl}/videoRight-select-pay.png`" />
+            <view class="text-24rpx text-#9ED605">
+              确认支付
+            </view>
+          </view>
+          <view class="text-#9ED605 font-500">
+            ····>
+          </view>
+          <view class="text-center">
+            <image class="h-40rpx w-40rpx" :src="`${StaticUrl}/videoRight-success.png`" />
+            <view class="text-24rpx text-#9ED605">
+              充值成功
+            </view>
+          </view>
+        </view>
+      </view>
+      <view class="mt-20rpx rounded-16rpx bg-#FFF p-24rpx">
+        <view class="text-28rpx font-bold">
+          温馨提示
+        </view>
+        <view class="mt-20rpx text-24rpx">
+          充值前请确认充值账号无误,虚拟商品充值成功无法退款。
+        </view>
+      </view>
+    </view>
+    <view class="fixed bottom-0 h-174rpx w-full border-[1rpx_solid_#EEEEEE] bg-#FFF px-24rpx">
+      <view class="mt-10rpx h-80rpx w-702rpx rounded-46rpx bg-#9ED605 text-center text-#FFF line-height-[80rpx]">
+        立即充值
+      </view>
+    </view>
+  </view>
+</template>
+
+<style lang="scss" scoped></style>

+ 1 - 1
src/subPack-xsb/goods/index.vue

@@ -357,7 +357,7 @@ async function handleAddCart() {
 
           <view class="flex items-center">
             <view class="w220rpx">
-              <wd-button plain hairline block @click="selectGoods = true">
+              <wd-button hairline plain block @click="selectGoods = true">
                 加入购物车
               </wd-button>
             </view>

+ 3 - 1
src/uni-pages.d.ts

@@ -43,7 +43,9 @@ interface NavigateToOptions {
        "/subPack-charge/chargeSearchList/chargeSearchList" |
        "/subPack-charge/chargeSiteDetail/chargeSiteDetail" |
        "/subPack-charge/chargeStart/chargeStart" |
-       "/subPack-charge/index/index";
+       "/subPack-charge/index/index" |
+       "/subPack-videoRights/commonTab/index" |
+       "/subPack-videoRights/videoRightsDetail/videoRightsDetail";
 }
 interface RedirectToOptions extends NavigateToOptions {}
 

+ 1 - 0
vite.config.ts

@@ -32,6 +32,7 @@ export default async () => {
           'subPack-smqjh',
           'subPack-film',
           'subPack-charge',
+          'subPack-videoRights',
         ],
         /**
          * 排除的页面,相对于 dir 和 subPackages