diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/controller/CusMainController.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/controller/CusMainController.java index 7d40115..b95acee 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/controller/CusMainController.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/controller/CusMainController.java @@ -117,6 +117,7 @@ public class CusMainController extends BaseController @Log(title = "客户信息", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody CusMainVO cusMainVO){ + cusMainVO.getMainInfo().setCusCode(codeGenerator.generate()); cusMainService.saveNewCus(cusMainVO); return success(); } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/service/impl/CusMainServiceImpl.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/service/impl/CusMainServiceImpl.java index dba1928..32861d9 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/service/impl/CusMainServiceImpl.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/service/impl/CusMainServiceImpl.java @@ -1,12 +1,16 @@ package com.ruoyi.cus.service.impl; +import java.util.ArrayList; import java.util.List; +import java.util.Optional; + import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.cus.domain.*; import com.ruoyi.cus.mapper.*; import com.ruoyi.cus.service.*; import com.ruoyi.cus.vo.CusMainVO; +import com.ruoyi.cus.vo.MarkVO; import com.ruoyi.utils.SnowflakeIdGenerator; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -53,6 +57,9 @@ public class CusMainServiceImpl extends ServiceImpl impl @Transactional(rollbackFor = Exception.class) public void saveNewCus(CusMainVO cusMainVO) { CusMain cusMain = cusMainVO.getMainInfo(); + if(!cusMainVO.getMainInfo().getMainProdList().isEmpty()){ + cusMain.setMainProds(String.join(",",cusMainVO.getMainInfo().getMainProdList())); + } cusMainMapper.insert(cusMain); //联系人信息 List contacts = cusMainVO.getContact(); @@ -62,24 +69,56 @@ public class CusMainServiceImpl extends ServiceImpl impl } cusContactsService.saveBatch(contacts); //公司信息 - CusCompany cusCompany = cusMainVO.getCompanyInfo(); + CusCompany cusCompany = Optional.ofNullable(cusMainVO.getCompanyInfo()).orElseGet(CusCompany::new); cusCompany.setCusId(cusMain.getId()); cusCompanyService.save(cusCompany); //管理信息 - CusManager cusManager = cusMainVO.getManagementInfo(); + CusManager cusManager = Optional.ofNullable(cusMainVO.getManagementInfo()).orElseGet(CusManager::new); cusManager.setCusId(cusMain.getId()); cusManagerService.save(cusManager); //银行信息 - List bankList = cusMainVO.getBankInfo(); + List bankList = Optional.ofNullable(cusMainVO.getBankInfo()).orElseGet(ArrayList::new); if(!bankList.isEmpty()){ bankList.forEach(bank -> bank.setCusId(cusMain.getId())); cusBankService.saveBatch(bankList); } //唛头信息 - List markList = cusMainVO.getMark(); - if(!markList.isEmpty()){ - markList.forEach(mark -> mark.setCusId(cusMain.getId())); - cusMarkService.saveBatch(markList); - } + List markList = this.getMarkList(Optional.ofNullable(cusMainVO.getMark()).orElseGet(MarkVO::new), cusMain.getId()); + cusMarkService.saveBatch(markList); + } + + /** + * 将mark对象转为list存储 + * @author vinjor-M + * @date 15:09 2025/11/7 + * @return java.util.List + **/ + private List getMarkList(MarkVO markVO, String cusId) { + List markList = new ArrayList<>(); + markList.add(CusMark.builder() + .cusId(cusId) + .markPosition("主唛") + .textContent(markVO.getMainText()) + .imageUrl(markVO.getMainPic()) + .build()); + markList.add(CusMark.builder() + .cusId(cusId) + .markPosition("主侧唛") + .textContent(markVO.getMainSideText()) + .imageUrl(markVO.getMainSidePic()) + .build()); + markList.add(CusMark.builder() + .cusId(cusId) + .markPosition("内主唛") + .textContent(markVO.getInText()) + .imageUrl(markVO.getInPic()) + .build()); + markList.add(CusMark.builder() + .cusId(cusId) + .markPosition("内侧唛") + .textContent(markVO.getInSideText()) + .imageUrl(markVO.getInSidePic()) + .build()); + return markList; } } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/vo/CusMainVO.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/vo/CusMainVO.java index f73a70b..07b6bc4 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/vo/CusMainVO.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/vo/CusMainVO.java @@ -2,13 +2,14 @@ package com.ruoyi.cus.vo; import com.ruoyi.cus.domain.*; import lombok.Data; +import org.yaml.snakeyaml.error.Mark; import java.util.List; @Data public class CusMainVO { /** 客户信息 */ - private CusMain mainInfo; + private MainVO mainInfo; /** 联系人信息 */ private List contact; /** 公司信息 */ @@ -18,5 +19,5 @@ public class CusMainVO { /** 银行信息 */ private List bankInfo; /** 唛头信息 */ - private List mark; + private MarkVO mark; } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/vo/MainVO.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/vo/MainVO.java new file mode 100644 index 0000000..364677a --- /dev/null +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/vo/MainVO.java @@ -0,0 +1,14 @@ +package com.ruoyi.cus.vo; + +import com.ruoyi.cus.domain.CusMain; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class MainVO extends CusMain { + /** 主营产品list */ + private List mainProdList; +} diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/vo/MarkVO.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/vo/MarkVO.java new file mode 100644 index 0000000..c309d73 --- /dev/null +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/cus/vo/MarkVO.java @@ -0,0 +1,23 @@ +package com.ruoyi.cus.vo; + +import lombok.Data; + +@Data +public class MarkVO { + /** 主唛(文字)*/ + private String mainText; + /** 主唛(图形) */ + private String mainPic; + /** 主侧唛(文字) */ + private String mainSideText; + /** 主侧唛(图形) */ + private String mainSidePic; + /** 内主唛(文字) */ + private String inText; + /** 内主唛(图形) */ + private String inPic; + /** 内侧唛(文字) */ + private String inSideText; + /** 内侧唛(图形) */ + private String inSidePic; +} diff --git a/dl_admin/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/DlBaseEntity.java b/dl_admin/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/DlBaseEntity.java index 259b629..a1036fe 100644 --- a/dl_admin/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/DlBaseEntity.java +++ b/dl_admin/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/DlBaseEntity.java @@ -42,6 +42,7 @@ public class DlBaseEntity implements Serializable /** 是否删除(0未删除|1已删除) */ @TableLogic + @TableField(value = "del_flag", fill = FieldFill.INSERT) private String delFlag; /** 查询条件 */ diff --git a/dl_vue/src/views/cus/main/drawForm.vue b/dl_vue/src/views/cus/main/drawForm.vue index 0bb0d4a..da47508 100644 --- a/dl_vue/src/views/cus/main/drawForm.vue +++ b/dl_vue/src/views/cus/main/drawForm.vue @@ -20,7 +20,7 @@ - + @@ -40,7 +40,7 @@ - + - + @@ -279,7 +279,7 @@ export default { country: '', shortName: '', zoneName: '', - mainProds: "", + mainProdList: "", siteUrl: '', remark: "", files: "" @@ -309,13 +309,10 @@ export default { timeZoneList: [], // 表单校验 rules: { - cusCode: [ - { required: true, message: '请输入客户编码', trigger: 'blur' } - ], - fullName: [ + "mainInfo.fullName": [ { required: true, message: '请输入客户名称', trigger: 'blur' } ], - cusType: [ + "mainInfo.cusType": [ { required: true, message: '请选择客户类型', trigger: 'blur' } ], 'contact': [ @@ -338,7 +335,7 @@ export default { name: '', ifDefault: false, nickName: '', - sex: '0', + sex: '1', birthday: '', contactAddress: '', email: '', @@ -417,7 +414,7 @@ export default { country: '', shortName: '', zoneName: '', - mainProds: "", + mainProdList: "", siteUrl: '', remark: "", files: "" @@ -444,9 +441,33 @@ export default { }, /** 提交按钮 */ submitForm() { - this.$refs["formData"].validate(valid => { + this.$refs["form"].validate(valid => { if (valid) { + //操作联系人数据 + if(this.formData.contact.length>0){ + this.formData.contact.map((item)=>{ + if(item.telephone && item.telephonePre){ + item.telephone = item.telephonePre + item.telephone + } + if(item.whatsApp && item.whatsAppPre){ + item.whatsApp = item.whatsAppPre + item.whatsApp + } + }) + }else{ + this.$message.warning("请至少添加一个联系人") + return + } + addMain(this.formData).then(response => { + if(response.code==200){ + this.$message.success("新增成功"); + setTimeout(() => { + this.cancel() + },700) + }else{ + this.$message.error(response.msg); + } + }) } }) }, diff --git a/dl_vue/src/views/cus/main/index.vue b/dl_vue/src/views/cus/main/index.vue index f46a010..93f7df5 100644 --- a/dl_vue/src/views/cus/main/index.vue +++ b/dl_vue/src/views/cus/main/index.vue @@ -43,24 +43,15 @@ - 快速新增 - - - 新增 + + + 新建客户 + + + 快速新建 + 普通新建 + + - + - - 申请编码 + - + - + - + @@ -515,7 +514,7 @@ - + @@ -583,7 +582,7 @@ export default { country: '', shortName: '', zoneName: '', - mainProds: "", + mainProdList: "", siteUrl: '', remark:"", files:"" @@ -646,13 +645,10 @@ export default { timeZoneList: [], // 表单校验 rules: { - cusCode: [ - { required: true, message: '请输入客户编码', trigger: 'blur' } - ], - fullName: [ + 'mainInfo.fullName': [ { required: true, message: '请输入客户名称', trigger: 'blur' } ], - cusType: [ + 'mainInfo.cusType': [ { required: true, message: '请选择客户类型', trigger: 'blur' } ], 'contact': [ @@ -671,6 +667,15 @@ export default { const contentContainer = this.$refs.contentContainer this.debouncedScroll = debounce(this.handleContentScroll) contentContainer.addEventListener('scroll', this.debouncedScroll) + //生成客户编号 + // getCode().then(response => { + // if(response.code==200){ + // this.formData.mainInfo.cusCode=response.data; + // }else{ + // this.$message.error(response.msg); + // } + // } + // ); }, beforeDestroy() { // 移除滚动事件监听,避免内存泄漏 @@ -753,7 +758,7 @@ export default { name: '', ifDefault: false, nickName: '', - sex: '0', + sex: '1', birthday: '', contactAddress: '', email: '', @@ -814,11 +819,40 @@ export default { handleSaveAndNew() { // 保存并新建逻辑 console.log('保存并新建') + this.handleSave("refresh") }, - handleSave() { + handleSave(str) { // 保存逻辑 this.$refs['form'].validate(valid => { if (valid) { + //操作联系人数据 + if(this.formData.contact.length>0){ + this.formData.contact.map((item)=>{ + if(item.telephone && item.telephonePre){ + item.telephone = item.telephonePre + item.telephone + } + if(item.whatsApp && item.whatsAppPre){ + item.whatsApp = item.whatsAppPre + item.whatsApp + } + }) + }else{ + this.$message.warning("请至少添加一个联系人") + return + } + addMain(this.formData).then(response => { + if(response.code==200){ + this.$message.success("新增成功"); + setTimeout(() => { + if(str=="refresh"){ + location.reload() + }else{ + history.back() + } + },700) + }else{ + this.$message.error(response.msg); + } + }) } }) },