dict.ts 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import type { TransformData } from '#/api';
  2. import { http } from '#/api';
  3. import { fromDict, type DictItem } from '#/api/model/dict';
  4. export namespace DictModel {
  5. export type Item = DictItem;
  6. }
  7. function normalizeDictList(data: unknown): TransformData[] {
  8. if (Array.isArray(data)) return data;
  9. if (data && typeof data === 'object') {
  10. const record = data as TransformData;
  11. if (Array.isArray(record.rows)) return record.rows;
  12. if (Array.isArray(record.list)) return record.list;
  13. if (Array.isArray(record.items)) return record.items;
  14. }
  15. return [];
  16. }
  17. /** 按字典编码获取字典项列表 */
  18. export function listDictByCodeMethod(dictCode: string) {
  19. return http.get<DictItem[], TransformData>(
  20. `/manager/tcmp-pc/dict/list`,
  21. {
  22. params: { dictCode },
  23. cacheFor: 60_000,
  24. transform(data) {
  25. return normalizeDictList(data)
  26. .map((item) => fromDict(item))
  27. .sort((a, b) => (a.dictSort ?? 0) - (b.dictSort ?? 0));
  28. },
  29. },
  30. );
  31. }
  32. /** 机构类型字典(dept_type) */
  33. export function listDeptTypeDictMethod() {
  34. return listDictByCodeMethod('dept_type');
  35. }
  36. /** 企业类型字典(enterprise_type) */
  37. export function listEnterpriseTypeDictMethod() {
  38. return listDictByCodeMethod('enterprise_type');
  39. }
  40. /** 流程状态/流程节点字典(proccess_node) */
  41. export function listProcessNodeDictMethod() {
  42. return listDictByCodeMethod('proccess_node');
  43. }
  44. /** 配送方式字典(delivery_method) */
  45. export function listDeliveryMethodDictMethod() {
  46. return listDictByCodeMethod('delivery_method');
  47. }
  48. /** 物流公司字典(logistics_company) */
  49. export function listLogisticsCompanyDictMethod() {
  50. return listDictByCodeMethod('logistics_company');
  51. }
  52. /** 中药剂型字典(zyjx) */
  53. export function listZyjxDictMethod() {
  54. return listDictByCodeMethod('zyjx');
  55. }
  56. /** 用药途径字典(zy_route) */
  57. export function listZyRouteDictMethod() {
  58. return listDictByCodeMethod('zy_route');
  59. }
  60. /** 中药特殊煎煮法字典(mat_usage_name) */
  61. export function listMatUsageNameDictMethod() {
  62. return listDictByCodeMethod('mat_usage_name');
  63. }
  64. /** 物流配送状态字典(express_state) */
  65. export function listExpressStateDictMethod() {
  66. return listDictByCodeMethod('express_state');
  67. }