You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

363 lines
12 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div>
<xy-dialog
ref="dialog"
:is-show.sync="isShow"
type="form"
title="调令调整"
:form="form"
:rules="rules"
@submit="submit"
>
<template #extraFormTop>
<el-descriptions title="调令信息" :column="2" label-class-name="xy-table-item-label">
<el-descriptions-item label="点位">{{ detail.equipment_id_equipments_id_relation ? detail.equipment_id_equipments_id_relation.name : "" }}</el-descriptions-item>
<el-descriptions-item label="闸门总数">{{ detail.equipment_id_equipments_id_relation ? detail.equipment_id_equipments_id_relation.bengzhashuliang : "" }}</el-descriptions-item>
<el-descriptions-item label="水泵总数">{{ detail.equipment_id_equipments_id_relation ? detail.equipment_id_equipments_id_relation.shuibengtaishu : "" }}</el-descriptions-item>
<el-descriptions-item label="开启闸门数量">{{ detail.kaiqishuliang }}</el-descriptions-item>
<el-descriptions-item label="开启水泵数量">{{ detail.kaiqishuliang1 }}</el-descriptions-item>
<el-descriptions-item label="开始时间">{{ $moment(detail.start_time).format("HH:mm") }}</el-descriptions-item>
<el-descriptions-item label="结束时间">{{ $moment(detail.end_time).format("HH:mm") }}</el-descriptions-item>
<el-descriptions-item label="类型">
<el-tag size="small">{{ myleibie }}</el-tag>
</el-descriptions-item>
<el-descriptions-item label="范围">
<el-tag size="small">{{ myarea }}</el-tag>
</el-descriptions-item>
</el-descriptions>
</template>
<template v-slot:content>
<div class="xy-table-item">
<div class="xy-table-item-label">调令内容 </div>
<div class="xy-table-item-content">
<el-input
type="textarea"
:autosize="{ minRows: 2 }"
v-model="form.content"
clearable
placeholder="请输入调令内容"
style="width: 300px"
></el-input>
</div>
</div>
</template>
<template v-slot:tiaozhengleixing>
<div class="xy-table-item">
<div class="xy-table-item-label">调整类型 </div>
<div class="xy-table-item-content">
<div style="width: 300px">
<el-radio-group v-model="adjustEquipmentType" @change="temp++">
<el-radio :label="1">水泵</el-radio>
<el-radio :label="2"></el-radio>
</el-radio-group>
<el-select
:popper-append-to-body="false"
v-model="form.tiaozhengleixing"
clearable
placeholder="请选择调整类型"
@change="temp++"
>
<el-option
v-for="item in types"
:key="item.id"
:label="item.value"
:value="item.id"
></el-option>
</el-select>
</div>
</div>
</div>
</template>
<template #kaiqishuliang>
<div class="xy-table-item">
<div class="xy-table-item-label">调整数量 </div>
<div class="xy-table-item-content">
<el-input-number :disabled="form.tiaozhengleixing === 2" :min="0" :max="openNumberMax" controls-position="right" style="width: 300px" v-model="kaiqishuliang"></el-input-number>
</div>
</div>
</template>
<template #start_time>
<div class="xy-table-item">
<div class="xy-table-item-label">开始时间 </div>
<div class="xy-table-item-content">
<el-date-picker
v-model="form.start_time"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择开始时间"
style="width: 300px"
></el-date-picker>
</div>
</div>
</template>
<template #end_time>
<div class="xy-table-item">
<div class="xy-table-item-label">结束时间 </div>
<div class="xy-table-item-content">
<el-date-picker
v-model="form.end_time"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择结束时间"
style="width: 300px"
></el-date-picker>
</div>
</div>
</template>
</xy-dialog>
</div>
</template>
<script>
import { show, save } from "@/api/system/baseForm";
export default {
props: {
areas: Array,
abilities: Array
},
data() {
return {
temp: 0,//更新调整数量
adjustEquipmentType: 1,
isShow: false,
id: "",
type: "",
detail: {},
kaiqishuliang: 0,
form: {
content: "",
tiaozhengleixing: "",
kaiqishuliang: 0,
kaiqishuliang1: 0,
start_time: "",
end_time: ""
},
rules: {},
originalData: "",
};
},
methods: {
show() {
this.isShow = true;
},
hidden() {
this.isShow = false;
},
init() {
for (let key in this.form) {
if (this.form[key] instanceof Array) {
this.form[key] = [];
} else {
this.form[key] = "";
}
}
this.$refs["dialog"].clearValidate();
},
setId(id) {
if (typeof id == "number") {
this.id = id;
} else {
console.error("error typeof id: " + typeof id);
}
},
getId() {
return this.id;
},
setType(type = "add") {
let types = ["add", "editor"];
if (types.includes(type)) {
this.type = type;
} else {
console.warn("Unknown type: " + type);
}
},
setForm(key = [], value = []) {
if (key instanceof Array) {
key.forEach((key, index) => {
this.form[key] = value[index] ?? "";
});
}
if (typeof key === "string") {
this.form[key] = value;
}
if (!key) {
this.init();
}
},
async getDetail() {
const res = await show({ id: this.id, table_name: "transfers" });
this.$integrateData(this.form, res);
this.originalData = JSON.stringify(this.form);
this.detail = res;
},
submit() {
if (this.form.tiaozhengleixing === "" || this.form.tiaozhengleixing === undefined) {
this.$message({
message: "请选择类型",
type: "warning"
})
return
}
const leixingLabel = this.types.find(i => i.id === this.form.tiaozhengleixing)?.id
if (leixingLabel === 0) {
this.equipmentType === 1 ? (this.form.kaiqishuliang1 = Number(this.detail?.kaiqishuliang1) - Number(this.kaiqishuliang)) : (this.form.kaiqishuliang = Number(this.detail?.kaiqishuliang) - Number(this.kaiqishuliang))
} else if (leixingLabel === 1) {
this.equipmentType === 1 ? (this.form.kaiqishuliang1 = Number(this.detail?.kaiqishuliang1) + Number(this.kaiqishuliang)) : (this.form.kaiqishuliang = Number(this.detail?.kaiqishuliang) + Number(this.kaiqishuliang))
} else {
this.equipmentType === 1 ? this.form.kaiqishuliang1 = 0 : this.form.kaiqishuliang = 0;
}
let updateData = JSON.stringify(this.form);
let text = ""
console.log(this.form)
return
if (updateData !== this.originalData) {
let originalData = JSON.parse(this.originalData)
let nowData = JSON.parse(updateData)
let kv = new Map([
['content','调令内容'],
['tiaozhengleixing','调整状态'],
['kaiqishuliang1','水泵调整数量'],
['kaiqishuliang','闸门调整数量'],
])
for (let key of kv.keys()) {
if (key === 'kaiqishuliang' || key === 'kaiqishuliang1') {
if (this.detail.equipment_id_equipments_id_relation?.type === 1) {
text += nowData[key] === originalData[key] ? "" : (`【${kv.get(key)}】从"${originalData[key] || "0"}"更改为"${nowData[key]}"` || " ")
}
} else {
text += nowData[key] === originalData[key] ? "" : (`【${kv.get(key)}】从"${this.types.find(i => i.id === originalData[key])?.value || originalData[key] || " "}"更改为"${this.types.find(i => i.id === nowData[key])?.value || nowData[key]}"` || " ")
}
}
}
this.form.to_transfer_id = this.detail.id;
this.form.is_adjust = 1;
this.form.id_logs_transfer_id_relation = this.detail.id_logs_transfer_id_relation.map(i => ({
transfer_id: i.transfer_id,
content: i.content,
created_at: this.$moment().format("YYYY-MM-DD HH:mm:ss")
}))
this.form.id_logs_transfer_id_relation.push({
transfer_id: this.detail.id,
content: text
})
for (let key in this.detail) {
if (/_relation|_at/g.test(key)) {
delete this.detail[key]
}
}
delete this.detail.id;
save({
table_name: "transfers",
...this.detail,
...this.form,
status: 2,
}).then((res) => {
if (updateData !== this.originalData) {
save({
table_name: "logs",
transfer_id: this.getId(),
content: text,
created_at: this.$moment().format("YYYY-MM-DD HH:mm:ss")
},false)
}
this.$message({
type: "success",
message: "操作成功",
});
this.isShow = false;
this.$emit("refresh");
});
},
},
computed: {
myarea () {
return this.areas.find(i => i.value === this.detail.equipment_id_equipments_id_relation?.area)?.key || "";
},
myleibie () {
return this.abilities.find(i => i.value === this.detail?.leibie)?.key || "";
},
openNumberMax () {
let a = this.temp;
const leixingLabel = this.types.find(i => i.id === this.form.tiaozhengleixing)?.value
if (leixingLabel === '关闭') {
return this.equipmentType === 1 ? (Number(this.detail?.kaiqishuliang1 || 0)) : (Number(this.detail?.kaiqishuliang || 0))
} else if (leixingLabel === '全关') {
return this.equipmentType === 1 ? (Number(this.detail?.kaiqishuliang1 || 0)) : (Number(this.detail?.kaiqishuliang || 0));
} else {
return this.equipmentType === 1 ? ((Number(this.detail?.equipment_id_equipments_id_relation?.shuibengtaishu) - Number(this.detail?.kaiqishuliang1) || 0)) : ((Number(this.detail?.equipment_id_equipments_id_relation?.bengzhashuliang) - Number(this.detail?.kaiqishuliang) || 0))
}
},
equipmentType () {
return this.adjustEquipmentType;
//return this.detail?.equipment_id_equipments_id_relation?.type;
},
types () {
let temp = this.equipmentType;
if (this.equipmentType === 1) {
return [
{
id: 0,
value: "关闭"
},
{
id: 1,
value: "增开"
},
{
id: 2,
value: "全关"
}
]
} else {
return [
{
id: 0,
value: "关闭"
},
{
id: 1,
value: "调整开度"
},
{
id: 2,
value: "全关"
}
]
}
}
},
watch: {
isShow(val) {
if (val) {
if (this.type === "editor") {
this.getDetail();
}
} else {
this.id = "";
this.type = "";
this.originalData = "";
this.init();
this.$refs["dialog"].clearValidate();
delete this.form.id;
}
},
temp(val) {
this.kaiqishuliang = 0;
}
},
};
</script>
<style scoped lang="scss">
::v-deep .el-input__inner {
text-align: left;
}
</style>