map.vue 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <template>
  2. <div>
  3. <el-form-item label="默认值">
  4. <a href="https://avuejs.com/doc/plugins/map-plugins"
  5. target="_blank"
  6. style="color: #409EFF;">详细文档</a><br>
  7. <el-input v-model="data.valueDefault"
  8. placeholder="默认值"></el-input>
  9. </el-form-item>
  10. <el-form-item label="是否禁用">
  11. <el-switch v-model="data.disabled"></el-switch>
  12. </el-form-item>
  13. <el-form-item label="是否可见">
  14. <el-switch v-model="data.display"></el-switch>
  15. </el-form-item>
  16. <el-form-item label="是否必填">
  17. <el-switch v-model="data.required"></el-switch>
  18. </el-form-item>
  19. </div>
  20. </template>
  21. <script>
  22. export default {
  23. name: "config-map",
  24. props: ['data'],
  25. data () {
  26. return {
  27. validator: {
  28. type: null,
  29. required: null,
  30. pattern: null,
  31. length: null
  32. }
  33. }
  34. },
  35. methods: {
  36. generateRule () {
  37. const rules = [];
  38. Object.keys(this.validator).forEach(key => {
  39. if (this.validator[key]) rules.push(this.validator[key])
  40. })
  41. this.data.rules = rules
  42. },
  43. },
  44. watch: {
  45. 'data.required': function (val) {
  46. if (val) this.validator.required = { required: true, message: `${this.data.label}必须填写` }
  47. else this.validator.required = null
  48. this.generateRule()
  49. }
  50. }
  51. }
  52. </script>