GenerateGroup.vue 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. <template>
  2. <div
  3. :style="{
  4. width: element.options.width,
  5. }"
  6. :ref="`generate-group-${element.model}`"
  7. >
  8. <template v-for="item in element.list">
  9. <generate-col-item
  10. v-if="item.type == 'grid'"
  11. :key="item.key"
  12. :model="groupModel"
  13. :rules="rules"
  14. :element="item"
  15. :remote="remote"
  16. :blanks="blanks"
  17. :display="displayFields"
  18. :edit="edit"
  19. :remote-option="remoteOption"
  20. :platform="platform"
  21. :preview="preview"
  22. :container-key="containerKey"
  23. :data-source-value="dataSourceValue"
  24. :event-function="eventFunction"
  25. :print-read="printRead"
  26. :is-group="true"
  27. :is-subform="false"
  28. :group="group ? group + '.' + element.model : element.model"
  29. :field-node="fieldNode"
  30. >
  31. <template v-slot:[blank.name]="scope" v-for="blank in blanks">
  32. <slot :name="blank.name" :model="scope.model"></slot>
  33. </template>
  34. </generate-col-item>
  35. <generate-tab-item
  36. v-else-if="item.type == 'tabs'"
  37. :key="`tabs-${item.key}`"
  38. :model="groupModel"
  39. :rules="rules"
  40. :element="item"
  41. :remote="remote"
  42. :blanks="blanks"
  43. :display="displayFields"
  44. :edit="edit"
  45. :remote-option="remoteOption"
  46. :platform="platform"
  47. :preview="preview"
  48. :container-key="containerKey"
  49. :data-source-value="dataSourceValue"
  50. :event-function="eventFunction"
  51. :print-read="printRead"
  52. :is-group="true"
  53. :is-subform="false"
  54. :group="group ? group + '.' + element.model : element.model"
  55. :field-node="fieldNode"
  56. >
  57. <template v-slot:[blank.name]="scope" v-for="blank in blanks">
  58. <slot :name="blank.name" :model="scope.model"></slot>
  59. </template>
  60. </generate-tab-item>
  61. <generate-collapse
  62. v-else-if="item.type == 'collapse'"
  63. :key="`collapse-${item.key}`"
  64. :model="groupModel"
  65. :rules="rules"
  66. :element="item"
  67. :remote="remote"
  68. :blanks="blanks"
  69. :display="displayFields"
  70. :edit="edit"
  71. :remote-option="remoteOption"
  72. :platform="platform"
  73. :preview="preview"
  74. :container-key="containerKey"
  75. :data-source-value="dataSourceValue"
  76. :event-function="eventFunction"
  77. :print-read="printRead"
  78. :is-group="true"
  79. :is-subform="false"
  80. :group="group ? group + '.' + element.model : element.model"
  81. :field-node="fieldNode"
  82. >
  83. <template v-slot:[blank.name]="scope" v-for="blank in blanks">
  84. <slot :name="blank.name" :model="scope.model"></slot>
  85. </template>
  86. </generate-collapse>
  87. <generate-report
  88. v-else-if="item.type == 'report'"
  89. :key="`report-${item.key}`"
  90. :model="groupModel"
  91. :rules="rules"
  92. :element="item"
  93. :remote="remote"
  94. :blanks="blanks"
  95. :display="displayFields"
  96. :edit="edit"
  97. :remote-option="remoteOption"
  98. :platform="platform"
  99. :preview="preview"
  100. :container-key="containerKey"
  101. :data-source-value="dataSourceValue"
  102. :event-function="eventFunction"
  103. :print-read="printRead"
  104. :is-group="true"
  105. :is-subform="false"
  106. :group="group ? group + '.' + element.model : element.model"
  107. :field-node="fieldNode"
  108. >
  109. <template v-slot:[blank.name]="scope" v-for="blank in blanks">
  110. <slot :name="blank.name" :model="scope.model"></slot>
  111. </template>
  112. </generate-report>
  113. <generate-card
  114. v-else-if="item.type == 'card'"
  115. :key="`card-${item.key}`"
  116. :model="groupModel"
  117. :rules="rules"
  118. :element="item"
  119. :remote="remote"
  120. :blanks="blanks"
  121. :display="displayFields"
  122. :edit="edit"
  123. :remote-option="remoteOption"
  124. :platform="platform"
  125. :preview="preview"
  126. :container-key="containerKey"
  127. :data-source-value="dataSourceValue"
  128. :event-function="eventFunction"
  129. :print-read="printRead"
  130. :is-group="true"
  131. :is-subform="false"
  132. :group="group ? group + '.' + element.model : element.model"
  133. :field-node="fieldNode"
  134. >
  135. <template v-slot:[blank.name]="scope" v-for="blank in blanks">
  136. <slot :name="blank.name" :model="scope.model"></slot>
  137. </template>
  138. </generate-card>
  139. <generate-inline
  140. v-else-if="item.type == 'inline'"
  141. :key="`inline-${item.key}`"
  142. :model="groupModel"
  143. :rules="rules"
  144. :element="item"
  145. :remote="remote"
  146. :blanks="blanks"
  147. :display="displayFields"
  148. :edit="edit"
  149. :remote-option="remoteOption"
  150. :platform="platform"
  151. :preview="preview"
  152. :container-key="containerKey"
  153. :data-source-value="dataSourceValue"
  154. :event-function="eventFunction"
  155. :print-read="printRead"
  156. :is-group="true"
  157. :is-subform="false"
  158. :group="group ? group + '.' + element.model : element.model"
  159. :field-node="fieldNode"
  160. >
  161. <template v-slot:[blank.name]="scope" v-for="blank in blanks">
  162. <slot :name="blank.name" :model="scope.model"></slot>
  163. </template>
  164. </generate-inline>
  165. <generate-form-item
  166. v-else
  167. :key="`form-item-${item.key}`"
  168. :models="groupModel"
  169. :rules="rules"
  170. :widget="item"
  171. :remote="remote"
  172. :blanks="blanks"
  173. :display="displayFields"
  174. :edit="edit"
  175. :remote-option="remoteOption"
  176. :platform="platform"
  177. :preview="preview"
  178. :container-key="containerKey"
  179. :data-source-value="dataSourceValue"
  180. :event-function="eventFunction"
  181. :print-read="printRead"
  182. :is-group="true"
  183. :is-subform="false"
  184. :group="group ? group + '.' + element.model : element.model"
  185. :field-node="fieldNode"
  186. >
  187. <template v-slot:[blank.name]="scope" v-for="blank in blanks">
  188. <slot :name="blank.name" :model="scope.model"></slot>
  189. </template>
  190. </generate-form-item>
  191. </template>
  192. </div>
  193. </template>
  194. <script>
  195. import { defineAsyncComponent } from 'vue'
  196. import { generateGroupMixin } from '../mixins/generateGroup'
  197. export default {
  198. name: 'fm-group',
  199. components: {
  200. GenerateColItem: defineAsyncComponent(() => import('./GenerateColItem.vue')),
  201. GenerateFormItem: defineAsyncComponent(() => import('./GenerateFormItem.vue')),
  202. GenerateInline: defineAsyncComponent(() => import('./GenerateInline.vue')),
  203. GenerateReport: defineAsyncComponent(() => import('./GenerateReport.vue')),
  204. GenerateTabItem: defineAsyncComponent(() => import('./GenerateTabItem.vue')),
  205. GenerateCollapse: defineAsyncComponent(() => import('./GenerateCollapse.vue')),
  206. GenerateCard: defineAsyncComponent(() => import('./GenerateCard.vue'))
  207. },
  208. mixins: [generateGroupMixin],
  209. }
  210. </script>