formComponent.vue 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <template>
  2. <div>
  3. <el-form :model="form" ref="form" style="display:flex;flex-wrap: wrap">
  4. <el-form-item
  5. v-for="(item,index) in formOption" :key="index" v-if="(index+1) <= inDex"
  6. :prop="item.label"
  7. :label="item.name"
  8. :label-width="item.labelSize + 'px'"
  9. :rules="item.rules"
  10. >
  11. <el-input v-model="form[item.label]" v-if="item.inputType == 2" :style="{ width: item.width + 'px' }" size="small" :placeholder="'请输入'+item.name"></el-input>
  12. <span v-if="item.inputType == 1">
  13. <el-select v-model="form[item.label]" slot="prepend" placeholder="请选择">
  14. <el-option v-for="(item,index) in dataList[item.label]" :key="index" :label="item.fName" :value="item.fId"></el-option>
  15. </el-select>
  16. </span>
  17. <el-input
  18. v-if="item.inputType == 4"
  19. type="textarea"
  20. autosize
  21. placeholder="请输入内容"
  22. v-model="form[item.label]">
  23. </el-input>
  24. <div style="width: 100%;display:flex;" v-if="item.inputType == 5">
  25. <el-input v-model="number" placeholder="请输入内容" @input="spellNumbers(item.label)"></el-input>
  26. <span style="padding-left: 10px;padding-right: 10px">至</span>
  27. <el-input v-model="numBer" placeholder="请输入内容" @input="spellNumbers(item.label)"></el-input>
  28. </div>
  29. <el-date-picker
  30. v-if="item.inputType == 3"
  31. v-model="form[item.label]"
  32. type="daterange"
  33. value-format="yyyy-MM-dd"
  34. :default-time="['00:00:00', '23:59:59']"
  35. range-separator="至"
  36. start-placeholder="开始日期"
  37. end-placeholder="结束日期">
  38. </el-date-picker>
  39. </el-form-item>
  40. </el-form>
  41. </div>
  42. </template>
  43. <script>
  44. export default {
  45. name: 'formComponent',
  46. props:['formOption','dataList','inDex'],
  47. data() {
  48. return {
  49. form:{},
  50. numBer:'',
  51. number:'',
  52. };
  53. },
  54. methods: {
  55. returnToForm(){
  56. this.$emit('returnToForm', this.form)
  57. },
  58. spellNumbers(name){
  59. this.form[name] = [this.number,this.numBer]
  60. },
  61. //表单验证
  62. submitForm(form) {
  63. this.$refs["form"].validate((valid) => {
  64. if (valid) {
  65. this.$emit('submitForm')
  66. } else {
  67. return false;
  68. }
  69. });
  70. },
  71. }
  72. }
  73. </script>
  74. <style scoped>
  75. </style>