2545307760@qq.com 4 mesi fa
parent
commit
ef1771fc05

+ 51 - 0
web/src/api/channel.js

@@ -0,0 +1,51 @@
+import service from '@/utils/request'
+
+// 创建通道
+export const addChannel = (data) => {
+    return service({
+        url: '/parking/channel/create',
+        method: 'post',
+        data
+    })
+}
+
+// 更新通道
+export const editChannel = (data) => {
+    return service({
+        url: '/parking/channel/update',
+        method: 'put',
+        data
+    })
+}
+
+// 根据ID获取通道
+export const obtainChannelId = (id) => {
+    return service({
+        url: '/parking/channel/get?id=' + id,
+        method: 'get'
+    })
+}
+
+// 根据编码获取通道
+export const obtainChannelCode = (code) => {
+    return service({
+        url: '/parking/channel/get-by-code?code=' + code,
+        method: 'get'
+    })
+}
+
+// 获取通道列表
+export const obtainChannelList = () => {
+    return service({
+        url: '/parking/channel/list',
+        method: 'get'
+    })
+}
+
+// 删除通道
+export const deleteChannel = (id) => {
+    return service({
+        url: '/parking/channel/delete?id=' + id,
+        method: 'delete'
+    })
+}

+ 52 - 0
web/src/api/device.js

@@ -0,0 +1,52 @@
+import service from '@/utils/request'
+
+// 创建设备
+export const addDevice = (data) => {
+    return service({
+        url: '/parking/device/create',
+        method: 'post',
+        data
+    })
+}
+
+// 更新设备
+export const editDevice = (data) => {
+    return service({
+        url: '/parking/device/update',
+        method: 'put',
+        data
+    })
+}
+
+// 根据ID获取设备
+export const obtainDeviceId = (id) => {
+    return service({
+        url: '/parking/device/get?id=' + id,
+        method: 'get'
+    })
+}
+
+// 根据编码获取设备
+export const obtainDeviceCode = (code) => {
+    return service({
+        url: '/parking/device/get-by-code?code=' + code,
+        method: 'get'
+    })
+}
+
+// 获取设备列表
+export const obtainDeviceList = (params) => {
+    return service({
+        url: '/parking/device/list',
+        method: 'get',
+        params
+    })
+}
+
+// 删除设备
+export const deleteDevice = (id) => {
+    return service({
+        url: '/parking/device/delete?id=' + id,
+        method: 'delete'
+    })
+}

+ 50 - 0
web/src/api/guardBooth.js

@@ -0,0 +1,50 @@
+import service from '@/utils/request'
+
+// 创建岗亭
+export const addGuardBooth = (data) => {
+    return service({
+        url: '/parking/booth/create',
+        method: 'post',
+        data
+    })
+}
+
+// 更新岗亭
+export const editGuardBooth = (data) => {
+    return service({
+        url: '/parking/booth/update',
+        method: 'put',
+        data
+    })
+}
+
+// 根据ID获取岗亭
+export const obtainGuardBoothId = (id) => {
+    return service({
+        url: '/parking/booth/get?id=' + id,
+        method: 'get'
+    })
+}
+// 根据编码获取岗亭
+export const obtainGuardBoothCode = (code) => {
+    return service({
+        url: '/parking/booth/get-by-code?code=' + code,
+        method: 'get',
+    })
+}
+
+// 获取岗亭列表
+export const obtainGuardBoothList = () => {
+    return service({
+        url: '/parking/booth/list',
+        method: 'get'
+    })
+}
+
+// 删除岗亭
+export const deleteGuardBooth = (id) => {
+    return service({
+        url: '/parking/booth/delete?id=' + id,
+        method: 'delete'
+    })
+}

+ 52 - 0
web/src/api/pullOver.js

@@ -0,0 +1,52 @@
+import service from '@/utils/request'
+
+// 创建停车区域
+export const addPullOver = (data) => {
+    return service({
+        url: '/parking/lot/create',
+        method: 'post',
+        data
+    })
+}
+
+// 更新停车区域
+export const editPullOver = (data) => {
+    return service({
+        url: '/parking/lot/update',
+        method: 'put',
+        data
+    })
+}
+
+// 根据ID获取停车区域
+export const obtainPullOverId = (id) => {
+    return service({
+        url: '/parking/lot/get?id=' + id,
+        method: 'get'
+    })
+}
+
+// 根据编码获取停车区域
+export const obtainPullOverCode = (code) => {
+    return service({
+        url: '/parking/lot/get-by-code?code=' + code,
+        method: 'get'
+    })
+}
+
+// 获取停车区域列表
+export const obtainPullOverList = (params) => {
+    return service({
+        url: '/parking/lot/list',
+        method: 'get',
+        params
+    })
+}
+
+// 删除停车区域
+export const removePullOver = (id) => {
+    return service({
+        url: '/parking/lot/delete?id=' + id,
+        method: 'delete',
+    })
+}

+ 220 - 53
web/src/view/parking/parkingInfo.vue

@@ -29,7 +29,13 @@
         >
           <el-form inline>
             <el-form-item>
-              <el-button icon="Plus" text type="success" @click="positionShow = true">新增</el-button>
+              <el-button
+                  icon="Plus"
+                  text
+                  type="success"
+                  @click="openPosition('岗亭新增','')">
+                新增
+              </el-button>
             </el-form-item>
             <el-form-item>
               <el-button icon="Edit" text type="warning">编辑</el-button>
@@ -41,11 +47,29 @@
               <el-button icon="Refresh" text type="primary">刷新</el-button>
             </el-form-item>
           </el-form>
-          <el-table size="small">
-            <el-table-column label="编码" align="center" width="100"></el-table-column>
-            <el-table-column label="名称" align="center" width="250"></el-table-column>
-            <el-table-column label="IP地址" align="center" width="250"></el-table-column>
-            <el-table-column label="备注" align="center"></el-table-column>
+          <el-table size="small" :data="positionList" height="680px">
+            <el-table-column label="编码" align="center" width="100" prop="booth_code"></el-table-column>
+            <el-table-column label="名称" align="center" width="250" prop="booth_name"></el-table-column>
+            <el-table-column label="IP地址" align="center" width="250" prop="ip_address"></el-table-column>
+            <el-table-column label="备注" align="center" prop="description"></el-table-column>
+            <el-table-column label="操作">
+              <template #default="scope">
+                <el-button
+                    text
+                    type="primary"
+                    icon="edit"
+                    @click="openPosition('岗亭编辑', scope.row)">
+                  编辑
+                </el-button>
+                <el-button
+                    text
+                    type="primary"
+                    icon="delete"
+                    @click="delPosition(scope.row.ID)">
+                  删除
+                </el-button>
+              </template>
+            </el-table-column>
           </el-table>
         </el-tab-pane>
         <el-tab-pane
@@ -54,7 +78,7 @@
         >
           <el-form inline>
             <el-form-item>
-              <el-button icon="Plus" text type="success" @click="channelEditShow = true">新增</el-button>
+              <el-button icon="Plus" text type="success" @click="openChannel">新增</el-button>
             </el-form-item>
             <el-form-item>
               <el-button icon="Edit" text type="warning">编辑</el-button>
@@ -103,48 +127,24 @@
           </el-table>
         </el-tab-pane>
       </el-tabs>
-<!--      <div class="basicInformation">-->
-<!--        <div style="padding-top: 10px;margin-left: 30px">-->
-<!--          <el-image :src="sign" />-->
-<!--        </div>-->
-<!--        <div style="display: flex;align-items: center">-->
-<!--          <el-text-->
-<!--              style="margin-left: 10px"-->
-<!--              size="large"-->
-<!--              tag="b"-->
-<!--          >项目基本信息</el-text>-->
-<!--        </div>-->
-<!--      </div>-->
-<!--      <div class="operation">-->
-<!--        <el-button icon="Plus" text type="success">新增</el-button>-->
-<!--        <el-button icon="edit" text type="warning">编辑</el-button>-->
-<!--        <el-button icon="delete" text type="danger">删除</el-button>-->
-<!--        <el-button icon="Refresh" text type="primary">刷新</el-button>-->
-<!--      </div>-->
-<!--      <el-table size="small">-->
-<!--        <el-table-column label="编码"></el-table-column>-->
-<!--        <el-table-column label="名称"></el-table-column>-->
-<!--        <el-table-column label="IP地址"></el-table-column>-->
-<!--        <el-table-column label="备注"></el-table-column>-->
-<!--      </el-table>-->
     </el-col>
     <el-dialog
         v-model="positionShow"
-        title="岗亭新增"
+        :title="positionTitle"
         width="500"
     >
       <el-form label-width="90">
         <el-form-item label="岗亭编码:">
-          <el-input></el-input>
+          <el-input v-model="positionData.booth_code"></el-input>
         </el-form-item>
         <el-form-item label="岗亭名称:">
-          <el-input></el-input>
+          <el-input v-model="positionData.booth_name"></el-input>
         </el-form-item>
         <el-form-item label="IP地址:">
-          <el-input></el-input>
+          <el-input v-model="positionData.ip_address"></el-input>
         </el-form-item>
         <el-form-item label="备注:">
-          <el-input type="textarea"></el-input>
+          <el-input type="textarea" v-model="positionData.description"></el-input>
         </el-form-item>
       </el-form>
       <template #footer>
@@ -156,34 +156,34 @@
         </div>
       </template>
     </el-dialog>
-    <el-dialog v-model="channelEditShow" title="通道新增" width="500">
+    <el-dialog v-model="channelShow" :title="channelTitle" width="500">
       <el-form>
         <el-form-item label="通道编码:">
-          <el-input></el-input>
+          <el-input v-model="channelData.channel_code"></el-input>
         </el-form-item>
         <el-form-item label="通道名称:">
-          <el-input></el-input>
+          <el-input v-model="channelData.channel_name"></el-input>
         </el-form-item>
         <el-form-item label="进出方向:">
-          <el-radio-group v-model="exportDirection" size="large" fill="#409eff">
-            <el-radio-button label="出" :value="0" />
-            <el-radio-button label="进" :value="1" />
+          <el-radio-group v-model="channelData.allow_temporary" 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="是否允许临时车进出:">
-          <el-radio-group v-model="exportDirection" size="large" fill="#409eff">
-            <el-radio-button label="是" :value="0" />
-            <el-radio-button label="否" :value="1" />
+          <el-radio-group v-model="channelData.allow_temporary" size="large" fill="#409eff">
+            <el-radio-button label="是" :value="true" />
+            <el-radio-button label="否" :value="false" />
           </el-radio-group>
         </el-form-item>
         <el-form-item label="备注:">
-          <el-input type="textarea" ></el-input>
+          <el-input type="textarea" v-model="channelData.direction"></el-input>
         </el-form-item>
       </el-form>
       <template #footer>
         <div class="dialog-footer">
-          <el-button @click="positionShow = false">取消</el-button>
-          <el-button type="primary" @click="addPosition">
+          <el-button @click="channelShow = false">取消</el-button>
+          <el-button type="primary" @click="channelOperation">
             确认
           </el-button>
         </div>
@@ -194,17 +194,184 @@
 
 <script setup>
 // import sign from '@/assets/sign.png'
-import {ref} from 'vue'
+import { ref, reactive, onMounted } from 'vue'
+import {
+  addGuardBooth,
+  obtainGuardBoothList,
+  editGuardBooth,
+  deleteGuardBooth,
+} from '@/api/guardBooth'
+import {
+  addChannel,
+  editChannel,
+  obtainChannelList,
+  deleteChannel
+} from '@/api/channel'
+import { ElMessage, ElMessageBox } from 'element-plus'
+
 const activeName = ref('detail')
 const handleClick = () => {}
-
 const positionShow = ref(false)
 const positionOperation = ref(0)
-const channelEditShow = ref(false)
 
-const addPosition = () => {}
+const positionTitle = ref('岗亭新增')
+// 岗亭数据
+const positionData = reactive({
+  id:'',
+  booth_code:'',
+  booth_name:'',
+  ip_address:'',
+  description:''
+})
+
+const positionList = reactive([])
+const addPosition = () => {
+  if (positionTitle.value === '岗亭新增') {
+    addGuardBooth(positionData).then(res => {
+      if (res.code === 0) {
+        ElMessage.success('添加成功')
+        positionShow.value = false
+        getGuardBoothList()
+      }
+    })
+  } else {
+    editGuardBooth(positionData).then(res => {
+      if (res.code === 0) {
+        ElMessage.success('更新成功')
+        positionShow.value = false
+        getGuardBoothList()
+      }
+    })
+  }
+}
+
+const openPosition = (head,data) => {
+  positionTitle.value = head
+  positionShow.value = true
+  if (head === '岗亭编辑') {
+    positionData.id = data.ID
+    positionData.booth_code = data.booth_code
+    positionData.booth_name = data.booth_name
+    positionData.ip_address = data.ip_address
+    positionData.description = data.description
+  } else {
+    positionData.ip_address = ''
+    positionData.description = ''
+    positionData.booth_code = ''
+    positionData.booth_name = ''
+  }
+}
+const getGuardBoothList = () => {
+  obtainGuardBoothList().then(res => {
+    if (res.code === 0) {
+      positionList.length = 0
+      positionList.push(...res.data.list)
+    }
+  })
+}
+
+const delPosition = (id) => {
+  ElMessageBox.confirm(
+      '确定要删除该岗亭吗?',
+      '提示',
+      {
+        confirmButtonText: '确认',
+        cancelButtonText: '取消',
+        type: 'warning',
+      }
+  )
+      .then(() => {
+        deleteGuardBooth(id).then(res => {
+          if (res.code === 0) {
+            ElMessage({
+              type: 'success',
+              message: '删除成功',
+            })
+            getGuardBoothList()
+          } else {
+            ElMessage({
+              type: 'error',
+              message: '删除失败',
+            })
+          }
+        })
+      })
+      .catch(() => {
+        ElMessage({
+          type: 'info',
+          message: '取消删除',
+        })
+      })
+}
+
+// 通道管理...................................................
+
+//通道数据
+const channelShow = ref(false)
+const channelData = reactive({
+  channel_code:'',
+  channel_name:'',
+  direction:'',
+  page: 1,
+  page_size: 10,
+  allow_temporary:false
+})
+
+const channelTitle = ref('通道新增')
+
+const channelList = reactive([])
+
+const openChannel = (head,data) => {
+  channelTitle.value = head
+  channelShow.value = true
+  if (head === '岗亭编辑') {
+    channelData.id = data.ID
+    channelData.channel_code = data.channel_code
+    channelData.channel_name = data.channel_name
+    channelData.allow_temporary = data.allow_temporary
+    channelData.direction = data.direction
+    channelData.description = data.description
+  } else {
+    channelData.channel_code = ''
+    channelData.channel_name = ''
+    channelData.allow_temporary = false
+    channelData.direction = ''
+    channelData.description = ''
+  }
+}
+const channelOperation = () => {
+  if (channelTitle.value === '通道新增') {
+    addChannel(channelData).then(res => {
+      if (res.code === 0) {
+        ElMessage.success('添加成功')
+        channelShow.value = false
+        getChannelList()
+      }
+    })
+  } else {
+    editChannel(channelData).then(res => {
+      if (res.code === 0) {
+        ElMessage.success('更新成功')
+        channelShow.value = false
+        getChannelList()
+      }
+    })
+  }
+}
+
+const getChannelList = () => {
+  obtainChannelList().then(res => {
+    if (res.code === 0) {
+      channelList.length = 0
+      channelList.push(...res.data)
+    }
+  })
+}
 
-const exportDirection = ref(false)
+onMounted(() => {
+  getGuardBoothList()
+  getChannelList()
+})
 </script>
 
 <style scoped lang="scss">