index.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. const arr2obj = (data, keyName, valueName) =>
  2. Object.fromEntries(data.map((item) => [item[keyName], item[valueName]]));
  3. export const initColumns = (
  4. arr,
  5. prop = { disabled: false, readonly: false, clearable: false }
  6. ) => {
  7. return arr.map((element) => {
  8. element.config = element.config || {};
  9. if (element.type === "Input") {
  10. }
  11. if (element.type === "InputDialog") {
  12. prop.readonly = true;
  13. }
  14. if (element.type === "InputNumber") {
  15. element.config = { controlsPosition: "right", ...element.config };
  16. }
  17. if (element.type === "Select") {
  18. }
  19. if (element.type === "DatePicker") {
  20. element.config = { type: "date", ...element.config };
  21. }
  22. if (element.type === "Upload") {
  23. element.value = [];
  24. }
  25. return { ...element, ...prop };
  26. });
  27. };
  28. // 初始化参数
  29. export const initParams = (prop, key = "key", value = "value") =>
  30. arr2obj(prop, key, value);
  31. // 初始化字典
  32. export const initDicts = (prop) =>
  33. prop
  34. .filter((column) => column.type === "Select")
  35. .map((column) => column.config.optionsName);
  36. // 初始化校验
  37. export const initRules = (prop) => {
  38. const rules = {};
  39. prop
  40. .filter((column) => column.require)
  41. .forEach((column) => {
  42. const message = `${column.title}不能为空`;
  43. rules[column.key] = [
  44. { required: true, message: message, trigger: "change" },
  45. ];
  46. });
  47. return rules;
  48. };
  49. const pageSizes = [25, 50, 100];
  50. const layout = "total, prev, pager, next, sizes, jumper";
  51. const page = { pageNum: 1, pageSize: 25, total: 0 };
  52. export const initPageSizes = () => pageSizes;
  53. export const initLayout = () => layout;
  54. export const initPage = () => page;