demo.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <template>
  2. <div>
  3. <byForm
  4. :formConfig="formConfig"
  5. :formOption="formOption"
  6. v-model="formData"
  7. >
  8. <template #slot> 插槽 </template>
  9. </byForm>
  10. <button @click="aaa">打印</button>
  11. </div>
  12. </template>
  13. <script setup>
  14. import byForm from "./index";
  15. const formData = reactive({});
  16. const formOption = reactive({
  17. inline: true,
  18. labelWidth: 100,
  19. itemWidth: 50,
  20. rules: [],
  21. });
  22. const formConfig = computed(() => {
  23. return [
  24. {
  25. type: "input",
  26. prop: "name",
  27. label: "",
  28. required: true,
  29. itemWidth: 100,
  30. disabled: true,
  31. itemType: "textarea",
  32. },
  33. {
  34. type: "select",
  35. prop: "xiala",
  36. label: "下拉框",
  37. multiple: true,
  38. style: {
  39. width: "100px",
  40. },
  41. isLoad: {
  42. //链接
  43. url: "/getRouters",
  44. //返回数据的路径默认返回data
  45. resUrl: "",
  46. //参数
  47. req: {},
  48. //返回数据的key
  49. labelKey: "name",
  50. //返回数据的value
  51. labelVal: "path",
  52. },
  53. },
  54. {
  55. type: "date",
  56. prop: "date",
  57. label: "时间",
  58. itemType: "datetimerange",
  59. },
  60. //如果想隐藏label 打两个空格
  61. {
  62. type: "radio",
  63. prop: "radio",
  64. label: "单选",
  65. },
  66. {
  67. type: "slot",
  68. slotName: "slot",
  69. label: "插槽",
  70. },
  71. ];
  72. });
  73. const aaa = () => {
  74. console.log(formData);
  75. };
  76. // const data = reactive({
  77. // name: null,
  78. // age: null,
  79. // time: null,
  80. // address: null,
  81. // zip: null,
  82. // daterange: [],
  83. // sex: 1,
  84. // step: null,
  85. // })
  86. // const fieldList = reactive([
  87. // { label: '姓名', type: 'input', value: 'name' },
  88. // { label: '年龄', type: 'input', value: 'age', maxlength: 3 },
  89. // { label: '日期', type: 'date', value: 'time' },
  90. // { label: '地址', type: 'input', value: 'address' },
  91. // { label: '邮编', type: 'input', value: 'zip' },
  92. // { label: '日期区间', type: 'date', value: 'daterange', dateType: 'daterange', },
  93. // { label: '计步器', type: 'inputNumber', value: 'step', min: 1, max: 10, },
  94. // { label: '性别', type: 'select', value: 'sex', list: 'sexList', disabled: true },
  95. // ])
  96. // const rules = reactive({
  97. // name: [{required: true, message: '请输入姓名', trigger: ['blur', 'change']}],
  98. // age: [{required: true, message: '请输入年龄', trigger: ['blur', 'change']}],
  99. // })
  100. </script>
  101. <style>
  102. </style>