Procházet zdrojové kódy

refactor(订单表单): 将类型定义从types.js迁移到constants.js并统一管理

yz před 3 týdny
rodič
revize
c0e2b3cd93

+ 126 - 8
src/components/order-form/constants.js

@@ -1,10 +1,10 @@
 /**
- * @fileoverview 订单表单相关常量定义
- * @description 定义订单表单组件使用的枚举值和常量
+ * @fileoverview 订单表单相关常量定义和类型定义
+ * @description 定义订单表单组件使用的枚举值、常量和TypeScript类型注释
  */
 
 // 导入明细管理中的状态定义和工具函数
-import { 
+import {
   ORDER_ITEM_STATUS,
   getOrderItemStatusLabel,
   getOrderItemStatusTagType,
@@ -46,11 +46,30 @@ export const OrderStatus = {
 }
 
 /**
- * 物料明细状态枚举 - 使用明细管理中的标准状态定义
+ * 物料明细数据来源枚举
  * @readonly
- * @enum {number}
+ * @enum {string}
+ */
+export const MaterialDetailDataSource = {
+  /** 远程加载的数据(从订单获取) */
+  REMOTE: 'REMOTE',
+  /** 用户导入的数据 */
+  IMPORTED: 'IMPORTED'
+}
+
+/**
+ * 物料明细状态枚举
+ * @readonly
+ * @enum {string}
  */
-export const MaterialDetailStatus = ORDER_ITEM_STATUS
+export const MaterialDetailStatus = {
+  /** 待处理 */
+  PENDING: '0',
+  /** 已确认 */
+  CONFIRMED: '1',
+  /** 已取消 */
+  CANCELLED: '2'
+}
 
 /**
  * 订单类型选项列表
@@ -98,8 +117,107 @@ export const MATERIAL_DETAIL_STATUS_OPTIONS = [
 ]
 
 // 导出明细状态工具函数供其他组件使用
-export { 
+export {
   getOrderItemStatusLabel as getMaterialDetailStatusLabel,
   getOrderItemStatusTagType as getMaterialDetailStatusTagType,
   getOrderItemStatusColor as getMaterialDetailStatusColor
-}
+}
+
+// ==================== JSDoc 类型定义 ====================
+
+/**
+ * 物料明细记录
+ * @typedef {Object} MaterialDetailRecord
+ * @property {string} id - 记录ID
+ * @property {string} materialCode - 物料编码
+ * @property {string} materialName - 物料名称
+ * @property {string} specs - 规格型号
+ * @property {string} unit - 单位
+ * @property {number} quantity - 数量
+ * @property {number} unitPrice - 单价
+ * @property {number} totalPrice - 总价
+ * @property {string} remark - 备注
+ * @property {string} status - 状态
+ * @property {string} dataSource - 数据来源
+ * @property {string} mainItemCategoryId - 主物料分类ID
+ * @property {string} mainItemCategoryName - 主物料分类名称
+ * @property {string} subItemCategoryId - 子物料分类ID
+ * @property {string} subItemCategoryName - 子物料分类名称
+ * @property {string} brandId - 品牌ID
+ * @property {string} brandName - 品牌名称
+ * @property {string} supplierCode - 供应商编码
+ * @property {string} supplierName - 供应商名称
+ * @property {Date} createTime - 创建时间
+ * @property {Date} updateTime - 更新时间
+ */
+
+/**
+ * 订单表单模型
+ * @typedef {Object} OrderFormModel
+ * @property {string} orderCode - 订单编码
+ * @property {string} orderType - 订单类型
+ * @property {string} orderStatus - 订单状态
+ * @property {string} customerCode - 客户编码
+ * @property {string} customerName - 客户名称
+ * @property {string} contactPerson - 联系人
+ * @property {string} contactPhone - 联系电话
+ * @property {string} deliveryAddress - 交货地址
+ * @property {Date} expectedDeliveryDate - 预期交货日期
+ * @property {string} remark - 备注
+ * @property {MaterialDetailRecord[]} materialDetails - 物料明细列表
+ * @property {number} totalAmount - 订单总金额
+ * @property {Date} createTime - 创建时间
+ * @property {Date} updateTime - 更新时间
+ * @property {string} createdBy - 创建人
+ * @property {string} updatedBy - 更新人
+ */
+
+/**
+ * 物料明细查询参数
+ * @typedef {Object} MaterialDetailQueryParams
+ * @property {string} [materialCode] - 物料编码
+ * @property {string} [materialName] - 物料名称
+ * @property {string} [mainItemCategoryId] - 主物料分类ID
+ * @property {string} [subItemCategoryId] - 子物料分类ID
+ * @property {string} [brandId] - 品牌ID
+ * @property {number} [pageNum] - 页码
+ * @property {number} [pageSize] - 每页大小
+ */
+
+/**
+ * 物料删除事件数据
+ * @typedef {Object} MaterialDeleteEventData
+ * @property {string} id - 要删除的物料明细ID
+ * @property {number} index - 在列表中的索引
+ */
+
+/**
+ * 验证规则
+ * @typedef {Object} ValidationRule
+ * @property {boolean} required - 是否必填
+ * @property {string} message - 验证失败消息
+ * @property {string} [trigger] - 触发方式
+ * @property {Function} [validator] - 自定义验证函数
+ */
+
+/**
+ * API响应数据结构
+ * @typedef {Object} ApiResponse
+ * @property {number} code - 响应状态码
+ * @property {string} message - 响应消息
+ * @property {*} data - 响应数据
+ * @property {boolean} success - 是否成功
+ * @property {number} timestamp - 时间戳
+ */
+
+/**
+ * 分页响应数据结构
+ * @typedef {Object} PaginatedResponse
+ * @property {Array} records - 数据记录列表
+ * @property {number} total - 总记录数
+ * @property {number} size - 每页大小
+ * @property {number} current - 当前页码
+ * @property {number} pages - 总页数
+ * @property {boolean} hasNext - 是否有下一页
+ * @property {boolean} hasPrevious - 是否有上一页
+ */

+ 5 - 5
src/components/order-form/material-detail-option.js

@@ -11,16 +11,16 @@ import {
 } from './constants'
 
 // 从types.js导入类型定义
-import { MaterialDetailDataSource } from './types'
+import { MaterialDetailDataSource } from './constants'
 
 // 重新导出常量供其他模块使用
 export { MaterialDetailStatus, DEFAULT_PAGINATION_CONFIG, MATERIAL_DETAIL_STATUS_OPTIONS }
 
 /**
- * @typedef {import('./types').MaterialDetailRecord} MaterialDetailRecord
- * @typedef {import('./types').MaterialDetailQueryParams} MaterialDetailQueryParams
- * @typedef {import('./types').ValidationRule} ValidationRule
- * @typedef {import('./types').OrderFormModel} OrderFormModel
+ * @typedef {import('./constants').MaterialDetailRecord} MaterialDetailRecord
+ * @typedef {import('./constants').MaterialDetailQueryParams} MaterialDetailQueryParams
+ * @typedef {import('./constants').ValidationRule} ValidationRule
+ * @typedef {import('./constants').OrderFormModel} OrderFormModel
  */
 
 /**

+ 4 - 4
src/components/order-form/material-detail-table.vue

@@ -98,12 +98,12 @@ import {
 } from './constants'
 import MaterialImportDialog from './material-import-dialog.vue'
 import { formatAmount } from './utils'
-import { MaterialDetailDataSource } from './types'
+import { MaterialDetailDataSource } from './constants'
 
 /**
- * @typedef {import('./types').MaterialDetailRecord} MaterialDetailRecord
- * @typedef {import('./types').MaterialDeleteEventData} MaterialDeleteEventData
- * @typedef {import('./types').MaterialDetailQueryParams} MaterialDetailQueryParams
+ * @typedef {import('./constants').MaterialDetailRecord} MaterialDetailRecord
+ * @typedef {import('./constants').MaterialDeleteEventData} MaterialDeleteEventData
+ * @typedef {import('./constants').MaterialDetailQueryParams} MaterialDetailQueryParams
  */
 
 

+ 1 - 1
src/components/order-form/material-import-dialog.vue

@@ -150,7 +150,7 @@ import { generateUniqueId } from './utils'
 
 /**
  * @typedef {import('./material-detail-option').MaterialDetailItem} MaterialDetailItem
- * @typedef {import('./material-detail-option').MaterialDetailQueryParams} MaterialDetailQueryParams
+ * @typedef {import('./constants').MaterialDetailQueryParams} MaterialDetailQueryParams
  */
 
 /**

+ 11 - 15
src/components/order-form/order-form-mixin.js

@@ -6,23 +6,19 @@ import {
   ORDER_TYPE_OPTIONS,
   ORDER_STATUS_OPTIONS
 } from '@/constants/order'
-import { MaterialDetailDataSource } from './types'
+import { MaterialDetailDataSource } from './constants'
 
 /**
- * @typedef {import('./types').MaterialDetailRecord} MaterialDetailRecord
- * @typedef {import('./types').OrderFormModel} OrderFormModel
- * @typedef {import('./types').MaterialDeleteEventData} MaterialDeleteEventData
- * @typedef {import('./types').ApiResponse} ApiResponse
- * @typedef {import('./types').PaginatedResponse} PaginatedResponse
- */
-
-/**
- * @typedef {import('./types').OrderFormModel} OrderFormModel
- * @typedef {import('./types').ValidationRule} ValidationRule
- * @typedef {import('./types').OrderFormRules} OrderFormRules
- * @typedef {import('./types').OrderFormData} OrderFormMixinData
- * @typedef {import('./types').OrderTypeOption} OrderTypeOption
- * @typedef {import('./types').OrderStatusOption} OrderStatusOption
+ * @typedef {import('./constants').MaterialDetailRecord} MaterialDetailRecord
+ * @typedef {import('./constants').OrderFormModel} OrderFormModel
+ * @typedef {import('./constants').MaterialDeleteEventData} MaterialDeleteEventData
+ * @typedef {import('./constants').ApiResponse} ApiResponse
+ * @typedef {import('./constants').PaginatedResponse} PaginatedResponse
+ * @typedef {import('./constants').ValidationRule} ValidationRule
+ * @typedef {import('./constants').OrderFormRules} OrderFormRules
+ * @typedef {import('./constants').OrderFormData} OrderFormMixinData
+ * @typedef {import('./constants').OrderTypeOption} OrderTypeOption
+ * @typedef {import('./constants').OrderStatusOption} OrderStatusOption
  */
 
 /**

+ 3 - 4
src/components/order-form/order-form.vue

@@ -61,10 +61,9 @@ import MaterialDetailTable from './material-detail-table.vue'
 
 /**
  * @typedef {import('@/api/order/order-item').OrderItemRecord} OrderItemRecord
- * @typedef {import('./types').OrderFormModel} OrderFormModel
- * @typedef {import('./types').OrderFormProps} OrderFormProps
- * @typedef {import('./types').MaterialDetailRecord} MaterialDetailRecord
- * @typedef {import('./types').MaterialDeleteEventData} MaterialDeleteEventData
+ * @typedef {import('./constants').OrderFormModel} OrderFormModel
+ * @typedef {import('./constants').MaterialDetailRecord} MaterialDetailRecord
+ * @typedef {import('./constants').MaterialDeleteEventData} MaterialDeleteEventData
  */
 
 /**

+ 0 - 117
src/components/order-form/types.js

@@ -1,117 +0,0 @@
-/**
- * @fileoverview 订单表单组件类型定义
- * @description 定义订单表单相关的TypeScript类型和JSDoc类型注释
- */
-
-/**
- * 物料明细数据来源枚举
- * @readonly
- * @enum {string}
- */
-export const MaterialDetailDataSource = {
-  /** 远程加载的数据(从订单获取) */
-  REMOTE: 'REMOTE',
-  /** 用户导入的数据 */
-  IMPORTED: 'IMPORTED'
-}
-
-/**
- * 物料明细状态枚举
- * @readonly
- * @enum {string}
- */
-export const MaterialDetailStatus = {
-  /** 待处理 */
-  PENDING: '0',
-  /** 已确认 */
-  CONFIRMED: '1',
-  /** 已取消 */
-  CANCELLED: '2'
-}
-
-/**
- * @typedef {Object} MaterialDetailRecord
- * @description 物料明细记录数据结构
- * @property {string} itemCode - 物料编码,唯一标识
- * @property {string} itemName - 物料名称
- * @property {string} specification - 规格型号
- * @property {string} mainCategoryName - 主分类名称
- * @property {string} warehouseName - 仓库名称
- * @property {number} availableQuantity - 可用数量
- * @property {number} orderQuantity - 订单数量
- * @property {number} confirmQuantity - 确认数量
- * @property {number} unitPrice - 单价
- * @property {number} taxRate - 税率(百分比)
- * @property {number} taxAmount - 税额
- * @property {number} totalAmount - 总金额
- * @property {MaterialDetailStatus} status - 明细状态
- * @property {MaterialDetailDataSource} dataSource - 数据来源
- * @property {boolean} isDeletable - 是否可删除
- */
-
-/**
- * @typedef {Object} OrderFormModel
- * @description 订单表单数据模型
- * @property {string} orderCode - 订单编码
- * @property {string} orderType - 订单类型
- * @property {string} orderStatus - 订单状态
- * @property {string} customerName - 客户名称
- * @property {string} customerCode - 客户编码
- * @property {string} contactPerson - 联系人
- * @property {string} contactPhone - 联系电话
- * @property {string} deliveryAddress - 交货地址
- * @property {string} expectedDeliveryDate - 预期交货日期
- * @property {string} remarks - 备注信息
- * @property {number} totalAmount - 订单总金额
- * @property {MaterialDetailRecord[]} materialDetails - 物料明细列表
- */
-
-/**
- * @typedef {Object} MaterialDetailQueryParams
- * @description 物料明细查询参数
- * @property {string} itemName - 物料名称(模糊查询)
- * @property {string} itemCode - 物料编码(模糊查询)
- * @property {string} specification - 规格型号(模糊查询)
- * @property {string} warehouseName - 仓库名称(模糊查询)
- * @property {number} current - 当前页码,从1开始
- * @property {number} size - 每页条数,范围1-100
- */
-
-/**
- * @typedef {Object} MaterialDeleteEventData
- * @description 物料删除事件数据
- * @property {MaterialDetailRecord} row - 要删除的物料记录
- * @property {number} index - 记录在当前页的索引位置
- */
-
-/**
- * @typedef {Object} ValidationRule
- * @description 表单验证规则
- * @property {boolean} required - 是否必填
- * @property {string} message - 验证失败提示信息
- * @property {string} trigger - 触发验证的事件类型
- * @property {number} [min] - 最小长度
- * @property {number} [max] - 最大长度
- * @property {RegExp} [pattern] - 正则表达式验证
- */
-
-/**
- * @typedef {Object} ApiResponse
- * @description API响应数据结构
- * @template T
- * @property {boolean} success - 请求是否成功
- * @property {string} message - 响应消息
- * @property {T} data - 响应数据
- * @property {number} code - 响应状态码
- */
-
-/**
- * @typedef {Object} PaginatedResponse
- * @description 分页响应数据结构
- * @template T
- * @property {T[]} records - 数据记录列表
- * @property {number} total - 总记录数
- * @property {number} current - 当前页码
- * @property {number} size - 每页大小
- * @property {number} pages - 总页数
- */