From 4f551d4c40d7c37a8e4f62b9deb43b3991c88a42 Mon Sep 17 00:00:00 2001 From: qushaowei <qushaowei@163.com> Date: 星期五, 06 六月 2025 15:30:56 +0800 Subject: [PATCH] 备件报废 --- /dev/null | 132 ----------- src/views/eam/spare/modules/EamSparePartScrap/EamSparePartScrapModal.vue | 188 +++++++++++++++ src/views/eam/spare/EamSparePartScrapList.vue | 358 +++++++++++++++++++---------- 3 files changed, 418 insertions(+), 260 deletions(-) diff --git a/src/views/eam/spare/EamSparePartScrapList.vue b/src/views/eam/spare/EamSparePartScrapList.vue index 6ed3c89..66441ff 100644 --- a/src/views/eam/spare/EamSparePartScrapList.vue +++ b/src/views/eam/spare/EamSparePartScrapList.vue @@ -3,43 +3,67 @@ <!-- 鏌ヨ鍖哄煙 --> <div class="table-page-search-wrapper"> - <a-form layout="inline" @keyup.enter.native="searchQuery"> + <a-form + layout="inline" + @keyup.enter.native="searchQuery" + > <a-row :gutter="24"> - - <a-col :xl="6" :lg="7" :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-col + :xl="6" + :lg="7" + :md="8" + :sm="24" + > <a-form-item label="鍗曟嵁鍙�"> - <a-input placeholder="璇疯緭鍏ュ崟鎹彿" v-model="queryParam.scrapCode"></a-input> + <a-input + placeholder="璇疯緭鍏ュ崟鎹彿" + v-model="queryParam.scrapCode" + ></a-input> </a-form-item> </a-col> - <template v-if="toggleSearchStatus"> - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="搴撳瓨ID"> - <a-input placeholder="璇疯緭鍏ュ簱瀛業D" v-model="queryParam.inventoryId"></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.scrapReason"></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.scrapNum"></a-input> - </a-form-item> - </a-col> + <template v-if="toggleSearchStatus"> + <a-col + :xl="6" + :lg="7" + :md="8" + :sm="24" + > + <a-form-item label="澶囦欢鍚嶇О"> + <a-input + placeholder="璇疯緭鍏ュ浠跺悕绉�" + v-model="queryParam.partName" + ></a-input> + </a-form-item> + </a-col> + </template> - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> - <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> - <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button> - <a @click="handleToggleSearch" style="margin-left: 8px"> + <a-col + :xl="6" + :lg="7" + :md="8" + :sm="24" + > + <span + style="float: left;overflow: hidden;" + class="table-page-search-submitButtons" + > + <a-button + type="primary" + @click="searchQuery" + icon="search" + >鏌ヨ</a-button> + <a-button + type="primary" + @click="searchReset" + icon="reload" + style="margin-left: 8px" + >閲嶇疆</a-button> + <a + @click="handleToggleSearch" + style="margin-left: 8px" + > {{ toggleSearchStatus ? '鏀惰捣' : '灞曞紑' }} - <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/> + <a-icon :type="toggleSearchStatus ? 'up' : 'down'" /> </a> </span> </a-col> @@ -50,14 +74,35 @@ <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> <div class="table-operator"> - <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button> - <a-button type="primary" icon="download" @click="handleExportXls('澶囧搧澶囦欢鎶ュ簾')">瀵煎嚭</a-button> - <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> - <a-button type="primary" icon="import">瀵煎叆</a-button> - </a-upload> + <a-button + @click="handleAdd" + type="primary" + icon="plus" + >鏂板</a-button> + <!-- <a-button + type="primary" + icon="download" + @click="handleExportXls('澶囧搧澶囦欢鎶ュ簾')" + >瀵煎嚭</a-button> + <a-upload + name="file" + :showUploadList="false" + :multiple="false" + :headers="tokenHeader" + :action="importExcelUrl" + @change="handleImportExcel" + > + <a-button + type="primary" + icon="import" + >瀵煎叆</a-button> + </a-upload> --> <a-dropdown v-if="selectedRowKeys.length > 0"> <a-menu slot="overlay"> - <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>鍒犻櫎</a-menu-item> + <a-menu-item + key="1" + @click="batchDel" + ><a-icon type="delete" />鍒犻櫎</a-menu-item> </a-menu> <a-button style="margin-left: 8px"> 鎵归噺鎿嶄綔 <a-icon type="down" /></a-button> </a-dropdown> @@ -65,9 +110,15 @@ <!-- table鍖哄煙-begin --> <div> - <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> + <div + class="ant-alert ant-alert-info" + style="margin-bottom: 16px;" + > <i class="anticon anticon-info-circle ant-alert-icon"></i> 宸查�夋嫨 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>椤� - <a style="margin-left: 24px" @click="onClearSelected">娓呯┖</a> + <a + style="margin-left: 24px" + @click="onClearSelected" + >娓呯┖</a> </div> <a-table @@ -81,17 +132,39 @@ :loading="loading" class="j-table-force-nowrap" :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" - @change="handleTableChange"> + @change="handleTableChange" + > - <span slot="action" slot-scope="text, record"> - <a @click="handleEdit(record)">缂栬緫</a> + <span + slot="action" + slot-scope="text, record" + > + <a + v-show="record.scrapStatus === '1'" + @click="handleEdit(record)" + >缂栬緫</a> + + <a-divider type="vertical" /> + <a + v-show="record.scrapStatus === '1'" + @click="handleConfirm(record)" + >瀹℃牳纭</a> <a-divider type="vertical" /> <a-dropdown> - <a class="ant-dropdown-link">鏇村 <a-icon type="down" /></a> - <a-menu slot="overlay"> + <a + v-show="record.scrapStatus === '1'" + class="ant-dropdown-link" + >鏇村 <a-icon type="down" /></a> + <a-menu + v-show="record.scrapStatus === '1'" + slot="overlay" + > <a-menu-item> - <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record.id)"> + <a-popconfirm + title="纭畾鍒犻櫎鍚�?" + @confirm="() => handleDelete(record.id)" + > <a>鍒犻櫎</a> </a-popconfirm> </a-menu-item> @@ -104,102 +177,131 @@ <!-- table鍖哄煙-end --> <!-- 琛ㄥ崟鍖哄煙 --> - <eamSparePartScrap-modal ref="modalForm" @ok="modalFormOk"></eamSparePartScrap-modal> + <eamSparePartScrap-modal + ref="modalForm" + @ok="modalFormOk" + ></eamSparePartScrap-modal> </a-card> </template> <script> - import '@assets/less/TableExpand.less' - import EamSparePartScrapModal from './modules/EamSparePartScrapModal.vue' - import { JeecgListMixin } from '@/mixins/JeecgListMixin' +import '@assets/less/TableExpand.less' +import EamSparePartScrapModal from './modules/EamSparePartScrap/EamSparePartScrapModal.vue' +import { JeecgListMixin } from '@/mixins/JeecgListMixin' +import { deleteAction, getAction, postAction } from '@api/manage' - export default { - name: "EamSparePartScrapList", - mixins:[JeecgListMixin], - components: { - EamSparePartScrapModal - }, - data () { - return { - description: '澶囧搧澶囦欢鎶ュ簾绠$悊椤甸潰', - // 琛ㄥご - columns: [ - { - title: '#', - dataIndex: '', - key:'rowIndex', - width:60, - align:"center", - customRender:function (t,r,index) { - return parseInt(index)+1; - } - }, - { - title: '鍒犻櫎鏍囪', - align:"center", - dataIndex: 'delFlag' - }, - { - title: '鍗曟嵁鍙�', - align:"center", - dataIndex: 'scrapCode' - }, - { - title: '搴撳瓨ID', - align:"center", - dataIndex: 'inventoryId' - }, - { - title: '鎶ュ簾鍘熷洜', - align:"center", - dataIndex: 'scrapReason' - }, - { - title: '鎶ュ簾鏁伴噺', - align:"center", - dataIndex: 'scrapNum' - }, - { - title: '鐢宠浜�', - align:"center", - dataIndex: 'reportUser' - }, - { - title: '瀹℃牳浜�', - align:"center", - dataIndex: 'approvalUser' - }, - { - title: '瀹℃牳鏃堕棿', - align:"center", - dataIndex: 'approvalTime' - }, - { - title: '鎿嶄綔', - dataIndex: 'action', - align:"center", - scopedSlots: { customRender: 'action' }, +export default { + name: "EamSparePartScrapList", + mixins: [JeecgListMixin], + components: { + EamSparePartScrapModal + }, + data() { + return { + description: '澶囧搧澶囦欢鎶ュ簾绠$悊椤甸潰', + // 琛ㄥご + columns: [ + { + title: '#', + dataIndex: '', + key: 'rowIndex', + width: 60, + align: "center", + customRender: function (t, r, index) { + return parseInt(index) + 1; } - ], - url: { - list: "/eam/eamSparePartScrap/list", - delete: "/eam/eamSparePartScrap/delete", - deleteBatch: "/eam/eamSparePartScrap/deleteBatch", - exportXlsUrl: "eam/eamSparePartScrap/exportXls", - importExcelUrl: "eam/eamSparePartScrap/importExcel", - }, + }, + { + title: '鍗曟嵁鍙�', + align: "center", + dataIndex: 'scrapCode' + }, + { + title: '澶囦欢鍚嶇О', + align: "center", + dataIndex: 'partName' + }, + { + title: '澶囦欢鍨嬪彿', + align: "center", + dataIndex: 'partModel' + }, + { + title: '鎶ュ簾鍘熷洜', + align: "center", + dataIndex: 'scrapReason' + }, + { + title: '鎶ュ簾鏁伴噺', + align: "center", + dataIndex: 'scrapNum' + }, + { + title: '鐢宠浜�', + align: "center", + dataIndex: 'reportUser' + }, + { + title: '瀹℃牳浜�', + align: "center", + dataIndex: 'approvalUser' + }, + { + title: '瀹℃牳鏃堕棿', + align: "center", + dataIndex: 'approvalTime' + }, + { + title: '鎿嶄綔', + dataIndex: 'action', + align: "center", + scopedSlots: { customRender: 'action' }, + } + ], + url: { + list: "/eam/eamSparePartScrap/list", + delete: "/eam/eamSparePartScrap/delete", + deleteBatch: "/eam/eamSparePartScrap/deleteBatch", + exportXlsUrl: "eam/eamSparePartScrap/exportXls", + importExcelUrl: "eam/eamSparePartScrap/importExcel", + confirm: "/eam/eamSparePartScrap/confirm", + }, } }, computed: { - importExcelUrl: function(){ + importExcelUrl: function () { return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; } }, - methods: { - - } + methods: { + 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; + }); + } + }) + }, } +} </script> <style scoped> - @import '~@assets/less/common.less'; +@import '~@assets/less/common.less'; </style> \ No newline at end of file diff --git a/src/views/eam/spare/modules/EamSparePartScrap/EamSparePartScrapModal.vue b/src/views/eam/spare/modules/EamSparePartScrap/EamSparePartScrapModal.vue new file mode 100644 index 0000000..85a581b --- /dev/null +++ b/src/views/eam/spare/modules/EamSparePartScrap/EamSparePartScrapModal.vue @@ -0,0 +1,188 @@ +<template> + <j-modal + :title="title" + :width="800" + :visible="visible" + :confirmLoading="confirmLoading" + switchFullscreen + @ok="handleOk" + @cancel="handleCancel" + cancelText="鍏抽棴" + > + + <a-spin :spinning="confirmLoading"> + <a-form-model + ref="form" + :model="model" + :rules="validatorRules" + > + + <a-form-model-item + :labelCol="labelCol" + :wrapperCol="wrapperCol" + prop="scrapCode" + label="鎶ュ簾鍗曞彿" + > + <a-input + placeholder="璇疯緭鍏ユ姤搴熷崟鍙�" + v-model="model.scrapCode" + :disabled="true" + /> + </a-form-model-item> + <a-form-model-item + :labelCol="labelCol" + :wrapperCol="wrapperCol" + prop="sparePartsId" + label="澶囦欢淇℃伅" + > + <j-dict-select-tag + allow-clear + :disabled="false" + placeholder="璇烽�夋嫨澶囦欢淇℃伅" + :triggerChange="true" + dictCode="eam_spare_parts,part_name,id, del_flag!='1'" + v-model="model.sparePartsId" + /> + </a-form-model-item> + + <a-form-model-item + :labelCol="labelCol" + :wrapperCol="wrapperCol" + prop="scrapNum" + label="鎶ュ簾鏁伴噺" + > + <a-input-number + style="width: 100%" + :min="1" + :max="999999" + placeholder="璇疯緭鍏ユ姤搴熸暟閲�" + v-model="model.scrapNum" + /> + </a-form-model-item> + <a-form-model-item + :labelCol="labelCol" + :wrapperCol="wrapperCol" + prop="scrapReason" + label="鎶ュ簾鍘熷洜" + > + <a-textarea + placeholder="璇疯緭鍏ユ姤搴熷師鍥�" + v-model="model.scrapReason" + /> + </a-form-model-item> + + </a-form-model> + </a-spin> + </j-modal> +</template> + +<script> +import { getAction, httpAction } from '@api/manage' +import moment from "moment" + +export default { + name: "EamSparePartScrapModal", + data() { + return { + title: "鎿嶄綔", + visible: false, + model: {}, + labelCol: { + xs: { span: 24 }, + sm: { span: 5 }, + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 }, + }, + + confirmLoading: false, + validatorRules: { + sparePartsId: [ + { required: true, message: '璇烽�夋嫨澶囦欢' } + ], + scrapNum: [ + { required: true, message: '璇疯緭鍏ユ姤搴熸暟閲�' } + ], + scrapReason: [ + { required: true, message: '璇疯緭鍏ユ姤搴熷師鍥�' } + ] + }, + url: { + add: "/eam/eamSparePartScrap/add", + edit: "/eam/eamSparePartScrap/edit", + generateRequisitionCode: "sys/sysBusinessCodeRule/generateBusinessCodeSeq" + }, + } + }, + created() { + }, + methods: { + add() { + const that = this + let params = { + businessCode: "SparePartScrapCodeRule" + } + getAction(that.url.generateRequisitionCode, params).then((res) => { + if (res.success) { + this.model = { + scrapCode: res.result + } + } else { + that.$message.warning(res.message); + } + }) + //鍒濆鍖栭粯璁ゅ�� + that.edit(this.model); + }, + 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/EamSparePartScrapModal.vue b/src/views/eam/spare/modules/EamSparePartScrapModal.vue deleted file mode 100644 index 7ca66fe..0000000 --- a/src/views/eam/spare/modules/EamSparePartScrapModal.vue +++ /dev/null @@ -1,132 +0,0 @@ -<template> - <j-modal - :title="title" - :width="800" - :visible="visible" - :confirmLoading="confirmLoading" - switchFullscreen - @ok="handleOk" - @cancel="handleCancel" - cancelText="鍏抽棴"> - - <a-spin :spinning="confirmLoading"> - <a-form-model ref="form" :model="model" :rules="validatorRules"> - - <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="scrapCode" label="鍗曟嵁鍙�"> - <a-input placeholder="璇疯緭鍏ュ崟鎹彿" v-model="model.scrapCode" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inventoryId" label="搴撳瓨ID"> - <a-input placeholder="璇疯緭鍏ュ簱瀛業D" v-model="model.inventoryId" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="scrapReason" label="鎶ュ簾鍘熷洜"> - <a-input placeholder="璇疯緭鍏ユ姤搴熷師鍥�" v-model="model.scrapReason" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="scrapNum" label="鎶ュ簾鏁伴噺"> - <a-input placeholder="璇疯緭鍏ユ姤搴熸暟閲�" v-model="model.scrapNum" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="reportUser" label="鐢宠浜�"> - <a-input placeholder="璇疯緭鍏ョ敵璇蜂汉" v-model="model.reportUser" /> - </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> - </a-spin> - </j-modal> -</template> - -<script> - import { httpAction } from '@api/manage' - import moment from "moment" - - export default { - name: "EamSparePartScrapModal", - data () { - return { - title:"鎿嶄綔", - visible: false, - model: {}, - labelCol: { - xs: { span: 24 }, - sm: { span: 5 }, - }, - wrapperCol: { - xs: { span: 24 }, - sm: { span: 16 }, - }, - - confirmLoading: false, - validatorRules:{ - }, - url: { - add: "/eam/eamSparePartScrap/add", - edit: "/eam/eamSparePartScrap/edit", - }, - } - }, - 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 -- Gitblit v1.9.3