BaseForm.vue 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <template>
  2. <a-card :bordered="false" v-show="visible" class="card" :title="modalTitle">
  3. <a-form :form="form">
  4. <a-form-item v-show="false">
  5. <a-input v-decorator="['id']" type="hidden"/>
  6. </a-form-item>
  7. <row-list :col="2">
  8. <row-item>
  9. <a-form-item
  10. label="设备Id"
  11. :labelCol="BaseTool.Constant.labelCol"
  12. :wrapperCol="BaseTool.Constant.wrapperCol"
  13. >
  14. <a-input
  15. style="width: 70%"
  16. disabled
  17. v-decorator="['sbInfoName', {rules: [{required: true, message: '设备名称不能为空'}]}]" />
  18. <a-button style="width: 30%" type="primary" @click="sbInfoHandleSelect">选择</a-button>
  19. </a-form-item>
  20. </row-item>
  21. <row-item>
  22. <a-form-item
  23. label="类型"
  24. :labelCol="BaseTool.Constant.labelCol"
  25. :wrapperCol="BaseTool.Constant.wrapperCol"
  26. >
  27. <a-select
  28. v-decorator="['type', {rules: [{required: true, message: '类型不能为空'}]}]"
  29. placeholder="请选择">
  30. <a-select-option
  31. v-for="(label,value) in typeMap"
  32. :key="value"
  33. :label="label"
  34. :value="parseInt(value)">{{ label }}
  35. </a-select-option>
  36. </a-select>
  37. </a-form-item>
  38. </row-item>
  39. <row-item>
  40. <a-form-item
  41. label="状态"
  42. :labelCol="BaseTool.Constant.labelCol"
  43. :wrapperCol="BaseTool.Constant.wrapperCol"
  44. >
  45. <a-select
  46. v-decorator="['status', {rules: [{required: true, message: '状态不能为空'}]}]"
  47. placeholder="请选择">
  48. <a-select-option
  49. v-for="(label,value) in statusMap"
  50. :key="value"
  51. :label="label"
  52. :value="parseInt(value)">{{ label }}
  53. </a-select-option>
  54. </a-select>
  55. </a-form-item>
  56. </row-item>
  57. </row-list>
  58. </a-form>
  59. <template slot="footer">
  60. <a-button :loading="confirmLoading" type="primary" @click="save()">保存</a-button>
  61. </template>
  62. <sb-info-select-modal ref="sbInfoSelectModal" @selected="sbInfoHandleSelected"/>
  63. </a-card>
  64. </template>
  65. <script>
  66. import pick from 'lodash.pick'
  67. import {addSbInfoStopDetail, updateSbInfoStopDetail } from '@/api/sb/sb-stop-details'
  68. export default {
  69. name: 'BaseSbInfoStopDetail',
  70. data() {
  71. return {
  72. confirmLoading: false,
  73. modalTitle: null,
  74. form: this.$form.createForm(this),
  75. visible: false,
  76. // 下拉框map
  77. typeMap: {},
  78. statusMap: {},
  79. }
  80. },
  81. props: {},
  82. created() {
  83. // 下拉框map
  84. this.typeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SB_INFO_STOP_DETAIL_)
  85. this.statusMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SB_INFO_STOP_DETAIL_)
  86. },
  87. methods: {
  88. base(record) {
  89. this.visible = true
  90. // 如果是空标识添加
  91. if (this.BaseTool.Object.isBlank(record)) {
  92. this.modalTitle = '添加'
  93. return
  94. }
  95. this.modalTitle = '编辑'
  96. const {form: {setFieldsValue}} = this
  97. // 日期处理
  98. this.$nextTick(() => {
  99. setFieldsValue(Object.assign(pick(record, [
  100. 'sbId',
  101. 'type',
  102. 'status',
  103. ])))
  104. })
  105. },
  106. save() {
  107. const {form: {validateFieldsAndScroll}} = this
  108. this.confirmLoading = true
  109. validateFieldsAndScroll((errors, values) => {
  110. if (errors) {
  111. this.confirmLoading = false
  112. return
  113. }
  114. // 日期处理
  115. if (this.BaseTool.String.isBlank(values.id)) {
  116. addSbInfoStopDetail(values)
  117. .then(() => {
  118. this.handleCancel(values)
  119. }).catch(() => {
  120. this.confirmLoading = false
  121. })
  122. } else {
  123. updateSbInfoStopDetail(values)
  124. .then(() => {
  125. this.handleCancel(values)
  126. }).catch(() => {
  127. this.confirmLoading = false
  128. })
  129. }
  130. })
  131. },
  132. handleCancel(values) {
  133. this.visible = false
  134. this.confirmLoading = false
  135. this.form.resetFields()
  136. if (this.BaseTool.Object.isNotBlank(values)) {
  137. this.$emit('ok', values)
  138. }
  139. }
  140. ,
  141. sbInfoHandleSelect () {
  142. this.$refs.sbInfoSelectModal.base({}, {})
  143. },
  144. sbInfoHandleSelected (keys, rows) {
  145. const [ key ] = keys
  146. const [ row ] = rows
  147. const { form: { setFieldsValue } } = this
  148. // 日期处理
  149. this.$nextTick(() => {
  150. setFieldsValue(Object.assign({
  151. 'sbId': key,
  152. 'sbInfoName': row.name
  153. }))
  154. })
  155. },
  156. }
  157. }
  158. </script>