修改模型上传

dev_xd
haha 2025-07-16 21:48:16 +08:00
parent 9c2f8de8c3
commit 4dc0e75e46
3 changed files with 76 additions and 60 deletions

View File

@ -1,11 +1,12 @@
<template> <template>
<a-modal title="经纬度局部坐标系" :width="380" :maskClosable="false" :open="visibleLocal" @ok="handleOk" @cancel="hide" ok-text="" cancel-text=""> <a-modal title="经纬度局部坐标系" :width="380" :maskClosable="false" :open="visibleLocal" @ok="handleOk" @cancel="hide"
<a-form ref="form" :model="form" :labelCol="{ style: {width:'40px'} }" class="scroll-box" :rules="formRules"> ok-text="确定" cancel-text="取消">
<a-form ref="form" :model="form" :labelCol="{ style: { width: '40px' } }" class="scroll-box" :rules="formRules">
<a-form-item label="经度" :labelCol="{ span: 4 }" name="latitude"> <a-form-item label="经度" :labelCol="{ span: 4 }" name="latitude">
<a-input v-model:value="form.latitude" placeholder="例如108.88" /> <a-input :value="form.latitude" placeholder="例如108.88" />
</a-form-item> </a-form-item>
<a-form-item label="纬度" :labelCol="{ span: 4 }" name="longitude"> <a-form-item label="纬度" :labelCol="{ span: 4 }" name="longitude">
<a-input v-model:value="form.longitude" placeholder="例如34.2" /> <a-input :value="form.longitude" placeholder="例如34.2" />
</a-form-item> </a-form-item>
</a-form> </a-form>
</a-modal> </a-modal>
@ -51,9 +52,9 @@ export default {
that.$refs.form that.$refs.form
.validateFields() .validateFields()
.then((a, b) => { .then((a, b) => {
this.$emit('LocalCoordinatesValue', `ENU:${this.latitude},${this.longitude}`) this.$emit('LocalCoordinatesValue', `ENU:${this.form.latitude},${this.form.longitude}`)
}) })
.catch((e) => {}) .catch((e) => { })
}, },
hide() { hide() {
this.$emit('LocalClose') this.$emit('LocalClose')
@ -129,7 +130,7 @@ export default {
.ant-form-item-children { .ant-form-item-children {
display: flex; display: flex;
> div { >div {
display: flex; display: flex;
align-items: center; align-items: center;
height: 32px; height: 32px;

View File

@ -1,9 +1,12 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px" :key="data.elKey"> <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px"
:key="data.elKey">
<el-form-item label="项目名称" prop="projectId"> <el-form-item label="项目名称" prop="projectId">
<el-select v-model="queryParams.projectId" clearable :disabled="data.currentPrjId ? true : false" filterable placeholder="请选择所属项目" style="width: 200px" @change="queryProjectChange"> <el-select v-model="queryParams.projectId" clearable :disabled="data.currentPrjId ? true : false" filterable
<el-option v-for="item in data.projects" :key="item.id" :label="item.projectName" :value="item.id"></el-option> placeholder="请选择所属项目" style="width: 200px" @change="queryProjectChange">
<el-option v-for="item in data.projects" :key="item.id" :label="item.projectName"
:value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- <el-form-item label="所属单位" prop="deptId" > <!-- <el-form-item label="所属单位" prop="deptId" >
@ -25,7 +28,7 @@
<el-button type="primary" plain icon="Plus" v-if="data.isAdmin" @click="handleAdd"></el-button> <el-button type="primary" plain icon="Plus" v-if="data.isAdmin" @click="handleAdd"></el-button>
<el-button type="primary" plain icon="Plus" v-if="data.isAdmin" @click="handleUpload"></el-button> <el-button type="primary" plain icon="Plus" v-if="data.isAdmin" @click="handleUpload"></el-button>
</el-col> </el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="bimModelList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="bimModelList" @selection-change="handleSelectionChange">
@ -51,13 +54,16 @@
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope"> <template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['bim:bimModel:edit']"></el-button> <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['bim:bimModel:remove']"></el-button> v-hasPermi="['bim:bimModel:edit']">修改</el-button>
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
v-hasPermi="['bim:bimModel:remove']">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" /> <pagination v-show="total > 0" :total="total" :page="queryParams.pageNum" :limit="queryParams.pageSize"
@pagination="getList" />
<!-- 添加或修改Bim模型对话框 --> <!-- 添加或修改Bim模型对话框 -->
<el-dialog :title="title" v-model="open" width="600px" append-to-body> <el-dialog :title="title" v-model="open" width="600px" append-to-body>
@ -84,7 +90,9 @@
<el-switch v-model="form.sand" size="large" active-text="" inactive-text="" /> <el-switch v-model="form.sand" size="large" active-text="" inactive-text="" />
</el-form-item> </el-form-item>
<el-form-item label="模型尺寸单位" prop="unit"> <el-form-item label="模型尺寸单位" prop="unit">
<el-select v-model="form.unit" placeholder="请选择模型尺寸单位" style="width: 200px"> <el-option v-for="item in unitInfos" :key="item.value" :label="item.label" :value="item.value"></el-option> </el-select> <el-select v-model="form.unit" placeholder="请选择模型尺寸单位" style="width: 200px"> <el-option
v-for="item in unitInfos" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="备注说明" prop="remark"> <el-form-item label="备注说明" prop="remark">
@ -323,7 +331,7 @@ function handleDelete(row) {
getList(); getList();
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess("删除成功");
}) })
.catch(() => {}); .catch(() => { });
} }
/** 导出按钮操作 */ /** 导出按钮操作 */

View File

@ -1,20 +1,12 @@
<template> <template>
<a-modal <a-modal title="上传模型" :width="800" :maskClosable="false" :open="visible" :confirmLoading="confirmLoading"
title="上传模型" @ok="handleOk" @cancel="hide" ok-text="确定" cancel-text="取消" wrapClassName="upload-model-dialog">
:width="800" <a-form :model="form" ref="mainFrom" :labelCol="{ span: 4 }" :wrapperCol="{ span: 18 }" :rules="formRules"
:maskClosable="false" class="scroll-box">
:open="visible"
:confirmLoading="confirmLoading"
@ok="handleOk"
@cancel="hide"
ok-text="确定"
cancel-text="取消"
wrapClassName="upload-model-dialog"
>
<a-form :model="form" ref="mainFrom" :labelCol="{ span: 4 }" :wrapperCol="{ span: 18 }" :rules="formRules" class="scroll-box">
<a-form-item label="模型类型" name="options"> <a-form-item label="模型类型" name="options">
<div> <div>
<a-cascader v-model:value="form.options" placeholder="请选择" :options="categoryList" @change="onChangeOptions"></a-cascader> <a-cascader :value="form.options" placeholder="请选择" :options="categoryList"
@change="onChangeOptions"></a-cascader>
</div> </div>
</a-form-item> </a-form-item>
<div v-if="showScene"> <div v-if="showScene">
@ -37,10 +29,12 @@
</template> </template>
<el-row> <el-row>
<el-col :span="16"> <el-col :span="16">
<a-textarea v-model:value="srs" placeholder="例如EPSG:4545" :auto-size="{ minRows: 3, maxRows: 5 }" /> <a-textarea :value="srs" placeholder="例如EPSG:4545"
:auto-size="{ minRows: 3, maxRows: 5 }" />
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<a-button style="margin-left: 10px;" type="primary" @click="visibleLocal = true">经纬度局部坐标系</a-button> <a-button style="margin-left: 10px;" type="primary"
@click="visibleLocal = true">经纬度局部坐标系</a-button>
<a-tooltip> <a-tooltip>
<el-icon color="DeepSkyBlue"> <el-icon color="DeepSkyBlue">
<QuestionFilled /> <QuestionFilled />
@ -49,7 +43,8 @@
<div>模型底部中心点将与经纬度局部坐标系中的经纬度重合默认经纬度为葛兰岱尔经纬度:ENU:34.2,108.88</div> <div>模型底部中心点将与经纬度局部坐标系中的经纬度重合默认经纬度为葛兰岱尔经纬度:ENU:34.2,108.88</div>
</template> </template>
</a-tooltip> </a-tooltip>
<LocalCoordinates :visibleLocal="visibleLocal" @LocalClose="LocalClose" @LocalCoordinatesValue="LocalCoordinatesValue"></LocalCoordinates> <LocalCoordinates :visibleLocal="visibleLocal" @LocalClose="LocalClose"
@LocalCoordinatesValue="LocalCoordinatesValue"></LocalCoordinates>
</el-col> </el-col>
</el-row> </el-row>
</a-form-item> </a-form-item>
@ -72,31 +67,35 @@
</template> </template>
</a-tooltip> </a-tooltip>
</template> </template>
<a-input v-model:value="srsOrigin" placeholder="例如:[0,0,0]" /> <a-input :value="srsOrigin" placeholder="例如:[0,0,0]" />
</a-form-item> </a-form-item>
<a-row v-if="loType != 'epsg'"> <a-row v-if="loType != 'epsg'">
<a-col :span="12"> <a-col :span="12">
<a-form-item label="经度" :labelCol="{ span: 8 }" :wrapperCol="{ span: 14 }" name="longitude"> <a-form-item label="经度" :labelCol="{ span: 8 }" :wrapperCol="{ span: 14 }" name="longitude">
<a-input v-model:value="form.longitude" :placeholder="positionType === '2' ? '例如1.9003144895714261' : '例如108.88'" /> <a-input :value="form.longitude"
:placeholder="positionType === '2' ? '例如1.9003144895714261' : '例如108.88'" />
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="10"> <a-col :span="10">
<a-form-item label="纬度" :labelCol="{ span: 8 }" :wrapperCol="{ span: 16 }" name="latitude"> <a-form-item label="纬度" :labelCol="{ span: 8 }" :wrapperCol="{ span: 16 }" name="latitude">
<a-input v-model:value="form.latitude" :placeholder="positionType === '2' ? '例如0.5969026041820608' : '例如34.2'" /> <a-input :value="form.latitude"
:placeholder="positionType === '2' ? '例如0.5969026041820608' : '例如34.2'" />
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<a-row v-if="loType != 'epsg'"> <a-row v-if="loType != 'epsg'">
<a-col :span="12"> <a-col :span="12">
<a-form-item label="高度" :labelCol="{ span: 8 }" :wrapperCol="{ span: 14 }" name="transHeight"> <a-form-item label="高度" :labelCol="{ span: 8 }" :wrapperCol="{ span: 14 }"
<a-input v-model:value="form.transHeight" placeholder="例如0" /> name="transHeight">
<a-input :value="form.transHeight" placeholder="例如0" />
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
</div> </div>
<a-form-item label="LOD模式" v-if="category == '1' && software != 'glb' && software != 'gltf' && software != 'LOD'"> <a-form-item label="LOD模式"
<a-select v-model:value="isLod"> v-if="category == '1' && software != 'glb' && software != 'gltf' && software != 'LOD'">
<a-select :value="isLod">
<a-select-option :value="0">不启用</a-select-option> <a-select-option :value="0">不启用</a-select-option>
<a-select-option :value="1">启用</a-select-option> <a-select-option :value="1">启用</a-select-option>
</a-select> </a-select>
@ -105,19 +104,23 @@
<el-row style="margin-bottom: 20px;"> <el-row style="margin-bottom: 20px;">
<el-col :span="10"> <el-col :span="10">
<div> <div>
<a-form-item label="X轴向切块数" path="xCount" :labelCol="{ span: 9 }" :wrapperCol="{ span: 12 }"> <a-form-item label="X轴向切块数" path="xCount" :labelCol="{ span: 9 }"
<a-input-number placeholder="请输入X轴向切块数" v-model:value="modelValue.xCount" :min="1" /> :wrapperCol="{ span: 12 }">
<a-input-number placeholder="请输入X轴向切块数" :value="modelValue.xCount" :min="1" />
</a-form-item> </a-form-item>
<a-form-item label="Y轴向切块数" path="yCount" :labelCol="{ span: 9 }" :wrapperCol="{ span: 12 }"> <a-form-item label="Y轴向切块数" path="yCount" :labelCol="{ span: 9 }"
<a-input-number placeholder="请输入Y轴向切块数" v-model:value="modelValue.yCount" :min="1" /> :wrapperCol="{ span: 12 }">
<a-input-number placeholder="请输入Y轴向切块数" :value="modelValue.yCount" :min="1" />
</a-form-item> </a-form-item>
<a-form-item label="Z轴向层级数" path="level" :labelCol="{ span: 9 }" :wrapperCol="{ span: 12 }"> <a-form-item label="Z轴向层级数" path="level" :labelCol="{ span: 9 }"
<a-input-number placeholder="请输入Z轴向层级数" v-model:value="modelValue.level" :min="1" /> :wrapperCol="{ span: 12 }">
<a-input-number placeholder="请输入Z轴向层级数" :value="modelValue.level" :min="1" />
</a-form-item> </a-form-item>
</div> </div>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<a-table :columns="columns" :data-source="optionsSelect" :bordered="true" :pagination="false" :scroll="{ y: 125 }"> <a-table :columns="columns" :data-source="optionsSelect" :bordered="true"
:pagination="false" :scroll="{ y: 125 }">
<template v-slot:headerCell="{ column }"> <template v-slot:headerCell="{ column }">
<div v-if="column.key === 'num'" style="display: flex;justify-content: center;"> <div v-if="column.key === 'num'" style="display: flex;justify-content: center;">
<div>层级配比</div> <div>层级配比</div>
@ -129,7 +132,7 @@
</template> </template>
<template v-slot:bodyCell="{ column, record }"> <template v-slot:bodyCell="{ column, record }">
<template v-if="column.key === 'num'"> <template v-if="column.key === 'num'">
<a-input placeholder="请输入当前层级配比" v-model:value="record.num"> <a-input placeholder="请输入当前层级配比" :value="record.num">
<template #suffix>%</template> <template #suffix>%</template>
</a-input> </a-input>
</template> </template>
@ -141,33 +144,35 @@
</div> </div>
<a-form-item v-if="software === 'revit'" label="轻量化模式" name="style"> <a-form-item v-if="software === 'revit'" label="轻量化模式" name="style">
<a-select v-model:value="form.style"> <a-select :value="form.style">
<a-select-option value="1">真实模式</a-select-option> <a-select-option value="1">真实模式</a-select-option>
<a-select-option value="0">着色模式</a-select-option> <a-select-option value="0">着色模式</a-select-option>
</a-select> </a-select>
</a-form-item> </a-form-item>
<a-form-item v-if="software === 'revit' || software === 'bentley' || software === 'stp|step'" label="精细度" name="accuracy"> <a-form-item v-if="software === 'revit' || software === 'bentley' || software === 'stp|step'" label="精细度"
<a-select v-model:value="form.accuracy"> name="accuracy">
<a-select :value="form.accuracy">
<a-select-option value="3">低精度</a-select-option> <a-select-option value="3">低精度</a-select-option>
<a-select-option value="5">标准</a-select-option> <a-select-option value="5">标准</a-select-option>
<a-select-option value="7">高精度</a-select-option> <a-select-option value="7">高精度</a-select-option>
</a-select> </a-select>
</a-form-item> </a-form-item>
<a-form-item v-if="software === 'tif'" label="数据类型" name="format"> <a-form-item v-if="software === 'tif'" label="数据类型" name="format">
<a-select v-model:value="form.format"> <a-select :value="form.format">
<a-select-option value="dem">地形数据</a-select-option> <a-select-option value="dem">地形数据</a-select-option>
<a-select-option value="dom">影像数据</a-select-option> <a-select-option value="dom">影像数据</a-select-option>
</a-select> </a-select>
</a-form-item> </a-form-item>
<a-form-item label="可视距离" v-if="software === 'osgb'" name="visibleDistance"> <a-form-item label="可视距离" v-if="software === 'osgb'" name="visibleDistance">
<a-input v-model:value="form.visibleDistance" /> <a-input :value="form.visibleDistance" />
</a-form-item> </a-form-item>
<a-form-item label="选择文件" name="files"> <a-form-item label="选择文件" name="files">
{{ form.files }} {{ form.files }}
<a-form-item-rest> <a-form-item-rest>
<a-input type="hidden" v-model:value="form.files" /> <a-input type="hidden" :value="form.files" />
</a-form-item-rest> </a-form-item-rest>
<a-upload-dragger :file-list="fileList" @remove="handleRemove" :before-upload="beforeUpload" :multiple="true" :showUploadList="{ showRemoveIcon: showDelete }" :accept="accept"> <a-upload-dragger :file-list="fileList" @remove="handleRemove" :before-upload="beforeUpload"
:multiple="true" :showUploadList="{ showRemoveIcon: showDelete }" :accept="accept">
<p class="ant-upload-drag-icon"> <p class="ant-upload-drag-icon">
<el-icon size="40" color="#888"> <el-icon size="40" color="#888">
<Upload /> <Upload />
@ -180,7 +185,9 @@
</div> </div>
</a-form-item> </a-form-item>
<a-form-item :wrapperCol="{ offset: 1, span: 21 }" label> <a-form-item :wrapperCol="{ offset: 1, span: 21 }" label>
<div v-if="accept.length > 0" style="color: red">{{ accept.length > 0 ? accept.split(',').join(' ') : '' }}</div> <div v-if="accept.length > 0" style="color: red">{{ accept.length > 0 ? accept.split(',').join('')
: '' }}
</div>
<div style="color: #999; line-height: 24px"> <div style="color: #999; line-height: 24px">
<div v-html="description"></div> <div v-html="description"></div>
</div> </div>
@ -703,7 +710,7 @@ export default {
}) })
} }
}) })
.catch((e) => {}) .catch((e) => { })
}, },
async UploadJudgment(id, file, values) { async UploadJudgment(id, file, values) {
const that = this const that = this
@ -965,7 +972,7 @@ export default {
.ant-form-item-children { .ant-form-item-children {
display: flex; display: flex;
> div { >div {
display: flex; display: flex;
align-items: center; align-items: center;
height: 32px; height: 32px;
@ -995,7 +1002,7 @@ export default {
.ant-table { .ant-table {
border-bottom: 1px solid rgba(232, 232, 232, 0.5); border-bottom: 1px solid rgba(232, 232, 232, 0.5);
tr > td, tr>td,
th { th {
padding: 8px !important; padding: 8px !important;
} }
@ -1043,7 +1050,7 @@ export default {
} }
} }
</style> </style>
<style lange="scss"> <style lang="scss">
.upload-model-dialog { .upload-model-dialog {
.ant-modal-footer { .ant-modal-footer {
text-align: center; text-align: center;