From e9ad171baa8ae05e47fb3698d2f2bc6fd9fc3124 Mon Sep 17 00:00:00 2001
From: qushaowei <qushaowei@163.com>
Date: 星期二, 21 十一月 2023 10:03:58 +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