BaseOutForm.vue 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <template>
  2. <a-modal
  3. :title="modalTitle"
  4. :width="800"
  5. :visible="visible"
  6. :confirmLoading="confirmLoading"
  7. class="ant-modal2"
  8. @cancel="handleCancel(false)"
  9. >
  10. <a-form :form="form">
  11. <a-form-item v-show="false" >
  12. <a-input v-decorator="['repairId']" type="hidden"/>
  13. </a-form-item>
  14. <row-list :col="2">
  15. <row-item>
  16. <a-form-item
  17. label="委外单号"
  18. :labelCol="BaseTool.Constant.labelCol"
  19. :wrapperCol="BaseTool.Constant.wrapperCol"
  20. >
  21. <a-input
  22. v-decorator="['entrustNo']"
  23. placeholder="留空自动生成"/>
  24. </a-form-item>
  25. </row-item>
  26. <row-item>
  27. <a-form-item
  28. label="委外类别"
  29. :labelCol="BaseTool.Constant.labelCol"
  30. :wrapperCol="BaseTool.Constant.wrapperCol"
  31. >
  32. <a-select v-decorator="['outType']" placeholder="请选择">
  33. <a-select-option
  34. v-for="(label,value) in outTypeMap"
  35. :key="value"
  36. :label="label"
  37. :value="parseInt(value)">{{ label }}
  38. </a-select-option>
  39. </a-select>
  40. </a-form-item>
  41. </row-item>
  42. <row-item>
  43. <a-form-item
  44. label="维修负责人"
  45. :labelCol="BaseTool.Constant.labelCol"
  46. :wrapperCol="BaseTool.Constant.wrapperCol"
  47. >
  48. <a-select v-decorator="['repairUserId', {rules: [{required: true, message: '维修负责人不能为空'}]}]" placeholder="请选择">
  49. <a-select-option
  50. v-for="item in deptUserList"
  51. :key="item.userId"
  52. :label="item.realName"
  53. :value="item.userId">{{ item.realName }}
  54. </a-select-option>
  55. </a-select>
  56. </a-form-item>
  57. </row-item>
  58. </row-list>
  59. <row-list :col="1">
  60. <row-item>
  61. <a-form-item
  62. label="委外原因"
  63. :labelCol="BaseTool.Constant.labelCol2"
  64. :wrapperCol="BaseTool.Constant.wrapperCol2"
  65. >
  66. <a-textarea
  67. :rows="4"
  68. v-decorator="['reason', {rules: [{required: true, message: '委外原因不能为空'}]}]"/>
  69. </a-form-item>
  70. </row-item>
  71. </row-list>
  72. </a-form>
  73. <template slot="footer">
  74. <a-button :loading="confirmLoading" type="primary" @click="save()">保存</a-button>
  75. </template>
  76. </a-modal>
  77. </template>
  78. <script>
  79. import { queryUserDept } from '@/api/upms/user-dept'
  80. import { createRepairEntrust } from '@/api/repair/entrust'
  81. export default {
  82. name: 'BaseOutForm',
  83. data () {
  84. return {
  85. confirmLoading: false,
  86. modalTitle: null,
  87. form: this.$form.createForm(this),
  88. visible: false,
  89. outTypeMap: {},
  90. userInfo: this.$store.getters.userInfo,
  91. deptUserList: []
  92. }
  93. },
  94. components: {
  95. },
  96. props: {
  97. },
  98. created () {
  99. this.outTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.REPAIR_OUT_TYPE)
  100. this.getDeptUsers()
  101. },
  102. methods: {
  103. base (record, mainForm = {}) {
  104. this.visible = true
  105. const { form: { setFieldsValue } } = this
  106. this.modalTitle = '委外'
  107. if (mainForm != null && mainForm.id != null) {
  108. this.$nextTick(() => {
  109. setFieldsValue({
  110. repairId: mainForm.id
  111. })
  112. })
  113. }
  114. },
  115. getDeptUsers () {
  116. queryUserDept({ deptCode: this.DictCache.VALUE.SYS_DEPT_CODE.CHANG_NEI_WEI_XIU_ZU, userStatus: 1 }).then(res2 => {
  117. this.deptUserList = res2.data
  118. })
  119. },
  120. save () {
  121. const { form: { validateFieldsAndScroll } } = this
  122. this.confirmLoading = true
  123. validateFieldsAndScroll((errors, values) => {
  124. if (errors) {
  125. this.confirmLoading = false
  126. return
  127. }
  128. createRepairEntrust(values)
  129. .then(() => {
  130. this.handleCancel(true, values)
  131. }).catch(() => {
  132. this.confirmLoading = false
  133. })
  134. })
  135. },
  136. handleCancel (isSave, values) {
  137. this.visible = false
  138. this.confirmLoading = false
  139. this.form.resetFields()
  140. if (isSave) {
  141. this.$emit('ok', values)
  142. }
  143. }
  144. }
  145. }
  146. </script>