color.vue 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <template>
  2. <div>
  3. <el-form-item label="占位内容">
  4. <el-input v-model="data.placeholder"
  5. clearable
  6. placeholder="占位内容"></el-input>
  7. </el-form-item>
  8. <el-form-item label="是否禁用">
  9. <el-switch v-model="data.disabled"></el-switch>
  10. </el-form-item>
  11. <el-form-item label="是否可见">
  12. <el-switch v-model="data.display"></el-switch>
  13. </el-form-item>
  14. <el-form-item label="是否必填">
  15. <el-switch v-model="data.required"></el-switch>
  16. </el-form-item>
  17. </div>
  18. </template>
  19. <script>
  20. export default {
  21. name: "config-color",
  22. props: ['data'],
  23. data() {
  24. return {
  25. validator: {
  26. type: null,
  27. required: null,
  28. pattern: null,
  29. length: null
  30. }
  31. }
  32. },
  33. methods: {
  34. generateRule() {
  35. const rules = [];
  36. Object.keys(this.validator).forEach(key => {
  37. if (this.validator[key]) rules.push(this.validator[key])
  38. })
  39. this.data.rules = rules
  40. },
  41. },
  42. watch: {
  43. 'data.required': function (val) {
  44. if (val) this.validator.required = { required: true, message: `${this.data.label}必须填写` }
  45. else this.validator.required = null
  46. this.generateRule()
  47. }
  48. }
  49. }
  50. </script>