|
|
|
|
@ -63,6 +63,7 @@
|
|
|
|
|
size="small"
|
|
|
|
|
:data="equipments"
|
|
|
|
|
:columns="table"
|
|
|
|
|
@on-row-click="row => equipmentSelect(pickedEquipments, row, false)"
|
|
|
|
|
@on-select="(selection, row) => equipmentSelect(selection, row, false)"
|
|
|
|
|
@on-select-cancel="(selection, row) => equipmentSelect(selection, row, false)"
|
|
|
|
|
@on-select-all="(selection) => equipmentSelect(selection, {}, true)"
|
|
|
|
|
@ -90,44 +91,55 @@
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<el-form v-for="(item, index) in form"
|
|
|
|
|
size="mini"
|
|
|
|
|
:model="item"
|
|
|
|
|
label-position="top"
|
|
|
|
|
:key="index">
|
|
|
|
|
<div v-for="(item, index) in form" :key="index">
|
|
|
|
|
<Divider />
|
|
|
|
|
<div>
|
|
|
|
|
<p>{{ item._name }}</p>
|
|
|
|
|
<h3>{{ ++index }}.{{ item._name }}</h3>
|
|
|
|
|
<Button size="small" type="primary" @click="item._isShow = !item._isShow">{{ item._isShow ? '收起' : '展开' }}</Button>
|
|
|
|
|
</div>
|
|
|
|
|
<el-form-item label="闸门数量">
|
|
|
|
|
<el-input-number v-model="item.kaiqishuliang" :precision="0" :max="Number(item._bengzhashuliang)" :min="0"></el-input-number>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="水泵数量">
|
|
|
|
|
<el-input-number v-model="item.kaiqishuliang1" :precision="0" :max="Number(item._shuibengtaishu)" :min="0"></el-input-number>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="调令类型">
|
|
|
|
|
<el-radio-group v-model="item.diaolingleixing">
|
|
|
|
|
<el-radio :label="i.value" v-for="i in diaolingleixing">{{ i.key }}</el-radio>
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="开启时间">
|
|
|
|
|
<el-time-select v-model="item.start_time" :picker-options="{ start: '00:00', step: '00:05', end: '23:59' }"></el-time-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="持续时间">
|
|
|
|
|
<el-input-number :precision="1" :min="0" :step="0.5"></el-input-number>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="结束时间">
|
|
|
|
|
<el-time-select v-model="item.end_time" :picker-options="{ start: '00:00', step: '00:05', end: '23:59', minTime: item.start_time }"></el-time-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="调令内容">
|
|
|
|
|
<el-input v-model="item.content" type="textarea" :autosize="{ minRows: 2 }"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="调令等级">
|
|
|
|
|
<el-radio-group v-model="item.level">
|
|
|
|
|
<el-radio :label="i.value" v-for="i in [{ label: '一般', value: 1 },{ label: '紧急', value: 2 }]">{{ i.label }}</el-radio>
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
<transition name="fade">
|
|
|
|
|
<el-form size="mini"
|
|
|
|
|
v-show="item._isShow"
|
|
|
|
|
:model="item"
|
|
|
|
|
label-position="top">
|
|
|
|
|
<el-form-item label="闸门数量">
|
|
|
|
|
<el-input-number v-model="item.kaiqishuliang" :precision="0" :max="Number(item._bengzhashuliang)" :min="0"></el-input-number>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="水泵数量">
|
|
|
|
|
<el-input-number v-model="item.kaiqishuliang1" :precision="0" :max="Number(item._shuibengtaishu)" :min="0"></el-input-number>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="调令类型">
|
|
|
|
|
<el-radio-group v-model="item.diaolingleixing">
|
|
|
|
|
<el-radio :label="i.value" v-for="i in diaolingleixing">{{ i.key }}</el-radio>
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="开启时间">
|
|
|
|
|
<el-time-select v-model="item.start_time"
|
|
|
|
|
:picker-options="{ start: '00:00', step: '00:05', end: '23:59' }"
|
|
|
|
|
@change="startTimePick(item)"></el-time-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="持续时间">
|
|
|
|
|
<el-input-number v-model="item._last"
|
|
|
|
|
:precision="1"
|
|
|
|
|
:min="0"
|
|
|
|
|
:step="0.5"
|
|
|
|
|
@change="lastTimePick(item)"></el-input-number>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="结束时间">
|
|
|
|
|
<el-time-select v-model="item.end_time"
|
|
|
|
|
:picker-options="{ start: '00:00', step: '00:05', end: '23:59', minTime: item.start_time }"></el-time-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="调令内容">
|
|
|
|
|
<el-input v-model="item.content" type="textarea" :autosize="{ minRows: 2 }"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="调令等级">
|
|
|
|
|
<el-radio-group v-model="item.level">
|
|
|
|
|
<el-radio :label="i.value" v-for="i in [{ label: '一般', value: 1 },{ label: '紧急', value: 2 }]">{{ i.label }}</el-radio>
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
</transition>
|
|
|
|
|
</div>
|
|
|
|
|
</Card>
|
|
|
|
|
|
|
|
|
|
<div class="btns">
|
|
|
|
|
@ -153,7 +165,9 @@
|
|
|
|
|
import Calendar from "v-calendar/src/components/Calendar.vue";
|
|
|
|
|
import DatePicker from "v-calendar/src/components/DatePicker.vue";
|
|
|
|
|
import { show } from "@/api/system/customFormField";
|
|
|
|
|
import { index } from "@/api/system/baseForm";
|
|
|
|
|
import {index, save} from "@/api/system/baseForm";
|
|
|
|
|
import {uuid} from "@/utils";
|
|
|
|
|
import {checkTransfer} from "@/api/other";
|
|
|
|
|
|
|
|
|
|
export default {
|
|
|
|
|
components: {
|
|
|
|
|
@ -225,6 +239,47 @@ export default {
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
startTimePick (row) {
|
|
|
|
|
if (row._last) {
|
|
|
|
|
const [hour, min] = row.start_time
|
|
|
|
|
.split(":")
|
|
|
|
|
.map((i) => Number(i));
|
|
|
|
|
let addTime = {
|
|
|
|
|
hour: Math.floor(row._last),
|
|
|
|
|
min: (row._last % 1) * 60,
|
|
|
|
|
};
|
|
|
|
|
let resTime = {
|
|
|
|
|
hour:
|
|
|
|
|
hour + addTime.hour + (min + addTime.min >= 60 ? 1 : 0),
|
|
|
|
|
min: (min + addTime.min) % 60,
|
|
|
|
|
};
|
|
|
|
|
row.end_time = `${resTime.hour
|
|
|
|
|
.toString()
|
|
|
|
|
.padStart(2, "0")}:${resTime.min
|
|
|
|
|
.toString()
|
|
|
|
|
.padStart(2, "0")}`;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
lastTimePick (row) {
|
|
|
|
|
const [hour, min] = row.start_time
|
|
|
|
|
.split(":")
|
|
|
|
|
.map((i) => Number(i));
|
|
|
|
|
let addTime = {
|
|
|
|
|
hour: Math.floor(row._last),
|
|
|
|
|
min: (row._last % 1) * 60,
|
|
|
|
|
};
|
|
|
|
|
let resTime = {
|
|
|
|
|
hour:
|
|
|
|
|
hour + addTime.hour + (min + addTime.min >= 60 ? 1 : 0),
|
|
|
|
|
min: (min + addTime.min) % 60,
|
|
|
|
|
};
|
|
|
|
|
row.end_time = `${resTime.hour
|
|
|
|
|
.toString()
|
|
|
|
|
.padStart(2, "0")}:${resTime.min
|
|
|
|
|
.toString()
|
|
|
|
|
.padStart(2, "0")}`;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleAreaCheckAll (e) {
|
|
|
|
|
this.select.filter[2].value = e ? this.areas.map(i => i.value).toString() : "";
|
|
|
|
|
this.isIndeterminateArea = false;
|
|
|
|
|
@ -366,6 +421,7 @@ export default {
|
|
|
|
|
this.form = this.pickedEquipments.map(i => ({
|
|
|
|
|
equipment_id: i.id,
|
|
|
|
|
start_time: "",
|
|
|
|
|
_last: 0,
|
|
|
|
|
end_time: "",
|
|
|
|
|
content: "",
|
|
|
|
|
level: 1,
|
|
|
|
|
@ -375,10 +431,89 @@ export default {
|
|
|
|
|
_shuibengtaishu: i.shuibengtaishu,
|
|
|
|
|
_name: i.name,
|
|
|
|
|
leibie: "",
|
|
|
|
|
_isShow: true,
|
|
|
|
|
}))
|
|
|
|
|
this.step++;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async submit() {
|
|
|
|
|
const submitData = this.form.filter(
|
|
|
|
|
(i) => i.start_time || i.end_time || i.content
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
let isNeed = 0;
|
|
|
|
|
try {
|
|
|
|
|
await this.$confirm("是否需要走流程?","提示",{
|
|
|
|
|
confirmButtonText: "需要",
|
|
|
|
|
cancelButtonText: "不需要",
|
|
|
|
|
type: "info",
|
|
|
|
|
closeOnClickModal: false,
|
|
|
|
|
distinguishCancelAndClose: true
|
|
|
|
|
})
|
|
|
|
|
isNeed = 1;
|
|
|
|
|
} catch (e) {
|
|
|
|
|
if (e === 'cancel') {
|
|
|
|
|
isNeed = 0;
|
|
|
|
|
} else {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const uid = uuid();
|
|
|
|
|
let promiseAll = [];
|
|
|
|
|
let loadingInstance = this.$loading({
|
|
|
|
|
lock: true,
|
|
|
|
|
background: "rgba(0,0,0,0.4)",
|
|
|
|
|
text: "正在加载中...",
|
|
|
|
|
});
|
|
|
|
|
for (let j = 0;j < submitData.length;j++) {
|
|
|
|
|
let i = submitData[j]
|
|
|
|
|
|
|
|
|
|
delete i["equipment_id-span"];
|
|
|
|
|
delete i["_index"];
|
|
|
|
|
delete i["_rowKey"];
|
|
|
|
|
|
|
|
|
|
i.start_time = `${this.date} ${i.start_time}`;
|
|
|
|
|
i.end_time = i.end_time ? `${this.date} ${i.end_time}` : '';
|
|
|
|
|
i.no = uid;
|
|
|
|
|
i.status = 1;
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
const res = await checkTransfer({
|
|
|
|
|
start_time: i.start_time,
|
|
|
|
|
end_time: i.end_time,
|
|
|
|
|
equipment_id: i.equipment_id,
|
|
|
|
|
diaolingleixing: i.diaolingleixing
|
|
|
|
|
})
|
|
|
|
|
promiseAll.push(
|
|
|
|
|
save(
|
|
|
|
|
{
|
|
|
|
|
table_name: "transfers",
|
|
|
|
|
...i,
|
|
|
|
|
shifouzouliucheng: isNeed,
|
|
|
|
|
is_adjust: -1
|
|
|
|
|
},
|
|
|
|
|
false
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Promise.all(promiseAll)
|
|
|
|
|
.then((res) => {
|
|
|
|
|
loadingInstance.close();
|
|
|
|
|
this.$message({
|
|
|
|
|
type: "success",
|
|
|
|
|
message: `成功创建${res.length}条调令`,
|
|
|
|
|
});
|
|
|
|
|
})
|
|
|
|
|
.catch((_) => {
|
|
|
|
|
loadingInstance.close();
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
computed: {},
|
|
|
|
|
watch: {
|
|
|
|
|
@ -459,6 +594,11 @@ export default {
|
|
|
|
|
z-index: 999999999;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
h3 {
|
|
|
|
|
text-align: center;
|
|
|
|
|
color: $primaryColor;
|
|
|
|
|
line-height: 2;
|
|
|
|
|
}
|
|
|
|
|
@media (max-width: 768px) {
|
|
|
|
|
::v-deep .el-checkbox {
|
|
|
|
|
margin-right: 0;
|
|
|
|
|
|