helper.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import XEUtils from "xe-utils";
  2. /**
  3. * 输入框配置
  4. * @param field 字段
  5. * @param title 标题
  6. * @param config 配置
  7. */
  8. export const mapFormItemInput = (field, title, config = {}) => ({
  9. field,
  10. title,
  11. titlePrefix: { content: title, icon: "vxe-icon-question-circle-fill" },
  12. itemRender: {
  13. name: "ElInput",
  14. props: { clearable: true, placeholder: `请输入${title}` }
  15. },
  16. ...config
  17. })
  18. /**
  19. * 选择框配置
  20. * @param field 字段
  21. * @param title 标题
  22. * @param config 其他配置
  23. */
  24. export const mapFormItemSelect = (field, title, config = {}) => ({
  25. field,
  26. title,
  27. titlePrefix: { content: title, icon: "vxe-icon-question-circle-fill" },
  28. itemRender: {
  29. name: "$form-select",
  30. props: { popperClass: "vxe-table-slot--popper", filterable: true, clearable: true, placeholder: `请选择${title}`, ...XEUtils.get(config, "props") },
  31. api: {
  32. key: XEUtils.get(config, "api.key", null),
  33. framework: XEUtils.get(config, "api.framework", "common"),
  34. query: XEUtils.get(config, "api.query", {}),
  35. expands: XEUtils.get(config, "api.expands", {})
  36. },
  37. ...XEUtils.omit(config, "props", "api")
  38. },
  39. ...config
  40. })
  41. /**
  42. * 单选配置
  43. * @param field 字段
  44. * @param title 标题
  45. * @param config 其他配置
  46. */
  47. export const mapFormItemRadio = (field, title, config = {}) => ({
  48. field,
  49. title,
  50. titlePrefix: { content: title, icon: "vxe-icon-question-circle-fill" },
  51. itemRender: {
  52. name: "$form-radio",
  53. ...config
  54. },
  55. ...config
  56. })
  57. /**
  58. * 日期配置
  59. * @param field 字段
  60. * @param title 标题
  61. * @param config 其他配置
  62. */
  63. export const mapFormItemDatePicker = (field, title, config = {}) => ({
  64. field,
  65. title,
  66. titlePrefix: { content: title, icon: "vxe-icon-question-circle-fill" },
  67. itemRender: {
  68. name: "ElDatePicker",
  69. props: {
  70. startPlaceholder: "开始日期",
  71. endPlaceholder: "结束日期",
  72. valueFormat: "YYYY-MM-DD HH:mm:ss",
  73. placeholder: `请选择${title}`,
  74. defaultTime: XEUtils.get(config, "props.type")?.includes("range") ? [new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)] : new Date(2000, 1, 1, 23, 59, 59),
  75. ...XEUtils.get(config, "props")
  76. },
  77. ...XEUtils.omit(config, "props")
  78. },
  79. ...config
  80. })