diff --git a/propertyManagement-admin/src/main/java/com/propertyManagement/web/controller/business/ConvenienceServiceController.java b/propertyManagement-admin/src/main/java/com/propertyManagement/web/controller/business/ConvenienceServiceController.java new file mode 100644 index 0000000000000000000000000000000000000000..d55b4b0371d903166bf2bfd6da502d26634d601a --- /dev/null +++ b/propertyManagement-admin/src/main/java/com/propertyManagement/web/controller/business/ConvenienceServiceController.java @@ -0,0 +1,106 @@ +package com.propertyManagement.web.controller.business; + +import java.util.List; +import java.util.Arrays; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.propertyManagement.common.annotation.RepeatSubmit; +import com.propertyManagement.common.annotation.Log; +import com.propertyManagement.common.core.controller.BaseController; +import com.propertyManagement.common.core.domain.PageQuery; +import com.propertyManagement.common.core.domain.R; +import com.propertyManagement.common.core.validate.AddGroup; +import com.propertyManagement.common.core.validate.EditGroup; +import com.propertyManagement.common.enums.BusinessType; +import com.propertyManagement.common.utils.poi.ExcelUtil; +import com.propertyManagement.business.domain.vo.ConvenienceServiceVo; +import com.propertyManagement.business.domain.bo.ConvenienceServiceBo; +import com.propertyManagement.business.service.IConvenienceServiceService; +import com.propertyManagement.common.core.page.TableDataInfo; + +/** + * 便民服务 + * + * @author Ashe + * @date 2025-08-13 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/business/converienceService") +public class ConvenienceServiceController extends BaseController { + + private final IConvenienceServiceService iConvenienceServiceService; + + /** + * 查询便民服务列表 + */ + @SaCheckPermission("business:converienceService:list") + @GetMapping("/list") + public TableDataInfo list(ConvenienceServiceBo bo, PageQuery pageQuery) { + return iConvenienceServiceService.queryPageList(bo, pageQuery); + } + + /** + * 导出便民服务列表 + */ + @SaCheckPermission("business:converienceService:export") + @Log(title = "便民服务", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(ConvenienceServiceBo bo, HttpServletResponse response) { + List list = iConvenienceServiceService.queryList(bo); + ExcelUtil.exportExcel(list, "便民服务", ConvenienceServiceVo.class, response); + } + + /** + * 获取便民服务详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("business:converienceService:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(iConvenienceServiceService.queryById(id)); + } + + /** + * 新增便民服务 + */ + @SaCheckPermission("business:converienceService:add") + @Log(title = "便民服务", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody ConvenienceServiceBo bo) { + return toAjax(iConvenienceServiceService.insertByBo(bo)); + } + + /** + * 修改便民服务 + */ + @SaCheckPermission("business:converienceService:edit") + @Log(title = "便民服务", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody ConvenienceServiceBo bo) { + return toAjax(iConvenienceServiceService.updateByBo(bo)); + } + + /** + * 删除便民服务 + * + * @param ids 主键串 + */ + @SaCheckPermission("business:converienceService:remove") + @Log(title = "便民服务", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iConvenienceServiceService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/propertyManagement-admin/src/main/java/com/propertyManagement/web/controller/business/api/ApiConvenienceServiceController.java b/propertyManagement-admin/src/main/java/com/propertyManagement/web/controller/business/api/ApiConvenienceServiceController.java new file mode 100644 index 0000000000000000000000000000000000000000..3b56e9d567d7ad84873a1fa6b00fc79108c28613 --- /dev/null +++ b/propertyManagement-admin/src/main/java/com/propertyManagement/web/controller/business/api/ApiConvenienceServiceController.java @@ -0,0 +1,103 @@ +package com.propertyManagement.web.controller.business.api; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.propertyManagement.business.domain.bo.ConvenienceServiceBo; +import com.propertyManagement.business.domain.vo.ConvenienceServiceVo; +import com.propertyManagement.business.service.IConvenienceServiceService; +import com.propertyManagement.common.annotation.Anonymous; +import com.propertyManagement.common.annotation.Log; +import com.propertyManagement.common.annotation.RepeatSubmit; +import com.propertyManagement.common.core.controller.BaseController; +import com.propertyManagement.common.core.domain.PageQuery; +import com.propertyManagement.common.core.domain.R; +import com.propertyManagement.common.core.page.TableDataInfo; +import com.propertyManagement.common.core.validate.AddGroup; +import com.propertyManagement.common.core.validate.EditGroup; +import com.propertyManagement.common.enums.BusinessType; +import com.propertyManagement.common.utils.poi.ExcelUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.Arrays; +import java.util.List; + +/** + * 便民服务 + * + * @author Ashe + * @date 2025-08-13 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/api/converienceService") +public class ApiConvenienceServiceController extends BaseController { + + private final IConvenienceServiceService iConvenienceServiceService; + + /** + * 查询便民服务列表 + */ + @Anonymous + @GetMapping("/list") + public TableDataInfo list(ConvenienceServiceBo bo, PageQuery pageQuery) { + return iConvenienceServiceService.queryPageList(bo, pageQuery); + } + + /** + * 导出便民服务列表 + */ + @Log(title = "便民服务", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(ConvenienceServiceBo bo, HttpServletResponse response) { + List list = iConvenienceServiceService.queryList(bo); + ExcelUtil.exportExcel(list, "便民服务", ConvenienceServiceVo.class, response); + } + + /** + * 获取便民服务详细信息 + * + * @param id 主键 + */ + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(iConvenienceServiceService.queryById(id)); + } + + /** + * 新增便民服务 + */ + @Log(title = "便民服务", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody ConvenienceServiceBo bo) { + return toAjax(iConvenienceServiceService.insertByBo(bo)); + } + + /** + * 修改便民服务 + */ + @Log(title = "便民服务", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody ConvenienceServiceBo bo) { + return toAjax(iConvenienceServiceService.updateByBo(bo)); + } + + /** + * 删除便民服务 + * + * @param ids 主键串 + */ + @Log(title = "便民服务", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iConvenienceServiceService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/propertyManagement-business/src/main/java/com/propertyManagement/business/domain/ConvenienceService.java b/propertyManagement-business/src/main/java/com/propertyManagement/business/domain/ConvenienceService.java new file mode 100644 index 0000000000000000000000000000000000000000..0a1700515cf7b49edb80b8e39f3bafd01bf9fa1d --- /dev/null +++ b/propertyManagement-business/src/main/java/com/propertyManagement/business/domain/ConvenienceService.java @@ -0,0 +1,47 @@ +package com.propertyManagement.business.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.io.Serializable; +import java.util.Date; +import java.math.BigDecimal; + +import com.propertyManagement.common.core.domain.BaseEntity; + +/** + * 便民服务对象 convenience_service + * + * @author Ashe + * @date 2025-08-13 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("convenience_service") +public class ConvenienceService extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 主键 + */ + @TableId(value = "id") + private Long id; + /** + * 服务类型(1=洗衣服务,2=清洁服务,3=超市服务,4=送水服务) + */ + private Long serviceType; + /** + * 描述 + */ + private String description; + /** + * 预约热线 + */ + private String bookPhone; + /** + * 轮播图 + */ + private String serviceBanner; + +} diff --git a/propertyManagement-business/src/main/java/com/propertyManagement/business/domain/bo/ConvenienceServiceBo.java b/propertyManagement-business/src/main/java/com/propertyManagement/business/domain/bo/ConvenienceServiceBo.java new file mode 100644 index 0000000000000000000000000000000000000000..2efbd2ee638b9d177a75749f12c5ed9b0b7aa988 --- /dev/null +++ b/propertyManagement-business/src/main/java/com/propertyManagement/business/domain/bo/ConvenienceServiceBo.java @@ -0,0 +1,54 @@ +package com.propertyManagement.business.domain.bo; + +import com.propertyManagement.common.core.validate.AddGroup; +import com.propertyManagement.common.core.validate.EditGroup; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.util.Date; + +import com.propertyManagement.common.core.domain.BaseEntity; + +/** + * 便民服务业务对象 convenience_service + * + * @author Ashe + * @date 2025-08-13 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class ConvenienceServiceBo extends BaseEntity { + + /** + * 主键 + */ + private Long id; + + /** + * 服务类型(1=洗衣服务,2=清洁服务,3=超市服务,4=送水服务) + */ + @NotNull(message = "服务类型(1=洗衣服务,2=清洁服务,3=超市服务,4=送水服务)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long serviceType; + + /** + * 描述 + */ + @NotBlank(message = "描述不能为空", groups = { AddGroup.class, EditGroup.class }) + private String description; + + /** + * 预约热线 + */ + @NotBlank(message = "预约热线不能为空", groups = { AddGroup.class, EditGroup.class }) + private String bookPhone; + + /** + * 轮播图 + */ + @NotBlank(message = "轮播图不能为空", groups = { AddGroup.class, EditGroup.class }) + private String serviceBanner; + + +} diff --git a/propertyManagement-business/src/main/java/com/propertyManagement/business/domain/vo/ConvenienceServiceVo.java b/propertyManagement-business/src/main/java/com/propertyManagement/business/domain/vo/ConvenienceServiceVo.java new file mode 100644 index 0000000000000000000000000000000000000000..79621ce2e9e0495e566b5c896224f81006243ead --- /dev/null +++ b/propertyManagement-business/src/main/java/com/propertyManagement/business/domain/vo/ConvenienceServiceVo.java @@ -0,0 +1,52 @@ +package com.propertyManagement.business.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.propertyManagement.common.annotation.ExcelDictFormat; +import com.propertyManagement.common.convert.ExcelDictConvert; +import lombok.Data; +import java.util.Date; + +import java.io.Serializable; + +/** + * 便民服务视图对象 convenience_service + * + * @author Ashe + * @date 2025-08-13 + */ +@Data +@ExcelIgnoreUnannotated +public class ConvenienceServiceVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + /** + * 服务类型(1=洗衣服务,2=清洁服务,3=超市服务,4=送水服务) + */ + @ExcelProperty(value = "服务类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "convenience_service") + private Long serviceType; + + /** + * 描述 + */ + @ExcelProperty(value = "描述") + private String description; + + /** + * 预约热线 + */ + @ExcelProperty(value = "预约热线") + private String bookPhone; + + /** + * 轮播图 + */ + @ExcelProperty(value = "轮播图") + private String serviceBanner; + + +} diff --git a/propertyManagement-business/src/main/java/com/propertyManagement/business/mapper/ConvenienceServiceMapper.java b/propertyManagement-business/src/main/java/com/propertyManagement/business/mapper/ConvenienceServiceMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..d800f40787dd8f6e268f874c400f9c8b40b1d06d --- /dev/null +++ b/propertyManagement-business/src/main/java/com/propertyManagement/business/mapper/ConvenienceServiceMapper.java @@ -0,0 +1,15 @@ +package com.propertyManagement.business.mapper; + +import com.propertyManagement.business.domain.ConvenienceService; +import com.propertyManagement.business.domain.vo.ConvenienceServiceVo; +import com.propertyManagement.common.core.mapper.BaseMapperPlus; + +/** + * 便民服务Mapper接口 + * + * @author Ashe + * @date 2025-08-13 + */ +public interface ConvenienceServiceMapper extends BaseMapperPlus { + +} diff --git a/propertyManagement-business/src/main/java/com/propertyManagement/business/service/IConvenienceServiceService.java b/propertyManagement-business/src/main/java/com/propertyManagement/business/service/IConvenienceServiceService.java new file mode 100644 index 0000000000000000000000000000000000000000..03b9e20973a916f0d29754a0ed0d30d5ec12ecdd --- /dev/null +++ b/propertyManagement-business/src/main/java/com/propertyManagement/business/service/IConvenienceServiceService.java @@ -0,0 +1,49 @@ +package com.propertyManagement.business.service; + +import com.propertyManagement.business.domain.ConvenienceService; +import com.propertyManagement.business.domain.vo.ConvenienceServiceVo; +import com.propertyManagement.business.domain.bo.ConvenienceServiceBo; +import com.propertyManagement.common.core.page.TableDataInfo; +import com.propertyManagement.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 便民服务Service接口 + * + * @author Ashe + * @date 2025-08-13 + */ +public interface IConvenienceServiceService { + + /** + * 查询便民服务 + */ + ConvenienceServiceVo queryById(Long id); + + /** + * 查询便民服务列表 + */ + TableDataInfo queryPageList(ConvenienceServiceBo bo, PageQuery pageQuery); + + /** + * 查询便民服务列表 + */ + List queryList(ConvenienceServiceBo bo); + + /** + * 新增便民服务 + */ + Boolean insertByBo(ConvenienceServiceBo bo); + + /** + * 修改便民服务 + */ + Boolean updateByBo(ConvenienceServiceBo bo); + + /** + * 校验并批量删除便民服务信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/propertyManagement-business/src/main/java/com/propertyManagement/business/service/impl/ConvenienceServiceServiceImpl.java b/propertyManagement-business/src/main/java/com/propertyManagement/business/service/impl/ConvenienceServiceServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..84d7e2efddd93eee55da8e72b14f00acc7369976 --- /dev/null +++ b/propertyManagement-business/src/main/java/com/propertyManagement/business/service/impl/ConvenienceServiceServiceImpl.java @@ -0,0 +1,111 @@ +package com.propertyManagement.business.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.propertyManagement.common.utils.StringUtils; +import com.propertyManagement.common.core.page.TableDataInfo; +import com.propertyManagement.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.propertyManagement.business.domain.bo.ConvenienceServiceBo; +import com.propertyManagement.business.domain.vo.ConvenienceServiceVo; +import com.propertyManagement.business.domain.ConvenienceService; +import com.propertyManagement.business.mapper.ConvenienceServiceMapper; +import com.propertyManagement.business.service.IConvenienceServiceService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 便民服务Service业务层处理 + * + * @author Ashe + * @date 2025-08-13 + */ +@RequiredArgsConstructor +@Service +public class ConvenienceServiceServiceImpl implements IConvenienceServiceService { + + private final ConvenienceServiceMapper baseMapper; + + /** + * 查询便民服务 + */ + @Override + public ConvenienceServiceVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询便民服务列表 + */ + @Override + public TableDataInfo queryPageList(ConvenienceServiceBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询便民服务列表 + */ + @Override + public List queryList(ConvenienceServiceBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(ConvenienceServiceBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getServiceType() != null, ConvenienceService::getServiceType, bo.getServiceType()); + lqw.like(StringUtils.isNotBlank(bo.getDescription()), ConvenienceService::getDescription, bo.getDescription()); + lqw.like(StringUtils.isNotBlank(bo.getBookPhone()), ConvenienceService::getBookPhone, bo.getBookPhone()); + return lqw; + } + + /** + * 新增便民服务 + */ + @Override + public Boolean insertByBo(ConvenienceServiceBo bo) { + ConvenienceService add = BeanUtil.toBean(bo, ConvenienceService.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改便民服务 + */ + @Override + public Boolean updateByBo(ConvenienceServiceBo bo) { + ConvenienceService update = BeanUtil.toBean(bo, ConvenienceService.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(ConvenienceService entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除便民服务 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/propertyManagement-ui/README.md b/propertyManagement-ui/README.md index 9394319ece1ada7d5a7849c1589ffc721f7dd6a1..0a663ceb9e97629fd90ed998b2bc93c16ce9cb84 100644 --- a/propertyManagement-ui/README.md +++ b/propertyManagement-ui/README.md @@ -1,3 +1,51 @@ +# 物业管理前端系统 + +这是一个基于Vue.js和Element UI的物业管理前端系统,提供完整的物业管理功能界面。 + +## 项目概述 + +本项目是一个现代化的物业管理前端系统,采用Vue.js框架开发,使用Element UI组件库构建用户界面。系统提供了完整的物业管理功能,包括用户管理、社区管理、便民服务等模块。 + +## 主要功能模块 + +### 便民服务管理 +- **功能描述**: 管理系统中的便民服务信息,如家政服务、维修服务等 +- **操作权限**: + - ✅ 查看服务列表 + - ✅ 修改服务信息 + - ❌ 新增服务(已禁用) + - ❌ 删除服务(已禁用) +- **特殊限制**: + - 服务类型字段在修改时不可更改(置灰状态) + - 只能修改服务的描述、预约热线和轮播图信息 +- **轮播图功能**: + - ✅ 支持上传多张图片(最多5张) + - ✅ 支持图片预览和删除 + - ✅ 图片数据自动保存为逗号分隔的字符串 + - ✅ 支持拖拽排序和批量管理 +- **使用说明**: + - 点击"修改"按钮可以编辑现有服务信息 + - 服务类型会自动置灰,确保服务分类的稳定性 + - 轮播图支持多张图片上传,点击"+"按钮添加图片 + - 支持按服务类型、描述、预约热线等条件搜索 + +### 其他功能模块 +- 用户管理 +- 社区管理 +- 车位管理 +- 访客管理 +- 维修管理 +- 支付管理 + +## 技术架构 + +- **前端框架**: Vue.js 2.x +- **UI组件库**: Element UI +- **状态管理**: Vuex +- **路由管理**: Vue Router +- **HTTP客户端**: Axios +- **构建工具**: Webpack + ## 开发 ```bash diff --git a/propertyManagement-ui/src/api/business/converienceService.js b/propertyManagement-ui/src/api/business/converienceService.js new file mode 100644 index 0000000000000000000000000000000000000000..b3835115770e3783c61668896df8911aa148ed4a --- /dev/null +++ b/propertyManagement-ui/src/api/business/converienceService.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询便民服务列表 +export function listConverienceService(query) { + return request({ + url: '/business/converienceService/list', + method: 'get', + params: query + }) +} + +// 查询便民服务详细 +export function getConverienceService(id) { + return request({ + url: '/business/converienceService/' + id, + method: 'get' + }) +} + +// 新增便民服务 +export function addConverienceService(data) { + return request({ + url: '/business/converienceService', + method: 'post', + data: data + }) +} + +// 修改便民服务 +export function updateConverienceService(data) { + return request({ + url: '/business/converienceService', + method: 'put', + data: data + }) +} + +// 删除便民服务 +export function delConverienceService(id) { + return request({ + url: '/business/converienceService/' + id, + method: 'delete' + }) +} diff --git a/propertyManagement-ui/src/components/ImageUpload/index.vue b/propertyManagement-ui/src/components/ImageUpload/index.vue index 38b169fd0520c617f6a7bb1b83a3e20710b5dc7b..1175fbbcfc64b2b9a0c23ddaaa024e22c0c32e94 100644 --- a/propertyManagement-ui/src/components/ImageUpload/index.vue +++ b/propertyManagement-ui/src/components/ImageUpload/index.vue @@ -89,36 +89,29 @@ export default { value: { async handler(val) { if (val) { - const list = Array.isArray(val) ? val : this.value.split(','); - // 然后将数组转为对象数组 + // 修复:确保多张图片能够正确显示 + let list = []; + if (Array.isArray(val)) { + list = val; + } else if (typeof val === 'string' && val.trim() !== '') { + // 如果是字符串,按逗号分割 + list = val.split(',').filter(item => item.trim() !== ''); + } + + // 将数组转为对象数组 this.fileList = list.map(item => { if (typeof item === "string") { - if (item.indexOf(this.baseUrl) === -1) { - item = { name: item, url: item }; - } else { - item = { name: item, url: item }; - } + return { + name: item, + url: item, + // 如果URL包含ossId,则提取出来 + ossId: item.includes('ossId=') ? item.split('ossId=')[1] : undefined + }; } return item; }); - // 首先将值转为数组 - // let list; - // if (Array.isArray(val)) { - // list = val; - // } else { - // await listByIds(val).then(res => { - // list = res.data; - // }) - // } - // // 然后将数组转为对象数组 - // this.fileList = list.map(item => { - // // 此处name使用ossId 防止删除出现重名 - // item = { name: item.ossId, url: item.url, ossId: item.ossId }; - // return item; - // }); } else { this.fileList = []; - return []; } }, deep: true, @@ -184,8 +177,12 @@ export default { handleDelete(file) { const findex = this.fileList.map(f => f.name).indexOf(file.name); if(findex > -1) { + // 修复:确保删除操作能够正确处理 let ossId = this.fileList[findex].ossId; - delOss(ossId); + if (ossId) { + // 如果有ossId,则调用删除API + delOss(ossId); + } this.fileList.splice(findex, 1); this.$emit("input", this.listToString(this.fileList)); } @@ -215,7 +212,8 @@ export default { let strs = ""; separator = separator || ","; for (let i in list) { - if (list[i].ossId) { + // 修复:确保所有图片都能被正确处理,不管是否有ossId + if (list[i].url) { strs += list[i].url + separator; } } @@ -239,5 +237,19 @@ export default { opacity: 0; transform: translateY(0); } + +// 优化多张图片显示 +::v-deep .el-upload-list--picture-card .el-upload-list__item { + width: 148px; + height: 148px; + margin-right: 8px; + margin-bottom: 8px; +} + +::v-deep .el-upload--picture-card { + width: 148px; + height: 148px; + line-height: 146px; +} diff --git a/propertyManagement-ui/src/views/business/converienceService/index.vue b/propertyManagement-ui/src/views/business/converienceService/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..fce1582861d4305fc706a8bb5c2cb8ce85fb859f --- /dev/null +++ b/propertyManagement-ui/src/views/business/converienceService/index.vue @@ -0,0 +1,287 @@ + + +