feat():穿梭框优先级
parent
457a5ceeb7
commit
ffb8a83d8d
|
@ -0,0 +1,9 @@
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
//查询围栏组
|
||||||
|
export function selectGroupList() {
|
||||||
|
return request({
|
||||||
|
url: '/fence/tbGroup/selectTbGroupList',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in New Issue