add-three.vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <template>
  2. <div id="add-three">
  3. <el-row>
  4. <el-col :span="24" class="main">
  5. <el-form :model="form" :rules="rules" ref="form" label-width="180px">
  6. <template v-for="(i, index) in question">
  7. <template v-if="i.type === 'select'">
  8. <el-col :span="12" :key="`select${index}`">
  9. <el-form-item :prop="`${index}`" :label="`${i.label}`">
  10. <el-select v-model="form[i.model]" placeholder="">
  11. <el-option v-for="(item, index) in getList(i.list)" :key="index" :value="item" :label="item"></el-option>
  12. </el-select>
  13. </el-form-item>
  14. </el-col>
  15. </template>
  16. <template v-else-if="i.type === 'checkbox'">
  17. <el-col :span="12" :key="`checkbox${index}`">
  18. <el-form-item :prop="`${index}`" :label="`${i.label}`">
  19. <el-select v-model="form[i.model]" multiple placeholder="">
  20. <el-option v-for="(item, index) in getList(i.list)" :key="index" :value="item" :label="item"></el-option>
  21. </el-select>
  22. </el-form-item>
  23. </el-col>
  24. </template>
  25. <template v-else-if="i.type === 'object'">
  26. <!-- <el-col :span="24" :key="`object-addThree${index}`" style="text-align: center;padding-bottom:15px">{{ i.label }}</el-col>
  27. <el-row class="object" :key="`object-children${index}`">
  28. <el-col :span="12" v-for="(f, cindex) in i.children" :key="`children${cindex}`">
  29. <el-form-item :prop="`${index}-${cindex}`" :label="`${f.label}`">
  30. <el-select v-model="form[f.model]" multiple placeholder="">
  31. <el-option v-for="(item, index) in getList(i.list)" :key="index" :value="item" :label="item"></el-option>
  32. </el-select>
  33. </el-form-item>
  34. </el-col>
  35. </el-row> -->
  36. <el-row type="flex" :key="`object-addThree${index}`" align="middle" class="object">
  37. <el-col :span="3" class="olabel">{{ i.label }}</el-col>
  38. <el-col :span="21" class="oselect">
  39. <el-col :span="5" v-for="(f, cindex) in i.children" :key="`children${cindex}`" class="child">
  40. <el-col :span="24" class="child_label">{{ f.label }}</el-col>
  41. <el-col :span="24" class="child_select">
  42. <el-select v-model="form[f.model]" multiple placeholder="">
  43. <el-option v-for="(item, index) in getList(i.list)" :key="index" :value="item" :label="item"></el-option>
  44. </el-select>
  45. </el-col>
  46. <!-- <el-form-item :prop="`${index}-${cindex}`" :label="`${f.label}`">
  47. <el-select v-model="form[f.model]" multiple placeholder="">
  48. <el-option v-for="(item, index) in getList(i.list)" :key="index" :value="item" :label="item"></el-option>
  49. </el-select>
  50. </el-form-item> -->
  51. </el-col>
  52. </el-col>
  53. </el-row>
  54. </template>
  55. </template>
  56. </el-form>
  57. </el-col>
  58. </el-row>
  59. </div>
  60. </template>
  61. <script>
  62. import { addThree } from '../fields.js';
  63. import * as select from '../select.js';
  64. import { mapState, createNamespacedHelpers } from 'vuex';
  65. export default {
  66. name: 'addThree',
  67. props: {
  68. form: { type: Object },
  69. rules: { type: Object },
  70. },
  71. components: {},
  72. data: function() {
  73. return {
  74. question: addThree,
  75. };
  76. },
  77. created() {},
  78. methods: {
  79. // 获取列表
  80. getList(type) {
  81. return select[type];
  82. },
  83. },
  84. };
  85. </script>
  86. <style lang="less" scoped>
  87. @borderColor: #ccc;
  88. .label {
  89. font-size: 14px;
  90. color: #606266;
  91. margin: 0 7px 0 0;
  92. padding: 5px 0;
  93. }
  94. .select {
  95. width: 90.8%;
  96. .chiList {
  97. width: 13.2%;
  98. margin: 0 10px 0 0;
  99. .chi_label {
  100. text-align: center;
  101. font-size: 14px;
  102. color: #606266;
  103. padding: 5px 0;
  104. }
  105. }
  106. .chiList:last-child {
  107. margin: 0;
  108. }
  109. }
  110. // .object {
  111. // border-bottom: 1px #ccc solid;
  112. // margin-bottom: 15px;
  113. // .olabel {
  114. // text-align: center;
  115. // }
  116. // }
  117. // .child {
  118. // width: 20%;
  119. // }
  120. .object {
  121. border-bottom: 1px #ccc solid;
  122. margin: 0 0 10px 0;
  123. padding: 0 0 10px 0;
  124. .olabel {
  125. font-size: 14px;
  126. color: #666;
  127. }
  128. .child {
  129. width: 18.9%;
  130. margin: 0 10px 0 0;
  131. .child_label {
  132. text-align: center;
  133. font-size: 14px;
  134. color: #666;
  135. padding: 10px 0;
  136. }
  137. }
  138. .child:nth-child(5n) {
  139. margin: 0;
  140. }
  141. }
  142. /deep/.el-input__inner {
  143. border: 1px solid #333;
  144. }
  145. </style>