replaceModelDialog.vue 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <!-- 替换模型弹窗 -->
  2. <template>
  3. <!-- 新增楼层 -->
  4. <div id="replaceModel">
  5. <el-dialog title="替换模型" :visible.sync="repliceModelVisible" width="650px" :before-close="handleClose">
  6. <el-form ref="form" :model="form" label-width="170px">
  7. <el-form-item label="模型文件:">
  8. <el-upload
  9. class="upload-demo"
  10. ref="upload"
  11. accept=".rvt"
  12. :multiple="false"
  13. action="/revit-algorithm/model-file/upload"
  14. :on-preview="handlePreview"
  15. :on-remove="handleRemove"
  16. :file-list="fileList"
  17. :auto-upload="false"
  18. :on-change="onChangeUpLoad"
  19. :limit="1"
  20. >
  21. <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
  22. </el-upload>
  23. </el-form-item>
  24. <el-form-item label="revit版本:">
  25. <el-select v-model="form.revitVersion" placeholder="请选择">
  26. <el-option v-for="item in revitVersionList" :key="`revit-${item.value}`" :label="item.label" :value="item.value"></el-option>
  27. </el-select>
  28. </el-form-item>
  29. <el-form-item label="选择模型文件替换原因:">
  30. <ul>
  31. <li>
  32. <el-radio :disabled="isChioce" v-model="form.ReplaceReason" label="0">之前模型画错要修改</el-radio>
  33. </li>
  34. <li>
  35. <el-radio :disabled="isChioce" v-model="form.ReplaceReason" label="1">因工程改造,更新模型文件</el-radio>
  36. </li>
  37. </ul>
  38. </el-form-item>
  39. <el-form-item>
  40. <div class="dateTime" v-show="form.ReplaceReason == '1'">
  41. <p>工程改造竣工时间:</p>
  42. <el-date-picker v-model="form.finishTime" type="date" placeholder="选择日期"></el-date-picker>
  43. </div>
  44. </el-form-item>
  45. </el-form>
  46. <div slot="footer" class="dialog-footer">
  47. <el-button type="primary" @click="onSubmit">确认</el-button>
  48. <el-button @click="handleClose">取消</el-button>
  49. <div style="width: 100%; margin-top: 5px; color: #aaaaaa">目前只可识别标准字典定义的设备、部件</div>
  50. </div>
  51. </el-dialog>
  52. </div>
  53. </template>
  54. <script>
  55. import { mapGetters } from "vuex";
  56. export default {
  57. props: {
  58. repliceModelVisible: Boolean,
  59. replaceModelItem: Object,
  60. },
  61. data() {
  62. return {
  63. form: {
  64. // revitVersion: this.replaceModelItem.RevitVersion?this.replaceModelItem.RevitVersion:"2017", //revit默认版本
  65. revitVersion: "2017", //revit默认版本
  66. file: null, //上传文件
  67. ReplaceReason: "0",
  68. finishTime: "",
  69. },
  70. revitVersionList: [
  71. {
  72. value: "2016",
  73. label: "2016",
  74. },
  75. {
  76. value: "2017",
  77. label: "2017",
  78. },
  79. {
  80. value: "2018",
  81. label: "2018",
  82. },
  83. {
  84. value: "2019",
  85. label: "2019",
  86. },
  87. {
  88. value: "2020",
  89. label: "2020",
  90. },
  91. ],
  92. isChioce: true, //是否可以选择替换原因
  93. fileList: [],
  94. };
  95. },
  96. computed: {
  97. ...mapGetters("layout", ["uploaderList"]),
  98. },
  99. methods: {
  100. onSubmit() {
  101. if (this.form.file == null) {
  102. this.$message.error("模型文件不能为空!");
  103. } else if (!this.form.revitVersion) {
  104. this.$message.error("revit版本不能为空!");
  105. } else {
  106. // 文件名
  107. let fileName = this.form.file.name.substring(0, this.form.file.name.lastIndexOf("."));
  108. // 文件后缀
  109. let suffix = this.form.file.name.substring(this.form.file.name.lastIndexOf(".") + 1);
  110. // 文件名不符合命名规则(模型文件名称只可包含中文、英文、数字、_、#。例:龙岗万达广场_A座_B1_20201015.rvt)
  111. if (suffix !== "rvt") {
  112. this.$message.error("上传文件只能是.rvt格式!");
  113. } else if (!/^[\u4E00-\u9FA5A-Za-z0-9_#]+$/.test(fileName)) {
  114. this.$message({
  115. showClose: true,
  116. message: "模型文件名称只可包含中文、英文、数字、_、#。例:龙岗万达广场_A座_B1_20201015.rvt",
  117. type: "error",
  118. duration: 5000,
  119. });
  120. } else {
  121. this.$emit("updataModel", {
  122. file: this.form.file,
  123. revitVersion: this.form.revitVersion,
  124. replaceModelItem: this.replaceModelItem,
  125. });
  126. this.handleClose();
  127. }
  128. }
  129. },
  130. handleClose() {
  131. this.$emit("closeReplaceModelDia");
  132. },
  133. handleRemove(file, fileList) {
  134. this.form.file = null;
  135. this.fileList = [];
  136. },
  137. handlePreview(file) {
  138. console.log(file);
  139. },
  140. handleChange() {},
  141. // 获取上传文件
  142. onChangeUpLoad(file, fileList) {
  143. if (fileList.length) {
  144. this.fileList = fileList.slice(-1);
  145. this.form.file = file;
  146. }
  147. },
  148. },
  149. watch: {
  150. repliceModelVisible(val) {
  151. if (val) {
  152. this.handleRemove();
  153. }
  154. },
  155. },
  156. };
  157. </script>
  158. <style lang="less">
  159. #replaceModel {
  160. .dialog-footer {
  161. text-align: right;
  162. }
  163. /deep/ .el-dialog__footer {
  164. padding: 10px;
  165. }
  166. }
  167. </style>