From 900b134f3b31465a0785e877b85c236813db9112 Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期四, 04 九月 2025 15:41:58 +0800 Subject: [PATCH] art: 物料台账修改 --- src/views/lsw/LswMaterialInventoryList.vue | 271 ++++++++++++-------------------------- src/views/lsw/LswMateriaView.vue | 135 +++++-------------- 2 files changed, 124 insertions(+), 282 deletions(-) diff --git a/src/views/lsw/LswMateriaView.vue b/src/views/lsw/LswMateriaView.vue index 53f0289..52f29b9 100644 --- a/src/views/lsw/LswMateriaView.vue +++ b/src/views/lsw/LswMateriaView.vue @@ -40,8 +40,7 @@ </a-row> </a-form> </div> - <!-- <a-button @click="handleAdd" type="primary" icon="plus">鏂板鐗╂枡淇℃伅-娴嬭瘯</a-button>--> - <a-spin :spinning="confirmLoading"> + <a-spin :spinning="loading"> <div> <!-- 涓昏〃鍗曞尯鍩� --> <a-table @@ -55,6 +54,7 @@ :pagination="ipagination" :loading="loading" :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type: 'radio'}" + :customRow="customTableRow" @change="handleTableChange"> <!--鐘舵�佹爮涓�у睍绀�--> <span @@ -118,24 +118,9 @@ </a-table> </div> <!-- 瀛愯〃鍗曞尯鍩� --> - <a-tabs v-model="activeKey" @change="handleChangeTabs"> - <a-tab-pane tab="搴撳瓨鏄庣粏" :key="refKeys[0]" :forceRender="true"> - <div style="display: flex; align-items: center; margin-bottom: 10px;"> - <a-tag color="green" style="font-weight: bold;"> - 搴撳瓨鎬婚噺锛歿{ totalInventoryQuantity }} - </a-tag> - </div> - <j-vxe-table - keep-source - :ref="refKeys[0]" - :loading="lswMaterialInventoryTable.loading" - :columns="lswMaterialInventoryTable.columns" - :dataSource="lswMaterialInventoryTable.dataSource" - :maxHeight="300" - :rowNumber="true" - :rowSelection="true" - :toolbar="false" - /> + <a-tabs v-model="activeKey"> + <a-tab-pane tab="搴撳瓨鏄庣粏" key="lswMaterialInventory" :forceRender="true"> + <lsw-material-inventory-list ref="lswMaterialInventory" /> </a-tab-pane> </a-tabs> </a-spin> @@ -146,18 +131,16 @@ <script> import { getAction } from '@/api/manage' -import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js' -import { JVXETypes } from '@/components/jeecg/JVxeTable' -import JFormContainer from '@/components/jeecg/JFormContainer' import { JeecgListMixin } from '@/mixins/JeecgListMixin' import LswMaterialModal from '@views/lsw/modules/LswMaterialModal.vue' +import LswMaterialInventoryList from './LswMaterialInventoryList.vue' export default { - name: 'LswMaterialForm', - mixins: [JVxeTableModelMixin, JeecgListMixin], + name: 'LswMaterialView', + mixins: [JeecgListMixin], components: { LswMaterialModal, - JFormContainer + LswMaterialInventoryList }, data() { return { @@ -175,8 +158,6 @@ validatorRules: {}, selectedRowKeys: [], // 鍒濆鍖栦负绌烘暟缁勶紙鍗曢�夋椂瀛樺偍鍗曚釜key锛� selectedRowData: null, - refKeys: ['lswMaterialInventory'], - tableKeys: ['lswMaterialInventory'], activeKey: 'lswMaterialInventory', columns: [ { @@ -226,63 +207,12 @@ scopedSlots: { customRender: 'action' } } ], - // 鐗╂枡搴撳瓨淇℃伅 - lswMaterialInventoryTable: { - loading: false, - dataSource: [], - columns: [ - { - title: '鎵规鍙�', - key: 'batchNumber', - type: JVXETypes.input, - width: '200px', - placeholder: '璇疯緭鍏�${title}', - defaultValue: '' - }, - { - title: '搴撳瓨绫诲瀷', - key: 'inventoryCategory', - type: JVXETypes.input, - width: '200px', - placeholder: '璇疯緭鍏�${title}', - defaultValue: '' - }, - { - title: '鏁伴噺', - key: 'quantity', - type: JVXETypes.input, - width: '200px', - placeholder: '璇疯緭鍏�${title}', - defaultValue: '' - }, - { - title: '搴撳瓨鍦�', - key: 'warehouseName', - type: JVXETypes.input, - width: '200px', - placeholder: '璇疯緭鍏�${title}', - defaultValue: '' - }, - { - title: '搴撳瓨鐘舵��', - key: 'inventoryStatus', - type: JVXETypes.input, - width: '200px', - placeholder: '璇疯緭鍏�${title}', - defaultValue: '' - } - ] - }, url: { - //searchlikeQuery list: '/lsw/lswMaterial/list', edit: '/lsw/lswMaterial/edit', active: '/lsw/lswMaterial/active', inactive: '/lsw/lswMaterial/inactive', queryById: '/lsw/lswMaterial/queryById', - lswMaterialInventory: { - list: '/lsw/lswMaterial/queryLswMaterialInventoryByMainId' - } } } }, @@ -298,15 +228,6 @@ formDisabled() { return this.disabled }, - totalInventoryQuantity() { - if (!this.lswMaterialInventoryTable.dataSource || this.lswMaterialInventoryTable.dataSource.length === 0) { - return '0' - } - return this.lswMaterialInventoryTable.dataSource.reduce((sum, item) => { - const quantity = Number(item.quantity) || 0 - return sum + quantity - }, 0) - }, }, created() { }, @@ -319,17 +240,19 @@ return '' }, async onSelectChange(selectedRowKeys) { - this.lswMaterialInventoryTable.loading = true // 鍗曢�夋ā寮忎笅锛宻electedRowKeys 鏄暟缁勶紝浣嗛暱搴︽渶澶氫负1 - console.log('鐐瑰嚮浜�---->') this.selectedRowKeys = selectedRowKeys - this.lswMaterialInventoryTable.dataSource = [] // 鑾峰彇閫変腑琛岀殑瀹屾暣鏁版嵁 - if (selectedRowKeys.length > 0) { - const selectedId = selectedRowKeys[0] // 閫変腑琛岀殑id - const lswMaterialInventoryResult = await getAction(this.url.lswMaterialInventory.list, { 'id': selectedId }) - this.lswMaterialInventoryTable.dataSource = lswMaterialInventoryResult.result - this.lswMaterialInventoryTable.loading = false + if (selectedRowKeys.length === 1) { + //鍔犺浇搴撳瓨淇℃伅 + this.$refs.lswMaterialInventory.queryParam.materialId = this.selectedRowKeys[0] + this.$refs.lswMaterialInventory.loadData(1) + this.$refs.lswMaterialInventory.statisticsInventory(this.selectedRowKeys[0]) + }else { + //搴撳瓨淇℃伅娓呯┖ + this.$refs.lswMaterialInventory.queryParam.materialId = 'null' + this.$refs.lswMaterialInventory.loadData(1) + this.$refs.lswMaterialInventory.statisticsInventory('null') } }, handleActive(record) { @@ -346,8 +269,24 @@ that.$message.warning(res.message) } }) - } - + }, + /** + * 鑷畾涔夎〃鏍艰 + * @param record 琛ㄦ牸琛屼俊鎭� + * @returns {{style: {cursor: string}, on: {click: *}}} 鏍峰紡瀵硅薄涓庝簨浠舵柟娉� + */ + customTableRow(record) { + return { + style: { + cursor: 'pointer' + }, + on: { + click: () => { + this.onSelectChange([record.id]) + } + } + } + }, } } </script> diff --git a/src/views/lsw/LswMaterialInventoryList.vue b/src/views/lsw/LswMaterialInventoryList.vue index b39b983..7b3252b 100644 --- a/src/views/lsw/LswMaterialInventoryList.vue +++ b/src/views/lsw/LswMaterialInventoryList.vue @@ -1,201 +1,104 @@ <template> <a-card :bordered="false"> - <!-- 鏌ヨ鍖哄煙 --> - <div class="table-page-search-wrapper"> - <a-form layout="inline" @keyup.enter.native="searchQuery"> - <a-row :gutter="24"> - </a-row> - </a-form> + <div style="display: flex; align-items: center; margin-bottom: 10px;"> + <a-tag color="blue" style="font-weight: bold; font-size: large;"> + 搴撳瓨缁熻锛歿{ inventoryStatisticsInfo}} + </a-tag> </div> - <!-- 鏌ヨ鍖哄煙-END --> - - <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> - <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> - <!-- 楂樼骇鏌ヨ鍖哄煙 --> - <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query> - <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> - <a-button style="margin-left: 8px"> 鎵归噺鎿嶄綔 <a-icon type="down" /></a-button> - </a-dropdown> - </div> - - <!-- table鍖哄煙-begin --> - <div> - <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> - </div> - - <a-table - ref="table" - size="middle" - :scroll="{x:true}" - bordered - rowKey="id" - :columns="columns" - :dataSource="dataSource" - :pagination="ipagination" - :loading="loading" - :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" - class="j-table-force-nowrap" - @change="handleTableChange"> - - <template slot="htmlSlot" slot-scope="text"> - <div v-html="text"></div> - </template> - <template slot="imgSlot" slot-scope="text,record"> - <span v-if="!text" style="font-size: 12px;font-style: italic;">鏃犲浘鐗�</span> - <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/> - </template> - <template slot="fileSlot" slot-scope="text"> - <span v-if="!text" style="font-size: 12px;font-style: italic;">鏃犳枃浠�</span> - <a-button - v-else - :ghost="true" - type="primary" - icon="download" - size="small" - @click="downloadFile(text)"> - 涓嬭浇 - </a-button> - </template> - - <span slot="action" slot-scope="text, record"> - <a @click="handleEdit(record)">缂栬緫</a> - - <a-divider type="vertical" /> - <a-dropdown> - <a class="ant-dropdown-link">鏇村 <a-icon type="down" /></a> - <a-menu slot="overlay"> - <a-menu-item> - <a @click="handleDetail(record)">璇︽儏</a> - </a-menu-item> - <a-menu-item> - <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record.id)"> - <a>鍒犻櫎</a> - </a-popconfirm> - </a-menu-item> - </a-menu> - </a-dropdown> - </span> - - </a-table> - </div> - - <lsw-material-inventory-modal ref="modalForm" @ok="modalFormOk"></lsw-material-inventory-modal> + <a-table + ref="table" + size="middle" + :scroll="{x:true}" + bordered + rowKey="id" + :columns="columns" + :dataSource="dataSource" + :pagination="ipagination" + :loading="loading" + :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" + class="j-table-force-nowrap" + @change="handleTableChange"> + </a-table> </a-card> </template> <script> - import '@/assets/less/TableExpand.less' - import { mixinDevice } from '@/utils/mixin' - import { JeecgListMixin } from '@/mixins/JeecgListMixin' - import LswMaterialInventoryModal from './modules/LswMaterialInventoryModal' +import '@/assets/less/TableExpand.less' +import { mixinDevice } from '@/utils/mixin' +import { JeecgListMixin } from '@/mixins/JeecgListMixin' +import LswMaterialInventoryModal from './modules/LswMaterialInventoryModal' +import { getAction } from '@api/manage' - export default { - name: 'LswMaterialInventoryList', - mixins:[JeecgListMixin, mixinDevice], - components: { - LswMaterialInventoryModal - }, - data () { - return { - description: '鐗╂枡搴撳瓨淇℃伅绠$悊椤甸潰', - // 琛ㄥご - columns: [ - { - title: '#', - dataIndex: '', - key:'rowIndex', - width:60, - align:"center", - customRender:function (t,r,index) { - return parseInt(index)+1; - } - }, - { - title:'鐗╂枡ID', - align:"center", - dataIndex: 'materialId' - }, - { - title:'鎵规鍙�', - align:"center", - dataIndex: 'batchNumber' - }, - { - title:'搴撳瓨绫诲瀷', - align:"center", - dataIndex: 'inventoryCategory' - }, - { - title:'鏁伴噺', - align:"center", - dataIndex: 'quantity' - }, - { - title:'搴撳瓨鍦癐D', - align:"center", - dataIndex: 'warehouseId' - }, - { - title:'搴撳瓨鐘舵��', - align:"center", - dataIndex: 'inventoryStatus' - }, - { - title: '鎿嶄綔', - dataIndex: 'action', - align:"center", - fixed:"right", - width:147, - scopedSlots: { customRender: 'action' } +export default { + name: 'LswMaterialInventoryList', + mixins: [JeecgListMixin, mixinDevice], + components: { + LswMaterialInventoryModal + }, + data() { + return { + description: '鐗╂枡搴撳瓨淇℃伅绠$悊椤甸潰', + inventoryStatisticsInfo: "0", + // 琛ㄥご + columns: [ + { + title: '#', + dataIndex: '', + key: 'rowIndex', + width: 60, + align: 'center', + customRender: function(t, r, index) { + return parseInt(index) + 1 } - ], - url: { - list: "/lswmaterialinventory/lswMaterialInventory/list", - delete: "/lswmaterialinventory/lswMaterialInventory/delete", - deleteBatch: "/lswmaterialinventory/lswMaterialInventory/deleteBatch", - exportXlsUrl: "/lswmaterialinventory/lswMaterialInventory/exportXls", - importExcelUrl: "lswmaterialinventory/lswMaterialInventory/importExcel", - }, - dictOptions:{}, - superFieldList:[], - } - }, - created() { - this.getSuperFieldList(); - }, - computed: { - importExcelUrl: function(){ - return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; + { + title: '鎵规鍙�', + align: 'center', + dataIndex: 'batchNumber' + }, + { + title: '搴撳瓨绫诲瀷', + align: 'center', + dataIndex: 'inventoryCategory_dictText' + }, + { + title: '鏁伴噺', + align: 'center', + dataIndex: 'quantity' + }, + { + title: '搴撳瓨鍦�', + align: 'center', + dataIndex: 'warehouseId_dictText' + }, + { + title: '搴撳瓨鐘舵��', + align: 'center', + dataIndex: 'inventoryStatus_dictText' + }, + ], + url: { + list: '/lsw/materialInventory/list', + statistics: '/lsw/materialInventory/statisticsInventory', }, - }, - methods: { - initDictConfig(){ - }, - getSuperFieldList(){ - let fieldList=[]; - fieldList.push({type:'string',value:'materialId',text:'鐗╂枡ID',dictCode:''}) - fieldList.push({type:'string',value:'batchNumber',text:'鎵规鍙�',dictCode:''}) - fieldList.push({type:'string',value:'inventoryCategory',text:'搴撳瓨绫诲瀷',dictCode:''}) - fieldList.push({type:'string',value:'quantity',text:'鏁伴噺',dictCode:''}) - fieldList.push({type:'string',value:'warehouseId',text:'搴撳瓨鍦癐D',dictCode:''}) - fieldList.push({type:'string',value:'inventoryStatus',text:'搴撳瓨鐘舵��',dictCode:''}) - this.superFieldList = fieldList - } + } + }, + created() { + }, + computed: { + }, + methods: { + statisticsInventory(materialId) { + getAction(this.url.statistics, {materialId : materialId}).then(res => { + if(res.success) { + this.inventoryStatisticsInfo = res.result; + } + }) } } +} </script> <style scoped> - @import '~@assets/less/common.less'; +@import '~@assets/less/common.less'; </style> \ No newline at end of file -- Gitblit v1.9.3