flx:新增车辆测速设备管理

This commit is contained in:
Rain_ 2025-10-17 15:28:23 +08:00
parent 81f18f5f3d
commit 7fd9929e0e
3 changed files with 616 additions and 7 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 552 B

View File

@ -89,10 +89,10 @@ const routes2 = [{
import ("../views/jxjadmin/operateManage.vue"),
},
{
path: "/operateManagePc",
name: "operateManagePc",
component: () =>
import ("../views/jxjadmin/operateManagePc.vue"),
path: "/operateManagePc",
name: "operateManagePc",
component: () =>
import ("../views/jxjadmin/operateManagePc.vue"),
},
//字典管理
{
@ -2137,6 +2137,12 @@ const routes2 = [{
component: (resolve) =>
require(["@/views/projectFront/carManage/carStatictis.vue"], resolve),
},
{
path: "/project/carManage/carCamervelocity",
name: "车辆管理_车辆测速设备管理",
component: (resolve) =>
require(["@/views/equipmentCenter/carManage/carCamervelocity.vue"], resolve),
},
{
path: "/project/carManage/vehicleReal",
name: "车辆管理_车辆实时数据",
@ -6234,10 +6240,10 @@ const routes2 = [{
require(["../views/projectFront/towerCrane/basicInfo.vue"], resolve),
},
{
path: "electricDevManage",
name: "电箱管理_设备管理",
path: "carCamervelocity",
name: "车辆管理_车辆测速设备管理",
component: () =>
import ("../views/equipmentCenter/electricBox/deviceManage"),
import ("../views/equipmentCenter/carManage/carCamervelocity"),
},
{
path: "lifterBasicInfo", //升降机管理 基本信息

View File

@ -0,0 +1,603 @@
<template>
<div class="fullHeight">
<div class="searchBox whiteBlock">
<el-button type="warning" plain size="medium" @click="refresh">{{
$t("message.alarmValueSet.refresh")
}}</el-button>
<el-button type="primary" size="medium" @click="add">{{
$t("message.videoManage.add")
}}</el-button>
</div>
<div class="table_wrap whiteBlock">
<el-table class="tables" :data="List" height="520px">
<el-table-column
prop="deviceName"
align="center"
label="设备名称"
></el-table-column>
<el-table-column
prop="devSn"
align="center"
label="设备编号"
></el-table-column>
<el-table-column
width="200"
prop="enabled"
align="center"
label="设备状态"
>
<template slot-scope="scope">
{{ scope.row.enabled == 1 ? "在线" : "离线" }}
</template>
</el-table-column>
<el-table-column
width="300"
prop="deviceAddress"
align="center"
label="设备地址"
></el-table-column>
<el-table-column
prop="recordTime"
align="center"
label="备案时间"
></el-table-column>
<el-table-column
width="300"
:label="$t('message.alarmValueSet.operation')"
align="center"
>
<template slot-scope="scope">
<div class="tableBtns">
<div
@click="onsholdswtich(scope.row)"
class="operationText"
>
<img
src="@/assets/images/back-came.png"
width="15px"
height="15px"
/>
<span>阈值设置</span>
</div>
<div @click="edit(scope.row)" class="operationText">
<img
src="@/assets/images/icon-edit.png"
width="15px"
height="15px"
/>
<span>{{
$t("message.alarmValueSet.edit")
}}</span>
</div>
<div
@click="deleteDev(scope.row)"
class="operationText"
>
<img
src="@/assets/images/icon-delete.png"
width="15px"
height="15px"
/>
<span>{{
$t("message.alarmValueSet.delete")
}}</span>
</div>
</div>
</template>
</el-table-column>
</el-table>
</div>
<div class="Pagination-but">
<el-pagination
class="pagerBox"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="pageInfo.pageNo"
:page-sizes="[10, 50, 100]"
:page-size="pageInfo.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="pageInfo.total"
background
></el-pagination>
</div>
<el-dialog
:modal-append-to-body="false"
@close="close"
:title="$t('message.alarmValueSet.Popup_title')[Popup.type]"
:visible.sync="Popup.show"
width="667px"
>
<div class="dialog_content">
<el-form
v-if="Popup.type === 'add' || Popup.type === 'edit'"
size="medium"
:model="addEditForm"
ref="addEditForm"
label-width="120px"
class="dialogFormBox"
:rules="formRules"
>
<template v-if="!thresholdswtich">
<el-form-item label="设备名称" prop="deviceName">
<el-input
v-model="addEditForm.deviceName"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="设备编号" prop="devSn">
<el-input
v-model="addEditForm.devSn"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="是否启用" prop="enabled">
<el-radio-group v-model="addEditForm.enabled">
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="显示的名字" prop="displayedName">
<el-input
v-model="addEditForm.displayedName"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="分包单位" prop="enterpriseIds">
<el-select
v-model="addEditForm.enterpriseIds"
multiple
filterable
placeholder="请选择企业"
>
<el-option
:label="item.enterpriseName"
:value="item.id"
v-for="(item, index) in enterpriseList"
:key="index"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="地址" prop="deviceAddress">
<el-input
v-model="addEditForm.deviceAddress"
placeholder="请选择"
></el-input>
</el-form-item>
<el-form-item label="设备所在经度" prop="lat">
<el-input
v-model="addEditForm.lat"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="设备所在纬度" prop="lng">
<el-input
v-model="addEditForm.lng"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="摄像头" prop="camera">
<el-select
v-model="addEditForm.camera"
multiple
collapse-tags
style="width: 100%"
:placeholder="
$t(
'message.alarmValueSet.placeholder_select'
)
"
>
<el-option
v-for="item in videoList"
:key="item.itemId"
:label="item.videoName"
:value="item.itemId"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="报警推送人" prop="alarmPusher">
<el-select
v-model="addEditForm.alarmPusher"
multiple
filterable
:placeholder="
$t(
'message.alarmValueSet.placeholder_select'
)
"
>
<el-option
v-for="item in options"
:key="item.workerId"
:label="item.workerName"
:value="item.workerId"
></el-option>
</el-select>
</el-form-item>
</template>
<template v-else>
<el-form-item label="超速阈值设置" prop="threshold">
<el-input
v-model="addEditForm.threshold"
placeholder="请输入"
></el-input>
</el-form-item>
</template>
<div class="dialog-footer">
<el-button
class="cancleBtn"
@click="
(Popup.show = false), (thresholdswtich = false)
"
icon="el-icon-circle-close"
size="medium"
>{{ $t("message.alarmValueSet.cancel") }}</el-button
>
<el-button
type="primary"
icon="el-icon-circle-check"
@click="submit"
size="medium"
>{{ $t("message.alarmValueSet.save") }}</el-button
>
</div>
</el-form>
</div>
</el-dialog>
</div>
</template>
<script>
import {
carMeasureSpeedApi,
carMeasureSpeedAddApi,
carMeasureSpeededitApi,
carMeasureSpeedbyApi,
carMeasureSpeeddeleteApi,
} from "../../../assets/js/api/carManage";
import { getVideoItemListApi } from "@/assets/js/api/lifter";
import { getEnterpriseInfoListApi } from "@/assets/js/api/specialWork";
import { getLaborManagementInfoList } from "../../../assets/js/api/environmentManage";
export default {
mounted() {
this.getList();
this.getEnterpriseList();
this.getLaborManagementList();
this.getVideoItemList();
},
data() {
return {
addEditForm: {
gateName: "",
gateNumber: "",
type: 1,
},
formRules: {
deviceName: [
{
required: true,
message: "请输入",
trigger: "blur",
},
],
devSn: [
{
required: true,
message: "请输入",
trigger: "blur",
},
],
// enabled: [
// {
// required: true,
// message: "",
// trigger: "blur"
// }
// ],
// enterpriseIds: [
// {
// required: true,
// message: "",
// trigger: "blur"
// }
// ],
// deviceAddress: [
// {
// required: true,
// message: "",
// trigger: "blur"
// }
// ],
// camera: [
// {
// required: true,
// message: "",
// trigger: "blur"
// }
// ],
// alarmPusher: [
// {
// required: true,
// message: "",
// trigger: "blur"
// }
// ],
// lng: [
// {
// required: true,
// message: "",
// trigger: "blur"
// }
// ],
// lat: [
// {
// required: true,
// message: "",
// trigger: "blur"
// }
// ]
},
List: [],
Popup: {
type: "add",
show: false,
},
//
pageInfo: {
//
total: 0,
//
pageNo: 1,
//
pageSize: 10,
},
//
thresholdswtich: false,
//
enterpriseList: [],
//
videoList: [],
//
options: [],
};
},
methods: {
/** 查询企业列表 */
getEnterpriseList() {
const params = {
projectSn: this.$store.state.projectSn,
enterpriseName: undefined,
userEnterpriseId: this.$store.state.userInfo.userEnterpriseId,
enterpriseTypeId: undefined,
};
getEnterpriseInfoListApi(params).then((res) => {
console.log("查询企业列表: ", res);
this.enterpriseList = res.result;
});
},
getLaborManagementList() {
getLaborManagementInfoList({
projectSn: this.$store.state.projectSn,
workerName: "",
}).then((result) => {
if (result.success) {
console.log("施工人员", result);
this.options = result.result;
}
});
},
//
getVideoItemList() {
let data = {
projectSn: this.$store.state.projectSn,
};
console.log(data);
getVideoItemListApi(data).then((res) => {
if (res.code == 200) {
console.log(res);
this.videoList = res.result.list;
}
});
},
handle(type, show) {
//
this.Popup = {
type: type,
show: show,
};
},
Change() {},
add() {
this.handle("add", true);
},
edit(obj) {
console.log("编辑", obj);
//
this.getonespeed(obj.id);
this.handle("edit", true);
},
onsholdswtich(obj) {
this.handle("edit", true);
//
this.getonespeed(obj.id);
this.thresholdswtich = true;
},
deleteDev(obj) {
console.log("删除", obj);
this.$confirm(
this.$t(
"message.personnelPosition.beaconManage.table.confirmText"
) +
"【" +
obj.deviceName +
"】?",
this.$t("message.personnelPosition.beaconManage.table.Tips"),
{
confirmButtonText: this.$t(
"message.personnelPosition.confirmButtonText"
),
cancelButtonText: this.$t(
"message.personnelPosition.cancelButtonText"
),
type: "warning",
}
)
.then(() => {
carMeasureSpeeddeleteApi({ id: obj.id }).then((result) => {
if (result.success) {
this.$message.success(result.message);
this.getList();
}
});
})
.catch(() => {});
},
submit() {
this.$refs["addEditForm"].validate((valid) => {
this.thresholdswtich = false;
console.log("表单信息", this.addEditForm);
if (valid) {
let params = this.addEditForm;
//
if (this.addEditForm.alarmPusher) {
this.addEditForm.alarmPusher =
this.addEditForm.alarmPusher.join(",");
}
if (this.addEditForm.camera) {
this.addEditForm.camera =
this.addEditForm.camera.join(",");
}
if (this.addEditForm.enterpriseIds) {
this.addEditForm.enterpriseIds =
this.addEditForm.enterpriseIds.join(",");
}
params.projectSn = this.$store.state.projectSn;
if (this.Popup.type === "add") {
carMeasureSpeedAddApi(params).then((result) => {
if (result.success) {
this.$message.success(result.message);
this.getList();
}
});
} else if (this.Popup.type === "edit") {
console.log("编辑信息", this.addEditForm);
carMeasureSpeededitApi(params).then((result) => {
if (result.success) {
this.$message.success(result.message);
this.getList();
}
});
}
this.Popup.show = false;
} else {
console.log("error submit!!");
return false;
}
});
},
refresh() {
this.getList();
},
getList() {
carMeasureSpeedApi(this.pageInfo).then((result) => {
if (result.success) {
this.List = result.result.records;
this.pageInfo.total = Number(result.result.total);
// console.log("", result.result.records);
}
});
},
//
getonespeed(id) {
carMeasureSpeedbyApi({ id: id }).then((result) => {
if (result.success) {
console.log("设备测试-单条", result.result);
this.addEditForm = result.result;
if (this.addEditForm.alarmPusher) {
this.addEditForm.alarmPusher =
this.addEditForm.alarmPusher.split(",");
}
if (this.addEditForm.camera) {
this.addEditForm.camera =
this.addEditForm.camera.split(",");
}
if (this.addEditForm.enterpriseIds) {
this.addEditForm.enterpriseIds =
this.addEditForm.enterpriseIds.split(",");
}
}
});
},
close() {
this.addEditForm = {
isEnable: 0,
};
console.log("关闭=====================");
this.thresholdswtich = false;
},
//
handleSizeChange(val) {
// console.log(` ${val} `);
this.pageInfo.pageSize = val;
this.getList();
},
//
handleCurrentChange(val) {
// console.log(`: ${val}`);
this.pageInfo.pageNo = val;
this.getList();
},
},
};
</script>
<style lang="less">
.tableBtns {
display: flex;
justify-content: center;
}
.yj-dialogFormBox {
width: 462px;
}
.fullHeight {
position: relative;
.Pagination-but {
width: 100%;
padding: 20px 0;
// background: skyblue;
position: absolute;
bottom: 30px;
right: 20px;
display: flex;
justify-content: center;
}
}
</style>