GenerateCollapse.vue 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. <template>
  2. <el-collapse v-model="tabActive"
  3. :accordion="element.options.accordion"
  4. :class="{
  5. [element.options.customClass]: element.options.customClass?true: false
  6. }"
  7. style="margin-bottom: 18px;"
  8. v-if="elementDisplay"
  9. >
  10. <el-collapse-item
  11. :key="item.name"
  12. :title="item.title"
  13. :name="item.name"
  14. v-for="item in element.tabs"
  15. >
  16. <template v-for="tab in item.list" :key="tab.key">
  17. <generate-col-item
  18. v-if="tab.type == 'grid'"
  19. :model="dataModels"
  20. :rules="rules"
  21. :element="tab"
  22. :remote="remote"
  23. :blanks="blanks"
  24. :display="display"
  25. :sub-hide-fields="subHideFields"
  26. :sub-disabled-fields="subDisabledFields"
  27. :edit="edit"
  28. :remote-option="remoteOption"
  29. :platform="platform"
  30. :preview="preview"
  31. :container-key="containerKey"
  32. :data-source-value="dataSourceValue"
  33. :event-function="eventFunction"
  34. :print-read="printRead"
  35. :is-subform="isSubform"
  36. :row-index="rowIndex"
  37. :sub-name="subName"
  38. :is-dialog="isDialog"
  39. :dialog-name="dialogName"
  40. :is-group="isGroup"
  41. :group="group"
  42. :field-node="fieldNode"
  43. >
  44. <template v-slot:[blank.name]="scope" v-for="blank in blanks">
  45. <slot :name="blank.name" :model="scope.model"></slot>
  46. </template>
  47. </generate-col-item>
  48. <generate-report
  49. v-else-if="tab.type == 'report'"
  50. :model="dataModels"
  51. :rules="rules"
  52. :element="tab"
  53. :remote="remote"
  54. :blanks="blanks"
  55. :display="display"
  56. :sub-hide-fields="subHideFields"
  57. :sub-disabled-fields="subDisabledFields"
  58. :edit="edit"
  59. :remote-option="remoteOption"
  60. :platform="platform"
  61. :preview="preview"
  62. :container-key="containerKey"
  63. :data-source-value="dataSourceValue"
  64. :event-function="eventFunction"
  65. :print-read="printRead"
  66. :is-subform="isSubform"
  67. :row-index="rowIndex"
  68. :sub-name="subName"
  69. :is-dialog="isDialog"
  70. :dialog-name="dialogName"
  71. :is-group="isGroup"
  72. :group="group"
  73. :field-node="fieldNode"
  74. >
  75. <template v-slot:[blank.name]="scope" v-for="blank in blanks">
  76. <slot :name="blank.name" :model="scope.model"></slot>
  77. </template>
  78. </generate-report>
  79. <generate-inline
  80. v-else-if="tab.type == 'inline'"
  81. :model="dataModels"
  82. :rules="rules"
  83. :element="tab"
  84. :remote="remote"
  85. :blanks="blanks"
  86. :display="display"
  87. :sub-hide-fields="subHideFields"
  88. :sub-disabled-fields="subDisabledFields"
  89. :edit="edit"
  90. :remote-option="remoteOption"
  91. :platform="platform"
  92. :preview="preview"
  93. :container-key="containerKey"
  94. :data-source-value="dataSourceValue"
  95. :event-function="eventFunction"
  96. :print-read="printRead"
  97. :is-subform="isSubform"
  98. :row-index="rowIndex"
  99. :sub-name="subName"
  100. :is-dialog="isDialog"
  101. :dialog-name="dialogName"
  102. :is-group="isGroup"
  103. :group="group"
  104. :field-node="fieldNode"
  105. >
  106. <template v-slot:[blank.name]="scope" v-for="blank in blanks">
  107. <slot :name="blank.name" :model="scope.model"></slot>
  108. </template>
  109. </generate-inline>
  110. <generate-tab-item
  111. v-else-if="tab.type == 'tabs'"
  112. :model="dataModels"
  113. :rules="rules"
  114. :element="tab"
  115. :remote="remote"
  116. :blanks="blanks"
  117. :display="display"
  118. :sub-hide-fields="subHideFields"
  119. :sub-disabled-fields="subDisabledFields"
  120. :edit="edit"
  121. :remote-option="remoteOption"
  122. :platform="platform"
  123. :preview="preview"
  124. :container-key="containerKey"
  125. :data-source-value="dataSourceValue"
  126. :event-function="eventFunction"
  127. :print-read="printRead"
  128. :is-subform="isSubform"
  129. :row-index="rowIndex"
  130. :sub-name="subName"
  131. :is-dialog="isDialog"
  132. :dialog-name="dialogName"
  133. :is-group="isGroup"
  134. :group="group"
  135. :field-node="fieldNode"
  136. >
  137. <template v-slot:[blank.name]="scope" v-for="blank in blanks">
  138. <slot :name="blank.name" :model="scope.model"></slot>
  139. </template>
  140. </generate-tab-item>
  141. <generate-collapse
  142. v-else-if="tab.type == 'collapse'"
  143. :model="dataModels"
  144. :rules="rules"
  145. :element="tab"
  146. :remote="remote"
  147. :blanks="blanks"
  148. :display="display"
  149. :sub-hide-fields="subHideFields"
  150. :sub-disabled-fields="subDisabledFields"
  151. :edit="edit"
  152. :remote-option="remoteOption"
  153. :platform="platform"
  154. :preview="preview"
  155. :container-key="containerKey"
  156. :data-source-value="dataSourceValue"
  157. :event-function="eventFunction"
  158. :print-read="printRead"
  159. :is-subform="isSubform"
  160. :row-index="rowIndex"
  161. :sub-name="subName"
  162. :is-dialog="isDialog"
  163. :dialog-name="dialogName"
  164. :is-group="isGroup"
  165. :group="group"
  166. :field-node="fieldNode"
  167. >
  168. <template v-slot:[blank.name]="scope" v-for="blank in blanks">
  169. <slot :name="blank.name" :model="scope.model"></slot>
  170. </template>
  171. </generate-collapse>
  172. <generate-card
  173. v-else-if="tab.type == 'card'"
  174. :model="dataModels"
  175. :rules="rules"
  176. :element="tab"
  177. :remote="remote"
  178. :blanks="blanks"
  179. :display="display"
  180. :sub-hide-fields="subHideFields"
  181. :sub-disabled-fields="subDisabledFields"
  182. :edit="edit"
  183. :remote-option="remoteOption"
  184. :platform="platform"
  185. :preview="preview"
  186. :container-key="containerKey"
  187. :data-source-value="dataSourceValue"
  188. :event-function="eventFunction"
  189. :print-read="printRead"
  190. :is-subform="isSubform"
  191. :row-index="rowIndex"
  192. :sub-name="subName"
  193. :is-dialog="isDialog"
  194. :dialog-name="dialogName"
  195. :is-group="isGroup"
  196. :group="group"
  197. :field-node="fieldNode"
  198. >
  199. <template v-slot:[blank.name]="scope" v-for="blank in blanks">
  200. <slot :name="blank.name" :model="scope.model"></slot>
  201. </template>
  202. </generate-card>
  203. <generate-form-item
  204. v-else
  205. :models="dataModels"
  206. :rules="rules"
  207. :widget="tab"
  208. :remote="remote"
  209. :blanks="blanks"
  210. :display="display"
  211. :sub-hide-fields="subHideFields"
  212. :sub-disabled-fields="subDisabledFields"
  213. :edit="edit"
  214. :remote-option="remoteOption"
  215. :platform="platform"
  216. :preview="preview"
  217. :container-key="containerKey"
  218. :data-source-value="dataSourceValue"
  219. :event-function="eventFunction"
  220. :print-read="printRead"
  221. :is-subform="isSubform"
  222. :row-index="rowIndex"
  223. :sub-name="subName"
  224. :is-dialog="isDialog"
  225. :dialog-name="dialogName"
  226. :is-group="isGroup"
  227. :group="group"
  228. :field-node="fieldNode"
  229. >
  230. <template v-slot:[blank.name]="scope" v-for="blank in blanks">
  231. <slot :name="blank.name" :model="scope.model"></slot>
  232. </template>
  233. </generate-form-item>
  234. </template>
  235. </el-collapse-item>
  236. </el-collapse>
  237. </template>
  238. <script>
  239. import GenerateFormItem from './GenerateFormItem.vue'
  240. import GenerateInline from './GenerateInline.vue'
  241. import { defineAsyncComponent } from 'vue'
  242. import { generateCollapseMixin } from '../mixins/generateCollapse'
  243. export default {
  244. name: 'generate-collapse',
  245. components: {
  246. GenerateFormItem,
  247. GenerateInline,
  248. GenerateColItem : defineAsyncComponent(() => import('./GenerateColItem.vue')),
  249. GenerateReport: defineAsyncComponent(() => import('./GenerateReport.vue')),
  250. GenerateTabItem: defineAsyncComponent(() => import('./GenerateTabItem.vue')),
  251. GenerateCard: defineAsyncComponent(() => import('./GenerateCard.vue'))
  252. },
  253. mixins: [generateCollapseMixin],
  254. }
  255. </script>