3
0

UpdateAppBaseline.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <template>
  2. <el-dialog
  3. class="update-app-baseline"
  4. :visible.sync="modalIsShow"
  5. title="应用配置基线修改"
  6. top="10vh"
  7. width="600px"
  8. :close-on-click-modal="false"
  9. :close-on-press-escape="false"
  10. append-to-body
  11. @opened="visibleChange"
  12. >
  13. <el-form
  14. ref="modalFormComp"
  15. :model="modalForm"
  16. :rules="rules"
  17. :key="modalForm.id"
  18. label-width="100px"
  19. >
  20. <el-form-item prop="uploadData" label="上传文件:">
  21. <upload-fetch-file
  22. input-width="320px"
  23. :format="format"
  24. @valid-change="validChange"
  25. @file-change="fileChange"
  26. ref="UploadFetchFile"
  27. ></upload-fetch-file>
  28. <p class="tips-info">
  29. 上传的文件只支持{{ format.join(",") }},大小不超过2M
  30. </p>
  31. </el-form-item>
  32. <el-form-item label="继承版本号:">
  33. <version-select
  34. v-model="modalForm.inheritVersionId"
  35. :app-id="data.appId"
  36. :disabled-options="[data.versionId]"
  37. ></version-select>
  38. </el-form-item>
  39. </el-form>
  40. <div slot="footer" style="text-align: right">
  41. <el-button type="primary" @click="confirm">确定</el-button>
  42. <el-button type="danger" @click="cancel" plain>返回</el-button>
  43. </div>
  44. </el-dialog>
  45. </template>
  46. <script>
  47. import UploadFetchFile from "../../../components/UploadFetchFile.vue";
  48. import { appConfigBaselineUpdate } from "../api";
  49. export default {
  50. name: "update-app-baseline",
  51. components: { UploadFetchFile },
  52. props: {
  53. data: {
  54. type: Object,
  55. default() {
  56. return {
  57. appId: "",
  58. versionId: "",
  59. moduleId: ""
  60. };
  61. }
  62. }
  63. },
  64. data() {
  65. return {
  66. modalIsShow: false,
  67. isSubmit: false,
  68. modalForm: {},
  69. rules: {
  70. uploadData: [
  71. {
  72. required: true,
  73. validator: (rule, value, callback) => {
  74. if (this.uploadData) {
  75. callback();
  76. } else {
  77. return callback(new Error(`请选择合适的文件`));
  78. }
  79. },
  80. trigger: "change"
  81. }
  82. ]
  83. },
  84. // upload
  85. format: ["properties"],
  86. maxSize: 2 * 1024 * 1024,
  87. uploadData: null
  88. };
  89. },
  90. methods: {
  91. visibleChange() {
  92. this.modalForm = { ...this.data, inheritVersionId: "" };
  93. },
  94. cancel() {
  95. this.modalIsShow = false;
  96. },
  97. open() {
  98. this.modalIsShow = true;
  99. },
  100. validChange(result) {
  101. if (!result.success) {
  102. this.uploadData = null;
  103. this.$notify.error({ title: "错误提示", message: result.message });
  104. this.$refs.modalFormComp.validateField("uploadData");
  105. }
  106. },
  107. fileChange(data) {
  108. this.uploadData = data;
  109. console.log(data);
  110. this.$refs.modalFormComp.validateField("uploadData");
  111. },
  112. async confirm() {
  113. const valid = await this.$refs.modalFormComp.validate().catch(() => {});
  114. if (!valid) return;
  115. if (this.isSubmit) return;
  116. this.isSubmit = true;
  117. let formData = new FormData();
  118. Object.entries(this.modalForm).forEach(([k, v]) => {
  119. if (v) formData.append(k, v);
  120. });
  121. formData.append("file", this.uploadData.file);
  122. formData.append(
  123. "extension",
  124. this.uploadData.filename.split(".").slice(-1)
  125. );
  126. const data = await appConfigBaselineUpdate(formData, {
  127. md5: this.uploadData.md5
  128. }).catch(() => {});
  129. this.isSubmit = false;
  130. if (!data) return;
  131. this.$message.success("添加成功!");
  132. this.cancel();
  133. this.$emit("modified", data);
  134. }
  135. }
  136. };
  137. </script>