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-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="fenceType" :formatter="fenceTypeFormatter" />
<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-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-dialog :title="title" :visible.sync="open" width="750px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="围栏名称" prop="fenceName">
<el-input v-model="form.fenceName" placeholder="请输入围栏名称" />
</el-form-item>
<el-form-item label="围栏类型" prop="fenceType">
<el-radio-group v-model="form.fenceType">
<el-radio label="1">驶入</el-radio>
<el-radio label="2">驶出</el-radio>
<el-radio :label="1">驶入</el-radio>
<el-radio :label="2">驶出</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="围栏状态" prop="fenceFlag">
<el-select v-model="form.fenceFlag" placeholder="请选择围栏状态" clearable>
<el-option label="正常" value="1"></el-option>
<el-option label="停用" value="2"></el-option>
<el-option label="正常" :value="1"></el-option>
<el-option label="停用" :value="2"></el-option>
</el-select>
</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-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>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
@ -144,6 +161,7 @@
<script>
import { listFence, getFence, delFence, addFence, updateFence } from "/src/api/fence/fence";
import SelectLocation from '@/components/SelectLocation.vue'
import { selectGroupList } from '@/api/fence/group'
export default {
name: "Fence",
@ -152,6 +170,15 @@ export default {
},
data() {
return {
//
group:[],
// el-transfer
transferData: [],
// el-transfer ,
selectedGroups: [],
showLocationDialog:false,
selectedLocation:null,
@ -190,7 +217,8 @@ export default {
fenceName:'',
fenceType:null,//
fenceFlag:null,
longitudeAndLatitudeInformation:''
fencePriority: null, // null
longitudeAndLatitudeInformation:[]
},
//
rules: {
@ -212,8 +240,39 @@ export default {
},
created() {
this.getList();
this.getGroupList();
},
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() {
this.loading = true;
@ -278,14 +337,14 @@ export default {
this.title = "修改电子围栏";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
// selectedGroups JSON form.fencePriority
this.form.fencePriority = JSON.stringify(this.selectedGroups);
if (this.form.fenceId != null) {
updateFence(this.form).then(response => {
//
console.log(this.form);
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
@ -300,6 +359,8 @@ export default {
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const fenceIds = row.fenceId || this.ids;
@ -326,7 +387,7 @@ export default {
openLocationDialog() {
openDialog() {
this.showLocationDialog = true;
//
setTimeout(() => {
@ -341,16 +402,7 @@ export default {
},
// openLocationDialog() {
// this.openLocationDialogVisible = true;
// },
// handleLocationSelected(location) {
// this.form.longitudeAndLatitudeInformation = JSON.stringify(location);//
// this.openLocationDialogVisible = false;//
// },
},
}
};
</script>