xuhongjie
严飞永 1 month ago
parent ef3dd6e9a1
commit 3d73d8b3a8

@ -1,6 +1,42 @@
// src/api/ManageApi/index.js // src/api/ManageApi/index.js
import request from '@/utils/request'; import request from '@/utils/request';
import { getToken } from '@/utils/auth';
// 企业--基本信息==下载模板(基本信息模板)
export function exportBasicInformationTemplate() {
return request({
url: '/gysl/basicInformation/importTemplate',
method: 'post',
responseType: 'blob',
headers: {
'Authorization': `Bearer ${getToken()}`
}
});
}
// 分页查询所有数据
export function getBasicInformationPage(params) {
return request({
url:'/gysl/basicInformation/page',
method: 'get',
params
})
}
// 企业基本信息--的导入功能
export function importBasicInformation(data) {
const formData = new FormData();
formData.append('file', data.file);
return request({
url: '/gysl/basicInformation/import',
method: 'post',
data: formData,
headers: {
'Content-Type': 'multipart/form-data',
'Authorization': `Bearer ${getToken()}`,
},
});
}
// 企业--基本信息==展示 // 企业--基本信息==展示
export function getBasicInformationById(id) { export function getBasicInformationById(id) {
return request({ return request({
@ -26,14 +62,6 @@ export function exportBasicInformation(params) {
responseType: 'blob' responseType: 'blob'
}); });
} }
// 分页查询所有数据
export function getBasicInformationPage(params) {
return request({
url:'/gysl/basicInformation/page',
method: 'get',
params
})
}
// 项目详情 规划信息 // 项目详情 规划信息
// 修改规划信息 // 修改规划信息
export function updateProgrammeInformation(data) { export function updateProgrammeInformation(data) {
@ -488,4 +516,14 @@ export function getxmmmbById(id) {
method:'get', method:'get',
params:{id} params:{id}
}) })
}
//单片材料管理
//新增数据
export function getclglPage(data) {
return request({
url:'/gysl/dpclgl/add',
method:'post',
data
})
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 999 B

@ -25,13 +25,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">
<!-- <router-link to="/user/profile"> <el-dropdown-item @click.native="logout">
<el-dropdown-item>个人中心</el-dropdown-item>
</router-link> -->
<!-- <el-dropdown-item @click.native="setting = true">
<span>布局设置</span>
</el-dropdown-item> -->
<el-dropdown-item divided @click.native="logout">
<span>退出登录</span> <span>退出登录</span>
</el-dropdown-item> </el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
@ -228,7 +222,7 @@ export default {
cursor: pointer; cursor: pointer;
position: absolute; position: absolute;
right: -20px; right: -20px;
top: 25px; top: 15px;
font-size: 12px; font-size: 12px;
} }
} }

@ -49,9 +49,9 @@
<el-table-column label="上传时间" align="center" prop="scsj" /> <el-table-column label="上传时间" align="center" prop="scsj" />
<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="mini" type="text" @click="getInfo(scope.row)"></el-button>
<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>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -71,6 +71,10 @@
:value="dict.value"></el-option> :value="dict.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- 如果文件类型是网络信息假设值为 4 -->
<el-form-item v-if="form.lx === '3'" label="网址" prop="scyh">
<el-input v-model="form.scsj" placeholder="请输入网址" />
</el-form-item>
<el-form-item label="上传用户" prop="scyh"> <el-form-item label="上传用户" prop="scyh">
<el-input v-model="form.scyh" placeholder="请输入上传用户" /> <el-input v-model="form.scyh" placeholder="请输入上传用户" />
</el-form-item> </el-form-item>
@ -100,6 +104,9 @@
:value="dict.value"></el-option> :value="dict.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-if="detailForm.lx === '3'" label="网址" prop="scyh">
<el-input v-model="detailForm.scsj" placeholder="请输入网址" readonly />
</el-form-item>
<el-form-item label="上传用户" prop="scyh"> <el-form-item label="上传用户" prop="scyh">
<el-input v-model="detailForm.scyh" placeholder="请输入上传用户" /> <el-input v-model="detailForm.scyh" placeholder="请输入上传用户" />
</el-form-item> </el-form-item>

@ -65,8 +65,7 @@
<el-input v-model="form.author" placeholder="请输入发布人" /> <el-input v-model="form.author" placeholder="请输入发布人" />
</el-form-item> </el-form-item>
<el-form-item label="内容"> <el-form-item label="内容">
<!-- 富文本编辑器 --> <Editorone v-model="form.content" />
<quill-editor class="editor" v-model="form.content" :options="editorOption"></quill-editor>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -97,35 +96,18 @@
</div> </div>
<!-- 内容区域 --> <!-- 内容区域 -->
<div class="previewcontent"> <div class="previewcontent">
<quill-editor class="editor preview-editor" v-model="previewData.content" :options="previewEditorOption" readonly></quill-editor> <div v-html="previewData.content"></div>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { quillEditor } from "vue-quill-editor"; import Editorone from '@/components/Editor';
import "quill/dist/quill.core.css"; import { getclglPage } from '@/api/ManageApi/index';
import "quill/dist/quill.snow.css";
import "quill/dist/quill.bubble.css";
//
const toolbarOptions = () => {
return [
["bold", "italic", "underline", "strike"], // 线 线
[{ list: "ordered" }, { list: "bullet" }], //
[{ indent: "-1" }, { indent: "+1" }], //
[{ size: ["small", false, "large", "huge"] }], //
[{ header: [1, 2, 3, 4, 5, 6, false] }], //
[{ color: [] }, { background: [] }], //
[{ align: [] }], //
["clean"], //
["link"], //
];
};
export default { export default {
components: { quillEditor }, components: { Editorone },
data() { data() {
return { return {
loading: false, loading: false,
@ -142,7 +124,6 @@ export default {
dialogVisible: false, dialogVisible: false,
dialogTitle: '新增', dialogTitle: '新增',
form: { form: {
id: null,
title: '', title: '',
date: '', date: '',
unit: '', unit: '',
@ -155,29 +136,15 @@ export default {
unit: [{ required: true, message: '请输入发布单位', trigger: 'blur' }], unit: [{ required: true, message: '请输入发布单位', trigger: 'blur' }],
author: [{ required: true, message: '请输入发布人', trigger: 'blur' }] author: [{ required: true, message: '请输入发布人', trigger: 'blur' }]
}, },
editorOption: { previewMode: false,
placeholder: "请输入内容", previewData: {},
modules: {
toolbar: {
container: toolbarOptions(),
},
},
},
previewMode: false, //
previewData: {}, //
previewEditorOption: {
readOnly: true,
modules: {
toolbar: false, //
},
},
}; };
}, },
methods: { methods: {
handleAdd() { handleAdd() {
this.dialogTitle = '新增'; this.dialogTitle = '新增';
this.dialogVisible = true; this.dialogVisible = true;
this.form = { id: null, title: '', date: '', unit: '', author: '', content: '' }; this.form = { title: '', date: '', unit: '', author: '', content: '' };
}, },
handleEdit(row) { handleEdit(row) {
this.dialogTitle = '编辑'; this.dialogTitle = '编辑';
@ -208,12 +175,22 @@ export default {
this.$refs.form.validate(valid => { this.$refs.form.validate(valid => {
if (valid) { if (valid) {
if (this.form.id) { if (this.form.id) {
//
const index = this.postList.findIndex(item => item.id === this.form.id); const index = this.postList.findIndex(item => item.id === this.form.id);
this.postList.splice(index, 1, this.form); this.postList.splice(index, 1, this.form);
} else { } else {
this.form.id = this.postList.length + 1; //
this.postList.push(this.form); const newForm = { ...this.form };
newForm.id = this.postList.length + 1;
this.postList.push(newForm);
this.total += 1; this.total += 1;
const formData = { ...newForm };
delete formData.id;
//
getclglPage(formData).then(response => {
this.$message({ type: 'success', message: '新增成功!' });
})
} }
this.dialogVisible = false; this.dialogVisible = false;
this.$message({ type: 'success', message: '操作成功!' }); this.$message({ type: 'success', message: '操作成功!' });
@ -263,11 +240,6 @@ export default {
margin-bottom: 1rem; margin-bottom: 1rem;
} }
.editor {
height: 300px;
margin-bottom: 50px;
}
.previewbox { .previewbox {
width: 90%; width: 90%;
height: auto; height: auto;
@ -314,17 +286,4 @@ export default {
.previewcontent { .previewcontent {
margin-top: 1rem; margin-top: 1rem;
} }
/* 去掉预览模式下编辑器的边框 */
.preview-editor ::v-deep .ql-container.ql-snow {
border: none !important;
}
.preview-editor ::v-deep .ql-editor {
padding: 0 0 !important;
}
.preview-editor ::v-deep .ql-editor {
pointer-events: none; /* 禁止鼠标交互 */
user-select: none; /* 禁止文本选择 */
}
</style> </style>

@ -7,16 +7,20 @@
<span>企业入驻信息</span> <span>企业入驻信息</span>
</div> </div>
<div class="topright"> <div class="topright">
<!-- 编辑按钮 -->
<el-button type="primary" size="medium" plain <el-button type="primary" size="medium" plain
style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;" @click="toggleEdit"> style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;">
<img src="../../../assets/images/detailsicon/icon-bj@2x.png" alt="编辑" <img src="../../../assets/images/detailsicon/icon-bj@2x.png" alt="编辑"
style="width: 0.6rem; height: 0.6rem; margin-right: 4px;"> style="width: 0.6rem; height: 0.6rem; margin-right: 4px;">
{{ editMode ? '保存' : '编辑' }} 编辑
</el-button>
<el-button type="primary" size="medium" plain
style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;">
<img src="../../../assets/images/detailsicon/icon-dc@2x.png" alt="编辑"
style="width: 0.6rem; height: 0.6rem; margin-right: 4px;">
导出
</el-button> </el-button>
</div> </div>
</div> </div>
<!-- 内容区上方的表格 --> <!-- 内容区上方的表格 -->
<div class="tagdiv"> <div class="tagdiv">
<div class="descriptionsdiv"> <div class="descriptionsdiv">
@ -25,120 +29,156 @@
<template slot="label"> <template slot="label">
入驻企业数 入驻企业数
</template> </template>
<el-input v-model="currentCompany.rzqys" v-if="editMode"></el-input> 18100000000
<span v-else>{{ currentCompany.rzqys }}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template slot="label"> <template slot="label">
入驻企业行业类型 入驻企业行业类型
</template> </template>
<el-input v-model="currentCompany.rzqyhylx" v-if="editMode"></el-input> 苏州市
<span v-else>{{ currentCompany.rzqyhylx }}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template slot="label"> <template slot="label">
人员数量 人员数量
</template> </template>
<el-input v-model="currentCompany.rysl" v-if="editMode"></el-input> kooriookami
<span v-else>{{ currentCompany.rysl }}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template slot="label"> <template slot="label">
入住率% 入住率%
</template> </template>
<el-input v-model="currentCompany.rzl" v-if="editMode"></el-input> 18100000000
<span v-else>{{ currentCompany.rzl }}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template slot="label"> <template slot="label">
已出租面积平方米 已出租面积平方米
</template> </template>
<el-input v-model="currentCompany.yczmj" v-if="editMode"></el-input> 苏州市
<span v-else>{{ currentCompany.yczmj }}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template slot="label"> <template slot="label">
空置出租面积平方米 空置出租面积平方米
</template> </template>
<el-input v-model="currentCompany.kzczmj" v-if="editMode"></el-input> kooriookami
<span v-else>{{ currentCompany.kzczmj }}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template slot="label"> <template slot="label">
工业厂房平均租金/平方米* 工业厂房平均租金/平方米*
</template> </template>
<el-input v-model="currentCompany.gycfpjzj" v-if="editMode"></el-input> 18100000000
<span v-else>{{ currentCompany.gycfpjzj }}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template slot="label"> <template slot="label">
工业厂房平均物业费(/平方米*) 工业厂房平均物业费(/平方米*)
</template> </template>
<el-input v-model="currentCompany.gycfpjwyf" v-if="editMode"></el-input> 苏州市
<span v-else>{{ currentCompany.gycfpjwyf }}</span>
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
</div> </div>
</div> </div>
<!-- 内容区 -->
<div class="content">
<div class="descriptionsdiv">
<div class="spandiv" @click="openDialog"><span>新增企业入驻</span></div>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="address" label="序号" width="200">
</el-table-column>
<el-table-column prop="name" label="企业名称" width="300">
<template slot-scope="scope">
<span style="color: #2B62F1;">{{ scope.row.name }}</span>
</template>
</el-table-column>
<el-table-column prop="number" label="统一社会信用代码" width="300">
</el-table-column>
<el-table-column prop="name" label="所属行业" width="300">
</el-table-column>
<el-table-column prop="data" label='租金价格' width="250">
</el-table-column>
<el-table-column label="操作" width="200" align="center">
<template slot-scope="scope">
<el-button v-if="scope.row.isEditing" size="mini" type="text" icon="el-icon-check" >保存</el-button>
<el-button v-else size="mini" type="text" icon="el-icon-edit" >编辑</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" style="color: #F25353;">删除</el-button>
</template>
</el-table-column>
</el-table>
<div class="block">
<div style="visibility: hidden;"></div>
<el-pagination :current-page="4" :page-sizes="[100, 200, 300, 400]" :page-size="100"
layout="total, prev, pager, next, jumper" :total="400">
</el-pagination>
</div>
</div>
</div>
<!-- 弹窗 -->
<el-dialog title="企业入驻" :visible.sync="dialogVisible" width="400px" append-to-body>
<el-upload>
<i class="el-icon-upload" style="margin-left: 7rem;"></i>
<div class="el-upload__text" style="margin-left: 7rem;"><em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip" style="margin-top: -1.5rem; margin-left: 9rem;">
<!-- <div class="el-upload__tip" slot="tip">
<el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的用户数据
</div> -->
<!-- <span>仅允许导入xlsxlsx格式文件</span> -->
<el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline"
@click="importTemplate">下载模板</el-link>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { updateqyrz, getqyrzById } from '@/api/ManageApi/index';
export default { export default {
data() { data() {
return { return {
editMode: false, // tableData: [
currentCompany: { {
rzqys: 0, // date: '2016-05-02',
rzqyhylx: '', // name: '大众电脑生成制造基地',
rysl: 0, // number: 123456,
rzl: 0, // address: ' 1518 弄',
yczmj: 0, // data: '1000',
kzczmj: 0, // status: '在建'
gycfpjzj: 0, // },
gycfpjwyf: 0, // {
}, date: '2016-05-04',
}; name: '大众电脑生成制造基地',
}, address: ' 1517 弄',
mounted() { number: 123456,
this.fetchCompanyData(); // data: '1500',
status: '拟建'
},
{
date: '2016-05-01',
name: '大众电脑生成制造基地',
address: ' 1519 弄',
number: 123456,
data: '2000',
status: '已建'
},
{
date: '2016-05-03',
name: '大众电脑生成制造基地',
address: ' 1516 弄',
number: 123456,
data: '2500',
status: '在建'
}
],
dialogVisible: false, //
}
}, },
methods: { methods: {
// openDialog() {
toggleEdit() { this.dialogVisible = true; //
if (this.editMode) {
this.saveData(); //
}
this.editMode = !this.editMode; //
},
//
async fetchCompanyData() {
try {
const response = await getqyrzById(this.$route.params.id);
this.currentCompany = response.data; //
} catch (error) {
console.error('获取企业入驻信息失败:', error);
this.$message.error('获取企业入驻信息失败');
}
},
//
async saveData() {
try {
const response = await updateqyrz(this.currentCompany);
if (response.success) {
this.$message.success('保存成功');
} else {
this.$message.error('保存失败');
}
} catch (error) {
console.error('保存失败:', error);
this.$message.error('保存失败');
}
} }
} }
}; }
</script> </script>
<style scoped> <style scoped>
@ -151,6 +191,11 @@ export default {
border-radius: 0.5rem 0.5rem 0.5rem 0.5rem; border-radius: 0.5rem 0.5rem 0.5rem 0.5rem;
} }
.content {
padding: 1rem;
display: flex;
}
.containertop { .containertop {
height: auto; height: auto;
display: flex; display: flex;
@ -185,13 +230,37 @@ export default {
text-transform: none; text-transform: none;
} }
.picturediv {
width: 18.31rem;
height: 25.31rem;
background-color: lightblue;
}
.descriptionsdiv { .descriptionsdiv {
width: 100%; width: 100%;
margin-left: 1rem; margin-left: 1rem;
height: auto; height: auto;
} }
.two-row-item {
height: 20rem;
}
.tagdiv { .tagdiv {
padding: 1rem 3em 1rem 1rem; padding: 1rem 3em 1rem 1rem;
} }
.block {
width: 100%;
display: flex;
justify-content: space-between;
margin-top: 1rem;
}
.spandiv {
padding: 0 0 1rem 0;
color: #0052D9;
font-size: .8rem;
cursor: pointer;
}
</style> </style>

@ -43,7 +43,6 @@ export default {
{ src: 'https://picsum.photos/300/200?random=1', isOnline: true }, { src: 'https://picsum.photos/300/200?random=1', isOnline: true },
{ src: 'https://picsum.photos/300/200?random=2', isOnline: false }, { src: 'https://picsum.photos/300/200?random=2', isOnline: false },
{ src: 'https://picsum.photos/300/200?random=3', isOnline: true }, { src: 'https://picsum.photos/300/200?random=3', isOnline: true },
//
] ]
}; };
}, },

@ -7,13 +7,6 @@
<span>项目备忘录</span> <span>项目备忘录</span>
</div> </div>
<div class="topright"> <div class="topright">
<el-button type="primary" size="medium" plain
style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;"
@click="handleEditMemo">
<img src="../../../assets/images/detailsicon/icon-bj@2x.png" alt="编辑"
style="width: 0.6rem; height: 0.6rem; margin-right: 4px;">
编辑
</el-button>
<el-button type="primary" size="medium" plain <el-button type="primary" size="medium" plain
style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;" @click="handleAdd"> style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;" @click="handleAdd">
<img src="../../../assets/images/detailsicon/icon-xz@2x.png" alt="新增" <img src="../../../assets/images/detailsicon/icon-xz@2x.png" alt="新增"
@ -38,11 +31,9 @@
<div v-for="memo in memos" :key="memo.id" class="descriptionditem"> <div v-for="memo in memos" :key="memo.id" class="descriptionditem">
<div class="itemone">{{ memo.createTime }}</div> <div class="itemone">{{ memo.createTime }}</div>
<div class="itemtwo">{{ memo.remark }}</div> <div class="itemtwo">{{ memo.remark }}</div>
<div class="itemthree">{{ memo.createBy }}</div> <div class="itemthree">记录人{{ memo.createBy }}</div>
<div class="itemfour"> <div class="iconguanbi" @click="handleDeleteMemo(memo.id)"> <img src="@/assets/images/icon-关闭-项目备忘录@2x.png" alt=""></div>
<el-button type="text" @click="handleEditMemo(memo)"></el-button> <div class="iconguanbi2" @click="handleEditMemo(memo)"> <img src="@/assets/images/detailsicon/icon-bj@2x.png" alt=""></div>
<el-button type="text" @click="handleDeleteMemo(memo.id)"></el-button>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -50,7 +41,14 @@
<!-- 新增/编辑弹窗表单 --> <!-- 新增/编辑弹窗表单 -->
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="500px"> <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="500px">
<el-form :model="newMemo" label-width="100px"> <el-form :model="newMemo" label-width="100px">
<el-form-item label="备忘录内容"> <el-form-item label="姓名">
<el-input v-model="newMemo.createBy" disabled></el-input>
</el-form-item>
<el-form-item label="备忘时间">
<el-date-picker type="date" placeholder="选择日期" v-model="newMemo.createTime" disabled
style="width: 21.75rem;"></el-date-picker>
</el-form-item>
<el-form-item label="关键/主题字">
<el-input type="textarea" v-model="newMemo.remark" :rows="4"></el-input> <el-input type="textarea" v-model="newMemo.remark" :rows="4"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -81,14 +79,16 @@ export default {
dialogTitle: '新增备忘录', dialogTitle: '新增备忘录',
newMemo: { newMemo: {
id: null, id: null,
remark: '', // remark remark: '',
xmId: this.xmId, // 使 xmId xmId: this.xmId,
createTime: '',
createBy: '',
}, },
memos: [], // memos: [],
}; };
}, },
created() { created() {
this.fetchMemos(); // this.fetchMemos();
}, },
methods: { methods: {
onSubmit() { onSubmit() {
@ -98,7 +98,7 @@ export default {
// //
fetchMemos() { fetchMemos() {
const params = { const params = {
xmId: this.xmId, // 使 xmId xmId: this.xmId,
}; };
getxmmmbPage(params) getxmmmbPage(params)
.then(response => { .then(response => {
@ -120,6 +120,8 @@ export default {
id: null, id: null,
remark: '', // remark remark: '', // remark
xmId: this.xmId, // 使 xmId xmId: this.xmId, // 使 xmId
createTime: new Date().toISOString().slice(0, 10), //
createBy: this.getCurrentUserName(), //
}; };
}, },
// //
@ -131,6 +133,8 @@ export default {
id: memo.id, id: memo.id,
remark: memo.remark, // remark remark: memo.remark, // remark
xmId: memo.xmId, xmId: memo.xmId,
createTime: memo.createTime, // 使
createBy: memo.createBy, // 使
}; };
} }
}, },
@ -193,6 +197,11 @@ export default {
}); });
} }
}, },
//
getCurrentUserName() {
// Vuex store
return this.$store.state.user.name; //
},
}, },
}; };
</script> </script>
@ -292,6 +301,7 @@ export default {
border: 0.06rem solid #E6E6E6; border: 0.06rem solid #E6E6E6;
padding: .5rem; padding: .5rem;
position: relative; position: relative;
gap: 1rem;
} }
.itemone { .itemone {
@ -316,6 +326,7 @@ export default {
line-height: 0.88rem; line-height: 0.88rem;
font-style: normal; font-style: normal;
text-transform: none; text-transform: none;
margin-top: .5rem;
} }
.itemthree { .itemthree {
@ -342,4 +353,30 @@ export default {
resize: none; resize: none;
/* 禁止调整大小 */ /* 禁止调整大小 */
} }
.iconguanbi {
position: absolute;
top: 0;
right: 0;
}
.iconguanbi2 {
position: absolute;
top: 1rem;
right: 1rem;
width: 2rem;
height: 2rem;
background-color: rgba(43,98,241,0.1);
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
}
.iconguanbi2 img{
width: 1.2rem;
height: 1.2rem;
}
.iconguanbi img{
width: 1.4rem;
height: 1.4rem;
}
</style> </style>

@ -38,11 +38,8 @@
<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="4" border>
<el-descriptions-item label="键"> <el-descriptions-item v-for="(item, index) in otherInfo" :key="index" :label="item.zdname">
{{ otherInfo.zdname }} {{ item.zdinfor }}
</el-descriptions-item>
<el-descriptions-item label="值">
{{ otherInfo.zdinfor }}
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
</div> </div>
@ -51,11 +48,11 @@
<!-- 表单弹窗 --> <!-- 表单弹窗 -->
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="30%"> <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="30%">
<el-form :model="form" label-width="80px"> <el-form :model="form" label-width="80px">
<el-form-item label=""> <el-form-item label="字段名称">
<el-input v-model="form.zdname" placeholder="请输入"></el-input> <el-input v-model="form.zdname" placeholder="请输入字段名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item label=""> <el-form-item label="字段内容">
<el-input v-model="form.zdinfor" placeholder="请输入"></el-input> <el-input v-model="form.zdinfor" placeholder="请输入字段内容 "></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
@ -78,10 +75,7 @@ export default {
}, },
data() { data() {
return { return {
otherInfo: { // otherInfo: [], //
zdname: '', //
zdinfor: '' //
},
dialogVisible: false, // dialogVisible: false, //
dialogTitle: '', // dialogTitle: '', //
form: { // form: { //
@ -100,7 +94,7 @@ export default {
getOtherInfoByxmid({ xmId: this.xmId }) // getOtherInfoByxmid({ xmId: this.xmId }) //
.then(response => { .then(response => {
if (response.code === 200 && response.data) { if (response.code === 200 && response.data) {
this.otherInfo = response.data; // this.otherInfo = response.data; // response.data
} else { } else {
console.error("获取其他信息失败:数据为空"); console.error("获取其他信息失败:数据为空");
} }

@ -23,6 +23,10 @@
<div class="close-button" @click="removeImage(index)"> <div class="close-button" @click="removeImage(index)">
<img src="../../../assets/images/detailsicon/icon-关闭@2x.png" alt=""> <img src="../../../assets/images/detailsicon/icon-关闭@2x.png" alt="">
</div> </div>
<div class="bottombox">
<div class="bottomtext"><span>新科大厦项目正在施工</span></div>
<div class="bottomtime"><span>2025-02-11</span></div>
</div>
</div> </div>
</div> </div>
<!-- 弹窗 --> <!-- 弹窗 -->
@ -31,7 +35,7 @@
<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.projectName" placeholder="请输入项目名称"></el-input> <el-input v-model="form.xmmc" placeholder="请输入项目名称"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
@ -41,10 +45,11 @@
</el-col> </el-col>
</el-row> </el-row>
<el-form-item label="网页地址"> <el-form-item label="网页地址">
<el-input v-model="form.webAddress" placeholder="请输入网页地址"></el-input> <el-input v-model="form.webUrl" placeholder="请输入网页地址"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="时间"> <el-form-item label="时间">
<el-date-picker v-model="form.time" type="datetime" placeholder="选择日期时间"></el-date-picker> <el-date-picker v-model="form.sj" type="datetime" placeholder="选择日期时间" style="width: 51rem;"
value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="图片上传"> <el-form-item label="图片上传">
<el-upload action="https://jsonplaceholder.typicode.com/posts/" list-type="picture-card" <el-upload action="https://jsonplaceholder.typicode.com/posts/" list-type="picture-card"
@ -56,13 +61,13 @@
</el-dialog> </el-dialog>
</el-form-item> </el-form-item>
<el-form-item label="说明"> <el-form-item label="说明">
<el-input v-model="form.description" type="textarea" :rows="4" placeholder="请输入说明"></el-input> <el-input v-model="form.content" type="textarea" :rows="4" placeholder="请输入说明"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="大事记"> <el-form-item label="大事记">
<el-input v-model="form.majorEvents" type="textarea" :rows="4" placeholder="请输入大事记"></el-input> <el-input v-model="form.bigEvent" type="textarea" :rows="4" placeholder="请输入大事记"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="新闻事件"> <el-form-item label="新闻事件">
<el-input v-model="form.newsEvents" type="textarea" :rows="4" placeholder="请输入新闻事件"></el-input> <el-input v-model="form.newsEvent" type="textarea" :rows="4" placeholder="请输入新闻事件"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="附件上传"> <el-form-item label="附件上传">
<el-upload action="https://jsonplaceholder.typicode.com/posts/" :on-preview="handleFilePreview" <el-upload action="https://jsonplaceholder.typicode.com/posts/" :on-preview="handleFilePreview"
@ -73,27 +78,51 @@
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button> <el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="handleAddElement"> </el-button> <el-button type="primary" @click="handleAddXmxl"> </el-button>
</span> </span>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { getXmxlPage } from '@/api/ManageApi/index.js'; import { addXmxl, getXmxlPage } from '@/api/ManageApi/index.js';
export default { export default {
data() { data() {
return { return {
images: [], images: [
{ src: 'https://picsum.photos/300/200?random=1', },
{ src: 'https://picsum.photos/300/200?random=2', },
{ src: 'https://picsum.photos/300/200?random=3', },
],
dialogVisible: false, dialogVisible: false,
previewDialogVisible: false, previewDialogVisible: false,
previewImageUrl: '', previewImageUrl: '',
fileList: [] fileList: [],
form: {
xmmc: '',
year: '',
webUrl: '',
sj: '',
content: '',
bigEvent: '',
newsEvent: '',
fj: '',
img: '',
createBy: '',
createId: 0,
createTime: '',
id: 0,
updateBy: '',
updateId: 0,
updateTime: '',
xmId: 0 // xmId
}
}; };
}, },
created() { created() {
const xmid = this.$route.query.xmid; const xmid = this.$route.query.xmid; // xmid
this.form.xmId = xmid; // xmId
this.fetchImages(xmid); this.fetchImages(xmid);
}, },
methods: { methods: {
@ -102,17 +131,22 @@ export default {
const response = await getXmxlPage({ xmid }); const response = await getXmxlPage({ xmid });
if (response.data && response.data.list) { if (response.data && response.data.list) {
this.images = response.data.list.map(item => ({ this.images = response.data.list.map(item => ({
src: item.fj src: item.fj
})); }));
} }
} catch (error) { } catch (error) {
this.$message.error('获取图片失败'); // this.$message.error('');
console.error(error); console.error(error);
} }
}, },
handleAdd() { handleAdd() {
this.dialogVisible = true; this.dialogVisible = true;
}, },
removeImage(index) {
if (confirm('确定要删除吗?')) {
this.images.splice(index, 1);
}
},
handleRemove(file, fileList) { handleRemove(file, fileList) {
this.fileList = fileList; this.fileList = fileList;
}, },
@ -143,25 +177,29 @@ export default {
this.handleAddXmxl(); this.handleAddXmxl();
}, },
async handleAddXmxl() { async handleAddXmxl() {
const formData = new FormData(); //
this.fileList.forEach((file, index) => { const requestData = {
formData.append(`fj[${index}]`, file.raw); bigEvent: this.form.bigEvent,
}); content: this.form.content,
createBy: this.form.createBy,
// createId: this.form.createId,
formData.append('createBy', ''); createTime: this.form.createTime,
formData.append('createId', 0); fj: this.form.fj,
formData.append('createTime', ''); id: this.form.id,
formData.append('id', 0); img: this.form.img,
formData.append('jkmc', ''); newsEvent: this.form.newsEvent,
formData.append('sj', ''); sj: this.form.sj,
formData.append('status', 0); updateBy: this.form.updateBy,
formData.append('updateBy', ''); updateId: this.form.updateId,
formData.append('updateId', 0); updateTime: this.form.updateTime,
formData.append('updateTime', ''); webUrl: this.form.webUrl,
xmId: this.form.xmId,
xmmc: this.form.xmmc,
year: this.form.year
};
try { try {
const response = await addXmxl(formData); const response = await addXmxl(requestData);
this.$message.success('新增成功'); this.$message.success('新增成功');
console.log(response); console.log(response);
this.fetchImages(); // this.fetchImages(); //
@ -170,9 +208,6 @@ export default {
console.error(error); console.error(error);
} }
}, },
removeImage(index) {
this.images.splice(index, 1);
}
} }
}; };
</script> </script>
@ -257,4 +292,36 @@ export default {
height: 100%; height: 100%;
object-fit: cover; object-fit: cover;
} }
.bottombox {
display: flex;
justify-content: space-between;
align-items: center;
position: absolute;
bottom: .5rem;
padding: .2rem;
width: 97%;
}
.bottomtext {
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
font-weight: 500;
font-size: 1.13rem;
color: #FFFFFF;
line-height: 1.56rem;
text-align: left;
font-style: normal;
text-transform: none;
}
.bottomtime {
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
font-weight: 400;
font-size: 0.75rem;
color: rgba(255, 255, 255, 0.8);
line-height: 1rem;
text-align: left;
font-style: normal;
text-transform: none;
}
</style> </style>

@ -2,7 +2,7 @@
<div class="container"> <div class="container">
<!-- 顶部信息 --> <!-- 顶部信息 -->
<div class="containertop"> <div class="containertop">
<h3>{{ name }}</h3> <h3>THI SIP高端装备工业港</h3>
</div> </div>
</div> </div>
</template> </template>

@ -7,20 +7,16 @@
<span>企业入驻信息</span> <span>企业入驻信息</span>
</div> </div>
<div class="topright"> <div class="topright">
<!-- 编辑按钮 -->
<el-button type="primary" size="medium" plain <el-button type="primary" size="medium" plain
style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;"> style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;" @click="toggleEdit">
<img src="../../../assets/images/detailsicon/icon-bj@2x.png" alt="编辑" <img src="../../../assets/images/detailsicon/icon-bj@2x.png" alt="编辑"
style="width: 0.6rem; height: 0.6rem; margin-right: 4px;"> style="width: 0.6rem; height: 0.6rem; margin-right: 4px;">
编辑 {{ editMode ? '保存' : '编辑' }}
</el-button>
<el-button type="primary" size="medium" plain
style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;">
<img src="../../../assets/images/detailsicon/icon-dc@2x.png" alt="编辑"
style="width: 0.6rem; height: 0.6rem; margin-right: 4px;">
导出
</el-button> </el-button>
</div> </div>
</div> </div>
<!-- 内容区上方的表格 --> <!-- 内容区上方的表格 -->
<div class="tagdiv"> <div class="tagdiv">
<div class="descriptionsdiv"> <div class="descriptionsdiv">
@ -29,147 +25,120 @@
<template slot="label"> <template slot="label">
入驻企业数 入驻企业数
</template> </template>
18100000000 <el-input v-model="currentCompany.rzqys" v-if="editMode"></el-input>
<span v-else>{{ currentCompany.rzqys }}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template slot="label"> <template slot="label">
入驻企业行业类型 入驻企业行业类型
</template> </template>
苏州市 <el-input v-model="currentCompany.rzqyhylx" v-if="editMode"></el-input>
<span v-else>{{ currentCompany.rzqyhylx }}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template slot="label"> <template slot="label">
人员数量 人员数量
</template> </template>
kooriookami <el-input v-model="currentCompany.rysl" v-if="editMode"></el-input>
<span v-else>{{ currentCompany.rysl }}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template slot="label"> <template slot="label">
入住率% 入住率%
</template> </template>
18100000000 <el-input v-model="currentCompany.rzl" v-if="editMode"></el-input>
<span v-else>{{ currentCompany.rzl }}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template slot="label"> <template slot="label">
已出租面积平方米 已出租面积平方米
</template> </template>
苏州市 <el-input v-model="currentCompany.yczmj" v-if="editMode"></el-input>
<span v-else>{{ currentCompany.yczmj }}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template slot="label"> <template slot="label">
空置出租面积平方米 空置出租面积平方米
</template> </template>
kooriookami <el-input v-model="currentCompany.kzczmj" v-if="editMode"></el-input>
<span v-else>{{ currentCompany.kzczmj }}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template slot="label"> <template slot="label">
工业厂房平均租金/平方米* 工业厂房平均租金/平方米*
</template> </template>
18100000000 <el-input v-model="currentCompany.gycfpjzj" v-if="editMode"></el-input>
<span v-else>{{ currentCompany.gycfpjzj }}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template slot="label"> <template slot="label">
工业厂房平均物业费(/平方米*) 工业厂房平均物业费(/平方米*)
</template> </template>
苏州市 <el-input v-model="currentCompany.gycfpjwyf" v-if="editMode"></el-input>
<span v-else>{{ currentCompany.gycfpjwyf }}</span>
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
</div> </div>
</div> </div>
<!-- 内容区 -->
<div class="content">
<div class="descriptionsdiv">
<span>新增企业入驻</span>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="address" label="序号" width="200">
</el-table-column>
<el-table-column prop="name" label="企业名称" width="300">
<template slot-scope="scope">
<span style="color: #2B62F1;">{{ scope.row.name }}</span>
</template>
</el-table-column>
<el-table-column prop="number" label="统一社会信用代码" width="300">
</el-table-column>
<el-table-column prop="name" label="所属行业" width="300">
</el-table-column>
<el-table-column prop="data" label='租金价格' width="250">
</el-table-column>
<el-table-column prop="data" label='操作' width="200">
</el-table-column>
</el-table>
<div class="block">
<div style="visibility: hidden;"></div>
<!-- @size-change="handleSizeChange"
@current-change="handleCurrentChange" -->
<el-pagination
:current-page="4" :page-sizes="[100, 200, 300, 400]" :page-size="100"
layout="total, prev, pager, next, jumper" :total="400">
</el-pagination>
</div>
</div>
</div>
</div> </div>
</template> </template>
<script> <script>
import { updateqyrz, getqyrzById } from '@/api/ManageApi/index';
export default { export default {
props: {
size: {
type: String,
default: '' //
}
},
data() { data() {
return { return {
tableData: [ editMode: false, //
{ currentCompany: {
date: '2016-05-02', rzqys: 0, //
name: '大众电脑生成制造基地', rzqyhylx: '', //
number: 123456, rysl: 0, //
address: ' 1518 弄', rzl: 0, //
data: '1000', yczmj: 0, //
status: '在建' kzczmj: 0, //
}, gycfpjzj: 0, //
{ gycfpjwyf: 0, //
date: '2016-05-04', },
name: '大众电脑生成制造基地', };
address: ' 1517 弄', },
number: 123456, mounted() {
data: '1500', this.fetchCompanyData(); //
status: '拟建'
},
{
date: '2016-05-01',
name: '大众电脑生成制造基地',
address: ' 1519 弄',
number: 123456,
data: '2000',
status: '已建'
},
{
date: '2016-05-03',
name: '大众电脑生成制造基地',
address: ' 1516 弄',
number: 123456,
data: '2500',
status: '在建'
}
],
}
}, },
methods: { methods: {
getStatusColor(status) { //
switch (status) { toggleEdit() {
case '在建': if (this.editMode) {
return 'color: #2DD29F;'; this.saveData(); //
case '拟建': }
return 'color: #F08445;'; this.editMode = !this.editMode; //
case '已建': },
return 'color: #2B62F1;'; //
async fetchCompanyData() {
try {
const response = await getqyrzById(this.$route.params.id);
this.currentCompany = response.data; //
} catch (error) {
console.error('获取企业入驻信息失败:', error);
this.$message.error('获取企业入驻信息失败');
}
},
//
async saveData() {
try {
const response = await updateqyrz(this.currentCompany);
if (response.success) {
this.$message.success('保存成功');
} else {
this.$message.error('保存失败');
}
} catch (error) {
console.error('保存失败:', error);
this.$message.error('保存失败');
} }
} }
} }
} };
</script> </script>
<style scoped> <style scoped>
@ -182,11 +151,6 @@ export default {
border-radius: 0.5rem 0.5rem 0.5rem 0.5rem; border-radius: 0.5rem 0.5rem 0.5rem 0.5rem;
} }
.content {
padding: 1rem;
display: flex;
}
.containertop { .containertop {
height: auto; height: auto;
display: flex; display: flex;
@ -221,29 +185,13 @@ export default {
text-transform: none; text-transform: none;
} }
.picturediv {
width: 18.31rem;
height: 25.31rem;
background-color: lightblue;
}
.descriptionsdiv { .descriptionsdiv {
width: 100%; width: 100%;
margin-left: 1rem; margin-left: 1rem;
height: auto; height: auto;
} }
.two-row-item {
height: 20rem;
}
.tagdiv { .tagdiv {
padding: 1rem 3em 1rem 1rem; padding: 1rem 3em 1rem 1rem;
} }
.block{ </style>
width: 100%;
display: flex;
justify-content: space-between;
margin-top: 1rem;
}
</style>

@ -0,0 +1,67 @@
<template>
<div class="mainbox">
<div class="item" v-for="(item, index) in items" :key="index"
:class="{ 'gray-background': index % 2 === 0, 'white-background': index % 2 !== 0 }" @click="getInfo(item)">
<div>{{ item.xmmc }}</div>
<div>{{ item.status }}</div>
<div style="color:#7F99DB ;">
<span v-if="item.status === '待填报'"></span>
<span v-else-if="item.status === ''">去查看</span>
</div>
</div>
</div>
</template>
<script>
export default {
name: "Daiban",
data() {
return {
items: [
{ id: 9, xmmc: '项目A', status: '待填报' },
{ id: 9, xmmc: '项目B', status: '审核通过' },
{ id: 9, xmmc: '项目C', status: '待填报' },
{ id: 9, xmmc: '项目D', status: '审核通过' },
{ id: 9, xmmc: '项目D', status: '审核通过' },
]
};
},
methods: {
getInfo(item) {
this.$store.commit("SET_CRUMBS", this.$route.meta.title + "详情");
const id = item.id;
this.$router.push({ path: `/manage-info/${id}` });
}
}
};
</script>
<style scoped>
.mainbox {
display: flex;
flex-direction: column;
padding: 0 1rem 0 0;
margin-top: 0.5rem;
height: 22rem;
overflow: auto;
}
.item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 2rem 1rem;
cursor: pointer;
/* 添加鼠标指针样式 */
}
.gray-background {
background-color: #f5f5f5;
/* 灰色背景 */
}
.white-background {
background-color: #ffffff;
/* 白色背景 */
}
</style>

@ -0,0 +1,109 @@
<template>
<div class="form-container">
<h2>公司项目信息填报</h2>
<el-form :model="form" label-width="120px" label-position="left">
<!-- 公司名称 -->
<el-form-item label="公司名称">
<el-input v-model="form.companyName" placeholder="XXXXXX公司" disabled />
</el-form-item>
<!-- 项目名称 -->
<el-form-item label="项目名称" required>
<el-input v-model="form.projectName" placeholder="请输入项目名称" />
</el-form-item>
<!-- 填报类型 -->
<el-form-item label="填报类型">
<el-table :data="form.tableData" border style="width: 100%">
<el-table-column prop="label" label="项目" width="200" />
<el-table-column prop="value" label="填写内容">
<template slot-scope="scope">
<el-input v-model="scope.row.value" :placeholder="`请输入${scope.row.label}`" />
</template>
</el-table-column>
</el-table>
</el-form-item>
<!-- 操作按钮 -->
<el-form-item>
<el-button type="primary" @click="submitForm"></el-button>
<el-button @click="resetForm"></el-button>
<el-button @click="cancelForm"></el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
export default {
data() {
return {
form: {
companyName: "XXXXXX公司", //
projectName: "", //
tableData: [
{ label: "危险品等级", value: "" },
{ label: "生产火灾危险等级", value: "" },
{ label: "设备载重", value: "" },
{ label: "货梯要求", value: "" },
{ label: "员工密度", value: "" },
{ label: "加工精度", value: "" },
{ label: "减振措施", value: "" },
{ label: "环境保护", value: "" },
{ label: "生产类型", value: "" },
{ label: "层高要求", value: "" },
],
},
};
},
methods: {
//
submitForm() {
console.log("提交表单数据:", this.form);
this.$message.success("表单提交成功!");
},
//
resetForm() {
this.form.projectName = "";
this.form.tableData.forEach((item) => {
item.value = "";
});
this.$message.info("表单已重置");
},
//
cancelForm() {
this.$confirm("确定要取消当前操作吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.resetForm();
this.$message.info("表单已取消");
})
.catch(() => {});
},
},
};
</script>
<style scoped>
.form-container {
max-width: 800px;
margin: 20px auto;
padding: 20px;
background-color: #fff;
border-radius: 8px;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
}
h2 {
text-align: center;
margin-bottom: 20px;
color: #303133;
}
.el-form-item {
margin-bottom: 20px;
}
</style>

@ -8,7 +8,9 @@
返回 返回
</el-button> </el-button>
</div> </div>
<div class="containerbody"> <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"
@ -40,9 +42,9 @@
<Months></Months> <Months></Months>
</div> </div>
<!-- 企业入驻信息 --> <!-- 企业入驻信息 -->
<!-- <div id="companyenter"> <div id="companyenter">
<Companyenter></Companyenter> <Companyenter></Companyenter>
</div> --> </div>
<!-- 项目画像 --> <!-- 项目画像 -->
<div id="projectpicture"> <div id="projectpicture">
<Projectpicture></Projectpicture> <Projectpicture></Projectpicture>
@ -51,10 +53,6 @@
<div id="projectpicturetwo"> <div id="projectpicturetwo">
<Projectpicturetwo :id="projectId"></Projectpicturetwo> <Projectpicturetwo :id="projectId"></Projectpicturetwo>
</div> </div>
<!-- 项目图例 -->
<div id="projectpicturetwo">
<Projectpicturetwo22 :xmId="projectId"></Projectpicturetwo22>
</div>
<!-- 项目巡礼 --> <!-- 项目巡礼 -->
<div id="projectgift"> <div id="projectgift">
<Projectgift></Projectgift> <Projectgift></Projectgift>
@ -72,7 +70,9 @@
<Others :xmId="projectId"></Others> <Others :xmId="projectId"></Others>
</div> </div>
<div class="footer"> <div class="footer">
<el-button type="primary">审核通过</el-button> <el-button type="primary" v-if="checkRole(['admin','common']) && !isSubmitted"></el-button>
<el-button type="primary" v-if="checkRole(['admin','company']) && !isSubmitted" @click="submitReview"></el-button>
</div> </div>
</div> </div>
<!-- 返回顶部按钮 --> <!-- 返回顶部按钮 -->
@ -84,8 +84,7 @@
import Title from '../components/ProjectDetails/Title.vue'; import Title from '../components/ProjectDetails/Title.vue';
import Basic from '../components/ProjectDetails/Basic.vue'; import Basic from '../components/ProjectDetails/Basic.vue';
import Buildings from '../components/ProjectDetails/Buildings.vue'; import Buildings from '../components/ProjectDetails/Buildings.vue';
import Projectpicturetwo22 from '../components/ProjectDetails/Projectpicturetwo22.vue'; import Companyenter from '../components/ProjectDetails/companyenter.vue';
// import Companyenter from '../components/ProjectDetails/companyenter.vue';
import Liver from '../components/ProjectDetails/Liver.vue'; import Liver from '../components/ProjectDetails/Liver.vue';
import Memo from '../components/ProjectDetails/Memo.vue'; import Memo from '../components/ProjectDetails/Memo.vue';
import Models from '../components/ProjectDetails/Models.vue'; import Models from '../components/ProjectDetails/Models.vue';
@ -95,14 +94,14 @@ import Projectgift from '../components/ProjectDetails/Projectgift.vue';
import Projectpicture from '../components/ProjectDetails/Projectpicture.vue'; import Projectpicture from '../components/ProjectDetails/Projectpicture.vue';
import Projectpicturetwo from '../components/ProjectDetails/Projectpicturetwo.vue'; import Projectpicturetwo from '../components/ProjectDetails/Projectpicturetwo.vue';
import Others from '../components/ProjectDetails/Others.vue'; import Others from '../components/ProjectDetails/Others.vue';
import { checkPermi, checkRole } from "@/utils/permission"; //
export default { export default {
components: { components: {
Title, Title,
Basic, Basic,
Buildings, Buildings,
Projectpicturetwo22, Companyenter,
// Companyenter,
Liver, Liver,
Memo, Memo,
Models, Models,
@ -130,7 +129,9 @@ export default {
{ id: 'memo', label: '项目备忘录' }, { id: 'memo', label: '项目备忘录' },
{ id: 'others', label: '其他信息' } { id: 'others', label: '其他信息' }
], ],
projectId: null projectId: null,
isContainerVisible: true, // containerbody
isSubmitted: false //
}; };
}, },
created() { created() {
@ -139,6 +140,8 @@ export default {
this.loadData(); this.loadData();
}, },
methods: { methods: {
checkPermi,
checkRole,
loadData() { loadData() {
// projectId // projectId
console.log('Loading data for project ID:', this.projectId); console.log('Loading data for project ID:', this.projectId);
@ -163,6 +166,31 @@ export default {
goBack() { goBack() {
this.$router.go(-1); // this.$router.go(-1); //
}, },
submitReview() {
this.$confirm('确定要提交审核吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
//
console.log('提交审核');
// containerbody
this.isContainerVisible = false;
//
this.isSubmitted = true;
// API
// submitReviewApi(this.projectId).then(response => {
// console.log('', response);
// }).catch(error => {
// console.error('', error);
// });
}).catch(() => {
this.$message({
type: 'info',
message: '已取消提交'
});
});
}
} }
}; };
</script> </script>

@ -47,10 +47,26 @@
<div class="tablehead"> <div class="tablehead">
<div class="headtitle"><span>项目清单</span></div> <div class="headtitle"><span>项目清单</span></div>
<div class="headbtn"> <div class="headbtn">
<el-button type="primary" icon="el-icon-download" @click="downloadTemplate"></el-button> <el-button type="primary" icon="el-icon-download" @click="importTemplate"></el-button>
<el-button type="primary" size="mini" @click="handleImport"></el-button> <el-button type="primary" size="mini" @click="handleImport"></el-button> <!-- 导入按钮 -->
</div> </div>
</div> </div>
<!-- 导入弹窗 -->
<el-dialog title="导入" :visible.sync="upload.open" width="400px" append-to-body>
<el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
:action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
:on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<span>仅允许导入xlsxlsx格式文件</span>
</div>
</el-upload>
<span slot="footer" class="dialog-footer">
<el-button @click="upload.open = false">取消</el-button>
<el-button type="primary" @click="submitFileForm" :loading="upload.isUploading">确定</el-button>
</span>
</el-dialog>
<!-- 导出行 --> <!-- 导出行 -->
<div class="tablebtntwo"> <div class="tablebtntwo">
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
@ -77,7 +93,7 @@
<el-table-column label="项目名称" align="center" prop="name" width="200" /> <el-table-column label="项目名称" align="center" prop="name" width="200" />
<el-table-column label="现状分类" align="center" prop="xzfl" /> <el-table-column label="现状分类" align="center" prop="xzfl" />
<el-table-column label="项目法人单位" align="center" prop="xmfrdwxz" width="200" /> <el-table-column label="项目法人单位" align="center" prop="xmfrdwxz" width="200" />
<el-table-column label="项目建设起止时间" align="center" width="200"> <el-table-column label="项目建设起止时间" align="center" width="200">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.begainTime }} {{ scope.row.endTime }} {{ scope.row.begainTime }} {{ scope.row.endTime }}
</template> </template>
@ -103,15 +119,16 @@
</template> </template>
<script> <script>
import { getBasicInformationPage } from '@/api/ManageApi/index'; import { getBasicInformationPage } from "@/api/ManageApi/index";
import { getToken } from "@/utils/auth";
export default { export default {
name: "Post", name: "Post",
dicts: ['xzfl'], dicts: ["xzfl"],
data() { data() {
return { return {
// //
loading: false, loading: true,
// //
ids: [], ids: [],
// //
@ -130,10 +147,6 @@ export default {
'待填报': '#FFBF6B', '待填报': '#FFBF6B',
'待审核': '#7693D8' '待审核': '#7693D8'
}, },
//
title: "",
//
open: false,
// //
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
@ -144,24 +157,13 @@ export default {
dateRange: [], dateRange: [],
status: undefined status: undefined
}, },
// //
form: {},
//
rules: {
},
//
upload: { upload: {
// open: false, //
open: false, isUploading: false, //
// updateSupport: 0, //
title: "导入", headers: { Authorization: "Bearer " + getToken() }, //
// url: process.env.VUE_APP_BASE_API + "/gysl/basicInformation/import", //
isUploading: false,
//
updateSupport: 0,
//
url: location.origin + "/api/system/post/importData"
}, },
}; };
}, },
@ -169,110 +171,79 @@ export default {
this.getList(); this.getList();
}, },
methods: { methods: {
// /** 查询项目列表 */
getList() {
this.loading = true;
getBasicInformationPage(this.queryParams).then((response) => {
this.postList = response.data.records;
this.total = response.data.total;
this.loading = false;
});
},
/** 导入按钮操作 */
handleImport() { handleImport() {
this.upload.open = true; this.upload.open = true;
}, },
/** 下载模板操作 */
importTemplate() {
this.download(
"/gysl/basicInformation/importTemplate",
{},
`项目导入模板${new Date().getTime()}.xlsx`
);
},
// //
handleFileUploadProgress(event, file, fileList) { handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true; this.upload.isUploading = true;
}, },
// //
handleFileSuccess(response, file, fileList) { handleFileSuccess(response, file, fileList) {
this.upload.open = false; this.upload.open = false;
this.upload.isUploading = false; this.upload.isUploading = false;
this.$refs.upload.clearFiles(); this.$refs.upload.clearFiles();
this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true }); this.$alert(
"<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
response.msg +
"</div>",
"导入结果",
{ dangerouslyUseHTMLString: true }
);
this.getList(); this.getList();
}, },
// //
submitFileForm() { submitFileForm() {
this.$refs.upload.submit(); this.$refs.upload.submit();
}, },
/** 查询项目列表 */
getList() {
this.loading = true;
const params = {
...this.queryParams,
current: this.queryParams.pageNum,
size: this.queryParams.pageSize,
startTime: this.queryParams.dateRange ? this.queryParams.dateRange[0] : undefined,
endTime: this.queryParams.dateRange ? this.queryParams.dateRange[1] : undefined,
name: this.queryParams.postName,
xmfrdwxz: this.queryParams.xmfrdwxz,
xzfl: this.queryParams.postCode
};
getBasicInformationPage(params).then(response => {
const defaultStatusColors = {
'审核通过': '#6EDABE',
'待填报': '#FFBF6B',
'待审核': '#7693D8'
};
const defaultTotalLandAreas = [5000, 6000, 7000]; //
this.postList = response.data.records.map((item, index) => ({ /** 导出按钮操作 */
...item, handleExport() {
status: item.status || Object.keys(defaultStatusColors)[index % Object.keys(defaultStatusColors).length], this.download(
totalLandArea: item.totalLandArea || defaultTotalLandAreas[index % defaultTotalLandAreas.length] "/gysl/basicInformation/exportInfo",
})); {
this.total = response.data.total; ...this.queryParams,
this.loading = false; },
}).catch(error => { `项目列表${new Date().getTime()}.xlsx`
console.error('获取项目列表失败', error); );
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: undefined,
postCode: undefined,
postName: undefined,
postSort: undefined,
status: "0",
remark: undefined
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加项目";
}, },
/** 修改按钮操作 */
handleUpdate(row) { /** 删除按钮操作 */
this.reset(); handleDelete(row) {
const id = row.id || this.ids[0]; const ids = row.id || this.ids;
const foundItem = this.postList.find(item => item.id === id); this.$modal
if (foundItem) { .confirm('是否确认删除项目id为"' + ids + '"的数据项?')
this.form = { ...foundItem }; .then(() => {
this.open = true; return delBasicInformation(ids);
this.title = "修改项目"; })
} else { .then(() => {
console.error('项目未找到'); this.getList();
} this.$modal.msgSuccess("删除成功");
})
.catch(() => { });
}, },
/** 详情按钮操作 */ /** 详情按钮操作 */
getInfo(row) { getInfo(row) {
@ -280,99 +251,18 @@ export default {
const id = row.id || this.ids[0]; const id = row.id || this.ids[0];
this.$router.push({ path: `/manage-info/${id}` }); this.$router.push({ path: `/manage-info/${id}` });
}, },
/** 提交按钮 */ /** 重置按钮操作 */
submitForm() { resetQuery() {
this.$refs["form"].validate(valid => { this.resetForm("queryForm");
if (valid) { this.handleQuery();
if (this.form.id !== undefined) {
const index = this.postList.findIndex(item => item.id === this.form.id);
if (index !== -1) {
this.postList.splice(index, 1, { ...this.form });
this.$modal.msgSuccess("修改成功");
} else {
console.error('项目未找到');
}
} else {
this.form.id = this.postList.length + 1;
this.postList.push({ ...this.form });
this.$modal.msgSuccess("新增成功");
}
this.open = false;
this.getList();
}
});
}, },
/** 删除按钮操作 */
handleDelete(row) { /** 搜索按钮操作 */
const ids = row.id || this.ids.join(','); handleQuery() {
this.postList = this.postList.filter(item => !ids.split(',').includes(String(item.id))); this.queryParams.pageNum = 1;
this.$modal.msgSuccess("删除成功");
this.getList(); this.getList();
}, },
/** 导出按钮操作 */ },
handleExport() {
this.download('system/post/export', {
...this.queryParams
}, `post_${new Date().getTime()}.xlsx`);
},
handleExportCommand(command) {
let fileName = '';
switch (command) {
case 'single-material':
fileName = 'single-material';
break;
case 'report':
fileName = 'report';
break;
case 'project-manual':
fileName = 'project-manual';
break;
default:
this.$message.error('未知的导出类型');
return;
}
this.download(`system/post/export/${fileName}`, {
...this.queryParams
}, `${fileName}_${new Date().getTime()}.xlsx`).then(() => {
this.$message.success('下载成功');
}).catch(() => {
this.$message.error('下载失败');
});
},
download(url, params, fileName) {
return new Promise((resolve, reject) => {
const request = new XMLHttpRequest();
request.open('GET', `${process.env.VUE_APP_BASE_API}/${url}`, true);
request.responseType = 'blob';
request.onload = () => {
if (request.status === 200) {
const blob = new Blob([request.response], { type: 'application/vnd.ms-excel' });
const link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = fileName;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
resolve();
} else {
reject(new Error('下载失败'));
}
};
request.onerror = () => {
reject(new Error('下载失败'));
};
request.send();
});
},
//
downloadTemplate() {
this.download('system/post/template', {}, `template_${new Date().getTime()}.xlsx`).then(() => {
this.$message.success('模板下载成功');
}).catch(() => {
this.$message.error('模板下载失败');
});
}
}
}; };
</script> </script>

@ -1,106 +1,146 @@
<template> <template>
<div> <div>
<div class="headerbox"> <div v-if="checkRole(['admin', 'common'])">
<el-form size="small" :inline="true" label-width="7rem"> <div class="headerbox">
<el-row style="margin-top: 1rem;"> <el-form size="small" :inline="true" label-width="7rem">
<el-col :span="6"> <el-row style="margin-top: 1rem;">
<el-form-item label="关键要素" style="width: 100%;"> <el-col :span="6">
<el-input placeholder="请输入关键要素" clearable style="width: 14rem;" <el-form-item label="关键要素" style="width: 100%;">
v-model="searchForm.keyElement" /> <el-input placeholder="请输入关键要素" clearable style="width: 14rem;"
</el-form-item> v-model="searchForm.keyElement" />
</el-col> </el-form-item>
<el-col :span="6"> </el-col>
<el-form-item label="具体指标" style="width: 100%;"> <el-col :span="6">
<el-input placeholder="请输入具体指标" clearable style="width: 14rem;" <el-form-item label="具体指标" style="width: 100%;">
v-model="searchForm.specificIndicator" /> <el-input placeholder="请输入具体指标" clearable style="width: 14rem;"
</el-form-item> v-model="searchForm.specificIndicator" />
</el-col> </el-form-item>
<el-col :span="8"> </el-col>
<el-form-item style="margin-left: 2.5rem;"> <el-col :span="8">
<el-button type="primary" icon="el-icon-search" size="mini" <el-form-item style="margin-left: 2.5rem;">
@click="fetchElements">查询</el-button> <el-button type="primary" icon="el-icon-search" size="mini"
<el-button icon="el-icon-refresh" size="mini" @click="resetSearchForm"></el-button> @click="fetchElements">查询</el-button>
</el-form-item> <el-button icon="el-icon-refresh" size="mini" @click="resetSearchForm"></el-button>
</el-col> </el-form-item>
</el-row> </el-col>
</el-form> </el-row>
</div> </el-form>
</div>
<div class="tablebox" style="margin: .5rem;"> <div class="tablebox" style="margin: .5rem;">
<el-button type="primary" icon="el-icon-plus" @click="dialogVisible = true; resetForm()">新增要素</el-button> <el-button type="primary" icon="el-icon-plus"
@click="dialogVisible = true; resetForm()">新增要素</el-button>
<!-- 渲染所有要素 --> <!-- 渲染所有要素 -->
<div v-for="(element, index) in tableData" :key="index" class="tablebox"> <div v-for="(element, index) in tableData" :key="index" class="tablebox">
<div class="boxheader"> <div class="boxheader">
<div class="headerone"> <div class="headerone">
<!-- 关键要素/重要要素 --> <!-- 关键要素/重要要素 -->
<div>{{ element.type === 1 ? '关键要素' : '重要要素' }}</div> <div>{{ element.type === 1 ? '关键要素' : '重要要素' }}</div>
<!-- 关键要素/重要要素的名称 --> <!-- 关键要素/重要要素的名称 -->
<div>{{ element.name }}</div> <div>{{ element.name }}</div>
</div> </div>
<!-- 对要素的类型和名称进行编辑 --> <!-- 对要素的类型和名称进行编辑 -->
<div class="headertwo"> <div class="headertwo">
<el-button type="primary" icon="el-icon-edit" size="mini" <el-button type="primary" icon="el-icon-edit" size="mini"
@click="handleUpdate(element)">编辑要素</el-button> @click="handleUpdate(element)">编辑要素</el-button>
<el-button type="primary" icon="el-icon-edit" <el-button type="primary" icon="el-icon-edit"
@click="showAddIndicatorDialog(element)">新增指标</el-button> @click="showAddIndicatorDialog(element)">新增指标</el-button>
</div>
</div> </div>
<!-- 每个要素对应的指标和详细要求的展示这里编辑和删除只是删除这个指标不删除要素 -->
<el-table :data="element.indicators" style="width: 100%">
<el-table-column prop="id" label="序号" width="180"></el-table-column>
<el-table-column prop="jtzb" label="具体指标" width="180"></el-table-column>
<el-table-column prop="xxyq" label="详细要求" width="950"></el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text"
@click="handleUpdateIndicator(scope.row)">编辑指标</el-button>
<el-button size="mini" type="text" @click="handleDelete(scope.row)"
style="color: #F25353;">删除指标</el-button>
</template>
</el-table-column>
</el-table>
</div> </div>
<!-- 每个要素对应的指标和详细要求的展示这里编辑和删除只是删除这个指标不删除要素 -->
<el-table :data="element.indicators" style="width: 100%">
<el-table-column prop="id" label="序号" width="180"></el-table-column>
<el-table-column prop="jtzb" label="具体指标" width="180"></el-table-column>
<el-table-column prop="xxyq" label="详细要求" width="950"></el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" @click="handleUpdateIndicator(scope.row)"></el-button>
<el-button size="mini" type="text" @click="handleDelete(scope.row)" style="color: #F25353;">删除指标</el-button>
</template>
</el-table-column>
</el-table>
</div> </div>
<!-- 这是新增要素/编辑要素弹窗 -->
<el-dialog :title="form.id ? '编辑要素' : '新增要素'" :visible.sync="dialogVisible" width="30%">
<el-form :model="form" label-width="80px">
<el-form-item label="类型">
<el-select v-model="form.type" placeholder="请选择类型">
<el-option v-for="dict in dict.type.yslx" :key="dict.value" :label="dict.label"
:value="parseInt(dict.value)"></el-option>
</el-select>
</el-form-item>
<el-form-item label="名称">
<el-input v-model="form.name" placeholder="请输入名称"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="handleAddElement"> </el-button>
</span>
</el-dialog>
<!-- 这是新增指标/编辑指标弹窗 -->
<el-dialog :title="indicatorForm.id ? '编辑指标' : '新增指标'" :visible.sync="indicatorDialogVisible" width="30%">
<el-form :model="indicatorForm" label-width="80px">
<el-form-item label="具体指标">
<el-input v-model="indicatorForm.jtzb" placeholder="请输入具体指标"></el-input>
</el-form-item>
<el-form-item label="详细内容">
<el-input v-model="indicatorForm.xxyq" placeholder="请输入详细要求"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="indicatorDialogVisible = false"> </el-button>
<el-button type="primary" @click="handleAddIndicator"> </el-button>
</span>
</el-dialog>
</div> </div>
<div v-if="checkRole(['admin', 'company'])">
<div class="form-container">
<h2>模型信息填报</h2>
<el-form :model="form" label-width="120px" label-position="left">
<!-- 公司名称 -->
<el-form-item label="公司名称">
<el-input v-model="form.companyName" placeholder="XXXXXX公司" disabled />
</el-form-item>
<!-- 项目名称 -->
<el-form-item label="项目名称" required>
<el-input v-model="form.projectName" placeholder="请输入项目名称" />
</el-form-item>
<!-- 这是新增要素/编辑要素弹窗 --> <!-- 填报类型 -->
<el-dialog :title="form.id ? '编辑要素' : '新增要素'" :visible.sync="dialogVisible" width="30%"> <el-form-item label="填报类型">
<el-form :model="form" label-width="80px"> <el-table :data="form.tableData" border style="width: 100%">
<el-form-item label="类型"> <el-table-column prop="label" label="项目" width="200" />
<el-select v-model="form.type" placeholder="请选择类型"> <el-table-column prop="value" label="填写内容">
<el-option v-for="dict in dict.type.yslx" :key="dict.value" :label="dict.label" <template slot-scope="scope">
:value="parseInt(dict.value)"></el-option> <el-input v-model="scope.row.value" :placeholder="`请输入${scope.row.label}`" />
</el-select> </template>
</el-form-item> </el-table-column>
<el-form-item label="名称"> </el-table>
<el-input v-model="form.name" placeholder="请输入名称"></el-input> </el-form-item>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="handleAddElement"> </el-button>
</span>
</el-dialog>
<!-- 这是新增指标/编辑指标弹窗 --> <!-- 操作按钮 -->
<el-dialog :title="indicatorForm.id ? '编辑指标' : '新增指标'" :visible.sync="indicatorDialogVisible" width="30%"> <el-form-item>
<el-form :model="indicatorForm" label-width="80px"> <el-button type="primary" @click="submitForm"></el-button>
<el-form-item label="具体指标"> <el-button @click="resetForm"></el-button>
<el-input v-model="indicatorForm.jtzb" placeholder="请输入具体指标"></el-input> <el-button @click="cancelForm"></el-button>
</el-form-item> </el-form-item>
<el-form-item label="详细内容"> </el-form>
<el-input v-model="indicatorForm.xxyq" placeholder="请输入详细要求"></el-input> </div>
</el-form-item> </div>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="indicatorDialogVisible = false"> </el-button>
<el-button type="primary" @click="handleAddIndicator"> </el-button>
</span>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { addElement, getAllElements } from '@/api/ManageApi/index'; import { addElement, getAllElements } from '@/api/ManageApi/index';
import { checkPermi, checkRole } from "@/utils/permission"; //
export default { export default {
dicts: ['yslx'], dicts: ['yslx'],
data() { data() {
@ -114,18 +154,34 @@ export default {
indicatorDialogVisible: false, // / indicatorDialogVisible: false, // /
form: { form: {
id: null, id: null,
companyName: "XXXXXX公司", //
projectName: "", //
type: '', type: '',
name: '' name: '',
tableData: [
{ label: "危险品等级", value: "" },
{ label: "生产火灾危险等级", value: "" },
{ label: "设备载重", value: "" },
{ label: "货梯要求", value: "" },
{ label: "员工密度", value: "" },
{ label: "加工精度", value: "" },
{ label: "减振措施", value: "" },
{ label: "环境保护", value: "" },
{ label: "生产类型", value: "" },
{ label: "层高要求", value: "" },
],
}, },
indicatorForm: { indicatorForm: {
id: null, id: null,
jtzb: '', jtzb: '',
xxyq: '', xxyq: '',
elementId: null elementId: null
} }
}; };
}, },
methods: { methods: {
checkPermi,
checkRole,
// //
fetchElements() { fetchElements() {
getAllElements(this.searchForm).then(response => { getAllElements(this.searchForm).then(response => {
@ -230,4 +286,12 @@ export default {
.headertwo { .headertwo {
display: flex; display: flex;
} }
.form-container {
max-width: 1500px;
margin: 20px auto;
padding: 20px;
background-color: #fff;
border-radius: 8px;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
}
</style> </style>

@ -1,3 +0,0 @@
<template>
<div>123123</div>
</template>

@ -53,7 +53,10 @@
</div> </div>
<div class="grid-item item-6"> <div class="grid-item item-6">
<!-- 地图模块 --> <!-- 地图模块 -->
<div> <div class="mapareaone">
<div style="position: absolute; top: 2rem;left: 5rem; z-index: 999;">
<el-input placeholder="请输入项目名称" />
</div>
<MapArea /> <MapArea />
</div> </div>
</div> </div>
@ -183,4 +186,7 @@ export default {
grid-column: span 3; grid-column: span 3;
/* 占三列 */ /* 占三列 */
} }
.mapareaone{
position: relative;
}
</style> </style>

@ -1,159 +1,265 @@
<template> <template>
<div class="grid-container">
<div class="grid-container"> <div class="grid-item item-1">
<div class="grid-item item-1"> <!-- 整体项目情况 -->
<!-- 整体项目情况 --> <div class="allarea">
<div class="allarea"> <AllArea />
<AllArea />
</div>
</div> </div>
<div class="grid-item item-2"> </div>
<!-- 消息通知 --> <div class="grid-item item-2">
<div class="itemhead"> <!-- 消息通知 -->
<span>消息通知</span> <div class="itemhead">
</div> <span>消息通知</span>
<div class="mainarea">
<Message />
</div>
</div> </div>
<div class="grid-item item-1"> <div class="mainarea">
<!-- 整体项目情况 --> <Message />
<div class="allarea">
</div>
</div> </div>
<div class="grid-item item-2"> </div>
<!-- 消息通知 --> <div class="grid-item item-1">
<div class="itemhead"> <!-- 整体项目情况 -->
<span>我的待办</span> <div class="allarea">
</div> </div>
<div class="mainarea"> </div>
<div class="grid-item item-2 bottombox">
<!-- 消息通知 -->
<div class="itemhead">
<span>关联项目</span>
</div>
<div class="mainarea" style="height: 22rem;overflow: auto;">
<div class="mainareaitem" v-for="(item, index) in items" :key="index">
<div class="itemleft">
<div class="xmmctitle">{{ item.xmmc }}</div>
<div class="lefttwo">
<div>现状分类{{ item.xcfl }}</div>
<div>总投资额{{ item.ztzje }}</div>
<div>填报时间{{ item.tbrq }}</div>
</div>
</div>
<div class="itemright" :class="getStatusClass(item.status)">
<div class="rightword">{{ item.status }}</div>
</div>
</div> </div>
</div> </div>
</div> </div>
</template> <div class="grid-item item-2">
<!-- 消息通知 -->
<script> <div class="itemhead">
import AllArea from '@/views/components/analysis/all.vue' <span>我的待办</span>
import FunctionArea from '@/views/components/analysis/function.vue' </div>
import InvestArea from '@/views/components/analysis/invest.vue' <div class="mainarea">
import Message from '@/views/components/analysis/message.vue' <daiban />
import ProjectList from '@/views/components/analysis/projectList.vue' </div>
import MapArea from '@/views/components/analysis/map.vue' </div>
</div>
export default { </template>
name: "Pc2FbEcharts",
components: { <script>
AllArea, import AllArea from '@/views/components/analysis/all.vue'
FunctionArea, import FunctionArea from '@/views/components/analysis/function.vue'
InvestArea, import InvestArea from '@/views/components/analysis/invest.vue'
Message, import Message from '@/views/components/analysis/message.vue'
ProjectList, import daiban from '@/views/components/analysis/daiban.vue'
MapArea,
}, export default {
data() { name: "Pc2FbEcharts",
return {}; components: {
}, AllArea,
mounted() { FunctionArea,
InvestArea,
}, Message,
methods: { daiban
},
}, data() {
}; return {
</script> items: [
{ xmmc: '项目A', xcfl: '分类1', ztzje: '100万', tbrq: '2023-10-01', status: '待填报' },
<style scoped> { xmmc: '项目B', xcfl: '分类2', ztzje: '200万', tbrq: '2023-10-02', status: '待审核' },
.grid-container { { xmmc: '项目C', xcfl: '分类3', ztzje: '300万', tbrq: '2023-10-03', status: '审核通过' },
display: grid; { xmmc: '项目D', xcfl: '分类3', ztzje: '300万', tbrq: '2023-10-03', status: '待填报' },
grid-template-columns: repeat(3, 1fr); ]
/* 三列 */ };
grid-template-rows: auto auto auto; },
/* 三行 */ mounted() {
gap: 1rem;
/* 模块之间的间隔 */ },
padding: 1rem; methods: {
/* 容器内边距 */ getStatusClass(status) {
} switch (status) {
case '待填报':
.grid-item { return 'status-red';
background-color: #FFFFFF; case '待审核':
border-radius: 0.5rem 0.5rem 0.5rem 0.5rem; return 'status-yellow';
} case '审核通过':
return 'status-green';
.itemhead { default:
width: 100%; return '';
border-left: 0.25rem solid #2B62F1; }
margin: 0.94rem 0; }
height: 1.25rem; },
display: flex; };
align-items: center; </script>
}
.relaitem{ <style scoped>
position: relative; .grid-container {
} display: grid;
.itemsall{ grid-template-columns: repeat(3, 1fr);
position: absolute; /* 三列 */
display: flex; grid-template-rows: auto auto auto;
flex-direction: column; /* 三行 */
justify-content: center; gap: 1rem;
align-items: center; /* 模块之间的间隔 */
top: 5.5rem; padding: 1rem;
left: 7.2rem; /* 容器内边距 */
} }
.itemsall span:nth-child(1){
font-family: DIN, DIN; .grid-item {
font-weight: 500; background-color: #FFFFFF;
font-size: 1.75rem; border-radius: 0.5rem 0.5rem 0.5rem 0.5rem;
color: #292C33; }
line-height: 2.44rem;
text-align: left; .itemhead {
font-style: normal; width: 100%;
text-transform: none; border-left: 0.25rem solid #2B62F1;
} margin: 0.94rem 0;
.itemsall span:nth-child(2){ height: 1.25rem;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi; display: flex;
font-weight: 400; align-items: center;
font-size: 0.88rem; }
color: #9E9E9E;
line-height: 1.25rem; .relaitem {
text-align: left; position: relative;
font-style: normal; }
text-transform: none;
} .itemsall {
.itemhead span { position: absolute;
margin-left: 1rem; display: flex;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi; flex-direction: column;
font-weight: 600; justify-content: center;
font-size: 1rem; align-items: center;
color: #3D424C; top: 5.5rem;
line-height: 1.69rem; left: 7.2rem;
text-align: left; }
font-style: normal;
text-transform: none; .itemsall span:nth-child(1) {
} font-family: DIN, DIN;
.mainarea{ font-weight: 500;
padding: 0rem 0rem 0 1.4rem; font-size: 1.75rem;
overflow: auto; color: #292C33;
} line-height: 2.44rem;
text-align: left;
/* 第一行:第一个模块占两列 */ font-style: normal;
.item-1 { text-transform: none;
grid-column: span 2; }
background-image: url(../../../src/assets/images/allbg.png);
background-size: 100% 100%; .itemsall span:nth-child(2) {
background-repeat: no-repeat; font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
} font-weight: 400;
font-size: 0.88rem;
.allarea { color: #9E9E9E;
width: 100%; line-height: 1.25rem;
height: 14.5rem; text-align: left;
padding: 1rem 1.5rem; font-style: normal;
} text-transform: none;
}
/* 最后一行:一个模块占一整行 */
.item-6 { .itemhead span {
grid-column: span 3; margin-left: 1rem;
/* 占三列 */ font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
} font-weight: 600;
</style> font-size: 1rem;
color: #3D424C;
line-height: 1.69rem;
text-align: left;
font-style: normal;
text-transform: none;
}
.mainarea {
padding: 0rem 0rem 0 1.4rem;
overflow: auto;
display: flex;
flex-direction: column;
gap: 1rem;
}
/* 第一行:第一个模块占两列 */
.item-1 {
width: 67rem;
background-image: url(../../../src/assets/images/allbg.png);
background-size: 100% 100%;
background-repeat: no-repeat;
}
.allarea {
width: 80rem;
height: 14.5rem;
padding: 1rem 1.5rem;
}
/* 最后一行:一个模块占一整行 */
.item-6 {
grid-column: span 3;
/* 占三列 */
}
.mainareaitem {
/* padding: .5rem 0 .5rem .5rem; */
display: flex;
justify-content: space-between;
border: 1px solid #ccc;
margin: 0 1rem 0 0;
}
.itemleft {
padding: .5rem 0 .5rem .5rem;
display: flex;
flex-direction: column;
width: 70%;
gap: 1rem;
}
.itemright {
width: 8rem;
height: 5rem;
display: flex;
color: white;
font-size: 1rem;
position: relative;
clip-path: polygon(0 0, 100% 0, 101% 100%);
justify-content: flex-end;
align-items: flex-start;
}
.rightword {
transform: rotate(32deg);
margin-top: -0.3rem;
padding: 25px 0.5rem 2px 5px;
}
.status-red {
background-color: #FFC77C;
}
.status-yellow {
background-color: #7F99DB;
}
.status-green {
background-color: #74DCC1;
}
.bottombox {
height: 26rem;
}
.xmmctitle {
color: #2B62F1;
}
.lefttwo {
display: flex;
justify-content: space-between;
align-items: center;
}
</style>

@ -31,12 +31,13 @@ module.exports = {
// webpack-dev-server 相关配置 // webpack-dev-server 相关配置
devServer: { devServer: {
host: '0.0.0.0', host: '0.0.0.0',
public:'192.168.0.119',
port: port, port: port,
open: true, open: true,
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.111:7071`, target: `http://192.168.0.111:7071/`,
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: '' ['^' + process.env.VUE_APP_BASE_API]: ''

Loading…
Cancel
Save