Selaa lähdekoodia

Merge branch 'master' of http://39.106.8.246:3003/web/wanda-adm

haojianlong 4 vuotta sitten
vanhempi
commit
c500fa6808

+ 39 - 1
src/utils/maintain.ts

@@ -80,8 +80,46 @@ export const tools = {
             }
         }
         return newData
-    }
+    },
 
+    /**
+     * 解析模型文件名称信息
+     * @param name 模型文件名称
+     * @returns 模型文件名包含的楼层信息
+     */
+    getMoldeFileInfo: (name: string) => {
+        const regList = name.match(/(-[FB]\d+M?[.-])|(-RF[.-])/g);
+        const floorInfo: any = {}
+        if (regList && regList.length === 1) {
+            const floorName = regList[0].slice(1, -1);
+            floorInfo.floorName = floorName;
+            if (floorName === 'RF') { //顶层
+                floorInfo.floorSequenceId = 9999;
+                return floorInfo;
+            } else { //非顶层
+                const strList = floorName.split("");
+                if (strList[0] && strList[0] === 'F') { //地上
+                    if (strList[strList.length - 1] === 'M') { //有夹层
+                        floorInfo.floorSequenceId = Number(floorName.slice(1, -1)) * 10 + 5;
+                    } else { //无夹层
+                        floorInfo.floorSequenceId = Number(floorName.slice(1)) * 10;
+                    }
+                    return floorInfo;
+                } else if (strList[0] && strList[0] === 'B') { //地下
+                    if (strList[strList.length - 1] === 'M') { //有夹层
+                        floorInfo.floorSequenceId = -(Number(floorName.slice(1, -1)) * 10 + 5);
+                    } else { //无夹层
+                        floorInfo.floorSequenceId = -(Number(floorName.slice(1)) * 10);
+                    }
+                    return floorInfo;
+                } else { //其他
+                    return false;
+                }
+            }
+        } else {
+            return false;
+        }
+    }
 
 }
 export default tools

+ 101 - 53
src/views/manage/build/components/AddFloorDialog/index.vue

@@ -22,22 +22,19 @@
                     <el-select v-model="form.revitVersion" placeholder="请选择">
                         <el-option v-for="item in revitVersionList" :key="`revit-${item.value}`" :label="item.label" :value="item.value"></el-option>
                     </el-select>
-                </el-form-item> -->
+                </el-form-item>
                 <el-form-item label="模型所属楼层:">
                     <div class="floorModle">
                         <el-select v-model="form.floorTypeVal" placeholder="请选择">
                             <el-option v-for="item in floorType" :key="item.value" :label="item.label" :value="item.value"></el-option>
                         </el-select>
-                        <!-- 计数 -->
                         <el-input-number
                             style="margin-left: 10px"
                             v-model="form.floorNum"
                             :min="1"
                             :disabled="form.floorTypeVal === 'RF'"
                         ></el-input-number>
-                        <!-- 是否夹层 -->
                         <el-checkbox style="margin: 0 10px" v-model="form.haveInterlayer">是否夹层</el-checkbox>
-                        <!-- 夹层选择 -->
                         <el-select v-model="form.interlayerTypeVal" :disabled="!form.haveInterlayer" placeholder="请选择">
                             <el-option v-for="item in interlayerType" :key="item.value" :label="item.label" :value="item.value"></el-option>
                         </el-select>
@@ -48,7 +45,7 @@
                         :controls="false"
                         v-model="form.floorSequenceID"
                     ></el-input-number>
-                </el-form-item>
+                </el-form-item> -->
                 <el-form-item label="备注信息:">
                     <el-input type="textarea" v-model="form.desc"></el-input>
                 </el-form-item>
@@ -66,6 +63,7 @@ import { Vue, Component, Prop, Emit, Ref, Watch } from "vue-property-decorator";
 import { UserModule } from "@/store/modules/user";
 import { modelFileUpload } from "@/api/modelapi";
 import { ElUpload } from "element-ui/types/upload";
+import tools from "@/utils/maintain";
 
 @Component({
     name: "AddFloorDialog",
@@ -167,61 +165,111 @@ export default class extends Vue {
      * 提交表单创建楼层并发出上传指令
      */
     private async onSubmit() {
+        // if (this.form.file == null) {
+        //     this.$message.error("模型文件不能为空!");
+        // } else if (!this.form.revitVersion) {
+        //     this.$message.error("revit版本不能为空!");
+        // } else if (this.form.floorSequenceID === undefined || this.form.floorSequenceID === null) {
+        //     this.$message.error("楼层顺序码不能为空!");
+        // } else {
+        //     let FloorName: string | null = null;
+        //     // 根据是否有夹层拼接楼层名
+        //     if (this.form.haveInterlayer) {
+        //         if (this.form.floorTypeVal === "RF") {
+        //             FloorName = this.form.floorTypeVal + this.form.interlayerTypeVal;
+        //         } else {
+        //             FloorName = this.form.floorTypeVal + this.form.floorNum + this.form.interlayerTypeVal;
+        //         }
+        //     } else {
+        //         if (this.form.floorTypeVal === "RF") {
+        //             FloorName = this.form.floorTypeVal;
+        //         } else {
+        //             FloorName = this.form.floorTypeVal + this.form.floorNum;
+        //         }
+        //     }
+        //     let FloorObj = this.floorList.find((item) => {
+        //         return item.FloorName == FloorName;
+        //     });
+        //     if (FloorObj && FloorObj.Status !== 0) {
+        //         this.$message.error("该楼层名称已存在,请勿重复创建!");
+        //     } else {
+        //         let data = {
+        //             FileName: this.form.file.name,
+        //             FloorName: FloorName,
+        //             LocalName: FloorName,
+        //             LocalId: FloorName,
+        //             FloorSequenceId: this.form.floorSequenceID,
+        //             FolderId: this.FolderId,
+        //             RevitVersion: this.form.revitVersion,
+        //             Note: this.form.desc,
+        //             ProjectId: this.projectId,
+        //             ReplaceReason: null,
+        //             Size: this.form.file.size,
+        //             UserName: this.username,
+        //             UserId: this.userId,
+        //         };
+        //         const res = await modelFileUpload(data);
+        //         //  创建成功
+        //         if (res.Result === "success" && res.ModelId && res.UploadId) {
+        //             this.$emit("uploadModelFile", {
+        //                 modelId: res.ModelId,
+        //                 uploadId: res.UploadId,
+        //                 file: this.form.file,
+        //             });
+        //             this.handleClose();
+        //         } else {
+        //             this.$message.info(`准备分片上传模型文件接口失败!失败原因:${res.Message}`);
+        //         }
+        //     }
+        // }
+
+        /**
+         * TODO:通过解析文件名称获取楼层信息上传
+         */
         if (this.form.file == null) {
             this.$message.error("模型文件不能为空!");
         } else if (!this.form.revitVersion) {
             this.$message.error("revit版本不能为空!");
-        } else if (this.form.floorSequenceID === undefined || this.form.floorSequenceID === null) {
-            this.$message.error("楼层顺序码不能为空!");
         } else {
-            let FloorName: string | null = null;
-            // 根据是否有夹层拼接楼层名
-            if (this.form.haveInterlayer) {
-                if (this.form.floorTypeVal === "RF") {
-                    FloorName = this.form.floorTypeVal + this.form.interlayerTypeVal;
-                } else {
-                    FloorName = this.form.floorTypeVal + this.form.floorNum + this.form.interlayerTypeVal;
-                }
-            } else {
-                if (this.form.floorTypeVal === "RF") {
-                    FloorName = this.form.floorTypeVal;
-                } else {
-                    FloorName = this.form.floorTypeVal + this.form.floorNum;
-                }
-            }
-            let FloorObj = this.floorList.find((item) => {
-                return item.FloorName == FloorName;
-            });
-            if (FloorObj && FloorObj.Status !== 0) {
-                this.$message.error("该楼层名称已存在,请勿重复创建!");
-            } else {
-                let data = {
-                    FileName: this.form.file.name,
-                    FloorName: FloorName,
-                    LocalName: FloorName,
-                    LocalId: FloorName,
-                    FloorSequenceId: this.form.floorSequenceID,
-                    FolderId: this.FolderId,
-                    RevitVersion: this.form.revitVersion,
-                    Note: this.form.desc,
-                    ProjectId: this.projectId,
-                    ReplaceReason: null,
-                    Size: this.form.file.size,
-                    UserName: this.username,
-                    UserId: this.userId,
-                };
-                const res = await modelFileUpload(data);
-                //  创建成功
-                if (res.Result === "success" && res.ModelId && res.UploadId) {
-                    this.$emit("uploadModelFile", {
-                        modelId: res.ModelId,
-                        uploadId: res.UploadId,
-                        file: this.form.file,
-                    });
-                    this.handleClose();
+            const fileNameInfo = tools.getMoldeFileInfo(this.form.file.name);
+            if (fileNameInfo) { //模型文件名解析成功
+                const {floorName, floorSequenceId} = fileNameInfo;
+                let floorObj = this.floorList.find((item) => {
+                    return item.FloorName == floorName;
+                });
+                if (floorObj && floorObj.Status !== 0) {
+                    this.$message.error("该楼层名称已存在,请勿重复创建!");
                 } else {
-                    this.$message.info(`准备分片上传模型文件接口失败!失败原因:${res.Message}`);
+                    let data = {
+                        FileName: this.form.file.name,
+                        FloorName: floorName,
+                        LocalName: floorName,
+                        LocalId: floorName,
+                        FloorSequenceId: floorSequenceId,
+                        FolderId: this.FolderId,
+                        RevitVersion: this.form.revitVersion,
+                        Note: this.form.desc,
+                        ProjectId: this.projectId,
+                        ReplaceReason: null,
+                        Size: this.form.file.size,
+                        UserName: this.username,
+                        UserId: this.userId,
+                    };
+                    const res = await modelFileUpload(data);
+                    //  创建成功
+                    if (res.Result === "success" && res.ModelId && res.UploadId) {
+                        this.$emit("uploadModelFile", {
+                            modelId: res.ModelId,
+                            uploadId: res.UploadId,
+                            file: this.form.file,
+                        });
+                        this.handleClose();
+                    } else {
+                        this.$message.info(`准备分片上传模型文件接口失败!失败原因:${res.Message}`);
+                    }
                 }
+            } else { //模型文件名解析失败
+                this.$message.error("模型文件命名错误,请检查!");
             }
         }
     }

+ 33 - 22
src/views/manage/build/components/RepliceModel/index.vue

@@ -42,6 +42,7 @@ import { Vue, Component, Prop, Emit, Watch } from "vue-property-decorator";
 import { AppModule } from "@/store/modules/app";
 import { UserModule } from "@/store/modules/user";
 import { modelFileUpload } from "@/api/modelapi";
+import tools from "@/utils/maintain";
 
 @Component({
     name: "RepliceModel",
@@ -108,28 +109,38 @@ export default class extends Vue {
         } else if (!this.form.revitVersion) {
             this.$message.error("revit版本不能为空!");
         } else {
-            let data = {
-                FileName: this.form.file.name,
-                FloorName: this.replaceModelItem.FloorName,
-                FolderId: this.replaceModelItem.FolderId,
-                RevitVersion: this.form.revitVersion,
-                Note: this.form.Note,
-                ProjectId: this.projectId,
-                ReplaceReason: 0,
-                Size: this.form.file.size,
-                UserName: this.username,
-                UserId: this.userId,
-            };
-            const res = await modelFileUpload(data);
-            if (res.Result === "success" && res.UploadId && res.ModelId) {
-                this.$emit("uploadModelFile", {
-                    modelId: res.ModelId,
-                    uploadId: res.UploadId,
-                    file: this.form.file,
-                });
-                this.handleClose();
-            } else {
-                this.$message.info(`准备分片上传模型文件接口失败!失败原因:${res.Message}`);
+            const fileNameInfo = tools.getMoldeFileInfo(this.form.file.name);
+            if (fileNameInfo) { //模型文件名解析成功
+                const {floorName} = fileNameInfo;
+                if (floorName === this.replaceModelItem.FloorName) { //模型楼层信息正确
+                    let data = {
+                        FileName: this.form.file.name,
+                        FloorName: this.replaceModelItem.FloorName,
+                        FolderId: this.replaceModelItem.FolderId,
+                        RevitVersion: this.form.revitVersion,
+                        Note: this.form.Note,
+                        ProjectId: this.projectId,
+                        ReplaceReason: 0,
+                        Size: this.form.file.size,
+                        UserName: this.username,
+                        UserId: this.userId,
+                    };
+                    const res = await modelFileUpload(data);
+                    if (res.Result === "success" && res.UploadId && res.ModelId) {
+                        this.$emit("uploadModelFile", {
+                            modelId: res.ModelId,
+                            uploadId: res.UploadId,
+                            file: this.form.file,
+                        });
+                        this.handleClose();
+                    } else {
+                        this.$message.info(`准备分片上传模型文件接口失败!失败原因:${res.Message}`);
+                    }
+                } else {
+                    this.$message.error("模型文件楼层信息有误,请检查后再上传!");
+                }
+            } else { //模型文件名解析失败
+                this.$message.error("模型文件命名错误,请检查后再上传!");
             }
         }
     }