feat():穿梭框优先级

master
86191 2024-09-22 22:26:49 +08:00
parent 457a5ceeb7
commit ffb8a83d8d
2 changed files with 85 additions and 24 deletions

View File

@ -0,0 +1,9 @@
import request from '@/utils/request'
//查询围栏组
export function selectGroupList() {
return request({
url: '/fence/tbGroup/selectTbGroupList',
method: 'get'
})
}

View File

@ -69,7 +69,6 @@
<el-table v-loading="loading" :data="fenceList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="fenceList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="围栏编号" align="center" prop="fenceId" />
<el-table-column label="围栏名称" align="center" prop="fenceName" /> <el-table-column label="围栏名称" align="center" prop="fenceName" />
<el-table-column label="围栏类型" align="center" prop="fenceType" :formatter="fenceTypeFormatter" /> <el-table-column label="围栏类型" align="center" prop="fenceType" :formatter="fenceTypeFormatter" />
<el-table-column label="围栏状态" align="center" prop="fenceFlag" :formatter="fenceFlagFormatter" /> <el-table-column label="围栏状态" align="center" prop="fenceFlag" :formatter="fenceFlagFormatter" />
@ -103,27 +102,45 @@
/> />
<!-- 添加或修改电子围栏对话框 --> <!-- 添加或修改电子围栏对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="750px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="围栏名称" prop="fenceName"> <el-form-item label="围栏名称" prop="fenceName">
<el-input v-model="form.fenceName" placeholder="请输入围栏名称" /> <el-input v-model="form.fenceName" placeholder="请输入围栏名称" />
</el-form-item> </el-form-item>
<el-form-item label="围栏类型" prop="fenceType"> <el-form-item label="围栏类型" prop="fenceType">
<el-radio-group v-model="form.fenceType"> <el-radio-group v-model="form.fenceType">
<el-radio label="1">驶入</el-radio> <el-radio :label="1">驶入</el-radio>
<el-radio label="2">驶出</el-radio> <el-radio :label="2">驶出</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="围栏状态" prop="fenceFlag"> <el-form-item label="围栏状态" prop="fenceFlag">
<el-select v-model="form.fenceFlag" placeholder="请选择围栏状态" clearable> <el-select v-model="form.fenceFlag" placeholder="请选择围栏状态" clearable>
<el-option label="正常" value="1"></el-option> <el-option label="正常" :value="1"></el-option>
<el-option label="停用" value="2"></el-option> <el-option label="停用" :value="2"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-if="form.fencePriority != null" label="优先级回显" prop="fencePriority">
<el-input v-model="form.fencePriority" placeholder="请输入围栏优先级" />
</el-form-item>
<el-form-item label="优先级" prop="fencePriority">
<el-transfer
v-model="selectedGroups"
:data="transferData"
:titles="['围栏组', '优先级']"
style="margin-top: 15px;"
></el-transfer>
</el-form-item>
<el-form-item label="经纬度信息" prop="longitudeAndLatitudeInformation"> <el-form-item label="经纬度信息" prop="longitudeAndLatitudeInformation">
<el-input v-model="form.longitudeAndLatitudeInformation" placeholder="请输入经纬度信息" /> <el-input v-model="form.longitudeAndLatitudeInformation" placeholder="请输入经纬度信息" />
<el-button type="primary" @click="openLocationDialog"></el-button> <el-button type="primary" @click="openDialog"></el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button> <el-button type="primary" @click="submitForm"> </el-button>
@ -144,6 +161,7 @@
<script> <script>
import { listFence, getFence, delFence, addFence, updateFence } from "/src/api/fence/fence"; import { listFence, getFence, delFence, addFence, updateFence } from "/src/api/fence/fence";
import SelectLocation from '@/components/SelectLocation.vue' import SelectLocation from '@/components/SelectLocation.vue'
import { selectGroupList } from '@/api/fence/group'
export default { export default {
name: "Fence", name: "Fence",
@ -152,6 +170,15 @@ export default {
}, },
data() { data() {
return { return {
//
group:[],
// el-transfer
transferData: [],
// el-transfer ,
selectedGroups: [],
showLocationDialog:false, showLocationDialog:false,
selectedLocation:null, selectedLocation:null,
@ -190,7 +217,8 @@ export default {
fenceName:'', fenceName:'',
fenceType:null,// fenceType:null,//
fenceFlag:null, fenceFlag:null,
longitudeAndLatitudeInformation:'' fencePriority: null, // null
longitudeAndLatitudeInformation:[]
}, },
// //
rules: { rules: {
@ -212,8 +240,39 @@ export default {
}, },
created() { created() {
this.getList(); this.getList();
this.getGroupList();
}, },
methods: { methods: {
//
getGroupList() {
selectGroupList().then(response => {
this.group = response.data;
//
if (Array.isArray(response.data)) {
this.transferData = response.data.map((item, index) => ({
key: item.groupId ? item.groupId.toString() : `defaultKey${index}`, // 使
label: item.groupName || `Group ${index}`
}));
} else {
console.error('Response data is not an array:', response.data);
this.transferData = [];
}
// selectedGroups
if (this.form.fencePriority) {
try {
const parsedPriority = JSON.parse(this.form.fencePriority);
this.selectedGroups = parsedPriority.map(Number);
} catch (error) {
console.error('解析 fencePriority 错误:', error);
}
}
}).catch(error => {
console.error('Error fetching group list:', error);
this.transferData = [];
});
},
/** 查询电子围栏列表 */ /** 查询电子围栏列表 */
getList() { getList() {
this.loading = true; this.loading = true;
@ -278,14 +337,14 @@ export default {
this.title = "修改电子围栏"; this.title = "修改电子围栏";
}); });
}, },
/** 提交按钮 */
submitForm() { submitForm() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (valid) { if (valid) {
// selectedGroups JSON form.fencePriority
this.form.fencePriority = JSON.stringify(this.selectedGroups);
if (this.form.fenceId != null) { if (this.form.fenceId != null) {
updateFence(this.form).then(response => { updateFence(this.form).then(response => {
//
console.log(this.form);
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
this.open = false; this.open = false;
this.getList(); this.getList();
@ -300,6 +359,8 @@ export default {
} }
}); });
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const fenceIds = row.fenceId || this.ids; const fenceIds = row.fenceId || this.ids;
@ -326,7 +387,7 @@ export default {
openLocationDialog() { openDialog() {
this.showLocationDialog = true; this.showLocationDialog = true;
// //
setTimeout(() => { setTimeout(() => {
@ -341,16 +402,7 @@ export default {
}, },
},
// openLocationDialog() {
// this.openLocationDialogVisible = true;
// },
// handleLocationSelected(location) {
// this.form.longitudeAndLatitudeInformation = JSON.stringify(location);//
// this.openLocationDialogVisible = false;//
// },
} }
};
</script> </script>