From d53fc70e109dc36794cb592a228f96e7181755e2 Mon Sep 17 00:00:00 2001 From: qushaowei <qushaowei@163.com> Date: 星期四, 05 六月 2025 17:46:17 +0800 Subject: [PATCH] 备件借用归还 --- src/views/eam/spare/modules/EamSparePartReceive/EamSparePartReceiveModal.vue | 390 ++++++++++++++++++------- src/views/eam/spare/EamSparePartReceiveList.vue | 254 ++++++++++++++-- src/views/eam/spare/modules/EamSparePartReceive/EamSparePartReceiveDetailList.vue | 185 ++++++++++++ src/views/eam/spare/modules/EamSparePartRequisition/EamSparePartRequisitionModal.vue | 20 + src/views/eam/spare/modules/EamSpareParts/EamSparePartIntoModal.vue | 20 + 5 files changed, 716 insertions(+), 153 deletions(-) diff --git a/src/views/eam/spare/EamSparePartReceiveList.vue b/src/views/eam/spare/EamSparePartReceiveList.vue index fc30b5b..80b1766 100644 --- a/src/views/eam/spare/EamSparePartReceiveList.vue +++ b/src/views/eam/spare/EamSparePartReceiveList.vue @@ -15,24 +15,11 @@ :md="8" :sm="24" > - <a-form-item label="鍒犻櫎鏍囪"> - <a-input - placeholder="璇疯緭鍏ュ垹闄ゆ爣璁�" - v-model="queryParam.delFlag" - ></a-input> - </a-form-item> - </a-col> - <a-col - :xl="6" - :lg="7" - :md="8" - :sm="24" - > <a-form-item label="棰嗙敤鍗曠紪鐮�"> <a-input placeholder="璇疯緭鍏ラ鐢ㄥ崟缂栫爜" v-model="queryParam.receiveCode" - ></a-input> + /> </a-form-item> </a-col> <template v-if="toggleSearchStatus"> @@ -55,24 +42,19 @@ :md="8" :sm="24" > - <a-form-item label="棰嗙敤浜嬬敱"> - <a-input - placeholder="璇疯緭鍏ラ鐢ㄤ簨鐢�" - v-model="queryParam.receiveReason" - ></a-input> - </a-form-item> - </a-col> - <a-col - :xl="6" - :lg="7" - :md="8" - :sm="24" - > <a-form-item label="棰嗙敤鐘舵��"> - <a-input + <!-- <a-input placeholder="璇疯緭鍏ラ鐢ㄧ姸鎬�" v-model="queryParam.receiveStatus" - ></a-input> + ></a-input> --> + <j-dict-select-tag + allow-clear + :disabled="false" + placeholder="璇烽�夋嫨棰嗙敤鐘舵��" + :triggerChange="true" + dictCode="receive_status" + v-model="queryParam.receiveStatus" + /> </a-form-item> </a-col> </template> @@ -118,7 +100,7 @@ type="primary" icon="plus" >鏂板</a-button> - <a-button + <!-- <a-button type="primary" icon="download" @click="handleExportXls('澶囧搧澶囦欢棰嗙敤鍗�')" @@ -135,7 +117,7 @@ type="primary" icon="import" >瀵煎叆</a-button> - </a-upload> + </a-upload> --> <a-dropdown v-if="selectedRowKeys.length > 0"> <a-menu slot="overlay"> <a-menu-item @@ -172,16 +154,46 @@ class="j-table-force-nowrap" :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" @change="handleTableChange" + :customRow='clickThenSelect' > <span slot="action" slot-scope="text, record" > - <a @click="handleEdit(record)">缂栬緫</a> + <a + v-show="record.receiveStatus === '1'" + @click="handleEdit(record)" + >缂栬緫</a> <a-divider type="vertical" /> - <a-dropdown> + <a-popconfirm + title="纭畾鍒犻櫎鍚�?" + @confirm="() => handleDelete(record.id)" + > + <a v-show="record.receiveStatus === '1'">鍒犻櫎</a> + </a-popconfirm> + <a-divider type="vertical" /> + <a + v-show="record.receiveStatus === '1'" + @click="handleSubmit(record)" + >鎻愪氦</a> + <a-divider type="vertical" /> + <a + v-show="record.receiveStatus === '2'" + @click="handleConfirm(record)" + >纭</a> + <a-divider type="vertical" /> + <a + v-show="record.receiveStatus === '3' && record.giveBackFlag === 'yes'" + @click="handleReturn(record)" + >褰掕繕</a> + <a-divider type="vertical" /> + <a + v-show="record.receiveStatus === '4' && record.giveBackFlag === 'yes'" + @click="handleReturnConfirm(record)" + >褰掕繕纭</a> + <!-- <a-dropdown> <a class="ant-dropdown-link">鏇村 <a-icon type="down" /></a> <a-menu slot="overlay"> <a-menu-item> @@ -193,10 +205,23 @@ </a-popconfirm> </a-menu-item> </a-menu> - </a-dropdown> + </a-dropdown> --> </span> </a-table> + <a-tabs defaultActiveKey="1"> + <a-tab-pane + tab='澶囦欢棰嗙敤鏄庣粏' + key="1" + > + <div + class="table-operator" + style="margin:-16px" + > + <eamSparePartReceive-Detail-list :sparePartReceiveId='sparePartReceiveId' /> + </div> + </a-tab-pane> + </a-tabs> </div> <!-- table鍖哄煙-end --> @@ -211,17 +236,22 @@ <script> import '@assets/less/TableExpand.less' import EamSparePartReceiveModal from './modules/EamSparePartReceive/EamSparePartReceiveModal.vue' +import EamSparePartReceiveDetailList from './modules/EamSparePartReceive/EamSparePartReceiveDetailList.vue' import { JeecgListMixin } from '@/mixins/JeecgListMixin' +import { deleteAction, getAction, postAction } from '@api/manage' export default { name: "EamSparePartReceiveList", mixins: [JeecgListMixin], components: { - EamSparePartReceiveModal + EamSparePartReceiveModal, + EamSparePartReceiveDetailList }, data() { return { description: '澶囧搧澶囦欢棰嗙敤鍗曠鐞嗛〉闈�', + sparePartReceiveId: "-1", + dataSource: [], // 琛ㄥご columns: [ { @@ -233,11 +263,6 @@ customRender: function (t, r, index) { return parseInt(index) + 1; } - }, - { - title: '鍒犻櫎鏍囪', - align: "center", - dataIndex: 'delFlag' }, { title: '棰嗙敤鍗曠紪鐮�', @@ -257,12 +282,12 @@ { title: '棰嗙敤鐘舵��', align: "center", - dataIndex: 'receiveStatus' + dataIndex: 'receiveStatus_dictText' }, { - title: '鏄惁闇�瑕佸綊杩�;鏄細瀛樺湪褰掕繕鍔ㄤ綔锛屽惁锛氱洿鎺ュ畬鎴�', + title: '鏄惁闇�瑕佸綊杩�', align: "center", - dataIndex: 'giveBackFlag' + dataIndex: 'giveBackFlag_dictText' }, { title: '瀹℃牳浜�', @@ -292,6 +317,10 @@ deleteBatch: "/eam/eamSparePartReceive/deleteBatch", exportXlsUrl: "eam/eamSparePartReceive/exportXls", importExcelUrl: "eam/eamSparePartReceive/importExcel", + submit: "eam/eamSparePartReceive/submit", + confirm: "eam/eamSparePartReceive/confirm", + return: "eam/eamSparePartReceive/return", + returnConfirm: "eam/eamSparePartReceive/returnConfirm", }, } }, @@ -302,6 +331,145 @@ }, methods: { + searchReset() { + this.queryParam = {} + this.onClearSelected() + this.loadData(1); + }, + searchQuery() { + this.onClearSelected() + this.loadData(1); + }, + + clickThenSelect(record) { + return { + on: { + click: () => { + this.onSelectChange(record.id.split(','), [record]) + } + } + } + }, + onClearSelected() { + this.selectedRowKeys = [] + this.selectionRows = [] + this.sparePartReceiveId = '-1' + }, + onSelectChange(selectedRowKeys, selectionRows) { + if (selectedRowKeys.length == 1) { + this.sparePartReceiveId = selectionRows[0]['id'] + } else { + this.sparePartReceiveId = '-1' + } + this.selectedRowKeys = selectedRowKeys + this.selectionRows = selectionRows + }, + + handleSubmit(record) { + if (!this.url.submit) { + this.$message.error('璇疯缃畊rl.submit灞炴��!') + return + } + var that = this + this.$confirm({ + title: '纭鎻愪氦', + content: '纭畾鎻愪氦鍚�?', + onOk: function () { + that.loading = true; + postAction(that.url.submit, record).then((res) => { + if (res.success) { + that.$message.success(res.message) + that.loadData() + } else { + that.$message.warning(res.message) + } + that.loading = false + }).finally(() => { + that.loading = false; + }); + } + }) + }, + + handleConfirm(record) { + if (!this.url.confirm) { + this.$message.error('璇疯缃畊rl.confirm灞炴��!') + return + } + var that = this + this.$confirm({ + title: '纭棰嗗彇', + content: '纭畾棰嗗彇澶囦欢鍚�?', + onOk: function () { + that.loading = true; + postAction(that.url.confirm, record).then((res) => { + if (res.success) { + that.$message.success(res.message) + that.loadData() + } else { + that.$message.warning(res.message) + } + that.loading = false + }).finally(() => { + that.loading = false; + }); + } + }) + }, + + handleReturn(record) { + if (!this.url.return) { + this.$message.error('璇疯缃畊rl.return灞炴��!') + return + } + var that = this + this.$confirm({ + title: '澶囦欢褰掕繕', + content: '纭畾褰掕繕澶囦欢鍚�?', + onOk: function () { + that.loading = true; + postAction(that.url.return, record).then((res) => { + if (res.success) { + that.$message.success(res.message) + that.loadData() + } else { + that.$message.warning(res.message) + } + that.loading = false + }).finally(() => { + that.loading = false; + }); + } + }) + }, + + + handleReturnConfirm(record) { + if (!this.url.returnConfirm) { + this.$message.error('璇疯缃畊rl.returnConfirm灞炴��!') + return + } + var that = this + this.$confirm({ + title: '澶囦欢褰掕繕纭', + content: '纭畾澶囦欢褰掕繕鍚�?', + onOk: function () { + that.loading = true; + postAction(that.url.returnConfirm, record).then((res) => { + if (res.success) { + that.$message.success(res.message) + that.loadData() + } else { + that.$message.warning(res.message) + } + that.loading = false + }).finally(() => { + that.loading = false; + }); + } + }) + }, + } } </script> diff --git a/src/views/eam/spare/modules/EamSparePartReceive/EamSparePartReceiveDetailList.vue b/src/views/eam/spare/modules/EamSparePartReceive/EamSparePartReceiveDetailList.vue new file mode 100644 index 0000000..0e21cb5 --- /dev/null +++ b/src/views/eam/spare/modules/EamSparePartReceive/EamSparePartReceiveDetailList.vue @@ -0,0 +1,185 @@ +<template> + <a-card + :bordered="false" + :class="'cust-erp-sub-tab'" + > + <!-- 鏌ヨ鍖哄煙 --> + <div class="table-page-search-wrapper"> + <a-form + layout="inline" + @keyup.enter.native="searchQuery" + > + <a-row :gutter="24"> + </a-row> + </a-form> + </div> + <div> + <a-table + ref="table" + size="middle" + bordered + rowKey="id" + :scroll="{x:true}" + :columns="columns" + :dataSource="dataSource" + :pagination="ipagination" + :loading="loading" + @change="handleTableChange" + > + + </a-table> + </div> + + </a-card> +</template> + +<script> +import { JeecgListMixin } from '@/mixins/JeecgListMixin' +import { getAction } from '@/api/manage' +import Tooltip from 'ant-design-vue/es/tooltip' +import { ACCESS_TOKEN } from '@/store/mutation-types' +import Vue from 'vue' +import { getFileAccessHttpUrl } from '@/api/manage'; + +export default { + name: "EamSparePartInventoryList", + mixins: [JeecgListMixin], + components: { + Tooltip, + }, + props: { + sparePartReceiveId: { + type: String, + default: '-1', + required: false + } + }, + watch: { + sparePartReceiveId: { + immediate: true, + handler(val) { + if (!this.sparePartReceiveId) { + this.clearList() + } else { + this.queryParam['sparePartReceiveId'] = val; + this.loadData(1); + } + } + } + }, + data() { + return { + // 琛ㄥご + columns: [ + { + title: '#', + dataIndex: '', + key: 'rowIndex', + width: 60, + align: "center", + customRender: function (t, r, index) { + return parseInt(index) + 1; + } + }, + { + title: '澶囦欢缂栫爜', + align: "center", + dataIndex: 'partCode' + }, + { + title: '澶囦欢鍚嶇О', + align: "center", + dataIndex: 'partName' + }, + { + title: '澶囦欢鍨嬪彿', + align: "center", + dataIndex: 'partModel' + }, + { + title: '澶囦欢瑙勬牸', + align: "center", + dataIndex: 'partSpecification' + }, + + { + title: '棰嗙敤/褰掕繕鏁伴噺', + align: "center", + dataIndex: 'receiveNum' + }, + // { + // title: '鎿嶄綔', + // dataIndex: 'action', + // align: "center", + // scopedSlots: { customRender: 'action' }, + // } + ], + url: { + list: "/eam/eamSparePartReceiveDetail/list", + delete: "/eam/eamSparePartInventory/delete", + deleteBatch: "/eam/eamSparePartInventory/deleteBatch", + exportXlsUrl: "eam/eamSparePartInventory/exportXls", + importExcelUrl: "eam/eamSparePartInventory/importExcel", + }, + /* 鍒嗛〉鍙傛暟 */ + ipagination: { + current: 1, + pageSize: 20, + pageSizeOptions: ['5', '10', '20', '50'], + showTotal: (total, range) => { + return range[0] + '-' + range[1] + ' 鍏�' + total + '鏉�' + }, + showQuickJumper: true, + showSizeChanger: true, + total: 0 + }, + } + }, + created() { + }, + computed: { + }, + methods: { + clearList() { + this.dataSource = [] + this.selectedRowKeys = [] + this.ipagination.current = 1 + }, + loadData(arg) { + if (!this.url.list) { + this.$message.error("璇疯缃畊rl.list灞炴��!") + return + } + //鍔犺浇鏁版嵁 鑻ヤ紶鍏ュ弬鏁�1鍒欏姞杞界涓�椤电殑鍐呭 + if (arg === 1) { + this.ipagination.current = 1; + } + var params = this.getQueryParams();//鏌ヨ鏉′欢 + this.loading = true; + // this.originTargetKeys = []; + getAction(this.url.list, params).then((res) => { + if (res.success) { + // for (let i = 0; i < res.result.records.length; i++) { + // let r = res.result.records[i].upload; + // r.src = this.getSrc(res.result.records[i].upload); + // } + this.dataSource = res.result.records || res.result; + if (res.result.total) { + this.ipagination.total = res.result.total; + } else { + this.ipagination.total = 0; + } + //update-end---author:zhangyafei Date:20201118 for锛氶�傞厤涓嶅垎椤电殑鏁版嵁鍒楄〃------------ + } else { + this.$message.warning(res.message) + } + }).finally(() => { + this.loading = false + }) + }, + } +} +</script> +<style scoped> +@import '~@assets/less/common.less'; +</style> diff --git a/src/views/eam/spare/modules/EamSparePartReceive/EamSparePartReceiveModal.vue b/src/views/eam/spare/modules/EamSparePartReceive/EamSparePartReceiveModal.vue index e895e2d..1c5e9e1 100644 --- a/src/views/eam/spare/modules/EamSparePartReceive/EamSparePartReceiveModal.vue +++ b/src/views/eam/spare/modules/EamSparePartReceive/EamSparePartReceiveModal.vue @@ -1,135 +1,305 @@ <template> <j-modal :title="title" - :width="800" + :width="1000" :visible="visible" :confirmLoading="confirmLoading" switchFullscreen + centered + :mask-closable="false" @ok="handleOk" @cancel="handleCancel" - cancelText="鍏抽棴"> + cancelText="鍏抽棴" + > - <a-spin :spinning="confirmLoading"> - <a-form-model ref="form" :model="model" :rules="validatorRules"> + <a-spin :spinning="spinning"> + <a-form-model + ref="form" + :model="model" + :rules="validatorRules" + > + <!-- :labelCol="labelCol" + :wrapperCol="wrapperCol" --> + <a-row :gutter="24"> + <a-col :span="12"> + <a-form-model-item + :labelCol="labelCol" + :wrapperCol="wrapperCol" + prop="receiveCode" + label="璇疯喘鍗曠紪鐮�" + > + <a-input + placeholder="璇疯喘鍗曠紪鐮佽嚜鍔ㄧ敓鎴�" + v-model="model.receiveCode" + :disabled="true" + /> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item + :labelCol="labelCol" + :wrapperCol="wrapperCol" + prop="giveBackFlag" + label="鏄惁闇�瑕佸綊杩�" + > + <j-dict-select-tag + allow-clear + :disabled="false" + placeholder="璇烽�夋嫨鏄惁闇�瑕佸綊杩�" + :triggerChange="true" + dictCode="give_back_flag" + v-model="model.giveBackFlag" + /> + </a-form-model-item> + </a-col> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="delFlag" label="鍒犻櫎鏍囪"> - <a-input-number v-model="model.delFlag"/> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="receiveCode" label="棰嗙敤鍗曠紪鐮�"> - <a-input placeholder="璇疯緭鍏ラ鐢ㄥ崟缂栫爜" v-model="model.receiveCode" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="receiveUser" label="棰嗙敤浜�"> - <a-input placeholder="璇疯緭鍏ラ鐢ㄤ汉" v-model="model.receiveUser" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="receiveReason" label="棰嗙敤浜嬬敱"> - <a-input placeholder="璇疯緭鍏ラ鐢ㄤ簨鐢�" v-model="model.receiveReason" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="receiveStatus" label="棰嗙敤鐘舵��"> - <a-input placeholder="璇疯緭鍏ラ鐢ㄧ姸鎬�" v-model="model.receiveStatus" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="giveBackFlag" label="鏄惁闇�瑕佸綊杩�;鏄細瀛樺湪褰掕繕鍔ㄤ綔锛屽惁锛氱洿鎺ュ畬鎴�"> - <a-input placeholder="璇疯緭鍏ユ槸鍚﹂渶瑕佸綊杩�;鏄細瀛樺湪褰掕繕鍔ㄤ綔锛屽惁锛氱洿鎺ュ畬鎴�" v-model="model.giveBackFlag" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="approvalUser" label="瀹℃牳浜�"> - <a-input placeholder="璇疯緭鍏ュ鏍镐汉" v-model="model.approvalUser" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="approvalTime" label="瀹℃牳鏃堕棿"> - <a-input placeholder="璇疯緭鍏ュ鏍告椂闂�" v-model="model.approvalTime" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark" label="澶囨敞"> - <a-input placeholder="璇疯緭鍏ュ娉�" v-model="model.remark" /> - </a-form-model-item> - + </a-row> + <a-row :gutter="24"> + <a-col :span="24"> + <a-form-model-item + :labelCol="{xs: { span: 24 }, sm: { span: 3 }}" + :wrapperCol="{xs: { span: 24 },sm: { span: 21 }}" + prop="receiveReason" + label="棰嗙敤浜嬬敱" + > + <a-textarea + placeholder="璇疯緭鍏ラ鐢ㄤ簨鐢�" + v-model="model.receiveReason" + /> + </a-form-model-item> + </a-col> + </a-row> + <a-row :gutter="24"> + <a-col :span="24"> + <a-form-model-item + :labelCol="{xs: { span: 24 }, sm: { span: 3 }}" + :wrapperCol="{xs: { span: 24 },sm: { span: 21 }}" + prop="remark" + label="澶囨敞" + > + <a-textarea + placeholder="璇疯緭鍏ュ娉�" + v-model="model.remark" + /> + </a-form-model-item> + </a-col> + </a-row> + <a-row :gutter="24"> + <j-vxe-table + ref="editableDetailTable" + :rowNumber="true" + :rowSelection="true" + :bordered="true" + :alwaysEdit="true" + :toolbar="true" + keep-source + :height="300" + :loading="detail.loading" + :dataSource="detail.dataSource" + :columns="detail.columns" + style="margin-top: 8px;" + /> + </a-row> </a-form-model> </a-spin> </j-modal> </template> <script> - import { httpAction } from '@api/manage' - import moment from "moment" +import { getAction, httpAction } from '@/api/manage' +import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js' +import { JVXETypes } from '@/components/jeecg/JVxeTable' - export default { - name: "EamSparePartReceiveModal", - data () { - return { - title:"鎿嶄綔", - visible: false, - model: {}, - labelCol: { - xs: { span: 24 }, - sm: { span: 5 }, - }, - wrapperCol: { - xs: { span: 24 }, - sm: { span: 16 }, - }, +export default { + name: 'EamSparePartReceiveModal', + mixins: [JVxeTableModelMixin], + components: {}, + data() { + return { + title: '鎿嶄綔', + visible: false, + model: {}, + labelCol: { + xs: { span: 24 }, + sm: { span: 6 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 18 } + }, + confirmLoading: false, + spinning: false, + disabled: false, + validatorRules: { + giveBackFlag: [ + { required: true, message: '璇烽�夋嫨褰掕繕鏉′欢锛�' } + ] + }, + url: { + add: '/eam/eamSparePartReceive/add', + edit: '/eam/eamSparePartReceive/edit', + // add: "/eam/eamSparePartRequisition/add", + // edit: "/eam/eamSparePartRequisition/edit", + getDetails: "/eam/eamSparePartRequisitionDetail/list", + generateRequisitionCode: "sys/sysBusinessCodeRule/generateBusinessCodeSeq" + }, + detail: { + loading: false, + dataSource: [], + columns: [ + { + title: '澶囦欢', + key: 'partId', + type: JVXETypes.select, + width: '30%', + align: 'center', + dictCode: 'eam_spare_parts,part_name,id, del_flag!=\'1\'', + validateRules: [ + { required: true, message: '澶囦欢涓嶈兘涓虹┖锛�' }, + ], + }, + { + title: '棰嗙敤鏁伴噺', + key: 'receiveNum', + type: JVXETypes.inputNumber, + width: '30%', + align: 'center', + validateRules: [ + { required: true, message: '鏁伴噺涓嶈兘涓虹┖锛�' }, + ] + }, - confirmLoading: false, - validatorRules:{ - }, - url: { - add: "/eam/eamSparePartReceive/add", - edit: "/eam/eamSparePartReceive/edit", - }, + ] + } + } + }, + created() { + }, + methods: { + add() { + + const that = this + this.visible = true; + let params = { + businessCode: "SparePartReceive" + } + getAction(that.url.generateRequisitionCode, params).then((res) => { + if (res.success) { + this.model = { + receiveCode: res.result + } + } else { + that.$message.warning(res.message); + } + }) + //鍒濆鍖栭粯璁ゅ�� + that.edit(this.model); + }, + edit(record) { + this.model = Object.assign({}, record); + this.detail.dataSource = record.sparePartReceiveDetails + this.visible = true; + }, + + async handleOk() { + const that = this + let errMap = await that.$refs.editableDetailTable.validateTable() + if (errMap) { + this.$message.warning('鏁版嵁鏍¢獙澶辫触锛�') + return + } + let tableData = that.$refs.editableDetailTable.getTableData() + if (tableData.length == 0) { + this.$message.warning('璇烽�夋嫨澶囦欢棰嗙敤淇℃伅锛�') + return + } + + for (var i = 0; i < tableData.length; i++) { + let count = 0; + tableData.forEach(row => { + if (row.partId === tableData[i].partId) { + count++; + } + }); + // 濡傛灉閲嶅娆℃暟澶т簬1锛岃鏄庢湁閲嶅 + if (count > 1) { + this.$message.warning('閫夋嫨鐨勫浠朵笉鑳介噸澶嶏紒') + return + } + } + + + // 瑙﹀彂琛ㄥ崟楠岃瘉 + this.$refs.form.validate(valid => { + if (valid) { + let tableData = that.$refs.editableDetailTable.getTableData() + let removeData = that.$refs.editableDetailTable.getDeleteData() + that.model.sparePartReceiveDetails = [...tableData] + that.model.removeDetailList = [...removeData] + + that.confirmLoading = that.spinning = true + let httpurl = '' + let method = '' + if (!this.model.id) { + httpurl += this.url.add + method = 'post' + } else { + httpurl += this.url.edit + method = 'put' + } + httpAction(httpurl, this.model, method).then((res) => { + + if (res.success) { + that.$message.success(res.message) + that.$emit('ok') + that.close() + } else { + that.$message.warning(res.message) + } + }).finally(() => { + that.confirmLoading = that.spinning = false + }) + } else { + return false + } + }) + }, + + + + handleCancel() { + this.close() + }, + + close() { + this.$emit('close') + this.visible = false + this.$refs.form.clearValidate() + }, + checkUniqueName(rule, value, callback) { + + // if (!value) { + // return callback(); // 绌哄�肩敱required瑙勫垯鏍¢獙 + // } + + // 鑾峰彇褰撳墠琛ㄦ牸鏁版嵁 + let tableData = this.$refs.editableDetailTable.getTableData() + // 璁$畻閲嶅娆℃暟锛堜笉鍖呮嫭褰撳墠琛岋級 + let count = 0; + tableData.forEach(row => { + if (row.partId === rule.cellValue) { + count++; + } + }); + // 濡傛灉閲嶅娆℃暟澶т簬1锛岃鏄庢湁閲嶅 + if (count > 1) { + this.$message.warning('閫夋嫨鐨勫浠朵笉鑳介噸澶嶏紒') + return } }, - created () { - }, - methods: { - add () { - //鍒濆鍖栭粯璁ゅ�� - this.edit({}); - }, - edit (record) { - this.model = Object.assign({}, record); - this.visible = true; - }, - close () { - this.$emit('close'); - this.visible = false; - this.$refs.form.clearValidate(); - }, - handleOk () { - const that = this; - // 瑙﹀彂琛ㄥ崟楠岃瘉 - this.$refs.form.validate(valid => { - if (valid) { - that.confirmLoading = true; - let httpurl = ''; - let method = ''; - if(!this.model.id){ - httpurl+=this.url.add; - method = 'post'; - }else{ - httpurl+=this.url.edit; - method = 'put'; - } - httpAction(httpurl,this.model,method).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(); - }) - }else{ - return false; - } - }) - }, - handleCancel () { - this.close() - }, - - - } } +} </script> <style lang="less" scoped> - </style> \ No newline at end of file diff --git a/src/views/eam/spare/modules/EamSparePartRequisition/EamSparePartRequisitionModal.vue b/src/views/eam/spare/modules/EamSparePartRequisition/EamSparePartRequisitionModal.vue index 13ab68f..cdae5fe 100644 --- a/src/views/eam/spare/modules/EamSparePartRequisition/EamSparePartRequisitionModal.vue +++ b/src/views/eam/spare/modules/EamSparePartRequisition/EamSparePartRequisitionModal.vue @@ -183,6 +183,26 @@ this.$message.warning('鏁版嵁鏍¢獙澶辫触锛�') return } + + let tableData = that.$refs.editableDetailTable.getTableData() + if (tableData.length == 0) { + this.$message.warning('璇烽�夋嫨澶囦欢淇℃伅锛�') + return + } + + for (var i = 0; i < tableData.length; i++) { + let count = 0; + tableData.forEach(row => { + if (row.partId === tableData[i].partId) { + count++; + } + }); + // 濡傛灉閲嶅娆℃暟澶т簬1锛岃鏄庢湁閲嶅 + if (count > 1) { + this.$message.warning('閫夋嫨鐨勫浠朵笉鑳介噸澶嶏紒') + return + } + } // 瑙﹀彂琛ㄥ崟楠岃瘉 this.$refs.form.validate(valid => { if (valid) { diff --git a/src/views/eam/spare/modules/EamSpareParts/EamSparePartIntoModal.vue b/src/views/eam/spare/modules/EamSpareParts/EamSparePartIntoModal.vue index 33b41a5..6b29c95 100644 --- a/src/views/eam/spare/modules/EamSpareParts/EamSparePartIntoModal.vue +++ b/src/views/eam/spare/modules/EamSpareParts/EamSparePartIntoModal.vue @@ -178,6 +178,26 @@ this.$message.warning('鏁版嵁鏍¢獙澶辫触锛�') return } + + let tableData = that.$refs.editableDetailTable.getTableData() + if (tableData.length == 0) { + this.$message.warning('璇烽�夋嫨澶囦欢鍏ュ簱鏄庣粏锛�') + return + } + + for (var i = 0; i < tableData.length; i++) { + let count = 0; + tableData.forEach(row => { + if (row.sparePartId === tableData[i].sparePartId) { + count++; + } + }); + // 濡傛灉閲嶅娆℃暟澶т簬1锛岃鏄庢湁閲嶅 + if (count > 1) { + this.$message.warning('閫夋嫨鐨勫浠朵笉鑳介噸澶嶏紒') + return + } + } // 瑙﹀彂琛ㄥ崟楠岃瘉 this.$refs.form.validate(valid => { if (valid) { -- Gitblit v1.9.3