From db457552ab2251fdaaedb8f736e6103f69eccb10 Mon Sep 17 00:00:00 2001 From: zenglf <18502938215@163.com> Date: 星期三, 25 十月 2023 18:44:15 +0800 Subject: [PATCH] 维修工单修改 --- src/views/eam/modules/repairorder/moudles/RepairOrderActualHoursReport.vue | 327 +++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 247 insertions(+), 80 deletions(-) diff --git a/src/views/eam/modules/repairorder/moudles/RepairOrderActualHoursReport.vue b/src/views/eam/modules/repairorder/moudles/RepairOrderActualHoursReport.vue index 7d45d2a..3a61ac0 100644 --- a/src/views/eam/modules/repairorder/moudles/RepairOrderActualHoursReport.vue +++ b/src/views/eam/modules/repairorder/moudles/RepairOrderActualHoursReport.vue @@ -1,41 +1,87 @@ <template> <a-card - :bordered="false" + :bordered='false' :class="'cust-erp-sub-tab'" > <a-table - ref="table" + ref='table' bordered - rowKey="id" - :columns="columns" - :dataSource="dataSource" - :pagination="ipagination" - @change="handleTableChange" + rowKey='id' + :columns='columns' + :dataSource='dataSource' + :pagination='ipagination' + @change='handleTableChange' > <template - v-for="col in columns" - :slot="col.dataIndex" + v-for='col in columns' + :slot='col.dataIndex' slot-scope='text, record, index' > - <div :key="col.dataIndex"> + <div :key='col.dataIndex'> <a-input-search v-if="col.dataIndex == 'username'" enter-button - @search="onSearchUser(index)" - :value="text" - :read-only="true" - @change="(e) => handleChange(e, record.key, col, index)" + @search='onSearchUser(index)' + :value='text' + :read-only='true' + @change='(e) => handleChange(e, record.key, col, index)' :disabled="repairOrderStatus=='4'" /> <a-input-number - :value="text" + :value='text' v-if="col.dataIndex == 'actualHour'" - :min="0" - :max="99999" - @change="(e)=>handleChange(e, record.key, col, index)" + :min='0' + :max='99999' + @change='(e)=>handleChange(e, record.key, col, index)' :disabled="repairOrderStatus=='4'" /> + <!-- <a-switch @change='(e)=>onChange(e, record.key, col, index)' :value='text' :disabled="repairOrderStatus=='4'"--> + <!-- v-if="col.dataIndex == 'principalContractor'" />--> + <a-select default-value='0' :value='text' :disabled="repairOrderStatus=='4'" + v-if="col.dataIndex == 'principalContractor'" + @change='(e)=>handleChange(e, record.key, col, index)'> + <a-select-opt-group> + <a-select-option value='1'> + 鏄� + </a-select-option> + <a-select-option value='0'> + 鍚� + </a-select-option> + </a-select-opt-group> + + </a-select> + <!-- <a-range-picker--> + <!-- :ranges="{ Today: [moment(), moment()], 'This Month': [moment(), moment().endOf('month')] }"--> + <!-- :show-time="{ format: 'HH:mm' }"--> + <!-- format="YYYY-MM-DD HH:mm"--> + <!-- :placeholder="['Start Time', 'End Time']"--> + <!-- v-if="col.dataIndex == 'startTime'" @change='onDateChange'--> + <!-- />--> + <a-date-picker + :disabled="repairOrderStatus=='4'" + :value='text' + format='YYYY-MM-DD HH:mm' + :show-time="{ defaultValue: moment('00:00', 'HH:mm') }" + v-if="col.dataIndex == 'startTime'" @change='(e)=>handleChange(e, record.key, col, index)' + /> + <!-- :disabled="repairOrderStatus=='4'"--> + <a-date-picker + :value='text' + format='YYYY-MM-DD HH:mm' + :show-time="{ defaultValue: moment('00:00', 'HH:mm') }" + v-if="col.dataIndex == 'endTime'" @change='(e)=>handleChange(e, record.key, col, index)' + /> + + <!-- <a-input-number--> + <!-- :value='text'--> + <!-- v-if="col.dataIndex == 'theoreticalTime'"--> + <!-- :min='0'--> + <!-- :max='99999'--> + <!-- :read-only='true'--> + <!-- @change='(e)=>handleChange(e, record.key, col, index)'--> + <!-- :disabled="true"--> + <!-- />--> </div> </template> <span @@ -44,15 +90,15 @@ > <a :disabled="repairOrderStatus=='4'" - @click="handleDelete(index)" + @click='handleDelete(index)' >鍒犻櫎</a> </span> </a-table> <a-button - style="width: 100%; margin-top: 16px; margin-bottom: 8px" - type="dashed" - icon="plus" - @click="addHour" + style='width: 100%; margin-top: 16px; margin-bottom: 8px' + type='dashed' + icon='plus' + @click='addHour' :disabled="this.repairOrderStatus=='4' || this.repairOrderStatus=='2'" >娣诲姞瀹為檯宸ユ椂 <!-- :disabled="mainId.status=='4'" --> @@ -61,27 +107,29 @@ <a-row :style="{textAlign:'right'}"> <a-button :style="{marginRight: '8px'}" - @click="handleCancel" + @click='handleCancel' > 鍙栨秷 </a-button> <a-button - @click="handleOk(1)" - type="primary" + @click='handleOk(1)' + type='primary' :style="{marginRight: '8px'}" :disabled="this.repairOrderStatus=='4' || this.repairOrderStatus=='2'" - >鏆傚瓨</a-button> + >鏆傚瓨 + </a-button> <a-button - @click="handleOk(0)" - type="primary" + @click='handleOk(0)' + type='primary' :disabled="this.repairOrderStatus=='4' || this.repairOrderStatus=='2'" - >淇濆瓨</a-button> + >淇濆瓨 + </a-button> </a-row> <!-- :disabled="false" --> </div> <actual-hour-user-select - ref="actualUserSelect" - @sendUserRecord="sendUserRecord" + ref='actualUserSelect' + @sendUserRecord='sendUserRecord' > </actual-hour-user-select> </a-card> @@ -92,12 +140,15 @@ import pick from 'lodash.pick' import JEllipsis from '@/components/jeecg/JEllipsis' import ActualHourUserSelect from './select/ActualHourUserSelect.vue' +import moment from 'moment' + export default { name: 'RepairOrderActualWorkHoursList', mixins: [JeecgListMixin], components: { JEllipsis, ActualHourUserSelect + }, // props: { // mainId: { @@ -121,13 +172,12 @@ type: String, required: false, default: '' - }, + } }, data() { return { - title: "瀹為檯宸ユ椂", + title: '瀹為檯宸ユ椂', flag: false,//涓婚〉闈㈢殑鏍囪浣� 鐢ㄤ簬鍖哄垎鏄惁纭杩囧伐鍗曞伐鑹� 鏉ュ尯鍒唗able椤靛睍绀� 宸ュ崟宸ュ簭 杩樻槸浜у搧宸ュ簭 - visible: false, model: {}, obj: {}, maskClosable: true, @@ -139,7 +189,7 @@ pageSize: 99, pageSizeOptions: ['99', '199'], showTotal: (total, range) => { - return range[0] + "-" + range[1] + " 鍏�" + total + "鏉�" + return range[0] + '-' + range[1] + ' 鍏�' + total + '鏉�' }, showQuickJumper: true, showSizeChanger: true, @@ -148,24 +198,24 @@ validatorRules: { userId: { rules: [ - { required: true, message: '璇烽�夋嫨浜哄憳!' }, + { required: true, message: '璇烽�夋嫨浜哄憳!' } ] }, actual_hour: { rules: [ - { required: false, message: '璇峰~鍐欏伐鏃�!' }, + { required: false, message: '璇峰~鍐欏伐鏃�!' } ] - }, + } }, labelCol: { xs: { span: 24 }, - sm: { span: 7 }, + sm: { span: 7 } }, wrapperCol: { xs: { span: 24 }, - sm: { span: 16 }, + sm: { span: 16 } }, - drawerWidth: "100%", + drawerWidth: '100%', visible: false, disableSubmit: false, disableSelect: false, @@ -177,32 +227,58 @@ dataIndex: '', key: 'rowIndex', width: 60, - align: "center", - customRender: function (t, r, index) { - return parseInt(index) + 1; + align: 'center', + customRender: function(t, r, index) { + return parseInt(index) + 1 } }, { title: '*浜哄憳缂栫爜', dataIndex: 'username', - align: "center", + align: 'center', scopedSlots: { customRender: 'username' }, className: 'red', - width: 250, + width: 250 }, { title: '浜哄憳鍚嶇О', dataIndex: 'realname', - align: "center", - width: 250, + align: 'center', + width: 150 + }, + { + title: '涓绘壙淇汉', + dataIndex: 'principalContractor', + align: 'center', + scopedSlots: { customRender: 'principalContractor' }, + width: 100 }, { title: '*瀹為檯宸ユ椂', dataIndex: 'actualHour', - align: "center", + align: 'center', className: 'red', scopedSlots: { customRender: 'actualHour' }, - width: 250, + width: 120 + }, + { + title: '寮�濮嬫椂闂�', + dataIndex: 'startTime', + scopedSlots: { customRender: 'startTime' }, + align: 'center' + }, + { + title: '缁撴潫鏃堕棿', + dataIndex: 'endTime', + align: 'center', + scopedSlots: { customRender: 'endTime' } + }, + + { + title: '鐞嗚宸ユ椂', + dataIndex: 'theoreticalTime', + align: 'center' + // scopedSlots: { customRender: 'theoreticalTime' }, }, { title: '鎿嶄綔', @@ -214,7 +290,7 @@ ], url: { list: '/eam/repairOrder/listRepairOrderActualWorkHoursByMainId', - confirmHour: '/eam/repairOrderActualHours/add', + confirmHour: '/eam/repairOrderActualHours/add' }, changeIndex: 0 } @@ -224,46 +300,59 @@ repairOrderId: { immediate: true, handler(val) { - this.clearList(); + this.clearList() this.queryParam['repairOrderId'] = val this.loadData(1) } - }, + } }, methods: { + moment, + onChange(checked) { + console.log(`a-switch to ${checked}`) + }, +//鏃堕棿閫夋嫨淇敼 + onStartTimeChange() { + console.log() + + }, + onEndTimeChange() { + console.log() + + }, addHour() { this.dataSource.push({ userId: '', repairOrderId: this.repairOrderId, actualHour: 0, username: '', realname: '' }) }, handleCancel() { - this.$bus.$emit('closeDrawer'); + this.$bus.$emit('closeDrawer') }, close() { - this.$emit('close'); + this.$emit('close') this.dataSource = [] - this.disableSubmit = false; - this.visible = false; + this.disableSubmit = false + this.visible = false }, handleDelete(text, record, index) { - this.dataSource.splice(index, 1); + this.dataSource.splice(index, 1) }, handleOk(saveStatus) { const that = this if (saveStatus == 0) { - let workHoursDataSource = that.dataSource; + let workHoursDataSource = that.dataSource for (let i = 0; i < workHoursDataSource.length; i++) { if (workHoursDataSource[i].userId == undefined || workHoursDataSource[i].userId == null || workHoursDataSource[i].userId == '') { - that.$message.warning("璇烽�夋嫨绗�" + (i + 1) + "琛岀淮淇汉鍛橈紒"); - return false; + that.$message.warning('璇烽�夋嫨绗�' + (i + 1) + '琛岀淮淇汉鍛橈紒') + return false } if (workHoursDataSource[i].actualHour == undefined || workHoursDataSource[i].actualHour == null || workHoursDataSource[i].actualHour == '') { - that.$message.warning("璇峰~鍐欑" + (i + 1) + "琛屽疄闄呭伐鏃讹紒"); - return false; + that.$message.warning('璇峰~鍐欑' + (i + 1) + '琛屽疄闄呭伐鏃讹紒') + return false } } } if (that.dataSource.length === 0) { - that.$message.warning("璇烽�夋嫨浜哄憳锛�") + that.$message.warning('璇烽�夋嫨浜哄憳锛�') return } this.form.validateFields((err, values) => { @@ -271,8 +360,14 @@ that.confirmLoading = true let formData = {} // formData.repairOrderId = that.mainId.id; - formData.repairOrderId = that.repairOrderId; - formData.repairOrderActualWorkHoursList = that.dataSource; + formData.repairOrderId = that.repairOrderId + formData.repairOrderActualWorkHoursList = that.dataSource + for (let i = 0; i < formData.repairOrderActualWorkHoursList.length; i++) { + const start = formData.repairOrderActualWorkHoursList[i].startTime + const end = formData.repairOrderActualWorkHoursList[i].endTime + formData.repairOrderActualWorkHoursList[i].startTime = moment(start).format('yyyy-MM-DD HH:mm') + formData.repairOrderActualWorkHoursList[i].endTime = moment(end).format('yyyy-MM-DD HH:mm') + } // formData.equipmentId = that.equipmentId; let obj = obj = postAction(this.url.confirmHour, formData) obj.then((res) => { @@ -285,24 +380,87 @@ }).finally(() => { that.confirmLoading = false that.close() - that.loadData(1); + that.loadData(1) }) } }) }, handleChange(value, key, column, index) { - let that = this; - const temp = [...that.dataSource]; - const target = temp[index]; + let that = this + const temp = [...that.dataSource] + const target = temp[index] if (target) { - target[column.dataIndex] = value; + target[column.dataIndex] = value if ('userId' == column.dataIndex) { - target['userId'] = value; + target['userId'] = value } + if ('principalContractor' == column.dataIndex) { + target['principalContractor'] = value + } + if ('actualHour' == column.dataIndex) { - target['actualHour'] = value; + target['actualHour'] = value } - that.dataSource = temp; + // if ('theoreticalTime' == column.dataIndex) { + // target['theoreticalTime'] = value + // } + if ('startTime' == column.dataIndex) { + + if (target['endTime'] == null) { + target['startTime'] = value + } else if (target['startTime'] != null && target['endTime'] != null) { + const diffInHours = this.getTimeDiff(target['startTime'], target['endTime']) + if (diffInHours < 0) { + target['startTime'] = '' + target['theoreticalTime'] = '' + that.$message.error('璇锋鏌ョ' + (index + 1) + '琛屽紑濮嬫椂闂翠笉鑳藉皬浜庣粨鏉熸椂闂�,璇烽噸鏂伴�夋嫨') + } else { + target['startTime'] = value + target['theoreticalTime'] = diffInHours + } + } else if (target['startTime'] == null && target['endTime'] != null) { + const diffInHours = this.getTimeDiff(value, target['endTime']) + if (diffInHours < 0) { + target['startTime'] = '' + target['theoreticalTime'] = '' + that.$message.error('璇锋鏌ョ' + (index + 1) + '琛屽紑濮嬫椂闂翠笉鑳藉皬浜庣粨鏉熸椂闂�,璇烽噸鏂伴�夋嫨') + + } else { + target['startTime'] = value + target['theoreticalTime'] = diffInHours + } + } + + } + + if ('endTime' == column.dataIndex) { + if (target['startTime'] == null) { + target['endTime'] = value + } else if (target['startTime'] != null && target['endTime'] != null) { + const diffInHours = this.getTimeDiff(target['startTime'], target['endTime']) + if (diffInHours < 0) { + target['endTime'] = '' + target['theoreticalTime'] = '' + that.$message.error('璇锋鏌ョ' + (index + 1) + '琛屽紑濮嬫椂闂翠笉鑳藉皬浜庣粨鏉熸椂闂�,璇烽噸鏂伴�夋嫨') + } else { + target['endTime'] = value + target['theoreticalTime'] = diffInHours + } + + } else if (target['startTime'] != null && target['endTime'] == null) { + const diffInHours = this.getTimeDiff(target['startTime'], value) + if (diffInHours < 0) { + target['endTime'] = '' + target['theoreticalTime'] = '' + that.$message.error('璇锋鏌ョ' + (index + 1) + '琛屽紑濮嬫椂闂翠笉鑳藉皬浜庣粨鏉熸椂闂�,璇烽噸鏂伴�夋嫨') + + } else { + target['endTime'] = value + target['theoreticalTime'] = diffInHours + } + } + } + that.dataSource = temp } }, onSearchUser(index) { @@ -317,17 +475,26 @@ const target = temp[this.recordIndex] if (target) { console.log(record) - target.userId = record.id; - target.username = record.username; - target.realname = record.realname; + target.userId = record.id + target.username = record.username + target.realname = record.realname this.dataSource = temp } }, clearList() { - this.dataSource = []; + this.dataSource = [] this.ipagination.current = 1 + }, + // 鑾峰彇寮�濮嬫椂闂村拰缁撴潫鏃堕棿鐨勬椂闂村樊 + getTimeDiff(startTime, endTime) { + const start = moment(startTime, 'YYYY-MM-DD HH:mm:ss') + const end = moment(endTime, 'YYYY-MM-DD HH:mm:ss') + const diff = end.diff(start) + var duration = moment.duration(diff) + var diffInHours = duration.asHours() + return diffInHours.toFixed(1) } - }, + } } </script> -- Gitblit v1.9.3