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/spare/modules/sparePartScrap/SparePartScrapForm.vue | 578 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 578 insertions(+), 0 deletions(-) diff --git a/src/views/spare/modules/sparePartScrap/SparePartScrapForm.vue b/src/views/spare/modules/sparePartScrap/SparePartScrapForm.vue new file mode 100644 index 0000000..2af4bf8 --- /dev/null +++ b/src/views/spare/modules/sparePartScrap/SparePartScrapForm.vue @@ -0,0 +1,578 @@ +<template> + <a-spin :spinning='confirmLoading'> + <j-form-container :disabled='formDisabled'> + <!-- 涓昏〃鍗曞尯鍩� --> + <a-form-model ref='form' :model='model' :rules='validatorRules' slot='detail'> + <a-row> + <a-col :span='12'> + <a-form-model-item label='鍗曟嵁鍙�' :labelCol='labelCol' :wrapperCol='wrapperCol' prop='num'> + <a-input v-model='model.num' placeholder='璇疯緭鍏ュ崟鎹彿' :disabled="true"></a-input> + </a-form-model-item> + </a-col> + <a-col :span='12'> + <a-form-model-item label='棰嗙敤閮ㄩ棬' :labelCol='labelCol' :wrapperCol='wrapperCol' prop='departId'> + <!-- <a-input v-model="model.departId" placeholder="璇疯緭鍏ラ鐢ㄩ儴闂↖D" ></a-input>--> +<!-- <j-dict-select-tag + allow-clear + :placeholder="'璇烽�夋嫨棰嗙敤閮ㄩ棬'" + v-model='model.departId' + dictCode="sys_depart,depart_name,id,del_flag!='1'" + />--> +<!-- <a-select + :placeholder="'璇烽�夋嫨棰嗙敤閮ㄩ棬'" + :options="this.departs" + style="width: 100%" + v-model='model.departId' + />--> + <a-tree-select + style="width: 100%" + :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }" + :tree-data="treeData" + placeholder="璇烽�夋嫨棰嗙敤閮ㄩ棬" + tree-default-expand-all + v-model='model.departId' + /> + </a-form-model-item> + </a-col> + <a-col :span='12'> + <a-form-model-item label='棰嗙敤浜哄憳' :labelCol='labelCol' :wrapperCol='wrapperCol' prop='userId'> + <j-dict-select-tag + allow-clear + :placeholder="'璇烽�夋嫨棰嗙敤浜哄憳'" + v-model='model.userId' + dictCode="sys_user,realname,id,del_flag!='1'" + /> + </a-form-model-item> + </a-col> + <a-col :span='12'> + <a-form-model-item label='澶囨敞' :labelCol='labelCol' :wrapperCol='wrapperCol' prop='remark'> + <!-- <a-input v-model="model.userId" placeholder="璇疯緭鍏ラ鐢ㄤ汉鍛業D" ></a-input>--> + <a-textarea + allow-clear + :placeholder="'璇疯緭鍏ュ娉�'" + v-model='model.remark' + /> + </a-form-model-item> + </a-col> + + </a-row> + </a-form-model> + </j-form-container> + <!-- 瀛愯〃鍗曞尯鍩� --> + <a-tabs v-model='activeKey' @change='handleChangeTabs'> + <a-tab-pane tab='澶囦欢鎶ュ簾鏄庣粏琛�' :key='refKeys[0]' :forceRender='true'> + <j-vxe-table + keep-source + :ref='refKeys[0]' + :bordered='bordered' + :alwaysEdit='true' + :loading='sparesScrapDetailTable.loading' + :columns='sparesScrapDetailTable.columns' + :dataSource='sparesScrapDetailTable.dataSource' + :maxHeight='300' + :disabled='formDisabled' + :rowNumber='true' + :rowSelection='true' + :toolbar='true' + :toolbarConfig='toolbarConfig' + > + <template slot='toolbarPrefix'> + <a-button type='primary' @click='selectEquipmentList' :disabled='formDisabled'>閫夋嫨澶囦欢 + </a-button> + </template> + </j-vxe-table> + </a-tab-pane> + </a-tabs> + <spare-select-list ref='SparesSelectModal'></spare-select-list> + </a-spin> +</template> + +<script> + +import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js' +import { JVXETypes } from '@comp/jeecg/JVxeTable' +import { getRefPromise, VALIDATE_FAILED } from '@comp/jeecg/JVxeTable/utils/vxeUtils.js' +import JFormContainer from '@comp/jeecg/JFormContainer' +import SpareSelectList from './SpareSelectList' +import { getAction } from '@api/manage' + +export default { + name: 'SparePartScrapForm', + mixins: [JVxeTableModelMixin], + components: { + JFormContainer, + SpareSelectList + }, + data() { + return { + treeData:[], + departs:[], + bordered:true, + labelCol: { + xs: { span: 24 }, + sm: { span: 5 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 } + }, + toolbarConfig: { + // prefix 鍓嶇紑锛泂uffix 鍚庣紑 + slot: ['prefix', 'suffix'], + // add 鏂板鎸夐挳锛況emove 鍒犻櫎鎸夐挳锛沜learSelection 娓呯┖閫夋嫨鎸夐挳 + btn: ['remove', 'clearSelection'] + }, + model: {}, + // 鏂板鏃跺瓙琛ㄩ粯璁ゆ坊鍔犲嚑琛岀┖鏁版嵁 + addDefaultRowNum: 0, + validatorRules: { + num: [ + { required: true, message: '璇疯緭鍏ュ崟鎹彿!' } + ], + departId: [ + { required: true, message: '璇疯緭鍏ラ鐢ㄩ儴闂↖D!' } + ], + userId: [ + { required: true, message: '璇疯緭鍏ラ鐢ㄤ汉鍛業D!' } + ] + }, + refKeys: ['sparesScrapDetail'], + tableKeys: ['sparesScrapDetail'], + activeKey: 'sparesScrapDetail', + // 澶囦欢鎶ュ簾鏄庣粏琛� + sparesScrapDetailTable: { + loading: false, + dataSource: [], + columns: [ + { + title: '澶囦欢缂栫爜', + key: 'spareNum', + fixed: 'left', + type: JVXETypes.normal, + align:'center', + width: '150px', + placeholder: '璇疯緭鍏�${title}', + defaultValue: '' + }, + { + title: '澶囦欢鍚嶇О', + key: 'spareName', + align:'center', + type: JVXETypes.normal, + fixed: 'left', + width: '150px', + placeholder: '璇疯緭鍏�${title}', + defaultValue: '' + }, + { + title: '鍨嬪彿', + key: 'model', + align:'center', + type: JVXETypes.normal, + width: '150px', + placeholder: '璇疯緭鍏�${title}', + defaultValue: '' + }, + { + title: '瑙勬牸', + key: 'specification', + type: JVXETypes.normal, + align:'center', + width: '150px', + placeholder: '璇疯緭鍏�${title}', + defaultValue: '' + }, + { + title: '鎵规鍙�', + key: 'batchNum', + type: JVXETypes.normal, + width: '200px', + align:'center', + placeholder: '璇疯緭鍏�${title}', + defaultValue: '' + }, + { + title: '鍒堕�犲晢', + key: 'constructorName', + type: JVXETypes.normal, + align:'center', + width: '200px', + placeholder: '璇疯緭鍏�${title}', + defaultValue: '' + }, + { + title: '鍑哄巶鏃ユ湡', + key: 'manufactureDate', + type: JVXETypes.normal, + align:'center', + width: '200px', + placeholder: '璇疯緭鍏�${title}', + defaultValue: '' + + }, + { + title: '鏈夋晥鏃ユ湡', + key: 'validityPeriod', + type: JVXETypes.normal, + align:'center', + width: '200px', + placeholder: '璇疯緭鍏�${title}', + defaultValue: '' + }, + { + title: '鎶ュ簾鍘熷洜', + key: 'scrapReason', + type: JVXETypes.textarea, + width: '200px', + align:'center', + placeholder: '璇疯緭鍏�${title}', + defaultValue: '', + validateRules: [ + { + required: true, + message: '璇疯緭鍏�${title}' + } + ] + }, + { + title: '鍗曚綅', + key: 'mainUnitIdName', + type: JVXETypes.normal, + width: '200px', + align:'center', + placeholder: '璇疯緭鍏�${title}', + defaultValue: '' + }, + { + title: '鍗曚綅', + key: 'mainUnitId', + type: JVXETypes.hidden, + align:'center', + width: '200px', + placeholder: '璇疯緭鍏�${title}', + defaultValue: '' + }, + /* { + title: '杈呭崟浣�', + key: 'auxiliaryUnitIdName', + type: JVXETypes.normal, + align:'center', + width: '200px', + placeholder: '璇疯緭鍏�${title}', + defaultValue: '' + }, + { + title: '杈呭崟浣�', + key: 'auxiliaryUnitId', + align:'center', + type: JVXETypes.hidden, + width: '200px', + placeholder: '璇疯緭鍏�${title}', + defaultValue: '' + }, */ + { + title: '鏁伴噺', + key: 'mainQuantity', + align:'center', + type: JVXETypes.normal, + width: '200px', + placeholder: '璇疯緭鍏�${title}', + defaultValue: '' + }, + + /* { + title: '杈呮暟閲�', + key: 'auxiliaryQuantity', + type: JVXETypes.normal, + align:'center', + width: '200px', + placeholder: '璇疯緭鍏�${title}', + defaultValue: '' + }, */ + { + title: '澶囦欢id', + key: 'sparePartId', + type: JVXETypes.hidden, + align:'center', + width: '200px', + placeholder: '璇疯緭鍏�${title}', + defaultValue: '' + }, + { + title: '澶囦欢搴撳瓨id', + key: 'sparePartInventoryId', + type: JVXETypes.hidden, + width: '200px', + align:'center', + placeholder: '璇疯緭鍏�${title}', + defaultValue: '' + }, + { + title: '鎶ュ簾鏁伴噺', + key: 'scrapMainQuantity', + align:'center', + type: JVXETypes.inputNumber, + width: '200px', + placeholder: '璇疯緭鍏�${title}', + defaultValue: 0, + /* formatter({ cellValue, row, column }) { + if (cellValue != null) { + let conversionRatio = row.conversionRatio + console.log(conversionRatio) + + row.scrapAuxiliaryQuantity = Math.abs(cellValue * conversionRatio) + + } + return cellValue + + }, */ + validateRules: [ + { + required: true, + // 鑷畾涔夊嚱鏁版牎楠� handler + handler({ cellValue, row, column }, callback, target) { + if (cellValue > row.mainQuantity) { + callback(false, '${title}涓嶈兘澶т簬涓绘暟閲�') + // false = 鏈�氳繃锛屽彲浠ヨ窡鑷畾涔夋彁绀� + } else if (cellValue < 0) { + callback(false, '${title}涓嶈兘灏忎簬0') + } else { + callback(true) // + } + }, + message: '${title}榛樿鎻愮ず' + } + ] + }, + /* { + title: '鎶ュ簾杈呮暟閲�', + align:'center', + key: 'scrapAuxiliaryQuantity', + type: JVXETypes.normal, + width: '200px', + placeholder: '璇疯緭鍏�${title}', + defaultValue: '' + }, */ + { + title: '搴撳尯', + align:'center', + key: 'warehouseAreaIdName', + type: JVXETypes.normal, + width: '200px', + placeholder: '璇疯緭鍏�${title}', + defaultValue: '' + }, + { + title: '搴撳尯id', + align:'center', + key: 'warehouseAreaId', + type: JVXETypes.hidden, + width: '200px', + placeholder: '璇疯緭鍏�${title}', + defaultValue: '' + }, + { + title: '搴撲綅', + align:'center', + key: 'warehouseLocationIdName', + type: JVXETypes.normal, + width: '200px', + placeholder: '璇疯緭鍏�${title}', + defaultValue: '' + }, + { + title: '搴撲綅id', + align:'center', + key: 'warehouseLocationId', + type: JVXETypes.hidden, + width: '200px', + placeholder: '璇疯緭鍏�${title}', + defaultValue: '' + } + ] + }, + url: { + add: '/spare/sparePartScrap/add', + edit: '/spare/sparePartScrap/edit', + getSysDeparts: "/eam/equipment/getSysDeparts", + loadOptions: '/sys/sysDepart/loadDepartTreeOptions', + queryById: '/spare/sparePartScrap/queryById', + getNum: '/eam/sysIdentity/getNumNew', + sparesScrapDetail: { + list: '/spare/sparePartScrap/querySparesScrapDetailByMainId' + } + } + } + }, + props: { + //琛ㄥ崟绂佺敤 + disabled: { + type: Boolean, + default: false, + required: false + } + }, + computed: { + formDisabled() { + return this.disabled + } + }, + mounted() { + this.$bus.$on('selectionRows', (data) => { + // 澧炲姞閫変腑鐨勮澶囧埌鍒楄〃涓� + this.addSelectedEquipments(data) + + }) + }, + created() { + this.initOptions() + this.initNum() + }, + methods: { + initNum() { + getAction(this.url.getNum, { type: 'SparePart', length: '4' }).then((res) => { + if (res.success) { + this.model.num = res.message + + /* this.model.setFieldsValue({ num: res.message }); */ + } + }) + }, + initOptions() { + getAction(this.url.loadOptions).then(res => { + if (res.success) { + this.treeData = res.result + } else { + this.$message.warning(res.message) + } + }) + }, + getSysDeparts() { + getAction(this.url.getSysDeparts).then((res) => { + if (res.success) { + this.departs = res.result + } + }) + }, + selectEquipmentList() { + let ids = [] + let tableData = this.$refs.sparesScrapDetail.getTableData() + + let deleteData = this.$refs.sparesScrapDetail.getDeleteData() + console.log(tableData) + for (let i = 0; i < tableData.length; i++) { + ids.push(tableData[i].sparePartInventoryId) + } + this.$refs.SparesSelectModal.showModals(ids) + this.$refs.SparesSelectModal.title = '閫夋嫨澶囦欢' + this.$refs.SparesSelectModal.disableSubmit = false + }, + + addSelectedEquipments(data) { + let tableData = this.$refs.sparesScrapDetail.getTableData() + var tableStr = JSON.stringify(tableData) + const addRows = [] + for (let i = 0; i < data.length; i++) { + var sparesScrapDetail = {} + if (tableStr.indexOf(data[i].id) == -1) { + debugger + sparesScrapDetail = { + sparePartInventoryId: data[i].id, + sparePartId: data[i].sparePartId, + spareNum: data[i].spareNum, + spareName: data[i].spareName, + model: data[i].model, + specification: data[i].specification, + mainUnitId: data[i].mainUnitId, + /* auxiliaryUnitId: data[i].auxiliaryUnitId, */ + mainUnitIdName: data[i].mainUnitId_dictText, + /* auxiliaryUnitIdName: data[i].auxiliaryUnitId_dictText, */ + mainQuantity: data[i].mainQuantity, + /* auxiliaryQuantity: data[i].auxiliaryQuantity, */ + scrapMainQuantity: data[i].scrapMainQuantity, + /* scrapAuxiliaryQuantity: data[i].scrapAuxiliaryQuantity, */ + manufactureDate: data[i].manufactureDate, + constructorId: data[i].constructorId, + constructorName: data[i].constructorName, + batchNum: data[i].batchNum, + scrapReason: data[i].scrapReason, + validityPeriod: data[i].validityPeriod, + conversionRatio: data[i].conversionRatio, + warehouseLocationId: data[i].warehouseLocationId, + warehouseAreaIdName: data[i].warehouseAreaIdName, + warehouseLocationIdName: data[i].warehouseLocationIdName, + warehouseAreaId: data[i].warehouseAreaId + + } + } + addRows.push(sparesScrapDetail) + } + this.$refs.sparesScrapDetail.pushRows(addRows) + }, + + addBefore() { + this.sparesScrapDetailTable.dataSource = [] + }, + getAllTable() { + let values = this.tableKeys.map(key => getRefPromise(this, key)) + return Promise.all(values) + }, + /** 璋冪敤瀹宔dit()鏂规硶涔嬪悗浼氳嚜鍔ㄨ皟鐢ㄦ鏂规硶 */ + editAfter() { + this.$nextTick(() => { + }) + // 鍔犺浇瀛愯〃鏁版嵁 + if (this.model.id) { + let params = { id: this.model.id } + this.requestSubTableData(this.url.sparesScrapDetail.list, params, this.sparesScrapDetailTable) + } + }, + //鏍¢獙鎵�鏈変竴瀵逛竴瀛愯〃琛ㄥ崟 + validateSubForm(allValues) { + let tableData = this.$refs.sparesScrapDetail.getTableData() + if(tableData.length == 0){ + this.$message.warning("璇锋坊鍔犲姞鎶ュ簾鏄庣粏!"); + return + } + return new Promise((resolve, reject) => { + Promise.all([]).then(() => { + resolve(allValues) + }).catch(e => { + if (e.error === VALIDATE_FAILED) { + // 濡傛灉鏈夋湭閫氳繃琛ㄥ崟楠岃瘉鐨勫瓙琛紝灏辫嚜鍔ㄨ烦杞埌瀹冩墍鍦ㄧ殑tab + this.activeKey = e.index == null ? this.activeKey : this.refKeys[e.index] + } else { + console.error(e) + } + }) + }) + }, + /** 鏁寸悊鎴恌ormData */ + classifyIntoFormData(allValues) { + let main = Object.assign(this.model, allValues.formValue) + return { + ...main, // 灞曞紑 + sparesScrapDetailList: allValues.tablesValue[0].tableData + } + }, + validateError(msg) { + this.$message.error(msg) + }, + close() { + this.visible = false + this.$emit('close') + this.$refs.form.clearValidate() + }, +/* changeAuxiliaryQuantity(target){ + console.log(target.columnIndex) + let num=target.columnIndex + if (target.columnIndex ===num){ + target.row.scrapAuxiliaryQuantity=Math.abs(target.row.conversionRatio*target.row.scrapMainQuantity) + } + } */ + } +} +</script> + +<style scoped> +</style> \ No newline at end of file -- Gitblit v1.9.3