jiangping
2025-06-06 a2299a6d4a6f99e9c11132138f5d3e9ec68f03ea
admin/src/views/stock/assetList.vue
@@ -3,23 +3,42 @@
    <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear" />
    <div class="mt20">
      <el-button type="primary" @click="$refs.newMaterial.open('新建物料')">添加</el-button>
      <el-button>导出</el-button>
      <el-button>导入</el-button>
      <el-button @click="exportExcel">导出</el-button>
      <el-popover
        placement="right"
        trigger="click">
        <div style="display: flex; align-items: center; justify-content: center;">
          <el-button type="primary" @click="$refs.uploadFile.click()">导入模板</el-button>
          <el-button type="text" @click="exportTemplate">点击下载模版.EXCEL</el-button>
        </div>
        <el-button style="margin-left: 10px;" slot="reference">导入</el-button>
      </el-popover>
    </div>
    <el-table v-loading="loading" :data="list" stripe>
      <el-table-column prop="platformName" label="资产编码" min-width="100" show-overflow-tooltip />
      <el-table-column prop="platformGroupName" label="资产名称" min-width="100" show-overflow-tooltip />
      <el-table-column prop="carCodeFront" label="条码" min-width="100" show-overflow-tooltip />
      <el-table-column prop="carCodeBack" label="品牌" min-width="100" show-overflow-tooltip />
      <el-table-column prop="param1" label="规格型号" min-width="100" show-overflow-tooltip />
      <el-table-column prop="param2" label="单位" min-width="70" show-overflow-tooltip />
      <el-table-column prop="param2" label="安全库存(下限)" min-width="120" show-overflow-tooltip />
      <el-table-column prop="param2" label="安全库存(上限)" min-width="120" show-overflow-tooltip />
      <el-table-column prop="param2" label="状态" min-width="80" show-overflow-tooltip />
      <el-table-column prop="code" label="物料编码" min-width="100" show-overflow-tooltip />
      <el-table-column prop="name" label="物料名称" min-width="100" show-overflow-tooltip />
      <el-table-column prop="qrcode" label="条码" min-width="100" show-overflow-tooltip />
      <el-table-column prop="brand" label="品牌" min-width="100" show-overflow-tooltip />
      <el-table-column prop="attr" label="规格型号" min-width="100" show-overflow-tooltip />
      <el-table-column prop="unitName" label="单位" min-width="70" show-overflow-tooltip />
      <el-table-column prop="minStock" label="安全库存(下限)" min-width="120" show-overflow-tooltip />
      <el-table-column prop="maxStock" label="安全库存(上限)" min-width="120" show-overflow-tooltip />
      <el-table-column label="状态" min-width="80">
        <template v-slot="{ row }">
          <el-switch
            v-model="row.status"
            active-color="#13ce66"
            inactive-color="#ff4949"
            @change="changeStatus($event, row)"
            :active-value="0"
            :inactive-value="1">
          </el-switch>
        </template>
      </el-table-column>
      <el-table-column prop="workTime" label="操作" min-width="100" show-overflow-tooltip>
        <template v-slot="{ row }">
          <span class="primaryColor pointer">编辑</span>
          <span class="red pointer">删除</span>
          <el-button type="text" @click="$refs.newMaterial.open('编辑物料', {...row, cateArr: [row.parentCateId, row.cateId] })">编辑</el-button>
          <el-button type="text" @click="dele(row.id)">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
@@ -27,6 +46,7 @@
      <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
    </div>
    <newMaterial ref="newMaterial" @success="getList" />
    <input type="file" ref="uploadFile" @change="importTemplate" accept=".xlsx" style="position: fixed; top: -100px;" />
  </div>
</template>
@@ -37,7 +57,7 @@
import dayjs from 'dayjs'
import duration from 'dayjs/plugin/duration'
dayjs.extend(duration)
import { platformLogPage, getPlatformGroupList } from '@/api'
import { fetchList, updateStatus, deleteById, exportExcel, importMaterialBatch } from '@/api/ywMaterial'
export default {
  components: {
    Pagination,
@@ -58,76 +78,96 @@
      queryFormConfig: {
        formItems: [
          {
            filed: 'carCodeFront',
            filed: 'code',
            type: 'input',
            label: '资产信息',
            placeholder: '请输入资产名称/编码'
            label: '名称/编码',
            placeholder: '请输入名称/编码'
          },
          {
            filed: 'carCodeFront',
            filed: 'attr',
            type: 'input',
            label: '规格型号',
          },
          {
            filed: 'platformGroupId',
            type: 'select',
            label: '所属项目',
            options: []
          }
        ],
        online: true
        ]
      }
    }
  },
  created() {
    // this.getList()
    // this.getGroupList()
    this.getList()
  },
  methods: {
    handleSub() {
      this.$refs.ruleForm.validate((valid) => {
        if (valid) {
          alert('submit!')
        }
      })
    // 导出模板
    exportTemplate () {
      window.open('/template/material.xlsx')
    },
    handleEx() { },
    getGroupList() {
      getPlatformGroupList({ queryData: 0, queryType: 0 }).then(res => {
        this.queryFormConfig.formItems[1].options = res.map(i => {
          return {
            value: i.id,
            label: i.name
          }
    // 导入模板
    importTemplate(e) {
      const FormDate = new FormData()
      FormDate.append('file', e.target.files[0])
      importMaterialBatch(FormDate)
        .then(res => {
          this.getList()
        })
        // this.queryFormConfig.formItems[1].options.unshift({ value: '', label: '全部月台组' })
      })
        .finally(() => {
          this.$refs.uploadFile.value = null
        })
    },
    exportExcel () {
      this.$dialog.exportConfirm('确认导出吗?')
        .then(() => {
          exportExcel({
            page: this.pagination.page,
            capacity: 1000000,
            model: this.filters
          })
            .then(response => {
              this.download(response)
            })
            .catch(e => {
              this.$tip.apiFailed(e)
            })
        })
        .catch(() => {})
    },
    getList(page) {
      if (page) {
        this.pagination.page = page
      }
      const { pagination, filters } = this
      this.loading = true
      platformLogPage({
      fetchList({
        model: {
          ...filters,
          queryStatus: '6,7,8',
          beginWorkDateStart: filters.selDate && filters.selDate.length > 0 ? filters.selDate[0] : null,
          beginWorkDateEnd: filters.selDate && filters.selDate.length > 0 ? filters.selDate[1] : null,
          ...filters
        },
        sorts: [{ direction: 'DESC', property: 'param1' }],
        capacity: pagination.pageSize,
        page: page || pagination.page,
      }).then(res => {
        this.loading = false
        this.list = res.records || []
        this.list.forEach(item => {
          item.inTypeTemp = item.inType == 0 ? '整托盘' : '件烟'
          item.taskOrigin = 'WMS获取'
          item.workTime = dayjs.duration(item.param3, 'seconds').format('H时m分s秒')
        })
        this.pagination.total = res.total || 0
      }, () => {
        this.loading = false
      })
    },
    dele(id) {
      this.$confirm('是否确认删除该物料?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        deleteById(id)
          .then(res => {
            this.getList()
          })
      }).catch(() => {
      });
    },
    changeStatus(e, row) {
      updateStatus({ id: row.id, status: e })
        .then(res => {
          this.getList()
        })
    },
    clear() {
      this.filters = {}
@@ -137,6 +177,7 @@
    },
    handleSizeChange(capacity) {
      this.pagination.pageSize = capacity
      this.getList()
    }
  }
}