textarea.vue 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <template>
  2. <div>
  3. <el-form-item label="占位内容">
  4. <el-input v-model="data.placeholder"
  5. type="textarea"
  6. autosize
  7. clearable
  8. placeholder="占位内容"></el-input>
  9. </el-form-item>
  10. <el-form-item label="最大长度">
  11. <el-input-number v-model="data.maxlength"
  12. controls-position="right"
  13. placeholder="最大长度"></el-input-number>
  14. </el-form-item>
  15. <el-form-item label="显示计数">
  16. <el-switch v-model="data.showWordLimit"></el-switch>
  17. </el-form-item>
  18. <el-form-item label="最小行">
  19. <el-input-number v-model="data.minRows"
  20. controls-position="right"
  21. placeholder="最小行"
  22. :min="1"></el-input-number>
  23. </el-form-item>
  24. <el-form-item label="最大行">
  25. <el-input-number v-model="data.maxRows"
  26. controls-position="right"
  27. placeholder="最大行"
  28. :min="2"></el-input-number>
  29. </el-form-item>
  30. <el-form-item label="是否只读">
  31. <el-switch v-model="data.readonly"></el-switch>
  32. </el-form-item>
  33. <el-form-item label="是否可见">
  34. <el-switch v-model="data.display"></el-switch>
  35. </el-form-item>
  36. <el-form-item label="是否必填">
  37. <el-switch v-model="data.required"></el-switch>
  38. <el-input v-if="data.required"
  39. v-model.lazy="data.pattern"
  40. clearable
  41. placeholder="正则表达式"></el-input>
  42. </el-form-item>
  43. </div>
  44. </template>
  45. <script>
  46. export default {
  47. name: "config-textarea",
  48. props: ['data'],
  49. data() {
  50. return {
  51. validator: {
  52. type: null,
  53. required: null,
  54. pattern: null,
  55. length: null
  56. }
  57. }
  58. },
  59. methods: {
  60. generateRule() {
  61. const rules = [];
  62. Object.keys(this.validator).forEach(key => {
  63. if (this.validator[key]) rules.push(this.validator[key])
  64. })
  65. this.data.rules = rules
  66. },
  67. },
  68. watch: {
  69. 'data.required': function (val) {
  70. if (val) this.validator.required = { required: true, message: `${this.data.label}必须填写` }
  71. else this.validator.required = null
  72. this.generateRule()
  73. },
  74. 'data.pattern': function (val) {
  75. if (val) this.validator.pattern = { pattern: new RegExp(val), message: `${this.data.label}格式不匹配` }
  76. else this.validator.pattern = null
  77. // delete this.data.pattern
  78. this.generateRule()
  79. }
  80. }
  81. }
  82. </script>