edit.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <template>
  2. <div class="app-container">
  3. <el-form ref="formLabelAlign" label-width="120px" :model="formLabelAlign" :rules="rules">
  4. <el-form-item label="合同编号:" prop="contractId">
  5. <el-input v-model="formLabelAlign.contractId" :disabled="isCheck" />
  6. </el-form-item>
  7. <el-form-item label="合同起始日期:" prop="contractStartDate">
  8. <el-date-picker
  9. v-model="formLabelAlign.contractStartDate"
  10. type="date"
  11. placeholder="选择日期"
  12. value-format="yyyy-MM-dd"
  13. :disabled="isCheck"
  14. />
  15. </el-form-item>
  16. <el-form-item label="合同截止日期:" prop="contractEndDate">
  17. <el-date-picker
  18. v-model="formLabelAlign.contractEndDate"
  19. type="date"
  20. placeholder="选择日期"
  21. value-format="yyyy-MM-dd"
  22. :disabled="isCheck"
  23. />
  24. </el-form-item>
  25. <el-form-item label="上传合同:" prop="contractRelateds">
  26. <file-upload
  27. :list="contractList"
  28. :limit="20"
  29. :is-check="isCheck"
  30. :before-upload="beforeUpload"
  31. :tip="'支持上传pdf、docx、 pptx文件格式'"
  32. @success="uploadSuccess($event, 'contractRelateds')"
  33. @change="uploadChange($event, 'contractRelateds')"
  34. @remove="handleRemove($event, 'contractRelateds')"
  35. />
  36. </el-form-item>
  37. <el-form-item>
  38. <el-button v-if="!isCheck" type="primary" @click="submitForm('formLabelAlign')">保存</el-button>
  39. <el-button @click="$router.back()">返回</el-button>
  40. </el-form-item>
  41. </el-form>
  42. </div>
  43. </template>
  44. <script>
  45. import { getContractDetail, addContract } from '@/api/serviceSettlement/contract'
  46. import FileUpload from '../components/UploadFile.vue'
  47. import serviceMixin from '../mixin/index'
  48. import { mapGetters } from 'vuex'
  49. export default {
  50. components: {
  51. FileUpload
  52. },
  53. mixins: [serviceMixin],
  54. data() {
  55. return {
  56. formLabelAlign: {},
  57. ruleForm: {},
  58. contractList: [],
  59. serviceLevel: [{ id: 1, value: '一级' }, { id: 2, value: '二级' }, { id: 3, value: '三级' }],
  60. rules: {
  61. contractId: [{ required: true, message: '请输入合同编号', trigger: 'blur' }],
  62. contractStartDate: [
  63. { required: true, message: '请选择合同起始时间', trigger: 'change' }
  64. ],
  65. contractEndDate: [
  66. { required: true, message: '请选择合同结束时间', trigger: 'change' }
  67. ],
  68. contractRelateds: [
  69. { required: true, message: '请上传合同文件', trigger: 'change' }
  70. ]
  71. }
  72. }
  73. },
  74. computed: {
  75. ...mapGetters(['userId', 'username', 'fullName', 'phone']),
  76. id() {
  77. return this.$route.query.id || false
  78. },
  79. providersId() {
  80. return Number(this.$route.query.providersId) || false
  81. },
  82. isCheck() {
  83. return !!Number(this.$route.query.isCheck)
  84. }
  85. },
  86. mounted() {
  87. if (this.id) {
  88. this.getInfo()
  89. }
  90. },
  91. methods: {
  92. async getInfo() {
  93. const { data } = await getContractDetail({ providersContractId: this.id })
  94. this.formLabelAlign = data
  95. this.contractList = data.contractRelateds.map(e => ({ name: e.fileName, response: { data: e.image }}))
  96. },
  97. submitForm(form) {
  98. this.$refs[form].validate(async valid => {
  99. if (valid) {
  100. const form = Object.assign(this.formLabelAlign, { providersId: this.providersId, createBy: this.fullName })
  101. await addContract(form)
  102. this.$router.back()
  103. }
  104. })
  105. },
  106. beforeUpload(file) {
  107. console.log(file)
  108. if (file.size / 1024 / 1024 < 50) {
  109. return true
  110. } else {
  111. this.$message({
  112. type: 'error',
  113. message: '文件大小限制在50M以内'
  114. })
  115. return false
  116. }
  117. }
  118. }
  119. }
  120. </script>
  121. <style lang="scss" scoped>
  122. ::v-deep .el-input,
  123. ::v-deep .el-textarea__inner {
  124. width: 500px;
  125. }
  126. ::v-deep .el-form {
  127. width: 650px;
  128. margin: 0 auto;
  129. }
  130. </style>