¶Ô±ÈÐÂÎļþ |
| | |
| | | <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='warehouseId'> |
| | | <j-dict-select-tag |
| | | allow-clear |
| | | |
| | | :placeholder="'è¯·éæ©ä»åº'" |
| | | :triggerChange='true' |
| | | dictCode="mom_base_warehouse,name,id,del_flag!='1'" |
| | | v-model='model.warehouseId' |
| | | /> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | <a-col :span='12'> |
| | | <a-form-model-item label='é¢ç¨é¨é¨' :labelCol='labelCol' :wrapperCol='wrapperCol' prop='departId'> |
| | | <!-- <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-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]' |
| | | :alwaysEdit='true' |
| | | :bordered='bordered' |
| | | :loading='sparesReceiveDetailTable.loading' |
| | | :columns='sparesReceiveDetailTable.columns' |
| | | :dataSource='sparesReceiveDetailTable.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: 'SparePartReceiveForm', |
| | | mixins: [JVxeTableModelMixin], |
| | | components: { |
| | | JFormContainer, |
| | | SpareSelectList |
| | | }, |
| | | data() { |
| | | return { |
| | | bordered:true, |
| | | departs: [], |
| | | treeData:[], |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 5 } |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 16 } |
| | | }, |
| | | toolbarConfig: { |
| | | // prefix åç¼ï¼suffix åç¼ |
| | | slot: ['prefix', 'suffix'], |
| | | // add æ°å¢æé®ï¼remove å 餿é®ï¼clearSelection æ¸
ç©ºéæ©æé® |
| | | btn: ['remove', 'clearSelection'] |
| | | }, |
| | | model: {}, |
| | | // æ°å¢æ¶å表é»è®¤æ·»å å è¡ç©ºæ°æ® |
| | | addDefaultRowNum: 0, |
| | | validatorRules: { |
| | | num: [ |
| | | { required: true, message: '请è¾å
¥åæ®å·!' } |
| | | ], |
| | | warehouseId: [ |
| | | { required: true, message: '请è¾å
¥ä»åºid!' } |
| | | ], |
| | | departId: [ |
| | | { required: true, message: '请è¾å
¥é¢ç¨é¨é¨ID!' } |
| | | ], |
| | | userId: [ |
| | | { required: true, message: '请è¾å
¥é¢ç¨äººåID!' } |
| | | ] |
| | | }, |
| | | refKeys: ['sparesReceiveDetail'], |
| | | tableKeys: ['sparesReceiveDetail'], |
| | | activeKey: 'sparesReceiveDetail', |
| | | // å¤ä»¶é¢ç¨æç»è¡¨ |
| | | sparesReceiveDetailTable: { |
| | | loading: false, |
| | | dataSource: [], |
| | | columns: [ |
| | | { |
| | | title: 'å¤ä»¶ç¼ç ', |
| | | key: 'spareNum', |
| | | fixed: 'left', |
| | | align:'center', |
| | | type: JVXETypes.normal, |
| | | width: '150px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '' |
| | | }, |
| | | { |
| | | title: 'å¤ä»¶åç§°', |
| | | key: 'spareName', |
| | | type: JVXETypes.normal, |
| | | fixed: 'left', |
| | | width: '150px', |
| | | align:'center', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '' |
| | | }, |
| | | { |
| | | title: 'åå·', |
| | | key: 'model', |
| | | align:'center', |
| | | type: JVXETypes.normal, |
| | | width: '150px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '' |
| | | }, |
| | | { |
| | | title: 'è§æ ¼', |
| | | key: 'specification', |
| | | align:'center', |
| | | type: JVXETypes.normal, |
| | | width: '150px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '' |
| | | }, |
| | | { |
| | | title: 'åä½', |
| | | key: 'mainUnitIdName', |
| | | type: JVXETypes.normal, |
| | | align:'center', |
| | | width: '200px', |
| | | 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', |
| | | type: JVXETypes.hidden, |
| | | align:'center', |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '' |
| | | }, */ |
| | | { |
| | | title: 'æ°é', |
| | | key: 'mainQuantity', |
| | | type: JVXETypes.normal, |
| | | align:'center', |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: 0, |
| | | /* formatter({ cellValue, row, column }) { |
| | | |
| | | if (cellValue != null) { |
| | | let conversionRatio = row.conversionRatio |
| | | |
| | | row.auxiliaryQuantity = Math.abs(cellValue * conversionRatio) |
| | | |
| | | } |
| | | return cellValue |
| | | |
| | | }, */ |
| | | validateRules: [ |
| | | { |
| | | required: true, |
| | | // èªå®ä¹å½æ°æ ¡éª handler |
| | | handler({ cellValue, row, column }, callback, target) { |
| | | if (cellValue < 0) { |
| | | callback(false, '${title}ä¸å°äº0') |
| | | // false = æªéè¿ï¼å¯ä»¥è·èªå®ä¹æç¤º |
| | | } else { |
| | | callback(true) // true = éè¿éªè¯ |
| | | } |
| | | }, |
| | | message: '${title}é»è®¤æç¤º' |
| | | } |
| | | ] |
| | | }, |
| | | |
| | | /* { |
| | | title: 'è¾
æ°é', |
| | | key: 'auxiliaryQuantity', |
| | | align:'center', |
| | | type: JVXETypes.normal, |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: 0 |
| | | }, */ |
| | | |
| | | { |
| | | title: 'é¢ç¨æ°é', |
| | | key: 'receiveMainQuantity', |
| | | 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: 'receiveMainQuantity', |
| | | type: JVXETypes.hidden, |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '' |
| | | }, */ |
| | | |
| | | |
| | | |
| | | { |
| | | title: 'å¤ä»¶id', |
| | | key: 'sparePartId', |
| | | type: JVXETypes.hidden, |
| | | align:'center', |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '' |
| | | }, |
| | | { |
| | | title: 'å¤ä»¶åºåid', |
| | | align:'center', |
| | | key: 'sparePartInventoryId', |
| | | type: JVXETypes.hidden, |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '' |
| | | }, |
| | | ] |
| | | }, |
| | | url: { |
| | | add: '/spare/sparePartReceive/add', |
| | | edit: '/spare/sparePartReceive/edit', |
| | | getSysDeparts: "/eam/equipment/getSysDeparts", |
| | | loadOptions: '/sys/sysDepart/loadDepartTreeOptions', |
| | | getNum: '/eam/sysIdentity/getNumNew', |
| | | sparesReceiveDetail: { |
| | | list: '/spare/sparePartReceive/querySparePartReceiveDeatilByMainId' |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | 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 }); */ |
| | | } |
| | | }) |
| | | }, |
| | | getSysDeparts() { |
| | | getAction(this.url.getSysDeparts).then((res) => { |
| | | if (res.success) { |
| | | this.departs = res.result |
| | | } |
| | | }) |
| | | }, |
| | | initOptions() { |
| | | getAction(this.url.loadOptions).then(res => { |
| | | if (res.success) { |
| | | this.treeData = res.result |
| | | } else { |
| | | this.$message.warning(res.message) |
| | | } |
| | | }) |
| | | }, |
| | | selectEquipmentList() { |
| | | let ids = [] |
| | | debugger |
| | | let tableData = this.$refs.sparesReceiveDetail.getTableData() |
| | | |
| | | let deleteData = this.$refs.sparesReceiveDetail.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.sparesReceiveDetail.getTableData() |
| | | var tableStr = JSON.stringify(tableData) |
| | | const addRows = [] |
| | | for (let i = 0; i < data.length; i++) { |
| | | var sparesReceiveDetail = {} |
| | | if (tableStr.indexOf(data[i].id) == -1) { |
| | | |
| | | sparesReceiveDetail = { |
| | | 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, */ |
| | | manufactureDate: data[i].manufactureDate, |
| | | constructorId: data[i].constructorId, |
| | | constructorName: data[i].constructorName, |
| | | batchNum: data[i].batchNum, |
| | | ReceiveReason: data[i].ReceiveReason, |
| | | validityPeriod:data[i].validityPeriod, |
| | | /* conversionRatio:data[i].conversionRatio */ |
| | | } |
| | | } |
| | | addRows.push(sparesReceiveDetail) |
| | | } |
| | | this.$refs.sparesReceiveDetail.pushRows(addRows) |
| | | }, |
| | | |
| | | addBefore() { |
| | | this.sparesReceiveDetailTable.dataSource = [] |
| | | }, |
| | | getAllTable() { |
| | | let values = this.tableKeys.map(key => getRefPromise(this, key)) |
| | | return Promise.all(values) |
| | | }, |
| | | /** è°ç¨å®edit()æ¹æ³ä¹åä¼èªå¨è°ç¨æ¤æ¹æ³ */ |
| | | editAfter() { |
| | | this.$nextTick(() => { |
| | | }) |
| | | // å è½½åè¡¨æ°æ® |
| | | if (this.model.id) { |
| | | let params = { id: this.model.id } |
| | | this.requestSubTableData(this.url.sparesReceiveDetail.list, params, this.sparesReceiveDetailTable) |
| | | } |
| | | }, |
| | | //æ ¡éªææä¸å¯¹ä¸å表表å |
| | | validateSubForm(allValues) { |
| | | let tableData = this.$refs.sparesReceiveDetail.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) |
| | | } |
| | | }) |
| | | }) |
| | | }, |
| | | /** æ´çæformData */ |
| | | classifyIntoFormData(allValues) { |
| | | let main = Object.assign(this.model, allValues.formValue) |
| | | return { |
| | | ...main, // å±å¼ |
| | | sparePartReceiveDeatilList: allValues.tablesValue[0].tableData |
| | | } |
| | | }, |
| | | validateError(msg) { |
| | | this.$message.error(msg) |
| | | }, |
| | | close() { |
| | | this.visible = false |
| | | this.$emit('close') |
| | | this.$refs.form.clearValidate() |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | </style> |