Преглед изворни кода

```
feat(charge): 新增车牌绑定功能并优化充电流程

- 在API类型定义中新增plateNum字段用于存储车牌信息
- 实现车辆列表查询和默认车牌获取逻辑
- 添加车牌绑定提醒弹窗,未绑定车牌时提示用户
- 充电启动时验证并显示默认车牌,支持多车牌选择确认
- 移除未使用的日历组件依赖

fix(attractions): 修复预约页面明细弹窗功能

- 添加订单明细弹窗组件和控制变量
- 修复handleConfirm函数参数解构问题
- 为明细按钮添加点击事件以显示弹窗

refactor(manifest): 清理配置文件格式

- 修正manifest.json文件末尾多余的逗号
```

zouzexu пре 10 часа
родитељ
комит
19538bd813

+ 4 - 0
src/api/api.type.d.ts

@@ -2197,6 +2197,10 @@ namespace Api {
      * 电站名称
      */
     powerStationName: ?string | undefined
+    /**
+     * 车牌
+     */
+    plateNum?: string
   }
 
   interface chargeSearchList {

+ 0 - 1
src/components.d.ts

@@ -17,7 +17,6 @@ declare module 'vue' {
     WdActionSheet: typeof import('wot-design-uni/components/wd-action-sheet/wd-action-sheet.vue')['default']
     WdBadge: typeof import('wot-design-uni/components/wd-badge/wd-badge.vue')['default']
     WdButton: typeof import('wot-design-uni/components/wd-button/wd-button.vue')['default']
-    WdCalendarView: typeof import('wot-design-uni/components/wd-calendar-view/wd-calendar-view.vue')['default']
     WdCard: typeof import('wot-design-uni/components/wd-card/wd-card.vue')['default']
     WdCell: typeof import('wot-design-uni/components/wd-cell/wd-cell.vue')['default']
     WdCellGroup: typeof import('wot-design-uni/components/wd-cell-group/wd-cell-group.vue')['default']

+ 7 - 3
src/subPack-attractions/attractionsReservation/attractionsReservation.vue

@@ -8,9 +8,10 @@ definePage({
 })
 const columns = ref(['选项1', '选项2', '选项3', '选项4', '选项5', '选项6', '选项7'])
 const value = ref('选项1')
+const orderPopup = ref(false)
 
-function handleConfirm({ value }) {
-  value.value = value
+function handleConfirm({ value: selectedValue }: { value: string }) {
+  value.value = selectedValue
 }
 </script>
 
@@ -121,7 +122,7 @@ function handleConfirm({ value }) {
         </view>
       </view>
       <view class="flex items-center gap-20rpx">
-        <view class="flex items-center">
+        <view class="flex items-center" @click="orderPopup = true">
           <text class="text-24rpx">
             明细
           </text>
@@ -132,6 +133,9 @@ function handleConfirm({ value }) {
         </view>
       </view>
     </view>
+    <Zpopup v-model="orderPopup" :zindex="9999">
+      <view>明细</view>
+    </Zpopup>
   </view>
 </template>
 

+ 39 - 1
src/subPack-charge/chargeStart/chargeStart.vue

@@ -16,7 +16,9 @@ const connectorCode = ref()
 onLoad((options: any) => {
   connectorCode.value = options.connectorCode
 })
-
+onShow(() => {
+  queryVehicleList()
+})
 onMounted(() => {
   opcity.value = 0
   getConnectorDetail()
@@ -33,6 +35,25 @@ async function getConnectorDetail() {
   connectorDetailInfo.value = res.data
 }
 
+// 获取车辆列表判断是否提示用户添加车辆
+const defaultPlateNumber = ref('')
+const vehicleList = ref<any[]>([])
+async function queryVehicleList() {
+  const res = await Apis.charge.vehicleList({})
+  vehicleList.value = res.data || []
+  const defaultVehicle = res.data.find(item => item.isDefault === 1) || res.data[0]
+  defaultPlateNumber.value = defaultVehicle?.licensePlate || ''
+  if (res.data.length === 0) {
+    useGlobalMessage().confirm({
+      title: '提示',
+      msg: '您还未绑定车牌,绑定车牌可享免费停车',
+      success: () => {
+        router.push({ name: 'charge-plate-list' })
+      },
+    })
+  }
+}
+
 const fromData = ref<Api.invokeChargeList>({
   equipmentId: 0,
   stationId: 0,
@@ -40,14 +61,31 @@ const fromData = ref<Api.invokeChargeList>({
   powerStationName: '',
   consigneeName: userInfo.value?.nickName,
   consigneeMobile: userInfo.value?.mobile,
+  plateNum: '',
 })
 async function launchCharge() {
   // router.push({ name: 'chargeing' })
   // return
+  if (vehicleList.value.length > 1) {
+    useGlobalMessage().confirm({
+      title: '提示',
+      msg: `系统默认充电车牌"${defaultPlateNumber.value}",请确认当前车牌后再进行充电。`,
+      success: () => {
+        beginLaunchCharge()
+      },
+    })
+  }
+  else {
+    beginLaunchCharge()
+  }
+}
+
+async function beginLaunchCharge() {
   fromData.value.equipmentId = connectorDetailInfo.value?.equipmentId
   fromData.value.stationId = connectorDetailInfo.value?.stationId
   fromData.value.connectorId = connectorDetailInfo.value?.connectorCode
   fromData.value.powerStationName = connectorDetailInfo.value?.stationName
+  fromData.value.plateNum = defaultPlateNumber.value
   const res = await Apis.charge.invokeCharge({ data: fromData.value })
   if (res.code === '00000') {
     router.push({ name: 'chargeing', params: { orderNo: res.data } })

+ 16 - 0
src/subPack-charge/index/index.vue

@@ -50,6 +50,7 @@ onShow(() => {
   refresh()
   getUserAccountInfo()
   getDefaultVehicle()
+  queryVehicleList()
 })
 onPageScroll((e) => {
   const calculatedOpacity = e.scrollTop / 100
@@ -78,6 +79,21 @@ async function getDefaultVehicle() {
   const res = await Apis.charge.default({})
   defaultVehicle.value = res.data
 }
+
+// 获取车辆列表判断是否提示用户添加车辆
+async function queryVehicleList() {
+  const res = await Apis.charge.vehicleList({})
+  if (res.data.length === 0) {
+    useGlobalMessage().confirm({
+      title: '充电车主专享',
+      msg: '绑定车牌可享充电停车费减免及更多权益',
+      success: () => {
+        router.push({ name: 'charge-plate-list' })
+      },
+    })
+  }
+}
+
 // 处理筛选项点击的方法
 function handleFilterClick(filterKey: number) {
   activeFilter.value = filterKey