地图和bug修改

xuhongjie
严飞永 4 weeks ago
parent 0b8f3c21d9
commit 6931d67530

@ -36,6 +36,7 @@
"url": "https://gitee.com/y_project/RuoYi-Vue.git" "url": "https://gitee.com/y_project/RuoYi-Vue.git"
}, },
"dependencies": { "dependencies": {
"@amap/amap-jsapi-loader": "^1.0.1",
"@riophae/vue-treeselect": "0.4.0", "@riophae/vue-treeselect": "0.4.0",
"axios": "0.28.1", "axios": "0.28.1",
"clipboard": "2.0.8", "clipboard": "2.0.8",

@ -387,8 +387,18 @@ export function getqyrzById(id) {
method: 'get' method: 'get'
}); });
} }
//企业基本信息 //企业入驻信息
// 修改企业基本信息 // 修改信息
// 根据项目ID分页查询所有入驻企业
export function getqyBasicInformationPage(params) {
return request({
url: '/gysl/enterprise/page',
method: 'get',
params
});
}
// 修改信息
export function updateqyBasicInformation(data) { export function updateqyBasicInformation(data) {
return request({ return request({
url: '/gysl/enterprise/edit', url: '/gysl/enterprise/edit',
@ -397,20 +407,14 @@ export function updateqyBasicInformation(data) {
}); });
} }
// 删除企业基本信息 // 删除信息
export function deleteqyBasicInformation(idList) { export function deleteqyBasicInformation(idList) {
return request({ return request({
url: '/gysl/enterprise/delete', url: '/gysl/enterprise/delete',
method: 'delete', method: 'delete',
params: { idList } params: {
}); idList: idList.join(',') // 将数组转换为逗号分隔的字符串
} }
// 通过主键查询单条企业基本信息
export function getqyBasicInformationById(id) {
return request({
url: `/gysl/enterprise/${id}`,
method: 'get'
}); });
} }

@ -268,25 +268,16 @@ export default {
rules: { rules: {
name: [ name: [
{ required: true, message: '项目名称不能为空', trigger: 'blur' }, { required: true, message: '项目名称不能为空', trigger: 'blur' },
{ max: 50, message: '项目名称长度不能超过50个字', trigger: 'blur' }
], ],
xmfrdwxz: [ xmfrdwxz: [
{ required: true, message: '项目法人单位不能为空', trigger: 'blur' }, { required: true, message: '项目法人单位不能为空', trigger: 'blur' },
{ max: 50, message: '项目法人单位长度不能超过50个字', trigger: 'blur' }
], ],
nature: [ nature: [
{ required: true, message: '项目法人单位性质不能为空', trigger: 'change' } { required: true, message: '项目法人单位性质不能为空', trigger: 'change' }
], ],
sgdw: [
{ max: 50, message: '施工单位长度不能超过50个字', trigger: 'blur' }
],
sjdw: [
{ max: 50, message: '设计单位长度不能超过50个字', trigger: 'blur' }
],
ztze: [ ztze: [
{ required: true, message: '总投资额不能为空', trigger: 'blur' }, { required: true, message: '总投资额不能为空', trigger: 'blur' },
{ type: 'number', message: '总投资额必须是数字', trigger: 'blur' }, { type: 'number', message: '总投资额必须是数字', trigger: 'blur' },
{ max: 50, message: '总投资额长度不能超过50个字', trigger: 'blur' }
], ],
ssgnq: [ ssgnq: [
{ required: true, message: '所属功能区不能为空', trigger: 'change' } { required: true, message: '所属功能区不能为空', trigger: 'change' }
@ -300,35 +291,15 @@ export default {
xzfl: [ xzfl: [
{ required: true, message: '现状分类不能为空', trigger: 'change' } { required: true, message: '现状分类不能为空', trigger: 'change' }
], ],
jsdd: [
{ max: 50, message: '建设地点长度不能超过50个字', trigger: 'blur' }
],
prioritize: [
{ max: 50, message: '重点发展产业长度不能超过50个字', trigger: 'blur' }
],
jsms: [ jsms: [
{ required: true, message: '建设模式不能为空', trigger: 'change' } { required: true, message: '建设模式不能为空', trigger: 'change' }
], ],
label: [
{ max: 50, message: '项目标签长度不能超过50个字', trigger: 'blur' }
],
projectLeader: [ projectLeader: [
{ required: true, message: '项目负责人不能为空', trigger: 'blur' }, { required: true, message: '项目负责人不能为空', trigger: 'blur' },
{ max: 50, message: '项目负责人长度不能超过50个字', trigger: 'blur' }
], ],
phone: [ phone: [
{ required: true, message: '联系方式不能为空', trigger: 'blur' }, { required: true, message: '联系方式不能为空', trigger: 'blur' },
{ pattern: /^[\d-]+$/, message: '联系方式只能包含数字和连字符', trigger: 'blur' }, { pattern: /^[\d-]+$/, message: '联系方式只能包含数字和连字符', trigger: 'blur' },
{ max: 50, message: '联系方式长度不能超过50个字', trigger: 'blur' }
],
issuingTime: [
{ max: 50, message: '施工许可证发放时间长度不能超过50个字', trigger: 'blur' }
],
acceptanceTime: [
{ max: 50, message: '竣工验收时间长度不能超过50个字', trigger: 'blur' }
],
jsjd: [
{ max: 50, message: '建设进度长度不能超过50个字', trigger: 'blur' }
], ],
unitIntroduction: [ unitIntroduction: [
{ max: 1000, message: '项目法人单位简介长度不能超过1000个字', trigger: 'blur' } { max: 1000, message: '项目法人单位简介长度不能超过1000个字', trigger: 'blur' }
@ -377,6 +348,16 @@ export default {
} }
}, },
methods: { methods: {
/** 导出 */
handleExport() {
this.download(
"/gysl/basicInformation/exportInfo",
{
idList: this.basicInfo.id
},
`基本信息${new Date().getTime()}.xlsx`
);
},
// //
formatDescriptions(data) { formatDescriptions(data) {
return [ return [

@ -285,7 +285,7 @@ export default {
// //
open: false, open: false,
// //
title: "web资产导入", title: "建筑信息导入",
// //
isUploading: false, isUploading: false,
// //
@ -293,7 +293,7 @@ export default {
// //
headers: { Authorization: "Bearer " + getToken() }, headers: { Authorization: "Bearer " + getToken() },
// //
url: location.origin + "/gysl/buildingInformation/importProjectBuilding", url: process.env.VUE_APP_BASE_API + "/gysl/buildingInformation/importProjectBuilding",
}, },
rules: { rules: {
name: [ name: [
@ -304,27 +304,21 @@ export default {
], ],
floor: [ floor: [
{ required: true, message: '请输入层数', trigger: 'blur' }, { required: true, message: '请输入层数', trigger: 'blur' },
{ type: 'number', message: '层数必须是数字', trigger: 'blur' },
], ],
totalBuildingHeight: [ totalBuildingHeight: [
{ required: true, message: '请输入总建筑高度(米)', trigger: 'blur' }, { required: true, message: '请输入总建筑高度(米)', trigger: 'blur' },
{ type: 'number', message: '总建筑高度(米)必须是数字', trigger: 'blur' },
], ],
scgd: [ scgd: [
{ required: true, message: '请输入首层高度(米)', trigger: 'blur' }, { required: true, message: '请输入首层高度(米)', trigger: 'blur' },
{ type: 'number', message: '首层高度(米)必须是数字', trigger: 'blur' },
], ],
twoAndFourCg: [ twoAndFourCg: [
{ required: true, message: '请输入2至4层层高', trigger: 'blur' }, { required: true, message: '请输入2至4层层高', trigger: 'blur' },
{ type: 'number', message: '2至4层层高必须是数字', trigger: 'blur' },
], ],
scdmhz: [ scdmhz: [
{ required: true, message: '请输入首层地面荷载(吨/平方米)', trigger: 'blur' }, { required: true, message: '请输入首层地面荷载(吨/平方米)', trigger: 'blur' },
{ type: 'number', message: '首层地面荷载(吨/平方米)必须是数字', trigger: 'blur' },
], ],
bzcmj: [ bzcmj: [
{ required: true, message: '请输入标准层面积(千平方米)', trigger: 'blur' }, { required: true, message: '请输入标准层面积(千平方米)', trigger: 'blur' },
{ type: 'number', message: '标准层面积(千平方米)必须是数字', trigger: 'blur' },
] ]
} }
}; };
@ -333,12 +327,13 @@ export default {
this.fetchBuildings(); this.fetchBuildings();
}, },
methods: { methods: {
/** 导出 */
/** 导出 */ /** 导出 */
handleExport() { handleExport() {
this.download( this.download(
"/tc/assetCurrent/export", "/gysl/basicInformation/exportInfo",
{ {
...this.formInline, idList: this.xmId
}, },
`建筑信息${new Date().getTime()}.xlsx` `建筑信息${new Date().getTime()}.xlsx`
); );
@ -350,9 +345,9 @@ export default {
/** 下载模板操作 */ /** 下载模板操作 */
importTemplate() { importTemplate() {
this.download( this.download(
"/tc/assetCurrent/importTemplate", "/gysl/buildingInformation/importTemplate",
{}, {},
`web资产导入模板${new Date().getTime()}.xlsx` `楼栋导入模板${new Date().getTime()}.xlsx`
); );
}, },
// //

@ -67,7 +67,10 @@
<div class="contenttwo"> <div class="contenttwo">
<div class="descriptionsdiv"> <div class="descriptionsdiv">
<el-table :data="tableData" style="width: 98%"> <el-table :data="tableData" style="width: 98%">
<el-table-column prop="id" label="序号" width="200"> <el-table-column label="序号" width="200">
<template slot-scope="scope">
{{ (pagination.currentPage - 1) * pagination.pageSize + scope.$index + 1 }}
</template>
</el-table-column> </el-table-column>
<el-table-column prop="name" label="企业名称" width="300"> <el-table-column prop="name" label="企业名称" width="300">
<template slot-scope="scope"> <template slot-scope="scope">
@ -91,16 +94,24 @@
</el-table-column> </el-table-column>
<el-table-column label="操作" width="200" align="center"> <el-table-column label="操作" width="200" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button v-if="scope.row.isEditing" size="mini" type="text" icon="el-icon-check" @click="saveRow(scope.row)"></el-button> <el-button v-if="scope.row.isEditing" size="mini" type="text" icon="el-icon-check"
<el-button v-else size="mini" type="text" icon="el-icon-edit" @click="editRow(scope.row)"></el-button> @click="saveRow(scope.row)">保存</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" style="color: #F25353;" @click="deleteRow(scope.$index)"></el-button> <el-button v-else size="mini" type="text" icon="el-icon-edit"
@click="editRow(scope.row)">编辑</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" style="color: #F25353;"
@click="deleteRow(scope.$index)">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="block"> <div class="block">
<div style="visibility: hidden;"></div> <el-pagination
<el-pagination :current-page="4" :page-sizes="[100, 200, 300, 400]" :page-size="100" :current-page="pagination.currentPage"
layout="total, prev, pager, next, jumper" :total="400"> :page-sizes="[10, 20, 50, 100]"
:page-size="pagination.pageSize"
layout="total, prev, pager, next, jumper"
:total="pagination.total"
@current-change="handleCurrentChange"
@size-change="handleSizeChange">
</el-pagination> </el-pagination>
</div> </div>
</div> </div>
@ -109,13 +120,10 @@
<el-dialog title="数据导入" :visible.sync="upload.open" width="400px" append-to-body :close-on-click-modal="false"> <el-dialog title="数据导入" :visible.sync="upload.open" width="400px" append-to-body :close-on-click-modal="false">
<el-upload ref="upload" :limit="1" accept=".xlsx,.xls" :headers="upload.headers" :action="upload.url" <el-upload ref="upload" :limit="1" accept=".xlsx,.xls" :headers="upload.headers" :action="upload.url"
:disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess"
:auto-upload="false" drag> :auto-upload="false" :data="upload.data" drag>
<i class="el-icon-upload"></i> <i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div> <div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip"> <div class="el-upload__tip text-center" slot="tip">
<!-- <div class="el-upload__tip" slot="tip">
<el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的用户数据
</div> -->
<span>仅允许导入xlsxlsx格式文件</span> <span>仅允许导入xlsxlsx格式文件</span>
<el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline" <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline"
@click="importTemplate">下载模板</el-link> @click="importTemplate">下载模板</el-link>
@ -136,7 +144,7 @@
<script> <script>
import { getToken } from "@/utils/auth"; import { getToken } from "@/utils/auth";
import { download } from "@/utils/request"; import { download } from "@/utils/request";
import { getqyBasicInformationById, updateqyBasicInformation, deleteqyBasicInformation } from "@/api/ManageApi/index"; import { getqyBasicInformationPage, updateqyBasicInformation, deleteqyBasicInformation } from "@/api/ManageApi/index";
export default { export default {
props: { props: {
@ -157,6 +165,10 @@ export default {
action: { action: {
type: String, type: String,
required: true required: true
},
xmId: {
type: Number,
required: true
} }
}, },
data() { data() {
@ -166,18 +178,27 @@ export default {
...this.qyrzInfo ...this.qyrzInfo
}, },
tableData: [], // tableData: [], //
pagination: {
currentPage: 1,
pageSize: 10,
total: 0
},
upload: { upload: {
open: false, open: false,
isUploading: false, isUploading: false,
updateSupport: 0, updateSupport: 0,
headers: { headers: {
Authorization: "Bearer " + getToken() Authorization: "Bearer " + getToken(),
}, },
url: process.env.VUE_APP_BASE_API + "/api/enterprise/import" url: process.env.VUE_APP_BASE_API + "/gysl/enterprise/importEnterprise",
data: {
xmId: this.xmId
}
} }
}; };
}, },
created() { created() {
console.log('xmId:', this.xmId);
this.fetchTableData(); this.fetchTableData();
}, },
watch: { watch: {
@ -192,11 +213,19 @@ export default {
methods: { methods: {
// //
fetchTableData() { fetchTableData() {
getqyBasicInformationById().then(response => { const params = {
xmId: this.xmId,
current: this.pagination.currentPage,
size: this.pagination.pageSize
};
getqyBasicInformationPage(params).then(response => {
console.log('Fetched Data:', response.data.records); //
this.tableData = response.data.records.map(item => ({ this.tableData = response.data.records.map(item => ({
...item, ...item,
isEditing: false isEditing: false
})); }));
console.log('Table Data:', this.tableData); //
this.pagination.total = response.data.total; //
}).catch(error => { }).catch(error => {
console.error('获取数据失败:', error); console.error('获取数据失败:', error);
}); });
@ -211,7 +240,7 @@ export default {
...this.form, ...this.form,
rzqys: Number(this.form.rzqys), rzqys: Number(this.form.rzqys),
rysl: Number(this.form.rysl), rysl: Number(this.form.rysl),
rzl: Number(this.form.rzl), rzl: Number(this.form.r0zl),
yczmj: Number(this.form.yczmj), yczmj: Number(this.form.yczmj),
kzczmj: Number(this.form.kzczmj), kzczmj: Number(this.form.kzczmj),
gycfpjzj: Number(this.form.gycfpjzj), gycfpjzj: Number(this.form.gycfpjzj),
@ -236,10 +265,12 @@ export default {
}); });
}, },
deleteRow(index) { deleteRow(index) {
this.tableData.splice(index, 1); const id = this.tableData[index].id;
// deleteqyBasicInformation([id]).then(response => {
deleteqyBasicInformation([this.tableData[index].id]).then(response => {
this.$modal.msgSuccess('删除成功'); this.$modal.msgSuccess('删除成功');
this.tableData.splice(index, 1);
//
this.fetchTableData();
}).catch(error => { }).catch(error => {
console.error('删除失败:', error); console.error('删除失败:', error);
this.$modal.msgError('删除失败'); this.$modal.msgError('删除失败');
@ -269,6 +300,8 @@ export default {
if (response.code === 200) { if (response.code === 200) {
this.$modal.msgSuccess(response.msg); this.$modal.msgSuccess(response.msg);
//
this.fetchTableData();
this.$emit("refresh-data"); // this.$emit("refresh-data"); //
} else { } else {
this.$modal.msgError(response.msg || "导入失败"); this.$modal.msgError(response.msg || "导入失败");
@ -279,7 +312,22 @@ export default {
this.$modal.msgWarning("请先选择文件"); this.$modal.msgWarning("请先选择文件");
return; return;
} }
this.$refs.upload.submit(); // xmId
const formData = new FormData();
formData.append('file', this.$refs.upload.uploadFiles[0].raw);
formData.append('xmId', this.upload.data.xmId);
this.$refs.upload.submit(formData); //
},
//
handleCurrentChange(page) {
this.pagination.currentPage = page;
this.fetchTableData();
},
handleSizeChange(size) {
this.pagination.pageSize = size;
this.fetchTableData();
} }
} }
}; };

@ -95,10 +95,11 @@ export default {
handler(newVal) { handler(newVal) {
console.log('接收到的 wysmxInfo 数据:', newVal); console.log('接收到的 wysmxInfo 数据:', newVal);
this.form = newVal.map(item => ({ this.form = newVal.map(item => ({
id: item.id, // id: item.id,
xmId: item.xmId, xmId: item.xmId,
ysmc: item.ysmc, ysmc: item.ysmc,
list: item.list.map(subItem => ({ list: item.list.map(subItem => ({
id: subItem.id,
zdname: subItem.zdname || '暂无指标', zdname: subItem.zdname || '暂无指标',
zdinfor: subItem.zdinfor || '', zdinfor: subItem.zdinfor || '',
isEditing: false isEditing: false
@ -113,9 +114,10 @@ export default {
// isEditing // isEditing
const cleanedForm = this.form.map(row => ({ const cleanedForm = this.form.map(row => ({
ysmc: row.ysmc, ysmc: row.ysmc,
id: row.id, // id: row.id,
xmId: row.xmId, xmId: row.xmId,
list: row.list.map(item => ({ list: row.list.map(item => ({
id: item.id,
zdname: item.zdname, zdname: item.zdname,
zdinfor: item.zdinfor, zdinfor: item.zdinfor,
})) }))

@ -134,6 +134,10 @@ export default {
type: Object, type: Object,
required: true required: true
}, },
xmId:{
type: Number,
required: true
},
action: { action: {
type: String, type: String,
required: true required: true
@ -186,10 +190,15 @@ export default {
}, },
methods: { methods: {
// //
/** 导出 */
handleExport() { handleExport() {
this.download('system/post/export', { this.download(
...this.queryParams "/gysl/basicInformation/exportInfo",
}, `post_${new Date().getTime()}.xlsx`); {
idList: this.form.xmId
},
`规划信息${new Date().getTime()}.xlsx`
);
}, },
// //
edit() { edit() {

@ -56,7 +56,15 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="网页地址"> <el-form-item label="网页地址">
<el-input v-model="form.webUrl" placeholder="请输入网页地址"></el-input> <el-input placeholder="选择地址" v-model="form.webUrl" class="input-with-select">
<template slot="prepend">
<el-select v-model="select" style="width: 5.7rem;" @change="handleProtocolChange">
<el-option label="http" value="http"></el-option>
<el-option label="https" value="https"></el-option>
</el-select>
<span class="wangzhispan">://</span>
</template>
</el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
@ -180,7 +188,8 @@ export default {
xmmc: [{ required: true, message: '请输入项目名称', trigger: 'blur' }], xmmc: [{ required: true, message: '请输入项目名称', trigger: 'blur' }],
year: [{ required: true, message: '请选择年度', trigger: 'change' }], year: [{ required: true, message: '请选择年度', trigger: 'change' }],
img: [{ required: true, message: '请上传项目图片', trigger: 'change' }] img: [{ required: true, message: '请上传项目图片', trigger: 'change' }]
} },
select: 'http' //
} }
}, },
computed: { computed: {
@ -280,6 +289,20 @@ export default {
// //
this.fileList = item.img ? [{ url: item.img }] : []; this.fileList = item.img ? [{ url: item.img }] : [];
//
if (item.webUrl) {
if (item.webUrl.startsWith('https://')) {
this.select = 'https';
} else if (item.webUrl.startsWith('http://')) {
this.select = 'http';
} else {
this.select = 'http';
this.form.webUrl = 'http://' + item.webUrl;
}
} else {
this.select = 'http';
}
}, },
// //
@ -292,6 +315,13 @@ export default {
} }
}, },
//
handleProtocolChange() {
if (this.form.webUrl && !this.form.webUrl.startsWith(this.select + '://')) {
this.form.webUrl = this.select + '://' + this.form.webUrl.replace(/^(https?:\/\/)?/, '');
}
},
// //
resetForm() { resetForm() {
this.$refs.projectForm?.resetFields(); this.$refs.projectForm?.resetFields();
@ -307,6 +337,7 @@ export default {
year: "" year: ""
}; };
this.fileList = []; this.fileList = [];
this.select = 'http'; //
}, },
// //

@ -1,161 +1,170 @@
<template> <template>
<div class="container"> <div class="map-container">
<!-- 内容区域 --> <div class="search_box">
<div class="main-content"> <div class="label">搜索位置</div>
<!-- 右侧地图缩略图 --> <el-input v-model="input" placeholder="请输入内容" id="tipinput"></el-input>
<div class="map-thumbnail">
<div id="mars2dContainerSSS" class="mars2d-container"></div>
<div class="classify">
位置
</div>
</div>
</div> </div>
<div ref="gaode_Map" id="gaode_Map" class="map"></div>
</div> </div>
</template> </template>
<script> <script>
import 'mars2d/mars2d.css'; import AMapLoader from "@amap/amap-jsapi-loader"; //AMapLoader
import * as mars2d from 'mars2d'; window._AMapSecurityConfig = {
//
securityJsCode: "e779fe2f89c105226f4cc4a78d0bcafe",
};
export default { export default {
dicts: ['tplx'], components: {},
props: [],
data() { data() {
const basePathUrl = window.basePathUrl || "";
return { return {
configUrl: basePathUrl + "config/config.json", loading: false,
mapOptions: { isDetail: false,
copyright: false, // logo dataForm: {
basemaps: [ kqName: undefined,
{ kqLocation: undefined,
"id": 2021, kqLongitude: undefined,
"pid": 10, kqLatitude: undefined,
"name": "高德电子", kqWorkUnit: undefined,
"icon": "img/basemaps/gaode_vec.png", cronkqAccredit: [],
"type": "gaode", kqValidCardRange: undefined,
"layer": "vec",
"show": true
}, },
], rules: {},
center: { lat: 31.3256, lng: 120.7457 }, input: "",
zoom: 16, // map: null,
minZoom: 15, // auto: null,
maxZoom: 20, // placeSearch: null,
zoomControl: true, lnglat: [],
}, markers: [],
map: null, // position: {},
markerIcon: require('@/assets/images/detailsicon/icon-定位@2x.png'),
}; };
}, },
computed: {},
watch: {},
created() {},
mounted() {
// 使 nextTick DOM
this.$nextTick(() => {
this.initMap();
});
},
methods: { methods: {
// //
initMap() { initMap() {
this.map = new mars2d.Map('mars2dContainerSSS', this.mapOptions); //
this.map.on('load', this.onload); let centerLen = [120.585298, 31.322965];
AMapLoader.load({
key: "b58f9bc6e9863d1688a2da18446ec14d", // WebKey load
version: "2.0", // JSAPI 1.4.15
plugins: ["AMap.AutoComplete", "AMap.PlaceSearch", "AMap.Geocoder"],
})
.then((AMap) => {
this.map = new AMap.Map("gaode_Map", {
// id
viewMode: "3D", // 3D
zoom: 16, //
center: centerLen, //
resizeEnable: true,
});
this.setMarker(centerLen);
//
this.searchMap();
//
this.map.on("click", this.clickMapHandler);
})
.catch((e) => {
console.error("地图加载失败:", e);
});
}, },
// //
onload() { searchMap() {
this.addTestMarker(); //
this.auto = new AMap.AutoComplete({
input: "tipinput", // 使inputid
});
//
this.placeSearch = new AMap.PlaceSearch({
map: this.map,
});
//
this.auto.on("select", this.selectSite);
}, },
addTestMarker() { //
const graphic = new mars2d.graphic.Marker({ selectSite(e) {
latlng: [31.3256, 120.7457], if (e.poi.location) {
style: { this.placeSearch.setCity(e.poi.adcode);
image: this.markerIcon, this.placeSearch.search(e.poi.name); //
width: 46, } else {
height: 60, this.$message.error("查询地址失败,请重新输入地址");
horizontalOrigin: mars2d.HorizontalOrigin.CENTER, }
verticalOrigin: mars2d.VerticalOrigin.BOTTOM
}, },
}); //
this.map.graphicLayer.addGraphic(graphic); clickMapHandler(e) {
this.lnglat = [e.lnglat.getLng(), e.lnglat.getLat()];
this.setMarker(this.lnglat);
//
let geocoder = new AMap.Geocoder({});
let that = this;
geocoder.getAddress(this.lnglat, function (status, result) {
if (status === "complete" && result.regeocode) {
// dataForm
} else {
that.$message.error("查询地址失败,请重新输入地址");
} }
});
}, },
mounted() { //
this.initMap(); setMarker(lnglat) {
this.removeMarker();
let marker = new AMap.Marker({
position: lnglat,
});
marker.setMap(this.map);
this.markers.push(marker);
}, },
beforeDestroy() { //
if (this.map) { removeMarker() {
this.map.destroy(); if (this.markers) {
} this.markers.forEach(marker => marker.setMap(null));
this.markers = [];
} }
},
},
}; };
</script> </script>
<style scoped> <style lang="scss">
.container { .map-container {
display: flex;
flex-direction: column;
width: 100%; width: 100%;
background-color: #FFFFFF; height: 30rem;
box-shadow: 0rem 0.13rem 0.63rem 0rem rgba(177, 177, 177, 0.1); position: relative;
border-radius: 0.5rem 0.5rem 0.5rem 0.5rem;
overflow: auto;
}
.containertop {
height: auto;
display: flex;
justify-content: space-between;
padding: .5rem;
border-bottom: 1px solid #E5E5E5;
} }
.topleft { .search_box {
width: 8rem;
display: flex; display: flex;
gap: 0.4rem; justify-content: flex-start;
align-items: center; align-items: center;
height: 50px;
padding: 0 20px 0 0;
width: 72rem;
.label {
color: #000;
width: 100px;
} }
.topleft img {
width: 0.81rem;
height: 0.81rem;
}
.topleft span {
width: auto;
height: 0.88rem;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
font-weight: 500;
font-size: 0.88rem;
color: #3D424C;
line-height: 0.88rem;
text-align: right;
font-style: normal;
text-transform: none;
} }
.main-content { .map {
display: flex; overflow: hidden;
width: 75rem; width: 72rem;
gap: 2rem; height: 26.13rem;
padding: 1rem; margin: 0;
}
.map-thumbnail {
width: 76rem;
height: 25rem;
position: relative; position: relative;
z-index: 1000;
} }
.mars2d-container { .amap-sug-result {
width: 100%; z-index: 2999 !important;
height: 100%;
}
.classify {
width: 2.81rem;
height: 1.38rem;
background-color: rgba(43, 98, 241, 0.8);
border-radius: 0.69rem 0.69rem 0.69rem 0.69rem;
color: white;
position: absolute;
bottom: .5rem;
left: .5rem;
display: flex;
justify-content: center;
align-items: center;
font-size: .7rem;
z-index: 98;
} }
</style> </style>

@ -3,46 +3,44 @@
<!-- 企业端页面 --> <!-- 企业端页面 -->
<!-- 表单查询项 --> <!-- 表单查询项 -->
<div class="headerbox"> <div class="headerbox">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="200">
label-width="200">
<el-row> <el-row>
<el-col :span="5"> <el-col :span="5">
<el-form-item label="项目名称" prop="name" style="width: 100%;"> <el-form-item label="项目名称" style="width: 100%;">
<el-input v-model="queryParams.name" placeholder="请输入项目名称" clearable style="width: 15rem;" <el-input v-model="queryParams.name" placeholder="请输入项目名称" clearable @keyup.enter.native="handleQuery" />
@keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="7">
<el-form-item label="建设时间"> <el-form-item label="建设起止时间">
<el-date-picker v-model="queryParams.startTime" type="date" placeholder="开始日期" <el-date-picker v-model="queryParams.begainTime"
value-format="yyyy-MM-dd" type="date" placeholder="开始日期" value-format="yyyy-MM-dd"
style="width: 11rem;"></el-date-picker> style="width: 9rem;" :clearable="true">
</el-date-picker>
~ ~
<el-date-picker v-model="queryParams.endTime" type="date" placeholder="开始日期" <el-date-picker v-model="queryParams.endTime"
type="date" placeholder="结束日期"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
style="width: 11rem;"></el-date-picker> style="width: 9rem;" :clearable="true">
</el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="5"> <el-col :span="5">
<el-form-item label="现状分类"> <el-form-item label="现状分类">
<el-select v-model="queryParams.xzfl" placeholder="现状分类" clearable> <el-select v-model="queryParams.xzfl" placeholder="现状分类" clearable>
<el-option v-for="dict in dict.type.xzfl" :key="dict.value" :label="dict.label" <el-option v-for="dict in dict.type.xzfl" :key="dict.value" :label="dict.label" :value="dict.value" />
:value="dict.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> <el-col :span="7">
<el-row>
<el-col :span="5">
<el-form-item label="项目法人单位"> <el-form-item label="项目法人单位">
<el-input v-model="queryParams.xmfrdwxz" placeholder="请输入项目法人单位" clearable <el-input v-model="queryParams.xmfrdwxz" placeholder="请输入项目名称" clearable @keyup.enter.native="handleQuery" />
@keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row>
<el-row>
<el-col :span="8"> <el-col :span="8">
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
@click="handleQuery">查询</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -73,12 +71,7 @@
</el-dialog> </el-dialog>
<!-- 导出行 --> <!-- 导出行 -->
<div class="tablebtntwo"> <div class="tablebtntwo">
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" icon="el-icon-upload2" size="medium"
@click="handleExport">导出</el-button>
</el-col>
</el-row>
</div> </div>
<el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange" stripe> <el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange" stripe>
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
@ -260,10 +253,10 @@ export default {
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
this.download('/gysl/basicInformation/exportInfo', { this.download('/gysl/basicInformation/export', {
...this.queryParams, ...this.queryParams,
idList: this.ids[0] idList: this.ids[0]
}, `post_${new Date().getTime()}.xlsx`) }, `信息管理导出${new Date().getTime()}.xlsx`)
}, },
/** 详情按钮操作 */ /** 详情按钮操作 */

@ -10,17 +10,17 @@
<el-input v-model="queryParams.name" placeholder="请输入项目名称" clearable @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.name" placeholder="请输入项目名称" clearable @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="7">
<el-form-item label="建设起止时间"> <el-form-item label="建设起止时间">
<el-date-picker v-model="queryParams.begainTime" <el-date-picker v-model="queryParams.begainTime"
type="date" placeholder="开始日期" value-format="yyyy-MM-dd" type="date" placeholder="开始日期" value-format="yyyy-MM-dd"
style="width: 11rem;" :clearable="true"> style="width: 9rem;" :clearable="true">
</el-date-picker> </el-date-picker>
~ ~
<el-date-picker v-model="queryParams.endTime" <el-date-picker v-model="queryParams.endTime"
type="date" placeholder="结束日期" type="date" placeholder="结束日期"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
style="width: 10.5rem;" :clearable="true"> style="width: 9rem;" :clearable="true">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -31,7 +31,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="5"> <el-col :span="7">
<el-form-item label="项目法人单位"> <el-form-item label="项目法人单位">
<el-input v-model="queryParams.xmfrdwxz" placeholder="请输入项目名称" clearable @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.xmfrdwxz" placeholder="请输入项目名称" clearable @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
@ -177,7 +177,7 @@ export default {
}, },
xzflMap: { xzflMap: {
1: '已建', 1: '已建',
2: '建', 2: '建',
3: '拟建' 3: '拟建'
}, },
// //
@ -272,10 +272,9 @@ export default {
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
this.download('/gysl/basicInformation/exportInfo', { this.download('/gysl/basicInformation/export', {
...this.queryParams, xmid: this.ids[0]
idList: this.ids[0] }, `基本信息导出${new Date().getTime()}.xlsx`)
}, `post_${new Date().getTime()}.xlsx`)
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {

@ -30,7 +30,7 @@
</div> </div>
<!-- 规划信息 --> <!-- 规划信息 -->
<div id="programme"> <div id="programme">
<Programme :action="action" :planInfo="planInformation" <Programme :action="action" :planInfo="planInformation" :xmId="projectId"
@update-data="handleDataUpdate('planInformation', $event)"> @update-data="handleDataUpdate('planInformation', $event)">
</Programme> </Programme>
</div> </div>
@ -50,7 +50,7 @@
</div> </div>
<!-- 企业入驻信息 --> <!-- 企业入驻信息 -->
<div id="companyenter"> <div id="companyenter">
<Companyenter :id="projectId" :action="action" :qyrzInfo="qyrzInformation" <Companyenter :xmId="projectId" :action="action" :qyrzInfo="qyrzInformation"
@update-data="handleDataUpdate('qyrzInformation', $event)"> @update-data="handleDataUpdate('qyrzInformation', $event)">
</Companyenter> </Companyenter>
</div> </div>
@ -91,6 +91,9 @@
<div class="footer" v-if="checkRole(['common']) && action === 'fill'"> <div class="footer" v-if="checkRole(['common']) && action === 'fill'">
<el-button type="primary" v-if="checkRole(['common'])" @click="aduitAll"></el-button> <el-button type="primary" v-if="checkRole(['common'])" @click="aduitAll"></el-button>
</div> </div>
<div class="footer" v-if="checkRole(['common']) && action === 'okay'">
<el-button type="primary" v-if="checkRole(['common'])" @click="aduitAll"></el-button>
</div>
</div> </div>
<!-- 返回顶部 --> <!-- 返回顶部 -->
<el-button icon="el-icon-caret-top" circle id="back-to-top" @click="scrollToTop" plain></el-button> <el-button icon="el-icon-caret-top" circle id="back-to-top" @click="scrollToTop" plain></el-button>
@ -264,7 +267,7 @@ export default {
} }
}, },
goBack() { goBack() {
this.$router.go(-1); this.$router.go(-1); //
}, },
// //
handleDataUpdate(dataKey, updatedData) { handleDataUpdate(dataKey, updatedData) {
@ -279,7 +282,7 @@ export default {
} }
console.log(`接收到 ${dataKey} 更新:`, updatedData); console.log(`接收到 ${dataKey} 更新:`, updatedData);
}, },
//
isDefault(obj, defaultObj) { isDefault(obj, defaultObj) {
for (const key in defaultObj) { for (const key in defaultObj) {
if (obj[key] !== defaultObj[key]) { if (obj[key] !== defaultObj[key]) {
@ -292,12 +295,11 @@ export default {
saveAll() { saveAll() {
this.loading = true; this.loading = true;
const tempData = this.prepareSubmitData(); // const tempData = this.prepareSubmitData(); //
console.log('准备暂存的完整数据:', JSON.stringify(tempData, null, 2)); //
tempBasicInformation(tempData) tempBasicInformation(tempData)
.then(response => { .then(response => {
this.$message.success('暂存成功'); this.$message.success('暂存成功');
console.log('暂存数据:', response); console.log('暂存数据:', response);
this.$router.go(-1);
}) })
.catch(error => { .catch(error => {
this.$message.error('暂存失败'); this.$message.error('暂存失败');
@ -310,16 +312,8 @@ export default {
// //
submitAll() { submitAll() {
this.loading = true; this.loading = true;
const submitData = this.prepareSubmitData(); // const submitData = this.prepareSubmitData();
console.log('准备提交的完整数据:', JSON.stringify(submitData, null, 2)); //
//
if (this.isDefault(this.planInformation, this.defaultPlanInformation)) {
this.$message.error('规划信息未填写');
this.scrollToSection('programme');
this.loading = false;
return;
}
fillBasicInformation(submitData) fillBasicInformation(submitData)
.then(response => { .then(response => {
this.$message.success('提交成功'); this.$message.success('提交成功');
@ -340,10 +334,12 @@ export default {
.then(response => { .then(response => {
console.log('提交成功:', response); console.log('提交成功:', response);
this.$message.success('审核通过'); this.$message.success('审核通过');
this.isContainerVisible = false;
this.isSubmitted = true; this.isSubmitted = true;
his.$router.push('/manage'); this.$router.push('/manage');
}) })
.finally(() => {
this.loading = false;
});
}, },
// //
prepareSubmitData() { prepareSubmitData() {
@ -360,13 +356,13 @@ export default {
formatWysmxData() { formatWysmxData() {
return this.wysmxInformations.flatMap(item => return this.wysmxInformations.flatMap(item =>
item.list.map(listItem => ({ item.list.map(listItem => ({
id: listItem.id,
createTime: this.formatDate(new Date()), createTime: this.formatDate(new Date()),
updateTime: this.formatDate(new Date()), updateTime: this.formatDate(new Date()),
xmId: this.projectId, xmId: this.projectId,
ysmc: item.ysmc, ysmc: item.ysmc,
zdinfor: listItem.zdinfor, zdinfor: listItem.zdinfor,
zdname: listItem.zdname, zdname: listItem.zdname,
id: 0, // 0
createBy: "", createBy: "",
updateBy: "", updateBy: "",
createId: 0, createId: 0,

@ -30,7 +30,7 @@
</div> </div>
<!-- 规划信息 --> <!-- 规划信息 -->
<div id="programme"> <div id="programme">
<Programme :action="action" :planInfo="planInformation" <Programme :action="action" :planInfo="planInformation" :xmId="projectId"
@update-data="handleDataUpdate('planInformation', $event)"> @update-data="handleDataUpdate('planInformation', $event)">
</Programme> </Programme>
</div> </div>
@ -50,7 +50,7 @@
</div> </div>
<!-- 企业入驻信息 --> <!-- 企业入驻信息 -->
<div id="companyenter"> <div id="companyenter">
<Companyenter :id="projectId" :action="action" :qyrzInfo="qyrzInformation" <Companyenter :xmId="projectId" :action="action" :qyrzInfo="qyrzInformation"
@update-data="handleDataUpdate('qyrzInformation', $event)"> @update-data="handleDataUpdate('qyrzInformation', $event)">
</Companyenter> </Companyenter>
</div> </div>
@ -282,7 +282,7 @@ export default {
saveAll() { saveAll() {
this.loading = true; this.loading = true;
const tempData = this.prepareSubmitData(); // const tempData = this.prepareSubmitData(); //
console.log('准备暂存的完整数据:', JSON.stringify(tempData, null, 2)); //
tempBasicInformation(tempData) tempBasicInformation(tempData)
.then(response => { .then(response => {
this.$message.success('暂存成功'); this.$message.success('暂存成功');
@ -300,7 +300,7 @@ export default {
submitAll() { submitAll() {
this.loading = true; this.loading = true;
const submitData = this.prepareSubmitData(); const submitData = this.prepareSubmitData();
console.log('准备提交的完整数据:', JSON.stringify(submitData, null, 2)); //
fillBasicInformation(submitData) fillBasicInformation(submitData)
.then(response => { .then(response => {
this.$message.success('提交成功'); this.$message.success('提交成功');
@ -323,8 +323,11 @@ export default {
this.$message.success('审核通过'); this.$message.success('审核通过');
this.isContainerVisible = false; this.isContainerVisible = false;
this.isSubmitted = true; this.isSubmitted = true;
his.$router.push('/manage'); this.$router.push('/manage');
}) })
.finally(() => {
this.loading = false;
});
}, },
// //
prepareSubmitData() { prepareSubmitData() {
@ -341,13 +344,13 @@ export default {
formatWysmxData() { formatWysmxData() {
return this.wysmxInformations.flatMap(item => return this.wysmxInformations.flatMap(item =>
item.list.map(listItem => ({ item.list.map(listItem => ({
id: listItem.id,
createTime: this.formatDate(new Date()), createTime: this.formatDate(new Date()),
updateTime: this.formatDate(new Date()), updateTime: this.formatDate(new Date()),
xmId: this.projectId, xmId: this.projectId,
ysmc: item.ysmc, ysmc: item.ysmc,
zdinfor: listItem.zdinfor, zdinfor: listItem.zdinfor,
zdname: listItem.zdname, zdname: listItem.zdname,
id: item.id,
createBy: "", createBy: "",
updateBy: "", updateBy: "",
createId: 0, createId: 0,

@ -15,7 +15,7 @@
<script> <script>
import qiyeduan from '@/views/components/qiyexinxi/qiyexinxi.vue' import qiyeduan from '@/views/components/qiyexinxi/qiyexinxi.vue'
import zhengwuduan from '@/views/components/zhengwuxinxi/zhengwuxinxi.vue' import zhengwuduan from '@/views/components/zhengwuxinxi/zhengwuxinxi.vue'
import { checkPermi, checkRole } from "@/utils/permission"; // import { checkPermi, checkRole } from "@/utils/permission";
export default { export default {
components: { qiyeduan, zhengwuduan }, components: { qiyeduan, zhengwuduan },

@ -12,14 +12,14 @@
@keyup.enter.native="handleQuery" /> @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="7">
<el-form-item label="建设起止时间"> <el-form-item label="建设起止时间">
<el-date-picker v-model="queryParams.startTime" type="date" placeholder="开始日期" <el-date-picker v-model="queryParams.begainTime" type="date" placeholder="开始日期"
value-format="yyyy-MM-dd" style="width: 11rem;" :clearable="true"> value-format="yyyy-MM-dd" style="width: 9rem;" :clearable="true">
</el-date-picker> </el-date-picker>
~ ~
<el-date-picker v-model="queryParams.endTime" type="date" placeholder="结束日期" <el-date-picker v-model="queryParams.endTime" type="date" placeholder="结束日期"
value-format="yyyy-MM-dd" style="width: 10.5rem;" :clearable="true"> value-format="yyyy-MM-dd" style="width: 9rem;" :clearable="true">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -31,9 +31,9 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="5"> <el-col :span="7">
<el-form-item label="项目法人单位"> <el-form-item label="项目法人单位">
<el-input v-model="queryParams.xmfrdwxz" placeholder="请输入项目法人单位" clearable <el-input v-model="queryParams.xmfrdwxz" placeholder="请输入项目名称" clearable
@keyup.enter.native="handleQuery" /> @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -128,7 +128,7 @@ export default {
}, },
xzflMap: { xzflMap: {
1: '已建', 1: '已建',
2: '建', 2: '建',
3: '拟建' 3: '拟建'
}, },
// //

@ -37,7 +37,7 @@ module.exports = {
proxy: { proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy // detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: { [process.env.VUE_APP_BASE_API]: {
// target: `http://192.168.0.110:7071/`, // target: `http://192.168.0.108:7071/`,
target: `http://39.101.188.84:7071/`, target: `http://39.101.188.84:7071/`,
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {

Loading…
Cancel
Save