From 1e653db94c24389cc7615fd4a7ef1d63b00af534 Mon Sep 17 00:00:00 2001 From: cuilei <ray_tsu1@163.com> Date: 星期五, 13 六月 2025 11:39:32 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/dnc/base/modules/TerminalIndex/ReportEquipmentClose/SplitShutdownInfoModal.vue | 245 ++++++++++++++++++++++++++++++++++--------------- 1 files changed, 170 insertions(+), 75 deletions(-) diff --git a/src/views/dnc/base/modules/TerminalIndex/ReportEquipmentClose/SplitShutdownInfoModal.vue b/src/views/dnc/base/modules/TerminalIndex/ReportEquipmentClose/SplitShutdownInfoModal.vue index 967c357..52c6b4b 100644 --- a/src/views/dnc/base/modules/TerminalIndex/ReportEquipmentClose/SplitShutdownInfoModal.vue +++ b/src/views/dnc/base/modules/TerminalIndex/ReportEquipmentClose/SplitShutdownInfoModal.vue @@ -1,113 +1,208 @@ <template> - <a-modal :visible="visible" :width="800" title="鎷嗗垎鍋滄満淇℃伅" @ok="handleSubmit" @cancel="handleCancel"> - <a-form-model ref="form" :model="model" :rules="validateRules" :labelCol="{span:8}" :wrapperCol="{span:12}"> + <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="10"> - <a-form-model-item prop="startTime" label="寮�濮嬫椂闂�"> - <a-date-picker show-time value-format="YYYY-MM-DD HH:mm:ss" v-model="model.startTime"/> + <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> - <div v-for="item in splitList" :key="item.title"> - <a-divider orientation="left">{{item.title}}</a-divider> + <a-divider orientation="left">鎷嗗垎涓�娈�</a-divider> - <a-row> - <a-col :span="10"> - <a-form-model-item prop="endTime" label="缁撴潫鏃ユ湡"> - <a-date-picker show-time value-format="YYYY-MM-DD HH:mm:ss" v-model="item.splitParams.endTime"/> - </a-form-model-item> - </a-col> + <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="10"> - <a-form-model-item prop="closeReason" label="鍋滄満鍘熷洜"> - <a-select v-model="item.splitParams.closeReason" placeholder="璇烽�夋嫨鍋滄満鍘熷洜"> - <a-select-option v-for="item in closeReasonList" :key="item.id"> - {{item.label}} - </a-select-option> - </a-select> - </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-col :span="4"> - <a-form-model-item label="閫夋嫨"> - <a-checkbox @change="handleCheckboxChange(item,$event)"/> - </a-form-model-item> - </a-col> - </a-row> - </div> + <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> - </a-modal> + </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: { - startTime: [{ required: true, message: '璇烽�夋嫨寮�濮嬫椂闂达紒', trigger: 'change' }] + firstMiddleTime: [{ required: true, message: '璇烽�夋嫨鎷嗗垎涓�娈垫椂闂达紒', trigger: 'change' }] }, - closeReasonList: [ - { - id: 1, - label: '鍚冮キ鏃堕棿浼戞伅' - }, - { - id: 2, - label: '宸ヤ綔鏃堕棿浼戞伅' - }, - { - id: 3, - label: '璁″垝鎬у仠鐢�' - }, - { - id: 4, - label: '寰呮枡鍋滄満' - }, - { - id: 5, - label: '棣栦欢璋冭瘯' - }, - { - id: 6, - label: '鍒�閲忓叿鍑嗗' - } - ], - splitList: [ - { - title: '鎷嗗垎涓�娈�', - splitParams: {} - }, - { - title: '鎷嗗垎浜屾', - splitParams: {} - }, - { - title: '鎷嗗垎涓夋', - splitParams: {} - } - ] + confirmLoading: false, + url: { + submit: '/mdc/operator/mdcDowntime/splitDowntime' + } } }, methods: { - handleCheckboxChange(record, event) { - console.log('record', record) - record.splitParams.checked = event.target.checked + /** + * 璁剧疆寮�濮嬪強缁撴潫鏃ユ湡鏃堕棿 + * @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 -- Gitblit v1.9.3