42c298f468d2bf413b73f6e2756c6217a6f43fa5.svn-base 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <template>
  2. <a-spin :spinning="confirmLoading">
  3. <!-- 主表单区域 -->
  4. <a-form-model ref="form" :model="model" :rules="validatorRules">
  5. <#list columns as po><#rt/>
  6. <#if po_index % 2 == 0 ><#rt/>
  7. <a-row>
  8. <#if po.fieldName !='id'>
  9. <#list [po_index, po_index+1] as idx><#rt/>
  10. <#if idx lt columns?size>
  11. <a-col :xs="24" :sm="12">
  12. <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="${columns[idx].fieldName}" label="${columns[idx].filedComment}">
  13. <#if columns[idx].fieldType =='date'>
  14. <a-date-picker placeholder="请输入${columns[idx].filedComment}" style="width:100%" v-model="model.${columns[idx].fieldName}"/>
  15. <#elseif columns[idx].fieldType =='datetime'>
  16. <a-date-picker placeholder="请输入${columns[idx].filedComment}" style="width:100%" :showTime="true" valueFormat="YYYY-MM-DD HH:mm:ss" v-model="model.${columns[idx].fieldName}"/>
  17. <#elseif "int,decimal,double,"?contains(columns[idx].fieldType)>
  18. <a-input-number placeholder="请输入${columns[idx].filedComment}" style="width:100%" v-model="model.${columns[idx].fieldName}"/>
  19. <#else>
  20. <a-input placeholder="请输入${columns[idx].filedComment}" v-model="model.${columns[idx].fieldName}"/>
  21. </#if>
  22. </a-form-model-item>
  23. </a-col>
  24. </#if>
  25. </#list><#rt/>
  26. </#if><#rt/>
  27. </a-row>
  28. </#if><#rt/>
  29. </#list>
  30. </a-form-model>
  31. <!-- 子表单区域 -->
  32. <a-tabs v-model="activeKey" @change="handleChangeTabs">
  33. <#list subTables as sub><#rt/>
  34. <a-tab-pane tab="${sub.ftlDescription}" :key="refKeys[${sub_index}]" :forceRender="true">
  35. <j-editable-table
  36. :ref="refKeys[${sub_index}]"
  37. :loading="${sub.entityName?uncap_first}Table.loading"
  38. :columns="${sub.entityName?uncap_first}Table.columns"
  39. :dataSource="${sub.entityName?uncap_first}Table.dataSource"
  40. :maxHeight="300"
  41. :rowNumber="true"
  42. :rowSelection="true"
  43. :actionButton="true"/>
  44. </a-tab-pane>
  45. </#list>
  46. </a-tabs>
  47. </a-spin>
  48. </template>
  49. <script>
  50. import { FormTypes } from '@/utils/JEditableTableUtil'
  51. import { JEditableTableModelMixin } from '@/mixins/JEditableTableModelMixin'
  52. export default {
  53. name: '${entityName}Form',
  54. mixins: [JEditableTableModelMixin],
  55. data() {
  56. return {
  57. // 新增时子表默认添加几行空数据
  58. addDefaultRowNum: 1,
  59. model: {
  60. //设置默认值
  61. },
  62. validatorRules: {
  63. <#list columns as po>
  64. <#if po.fieldName !='id'>
  65. <#if po.nullable =='N'>
  66. ${po.fieldName}: [{ required: true, message: '请输入${po.filedComment}!' }],
  67. </#if>
  68. </#if>
  69. </#list>
  70. },
  71. refKeys: [<#list subTables as sub>'${sub.entityName?uncap_first}', </#list>],
  72. activeKey: '${subTables[0].entityName?uncap_first}',
  73. <#list subTables as sub><#rt/>
  74. // ${sub.ftlDescription}
  75. ${sub.entityName?uncap_first}Table: {
  76. loading: false,
  77. dataSource: [],
  78. columns: [
  79. <#list sub.colums as col><#rt/>
  80. <#if col.filedComment !='外键'>
  81. {
  82. title: '${col.filedComment}',
  83. key: '${col.fieldName}',
  84. <#if col.fieldType =='date'>
  85. type: FormTypes.date,
  86. <#elseif col.fieldType =='datetime'>
  87. type: FormTypes.datetime,
  88. <#elseif "int,decimal,double,"?contains(col.fieldType)>
  89. type: FormTypes.inputNumber,
  90. <#else>
  91. type: FormTypes.input,
  92. </#if>
  93. defaultValue: '',
  94. placeholder: '请输入${'$'}{title}',
  95. <#if col.nullable =='N'>
  96. validateRules: [{ required: true, message: '${'$'}{title}不能为空' }],
  97. </#if>
  98. },
  99. </#if>
  100. </#list>
  101. ]
  102. },
  103. </#list>
  104. url: {
  105. add: "/${entityPackage}/${entityName?uncap_first}/add",
  106. edit: "/${entityPackage}/${entityName?uncap_first}/edit",
  107. <#list subTables as sub><#rt/>
  108. ${sub.entityName?uncap_first}: {
  109. list: '/${entityPackage}/${entityName?uncap_first}/query${sub.entityName}ByMainId'
  110. },
  111. </#list>
  112. }
  113. }
  114. },
  115. methods: {
  116. /** 调用完edit()方法之后会自动调用此方法 */
  117. editAfter() {
  118. // 加载子表数据
  119. if (this.model.id) {
  120. let params = { id: this.model.id }
  121. <#list subTables as sub><#rt/>
  122. this.requestSubTableData(this.url.${sub.entityName?uncap_first}.list, params, this.${sub.entityName?uncap_first}Table)
  123. </#list>
  124. }
  125. },
  126. /** 整理成formData */
  127. classifyIntoFormData(allValues) {
  128. let main = Object.assign(this.model, allValues.formValue)
  129. return {
  130. ...main, // 展开
  131. <#list subTables as sub><#rt/>
  132. ${sub.entityName?uncap_first}List: allValues.tablesValue[${sub_index}].values,
  133. </#list>
  134. }
  135. }
  136. }
  137. }
  138. </script>
  139. <style scoped>
  140. </style>