xuhongjie
项洋 2 months ago
commit 8f890ee7cf

File diff suppressed because it is too large Load Diff

@ -7,10 +7,20 @@
<script> <script>
import ThemePicker from "@/components/ThemePicker"; import ThemePicker from "@/components/ThemePicker";
import autofit from 'autofit.js';
export default { export default {
name: "App", name: "App",
components: { ThemePicker }, components: { ThemePicker },
mounted() {
autofit.init({
dh: 1030, // 稿
dw: 1950, // 稿
el: "body", // DOM
resize: true // resize
})
},
metaInfo() { metaInfo() {
return { return {
title: this.$store.state.settings.dynamicTitle && this.$store.state.settings.title, title: this.$store.state.settings.dynamicTitle && this.$store.state.settings.title,
@ -21,17 +31,19 @@ export default {
} }
}; };
</script> </script>
<style > <style>
#app .theme-picker { #app .theme-picker {
display: none; display: none;
} }
/* 项目详情中的表单label */ /* 项目详情中的表单label */
.el-descriptions-item__label.is-bordered-label { .el-descriptions-item__label.is-bordered-label {
background: #F4F7FE !important; background: #F4F7FE !important;
width: 13.13rem; width: 13.13rem;
font-size: 0.5rem; font-size: 0.5rem;
} }
.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell{
.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell {
width: 13.13rem; width: 13.13rem;
font-size: 0.88rem; font-size: 0.88rem;
} }

@ -1,22 +1,21 @@
#app { #app {
.main-container { .main-container {
height: 100%; height: 100%;
transition: margin-left .28s; transition: margin-left 0.28s;
margin-left: $base-sidebar-width; margin-left: $base-sidebar-width;
position: relative; position: relative;
} }
.sidebarHide { .sidebarHide {
margin-left: 0!important; margin-left: 0 !important;
} }
.sidebar-container { .sidebar-container {
-webkit-transition: width .28s; -webkit-transition: width 0.28s;
transition: width 0.28s; transition: width 0.28s;
width: $base-sidebar-width !important; width: $base-sidebar-width !important;
background-color: $base-menu-background; // background-color: $base-menu-background;
height: 100%; // height: 100%;
position: fixed; position: fixed;
font-size: 0px; font-size: 0px;
top: 0; top: 0;
@ -30,7 +29,8 @@
// reset element-ui css // reset element-ui css
.horizontal-collapse-transition { .horizontal-collapse-transition {
transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out; transition: 0s width ease-in-out, 0s padding-left ease-in-out,
0s padding-right ease-in-out;
} }
.scrollbar-wrapper { .scrollbar-wrapper {
@ -39,6 +39,8 @@
.el-scrollbar__bar.is-vertical { .el-scrollbar__bar.is-vertical {
right: 0px; right: 0px;
width: 0px;
top: 0px;
} }
.el-scrollbar { .el-scrollbar {
@ -67,6 +69,9 @@
.el-menu { .el-menu {
border: none; border: none;
border-right: none;
border-left: none!important;
border-bottom: none !important;
height: 100%; height: 100%;
width: 100% !important; width: 100% !important;
background-image: url(../images/侧边栏2.png); background-image: url(../images/侧边栏2.png);
@ -74,48 +79,49 @@
background-size: 100% 100%; background-size: 100% 100%;
} }
.el-menu-item, .el-submenu__title { .el-menu-item,
.el-submenu__title {
overflow: hidden !important; overflow: hidden !important;
text-overflow: ellipsis !important; text-overflow: ellipsis !important;
white-space: nowrap !important; white-space: nowrap !important;
border-radius: 0.25rem 0.25rem 0.25rem 0.25rem; border-radius: 0.25rem;
height: 45px; height: 45px;
line-height: 45px; line-height: 45px;
} }
// menu hover // menu hover
.is-active{ .is-active {
background-color: #2B62F1!important; background-color: #2b62f1 !important;
} }
.submenu-title-noDropdown, .submenu-title-noDropdown,
.el-submenu__title { .el-submenu__title {
&:hover { &:hover {
background-color: #2B62F1 !important; background-color: #2b62f1 !important;
color: white !important; color: white !important;
} }
} }
& .is-active > .el-submenu__title { & .is-active > .el-submenu__title {
background-color: #2B62F1 !important; background-color: #2b62f1 !important;
color: white !important; color: white !important;
} }
& .nest-menu .el-submenu>.el-submenu__title, & .nest-menu .el-submenu > .el-submenu__title,
& .el-submenu .el-menu-item { & .el-submenu .el-menu-item {
min-width: $base-sidebar-width !important; min-width: 240px !important;
&:hover { &:hover {
background-color: #2B62F1 !important; background-color: #2b62f1 !important;
color: white; color: white;
} }
} }
& .nest-menu .el-submenu>.el-submenu__title, & .nest-menu .el-submenu > .el-submenu__title,
& .el-submenu .el-menu-item { & .el-submenu .el-menu-item {
color: white; color: white;
&:hover { &:hover {
background-color: #2B62F1 !important; background-color: #2b62f1 !important;
color: white !important; color: white !important;
} }
} }
@ -146,20 +152,19 @@
.el-submenu { .el-submenu {
overflow: hidden; overflow: hidden;
&>.el-submenu__title { & > .el-submenu__title {
padding: 0 !important; padding: 0 !important;
.svg-icon { .svg-icon {
margin-left: 20px; margin-left: 20px;
} }
} }
} }
.el-menu--collapse { .el-menu--collapse {
.el-submenu { .el-submenu {
&>.el-submenu__title { & > .el-submenu__title {
&>span { & > span {
height: 0; height: 0;
width: 0; width: 0;
overflow: hidden; overflow: hidden;
@ -182,7 +187,7 @@
} }
.sidebar-container { .sidebar-container {
transition: transform .28s; transition: transform 0.28s;
width: $base-sidebar-width !important; width: $base-sidebar-width !important;
} }
@ -196,7 +201,6 @@
} }
.withoutAnimation { .withoutAnimation {
.main-container, .main-container,
.sidebar-container { .sidebar-container {
transition: none; transition: none;
@ -206,22 +210,22 @@
// when menu collapsed // when menu collapsed
.el-menu--vertical { .el-menu--vertical {
&>.el-menu { & > .el-menu {
.svg-icon { .svg-icon {
margin-right: 16px; margin-right: 16px;
} }
} }
.nest-menu .el-submenu>.el-submenu__title, .nest-menu .el-submenu > .el-submenu__title,
.el-menu-item { .el-menu-item {
&:hover { &:hover {
// you can use $subMenuHover // you can use $subMenuHover
background-color: #2B62F1 !important; background-color: #2b62f1 !important;
} }
} }
// the scroll bar appears when the subMenu is too long // the scroll bar appears when the subMenu is too long
>.el-menu--popup { > .el-menu--popup {
max-height: 100vh; max-height: 100vh;
overflow-y: auto; overflow-y: auto;

@ -45,7 +45,7 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.app-main { .app-main {
/* 50= navbar 50 */ /* 50= navbar 50 */
min-height: calc(100vh - 50px); min-height: 100%;
width: 100%; width: 100%;
position: relative; position: relative;
overflow: hidden; overflow: hidden;

@ -19,7 +19,7 @@
<i class="el-icon-caret-bottom" /> <i class="el-icon-caret-bottom" />
</div> </div>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="logout"> <el-dropdown-item @click.native="logout" >
<span>退出登录</span> <span>退出登录</span>
</el-dropdown-item> </el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>

@ -1,5 +1,5 @@
<template> <template>
<div :class="{'has-logo':showLogo}" :style="{ backgroundColor: settings.sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }" style="padding: 0 1rem ;"> <div :class="{'has-logo':showLogo}" style="padding: 0 1rem ;">
<logo v-if="showLogo" :collapse="isCollapse" /> <logo v-if="showLogo" :collapse="isCollapse" />
<el-scrollbar wrap-class="scrollbar-wrapper"> <el-scrollbar wrap-class="scrollbar-wrapper">
<el-menu <el-menu

@ -1,26 +1,33 @@
<template> <template>
<div :class="classObj" class="app-wrapper" :style="{'--current-color': theme}"> <div :class="classObj" class="app-wrapper">
<!-- 头部区域独占一行 --> <!-- 头部区域独占一行 -->
<div class="header-container"> <div class="header-container">
<navbar/> <!-- 导航栏组件 --> <navbar /> <!-- 导航栏组件 -->
</div> </div>
<!-- 主内容区域 --> <!-- 主内容区域 -->
<div class="main-container"> <div class="main-container">
<!-- 左侧边栏仅在侧边栏未隐藏时显示 --> <!-- 左侧边栏 -->
<sidebar v-if="!sidebar.hide" class="sidebar-container"/> <sidebar class="sidebar-container" />
<div style="display: flex;flex-direction: column;width: 100%;">
<!-- 面包屑 -->
<div class="breadword-container">
<Breadword></Breadword>
</div>
<!-- 右侧内容区域 --> <!-- 右侧内容区域 -->
<div :class="{'content-container': true, 'sidebarHide': sidebar.hide}"> <div class="content-container">
<div class="breadword-container"><Breadword></Breadword> </div> <app-main style="background-color: #FAFAFA;" />
<app-main style="background-color: #FAFAFA;"/> </div>
<!-- <el-backtop target=".content-container" :visibility-height = "0"></el-backtop> -->
</div> </div>
</div> </div>
<!-- 右侧面板包含设置面板 -->
<right-panel> <right-panel>
<settings/> <!-- 设置面板组件 --> <settings />
</right-panel> </right-panel>
<el-backtop target=".main-container"></el-backtop>
</div> </div>
</template> </template>
@ -54,7 +61,6 @@ export default {
}), }),
classObj() { classObj() {
return { return {
// hideSidebar: !this.sidebar.opened,
openSidebar: this.sidebar.opened, openSidebar: this.sidebar.opened,
withoutAnimation: this.sidebar.withoutAnimation withoutAnimation: this.sidebar.withoutAnimation
} }
@ -63,19 +69,15 @@ export default {
return variables; return variables;
} }
}, },
methods: { methods: {}
handleClickOutside() {
this.$store.dispatch('app/closeSideBar', { withoutAnimation: false })
}
}
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "~@/assets/styles/mixin.scss"; @import "~@/assets/styles/mixin.scss";
@import "~@/assets/styles/variables.scss"; @import "~@/assets/styles/variables.scss";
.app-wrapper { .app-wrapper {
@include clearfix; @include clearfix;
position: relative; position: relative;
height: 100%; height: 100%;
@ -84,49 +86,48 @@ export default {
flex-direction: column; flex-direction: column;
background-image: url("../../src/assets/images/bg@2x.png"); background-image: url("../../src/assets/images/bg@2x.png");
background-size: 100% 100%; background-size: 100% 100%;
} }
.header-container { .header-container {
width: 100%; width: 100%;
height: $base-header-height; // height: $base-header-height;
background-image: url("../../src/assets/images/top@1x.png"); background-image: url("../../src/assets/images/top@1x.png");
background-size: 100% 100%; background-size: 100% 100%;
background-repeat: no-repeat; background-repeat: no-repeat;
z-index: 1000; z-index: 1000;
} }
.main-container { .main-container {
display: flex; display: flex;
border-radius: 1rem 1rem 0 0 ; border-radius: 1rem 1rem 0 0;
margin-right: .3rem; margin-right: .3rem;
flex: 1; flex: 1;
overflow: hidden; overflow: hidden;
background-color: #FAFAFA; background-color: #FAFAFA;
} }
.sidebar-container { .sidebar-container {
width: $base-sidebar-width; width: $base-sidebar-width;
height: 100%; height: calc(100% - 60px);
transition: width 0.28s; transition: width 0.28s;
margin-top: 60px; margin-top: 60px;
background-color: #f0f2f5; background-color: #f0f2f5;
// background-image: url("../../src/assets/images/bg@2x.png"); }
}
.breadword-container{ .breadword-container {
background-color: #fff; background-color: #fff;
border-radius: 1rem 1rem 0 0; border-radius: 1rem 1rem 0 0;
} }
.content-container { .content-container {
flex: 1;
height: 100%; height: 100%;
overflow: auto; overflow: hidden;
overflow-y: auto;
background-color: #f0f2f5; background-color: #f0f2f5;
transition: margin-left 0.28s; transition: margin-left 0.28s;
&.sidebarHide { &.sidebarHide {
margin-left: 0; margin-left: 0;
} }
} }
</style> </style>

@ -20,8 +20,8 @@
</el-col> </el-col>
<el-col :span="5"> <el-col :span="5">
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button> <el-button type="primary" icon="el-icon-search" size="medium" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button> <el-button icon="el-icon-refresh" size="medium" @click="resetQuery"></el-button>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -33,15 +33,15 @@
<div class="tablebtntwo"> <div class="tablebtntwo">
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd"></el-button> <el-button type="primary" icon="el-icon-plus" size="medium" @click="handleAdd"></el-button>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" icon="el-icon-download" size="mini" @click="handleImport"></el-button> <el-button type="primary" icon="el-icon-download" size="medium" @click="handleImport"></el-button>
</el-col> </el-col>
<!-- <el-col :span="1.5"> <!-- <el-col :span="1.5">
<el-button type="primary" icon="el-icon-download" size="mini" @click="handleExport"></el-button> <el-button type="primary" icon="el-icon-download" size="medium" @click="handleExport"></el-button>
</el-col> --> </el-col> -->
</el-row> </el-row>
</div> </div>
@ -67,9 +67,9 @@
<el-table-column label="上传时间" align="center" prop="scsj" :formatter="dateFormat" /> <el-table-column label="上传时间" align="center" prop="scsj" :formatter="dateFormat" />
<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 slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="text" @click="getInfo(scope.row)"></el-button> <el-button size="medium" type="text" @click="getInfo(scope.row)"></el-button>
<el-button size="mini" type="text" @click="handleUpdate(scope.row)"></el-button> <el-button size="medium" type="text" @click="handleUpdate(scope.row)"></el-button>
<el-button size="mini" type="text" @click="handleDelete(scope.row)" style="color: red;">删除</el-button> <el-button size="medium" type="text" @click="handleDelete(scope.row)" style="color: red;">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -78,7 +78,7 @@
</div> </div>
<!-- 添加或修改项目对话框 --> <!-- 添加或修改项目对话框 -->
<el-dialog :title="title" :visible.sync="open" width="40rem" append-to-body> <el-dialog :title="title" :visible.sync="open" width="45rem" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="7rem"> <el-form ref="form" :model="form" :rules="rules" label-width="7rem">
<el-form-item label="文件名称" prop="name"> <el-form-item label="文件名称" prop="name">
<el-input v-model="form.name" placeholder="请输入文件名称" /> <el-input v-model="form.name" placeholder="请输入文件名称" />

@ -181,18 +181,18 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<!-- <el-row> <el-row style="display: none;">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="经度" prop="tyshxydm"> <el-form-item label="经度" prop="longitude">
<el-input v-model="form.tyshxydm" maxlength="50"></el-input> <el-input v-model="form.longitude" maxlength="50"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="纬度" prop="tyshxydm"> <el-form-item label="纬度" prop="latitude">
<el-input v-model="form.tyshxydm" maxlength="50"></el-input> <el-input v-model="form.latitude" maxlength="50"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> --> </el-row>
<el-form-item label="项目法人单位简介" prop="unitIntroduction"> <el-form-item label="项目法人单位简介" prop="unitIntroduction">
<el-input v-model="form.unitIntroduction" type="textarea" rows="4" maxlength="1000"></el-input> <el-input v-model="form.unitIntroduction" type="textarea" rows="4" maxlength="1000"></el-input>
</el-form-item> </el-form-item>
@ -276,7 +276,10 @@ export default {
introduction: '', introduction: '',
fj: '', fj: '',
jsjd: '', jsjd: '',
//
longitude:'',
//
latitude:''
}, },
rules: { rules: {
name: [ name: [
@ -374,8 +377,8 @@ export default {
// //
handleMapConfirm(location) { handleMapConfirm(location) {
this.form.jsdd = location.address; // this.form.jsdd = location.address; //
this.form.lng = location.lng; // this.form.longitude = location.lng; //
this.form.lat = location.lat; // this.form.latitude = location.lat; //
this.mapDialogVisible = false; // this.mapDialogVisible = false; //
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
@ -541,12 +544,12 @@ export default {
.topleft span { .topleft span {
width: auto; width: auto;
height: 0.88rem; height: 1rem;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi; font-family: aliregular;
font-weight: 500; font-weight: 500;
font-size: 0.88rem; font-size: 1rem;
color: #3D424C; color: #3D424C;
line-height: 0.88rem; line-height: 1rem;
text-align: right; text-align: right;
font-style: normal; font-style: normal;
text-transform: none; text-transform: none;

@ -536,12 +536,12 @@ export default {
.topleft span { .topleft span {
width: auto; width: auto;
height: 0.88rem; height: 1rem;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi; font-family: aliregular;
font-weight: 500; font-weight: 500;
font-size: 0.88rem; font-size: 1rem;
color: #3D424C; color: #3D424C;
line-height: 0.88rem; line-height: 1rem;
text-align: right; text-align: right;
font-style: normal; font-style: normal;
text-transform: none; text-transform: none;

@ -65,39 +65,39 @@
<!-- 表格显示区 --> <!-- 表格显示区 -->
<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: 100%">
<el-table-column label="序号" width="200"> <el-table-column label="序号" width="200">
<template slot-scope="scope"> <template slot-scope="scope">
{{ (pagination.currentPage - 1) * pagination.pageSize + scope.$index + 1 }} {{ (pagination.currentPage - 1) * pagination.pageSize + scope.$index + 1 }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="name" label="企业名称" width="300"> <el-table-column prop="name" label="企业名称">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input v-if="scope.row.isEditing" v-model="scope.row.name" style="width: 100%;"></el-input> <el-input v-if="scope.row.isEditing" v-model="scope.row.name" style="width: 100%;"></el-input>
<span v-else style="color: #2B62F1;">{{ scope.row.name }}</span> <span v-else style="color: #2B62F1;">{{ scope.row.name }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="code" label="统一社会信用代码" width="300"> <el-table-column prop="code" label="统一社会信用代码">
</el-table-column> </el-table-column>
<el-table-column prop="sshy" label="所属行业" width="300"> <el-table-column prop="sshy" label="所属行业">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input v-if="scope.row.isEditing" v-model="scope.row.sshy" style="width: 100%;"></el-input> <el-input v-if="scope.row.isEditing" v-model="scope.row.sshy" style="width: 100%;"></el-input>
<span v-else>{{ scope.row.sshy }}</span> <span v-else>{{ scope.row.sshy }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="zjjg" label='租金价格' width="250"> <el-table-column prop="zjjg" label='租金价格'>
<template slot-scope="scope"> <template slot-scope="scope">
<el-input v-if="scope.row.isEditing" v-model.number="scope.row.zjjg" style="width: 100%;"></el-input> <el-input v-if="scope.row.isEditing" v-model.number="scope.row.zjjg" style="width: 100%;"></el-input>
<span v-else>{{ scope.row.zjjg }}</span> <span v-else>{{ scope.row.zjjg }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="200" align="center"> <el-table-column label="操作" 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" <el-button v-if="scope.row.isEditing" size="medium" type="text" icon="el-icon-check"
@click="saveRow(scope.row)">保存</el-button> @click="saveRow(scope.row)">保存</el-button>
<el-button v-else size="mini" type="text" icon="el-icon-edit" <el-button v-else size="medium" type="text" icon="el-icon-edit"
@click="editRow(scope.row)">编辑</el-button> @click="editRow(scope.row)">编辑</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" style="color: #F25353;" <el-button size="medium" type="text" icon="el-icon-delete" style="color: #F25353;"
@click="deleteRow(scope.$index)">删除</el-button> @click="deleteRow(scope.$index)">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
@ -391,12 +391,12 @@ export default {
.topleft span { .topleft span {
width: auto; width: auto;
height: 0.88rem; height: 1rem;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi; font-family: aliregular;
font-weight: 500; font-weight: 500;
font-size: 0.88rem; font-size: 1rem;
color: #3D424C; color: #3D424C;
line-height: 0.88rem; line-height: 1rem;
text-align: right; text-align: right;
font-style: normal; font-style: normal;
text-transform: none; text-transform: none;

@ -80,7 +80,7 @@ export default {
background-color: #FFFFFF; background-color: #FFFFFF;
box-shadow: 0rem 0.13rem 0.63rem 0rem rgba(177, 177, 177, 0.1); box-shadow: 0rem 0.13rem 0.63rem 0rem rgba(177, 177, 177, 0.1);
border-radius: 0.5rem 0.5rem 0.5rem 0.5rem; border-radius: 0.5rem 0.5rem 0.5rem 0.5rem;
padding: 1rem; padding: .3rem 0 1rem 0;
gap: 1rem; gap: 1rem;
overflow: auto; overflow: auto;
} }
@ -107,12 +107,12 @@ export default {
.topleft span { .topleft span {
width: auto; width: auto;
height: 0.88rem; height: 1rem;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi; font-family: aliregular;
font-weight: 500; font-weight: 500;
font-size: 0.88rem; font-size: 1rem;
color: #3D424C; color: #3D424C;
line-height: 0.88rem; line-height: 1rem;
text-align: right; text-align: right;
font-style: normal; font-style: normal;
text-transform: none; text-transform: none;

@ -297,12 +297,12 @@ export default {
.topleft span { .topleft span {
width: auto; width: auto;
height: 0.88rem; height: 1rem;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi; font-family: aliregular;
font-weight: 500; font-weight: 500;
font-size: 0.88rem; font-size: 1rem;
color: #3D424C; color: #3D424C;
line-height: 0.88rem; line-height: 1rem;
text-align: right; text-align: right;
font-style: normal; font-style: normal;
text-transform: none; text-transform: none;

@ -169,7 +169,7 @@ export default {
} }
.topleft { .topleft {
width: 8rem; width: 10rem;
height: 2rem; height: 2rem;
display: flex; display: flex;
gap: 0.4rem; gap: 0.4rem;
@ -183,12 +183,12 @@ export default {
.topleft span { .topleft span {
width: auto; width: auto;
height: 0.88rem; height: 1rem;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi; font-family: aliregular;
font-weight: 500; font-weight: 500;
font-size: 0.88rem; font-size: 1rem;
color: #3D424C; color: #3D424C;
line-height: 0.88rem; line-height: 1rem;
text-align: right; text-align: right;
font-style: normal; font-style: normal;
text-transform: none; text-transform: none;

@ -15,41 +15,41 @@
<div class="content"> <div class="content">
<div class="descriptionsdiv"> <div class="descriptionsdiv">
<el-table :data="tableData" style="width: 100%"> <el-table :data="tableData" style="width: 100%">
<el-table-column prop="month" label="进度月份" width="200"> <el-table-column prop="month" label="进度月份">
</el-table-column> </el-table-column>
<el-table-column prop="status" label="状态" width="200" align="center"> <el-table-column prop="status" label="状态" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span :style="getStatusColor(scope.row.status)">{{ scope.row.status }}</span> <span :style="getStatusColor(scope.row.status)">{{ scope.row.status }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="monthlyInvestment" label="当月完成投资" width="220" align="center"> <el-table-column prop="monthlyInvestment" label="当月完成投资" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input v-if="scope.row.isEditing" v-model.number="scope.row.monthlyInvestment" <el-input v-if="scope.row.isEditing" v-model.number="scope.row.monthlyInvestment"
style="width: 100%;"></el-input> style="width: 100%;"></el-input>
<span v-else>{{ scope.row.monthlyInvestment }}</span> <span v-else>{{ scope.row.monthlyInvestment }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="cumulativeInvestment" label="累计完成投资" width="280" align="center"> <el-table-column prop="cumulativeInvestment" label="累计完成投资" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input v-if="scope.row.isEditing" v-model.number="scope.row.cumulativeInvestment" <el-input v-if="scope.row.isEditing" v-model.number="scope.row.cumulativeInvestment"
style="width: 100%;"></el-input> style="width: 100%;"></el-input>
<span v-else>{{ scope.row.cumulativeInvestment }}</span> <span v-else>{{ scope.row.cumulativeInvestment }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="cumulativeArea" label='截止目前累计建成面积(平方米)' width="280" align="center"> <el-table-column prop="cumulativeArea" label='截止目前累计建成面积(平方米)' align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input v-if="scope.row.isEditing" v-model.number="scope.row.cumulativeArea" <el-input v-if="scope.row.isEditing" v-model.number="scope.row.cumulativeArea"
style="width: 100%;"></el-input> style="width: 100%;"></el-input>
<span v-else>{{ scope.row.cumulativeArea }}</span> <span v-else>{{ scope.row.cumulativeArea }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="progressDetails" label='项目进展详情' width="180" align="center"> <el-table-column prop="progressDetails" label='项目进展详情' align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input v-if="scope.row.isEditing" v-model="scope.row.progressDetails" style="width: 100%;"></el-input> <el-input v-if="scope.row.isEditing" v-model="scope.row.progressDetails" style="width: 100%;"></el-input>
<span v-else>{{ scope.row.progressDetails }}</span> <span v-else>{{ scope.row.progressDetails }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="200" align="center"> <el-table-column label="操作" 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" <el-button v-if="scope.row.isEditing" size="mini" type="text" icon="el-icon-check"
@click="handleSave(scope.row)">保存</el-button> @click="handleSave(scope.row)">保存</el-button>
@ -87,17 +87,7 @@ export default {
}, },
data() { data() {
return { return {
tableData: [ tableData: [],
{
month: '2024-10',
status: '未更新',
monthlyInvestment: 0,
cumulativeInvestment: 0,
cumulativeArea: 0,
progressDetails: '暂无数据',
isEditing: false,
},
],
current: 1, current: 1,
size: 10, size: 10,
total: 0, total: 0,
@ -132,8 +122,6 @@ export default {
type: "warning", type: "warning",
}) })
.then(() => { .then(() => {
console.log("删除:", row);
// tableData
if (Array.isArray(this.tableData)) { if (Array.isArray(this.tableData)) {
const index = this.tableData.indexOf(row); const index = this.tableData.indexOf(row);
if (index !== -1) { if (index !== -1) {
@ -155,12 +143,13 @@ export default {
async getMonthInformationPage() { async getMonthInformationPage() {
try { try {
const response = await getMonthInformationPage({ xmId: this.xmId }); const response = await getMonthInformationPage({ xmId: this.xmId });
// response.data.records
if (Array.isArray(response.data.records) && response.data.records.length > 0) { if (Array.isArray(response.data.records) && response.data.records.length > 0) {
this.tableData = response.data.records; this.tableData = response.data.records;
this.total = response.data.total || 0; this.total = response.data.total || 0;
} else { } else {
// //
this.tableData = [];
this.total = 0; this.total = 0;
} }
} catch (error) { } catch (error) {
@ -212,12 +201,12 @@ export default {
.topleft span { .topleft span {
width: auto; width: auto;
height: 0.88rem; height: 1rem;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi; font-family: aliregular;
font-weight: 500; font-weight: 500;
font-size: 0.88rem; font-size: 1rem;
color: #3D424C; color: #3D424C;
line-height: 0.88rem; line-height: 1rem;
text-align: right; text-align: right;
font-style: normal; font-style: normal;
text-transform: none; text-transform: none;
@ -245,4 +234,10 @@ export default {
justify-content: space-between; justify-content: space-between;
margin-top: 1rem; margin-top: 1rem;
} }
.no-data {
text-align: center;
padding: 2rem;
color: #999;
}
</style> </style>

@ -32,7 +32,7 @@
<!-- 数据展示表格 --> <!-- 数据展示表格 -->
<div class="tagdiv"> <div class="tagdiv">
<div class="descriptionsdiv"> <div class="descriptionsdiv">
<el-descriptions class="margin-top" :column="4" border> <el-descriptions class="margin-top" :column="5" border>
<el-descriptions-item v-for="(item, index) in anotherInfo" :key="index" :label="item.zdname"> <el-descriptions-item v-for="(item, index) in anotherInfo" :key="index" :label="item.zdname">
<template v-if="isEditMode"> <template v-if="isEditMode">
<el-input v-model="item.zdinfor" size="small" @change="handleFieldChange(item)" <el-input v-model="item.zdinfor" size="small" @change="handleFieldChange(item)"
@ -86,9 +86,7 @@ export default {
default: 0 default: 0
} }
}, },
created() { created() { },
// console.log('anotherInfo :', this.anotherInfo);
},
data() { data() {
return { return {
dialogVisible: false, // dialogVisible: false, //
@ -212,9 +210,6 @@ export default {
} }
try { try {
// xmId
// console.log('ID:', this.xmId);
// //
const requestData = { const requestData = {
xmId: this.xmId, // 使ID xmId: this.xmId, // 使ID
@ -306,12 +301,12 @@ export default {
.topleft span { .topleft span {
width: auto; width: auto;
height: 0.88rem; height: 1rem;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi; font-family: aliregular;
font-weight: 500; font-weight: 500;
font-size: 0.88rem; font-size: 1rem;
color: #3D424C; color: #3D424C;
line-height: 0.88rem; line-height: 1rem;
text-align: right; text-align: right;
font-style: normal; font-style: normal;
text-transform: none; text-transform: none;
@ -336,7 +331,8 @@ export default {
} }
.tagdiv { .tagdiv {
padding: 1rem 3em 1rem 1rem; width: 100%;
padding: 1rem;
} }
.block { .block {

@ -298,12 +298,12 @@ export default {
.topleft span { .topleft span {
width: auto; width: auto;
height: 0.88rem; height: 1rem;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi; font-family: aliregular;
font-weight: 500; font-weight: 500;
font-size: 0.88rem; font-size: 1rem;
color: #3D424C; color: #3D424C;
line-height: 0.88rem; line-height: 1rem;
text-align: right; text-align: right;
font-style: normal; font-style: normal;
text-transform: none; text-transform: none;

@ -292,12 +292,12 @@ export default {
.topleft span { .topleft span {
width: auto; width: auto;
height: 0.88rem; height: 1rem;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi; font-family: aliregular;
font-weight: 500; font-weight: 500;
font-size: 0.88rem; font-size: 1rem;
color: #3D424C; color: #3D424C;
line-height: 0.88rem; line-height: 1rem;
text-align: right; text-align: right;
font-style: normal; font-style: normal;
text-transform: none; text-transform: none;
@ -316,7 +316,7 @@ export default {
flex-direction: column; flex-direction: column;
gap: 1.5rem; gap: 1.5rem;
padding: 1rem; padding: 1rem;
width: 25rem; width: 35rem;
} }
.type-title { .type-title {

@ -455,7 +455,7 @@ export default {
background-color: #FFFFFF; background-color: #FFFFFF;
box-shadow: 0rem 0.13rem 0.63rem 0rem rgba(177, 177, 177, 0.1); box-shadow: 0rem 0.13rem 0.63rem 0rem rgba(177, 177, 177, 0.1);
border-radius: 0.5rem 0.5rem 0.5rem 0.5rem; border-radius: 0.5rem 0.5rem 0.5rem 0.5rem;
padding: 1rem; padding: .3rem 0 1rem 0;
gap: 1rem; gap: 1rem;
overflow: auto; overflow: auto;
} }
@ -482,12 +482,12 @@ export default {
.topleft span { .topleft span {
width: auto; width: auto;
height: 0.88rem; height: 1rem;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi; font-family: aliregular;
font-weight: 500; font-weight: 500;
font-size: 0.88rem; font-size: 1rem;
color: #3D424C; color: #3D424C;
line-height: 0.88rem; line-height: 1rem;
text-align: right; text-align: right;
font-style: normal; font-style: normal;
text-transform: none; text-transform: none;

@ -272,12 +272,12 @@ export default {
.topleft span { .topleft span {
width: auto; width: auto;
height: 0.88rem; height: 1rem;
font-family: aliregular; font-family: aliregular;
font-weight: 500; font-weight: 500;
font-size: 0.88rem; font-size: 1rem;
color: #3D424C; color: #3D424C;
line-height: 0.88rem; line-height: 1rem;
text-align: right; text-align: right;
font-style: normal; font-style: normal;
text-transform: none; text-transform: none;

@ -17,7 +17,7 @@
<!-- 内容区域 --> <!-- 内容区域 -->
<div class="main-content"> <div class="main-content">
<!-- 右侧地图 --> <!-- 地图 -->
<div class="map-container"> <div class="map-container">
<div id="mars2dContainerSSS" class="mars2d-container"></div> <div id="mars2dContainerSSS" class="mars2d-container"></div>
</div> </div>
@ -73,9 +73,7 @@ export default {
}, },
// //
onload() { onload() {},
// console.log('');
},
// //
handleInput() { handleInput() {
@ -84,16 +82,12 @@ export default {
} }
this.searchDebounce = setTimeout(() => { this.searchDebounce = setTimeout(() => {
this.toSearch(); this.toSearch();
}, 300); // 300 }, 300);
}, },
// //
toSearch() { toSearch() {
if (!this.keyword.trim()) { if (!this.keyword.trim()) {
this.$message({
// message: "",
// type: "warning",
});
return; return;
} }
@ -211,7 +205,7 @@ export default {
.main-content { .main-content {
display: flex; display: flex;
width: 75rem; width: 82rem;
padding: 0 1rem 1rem 1rem; padding: 0 1rem 1rem 1rem;
} }

@ -7,7 +7,7 @@
<el-button slot="append" icon="el-icon-search" @click="toSearch"></el-button> <el-button slot="append" icon="el-icon-search" @click="toSearch"></el-button>
</el-input> </el-input>
<!-- 落点地点输入框 --> <!-- 落点地点输入框 -->
<el-input v-model="pointForm.address" readonly> <el-input v-model="pointForm.address" readonly class="search-input">
<template slot="append"> <template slot="append">
<el-button icon="el-icon-refresh" @click="reverseGeocode" :loading="loadingAddress"></el-button> <el-button icon="el-icon-refresh" @click="reverseGeocode" :loading="loadingAddress"></el-button>
</template> </template>
@ -285,12 +285,12 @@ export default {
.search-input { .search-input {
width: 100%; width: 100%;
max-width: 500px; /* max-width: 500px; */
} }
.selected-place-input { .selected-place-input {
width: 100%; width: 100%;
max-width: 500px; /* max-width: 500px; */
} }
.search-results { .search-results {

@ -133,8 +133,6 @@ export default {
`项目整体情况${this.selectedYear}.docx` `项目整体情况${this.selectedYear}.docx`
); );
}, },
// Handle year change
handleYearChange(year) { handleYearChange(year) {
if (year) { if (year) {
this.selectedYear = year; this.selectedYear = year;
@ -181,11 +179,10 @@ export default {
gap: .5rem; gap: .5rem;
} }
/* Your existing styles remain unchanged */
.container { .container {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 2rem; gap: 1rem;
} }
table { table {
@ -220,7 +217,7 @@ th {
.lefttitle { .lefttitle {
font-family: aliregular; font-family: aliregular;
font-weight: 400; font-weight: 400;
font-size: 0.88rem; font-size: 0.9rem;
color: #7B8599; color: #7B8599;
line-height: 1.19rem; line-height: 1.19rem;
text-align: left; text-align: left;

@ -4,7 +4,7 @@
<span>{{ totalCount }}</span> <span>{{ totalCount }}</span>
<span>项目总数</span> <span>项目总数</span>
</div> </div>
<div ref="chart" style="width: 30rem; height: 15rem;"></div> <div ref="chart" style="width: 30rem; height: 13rem;"></div>
</div> </div>
</template> </template>
@ -20,7 +20,7 @@ export default {
{ value: 54, name: '重点鼓励上楼', itemStyle: { color: '#50DFB3' } }, { value: 54, name: '重点鼓励上楼', itemStyle: { color: '#50DFB3' } },
{ value: 65, name: '有条件上楼', itemStyle: { color: '#507AFC' } }, { value: 65, name: '有条件上楼', itemStyle: { color: '#507AFC' } },
], ],
totalCount: 0 // totalCount: 0
}; };
}, },
mounted() { mounted() {
@ -64,7 +64,11 @@ export default {
// //
const item = this.chartData.find(item => item.name === name); const item = this.chartData.find(item => item.name === name);
return `${name} ${item.value}`; return `${name} ${item.value}`;
}.bind(this) }.bind(this),
textStyle: {
fontSize: 16, //
fontfamily: 'alibold'
}
}, },
series: [ series: [
{ {
@ -100,7 +104,7 @@ export default {
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
top: 5.4rem; top: 3.8rem;
left: 7rem; left: 7rem;
} }

@ -4,7 +4,7 @@
<span>{{ totalCount }}</span> <span>{{ totalCount }}</span>
<span>项目总数</span> <span>项目总数</span>
</div> </div>
<div ref="chart" style="width: 30rem; height: 15rem;"></div> <div ref="chart" style="width: 30rem; height: 13rem;"></div>
</div> </div>
</template> </template>
@ -20,7 +20,7 @@ export default {
{ value: 54, name: '细分产业分析', itemStyle: { color: '#36C3FB' } }, { value: 54, name: '细分产业分析', itemStyle: { color: '#36C3FB' } },
{ value: 65, name: '目录分析', itemStyle: { color: '#F6B600' } }, { value: 65, name: '目录分析', itemStyle: { color: '#F6B600' } },
], ],
totalCount: 0 // totalCount: 0
}; };
}, },
mounted() { mounted() {
@ -100,7 +100,7 @@ export default {
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
top: 5.4rem; top: 3.8rem;
left: 7rem; left: 7rem;
} }

@ -61,7 +61,7 @@ export default {
.progress-item { .progress-item {
display: flex; display: flex;
align-items: center; align-items: center;
margin-top: 1.2rem; margin-top: .7rem;
} }
.progress-label { .progress-label {

@ -30,12 +30,8 @@ export default {
if (response && response.code === 200 && response.data) { if (response && response.code === 200 && response.data) {
this.chartData = this.processData(response.data); this.chartData = this.processData(response.data);
this.renderChart(); this.renderChart();
} else { } else { }
console.error('获取数据失败:', response); } catch (error) { }
}
} catch (error) {
console.error('获取数据失败:', error);
}
}, },
processData(data) { processData(data) {
const names = ['高端制造与国际贸易区', '独墅湖科教创新区', '阳澄湖半岛旅游度假区', '金鸡湖商务区', '苏相合作区']; const names = ['高端制造与国际贸易区', '独墅湖科教创新区', '阳澄湖半岛旅游度假区', '金鸡湖商务区', '苏相合作区'];
@ -65,12 +61,12 @@ export default {
orient: 'vertical', // orient: 'vertical', //
right: '0%', // right: '0%', //
top: 'center', // top: 'center', //
itemGap: 15, // itemGap: 18, //
formatter: function (name) { formatter: function (name) {
// //
const item = this.chartData.find(item => item.name === name); const item = this.chartData.find(item => item.name === name);
return `${name} ${item.value}`; return `${name} ${item.value}`;
}.bind(this) }.bind(this),
}, },
series: [ series: [
{ {

@ -16,7 +16,7 @@
<ProjectList /> <ProjectList />
</div> </div>
</div> </div>
<!-- 右侧搜索 -->
<div class="rightdiv"> <div class="rightdiv">
<el-input v-model="searchBox" placeholder="请输入项目名称" class="search-input" @input="handleSearchInput" <el-input v-model="searchBox" placeholder="请输入项目名称" class="search-input" @input="handleSearchInput"
@clear="handleClear" clearable> @clear="handleClear" clearable>
@ -29,12 +29,10 @@
<div class="item-name">{{ item.name }}</div> <div class="item-name">{{ item.name }}</div>
</div> </div>
</div> </div>
<!-- 右侧地图区域 --> <!-- 右侧地图区域 -->
<div class="blueicon"> <div class="map-container">
<div class="icondiv" v-if="showLocationIcon"> <div id="mars2dContainerSSS" class="mars2d-container"></div>
<img src="@/assets/images/detailsicon/icon-定位@2x.png" alt="定位" :style="iconPosition"
@click.stop="showDialog">
</div>
</div> </div>
</div> </div>
</div> </div>
@ -63,6 +61,8 @@
</template> </template>
<script> <script>
import 'mars2d/mars2d.css';
import * as mars2d from 'mars2d';
import ProjectList from '@/views/components/analysis/projectList.vue' import ProjectList from '@/views/components/analysis/projectList.vue'
import { getBasicInformationPage } from "@/api/ManageApi/index"; import { getBasicInformationPage } from "@/api/ManageApi/index";
import { debounce } from 'lodash'; import { debounce } from 'lodash';
@ -90,6 +90,7 @@ export default {
'click-outside': clickOutside 'click-outside': clickOutside
}, },
data() { data() {
const basePathUrl = window.basePathUrl || "";
return { return {
isCollapsed: false, isCollapsed: false,
searchBox: '', searchBox: '',
@ -121,12 +122,83 @@ export default {
2: '在建', 2: '在建',
3: '拟建' 3: '拟建'
}, },
//
configUrl: basePathUrl + "config/config.json",
mapOptions: {
copyright: false,
basemaps: [
{
id: 2021,
chinaCRS: "GCJ02",
pid: 10,
name: "高德电子",
icon: "img/basemaps/gaode_vec.png",
type: "gaode",
layer: "vec",
show: true
}
],
center: { lat: 31.3456, lng: 120.5957 },
zoom: 11,
minZoom: 10,
maxZoom: 20,
zoomControl: true,
chinaCRS: 'GCJ02'
},
map: null
}; };
}, },
created() { created() {
this.debouncedSearch = debounce(this.toSearch, 300); this.debouncedSearch = debounce(this.toSearch, 300);
}, },
mounted() {
this.initMap();
},
beforeDestroy() {
if (this.map) {
this.map.destroy();
}
},
methods: { methods: {
//
initMap() {
this.map = new mars2d.Map('mars2dContainerSSS', this.mapOptions);
this.map.on('load', this.onMapLoad);
},
//
onMapLoad() {
// console.log('');
this.addSuzhouIndustrialParkLayer();
},
//
async addSuzhouIndustrialParkLayer() {
try {
const response = await fetch('/config/suzhou.json');
const geoJsonData = await response.json();
const graphicLayer = new mars2d.layer.GraphicLayer({
name: "苏州园区高亮区域",
zIndex: 10
});
this.map.addLayer(graphicLayer);
// 3. GeoJSON
const polygon = mars2d.Util.geoJsonToGraphics(geoJsonData, {
style: {
fill: true,
fillColor: "#2B62F1",
fillOpacity: 0.3,
stroke: true,
color: "#2B62F1",
opacity: 0.8,
weight: 3
},
tooltip: "苏州工业园区"
});
graphicLayer.addGraphic(polygon);
} catch (error) {}
},
handleClear() { handleClear() {
this.showLocationIcon = false; this.showLocationIcon = false;
this.searchList = []; this.searchList = [];
@ -189,8 +261,15 @@ export default {
xzfl: item.xzfl || '暂无' xzfl: item.xzfl || '暂无'
}; };
//
if (item.jsdd && item.jsdd.includes(',')) {
const [lng, lat] = item.jsdd.split(',').map(Number);
this.map.flyTo([lat, lng], 17);
}
this.showLocationIcon = true; this.showLocationIcon = true;
this.setRandomIconPosition(); this.setRandomIconPosition();
this.showDialog();
}, },
showDialog() { showDialog() {
if (this.selectedProject.name) { if (this.selectedProject.name) {
@ -203,11 +282,9 @@ export default {
this.dialogVisible = false; this.dialogVisible = false;
}, },
setRandomIconPosition() { setRandomIconPosition() {
// icondiv9rem(135px)9rem(135px)
// 1.7rem(25.5px)2rem(30px)
// //
const maxTop = 105; // 135 - 30 const maxTop = 105;
const maxLeft = 110; // 135 - 25 const maxLeft = 110;
const randomTop = Math.floor(Math.random() * maxTop); const randomTop = Math.floor(Math.random() * maxTop);
const randomLeft = Math.floor(Math.random() * maxLeft); const randomLeft = Math.floor(Math.random() * maxLeft);
@ -224,7 +301,6 @@ export default {
</script> </script>
<style scoped> <style scoped>
/* 原有样式保持不变 */
.container { .container {
position: relative; position: relative;
} }
@ -234,7 +310,7 @@ export default {
} }
.mapareaone { .mapareaone {
height: 26.5rem; height: 24.5rem;
grid-column: span 2; grid-column: span 2;
width: 100%; width: 100%;
position: relative; position: relative;
@ -252,7 +328,7 @@ export default {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
z-index: 20; z-index: 10000;
transition: all 0.3s ease; transition: all 0.3s ease;
} }
@ -263,14 +339,14 @@ export default {
.leftdiv { .leftdiv {
width: 36%; width: 36%;
height: 27rem; height: 100%;
position: absolute; position: absolute;
left: 0rem; left: 0rem;
top: 0rem; top: 0rem;
background: #FFFFFF; background: #FFFFFF;
border-radius: 0.5rem; border-radius: 0.5rem;
transition: all 0.3s ease; transition: all 0.3s ease;
z-index: 10; z-index: 9999;
} }
.mainarea { .mainarea {
@ -313,6 +389,7 @@ export default {
position: absolute; position: absolute;
right: 1rem; right: 1rem;
top: 1rem; top: 1rem;
z-index: 9999;
} }
.search-results { .search-results {
@ -324,7 +401,7 @@ export default {
border: 1px solid #E5E5E5; border: 1px solid #E5E5E5;
border-radius: 0.5rem; border-radius: 0.5rem;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
z-index: 15; z-index: 9999;
max-height: 15rem; max-height: 15rem;
overflow-y: auto; overflow-y: auto;
} }
@ -340,7 +417,6 @@ export default {
} }
.item-name { .item-name {
/* font-weight: bold; */
margin-bottom: 0.3rem; margin-bottom: 0.3rem;
} }
@ -382,12 +458,10 @@ export default {
.dialog-title { .dialog-title {
font-size: 16px; font-size: 16px;
/* font-weight: bold; */
font-family: aliregular; font-family: aliregular;
margin-bottom: 15px; margin-bottom: 15px;
padding-bottom: 10px; padding-bottom: 10px;
border-bottom: 1px solid #EBEEF5; border-bottom: 1px solid #EBEEF5;
/* background-color:#F5F7FA; */
color: #2B62F1; color: #2B62F1;
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
@ -413,4 +487,17 @@ export default {
color: #3D424C; color: #3D424C;
font-family: aliregular; font-family: aliregular;
} }
/* 地图容器样式 */
.map-container {
width: 100%;
height: 100%;
position: relative;
}
.mars2d-container {
width: 100%;
height: 100%;
border-radius: 0.5rem;
}
</style> </style>

@ -121,8 +121,9 @@ export default {
<style scoped> <style scoped>
.container { .container {
width: 30rem; width: 98%;
height: 14.5rem; height: 14.5rem;
/* background-color: lightblue; */
} }
.no-data{ .no-data{
color: gray; color: gray;

@ -39,9 +39,9 @@
</el-col> --> </el-col> -->
<el-col :span="5"> <el-col :span="5">
<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="medium"
@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="medium" @click="resetQuery"></el-button>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -103,9 +103,9 @@
</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 slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="text" @click="getInfo(scope.row, 'fill')" <el-button size="medium" type="text" @click="getInfo(scope.row, 'fill')"
v-if="statusMap[scope.row.status] === '待填报'">填报</el-button> v-if="statusMap[scope.row.status] === '待填报'">填报</el-button>
<el-button size="mini" type="text" @click="getInfo(scope.row, 'detail')" <el-button size="medium" type="text" @click="getInfo(scope.row, 'detail')"
v-if="statusMap[scope.row.status] !== '待填报'">详情</el-button> v-if="statusMap[scope.row.status] !== '待填报'">详情</el-button>
</template> </template>
</el-table-column> </el-table-column>

@ -41,9 +41,9 @@
<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="medium"
@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="medium" @click="resetQuery"></el-button>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -119,13 +119,13 @@
</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 slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="text" @click="getAdd(scope.row, 'fill')" <el-button size="medium" type="text" @click="getAdd(scope.row, 'fill')"
v-if="statusMap[scope.row.status] === '待审核'">详情</el-button> v-if="statusMap[scope.row.status] === '待审核'">详情</el-button>
<el-button size="mini" type="text" @click="getAdd(scope.row, 'okay')" <el-button size="medium" type="text" @click="getAdd(scope.row, 'okay')"
v-if="statusMap[scope.row.status] === '审核通过'">详情</el-button> v-if="statusMap[scope.row.status] === '审核通过'">详情</el-button>
<el-button size="mini" type="text" @click="getAdd(scope.row, 'detail')" <el-button size="medium" type="text" @click="getAdd(scope.row, 'detail')"
v-if="statusMap[scope.row.status] === '待填报'">详情</el-button> v-if="statusMap[scope.row.status] === '待填报'">详情</el-button>
<el-button size="mini" type="text" @click="handleDelete(scope.row)" <el-button size="medium" type="text" @click="handleDelete(scope.row)"
style="color: #F25353;">删除</el-button> style="color: #F25353;">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>

@ -1,6 +1,8 @@
<template> <template>
<div class="bigone"> <div class="bigone">
<!-- 标题 --> <div class="containerbody" v-if="isContainerVisible">
<!-- 标题和目录 -->
<div fos>
<div class="containerheadone" id="listtop"> <div class="containerheadone" id="listtop">
<Title :basicInfo="basicInformation"></Title> <Title :basicInfo="basicInformation"></Title>
<el-button type="primary" size="medium" plain <el-button type="primary" size="medium" plain
@ -8,10 +10,6 @@
返回 返回
</el-button> </el-button>
</div> </div>
<div style="display: flex;justify-content: center;">
<el-button type="primary" v-if="isSubmitted" disabled>已提交</el-button>
</div>
<div class="containerbody" v-if="isContainerVisible">
<!-- 目录 --> <!-- 目录 -->
<div class="containerhead"> <div class="containerhead">
<el-menu :default-active="activeSection" mode="horizontal" @select="scrollToSection" <el-menu :default-active="activeSection" mode="horizontal" @select="scrollToSection"
@ -22,6 +20,7 @@
</el-menu-item> </el-menu-item>
</el-menu> </el-menu>
</div> </div>
</div>
<!-- 基本信息 --> <!-- 基本信息 -->
<div id="basic"> <div id="basic">
<Basic :action="action" :basicInfo="basicInformation" <Basic :action="action" :basicInfo="basicInformation"
@ -90,9 +89,12 @@
</div> </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> -->
<el-backtop target=".content-container" :visibility-height="0" :bottom="500" :right="10"></el-backtop>
<!-- 消息提醒 --> <!-- 消息提醒 -->
<div class="message-notice"><Supericon /></div> <div class="message-notice">
<Supericon />
</div>
</div> </div>
</template> </template>
@ -257,12 +259,12 @@ export default {
element.scrollIntoView({ behavior: 'smooth' }); element.scrollIntoView({ behavior: 'smooth' });
} }
}, },
scrollToTop() { // scrollToTop() {
const basicSection = document.getElementById('listtop'); // const basicSection = document.getElementById('listtop');
if (basicSection) { // if (basicSection) {
basicSection.scrollIntoView({ behavior: 'smooth' }); // basicSection.scrollIntoView({ behavior: 'smooth' });
} // }
}, // },
goBack() { goBack() {
this.$router.go(-1); // this.$router.go(-1); //
}, },
@ -401,7 +403,7 @@ export default {
<style scoped> <style scoped>
.containerbody { .containerbody {
height: auto; height: 100%;
padding: .3rem .5rem; padding: .3rem .5rem;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -472,23 +474,27 @@ export default {
.bigone { .bigone {
position: relative; position: relative;
height: 100%;
overflow: auto;
} }
#back-to-top { #back-to-top {
position: fixed; position: fixed;
bottom:50%; bottom: 50%;
right: 5px; right: 5px;
z-index: 99; z-index: 99;
font-size: 23px; font-size: 23px;
} }
.message-notice{
.message-notice {
position: fixed; position: fixed;
bottom:40%; bottom: 40%;
right: 1%; right: 1%;
z-index: 99; z-index: 99;
font-size: 23px; font-size: 23px;
cursor: pointer; cursor: pointer;
} }
.footer { .footer {
display: flex; display: flex;
padding: 0 0 2rem 0; padding: 0 0 2rem 0;

@ -68,7 +68,7 @@
</div> </div>
<!-- 现场实况 --> <!-- 现场实况 -->
<div id="liver"> <div id="liver">
<Liver :action="action"></Liver> <Liver :action="action" :xmId=projectId></Liver>
</div> </div>
<!-- 项目备忘录 --> <!-- 项目备忘录 -->
<div id="memo"> <div id="memo">
@ -90,7 +90,9 @@
</div> </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>
-->
<el-backtop target=".content-container" :visibility-height="0" :bottom="500" :right="10"></el-backtop>
</div> </div>
</template> </template>
@ -308,7 +310,6 @@ export default {
const response = await getqyBasicInformationPage(params); const response = await getqyBasicInformationPage(params);
return response.data.total || 0; // 0 return response.data.total || 0; // 0
} catch (error) { } catch (error) {
// console.error(':', error);
return 0; return 0;
} }
}, },

@ -77,7 +77,6 @@
<el-table-column label="更新时间" align="center" prop="updateTime" width="180" /> <el-table-column label="更新时间" align="center" prop="updateTime" width="180" />
<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 slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="text" @click="handleUpdate(scope.row)"></el-button> <el-button size="mini" type="text" @click="handleUpdate(scope.row)"></el-button>
<el-button size="mini" type="text" @click="handleDelete(scope.row)" style="color: red;">删除</el-button> <el-button size="mini" type="text" @click="handleDelete(scope.row)" style="color: red;">删除</el-button>
</template> </template>
@ -239,12 +238,10 @@ export default {
getAllCatalogs(this.queryParams).then(response => { getAllCatalogs(this.queryParams).then(response => {
this.postList = response.data.records.map(item => ({ this.postList = response.data.records.map(item => ({
...item, ...item,
// updateTime: item.updateTime ? item.updateTime.split(' ')[0] : ''
})); }));
this.total = response.data.total; this.total = response.data.total;
this.loading = false; this.loading = false;
}).catch(error => { }).catch(error => {
console.error('API Request Error:', error);
this.loading = false; this.loading = false;
}); });
}, },

@ -19,16 +19,9 @@
</div> </div>
<!-- 第二行 --> <!-- 第二行 -->
<div class="grid-item item-1 bgcicon"> <div class="grid-item item-1 bgcicon">
<!-- 项目列表 -->
<!-- <div class="itemhead">
<span>项目列表</span>
</div>
<div class="mainarea">
<ProjectList />
</div> -->
<MapArea /> <MapArea />
</div> </div>
<div style="display: flex;flex-direction: column;gap: 1rem;"> <div style="display: flex;flex-direction: column;">
<div class="grid-item item-3"> <div class="grid-item item-3">
<!-- 功能区 --> <!-- 功能区 -->
<div class="itemhead"> <div class="itemhead">
@ -158,9 +151,9 @@ export default {
/* 三列 */ /* 三列 */
grid-template-rows: auto auto auto; grid-template-rows: auto auto auto;
/* 三行 */ /* 三行 */
gap: 1rem; gap: .5rem;
/* 模块之间的间隔 */ /* 模块之间的间隔 */
padding: 1rem; padding: 0 .5rem;
/* 容器内边距 */ /* 容器内边距 */
} }
@ -172,7 +165,7 @@ export default {
.itemhead { .itemhead {
width: 100%; width: 100%;
border-left: 0.25rem solid #2B62F1; border-left: 0.25rem solid #2B62F1;
margin: 0.94rem 0; margin: 0.5rem 0;
height: 1.25rem; height: 1.25rem;
display: flex; display: flex;
align-items: center; align-items: center;
@ -239,8 +232,8 @@ export default {
.allarea { .allarea {
width: 100%; width: 100%;
height: 14.5rem; height: auto;
padding: 1rem 1.5rem; padding: .5rem 1rem;
} }
/* 最后一行:一个模块占一整行 */ /* 最后一行:一个模块占一整行 */
@ -257,7 +250,7 @@ export default {
} }
.bgcicon{ .bgcicon{
/* background-color: red; */ /* background-color: red; */
background-image: url(../../assets/images/map@2x.png); /* background-image: url(../../assets/images/map@2x.png); */
padding: 0!important; padding: 0!important;
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 100% 100%; background-size: 100% 100%;

@ -177,7 +177,6 @@ export default {
/* 第一行:第一个模块占两列 */ /* 第一行:第一个模块占两列 */
.item-1 { .item-1 {
width: 67rem;
/* background-image: url(../../../src/assets/images/allbg.png); */ /* background-image: url(../../../src/assets/images/allbg.png); */
background-size: 100% 100%; background-size: 100% 100%;
background-repeat: no-repeat; background-repeat: no-repeat;

Loading…
Cancel
Save