xuhongjie
严飞永 4 months ago
parent ac7ccff395
commit aed1adb622

@ -161,11 +161,10 @@ export function addElement(data) {
}
// 查询所有要素
export function getAllElements(params) {
export function getAllElements() {
return request({
url: '/gysl/mx/page',
method: 'get',
params
});
}
@ -193,7 +192,9 @@ export function addCatalog(data) {
return request({
url: '/gysl/ml/add',
method: 'post',
data
data: {
ml: data // 同样包装在ml对象中
}
});
}
@ -211,7 +212,9 @@ export function editCatalog(data) {
return request({
url: '/gysl/ml/edit',
method: 'post',
data
data: {
ml: data // 按照接口要求将数据包装在ml对象中
}
});
}
@ -347,6 +350,32 @@ export function getqyrzById(id) {
method: 'get'
});
}
//企业基本信息
// 修改企业基本信息
export function updateqyBasicInformation(data) {
return request({
url: '/gysl/enterprise/edit',
method: 'post',
data
});
}
// 删除企业基本信息
export function deleteqyBasicInformation(idList) {
return request({
url: '/gysl/enterprise/delete',
method: 'delete',
params: { idList }
});
}
// 通过主键查询单条企业基本信息
export function getqyBasicInformationById(id) {
return request({
url: `/gysl/enterprise/${id}`,
method: 'get'
});
}
//建筑信息表
@ -522,12 +551,40 @@ export function getxmmmbById(id) {
//单片材料管理
//新增数据
export function getclglPage(data) {
// 新增数据
export function addClgl(data) {
return request({
url:'/gysl/dpclgl/add',
method:'post',
url: '/gysl/dpclgl/add',
method: 'post',
data
})
});
}
// 删除数据
export function deleteClgl(idList) {
return request({
url: '/gysl/dpclgl/delete',
method: 'delete',
params: { idList: idList.join(',') } // 将数组转换为逗号分隔的字符串
});
}
// 修改数据
export function updateClgl(data) {
return request({
url: '/gysl/dpclgl/edit',
method: 'put',
data
});
}
// 分页查询所有数据
export function getClglPage(params) {
return request({
url: '/gysl/dpclgl/page',
method: 'get',
params
});
}
// 富文本编辑接口
export function exportToPdf(params) {
@ -604,4 +661,57 @@ export function getAllMessagestwo(){
url:'/gysl/qyStats/qyNotice',
method:'get'
})
}
//通过主键查询项目画像
export function getpicture(id){
return request({
url:`/gysl/xmpjqd/oneXmhx/${id}`,
method:'get'
})
}
//通过主键查询单条项目评价清单
export function getpicturelist(id){
return request({
url:`/gysl/xmpjqd/${id}`,
method:'get'
})
}
// 细分产业管理
// 新增数据
export function addXfcygl(data) {
return request({
url: '/gysl/xfcygl/add',
method: 'post',
data
});
}
// 删除数据
export function deleteXfcygl(idList) {
return request({
url: '/gysl/xfcygl/delete',
method: 'delete',
params: { idList }
});
}
// 修改数据
export function updateXfcygl(data) {
return request({
url: '/gysl/xfcygl/edit',
method: 'put',
data
});
}
// 分页查询所有数据
export function getXfcyglPage(params) {
return request({
url: '/gysl/xfcygl/page',
method: 'get',
params
});
}

@ -6,18 +6,18 @@
<el-row>
<el-col :span="5">
<el-form-item label="文件标题" style="width: 100%;">
<el-input placeholder="请输入模板标题" clearable />
<el-input v-model="queryParams.fileTitle" placeholder="请输入模板标题" clearable />
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="发布时间">
<el-date-picker type="date" placeholder="选择日期" v-model="form.date1" style="width: 100%;"></el-date-picker>
<el-date-picker v-model="queryParams.startTime" type="date" placeholder="选择日期" style="width: 100%;"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini">查询</el-button>
<el-button icon="el-icon-refresh" size="mini">重置</el-button>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-col>
</el-row>
@ -36,7 +36,7 @@
<el-table-column label="文件标题" align="center" prop="title" />
<el-table-column label="发布单位" align="center" prop="unit" />
<el-table-column label="发布人" align="center" prop="author" />
<el-table-column label="发布时间" align="center" prop="date" />
<el-table-column label="发布时间" align="center" prop="createTime" />
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button size="mini" type="text" style="color: gray;" @click="handlePreview(scope.row)"></el-button>
@ -52,19 +52,19 @@
<!-- 新增/编辑的弹窗 -->
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible">
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="文件标题">
<el-input v-model="form.title" placeholder="请输入文件标题" />
<el-form-item label="文件标题" prop="fileTitle">
<el-input v-model="form.fileTitle" placeholder="请输入文件标题" />
</el-form-item>
<el-form-item label="发布时间">
<el-date-picker v-model="form.date" type="date" placeholder="选择日期" style="width: 100%;"></el-date-picker>
<el-form-item label="发布时间" prop="createTime">
<el-date-picker v-model="form.createTime" type="date" placeholder="选择日期" style="width: 100%;"></el-date-picker>
</el-form-item>
<el-form-item label="发布单位">
<el-form-item label="发布单位" prop="unit">
<el-input v-model="form.unit" placeholder="请输入发布单位" />
</el-form-item>
<el-form-item label="发布人">
<el-input v-model="form.author" placeholder="请输入发布人" />
<el-form-item label="发布人" prop="createBy">
<el-input v-model="form.createBy" placeholder="请输入发布人" />
</el-form-item>
<el-form-item label="内容">
<el-form-item label="内容" prop="content">
<Editorone v-model="form.content" />
</el-form-item>
</el-form>
@ -88,13 +88,13 @@
</div>
<!-- 标题栏 -->
<div class="previewnick">
<h1>{{ previewData.title }}</h1>
<h1>{{ previewData.fileTitle }}</h1>
</div>
<!-- 发布信息栏 -->
<div class="previewinfo">
<div class="previewinfoitem">发布时间{{ previewData.date }}</div>
<div class="previewinfoitem">发布时间{{ previewData.createTime }}</div>
<div class="previewinfoitem">发布单位{{ previewData.unit }}</div>
<div class="previewinfoitem">发布人{{ previewData.author }}</div>
<div class="previewinfoitem">发布人{{ previewData.createBy }}</div>
</div>
<!-- 内容区域 -->
<div class="previewcontent">
@ -106,38 +106,55 @@
<script>
import Editorone from '@/components/Editor';
import { getclglPage, exportToPdf, downloadPdf } from '@/api/ManageApi/index';
import { addClgl, deleteClgl, updateClgl, getClglPage, exportToPdf, downloadPdf } from '@/api/ManageApi/index';
export default {
components: { Editorone },
data() {
return {
loading: false,
postList: [
{ id: 1, title: '文件1的名称', unit: '单位A', author: '张三', date: '2023-01-01', content: '<p>这是文件1的内容</p>' },
{ id: 2, title: '文件2的名称', unit: '单位B', author: '李四', date: '2023-02-01', content: '<p>这是文件2的内容</p>' },
{ id: 3, title: '文件3的名称', unit: '单位C', author: '王五', date: '2023-03-01', content: '<p>这是文件3的内容</p>' }
],
total: 3,
postList: [],
total: 0,
queryParams: {
pageNum: 1,
pageSize: 10
pageSize: 10,
fileTitle: '',
startTime: ''
},
dialogVisible: false,
dialogTitle: '新增',
form: {
title: '',
date: '',
id: undefined,
fileTitle: '',
createTime: '',
unit: '',
author: '',
createBy: '',
content: ''
},
rules: {
fileTitle: [
{ required: true, message: '文件标题不能为空', trigger: 'blur' }
],
createTime: [
{ required: true, message: '发布时间不能为空', trigger: 'change' }
],
unit: [
{ required: true, message: '发布单位不能为空', trigger: 'blur' }
],
createBy: [
{ required: true, message: '发布人不能为空', trigger: 'blur' }
],
content: [
{ required: true, message: '内容不能为空', trigger: 'blur' }
]
},
previewMode: false,
previewData: {},
};
},
created() {
this.getList();
},
methods: {
// PDF
async handleExporttwo() {
@ -145,14 +162,14 @@ export default {
this.loading = true;
//
if (!this.previewData.title || !this.previewData.content) {
if (!this.previewData.fileTitle || !this.previewData.content) {
this.$message.warning('请确保标题和内容不为空');
return;
}
// 1.
const exportResponse = await exportToPdf({
htmlArticleTitle: this.previewData.title,
htmlArticleTitle: this.previewData.fileTitle,
htmlContent: this.previewData.content
});
@ -168,24 +185,13 @@ export default {
throw new Error('后端未返回有效的文件路径或文件名');
}
// else {
// const downloadResponse = await downloadPdf(fileData.fileName);
// const blob = new Blob([downloadResponse], { type: 'application/pdf' });
// const url = window.URL.createObjectURL(blob);
// const link = document.createElement('a');
// link.href = url;
// link.download = fileData.newFileName || this.previewData.title + '.pdf';
// link.click();
// window.URL.revokeObjectURL(url);
// }
// 使
this.handleDownload(fileData);
this.$message.success('PDF导出下载成功');
} catch (error) {
console.error('导出PDF失败:', error);
this.$message.error('导出PDF失败');
} finally {
this.loading = false;
}
@ -203,6 +209,7 @@ export default {
a.setAttribute('target', '_blank');
a.setAttribute('href', url);
a.click();
window.URL.revokeObjectURL(url);
},
//
@ -213,22 +220,31 @@ export default {
handleAdd() {
this.dialogTitle = '新增';
this.dialogVisible = true;
this.form = { title: '', date: '', unit: '', author: '', content: '' };
this.form = { id: undefined, fileTitle: '', createTime: '', unit: '', createBy: '', content: '' };
},
handleEdit(row) {
this.dialogTitle = '编辑';
this.dialogVisible = true;
this.form = { ...row };
},
handleDelete(row) {
async handleDelete(row) {
this.$confirm('确定删除该文件吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.postList = this.postList.filter(item => item.id !== row.id);
this.total -= 1;
this.$message({ type: 'success', message: '删除成功!' });
}).then(async () => {
try {
this.loading = true;
await deleteClgl([row.id]);
this.postList = this.postList.filter(item => item.id !== row.id);
this.total -= 1;
this.$message({ type: 'success', message: '删除成功!' });
} catch (error) {
console.error('删除失败:', error);
this.$message.error('删除失败');
} finally {
this.loading = false;
}
});
},
handlePreview(row) {
@ -236,33 +252,32 @@ export default {
this.previewData = { ...row };
this.previewData.content = row.content; // HTML
},
handleReturn() {
this.previewMode = false;
this.previewData = {};
},
submitForm() {
this.$refs.form.validate(valid => {
async submitForm() {
this.$refs.form.validate(async valid => {
if (valid) {
if (this.form.id) {
//
const index = this.postList.findIndex(item => item.id === this.form.id);
this.postList.splice(index, 1, this.form);
} else {
//
const newForm = { ...this.form };
newForm.id = this.postList.length + 1;
this.postList.push(newForm);
this.total += 1;
const formData = { ...newForm };
delete formData.id;
//
// getclglPage(formData).then(response => {
// this.$message({ type: 'success', message: '!' });
// })
try {
this.loading = true;
if (this.form.id) {
//
await updateClgl(this.form);
const index = this.postList.findIndex(item => item.id === this.form.id);
this.postList.splice(index, 1, { ...this.form });
this.$message({ type: 'success', message: '编辑成功!' });
} else {
//
const response = await addClgl(this.form);
const newForm = { ...this.form, id: response.data.id };
this.postList.push(newForm);
this.total += 1;
this.$message({ type: 'success', message: '新增成功!' });
}
this.dialogVisible = false;
} catch (error) {
console.error('操作失败:', error);
this.$message.error('操作失败');
} finally {
this.loading = false;
}
this.dialogVisible = false;
this.$message({ type: 'success', message: '操作成功!' });
}
});
},
@ -272,8 +287,62 @@ export default {
handleSelectionChange(selection) {
console.log(selection);
},
handleExport() {
this.$message({ type: 'info', message: '导出功能待实现' });
async handleExport() {
try {
this.loading = true;
const params = {
...this.queryParams
};
const response = await getClglPage(params);
if (response.code === 200) {
const fileData = response.data;
if (!fileData.fileName || !fileData.url) {
throw new Error('后端未返回有效的文件路径或文件名');
}
this.handleDownload(fileData);
this.$message.success('导出成功');
} else {
throw new Error('导出失败');
}
} catch (error) {
console.error('导出失败:', error);
this.$message.error('导出失败');
} finally {
this.loading = false;
}
},
async getList() {
try {
this.loading = true;
const params = {
...this.queryParams
};
const response = await getClglPage(params);
if (response.code === 200) {
this.postList = response.data.records;
this.total = response.data.total;
} else {
throw new Error('获取数据失败');
}
} catch (error) {
console.error('获取数据失败:', error);
this.$message.error('获取数据失败');
} finally {
this.loading = false;
}
},
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
resetQuery() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
fileTitle: '',
startTime: ''
};
this.getList();
},
extractTextContent(html) {
const tempDiv = document.createElement('div');

@ -7,7 +7,7 @@
<span>基本信息</span>
</div>
<div class="topright">
<el-button type="primary" size="medium" plain v-if="action === 'fill' || !action"
<el-button type="primary" size="medium" plain v-if="action === 'fill' || !action"
style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;" @click="edit">
<img src="../../../assets/images/detailsicon/icon-bj@2x.png" alt="编辑"
style="width: 0.6rem; height: 0.6rem; margin-right: 4px;">
@ -30,7 +30,7 @@
<div class="descriptionsdiv">
<el-descriptions class="margin-top" :column="3" border>
<el-descriptions-item v-for="(item, index) in descriptions" :key="index"
:span="item.label === '项目法人单位简介' ? 3 : 1">
:span="item.label === '项目法人单位简介' || item.label === '统一信用代码' ? 3 : 1">
<template slot="label">
{{ item.label }}
</template>
@ -216,7 +216,7 @@ export default {
type: Object,
required: true
},
action:{
action: {
type: String,
required: true
}
@ -316,6 +316,7 @@ export default {
{ label: '施工许可证发放时间', value: data.issuingTime },
{ label: '竣工验收时间', value: data.acceptanceTime },
{ label: '建设进度', value: data.jsjd },
{ label: '统一信用代码', value: data.tyshxydm },
{ label: '项目法人单位简介', value: data.unitIntroduction },
{ label: '项目简介', value: data.introduction }
];
@ -425,7 +426,7 @@ export default {
height: auto;
display: flex;
justify-content: space-between;
padding:.5rem;
padding: .5rem;
border-bottom: 1px solid #E5E5E5;
}

@ -64,27 +64,36 @@
</el-button>
</div>
<!-- 表格显示区 -->
<div class="contenttwo">
<div class="contenttwo">
<div class="descriptionsdiv">
<el-table :data="tableData" style="width: 98%">
<el-table-column prop="address" label="序号" width="200">
<el-table-column prop="id" 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>
<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>
</template>
</el-table-column>
<el-table-column prop="number" label="统一社会信用代码" width="300">
<el-table-column prop="code" label="统一社会信用代码" width="300">
</el-table-column>
<el-table-column prop="name" label="所属行业" width="300">
<el-table-column prop="sshy" label="所属行业" width="300">
<template slot-scope="scope">
<el-input v-if="scope.row.isEditing" v-model="scope.row.sshy" style="width: 100%;"></el-input>
<span v-else>{{ scope.row.sshy }}</span>
</template>
</el-table-column>
<el-table-column prop="data" label='租金价格' width="250">
<el-table-column prop="zjjg" label='租金价格' width="250">
<template slot-scope="scope">
<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>
</template>
</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>
<el-button v-if="scope.row.isEditing" size="mini" type="text" icon="el-icon-check" @click="saveRow(scope.row)"></el-button>
<el-button v-else size="mini" type="text" icon="el-icon-edit" @click="editRow(scope.row)"></el-button>
<el-button size="mini" type="text" icon="el-icon-delete" style="color: #F25353;" @click="deleteRow(scope.$index)"></el-button>
</template>
</el-table-column>
</el-table>
@ -127,6 +136,7 @@
<script>
import { getToken } from "@/utils/auth";
import { download } from "@/utils/request";
import { getqyBasicInformationById, updateqyBasicInformation, deleteqyBasicInformation } from "@/api/ManageApi/index";
export default {
props: {
@ -155,40 +165,7 @@ export default {
form: {
...this.qyrzInfo
},
tableData: [
{
date: '2016-05-02',
name: '大众电脑生成制造基地',
number: 123456,
address: ' 1',
data: '1000',
status: '在建'
},
{
date: '2016-05-04',
name: '大众电脑生成制造基地',
address: ' 2',
number: 123456,
data: '1500',
status: '拟建'
},
{
date: '2016-05-01',
name: '大众电脑生成制造基地',
address: ' 3',
number: 123456,
data: '2000',
status: '已建'
},
{
date: '2016-05-03',
name: '大众电脑生成制造基地',
address: ' 4',
number: 123456,
data: '2500',
status: '在建'
}
],
tableData: [], //
upload: {
open: false,
isUploading: false,
@ -200,6 +177,9 @@ export default {
}
};
},
created() {
this.fetchTableData();
},
watch: {
qyrzInfo: {
handler(newVal) {
@ -210,6 +190,18 @@ export default {
}
},
methods: {
//
fetchTableData() {
getqyBasicInformationById().then(response => {
this.tableData = response.data.records.map(item => ({
...item,
isEditing: false
}));
}).catch(error => {
console.error('获取数据失败:', error);
});
},
// /
edit() {
this.isEditing = true;
@ -229,6 +221,31 @@ export default {
this.isEditing = false;
},
//
editRow(row) {
row.isEditing = true;
},
saveRow(row) {
row.isEditing = false;
//
updateqyBasicInformation(row).then(response => {
this.$modal.msgSuccess('保存成功');
}).catch(error => {
console.error('保存失败:', error);
this.$modal.msgError('保存失败');
});
},
deleteRow(index) {
this.tableData.splice(index, 1);
//
deleteqyBasicInformation([this.tableData[index].id]).then(response => {
this.$modal.msgSuccess('删除成功');
}).catch(error => {
console.error('删除失败:', error);
this.$modal.msgError('删除失败');
});
},
//
handleImport() {
this.upload.open = true;
@ -241,7 +258,7 @@ export default {
`企业入驻模板_${new Date().getTime()}.xlsx`
);
},
handleFileUploadProgress() {
this.upload.isUploading = true;
},

@ -22,20 +22,19 @@
<img src="@/assets/images/icon-pjdj@2x.png" alt="">
<span>评价等级</span>
<span style="margin-top: .3rem;">12/60</span>
</div>
<div class="tablebody">
<div class="table-container">
<div class="table-column">
<div class="table-header">评价要素</div>
<div v-for="(evaluation, index) in evaluations" :key="index" class="table-row">
{{ evaluation.element }}
<div v-for="(description, index) in descriptionData" :key="index" class="table-row">
{{ description.ysmc }}
</div>
</div>
<div class="table-column">
<div class="table-header">评价排名</div>
<div v-for="(evaluation, index) in evaluations" :key="index" class="table-row">
{{ evaluation.ranking }}
<div v-for="(description, index) in descriptionData" :key="index" class="table-row">
{{ description.pjpm }} /{{ description.count }}
</div>
</div>
</div>
@ -47,30 +46,112 @@
<script>
import * as echarts from 'echarts';
import { getpicture, getpicturelist } from '@/api/ManageApi/index'; //
export default {
props: {
size: {
type: String,
default: ''
},
id: {
type: Number,
default: 0
}
},
data() {
return {
evaluations: [
{ element: '总投资额', ranking: '100' },
{ element: '层数', ranking: '20' },
{ element: '首层层高', ranking: '5' },
{ element: '二层及以上层高', ranking: '6' },
{ element: '首层地面荷载', ranking: '7' },
{ element: '二层及以上露面荷载', ranking: '8' }
]
evaluations: [],
radarData: {
project: [],
median: []
},
maxValues: {},
descriptionData: []
};
},
mounted() {
this.initChart();
this.fetchData();
this.fetchDescriptionData();
},
methods: {
fetchData() {
if (this.id) {
getpicture(this.id)
.then(response => {
this.processData(response.data);
this.initChart();
})
.catch(error => {
console.error('获取项目画像失败:', error);
});
}
},
fetchDescriptionData() {
if (this.id) {
getpicturelist(this.id)
.then(response => {
this.processDescriptionData(response.data);
})
.catch(error => {
console.error('获取项目画像解释说明失败:', error);
});
}
},
processData(data) {
const projectData = [];
const medianData = [];
const evaluations = [];
const maxValues = {};
//
const elementMap = {};
data.forEach(item => {
item.list.forEach(subItem => {
const element = subItem.ysmc;
const value = parseFloat(subItem.pjpm);
if (!elementMap[element]) {
elementMap[element] = {
max: null,
project: null,
median: null
};
}
if (item.type === 1) { //
elementMap[element].max = value;
} else if (item.type === 2) { //
elementMap[element].project = value;
} else if (item.type === 3) { //
elementMap[element].median = value;
}
});
});
// evaluations
for (const element in elementMap) {
const data = elementMap[element];
evaluations.push({
element: element,
ranking: data.project // pjpm
});
projectData.push(data.project);
medianData.push(data.median);
maxValues[element] = data.max;
}
this.evaluations = evaluations;
this.radarData.project = projectData;
this.radarData.median = medianData;
this.maxValues = maxValues;
},
processDescriptionData(data) {
//
// data
this.descriptionData = data;
},
initChart() {
const chartDom = this.$refs.chart;
const myChart = echarts.init(chartDom);
@ -82,14 +163,10 @@ export default {
},
radar: {
center: ['50%', '55%'],
indicator: [
{ name: '总投资额', max: 6500 },
{ name: '首层层高', max: 16000 },
{ name: '二层及以上楼面荷载', max: 30000 },
{ name: '首层地面荷载', max: 38000 },
{ name: '二层及以上楼面荷载', max: 52000 },
{ name: '层数', max: 25000 }
]
indicator: this.evaluations.map(evaluation => ({
name: evaluation.element,
max: this.maxValues[evaluation.element] || 65000 // max
}))
},
series: [
{
@ -97,7 +174,7 @@ export default {
type: 'radar',
data: [
{
value: [4200, 3000, 20000, 35000, 50000, 18000],
value: this.radarData.project,
name: '本项目',
itemStyle: {
color: '#2B62F1' // 线
@ -118,7 +195,7 @@ export default {
}
},
{
value: [5000, 14000, 28000, 26000, 42000, 21000],
value: this.radarData.median,
name: '中位数',
itemStyle: {
color: '#FF9900' // 线

@ -1,67 +1,140 @@
<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 class="tablebox">
<!-- 标签行 -->
<el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange" stripe>
<el-table-column label="项目名称" align="center" prop="name" width="200" />
<el-table-column label="当前状态" align="center" prop="status">
<template slot-scope="scope">
<span :style="{ color: statusColors[statusMap[scope.row.status]] }">{{
statusMap[scope.row.status] }}</span>
</template>
</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="getInfo(scope.row, 'fill')"
v-if="statusMap[scope.row.status] === '待填报'">填报</el-button>
<el-button size="mini" type="text" @click="getInfo(scope.row, 'detail')">详情</el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
</div>
</template>
<script>
import { getBasicInformationPage } from "@/api/ManageApi/index";
import { checkPermi, checkRole } from "@/utils/permission";
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}` });
}
}
name: "TableContent",
dicts: ["xzfl"],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
postList: [],
//
statusColors: {
'审核通过': '#6EDABE',
'待填报': '#FFBF6B',
'待审核': '#7693D8'
},
//
statusMap: {
1: '待填报',
2: '待审核',
3: '审核通过'
},
xzflMap: {
1: '已建',
2: '再建',
3: '拟建'
},
//
queryParams: {
pageNum: 1,
pageSize: 10,
xzfl: '',
name: '',
xmfrdwxz: '',
dateRange: '', //
status: ''
},
};
},
created() {
this.getList();
},
methods: {
checkPermi,
checkRole,
/** 查询项目列表 */
getList() {
this.loading = true;
//
const params = {
...this.queryParams,
begainTime: this.queryParams.dateRange ? this.queryParams.dateRange[0] : undefined,
endTime: this.queryParams.dateRange ? this.queryParams.dateRange[1] : undefined
};
console.log('【查询参数】', params); //
getBasicInformationPage(params).then((response) => {
this.postList = response.data.records;
this.total = response.data.total;
this.loading = false;
}).catch(error => {
console.error('查询失败:', error);
this.loading = false;
});
},
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 详情按钮操作 */
getInfo(row, type) {
this.$store.commit("SET_CRUMBS", this.$route.meta.title + "详情");
const id = row.id || this.ids[0];
this.$router.push({ path: `/manage-info/${id}`, query: { action: type } });
},
},
};
</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;
/* 添加鼠标指针样式 */
.tablebox {
background-color: #fff;
border-radius: .5rem;
margin: .5rem;
}
.gray-background {
background-color: #f5f5f5;
/* 灰色背景 */
.tablehead {
display: flex;
justify-content: space-between;
align-items: center;
}
.white-background {
background-color: #ffffff;
/* 白色背景 */
.tablebtntwo {
margin-top: 1rem;
margin-bottom: 1rem;
}
</style>

@ -7,21 +7,21 @@
label-width="200">
<el-row>
<el-col :span="5">
<el-form-item label="项目名称企业端" prop="postName" style="width: 100%;">
<el-input v-model="queryParams.postName" placeholder="请输入项目名称" clearable
<el-form-item label="项目名称" style="width: 100%;">
<el-input v-model="queryParams.name" placeholder="请输入项目名称" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
</el-col>
<el-col :span="9">
<el-form-item label="项目建设起止时间" prop="">
<el-date-picker type="daterange" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
:style="{ width: '100%' }" start-placeholder="开始日期" end-placeholder="结束日期"
range-separator="至" clearable v-model="queryParams.dateRange"></el-date-picker>
<el-form-item label="项目建设起止时间">
<el-date-picker v-model="queryParams.dateRange" type="daterange" format="yyyy-MM-dd"
value-format="yyyy-MM-dd" :style="{ width: '100%' }" start-placeholder="开始日期"
end-placeholder="结束日期" range-separator="至" clearable @change="handleQuery"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="现状分类">
<el-select v-model="queryParams.postCode" placeholder="现状分类" clearable>
<el-select v-model="queryParams.xzfl" placeholder="现状分类" clearable>
<el-option v-for="dict in dict.type.xzfl" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
@ -80,8 +80,13 @@
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" align="center" prop="id" />
<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">
<template slot-scope="scope">
<span>{{ xzflMap[scope.row.xzfl] }}</span>
</template>
</el-table-column>
<el-table-column label="项目法人单位" align="center" prop="xmfrdwxz" width="200" />
<el-table-column label="统一信用代码" align="center" prop="tyshxydm" width="200" />
<el-table-column label="项目建设起止时间" align="center" width="200">
<template slot-scope="scope">
{{ scope.row.begainTime }} {{ scope.row.endTime }}
@ -144,15 +149,20 @@ export default {
2: '待审核',
3: '审核通过'
},
xzflMap: {
1: '已建',
2: '再建',
3: '拟建'
},
//
queryParams: {
pageNum: 1,
pageSize: 10,
postCode: undefined,
postName: undefined,
xmfrdwxz: undefined,
dateRange: [],
status: undefined
xzfl: '',
name: '',
xmfrdwxz: '',
dateRange: '', //
status: ''
},
//
upload: {
@ -173,13 +183,37 @@ export default {
/** 查询项目列表 */
getList() {
this.loading = true;
getBasicInformationPage(this.queryParams).then((response) => {
//
const params = {
...this.queryParams,
begainTime: this.queryParams.dateRange ? this.queryParams.dateRange[0] : undefined,
endTime: this.queryParams.dateRange ? this.queryParams.dateRange[1] : undefined
};
console.log('【查询参数】', params); //
getBasicInformationPage(params).then((response) => {
this.postList = response.data.records;
this.total = response.data.total;
this.loading = false;
}).catch(error => {
console.error('查询失败:', error);
this.loading = false;
});
},
//
processDateRange() {
if (this.queryParams.dateRange && this.queryParams.dateRange.length === 2) {
return {
begainTime: this.queryParams.dateRange[0],
endTime: this.queryParams.dateRange[1]
};
}
return {};
},
/** 导入按钮操作 */
handleImport() {
this.upload.open = true;
@ -230,7 +264,15 @@ export default {
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.queryParams = {
pageNum: 1,
pageSize: 10,
xzfl: '',
name: '',
xmfrdwxz: '',
dateRange: '',
status: ''
};
this.handleQuery();
},

@ -0,0 +1,88 @@
<template>
<div>
<div>
<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>
</div>
</div>
</template>
<script>
export default {
dicts: ['yslx'],
data() {
return {
form: {
companyName: "XXXXXX公司",
projectName: "",
tableData: [
{ label: '项目1', value: '' },
{ label: '项目2', value: '' },
//
],
},
};
},
methods: {
//
submitForm() {
//
console.log('提交表单', this.form);
this.$message.success('提交成功');
},
//
resetForm() {
this.form.projectName = "";
this.form.tableData.forEach(item => item.value = "");
},
//
cancelForm() {
this.$router.back(); //
}
}
};
</script>
<style scoped>
.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>

@ -7,7 +7,7 @@
label-width="200">
<el-row>
<el-col :span="5">
<el-form-item label="项目名称政务端" prop="postName" style="width: 100%;">
<el-form-item label="项目名称" prop="postName" style="width: 100%;">
<el-input v-model="queryParams.postName" placeholder="请输入项目名称" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>

@ -6,14 +6,15 @@
<el-row>
<el-col :span="5">
<el-form-item label="项目名称" style="width: 100%;">
<el-input v-model="queryParams.xmmc" placeholder="请输入项目名称" clearable @keyup.enter.native="handleQuery" />
<el-input v-model="queryParams.name" placeholder="请输入项目名称" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
</el-col>
<el-col :span="9">
<el-form-item label="项目建设起止时间">
<el-date-picker type="daterange" format="yyyy-MM-dd" value-format="yyyy-MM-dd" :style="{ width: '100%' }"
start-placeholder="开始日期" end-placeholder="结束日期" range-separator="至" clearable
v-model="queryParams.xmqzsj"></el-date-picker>
v-model="queryParams.dateRange">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="5">
@ -46,15 +47,23 @@
<el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" align="center" prop="id" />
<el-table-column label="项目名称" align="center" prop="xmmc" />
<el-table-column label="项目名称" align="center" prop="name" />
<el-table-column label="现状分类" align="center">
<template slot-scope="scope">
{{ xzflMap[scope.row.xzfl] || scope.row.xzfl }}
</template>
</el-table-column>
<el-table-column label="项目法人单位" align="center" prop="xmfrdw" />
<el-table-column label="项目建设起止时间" align="center" prop="xmqzsj" />
<el-table-column label="项目评价" align="center" width="130" prop="xmpj" />
<el-table-column label="项目法人单位" align="center" prop="xmfrdwxz" />
<el-table-column label="项目建设起止时间" align="center">
<template slot-scope="scope">
{{ scope.row.begainTime }} {{ scope.row.endTime }}
</template>
</el-table-column>
<el-table-column label="项目评价" align="center" width="130">
<template slot-scope="scope">
{{ scope.row.pjdj }} / {{ total }}
</template>
</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" icon="el-icon-view" @click="handleInfo(scope.row)"></el-button>
@ -70,12 +79,12 @@
<el-dialog title="项目详情" :visible.sync="infoDialogVisible" width="50%">
<el-form :model="infoForm" label-width="120px" :disabled="true">
<el-form-item label="项目名称">
<el-input v-model="infoForm.xmmc" placeholder="请输入项目名称" />
<el-input v-model="infoForm.name" placeholder="请输入项目名称" />
</el-form-item>
<el-form-item label="项目建设起止时间">
<el-date-picker type="daterange" format="yyyy-MM-dd" value-format="yyyy-MM-dd" :style="{ width: '100%' }"
start-placeholder="开始日期" end-placeholder="结束日期" range-separator="至" clearable
v-model="infoForm.xmqzsj"></el-date-picker>
start-placeholder="开始日期" end-placeholder="结束日期" range-separator="至" clearable v-model="infoForm.dateRange">
</el-date-picker>
</el-form-item>
<el-form-item label="现状分类">
<el-select v-model="infoForm.xzfl" placeholder="现状分类" clearable>
@ -84,32 +93,31 @@
</el-form-item>
<el-form-item label="评价等级">
<el-select v-model="infoForm.pjdj" placeholder="请选择评价等级" clearable>
<el-option label="区域一" value="1"></el-option>
<el-option label="区域二" value="2"></el-option>
<el-option v-for="dict in dict.type.pjdj" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="项目法人单位">
<el-input v-model="infoForm.xmfrdw" placeholder="请输入项目法人单位" />
<el-input v-model="infoForm.xmfrdwxz" placeholder="请输入项目法人单位" />
</el-form-item>
<el-form-item label="项目评价">
<el-input v-model="infoForm.xmpj" placeholder="请输入项目评价" />
<el-input v-model="infoForm.pjdj" placeholder="请输入项目评价" />
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="infoDialogVisible = false"> </el-button>
</span>
</el-dialog>
<!-- 修改对话框 -->
<el-dialog title="修改项目" :visible.sync="dialogVisible" width="50%">
<el-form :model="editForm" label-width="120px">
<el-form-item label="项目名称">
<el-input v-model="editForm.xmmc" placeholder="请输入项目名称" />
<el-input v-model="editForm.name" placeholder="请输入项目名称" />
</el-form-item>
<el-form-item label="项目建设起止时间">
<el-date-picker type="daterange" format="yyyy-MM-dd" value-format="yyyy-MM-dd" :style="{ width: '100%' }"
start-placeholder="开始日期" end-placeholder="结束日期" range-separator="至" clearable
v-model="editForm.xmqzsj"></el-date-picker>
start-placeholder="开始日期" end-placeholder="结束日期" range-separator="至" clearable v-model="editForm.dateRange">
</el-date-picker>
</el-form-item>
<el-form-item label="现状分类">
<el-select v-model="editForm.xzfl" placeholder="现状分类" clearable>
@ -117,10 +125,10 @@
</el-select>
</el-form-item>
<el-form-item label="项目法人单位">
<el-input v-model="editForm.xmfrdw" placeholder="请输入项目法人单位" />
<el-input v-model="editForm.xmfrdwxz" placeholder="请输入项目法人单位" />
</el-form-item>
<el-form-item label="项目评价">
<el-input v-model="editForm.xmpj" placeholder="请输入项目评价" />
<el-input v-model="editForm.pjdj" placeholder="请输入项目评价" />
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
@ -132,7 +140,7 @@
</template>
<script>
// import { getProjectEvaluationList, updateProjectEvaluationList } from '@/api/ManageApi/index.js';
import { getProjectEvaluationList, updateProjectEvaluationList } from '@/api/ManageApi/index.js';
export default {
dicts: [
@ -140,7 +148,7 @@ export default {
],
data() {
return {
//
//
xzflMap: {
'1': '已建',
'2': '再建',
@ -152,8 +160,8 @@ export default {
queryParams: {
current: 1,
size: 10,
xmmc: '',
xmqzsj: '',
name: '',
dateRange: '',
xzfl: '',
pjdj: ''
},
@ -161,22 +169,22 @@ export default {
dialogVisible: false,
editForm: {
id: '',
xmmc: '',
xmqzsj: '',
name: '',
dateRange: '',
xzfl: '',
pjdj: '',
xmfrdw: '',
xmpj: ''
xmfrdwxz: '',
pjdj: ''
},
infoDialogVisible: false,
infoForm: {
id: '',
xmmc: '',
xmqzsj: '',
name: '',
dateRange: '',
xzfl: '',
pjdj: '',
xmfrdw: '',
xmpj: ''
xmfrdwxz: '',
pjdj: ''
}
};
},
@ -188,8 +196,8 @@ export default {
this.queryParams = {
current: 1,
size: 10,
xmmc: '',
xmqzsj: '',
name: '',
dateRange: '',
xzfl: '',
pjdj: ''
};
@ -197,7 +205,12 @@ export default {
},
getList() {
this.loading = true;
getProjectEvaluationList(this.queryParams)
const params = {
...this.queryParams,
begainTime: this.queryParams.dateRange ? this.queryParams.dateRange[0] : undefined,
endTime: this.queryParams.dateRange ? this.queryParams.dateRange[1] : undefined
};
getProjectEvaluationList(params)
.then(response => {
this.postList = response.data.records;
this.total = response.data.total;
@ -213,15 +226,26 @@ export default {
//
},
handleInfo(row) {
this.infoForm = { ...row };
this.infoForm = {
...row,
dateRange: [row.begainTime, row.endTime]
};
this.infoDialogVisible = true;
},
handleUpdate(row) {
this.editForm = { ...row };
this.editForm = {
...row,
dateRange: [row.begainTime, row.endTime]
};
this.dialogVisible = true;
},
updateProject() {
updateProjectEvaluationList(this.editForm)
const formData = {
...this.editForm,
begainTime: this.editForm.dateRange[0],
endTime: this.editForm.dateRange[1]
};
updateProjectEvaluationList(formData)
.then(response => {
this.$message.success('修改成功');
this.dialogVisible = false;

@ -56,6 +56,7 @@
<!-- 企业入驻信息 -->
<div id="companyenter">
<Companyenter
:id="projectId"
:action="action"
:qyrzInfo="qyrzInformation" @update-data="handleDataUpdate('qyrzInformation', $event)">
</Companyenter>
@ -63,7 +64,7 @@
<!-- 项目画像 -->
<div id="projectpicture">
<Projectpicture
:action="action"></Projectpicture>
:action="action" :id="projectId"></Projectpicture>
</div>
<!-- 项目图例 -->
<div id="projectpicturetwo">

@ -1,343 +1,275 @@
<template>
<div>
<!-- 负面清单管理 -->
<div class="headerbox">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="200">
<el-row>
<el-col :span="5">
<el-form-item label="项目名称" prop="postName" style="width: 100%;">
<el-input v-model="queryParams.postName" placeholder="请输入项目名称" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
</el-col>
<el-col :span="9">
<el-form-item label="项目建设起止时间" prop="">
<el-date-picker type="daterange" format="yyyy-MM-dd" value-format="yyyy-MM-dd" :style="{ width: '100%' }"
start-placeholder="开始日期" end-placeholder="结束日期" range-separator="至" clearable></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="现状分类" prop="status">
<el-select v-model="queryParams.status" placeholder="现状分类" clearable>
<el-option v-for="dict in dict.type.xzfl" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="实施主体" prop="postName" style="width: 100%;">
<el-input v-model="queryParams.postName" placeholder="请输入实施主体" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<!-- 表格内容区 -->
<div class="tablebox">
<el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange">
<!-- <el-table-column type="selection" width="55" align="center" /> -->
<el-table-column label="序号" align="center" prop="postId" />
<el-table-column label="项目名称" align="center" prop="postName" />
<el-table-column label="现状分类" align="center" prop="postCode" />
<el-table-column label="项目法人单位" align="center" prop="postSort" />
<el-table-column label="项目建设起止时间" align="center" prop="postSort" />
<el-table-column label="总投资额(万元)" align="center" width="130" prop="postSort" />
<el-table-column label="总用地面积(平方米)" align="center" prop="postSort" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-view" @click="getInfo(scope.row)"></el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"></el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
<div>
<!-- 负面清单管理 -->
<!-- 表单查询项 -->
<div class="headerbox">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="200">
<el-row>
<el-col :span="5">
<el-form-item label="项目名称" prop="postName" style="width: 100%;">
<el-input v-model="queryParams.postName" placeholder="请输入项目名称" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
</el-col>
<el-col :span="9">
<el-form-item label="项目建设起止时间" prop="">
<el-date-picker type="daterange" format="yyyy-MM-dd" value-format="yyyy-MM-dd" :style="{ width: '100%' }"
start-placeholder="开始日期" end-placeholder="结束日期" range-separator="至" clearable
v-model="queryParams.dateRange"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="现状分类">
<el-select v-model="queryParams.postCode" placeholder="现状分类" clearable>
<el-option v-for="dict in dict.type.xzfl" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="项目法人单位">
<el-input v-model="queryParams.xmfrdwxz" placeholder="请输入项目法人单位" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<!-- 表格内容区 -->
<div class="tablebox">
<!-- 标签行 -->
<div class="tablehead">
<!-- <div class="headtitle"><span>项目清单</span></div> -->
</div>
<!-- 添加或修改项目对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="项目名称" prop="postName">
<el-input v-model="form.postName" placeholder="请输入项目名称" />
</el-form-item>
<el-form-item label="项目编码" prop="postCode">
<el-input v-model="form.postCode" placeholder="请输入编码名称" />
</el-form-item>
<el-form-item label="项目顺序" prop="postSort">
<el-input-number v-model="form.postSort" controls-position="right" :min="0" />
</el-form-item>
<el-form-item label="项目状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.value">{{ dict.label
}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 批量导入对话框 :headers="upload.headers" -->
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
<el-upload ref="upload" :limit="1" accept=".xlsx, .xls"
<!-- 导入弹窗 -->
<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">
<!-- <div class="el-upload__tip" slot="tip">
<el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的用户数据
</div> -->
<span>仅允许导入xlsxlsx格式文件</span>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm"> </el-button>
<el-button @click="upload.open = false"> </el-button>
</div>
<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">
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<!-- <el-button type="primary" icon="el-icon-upload2" size="medium" @click="handleExport"></el-button> -->
</el-col>
</el-row>
</div>
<el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange" stripe>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" align="center" prop="id" />
<el-table-column label="项目名称" align="center" prop="name" width="200" />
<el-table-column label="现状分类" align="center" prop="xzfl">
<template slot-scope="scope">
<span>{{ xzflMap[scope.row.xzfl] }}</span>
</template>
</el-table-column>
<el-table-column label="项目法人单位" align="center" prop="xmfrdwxz" width="200" />
<el-table-column label="项目建设起止时间" align="center" width="200">
<template slot-scope="scope">
{{ scope.row.begainTime }} {{ scope.row.endTime }}
</template>
</el-table-column>
<el-table-column label="总投资额(万元)" align="center" width="130" prop="ztze" />
<el-table-column label="总用地面积(平方米)" align="center" prop="zydmj" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" @click="getInfo(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>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
</div>
</template>
<script>
import { listPost, getPost, delPost, addPost, updatePost } from "@/api/system/post";
export default {
name: "Post",
dicts: ['xzfl'],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
postList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
postCode: undefined,
postName: undefined,
status: undefined
},
//
form: {},
//
rules: {
postName: [
{ required: true, message: "项目名称不能为空", trigger: "blur" }
],
postCode: [
{ required: true, message: "项目编码不能为空", trigger: "blur" }
],
postSort: [
{ required: true, message: "项目顺序不能为空", trigger: "blur" }
]
},
//
upload: {
//
open: false,
//
title: "导入",
//
isUploading: false,
//
updateSupport: 0,
//
// headers: { Authorization: "Bearer " + getToken() },
//
// url: process.env.VUE_APP_BASE_API + "/tc/assetApp/importData"
// url: location.origin + "/api/tc/assetApp/importData"
},
};
},
created() {
this.getList();
},
methods: {
//
handleImport() {
this.upload.open = true;
},
//
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
//
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
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.getList();
},
//
submitFileForm() {
this.$refs.upload.submit();
},
/** 查询项目列表 */
getList() {
this.loading = true;
listPost(this.queryParams).then(response => {
this.postList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
postId: undefined,
postCode: undefined,
postName: undefined,
postSort: 0,
status: "0",
remark: undefined
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
</div>
</template>
<script>
import { getBasicInformationPage } from "@/api/ManageApi/index";
import { getToken } from "@/utils/auth";
import { checkPermi, checkRole } from "@/utils/permission";
export default {
name: "Post",
dicts: ["xzfl"],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
postList: [],
//
statusColors: {
'审核通过': '#6EDABE',
'待填报': '#FFBF6B',
'待审核': '#7693D8'
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.postId)
this.single = selection.length != 1
this.multiple = !selection.length
//
statusMap: {
1: '待填报',
2: '待审核',
3: '审核通过'
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加项目";
xzflMap: {
1: '已建',
2: '再建',
3: '拟建'
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const postId = row.postId || this.ids
getPost(postId).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改项目";
});
//
queryParams: {
pageNum: 1,
pageSize: 10,
postCode: undefined,
postName: undefined,
xmfrdwxz: undefined,
dateRange: [],
status: undefined
},
/** 详情按钮操作 */
getInfo(row) {
this.$store.commit("SET_CRUMBS", this.$route.meta.title + "详情");
const postIds = row.postId || this.ids;
this.$router.push({ path: `/manage-info/${postIds}` });
//
upload: {
open: false, //
isUploading: false, //
updateSupport: 0, //
headers: { Authorization: "Bearer " + getToken() }, //
url: process.env.VUE_APP_BASE_API + "/gysl/basicInformation/import", //
},
/** 提交按钮 */
submitForm: function () {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.postId != undefined) {
updatePost(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addPost(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const postIds = row.postId || this.ids;
this.$modal.confirm('是否确认删除项目编号为"' + postIds + '"的数据项?' + '删除这条信息之后有可能找不回来了,请思考一下哟!').then(function () {
return delPost(postIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => { });
},
/** 导出按钮操作 */
handleExport() {
this.download('system/post/export', {
...this.queryParams
}, `post_${new Date().getTime()}.xlsx`)
}
}
};
</script>
<style scoped>
.headerbox {
background-color: #fff;
border-radius: .5rem;
padding: 1rem;
margin: .5rem;
border: 1px solid #eee;
}
.tablebox {
background-color: #fff;
border-radius: .5rem;
padding: 1rem;
margin: .5rem;
border: 1px solid #eee;
}
.tablehead {
display: flex;
justify-content: space-between;
align-items: center;
}
.headbtn {
display: flex;
}
.tablebtntwo {
margin-top: 1rem;
margin-bottom: 1rem;
}
</style>
};
},
created() {
this.getList();
},
methods: {
checkPermi,
checkRole,
/** 查询项目列表 */
getList() {
this.loading = true;
getBasicInformationPage(this.queryParams).then((response) => {
this.postList = response.data.records;
this.total = response.data.total;
this.loading = false;
});
},
/** 导入按钮操作 */
handleImport() {
this.upload.open = true;
},
//
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
//
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
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.getList();
},
//
submitFileForm() {
this.$refs.upload.submit();
},
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 导出按钮操作 */
handleExport() {
this.download('/gysl/basicInformation/exportInfo', {
...this.queryParams,
idList: this.ids[0]
}, `post_${new Date().getTime()}.xlsx`)
},
/** 详情按钮操作 */
getInfo(row, type) {
this.$store.commit("SET_CRUMBS", this.$route.meta.title + "详情");
const id = row.id || this.ids[0];
this.$router.push({ path: `/manage-info/${id}`, query: { action: type } });
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
},
};
</script>
<style scoped>
.headerbox {
background-color: #fff;
border-radius: .5rem;
padding: 1rem;
margin: .5rem;
border: 1px solid #eee;
}
.tablebox {
background-color: #fff;
border-radius: .5rem;
padding: 1rem;
margin: .5rem;
border: 1px solid #eee;
}
.tablehead {
display: flex;
justify-content: space-between;
align-items: center;
}
.headbtn {
display: flex;
}
.tablebtntwo {
margin-top: 1rem;
margin-bottom: 1rem;
}
</style>

@ -36,7 +36,7 @@
<div class="boxheader">
<div class="headerone">
<!-- 关键要素/重要要素 -->
<div>{{ element.type === 1 ? '关键要素' : '重要要素' }}</div>
<div>{{ element.type == 1 ? '关键要素' : '重要要素' }}</div>
<!-- 关键要素/重要要素的名称 -->
<div>{{ element.name }}</div>
</div>
@ -44,21 +44,25 @@
<div class="headertwo">
<el-button type="primary" icon="el-icon-edit" size="mini"
@click="handleUpdate(element)">编辑要素</el-button>
<el-button type="primary" icon="el-icon-edit"
<el-button type="primary" icon="el-icon-plus"
@click="showAddIndicatorDialog(element)">新增指标</el-button>
</div>
</div>
<!-- 每个要素对应的指标和详细要求的展示这里编辑和删除只是删除这个指标不删除要素 -->
<el-table :data="element.indicators" style="width: 100%">
<el-table-column prop="id" label="序号" width="180"></el-table-column>
<el-table-column label="序号" width="180">
<template slot-scope="scope">
{{ scope.$index + 1 }}
</template>
</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>
@click="handleUpdateIndicator(scope.row)">编辑</el-button>
<el-button size="mini" type="text" @click="handleDelete(scope.row)"
style="color: #F25353;">删除指标</el-button>
style="color: #F25353;">删除</el-button>
</template>
</el-table-column>
</el-table>
@ -71,7 +75,7 @@
<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>
:value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="名称">
@ -90,7 +94,7 @@
<el-form-item label="具体指标">
<el-input v-model="indicatorForm.jtzb" placeholder="请输入具体指标"></el-input>
</el-form-item>
<el-form-item label="详细内容">
<el-form-item label="详细要求">
<el-input v-model="indicatorForm.xxyq" placeholder="请输入详细要求"></el-input>
</el-form-item>
</el-form>
@ -100,94 +104,67 @@
</span>
</el-dialog>
</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-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>
<div v-if="checkRole(['admin', 'company'])">
<tianbao />
</div>
</div>
</template>
<script>
import { addElement, getAllElements } from '@/api/ManageApi/index';
import { checkPermi, checkRole } from "@/utils/permission"; //
import { addElement, getAllElements, editElemention, deleteElemention } from '@/api/ManageApi/index';
import { checkPermi, checkRole } from "@/utils/permission";
import tianbao from '@/views/components/tianbao/tianbao.vue'
export default {
dicts: ['yslx'],
components: { tianbao },
data() {
return {
searchForm: {
keyElement: '',
specificIndicator: ''
},
tableData: [], //
dialogVisible: false, // /
indicatorDialogVisible: false, // /
tableData: [],
dialogVisible: false,
indicatorDialogVisible: false,
form: {
id: null,
companyName: "XXXXXX公司", //
projectName: "", //
id: 0,
type: '',
name: '',
tableData: [
{ label: "危险品等级", value: "" },
{ label: "生产火灾危险等级", value: "" },
{ label: "设备载重", value: "" },
{ label: "货梯要求", value: "" },
{ label: "员工密度", value: "" },
{ label: "加工精度", value: "" },
{ label: "减振措施", value: "" },
{ label: "环境保护", value: "" },
{ label: "生产类型", value: "" },
{ label: "层高要求", value: "" },
],
tableData: [],
},
indicatorForm: {
id: null,
id: 0,
jtzb: '',
xxyq: '',
elementId: null
}
},
currentElement: null
};
},
methods: {
checkPermi,
checkRole,
//
getUserInfo() {
return {
name: this.$store.state.user?.name || 'admin',
userId: this.$store.state.user?.userId || 1
};
},
//
fetchElements() {
getAllElements(this.searchForm).then(response => {
this.tableData = response.data;
this.tableData = response.data.map(item => ({
...item,
indicators: item.list || [] // listindicators
}));
});
},
//
resetSearchForm() {
this.searchForm = {
@ -196,44 +173,101 @@ export default {
};
this.fetchElements();
},
//
//
resetForm() {
this.form = {
id: null,
id: 0,
type: '',
name: ''
};
},
//
resetIndicatorForm() {
this.indicatorForm = {
id: 0,
jtzb: '',
xxyq: '',
elementId: null
};
},
//
handleAddElement() {
addElement(this.form).then(response => {
const user = this.getUserInfo();
const payload = {
...this.form,
createBy:'',
createId: 0,
updateBy: '',
updateId: 0
};
console.log('提交要素数据格式:', JSON.stringify(payload, null, 2));
addElement(payload).then(response => {
this.$message.success('操作成功');
this.dialogVisible = false;
this.fetchElements();
}).catch(error => {
this.$message.error('操作失败');
});
},
//
handleUpdate(element) {
this.form = { ...element };
this.currentElement = element;
this.form = {
id: element.id,
type: element.type,
name: element.name
};
this.dialogVisible = true;
},
//
showAddIndicatorDialog(element) {
this.currentElement = element;
this.resetIndicatorForm();
this.indicatorForm.elementId = element.id;
this.indicatorDialogVisible = true;
},
//
handleAddIndicator() {
//
this.$message.success('操作成功');
this.indicatorDialogVisible = false;
this.fetchElements();
const user = this.getUserInfo();
const payload = {
...this.indicatorForm,
name: this.currentElement.name,
type: this.currentElement.type,
createBy: '',
createId: 0,
updateBy: '',
updateId: 0
};
console.log('提交指标数据格式:', JSON.stringify(payload, null, 2));
// // id
const api = this.indicatorForm.id ? editElemention : addElement;
api(payload).then(response => {
this.$message.success('操作成功');
this.indicatorDialogVisible = false;
this.fetchElements();
})
},
//
handleUpdateIndicator(indicator) {
this.indicatorForm = { ...indicator };
this.indicatorForm = {
...indicator,
elementId: this.currentElement?.id
};
this.indicatorDialogVisible = true;
},
//
handleDelete(indicator) {
this.$confirm('确定删除该指标吗?', '提示', {
@ -241,9 +275,12 @@ export default {
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
//
this.$message.success('删除成功');
this.fetchElements();
deleteElemention([indicator.id]).then(() => {
this.$message.success('删除成功');
this.fetchElements();
}).catch(error => {
this.$message.error('删除失败');
});
});
}
},
@ -286,12 +323,13 @@ export default {
.headertwo {
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);
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>

@ -1,13 +1,15 @@
<template>
<div>
<!-- 产业导向管理--目录管理 -->
<!-- 搜索区域 -->
<div class="headerbox">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="7rem">
<el-row>
<el-col :span="9">
<el-form-item label="上楼目录类别" prop="slmllb" style="width: 100%;">
<el-input v-model="queryParams.slmllb" placeholder="请输入上楼目录类别" clearable style="width: 26.5rem;"
@keyup.enter.native="handleQuery" />
<el-select v-model="queryParams.slmllb" placeholder="请选择上楼目录类别" style="width: 26.5rem;">
<el-option v-for="dict in dict.type.shangloumulu" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="7">
@ -26,9 +28,8 @@
<el-row>
<el-col :span="9">
<el-form-item label="更新时间" prop="updateTime">
<el-date-picker v-model="queryParams.updateTimeRange" type="daterange" format="yyyy-MM-dd"
value-format="yyyy-MM-dd" :style="{ width: '100%' }" start-placeholder="开始日期" end-placeholder="结束日期"
range-separator="至" clearable @change="handleQuery" />
<el-date-picker v-model="queryParams.updateTime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
:style="{ width: '26.5rem' }" placeholder="选择日期" clearable @change="handleQuery" />
</el-form-item>
</el-col>
<el-col :span="8">
@ -40,56 +41,58 @@
</el-row>
</el-form>
</div>
<!-- 表格内容区 -->
<!-- 表格区域 -->
<div class="tablebox">
<!-- 标签行 -->
<div class="tablehead">
<div class="tablebtntwo">
<div>
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd"></el-button>
</div>
<div class="tablebtn">
<el-button type="primary" size="mini" @click="handleExport"></el-button>
<el-button type="primary" size="mini" @click="handleImport"></el-button>
</div>
<div class="tablebtntwo">
<div>
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd"></el-button>
</div>
<div class="tablebtn">
<el-button type="primary" size="mini" @click="handleExport"></el-button>
<el-button type="primary" size="mini" @click="handleImport"></el-button>
</div>
</div>
<el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange"
:row-class-name="tableRowClassName">
<el-table-column label="上楼目录类别" align="center" prop="slmllb" />
<el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" width="60" align="center">
<template slot-scope="scope">
{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}
</template>
</el-table-column>
<el-table-column label="上楼目录类别" align="center" prop="slmllb" :formatter="formatSlmllb" />
<el-table-column label="工业大类" align="center" prop="gydl" />
<el-table-column label="产业" align="center" prop="cy" />
<el-table-column label="更新时间" align="center" prop="updateTime" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column label="更新时间" align="center" prop="updateTime" width="180" />
<el-table-column label="操作" align="center" width="180" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"></el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"></el-button>
<el-button size="mini" type="text" icon="el-icon-delete" style="color: #F25353;"
@click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
</div>
<!-- 新增按钮的对话框 -->
<!-- 新增/修改对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body :close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form-item label="上楼目录类别" prop="slmllb">
<el-select v-model="form.slmllb" placeholder="请选择文件类型" style="width: 100%;">
<el-select v-model="form.slmllb" placeholder="请选择上楼目录类别" style="width: 100%;">
<el-option v-for="dict in dict.type.shangloumulu" :key="dict.value" :label="dict.label"
:value="dict.value"></el-option>
:value="parseInt(dict.value)" />
</el-select>
</el-form-item>
<el-form-item label="工业大类" prop="gydl">
<el-input v-model="form.gydl" placeholder="请输入工业大类" />
<el-input v-model="form.gydl" placeholder="请输入工业大类" maxlength="50" show-word-limit />
</el-form-item>
<el-form-item label="产业" prop="cy">
<el-input v-model="form.cy" placeholder="请输入产业" />
<el-input v-model="form.cy" placeholder="请输入产业" maxlength="50" show-word-limit />
</el-form-item>
<!-- <el-form-item label="更新时间" prop="updateTime">
<el-date-picker v-model="form.updateTime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
placeholder="选择日期" />
</el-form-item> -->
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel"> </el-button>
@ -97,7 +100,7 @@
</div>
</el-dialog>
<!-- 批量导入对话框 -->
<!-- 导入对话框 -->
<el-dialog title="数据导入" :visible.sync="upload.open" width="400px" append-to-body :close-on-click-modal="false">
<el-upload ref="upload" :limit="1" accept=".xlsx,.xls" :headers="upload.headers" :action="upload.url"
:disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess"
@ -106,32 +109,28 @@
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<span>仅允许导入xlsxlsx格式文件</span>
<el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline"
<el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;"
@click="importTemplate">下载模板</el-link>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button @click="upload.open = false"> </el-button>
<el-button type="primary" @click="submitFileForm" :loading="upload.isUploading">
</el-button>
<el-button type="primary" @click="submitFileForm"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { addCatalog, deleteCatalog, editCatalog, getAllCatalogs } from '@/api/ManageApi/index';
import { addCatalog, deleteCatalog, editCatalog, getAllCatalogs, exportCatalog } from '@/api/ManageApi/index';
import { getToken } from "@/utils/auth";
export default {
dicts: [
'shangloumulu'
],
name: "Catalog",
dicts: ['shangloumulu'],
data() {
return {
//
//
loading: true,
//
ids: [],
@ -143,7 +142,7 @@ export default {
showSearch: true,
//
total: 0,
//
//
postList: [],
//
title: "",
@ -156,16 +155,14 @@ export default {
slmllb: undefined,
gydl: undefined,
cy: undefined,
updateTimeRange: undefined
updateTime: undefined
},
//
form: {
id: undefined,
slmllb: undefined,
gydl: undefined,
cy: undefined,
updateTime: undefined,
remark: undefined
cy: undefined
},
//
rules: {
@ -174,196 +171,206 @@ export default {
],
gydl: [
{ required: true, message: "工业大类不能为空", trigger: "blur" },
{ max: 50, message: "工业大类长度不能超过50个字符", trigger: "blur" }
{ max: 50, message: "长度不能超过50个字符", trigger: "blur" }
],
cy: [
{ required: true, message: "产业不能为空", trigger: "blur" },
{ max: 50, message: "产业长度不能超过50个字符", trigger: "blur" }
],
// updateTime: [
// { required: true, message: "", trigger: "change" }
// ]
{ max: 50, message: "长度不能超过50个字符", trigger: "blur" }
]
},
//
//
upload: {
open: false, //
isUploading: false, //
updateSupport: 0, //
headers: { Authorization: "Bearer " + getToken() }, //
url: process.env.VUE_APP_BASE_API + "/ml", //
},
open: false,
isUploading: false,
headers: { Authorization: "Bearer " + getToken() },
url: process.env.VUE_APP_BASE_API + "/gysl/ml/importMl"
}
};
},
created() {
this.getList();
},
methods: {
tableRowClassName({ row, rowIndex }) {
if (rowIndex === 1) {
return 'warning-row';
} else if (rowIndex === 3) {
return 'success-row';
}
return '';
},
//
handleImport() {
this.upload.open = true;
},
//
importTemplate() {
this.download(
"/ml/",
{},
`目录导入模板${new Date().getTime()}.xlsx`
);
},
//
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
//
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
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.getList();
},
//
submitFileForm() {
this.$refs.upload.submit();
//
formatSlmllb(row) {
return this.selectDictLabel(this.dict.type.shangloumulu, row.slmllb);
},
/** 查询目录列表 */
/** 查询列表 */
getList() {
this.loading = true;
const params = {
...this.queryParams,
startTime: this.queryParams.updateTimeRange ? this.queryParams.updateTimeRange[0] : undefined,
endTime: this.queryParams.updateTimeRange ? this.queryParams.updateTimeRange[1] : undefined
};
getAllCatalogs(params).then(response => {
this.postList = response.data.records;
console.log('【查询参数】', JSON.stringify(this.queryParams, null, 2));
getAllCatalogs(this.queryParams).then(response => {
console.log('【查询结果】', response.data);
this.postList = response.data.records.map(item => ({
...item,
updateTime: item.updateTime ? item.updateTime.split(' ')[0] : ''
}));
this.total = response.data.total;
this.loading = false;
}).catch(error => {
console.error('API Request Error:', error);
console.error('查询失败:', error);
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: undefined,
slmllb: undefined,
gydl: undefined,
cy: undefined,
updateTime: undefined,
remark: undefined
cy: 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();
const catalogId = row.id || this.ids;
editCatalog({ id: catalogId }).then(response => {
const data = response.data;
// updateTime
if (data.updateTime) {
data.updateTime = data.updateTime.split(' ')[0]; //
}
const id = row.id;
console.log('【获取详情】ID:', id);
// API
const detailData = this.postList.find(item => item.id === id);
if (detailData) {
this.form = {
id: data.id,
slmllb: data.slmllb,
gydl: data.gydl,
cy: data.cy,
updateTime: data.updateTime,
remark: data.remark
id: detailData.id,
slmllb: detailData.slmllb,
gydl: detailData.gydl,
cy: detailData.cy
};
console.log("Form data after update:", this.form); //
this.open = true;
this.title = "修改目录";
}).catch(error => {
console.error('API Request Error:', error);
});
console.log('【详情数据】', JSON.stringify(this.form, null, 2));
}
},
/** 提交按钮 */
submitForm: function () {
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
const user = this.$store.state.user;
const currentTime = new Date().toISOString().replace('T', ' ').substring(0, 19);
const formData = {
id: this.form.id,
slmllb: this.form.slmllb,
gydl: this.form.gydl,
cy: this.form.cy,
updateTime: this.form.updateTime,
remark: this.form.remark
...this.form,
updateTime: currentTime,
updateBy: user.name,
updateId: user.userId,
...(this.form.id ? {} : {
createTime: currentTime,
createBy: user.name,
createId: user.userId
})
};
console.log("完整的提交数据:", JSON.stringify(formData, null, 2));
if (this.form.id !== undefined) {
editCatalog(formData).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).catch(error => {
console.error('API Request Error:', error);
});
} else {
addCatalog(formData).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).catch(error => {
console.error('API Request Error:', error);
});
}
const requestData = { ml: formData };
console.log('【提交数据】', JSON.stringify(requestData, null, 2));
const request = this.form.id
? editCatalog(requestData)
: addCatalog(requestData);
request.then(response => {
this.$modal.msgSuccess(this.form.id ? "修改成功" : "新增成功");
this.open = false;
this.getList();
}).catch(error => {
console.error('提交失败:', error);
this.$modal.msgError(error.response?.data?.msg || "操作失败");
});
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const catalogIds = row.id || this.ids;
this.$modal.confirm('是否确认删除目录编号为"' + catalogIds + '"的数据项?' + '删除这条信息之后有可能找不回来了,请思考一下哟!').then(() => {
return deleteCatalog(catalogIds);
const ids = row.id || this.ids;
console.log('【删除ID】', ids);
this.$modal.confirm('确认删除选中的数据?').then(() => {
return deleteCatalog(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => { });
}).catch(error => {
console.error('删除失败:', error);
});
},
/** 导出按钮操作 */
handleExport() {
this.download('gysl/ml/export', {
...this.queryParams
}, `catalog_${new Date().getTime()}.xlsx`);
console.log('【导出参数】', JSON.stringify(this.queryParams, null, 2));
this.$modal.confirm('确认导出所有数据?').then(() => {
return exportCatalog(this.queryParams);
}).then(response => {
this.download(response.msg);
}).catch(error => {
console.error('导出失败:', error);
});
},
/** 导入按钮操作 */
handleImport() {
this.upload.open = true;
},
/** 下载模板操作 */
importTemplate() {
this.download("/gysl/ml/importTemplate", {}, `目录导入模板_${new Date().getTime()}.xlsx`);
},
//
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
//
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
this.getList();
},
//
submitFileForm() {
this.$refs.upload.submit();
}
}
};
@ -386,21 +393,9 @@ export default {
border: 1px solid #eee;
}
.tablehead {
display: flex;
justify-content: space-between;
align-items: center;
}
.headbtn {
display: flex;
}
.tablebtntwo {
margin-top: 1rem;
margin-bottom: 1rem;
margin: 1rem 0;
display: flex;
width: 100%;
justify-content: space-between;
}
@ -408,12 +403,4 @@ export default {
display: flex;
gap: .5rem;
}
.el-table .warning-row {
background: oldlace;
}
.el-table .success-row {
background: #f0f9eb;
}
</style>

@ -6,32 +6,31 @@
label-width="7rem">
<el-row>
<el-col :span="9">
<el-form-item label="产业类别" prop="postName" style="width: 100%;">
<el-input v-model="queryParams.postName" placeholder="请输入产业类别" clearable style="width: 26.5rem;"
<el-form-item label="产业类别" prop="cylb" style="width: 100%;">
<el-input v-model="queryParams.cylb" placeholder="请输入产业类别" clearable style="width: 26.5rem;"
@keyup.enter.native="handleQuery" />
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="产业细分" prop="postName" style="width: 100%;">
<el-input v-model="queryParams.postName" placeholder="请输入产业细分" clearable style="width: 20rem;"
<el-form-item label="产业细分" prop="cyxf" style="width: 100%;">
<el-input v-model="queryParams.cyxf" placeholder="请输入产业细分" clearable style="width: 20rem;"
@keyup.enter.native="handleQuery" />
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="上楼适应性" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择上楼适应性" clearable style="width: 20rem;">
<el-option v-for="dict in dict.type.slsyx" :key="dict.value"
:label="dict.label" :value="dict.value" />
<el-form-item label="上楼适应性" prop="slsyx">
<el-select v-model="queryParams.slsyx" placeholder="请选择上楼适应性" clearable
style="width: 20rem;">
<el-option v-for="dict in dict.type.slsyx" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="9">
<el-form-item label="更新时间" prop="">
<el-date-picker type="daterange" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
:style="{ width: '100%' }" start-placeholder="开始日期" end-placeholder="结束日期"
range-separator="至" clearable></el-date-picker>
<el-form-item label="更新时间" prop="updateTime">
<el-date-picker type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" :style="{ width: '26.5rem' }" placeholder="选择日期" clearable v-model="queryParams.updateTime"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
@ -49,31 +48,34 @@
<!-- 标签行 -->
<div class="tablehead">
<div class="tablebtntwo">
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd"></el-button>
</el-col>
</el-row>
</div>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd"></el-button>
</el-col>
</el-row>
</div>
<div class="headbtn">
<!-- <el-button type="primary" icon="el-icon-search">下载模板</el-button> -->
<el-button type="primary" size="mini" @click="handleExport"></el-button>
<el-button type="primary" size="mini" @click="handleImport"></el-button>
<el-button type="primary" size="mini" @click="handleExport"></el-button>
<el-button type="primary" size="mini" @click="handleImport"></el-button>
</div>
</div>
<el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="序号" align="center" prop="postId" /> -->
<el-table-column label="产业类别" align="center" prop="postName" />
<el-table-column label="产业细分" align="center" prop="postCode" />
<el-table-column label="原材料及生产环节" align="center" prop="postSort" />
<el-table-column label="上楼适应性" align="center" prop="postSort" />
<el-table-column label="更新时间" align="center" prop="postSort" />
<el-table-column label="产业类别" align="center" prop="cylb" />
<el-table-column label="产业细分" align="center" prop="cyxf" />
<el-table-column label="原材料及生产环节" align="center" prop="ycljschj" />
<el-table-column label="上楼适应性" align="center">
<template slot-scope="scope">
{{ slsyxMap[scope.row.slsyx] || scope.row.slsyx }}
</template>
</el-table-column>
<el-table-column label="更新时间" align="center" prop="updateTime" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" @click="handleEdit(scope.row)"></el-button>
<el-button size="mini" type="text" style="color: #F25353;" @click="handleDelete(scope.row)"></el-button>
<el-button size="mini" type="text" @click="handleEdit(scope.row)"></el-button>
<el-button size="mini" type="text" style="color: #F25353;"
@click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
@ -84,24 +86,20 @@
<!-- 添加或修改项目对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="项目名称" prop="postName">
<el-input v-model="form.postName" placeholder="请输入项目名称" />
</el-form-item>
<el-form-item label="项目编码" prop="postCode">
<el-input v-model="form.postCode" placeholder="请输入编码名称" />
<el-form-item label="产业类别" prop="cylb">
<el-input v-model="form.cylb" placeholder="请输入产业类别" />
</el-form-item>
<el-form-item label="项目顺序" prop="postSort">
<el-input-number v-model="form.postSort" controls-position="right" :min="0" />
<el-form-item label="产业细分" prop="cyxf">
<el-input v-model="form.cyxf" placeholder="请输入产业细分" />
</el-form-item>
<el-form-item label="项目状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio v-for="dict in dict.type.slsyx" :key="dict.value" :label="dict.value">{{
dict.label
}}</el-radio>
</el-radio-group>
<el-form-item label="原材料及生产环节" prop="ycljschj">
<el-input v-model="form.ycljschj" placeholder="请输入原材料及生产环节" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
<el-form-item label="上楼适应性" prop="slsyx">
<el-select v-model="form.slsyx" placeholder="请选择文件类型">
<el-option v-for="dict in dict.type.slsyx" :key="dict.value" :label="dict.label"
:value="parseInt(dict.value)"></el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@ -109,7 +107,7 @@
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 批量导入对话框 :headers="upload.headers" -->
<!-- 批量导入对话框 -->
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
<el-upload ref="upload" :limit="1" accept=".xlsx, .xls"
:action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
@ -117,9 +115,6 @@
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<!-- <div class="el-upload__tip" slot="tip">
<el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的用户数据
</div> -->
<span>仅允许导入xlsxlsx格式文件</span>
</div>
</el-upload>
@ -132,10 +127,10 @@
</template>
<script>
import { listPost, getPost, delPost, addPost, updatePost } from "@/api/system/post";
import { getXfcyglPage, getXfcyglById, deleteXfcygl, addXfcygl, updateXfcygl } from "@/api/ManageApi/index";
export default {
name: "Post",
name: "Subdivide",
dicts: ['slsyx'],
data() {
return {
@ -161,23 +156,27 @@ export default {
queryParams: {
pageNum: 1,
pageSize: 10,
postCode: undefined,
postName: undefined,
status: undefined
cylb: undefined,
cyxf: undefined,
slsyx: undefined,
dateRange: undefined
},
//
form: {},
//
rules: {
postName: [
{ required: true, message: "项目名称不能为空", trigger: "blur" }
],
postCode: [
{ required: true, message: "项目编码不能为空", trigger: "blur" }
],
postSort: [
{ required: true, message: "项目顺序不能为空", trigger: "blur" }
]
// cylb: [
// { required: true, message: "", trigger: "blur" }
// ],
// cyxf: [
// { required: true, message: "", trigger: "blur" }
// ],
// ycljschj: [
// { required: true, message: "", trigger: "blur" }
// ],
// slsyx: [
// { required: true, message: "", trigger: "change" }
// ]
},
//
upload: {
@ -189,12 +188,14 @@ export default {
isUploading: false,
//
updateSupport: 0,
//
// headers: { Authorization: "Bearer " + getToken() },
//
// url: process.env.VUE_APP_BASE_API + "/tc/assetApp/importData"
// url: location.origin + "/api/tc/assetApp/importData"
url: process.env.VUE_APP_BASE_API + "/gysl/xfcygl/imporXfcy"
},
//
slsyxMap: {
'1': '能上楼',
'2': '低楼层',
}
};
},
created() {
@ -224,9 +225,14 @@ export default {
/** 查询项目列表 */
getList() {
this.loading = true;
listPost(this.queryParams).then(response => {
this.postList = response.rows;
this.total = response.total;
const params = {
...this.queryParams,
startTime: this.queryParams.dateRange ? this.queryParams.dateRange[0] : undefined,
endTime: this.queryParams.dateRange ? this.queryParams.dateRange[1] : undefined
};
getXfcyglPage(params).then(response => {
this.postList = response.data.records;
this.total = response.data.total;
this.loading = false;
});
},
@ -238,12 +244,11 @@ export default {
//
reset() {
this.form = {
postId: undefined,
postCode: undefined,
postName: undefined,
postSort: 0,
status: "0",
remark: undefined
id: undefined,
cylb: undefined,
cyxf: undefined,
ycljschj: undefined,
slsyx: undefined,
};
this.resetForm("form");
},
@ -259,57 +264,89 @@ export default {
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.postId)
this.single = selection.length != 1
this.multiple = !selection.length
this.ids = selection.map(item => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加项目";
this.title = "添加细分产业";
},
/** 修改按钮操作 */
handleUpdate(row) {
handleEdit(row) {
this.reset();
const postId = row.postId || this.ids
getPost(postId).then(response => {
const id = row.id;
getXfcyglById(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改项目";
this.title = "修改细分产业";
});
},
/** 详情按钮操作 */
getInfo(row) {
this.$store.commit("SET_CRUMBS", this.$route.meta.title + "详情");
const postIds = row.postId || this.ids;
this.$router.push({ path: `/manage-info/${postIds}` });
},
/** 提交按钮 */
// submitForm
submitForm: function () {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.postId != undefined) {
updatePost(this.form).then(response => {
//
const submitData = {
...this.form,
createBy: '',
createId: 0,
id: 0,
createTime: '',
updateBy: '',
updateId: 0,
updateTime: ''
};
// 便
console.log('准备提交的数据:', JSON.stringify(submitData, null, 2));
if (this.form.id !== undefined) {
updateXfcygl(submitData).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).catch(error => {
console.error('修改失败:', error);
});
} else {
addPost(this.form).then(response => {
addXfcygl(submitData).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).catch(error => {
console.error('新增失败:', error);
});
}
}
});
},
//
reset() {
this.form = {
id: undefined,
cylb: undefined,
cyxf: undefined,
ycljschj: undefined,
slsyx: undefined,
createBy: this.$store.state.user.name,
createId: this.$store.state.user.userId,
createTime: undefined, //
updateBy: this.$store.state.user.name,
updateId: this.$store.state.user.userId,
updateTime: undefined //
};
this.resetForm("form");
},
/** 删除按钮操作 */
handleDelete(row) {
const postIds = row.postId || this.ids;
this.$modal.confirm('是否确认删除项目编号为"' + postIds + '"的数据项?' + '删除这条信息之后有可能找不回来了,请思考一下哟!').then(function () {
return delPost(postIds);
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除ID为"' + ids + '"的数据项?' + '删除这条信息之后有可能找不回来了,请思考一下哟!').then(function () {
return deleteXfcygl([ids]);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
@ -317,15 +354,14 @@ export default {
},
/** 导出按钮操作 */
handleExport() {
this.download('system/post/export', {
this.download('/gysl/xfcygl/exportXfcy', {
...this.queryParams
}, `post_${new Date().getTime()}.xlsx`)
}, `细分产业管理${new Date().getTime()}.xlsx`);
}
}
};
</script>
<style scoped>
.headerbox {
background-color: #fff;
@ -357,5 +393,4 @@ export default {
margin-top: 1rem;
margin-bottom: 1rem;
}
</style>

@ -21,22 +21,23 @@
</div>
</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="mainarea" style="height: 22rem; overflow: auto;">
<div class="mainareaitem" v-for="(item, index) in postList" :key="index">
<div class="itemleft">
<div class="xmmctitle">{{ item.xmmc }}</div>
<div class="xmmctitle">{{ item.name }}</div>
<div class="lefttwo">
<div>现状分类{{ item.xcfl }}</div>
<div>总投资额{{ item.ztzje }}</div>
<div>填报时间{{ item.tbrq }}</div>
<div>现状分类{{ xzflMap[item.xzfl] }}</div>
<div>总投资额{{ item.ztze }}</div>
<div>填报时间{{ item.updateTime }}</div>
<div>状态{{ statusMap[item.status] }}</div>
</div>
</div>
<div class="itemright" :class="getStatusClass(item.status)">
<div class="rightword">{{ item.status }}</div>
<div class="rightword">{{ statusMap[item.status] }}</div>
</div>
</div>
</div>
@ -55,46 +56,66 @@
<script>
import AllArea2 from '@/views/components/analysis/allcompany.vue'
import FunctionArea from '@/views/components/analysis/function.vue'
import InvestArea from '@/views/components/analysis/invest.vue'
import Message2 from '@/views/components/analysis/messagecompany.vue'
import daiban from '@/views/components/analysis/daiban.vue'
import { getBasicInformationPage } from "@/api/ManageApi/index";
export default {
name: "Pc2FbEcharts",
components: {
AllArea2,
FunctionArea,
InvestArea,
Message2,
daiban
},
data() {
return {
items: [
{ xmmc: '项目A', xcfl: '分类1', ztzje: '100万', tbrq: '2023-10-01', status: '待填报' },
{ xmmc: '项目B', xcfl: '分类2', ztzje: '200万', tbrq: '2023-10-02', status: '待审核' },
{ xmmc: '项目C', xcfl: '分类3', ztzje: '300万', tbrq: '2023-10-03', status: '审核通过' },
{ xmmc: '项目D', xcfl: '分类3', ztzje: '300万', tbrq: '2023-10-03', status: '待填报' },
]
//
postList: [],
//
statusColors: {
'审核通过': '#6EDABE',
'待填报': '#FFBF6B',
'待审核': '#7693D8'
},
//
statusMap: {
1: '待填报',
2: '待审核',
3: '审核通过'
},
xzflMap: {
1: '已建',
2: '再建',
3: '拟建'
},
//
loading: true,
};
},
mounted() {
created() {
this.getList();
},
methods: {
getStatusClass(status) {
switch (status) {
case '待填报':
return 'status-red';
case '待审核':
return 'status-yellow';
case '审核通过':
return 'status-green';
default:
return '';
}
}
const statusClasses = {
1: 'status-red', //
2: 'status-yellow', //
3: 'status-green' //
};
return statusClasses[status] || '';
},
/** 查询项目列表 */
getList() {
this.loading = true;
getBasicInformationPage().then((response) => {
this.postList = response.data.records;
this.loading = false;
}).catch(error => {
console.error('查询失败:', error);
this.loading = false;
});
},
},
};
</script>
@ -126,42 +147,6 @@ export default {
align-items: center;
}
.relaitem {
position: relative;
}
.itemsall {
position: absolute;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
top: 5.5rem;
left: 7.2rem;
}
.itemsall span:nth-child(1) {
font-family: DIN, DIN;
font-weight: 500;
font-size: 1.75rem;
color: #292C33;
line-height: 2.44rem;
text-align: left;
font-style: normal;
text-transform: none;
}
.itemsall span:nth-child(2) {
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
font-weight: 400;
font-size: 0.88rem;
color: #9E9E9E;
line-height: 1.25rem;
text-align: left;
font-style: normal;
text-transform: none;
}
.itemhead span {
margin-left: 1rem;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
@ -203,12 +188,10 @@ export default {
}
.mainareaitem {
/* padding: .5rem 0 .5rem .5rem; */
display: flex;
justify-content: space-between;
border: 1px solid #ccc;
margin: 0 1rem 0 0;
}
.itemleft {

@ -31,13 +31,13 @@ module.exports = {
// webpack-dev-server 相关配置
devServer: {
host: '0.0.0.0',
// public:'192.168.0.119',
public:'192.168.0.119',
port: port,
open: true,
proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: {
target: `http://192.168.0.125:7071/`,
target: `http://39.101.188.84:7071/`,
changeOrigin: true,
pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: ''

Loading…
Cancel
Save