|
@@ -0,0 +1,147 @@
|
|
|
+/**
|
|
|
+ * 发票类型枚举
|
|
|
+ * @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)
|
|
|
+}
|