<template> <a-card :bordered="false"> <!-- 查询区域 --> <div class="table-page-search-wrapper"> <a-form layout="inline" @keyup.enter.native="searchQuery"> <a-row :gutter="24"> <a-col :md="6" :sm="8"> <a-form-item label="物料编码"> <a-input placeholder="请输入物料编码" v-model="queryParam.code"></a-input> </a-form-item> </a-col> <a-col :md="6" :sm="8"> <a-form-item label="物料名称"> <a-input placeholder="请输入物料名称" v-model="queryParam.name"></a-input> </a-form-item> </a-col> <a-col :md="6" :sm="8"> <a-form-item label="型号规格"> <a-input placeholder="请输入型号规格" v-model="queryParam.spec"></a-input> </a-form-item> </a-col> <a-col :md="6" :sm="8"> <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> </span> </a-col> </a-row> </a-form> </div> <!-- 操作按钮区域 --> <div class="table-operator"> <a-button @click="handleAdd" type="primary" v-has="'materia:add'" 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> <span> <a-button type="primary" @click="batchEditOpen()" icon="edit" style="margin-left: 8px">批量编辑</a-button> </span> <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-dropdown> </div> <!-- table区域-begin --> <div> <a-table ref="table" size="middle" bordered rowKey="id" :columns="columns" :dataSource="dataSource" :pagination="ipagination" :loading="loading" :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" @change="handleTableChange"> <span slot="action" slot-scope="text, record"> <a v-has="'materia:edit'" v-if="record.source==null" @click="handleEdit(record)">编辑</a> <a-divider v-has="'materia:edit'" v-if="record.source==null" type="vertical"/> <a-popconfirm v-has="'materia:delete'" v-if="record.source==null" title="确定删除吗?" @confirm="() =>handleDelete(record.id)"> <a v-has="'materia:delete'"><a-icon type="delete"/>删除</a> </a-popconfirm> <a-divider v-has="'materia:delete'" v-if="record.source==null" type="vertical"/> <a @click="editMateriaItem(record)">库存详情</a> </span> <span slot="tradeNum" slot-scope="qty"> {{ numFormat(qty) }} </span> <span slot="excuteFlag" slot-scope="excludeFlag" > <a-tag :key="excludeFlag" :color="longTermColor(excludeFlag)"> {{ flagFormat(excludeFlag) }} </a-tag> </span> </a-table> </div> <!-- table区域-end --> <!-- 表单区域 --> <material-modal ref="modalForm" @ok="modalFormOk"></material-modal> <materia-item-list ref="materiaItemList"></materia-item-list> <material-pl-modal ref="batchModalForm" @fatherMethod="fatherMethodOther"></material-pl-modal> </a-card> </template> <script> import { JeecgListMixin } from '@/mixins/JeecgListMixin' import MaterialModal from '@views/system/modules/MaterialModal' import MateriaItemList from './modules/MateriaItemList' import MaterialPlModal from "./modules/MaterialPlModal"; export default { name: 'MaterialList', components: { MaterialModal,MateriaItemList,MaterialPlModal }, mixins: [JeecgListMixin], data() { return { description: '物料管理页面', // 表头 ids: '', code: '', columns: [ { title: '#', dataIndex: '', key: 'rowIndex', width: 60, align: 'center', customRender: function (t, r, index) { return parseInt(index) + 1 } }, { title: '物料编码', align: 'center', dataIndex: 'code' }, { title: '关联编码', align: 'center', dataIndex: 'linkCode' }, { title: '物料名称', align: 'center', dataIndex: 'name' }, { title: '规格', align: 'center', dataIndex: 'spec' }, { title: '水位上限', align: 'center', dataIndex: 'upperLimit' }, { title: '水位下限', align: 'center', dataIndex: 'downLimit' }, { title: '排除件标识', align: 'center', dataIndex: 'excludeFlag', scopedSlots: { customRender: 'excuteFlag' } }, { title: '库存', align: 'center', dataIndex: 'qty', scopedSlots: { customRender: 'tradeNum' } }, { title: '操作', dataIndex: 'action', align: 'center', scopedSlots: { customRender: 'action' }, } ], url: { list: '/sys/material/list', delete: '/sys/material/delete', deleteBatch: '/sys/material/deleteBatch', exportXlsUrl: '/sys/material/exportXls', importExcelUrl: 'sys/material/importExcel', }, } }, computed: { importExcelUrl: function () { return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` } }, methods:{ fatherMethodOther(str){ this.searchQuery(); }, batchEditOpen() { if (this.selectedRowKeys.length <= 0) { this.$message.warning('请选择一条记录!') } else { this.ids = '' this.code = '' for (var a = 0; a < this.selectedRowKeys.length; a++) { this.ids += this.selectedRowKeys[a] + ',' } this.$refs.batchModalForm.edit(this.ids) } }, editMateriaItem(record) { this.$refs.materiaItemList.edit(record,'') }, numFormat(qty){ if(qty==undefined){ return ''; }else{ return parseFloat(qty).toFixed(1); } }, flagFormat(excludeFlag){ if(excludeFlag=='1'){ return '是'; }else{ return '否'; } }, longTermColor(excludeFlag) { if (excludeFlag == '1') { return "red" } else { return "blue" } }, } } </script> <style scoped> </style>