form.request.js 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. /**
  2. * Created by RaoMeng on 2020/12/11
  3. * Desc: 通用表单数据处理
  4. */
  5. import { isObjEmpty, isObjNull } from './common.util'
  6. import BillGroupModel from '../../model/common/BillGroupModel'
  7. import BillModel, {
  8. billGetDisplay,
  9. billGetValue,
  10. } from '../../model/common/BillModel'
  11. import { message } from 'antd'
  12. export function analysisFormData (formData, isDetail) {
  13. let billGroupList = []
  14. if (!isObjEmpty(formData)) {
  15. const formList = formData.formList
  16. const gridList = formData.gridList
  17. /**
  18. * 主表数据
  19. */
  20. if (!isObjEmpty(formList)) {
  21. formList.forEach((formGroup, formIndex) => {
  22. const billGroup = getBillGroup(formGroup, billGroupList.length,
  23. isDetail)
  24. billGroup.isForm = true
  25. billGroupList.push(billGroup)
  26. })
  27. }
  28. /**
  29. * 从表数据
  30. */
  31. if (!isObjEmpty(gridList)) {
  32. gridList.forEach((gridGroup, gridIndex) => {
  33. //单个从表的明细列表
  34. const gridDetailList = gridGroup.fieldList
  35. if (!isObjEmpty(gridDetailList)) {
  36. gridDetailList.forEach((gridDetail, gridDetailIndex) => {
  37. const billGroup = getBillGroup({
  38. ...gridGroup,
  39. fieldList: gridDetail,
  40. }, billGroupList.length, isDetail)
  41. if (!isDetail && gridDetailIndex === (gridDetailList.length - 1)) {
  42. billGroup.lastInType = true
  43. } else {
  44. billGroup.lastInType = false
  45. }
  46. billGroup.isForm = false
  47. billGroupList.push(billGroup)
  48. })
  49. }
  50. })
  51. }
  52. }
  53. return billGroupList
  54. }
  55. export function getBillGroup (groupItem, groupIndex, isDetail) {
  56. let billGroup = new BillGroupModel()
  57. billGroup.group = groupItem.groupTitle
  58. billGroup.isForm = groupItem.isForm
  59. billGroup.keyField = groupItem.keyField
  60. billGroup.billCaller = groupItem.groupCaller
  61. billGroup.groupIndex = groupIndex
  62. let showBillFields = [], hideBillFields = []
  63. if (!isObjEmpty(groupItem.fieldList)) {
  64. groupItem.fieldList.forEach((fieldItem, filedIndex) => {
  65. let billModel = new BillModel()
  66. billModel.groupIndex = groupIndex
  67. // billModel.childIndex = filedIndex
  68. billModel.appwidth = fieldItem.appwidth
  69. billModel.length = fieldItem.length
  70. billModel.isdefault = fieldItem.isdefault
  71. billModel.caption = fieldItem.caption
  72. billModel.type = fieldItem.type//前端类型
  73. billModel.sourcetype = fieldItem.sourcetype//字段原类型
  74. billModel.readOnly = (fieldItem.readOnly || isDetail)
  75. billModel.field = fieldItem.field
  76. billModel.logicType = fieldItem.logicType
  77. billModel.findFunctionName = fieldItem.findfunctionname
  78. billModel.allowBlank = (fieldItem.allowBlank || isDetail)
  79. billModel.value = fieldItem.value
  80. billModel.display = fieldItem.display
  81. billModel.defValue = fieldItem.defValue
  82. billModel.localDatas = fieldItem.localDatas
  83. if (isObjEmpty(billModel.value) &&
  84. !isObjEmpty(billModel.defValue, billModel.localDatas)) {
  85. billModel.localDatas.forEach(item => {
  86. if (item.display === billModel.defValue) {
  87. billModel.value = item.value
  88. billModel.display = item.display
  89. }
  90. })
  91. }
  92. if (billModel.isdefault) {
  93. showBillFields.push(billModel)
  94. } else {
  95. hideBillFields.push(billModel)
  96. }
  97. })
  98. }
  99. billGroup.showBillFields = showBillFields
  100. billGroup.hideBillFields = hideBillFields
  101. return billGroup
  102. }
  103. /**
  104. * 解析拼接单据数据
  105. * @param billGroupModelList
  106. * @returns {{form: *, grid: (null|[])}}
  107. */
  108. export function getFormAndGrid (billGroupModelList) {
  109. if (!isObjEmpty(billGroupModelList)) {
  110. const fields = analysisFields(billGroupModelList)
  111. let formStore = analysisForm(fields.formFields)
  112. if (isObjNull(formStore)) {
  113. return
  114. }
  115. let gridStoreList = analysisGrid(fields.gridGroupFields)
  116. if (isObjNull(gridStoreList)) {
  117. return
  118. }
  119. return {
  120. form: formStore,
  121. grid: gridStoreList,
  122. formFields: fields.formFields,
  123. gridFields: fields.gridGroupFields,
  124. }
  125. }
  126. }
  127. /**
  128. * 返回主表与从表字段配置列表
  129. * @param billGroupModelList
  130. * @returns {{formFields: [], gridGroupFields: []}}
  131. */
  132. function analysisFields (billGroupModelList) {
  133. let formFields = [], gridGroupFields = []
  134. for (let i = 0; i < billGroupModelList.length; i++) {
  135. let billGroup = billGroupModelList[i]
  136. if (isObjNull(billGroup)) {
  137. continue
  138. }
  139. if (billGroup.isForm) {
  140. if (!isObjEmpty(billGroup.showBillFields)) {
  141. formFields = formFields.concat(billGroup.showBillFields)
  142. }
  143. if (!isObjEmpty(billGroup.hideBillFields)) {
  144. formFields = formFields.concat(billGroup.hideBillFields)
  145. }
  146. } else {
  147. let gridFields = []
  148. if (!isObjEmpty(billGroup.showBillFields)) {
  149. gridFields = gridFields.concat(billGroup.showBillFields)
  150. }
  151. if (!isObjEmpty(billGroup.hideBillFields)) {
  152. gridFields = gridFields.concat(billGroup.hideBillFields)
  153. }
  154. gridGroupFields.push(gridFields)
  155. }
  156. }
  157. return {
  158. formFields,
  159. gridGroupFields,
  160. }
  161. }
  162. /**
  163. * 判断主表字段必填情况,拼接主表字段
  164. * @param formFields
  165. * @returns {null}
  166. */
  167. function analysisForm (formFields) {
  168. if (!isObjNull(formFields)) {
  169. let formStore = {}
  170. for (let i = 0; i < formFields.length; i++) {
  171. let billModel = formFields[i]
  172. if (isObjNull(billModel)) {
  173. continue
  174. }
  175. if (isObjEmpty(billGetValue(billModel)) && !billModel.allowBlank) {
  176. message.error(`${billModel.caption}为必填项`)
  177. return null
  178. }
  179. //Todo 附件上传
  180. formStore[billModel.field] = billGetDisplay(billModel)
  181. }
  182. return formStore
  183. } else {
  184. return null
  185. }
  186. }
  187. function analysisGrid (gridBillMap) {
  188. let gridStoreList = []
  189. if (!isObjNull(gridBillMap)) {
  190. for (let i = 0; i < gridBillMap.length; i++) {
  191. let gridFields = gridBillMap[i]
  192. if (!isObjEmpty(gridFields)) {
  193. let gridStore = {}
  194. for (let j = 0; j < gridFields.length; j++) {
  195. let billModel = gridFields[j]
  196. if (isObjEmpty(billGetValue(billModel)) && !billModel.allowBlank) {
  197. message.error(`${billModel.caption}为必填项`)
  198. return null
  199. }
  200. //Todo 附件上传
  201. gridStore[billModel.field] = billGetDisplay(billModel)
  202. }
  203. gridStoreList.push(gridStore)
  204. }
  205. }
  206. }
  207. return gridStoreList
  208. }