¶Ô±ÈÐÂÎļþ |
| | |
| | | <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="请è¾å
¥é¢ç¨é¨é¨ID" ></a-input>--> |
| | | <!-- <j-dict-select-tag |
| | | allow-clear |
| | | :placeholder="'è¯·éæ©ç³è¯·é¨é¨'" |
| | | v-model='model.departId' |
| | | dictCode="sys_depart,depart_name,id,del_flag!='1'" |
| | | />--> |
| | | <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-select |
| | | :placeholder="'è¯·éæ©ç³è¯·é¨é¨'" |
| | | :options="this.departs" |
| | | style="width: 100%" |
| | | v-model='model.departId' |
| | | />--> |
| | | </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="请è¾å
¥é¢ç¨äººåID" ></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]" |
| | | :loading="sparesScrapRequirementDetailTable.loading" |
| | | :columns="sparesScrapRequirementDetailTable.columns" |
| | | :dataSource="sparesScrapRequirementDetailTable.dataSource" |
| | | :maxHeight="300" |
| | | :disabled="formDisabled" |
| | | :alwaysEdit="true" |
| | | :rowNumber="true" |
| | | :bordered="bordered" |
| | | :rowSelection="true" |
| | | :toolbar="true" |
| | | :toolbarConfig="toolbarConfig" |
| | | > |
| | | |
| | | <template slot="toolbarPrefix"> |
| | | <a-button type="primary" @click="selectEquipmentList" :disabled="formDisabled">éæ©å¤ä»¶ |
| | | </a-button> |
| | | </template> |
| | | <!-- <template slot='toolbarPrefix'> |
| | | <a-button type='primary' @click='selectNewEquipmentList' :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: 'SparePartScrapRequirementForm', |
| | | mixins: [JVxeTableModelMixin], |
| | | components: { |
| | | JFormContainer, |
| | | SpareSelectList |
| | | |
| | | }, |
| | | data() { |
| | | return { |
| | | treeData: [], |
| | | bordered: true, |
| | | departs: [], |
| | | 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: '请è¾å
¥åæ®å·!' } |
| | | ], |
| | | departId: [ |
| | | { required: true, message: '请è¾å
¥é¢ç¨é¨é¨!' } |
| | | ], |
| | | userId: [ |
| | | { required: true, message: '请è¾å
¥é¢ç¨äººå!' } |
| | | ] |
| | | }, |
| | | refKeys: ['sparesScrapRequirementDetail'], |
| | | tableKeys: ['sparesScrapRequirementDetail'], |
| | | activeKey: 'sparesScrapRequirementDetail', |
| | | // è®¾å¤æ¥åºæç»è¡¨ |
| | | sparesScrapRequirementDetailTable: { |
| | | loading: false, |
| | | dataSource: [], |
| | | columns: [ |
| | | { |
| | | title: 'å¤ä»¶ç¼ç ', |
| | | key: 'spareNum', |
| | | fixed: 'left', |
| | | align: 'center', |
| | | type: JVXETypes.normal, |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '' |
| | | }, |
| | | { |
| | | title: 'å¤ä»¶åç§°', |
| | | key: 'spareName', |
| | | align: 'center', |
| | | fixed: 'left', |
| | | type: JVXETypes.normal, |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '' |
| | | }, |
| | | { |
| | | title: 'åå·', |
| | | key: 'model', |
| | | type: JVXETypes.normal, |
| | | align: 'center', |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '' |
| | | }, |
| | | { |
| | | title: 'è§æ ¼', |
| | | key: 'specification', |
| | | type: JVXETypes.normal, |
| | | align: 'center', |
| | | width: '200px', |
| | | 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', |
| | | align:'center', |
| | | type: JVXETypes.normal, |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '' |
| | | }, |
| | | { |
| | | title: 'è¾
åä½', |
| | | key: 'auxiliaryUnitId', |
| | | type: JVXETypes.hidden, |
| | | align:'center', |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '' |
| | | }, */ |
| | | { |
| | | title: '主æ°é', |
| | | key: 'mainQuantity', |
| | | type: JVXETypes.inputNumber, |
| | | align: 'center', |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: 0, |
| | | /* Function({cellValue, row, column}){ |
| | | console.log(cellValue) |
| | | console.log(row) |
| | | console.log(column) |
| | | if (cellValue != null) { |
| | | let conversionRatio = row.conversionRatio |
| | | console.log(conversionRatio) |
| | | row.auxiliaryQuantity = Math.abs(cellValue * conversionRatio) |
| | | |
| | | } |
| | | console.log(cellValue) |
| | | 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', |
| | | type: JVXETypes.normal, |
| | | width: '200px', |
| | | align:'center', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: 0 |
| | | }, */ |
| | | { |
| | | title: 'å¤ä»¶id', |
| | | key: 'sparePartId', |
| | | type: JVXETypes.hidden, |
| | | align: 'center', |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '' |
| | | }, |
| | | { |
| | | title: 'æ¢ç®æ¯ä¾', |
| | | key: 'conversionRatio', |
| | | type: JVXETypes.hidden, |
| | | align: 'center', |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '' |
| | | }, |
| | | |
| | | { |
| | | title: 'éæ±æ¥æ', |
| | | key: 'requirementTime', |
| | | type: JVXETypes.date, |
| | | align: 'center', |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '', |
| | | validateRules: [ |
| | | { |
| | | required: true, |
| | | message: '请è¾å
¥${title}' |
| | | } |
| | | ] |
| | | } |
| | | |
| | | ] |
| | | }, |
| | | url: { |
| | | add: '/spare/sparePartRequirement/add', |
| | | edit: '/spare/sparePartRequirement/edit', |
| | | queryById: '/spare/sparePartRequirement/queryById', |
| | | loadOptions: '/sys/sysDepart/loadDepartTreeOptions', |
| | | getSysDeparts: '/eam/equipment/getSysDeparts', |
| | | getNum: '/eam/sysIdentity/getNumNew', |
| | | sparesScrapRequirementDetail: { |
| | | list: '/spare/sparePartRequirement/querySparesScrapRequirementDetailByMainId' |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | props: { |
| | | //表åç¦ç¨ |
| | | disabled: { |
| | | type: Boolean, |
| | | default: false, |
| | | required: false |
| | | } |
| | | }, |
| | | computed: { |
| | | formDisabled() { |
| | | return this.disabled |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.$bus.$on('selectionRows', (data) => { |
| | | // å¢å éä¸ç设å¤å°åè¡¨ä¸ |
| | | this.addSelectedEquipments(data) |
| | | |
| | | }) |
| | | this.$bus.$on('dataSource', (data) => { |
| | | // å¢å éä¸ç设å¤å°åè¡¨ä¸ |
| | | this.addSelectedEquipments(data) |
| | | |
| | | }) |
| | | }, |
| | | created() { |
| | | this.initOptions() |
| | | this.initNum() |
| | | }, |
| | | methods: { |
| | | |
| | | /* edit(record) { |
| | | this.form.resetFields(); |
| | | this.model = Object.assign({}, record); |
| | | this.visible = true; |
| | | this.disableSubmit = false; |
| | | this.auxiliaryUnits = record.auxiliaryUnits |
| | | this.$nextTick(() => { |
| | | this.form.setFieldsValue(pick(this.model, |
| | | 'num', |
| | | 'name', |
| | | 'specification', |
| | | 'model', |
| | | 'constructorId', |
| | | 'mainUnitId', |
| | | 'auxiliaryUnitId', |
| | | 'conversionRatio', |
| | | 'validityPeriod', |
| | | 'validityPeriodUnitId', |
| | | 'inventoryUpperLimit', |
| | | 'inventoryLowerLimit', |
| | | 'economicOrderQuantity', |
| | | 'purchaseLeadTime', |
| | | 'inventoryWarnLimit', |
| | | 'remark')); |
| | | }); |
| | | if (record.id) { |
| | | this.codeDisable = true; |
| | | } else { |
| | | this.codeDisable = false; |
| | | this.$nextTick(() => { |
| | | getAction(this.url.getNum, { type: 'SparePart', length: '4' }).then((res) => { |
| | | if (res.success) { |
| | | this.form.setFieldsValue({ num: res.message }); |
| | | } |
| | | }) |
| | | }); |
| | | } |
| | | }, */ |
| | | |
| | | 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.sparesScrapRequirementDetail.getTableData() |
| | | |
| | | let deleteData = this.$refs.sparesScrapRequirementDetail.getDeleteData() |
| | | console.log(tableData) |
| | | for (let i = 0; i < tableData.length; i++) { |
| | | |
| | | ids.push(tableData[i].sparePartId) |
| | | } |
| | | this.$refs.SparesSelectModal.showModals(ids) |
| | | this.$refs.SparesSelectModal.title = 'éæ©å¤ä»¶' |
| | | this.$refs.SparesSelectModal.disableSubmit = false |
| | | }, |
| | | |
| | | /* selectNewEquipmentList() { |
| | | this.$refs.SpareRequirementSelecModal.add() |
| | | this.$refs.SpareRequirementSelecModal.title = 'æ°å¢å¤ä»¶' |
| | | this.$refs.SpareRequirementSelecModal.disableSubmit = false |
| | | },*/ |
| | | |
| | | |
| | | addSelectedEquipments(data) { |
| | | let tableData = this.$refs.sparesScrapRequirementDetail.getTableData() |
| | | var tableStr = JSON.stringify(tableData) |
| | | const addRows = [] |
| | | for (let i = 0; i < data.length; i++) { |
| | | var sparesScrapRequirementDetail = {} |
| | | if (tableStr.indexOf(data[i].id) == -1) { |
| | | sparesScrapRequirementDetail = { |
| | | sparePartId: data[i].id, |
| | | spareNum: data[i].num, |
| | | spareName: data[i].name, |
| | | 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, |
| | | requirementTime: data[i].requirementTime, |
| | | conversionRatio: data[i].conversionRatio |
| | | |
| | | } |
| | | } |
| | | addRows.push(sparesScrapRequirementDetail) |
| | | } |
| | | this.$refs.sparesScrapRequirementDetail.pushRows(addRows) |
| | | }, |
| | | |
| | | addBefore() { |
| | | this.sparesScrapRequirementDetailTable.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.sparesScrapRequirementDetail.list, params, this.sparesScrapRequirementDetailTable) |
| | | } |
| | | }, |
| | | //æ ¡éªææä¸å¯¹ä¸å表表å |
| | | validateSubForm(allValues) { |
| | | let tableData = this.$refs.sparesScrapRequirementDetail.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, // å±å¼ |
| | | sparePartRequirementDeatilList: 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.auxiliaryQuantity=Math.abs(target.row.conversionRatio*target.row.mainQuantity) |
| | | } |
| | | } */ |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | </style> |