BaseForm.vue 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. <template>
  2. <a-card :bordered='false' v-show='visible' class='card' :title='modalTitle'>
  3. <a-row :gutter='48' slot='extra'>
  4. <a-col :md='48' :sm='48'>
  5. <span class='table-page-search-submitButtons' style='float: right'>
  6. <a-button :loading='confirmLoading' type='primary' @click='save()'>保存</a-button>
  7. <a-button style='margin-left: 8px' type='default' @click='handleCancel()'>返回</a-button>
  8. </span>
  9. </a-col>
  10. </a-row>
  11. <a-form :form='form'>
  12. <a-form-item v-show='false'>
  13. <a-input v-decorator="['id']" type='hidden' />
  14. <a-input v-decorator="['采购入库单']" type='hidden' />
  15. <a-input v-decorator="['备件']" type='hidden' />
  16. </a-form-item>
  17. <row-list :col='2'>
  18. <row-item>
  19. <a-form-item
  20. label='价值'
  21. :labelCol='BaseTool.Constant.labelCol'
  22. :wrapperCol='BaseTool.Constant.wrapperCol'
  23. >
  24. <a-input-number
  25. style='width: 100%'
  26. :min='0'
  27. :formatter='BaseTool.Amount.formatter'
  28. :parser='BaseTool.Amount.parser'
  29. v-decorator="['price', {rules: [{required: true, message: '价值不能为空'}]}]" />
  30. </a-form-item>
  31. </row-item>
  32. <row-item>
  33. <a-form-item
  34. label='价值小计'
  35. :labelCol='BaseTool.Constant.labelCol'
  36. :wrapperCol='BaseTool.Constant.wrapperCol'
  37. >
  38. <a-input-number
  39. style='width: 100%'
  40. :min='0'
  41. :formatter='BaseTool.Amount.formatter'
  42. :parser='BaseTool.Amount.parser'
  43. v-decorator="['totalPrice', {rules: [{required: true, message: '价值小计不能为空'}]}]" />
  44. </a-form-item>
  45. </row-item>
  46. <row-item>
  47. <a-form-item
  48. label='数量小计'
  49. :labelCol='BaseTool.Constant.labelCol'
  50. :wrapperCol='BaseTool.Constant.wrapperCol'
  51. >
  52. <a-input-number
  53. style='width: 100%'
  54. :min='0'
  55. :formatter='BaseTool.Amount.formatter'
  56. :parser='BaseTool.Amount.parser'
  57. v-decorator="['num', {rules: [{required: true, message: '数量小计不能为空'}]}]" />
  58. </a-form-item>
  59. </row-item>
  60. <row-item>
  61. <a-form-item
  62. label='采购入库单'
  63. :labelCol='BaseTool.Constant.labelCol'
  64. :wrapperCol='BaseTool.Constant.wrapperCol'
  65. >
  66. <a-input
  67. style='width: 70%'
  68. disabled
  69. v-decorator="['purchaseStoreFormName', {rules: [{required: true, message: '设备名称不能为空'}]}]" />
  70. <a-button style='width: 30%' type='primary' @click='purchaseStoreFormHandleSelect'>选择</a-button>
  71. </a-form-item>
  72. </row-item>
  73. <row-item>
  74. <a-form-item
  75. label='备件'
  76. :labelCol='BaseTool.Constant.labelCol'
  77. :wrapperCol='BaseTool.Constant.wrapperCol'
  78. >
  79. <a-input
  80. style='width: 70%'
  81. disabled
  82. v-decorator="['sparePartInfoName', {rules: [{required: true, message: '设备名称不能为空'}]}]" />
  83. <a-button style='width: 30%' type='primary' @click='sparePartInfoHandleSelect'>选择</a-button>
  84. </a-form-item>
  85. </row-item>
  86. </row-list>
  87. </a-form>
  88. <purchase-store-form-select-modal ref='purchaseStoreFormSelectModal' @selected='purchaseStoreFormHandleSelected' />
  89. <spare-part-info-select-modal ref='sparePartInfoSelectModal' @selected='sparePartInfoHandleSelected' />
  90. </a-card>
  91. </template>
  92. <script>
  93. import pick from 'lodash.pick'
  94. import { addPurchaseStoreFormDetail, updatePurchaseStoreFormDetail } from '@/api/store/purchaseformdetail'
  95. import PurchaseStoreFormSelectModal from '@/views/store/purchaseform/modules/PurchaseStoreFormSelectModal'
  96. import SparePartInfoSelectModal from '@/views/sqarepartmanage/sparepartinfo/modules/SparePartInfoSelectModal'
  97. import { Ellipsis, STable } from '@/components'
  98. import Detail from '@/views/store/purchaseformdetail/modules/Detail'
  99. export default {
  100. name: 'BasePurchaseStoreFormDetail',
  101. components: {
  102. STable,
  103. Ellipsis,
  104. Detail,
  105. PurchaseStoreFormSelectModal,
  106. SparePartInfoSelectModal
  107. },
  108. data() {
  109. return {
  110. confirmLoading: false,
  111. modalTitle: null,
  112. form: this.$form.createForm(this),
  113. visible: false
  114. // 下拉框map
  115. }
  116. },
  117. props: {},
  118. created() {
  119. // 下拉框map
  120. },
  121. methods: {
  122. base(record) {
  123. this.visible = true
  124. // 如果是空标识添加
  125. if (this.BaseTool.Object.isBlank(record)) {
  126. this.modalTitle = '添加'
  127. return
  128. }
  129. this.modalTitle = '编辑'
  130. const { form: { setFieldsValue } } = this
  131. // 日期处理
  132. this.$nextTick(() => {
  133. setFieldsValue(Object.assign(pick(record, [
  134. 'id',
  135. 'price',
  136. 'totalPrice',
  137. 'num',
  138. 'purchaseStoreFormId',
  139. 'sparePartInfoId'
  140. ])))
  141. })
  142. },
  143. save() {
  144. const { form: { validateFieldsAndScroll } } = this
  145. this.confirmLoading = true
  146. validateFieldsAndScroll((errors, values) => {
  147. if (errors) {
  148. this.confirmLoading = false
  149. return
  150. }
  151. // 日期处理
  152. if (this.BaseTool.String.isBlank(values.id)) {
  153. addPurchaseStoreFormDetail(values)
  154. .then(() => {
  155. this.handleCancel(values)
  156. }).catch(() => {
  157. this.confirmLoading = false
  158. })
  159. } else {
  160. updatePurchaseStoreFormDetail(values)
  161. .then(() => {
  162. this.handleCancel(values)
  163. }).catch(() => {
  164. this.confirmLoading = false
  165. })
  166. }
  167. })
  168. },
  169. handleCancel(values) {
  170. this.visible = false
  171. this.confirmLoading = false
  172. this.form.resetFields()
  173. if (this.BaseTool.Object.isNotBlank(values)) {
  174. this.$emit('ok', values)
  175. } else {
  176. this.$emit('ok')
  177. }
  178. }
  179. ,
  180. purchaseStoreFormHandleSelect() {
  181. this.$refs.purchaseStoreFormSelectModal.base({}, {})
  182. },
  183. purchaseStoreFormHandleSelected(keys, rows) {
  184. const [key] = keys
  185. const [row] = rows
  186. const { form: { setFieldsValue } } = this
  187. // 日期处理
  188. this.$nextTick(() => {
  189. setFieldsValue(Object.assign({
  190. 'purchaseStoreFormId': key,
  191. 'purchaseStoreFormName': row.name
  192. }))
  193. })
  194. },
  195. sparePartInfoHandleSelect() {
  196. this.$refs.sparePartInfoSelectModal.base({}, {})
  197. },
  198. sparePartInfoHandleSelected(keys, rows) {
  199. const [key] = keys
  200. const [row] = rows
  201. const { form: { setFieldsValue } } = this
  202. // 日期处理
  203. this.$nextTick(() => {
  204. setFieldsValue(Object.assign({
  205. 'sparePartInfoId': key,
  206. 'sparePartInfoName': row.name
  207. }))
  208. })
  209. }
  210. }
  211. }
  212. </script>