2545307760@qq.com 4 months ago
parent
commit
0e00b82733
3 changed files with 251 additions and 13 deletions
  1. 43 0
      web/src/api/pricing.js
  2. 13 13
      web/src/view/parking/carInfo.vue
  3. 195 0
      web/src/view/parking/pricing.vue

+ 43 - 0
web/src/api/pricing.js

@@ -0,0 +1,43 @@
+import service from '@/utils/request'
+// 创建收费配置
+export const addPricing = (data) => {
+    return service({
+        url: '/vehicle/fee-config/create',
+        method: 'post',
+        data
+    })
+}
+
+// 更新收费配置
+export const editPricing = (data) => {
+    return service({
+        url: '/vehicle/fee-config/update',
+        method: 'put',
+        data
+    })
+}
+
+// 根据ID获取收费配置
+export const pricingId = (id) => {
+    return service({
+        url: '/vehicle/fee-config/get?id=' + id,
+        method: 'get'
+    })
+}
+
+// 获取收费配置列表
+export const obtainPricingList = (params) => {
+    return service({
+        url: '/vehicle/fee-config/list',
+        method: 'get',
+        params
+    })
+}
+
+// 删除收费配置
+export const removePricing = (id) => {
+    return service({
+        url: '/vehicle/fee-config/delete?id=' + id,
+        method: 'delete',
+    })
+}

+ 13 - 13
web/src/view/parking/carInfo.vue

@@ -5,21 +5,21 @@
         <el-button icon="plus" type="primary" @click="openCarInfo('新增车辆信息', '')">新增</el-button>
       </el-form-item>
     </el-form>
-    <el-table>
-      <el-table-column label="车主id">
+    <el-table :data="carInfoList">
+      <el-table-column label="车主id" align="center" prop="owner_id">
       </el-table-column>
-      <el-table-column label="车牌号">
+      <el-table-column label="车牌号" align="center" prop="plate_number">
       </el-table-column>
-      <el-table-column label="车辆类型">
+      <el-table-column label="车辆类型" align="center" prop="vehicle_type">
       </el-table-column>
-      <el-table-column label="车辆品牌">
+      <el-table-column label="车辆品牌" align="center" prop="vehicle_brand">
       </el-table-column>
-      <el-table-column label="车辆颜色">
+      <el-table-column label="车辆颜色" align="center" prop="vehicle_color">
       </el-table-column>
-      <el-table-column label="操作">
+      <el-table-column label="操作" align="center">
         <template #default="scope">
           <el-button icon="edit" type="primary" text @click="openCarInfo('编辑车辆信息', scope.row)">编辑</el-button>
-          <el-button icon="delete" type="primary" text>删除</el-button>
+          <el-button icon="delete" type="primary" text @click="deleteCarInfo(scope.row)">删除</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -46,9 +46,8 @@
             <el-option
                 v-for="item in carOwnerList"
                 :key="item.ID"
-            >
-
-            </el-option>
+                :label="item.owner_name"
+                :value="item.ID"/>
           </el-select>
         </el-form-item>
       </el-form>
@@ -64,12 +63,11 @@
 import { ref, reactive, onMounted } from "vue"
 import { addCarInfo, editCarInfo, obtainCarInfoList, removeCarInfo } from '@/api/carInfo'
 import { obtainCarOwnerList } from '@/api/carOwner'
-import {ElMessage, ElMessageBox} from "element-plus";
+import { ElMessage, ElMessageBox } from "element-plus";
 const carOwnerList = reactive([])
 const carInfoTitle = ref('')
 const carInfoShow = ref(false)
 const carInfoData = reactive({
-  id: 0,
   plate_number: '',
   vehicle_type: '',
   vehicle_brand: '',
@@ -153,6 +151,7 @@ const getCarInfoList = () => {
     if (res.code === 0) {
       carInfoList.length = 0
       carInfoList.push(...res.data.list)
+      carInfoList.push(1)
     }
   })
 }
@@ -167,6 +166,7 @@ const getCarOwnerList = () => {
 }
 onMounted(() => {
   getCarInfoList()
+  getCarOwnerList()
 })
 </script>
 

+ 195 - 0
web/src/view/parking/pricing.vue

@@ -0,0 +1,195 @@
+<template>
+  <div>
+    <el-form inline>
+      <el-form-item>
+        <el-input>
+          <template #append>
+            <el-button>搜索</el-button>
+          </template>
+        </el-input>
+      </el-form-item>
+      <el-form-item>
+        <el-button icon="Plus" @click="openCarOwner('新增车主','')">新增</el-button>
+      </el-form-item>
+      <el-form-item>
+        <el-button icon="Edit">编辑</el-button>
+      </el-form-item>
+      <el-form-item>
+        <el-button icon="Delete">删除</el-button>
+      </el-form-item>
+      <el-form-item>
+        <el-button icon="Download">导入</el-button>
+      </el-form-item>
+      <el-form-item>
+        <el-button icon="Download">导入模板</el-button>
+      </el-form-item>
+      <el-form-item>
+        <el-button icon="Upload">导出</el-button>
+      </el-form-item>
+      <el-form-item>
+        <el-button icon="Memo">操作记录</el-button>
+      </el-form-item>
+      <el-form-item>
+        <el-button icon="ChatLineRound">其他</el-button>
+      </el-form-item>
+    </el-form>
+    <el-table :data="pricingList">
+      <el-table-column label="车辆类型" align="center" width="180" prop="vehicle_type"></el-table-column>
+      <el-table-column label="初始费用" align="center" width="180" prop="start_fee"></el-table-column>
+      <el-table-column label="单位费用" align="center" width="180" prop="unit_fee"></el-table-column>
+      <el-table-column label="车辆类型" align="center" width="180" prop="vehicle_type"></el-table-column>
+      <el-table-column label="每日最大费用" align="center" width="180" prop="daily_max_fee"></el-table-column>
+      <el-table-column label="vip折扣" align="center" width="180" prop="vip_discount"></el-table-column>
+      <el-table-column label="操作" align="center">
+        <template #default="scope">
+          <el-button text type="primary" icon="MessageBox">备注</el-button>
+          <el-button @click="openCarOwner('编辑车主', scope.row)" icon="edit" text type="primary">编辑</el-button>
+          <el-button @click="deleteCarOwner(scope.row)" icon="delete" text type="primary">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-dialog v-model="carOwnerShow" :title="carOwnerTitle" width="650">
+      <el-form label-width="100" size="large">
+        <el-form-item label="名称:">
+          <el-input v-model="carOwnerData.owner_name"/>
+        </el-form-item>
+        <el-form-item label="姓氏:">
+          <el-input v-model="carOwnerData.owner_surname"/>
+        </el-form-item>
+        <el-form-item label="手机:">
+          <el-input v-model="carOwnerData.owner_phone"/>
+        </el-form-item>
+        <el-form-item label="vip:">
+          <el-radio-group v-model="carOwnerData.is_vip" size="large" fill="#409eff">
+            <el-radio-button label="否" :value="false" />
+            <el-radio-button label="是" :value="true" />
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="vip过期时间:">
+          <el-date-picker
+              v-model="carOwnerData.vip_expire_time"
+              type="date"
+              placeholder="当前日期"
+          />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <el-button @click="carOwnerShow = false" size="large">取消</el-button>
+        <el-button @click="carOwnerOperation" type="primary" size="large">确认</el-button>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup>
+import { obtainPricingList, addPricing, editPricing, removePricing } from '@/api/pricing'
+import { onMounted, reactive, ref } from 'vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+const pricingList = reactive([1])
+const pricingShow = ref(false)
+const pricingTitle = ref('')
+const pricingData = reactive({
+  id: 0,
+  vehicle_type: '',
+  start_time: '',
+  start_fee: 0,
+  unit_time: '',
+  unit_fee: 0,
+  daily_max_fee: 0,
+  is_vip_free: false,
+  vip_discount: 0,
+  description: ''
+})
+const getPricingList = () => {
+  obtainPricingList().then(res => {
+    if (res.code === 0) {
+      pricingList.length = 0
+      pricingList.push(...res.data.list)
+    }
+  })
+}
+
+const deleteCarOwner = (data) => {
+  ElMessageBox.confirm(
+      '确定要删除该车主信息吗?',
+      '提示',
+      {
+        confirmButtonText: '确认',
+        cancelButtonText: '取消',
+        type: 'warning',
+      }
+  )
+      .then(() => {
+        removeCarOwner(data.ID).then(res => {
+          if (res.code === 0) {
+            ElMessage({
+              type: 'success',
+              message: '删除成功',
+            })
+            getCarOwnerList()
+          } else {
+            ElMessage({
+              type: 'error',
+              message: '删除失败',
+            })
+          }
+        })
+      })
+      .catch(() => {
+        ElMessage({
+          type: 'info',
+          message: '取消删除',
+        })
+      })
+}
+
+const openCarOwner = (head, data) => {
+  carOwnerShow.value = true
+  carOwnerTitle.value = head
+  if (head === '新增车主') {
+    carOwnerData.is_vip = false
+    carOwnerData.owner_surname = ''
+    carOwnerData.owner_name = ''
+    carOwnerData.owner_phone = ''
+    carOwnerData.vip_expire_time = ''
+  } else {
+    carOwnerData.id = data.ID
+    carOwnerData.is_vip = data.is_vip
+    carOwnerData.owner_surname = data.owner_surname
+    carOwnerData.owner_phone = data.owner_phone
+    carOwnerData.owner_name = data.owner_name
+    carOwnerData.vip_expire_time = data.vip_expire_time
+  }
+}
+
+const carOwnerOperation = async () => {
+  if (carOwnerTitle.value === '新增车主') {
+    await addCarOwner(carOwnerData).then(res => {
+      if (res.code === 0) {
+        ElMessage.success('添加成功')
+        carOwnerShow.value = false
+        getCarOwnerList()
+      } else {
+        ElMessage.error('添加失败')
+      }
+    })
+  } else {
+    await editCarOwner(carOwnerData).then(res => {
+      if (res.code === 0) {
+        ElMessage.success('更新成功')
+        carOwnerShow.value = false
+        getCarOwnerList()
+      } else {
+        ElMessage.error('更新失败')
+      }
+    })
+  }
+}
+onMounted(() => {
+  getPricingList()
+})
+</script>
+
+<style scoped lang="scss">
+
+</style>