cuilei
2 天以前 1b8399357869093ce21b285a921525651c46b2c3
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
      // 单选模式下,selectedRowKeys 是数组,但长度最多为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>