diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/mapper/MaterialMapper.java b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/mapper/MaterialMapper.java new file mode 100644 index 0000000..246a7b0 --- /dev/null +++ b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/mapper/MaterialMapper.java @@ -0,0 +1,16 @@ +package jnpf.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import jnpf.entity.MaterialEntity; + +/** + * 物料主数据 Mapper + * + * @版本: V3.5 + * @版权: 引迈信息技术有限公司(https://www.jnpfsoft.com) + * @作者: JNPF开发平台组 + * @日期: 2024-04-09 + */ +public interface MaterialMapper extends BaseMapper { + +} diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/mapper/TabCustomerMapper.java b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/mapper/TabCustomerMapper.java new file mode 100644 index 0000000..e811765 --- /dev/null +++ b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/mapper/TabCustomerMapper.java @@ -0,0 +1,12 @@ +package jnpf.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import jnpf.entity.TbaCustomerEntity; + +/** + * 客户主数据 Mapper + */ +public interface TabCustomerMapper extends BaseMapper { + +} diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/MaterialService.java b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/MaterialService.java new file mode 100644 index 0000000..cf109ca --- /dev/null +++ b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/MaterialService.java @@ -0,0 +1,32 @@ +package jnpf.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import jnpf.entity.MaterialEntity; +import jnpf.model.material.MaterialForm; +import jnpf.model.material.MaterialPagination; + +import java.util.List; + +/** + * 物料主数据 Service + * + * @版本: V3.5 + * @版权: 引迈信息技术有限公司(https://www.jnpfsoft.com) + * @作者: JNPF开发平台组 + * @日期: 2024-04-09 + */ +public interface MaterialService extends IService { + + + List getList(MaterialPagination materialPagination); + MaterialEntity getInfo(String id); + + void delete(MaterialEntity entity); + + void create(MaterialEntity entity); + + boolean update(String id, MaterialEntity entity); + String checkForm(MaterialForm form, int i); + void saveOrUpdate(MaterialForm materialForm, String id, boolean isSave) throws Exception; + +} diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/TbaCustomerService.java b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/TbaCustomerService.java new file mode 100644 index 0000000..0176cca --- /dev/null +++ b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/TbaCustomerService.java @@ -0,0 +1,24 @@ +package jnpf.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import jnpf.entity.TbaCustomerEntity; +import jnpf.model.customer.CustomerForm; +import jnpf.model.customer.CustomerPagination; + +import java.util.List; + +/** + * 客户主数据 Service + */ +public interface TbaCustomerService extends IService { + + List getList(CustomerPagination customerPagination); + TbaCustomerEntity getInfo(String id); + void delete(TbaCustomerEntity entity); + void create(TbaCustomerEntity entity); + boolean update(String id, TbaCustomerEntity entity); + String checkForm(CustomerForm form, int i); + void saveOrUpdate(CustomerForm customerForm, String id, boolean isSave) throws Exception; + +} diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/MaterialServiceImpl.java b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/MaterialServiceImpl.java new file mode 100644 index 0000000..dc85fa0 --- /dev/null +++ b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/MaterialServiceImpl.java @@ -0,0 +1,149 @@ +package jnpf.service.impl; +import cn.hutool.core.util.ObjectUtil; +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 jnpf.base.UserInfo; +import jnpf.entity.MaterialEntity; +import jnpf.mapper.MaterialMapper; +import jnpf.model.material.MaterialForm; +import jnpf.model.material.MaterialPagination; +import jnpf.service.MaterialService; +import jnpf.util.JsonUtil; +import jnpf.util.StringUtil; +import jnpf.util.UserProvider; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 物料主数据 ServiceImpl + * + * @版本: V3.5 + * @版权: 引迈信息技术有限公司(https://www.jnpfsoft.com) + * @作者: JNPF开发平台组 + * @日期: 2024-04-09 + */ +@Service +public class MaterialServiceImpl extends ServiceImpl implements MaterialService { + + @Resource + private UserProvider userProvider; + + @Override + public List getList(MaterialPagination materialPagination) { + LambdaQueryWrapper materialWrapper = new LambdaQueryWrapper<>(); + + if (ObjectUtil.isNotEmpty(materialPagination.getMatCode())) { + materialWrapper.like(MaterialEntity::getMatCode, materialPagination.getMatCode()); + } + if (ObjectUtil.isNotEmpty(materialPagination.getMatName())) { + materialWrapper.like(MaterialEntity::getMatName, materialPagination.getMatName()); + } + if (ObjectUtil.isNotEmpty(materialPagination.getParentId())) { + materialWrapper.eq(MaterialEntity::getParentId, materialPagination.getParentId()); + } + if (ObjectUtil.isNotEmpty(materialPagination.getMatType())) { + materialWrapper.eq(MaterialEntity::getMatType, materialPagination.getMatType()); + } + if (ObjectUtil.isNotEmpty(materialPagination.getEnabledStatus())) { + materialWrapper.eq(MaterialEntity::getEnabledStatus, materialPagination.getEnabledStatus()); + } + if (ObjectUtil.isNotEmpty(materialPagination.getBrand())) { + materialWrapper.like(MaterialEntity::getBrand, materialPagination.getBrand()); + } + if (ObjectUtil.isNotEmpty(materialPagination.getSpec())) { + materialWrapper.like(MaterialEntity::getSpec, materialPagination.getSpec()); + } + materialWrapper.isNull(MaterialEntity::getDeleteMark); + materialWrapper.orderByDesc(MaterialEntity::getCreatorTime); + if ("0".equals(materialPagination.getDataType())) { + Page page = new Page<>(materialPagination.getCurrentPage(), materialPagination.getPageSize()); + IPage userIPage = this.page(page, materialWrapper); + List records = userIPage.getRecords(); + return materialPagination.setData(records, userIPage.getTotal()); + } else { + return this.list(materialWrapper); + } + } + + @Override + public MaterialEntity getInfo(String id) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(MaterialEntity::getId, id); + return this.getOne(queryWrapper); + } + + @Override + public void create(MaterialEntity entity) { + this.save(entity); + } + + @Override + public boolean update(String id, MaterialEntity entity) { + return this.updateById(entity); + } + + @Override + public void delete(MaterialEntity entity) { + if (entity != null) { + this.removeById(entity.getId()); + } + } + + /** + * 验证表单唯一字段,正则,非空 i-0新增-1修改 + */ + @Override + public String checkForm(MaterialForm form, int i) { + boolean isUp = StringUtil.isNotEmpty(form.getId()) && !form.getId().equals("0"); + String id = ""; + String countRecover = ""; + if (isUp) { + id = form.getId(); + } + + // 物料编码唯一性验证 + if (ObjectUtil.isNotEmpty(form.getMatCode())) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(MaterialEntity::getMatCode, form.getMatCode()); + if (isUp) { + wrapper.ne(MaterialEntity::getId, id); + } + long count = this.count(wrapper); + if (count > 0) { + countRecover += "物料编码已存在,请重新输入!"; + } + } + + return countRecover; + } + + /** + * 新增修改数据(事务回滚) + * + * @param id + * @param materialForm + * @return + */ + @Override + @Transactional + public void saveOrUpdate(MaterialForm materialForm, String id, boolean isSave) throws Exception { + UserInfo userInfo = userProvider.get(); + MaterialEntity entity = JsonUtil.getJsonToBean(materialForm, MaterialEntity.class); + + if (!isSave) { + // 更新时设置ID + if (StringUtil.isNotEmpty(id)) { + entity.setId(Integer.valueOf(id)); + } + } + // 新增时ID由数据库自动生成,不需要设置 + this.saveOrUpdate(entity); + } + +} diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/TbaCustomerServiceImpl.java b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/TbaCustomerServiceImpl.java new file mode 100644 index 0000000..1628686 --- /dev/null +++ b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/TbaCustomerServiceImpl.java @@ -0,0 +1,136 @@ +package jnpf.service.impl; + +import cn.hutool.core.util.ObjectUtil; +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 jnpf.base.UserInfo; +import jnpf.entity.TbaCustomerEntity; +import jnpf.mapper.TabCustomerMapper; +import jnpf.model.customer.CustomerForm; +import jnpf.model.customer.CustomerPagination; +import jnpf.service.TbaCustomerService; +import jnpf.util.JsonUtil; +import jnpf.util.StringUtil; +import jnpf.util.UserProvider; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 客户主数据 ServiceImpl + */ +@Service +public class TbaCustomerServiceImpl extends ServiceImpl implements TbaCustomerService { + + @Resource + private UserProvider userProvider; + + @Override + public List getList(CustomerPagination customerPagination) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + + if (ObjectUtil.isNotEmpty(customerPagination.getCustNo())) { + wrapper.like(TbaCustomerEntity::getCustNo, customerPagination.getCustNo()); + } + if (ObjectUtil.isNotEmpty(customerPagination.getCustName())) { + wrapper.like(TbaCustomerEntity::getCustName, customerPagination.getCustName()); + } + if (ObjectUtil.isNotEmpty(customerPagination.getCustSimName())) { + wrapper.like(TbaCustomerEntity::getCustSimName, customerPagination.getCustSimName()); + } + if (ObjectUtil.isNotEmpty(customerPagination.getIndustryClass())) { + wrapper.eq(TbaCustomerEntity::getIndustryClass, customerPagination.getIndustryClass()); + } + if (ObjectUtil.isNotEmpty(customerPagination.getCoopStatus())) { + wrapper.eq(TbaCustomerEntity::getCoopStatus, customerPagination.getCoopStatus()); + } + if (ObjectUtil.isNotEmpty(customerPagination.getEnterpriseType())) { + wrapper.eq(TbaCustomerEntity::getEnterpriseType, customerPagination.getEnterpriseType()); + } + if (ObjectUtil.isNotEmpty(customerPagination.getCustReg())) { + wrapper.eq(TbaCustomerEntity::getCustReg, customerPagination.getCustReg()); + } + if (ObjectUtil.isNotEmpty(customerPagination.getEnabledStatus())) { + wrapper.eq(TbaCustomerEntity::getEnabledStatus, customerPagination.getEnabledStatus()); + } + + wrapper.isNull(TbaCustomerEntity::getDeleteMark); + wrapper.orderByDesc(TbaCustomerEntity::getCreatorTime); + + if ("0".equals(customerPagination.getDataType())) { + Page page = new Page<>(customerPagination.getCurrentPage(), customerPagination.getPageSize()); + IPage result = this.page(page, wrapper); + return customerPagination.setData(result.getRecords(), result.getTotal()); + } else { + return this.list(wrapper); + } + } + + @Override + public TbaCustomerEntity getInfo(String id) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(TbaCustomerEntity::getId, id); + return this.getOne(queryWrapper); + } + + @Override + public void create(TbaCustomerEntity entity) { + this.save(entity); + } + + @Override + public boolean update(String id, TbaCustomerEntity entity) { + return this.updateById(entity); + } + + @Override + public void delete(TbaCustomerEntity entity) { + if (entity != null) { + this.removeById(entity.getId()); + } + } + + @Override + public String checkForm(CustomerForm form, int i) { + boolean isUp = StringUtil.isNotEmpty(form.getId()) && !form.getId().equals("0"); + String id = ""; + String countRecover = ""; + if (isUp) { + id = form.getId(); + } + + if (ObjectUtil.isNotEmpty(form.getCustNo())) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(TbaCustomerEntity::getCustNo, form.getCustNo()); + if (isUp) { + wrapper.ne(TbaCustomerEntity::getId, Integer.valueOf(id)); + } + long count = this.count(wrapper); + if (count > 0) { + countRecover += "客户编码已存在,请重新输入!"; + } + } + + return countRecover; + } + + @Override + @Transactional + public void saveOrUpdate(CustomerForm customerForm, String id, boolean isSave) throws Exception { + UserInfo userInfo = userProvider.get(); + TbaCustomerEntity entity = JsonUtil.getJsonToBean(customerForm, TbaCustomerEntity.class); + + if (!isSave) { + if (StringUtil.isNotEmpty(id)) { + entity.setId(Integer.valueOf(id)); + } + } + this.saveOrUpdate(entity); + } + +} diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-controller/src/main/java/jnpf/controller/MaterialController.java b/jnpf-java-boot/jnpf-example/jnpf-example-controller/src/main/java/jnpf/controller/MaterialController.java new file mode 100644 index 0000000..c80f6c3 --- /dev/null +++ b/jnpf-java-boot/jnpf-example/jnpf-example-controller/src/main/java/jnpf/controller/MaterialController.java @@ -0,0 +1,165 @@ +package jnpf.controller; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jnpf.base.ActionResult; +import jnpf.base.vo.PageListVO; +import jnpf.base.vo.PaginationVO; +import jnpf.entity.MaterialEntity; +import jnpf.model.material.MaterialForm; +import jnpf.model.material.MaterialPagination; +import jnpf.service.MaterialService; +import jnpf.util.JsonUtil; +import jnpf.util.StringUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 物料主数据 控制类 + */ +@Tag(name = "物料主数据", description = "Material") +@RestController +@RequestMapping("/api/example/material") +public class MaterialController { + + @Autowired + private MaterialService materialService; + + /** + * 列表 + * @param materialPagination 分页查询对象 + * @return 列表结果集 + */ + @Operation(summary = "获取物料列表") + @PostMapping("/getList") + public ActionResult getList(@RequestBody MaterialPagination materialPagination) { + List list = materialService.getList(materialPagination); + List> realList = list.stream() + .map(JsonUtil::entityToMap) + .collect(Collectors.toList()); + + //返回对象 + PageListVO vo = new PageListVO(); + vo.setList(realList); + PaginationVO page = JsonUtil.getJsonToBean(materialPagination, PaginationVO.class); + vo.setPagination(page); + return ActionResult.success(vo); + } + + /** + * 详情 + * @param id 主键 + * @return 详情结果集 + */ + @Operation(summary = "获取物料详情") + @GetMapping("/{id}") + public ActionResult info(@PathVariable("id") String id) { + MaterialEntity entity = materialService.getInfo(id); + if (entity != null) { + return ActionResult.success(JsonUtil.entityToMap(entity)); + } + return ActionResult.fail("数据不存在"); + } + + /** + * 新建 + * @param materialForm 表单对象 + * @return 新建结果 + */ + @Operation(summary = "新建物料") + @PostMapping + public ActionResult create(@RequestBody @Valid MaterialForm materialForm) { + String b = materialService.checkForm(materialForm, 0); + if (StringUtil.isNotEmpty(b)) { + return ActionResult.fail(b); + } + try { + materialService.saveOrUpdate(materialForm, "", true); + return ActionResult.success("新建成功"); + } catch (Exception e) { + return ActionResult.fail("新建数据失败:" + e.getMessage()); + } + } + + /** + * 编辑 + * @param id 主键 + * @param materialForm 表单对象 + * @return 编辑结果 + */ + @Operation(summary = "更新物料") + @PutMapping("/{id}") + public ActionResult update(@PathVariable("id") String id, @RequestBody @Valid MaterialForm materialForm) { + materialForm.setId(id); + String b = materialService.checkForm(materialForm, 1); + if (StringUtil.isNotEmpty(b)) { + return ActionResult.fail(b); + } + MaterialEntity entity = materialService.getInfo(id); + if (entity != null) { + try { + materialService.saveOrUpdate(materialForm, id, false); + return ActionResult.success("更新成功"); + } catch (Exception e) { + return ActionResult.fail("更新数据失败:" + e.getMessage()); + } + } else { + return ActionResult.fail("更新失败,数据不存在"); + } + } + + /** + * 删除 + * @param id 主键 + * @return 删除结果 + */ + @Operation(summary = "删除物料") + @DeleteMapping("/{id}") + public ActionResult delete(@PathVariable("id") String id) { + MaterialEntity entity = materialService.getInfo(id); + if (entity != null) { + try { + materialService.delete(entity); + return ActionResult.success("删除成功"); + } catch (Exception e) { + return ActionResult.fail("删除失败:" + e.getMessage()); + } + } + return ActionResult.fail("删除失败,数据不存在"); + } + + /** + * 获取物料类型字典 + * @return 物料类型列表 + */ + @Operation(summary = "获取物料类型字典") + @GetMapping("/getMatTypeDict") + public ActionResult getMatTypeDict() { + List> dictList = new ArrayList<>(); + + Map type1 = new HashMap<>(); + type1.put("id", "1"); + type1.put("name", "原材料"); + dictList.add(type1); + + Map type2 = new HashMap<>(); + type2.put("id", "2"); + type2.put("name", "半成品"); + dictList.add(type2); + + Map type3 = new HashMap<>(); + type3.put("id", "3"); + type3.put("name", "成品"); + dictList.add(type3); + + return ActionResult.success(dictList); + } + +} diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-controller/src/main/java/jnpf/controller/TbaCustomerController.java b/jnpf-java-boot/jnpf-example/jnpf-example-controller/src/main/java/jnpf/controller/TbaCustomerController.java new file mode 100644 index 0000000..cf70667 --- /dev/null +++ b/jnpf-java-boot/jnpf-example/jnpf-example-controller/src/main/java/jnpf/controller/TbaCustomerController.java @@ -0,0 +1,109 @@ +package jnpf.controller; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jnpf.base.ActionResult; +import jnpf.base.vo.PageListVO; +import jnpf.base.vo.PaginationVO; +import jnpf.entity.TbaCustomerEntity; +import jnpf.model.customer.CustomerForm; +import jnpf.model.customer.CustomerPagination; +import jnpf.service.TbaCustomerService; +import jnpf.util.JsonUtil; +import jnpf.util.StringUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 客户主数据 控制类 + */ +@Tag(name = "客户主数据", description = "Customer1") +@RestController +@RequestMapping("/api/example/tbaCustomer") +public class TbaCustomerController { + + @Autowired + private TbaCustomerService tbaCustomerService; + + @Operation(summary = "获取客户列表") + @PostMapping("/getList") + public ActionResult getList(@RequestBody CustomerPagination customerPagination) { + List list = tbaCustomerService.getList(customerPagination); + List> realList = list.stream() + .map(JsonUtil::entityToMap) + .collect(Collectors.toList()); + + PageListVO vo = new PageListVO(); + vo.setList(realList); + PaginationVO page = JsonUtil.getJsonToBean(customerPagination, PaginationVO.class); + vo.setPagination(page); + return ActionResult.success(vo); + } + + @Operation(summary = "获取客户详情") + @GetMapping("/{id}") + public ActionResult info(@PathVariable("id") String id) { + TbaCustomerEntity entity = tbaCustomerService.getInfo(id); + if (entity != null) { + return ActionResult.success(JsonUtil.entityToMap(entity)); + } + return ActionResult.fail("数据不存在"); + } + + @Operation(summary = "新建客户") + @PostMapping + public ActionResult create(@RequestBody @Valid CustomerForm customerForm) { + String b = tbaCustomerService.checkForm(customerForm, 0); + if (StringUtil.isNotEmpty(b)) { + return ActionResult.fail(b); + } + try { + tbaCustomerService.saveOrUpdate(customerForm, "", true); + return ActionResult.success("新建成功"); + } catch (Exception e) { + return ActionResult.fail("新建数据失败:" + e.getMessage()); + } + } + + @Operation(summary = "更新客户") + @PutMapping("/{id}") + public ActionResult update(@PathVariable("id") String id, @RequestBody @Valid CustomerForm customerForm) { + customerForm.setId(id); + String b = tbaCustomerService.checkForm(customerForm, 1); + if (StringUtil.isNotEmpty(b)) { + return ActionResult.fail(b); + } + TbaCustomerEntity entity = tbaCustomerService.getInfo(id); + if (entity != null) { + try { + tbaCustomerService.saveOrUpdate(customerForm, id, false); + return ActionResult.success("更新成功"); + } catch (Exception e) { + return ActionResult.fail("更新数据失败:" + e.getMessage()); + } + } else { + return ActionResult.fail("更新失败,数据不存在"); + } + } + + @Operation(summary = "删除客户") + @DeleteMapping("/{id}") + public ActionResult delete(@PathVariable("id") String id) { + TbaCustomerEntity entity = tbaCustomerService.getInfo(id); + if (entity != null) { + try { + tbaCustomerService.delete(entity); + return ActionResult.success("删除成功"); + } catch (Exception e) { + return ActionResult.fail("删除失败:" + e.getMessage()); + } + } + return ActionResult.fail("删除失败,数据不存在"); + } + +} diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/entity/MaterialEntity.java b/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/entity/MaterialEntity.java new file mode 100644 index 0000000..425b509 --- /dev/null +++ b/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/entity/MaterialEntity.java @@ -0,0 +1,77 @@ +package jnpf.entity; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 物料主数据表 + */ +@Data +@TableName("tba_material") +public class MaterialEntity { + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @TableField(value = "f_creator_user_id", fill = FieldFill.INSERT) + private String creatorUserId; + + @TableField(value = "f_creator_time", fill = FieldFill.INSERT) + private Date creatorTime; + + @TableField(value = "f_last_modify_user_id", fill = FieldFill.INSERT_UPDATE) + private String lastModifyUserId; + + @TableField(value = "f_last_modify_time", fill = FieldFill.INSERT_UPDATE) + private Date lastModifyTime; + + @TableField(value = "f_delete_user_id", fill = FieldFill.UPDATE) + private String deleteUserId; + + @TableField(value = "f_delete_time", fill = FieldFill.UPDATE) + private Date deleteTime; + + @TableField(value = "f_delete_mark", updateStrategy = FieldStrategy.IGNORED) + private Integer deleteMark; + + @TableField(value = "f_flow_id") + private String flowId; + + @TableField(value = "f_flow_task_id") + private String flowTaskId; + + @TableField(value = "remark", updateStrategy = FieldStrategy.IGNORED) + private String remark; + + @TableField("mat_code") + private String matCode; + + @TableField("mat_name") + private String matName; + + @TableField(value = "parent_id", updateStrategy = FieldStrategy.IGNORED) + private Integer parentId; + + @TableField("mat_type") + private String matType; + + @TableField(value = "enabled_status", updateStrategy = FieldStrategy.IGNORED) + private Integer enabledStatus; + + @TableField("unit") + private String unit; + + @TableField("brand") + private String brand; + + @TableField("spec") + private String spec; + + @TableField(value = "safe_stock", updateStrategy = FieldStrategy.IGNORED) + private BigDecimal safeStock; + + @TableField(exist = false) + private String parentName; +} diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/entity/TbaCustomerEntity.java b/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/entity/TbaCustomerEntity.java new file mode 100644 index 0000000..eac9da8 --- /dev/null +++ b/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/entity/TbaCustomerEntity.java @@ -0,0 +1,107 @@ + +package jnpf.entity; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; + +import java.util.Date; + +/** + * 客户主数据表 + */ +@Data +@TableName("tba_customer") +public class TbaCustomerEntity { + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @TableField("cust_no") + private String custNo; + + @TableField("cust_name") + private String custName; + + @TableField("cust_sim_name") + private String custSimName; + + @TableField("industry_class") + private String industryClass; + + @TableField("coop_status") + private String coopStatus; + + @TableField("enterprise_type") + private String enterpriseType; + + @TableField("cust_reg") + private String custReg; + + @TableField("credit_rate") + private String creditRate; + + @TableField("contact1") + private String contact1; + + @TableField("con_phone1") + private String conPhone1; + + @TableField("con_address1") + private String conAddress1; + + @TableField("contact2") + private String contact2; + + @TableField("con_phone2") + private String conPhone2; + + @TableField("con_address2") + private String conAddress2; + + @TableField("com_tax_number") + private String comTaxNumber; + + @TableField("account_region") + private String accountRegion; + + @TableField("account_bank") + private String accountBank; + + @TableField("account_no") + private String accountNo; + + @TableField("pay_meth") + private String payMeth; + + @TableField(value = "f_creator_user_id", fill = FieldFill.INSERT) + private String creatorUserId; + + @TableField(value = "f_creator_time", fill = FieldFill.INSERT) + private Date creatorTime; + + @TableField(value = "f_last_modify_user_id", fill = FieldFill.INSERT_UPDATE) + private String lastModifyUserId; + + @TableField(value = "f_last_modify_time", fill = FieldFill.INSERT_UPDATE) + private Date lastModifyTime; + + @TableField(value = "f_delete_user_id", fill = FieldFill.UPDATE) + private String deleteUserId; + + @TableField(value = "f_delete_time", fill = FieldFill.UPDATE) + private Date deleteTime; + + @TableField(value = "f_delete_mark", updateStrategy = FieldStrategy.IGNORED) + private Integer deleteMark; + + @TableField(value = "f_flow_id") + private String flowId; + + @TableField(value = "f_flow_task_id") + private String flowTaskId; + + @TableField(value = "remark", updateStrategy = FieldStrategy.IGNORED) + private String remark; + + @TableField("enabled_status") + private String enabledStatus; +} diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/customer/CustomerForm.java b/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/customer/CustomerForm.java new file mode 100644 index 0000000..6b99c75 --- /dev/null +++ b/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/customer/CustomerForm.java @@ -0,0 +1,107 @@ +package jnpf.model.customer; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +/** + * 客户主数据 Form + */ +@Data +public class CustomerForm { + + @Schema(description = "主键") + private String id; + + @Schema(description = "客户编码") + private String custNo; + + @Schema(description = "客户全称") + private String custName; + + @Schema(description = "客户简称") + private String custSimName; + + @Schema(description = "所属行业(1钢铁 2 电力 3 化工)") + private String industryClass; + + @Schema(description = "合作状态(1 潜在 2意向 3正式 4暂停 5终止)") + private String coopStatus; + + @Schema(description = "企业性质 (1 国有企业 2 民营企业 3 外资企业)") + private String enterpriseType; + + @Schema(description = "客户等级(1 核心 2重点 3一般)") + private String custReg; + + @Schema(description = "信用等级(1优 2良 3中 4差)") + private String creditRate; + + @Schema(description = "联系人1") + private String contact1; + + @Schema(description = "联系电话1") + private String conPhone1; + + @Schema(description = "联系地址1") + private String conAddress1; + + @Schema(description = "联系人2") + private String contact2; + + @Schema(description = "联系电话2") + private String conPhone2; + + @Schema(description = "联系地址2") + private String conAddress2; + + @Schema(description = "公司税号") + private String comTaxNumber; + + @Schema(description = "开户地区") + private String accountRegion; + + @Schema(description = "开户银行") + private String accountBank; + + @Schema(description = "开户账号") + private String accountNo; + + @Schema(description = "付款方式(1 预付 2 月付 3承兑)") + private String payMeth; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "启用状态(1:启用2:未启用)") + private String enabledStatus; + + @Schema(description = "创建时间") + private Date creatorTime; + + @Schema(description = "创建用户ID") + private String creatorUserId; + + @Schema(description = "最后修改时间") + private Date lastModifyTime; + + @Schema(description = "最后修改用户ID") + private String lastModifyUserId; + + @Schema(description = "删除时间") + private Date deleteTime; + + @Schema(description = "删除用户ID") + private String deleteUserId; + + @Schema(description = "删除标记") + private Integer deleteMark; + + @Schema(description = "流程ID") + private String flowId; + + @Schema(description = "流程任务ID") + private String flowTaskId; + +} diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/customer/CustomerPagination.java b/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/customer/CustomerPagination.java new file mode 100644 index 0000000..58ca95f --- /dev/null +++ b/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/customer/CustomerPagination.java @@ -0,0 +1,44 @@ + +package jnpf.model.customer; + +import jnpf.base.Pagination; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 客户主数据分页查询 + */ +@Data +public class CustomerPagination extends Pagination { + private String[] selectKey; + private String json; + private String dataType; + private String superQueryJson; + private String moduleId; + private String menuId; + + @Schema(description = "客户编码") + private String custNo; + + @Schema(description = "客户全称") + private String custName; + + @Schema(description = "客户简称") + private String custSimName; + + @Schema(description = "所属行业") + private String industryClass; + + @Schema(description = "合作状态") + private String coopStatus; + + @Schema(description = "企业性质") + private String enterpriseType; + + @Schema(description = "客户等级") + private String custReg; + + @Schema(description = "启用状态") + private String enabledStatus; + +} diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/material/MaterialForm.java b/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/material/MaterialForm.java new file mode 100644 index 0000000..2c309e4 --- /dev/null +++ b/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/material/MaterialForm.java @@ -0,0 +1,80 @@ +package jnpf.model.material; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 物料主数据 Form + * + * @版本: V3.5 + * @版权: 引迈信息技术有限公司(https://www.jnpfsoft.com) + * @作者: JNPF开发平台组 + * @日期: 2024-04-09 + */ +@Data +public class MaterialForm { + + @Schema(description = "主键") + private String id; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "物料编码") + private String matCode; + + @Schema(description = "物料名称") + private String matName; + + @Schema(description = "父分类id") + private Integer parentId; + + @Schema(description = "物料类型(1 原材料 2 半成品 3 成品 )") + private String matType; + + @Schema(description = "状态(1启用 2 未启用)") + private Integer enabledStatus; + + @Schema(description = "单位") + private String unit; + + @Schema(description = "品牌") + private String brand; + + @Schema(description = "规格型号") + private String spec; + + @Schema(description = "安全库存") + private BigDecimal safeStock; + + @Schema(description = "创建时间") + private Date creatorTime; + + @Schema(description = "创建用户ID") + private String creatorUserId; + + @Schema(description = "最后修改时间") + private Date lastModifyTime; + + @Schema(description = "最后修改用户ID") + private String lastModifyUserId; + + @Schema(description = "删除时间") + private Date deleteTime; + + @Schema(description = "删除用户ID") + private String deleteUserId; + + @Schema(description = "删除标记") + private Integer deleteMark; + + @Schema(description = "流程ID") + private String flowId; + + @Schema(description = "流程任务ID") + private String flowTaskId; + +} diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/material/MaterialPagination.java b/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/material/MaterialPagination.java new file mode 100644 index 0000000..1ab7173 --- /dev/null +++ b/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/material/MaterialPagination.java @@ -0,0 +1,51 @@ +package jnpf.model.material; + +import jnpf.base.Pagination; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 物料主数据分页查询 + * + * @版本: V3.5 + * @版权: 引迈信息技术有限公司(https://www.jnpfsoft.com) + * @作者: JNPF开发平台组 + * @日期: 2024-04-09 + */ +@Data +public class MaterialPagination extends Pagination { + /** 查询key */ + private String[] selectKey; + /** json */ + private String json; + /** 数据类型 0-当前页,1-全部数据 */ + private String dataType; + /** 高级查询 */ + private String superQueryJson; + /** 功能id */ + private String moduleId; + /** 菜单id */ + private String menuId; + + @Schema(description = "物料编码") + private String matCode; + + @Schema(description = "物料名称") + private String matName; + + @Schema(description = "父分类id") + private Integer parentId; + + @Schema(description = "物料类型(1 原材料 2 半成品 3 成品 )") + private String matType; + + @Schema(description = "状态(1启用 2 未启用)") + private Integer enabledStatus; + + @Schema(description = "品牌") + private String brand; + + @Schema(description = "规格型号") + private String spec; + +} diff --git a/jnpf-java-boot/jnpf-extend/jnpf-extend-controller/src/main/java/jnpf/controller/CustomerController.java b/jnpf-java-boot/jnpf-extend/jnpf-extend-controller/src/main/java/jnpf/controller/CustomerController.java index 2d82eb7..4669772 100644 --- a/jnpf-java-boot/jnpf-extend/jnpf-extend-controller/src/main/java/jnpf/controller/CustomerController.java +++ b/jnpf-java-boot/jnpf-extend/jnpf-extend-controller/src/main/java/jnpf/controller/CustomerController.java @@ -1,10 +1,9 @@ package jnpf.controller; -import jnpf.base.controller.SuperController; -import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; -import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import jnpf.base.ActionResult; import jnpf.base.Pagination; import jnpf.base.controller.SuperController; @@ -17,10 +16,8 @@ import jnpf.model.customer.CustomerListVO; import jnpf.model.customer.CustomerUpForm; import jnpf.service.CustomerService; import jnpf.util.JsonUtil; -import jnpf.util.RandomUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.util.Assert; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; diff --git a/jnpf-java-boot/jnpf-system/jnpf-system-biz/src/main/java/jnpf/base/service/impl/DictionaryDataServiceImpl.java b/jnpf-java-boot/jnpf-system/jnpf-system-biz/src/main/java/jnpf/base/service/impl/DictionaryDataServiceImpl.java index 1afa017..97115a3 100644 --- a/jnpf-java-boot/jnpf-system/jnpf-system-biz/src/main/java/jnpf/base/service/impl/DictionaryDataServiceImpl.java +++ b/jnpf-java-boot/jnpf-system/jnpf-system-biz/src/main/java/jnpf/base/service/impl/DictionaryDataServiceImpl.java @@ -1,8 +1,7 @@ package jnpf.base.service.impl; -import jnpf.base.service.SuperServiceImpl; +import com.baomidou.dynamic.datasource.annotation.DSTransactional; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import jnpf.base.entity.DictionaryDataEntity; import jnpf.base.entity.DictionaryTypeEntity; import jnpf.base.mapper.DictionaryDataMapper; @@ -10,15 +9,14 @@ import jnpf.base.model.dictionarydata.DictionaryDataExportModel; import jnpf.base.model.dictionarytype.DictionaryExportModel; import jnpf.base.service.DictionaryDataService; import jnpf.base.service.DictionaryTypeService; +import jnpf.base.service.SuperServiceImpl; import jnpf.base.vo.DownloadVO; import jnpf.config.ConfigValueUtil; +import jnpf.emnus.ModuleTypeEnum; import jnpf.exception.DataException; import jnpf.util.*; -import jnpf.emnus.ModuleTypeEnum; -import jnpf.util.FileExport; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.baomidou.dynamic.datasource.annotation.DSTransactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import java.util.ArrayList; diff --git a/jnpf-java-boot/jnpf-system/jnpf-system-controller/src/main/java/jnpf/base/controller/DictionaryDataController.java b/jnpf-java-boot/jnpf-system/jnpf-system-controller/src/main/java/jnpf/base/controller/DictionaryDataController.java index 9f33253..8555b26 100644 --- a/jnpf-java-boot/jnpf-system/jnpf-system-controller/src/main/java/jnpf/base/controller/DictionaryDataController.java +++ b/jnpf-java-boot/jnpf-system/jnpf-system-controller/src/main/java/jnpf/base/controller/DictionaryDataController.java @@ -1,30 +1,29 @@ package jnpf.base.controller; import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; -import jnpf.base.controller.SuperController; import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Operation; import jnpf.base.ActionResult; +import jnpf.base.entity.DictionaryDataEntity; +import jnpf.base.entity.DictionaryTypeEntity; +import jnpf.base.model.dictionarydata.*; import jnpf.base.model.dictionarytype.DictionaryExportModel; +import jnpf.base.model.dictionarytype.DictionaryTypeSelectModel; +import jnpf.base.model.dictionarytype.DictionaryTypeSelectVO; import jnpf.base.service.DictionaryDataService; import jnpf.base.service.DictionaryTypeService; import jnpf.base.vo.DownloadVO; import jnpf.base.vo.ListVO; -import jnpf.base.entity.DictionaryDataEntity; -import jnpf.base.entity.DictionaryTypeEntity; import jnpf.config.ConfigValueUtil; import jnpf.constant.MsgCode; +import jnpf.emnus.ModuleTypeEnum; import jnpf.exception.DataException; -import jnpf.base.model.dictionarydata.*; -import jnpf.base.model.dictionarytype.DictionaryTypeSelectModel; -import jnpf.base.model.dictionarytype.DictionaryTypeSelectVO; import jnpf.util.FileUtil; import jnpf.util.JsonUtil; import jnpf.util.JsonUtilEx; import jnpf.util.StringUtil; -import jnpf.emnus.ModuleTypeEnum; import jnpf.util.treeutil.ListToTreeUtil; import jnpf.util.treeutil.SumTree; import jnpf.util.treeutil.newtreeutil.TreeDotUtils; @@ -34,7 +33,10 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -220,6 +222,30 @@ public class DictionaryDataController extends SuperController> selectorOneTreeViewByEnCode(@PathVariable("enCode") String enCode) { + + DictionaryTypeEntity typeEntity = dictionaryTypeService.getInfoByEnCode(enCode); + if (typeEntity == null) { + return ActionResult.success(new ListVO<>()); + } + List data = dictionaryDataService.getList(typeEntity.getId(), true); + if (data.isEmpty()) { + data = dictionaryDataService.getList(typeEntity.getId(), true); + } + List voListVO = JsonUtil.getJsonToList(data, DictionaryTypeSelectModel.class); + List> sumTrees = TreeDotUtils.convertListToTreeDot(voListVO); + List list = JsonUtil.getJsonToList(sumTrees, DictionaryTypeSelectVO.class); + ListVO vo = new ListVO<>(); + vo.setList(list); + return ActionResult.success(vo); + } + + /** * 获取数据字典信息 * diff --git a/jnpf-java-boot/jnpf-web/src/api/systemData/dictionary.js b/jnpf-java-boot/jnpf-web/src/api/systemData/dictionary.js index 2f0d12e..504c0df 100644 --- a/jnpf-java-boot/jnpf-web/src/api/systemData/dictionary.js +++ b/jnpf-java-boot/jnpf-web/src/api/systemData/dictionary.js @@ -84,6 +84,14 @@ export function getDictionaryDataSelector(dictionaryTypeId) { }) } +// 获取字典数据下拉框列表 +export function getDictionaryDataSelectorByEnCode(enCode) { + return request({ + url: `/api/system/DictionaryData/${enCode}/Data/SelectorByEnCode`, + method: 'GET' + }) +} + // 添加数据字典 export function createDictionaryData(data) { return request({ @@ -132,4 +140,20 @@ export function exportData(id) { url: `/api/system/DictionaryData/${id}/Actions/Export`, method: 'GET' }) -} \ No newline at end of file +} + +const cache = new Map(); + +export async function getDict(enCode) { + if (!cache.has(enCode)) { + const res = await getDictionaryDataSelectorByEnCode(enCode); + cache.set(enCode, res.data.list || []); + } + return cache.get(enCode); +} + +export function getLabel(options, value) { + const item = options?.find(i => i.id === value); + return item ? item.fullName : (value || ''); +} + diff --git a/jnpf-java-boot/jnpf-web/src/views/example/customer/detail.vue b/jnpf-java-boot/jnpf-web/src/views/example/customer/detail.vue new file mode 100644 index 0000000..e082d5c --- /dev/null +++ b/jnpf-java-boot/jnpf-web/src/views/example/customer/detail.vue @@ -0,0 +1,243 @@ + + + diff --git a/jnpf-java-boot/jnpf-web/src/views/example/customer/form.vue b/jnpf-java-boot/jnpf-web/src/views/example/customer/form.vue new file mode 100644 index 0000000..ca8e182 --- /dev/null +++ b/jnpf-java-boot/jnpf-web/src/views/example/customer/form.vue @@ -0,0 +1,270 @@ + + + diff --git a/jnpf-java-boot/jnpf-web/src/views/example/customer/index.vue b/jnpf-java-boot/jnpf-web/src/views/example/customer/index.vue new file mode 100644 index 0000000..2ffe65a --- /dev/null +++ b/jnpf-java-boot/jnpf-web/src/views/example/customer/index.vue @@ -0,0 +1,259 @@ + + + diff --git a/jnpf-java-boot/jnpf-web/src/views/example/machine/form.vue b/jnpf-java-boot/jnpf-web/src/views/example/machine/form.vue index 74fc12d..fabf443 100644 --- a/jnpf-java-boot/jnpf-web/src/views/example/machine/form.vue +++ b/jnpf-java-boot/jnpf-web/src/views/example/machine/form.vue @@ -3,12 +3,12 @@
-
- 保 存 - 取 消 -
+ + + +
- + diff --git a/jnpf-java-boot/jnpf-web/src/views/example/material/detail.vue b/jnpf-java-boot/jnpf-web/src/views/example/material/detail.vue new file mode 100644 index 0000000..c19b010 --- /dev/null +++ b/jnpf-java-boot/jnpf-web/src/views/example/material/detail.vue @@ -0,0 +1,190 @@ +NEW_FILE_CODE + + + diff --git a/jnpf-java-boot/jnpf-web/src/views/example/material/form.vue b/jnpf-java-boot/jnpf-web/src/views/example/material/form.vue new file mode 100644 index 0000000..d3f5d16 --- /dev/null +++ b/jnpf-java-boot/jnpf-web/src/views/example/material/form.vue @@ -0,0 +1,223 @@ + + + diff --git a/jnpf-java-boot/jnpf-web/src/views/example/material/index.vue b/jnpf-java-boot/jnpf-web/src/views/example/material/index.vue new file mode 100644 index 0000000..a314c94 --- /dev/null +++ b/jnpf-java-boot/jnpf-web/src/views/example/material/index.vue @@ -0,0 +1,255 @@ +NEW_FILE_CODE + + + diff --git a/jnpf-java-boot/jnpf-web/src/views/example/proc/form.vue b/jnpf-java-boot/jnpf-web/src/views/example/proc/form.vue index b56688b..510fd60 100644 --- a/jnpf-java-boot/jnpf-web/src/views/example/proc/form.vue +++ b/jnpf-java-boot/jnpf-web/src/views/example/proc/form.vue @@ -3,12 +3,12 @@
-
- 保 存 - 取 消 -
+ + + +
- + diff --git a/jnpf-java-boot/jnpf-web/src/views/example/proline/form.vue b/jnpf-java-boot/jnpf-web/src/views/example/proline/form.vue index 6e6d24b..1ae45ab 100644 --- a/jnpf-java-boot/jnpf-web/src/views/example/proline/form.vue +++ b/jnpf-java-boot/jnpf-web/src/views/example/proline/form.vue @@ -3,12 +3,12 @@
-
- 保 存 - 取 消 -
+ + + +
- +