diff --git a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/customerinfo/CustomerInfoController.java b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/customerinfo/CustomerInfoController.java index e99aab72f1e6edbb5bfb21d4f34595b2fec5285e..85f31d87c2ac63ca6cff64b3d65c122172394342 100644 --- a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/customerinfo/CustomerInfoController.java +++ b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/customerinfo/CustomerInfoController.java @@ -1,5 +1,8 @@ package cn.iocoder.yudao.module.visit.controller.admin.customerinfo; +import cn.iocoder.yudao.module.visit.controller.admin.product.vo.ProductSimpleReqVO; +import cn.iocoder.yudao.module.visit.service.product.ProductService; +import com.fhs.common.utils.StringUtil; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -37,6 +40,8 @@ public class CustomerInfoController { @Resource private CustomerInfoService customerInfoService; + @Resource + private ProductService productService; @PostMapping("/create") @Operation(summary = "创建客户信息") @@ -68,7 +73,12 @@ public class CustomerInfoController { @PreAuthorize("@ss.hasPermission('visit:customer-info:query')") public CommonResult getCustomerInfo(@RequestParam("id") Long id) { CustomerInfoDO customerInfo = customerInfoService.getCustomerInfo(id); - return success(BeanUtils.toBean(customerInfo, CustomerInfoRespVO.class)); + CustomerInfoRespVO bean = BeanUtils.toBean(customerInfo, CustomerInfoRespVO.class); +// if (!StringUtil.isEmpty(customerInfo.getProductIds())){ +// List productSimpleReqVO = productService.getProductByIds(customerInfo.getProductIds()); +// bean.setProductList(productSimpleReqVO); +// } + return success(bean); } @GetMapping("/page") diff --git a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/customerinfo/vo/CustomerInfoRespVO.java b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/customerinfo/vo/CustomerInfoRespVO.java index 2909cc8e6d46be61975426b00bf5c18af495a3aa..44aaafbc3d703172f73f93c17c0e6c609dfab343 100644 --- a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/customerinfo/vo/CustomerInfoRespVO.java +++ b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/customerinfo/vo/CustomerInfoRespVO.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.visit.controller.admin.customerinfo.vo; +import cn.iocoder.yudao.module.visit.controller.admin.product.vo.ProductSimpleReqVO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -36,6 +37,16 @@ public class CustomerInfoRespVO { @DictFormat("customer_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 private Integer customerType; + //省名称 + @Schema(description = "省名称", requiredMode = Schema.RequiredMode.REQUIRED) + private String provinceName; + //市名称 + @Schema(description = "市名称", requiredMode = Schema.RequiredMode.REQUIRED) + private String cityName; + //区名称 + @Schema(description = "区名称", requiredMode = Schema.RequiredMode.REQUIRED) + private String areaName; + @Schema(description = "所在地区", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("所在地区") private String regionFullName; @@ -54,8 +65,8 @@ public class CustomerInfoRespVO { @ExcelProperty("产品ID") private String productIds; - @Schema(description = "部门", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("部门") + @Schema(description = "客户所属部门", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("客户所属部门") @DictFormat("customer_dept") private String department; @@ -67,4 +78,7 @@ public class CustomerInfoRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; + @Schema(description = "产品信息List对象") + private List productList; + } \ No newline at end of file diff --git a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/info/InfoController.java b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/info/InfoController.java index 5fbdb29f403cf37f581c30c9f2057b67d4a08441..324f5f5c0fe8a3f89f5ec1947337e78a8e0c0dcf 100644 --- a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/info/InfoController.java +++ b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/info/InfoController.java @@ -33,7 +33,7 @@ import cn.iocoder.yudao.module.visit.service.info.InfoService; @RestController @RequestMapping("/visit/info") @Validated -public class InfoController { +public class InfoController { @Resource private InfoService infoService; diff --git a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/info/vo/InfoPageReqVO.java b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/info/vo/InfoPageReqVO.java index 0db3e48686f83d513f1657be53dcdf45904c3db7..6883ef85382150e09b30f36848dec3bba27e844d 100644 --- a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/info/vo/InfoPageReqVO.java +++ b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/info/vo/InfoPageReqVO.java @@ -9,6 +9,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @Schema(description = "管理后台 - 客户拜访记录分页 Request VO") @@ -26,8 +27,11 @@ public class InfoPageReqVO extends PageParam { @Schema(description = "客户公司名称") private String companyName; + @Schema(description = "所在地区") + private String regionFullName; + @Schema(description = "拜访日期") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) private LocalDate[] visitDate; @Schema(description = "性质等级", example = "1") diff --git a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/info/vo/InfoRespVO.java b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/info/vo/InfoRespVO.java index abfce77b73c9d25282dfe827cb09143029d18b5d..cd49d04aa07e9e04c523b549df96ab8c8eade6ca 100644 --- a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/info/vo/InfoRespVO.java +++ b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/info/vo/InfoRespVO.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.visit.controller.admin.info.vo; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; @@ -12,6 +13,9 @@ import com.alibaba.excel.annotation.*; import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + @Schema(description = "管理后台 - 客户拜访记录 Response VO") @Data @ExcelIgnoreUnannotated @@ -33,12 +37,39 @@ public class InfoRespVO { @ExcelProperty("客户公司名称") private String companyName; + @Schema(description = "所在地区", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("所在地区") + private String regionFullName; + + @Schema(description = "省名称", requiredMode = Schema.RequiredMode.REQUIRED) + private String provinceName; + + @Schema(description = "市名称", requiredMode = Schema.RequiredMode.REQUIRED) + private String cityName; + + @Schema(description = "区名称", requiredMode = Schema.RequiredMode.REQUIRED) + private String areaName; + + @Schema(description = "定位地址文字描述", requiredMode = Schema.RequiredMode.REQUIRED) + private String locationText; + + @Schema(description = "经度", requiredMode = Schema.RequiredMode.REQUIRED) + private BigDecimal longitude; + + @Schema(description = "纬度", requiredMode = Schema.RequiredMode.REQUIRED) + private BigDecimal latitude; + + @Schema(description = "定位静态图URL", requiredMode = Schema.RequiredMode.REQUIRED) + private String locationImage; + @Schema(description = "拜访日期", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("拜访日期") + @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate visitDate; @Schema(description = "性质等级", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @ExcelProperty("性质等级") + @ExcelProperty(value = "性质等级", converter = DictConvert.class) + @DictFormat("customer_type") private Integer customerStatus; @Schema(description = "拜访品种(多选,逗号分隔)") @@ -59,4 +90,18 @@ public class InfoRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; + @Schema(description = "服务内容") + @ExcelProperty("服务内容") + private String serviceContent; + + @Schema(description = "客户反馈") + @ExcelProperty("客户反馈") + private String customerFeedback; + + @Schema(description = "服务记录图片URL列表(JSON数组)") + @ExcelProperty("服务记录图片URL列表(JSON数组)") + private String serviceImages; + + + } \ No newline at end of file diff --git a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/info/vo/InfoSaveReqVO.java b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/info/vo/InfoSaveReqVO.java index 1bfc036af91052be3d27fa9c61b6ca842fa05f6f..0dcfd47d13c69c7f742fcf214a0e4c14ff6da2b2 100644 --- a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/info/vo/InfoSaveReqVO.java +++ b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/info/vo/InfoSaveReqVO.java @@ -39,6 +39,9 @@ public class InfoSaveReqVO { @NotEmpty(message = "区名称不能为空") private String areaName; + @Schema(description = "所在地区") + private String regionFullName; + @Schema(description = "定位地址文字描述", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "定位地址文字描述不能为空") private String locationText; diff --git a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/product/ProductController.java b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/product/ProductController.java index 4f304144b1031587e09e3be3e13da2eb90ad73b7..813cee213531a8b09657bd017c6d38a2e930dec9 100644 --- a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/product/ProductController.java +++ b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/product/ProductController.java @@ -76,6 +76,15 @@ public class ProductController { return success(BeanUtils.toBean(product, ProductRespVO.class)); } + @GetMapping("/getListByIds") + @Operation(summary = "获得产品") + @Parameter(name = "ids", description = "编号", required = true, example = "1024,1023") + @PreAuthorize("@ss.hasPermission('visit:product:query')") + public CommonResult> getProduct(@RequestParam("ids") String ids) { + List productByIds = productService.getProductByIds(ids); + return success(productByIds); + } + @GetMapping("/page") @Operation(summary = "获得产品分页") @PreAuthorize("@ss.hasPermission('visit:product:query')") diff --git a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/product/vo/ProductSimpleReqVO.java b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/product/vo/ProductSimpleReqVO.java new file mode 100644 index 0000000000000000000000000000000000000000..8d020aff1035305bcb4c8da7bb0272e88caea62d --- /dev/null +++ b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/controller/admin/product/vo/ProductSimpleReqVO.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.module.visit.controller.admin.product.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 产品弹窗 Request VO") +@Data +@ToString(callSuper = true) +public class ProductSimpleReqVO { + + @Schema(description = "编号", example = "1") + private Long id; + + @Schema(description = "品种名称", example = "阿莫西林胶囊") + private String productName; + + @Schema(description = "包装信息", example = "盒装") + private String packageName; + + @Schema(description = "规格", example = "10x20mg") + private String specification; + +} \ No newline at end of file diff --git a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/dal/dataobject/info/InfoDO.java b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/dal/dataobject/info/InfoDO.java index 45578461ceadd97ae5aefbd41b13dda2e9040e1d..d3d220f1de9f0ec465f4f37f03675618867d4766 100644 --- a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/dal/dataobject/info/InfoDO.java +++ b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/dal/dataobject/info/InfoDO.java @@ -67,6 +67,10 @@ public class InfoDO extends BaseDO { * 区名称 */ private String areaName; + /** + * 所在地区 + */ + private String regionFullName; /** * 定位地址文字描述 */ diff --git a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/service/product/ProductService.java b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/service/product/ProductService.java index f36e1e8d7404bad473d7f88d89ebf273460e57da..aa5b2aab9c87116749595fe3679d130d54cd522e 100644 --- a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/service/product/ProductService.java +++ b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/service/product/ProductService.java @@ -59,4 +59,6 @@ public interface ProductService { * @return 产品分页 */ ProductImportRespVO importProductList(List list, Boolean updateSupport); + + List getProductByIds(String productIds); } \ No newline at end of file diff --git a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/service/product/ProductServiceImpl.java b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/service/product/ProductServiceImpl.java index f269ae3972a47bc5ac715e4c1a3334848a10dc9e..e973d910a0746c24e1aa2433c6f32536299f9b93 100644 --- a/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/service/product/ProductServiceImpl.java +++ b/yudao-module-visit/src/main/java/cn/iocoder/yudao/module/visit/service/product/ProductServiceImpl.java @@ -111,6 +111,22 @@ public class ProductServiceImpl implements ProductService { return respVO; } + @Override + public List getProductByIds(String productIds) { + //1.判断productIds是否为空 + if (StrUtil.isEmpty(productIds)) { + return new ArrayList<>(); + } + //2.按逗号切分成数组 + String[] ids = productIds.split(","); + //3.判断数组长度 + if (ids.length > 0) { + List productDOS = productMapper.selectByIds(Arrays.asList(ids)); + return BeanUtils.toBean(productDOS, ProductSimpleReqVO.class); + } + return new ArrayList<>(); + } + private void validateProductUnique(String productName, String specification, String packageName) { ProductPageReqVO productPageReqVO = new ProductPageReqVO(); diff --git a/yudao-ui/yudao-ui-admin-vue3/package-lock.json b/yudao-ui/yudao-ui-admin-vue3/package-lock.json index 15800d7eb2342e2a6e3d00ea19feed8bdf5d1ac2..a2501b3c9d9b71665f40c5b2c54373147094e3ce 100644 --- a/yudao-ui/yudao-ui-admin-vue3/package-lock.json +++ b/yudao-ui/yudao-ui-admin-vue3/package-lock.json @@ -26,7 +26,7 @@ "camunda-bpmn-moddle": "^7.0.1", "cropperjs": "^1.6.1", "crypto-js": "^4.2.0", - "dayjs": "^1.11.10", + "dayjs": "^1.11.13", "diagram-js": "^12.8.0", "driver.js": "^1.3.1", "echarts": "^5.5.0", @@ -9042,8 +9042,7 @@ "node_modules/dayjs": { "version": "1.11.13", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", - "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", - "license": "MIT" + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" }, "node_modules/de-indent": { "version": "1.0.2", diff --git a/yudao-ui/yudao-ui-admin-vue3/package.json b/yudao-ui/yudao-ui-admin-vue3/package.json index 8aa2b56f968f1936391090bffa982b5bdef0dfbc..77e9df00504a497efa51074fbebf68e3517a7ee2 100644 --- a/yudao-ui/yudao-ui-admin-vue3/package.json +++ b/yudao-ui/yudao-ui-admin-vue3/package.json @@ -42,7 +42,7 @@ "camunda-bpmn-moddle": "^7.0.1", "cropperjs": "^1.6.1", "crypto-js": "^4.2.0", - "dayjs": "^1.11.10", + "dayjs": "^1.11.13", "diagram-js": "^12.8.0", "driver.js": "^1.3.1", "echarts": "^5.5.0", diff --git a/yudao-ui/yudao-ui-admin-vue3/src/api/visit/customerinfo/index.ts b/yudao-ui/yudao-ui-admin-vue3/src/api/visit/customerinfo/index.ts index 00d80ddccfa1759caee12ae91a59dc4cfbaa256c..c469ec0bdeda0fc349b4987355072f1736dfd605 100644 --- a/yudao-ui/yudao-ui-admin-vue3/src/api/visit/customerinfo/index.ts +++ b/yudao-ui/yudao-ui-admin-vue3/src/api/visit/customerinfo/index.ts @@ -1,53 +1,58 @@ -import request from '@/config/axios' - -// 客户信息 VO -export interface CustomerInfoVO { - id: number // 编号 - customerName: string // 客户姓名 - contact: string // 联系方式 - companyName: string // 公司名称 - customerType: number // 性质等级 - provinceName: string // 省名称 - cityName: string // 市名称 - areaName: string // 区名称 - regionFullName: string // 所在地区 - locationText: string // 详细地址 - longitude: number // 经度 - latitude: number // 纬度 - locationImage: string // 定位静态图 URL - productIds: string // 产品信息 - department: string // 客户部门 -} - -// 客户信息 API -export const CustomerInfoApi = { - // 查询客户信息分页 - getCustomerInfoPage: async (params: any) => { - return await request.get({ url: `/visit/customer-info/page`, params }) - }, - - // 查询客户信息详情 - getCustomerInfo: async (id: number) => { - return await request.get({ url: `/visit/customer-info/get?id=` + id }) - }, - - // 新增客户信息 - createCustomerInfo: async (data: CustomerInfoVO) => { - return await request.post({ url: `/visit/customer-info/create`, data }) - }, - - // 修改客户信息 - updateCustomerInfo: async (data: CustomerInfoVO) => { - return await request.put({ url: `/visit/customer-info/update`, data }) - }, - - // 删除客户信息 - deleteCustomerInfo: async (id: number) => { - return await request.delete({ url: `/visit/customer-info/delete?id=` + id }) - }, - - // 导出客户信息 Excel - exportCustomerInfo: async (params) => { - return await request.download({ url: `/visit/customer-info/export-excel`, params }) - }, -} \ No newline at end of file +import request from '@/config/axios' + +// 客户信息 VO +export interface CustomerInfoVO { + id: number // 编号 + customerName: string // 客户姓名 + contact: string // 联系方式 + companyName: string // 公司名称 + customerType: number // 性质等级 + provinceName: string // 省名称 + cityName: string // 市名称 + areaName: string // 区名称 + regionFullName: string // 所在地区 + locationText: string // 详细地址 + longitude: number // 经度 + latitude: number // 纬度 + locationImage: string // 定位静态图 URL + productIds: string // 产品信息 + department: string // 客户部门 +} + +// 客户信息 API +export const CustomerInfoApi = { + // 查询客户信息分页 + getCustomerInfoPage: async (params: any) => { + return await request.get({ url: `/visit/customer-info/page`, params }) + }, + + // 查询客户信息详情 + getCustomerInfo: async (id: number) => { + return await request.get({ url: `/visit/customer-info/get?id=` + id }) + }, + + // 查询客户信息中拜访品种详情 + getProductSimpleList: async (id: number) => { + return await request.get({ url: `/visit/customer-info/getProductSimpleList?id=` + id }) + }, + + // 新增客户信息 + createCustomerInfo: async (data: CustomerInfoVO) => { + return await request.post({ url: `/visit/customer-info/create`, data }) + }, + + // 修改客户信息 + updateCustomerInfo: async (data: CustomerInfoVO) => { + return await request.put({ url: `/visit/customer-info/update`, data }) + }, + + // 删除客户信息 + deleteCustomerInfo: async (id: number) => { + return await request.delete({ url: `/visit/customer-info/delete?id=` + id }) + }, + + // 导出客户信息 Excel + exportCustomerInfo: async (params) => { + return await request.download({ url: `/visit/customer-info/export-excel`, params }) + }, +} diff --git a/yudao-ui/yudao-ui-admin-vue3/src/api/visit/product/index.ts b/yudao-ui/yudao-ui-admin-vue3/src/api/visit/product/index.ts index ea00260c0c862e30369203e9a8bf64c100a2e812..c354dbb05d4ec4037618afd60c1f415a9d863739 100644 --- a/yudao-ui/yudao-ui-admin-vue3/src/api/visit/product/index.ts +++ b/yudao-ui/yudao-ui-admin-vue3/src/api/visit/product/index.ts @@ -21,6 +21,11 @@ export const ProductApi = { return await request.get({ url: `/visit/product/get?id=` + id }) }, + // 查询产品详情ByIds + getProductByIds: async (ids: string) => { + return await request.get({ url: `/visit/product/getListByIds?ids=` + ids }) + }, + // 新增产品 createProduct: async (data: ProductVO) => { return await request.post({ url: `/visit/product/create`, data }) diff --git a/yudao-ui/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadImgs.vue b/yudao-ui/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadImgs.vue index 3f2fd11a85c5d4b9f8dfd4dcb4522ee871292722..6c9b5a953af9d82067ddf7bd0b93bc17d01a9049 100644 --- a/yudao-ui/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadImgs.vue +++ b/yudao-ui/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadImgs.vue @@ -136,19 +136,24 @@ const uploadSuccess: UploadProps['onSuccess'] = (res: any): void => { // 监听模型绑定值变动 watch( () => props.modelValue, - (val: string | string[]) => { - if (!val) { - fileList.value = [] // fix:处理掉缓存,表单重置后上传组件的内容并没有重置 - return + (val) => { + // 防止 val 为字符串、null、undefined 报错 + let urls: string[] = [] + + if (Array.isArray(val)) { + urls = val + } else if (typeof val === 'string') { + urls = val.split(',').filter((url) => url.trim() !== '') } - fileList.value = [] // 保障数据为空 - fileList.value.push( - ...(val as string[]).map((url) => ({ name: url.substring(url.lastIndexOf('/') + 1), url })) - ) + fileList.value = urls.map((url) => ({ + name: url.substring(url.lastIndexOf('/') + 1), + url + })) }, - { immediate: true, deep: true } + { immediate: true } ) + // 发送图片链接列表更新 const emitUpdateModelValue = () => { let result: string[] = fileList.value.map((file) => file.url!) diff --git a/yudao-ui/yudao-ui-admin-vue3/src/views/visit/customerinfo/CustomerInfoForm.vue b/yudao-ui/yudao-ui-admin-vue3/src/views/visit/customerinfo/CustomerInfoForm.vue index abbb28350ef9ce736ba0699aef740a9044bcc484..1d995369e755757c58cec71e67798352e0a03c58 100644 --- a/yudao-ui/yudao-ui-admin-vue3/src/views/visit/customerinfo/CustomerInfoForm.vue +++ b/yudao-ui/yudao-ui-admin-vue3/src/views/visit/customerinfo/CustomerInfoForm.vue @@ -70,7 +70,15 @@ - + + + @@ -88,11 +96,14 @@ 取 消 + diff --git a/yudao-ui/yudao-ui-admin-vue3/src/views/visit/customerinfo/index.vue b/yudao-ui/yudao-ui-admin-vue3/src/views/visit/customerinfo/index.vue index 57b2ceb2e163bf04d3f5c09475c17cfade58ce46..7a8da9c8a97ebd66ce671c2c24296f717dd90de2 100644 --- a/yudao-ui/yudao-ui-admin-vue3/src/views/visit/customerinfo/index.vue +++ b/yudao-ui/yudao-ui-admin-vue3/src/views/visit/customerinfo/index.vue @@ -105,6 +105,11 @@ :formatter="dateFormatter" width="180px" /> + + + + + + + diff --git a/yudao-ui/yudao-ui-admin-vue3/src/views/visit/info/InfoForm.vue b/yudao-ui/yudao-ui-admin-vue3/src/views/visit/info/InfoForm.vue index 78a0f9e931750c27425ffb404882bc91528e7232..7811b0a76cdad16ddffc622386dc778281694c48 100644 --- a/yudao-ui/yudao-ui-admin-vue3/src/views/visit/info/InfoForm.vue +++ b/yudao-ui/yudao-ui-admin-vue3/src/views/visit/info/InfoForm.vue @@ -13,30 +13,54 @@ - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + - - 请选择字典生成 - + + + - + + + @@ -80,7 +117,7 @@ - + + diff --git a/yudao-ui/yudao-ui-admin-vue3/src/views/visit/info/index.vue b/yudao-ui/yudao-ui-admin-vue3/src/views/visit/info/index.vue index 7ce97c8cc78f03e29eee3e8ff01e4e167d20d61e..2e27bf6db09a9c01a14bf274f3f6576e780526f3 100644 --- a/yudao-ui/yudao-ui-admin-vue3/src/views/visit/info/index.vue +++ b/yudao-ui/yudao-ui-admin-vue3/src/views/visit/info/index.vue @@ -137,8 +137,13 @@ + - + + +