201c46a98df3e7886c1ff169783fe99dadc65d74.svn-base 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <#include "/common/utils.ftl">
  2. <#list subTables as sub>
  3. <#if sub.foreignRelationType=='1'>
  4. #segment#${sub.entityName}Form.vue
  5. <template>
  6. <j-form-container :disabled="disabled">
  7. <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
  8. <a-row>
  9. <#assign form_popup = false>
  10. <#list sub.colums as po>
  11. <#if po.isShow =='Y'>
  12. <#assign form_field_dictCode="">
  13. <#if po.dictTable?default("")?trim?length gt 1 && po.dictText?default("")?trim?length gt 1 && po.dictField?default("")?trim?length gt 1>
  14. <#assign form_field_dictCode="${po.dictTable},${po.dictText},${po.dictField}">
  15. <#elseif po.dictField?default("")?trim?length gt 1>
  16. <#assign form_field_dictCode="${po.dictField}">
  17. </#if>
  18. <#if po.classType =='textarea'>
  19. <a-col :span="24">
  20. <a-form-model-item label="${po.filedComment}" :labelCol="labelCol2" :wrapperCol="wrapperCol2" prop="${autoStringSuffixForModel(po)}">
  21. <#else>
  22. <a-col :xs="24" :sm="12">
  23. <a-form-model-item label="${po.filedComment}" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="${autoStringSuffixForModel(po)}">
  24. </#if>
  25. <#if po.classType =='date'>
  26. <j-date placeholder="请选择${po.filedComment}" v-model="model.${po.fieldName}" style="width: 100%"/>
  27. <#elseif po.classType =='datetime'>
  28. <j-date placeholder="请选择${po.filedComment}" v-model="model.${po.fieldName}" :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" style="width: 100%"/>
  29. <#elseif po.classType =='time'>
  30. <j-time placeholder="请选择${po.filedComment}" v-model="model.${po.fieldName}" style="width: 100%" <#if po.readonly=='Y'>disabled</#if>/>
  31. <#elseif po.classType =='popup'>
  32. <#assign form_popup=true>
  33. <j-popup
  34. v-model="model.${po.fieldName}"
  35. field="${po.fieldName}"
  36. org-fields="${po.dictField}"
  37. dest-fields="${Format.underlineToHump(po.dictText)}"
  38. code="${po.dictTable}"
  39. :multi="${po.extendParams.popupMulti?c}"
  40. @input="popupCallback"/>
  41. <#elseif po.classType =='switch'>
  42. <j-switch v-model="model.${po.fieldName}" <#if po.dictField!= 'is_open'>:options="${po.dictField}"</#if>></j-switch>
  43. <#elseif po.classType =='sel_depart'>
  44. <j-select-depart v-model="model.${po.fieldName}" />
  45. <#elseif po.classType =='sel_user'>
  46. <j-select-user-by-dep v-model="model.${po.fieldName}" />
  47. <#elseif po.classType =='textarea'>
  48. <a-textarea v-model="model.${autoStringSuffixForModel(po)}" rows="4" placeholder="请输入${po.filedComment}"/>
  49. <#elseif po.classType=='list' || po.classType=='radio'>
  50. <j-dict-select-tag type="${po.classType}" v-model="model.${po.fieldName}" dictCode="${form_field_dictCode}" placeholder="请选择${po.filedComment}"/>
  51. <#elseif po.classType=='list_multi' || po.classType=='checkbox'>
  52. <j-multi-select-tag type="${po.classType}" v-model="model.${po.fieldName}" dictCode="${form_field_dictCode}" placeholder="请选择${po.filedComment}"/>
  53. <#elseif po.fieldDbType=='int' || po.fieldDbType=='double' || po.fieldDbType=='BigDecimal'>
  54. <a-input-number v-model="model.${po.fieldName}" placeholder="请输入${po.filedComment}" style="width: 100%"/>
  55. <#elseif po.classType=='file'>
  56. <j-upload v-model="model.${po.fieldName}" ></j-upload>
  57. <#elseif po.classType=='image'>
  58. <j-image-upload isMultiple v-model="model.${po.fieldName}"></j-image-upload>
  59. <#else>
  60. <a-input v-model="model.${autoStringSuffixForModel(po)}" placeholder="请输入${po.filedComment}"></a-input>
  61. </#if>
  62. </a-form-model-item>
  63. </a-col>
  64. </#if>
  65. </#list>
  66. </a-row>
  67. </a-form-model>
  68. </j-form-container>
  69. </template>
  70. <script>
  71. import { getAction } from '@/api/manage'
  72. import { validateDuplicateValue } from '@/utils/util'
  73. import { VALIDATE_NO_PASSED } from '@/utils/JEditableTableUtil'
  74. export default {
  75. name: '${sub.entityName}Form',
  76. components: {
  77. },
  78. props:{
  79. disabled: {
  80. type: Boolean,
  81. default: false,
  82. required: false
  83. }
  84. },
  85. data () {
  86. return {
  87. model:{
  88. <#include "/common/init/initValueSub.ftl">
  89. },
  90. labelCol: {
  91. xs: { span: 24 },
  92. sm: { span: 6 },
  93. },
  94. wrapperCol: {
  95. xs: { span: 24 },
  96. sm: { span: 16 },
  97. },
  98. labelCol2: {
  99. xs: { span: 24 },
  100. sm: { span: 3 },
  101. },
  102. wrapperCol2: {
  103. xs: { span: 24 },
  104. sm: { span: 20 },
  105. },
  106. <#include "/common/validatorRulesTemplate/sub.ftl">
  107. confirmLoading: false,
  108. }
  109. },
  110. created () {
  111. //备份model原始值
  112. this.modelDefault = JSON.parse(JSON.stringify(this.model));
  113. },
  114. methods:{
  115. initFormData(url,id){
  116. this.clearFormData()
  117. if(!id){
  118. this.edit(this.modelDefault);
  119. }else{
  120. getAction(url,{id:id}).then(res=>{
  121. if(res.success){
  122. let records = res.result.records
  123. if(records && records.length>0){
  124. this.edit(records[0])
  125. }
  126. }
  127. })
  128. }
  129. },
  130. edit(record){
  131. this.model = Object.assign({}, record)
  132. },
  133. getFormData(){
  134. let formdata_arr = []
  135. this.$refs.form.validate(valid => {
  136. if (valid) {
  137. let isNullObj = true
  138. Object.keys(this.model).forEach(key=>{
  139. if(this.model[key]){
  140. isNullObj = false
  141. }
  142. })
  143. if(!isNullObj){
  144. formdata_arr.push(this.model)
  145. }
  146. }else{
  147. this.$emit("validateError","${sub.ftlDescription}表单校验未通过");
  148. return false
  149. }
  150. })
  151. return formdata_arr;
  152. },
  153. validate(index){
  154. return new Promise((resolve, reject) => {
  155. // 验证主表表单
  156. this.$refs.form.validate(valid => {
  157. !valid ? reject({ error: VALIDATE_NO_PASSED ,index}) : resolve()
  158. })
  159. }).then(values => {
  160. return Promise.resolve()
  161. }).catch(error => {
  162. return Promise.reject(error)
  163. })
  164. },
  165. <#if form_popup>
  166. popupCallback(value,row){
  167. this.model = Object.assign(this.model, row);
  168. },
  169. </#if>
  170. clearFormData(){
  171. this.$refs.form.clearValidate()
  172. }
  173. }
  174. }
  175. </script>
  176. </#if>
  177. </#list>