<template>
|
<j-modal :visible="visible" :width="800" title="拆分停机信息" @ok="handleSubmit" @cancel="handleCancel"
|
:confirmLoading="confirmLoading"
|
:maskClosable="false">
|
<a-form-model ref="form" :model="model" :rules="validateRules" :hideRequiredMark="true" :labelCol="{span:8}"
|
:wrapperCol="{span:12}">
|
<a-row>
|
<a-col :span="12">
|
<a-form-model-item label="开始时间">
|
<a-date-picker disabled show-time value-format="YYYY-MM-DD HH:mm:ss" v-model="model.startDate"/>
|
</a-form-model-item>
|
</a-col>
|
</a-row>
|
|
<a-divider orientation="left">拆分一段</a-divider>
|
|
<a-row>
|
<a-col :span="12">
|
<a-form-model-item label=" " :colon="false" prop="firstMiddleTime">
|
<a-date-picker show-time :showToday="false" value-format="YYYY-MM-DD HH:mm:ss"
|
v-model="model.firstMiddleTime"
|
@change="handleFirstMiddleTimeChange"
|
:disabledDate="disabledDate1"/>
|
</a-form-model-item>
|
</a-col>
|
|
<a-col :span="12">
|
<a-form-model-item label="停机原因">
|
<a-select v-model="model.firstDowntimeDescription" placeholder="请选择停机原因">
|
<a-select-option v-for="item in downtimeDescriptionList" :key="item.value">
|
{{item.label}}
|
</a-select-option>
|
</a-select>
|
</a-form-model-item>
|
</a-col>
|
</a-row>
|
|
<a-divider orientation="left">拆分二段</a-divider>
|
|
<a-row>
|
<a-col :span="12">
|
<a-form-model-item label=" " :colon="false">
|
<a-date-picker show-time :showToday="false" value-format="YYYY-MM-DD HH:mm:ss"
|
v-model="model.secondMiddleTime"
|
:disabled="!model.firstMiddleTime" :disabledDate="disabledDate2"/>
|
</a-form-model-item>
|
</a-col>
|
|
<a-col :span="12">
|
<a-form-model-item label="停机原因">
|
<a-select v-model="model.secondDowntimeDescription" placeholder="请选择停机原因"
|
:disabled="!model.firstMiddleTime">
|
<a-select-option v-for="item in downtimeDescriptionList" :key="item.value">
|
{{item.label}}
|
</a-select-option>
|
</a-select>
|
</a-form-model-item>
|
</a-col>
|
</a-row>
|
|
<a-divider orientation="left">拆分三段</a-divider>
|
|
<a-row>
|
<a-col :span="12">
|
<a-form-model-item label="结束日期">
|
<a-date-picker disabled show-time value-format="YYYY-MM-DD HH:mm:ss" v-model="model.endDate"/>
|
</a-form-model-item>
|
</a-col>
|
|
<a-col :span="12">
|
<a-form-model-item label="停机原因">
|
<a-select v-model="model.thirdDowntimeDescription" placeholder="请选择停机原因">
|
<a-select-option v-for="item in downtimeDescriptionList" :key="item.value">
|
{{item.label}}
|
</a-select-option>
|
</a-select>
|
</a-form-model-item>
|
</a-col>
|
</a-row>
|
</a-form-model>
|
</j-modal>
|
</template>
|
|
<script>
|
import moment from 'moment'
|
import { postAction } from '@/api/manage'
|
|
export default {
|
name: 'SplitShutdownInfoModal',
|
props: {
|
downtimeDescriptionList: {
|
type: Array
|
}
|
},
|
data() {
|
return {
|
visible: false,
|
model: {},
|
validateRules: {
|
firstMiddleTime: [{ required: true, message: '请选择拆分一段时间!', trigger: 'change' }]
|
},
|
confirmLoading: false,
|
url: {
|
submit: '/mdc/operator/mdcDowntime/splitDowntime'
|
}
|
}
|
},
|
methods: {
|
/**
|
* 设置开始及结束日期时间
|
* @param record 列表行记录对象
|
*/
|
setDateTime(record) {
|
this.model = {
|
id: record.id,
|
startDate: record.startDate,
|
endDate: record.endDate
|
}
|
},
|
|
/**
|
* 拆分一段时间值发生改变时触发
|
* @param value 改变后的值
|
*/
|
handleFirstMiddleTimeChange(value) {
|
// 若时间值被清空时触发
|
if (!value) {
|
delete this.model.secondMiddleTime
|
delete this.model.secondDowntimeDescription
|
}
|
},
|
|
/**
|
* 拆分一段禁用日期范围
|
* @param current 禁用范围
|
* @returns {boolean}
|
*/
|
disabledDate1(current) {
|
const { startDate, endDate, secondMiddleTime } = this.model
|
let nextEndTime
|
|
if (!secondMiddleTime) nextEndTime = endDate
|
else nextEndTime = secondMiddleTime
|
|
return current < moment(startDate).startOf('days') || current > moment(nextEndTime).endOf('days')
|
},
|
|
/**
|
* 拆分二段禁用日期范围
|
* @param current 禁用范围
|
* @returns {boolean}
|
*/
|
disabledDate2(current) {
|
const { endDate, firstMiddleTime } = this.model
|
|
return current < moment(firstMiddleTime).startOf('days') || current > moment(endDate).endOf('days')
|
},
|
|
/**
|
* 创建禁用时间范围数组
|
* @param start 开始时间(时分秒)
|
* @param end 结束时间(时分秒)
|
* @returns {Array}
|
*/
|
handleCreateTimeRangeArray(start, end) {
|
const result = []
|
for (let i = start; i < end; i++) {
|
result.push(i)
|
}
|
return result
|
},
|
|
// 表单提交事件
|
handleSubmit() {
|
const that = this
|
this.$refs.form.validate(valid => {
|
if (valid) {
|
that.confirmLoading = true
|
postAction(that.url.submit, that.model)
|
.then(res => {
|
if (res.success) {
|
that.$notification.success({
|
message: '消息',
|
description: res.message
|
})
|
that.handleCancel()
|
that.$emit('submitSuccess')
|
} else {
|
that.$notification.warning({
|
message: '消息',
|
description: res.message
|
})
|
}
|
})
|
.finally(() => {
|
that.confirmLoading = false
|
})
|
console.log('model', this.model)
|
} else {
|
return false
|
}
|
})
|
},
|
|
// 关闭弹窗事件
|
handleCancel() {
|
this.$refs.form.clearValidate()
|
this.visible = false
|
}
|
}
|
}
|
</script>
|
|
<style scoped>
|
|
</style>
|