From 0ec668ac53255ae7ef46f274fbb26b77d1146cf6 Mon Sep 17 00:00:00 2001
From: liuxy
Date: Thu, 15 May 2025 10:50:31 +0800
Subject: [PATCH] =?UTF-8?q?add=EF=BC=9A=E5=9F=BA=E7=A1=80=E5=88=86?=
=?UTF-8?q?=E7=B1=BB=EF=BC=8C=E5=AE=A2=E6=88=B7=E7=BB=B4=E6=8A=A4=EF=BC=8C?=
=?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=BB=B4=E6=8A=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../controller/ClassStandardController.java | 85 ++++
.../controller/CustomerController.java | 64 +++
.../controller/DeviceInfoController.java | 64 +++
.../service/IEmBiDeviceinfoService.java | 47 +++
.../service/IMdCsCustomerbaseService.java | 46 +++
.../service/IMdPbClassstandardService.java | 74 ++++
.../service/dao/EmBiDeviceinfo.java | 126 ++++++
.../service/dao/MdCsCustomerbase.java | 166 ++++++++
.../service/dao/MdPbClassstandard.java | 121 ++++++
.../dao/mapper/EmBiDeviceinfoMapper.java | 16 +
.../dao/mapper/EmBiDeviceinfoMapper.xml | 5 +
.../dao/mapper/MdCsCustomerbaseMapper.java | 16 +
.../dao/mapper/MdCsCustomerbaseMapper.xml | 5 +
.../dao/mapper/MdPbClassstandardMapper.java | 15 +
.../dao/mapper/MdPbClassstandardMapper.xml | 5 +
.../service/dto/ClassstandardDto.java | 147 +++++++
.../impl/EmBiDeviceinfoServiceImpl.java | 96 +++++
.../impl/MdCsCustomerbaseServiceImpl.java | 96 +++++
.../impl/MdCsSupplierbaseServiceImpl.java | 2 +-
.../impl/MdPbClassstandardServiceImpl.java | 345 ++++++++++++++++
.../views/wms/basedata/class/classstandard.js | 104 +++++
.../src/views/wms/basedata/class/index.vue | 389 ++++++++++++++++++
.../wms/basedata/customer/customerbase.js | 27 ++
.../src/views/wms/basedata/customer/index.vue | 313 ++++++++++++++
.../wms/basedata/deviceInfo/deviceinfo.js | 35 ++
.../views/wms/basedata/deviceInfo/index.vue | 304 ++++++++++++++
26 files changed, 2712 insertions(+), 1 deletion(-)
create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/ClassStandardController.java
create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/CustomerController.java
create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/DeviceInfoController.java
create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IEmBiDeviceinfoService.java
create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdCsCustomerbaseService.java
create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdPbClassstandardService.java
create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/EmBiDeviceinfo.java
create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/MdCsCustomerbase.java
create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/MdPbClassstandard.java
create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/EmBiDeviceinfoMapper.java
create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/EmBiDeviceinfoMapper.xml
create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdCsCustomerbaseMapper.java
create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdCsCustomerbaseMapper.xml
create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbClassstandardMapper.java
create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbClassstandardMapper.xml
create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/ClassstandardDto.java
create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/EmBiDeviceinfoServiceImpl.java
create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdCsCustomerbaseServiceImpl.java
create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbClassstandardServiceImpl.java
create mode 100644 wms/nladmin-ui/src/views/wms/basedata/class/classstandard.js
create mode 100644 wms/nladmin-ui/src/views/wms/basedata/class/index.vue
create mode 100644 wms/nladmin-ui/src/views/wms/basedata/customer/customerbase.js
create mode 100644 wms/nladmin-ui/src/views/wms/basedata/customer/index.vue
create mode 100644 wms/nladmin-ui/src/views/wms/basedata/deviceInfo/deviceinfo.js
create mode 100644 wms/nladmin-ui/src/views/wms/basedata/deviceInfo/index.vue
diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/ClassStandardController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/ClassStandardController.java
new file mode 100644
index 0000000..16ddf2a
--- /dev/null
+++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/ClassStandardController.java
@@ -0,0 +1,85 @@
+package org.nl.wms.basedata_manage.controller;
+
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.nl.common.logging.annotation.Log;
+import org.nl.wms.basedata_manage.service.IMdPbClassstandardService;
+import org.nl.wms.basedata_manage.service.dao.MdPbClassstandard;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Pageable;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ *
+ * 基础分类表 控制层
+ *
+ *
+ * @author Liuxy
+ * @since 2025-05-14
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/Classstandard")
+@Slf4j
+public class ClassStandardController {
+
+ @Autowired
+ private IMdPbClassstandardService iMdPbClassstandardService;
+
+ @GetMapping
+ @Log("查询基础分类")
+ public ResponseEntity
+ *
+ * @author Liuxy
+ * @since 2025-05-14
+ */
+@Service
+public class MdPbClassstandardServiceImpl extends ServiceImpl implements IMdPbClassstandardService {
+
+ @Override
+ public MapqueryAll(Map whereJson, Pageable page) {
+ // 查询所有分类
+ String class_code = MapUtil.getStr(whereJson, "class_code");
+ LambdaQueryWrapper lambda = new QueryWrapper().lambda();
+ lambda.eq(MdPbClassstandard::getParent_class_id, null)
+ .or(item -> item.eq(MdPbClassstandard::getParent_class_id, BaseDataEnum.IS_YES_NOT.code("否"))
+ );
+ lambda.eq(MdPbClassstandard::getIs_delete, BaseDataEnum.IS_YES_NOT.code("否"));
+ if (ObjectUtil.isNotEmpty(class_code)) {
+ lambda.eq(MdPbClassstandard::getClass_code, class_code);
+ }
+ lambda.orderByDesc(MdPbClassstandard::getUpdate_time);
+
+ // 处理后的数据
+ List dtoList = new ArrayList<>();
+ // 处理数据
+ List classList = this.list(lambda);
+ for (MdPbClassstandard dao : classList) {
+ ClassstandardDto dto = JSONObject.parseObject(JSONObject.toJSONString(dao), ClassstandardDto.class);
+
+ if (Integer.parseInt(dto.getSub_count()) > 0) {
+ dto.setHasChildren(true);
+ dto.setLeaf(false);
+ } else {
+ dto.setHasChildren(false);
+ dto.setLeaf(true);
+ }
+ dto.setId(dto.getClass_id());
+ dto.setLabel(dto.getClass_name());
+ dtoList.add(dto);
+ }
+
+ // 组织分页查询并返回
+ Map json = PageUtil.toPage(
+ PageUtil.toPage(page.getPageNumber(), page.getPageSize(), dtoList),
+ dtoList.size()
+ );
+ return json;
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void create(MdPbClassstandard dto) {
+ MdPbClassstandard mdPbClassstandard = this.baseMapper.selectOne(
+ new QueryWrapper().lambda()
+ .eq(MdPbClassstandard::getClass_code, dto.getClass_code())
+ );
+ if (ObjectUtil.isNotEmpty(mdPbClassstandard)) {
+ throw new BadRequestException("当前分类编码已存在【"+dto.getClass_code()+"】");
+ }
+ // 新增
+ dto.setClass_id(IdUtil.getStringId());
+ dto.setCreate_id(SecurityUtils.getCurrentUserId());
+ dto.setCreate_name(SecurityUtils.getCurrentNickName());
+ dto.setCreate_time(DateUtil.now());
+ dto.setUpdate_optid(SecurityUtils.getCurrentUserId());
+ dto.setUpdate_optname(SecurityUtils.getCurrentNickName());
+ dto.setUpdate_time(DateUtil.now());
+ dto.setIs_leaf(BaseDataEnum.IS_YES_NOT.code("是"));
+ dto.setClass_level(Math.ceil(dto.getClass_code().length() / 2.0) + "");
+ dto.setSub_count(BaseDataEnum.IS_YES_NOT.code("否"));
+ dto.setLong_class_code(dto.getClass_code());
+ this.save(dto);
+
+ // 更新节点
+ if (ObjectUtil.isNotEmpty(dto.getParent_class_id())) {
+ updateSubCnt(dto.getParent_class_id());
+ }
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void update(MdPbClassstandard dto) {
+ MdPbClassstandard mdPbClassstandard = this.baseMapper.selectById(dto.getClass_id());
+ if (ObjectUtil.isEmpty(mdPbClassstandard)) {
+ throw new BadRequestException("被删除或无权限,操作失败!");
+ }
+
+ if ( ObjectUtil.isNotEmpty(dto.getParent_class_id()) && dto.getClass_id().equals(dto.getParent_class_id())) {
+ throw new BadRequestException("上级不能为自己");
+ }
+
+ // 修改
+ dto.setUpdate_optid(SecurityUtils.getCurrentUserId());
+ dto.setUpdate_optname(SecurityUtils.getCurrentNickName());
+ dto.setUpdate_time(DateUtil.now());
+ this.updateById(dto);
+
+ //更新父节点中子节点数目
+ updateSubCnt(mdPbClassstandard.getParent_class_id());
+ updateSubCnt(dto.getClass_id());
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void delete(Set ids) {
+ // 查询所有数据
+ List daoList = this.list(
+ new QueryWrapper().lambda()
+ .eq(MdPbClassstandard::getIs_delete, BaseDataEnum.IS_YES_NOT.code("否"))
+ );
+
+ for (String class_id : ids) {
+ MdPbClassstandard mdPbClassstandard = daoList.stream()
+ .filter(item -> item.getClass_id().equals(class_id))
+ .findFirst().orElse(null);
+ mdPbClassstandard.setIs_delete(BaseDataEnum.IS_YES_NOT.code("是"));
+ this.baseMapper.updateById(mdPbClassstandard);
+
+ List parentList = daoList.stream()
+ .filter(item -> item.getParent_class_id().equals(class_id))
+ .collect(Collectors.toList());
+ if (ObjectUtil.isNotEmpty(parentList)) {
+ Set child_ids = new HashSet<>();
+
+ for (int i = 0; i < parentList.size(); i++) {
+ MdPbClassstandard child_row = parentList.get(i);
+ child_ids.add(child_row.getClass_id());
+ }
+ this.delete(child_ids);
+ }
+ updateSubCnt(mdPbClassstandard.getParent_class_id());
+ }
+ }
+
+ @Override
+ public JSONObject loadClass(Map whereJson) {
+ String pid = MapUtil.getStr(whereJson, "pid");
+ // 查询条件
+ LambdaQueryWrapper lambda = new QueryWrapper().lambda();
+ if (ObjectUtil.isEmpty(pid) || pid.equals(BaseDataEnum.IS_YES_NOT.code("否")) ) {
+ lambda.eq(MdPbClassstandard::getParent_class_id, BaseDataEnum.IS_YES_NOT.code("否"))
+ .or(item -> item.eq(MdPbClassstandard::getParent_class_id, null));
+ lambda.eq(MdPbClassstandard::getIs_delete, BaseDataEnum.IS_YES_NOT.code("否"));
+ lambda.orderByAsc(MdPbClassstandard::getClass_id);
+ } else {
+ lambda.eq(MdPbClassstandard::getParent_class_id, pid)
+ .eq(MdPbClassstandard::getIs_delete, BaseDataEnum.IS_YES_NOT.code("否"));
+ lambda.orderByAsc(MdPbClassstandard::getClass_id);
+ }
+
+ // 定义需返回的集合
+ List dtoList = new ArrayList<>();
+
+ List daoList = this.list(lambda);
+ for (MdPbClassstandard dao : daoList) {
+ // 类型转换
+ ClassstandardDto dto = JSONObject.parseObject(JSONObject.toJSONString(dao), ClassstandardDto.class);
+
+ if (Integer.parseInt(dto.getSub_count()) > 0) {
+ dto.setHasChildren(true);
+ dto.setLeaf(false);
+ } else {
+ dto.setHasChildren(false);
+ dto.setLeaf(true);
+ }
+ dto.setId(dto.getClass_id());
+ dto.setLabel(dto.getClass_name());
+ dto.setCreate_user_name(dto.getCreate_name());
+ dto.setUpdate_user_name(dto.getUpdate_optname());
+ dtoList.add(dto);
+ }
+
+ JSONObject result = new JSONObject();
+ result.put("content", dtoList);
+ return result;
+ }
+
+ @Override
+ public List getSuperior(MdPbClassstandard classDao, List daoList) {
+ if (ObjectUtil.isEmpty(classDao.getParent_class_id()) || classDao.getParent_class_id().equals(BaseDataEnum.IS_YES_NOT.code("否"))) {
+ List list = this.list(
+ new QueryWrapper().lambda()
+ .eq(MdPbClassstandard::getParent_class_id, BaseDataEnum.IS_YES_NOT.code("否"))
+ .or(item -> item.eq(MdPbClassstandard::getParent_class_id, null))
+ .eq(MdPbClassstandard::getIs_delete, BaseDataEnum.IS_YES_NOT.code("否"))
+ );
+ daoList.addAll(list);
+ return daoList;
+ }
+
+ List list = this.list(
+ new QueryWrapper().lambda()
+ .eq(MdPbClassstandard::getParent_class_id, classDao.getParent_class_id())
+ );
+ daoList.addAll(list);
+ MdPbClassstandard pidDao = this.getById(classDao.getParent_class_id());
+ return getSuperior(pidDao,daoList);
+ }
+
+ @Override
+ public JSONObject buildTree(List superiorList) {
+ Set trees = new LinkedHashSet<>();
+ Set maters = new LinkedHashSet<>();
+ List mater_name = new LinkedList<>();
+ superiorList.forEach(item -> {
+ mater_name.add(item.getClass_name());
+ });
+
+ boolean isChild;
+ for (MdPbClassstandard dao : superiorList) {
+ ClassstandardDto dto1 = JSONObject.parseObject(JSONObject.toJSONString(dao), ClassstandardDto.class);
+ isChild = false;
+ if (dto1.getParent_class_id().equals(BaseDataEnum.IS_YES_NOT.code("否")) || ObjectUtil.isEmpty(dto1.getParent_class_id())) {
+ dto1.setId(dto1.getClass_id());
+ dto1.setLabel(dto1.getClass_name());
+ if (Integer.parseInt(dto1.getSub_count()) > 0) {
+ dto1.setHasChildren(true);
+ dto1.setLeaf(false);
+ } else {
+ dto1.setHasChildren(false);
+ dto1.setLeaf(true);
+ }
+ trees.add(dto1);
+ }
+
+ for (MdPbClassstandard dao2 : superiorList) {
+ ClassstandardDto dto2 = JSONObject.parseObject(JSONObject.toJSONString(dao2), ClassstandardDto.class);
+ if (!dto2.getClass_id().equals(BaseDataEnum.IS_YES_NOT.code("否")) && dto1.getClass_id().equals(dto2.getParent_class_id())) {
+ isChild = true;
+ if (ObjectUtil.isEmpty(dto1.getChildren())) {
+ dto1.setChildren(new JSONArray());
+ }
+ JSONArray child_ja = dto1.getChildren();
+ dto2.setId(dto2.getClass_id());
+ dto2.setLabel(dto2.getClass_name());
+ if (Integer.parseInt(dto2.getSub_count()) > 0) {
+ dto2.setHasChildren(true);
+ dto2.setLeaf(false);
+ } else {
+ dto2.setHasChildren(false);
+ dto2.setLeaf(true);
+ }
+ child_ja.add(dto2);
+ }
+ }
+ if (isChild) {
+ dto1.setId(dto1.getClass_id());
+ dto1.setLabel(dto1.getClass_name());
+ if (Integer.parseInt(dto1.getSub_count()) > 0) {
+ dto1.setHasChildren(true);
+ dto1.setLeaf(false);
+ } else {
+ dto1.setHasChildren(false);
+ dto1.setLeaf(true);
+ }
+ maters.add(dto1);
+ } else if (!dto1.getClass_id().equals(BaseDataEnum.IS_YES_NOT.code("否"))) {
+ dto1.setId(dto1.getClass_id());
+ dto1.setLabel(dto1.getClass_name());
+ if (Integer.parseInt(dto1.getSub_count()) > 0) {
+ dto1.setHasChildren(true);
+ dto1.setLeaf(false);
+ } else {
+ dto1.setHasChildren(false);
+ dto1.setLeaf(true);
+ }
+ maters.add(dto1);
+ }
+ }
+ if (maters.size() == 0) {
+ maters = trees;
+ }
+ JSONObject jo = new JSONObject();
+ jo.put("totalElements", superiorList.size());
+ jo.put("content", maters.size() == 0 ? superiorList : trees);
+ return jo;
+ }
+
+ @Override
+ public List getClassName() {
+ List daoList = this.list(
+ new QueryWrapper().lambda()
+ .eq(MdPbClassstandard::getParent_class_id, null)
+ .or(item -> item.eq(MdPbClassstandard::getParent_class_id, BaseDataEnum.IS_YES_NOT.code("否")))
+ .eq(MdPbClassstandard::getIs_delete, BaseDataEnum.IS_YES_NOT.code("否"))
+ );
+
+ List result = new ArrayList<>();
+ daoList.forEach(row -> {
+ JSONObject json = new JSONObject();
+ json.put("label", row.getClass_name());
+ json.put("value", row.getClass_code());
+ result.add(json);
+ });
+ return result;
+ }
+
+ /**
+ * 更新节点
+ * @param parent_class_id 父级id
+ */
+ private void updateSubCnt(String parent_class_id) {
+ if (ObjectUtil.isNotEmpty(parent_class_id) && !parent_class_id.equals(BaseDataEnum.IS_YES_NOT.code("否"))) {
+ int count = this.baseMapper.selectCount(
+ new QueryWrapper().lambda()
+ .eq(MdPbClassstandard::getParent_class_id, parent_class_id)
+ .eq(MdPbClassstandard::getIs_delete, BaseDataEnum.IS_YES_NOT.code("否"))
+ );
+
+ MdPbClassstandard pidDao = this.getById(parent_class_id);
+ pidDao.setSub_count(String.valueOf(count));
+ pidDao.setIs_leaf(count > 0 ? BaseDataEnum.IS_YES_NOT.code("否") : BaseDataEnum.IS_YES_NOT.code("是"));
+ this.updateById(pidDao);
+ }
+ }
+}
diff --git a/wms/nladmin-ui/src/views/wms/basedata/class/classstandard.js b/wms/nladmin-ui/src/views/wms/basedata/class/classstandard.js
new file mode 100644
index 0000000..ee30283
--- /dev/null
+++ b/wms/nladmin-ui/src/views/wms/basedata/class/classstandard.js
@@ -0,0 +1,104 @@
+import request from '@/utils/request'
+
+export function add(data) {
+ return request({
+ url: 'api/Classstandard',
+ method: 'post',
+ data
+ })
+}
+
+export function del(ids) {
+ return request({
+ url: 'api/Classstandard/',
+ method: 'delete',
+ data: ids
+ })
+}
+
+export function edit(data) {
+ return request({
+ url: 'api/Classstandard',
+ method: 'put',
+ data
+ })
+}
+
+export function getClass(params) {
+ return request({
+ url: 'api/Classstandard/loadClass',
+ method: 'get',
+ params
+ })
+}
+
+export function getClassSuperior(ids) {
+ const data = ids.length || ids.length === 0 ? ids : Array.of(ids)
+ return request({
+ url: 'api/Classstandard/superior',
+ method: 'post',
+ data
+ })
+}
+
+export function getClassType(params) {
+ return request({
+ url: 'api/Classstandard/getClass',
+ method: 'get',
+ params
+ })
+}
+
+export function queryClassById(params) {
+ return request({
+ url: 'api/Classstandard/queryClassById',
+ method: 'get',
+ params
+ })
+}
+
+// 传入分类标识和级别
+export function getType(params) {
+ return request({
+ url: 'api/Classstandard/getType',
+ method: 'get',
+ params
+ })
+}
+
+export function getClassTable(params) {
+ return request({
+ url: 'api/Classstandard/getClassTable',
+ method: 'get',
+ params
+ })
+}
+
+export function getClassName() {
+ return request({
+ url: 'api/Classstandard/getClassName',
+ method: 'get'
+ })
+}
+
+export function getCasClass(data) {
+ return request({
+ url: 'api/Classstandard/getCasClass',
+ method: 'post',
+ data
+ })
+}
+
+export default {
+ add,
+ edit,
+ del,
+ getClass,
+ getClassSuperior,
+ getClassType,
+ getClassTable,
+ getType,
+ queryClassById,
+ getClassName,
+ getCasClass
+}
diff --git a/wms/nladmin-ui/src/views/wms/basedata/class/index.vue b/wms/nladmin-ui/src/views/wms/basedata/class/index.vue
new file mode 100644
index 0000000..a228a7c
--- /dev/null
+++ b/wms/nladmin-ui/src/views/wms/basedata/class/index.vue
@@ -0,0 +1,389 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 全部展开
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 是
+ 否
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 新增同级
+ 新增子级
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/wms/nladmin-ui/src/views/wms/basedata/customer/customerbase.js b/wms/nladmin-ui/src/views/wms/basedata/customer/customerbase.js
new file mode 100644
index 0000000..6523c03
--- /dev/null
+++ b/wms/nladmin-ui/src/views/wms/basedata/customer/customerbase.js
@@ -0,0 +1,27 @@
+import request from '@/utils/request'
+
+export function add(data) {
+ return request({
+ url: 'api/customerbase',
+ method: 'post',
+ data
+ })
+}
+
+export function del(ids) {
+ return request({
+ url: 'api/customerbase/',
+ method: 'delete',
+ data: ids
+ })
+}
+
+export function edit(data) {
+ return request({
+ url: 'api/customerbase',
+ method: 'put',
+ data
+ })
+}
+
+export default { add, edit, del }
diff --git a/wms/nladmin-ui/src/views/wms/basedata/customer/index.vue b/wms/nladmin-ui/src/views/wms/basedata/customer/index.vue
new file mode 100644
index 0000000..5aa8855
--- /dev/null
+++ b/wms/nladmin-ui/src/views/wms/basedata/customer/index.vue
@@ -0,0 +1,313 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 否
+ 是
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/wms/nladmin-ui/src/views/wms/basedata/deviceInfo/deviceinfo.js b/wms/nladmin-ui/src/views/wms/basedata/deviceInfo/deviceinfo.js
new file mode 100644
index 0000000..e43f99b
--- /dev/null
+++ b/wms/nladmin-ui/src/views/wms/basedata/deviceInfo/deviceinfo.js
@@ -0,0 +1,35 @@
+import request from '@/utils/request'
+
+export function add(data) {
+ return request({
+ url: 'api/deviceinfo',
+ method: 'post',
+ data
+ })
+}
+
+export function del(ids) {
+ return request({
+ url: 'api/deviceinfo/',
+ method: 'delete',
+ data: ids
+ })
+}
+
+export function edit(data) {
+ return request({
+ url: 'api/deviceinfo',
+ method: 'put',
+ data
+ })
+}
+
+export function changeActive(data) {
+ return request({
+ url: 'api/deviceinfo/changeActive',
+ method: 'put',
+ data
+ })
+}
+
+export default { add, edit, del, changeActive }
diff --git a/wms/nladmin-ui/src/views/wms/basedata/deviceInfo/index.vue b/wms/nladmin-ui/src/views/wms/basedata/deviceInfo/index.vue
new file mode 100644
index 0000000..292dea5
--- /dev/null
+++ b/wms/nladmin-ui/src/views/wms/basedata/deviceInfo/index.vue
@@ -0,0 +1,304 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 否
+ 是
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+