diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/FileUtil.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/FileUtil.java index a03479e..b61198f 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/FileUtil.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/FileUtil.java @@ -17,6 +17,7 @@ package org.nl.common.utils; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.URLUtil; import cn.hutool.poi.excel.BigExcelWriter; import cn.hutool.poi.excel.ExcelUtil; import org.apache.poi.util.IOUtils; @@ -25,6 +26,7 @@ import org.nl.common.exception.BadRequestException; import org.nl.config.language.LangProcess; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.core.io.ClassPathResource; import org.springframework.web.multipart.MultipartFile; import javax.servlet.ServletOutputStream; @@ -344,4 +346,20 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { return getMd5(getByte(file)); } + public static byte[] getByteByTemplate(String templateName) throws IOException { + // 使用 ClassPathResource 获取资源 + ClassPathResource resource = new ClassPathResource(templateName); + InputStream inputStream = resource.getInputStream(); + return IoUtil.readBytes(inputStream); + } + + public static void download(String fileName, byte[] fileBytes, HttpServletResponse response) throws IOException { + response.setHeader("Content-Disposition", "attachment;filename=" + URLUtil.encode(fileName)); + response.addHeader("Content-Length", "" + fileBytes.length); + response.setHeader("Access-Control-Allow-Origin", "*"); + response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); + response.setContentType("application/octet-stream;charset=UTF-8"); + IoUtil.write(response.getOutputStream(), true, fileBytes); + } + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/MaterialbaseController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/MaterialbaseController.java index 54406b9..78ab2e3 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/MaterialbaseController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/MaterialbaseController.java @@ -11,10 +11,14 @@ import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService; import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.util.Map; import java.util.Set; @@ -69,5 +73,18 @@ public class MaterialbaseController { return new ResponseEntity<>(HttpStatus.NO_CONTENT); } + @PostMapping("/importExcel") + @Log("导入物料") + public ResponseEntity importExcel(@RequestPart("file") MultipartFile file) { + iMdMeMaterialbaseService.importExcel(file); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("下载导入模板") + @GetMapping(value = "/downloadImportMaterialTemplate", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) + public void downloadImportUserTemplate(HttpServletResponse response) { + iMdMeMaterialbaseService.downloadImportMaterialTemplate(response); + } + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/MeasureUnitController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/MeasureUnitController.java index 812a121..38412b7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/MeasureUnitController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/MeasureUnitController.java @@ -10,10 +10,13 @@ import org.nl.wms.basedata_manage.service.IMdPbMeasureunitService; import org.nl.wms.basedata_manage.service.dao.MdPbMeasureunit; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.util.Map; import java.util.Set; @@ -61,4 +64,17 @@ public class MeasureUnitController { return new ResponseEntity<>(HttpStatus.OK); } + @PostMapping("/importExcel") + @Log("导入单位") + public ResponseEntity importExcel(@RequestPart("file") MultipartFile file) { + iMdPbMeasureunitService.importExcel(file); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("下载导入模板") + @GetMapping(value = "/downloadImportUnitTemplate", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) + public void downloadImportUnitTemplate(HttpServletResponse response) { + iMdPbMeasureunitService.downloadImportUnitTemplate(response); + } + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdMeMaterialbaseService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdMeMaterialbaseService.java index 0002f90..7a679c1 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdMeMaterialbaseService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdMeMaterialbaseService.java @@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import org.nl.common.domain.query.PageQuery; import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.util.Map; import java.util.Set; @@ -55,7 +57,12 @@ public interface IMdMeMaterialbaseService extends IService { /** * 根据编码获取物料 * @param material_code 物料编码 + * @param flag 为空是否抛出异常 * @return 返回结果 */ - MdMeMaterialbase getByCode(String material_code); + MdMeMaterialbase getByCode(String material_code, Boolean flag); + + void importExcel(MultipartFile file); + + void downloadImportMaterialTemplate(HttpServletResponse response); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdPbMeasureunitService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdPbMeasureunitService.java index c241ed0..7696c9e 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdPbMeasureunitService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdPbMeasureunitService.java @@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import org.nl.common.domain.query.PageQuery; import org.nl.wms.basedata_manage.service.dao.MdPbMeasureunit; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.util.Map; import java.util.Set; @@ -49,6 +51,9 @@ public interface IMdPbMeasureunitService extends IService { * @param unit_code 编码 * @return 实体类 */ - MdPbMeasureunit getByCode(String unit_code); + MdPbMeasureunit getByCode(String unit_code, Boolean flag); + void importExcel(MultipartFile file); + + void downloadImportUnitTemplate(HttpServletResponse response); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdMeMaterialbaseServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdMeMaterialbaseServiceImpl.java index 55c6fc9..fd25568 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdMeMaterialbaseServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdMeMaterialbaseServiceImpl.java @@ -1,16 +1,20 @@ package org.nl.wms.basedata_manage.service.impl; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.io.IoUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.URLUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.poi.ss.usermodel.*; import org.nl.common.domain.query.PageQuery; import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.FileUtil; import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService; @@ -18,9 +22,14 @@ import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase; import org.nl.wms.basedata_manage.service.dao.mapper.MdMeMaterialbaseMapper; import org.nl.wms.ext_manage.service.WmsToErpService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -43,6 +52,8 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl queryAll(Map whereJson, PageQuery page) { @@ -62,7 +73,7 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl ids) { this.baseMapper.deleteBatchIds(ids); } @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void materialSync(JSONObject whereJson) { JSONObject resultJson = wmsToErpService.materialSync(whereJson); List dataList = resultJson.getJSONArray("data").toJavaList(JSONObject.class); @@ -145,16 +156,76 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl().lambda().nested(r -> { r.eq(MdMeMaterialbase::getMaterial_id, materialCode) .or() .eq(MdMeMaterialbase::getMaterial_code, materialCode); })); - if (ObjectUtil.isEmpty(one)) { + if (ObjectUtil.isEmpty(one) && flag) { throw new BadRequestException("物料信息为【" + materialCode + "】不存在!"); } return one; } + + @Override + public void importExcel(MultipartFile file) { + // 1. 校验文件 + if (file.isEmpty()) { + throw new IllegalArgumentException("上传文件不能为空"); + } + + try (InputStream inputStream = file.getInputStream(); + Workbook workbook = WorkbookFactory.create(inputStream)) { + + // 2. 获取第一个Sheet + Sheet sheet = workbook.getSheetAt(0); + + // 3. 从第二行开始遍历 (索引1) + List dataList = new ArrayList<>(); + for (int rowIndex = 1; rowIndex <= sheet.getLastRowNum(); rowIndex++) { + Row row = sheet.getRow(rowIndex); + if (row == null) continue; // 跳过空行 + Cell materialCodeCell = row.getCell(0); + MdMeMaterialbase byCode = materialbaseService.getByCode(String.valueOf(materialCodeCell), false); + if (ObjectUtil.isNotEmpty(byCode)) { + throw new BadRequestException("物料[" + materialCodeCell + "]已存在!"); + } + + // 4. 读取6个字段 + MdMeMaterialbase entity = new MdMeMaterialbase(); + entity.setMaterial_id(IdUtil.getStringId()); + entity.setMaterial_code(String.valueOf(materialCodeCell)); + entity.setMaterial_name(String.valueOf(row.getCell(1))); + entity.setMaterial_spec(String.valueOf(row.getCell(2))); + entity.setMaterial_model(String.valueOf(row.getCell(3))); + entity.setBase_unit_id(String.valueOf(row.getCell(4))); + entity.setAss_unit_id(String.valueOf(row.getCell(5))); + entity.setCreate_id(SecurityUtils.getCurrentUserId()); + entity.setCreate_name(SecurityUtils.getCurrentNickName()); + entity.setCreate_time(DateUtil.now()); + dataList.add(entity); + } + + // 6. 批量保存(根据实际持久层实现) + materialbaseService.saveBatch(dataList); + + } catch (IOException e) { + throw new RuntimeException("文件读取失败: " + e.getMessage()); + } catch (Exception e) { + throw new RuntimeException("导入失败: " + e.getMessage()); + } + + } + + @Override + public void downloadImportMaterialTemplate(HttpServletResponse response) { + try { + byte[] byteByTemplate = FileUtil.getByteByTemplate("excel/material_template.xlsx"); + FileUtil.download("物料导入模板.xlsx", byteByTemplate, response); + } catch (Exception e) { + log.error(">>> 下载导入模板失败:", e); + } + } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbMeasureunitServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbMeasureunitServiceImpl.java index b0b972f..92af76b 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbMeasureunitServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbMeasureunitServiceImpl.java @@ -8,17 +8,27 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.poi.ss.usermodel.*; import org.nl.common.domain.query.PageQuery; import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.FileUtil; import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; import org.nl.wms.basedata_manage.enums.BaseDataEnum; import org.nl.wms.basedata_manage.service.IMdPbMeasureunitService; +import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase; import org.nl.wms.basedata_manage.service.dao.MdPbMeasureunit; import org.nl.wms.basedata_manage.service.dao.mapper.MdPbMeasureunitMapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import java.util.Set; @@ -95,14 +105,72 @@ public class MdPbMeasureunitServiceImpl extends ServiceImpl().lambda() .eq(MdPbMeasureunit::getUnit_code, unit_code) ); - if (ObjectUtil.isEmpty(one)) { + if (ObjectUtil.isEmpty(one) && flag) { throw new BadRequestException("计量单位编码为【"+unit_code+"】不存在!"); } return one; } + + @Override + public void importExcel(MultipartFile file) { + // 1. 校验文件 + if (file.isEmpty()) { + throw new IllegalArgumentException("上传文件不能为空"); + } + + try (InputStream inputStream = file.getInputStream(); + Workbook workbook = WorkbookFactory.create(inputStream)) { + + // 2. 获取第一个Sheet + Sheet sheet = workbook.getSheetAt(0); + + // 3. 从第二行开始遍历 (索引1) + List dataList = new ArrayList<>(); + for (int rowIndex = 1; rowIndex <= sheet.getLastRowNum(); rowIndex++) { + Row row = sheet.getRow(rowIndex); + if (row == null) { + continue; // 跳过空行 + } + Cell cell1 = row.getCell(0); + MdPbMeasureunit byCode = this.getByCode(String.valueOf(cell1), false); + if (ObjectUtil.isNotEmpty(byCode)) { + throw new BadRequestException("物料[" + cell1 + "]已存在!"); + } + + // 4. 读取6个字段 + MdPbMeasureunit entity = new MdPbMeasureunit(); + entity.setMeasure_unit_id(IdUtil.getStringId()); + entity.setUnit_code(String.valueOf(cell1)); + entity.setUnit_name(String.valueOf(row.getCell(1))); + entity.setQty_precision(new BigDecimal(String.valueOf(row.getCell(2)))); + entity.setCreate_id(SecurityUtils.getCurrentUserId()); + entity.setCreate_name(SecurityUtils.getCurrentNickName()); + entity.setCreate_time(DateUtil.now()); + dataList.add(entity); + } + + // 6. 批量保存 + this.saveBatch(dataList); + + } catch (IOException e) { + throw new RuntimeException("文件读取失败: " + e.getMessage()); + } catch (Exception e) { + throw new RuntimeException("导入失败: " + e.getMessage()); + } + } + + @Override + public void downloadImportUnitTemplate(HttpServletResponse response) { + try { + byte[] byteByTemplate = FileUtil.getByteByTemplate("excel/unit_template.xlsx"); + FileUtil.download("单位导入模板.xlsx", byteByTemplate, response); + } catch (Exception e) { + log.error(">>> 下载导入模板失败:", e); + } + } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/service/impl/PdaIosInServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/service/impl/PdaIosInServiceImpl.java index 617381f..a017ba1 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/service/impl/PdaIosInServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/service/impl/PdaIosInServiceImpl.java @@ -188,7 +188,7 @@ public class PdaIosInServiceImpl implements PdaIosInService { // 数量 String qty = whereJson.getString("qty"); MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getByCode(whereJson.getString("vehicle_code")); - MdMeMaterialbase materDao = iMdMeMaterialbaseService.getByCode(materialId); + MdMeMaterialbase materDao = iMdMeMaterialbaseService.getByCode(materialId, true); MdPbMeasureunit unitDao = iMdPbMeasureunitService.getById(materDao.getBase_unit_id()); // 校验 if (ObjectUtil.isEmpty(vehicleDao) || ObjectUtil.isEmpty(materDao) || ObjectUtil.isEmpty(materDao)) { @@ -657,7 +657,7 @@ public class PdaIosInServiceImpl implements PdaIosInService { ArrayList tableData = new ArrayList<>(); HashMap dtl = new HashMap<>(); GroupPlate plateDao = plateDaoList.get(0); - MdMeMaterialbase materDao = iMdMeMaterialbaseService.getByCode(plateDao.getMaterial_id()); + MdMeMaterialbase materDao = iMdMeMaterialbaseService.getByCode(plateDao.getMaterial_id(), true); dtl.put("storagevehicle_code", plateDao.getStoragevehicle_code()); dtl.put("material_id", materDao.getMaterial_id()); dtl.put("material_code", materDao.getMaterial_code()); diff --git a/lms/nladmin-system/nlsso-server/src/main/resources/excel/material_template.xlsx b/lms/nladmin-system/nlsso-server/src/main/resources/excel/material_template.xlsx new file mode 100644 index 0000000..4c8bf5d Binary files /dev/null and b/lms/nladmin-system/nlsso-server/src/main/resources/excel/material_template.xlsx differ diff --git a/lms/nladmin-system/nlsso-server/src/main/resources/excel/unit_template.xlsx b/lms/nladmin-system/nlsso-server/src/main/resources/excel/unit_template.xlsx new file mode 100644 index 0000000..2b2f611 Binary files /dev/null and b/lms/nladmin-system/nlsso-server/src/main/resources/excel/unit_template.xlsx differ diff --git a/lms/nladmin-ui/src/views/wms/basedata/material/UploadDialog.vue b/lms/nladmin-ui/src/views/wms/basedata/material/UploadDialog.vue index f526491..06c3989 100644 --- a/lms/nladmin-ui/src/views/wms/basedata/material/UploadDialog.vue +++ b/lms/nladmin-ui/src/views/wms/basedata/material/UploadDialog.vue @@ -28,7 +28,10 @@ 将文件拖到此处,或 点击上传 -
只能上传Excel文件,且不超过10MB
+
+ 只能上传Excel文件,且不超过10MB + 下载模板 +
取 消 @@ -96,6 +99,35 @@ export default { uploadByJsqd(file) { this.file1 = file }, + downloadImportTemplate() { + crudMaterial.downloadImportMaterialTemplate().then(res => { + // 1. 创建Blob对象 + const blob = new Blob([res], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }); + + // 2. 创建临时下载链接 + const downloadUrl = window.URL.createObjectURL(blob); + + // 3. 创建隐藏的标签 + const link = document.createElement('a'); + link.href = downloadUrl; + + // 设置下载文件名(根据后端返回或固定名称) + link.download = '物料导入模板.xlsx'; + + // 4. 添加到DOM并触发点击 + document.body.appendChild(link); + link.click(); + + // 5. 清理资源 + document.body.removeChild(link); + window.URL.revokeObjectURL(downloadUrl); + + }).catch(error => { + console.error('下载失败:', error); + // 这里可以添加错误提示,如ElementUI的Message + this.$message.error('模板下载失败,请重试'); + }) + }, submit() { if (this.beforeAvatarUpload(this.file1)) { this.fileList.name = this.file1.name diff --git a/lms/nladmin-ui/src/views/wms/basedata/material/material.js b/lms/nladmin-ui/src/views/wms/basedata/material/material.js index 37c8a46..c8e8bbb 100644 --- a/lms/nladmin-ui/src/views/wms/basedata/material/material.js +++ b/lms/nladmin-ui/src/views/wms/basedata/material/material.js @@ -62,4 +62,12 @@ export function excelImport(data) { data }) } -export default { add, edit, del, excelImport, getMaterOptType, isAlongMaterType, getProductSeries, materialSync } + +export function downloadImportMaterialTemplate(data) { + return request({ + url: 'api/Materia/downloadImportMaterialTemplate', + method: 'get', + responseType: 'blob' + }) +} +export default { add, edit, del, excelImport, getMaterOptType, isAlongMaterType, getProductSeries, materialSync, downloadImportMaterialTemplate } diff --git a/lms/nladmin-ui/src/views/wms/basedata/measure/UploadDialog.vue b/lms/nladmin-ui/src/views/wms/basedata/measure/UploadDialog.vue new file mode 100644 index 0000000..f9e921d --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/basedata/measure/UploadDialog.vue @@ -0,0 +1,157 @@ + + + + diff --git a/lms/nladmin-ui/src/views/wms/basedata/measure/index.vue b/lms/nladmin-ui/src/views/wms/basedata/measure/index.vue index 8f88c82..6c06d2d 100644 --- a/lms/nladmin-ui/src/views/wms/basedata/measure/index.vue +++ b/lms/nladmin-ui/src/views/wms/basedata/measure/index.vue @@ -13,7 +13,18 @@ /> - + + + 导入 + + @@ -70,6 +81,7 @@ + @@ -80,11 +92,12 @@ import rrOperation from '@crud/RR.operation' import crudOperation from '@crud/CRUD.operation' import udOperation from '@crud/UD.operation' import pagination from '@crud/Pagination' +import UploadDialog from './UploadDialog.vue' const defaultForm = { measure_unit_id: null, unit_code: null, unit_name: null, qty_precision: null, is_used: '1', create_id: null, create_name: null, create_time: null, update_optid: null, update_optname: null, update_time: null, is_delete: null, ext_id: null } export default { dicts: ['is_used'], name: 'MdPbMeasureunit', - components: { pagination, crudOperation, rrOperation, udOperation }, + components: { UploadDialog, pagination, crudOperation, rrOperation, udOperation }, mixins: [presenter(), header(), form(defaultForm), crud()], cruds() { return CRUD({ title: '计量单位', @@ -101,6 +114,7 @@ export default { return { permission: { }, + uploadShow: false, rules: { measure_unit_id: [ { required: true, message: '不能为空', trigger: 'blur' } diff --git a/lms/nladmin-ui/src/views/wms/basedata/measure/mdPbMeasureunit.js b/lms/nladmin-ui/src/views/wms/basedata/measure/mdPbMeasureunit.js index ae700b9..a3ac91b 100644 --- a/lms/nladmin-ui/src/views/wms/basedata/measure/mdPbMeasureunit.js +++ b/lms/nladmin-ui/src/views/wms/basedata/measure/mdPbMeasureunit.js @@ -32,4 +32,20 @@ export function getUnit(params) { }) } -export default { add, edit, del, getUnit } +export function excelImport(data) { + return request({ + url: 'api/mdPbMeasureunit/importExcel', + method: 'post', + data + }) +} + +export function downloadImportUnitTemplate(data) { + return request({ + url: 'api/mdPbMeasureunit/downloadImportUnitTemplate', + method: 'get', + responseType: 'blob' + }) +} + +export default { add, edit, del, getUnit, excelImport, downloadImportUnitTemplate }