GenerateTabItem.vue 8.5 KB

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