| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514 |
- /**
- * @fileoverview 订单管理相关常量定义和类型定义
- * @description 定义订单类型、订单状态、订单明细状态等枚举值、常量和工具函数
- */
- /**
- * 订单类型枚举
- * @readonly
- */
- export const ORDER_TYPES = Object.freeze({
- /** 未知类型 */
- UNKNOWN: 0,
- /** 普通订单 */
- NORMAL: 1
- })
- /**
- * 订单类型枚举(订单表单模块兼容性别名)
- * @readonly
- * @enum {number}
- */
- export const OrderType = ORDER_TYPES
- /**
- * 订单状态枚举
- * @readonly
- */
- export const ORDER_STATUS = Object.freeze({
- /** 草稿 */
- DRAFT: 0,
- /** 已提交/待审核 */
- SUBMITTED: 1,
- /** 已确认/已审核 */
- CONFIRMED: 2,
- /** 部分发货/已发货 */
- PARTIAL_SHIPPED: 3,
- /** 已完成 */
- COMPLETED: 4,
- /** 已取消 */
- CANCELLED: 5
- })
- /**
- * 订单状态枚举(订单表单模块兼容性别名)
- * @readonly
- * @enum {number}
- */
- export const OrderStatus = {
- /** 草稿 */
- DRAFT: ORDER_STATUS.DRAFT,
- /** 待审核 */
- PENDING: ORDER_STATUS.SUBMITTED,
- /** 已审核 */
- APPROVED: ORDER_STATUS.CONFIRMED,
- /** 已发货 */
- SHIPPED: ORDER_STATUS.PARTIAL_SHIPPED,
- /** 已完成 */
- COMPLETED: ORDER_STATUS.COMPLETED,
- /** 已取消 */
- CANCELLED: ORDER_STATUS.CANCELLED
- }
- /**
- * 订单明细状态枚举
- * @readonly
- */
- export const ORDER_ITEM_STATUS = Object.freeze({
- /** 未确认 */
- UNCONFIRMED: 0,
- /** 已确认 */
- CONFIRMED: 1,
- /** 部分发货 */
- PARTIAL_SHIPPED: 2,
- /** 已完成 */
- COMPLETED: 3
- })
- /**
- * 物料明细状态枚举(订单表单模块兼容性别名)
- * @description 对应数据库item_status字段:0未确认 1已确认 2部分发货 3已完成
- * @readonly
- */
- export const MaterialDetailStatus = ORDER_ITEM_STATUS
- /**
- * 物料明细数据来源枚举
- * @readonly
- * @enum {string}
- */
- export const MaterialDetailDataSource = {
- /** 远程加载的数据(从订单获取) */
- REMOTE: 'REMOTE',
- /** 用户导入的数据 */
- IMPORTED: 'IMPORTED'
- }
- /**
- * 订单类型配置映射
- * @readonly
- * @type {Record<number, {readonly label: string, readonly type: string, readonly color: string}>}
- */
- export const ORDER_TYPE_CONFIG = {
- [ORDER_TYPES.UNKNOWN]: {
- label: '未知类型',
- type: 'info',
- color: '#909399'
- },
- [ORDER_TYPES.NORMAL]: {
- label: '普通订单',
- type: 'primary',
- color: '#409EFF'
- }
- }
- /**
- * 订单状态配置映射
- * @readonly
- * @type {Record<number, {readonly label: string, readonly type: string, readonly color: string}>}
- */
- export const ORDER_STATUS_CONFIG = {
- [ORDER_STATUS.DRAFT]: {
- label: '草稿',
- type: 'info',
- color: '#909399'
- },
- [ORDER_STATUS.SUBMITTED]: {
- label: '待审核',
- type: 'warning',
- color: '#E6A23C'
- },
- [ORDER_STATUS.CONFIRMED]: {
- label: '已审核',
- type: 'primary',
- color: '#409EFF'
- },
- [ORDER_STATUS.PARTIAL_SHIPPED]: {
- label: '已发货',
- type: 'warning',
- color: '#E6A23C'
- },
- [ORDER_STATUS.COMPLETED]: {
- label: '已完成',
- type: 'success',
- color: '#67C23A'
- },
- [ORDER_STATUS.CANCELLED]: {
- label: '已取消',
- type: 'danger',
- color: '#F56C6C'
- }
- }
- /**
- * 订单明细状态配置映射
- * @readonly
- * @type {Record<number, {readonly label: string, readonly type: string, readonly color: string}>}
- */
- export const ORDER_ITEM_STATUS_CONFIG = {
- [ORDER_ITEM_STATUS.UNCONFIRMED]: {
- label: '未确认',
- type: 'warning',
- color: '#E6A23C'
- },
- [ORDER_ITEM_STATUS.CONFIRMED]: {
- label: '已确认',
- type: 'primary',
- color: '#409EFF'
- },
- [ORDER_ITEM_STATUS.PARTIAL_SHIPPED]: {
- label: '部分发货',
- type: 'warning',
- color: '#E6A23C'
- },
- [ORDER_ITEM_STATUS.COMPLETED]: {
- label: '已完成',
- type: 'success',
- color: '#67C23A'
- }
- }
- /**
- * 订单类型选项数据
- * @readonly
- * @type {Array<{readonly label: string, readonly value: typeof ORDER_TYPES[keyof typeof ORDER_TYPES]}>}
- */
- export const ORDER_TYPE_OPTIONS = [
- { label: '未知类型', value: ORDER_TYPES.UNKNOWN },
- { label: '普通订单', value: ORDER_TYPES.NORMAL }
- ]
- /**
- * 订单状态选项数据
- * @readonly
- * @type {Array<{readonly label: string, readonly value:typeof ORDER_STATUS[keyof typeof ORDER_STATUS]}>}
- */
- export const ORDER_STATUS_OPTIONS = [
- { label: '草稿', value: ORDER_STATUS.DRAFT },
- { label: '已提交', value: ORDER_STATUS.SUBMITTED },
- { label: '已确认', value: ORDER_STATUS.CONFIRMED },
- { label: '部分发货', value: ORDER_STATUS.PARTIAL_SHIPPED },
- { label: '已完成', value: ORDER_STATUS.COMPLETED },
- { label: '已取消', value: ORDER_STATUS.CANCELLED }
- ]
- /**
- * 订单明细状态选项数据
- * @readonly
- * @type {ReadonlyArray<{readonly label: string, readonly value: typeof ORDER_ITEM_STATUS[keyof typeof ORDER_ITEM_STATUS]}>}
- */
- export const ORDER_ITEM_STATUS_OPTIONS = [
- { label: '未确认', value: ORDER_ITEM_STATUS.UNCONFIRMED },
- { label: '已确认', value: ORDER_ITEM_STATUS.CONFIRMED },
- { label: '部分发货', value: ORDER_ITEM_STATUS.PARTIAL_SHIPPED },
- { label: '已完成', value: ORDER_ITEM_STATUS.COMPLETED }
- ]
- /**
- * 物料明细状态选项列表(订单表单模块兼容性别名)
- * @readonly
- * @type {ReadonlyArray<{readonly label: string, readonly value: number}>}
- */
- export const MATERIAL_DETAIL_STATUS_OPTIONS = ORDER_ITEM_STATUS_OPTIONS
- /**
- * 默认分页配置
- * @readonly
- * @type {{readonly current: number, readonly pageSize: number, readonly total: number, readonly showSizeChanger: boolean, readonly showQuickJumper: boolean, readonly showTotal: (total: number, range: [number, number]) => string}}
- */
- export const DEFAULT_PAGINATION_CONFIG = {
- current: 1,
- pageSize: 10,
- total: 0,
- showSizeChanger: true,
- showQuickJumper: true,
- showTotal: (total, range) => `第 ${range[0]}-${range[1]} 条/共 ${total} 条`
- }
- // ==================== 工具函数 ====================
- /**
- * 获取订单类型标签
- * @param {1} orderType - 订单类型值
- * @returns {'普通订单' | '未知类型'} 订单类型标签
- */
- export function getOrderTypeLabel(orderType) {
- const config = ORDER_TYPE_CONFIG[orderType]
- return config ? config.label : '未知类型'
- }
- /**
- * 获取订单类型Element UI标签类型
- * @param {typeof ORDER_TYPES[keyof typeof ORDER_TYPES]} orderType - 订单类型值
- * @returns {string} Element UI标签类型
- */
- export function getOrderTypeTagType(orderType) {
- const config = ORDER_TYPE_CONFIG[orderType]
- return config ? config.type : 'info'
- }
- /**
- * 获取订单类型颜色
- * @param {typeof ORDER_TYPES[keyof typeof ORDER_TYPES]} orderType - 订单类型值
- * @returns {string} 十六进制颜色值
- */
- export function getOrderTypeColor(orderType) {
- const config = ORDER_TYPE_CONFIG[orderType]
- return config ? config.color : '#909399'
- }
- /**
- * 获取订单状态标签
- * @param {typeof ORDER_STATUS[keyof typeof ORDER_STATUS]} status - 订单状态值
- * @returns {string} 订单状态标签
- */
- export function getOrderStatusLabel(status) {
- const config = ORDER_STATUS_CONFIG[status]
- return config ? config.label : '未知状态'
- }
- /**
- * 获取订单状态Element UI标签类型
- * @param {typeof ORDER_STATUS[keyof typeof ORDER_STATUS]} status - 订单状态值
- * @returns {string} Element UI标签类型
- */
- export function getOrderStatusTagType(status) {
- const config = ORDER_STATUS_CONFIG[status]
- return config ? config.type : 'info'
- }
- /**
- * 获取订单状态颜色
- * @param {typeof ORDER_STATUS[keyof typeof ORDER_STATUS]} status - 订单状态值
- * @returns {string} 十六进制颜色值
- */
- export function getOrderStatusColor(status) {
- const config = ORDER_STATUS_CONFIG[status]
- return config ? config.color : '#909399'
- }
- /**
- * 获取订单明细状态标签
- * @param {typeof ORDER_ITEM_STATUS[keyof typeof ORDER_ITEM_STATUS]} itemStatus - 订单明细状态值
- * @returns {string} 订单明细状态标签
- */
- export function getOrderItemStatusLabel(itemStatus) {
- const config = ORDER_ITEM_STATUS_CONFIG[itemStatus]
- return config ? config.label : '未知状态'
- }
- /**
- * 获取订单明细状态Element UI标签类型
- * @param {typeof ORDER_ITEM_STATUS[keyof typeof ORDER_ITEM_STATUS]} itemStatus - 订单明细状态值
- * @returns {string} Element UI标签类型
- */
- export function getOrderItemStatusTagType(itemStatus) {
- const config = ORDER_ITEM_STATUS_CONFIG[itemStatus]
- return config ? config.type : 'info'
- }
- /**
- * 获取订单明细状态颜色
- * @param {typeof ORDER_ITEM_STATUS[keyof typeof ORDER_ITEM_STATUS]} itemStatus - 订单明细状态值
- * @returns {string} 十六进制颜色值
- */
- export function getOrderItemStatusColor(itemStatus) {
- const config = ORDER_ITEM_STATUS_CONFIG[itemStatus]
- return config ? config.color : '#909399'
- }
- /**
- * 检查订单是否可以编辑
- * @param {typeof ORDER_STATUS[keyof typeof ORDER_STATUS]} status - 订单状态值
- * @returns {boolean} 是否可以编辑
- */
- export function isOrderEditable(status) {
- return status === ORDER_STATUS.DRAFT || status === ORDER_STATUS.SUBMITTED
- }
- /**
- * 检查订单是否可以取消
- * @param {typeof ORDER_STATUS[keyof typeof ORDER_STATUS]} status - 订单状态值
- * @returns {boolean} 是否可以取消
- */
- export function isOrderCancellable(status) {
- return status !== ORDER_STATUS.COMPLETED && status !== ORDER_STATUS.CANCELLED
- }
- /**
- * 检查订单明细是否可以编辑
- * @param {typeof ORDER_ITEM_STATUS[keyof typeof ORDER_ITEM_STATUS]} itemStatus - 订单明细状态值
- * @returns {boolean} 是否可以编辑
- */
- export function isOrderItemEditable(itemStatus) {
- return itemStatus === ORDER_ITEM_STATUS.UNCONFIRMED || itemStatus === ORDER_ITEM_STATUS.CONFIRMED
- }
- /**
- * 检查订单明细是否可以取消
- * @param {typeof ORDER_ITEM_STATUS[keyof typeof ORDER_ITEM_STATUS]} itemStatus - 订单明细状态值
- * @returns {boolean} 是否可以取消
- */
- export function isOrderItemCancellable(itemStatus) {
- return itemStatus !== ORDER_ITEM_STATUS.COMPLETED
- }
- // ==================== 发票相关常量 ====================
- /**
- * 发票类型枚举
- * @readonly
- * @enum {string}
- */
- export const INVOICE_TYPES = {
- /** 普通发票 */
- NORMAL: 'NORMAL',
- /** 专用发票 */
- SPECIAL: 'SPECIAL'
- }
- /**
- * 发票状态枚举
- * @readonly
- * @enum {number}
- */
- export const INVOICE_STATUS = {
- /** 待开票 */
- PENDING: 0,
- /** 已开票 */
- INVOICED: 1,
- /** 已红冲 */
- RED_FLUSHED: 2,
- /** 已作废 */
- VOIDED: 3
- }
- /**
- * 发票类型标签映射
- * @readonly
- * @type {Record<string, string>}
- */
- export const INVOICE_TYPE_LABELS = {
- [INVOICE_TYPES.NORMAL]: '普通发票',
- [INVOICE_TYPES.SPECIAL]: '专用发票'
- }
- /**
- * 发票状态标签映射
- * @readonly
- * @type {Record<number, string>}
- */
- export const INVOICE_STATUS_LABELS = {
- [INVOICE_STATUS.PENDING]: '待开票',
- [INVOICE_STATUS.INVOICED]: '已开票',
- [INVOICE_STATUS.RED_FLUSHED]: '已红冲',
- [INVOICE_STATUS.VOIDED]: '已作废'
- }
- /**
- * 发票类型标签类型映射(用于Element UI标签样式)
- * @readonly
- * @type {Record<string, string>}
- */
- export const INVOICE_TYPE_TAG_TYPES = {
- [INVOICE_TYPES.NORMAL]: 'info',
- [INVOICE_TYPES.SPECIAL]: 'success'
- }
- /**
- * 发票状态标签类型映射(用于Element UI标签样式)
- * @readonly
- * @type {Record<number, string>}
- */
- export const INVOICE_STATUS_TAG_TYPES = {
- [INVOICE_STATUS.PENDING]: 'warning',
- [INVOICE_STATUS.INVOICED]: 'success',
- [INVOICE_STATUS.RED_FLUSHED]: 'danger',
- [INVOICE_STATUS.VOIDED]: 'info'
- }
- /**
- * 发票类型选项数组(用于下拉选择)
- * @readonly
- * @type {Array<{label: string, value: string}>}
- */
- export const INVOICE_TYPE_OPTIONS = [
- { label: INVOICE_TYPE_LABELS[INVOICE_TYPES.NORMAL], value: INVOICE_TYPES.NORMAL },
- { label: INVOICE_TYPE_LABELS[INVOICE_TYPES.SPECIAL], value: INVOICE_TYPES.SPECIAL }
- ]
- /**
- * 发票状态选项数组(用于下拉选择)
- * @readonly
- * @type {Array<{label: string, value: number}>}
- */
- export const INVOICE_STATUS_OPTIONS = [
- { label: INVOICE_STATUS_LABELS[INVOICE_STATUS.PENDING], value: INVOICE_STATUS.PENDING },
- { label: INVOICE_STATUS_LABELS[INVOICE_STATUS.INVOICED], value: INVOICE_STATUS.INVOICED },
- { label: INVOICE_STATUS_LABELS[INVOICE_STATUS.RED_FLUSHED], value: INVOICE_STATUS.RED_FLUSHED },
- { label: INVOICE_STATUS_LABELS[INVOICE_STATUS.VOIDED], value: INVOICE_STATUS.VOIDED }
- ]
- /**
- * 获取发票类型标签文本
- * @param {string} type - 发票类型
- * @returns {string} 标签文本
- */
- export const getInvoiceTypeLabel = (type) => {
- return INVOICE_TYPE_LABELS[type] || '未知类型'
- }
- /**
- * 获取发票类型标签样式
- * @param {string} type - 发票类型
- * @returns {string} 标签样式类型
- */
- export const getInvoiceTypeTagType = (type) => {
- return INVOICE_TYPE_TAG_TYPES[type] || 'info'
- }
- /**
- * 获取发票状态标签文本
- * @param {number} status - 发票状态
- * @returns {string} 标签文本
- */
- export const getInvoiceStatusLabel = (status) => {
- return INVOICE_STATUS_LABELS[status] || '未知状态'
- }
- /**
- * 获取发票状态标签样式
- * @param {number} status - 发票状态
- * @returns {string} 标签样式类型
- */
- export const getInvoiceStatusTagType = (status) => {
- return INVOICE_STATUS_TAG_TYPES[status] || 'info'
- }
- /**
- * 验证发票类型是否有效
- * @param {string} type - 发票类型
- * @returns {boolean} 是否有效
- */
- export const isValidInvoiceType = (type) => {
- return Object.values(INVOICE_TYPES).includes(type)
- }
- /**
- * 验证发票状态是否有效
- * @param {number} status - 发票状态
- * @returns {boolean} 是否有效
- */
- export const isValidInvoiceStatus = (status) => {
- return Object.values(INVOICE_STATUS).includes(status)
- }
|