dengzedong
2024-09-18 7767e500607c8a47d14728f9fc61952e824c8acc
提交 | 用户 | 时间
820397 1 /**
H 2  * 数据字典工具类
3  */
4 import { useDictStoreWithOut } from '@/store/modules/dict'
5 import { ElementPlusInfoType } from '@/types/elementPlus'
6
7 const dictStore = useDictStoreWithOut()
8
9 /**
10  * 获取 dictType 对应的数据字典数组
11  *
12  * @param dictType 数据类型
13  * @returns {*|Array} 数据字典数组
14  */
15 export interface DictDataType {
16   dictType: string
17   label: string
18   value: string | number | boolean
19   colorType: ElementPlusInfoType | ''
20   cssClass: string
21 }
22
23 export interface NumberDictDataType extends DictDataType {
24   value: number
25 }
26
27 export interface StringDictDataType extends DictDataType {
28   value: string
29 }
30
31 export const getDictOptions = (dictType: string) => {
32   return dictStore.getDictByType(dictType) || []
33 }
34
35 export const getIntDictOptions = (dictType: string): NumberDictDataType[] => {
36   // 获得通用的 DictDataType 列表
37   const dictOptions: DictDataType[] = getDictOptions(dictType)
38   // 转换成 number 类型的 NumberDictDataType 类型
39   // why 需要特殊转换:避免 IDEA 在 v-for="dict in getIntDictOptions(...)" 时,el-option 的 key 会告警
40   const dictOption: NumberDictDataType[] = []
41   dictOptions.forEach((dict: DictDataType) => {
42     dictOption.push({
43       ...dict,
44       value: parseInt(dict.value + '')
45     })
46   })
47   return dictOption
48 }
49
50 export const getStrDictOptions = (dictType: string) => {
51   // 获得通用的 DictDataType 列表
52   const dictOptions: DictDataType[] = getDictOptions(dictType)
53   // 转换成 string 类型的 StringDictDataType 类型
54   // why 需要特殊转换:避免 IDEA 在 v-for="dict in getStrDictOptions(...)" 时,el-option 的 key 会告警
55   const dictOption: StringDictDataType[] = []
56   dictOptions.forEach((dict: DictDataType) => {
57     dictOption.push({
58       ...dict,
59       value: dict.value + ''
60     })
61   })
62   return dictOption
63 }
64
65 export const getBoolDictOptions = (dictType: string) => {
66   const dictOption: DictDataType[] = []
67   const dictOptions: DictDataType[] = getDictOptions(dictType)
68   dictOptions.forEach((dict: DictDataType) => {
69     dictOption.push({
70       ...dict,
71       value: dict.value + '' === 'true'
72     })
73   })
74   return dictOption
75 }
76
77 /**
78  * 获取指定字典类型的指定值对应的字典对象
79  * @param dictType 字典类型
80  * @param value 字典值
81  * @return DictDataType 字典对象
82  */
83 export const getDictObj = (dictType: string, value: any): DictDataType | undefined => {
84   const dictOptions: DictDataType[] = getDictOptions(dictType)
85   for (const dict of dictOptions) {
86     if (dict.value === value + '') {
87       return dict
88     }
89   }
90 }
91
92 /**
93  * 获得字典数据的文本展示
94  *
95  * @param dictType 字典类型
96  * @param value 字典数据的值
97  * @return 字典名称
98  */
99 export const getDictLabel = (dictType: string, value: any): string => {
100   const dictOptions: DictDataType[] = getDictOptions(dictType)
101   const dictLabel = ref('')
102   dictOptions.forEach((dict: DictDataType) => {
103     if (dict.value === value + '') {
104       dictLabel.value = dict.label
105     }
106   })
107   return dictLabel.value
108 }
109
110 export enum DICT_TYPE {
111   USER_TYPE = 'user_type',
112   COMMON_STATUS = 'common_status',
113   TERMINAL = 'terminal', // 终端
114   DATE_INTERVAL = 'date_interval', // 数据间隔
115
116   // ========== SYSTEM 模块 ==========
117   SYSTEM_USER_SEX = 'system_user_sex',
118   SYSTEM_MENU_TYPE = 'system_menu_type',
39248b 119   SYSTEM_APP_MENU_TYPE = 'system_app_menu_type',
H 120   SYSTEM_APP_TYPE = 'system_app_type',
820397 121   SYSTEM_ROLE_TYPE = 'system_role_type',
H 122   SYSTEM_DATA_SCOPE = 'system_data_scope',
123   SYSTEM_NOTICE_TYPE = 'system_notice_type',
124   SYSTEM_LOGIN_TYPE = 'system_login_type',
125   SYSTEM_LOGIN_RESULT = 'system_login_result',
126   SYSTEM_SMS_CHANNEL_CODE = 'system_sms_channel_code',
127   SYSTEM_SMS_TEMPLATE_TYPE = 'system_sms_template_type',
128   SYSTEM_SMS_SEND_STATUS = 'system_sms_send_status',
129   SYSTEM_SMS_RECEIVE_STATUS = 'system_sms_receive_status',
130   SYSTEM_OAUTH2_GRANT_TYPE = 'system_oauth2_grant_type',
131   SYSTEM_MAIL_SEND_STATUS = 'system_mail_send_status',
132   SYSTEM_NOTIFY_TEMPLATE_TYPE = 'system_notify_template_type',
133   SYSTEM_SOCIAL_TYPE = 'system_social_type',
134
135   // ========== INFRA 模块 ==========
136   INFRA_BOOLEAN_STRING = 'infra_boolean_string',
137   INFRA_JOB_STATUS = 'infra_job_status',
138   INFRA_JOB_LOG_STATUS = 'infra_job_log_status',
139   INFRA_API_ERROR_LOG_PROCESS_STATUS = 'infra_api_error_log_process_status',
140   INFRA_CONFIG_TYPE = 'infra_config_type',
141   INFRA_CODEGEN_TEMPLATE_TYPE = 'infra_codegen_template_type',
142   INFRA_CODEGEN_FRONT_TYPE = 'infra_codegen_front_type',
143   INFRA_CODEGEN_SCENE = 'infra_codegen_scene',
144   INFRA_FILE_STORAGE = 'infra_file_storage',
145   INFRA_OPERATE_TYPE = 'infra_operate_type',
146
147   // ========== BPM 模块 ==========
148   BPM_MODEL_FORM_TYPE = 'bpm_model_form_type',
149   BPM_TASK_CANDIDATE_STRATEGY = 'bpm_task_candidate_strategy',
150   BPM_PROCESS_INSTANCE_STATUS = 'bpm_process_instance_status',
151   BPM_TASK_STATUS = 'bpm_task_status',
152   BPM_OA_LEAVE_TYPE = 'bpm_oa_leave_type',
153   BPM_PROCESS_LISTENER_TYPE = 'bpm_process_listener_type',
154   BPM_PROCESS_LISTENER_VALUE_TYPE = 'bpm_process_listener_value_type',
155
156   // ========== PAY 模块 ==========
157   PAY_CHANNEL_CODE = 'pay_channel_code', // 支付渠道编码类型
158   PAY_ORDER_STATUS = 'pay_order_status', // 商户支付订单状态
159   PAY_REFUND_STATUS = 'pay_refund_status', // 退款订单状态
160   PAY_NOTIFY_STATUS = 'pay_notify_status', // 商户支付回调状态
161   PAY_NOTIFY_TYPE = 'pay_notify_type', // 商户支付回调状态
162   PAY_TRANSFER_STATUS = 'pay_transfer_status', // 转账订单状态
163   PAY_TRANSFER_TYPE = 'pay_transfer_type', // 转账订单状态
164
165   // ========== MP 模块 ==========
166   MP_AUTO_REPLY_REQUEST_MATCH = 'mp_auto_reply_request_match', // 自动回复请求匹配类型
167   MP_MESSAGE_TYPE = 'mp_message_type', // 消息类型
168
169   // ========== Member 会员模块 ==========
170   MEMBER_POINT_BIZ_TYPE = 'member_point_biz_type', // 积分的业务类型
171   MEMBER_EXPERIENCE_BIZ_TYPE = 'member_experience_biz_type', // 会员经验业务类型
172
173   // ========== MALL - 商品模块 ==========
174   PRODUCT_SPU_STATUS = 'product_spu_status', //商品状态
175
176   // ========== MALL - 交易模块 ==========
177   EXPRESS_CHARGE_MODE = 'trade_delivery_express_charge_mode', //快递的计费方式
178   TRADE_AFTER_SALE_STATUS = 'trade_after_sale_status', // 售后 - 状态
179   TRADE_AFTER_SALE_WAY = 'trade_after_sale_way', // 售后 - 方式
180   TRADE_AFTER_SALE_TYPE = 'trade_after_sale_type', // 售后 - 类型
181   TRADE_ORDER_TYPE = 'trade_order_type', // 订单 - 类型
182   TRADE_ORDER_STATUS = 'trade_order_status', // 订单 - 状态
183   TRADE_ORDER_ITEM_AFTER_SALE_STATUS = 'trade_order_item_after_sale_status', // 订单项 - 售后状态
184   TRADE_DELIVERY_TYPE = 'trade_delivery_type', // 配送方式
185   BROKERAGE_ENABLED_CONDITION = 'brokerage_enabled_condition', // 分佣模式
186   BROKERAGE_BIND_MODE = 'brokerage_bind_mode', // 分销关系绑定模式
187   BROKERAGE_BANK_NAME = 'brokerage_bank_name', // 佣金提现银行
188   BROKERAGE_WITHDRAW_TYPE = 'brokerage_withdraw_type', // 佣金提现类型
189   BROKERAGE_RECORD_BIZ_TYPE = 'brokerage_record_biz_type', // 佣金业务类型
190   BROKERAGE_RECORD_STATUS = 'brokerage_record_status', // 佣金状态
191   BROKERAGE_WITHDRAW_STATUS = 'brokerage_withdraw_status', // 佣金提现状态
192
193   // ========== MALL - 营销模块 ==========
194   PROMOTION_DISCOUNT_TYPE = 'promotion_discount_type', // 优惠类型
195   PROMOTION_PRODUCT_SCOPE = 'promotion_product_scope', // 营销的商品范围
196   PROMOTION_COUPON_TEMPLATE_VALIDITY_TYPE = 'promotion_coupon_template_validity_type', // 优惠劵模板的有限期类型
197   PROMOTION_COUPON_STATUS = 'promotion_coupon_status', // 优惠劵的状态
198   PROMOTION_COUPON_TAKE_TYPE = 'promotion_coupon_take_type', // 优惠劵的领取方式
199   PROMOTION_ACTIVITY_STATUS = 'promotion_activity_status', // 优惠活动的状态
200   PROMOTION_CONDITION_TYPE = 'promotion_condition_type', // 营销的条件类型枚举
201   PROMOTION_BARGAIN_RECORD_STATUS = 'promotion_bargain_record_status', // 砍价记录的状态
202   PROMOTION_COMBINATION_RECORD_STATUS = 'promotion_combination_record_status', // 拼团记录的状态
203   PROMOTION_BANNER_POSITION = 'promotion_banner_position', // banner 定位
204
205   // ========== CRM - 客户管理模块 ==========
206   CRM_AUDIT_STATUS = 'crm_audit_status', // CRM 审批状态
207   CRM_BIZ_TYPE = 'crm_biz_type', // CRM 业务类型
208   CRM_BUSINESS_END_STATUS_TYPE = 'crm_business_end_status_type', // CRM 商机结束状态类型
209   CRM_RECEIVABLE_RETURN_TYPE = 'crm_receivable_return_type', // CRM 回款的还款方式
210   CRM_CUSTOMER_INDUSTRY = 'crm_customer_industry', // CRM 客户所属行业
211   CRM_CUSTOMER_LEVEL = 'crm_customer_level', // CRM 客户级别
212   CRM_CUSTOMER_SOURCE = 'crm_customer_source', // CRM 客户来源
213   CRM_PRODUCT_STATUS = 'crm_product_status', // CRM 商品状态
214   CRM_PERMISSION_LEVEL = 'crm_permission_level', // CRM 数据权限的级别
215   CRM_PRODUCT_UNIT = 'crm_product_unit', // CRM 产品单位
216   CRM_FOLLOW_UP_TYPE = 'crm_follow_up_type', // CRM 跟进方式
217
218   // ========== ERP - 企业资源计划模块  ==========
219   ERP_AUDIT_STATUS = 'erp_audit_status', // ERP 审批状态
220   ERP_STOCK_RECORD_BIZ_TYPE = 'erp_stock_record_biz_type', // 库存明细的业务类型
221
222   // ========== AI - 人工智能模块  ==========
223   AI_PLATFORM = 'ai_platform', // AI 平台
224   AI_IMAGE_STATUS = 'ai_image_status', // AI 图片状态
225   AI_MUSIC_STATUS = 'ai_music_status', // AI 音乐状态
226   AI_GENERATE_MODE = 'ai_generate_mode', // AI 生成模式
227   AI_WRITE_TYPE = 'ai_write_type', // AI 写作类型
228   AI_WRITE_LENGTH = 'ai_write_length', // AI 写作长度
229   AI_WRITE_FORMAT = 'ai_write_format', // AI 写作格式
230   AI_WRITE_TONE = 'ai_write_tone', // AI 写作语气
6badb7 231   AI_WRITE_LANGUAGE = 'ai_write_language', // AI 写作语言
232
233   // ========== MODEL - 模型管理模块  ==========
234   SCHE_MODEL_TYPE = 'sche_model_type',
235   SCHE_MODEL_INVOCATION = 'sche_model_invocation',
8ea580 236   SCHE_TRIGGER_METHOD = 'sche_trigger_method',
9c91ad 237   MODEL_PARAM_TYPE = 'model_param_type',
D 238   MODEL_METHOD = 'model_method',
7767e5 239   MODEL_TYPE = 'model_type',
D 240   MODEL_METHOD_SETTING_TYPE = 'model_method_setting_type',
241   MODEL_METHOD_SETTING_VALUE_TYPE = 'model_method_setting_value_type',
f87d4e 242
243   // ========== DATA - 数据平台模块  ==========
244   DATA_FIELD_TYPE = 'data_field_type',
b05c43 245   TAG_DATA_TYPE = 'tag_data_type',
246   IS_ENABLED = 'is_enabled'
7767e5 247
820397 248 }