From 92ff846fb659c62037a32b1d8c15eae9df9d9b54 Mon Sep 17 00:00:00 2001 From: zenglf <18502938215@163.com> Date: 星期一, 18 九月 2023 13:24:30 +0800 Subject: [PATCH] Merge branch 'develop' of http://117.34.109.166:18448/r/vue_mdc_430 --- src/views/eam/modules/predictiveWorkOrder/ActualWorkHoursEditTable.vue | 342 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 342 insertions(+), 0 deletions(-) diff --git a/src/views/eam/modules/predictiveWorkOrder/ActualWorkHoursEditTable.vue b/src/views/eam/modules/predictiveWorkOrder/ActualWorkHoursEditTable.vue new file mode 100644 index 0000000..0bf4755 --- /dev/null +++ b/src/views/eam/modules/predictiveWorkOrder/ActualWorkHoursEditTable.vue @@ -0,0 +1,342 @@ +<template> + <a-card + :bordered="false" + :class="'cust-erp-sub-tab'" + > + <a-table + ref="table" + bordered + rowKey="id" + :columns="columns" + :dataSource="dataSource" + :pagination="ipagination" + @change="handleTableChange" + > + <template + v-for="col in columns" + :slot="col.dataIndex" + slot-scope='text, record, index' + > + <div :key="col.dataIndex"> + <a-input-search + v-if="col.dataIndex == 'username'" + enter-button + @search="onSearchUser(index)" + :value="text" + :read-only="true" + :disabled="orderStatus!='4'" + @change="(e) => handleChange(e, record.key, col, index)" + /> + <a-input-number + :value="text" + v-if="col.dataIndex == 'actualWorkingHourQuota'" + :min="0" + :max="99999" + @change="(e)=>handleChange(e, record.key, col, index)" + :disabled="record.disabled||orderStatus!='4'" + /> + + </div> + </template> + <span + slot='action' + slot-scope='text, record,index' + > + <a + v-has="'specialtyMaintenanceOrder:actualWorkHoursDelete'" + v-if="orderStatus=='4'" + @click="handleDelete(index)" + >鍒犻櫎</a> + </span> + </a-table> + <a-button + style="width: 100%; margin-top: 16px; margin-bottom: 8px" + type="dashed" + icon="plus" + @click="addHour" + :disabled="orderStatus!='4'" + >娣诲姞瀹為檯宸ユ椂 + </a-button> + <div :style="{width: '100%',border: '1px solid #e9e9e9',padding: '10px 16px',background: '#fff',}"> + <a-row :style="{textAlign:'right'}"> + <a-button + :style="{marginRight: '8px'}" + @click="handleCancel" + > + 鍙栨秷 + </a-button> + <a-button + @click="handleOk(1)" + type="primary" + :style="{marginRight: '8px'}" + :disabled="orderStatus!='4'" + v-has="'specialtyMaintenanceOrder:actualWorkHoursTS'" + >鏆傚瓨</a-button> + <a-button + @click="handleOk(0)" + type="primary" + :disabled="orderStatus!='4'" + v-has="'specialtyMaintenanceOrder:actualWorkHoursSave'" + >淇濆瓨</a-button> + </a-row> + <!-- :disabled="false" --> + </div> + <actual-hour-user-select + ref="actualUserSelect" + @sendUserRecord="sendUserRecord" + > + </actual-hour-user-select> + </a-card> +</template> +<script> +import { postAction, getAction } from '@/api/manage' +import { JeecgListMixin } from '@/mixins/JeecgListMixin' +import pick from 'lodash.pick' +import JEllipsis from '@/components/jeecg/JEllipsis' +import ActualHourUserSelect from './select/ActualHourUserSelect.vue' +export default { + name: 'ActualWorkHoursEditTable', + mixins: [JeecgListMixin], + components: { + JEllipsis, + ActualHourUserSelect + }, + props: { + orderId: { + type: String, + required: false, + default: '' + }, + orderStatus: { + type: String, + required: false, + default: '' + }, + equipmentId: { + type: String, + required: false, + default: '' + }, + teamId: { + type: String, + required: false, + default: '' + }, + }, + data() { + return { + title: "瀹為檯宸ユ椂", + flag: false,//涓婚〉闈㈢殑鏍囪浣� 鐢ㄤ簬鍖哄垎鏄惁纭杩囧伐鍗曞伐鑹� 鏉ュ尯鍒唗able椤靛睍绀� 宸ュ崟宸ュ簭 杩樻槸浜у搧宸ュ簭 + visible: false, + model: {}, + obj: {}, + maskClosable: true, + confirmLoading: false, + form: this.$form.createForm(this), + /* 鍒嗛〉鍙傛暟 */ + ipagination: { + current: 1, + pageSize: 99, + pageSizeOptions: ['99', '199'], + showTotal: (total, range) => { + return range[0] + "-" + range[1] + " 鍏�" + total + "鏉�" + }, + showQuickJumper: true, + showSizeChanger: true, + total: 0 + }, + validatorRules: { + userId: { + rules: [ + { required: true, message: '璇烽�夋嫨浜哄憳!' }, + ] + }, + actual_hour: { + rules: [ + { required: false, message: '璇峰~鍐欏伐鏃�!' }, + ] + }, + }, + labelCol: { + xs: { span: 24 }, + sm: { span: 7 }, + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 }, + }, + drawerWidth: "100%", + visible: false, + disableSubmit: false, + disableSelect: false, + loading: false, + dataSource: [], + columns: [ + { + title: '*浜哄憳缂栫爜', + dataIndex: 'username', + align: "center", + scopedSlots: { customRender: 'username' }, + className: 'red', + width: 250, + }, + { + title: '浜哄憳鍚嶇О', + dataIndex: 'realname', + align: "center", + width: 250, + }, + { + title: '*瀹為檯宸ユ椂', + dataIndex: 'actualWorkingHourQuota', + align: "center", + className: 'red', + scopedSlots: { customRender: 'actualWorkingHourQuota' }, + width: 250, + }, + { + title: '鎿嶄綔', + dataIndex: 'action', + align: 'center', + width: 250, + scopedSlots: { customRender: 'action' } + } + ], + url: { + list: "/eam/maintenanceOrderActualWorkingHour/getMaintenanceOrderActualWorkingHourList", + confirmHour: "/eam/maintenanceOrderActualWorkingHour/add" + }, + changeIndex: 0 + } + }, + created() { + this.queryParam['maintenanceOrderId'] = this.orderId; + this.queryParam['equipmentId'] = this.equipmentId + this.loadData(1); + }, + watch: { + orderId: { + immediate: true, + handler(val) { + this.clearList(); + this.queryParam['maintenanceOrderId'] = val + this.queryParam['equipmentId'] = this.equipmentId + this.loadData(1); + } + }, + }, + methods: { + addHour() { + this.dataSource.push({ id: this.getUuiD(16), userId: '', maintenanceOrderId: this.dailyMaintenanceOrderId, actualWorkingHourQuota: 0, username: '', realname: '' }) + }, + handleCancel() { + this.$bus.$emit('closeDrawer'); + }, + close() { + this.$emit('close'); + this.dataSource = [] + this.disableSubmit = false; + this.visible = false; + }, + // handleDeleteFake(index) { + // this.dataSource.splice(index,1); + // }, + handleDelete(text, record, index) { + this.dataSource.splice(index, 1); + }, + + handleOk(saveStatus) { + const that = this + if (saveStatus == 0) { + 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; + } + if (workHoursDataSource[i].actualWorkingHourQuota == undefined || workHoursDataSource[i].actualWorkingHourQuota == null || workHoursDataSource[i].actualWorkingHourQuota == '') { + that.$message.warning("璇峰~鍐欑" + (i + 1) + "琛屽疄闄呭伐鏃讹紒"); + return false; + } + } + } + if (that.dataSource.length === 0) { + that.$message.warning("璇烽�夋嫨浜哄憳锛�") + return + } + this.form.validateFields((err, values) => { + if (!err) { + that.confirmLoading = true + let formData = {} + formData.maintenanceOrderId = that.orderId; + formData.maintenanceOrderActualWorkingHourList = that.dataSource; + formData.equipmentId = that.equipmentId; + let obj = obj = postAction(this.url.confirmHour, formData) + obj.then((res) => { + if (res.success) { + that.$message.success(res.message) + that.$emit('ok') + } else { + that.$message.warning(res.message) + } + }).finally(() => { + that.confirmLoading = false + that.close() + that.loadData(1); + }) + } + }) + }, + handleChange(value, key, column, index) { + let that = this; + const temp = [...that.dataSource]; + const target = temp[index]; + if (target) { + target[column.dataIndex] = value; + if ('userId' == column.dataIndex) { + target['userId'] = value; + } + if ('actualWorkingHourQuota' == column.dataIndex) { + target['actualWorkingHourQuota'] = value; + } + that.dataSource = temp; + } + }, + onSearchUser(index) { + this.recordIndex = index + this.$refs.actualUserSelect.list(this.teamId) + this.$refs.actualUserSelect.title = '浜哄憳閫夋嫨' + }, + sendUserRecord(data, val) { + let record = data.record + const temp = [...this.dataSource] + const target = temp[this.recordIndex] + if (target) { + console.log(record) + target.userId = record.id; + target.username = record.username; + target.realname = record.realname; + this.dataSource = temp + } + }, + clearList() { + this.dataSource = []; + this.ipagination.current = 1 + }, + getUuiD(randomLength) { + return Number( + Math.random() + .toString() + .substr(2, randomLength) + Date.now() + ).toString(36) + }, + }, + +} +</script> + +<style scoped> +/deep/ .red { + color: red; +} +</style> \ No newline at end of file -- Gitblit v1.9.3