dynamic.vue 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <template>
  2. <div>
  3. <el-form-item label="对齐方式">
  4. <el-select v-model="data.children.align"
  5. placeholder="对齐方式"
  6. clearable>
  7. <el-option label="居左"
  8. value="left"></el-option>
  9. <el-option label="居中"
  10. value="center"></el-option>
  11. <el-option label="居右"
  12. value="right"></el-option>
  13. </el-select>
  14. </el-form-item>
  15. <el-form-item label="头部对齐方式"
  16. label-width="110px">
  17. <el-select v-model="data.children.headerAlign"
  18. placeholder="对齐方式"
  19. clearable>
  20. <el-option label="居左"
  21. value="left"></el-option>
  22. <el-option label="居中"
  23. value="center"></el-option>
  24. <el-option label="居右"
  25. value="right"></el-option>
  26. </el-select>
  27. </el-form-item>
  28. <el-form-item label="表单格式">
  29. <el-select v-model="data.children.type"
  30. placeholder="表单格式"
  31. clearable>
  32. <el-option label="表格"
  33. value=""></el-option>
  34. <el-option label="表单"
  35. value="form"></el-option>
  36. </el-select>
  37. </el-form-item>
  38. <el-form-item label="序号"
  39. v-if="data.children.type == 'form'">
  40. <el-switch v-model="data.children.index"></el-switch>
  41. </el-form-item>
  42. <el-form-item label="添加按钮">
  43. <el-switch v-model="data.children.addBtn"></el-switch>
  44. </el-form-item>
  45. <el-form-item label="删除按钮">
  46. <el-switch v-model="data.children.delBtn"></el-switch>
  47. </el-form-item>
  48. <el-form-item label="是否只读">
  49. <el-switch v-model="data.readonly"></el-switch>
  50. </el-form-item>
  51. <el-form-item label="是否禁用">
  52. <el-switch v-model="data.disabled"></el-switch>
  53. </el-form-item>
  54. <el-form-item label="是否可见">
  55. <el-switch v-model="data.display"></el-switch>
  56. </el-form-item>
  57. <el-form-item label="是否必填">
  58. <el-switch v-model="data.required"></el-switch>
  59. </el-form-item>
  60. </div>
  61. </template>
  62. <script>
  63. export default {
  64. name: "config-dynamic",
  65. props: ['data'],
  66. data() {
  67. return {
  68. validator: {
  69. type: null,
  70. required: null,
  71. pattern: null,
  72. length: null
  73. }
  74. }
  75. },
  76. methods: {
  77. generateRule() {
  78. const rules = [];
  79. Object.keys(this.validator).forEach(key => {
  80. if (this.validator[key]) rules.push(this.validator[key])
  81. })
  82. this.data.rules = rules
  83. },
  84. },
  85. watch: {
  86. 'data.required': function (val) {
  87. if (val) this.validator.required = { required: true, message: `${this.data.label}必须填写` }
  88. else this.validator.required = null
  89. this.generateRule()
  90. },
  91. }
  92. }
  93. </script>