form-item.vue 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <template>
  2. <div id="form-item">
  3. <!-- <el-row class="input_row" v-if="type === 'text'">
  4. <el-form-item :prop="prop">
  5. <el-col :span="4">{{ label }}</el-col>
  6. <el-col :span="20">
  7. <el-popover :disabled="!usePop" placement="top-start" trigger="hover" ref="input">
  8. <el-alert :closable="false" :title="popContent" type="warning" effect="dark"> </el-alert>
  9. </el-popover>
  10. <el-input :value="modelVal" :disabled="disabled" :placeholder="placeholder" @input="handleInput" v-popover:input></el-input>
  11. </el-col>
  12. </el-form-item>
  13. </el-row> -->
  14. <el-row class="input_row">
  15. <el-form-item :prop="prop">
  16. <el-col :span="4">
  17. <slot name="label">{{ label }}</slot>
  18. </el-col>
  19. <el-col :span="20">
  20. <slot></slot>
  21. </el-col>
  22. </el-form-item>
  23. </el-row>
  24. <!-- <el-row class="input_row" v-if="type === 'select'">
  25. <el-form-item :prop="prop">
  26. <el-col :span="4">
  27. {{ label }}
  28. </el-col>
  29. <el-col :span="20">
  30. <el-select v-model="value" filterable :placeholder="placeholder" @input="handleInput">
  31. <el-option v-for="(item, index) in list" :key="index" :label="item.label" :value="item.label"></el-option>
  32. </el-select>
  33. </el-col>
  34. </el-form-item>
  35. </el-row> -->
  36. </div>
  37. </template>
  38. <script>
  39. export default {
  40. name: 'form-item',
  41. //使用v-model方式的一种,此处为此方式的前置
  42. model: {
  43. prop: 'modelVal', //声明v-model变量过来用什么字符串接收
  44. event: 'change', //v-model改变时,应该走这个名称的方法
  45. },
  46. props: {
  47. modelVal: String, //给v-model开空间
  48. type: { type: String, default: 'text' },
  49. prop: { type: String, default: '' },
  50. label: { type: String, default: '' },
  51. disabled: { type: Boolean, default: false },
  52. placeholder: { type: String, default: '请输入' },
  53. list: { type: Array, default: () => [] },
  54. usePop: { type: Boolean, default: false },
  55. popContent: { type: String, default: '' },
  56. },
  57. components: {},
  58. data: () => ({
  59. value: '',
  60. values: [],
  61. }),
  62. created() {},
  63. computed: {},
  64. mounted() {
  65. if (this.modelVal) {
  66. this.$set(this, `value`, this.modelVal);
  67. }
  68. },
  69. methods: {
  70. handleInput($event) {
  71. //目前只试了text的情况
  72. this.$emit('change', $event);
  73. },
  74. },
  75. };
  76. </script>
  77. <style lang="less" scoped>
  78. .input_row {
  79. margin-top: 0.6rem;
  80. }
  81. </style>