Prechádzať zdrojové kódy

feat(claim): 添加理赔附件相关类型定义和API接口

yz 1 mesiac pred
rodič
commit
519482b7bd
2 zmenil súbory, kde vykonal 150 pridanie a 0 odobranie
  1. 51 0
      src/api/claim/index.js
  2. 99 0
      src/constants/claim.js

+ 51 - 0
src/api/claim/index.js

@@ -229,4 +229,55 @@ export const removeClaim = (ids) => {
       ids
     }
   })
+}
+
+/**
+ * 附件信息类型定义
+ * @typedef {Object} ClaimAttachmentItem
+ * @property {string} [id] - 附件ID(修改时必需)
+ * @property {number} claimId - 理赔申请ID
+ * @property {string} fileName - 文件名
+ * @property {string} fileUrl - 文件URL
+ * @property {'jpeg'|'jpg'|'png'|'mp4'|'pdf'} fileType - 文件类型
+ * @property {number} fileSize - 文件大小(字节)
+ * @property {string} [remark] - 备注说明
+ * @property {string} [createTime] - 创建时间
+ * @property {string} [updateTime] - 更新时间
+ */
+
+/**
+ * 附件上传参数类型定义
+ * @typedef {Object} ClaimAttachmentUploadParams
+ * @property {number} claimId - 理赔申请ID
+ * @property {string} fileName - 文件名
+ * @property {string} fileUrl - 文件URL
+ * @property {'jpeg'|'jpg'|'png'|'mp4'|'pdf'} fileType - 文件类型
+ * @property {number} fileSize - 文件大小(字节)
+ * @property {string} [remark] - 备注说明
+ */
+
+/**
+ * 添加理赔申请附件
+ * @param {ClaimAttachmentUploadParams} attachmentData - 附件数据
+ * @returns {Promise<ApiResponse<ClaimAttachmentItem>>} 添加结果
+ */
+export const addClaimAttachment = async (attachmentData) => {
+  return await request({
+    url: '/api/blade-factory/api/factory/claim-attachment',
+    method: 'post',
+    data: attachmentData
+  })
+}
+
+/**
+ * 修改理赔申请附件
+ * @param {ClaimAttachmentItem} attachmentData - 附件数据(必须包含id)
+ * @returns {Promise<ApiResponse<ClaimAttachmentItem>>} 修改结果
+ */
+export const updateClaimAttachment = async (attachmentData) => {
+  return await request({
+    url: '/api/blade-factory/api/factory/claim-attachment',
+    method: 'put',
+    data: attachmentData
+  })
 }

+ 99 - 0
src/constants/claim.js

@@ -209,4 +209,103 @@ export function getAllAuditStatusValues() {
  */
 export function getAllClaimSourceTypeValues() {
   return Object.values(CLAIM_SOURCE_TYPE)
+}
+
+/**
+ * 附件文件类型枚举
+ * @readonly
+ * @enum {string}
+ */
+export const ATTACHMENT_FILE_TYPE = {
+  /** JPEG图片 */
+  JPEG: 'jpeg',
+  /** JPG图片 */
+  JPG: 'jpg',
+  /** PNG图片 */
+  PNG: 'png',
+  /** MP4视频 */
+  MP4: 'mp4',
+  /** PDF文档 */
+  PDF: 'pdf'
+}
+
+/**
+ * 附件文件类型配置映射
+ * @readonly
+ * @type {Record<string, {label: string, icon: string, accept: string}>}
+ */
+export const ATTACHMENT_FILE_TYPE_CONFIG = {
+  [ATTACHMENT_FILE_TYPE.JPEG]: {
+    label: 'JPEG图片',
+    icon: 'el-icon-picture',
+    accept: 'image/jpeg'
+  },
+  [ATTACHMENT_FILE_TYPE.JPG]: {
+    label: 'JPG图片',
+    icon: 'el-icon-picture',
+    accept: 'image/jpeg'
+  },
+  [ATTACHMENT_FILE_TYPE.PNG]: {
+    label: 'PNG图片',
+    icon: 'el-icon-picture',
+    accept: 'image/png'
+  },
+  [ATTACHMENT_FILE_TYPE.MP4]: {
+    label: 'MP4视频',
+    icon: 'el-icon-video-camera',
+    accept: 'video/mp4'
+  },
+  [ATTACHMENT_FILE_TYPE.PDF]: {
+    label: 'PDF文档',
+    icon: 'el-icon-document',
+    accept: 'application/pdf'
+  }
+}
+
+/**
+ * 附件文件类型选项列表
+ * @readonly
+ * @type {Array<{label: string, value: string}>}
+ */
+export const ATTACHMENT_FILE_TYPE_OPTIONS = [
+  { label: 'JPEG图片', value: ATTACHMENT_FILE_TYPE.JPEG },
+  { label: 'JPG图片', value: ATTACHMENT_FILE_TYPE.JPG },
+  { label: 'PNG图片', value: ATTACHMENT_FILE_TYPE.PNG },
+  { label: 'MP4视频', value: ATTACHMENT_FILE_TYPE.MP4 },
+  { label: 'PDF文档', value: ATTACHMENT_FILE_TYPE.PDF }
+]
+
+/**
+ * 获取附件文件类型标签
+ * @param {string} fileType - 文件类型
+ * @returns {string} 文件类型标签
+ */
+export function getAttachmentFileTypeLabel(fileType) {
+  return ATTACHMENT_FILE_TYPE_CONFIG[fileType]?.label || '未知类型'
+}
+
+/**
+ * 获取附件文件类型图标
+ * @param {string} fileType - 文件类型
+ * @returns {string} 文件类型图标
+ */
+export function getAttachmentFileTypeIcon(fileType) {
+  return ATTACHMENT_FILE_TYPE_CONFIG[fileType]?.icon || 'el-icon-document'
+}
+
+/**
+ * 验证文件类型是否有效
+ * @param {string} fileType - 文件类型
+ * @returns {boolean} 是否有效
+ */
+export function isValidAttachmentFileType(fileType) {
+  return Object.values(ATTACHMENT_FILE_TYPE).includes(fileType)
+}
+
+/**
+ * 获取所有支持的文件类型
+ * @returns {string[]} 文件类型数组
+ */
+export function getAllAttachmentFileTypes() {
+  return Object.values(ATTACHMENT_FILE_TYPE)
 }