add:新增手动下发充电任务

This commit is contained in:
2025-07-29 14:16:04 +08:00
parent 8f9fa3873b
commit 6a70aba6c9
21 changed files with 361 additions and 94 deletions

View File

@@ -164,6 +164,13 @@ export function selectListByType() {
})
}
export function selectCarList() {
return request({
url: 'api/device/selectCarList',
method: 'get'
})
}
export default { add, edit, del, selectDeviceList, selectDeviceListByRegion, callAgv, responseAgv, selectDeviceDevicerInfo, autoCreateTask,
changeDeviceStatus, cleanTask, queryStorageExtra, selectConDeviceList, saveBarcode, selectDeviceListOne, selectDeviceListTwo, selectDeviceListThree,
addMaterial, cleanMaterial, reload, excelImport, selectListByType }
addMaterial, cleanMaterial, reload, excelImport, selectListByType, selectCarList }

View File

@@ -31,4 +31,11 @@ export function edit(data) {
})
}
export default { add, edit, del }
export function selectStationByCar(car) {
return request({
url: 'api/dict/' + car,
method: 'put'
})
}
export default { add, edit, del, selectStationByCar }

View File

@@ -124,7 +124,6 @@ export default {
get(this.device_code).then(data => {
this.form = data.device
// 默认是普通站点
// this.currentComponent = 'standard_ordinary_site'
if (data.device.driver_code) {
this.currentComponent = data.device.driver_code
}

View File

@@ -145,9 +145,21 @@
<el-form-item :label="$t('device.device_table_title.sequence_number')" prop="seq_num">
<el-input-number v-model="form.seq_num" value="1" :min="1" label="描述文字" />
</el-form-item>
<!-- <el-form-item label="生产厂家">-->
<!-- <el-input v-model="form.manufacturer" style="width: 370px;" />-->
<!-- </el-form-item>-->
<el-form-item label="所属车间" prop="manufacturer">
<el-select
v-model="form.manufacturer"
size="mini"
placeholder="位置"
class="filter-item"
style="width: 370px;"
>
<el-option
v-for="item in dict.area"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="厂家电话">-->
<!-- <el-input v-model="form.manufacturer_phone" style="width: 370px;" />-->
<!-- </el-form-item>-->
@@ -192,7 +204,7 @@
<span v-else></span>
</template>
</el-table-column>
<!-- <el-table-column prop="manufacturer" label="生产厂家" />-->
<el-table-column prop="manufacturer" label="所属车间" />
<!-- <el-table-column prop="manufacturer_phone" label="厂家电话" />-->
<el-table-column prop="remark" :label="$t('device.device_table_title.descriptive_information')" :min-width="flexWidth('remark',crud.data,$t('device.device_table_title.descriptive_information'))" />
<el-table-column v-permission="['admin','device:edit','device:del']" :label="$t('auto.common.Operate')" width="200px" align="center">
@@ -253,6 +265,7 @@ const defaultForm = {
export default {
name: 'Device',
components: { pagination, crudOperation, rrOperation, udOperation, UploadDialog },
dicts: ['area'],
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
return CRUD({

View File

@@ -73,6 +73,21 @@
<el-form-item :label="$t('dict.other.Parameter3')" prop="para3">
<el-input v-model="form.para3" style="width: 370px;" />
</el-form-item>
<el-form-item label="所属车间" prop="dict_type">
<el-select
v-model="form.dict_type"
size="mini"
placeholder="位置"
class="filter-item"
style="width: 370px;"
>
<el-option
v-for="item in dict.area"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">{{ $t('task.select.Cancel') }}</el-button>
@@ -97,6 +112,7 @@
<el-table-column prop="para1" :label="$t('dict.other.Parameter1')" align="center" :min-width="flexWidth('para1',crud.data,$t('dict.other.Parameter1'))" />
<el-table-column prop="para2" :label="$t('dict.other.Parameter2')" align="center" :min-width="flexWidth('para2',crud.data,$t('dict.other.Parameter2'))" />
<el-table-column prop="para3" :label="$t('dict.other.Parameter3')" align="center" :min-width="flexWidth('para3',crud.data,$t('dict.other.Parameter3'))" />
<el-table-column prop="dict_type" label="所属车间" align="center" width="65" />
<el-table-column
v-permission="['admin','dict:edit','dict:del']"
:label="$t('dict.table_value.Operate')"
@@ -126,12 +142,13 @@ import rrOperation from '@crud/RR.operation'
import udOperation from '@crud/UD.operation'
import i18n from '@/i18n'
const defaultForm = { dict_id: null, name: null, label: null, value: null, dict_sort: null, dictType: null, para1: null,
const defaultForm = { dict_id: null, name: null, label: null, value: null, dict_sort: null, dict_type: null, para1: null,
para2: null, para3: null, createId: null, createName: null, createTime: null, updateId: null, updateName: null,
updateTime: null, zh_label: null, in_label: null, en_label: null }
export default {
components: { pagination, rrOperation, udOperation },
dicts: ['area'],
cruds() {
return [
CRUD({

View File

@@ -12,7 +12,7 @@
size="mini"
@click="divOpen"
>
配置自动充电
下发充电
</el-button>
<el-button
slot="right"

View File

@@ -37,9 +37,9 @@ export function queryParam() {
})
}
export function setParam(data) {
export function sendTask(data) {
return request({
url: 'api/param/setParam',
url: 'api/param/sendTask',
method: 'post',
data
})
@@ -61,4 +61,4 @@ export function initDict(data) {
})
}
export default { add, edit, del, getValueByCode, queryParam, setParam, showDetail2, initDict }
export default { add, edit, del, getValueByCode, sendTask, showDetail2, initDict }

View File

@@ -27,6 +27,7 @@
<el-table-column min-width="50" prop="para2" label="当前车号" align="center" />
<el-table-column min-width="60" prop="use_time" label="充电时长(H)" align="center" :formatter="Myduration" />
<el-table-column min-width="60" prop="para3" label="充电状态" align="center" />
<el-table-column min-width="60" prop="dict_type" label="所属车间" align="center" />
<el-table-column prop="update_time" label="修改时间" align="center" />
<el-table-column prop="update_name" label="修改人" align="center" />
<el-table-column
@@ -43,7 +44,7 @@
</template>
<script>
import crudParam, {updateDict} from '@/views/system/param/param'
import crudParam from '@/views/system/param/param'
import { crud } from '@crud/crud'
export default {

View File

@@ -1,43 +1,48 @@
<template>
<el-dialog
append-to-body
title="自动充电配置"
title="下发充电任务"
:visible.sync="dialogVisible"
destroy-on-close
width="800px"
@close="close"
@open="open"
>
<el-form ref="form" :model="form" :rules="rules" size="mini" :inline-message="true" label-width="150px">
<el-form-item label="白班充电阈值(%):" prop="electric">
<el-input-number v-model="form.electric" size="medium" :min="1" :max="100" :step="1" step-strictly></el-input-number>
<el-form-item label="车号:" prop="carno">
<el-select
v-model="form.carno"
placeholder="选择车号"
style="width: 400px"
class="filter-item"
clearable
filterable
@change="hand"
>
<el-option
v-for="item in carList"
:key="item.device_code"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
<el-form-item label="晚班充电阈值(%):" prop="electric2">
<el-input-number v-model="form.electric2" size="medium" :min="1" :max="100" step-strictly></el-input-number>
</el-form-item>
<el-form-item label="白班开始时间:" prop="electric_begin">
<el-time-select
v-model="form.electric_begin"
size="medium"
:picker-options="{
start: '06:00',
step: '00:15',
end: '12:00'
}"
placeholder="白班开始时间">
</el-time-select>
</el-form-item>
<el-form-item label="白班结束时间:" prop="electric_end">
<el-time-select
v-model="form.electric_end"
size="medium"
:picker-options="{
start: '18:00',
step: '00:15',
end: '23:45'
}"
placeholder="白班结束时间">
</el-time-select>
<el-form-item label="充电桩:" prop="station">
<el-select
v-model="form.station"
clearable
size="mini"
placeholder="请选择充电桩"
class="filter-item"
style="width: 400px"
>
<el-option
v-for="item in stations"
:key="item.para1"
:label="item.label"
:value="item.para1"
/>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@@ -48,6 +53,8 @@
</template>
<script>
import crudDevice from '@/api/acs/device/device'
import crudDict from '@/api/system/dict'
import crudParam from '@/views/system/param/param'
import CRUD, { crud } from '@crud/crud'
@@ -64,25 +71,19 @@ export default {
data() {
return {
dialogVisible: false,
carList: [],
stations: [],
rules: {
electric: [
{ required: true, message: '请输入白班充电阈值(%)', trigger: 'blur' }
carno: [
{ required: true, message: '请选择车号', trigger: 'blur' }
],
electric2: [
{ required: true, message: '请输入晚班充电阈值(%)', trigger: 'blur' }
],
electric_begin: [
{ required: true, message: '请输入白班开始时间', trigger: 'blur' }
],
electric_end: [
{ required: true, message: '请输入白班结束时间', trigger: 'blur' }
station: [
{ required: true, message: '请选择充电桩', trigger: 'blur' }
]
},
form: {
electric: 0,
electric2: 0,
electric_begin: '06:00',
electric_end: '18:00'
carno: '',
station: ''
}
}
},
@@ -93,41 +94,51 @@ export default {
}
}
},
created() {
crudDevice.selectCarList().then(res => {
this.carList = res
})
},
methods: {
open() {
this.queryTableDtl()
hand(value) {
crudDict.selectStationByCar(value).then(res => {
this.stations = res
})
},
// open() {
// this.queryTableDtl()
// },
close() {
this.$emit('update:dialogShow', false)
this.form.electric = 0
this.form.electric2 = 0
this.form.electric_begin = '06:00'
this.form.electric_end = '18:00'
this.carList = null
this.stations = null
this.form.carno = ''
this.form.station = ''
this.$emit('AddChanged')
},
save() {
this.$refs.form.validate((valid) => {
if (valid) {
this.save_my()
this.sendTask()
} else {
return false
}
})
},
save_my() {
crudParam.setParam(this.form).then(res => {
this.crud.notify('保存成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
sendTask() {
crudParam.sendTask(this.form).then(res => {
this.crud.notify('下发成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.close()
})
},
queryTableDtl() {
crudParam.queryParam().then(res => {
this.form.electric = res.electric
this.form.electric2 = res.electric2
this.form.electric_begin = res.electric_begin
this.form.electric_end = res.electric_end
})
}
// queryTableDtl() {
// crudParam.queryParam().then(res => {
// this.form.electric = res.electric
// this.form.electric2 = res.electric2
// this.form.electric_begin = res.electric_begin
// this.form.electric_end = res.electric_end
// })
// }
}
}
</script>