diff --git a/klp-admin/src/main/java/com/klp/web/controller/system/SysFileImageController.java b/klp-admin/src/main/java/com/klp/web/controller/system/SysFileImageController.java new file mode 100644 index 000000000..b66076b52 --- /dev/null +++ b/klp-admin/src/main/java/com/klp/web/controller/system/SysFileImageController.java @@ -0,0 +1,95 @@ +package com.klp.web.controller.system; + +import java.util.List; +import java.util.Arrays; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.klp.common.annotation.RepeatSubmit; +import com.klp.common.annotation.Log; +import com.klp.common.core.controller.BaseController; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.domain.R; +import com.klp.common.core.validate.AddGroup; +import com.klp.common.core.validate.EditGroup; +import com.klp.common.enums.BusinessType; +import com.klp.common.utils.poi.ExcelUtil; +import com.klp.system.domain.vo.SysFileImageVo; +import com.klp.system.domain.bo.SysFileImageBo; +import com.klp.system.service.ISysFileImageService; +import com.klp.common.core.page.TableDataInfo; + +/** + * 文件图片关联 + * + * @author klp + * @date 2026-07-13 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/fileImage") +public class SysFileImageController extends BaseController { + + private final ISysFileImageService iSysFileImageService; + + /** + * 查询文件图片关联列表 + */ + @GetMapping("/list") + public TableDataInfo list(SysFileImageBo bo, PageQuery pageQuery) { + return iSysFileImageService.queryPageList(bo, pageQuery); + } + + /** + * 导出文件图片关联列表 + */ + @Log(title = "文件图片关联", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(SysFileImageBo bo, HttpServletResponse response) { + List list = iSysFileImageService.queryList(bo); + ExcelUtil.exportExcel(list, "文件图片关联", SysFileImageVo.class, response); + } + + /** + * 获取文件图片关联详细信息 + */ + @GetMapping("/{imageId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long imageId) { + return R.ok(iSysFileImageService.queryById(imageId)); + } + + /** + * 新增文件图片关联 + */ + @Log(title = "文件图片关联", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SysFileImageBo bo) { + return toAjax(iSysFileImageService.insertByBo(bo)); + } + + /** + * 修改文件图片关联 + */ + @Log(title = "文件图片关联", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SysFileImageBo bo) { + return toAjax(iSysFileImageService.updateByBo(bo)); + } + + /** + * 删除文件图片关联 + */ + @Log(title = "文件图片关联", businessType = BusinessType.DELETE) + @DeleteMapping("/{imageIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] imageIds) { + return toAjax(iSysFileImageService.deleteWithValidByIds(Arrays.asList(imageIds), true)); + } +} diff --git a/klp-system/src/main/java/com/klp/system/domain/SysFileImage.java b/klp-system/src/main/java/com/klp/system/domain/SysFileImage.java new file mode 100644 index 000000000..2e9efbd82 --- /dev/null +++ b/klp-system/src/main/java/com/klp/system/domain/SysFileImage.java @@ -0,0 +1,49 @@ +package com.klp.system.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; + + +/** + * 文件图片关联对象 sys_file_image + * + * @author klp + * @date 2026-07-13 + */ +@Data +@TableName("sys_file_image") +public class SysFileImage { + + private static final long serialVersionUID=1L; + + /** + * 图片ID + */ + @TableId(value = "image_id") + private Long imageId; + /** + * 主记录ID 关联sys_file.file_id + */ + private Long fileId; + /** + * 图片原始名称 + */ + private String imageName; + /** + * 图片存储路径/对象存储地址 + */ + private String imagePath; + /** + * 图片大小(字节) + */ + private Long imageSize; + /** + * 后缀 jpg/png + */ + private String suffix; + /** + * 排序号 + */ + private Integer sortOrder; + +} diff --git a/klp-system/src/main/java/com/klp/system/domain/bo/SysFileBo.java b/klp-system/src/main/java/com/klp/system/domain/bo/SysFileBo.java index 05ebcfb45..c78f60801 100644 --- a/klp-system/src/main/java/com/klp/system/domain/bo/SysFileBo.java +++ b/klp-system/src/main/java/com/klp/system/domain/bo/SysFileBo.java @@ -1,10 +1,13 @@ package com.klp.system.domain.bo; import com.klp.common.core.domain.BaseEntity; +import com.klp.system.domain.bo.SysFileImageBo; import lombok.Data; import lombok.EqualsAndHashCode; import javax.validation.constraints.*; +import java.util.List; + /** * 文件主信息业务对象 sys_file @@ -72,4 +75,9 @@ public class SysFileBo extends BaseEntity { */ private Long viewCount; + /** + * 图片列表(多图模式) + */ + private List imageList; + } diff --git a/klp-system/src/main/java/com/klp/system/domain/bo/SysFileImageBo.java b/klp-system/src/main/java/com/klp/system/domain/bo/SysFileImageBo.java new file mode 100644 index 000000000..9b0d738ab --- /dev/null +++ b/klp-system/src/main/java/com/klp/system/domain/bo/SysFileImageBo.java @@ -0,0 +1,55 @@ +package com.klp.system.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + + +/** + * 文件图片关联业务对象 sys_file_image + * + * @author klp + * @date 2026-07-13 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class SysFileImageBo extends BaseEntity { + + /** + * 图片ID + */ + private Long imageId; + + /** + * 主记录ID 关联sys_file.file_id + */ + private Long fileId; + + /** + * 图片原始名称 + */ + private String imageName; + + /** + * 图片存储路径/对象存储地址 + */ + private String imagePath; + + /** + * 图片大小(字节) + */ + private Long imageSize; + + /** + * 后缀 jpg/png + */ + private String suffix; + + /** + * 排序号 + */ + private Integer sortOrder; + +} diff --git a/klp-system/src/main/java/com/klp/system/domain/vo/SysFileImageVo.java b/klp-system/src/main/java/com/klp/system/domain/vo/SysFileImageVo.java new file mode 100644 index 000000000..0df3139fa --- /dev/null +++ b/klp-system/src/main/java/com/klp/system/domain/vo/SysFileImageVo.java @@ -0,0 +1,62 @@ +package com.klp.system.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + + +/** + * 文件图片关联视图对象 sys_file_image + * + * @author klp + * @date 2026-07-13 + */ +@Data +@ExcelIgnoreUnannotated +public class SysFileImageVo { + + private static final long serialVersionUID = 1L; + + /** + * 图片ID + */ + @ExcelProperty(value = "图片ID") + private Long imageId; + + /** + * 主记录ID 关联sys_file.file_id + */ + @ExcelProperty(value = "主记录ID") + private Long fileId; + + /** + * 图片原始名称 + */ + @ExcelProperty(value = "图片原始名称") + private String imageName; + + /** + * 图片存储路径/对象存储地址 + */ + @ExcelProperty(value = "图片存储路径") + private String imagePath; + + /** + * 图片大小(字节) + */ + @ExcelProperty(value = "图片大小") + private Long imageSize; + + /** + * 后缀 jpg/png + */ + @ExcelProperty(value = "后缀") + private String suffix; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Integer sortOrder; + +} diff --git a/klp-system/src/main/java/com/klp/system/domain/vo/SysFileVo.java b/klp-system/src/main/java/com/klp/system/domain/vo/SysFileVo.java index ff1dbc629..64ace8ebd 100644 --- a/klp-system/src/main/java/com/klp/system/domain/vo/SysFileVo.java +++ b/klp-system/src/main/java/com/klp/system/domain/vo/SysFileVo.java @@ -5,8 +5,11 @@ import com.alibaba.excel.annotation.ExcelProperty; import com.klp.common.annotation.ExcelDictFormat; import com.klp.common.convert.ExcelDictConvert; import com.klp.common.core.domain.BaseEntity; +import com.klp.system.domain.vo.SysFileImageVo; import lombok.Data; +import java.util.List; + /** * 文件主信息视图对象 sys_file @@ -92,4 +95,9 @@ public class SysFileVo extends BaseEntity { @ExcelProperty(value = "创建者昵称") private String createByName; + /** + * 图片列表(多图模式) + */ + private List imageList; + } diff --git a/klp-system/src/main/java/com/klp/system/mapper/SysFileImageMapper.java b/klp-system/src/main/java/com/klp/system/mapper/SysFileImageMapper.java new file mode 100644 index 000000000..4c4872cb6 --- /dev/null +++ b/klp-system/src/main/java/com/klp/system/mapper/SysFileImageMapper.java @@ -0,0 +1,15 @@ +package com.klp.system.mapper; + +import com.klp.system.domain.SysFileImage; +import com.klp.system.domain.vo.SysFileImageVo; +import com.klp.common.core.mapper.BaseMapperPlus; + +/** + * 文件图片关联Mapper接口 + * + * @author klp + * @date 2026-07-13 + */ +public interface SysFileImageMapper extends BaseMapperPlus { + +} diff --git a/klp-system/src/main/java/com/klp/system/service/ISysFileImageService.java b/klp-system/src/main/java/com/klp/system/service/ISysFileImageService.java new file mode 100644 index 000000000..a9c7e03ba --- /dev/null +++ b/klp-system/src/main/java/com/klp/system/service/ISysFileImageService.java @@ -0,0 +1,64 @@ +package com.klp.system.service; + +import com.klp.system.domain.SysFileImage; +import com.klp.system.domain.vo.SysFileImageVo; +import com.klp.system.domain.bo.SysFileImageBo; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 文件图片关联Service接口 + * + * @author klp + * @date 2026-07-13 + */ +public interface ISysFileImageService { + + /** + * 查询文件图片关联 + */ + SysFileImageVo queryById(Long imageId); + + /** + * 查询文件图片关联列表 + */ + TableDataInfo queryPageList(SysFileImageBo bo, PageQuery pageQuery); + + /** + * 查询文件图片关联列表 + */ + List queryList(SysFileImageBo bo); + + /** + * 新增文件图片关联 + */ + Boolean insertByBo(SysFileImageBo bo); + + /** + * 修改文件图片关联 + */ + Boolean updateByBo(SysFileImageBo bo); + + /** + * 校验并批量删除文件图片关联信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 根据文件ID查询图片列表 + */ + List queryListByFileId(Long fileId); + + /** + * 批量保存图片 + */ + void saveImageList(Long fileId, List imageList); + + /** + * 根据文件ID删除所有图片 + */ + void deleteByFileId(Long fileId); +} diff --git a/klp-system/src/main/java/com/klp/system/service/impl/SysFileImageServiceImpl.java b/klp-system/src/main/java/com/klp/system/service/impl/SysFileImageServiceImpl.java new file mode 100644 index 000000000..686e83c7e --- /dev/null +++ b/klp-system/src/main/java/com/klp/system/service/impl/SysFileImageServiceImpl.java @@ -0,0 +1,144 @@ +package com.klp.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.klp.common.core.page.TableDataInfo; +import com.klp.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.klp.system.domain.bo.SysFileImageBo; +import com.klp.system.domain.vo.SysFileImageVo; +import com.klp.system.domain.SysFileImage; +import com.klp.system.mapper.SysFileImageMapper; +import com.klp.system.service.ISysFileImageService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; +import java.util.stream.Collectors; + +/** + * 文件图片关联Service业务层处理 + * + * @author klp + * @date 2026-07-13 + */ +@RequiredArgsConstructor +@Service +public class SysFileImageServiceImpl implements ISysFileImageService { + + private final SysFileImageMapper baseMapper; + + /** + * 查询文件图片关联 + */ + @Override + public SysFileImageVo queryById(Long imageId){ + return baseMapper.selectVoById(imageId); + } + + /** + * 查询文件图片关联列表 + */ + @Override + public TableDataInfo queryPageList(SysFileImageBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询文件图片关联列表 + */ + @Override + public List queryList(SysFileImageBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SysFileImageBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getFileId() != null, SysFileImage::getFileId, bo.getFileId()); + lqw.orderByAsc(SysFileImage::getSortOrder); + return lqw; + } + + @Override + public List queryListByFileId(Long fileId) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SysFileImage::getFileId, fileId); + lqw.orderByAsc(SysFileImage::getSortOrder); + return baseMapper.selectVoList(lqw); + } + + /** + * 批量保存图片(先删后插) + */ + @Override + public void saveImageList(Long fileId, List imageList) { + if (fileId == null) return; + // 先删除原有图片 + deleteByFileId(fileId); + // 批量插入 + if (imageList != null && !imageList.isEmpty()) { + for (int i = 0; i < imageList.size(); i++) { + SysFileImageBo bo = imageList.get(i); + SysFileImage entity = BeanUtil.toBean(bo, SysFileImage.class); + entity.setFileId(fileId); + entity.setSortOrder(i); + baseMapper.insert(entity); + } + } + } + + @Override + public void deleteByFileId(Long fileId) { + baseMapper.delete(Wrappers.lambdaQuery() + .eq(SysFileImage::getFileId, fileId)); + } + + /** + * 新增文件图片关联 + */ + @Override + public Boolean insertByBo(SysFileImageBo bo) { + SysFileImage add = BeanUtil.toBean(bo, SysFileImage.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setImageId(add.getImageId()); + } + return flag; + } + + /** + * 修改文件图片关联 + */ + @Override + public Boolean updateByBo(SysFileImageBo bo) { + SysFileImage update = BeanUtil.toBean(bo, SysFileImage.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(SysFileImage entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除文件图片关联 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/klp-system/src/main/java/com/klp/system/service/impl/SysFileServiceImpl.java b/klp-system/src/main/java/com/klp/system/service/impl/SysFileServiceImpl.java index 306c1bde6..540d1ae86 100644 --- a/klp-system/src/main/java/com/klp/system/service/impl/SysFileServiceImpl.java +++ b/klp-system/src/main/java/com/klp/system/service/impl/SysFileServiceImpl.java @@ -14,7 +14,11 @@ import org.springframework.stereotype.Service; import com.klp.system.domain.bo.SysFileBo; import com.klp.system.domain.vo.SysFileVo; import com.klp.system.domain.SysFile; +import com.klp.system.domain.SysFileImage; import com.klp.system.domain.SysFileVisibleUser; +import com.klp.system.domain.bo.SysFileImageBo; +import com.klp.system.domain.vo.SysFileImageVo; +import com.klp.system.mapper.SysFileImageMapper; import com.klp.system.mapper.SysFileMapper; import com.klp.system.mapper.SysFileVisibleUserMapper; import com.klp.system.mapper.SysUserMapper; @@ -39,6 +43,7 @@ public class SysFileServiceImpl implements ISysFileService { private final SysFileMapper baseMapper; private final SysFileVisibleUserMapper visibleUserMapper; + private final SysFileImageMapper fileImageMapper; private final SysUserMapper userMapper; /** @@ -46,7 +51,16 @@ public class SysFileServiceImpl implements ISysFileService { */ @Override public SysFileVo queryById(Long fileId){ - return baseMapper.selectVoById(fileId); + SysFileVo vo = baseMapper.selectVoById(fileId); + if (vo != null) { + // 加载图片列表 + List imageList = fileImageMapper.selectVoList( + Wrappers.lambdaQuery() + .eq(SysFileImage::getFileId, fileId) + .orderByAsc(SysFileImage::getSortOrder)); + vo.setImageList(imageList); + } + return vo; } /** @@ -96,10 +110,25 @@ public class SysFileServiceImpl implements ISysFileService { boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setFileId(add.getFileId()); + // 保存图片列表 + saveImageList(add.getFileId(), bo.getImageList()); } return flag; } + private void saveImageList(Long fileId, List imageList) { + if (fileId == null || imageList == null || imageList.isEmpty()) { + return; + } + for (int i = 0; i < imageList.size(); i++) { + SysFileImageBo imageBo = imageList.get(i); + SysFileImage entity = BeanUtil.toBean(imageBo, SysFileImage.class); + entity.setFileId(fileId); + entity.setSortOrder(i); + fileImageMapper.insert(entity); + } + } + /** * 修改文件主信息 */ @@ -107,7 +136,14 @@ public class SysFileServiceImpl implements ISysFileService { public Boolean updateByBo(SysFileBo bo) { SysFile update = BeanUtil.toBean(bo, SysFile.class); validEntityBeforeSave(update); - return baseMapper.updateById(update) > 0; + boolean flag = baseMapper.updateById(update) > 0; + if (flag && bo.getImageList() != null) { + // 先删后插图片列表 + fileImageMapper.delete(Wrappers.lambdaQuery() + .eq(SysFileImage::getFileId, bo.getFileId())); + saveImageList(bo.getFileId(), bo.getImageList()); + } + return flag; } /** @@ -187,6 +223,11 @@ public class SysFileServiceImpl implements ISysFileService { if(isValid){ //TODO 做一些业务上的校验,判断是否需要校验 } + if (ids != null && !ids.isEmpty()) { + // 删除关联的图片 + fileImageMapper.delete(Wrappers.lambdaQuery() + .in(SysFileImage::getFileId, ids)); + } return baseMapper.deleteBatchIds(ids) > 0; } } diff --git a/klp-system/src/main/resources/mapper/system/SysFileImageMapper.xml b/klp-system/src/main/resources/mapper/system/SysFileImageMapper.xml new file mode 100644 index 000000000..5a0f33e9c --- /dev/null +++ b/klp-system/src/main/resources/mapper/system/SysFileImageMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + diff --git a/klp-ui/src/api/system/file.js b/klp-ui/src/api/system/file.js index f46086350..3b00f8067 100644 --- a/klp-ui/src/api/system/file.js +++ b/klp-ui/src/api/system/file.js @@ -105,3 +105,45 @@ export function listVisibleUserByFileId(fileId) { params: { fileId: fileId } }) } + +// ============ OSS 上传 ============ + +// 上传文件到OSS +export function uploadFile(file) { + const formData = new FormData() + formData.append('file', file) + return request({ + url: '/system/oss/upload', + method: 'post', + data: formData, + headers: { 'Content-Type': 'multipart/form-data' } + }) +} + +// ============ 文件图片关联 ============ + +// 新增图片关联 +export function addFileImage(data) { + return request({ + url: '/system/fileImage', + method: 'post', + data: data + }) +} + +// 修改图片关联(替换图片) +export function updateFileImage(data) { + return request({ + url: '/system/fileImage', + method: 'put', + data: data + }) +} + +// 删除图片关联 +export function delFileImage(imageIds) { + return request({ + url: '/system/fileImage/' + imageIds, + method: 'delete' + }) +} diff --git a/klp-ui/src/api/wms/annealPerformance.js b/klp-ui/src/api/wms/annealPerformance.js index bf0b6bf1a..076a7bb67 100644 --- a/klp-ui/src/api/wms/annealPerformance.js +++ b/klp-ui/src/api/wms/annealPerformance.js @@ -8,3 +8,12 @@ export function getAnnealPerformance(query) { params: query }) } + +// 查询退火计划中的加工前钢卷列表 +export function getAnnealRawCoils(query) { + return request({ + url: '/wms/anneal/performance/rawCoils', + method: 'get', + params: query + }) +} diff --git a/klp-ui/src/api/wms/coilChangeLog.js b/klp-ui/src/api/wms/coilChangeLog.js new file mode 100644 index 000000000..891cb7561 --- /dev/null +++ b/klp-ui/src/api/wms/coilChangeLog.js @@ -0,0 +1,10 @@ +import request from '@/utils/request' + +// 根据钢卷ID查询钢卷变更日志 +export function getCoilChangeLogByCoilId(coilId) { + return request({ + url: '/wms/coilChangeLog/byCoilId/' + coilId, + method: 'get', + timeout: 100000 + }) +} diff --git a/klp-ui/src/utils/klp.js b/klp-ui/src/utils/klp.js index aa37e5fe4..026aa2964 100644 --- a/klp-ui/src/utils/klp.js +++ b/klp-ui/src/utils/klp.js @@ -49,7 +49,11 @@ export function parseTime(time, pattern) { // 表单重置 export function resetForm(refName) { if (this.$refs[refName]) { - this.$refs[refName].resetFields(); + try { + this.$refs[refName].resetFields(); + } catch (e) { + console.warn('resetFields error:', e); + } } } diff --git a/klp-ui/src/views/cost/comprehensive.vue b/klp-ui/src/views/cost/comprehensive.vue index 6736f42c7..138fd8eac 100644 --- a/klp-ui/src/views/cost/comprehensive.vue +++ b/klp-ui/src/views/cost/comprehensive.vue @@ -1321,6 +1321,8 @@ export default { } } catch (e) { /* ignore */ } this.chartSelectedKeys = selected + // default: select all + if (!this.chartSelectedKeys.length) this.chartSelectedKeys = [...allKeys] }, saveChartSelection() { if (!this.activeReport) return @@ -1440,9 +1442,9 @@ export default { /deep/ .summary-row td .cell { color: #303133; } .summary-label { font-weight: bold; color: #303133; padding: 0 5px; } .summary-val { font-weight: bold; color: #303133; } -/deep/ .chart-fullscreen { width: 100% !important; max-width: 100% !important; margin: 0 !important; } -/deep/ .chart-fullscreen .el-dialog__body { max-height: calc(100vh - 90px); overflow: auto; padding: 16px 20px; } -/deep/ .chart-fullscreen .el-dialog__header { padding: 12px 20px; } +/deep/ .chart-fullscreen { width: 100% !important; max-width: 100% !important; height: 100vh !important; margin: 0 !important; display: flex; flex-direction: column; } +/deep/ .chart-fullscreen .el-dialog__body { flex: 1; max-height: none; overflow: auto; padding: 16px 20px; } +/deep/ .chart-fullscreen .el-dialog__header { padding: 12px 20px; flex-shrink: 0; } .chart-tag-bar { padding: 0 4px 8px; } .chart-tag-row { display: flex; flex-wrap: wrap; align-items: center; margin-bottom: 4px; } .chart-tag-row:last-child { margin-bottom: 0; } diff --git a/klp-ui/src/views/crm/contract/components/ContractTabs.vue b/klp-ui/src/views/crm/contract/components/ContractTabs.vue index bf337eb52..299866db7 100644 --- a/klp-ui/src/views/crm/contract/components/ContractTabs.vue +++ b/klp-ui/src/views/crm/contract/components/ContractTabs.vue @@ -75,10 +75,11 @@ - - - - + + + + + @@ -134,10 +135,11 @@ - - - - + + + + + @@ -417,7 +419,7 @@ export default { orderId: this.orderId, pageNum: this.productPagination.currentPage, pageSize: this.productPagination.pageSize, - ...this.productCoilBo + coilBo: this.productCoilBo }).then(res => { this.productCoilList = res.rows || []; this.productPagination.total = res.total || 0; @@ -431,7 +433,7 @@ export default { }); }, fetchProductCoilStatistics() { - getProductCoilsStatisticsByContract({ ...this.productCoilBo, orderId: this.orderId }).then(res => { + getProductCoilsStatisticsByContract({ orderId: this.orderId, coilBo: this.productCoilBo }).then(res => { this.productCoilStatistics = res.data || {}; }); }, @@ -445,6 +447,21 @@ export default { this.productCoilBo = {}; this.handleProductFilter(); }, + handleProductCoilStatusChange(val) { + if (val === 'in_stock') { + this.productCoilBo.status = 0; + this.productCoilBo.dataType = 1; + } else if (val === 'shipped') { + this.productCoilBo.status = 1; + this.productCoilBo.dataType = undefined; + } else if (val === 'history') { + this.productCoilBo.status = 0; + this.productCoilBo.dataType = 0; + } else { + this.productCoilBo.status = undefined; + this.productCoilBo.dataType = undefined; + } + }, handleDeliveryFilter() { this.deliveryCoilBo.selectType = this.deliveryCoilBo.itemType || ''; this.deliveryPagination.currentPage = 1; @@ -455,6 +472,21 @@ export default { this.deliveryCoilBo = {}; this.handleDeliveryFilter(); }, + handleDeliveryCoilStatusChange(val) { + if (val === 'in_stock') { + this.deliveryCoilBo.status = 0; + this.deliveryCoilBo.dataType = 1; + } else if (val === 'shipped') { + this.deliveryCoilBo.status = 1; + this.deliveryCoilBo.dataType = undefined; + } else if (val === 'history') { + this.deliveryCoilBo.status = 0; + this.deliveryCoilBo.dataType = 0; + } else { + this.deliveryCoilBo.status = undefined; + this.deliveryCoilBo.dataType = undefined; + } + }, handleProductPageChange({ currentPage, pageSize }) { this.productPagination.currentPage = currentPage; this.productPagination.pageSize = pageSize; diff --git a/klp-ui/src/views/crm/saleman/index.vue b/klp-ui/src/views/crm/saleman/index.vue index 7b8cc4738..7a63ea733 100644 --- a/klp-ui/src/views/crm/saleman/index.vue +++ b/klp-ui/src/views/crm/saleman/index.vue @@ -93,10 +93,11 @@ - - - - + + + + + @@ -144,6 +145,13 @@ + + + + + + + @@ -470,6 +478,36 @@ export default { this.productCoilBo = {}; this.handleProductFilter(); }, + handleCoilStatusChange(val) { + if (val === 'in_stock') { + this.productCoilBo.status = 0; + this.productCoilBo.dataType = 1; + } else if (val === 'shipped') { + this.productCoilBo.status = 1; + this.productCoilBo.dataType = undefined; + } else if (val === 'history') { + this.productCoilBo.status = 0; + this.productCoilBo.dataType = 0; + } else { + this.productCoilBo.status = undefined; + this.productCoilBo.dataType = undefined; + } + }, + handleDeliveryCoilStatusChange(val) { + if (val === 'in_stock') { + this.deliveryCoilBo.status = 0; + this.deliveryCoilBo.dataType = 1; + } else if (val === 'shipped') { + this.deliveryCoilBo.status = 1; + this.deliveryCoilBo.dataType = undefined; + } else if (val === 'history') { + this.deliveryCoilBo.status = 0; + this.deliveryCoilBo.dataType = 0; + } else { + this.deliveryCoilBo.status = undefined; + this.deliveryCoilBo.dataType = undefined; + } + }, fetchDeliveryCoils(principal) { this.deliveryCoilLoading = true; return listDeliveryCoilsByPrincipal({ diff --git a/klp-ui/src/views/perf/index/SalaryPanel.vue b/klp-ui/src/views/perf/index/SalaryPanel.vue index ca1d6a3f8..473387e31 100644 --- a/klp-ui/src/views/perf/index/SalaryPanel.vue +++ b/klp-ui/src/views/perf/index/SalaryPanel.vue @@ -751,7 +751,7 @@ export default { .cell-input { width: 100%; height: 28px; - border: none; + border: 1px solid #dcdfe6; outline: none; text-align: right; padding: 0 6px; diff --git a/klp-ui/src/views/system/file/all.vue b/klp-ui/src/views/system/file/all.vue index ef58f8f8b..79f2ec8cb 100644 --- a/klp-ui/src/views/system/file/all.vue +++ b/klp-ui/src/views/system/file/all.vue @@ -56,7 +56,7 @@ @clear="handleQuery" /> 上传文件 - 删除 + 删除 已选 {{ selectedCardIds.length }} 项 @@ -119,6 +119,7 @@
详情 + 编辑 下载
@@ -139,25 +140,75 @@ - + - - - -
将文件拖到此处,或点击选取
-
+ + + + 上传文件 + 上传图片 + + + + +
+ + 选择文件 + 支持 pdf / xlsx / docx / 图片 等格式 +
+ + {{ mainFile.name }} + ({{ formatFileSize(mainFile.size) }}) + +
+
+
+ + +
+ + 选择图片 + 支持多选 jpg/png/webp/bmp +
+
+ +
+ +
+
{{ img.name }}
+
+
+
+
+ + +
+ + {{ form.fileName }} + ({{ formatFileSize(form.fileSize) }}) + 替换 + 下载 + +
+
+ + +
+
+ +
+ + +
+
{{ img.imageName }}
+
+
+ + 添加图片 +
+ +
+
暂无图片,添加图片
@@ -194,14 +245,33 @@
- - - - - -
- -
+ + + +
@@ -260,9 +330,8 @@ + + diff --git a/klp-ui/src/views/wms/coil/info/components/CostInfoSection.vue b/klp-ui/src/views/wms/coil/info/components/CostInfoSection.vue index 6c20d66c1..c3c263ccc 100644 --- a/klp-ui/src/views/wms/coil/info/components/CostInfoSection.vue +++ b/klp-ui/src/views/wms/coil/info/components/CostInfoSection.vue @@ -53,6 +53,7 @@
+
@@ -704,4 +705,5 @@ export default { font-weight: 600; color: #f56c6c; } + diff --git a/klp-ui/src/views/wms/coil/info/index.vue b/klp-ui/src/views/wms/coil/info/index.vue index e56a40741..615cc0fb5 100644 --- a/klp-ui/src/views/wms/coil/info/index.vue +++ b/klp-ui/src/views/wms/coil/info/index.vue @@ -1,4 +1,4 @@ -