synForm.vue 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <template>
  2. <view class="syn-form">
  3. <uni-forms
  4. ref="form"
  5. :model="formData"
  6. :rules="rules"
  7. :label-position="labelPosition"
  8. :label-width="labelWidth"
  9. :label-align="labelAlign"
  10. :border="border"
  11. >
  12. <uni-forms-item
  13. v-for="item in formItems"
  14. :key="item.prop"
  15. :label="item.label"
  16. :name="item.prop"
  17. :required="item.required">
  18. <uni-easyinput
  19. v-if="item.type === 'input'"
  20. :type="item.inputType"
  21. v-model="formData[item.prop]"
  22. :disabled="disabled"
  23. :placeholder="item.placeholder || '请输入'+item.label">
  24. </uni-easyinput>
  25. </uni-forms-item>
  26. </uni-forms>
  27. <button @click="submitForm">Submit</button>
  28. </view>
  29. </template>
  30. <script>
  31. export default {
  32. name:"synForm",
  33. props: {
  34. formItems: {
  35. type: Array,
  36. default: []
  37. },
  38. formData: {
  39. type: Object,
  40. default: {}
  41. },
  42. rules: {
  43. type: Object,
  44. default: {}
  45. },
  46. labelPosition: {
  47. type: String,
  48. default: 'left'
  49. },
  50. labelWidth: {
  51. type: Number,
  52. default: 90
  53. },
  54. labelAlign: {
  55. type: String,
  56. default: 'right'
  57. },
  58. border: {
  59. type: Boolean,
  60. default: true
  61. },
  62. },
  63. data() {
  64. return {
  65. };
  66. }
  67. }
  68. </script>
  69. <style scoped>
  70. /deep/ .uni-forms-item--border {
  71. padding: 5px 0;
  72. }
  73. </style>