contract-add-or-update.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. <!-- 新增采购合同 -->
  2. <template>
  3. <div>
  4. <div class="my-title">{{ !id?'新增':'修改' }}</div>
  5. <!-- 表单 -->
  6. <el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="auto">
  7. <el-row class="my-row">
  8. <el-col :span="8">
  9. <el-form-item label="合同编码" prop="contractCode">
  10. <el-input v-model="dataForm.contractCode" disabled placeholder="合同编码由系统生成" style="width: 200px"></el-input>
  11. </el-form-item>
  12. </el-col>
  13. <el-col :span="8">
  14. <el-form-item label="合同类别" prop="type">
  15. <el-select
  16. v-model="dataForm.type"
  17. remote
  18. placeholder="请选择">
  19. <el-option
  20. v-for="item in optionsType"
  21. :key="item.code"
  22. :label="item.value"
  23. :value="item.code">
  24. </el-option>
  25. </el-select>
  26. </el-form-item>
  27. </el-col>
  28. <el-col :span="8">
  29. <el-form-item label="供应商" prop="supplierId">
  30. <supplier-component v-model="dataForm.supplierId" :supplier-id.sync="dataForm.supplierId"></supplier-component>
  31. </el-form-item>
  32. </el-col>
  33. </el-row>
  34. <el-row class="my-row">
  35. <el-col :span="8">
  36. <el-form-item label="合同交期" prop="deliveryTime">
  37. <el-date-picker
  38. v-model="dataForm.deliveryTime"
  39. value-format="yyyy-MM-dd HH:mm:ss"
  40. type="datetime">
  41. </el-date-picker>
  42. </el-form-item>
  43. </el-col>
  44. <el-col :span="8">
  45. <el-form-item label="合同号" prop="contractNumber">
  46. <el-input v-model="dataForm.contractNumber" placeholder="合同号" style="width: 200px"></el-input>
  47. </el-form-item>
  48. </el-col>
  49. <el-col :span="8">
  50. <el-form-item label="合同金额" prop="totalAmount">
  51. <el-input-number v-model="dataForm.totalAmount" :step="1" :min="0" :precision="1"></el-input-number>
  52. </el-form-item>
  53. </el-col>
  54. </el-row>
  55. <el-row class="my-row" style="margin-top: 20px">
  56. <el-form-item label="备注" prop="notes">
  57. <el-input type="textarea" v-model="dataForm.notes"></el-input>
  58. </el-form-item>
  59. </el-row>
  60. <el-row class="my-row">
  61. <upload-component :title="'附件'" :accept="'*'" :file-obj-list="fileList" @uploadSuccess="uploadSuccess"/>
  62. </el-row>
  63. </el-form>
  64. <span slot="footer" class="dialog-footer">
  65. <el-button @click="onChose">取消</el-button>
  66. <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
  67. </span>
  68. </div>
  69. </template>
  70. <script>
  71. import UploadComponent from '../common/upload-component'
  72. import { getContractDetail } from '@/api/sale'
  73. import SupplierComponent from '../common/supplier-component'
  74. export default {
  75. name: 'contract-add-or-update',
  76. components: {
  77. SupplierComponent,
  78. UploadComponent
  79. },
  80. computed: {
  81. orgId: {
  82. get () { return this.$store.state.user.orgId }
  83. }
  84. },
  85. data () {
  86. return {
  87. id: 0,
  88. dataForm: {},
  89. dataRule: {
  90. type: [{ required: true, message: '请选择合同类别', trigger: 'change' }],
  91. contractNumber: [{ required: true, message: '合同号不能为空', trigger: 'blur' }],
  92. totalAmount: [{ required: true, message: '合同金额不能为空', trigger: 'change' }],
  93. supplierId: [{ required: true, message: '请选择供应商', trigger: 'change' }]
  94. },
  95. optionsType: [
  96. {
  97. code: '1', value: '采购合同'
  98. },
  99. {
  100. code: '2', value: '委外合同'
  101. }
  102. ],
  103. fileList: []
  104. }
  105. },
  106. methods: {
  107. onChose () {
  108. this.$emit('onChose')
  109. },
  110. async init (id) {
  111. this.fileList = []
  112. this.dataForm = {}
  113. this.id = id || 0
  114. // 详情
  115. if (!id) return
  116. await getContractDetail(this.id).then(({data}) => {
  117. if (data && data.code === '200') {
  118. this.dataForm = data.data
  119. // 附件
  120. if (data.data.attachList) {
  121. data.data.attachList.forEach((item) => {
  122. this.fileList.push({
  123. name: item.fileName,
  124. url: item.url,
  125. id: item.url
  126. })
  127. })
  128. }
  129. }
  130. })
  131. },
  132. uploadSuccess (fileList) {
  133. this.fileList = fileList
  134. },
  135. validateField (type) {
  136. this.$refs.dataForm.validateField(type)
  137. },
  138. // 表单提交
  139. dataFormSubmit () {
  140. this.$refs['dataForm'].validate((valid) => {
  141. if (valid) {
  142. // 附件
  143. let fList = this.fileList
  144. if (fList.length > 0) {
  145. this.dataForm.attachList = []
  146. for (let i = 0; i < fList.length; i++) {
  147. this.dataForm.attachList.push({
  148. fileName: fList[i].name,
  149. url: fList[i].url
  150. })
  151. }
  152. } else {
  153. this.$message.error('请上传文件')
  154. return
  155. }
  156. // 产品明细
  157. this.$http({
  158. url: this.$http.adornUrl(`/biz-service/purPurchaseContract/${!this.id ? 'save' : 'update'}`),
  159. method: 'post',
  160. data: this.$http.adornData({...this.dataForm, orgId: this.orgId})
  161. }).then(({data}) => {
  162. if (data && data.code === '200') {
  163. this.$message({
  164. message: '操作成功',
  165. type: 'success',
  166. duration: 1500,
  167. onClose: () => {
  168. this.onChose()
  169. this.$emit('refreshDataList')
  170. }
  171. })
  172. } else {
  173. this.$message.error(data.msg)
  174. }
  175. })
  176. }
  177. })
  178. }
  179. }
  180. }
  181. </script>
  182. <style scoped>
  183. </style>