From 759c94f4833b68460cb771ef3def39820e2b7380 Mon Sep 17 00:00:00 2001
From: XinWei <2718030729@qq.com>
Date: Wed, 14 Aug 2024 16:34:54 +0800
Subject: [PATCH 1/3] build
---
.drone.yml | 45 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)
create mode 100644 .drone.yml
diff --git a/.drone.yml b/.drone.yml
new file mode 100644
index 00000000..60df85db
--- /dev/null
+++ b/.drone.yml
@@ -0,0 +1,45 @@
+kind: pipeline
+type: docker
+name: ludu-admin-vue3
+
+steps:
+ # - name: build
+ # image: node:18.18.0
+ # volumes:
+ # - name: build-file
+ # path: /build/dist
+ # commands:
+ # - npm install --registry=https://registry.npmmirror.com/
+ # - npm run build:prod
+ # - cp -r dist-prod/. /build/dist
+
+ - name: remote_transmit
+
+ image: appleboy/drone-ssh # SSH工具镜像
+ settings:
+
+ host: 101.43.112.107 # 远程连接地址
+
+ username: root # 远程连接账号
+
+ password:
+
+ from_secret: ssh_password # 从Secret中读取SSH密码
+
+ port: 22 # 远程连接端口
+
+ command_timeout: 5m # 远程执行命令超时时间
+
+ script:
+ - rm -rf ludu-admin-vue3
+ - git clone http://101.43.112.107:3000/root/ludu-admin-vue3.git
+ - cd ludu-admin-vue3
+ - npm install --registry=https://registry.npmmirror.com/
+ - npm run build:prod
+ - cp -r dist-prod/. /lundu-build/font
+ - scp -r /lundu-build/font/. root@120.46.37.243:/root/buildIndex
+
+# volumes: # 定义流水线挂载目录,用于共享数据
+# - name: build-file
+# host:
+# path: /mydata/buildIndex # 从宿主机中挂载的目录
\ No newline at end of file
From 587c832c77775ba18eae7cbebda12d234c2fa4b3 Mon Sep 17 00:00:00 2001
From: XinWei <2718030729@qq.com>
Date: Wed, 14 Aug 2024 17:55:43 +0800
Subject: [PATCH 2/3] build
---
.drone.yml | 45 ---------------------------------------------
1 file changed, 45 deletions(-)
delete mode 100644 .drone.yml
diff --git a/.drone.yml b/.drone.yml
deleted file mode 100644
index 60df85db..00000000
--- a/.drone.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-kind: pipeline
-type: docker
-name: ludu-admin-vue3
-
-steps:
- # - name: build
- # image: node:18.18.0
- # volumes:
- # - name: build-file
- # path: /build/dist
- # commands:
- # - npm install --registry=https://registry.npmmirror.com/
- # - npm run build:prod
- # - cp -r dist-prod/. /build/dist
-
- - name: remote_transmit
-
- image: appleboy/drone-ssh # SSH工具镜像
- settings:
-
- host: 101.43.112.107 # 远程连接地址
-
- username: root # 远程连接账号
-
- password:
-
- from_secret: ssh_password # 从Secret中读取SSH密码
-
- port: 22 # 远程连接端口
-
- command_timeout: 5m # 远程执行命令超时时间
-
- script:
- - rm -rf ludu-admin-vue3
- - git clone http://101.43.112.107:3000/root/ludu-admin-vue3.git
- - cd ludu-admin-vue3
- - npm install --registry=https://registry.npmmirror.com/
- - npm run build:prod
- - cp -r dist-prod/. /lundu-build/font
- - scp -r /lundu-build/font/. root@120.46.37.243:/root/buildIndex
-
-# volumes: # 定义流水线挂载目录,用于共享数据
-# - name: build-file
-# host:
-# path: /mydata/buildIndex # 从宿主机中挂载的目录
\ No newline at end of file
From 896fa995467964e11daec30bb2c3cb5a8bacacc7 Mon Sep 17 00:00:00 2001
From: XinWei <2718030729@qq.com>
Date: Tue, 20 Aug 2024 09:31:09 +0800
Subject: [PATCH 3/3] =?UTF-8?q?=E6=94=B6=E8=B4=B9=E4=BF=A1=E6=81=AF?=
=?UTF-8?q?=E3=80=81=E8=BF=9C=E7=A8=8B=E6=8A=AC=E6=9D=A0=E3=80=81=E5=BF=83?=
=?UTF-8?q?=E8=B7=B3=E6=97=A5=E5=BF=97=E3=80=81=E5=9C=BA=E5=BA=93=E3=80=81?=
=?UTF-8?q?=E5=8C=BA=E5=9F=9F=E3=80=81=E9=80=9A=E9=81=93?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/parking/heartbeat/message/index.ts | 46 ++
.../instructiondelivery/liftingrod/index.ts | 41 ++
.../parking/moneymanage/chargeinfo/index.ts | 59 +++
src/api/parking/parkmanage/area/index.ts | 46 ++
src/api/parking/parkmanage/park/index.ts | 44 ++
.../parking/parkmanage/passageway/index.ts | 43 ++
.../heartbeat/message/HeartbeatForm.vue | 128 ++++++
src/views/parking/heartbeat/message/index.vue | 253 +++++++++++
.../liftingrod/LiftingRodForm.vue | 98 +++++
.../instructiondelivery/liftingrod/index.vue | 198 +++++++++
.../moneymanage/chargeinfo/chargeInfoForm.vue | 212 +++++++++
.../parking/moneymanage/chargeinfo/index.vue | 401 ++++++++++++++++++
.../parking/parkmanage/area/AreaForm.vue | 128 ++++++
src/views/parking/parkmanage/area/index.vue | 253 +++++++++++
.../parking/parkmanage/park/ParkForm.vue | 116 +++++
src/views/parking/parkmanage/park/index.vue | 231 ++++++++++
.../parkmanage/passageway/PassagewayForm.vue | 110 +++++
.../parking/parkmanage/passageway/index.vue | 220 ++++++++++
18 files changed, 2627 insertions(+)
create mode 100644 src/api/parking/heartbeat/message/index.ts
create mode 100644 src/api/parking/instructiondelivery/liftingrod/index.ts
create mode 100644 src/api/parking/moneymanage/chargeinfo/index.ts
create mode 100644 src/api/parking/parkmanage/area/index.ts
create mode 100644 src/api/parking/parkmanage/park/index.ts
create mode 100644 src/api/parking/parkmanage/passageway/index.ts
create mode 100644 src/views/parking/heartbeat/message/HeartbeatForm.vue
create mode 100644 src/views/parking/heartbeat/message/index.vue
create mode 100644 src/views/parking/instructiondelivery/liftingrod/LiftingRodForm.vue
create mode 100644 src/views/parking/instructiondelivery/liftingrod/index.vue
create mode 100644 src/views/parking/moneymanage/chargeinfo/chargeInfoForm.vue
create mode 100644 src/views/parking/moneymanage/chargeinfo/index.vue
create mode 100644 src/views/parking/parkmanage/area/AreaForm.vue
create mode 100644 src/views/parking/parkmanage/area/index.vue
create mode 100644 src/views/parking/parkmanage/park/ParkForm.vue
create mode 100644 src/views/parking/parkmanage/park/index.vue
create mode 100644 src/views/parking/parkmanage/passageway/PassagewayForm.vue
create mode 100644 src/views/parking/parkmanage/passageway/index.vue
diff --git a/src/api/parking/heartbeat/message/index.ts b/src/api/parking/heartbeat/message/index.ts
new file mode 100644
index 00000000..d33174a1
--- /dev/null
+++ b/src/api/parking/heartbeat/message/index.ts
@@ -0,0 +1,46 @@
+import request from '@/config/axios'
+
+// 心跳管理 VO
+export interface HeartbeatVO {
+ id: number // 编号
+ parkNumber: string // 场库编号
+ parkName: string // 场库名称
+ spaceCount: number // 场库总车位数
+ freeSpaceCount: number // 场库空车位数
+ bookSpaceCount: number // 场库可预约数
+ bookInParkCount: number // 场库在场预约数
+ areaList: string // 区域属性
+}
+
+// 心跳管理 API
+export const HeartbeatApi = {
+ // 查询心跳管理分页
+ getHeartbeatPage: async (params: any) => {
+ return await request.get({ url: `/parking/heartbeat/page`, params })
+ },
+
+ // 查询心跳管理详情
+ getHeartbeat: async (id: number) => {
+ return await request.get({ url: `/parking/heartbeat/get?id=` + id })
+ },
+
+ // 新增心跳管理
+ createHeartbeat: async (data: HeartbeatVO) => {
+ return await request.post({ url: `/parking/heartbeat/create`, data })
+ },
+
+ // 修改心跳管理
+ updateHeartbeat: async (data: HeartbeatVO) => {
+ return await request.put({ url: `/parking/heartbeat/update`, data })
+ },
+
+ // 删除心跳管理
+ deleteHeartbeat: async (id: number) => {
+ return await request.delete({ url: `/parking/heartbeat/delete?id=` + id })
+ },
+
+ // 导出心跳管理 Excel
+ exportHeartbeat: async (params) => {
+ return await request.download({ url: `/parking/heartbeat/export-excel`, params })
+ },
+}
\ No newline at end of file
diff --git a/src/api/parking/instructiondelivery/liftingrod/index.ts b/src/api/parking/instructiondelivery/liftingrod/index.ts
new file mode 100644
index 00000000..c366916d
--- /dev/null
+++ b/src/api/parking/instructiondelivery/liftingrod/index.ts
@@ -0,0 +1,41 @@
+import request from '@/config/axios'
+
+// 远程抬杠日志 VO
+export interface LiftingRodVO {
+ id: number // id
+ parkNumber: string // 停车场编号
+ passagewayId: string // 通道Id
+}
+
+// 远程抬杠日志 API
+export const LiftingRodApi = {
+ // 查询远程抬杠日志分页
+ getLiftingRodPage: async (params: any) => {
+ return await request.get({ url: `/parking/lifting-rod/page`, params })
+ },
+
+ // 查询远程抬杠日志详情
+ getLiftingRod: async (id: number) => {
+ return await request.get({ url: `/parking/lifting-rod/get?id=` + id })
+ },
+
+ // 新增远程抬杠日志
+ createLiftingRod: async (data: LiftingRodVO) => {
+ return await request.post({ url: `/parking/lifting-rod/create`, data })
+ },
+
+ // 修改远程抬杠日志
+ updateLiftingRod: async (data: LiftingRodVO) => {
+ return await request.put({ url: `/parking/lifting-rod/update`, data })
+ },
+
+ // 删除远程抬杠日志
+ deleteLiftingRod: async (id: number) => {
+ return await request.delete({ url: `/parking/lifting-rod/delete?id=` + id })
+ },
+
+ // 导出远程抬杠日志 Excel
+ exportLiftingRod: async (params) => {
+ return await request.download({ url: `/parking/lifting-rod/export-excel`, params })
+ },
+}
\ No newline at end of file
diff --git a/src/api/parking/moneymanage/chargeinfo/index.ts b/src/api/parking/moneymanage/chargeinfo/index.ts
new file mode 100644
index 00000000..9fcac9be
--- /dev/null
+++ b/src/api/parking/moneymanage/chargeinfo/index.ts
@@ -0,0 +1,59 @@
+import request from '@/config/axios'
+
+// 收费信息 VO
+export interface chargeInfoVO {
+ id: number // id
+ parkNumber: string // 场库编号
+ plate: string // 车牌号
+ inTime: string // 入场时间
+ outTime: string // 结算时间
+ inChannel: string // 入场通道
+ outChannel: string // 出场通道
+ payKind: string // 支付类型
+ payChannel: string // 支付渠道
+ orderId: string // 入场订单号
+ carType: string // 车辆类型
+ payNo: string // 支付订单号
+ memo: string // 备注
+ charge: string // 应缴金额
+ realCharge: string // 实收金额
+ couponCharge: string // 优惠金额
+ areaId: string // 区域 ID
+ operatorName: string // 操作员名称
+ operatorTelphone: string // 操作员联系电话
+ outTradeNo: string // 支付订单号
+ plateColor: string // 车牌颜色
+}
+
+// 收费信息 API
+export const chargeInfoApi = {
+ // 查询收费信息分页
+ getchargeInfoPage: async (params: any) => {
+ return await request.get({ url: `/parking/charge-info/page`, params })
+ },
+
+ // 查询收费信息详情
+ getchargeInfo: async (id: number) => {
+ return await request.get({ url: `/parking/charge-info/get?id=` + id })
+ },
+
+ // 新增收费信息
+ createchargeInfo: async (data: chargeInfoVO) => {
+ return await request.post({ url: `/parking/charge-info/create`, data })
+ },
+
+ // 修改收费信息
+ updatechargeInfo: async (data: chargeInfoVO) => {
+ return await request.put({ url: `/parking/charge-info/update`, data })
+ },
+
+ // 删除收费信息
+ deletechargeInfo: async (id: number) => {
+ return await request.delete({ url: `/parking/charge-info/delete?id=` + id })
+ },
+
+ // 导出收费信息 Excel
+ exportchargeInfo: async (params) => {
+ return await request.download({ url: `/parking/charge-info/export-excel`, params })
+ },
+}
\ No newline at end of file
diff --git a/src/api/parking/parkmanage/area/index.ts b/src/api/parking/parkmanage/area/index.ts
new file mode 100644
index 00000000..78d72f9b
--- /dev/null
+++ b/src/api/parking/parkmanage/area/index.ts
@@ -0,0 +1,46 @@
+import request from '@/config/axios'
+
+// 区域列表 VO
+export interface AreaVO {
+ areaName: string // 区域名称
+ spaceCount: number // 区域车位数
+ lastSpaceCount: number // 区域空位数
+ bookSpaceCount: number // 区域可预约车位数
+ bookInParkCount: number // 区域在场预约数
+ id: number // id
+ areaId: number // 区域Id
+ parkNumber: string // 场库编号
+}
+
+// 区域列表 API
+export const AreaApi = {
+ // 查询区域列表分页
+ getAreaPage: async (params: any) => {
+ return await request.get({ url: `/parking/area/page`, params })
+ },
+
+ // 查询区域列表详情
+ getArea: async (id: number) => {
+ return await request.get({ url: `/parking/area/get?id=` + id })
+ },
+
+ // 新增区域列表
+ createArea: async (data: AreaVO) => {
+ return await request.post({ url: `/parking/area/create`, data })
+ },
+
+ // 修改区域列表
+ updateArea: async (data: AreaVO) => {
+ return await request.put({ url: `/parking/area/update`, data })
+ },
+
+ // 删除区域列表
+ deleteArea: async (id: number) => {
+ return await request.delete({ url: `/parking/area/delete?id=` + id })
+ },
+
+ // 导出区域列表 Excel
+ exportArea: async (params) => {
+ return await request.download({ url: `/parking/area/export-excel`, params })
+ },
+}
\ No newline at end of file
diff --git a/src/api/parking/parkmanage/park/index.ts b/src/api/parking/parkmanage/park/index.ts
new file mode 100644
index 00000000..85c5cff1
--- /dev/null
+++ b/src/api/parking/parkmanage/park/index.ts
@@ -0,0 +1,44 @@
+import request from '@/config/axios'
+
+// 场库列表 VO
+export interface ParkVO {
+ parkNumber: string // 场库编号
+ parkName: string // 场库名称
+ spaceCount: number // 场库总车位数
+ freeSpaceCount: number // 场库空车位数
+ bookSpaceCount: number // 场库可预约数
+ bookInParkCount: number // 场库在场预约数
+}
+
+// 场库列表 API
+export const ParkApi = {
+ // 查询场库列表分页
+ getParkPage: async (params: any) => {
+ return await request.get({ url: `/parking/park/page`, params })
+ },
+
+ // 查询场库列表详情
+ getPark: async (id: number) => {
+ return await request.get({ url: `/parking/park/get?id=` + id })
+ },
+
+ // 新增场库列表
+ createPark: async (data: ParkVO) => {
+ return await request.post({ url: `/parking/park/create`, data })
+ },
+
+ // 修改场库列表
+ updatePark: async (data: ParkVO) => {
+ return await request.put({ url: `/parking/park/update`, data })
+ },
+
+ // 删除场库列表
+ deletePark: async (id: number) => {
+ return await request.delete({ url: `/parking/park/delete?id=` + id })
+ },
+
+ // 导出场库列表 Excel
+ exportPark: async (params) => {
+ return await request.download({ url: `/parking/park/export-excel`, params })
+ },
+}
\ No newline at end of file
diff --git a/src/api/parking/parkmanage/passageway/index.ts b/src/api/parking/parkmanage/passageway/index.ts
new file mode 100644
index 00000000..1c0cb476
--- /dev/null
+++ b/src/api/parking/parkmanage/passageway/index.ts
@@ -0,0 +1,43 @@
+import request from '@/config/axios'
+
+// 通道信息 VO
+export interface PassagewayVO {
+ passagewayId: string // 通道 Id
+ parkNumber: string // 场库编号
+ passagewayName: string // 通道名称
+ sourceAreaId: string // 源区域 Id
+ targetAreaId: string // 目标区域 Id
+}
+
+// 通道信息 API
+export const PassagewayApi = {
+ // 查询通道信息分页
+ getPassagewayPage: async (params: any) => {
+ return await request.get({ url: `/parking/passageway/page`, params })
+ },
+
+ // 查询通道信息详情
+ getPassageway: async (id: number) => {
+ return await request.get({ url: `/parking/passageway/get?id=` + id })
+ },
+
+ // 新增通道信息
+ createPassageway: async (data: PassagewayVO) => {
+ return await request.post({ url: `/parking/passageway/create`, data })
+ },
+
+ // 修改通道信息
+ updatePassageway: async (data: PassagewayVO) => {
+ return await request.put({ url: `/parking/passageway/update`, data })
+ },
+
+ // 删除通道信息
+ deletePassageway: async (id: number) => {
+ return await request.delete({ url: `/parking/passageway/delete?id=` + id })
+ },
+
+ // 导出通道信息 Excel
+ exportPassageway: async (params) => {
+ return await request.download({ url: `/parking/passageway/export-excel`, params })
+ },
+}
\ No newline at end of file
diff --git a/src/views/parking/heartbeat/message/HeartbeatForm.vue b/src/views/parking/heartbeat/message/HeartbeatForm.vue
new file mode 100644
index 00000000..2feef68a
--- /dev/null
+++ b/src/views/parking/heartbeat/message/HeartbeatForm.vue
@@ -0,0 +1,128 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/views/parking/heartbeat/message/index.vue b/src/views/parking/heartbeat/message/index.vue
new file mode 100644
index 00000000..cf24e082
--- /dev/null
+++ b/src/views/parking/heartbeat/message/index.vue
@@ -0,0 +1,253 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+ 新增
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/parking/instructiondelivery/liftingrod/LiftingRodForm.vue b/src/views/parking/instructiondelivery/liftingrod/LiftingRodForm.vue
new file mode 100644
index 00000000..72b37b1e
--- /dev/null
+++ b/src/views/parking/instructiondelivery/liftingrod/LiftingRodForm.vue
@@ -0,0 +1,98 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/views/parking/instructiondelivery/liftingrod/index.vue b/src/views/parking/instructiondelivery/liftingrod/index.vue
new file mode 100644
index 00000000..81cfcf1a
--- /dev/null
+++ b/src/views/parking/instructiondelivery/liftingrod/index.vue
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+ 新增
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/parking/moneymanage/chargeinfo/chargeInfoForm.vue b/src/views/parking/moneymanage/chargeinfo/chargeInfoForm.vue
new file mode 100644
index 00000000..653071ef
--- /dev/null
+++ b/src/views/parking/moneymanage/chargeinfo/chargeInfoForm.vue
@@ -0,0 +1,212 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/views/parking/moneymanage/chargeinfo/index.vue b/src/views/parking/moneymanage/chargeinfo/index.vue
new file mode 100644
index 00000000..44262f1d
--- /dev/null
+++ b/src/views/parking/moneymanage/chargeinfo/index.vue
@@ -0,0 +1,401 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+ 新增
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/parking/parkmanage/area/AreaForm.vue b/src/views/parking/parkmanage/area/AreaForm.vue
new file mode 100644
index 00000000..1b5b8f8a
--- /dev/null
+++ b/src/views/parking/parkmanage/area/AreaForm.vue
@@ -0,0 +1,128 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/views/parking/parkmanage/area/index.vue b/src/views/parking/parkmanage/area/index.vue
new file mode 100644
index 00000000..63791d69
--- /dev/null
+++ b/src/views/parking/parkmanage/area/index.vue
@@ -0,0 +1,253 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+ 新增
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/parking/parkmanage/park/ParkForm.vue b/src/views/parking/parkmanage/park/ParkForm.vue
new file mode 100644
index 00000000..b5307c86
--- /dev/null
+++ b/src/views/parking/parkmanage/park/ParkForm.vue
@@ -0,0 +1,116 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/views/parking/parkmanage/park/index.vue b/src/views/parking/parkmanage/park/index.vue
new file mode 100644
index 00000000..9f132150
--- /dev/null
+++ b/src/views/parking/parkmanage/park/index.vue
@@ -0,0 +1,231 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+ 新增
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/parking/parkmanage/passageway/PassagewayForm.vue b/src/views/parking/parkmanage/passageway/PassagewayForm.vue
new file mode 100644
index 00000000..4a5da97f
--- /dev/null
+++ b/src/views/parking/parkmanage/passageway/PassagewayForm.vue
@@ -0,0 +1,110 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/views/parking/parkmanage/passageway/index.vue b/src/views/parking/parkmanage/passageway/index.vue
new file mode 100644
index 00000000..57d22fde
--- /dev/null
+++ b/src/views/parking/parkmanage/passageway/index.vue
@@ -0,0 +1,220 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+ 新增
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file