接口联调

xuhongjie
严飞永 3 months ago
parent 598e2f426d
commit bd9813ae49

@ -61,7 +61,8 @@
"vue-meta": "2.4.0", "vue-meta": "2.4.0",
"vue-router": "3.4.9", "vue-router": "3.4.9",
"vuedraggable": "2.24.3", "vuedraggable": "2.24.3",
"vuex": "3.6.0" "vuex": "3.6.0",
"xlsx": "^0.18.5"
}, },
"devDependencies": { "devDependencies": {
"@vue/cli-plugin-babel": "4.4.6", "@vue/cli-plugin-babel": "4.4.6",

@ -1,35 +1,211 @@
// src/api/ManageApi/index.js
import request from '@/utils/request'; import request from '@/utils/request';
// 企业--基本信息==展示 // 企业--基本信息==展示
export function getBasicInformationById(id) { export function getBasicInformationById(id) {
return request({ return request({
url: `/gysl/basicInformation/${id}`, url: `/gysl/basicInformation/${id}`,
method: 'get' method: 'get'
}); });
} }
// 企业--基本信息==修改 // 企业--基本信息==修改
export function updateBasicInformation(data) { export function updateBasicInformation(data) {
return request({ return request({
url: `/gysl/basicInformation/edit`, url: `/gysl/basicInformation/edit`,
method: 'post', method: 'post',
data data
}); });
} }
// 通过主键查询单条基本信息(企业规划信息) // 通过主键查询单条基本信息(企业规划信息)
export function getProgrammeInformationById(id) { export function getProgrammeInformationById(id) {
return request({ return request({
url: `/gysl/planInformation/${id}`, url: `/gysl/planInformation/${id}`,
method: 'get' method: 'get'
}); });
} }
// 修改规划信息 // 基本信息的导出功能
export function updateProgrammeInformation(data) { export function exportBasicInformation(params) {
return request({ return request({
url: `/gysl/planInformation/edit`, url: `/gysl/basicInformation/export`,
method: 'post', method: 'post',
data data: params,
}); responseType: 'blob'
} });
}
// 项目评价清单
// 分页查询项目评价清单
export function getProjectEvaluationList(params) {
return request({
url: '/gysl/xmpjqd/page',
method: 'get',
params
});
}
// 项目评价配置接口
// 新增数据
export function addProjectEvaluation(data) {
return request({
url: '/gysl/pjpz/add',
method: 'post',
data
});
}
// 删除数据
export function deleteProjectEvaluation(idList) {
return request({
url: '/gysl/pjpz/delete',
method: 'delete',
params: { idList }
});
}
// 修改数据
export function updateProjectEvaluation(data) {
return request({
url: '/gysl/pjpz/edit',
method: 'post',
data
});
}
// 分页查询所有数据
export function getProjectEvaluationPage(params) {
return request({
url: '/gysl/pjpz/page',
method: 'get',
params
});
}
// 修改规划信息
export function updateProgrammeInformation(data) {
return request({
url: `/gysl/planInformation/edit`,
method: 'post',
data
});
}
// 要素指标管理
// 新增要素或者指标
export function addElement(data) {
return request({
url: '/gysl/mx/add',
method: 'post',
data
});
}
// 查询所有要素
export function getAllElements(params) {
return request({
url: '/gysl/mx/page',
method: 'get',
params
});
}
// 编辑要素或者指标
export function editElemention(data) {
return request({
url: '/gysl/mx/edit',
method: 'post',
data
});
}
// 删除指标
export function deleteElemention(id) {
return request({
url: `/gysl/mx/delete`,
method: 'delete'
});
}
// 目录管理
// 新增目录
export function addCatalog(data) {
return request({
url: '/gysl/ml/add',
method: 'post',
data
});
}
// 删除目录
export function deleteCatalog(idList) {
return request({
url: `/gysl/ml/delete`,
method: 'delete',
params: { idList }
});
}
// 修改目录
export function editCatalog(data) {
return request({
url: '/gysl/ml/edit',
method: 'post',
data
});
}
// 查询所有目录
export function getAllCatalogs(params) {
return request({
url: '/gysl/ml/page',
method: 'get',
params
});
}
// 项目知识库管理
// 新增数据
export function addXmzsk(data) {
return request({
url: '/gysl/xmzsk/add',
method: 'post',
data
});
}
// 删除数据
export function deleteXmzsk(idList) {
return request({
url: '/gysl/xmzsk/delete',
method: 'delete',
params: { idList }
});
}
// 修改数据
export function updateXmzsk(data) {
return request({
url: '/gysl/xmzsk/edit',
method: 'post',
data
});
}
// 分页查询所有数据
export function getXmzskPage(params) {
return request({
url: '/gysl/xmzsk/page',
method: 'get',
params
});
}
// 通过主键查询单条数据
export function getXmzskById(id) {
return request({
url: `/gysl/xmzsk/${id}`,
method: 'get'
});
}

@ -0,0 +1,232 @@
<template>
<div class="component-upload-image">
<el-upload
multiple
:action="uploadImgUrl"
list-type="picture-card"
:on-success="handleUploadSuccess"
:before-upload="handleBeforeUpload"
:limit="limit"
:on-error="handleUploadError"
:on-exceed="handleExceed"
ref="imageUpload"
:on-remove="handleDelete"
:show-file-list="true"
:headers="headers"
:file-list="fileList"
:on-preview="handlePictureCardPreview"
:class="{hide: this.fileList.length >= this.limit}"
>
<i class="el-icon-plus"></i>
</el-upload>
<!-- 上传提示 -->
<div class="el-upload__tip" slot="tip" v-if="showTip">
请上传
<template v-if="fileSize"> <b style="color: #f56c6c">{{ fileSize }}MB</b> </template>
<template v-if="fileType"> <b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template>
的文件
</div>
<el-dialog
:visible.sync="dialogVisible"
title="预览"
width="800"
append-to-body
>
<img
:src="dialogImageUrl"
style="display: block; max-width: 100%; margin: 0 auto"
/>
</el-dialog>
</div>
</template>
<script>
import { getToken } from "@/utils/auth";
import { isExternal } from "@/utils/validate";
export default {
props: {
value: [String, Object, Array],
//
limit: {
type: Number,
default: 1,
},
// (MB)
fileSize: {
type: Number,
default: 5,
},
// , ['png', 'jpg', 'jpeg']
fileType: {
type: Array,
default: () => ["png", "jpg", "jpeg"],
},
//
isShowTip: {
type: Boolean,
default: true
}
},
data() {
return {
number: 0,
uploadList: [],
dialogImageUrl: "",
dialogVisible: false,
hideUpload: false,
baseUrl: process.env.VUE_APP_BASE_API,
uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/upload", //
headers: {
Authorization: "Bearer " + getToken(),
},
fileList: []
};
},
watch: {
value: {
handler(val) {
if (val) {
//
const list = Array.isArray(val) ? val : this.value.split(',');
//
this.fileList = list.map(item => {
if (typeof item === "string") {
if (item.indexOf(this.baseUrl) === -1 && !isExternal(item)) {
item = { name: this.baseUrl + item, url: this.baseUrl + item };
} else {
item = { name: item, url: item };
}
}
return item;
});
} else {
this.fileList = [];
return [];
}
},
deep: true,
immediate: true
}
},
computed: {
//
showTip() {
return this.isShowTip && (this.fileType || this.fileSize);
},
},
methods: {
// loading
handleBeforeUpload(file) {
let isImg = false;
if (this.fileType.length) {
let fileExtension = "";
if (file.name.lastIndexOf(".") > -1) {
fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1);
}
isImg = this.fileType.some(type => {
if (file.type.indexOf(type) > -1) return true;
if (fileExtension && fileExtension.indexOf(type) > -1) return true;
return false;
});
} else {
isImg = file.type.indexOf("image") > -1;
}
if (!isImg) {
this.$modal.msgError(`文件格式不正确,请上传${this.fileType.join("/")}图片格式文件!`);
return false;
}
if (file.name.includes(',')) {
this.$modal.msgError('文件名不正确,不能包含英文逗号!');
return false;
}
if (this.fileSize) {
const isLt = file.size / 1024 / 1024 < this.fileSize;
if (!isLt) {
this.$modal.msgError(`上传头像图片大小不能超过 ${this.fileSize} MB!`);
return false;
}
}
this.$modal.loading("正在上传图片,请稍候...");
this.number++;
},
//
handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
},
//
handleUploadSuccess(res, file) {
if (res.code === 200) {
this.uploadList.push({ name: res.fileName, url: res.fileName });
this.uploadedSuccessfully();
} else {
this.number--;
this.$modal.closeLoading();
this.$modal.msgError(res.msg);
this.$refs.imageUpload.handleRemove(file);
this.uploadedSuccessfully();
}
},
//
handleDelete(file) {
const findex = this.fileList.map(f => f.name).indexOf(file.name);
if (findex > -1) {
this.fileList.splice(findex, 1);
this.$emit("input", this.listToString(this.fileList));
}
},
//
handleUploadError() {
this.$modal.msgError("上传图片失败,请重试");
this.$modal.closeLoading();
},
//
uploadedSuccessfully() {
if (this.number > 0 && this.uploadList.length === this.number) {
this.fileList = this.fileList.concat(this.uploadList);
this.uploadList = [];
this.number = 0;
this.$emit("input", this.listToString(this.fileList));
this.$modal.closeLoading();
}
},
//
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url;
this.dialogVisible = true;
},
//
listToString(list, separator) {
let strs = "";
separator = separator || ",";
for (let i in list) {
if (list[i].url) {
strs += list[i].url.replace(this.baseUrl, "") + separator;
}
}
return strs != '' ? strs.substr(0, strs.length - 1) : '';
}
}
};
</script>
<style scoped lang="scss">
// .el-upload--picture-card
::v-deep.hide .el-upload--picture-card {
display: none;
}
//
::v-deep .el-list-enter-active,
::v-deep .el-list-leave-active {
transition: all 0s;
}
::v-deep .el-list-enter, .el-list-leave-active {
opacity: 0;
transform: translateY(0);
}
</style>

@ -30,7 +30,6 @@ export default {
map.destroy(); map.destroy();
delete this[`map${this.withKeyId}`]; delete this[`map${this.withKeyId}`];
} }
console.log(">>>>> 地图卸载完成 >>>>");
}, },
methods: { methods: {
async initMap() { async initMap() {
@ -55,7 +54,6 @@ export default {
); );
this.$emit("onload", this[`map${this.withKeyId}`]); this.$emit("onload", this[`map${this.withKeyId}`]);
console.log("Map二维地图构造参数", mapOptions);
}, },
}, },
}; };

@ -1,355 +1,380 @@
<template> <template>
<div> <div>
<!-- 表单查询项 --> <!-- 表单查询项 -->
<div class="headerbox"> <div class="headerbox">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="200"> <el-form ref="queryForm" :model="queryParams" size="small" label-width="100px">
<el-row> <el-row>
<el-col :span="5"> <el-col :span="5">
<el-form-item label="文件名称" prop="postName" style="width: 100%;"> <el-form-item label="文件名称" prop="name" style="width: 100%;">
<el-input v-model="queryParams.postName" placeholder="请输入文件名称" clearable <el-input v-model="queryParams.name" placeholder="请输入文件名称" :fetch-suggestions="querySearchAsync"
@keyup.enter.native="handleQuery" /> @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="5"> <el-col :span="5">
<el-form-item label="文件类型"> <el-form-item label="文件类型" prop="lx">
<el-select v-model="form.region" placeholder="请选择文件类型"> <el-select v-model="queryParams.lx" placeholder="请选择文件类型">
<el-option label="区域一" value="shanghai"></el-option> <el-option v-for="dict in dict.type.wjlx" :key="dict.value" :label="dict.label"
<el-option label="区域二" value="beijing"></el-option> :value="dict.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="5">
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-form>
</el-form> </div>
<!-- 表格内容区 -->
<div class="tablebox">
<!-- 导出行 -->
<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> </div>
<!-- 表格内容区 --> <el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange">
<div class="tablebox"> <el-table-column label="文件名称" align="center" prop="name" />
<el-table-column label="类型" align="center">
<template slot-scope="scope">
{{ fileTypeMap[scope.row.lx] || scope.row.lx }}
</template>
</el-table-column>
<el-table-column label="附件" align="center" prop="fj" />
<el-table-column label="上传用户" align="center" prop="scyh" />
<el-table-column label="上传时间" align="center" prop="scsj" />
<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)"
v-hasPermi="['system:post:detail']">详情</el-button>
<el-button size="mini" type="text" @click="handleUpdate(scope.row)"
v-hasPermi="['system:post:edit']">编辑</el-button>
<el-button size="mini" type="text" @click="handleDelete(scope.row)" style="color: red;"
v-hasPermi="['system:post:remove']">删除</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="tablebtntwo"> <el-dialog :title="title" :visible.sync="open" width="40rem" append-to-body>
<el-row :gutter="10" class="mb8"> <el-form ref="form" :model="form" :rules="rules" label-width="7rem">
<el-col :span="1.5"> <el-form-item label="文件名称" prop="name">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" <el-input v-model="form.name" placeholder="请输入文件名称" />
v-hasPermi="['system:post:add']">新增</el-button> </el-form-item>
</el-col> <el-form-item label="类型" prop="lx">
<el-col :span="1.5"> <el-select v-model="form.lx" placeholder="请选择文件类型" style="width: 100%;">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" <el-option v-for="dict in dict.type.wjlx" :key="dict.value" :label="dict.label"
v-hasPermi="['system:post:edit']">修改</el-button> :value="dict.value"></el-option>
</el-col> </el-select>
<el-col :span="1.5"> </el-form-item>
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" <el-form-item label="上传用户" prop="scyh">
v-hasPermi="['system:post:remove']">删除</el-button> <el-input v-model="form.scyh" placeholder="请输入上传用户" />
</el-col> </el-form-item>
<el-col :span="1.5"> <el-form-item label="上传时间" prop="scsj">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" <el-date-picker v-model="form.scsj" type="date" placeholder="选择日期" value-format="yyyy-MM-dd"
v-hasPermi="['system:post:export']">导出</el-button> style="width: 100%;" />
</el-col> </el-form-item>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <el-form-item label="附件" prop="fj">
</el-row> <fileload v-model="form.fj"></fileload>
</div> </el-form-item>
<el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange"> </el-form>
<!-- <el-table-column type="selection" width="55" align="center" /> --> <div slot="footer" class="dialog-footer">
<!-- <el-table-column label="序号" align="center" prop="postId" /> --> <el-button type="primary" @click="submitForm"> </el-button>
<el-table-column label="文件名称" align="center" prop="postName" /> <el-button @click="cancel"> </el-button>
<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" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-view" @click="getInfo(scope.row)"
v-hasPermi="['system:post:detail']">详情</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['system:post:edit']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['system:post:remove']">删除</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>
</el-dialog>
<!-- 添加或修改项目对话框 --> <!-- 详情项目对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-dialog :title="title" :visible.sync="detailOpen" width="40rem" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="detailForm" :model="detailForm" label-width="7rem" :disabled="true">
<el-form-item label="项目名称" prop="postName"> <el-form-item label="文件名称" prop="name">
<el-input v-model="form.postName" placeholder="请输入项目名称" /> <el-input v-model="detailForm.name" placeholder="请输入文件名称" />
</el-form-item> </el-form-item>
<el-form-item label="项目编码" prop="postCode"> <el-form-item label="类型" prop="lx">
<el-input v-model="form.postCode" placeholder="请输入编码名称" /> <el-select v-model="detailForm.lx" placeholder="请选择文件类型" style="width: 100%;">
</el-form-item> <el-option v-for="dict in dict.type.wjlx" :key="dict.value" :label="dict.label"
<el-form-item label="项目顺序" prop="postSort"> :value="dict.value"></el-option>
<el-input-number v-model="form.postSort" controls-position="right" :min="0" /> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="项目状态" prop="status"> <el-form-item label="上传用户" prop="scyh">
<el-radio-group v-model="form.status"> <el-input v-model="detailForm.scyh" placeholder="请输入上传用户" />
<el-radio v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.value">{{ dict.label </el-form-item>
}}</el-radio> <el-form-item label="上传时间" prop="scsj">
</el-radio-group> <el-date-picker v-model="detailForm.scsj" type="date" placeholder="选择日期" value-format="yyyy-MM-dd"
</el-form-item> style="width: 100%;" />
<el-form-item label="备注" prop="remark"> </el-form-item>
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" /> <el-form-item label="附件" prop="fj">
</el-form-item> <el-input v-model="detailForm.fj" />
</el-form> </el-form-item>
<div slot="footer" class="dialog-footer"> </el-form>
<el-button type="primary" @click="submitForm"> </el-button> <div slot="footer" class="dialog-footer">
<el-button @click="cancel"> </el-button> <el-button @click="detailOpen = false">取消</el-button>
</div> <el-button @click="detailOpen = false">确定</el-button>
</el-dialog> </div>
<!-- 批量导入对话框 :headers="upload.headers" --> </el-dialog>
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body> </div>
<el-upload ref="upload" :limit="1" accept=".xlsx, .xls" </template>
: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>
</el-dialog>
</div>
</template>
<script> <script>
import { listPost, getPost, delPost, addPost, updatePost } from "@/api/system/post"; import { getXmzskPage, addXmzsk, updateXmzsk, deleteXmzsk, getXmzskById } from "@/api/ManageApi/index";
import fileload from "@/components/FileUpload/index.vue"
export default { export default {
name: "Post", dicts: ['wjlx'],
dicts: ['sys_normal_disable'], name: "Xmzsk",
data() { components: {
return { fileload
// },
loading: true, data() {
// return {
ids: [], //
// loading: true,
single: true, //
// ids: [],
multiple: true, //
// single: true,
showSearch: true, //
// multiple: true,
total: 0, //
// showSearch: true,
postList: [], //
// total: 0,
title: "", //
// postList: [],
open: false, //
// title: "",
queryParams: { //
pageNum: 1, open: false,
pageSize: 10, //
postCode: undefined, detailOpen: false,
postName: undefined, //
status: undefined queryParams: {
}, pageNum: 1,
// pageSize: 10,
form: {}, name: undefined,
// lx: undefined
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) { form: {
this.upload.open = false; id: undefined,
this.upload.isUploading = false; name: undefined,
this.$refs.upload.clearFiles(); lx: undefined,
this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true }); fj: undefined,
this.getList(); scsj: undefined,
}, scyh: undefined,
// createBy: undefined,
submitFileForm() { createId: undefined,
this.$refs.upload.submit(); createTime: undefined,
}, updateBy: undefined,
/** 查询项目列表 */ updateId: undefined,
getList() { updateTime: undefined
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() { detailForm: {
this.queryParams.pageNum = 1; id: undefined,
this.getList(); name: undefined,
}, lx: undefined,
/** 重置按钮操作 */ fj: undefined,
resetQuery() { scsj: undefined,
this.resetForm("queryForm"); scyh: undefined,
this.handleQuery(); createBy: undefined,
}, createId: undefined,
// createTime: undefined,
handleSelectionChange(selection) { updateBy: undefined,
this.ids = selection.map(item => item.postId) updateId: undefined,
this.single = selection.length != 1 updateTime: undefined
this.multiple = !selection.length
}, },
/** 新增按钮操作 */ //
handleAdd() { rules: {
this.reset(); name: [
this.open = true; { required: true, message: "文件名称不能为空", trigger: "blur" }
this.title = "添加项目"; ],
lx: [
{ required: true, message: "文件类型不能为空", trigger: "change" }
],
scyh: [
{ required: true, message: "上传用户不能为空", trigger: "blur" }
],
scsj: [
{ required: true, message: "上传时间不能为空", trigger: "change" }
]
}, },
/** 修改按钮操作 */ //
handleUpdate(row) { fileTypeMap: {
this.reset(); 1: "政策文件",
const postId = row.postId || this.ids 2: "研究报告",
getPost(postId).then(response => { 3: "网络信息",
this.form = response.data; 4: "其他",
this.open = true; }
this.title = "修改项目"; };
},
created() {
this.getList();
},
methods: {
querySearchAsync(queryString, cb) {
let results = [];
// getXmzskPage API
getXmzskPage({ name: queryString }).then(res => {
res.data.records.forEach(item => {
results.push({
value: item.name,
id: item.id,
});
}); });
}, });
/** 详情按钮操作 */ cb(results);
getInfo(row) { },
this.$store.commit("SET_CRUMBS", this.$route.meta.title + "详情"); //
const postIds = row.postId || this.ids; getList() {
this.$router.push({ path: `/manage-info/${postIds}` }); this.loading = true;
}, getXmzskPage(this.queryParams).then(response => {
/** 提交按钮 */ this.postList = response.data.records;
submitForm: function () { this.total = response.data.total;
this.$refs["form"].validate(valid => { this.loading = false;
if (valid) { }).catch(error => {
if (this.form.postId != undefined) { console.error('API Request Error:', error);
updatePost(this.form).then(response => { this.loading = false;
this.$modal.msgSuccess("修改成功"); });
this.open = false; },
this.getList(); //
}); cancel() {
} else { this.open = false;
addPost(this.form).then(response => { this.reset();
this.$modal.msgSuccess("新增成功"); },
this.open = false; //
this.getList(); reset() {
}); this.form = {
} id: undefined,
name: undefined,
lx: undefined,
fj: undefined,
scsj: undefined,
scyh: undefined,
createBy: undefined,
createId: undefined,
createTime: undefined,
updateBy: undefined,
updateId: undefined,
updateTime: 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.form = { ...row };
this.open = true;
this.title = "修改项目知识库";
},
/** 提交按钮 */
submitForm: function () {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id !== undefined) {
updateXmzsk(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).catch(error => {
console.error('API Request Error:', error);
});
} else {
addXmzsk(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).catch(error => {
console.error('API Request Error:', error);
});
} }
}); }
}, });
/** 删除按钮操作 */ },
handleDelete(row) { /** 删除按钮操作 */
const postIds = row.postId || this.ids; handleDelete(row) {
this.$modal.confirm('是否确认删除项目编号为"' + postIds + '"的数据项?' + '删除这条信息之后有可能找不回来了,请思考一下哟!').then(function () { const catalogIds = row.id || this.ids;
return delPost(postIds); this.$modal.confirm('是否确认删除项目知识库编号为"' + catalogIds + '"的数据项?').then(() => {
}).then(() => { return deleteXmzsk([catalogIds]);
this.getList(); }).then(() => {
this.$modal.msgSuccess("删除成功"); this.getList();
}).catch(() => { }); this.$modal.msgSuccess("删除成功");
}, }).catch(() => { });
/** 导出按钮操作 */ },
handleExport() { /** 详情按钮操作 */
this.download('system/post/export', { getInfo(row) {
...this.queryParams const catalogId = row.id;
}, `post_${new Date().getTime()}.xlsx`) getXmzskById(catalogId).then(response => {
} this.detailForm = { ...response.data };
this.detailOpen = true;
this.title = "项目知识库详情";
}).catch(error => {
console.error('API Request Error:', error);
});
} }
};
</script>
<style scoped>
.headerbox {
background-color: #fff;
border-radius: .5rem;
padding: 1rem;
margin: .5rem;
border: 1px solid #eee;
} }
};
</script>
.tablebox { <style scoped>
background-color: #fff; .headerbox {
border-radius: .5rem; background-color: #fff;
padding: 1rem; border-radius: .5rem;
margin: .5rem; padding: 1rem;
border: 1px solid #eee; margin: .5rem;
} border: 1px solid #eee;
}
.tablehead { .tablebox {
display: flex; background-color: #fff;
justify-content: space-between; border-radius: .5rem;
align-items: center; padding: 1rem;
} margin: .5rem;
border: 1px solid #eee;
}
.headbtn { .tablehead {
display: flex; display: flex;
} justify-content: space-between;
align-items: center;
}
.tablebtntwo { .headbtn {
margin-top: 1rem; display: flex;
margin-bottom: 1rem; }
}
</style>
.tablebtntwo {
margin-top: 1rem;
margin-bottom: 1rem;
}
</style>

@ -21,7 +21,7 @@
</el-button> </el-button>
</div> </div>
</div> </div>
<!-- 内容--> <!-- 内容展示-->
<div class="content"> <div class="content">
<div class="picturediv"> <div class="picturediv">
<img v-if="form.fj" :src="form.fj" alt="项目代表性照片" style="width: 100%; height: auto;"> <img v-if="form.fj" :src="form.fj" alt="项目代表性照片" style="width: 100%; height: auto;">
@ -39,159 +39,170 @@
</div> </div>
</div> </div>
<!-- 添加或编辑项目对话框 --> <!-- 添加或编辑项目对话框 -->
<el-dialog :title="title" :visible.sync="dialogVisible" width="70rem" append-to-body> <el-dialog :title="title" :visible.sync="dialogVisible" width="70rem" append-to-body>
<el-form :model="form" :rules="rules" ref="form" label-width="180px"> <el-form :model="form" :rules="rules" ref="form" label-width="180px">
<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.name"></el-input> <el-input v-model="form.name"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="建设地点"> <el-form-item label="建设地点">
<el-input v-model="form.jsdd"></el-input> <el-input v-model="form.jsdd"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<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.xmfrdwxz"></el-input> <el-input v-model="form.xmfrdwxz"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="重点发展产业"> <el-form-item label="重点发展产业">
<el-input v-model="form.prioritize <el-input v-model="form.prioritize
"></el-input> "></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="项目法人单位性质"> <el-form-item label="项目法人单位性质">
<el-select v-model="form.nature" placeholder="请选择" style="width: 22.5rem;"> <el-select v-model="form.nature" placeholder="请选择" value-key="value"
<el-option label="国企" value="国企"></el-option> style="width: 22.5rem;">
<el-option label="民企" value="民企"></el-option> <el-option v-for="dict in dict.type.xmfrdwxz" :key="dict.value" :label="dict.label"
</el-select> :value="parseInt(dict.value)" />
</el-form-item> </el-select>
</el-col> </el-form-item>
<el-col :span="12"> </el-col>
<el-form-item label="建设模式"> <el-col :span="12">
<el-select v-model="form.jsms" placeholder="请选择" style="width: 22.5rem;"> <el-form-item label="建设模式">
<el-option label="新供地实施" value="新供地实施"></el-option> <el-select v-model="form.jsms" placeholder="请选择" value-key="value" style="width: 22.5rem;">
<el-option label="其他模式" value="其他模式"></el-option> <el-option v-for="dict in dict.type.jsms" :key="dict.value" :label="dict.label"
</el-select> :value="parseInt(dict.value)" />
</el-form-item> </el-select>
</el-col> </el-form-item>
</el-row> </el-col>
<el-row> </el-row>
<el-col :span="12"> <el-row>
<el-form-item label="施工单位"> <el-col :span="12">
<el-input v-model="form.sgdw"></el-input> <el-form-item label="施工单位">
</el-form-item> <el-input v-model="form.sgdw"></el-input>
</el-col> </el-form-item>
<el-col :span="12"> </el-col>
<el-form-item label="项目标签"> <el-col :span="12">
<el-input v-model="form.label"></el-input> <el-form-item label="项目标签">
</el-form-item> <el-input v-model="form.label"></el-input>
</el-col> </el-form-item>
</el-row> </el-col>
<el-row> </el-row>
<el-col :span="12"> <el-row>
<el-form-item label="设计单位"> <el-col :span="12">
<el-input v-model="form.sjdw"></el-input> <el-form-item label="设计单位">
</el-form-item> <el-input v-model="form.sjdw"></el-input>
</el-col> </el-form-item>
<el-col :span="12"> </el-col>
<el-form-item label="项目负责人"> <el-col :span="12">
<el-input v-model="form.projectLeader"></el-input> <el-form-item label="项目负责人">
</el-form-item> <el-input v-model="form.projectLeader"></el-input>
</el-col> </el-form-item>
</el-row> </el-col>
<el-row> </el-row>
<el-col :span="12"> <el-row>
<el-form-item label="总投资额(万元)"> <el-col :span="12">
<el-input v-model.number="form.ztze"></el-input> <el-form-item label="总投资额(万元)">
</el-form-item> <el-input v-model.number="form.ztze"></el-input>
</el-col> </el-form-item>
<el-col :span="12"> </el-col>
<el-form-item label="联系方式"> <el-col :span="12">
<el-input v-model="form.phone"></el-input> <el-form-item label="联系方式">
</el-form-item> <el-input v-model="form.phone"></el-input>
</el-col> </el-form-item>
</el-row> </el-col>
<el-row> </el-row>
<el-col :span="12"> <el-row>
<el-form-item label="所属功能区"> <el-col :span="12">
<el-select v-model="form.ssgnq" placeholder="请选择" value-key="value" style="width: 22.5rem;"> <el-form-item label="所属功能区">
<el-option v-for="dict in dict.type.ssgnq" :key="dict.value" :label="dict.label" <el-select v-model="form.ssgnq" placeholder="请选择" value-key="value" style="width: 22.5rem;">
:value="parseInt(dict.value)" /> <el-option v-for="dict in dict.type.ssgnq" :key="dict.value" :label="dict.label"
</el-select> :value="parseInt(dict.value)" />
</el-form-item> </el-select>
</el-col> </el-form-item>
<el-col :span="12"> </el-col>
<el-form-item label="施工许可证发放时间"> <el-col :span="12">
<el-input v-model="form.issuingTime"></el-input> <!-- <el-form-item label="施工许可证发放时间">
</el-form-item> <el-date-picker
</el-col> v-model="form.issuingTime"
</el-row> type="datetime"
<el-row> placeholder="选择日期时间"
<el-col :span="12"> style="width: 22.5rem;"
<el-form-item label="建设起止时间"> value-format="yyyy-MM-dd HH:mm:ss"
<el-date-picker v-model="form.begainTime" type="daterange" range-separator="" ></el-date-picker>
start-placeholder="开始日期" end-placeholder="结束日期" style="width: 22.5rem;"></el-date-picker> </el-form-item> -->
</el-form-item> <el-form-item label="施工许可证发放时间">
</el-col> <el-input v-model="form.issuingTime"></el-input>
<el-col :span="12"> </el-form-item>
<el-form-item label="竣工验收时间"> </el-col>
<el-input v-model="form.acceptanceTime"></el-input> </el-row>
</el-form-item> <el-row>
</el-col> <el-col :span="12">
</el-row> <el-form-item label="建设起止时间">
<el-row> <el-date-picker v-model="form.begainTime" type="daterange" range-separator=""
<el-col :span="12"> start-placeholder="开始日期" end-placeholder="结束日期"
<el-form-item label="现状分类"> style="width: 22.5rem;"></el-date-picker>
<el-select v-model="form.xzfl" placeholder="请选择" style="width: 22.5rem;"> </el-form-item>
<el-option label="已建" value="已建"></el-option> </el-col>
<el-option label="在建" value="在建"></el-option> <el-col :span="12">
</el-select > <el-form-item label="竣工验收时间">
</el-form-item> <el-input v-model="form.acceptanceTime"></el-input>
</el-col> </el-form-item>
<el-col :span="12"> </el-col>
<el-form-item label="建设进度"> </el-row>
<el-input v-model="form.constructionProgress"></el-input> <el-row>
</el-form-item> <el-col :span="12">
</el-col> <el-form-item label="现状分类">
</el-row> <el-select v-model="form.xzfl" placeholder="请选择" value-key="value" style="width: 22.5rem;">
<el-form-item label="项目法人单位简介"> <el-option v-for="dict in dict.type.xzfl" :key="dict.value" :label="dict.label"
<el-input v-model="form.unitIntroduction" type="textarea" rows="4"></el-input> :value="parseInt(dict.value)" />
</el-form-item> </el-select>
<el-form-item label="项目简介"> </el-form-item>
<el-input v-model="form.introduction" type="textarea" rows="4"></el-input> </el-col>
</el-form-item> <el-col :span="12">
<el-form-item label="项目代表性照片"> <el-form-item label="建设进度">
<ImageUpload /> <el-input v-model="form.constructionProgress"></el-input>
<el-dialog :visible.sync="dialogVisibletwo"> </el-form-item>
<img width="100%" :src="dialogImageUrl" alt=""> </el-col>
</el-dialog> </el-row>
</el-form-item> <el-form-item label="项目法人单位简介">
</el-form> <el-input v-model="form.unitIntroduction" type="textarea" rows="4"></el-input>
<span slot="footer" class="dialog-footer"> </el-form-item>
<el-button @click="dialogVisible = false"> </el-button> <el-form-item label="项目简介">
<el-button type="primary" @click="saveForm"> </el-button> <el-input v-model="form.introduction" type="textarea" rows="4"></el-input>
</span> </el-form-item>
</el-dialog> <el-form-item label="项目代表性照片">
<ImageUpload v-model="form.fj" />
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="saveForm"> </el-button>
</span>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { getBasicInformationById, updateBasicInformation } from '@/api/ManageApi/index'; import { getBasicInformationById, updateBasicInformation,exportBasicInformation } from '@/api/ManageApi/index';
import ImageUpload from '@/components/ImageUpload2/index.vue';
export default { export default {
components: {
ImageUpload
},
dicts: [ dicts: [
'ssgnq' 'ssgnq', 'xmfrdwxz', 'xzfl', 'jsms'
], ],
props: { props: {
size: { size: {
@ -217,7 +228,7 @@ export default {
sgdw: '', sgdw: '',
sjdw: '', sjdw: '',
ztze: 0, ztze: 0,
ssgnq: '', ssgnq: 0,
begainTime: '', begainTime: '',
xzfl: 0, xzfl: 0,
jsdd: '', jsdd: '',
@ -235,6 +246,28 @@ export default {
rules: { rules: {
name: [{ required: true, message: '项目名称不能为空', trigger: 'blur' }], name: [{ required: true, message: '项目名称不能为空', trigger: 'blur' }],
jsdd: [{ required: true, message: '建设地点不能为空', trigger: 'blur' }], jsdd: [{ required: true, message: '建设地点不能为空', trigger: 'blur' }],
},
// select
ssgnqMap: {
1: '高端制造与国际贸易区',
2: '阳澄湖半岛旅游度假区',
3: '金鸡湖商务区',
4: '苏相合作区'
},
xmfrdwxzMap: {
1: '国企',
2: '外资企业',
3: '民营企业',
4: '其他'
},
jsmsMap: {
1: '工地实施',
2: '利用存量用地改扩建',
},
xzflMap: {
1: '已建',
2: '再建',
3: '拟建',
} }
}; };
}, },
@ -242,13 +275,6 @@ export default {
this.fetchData(); this.fetchData();
}, },
methods: { methods: {
handleRemove(file, fileList) {
console.log(file, fileList);
},
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url;
this.dialogVisible = true;
},
// //
fetchData() { fetchData() {
getBasicInformationById(this.id) getBasicInformationById(this.id)
@ -266,16 +292,16 @@ export default {
return [ return [
{ label: '项目名称', value: data.name }, { label: '项目名称', value: data.name },
{ label: '项目法人单位', value: data.xmfrdwxz }, { label: '项目法人单位', value: data.xmfrdwxz },
{ label: '项目法人单位性质', value: data.nature }, { label: '项目法人单位性质', value: this.xmfrdwxzMap[data.nature] || '未知' },
{ label: '施工单位', value: data.sgdw }, { label: '施工单位', value: data.sgdw },
{ label: '设计单位', value: data.sjdw }, { label: '设计单位', value: data.sjdw },
{ label: '总投资额(万元)', value: data.ztze }, { label: '总投资额(万元)', value: data.ztze },
{ label: '所属功能区', value: data.ssgnq }, { label: '所属功能区', value: this.ssgnqMap[data.ssgnq] || '未知' },
{ label: '建设起止时间', value: data.begainTime }, { label: '建设起止时间', value: data.begainTime },
{ label: '现状分类', value: data.xzfl }, { label: '现状分类', value: this.xzflMap[data.xzfl] || '未知' },
{ label: '建设地点', value: data.jsdd }, { label: '建设地点', value: data.jsdd },
{ label: '重点发展产业', value: data.prioritize }, { label: '重点发展产业', value: data.prioritize },
{ label: '建设模式', value: data.jsms }, { label: '建设模式', value: this.jsmsMap[data.jsms] || '未知' },
{ label: '项目标签', value: data.label }, { label: '项目标签', value: data.label },
{ label: '项目负责人', value: data.projectLeader }, { label: '项目负责人', value: data.projectLeader },
{ label: '联系方式', value: data.phone }, { label: '联系方式', value: data.phone },
@ -288,9 +314,52 @@ export default {
}, },
// //
handleExport() { handleExport() {
this.download('system/post/export', { //
...this.queryParams const queryParams = {
}, `post_${new Date().getTime()}.xlsx`); acceptanceTime: this.form.acceptanceTime,
begainTime: this.formatDateRange(this.form.begainTime),
createBy: '',
createId: 0,
createTime: '',
fj: this.form.fj,
id: this.id,
introduction: this.form.introduction,
issuingTime: this.form.issuingTime,
jsdd: this.form.jsdd,
jsms: parseInt(this.form.jsms),
label: this.form.label,
name: this.form.name,
nature: parseInt(this.form.nature),
phone: this.form.phone,
prioritize: this.form.prioritize,
projectLeader: this.form.projectLeader,
sgdw: this.form.sgdw,
sjdw: this.form.sjdw,
ssgnq: parseInt(this.form.ssgnq),
unitIntroduction: this.form.unitIntroduction,
updateBy: '',
updateId: 0,
updateTime: '',
xmfrdwxz: this.form.xmfrdwxz,
xzfl: parseInt(this.form.xzfl),
ztze: parseFloat(this.form.ztze)
};
console.log('queryParams:', queryParams); //
//
exportBasicInformation(queryParams)
.then(response => {
console.log('response:', response); //
const url = window.URL.createObjectURL(new Blob([response]));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', `basic_information_${new Date().getTime()}.xlsx`);
document.body.appendChild(link);
link.click();
})
.catch(error => {
console.error('导出失败:', error);
this.$message.error('导出失败,请重试!');
});
}, },
// //
edit() { edit() {
@ -306,6 +375,7 @@ export default {
this.$message.success('数据保存成功!'); this.$message.success('数据保存成功!');
this.dialogVisible = false; this.dialogVisible = false;
this.fetchData(); // this.fetchData(); //
// window.location.reload();//
}) })
.catch(error => { .catch(error => {
console.error('数据保存失败:', error); console.error('数据保存失败:', error);

@ -9,7 +9,7 @@
<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="addBuildingTag"> style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;" @click="addBuildingTag">
<img src="../../../assets/images/detailsicon/icon-xz@2x.png" alt="编辑" <img src="../../../assets/images/detailsicon/icon-xz@2x.png" alt="新增"
style="width: 0.6rem; height: 0.6rem; margin-right: 4px;"> style="width: 0.6rem; height: 0.6rem; margin-right: 4px;">
新增 新增
</el-button> </el-button>
@ -21,13 +21,13 @@
</el-button> </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;"> style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;">
<img src="../../../assets/images/detailsicon/icon-dc@2x.png" alt="编辑" <img src="../../../assets/images/detailsicon/icon-dc@2x.png" alt="导入"
style="width: 0.6rem; height: 0.6rem; margin-right: 4px;"> style="width: 0.6rem; height: 0.6rem; margin-right: 4px;">
导入 导入
</el-button> </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;"> style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;">
<img src="../../../assets/images/detailsicon/icon-dc@2x.png" alt="编辑" <img src="../../../assets/images/detailsicon/icon-dc@2x.png" alt="导出"
style="width: 0.6rem; height: 0.6rem; margin-right: 4px;"> style="width: 0.6rem; height: 0.6rem; margin-right: 4px;">
导出 导出
</el-button> </el-button>
@ -126,6 +126,108 @@
</el-descriptions> </el-descriptions>
</div> </div>
</div> </div>
<!-- 新增楼栋弹窗 -->
<el-dialog title="新增楼栋" :visible.sync="dialogVisible" width="65%">
<el-form :model="buildingForm" label-width="230px">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="楼栋名称:">
<el-input v-model="buildingForm.buildingNumber"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否为重要楼栋:">
<el-select v-model="buildingForm.isImportant" placeholder="请选择" style="width: 22.5rem;">
<el-option label="是" value="true"></el-option>
<el-option label="否" value="false"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="首层高度(米 ">
<el-input v-model="buildingForm.floors"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="层数:">
<el-input v-model="buildingForm.totalHeight"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="4层以上层高">
<el-input v-model="buildingForm.firstFloorHeight"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="柱距:">
<el-input v-model="buildingForm.secondToFourthFloorHeight"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="2至4层层高">
<el-input v-model="buildingForm.fourthFloorAboveHeight"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="*总建筑高度(米):">
<el-input v-model="buildingForm.secondToThirdFloorLoad"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否有汽车盘道">
<el-select v-model="buildingForm.hasCarRamp" placeholder="请选择" style="width: 22.5rem;">
<el-option label="是" value="true"></el-option>
<el-option label="否" value="false"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-form-item label="是否有吊装口">
<el-select v-model="buildingForm.hasLiftingPort" placeholder="请选择" style="width: 22.5rem;">
<el-option label="是" value="true"></el-option>
<el-option label="否" value="false"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="四层及以上楼面荷载(吨/平方米):">
<el-input v-model="buildingForm.standardFloorArea"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="标准层面积(千平方米):">
<el-input v-model="buildingForm.standardFloorArea"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="二至三层楼面荷载(吨/平方米):">
<el-input v-model="buildingForm.fourthFloorAboveLoad"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="首层地面荷载(吨/平方米):">
<el-input v-model="buildingForm.fourthFloorAboveLoad"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="handleAddBuilding"> </el-button>
</span>
</el-dialog>
</div> </div>
</template> </template>
@ -143,7 +245,24 @@ export default {
inputVisible: false, inputVisible: false,
inputValue: '', inputValue: '',
currentBuildingNumber: 3, currentBuildingNumber: 3,
activeTag: '1栋' activeTag: '1栋',
dialogVisible: false,
buildingForm: {
buildingNumber: '',
isImportant: '',
floors: '',
totalHeight: '',
firstFloorHeight: '',
secondToFourthFloorHeight: '',
fourthFloorAboveHeight: '',
firstFloorLoad: '',
secondToThirdFloorLoad: '',
standardFloorArea: '',
columnSpacing: '',
hasLiftingPort: '',
hasCarRamp: '',
fourthFloorAboveLoad: ''
}
}; };
}, },
methods: { methods: {
@ -165,13 +284,49 @@ export default {
this.activeTag = tag; this.activeTag = tag;
}, },
addBuildingTag() { addBuildingTag() {
this.currentBuildingNumber++; this.dialogVisible = true;
this.dynamicTags.push(`${this.currentBuildingNumber}`); this.resetBuildingForm();
},
resetBuildingForm() {
this.buildingForm = {
buildingNumber: '',
isImportant: '',
floors: '',
totalHeight: '',
firstFloorHeight: '',
secondToFourthFloorHeight: '',
fourthFloorAboveHeight: '',
firstFloorLoad: '',
secondToThirdFloorLoad: '',
standardFloorArea: '',
columnSpacing: '',
hasLiftingPort: '',
hasCarRamp: '',
fourthFloorAboveLoad: ''
};
},
handleAddBuilding() {
//
if (!this.buildingForm.buildingNumber) {
this.$message.error('请填写楼栋编号');
return;
}
// dynamicTags
this.dynamicTags.push(this.buildingForm.buildingNumber + '栋');
//
this.dialogVisible = false;
//
this.resetBuildingForm();
//
this.$message.success('新增楼栋成功');
} }
} }
} }
</script> </script>
<style scoped> <style scoped>
.container { .container {
display: flex; display: flex;

@ -1,250 +1,165 @@
<template> <template>
<div class="container"> <div class="maintenance">
<!-- 顶部信息 --> <!-- 导入按钮 -->
<div class="containertop"> <el-button type="primary" icon="plus" @click="handleOpenUploadDialog"> Excel</el-button>
<div class="topleft">
<img src="../../../assets/images/detailsicon/1.png" alt=""> <!-- 表格 -->
<span>企业入驻信息</span> <el-table :data="tableData" style="width: 100%" border>
</div> <el-table-column
<div class="topright"> v-for="(header, index) in tableHeaders"
<el-button type="primary" size="medium" plain :key="index"
style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;"> :prop="header"
<img src="../../../assets/images/detailsicon/icon-bj@2x.png" alt="编辑" :label="header"
style="width: 0.6rem; height: 0.6rem; margin-right: 4px;"> ></el-table-column>
编辑 </el-table>
</el-button>
<el-button type="primary" size="medium" plain <!-- 上传文件的弹窗 -->
style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;"> <el-dialog title="上传 Excel 文件" :visible.sync="uploadDialogVisible" width="30%">
<img src="../../../assets/images/detailsicon/icon-dc@2x.png" alt="编辑" <el-upload
style="width: 0.6rem; height: 0.6rem; margin-right: 4px;"> action="#"
导出 accept=".xlsx,.xls"
</el-button> :before-upload="beforeUpload"
</div> :on-change="handleFileChange"
</div> :auto-upload="false"
<!-- 内容区上方的表格 --> :show-file-list="false"
<div class="tagdiv"> >
<div class="descriptionsdiv"> <el-button type="primary" icon="upload">选择文件</el-button>
<el-descriptions class="margin-top" :column="4" border> <el-button type="primary" icon="download" @click="downloadTemplate"></el-button>
<el-descriptions-item> </el-upload>
<template slot="label"> <div v-if="fileName">
入驻企业数 已选择文件: {{ fileName }}
</template>
18100000000
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
入驻企业行业类型
</template>
苏州市
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
人员数量
</template>
kooriookami
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
入住率%
</template>
18100000000
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
已出租面积平方米
</template>
苏州市
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
空置出租面积平方米
</template>
kooriookami
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
工业厂房平均租金/平方米*
</template>
18100000000
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
工业厂房平均物业费(/平方米*)
</template>
苏州市
</el-descriptions-item>
</el-descriptions>
</div>
</div>
<!-- 内容区 -->
<div class="content">
<div class="descriptionsdiv">
<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="name" label="统一社会信用代码" width="300">
<template slot-scope="scope">
<span style="color: #2B62F1;">{{ scope.row.name }}</span>
</template>
</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="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> <span slot="footer" class="dialog-footer">
<el-button @click="uploadDialogVisible = false">取消</el-button>
<el-button type="primary" @click="handleUploadFile"></el-button>
</span>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import * as XLSX from 'xlsx';
export default { export default {
props: {
size: {
type: String,
default: '' //
}
},
data() { data() {
return { return {
tableData: [ title: 'Excel 文件处理',
{ uploadDialogVisible: false, //
date: '2016-05-02', tableHeaders: [], //
name: '大众电脑生成制造基地', tableData: [], //
address: ' 1518 弄', selectedFile: null, //
data: '1000', fileName: '', //
status: '在建' };
},
{
date: '2016-05-04',
name: '大众电脑生成制造基地',
address: ' 1517 弄',
data: '1500',
status: '拟建'
},
{
date: '2016-05-01',
name: '大众电脑生成制造基地',
address: ' 1519 弄',
data: '2000',
status: '已建'
},
{
date: '2016-05-03',
name: '大众电脑生成制造基地',
address: ' 1516 弄',
data: '2500',
status: '在建'
}
],
}
}, },
methods: { methods: {
getStatusColor(status) { //
switch (status) { handleOpenUploadDialog() {
case '在建': this.uploadDialogVisible = true;
return 'color: #2DD29F;'; },
case '拟建':
return 'color: #F08445;'; //
case '已建': beforeUpload(file) {
return 'color: #2B62F1;'; const isExcel =
file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ||
file.type === 'application/vnd.ms-excel';
if (!isExcel) {
this.$message.error('只能上传 Excel 文件!');
return false;
} }
}
}
}
</script>
<style scoped> const requiredHeaders = ['企业名称', '统一信用代码', '所属行业', '租金价格(元/每平方米*月)'];
.container { const reader = new FileReader();
display: flex; reader.onload = (e) => {
flex-direction: column; const data = e.target.result;
width: 100%; const workbook = XLSX.read(data, { type: 'binary' });
background-color: #FFFFFF;
box-shadow: 0rem 0.13rem 0.63rem 0rem rgba(177, 177, 177, 0.1);
border-radius: 0.5rem 0.5rem 0.5rem 0.5rem;
}
.content { //
padding: 1rem; const sheetName = workbook.SheetNames[0];
display: flex; const worksheet = workbook.Sheets[sheetName];
}
.containertop { // JSON
height: auto; const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1 });
display: flex;
justify-content: space-between;
padding: .7rem 0;
padding: .5rem;
border-bottom: 1px solid #E5E5E5;
}
.topleft { //
width: 8rem; if (jsonData.length > 0) {
display: flex; const headers = jsonData[0];
gap: 0.4rem; const hasRequiredHeaders = requiredHeaders.every(header => headers.includes(header));
align-items: center; if (!hasRequiredHeaders) {
} this.$message.error('上传的文件格式不正确,请使用模板文件!');
return false;
}
}
.topleft img { // handleFileChange
width: 0.81rem; this.handleFileChange({ raw: file, name: file.name });
height: 0.81rem; return true;
} };
.topleft span { reader.readAsBinaryString(file);
width: auto; return false; //
height: 0.88rem; },
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
font-weight: 500;
font-size: 0.88rem;
color: #3D424C;
line-height: 0.88rem;
text-align: right;
font-style: normal;
text-transform: none;
}
.picturediv { //
width: 18.31rem; handleFileChange(file) {
height: 25.31rem; if (file) {
background-color: lightblue; this.selectedFile = file.raw; //
} this.fileName = file.name; //
}
},
.descriptionsdiv { //
width: 100%; handleUploadFile() {
margin-left: 1rem; if (!this.selectedFile) {
height: auto; this.$message.warning('请先选择文件!');
} return;
}
.two-row-item { const reader = new FileReader();
height: 20rem; reader.onload = (e) => {
} const data = e.target.result;
const workbook = XLSX.read(data, { type: 'binary' });
.tagdiv { //
padding: 1rem 3em 1rem 1rem; const sheetName = workbook.SheetNames[0];
} const worksheet = workbook.Sheets[sheetName];
.block{
width: 100%; // JSON
display: flex; const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1 });
justify-content: space-between;
margin-top: 1rem; //
if (jsonData.length > 0) {
this.tableHeaders = jsonData[0]; //
this.tableData = jsonData.slice(1).map((row) => {
const rowData = {};
this.tableHeaders.forEach((header, index) => {
rowData[header] = row[index];
});
return rowData;
});
}
this.$message.success('文件上传并解析成功!');
this.uploadDialogVisible = false; //
};
reader.readAsBinaryString(this.selectedFile);
},
//
downloadTemplate() {
const link = document.createElement('a');
link.href = '/template.xlsx'; //
link.download = 'template.xlsx';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
},
},
};
</script>
<style scoped>
.maintenance {
padding: 20px;
} }
</style> </style>

@ -30,28 +30,22 @@
<span style="color: #2B62F1;">{{ scope.row.name }}</span> <span style="color: #2B62F1;">{{ scope.row.name }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="address" label="状态" width="200"> <el-table-column prop="status" label="状态" width="80">
</el-table-column>
<el-table-column prop="name" label="当月完成投资" width="240">
<template slot-scope="scope"> <template slot-scope="scope">
<span style="color: #2B62F1;">{{ scope.row.name }}</span> <span :style="getStatusColor(scope.row.status)">{{ scope.row.status }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="name" label="累计完成投资" width="220"> <el-table-column prop="number" label="当月完成投资" width="240">
<template slot-scope="scope"> </el-table-column>
<span style="color: #2B62F1;">{{ scope.row.name }}</span> <el-table-column prop="number" label="累计完成投资" width="220">
</template>
</el-table-column> </el-table-column>
<el-table-column prop="data" label='截止目前累计建成面积(平方米)' width="260"> <el-table-column prop="data" label='截止目前累计建成面积(平方米)' width="260">
</el-table-column> </el-table-column>
<el-table-column prop="data" label='贷款额度(万元)' width="200"> <el-table-column prop="number" label='贷款额度(万元)' width="200">
</el-table-column> </el-table-column>
<el-table-column prop="data" label='项目进展详情' width="140"> <el-table-column prop="data" label='项目进展详情' width="140">
</el-table-column> </el-table-column>
<el-table-column prop="status" label="状态" width="80"> <el-table-column prop="address" label="操作" width="200">
<template slot-scope="scope">
<span :style="getStatusColor(scope.row.status)">{{ scope.row.status }}</span>
</template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="block"> <div class="block">
@ -74,28 +68,32 @@ export default {
{ {
date: '2016-05-02', date: '2016-05-02',
name: '大众电脑生成制造基地', name: '大众电脑生成制造基地',
address: ' 1518 弄', number:1000,
address: ' 编辑 删除',
data: '1000', data: '1000',
status: '在建' status: '在建'
}, },
{ {
date: '2016-05-04', date: '2016-05-04',
name: '大众电脑生成制造基地', name: '大众电脑生成制造基地',
address: ' 1517 弄', number:1000,
address: ' 编辑 删除',
data: '1500', data: '1500',
status: '拟建' status: '拟建'
}, },
{ {
date: '2016-05-01', date: '2016-05-01',
name: '大众电脑生成制造基地', name: '大众电脑生成制造基地',
address: ' 1519 弄', number:1000,
address: ' 编辑 删除',
data: '2000', data: '2000',
status: '已建' status: '已建'
}, },
{ {
date: '2016-05-03', date: '2016-05-03',
name: '大众电脑生成制造基地', name: '大众电脑生成制造基地',
address: ' 1516 弄', number:1000,
address: ' 编辑 删除',
data: '2500', data: '2500',
status: '在建' status: '在建'
} }

@ -1,333 +1,354 @@
<template> <template>
<div class="container"> <div class="container">
<!-- 顶部信息 --> <!-- 顶部信息 -->
<div class="containertop"> <div class="containertop">
<div class="topleft"> <div class="topleft">
<img src="../../../assets/images/detailsicon/1.png" alt=""> <img src="../../../assets/images/detailsicon/1.png" alt="">
<span>规划信息</span> <span>规划信息</span>
</div>
<div class="topright">
<el-button v-if="!isEditing" type="primary" size="medium" plain 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;">
编辑
</el-button>
<el-button v-else type="primary" size="medium" plain style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;" @click="save">
<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 style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;" @click="handleExport">
<img src="../../../assets/images/detailsicon/icon-dc@2x.png" alt="编辑" style="width: 0.6rem; height: 0.6rem; margin-right: 4px;">
导出
</el-button>
</div>
</div> </div>
<!-- 内容区 --> <div class="topright">
<div class="content"> <el-button v-if="!isEditing" type="primary" size="medium" plain
<div class="descriptionsdiv"> style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;" @click="edit">
<el-descriptions class="margin-top" :column="4" border> <img src="../../../assets/images/detailsicon/icon-bj@2x.png" alt="编辑"
<el-descriptions-item> style="width: 0.6rem; height: 0.6rem; margin-right: 4px;">
<template slot="label"> 编辑
总用地面积(平方米) </el-button>
</template> <el-button v-else type="primary" size="medium" plain
<el-input v-if="isEditing" v-model.number="form.zydmj" style="width: 100%;"></el-input> style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;" @click="save">
<span v-else>{{ form.zydmj }}</span> <img src="../../../assets/images/detailsicon/icon-bj@2x.png" alt="保存"
</el-descriptions-item> style="width: 0.6rem; height: 0.6rem; margin-right: 4px;">
<el-descriptions-item> 保存
<template slot="label"> </el-button>
容积率 <el-button type="primary" size="medium" plain
</template> style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;" @click="handleExport">
<el-input v-if="isEditing" v-model.number="form.rjl" style="width: 100%;"></el-input> <img src="../../../assets/images/detailsicon/icon-dc@2x.png" alt="编辑"
<span v-else>{{ form.rjl }}</span> style="width: 0.6rem; height: 0.6rem; margin-right: 4px;">
</el-descriptions-item> 导出
<el-descriptions-item> </el-button>
<template slot="label">
总建筑面积平方米
</template>
<el-input v-if="isEditing" v-model.number="form.zjzmj" style="width: 100%;"></el-input>
<span v-else>{{ form.zjzmj }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
标准层建筑面积平方米
</template>
<el-input v-if="isEditing" v-model.number="form.bzcjzmj" style="width: 100%;"></el-input>
<span v-else>{{ form.bzcjzmj }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
计容积率建筑面积(平方米)
</template>
<el-input v-if="isEditing" v-model.number="form.jrjljzmj" style="width: 100%;"></el-input>
<span v-else>{{ form.jrjljzmj }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
建筑密度(%)
</template>
<el-input v-if="isEditing" v-model.number="form.jzmd" style="width: 100%;"></el-input>
<span v-else>{{ form.jzmd }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
绿地率(%)
</template>
<el-input v-if="isEditing" v-model.number="form.ldl" style="width: 100%;"></el-input>
<span v-else>{{ form.ldl }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
建筑栋数
</template>
<el-input v-if="isEditing" v-model.number="form.jzds" style="width: 100%;"></el-input>
<span v-else>{{ form.jzds }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
地上建筑面积(平方米)
</template>
<el-input v-if="isEditing" v-model.number="form.dsjzmj" style="width: 100%;"></el-input>
<span v-else>{{ form.dsjzmj }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
地下建筑面积(平方米)
</template>
<el-input v-if="isEditing" v-model.number="form.dxjzmj" style="width: 100%;"></el-input>
<span v-else>{{ form.dxjzmj }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
最高建筑层数
</template>
<el-input v-if="isEditing" v-model.number="form.zgjzcs" style="width: 100%;"></el-input>
<span v-else>{{ form.zgjzcs }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
最高建筑高度()
</template>
<el-input v-if="isEditing" v-model.number="form.zgjzgd" style="width: 100%;"></el-input>
<span v-else>{{ form.zgjzgd }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
机动车停车位()
</template>
<el-input v-if="isEditing" v-model.number="form.jdctcw" style="width: 100%;"></el-input>
<span v-else>{{ form.jdctcw }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
非机动车停车位()
</template>
<el-input v-if="isEditing" v-model.number="form.fjdctcw" style="width: 100%;"></el-input>
<span v-else>{{ form.fjdctcw }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
防火等级
</template>
<el-input v-if="isEditing" v-model="form.fhjd" style="width: 100%;"></el-input>
<span v-else>{{ form.fhjd }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
规划文件
</template>
<el-input v-if="isEditing" v-model="form.ghwj" style="width: 100%;"></el-input>
<span v-else>{{ form.ghwj }}</span>
</el-descriptions-item>
</el-descriptions>
</div>
</div> </div>
</div> </div>
</template> <!-- 内容区 -->
<div class="content">
<div class="descriptionsdiv">
<el-descriptions class="margin-top" :column="4" border>
<el-descriptions-item>
<template slot="label">
总用地面积(平方米)
</template>
<el-input v-if="isEditing" v-model.number="form.zydmj" style="width: 100%;"></el-input>
<span v-else>{{ form.zydmj }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
容积率
</template>
<el-input v-if="isEditing" v-model.number="form.rjl" style="width: 100%;"></el-input>
<span v-else>{{ form.rjl }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
总建筑面积平方米
</template>
<el-input v-if="isEditing" v-model.number="form.zjzmj" style="width: 100%;"></el-input>
<span v-else>{{ form.zjzmj }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
标准层建筑面积平方米
</template>
<el-input v-if="isEditing" v-model.number="form.bzcjzmj" style="width: 100%;"></el-input>
<span v-else>{{ form.bzcjzmj }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
计容积率建筑面积(平方米)
</template>
<el-input v-if="isEditing" v-model.number="form.jrjljzmj" style="width: 100%;"></el-input>
<span v-else>{{ form.jrjljzmj }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
建筑密度(%)
</template>
<el-input v-if="isEditing" v-model.number="form.jzmd" style="width: 100%;"></el-input>
<span v-else>{{ form.jzmd }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
绿地率(%)
</template>
<el-input v-if="isEditing" v-model.number="form.ldl" style="width: 100%;"></el-input>
<span v-else>{{ form.ldl }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
建筑栋数
</template>
<el-input v-if="isEditing" v-model.number="form.jzds" style="width: 100%;"></el-input>
<span v-else>{{ form.jzds }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
地上建筑面积(平方米)
</template>
<el-input v-if="isEditing" v-model.number="form.dsjzmj" style="width: 100%;"></el-input>
<span v-else>{{ form.dsjzmj }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
地下建筑面积(平方米)
</template>
<el-input v-if="isEditing" v-model.number="form.dxjzmj" style="width: 100%;"></el-input>
<span v-else>{{ form.dxjzmj }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
最高建筑层数
</template>
<el-input v-if="isEditing" v-model.number="form.zgjzcs" style="width: 100%;"></el-input>
<span v-else>{{ form.zgjzcs }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
最高建筑高度()
</template>
<el-input v-if="isEditing" v-model.number="form.zgjzgd" style="width: 100%;"></el-input>
<span v-else>{{ form.zgjzgd }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
机动车停车位()
</template>
<el-input v-if="isEditing" v-model.number="form.jdctcw" style="width: 100%;"></el-input>
<span v-else>{{ form.jdctcw }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
非机动车停车位()
</template>
<el-input v-if="isEditing" v-model.number="form.fjdctcw" style="width: 100%;"></el-input>
<span v-else>{{ form.fjdctcw }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
防火等级
</template>
<el-input v-if="isEditing" v-model="form.fhjd" style="width: 100%;"></el-input>
<span v-else>{{ form.fhjd }}</span>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
规划文件
</template>
<el-input v-if="isEditing" v-model="form.ghwj" style="width: 100%;"></el-input>
<span v-else>{{ form.ghwj }}</span>
</el-descriptions-item>
</el-descriptions>
</div>
</div>
</div>
</template>
<script> <script>
import { getProgrammeInformationById, updateProgrammeInformation } from '@/api/ManageApi/index'; import { getProgrammeInformationById, updateProgrammeInformation } from '@/api/ManageApi/index';
export default { export default {
props: { props: {
size: { size: {
type: String, type: String,
default: '' default: ''
},
id: {
type: [Number, String],
required: true
}
},
data() {
return {
isEditing: false,
form: {
bzcjzmj: 0,
createBy: '',
createId: 0,
createTime: '',
dsjzmj: 0,
dxjzmj: 0,
fjdctcw: 0,
ghwj: '',
id: 0,
jdctcw: 0,
jrjljzmj: 0,
jzds: 0,
jzmd: 0,
ldl: 0,
rjl: 0,
updateBy: '',
updateId: 0,
updateTime: '',
xmId: 0,
zgjzcs: 0,
zgjzgd: 0,
zjzmj: 0,
zydmj: 0
}, },
id: { rules: {
type: [Number, String], zydmj: [{ required: true, message: '总用地面积不能为空', trigger: 'blur' }],
required: true // rjl: [{ required: true, message: '', trigger: 'blur' }],
// zjzmj: [{ required: true, message: '', trigger: 'blur' }],
// bzcjzmj: [{ required: true, message: '', trigger: 'blur' }],
// jrjljzmj: [{ required: true, message: '', trigger: 'blur' }],
// jzmd: [{ required: true, message: '', trigger: 'blur' }],
// ldl: [{ required: true, message: '绿', trigger: 'blur' }],
// jzds: [{ required: true, message: '', trigger: 'blur' }],
// dsjzmj: [{ required: true, message: '', trigger: 'blur' }],
// dxjzmj: [{ required: true, message: '', trigger: 'blur' }],
// zgjzcs: [{ required: true, message: '', trigger: 'blur' }],
// zgjzgd: [{ required: true, message: '', trigger: 'blur' }],
// jdctcw: [{ required: true, message: '', trigger: 'blur' }],
// fjdctcw: [{ required: true, message: '', trigger: 'blur' }],
// fhjd: [{ required: true, message: '', trigger: 'blur' }],
// ghwj: [{ required: true, message: '', trigger: 'blur' }]
} }
};
},
created() {
this.fetchData();
},
methods: {
//
fetchData() {
getProgrammeInformationById(this.id)
.then(response => {
const data = response.data;
this.form = { ...data };
})
.catch(error => {
console.error('数据获取失败:', error);
});
}, },
data() { //
return { handleExport() {
isEditing: false, this.download('system/post/export', {
form: { ...this.queryParams
bzcjzmj: 0, }, `post_${new Date().getTime()}.xlsx`);
createBy: '',
createId: 0,
createTime: '',
dsjzmj: 0,
dxjzmj: 0,
fjdctcw: 0,
ghwj: '',
id: 0,
jdctcw: 0,
jrjljzmj: 0,
jzds: 0,
jzmd: 0,
ldl: 0,
rjl: 0,
updateBy: '',
updateId: 0,
updateTime: '',
xmId: 0,
zgjzcs: 0,
zgjzgd: 0,
zjzmj: 0,
zydmj: 0
},
rules: {
zydmj: [{ required: true, message: '总用地面积不能为空', trigger: 'blur' }],
rjl: [{ required: true, message: '容积率不能为空', trigger: 'blur' }],
zjzmj: [{ required: true, message: '总建筑面积不能为空', trigger: 'blur' }],
bzcjzmj: [{ required: true, message: '标准层建筑面积不能为空', trigger: 'blur' }],
jrjljzmj: [{ required: true, message: '计容积率建筑面积不能为空', trigger: 'blur' }],
jzmd: [{ required: true, message: '建筑密度不能为空', trigger: 'blur' }],
ldl: [{ required: true, message: '绿地率不能为空', trigger: 'blur' }],
jzds: [{ required: true, message: '建筑栋数不能为空', trigger: 'blur' }],
dsjzmj: [{ required: true, message: '地上建筑面积不能为空', trigger: 'blur' }],
dxjzmj: [{ required: true, message: '地下建筑面积不能为空', trigger: 'blur' }],
zgjzcs: [{ required: true, message: '最高建筑层数不能为空', trigger: 'blur' }],
zgjzgd: [{ required: true, message: '最高建筑高度不能为空', trigger: 'blur' }],
jdctcw: [{ required: true, message: '机动车停车位不能为空', trigger: 'blur' }],
fjdctcw: [{ required: true, message: '非机动车停车位不能为空', trigger: 'blur' }],
fhjd: [{ required: true, message: '防火等级不能为空', trigger: 'blur' }],
ghwj: [{ required: true, message: '规划文件不能为空', trigger: 'blur' }]
}
};
}, },
created() { //
this.fetchData(); edit() {
this.isEditing = true;
}, },
methods: { //
// save() {
fetchData() { if (this.validateForm()) {
getProgrammeInformationById(this.id) const formData = this.prepareFormData(this.form);
updateProgrammeInformation(formData)
.then(response => { .then(response => {
const data = response.data; this.$message.success('数据保存成功!');
this.form = { ...data }; this.isEditing = false;
//
setTimeout(() => {
this.fetchData(); //
}, 500); // 500
}) })
.catch(error => { .catch(error => {
console.error('数据获取失败:', error); console.error('数据保存失败:', error);
this.$message.error('数据保存失败,请重试!');
}); });
}, } else {
// this.$message.warning('请填写完整信息!');
handleExport() { }
this.download('system/post/export', { },
...this.queryParams //
}, `post_${new Date().getTime()}.xlsx`); validateForm() {
}, for (const field in this.rules) {
// const rules = this.rules[field];
edit() { const value = this.form[field];
this.isEditing = true; for (const rule of rules) {
}, if (rule.required && !value) {
// this.$message.error(rule.message);
save() { return false;
this.$refs.form.validate(valid => {
if (valid) {
const formData = this.prepareFormData(this.form);
updateProgrammeInformation(formData)
.then(response => {
this.$message.success('数据保存成功!');
this.isEditing = false;
this.fetchData(); //
})
.catch(error => {
console.error('数据保存失败:', error);
this.$message.error('数据保存失败,请重试!');
});
} else {
this.$message.warning('请填写完整信息!');
} }
}); }
},
//
prepareFormData(formData) {
return {
...formData,
createBy: '',
createId: 0,
createTime: '',
updateBy: '',
updateId: 0,
updateTime: ''
};
} }
return true;
},
//
prepareFormData(formData) {
return {
...formData,
createBy: '',
createId: 0,
createTime: '',
updateBy: '',
updateId: 0,
updateTime: ''
};
} }
};
</script>
<style scoped>
.container {
display: flex;
flex-direction: column;
width: 100%;
background-color: #FFFFFF;
box-shadow: 0rem 0.13rem 0.63rem 0rem rgba(177, 177, 177, 0.1);
border-radius: 0.5rem 0.5rem 0.5rem 0.5rem;
} }
};
</script>
.content { <style scoped>
padding: 1rem; .container {
display: flex; display: flex;
} flex-direction: column;
width: 100%;
background-color: #FFFFFF;
box-shadow: 0rem 0.13rem 0.63rem 0rem rgba(177, 177, 177, 0.1);
border-radius: 0.5rem 0.5rem 0.5rem 0.5rem;
}
.containertop { .content {
height: auto; padding: 1rem;
display: flex; display: flex;
justify-content: space-between; }
padding: .7rem 0;
padding: .5rem;
border-bottom: 1px solid #E5E5E5;
}
.topleft { .containertop {
width: 8rem; height: auto;
display: flex; display: flex;
gap: 0.4rem; justify-content: space-between;
align-items: center; padding: .7rem 0;
} padding: .5rem;
border-bottom: 1px solid #E5E5E5;
}
.topleft img { .topleft {
width: 0.81rem; width: 8rem;
height: 0.81rem; display: flex;
} gap: 0.4rem;
align-items: center;
}
.topleft span { .topleft img {
width: auto; width: 0.81rem;
height: 0.88rem; height: 0.81rem;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi; }
font-weight: 500;
font-size: 0.88rem;
color: #3D424C;
line-height: 0.88rem;
text-align: right;
font-style: normal;
text-transform: none;
}
.picturediv { .topleft span {
width: 18.31rem; width: auto;
height: 25.31rem; height: 0.88rem;
background-color: lightblue; font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
} font-weight: 500;
font-size: 0.88rem;
color: #3D424C;
line-height: 0.88rem;
text-align: right;
font-style: normal;
text-transform: none;
}
.descriptionsdiv { .picturediv {
width: 100%; width: 18.31rem;
margin-left: 1rem; height: 25.31rem;
height: auto; background-color: lightblue;
} }
.two-row-item { .descriptionsdiv {
height: 20rem; width: 100%;
} margin-left: 1rem;
</style> height: auto;
}
.two-row-item {
height: 20rem;
}
</style>

@ -60,7 +60,6 @@ export default {
}, },
data() { data() {
return { return {
size: '',
evaluations: [ evaluations: [
{ element: '总投资额', ranking: '100' }, { element: '总投资额', ranking: '100' },
{ element: '层数', ranking: '20' }, { element: '层数', ranking: '20' },

@ -71,22 +71,9 @@
<!-- 编辑/新增对话框 --> <!-- 编辑/新增对话框 -->
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="500px"> <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="500px">
<el-form :model="form" label-width="120px"> <el-form :model="form" label-width="120px">
<el-form-item label="项目名称"> <el-form-item label="项目代表性照片">
<el-input v-model="form.name"></el-input> <ImageUpload />
</el-form-item> </el-form-item>
<el-form-item label="项目地址">
<el-input v-model="form.address"></el-input>
</el-form-item>
<el-form-item label="经纬度">
<el-input v-model="form.latitude" placeholder="纬度"></el-input>
<el-input v-model="form.longitude" placeholder="经度"></el-input>
</el-form-item>
<el-form-item label="图片上传">
<el-upload action="https://jsonplaceholder.typicode.com/posts/" :on-success="handleUploadSuccess"
:on-remove="handleUploadRemove" :file-list="fileList">
<el-button type="primary">上传图片</el-button>
</el-upload>
</el-form-item>
</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>
@ -98,10 +85,10 @@
<script> <script>
import MapComponent from '../../map/index.vue'; import MapComponent from '../../map/index.vue';
import ImageUpload from '@/components/ImageUpload/index.vue';
export default { export default {
components: { components: {
MapComponent, MapComponent,ImageUpload
}, },
data() { data() {
return { return {

@ -0,0 +1,249 @@
<template>
<div class="container">
<!-- 顶部信息 -->
<div class="containertop">
<div class="topleft">
<img src="../../../assets/images/detailsicon/1.png" alt="">
<span>企业入驻信息</span>
</div>
<div class="topright">
<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-bj@2x.png" alt="编辑"
style="width: 0.6rem; height: 0.6rem; margin-right: 4px;">
编辑
</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>
</div>
</div>
<!-- 内容区上方的表格 -->
<div class="tagdiv">
<div class="descriptionsdiv">
<el-descriptions class="margin-top" :column="4" border>
<el-descriptions-item>
<template slot="label">
入驻企业数
</template>
18100000000
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
入驻企业行业类型
</template>
苏州市
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
人员数量
</template>
kooriookami
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
入住率%
</template>
18100000000
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
已出租面积平方米
</template>
苏州市
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
空置出租面积平方米
</template>
kooriookami
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
工业厂房平均租金/平方米*
</template>
18100000000
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
工业厂房平均物业费(/平方米*)
</template>
苏州市
</el-descriptions-item>
</el-descriptions>
</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>
</template>
<script>
export default {
props: {
size: {
type: String,
default: '' //
}
},
data() {
return {
tableData: [
{
date: '2016-05-02',
name: '大众电脑生成制造基地',
number: 123456,
address: ' 1518 弄',
data: '1000',
status: '在建'
},
{
date: '2016-05-04',
name: '大众电脑生成制造基地',
address: ' 1517 弄',
number: 123456,
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: '在建'
}
],
}
},
methods: {
getStatusColor(status) {
switch (status) {
case '在建':
return 'color: #2DD29F;';
case '拟建':
return 'color: #F08445;';
case '已建':
return 'color: #2B62F1;';
}
}
}
}
</script>
<style scoped>
.container {
display: flex;
flex-direction: column;
width: 100%;
background-color: #FFFFFF;
box-shadow: 0rem 0.13rem 0.63rem 0rem rgba(177, 177, 177, 0.1);
border-radius: 0.5rem 0.5rem 0.5rem 0.5rem;
}
.content {
padding: 1rem;
display: flex;
}
.containertop {
height: auto;
display: flex;
justify-content: space-between;
padding: .7rem 0;
padding: .5rem;
border-bottom: 1px solid #E5E5E5;
}
.topleft {
width: 8rem;
display: flex;
gap: 0.4rem;
align-items: center;
}
.topleft img {
width: 0.81rem;
height: 0.81rem;
}
.topleft span {
width: auto;
height: 0.88rem;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
font-weight: 500;
font-size: 0.88rem;
color: #3D424C;
line-height: 0.88rem;
text-align: right;
font-style: normal;
text-transform: none;
}
.picturediv {
width: 18.31rem;
height: 25.31rem;
background-color: lightblue;
}
.descriptionsdiv {
width: 100%;
margin-left: 1rem;
height: auto;
}
.two-row-item {
height: 20rem;
}
.tagdiv {
padding: 1rem 3em 1rem 1rem;
}
.block{
width: 100%;
display: flex;
justify-content: space-between;
margin-top: 1rem;
}
</style>

@ -220,9 +220,6 @@ export default {
getBasicInformationById(id) getBasicInformationById(id)
.then(response => { .then(response => {
this.form = response.data; this.form = response.data;
})
.catch(error => {
console.error('数据获取失败:', error);
}); });
}, },
// //
@ -237,11 +234,6 @@ export default {
this.loading = false; this.loading = false;
this.$message.success('修改成功'); this.$message.success('修改成功');
this.$router.push({ name: 'ProjectDetails', params: this.queryData }); this.$router.push({ name: 'ProjectDetails', params: this.queryData });
})
.catch(error => {
console.error('修改失败:', error);
this.$message.error('修改失败,请重试!');
this.loading = false;
}); });
} else { } else {
createBasicInformation(formData) createBasicInformation(formData)
@ -249,11 +241,6 @@ export default {
this.loading = false; this.loading = false;
this.$message.success('新增成功'); this.$message.success('新增成功');
this.$router.push({ name: 'ProjectDetails', params: this.queryData }); this.$router.push({ name: 'ProjectDetails', params: this.queryData });
})
.catch(error => {
console.error('新增失败:', error);
this.$message.error('新增失败,请重试!');
this.loading = false;
}); });
} }
} else { } else {

@ -1,327 +1,238 @@
<template> <template>
<div> <div>
<!-- 项目评价配置 --> <!-- 项目评价配置 -->
<div class="headerbox"> <div class="headerbox">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="200"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="200">
<el-row> <el-row>
<el-col :span="5"> <el-col :span="5">
<el-form-item label="评价要素" prop="postName" style="width: 100%;"> <el-form-item label="评价要素" prop="pjys" style="width: 100%;">
<el-input v-model="queryParams.postName" placeholder="请输入评价要素" clearable <el-input v-model="queryParams.pjys" placeholder="请输入评价要素" clearable
@keyup.enter.native="handleQuery" /> @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
</div> </div>
<!-- 表格内容区 --> <!-- 表格内容区 -->
<div class="tablebox"> <div class="tablebox">
<!-- 标签行 --> <!-- 标签行 -->
<div class="tablehead"> <div class="tablehead">
<div class="headbtn"> <div class="headbtn">
<el-button type="primary" icon="el-icon-search">添加规则</el-button> <el-button type="primary" icon="el-icon-plus" @click="handleAdd"></el-button>
</div>
</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" class-name="small-padding fixed-width">
<template slot-scope="scope">
<!-- <el-button size="mini" type="text" icon="el-icon-view" @click="getInfo(scope.row)"
v-hasPermi="['system:post:detail']">详情</el-button> -->
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['system:post:edit']">编辑</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['system:post:remove']">删除</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>
<el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange">
<!-- 添加或修改项目对话框 --> <el-table-column label="序号" align="center" prop="id" />
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-table-column label="评价要素" align="center" prop="pjys" />
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-table-column label="评价规则" align="center" prop="pfgz" />
<el-form-item label="项目名称" prop="postName"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-input v-model="form.postName" placeholder="请输入项目名称" /> <template slot-scope="scope">
</el-form-item> <el-button size="mini" type="text" @click="handleUpdate(scope.row)"
<el-form-item label="项目编码" prop="postCode"> v-hasPermi="['system:post:edit']">编辑</el-button>
<el-input v-model="form.postCode" placeholder="请输入编码名称" /> <el-button size="mini" type="text" style="color: red;" @click="handleDelete(scope.row)"
</el-form-item> v-hasPermi="['system:post:remove']">删除</el-button>
<el-form-item label="项目顺序" prop="postSort"> </template>
<el-input-number v-model="form.postSort" controls-position="right" :min="0" /> </el-table-column>
</el-form-item> </el-table>
<el-form-item label="项目状态" prop="status"> <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
<el-radio-group v-model="form.status"> @pagination="getList" />
<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"
: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>
</el-dialog>
</div> </div>
</template>
<script> <!-- 添加规则的弹窗 -->
import { listPost, getPost, delPost, addPost, updatePost } from "@/api/system/post"; <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.pjys" placeholder="请输入评价要素" />
</el-form-item>
<el-form-item label="评分规则" prop="postCode">
<el-input v-model="form.pfgz" 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>
</div>
</template>
export default { <script>
name: "Post", import { getProjectEvaluationPage, addProjectEvaluation, updateProjectEvaluation, deleteProjectEvaluation } from '@/api/ManageApi/index';
dicts: ['sys_normal_disable'],
data() { export default {
return { data() {
// return {
loading: true, //
// queryParams: {
ids: [], pageNum: 1,
// pageSize: 10,
single: true, postName: ''
// },
multiple: true, //
// postList: [],
showSearch: true, //
// total: 0, // total
total: 0, //
// showSearch: true,
postList: [], //
// loading: false,
title: "", //
// title: '',
open: false, //
// open: false,
queryParams: { //
pageNum: 1, form: {},
pageSize: 10, //
postCode: undefined, rules: {
postName: undefined, // postName: [
status: undefined // { required: true, message: '', trigger: 'blur' }
}, // ],
// // postCode: [
form: {}, // { required: true, message: '', trigger: 'blur' }
// // ]
rules: { }
postName: [ };
{ required: true, message: "项目名称不能为空", trigger: "blur" } },
], created() {
postCode: [ this.getList();
{ required: true, message: "项目编码不能为空", trigger: "blur" } },
], methods: {
postSort: [ //
{ required: true, message: "项目顺序不能为空", trigger: "blur" } getList() {
] this.loading = true;
}, console.log('Sending Query Params:', JSON.parse(JSON.stringify(this.queryParams))); //
// getProjectEvaluationPage(this.queryParams).then(response => {
upload: { console.log('API Response:', response); //
// if (response && response.data && response.data.records !== undefined && response.data.total !== undefined) {
open: false, this.postList = response.data.records; // 使 records
// this.total = response.data.total; // 使 total
title: "导入", } else {
// console.error('API Response is missing records or total:', response); //
isUploading: false, this.postList = [];
// this.total = 0;
updateSupport: 0, }
// this.loading = false;
// headers: { Authorization: "Bearer " + getToken() }, }).catch(error => {
// console.error('API Request Error:', error); //
// url: process.env.VUE_APP_BASE_API + "/tc/assetApp/importData" this.loading = false;
// url: location.origin + "/api/tc/assetApp/importData" });
},
};
}, },
created() { //
handleQuery() {
this.queryParams.postName = this.queryParams.pjys;
this.queryParams.pageNum = 1;
this.getList(); this.getList();
}, },
methods: { //
// resetQuery() {
handleImport() { this.resetForm('queryForm');
this.upload.open = true; this.handleQuery();
}, },
// //
handleFileUploadProgress(event, file, fileList) { handleSelectionChange(selection) {
this.upload.isUploading = true; this.ids = selection.map(item => item.id); // 使 id
}, this.single = selection.length !== 1;
// this.multiple = !selection.length;
handleFileSuccess(response, file, fileList) { },
this.upload.open = false; //
this.upload.isUploading = false; handleAdd() {
this.$refs.upload.clearFiles(); this.reset();
this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true }); this.open = true;
this.getList(); this.title = '添加规则';
}, },
// //
submitFileForm() { handleUpdate(row) {
this.$refs.upload.submit(); this.reset();
}, const postId = row.id || this.ids; // 使 id
/** 查询项目列表 */ //
getList() { this.form = { ...row };
this.loading = true; this.open = true;
listPost(this.queryParams).then(response => { this.title = '修改规则';
this.postList = response.rows; },
this.total = response.total; //
this.loading = false; cancel() {
}); this.open = false;
}, this.reset();
// },
cancel() { //
this.open = false; reset() {
this.reset(); this.form = {
}, id: undefined,
// pjys: undefined,
reset() { pfgz: undefined
this.form = { };
postId: undefined, this.resetForm('form');
postCode: undefined, },
postName: undefined, //
postSort: 0, submitForm() {
status: "0", this.$refs['form'].validate(valid => {
remark: undefined if (valid) {
}; if (this.form.id !== undefined) {
this.resetForm("form"); updateProjectEvaluation(this.form).then(response => {
}, this.$modal.msgSuccess('修改成功');
/** 搜索按钮操作 */ this.open = false;
handleQuery() { this.getList();
this.queryParams.pageNum = 1; });
this.getList(); } else {
}, addProjectEvaluation(this.form).then(response => {
/** 重置按钮操作 */ this.$modal.msgSuccess('新增成功');
resetQuery() { this.open = false;
this.resetForm("queryForm"); this.getList();
this.handleQuery(); });
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.postId)
this.single = selection.length != 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加项目";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const postId = row.postId || this.ids
getPost(postId).then(response => {
this.form = response.data;
this.open = true;
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: 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; handleDelete(row) {
this.$modal.confirm('是否确认删除项目编号为"' + postIds + '"的数据项?' + '删除这条信息之后有可能找不回来了,请思考一下哟!').then(function () { const postIds = row.id || this.ids; // 使 id
return delPost(postIds); this.$modal.confirm('是否确认删除项目评价配置编号为"' + postIds + '"的数据项?').then(() => {
}).then(() => { return deleteProjectEvaluation(postIds);
this.getList(); }).then(() => {
this.$modal.msgSuccess("删除成功"); this.getList();
}).catch(() => { }); 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;
} }
};
</script>
.tablebox { <style scoped>
background-color: #fff; .headerbox {
border-radius: .5rem; background-color: #fff;
padding: 1rem; border-radius: .5rem;
margin: .5rem; padding: 1rem;
border: 1px solid #eee; margin: .5rem;
} border: 1px solid #eee;
}
.tablehead { .tablebox {
display: flex; background-color: #fff;
justify-content: space-between; border-radius: .5rem;
align-items: center; padding: 1rem;
margin-bottom: .5rem margin: .5rem;
} border: 1px solid #eee;
}
.headbtn { .tablehead {
display: flex; display: flex;
} justify-content: space-between;
align-items: center;
margin-bottom: .5rem
}
.tablebtntwo { .headbtn {
margin-top: 1rem; display: flex;
margin-bottom: 1rem; }
}
</style>
.tablebtntwo {
margin-top: 1rem;
margin-bottom: 1rem;
}
</style>

@ -1,348 +1,179 @@
<!-- 项目评价清单 -->
<template> <template>
<div> <div>
<!-- 表单查询项 --> <!-- 表单查询项 -->
<div class="headerbox"> <div class="headerbox">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="200"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="200">
<el-row> <el-row>
<el-col :span="5"> <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 <el-input v-model="queryParams.postName" placeholder="请输入项目名称" clearable @keyup.enter.native="handleQuery" />
@keyup.enter.native="handleQuery" /> </el-form-item>
</el-form-item> </el-col>
</el-col> <el-col :span="9">
<el-col :span="9"> <el-form-item label="项目建设起止时间" prop="createTime">
<el-form-item label="项目建设起止时间" prop=""> <el-date-picker
<el-date-picker type="daterange" format="yyyy-MM-dd" value-format="yyyy-MM-dd" :style="{ width: '100%' }" type="daterange"
start-placeholder="开始日期" end-placeholder="结束日期" range-separator="至" clearable></el-date-picker> format="yyyy-MM-dd"
</el-form-item> value-format="yyyy-MM-dd"
</el-col> :style="{ width: '100%' }"
<el-col :span="5"> start-placeholder="开始日期"
<el-form-item label="现状分类" prop="status"> end-placeholder="结束日期"
<el-select v-model="queryParams.status" placeholder="现状分类" clearable> range-separator="至"
<el-option v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.label" clearable
:value="dict.value" /> v-model="queryParams.createTime"
</el-select> ></el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="5"> <el-col :span="5">
<el-form-item label="评价等级"> <el-form-item label="现状分类" prop="status">
<el-select v-model="form.region" placeholder="请选择活动区域"> <el-select v-model="queryParams.status" placeholder="现状分类" clearable>
<el-option label="区域一" value="shanghai"></el-option> <el-option v-for="dict in dict.type.xzfl" :key="dict.value" :label="dict.label" :value="dict.value" />
<el-option label="区域二" value="beijing"></el-option> </el-select>
</el-select> </el-form-item>
</el-form-item> </el-col>
</el-col> <el-col :span="5">
</el-row> <el-form-item label="评价等级">
<el-row> <el-select v-model="queryParams.pjdj" placeholder="请选择评价等级" clearable>
<el-col :span="8"> <el-option label="区域一" value="1"></el-option>
<el-form-item> <el-option label="区域二" value="2"></el-option>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button> </el-select>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button> </el-form-item>
</el-form-item> </el-col>
</el-col> </el-row>
</el-row> <el-row>
</el-form> <el-col :span="8">
</div> <el-form-item>
<!-- 表格内容区 --> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<div class="tablebox"> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
<el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange"> </el-form-item>
<el-table-column type="selection" width="55" align="center" /> </el-col>
<el-table-column label="序号" align="center" prop="postId" /> </el-row>
<el-table-column label="项目名称" align="center" prop="postName" /> </el-form>
<el-table-column label="现状分类" align="center" prop="postCode" /> </div>
<el-table-column label="项目法人单位" align="center" prop="postSort" /> <!-- 表格内容区 -->
<el-table-column label="项目建设起止时间" align="center" prop="postSort" /> <div class="tablebox">
<el-table-column label="项目评价" align="center" width="130" prop="postSort" /> <el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange">
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column type="selection" width="55" align="center" />
<template slot-scope="scope"> <el-table-column label="序号" align="center" prop="postId" />
<el-button size="mini" type="text" icon="el-icon-view" @click="getInfo(scope.row)" <el-table-column label="项目名称" align="center" prop="postName" />
v-hasPermi="['system:post:detail']">详情</el-button> <el-table-column label="现状分类" align="center" prop="status" />
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" <el-table-column label="项目法人单位" align="center" prop="xmfrdw" />
v-hasPermi="['system:post:edit']">修改</el-button> <el-table-column label="项目建设起止时间" align="center" prop="xmqzsj" />
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" <el-table-column label="项目评价" align="center" width="130" prop="xmpj" />
v-hasPermi="['system:post:remove']">删除</el-button> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
</template> <template slot-scope="scope">
</el-table-column> <el-button size="mini" type="text" icon="el-icon-view" @click="getInfo(scope.row)" v-hasPermi="['system:post:detail']"></el-button>
</el-table> <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:post:edit']"></el-button>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['system:post:remove']"></el-button>
@pagination="getList" /> </template>
</div> </el-table-column>
</el-table>
<!-- 添加或修改项目对话框 --> <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
<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"
: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>
</el-dialog>
</div> </div>
</template> </div>
</template>
<script> <script>
import { listPost, getPost, delPost, addPost, updatePost } from "@/api/system/post"; import { getProjectEvaluationList } from '@/api/ManageApi/index.js';
export default {
name: "Post", export default {
dicts: ['sys_normal_disable'], dicts: [
data() { 'xzfl'
return { ],
// data() {
loading: true, return {
// postList: [],
ids: [], loading: false,
// total: 0,
single: true, queryParams: {
// pageNum: 1,
multiple: true, pageSize: 10,
// postName: '',
showSearch: true, createTime: '',
// status: '',
total: 0, pjdj: ''
// },
postList: [], showSearch: true
// };
title: "", },
// methods: {
open: false, handleQuery() {
//
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(); this.getList();
}, },
methods: { resetQuery() {
// this.queryParams = {
handleImport() { pageNum: 1,
this.upload.open = true; pageSize: 10,
}, postName: '',
// createTime: '',
handleFileUploadProgress(event, file, fileList) { status: '',
this.upload.isUploading = true; pjdj: ''
}, };
// this.handleQuery();
handleFileSuccess(response, file, fileList) { },
this.upload.open = false; getList() {
this.upload.isUploading = false; this.loading = true;
this.$refs.upload.clearFiles(); getProjectEvaluationList(this.queryParams)
this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true }); .then(response => {
this.getList(); this.postList = response.data.records;
}, this.total = response.data.total;
// })
submitFileForm() { .catch(error => {
this.$refs.upload.submit(); console.error('获取项目评价清单失败:', error);
}, })
/** 查询项目列表 */ .finally(() => {
getList() {
this.loading = true;
listPost(this.queryParams).then(response => {
this.postList = response.rows;
this.total = response.total;
this.loading = false; this.loading = false;
}); });
}, },
// handleSelectionChange(selection) {
cancel() { //
this.open = false; },
this.reset(); getInfo(row) {
}, //
// },
reset() { handleUpdate(row) {
this.form = { //
postId: undefined, },
postCode: undefined, handleDelete(row) {
postName: undefined, //
postSort: 0,
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.postId)
this.single = selection.length != 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加项目";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const postId = row.postId || this.ids
getPost(postId).then(response => {
this.form = response.data;
this.open = true;
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: 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> mounted() {
this.getList();
<style scoped>
.headerbox {
background-color: #fff;
border-radius: .5rem;
padding: 1rem;
margin: .5rem;
border: 1px solid #eee;
} }
};
</script>
.tablebox { <style scoped>
background-color: #fff; .headerbox {
border-radius: .5rem; background-color: #fff;
padding: 1rem; border-radius: .5rem;
margin: .5rem; padding: 1rem;
border: 1px solid #eee; margin: .5rem;
} border: 1px solid #eee;
}
.tablehead { .tablebox {
display: flex; background-color: #fff;
justify-content: space-between; border-radius: .5rem;
align-items: center; padding: 1rem;
} margin: .5rem;
border: 1px solid #eee;
}
.headbtn { .tablehead {
display: flex; display: flex;
} justify-content: space-between;
align-items: center;
}
.tablebtntwo { .headbtn {
margin-top: 1rem; display: flex;
margin-bottom: 1rem; }
}
</style>
.tablebtntwo {
margin-top: 1rem;
margin-bottom: 1rem;
}
</style>

@ -22,7 +22,7 @@
</div> </div>
<!-- 基本信息 --> <!-- 基本信息 -->
<div id="basic"> <div id="basic">
<Basic :id="projectId"></Basic> <Basic :id="9"></Basic>
</div> </div>
<!-- 规划信息 --> <!-- 规划信息 -->
<div id="programme"> <div id="programme">

@ -6,8 +6,7 @@
<el-row> <el-row>
<el-col :span="5"> <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 <el-input v-model="queryParams.postName" placeholder="请输入项目名称" clearable @keyup.enter.native="handleQuery" />
@keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="9"> <el-col :span="9">
@ -19,8 +18,7 @@
<el-col :span="5"> <el-col :span="5">
<el-form-item label="现状分类" prop="status"> <el-form-item label="现状分类" prop="status">
<el-select v-model="queryParams.status" placeholder="现状分类" clearable> <el-select v-model="queryParams.status" placeholder="现状分类" clearable>
<el-option v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.label" <el-option v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.label" :value="dict.value" />
:value="dict.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -49,33 +47,31 @@
<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-search">下载模板</el-button> <el-button type="primary" icon="el-icon-search" @click="downloadTemplate"></el-button>
<el-button type="primary" icon="el-icon-upload2" size="mini" @click="handleImport"></el-button> <el-button type="primary" icon="el-icon-download" size="mini" @click="handleImport"></el-button>
</div> </div>
</div> </div>
<!-- 导出行 --> <!-- 导出行 -->
<div class="tablebtntwo"> <div class="tablebtntwo">
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" <el-button type="primary" icon="el-icon-upload2" size="medium" @click="handleExport" v-hasPermi="['system:post:export']"></el-button>
v-hasPermi="['system:post:add']">新增</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" <el-dropdown @command="handleExportCommand">
v-hasPermi="['system:post:edit']">修改</el-button> <el-button type="primary" size="medium">
导出材料<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="single-material">单片材料</el-dropdown-item>
<el-dropdown-item command="report">报告</el-dropdown-item>
<el-dropdown-item command="project-manual">项目手册</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-col> </el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
v-hasPermi="['system:post:remove']">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
v-hasPermi="['system:post:export']">导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
</div> </div>
<el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange" stripe>
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" align="center" prop="postId" /> <el-table-column label="序号" align="center" prop="postId" />
<el-table-column label="项目名称" align="center" prop="postName" /> <el-table-column label="项目名称" align="center" prop="postName" />
@ -84,19 +80,16 @@
<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" width="130" 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="status" />
<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" icon="el-icon-view" @click="getInfo(scope.row)" <el-button size="mini" type="text" icon="el-icon-view" @click="getInfo(scope.row)" v-hasPermi="['system:post:detail']"></el-button>
v-hasPermi="['system:post:detail']">详情</el-button> <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:post:edit']"></el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['system:post:remove']"></el-button>
v-hasPermi="['system:post:edit']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['system:post:remove']">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
@pagination="getList" />
</div> </div>
<!-- 添加或修改项目对话框 --> <!-- 添加或修改项目对话框 -->
@ -113,8 +106,7 @@
</el-form-item> </el-form-item>
<el-form-item label="项目状态" prop="status"> <el-form-item label="项目状态" prop="status">
<el-radio-group v-model="form.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 v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
}}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
@ -126,17 +118,12 @@
<el-button @click="cancel"> </el-button> <el-button @click="cancel"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
<!-- 批量导入对话框 :headers="upload.headers" --> <!-- 批量导入对话框 -->
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body> <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
<el-upload ref="upload" :limit="1" accept=".xlsx, .xls" <el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
: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> <i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div> <div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip"> <div class="el-upload__tip text-center" slot="tip">
<!-- <div class="el-upload__tip" slot="tip">
<el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的用户数据
</div> -->
<span>仅允许导入xlsxlsx格式文件</span> <span>仅允许导入xlsxlsx格式文件</span>
</div> </div>
</el-upload> </el-upload>
@ -206,11 +193,8 @@ export default {
isUploading: false, isUploading: false,
// //
updateSupport: 0, updateSupport: 0,
//
// headers: { Authorization: "Bearer " + getToken() },
// //
// url: process.env.VUE_APP_BASE_API + "/tc/assetApp/importData" url: location.origin + "/api/system/post/importData"
// url: location.origin + "/api/tc/assetApp/importData"
}, },
}; };
}, },
@ -245,6 +229,9 @@ export default {
this.postList = response.rows; this.postList = response.rows;
this.total = response.total; this.total = response.total;
this.loading = false; this.loading = false;
}).catch(error => {
console.error('获取项目列表失败', error);
this.loading = false;
}); });
}, },
// //
@ -276,9 +263,9 @@ export default {
}, },
// //
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map(item => item.postId) this.ids = selection.map(item => item.postId);
this.single = selection.length != 1 this.single = selection.length !== 1;
this.multiple = !selection.length this.multiple = !selection.length;
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
@ -289,34 +276,40 @@ export default {
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.reset(); this.reset();
const postId = row.postId || this.ids const postId = row.postId || this.ids[0];
getPost(postId).then(response => { getPost(postId).then(response => {
this.form = response.data; this.form = response.data;
this.open = true; this.open = true;
this.title = "修改项目"; this.title = "修改项目";
}).catch(error => {
console.error('获取项目详情失败', error);
}); });
}, },
/** 详情按钮操作 */ /** 详情按钮操作 */
getInfo(row) { getInfo(row) {
this.$store.commit("SET_CRUMBS", this.$route.meta.title + "详情"); this.$store.commit("SET_CRUMBS", this.$route.meta.title + "详情");
const postIds = row.postId || this.ids; const postIds = row.postId || this.ids[0];
this.$router.push({ path: `/manage-info/${postIds}` }); this.$router.push({ path: `/manage-info/${postIds}` });
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm: function () { submitForm() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (valid) { if (valid) {
if (this.form.postId != undefined) { if (this.form.postId !== undefined) {
updatePost(this.form).then(response => { updatePost(this.form).then(response => {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
this.open = false; this.open = false;
this.getList(); this.getList();
}).catch(error => {
console.error('修改项目失败', error);
}); });
} else { } else {
addPost(this.form).then(response => { addPost(this.form).then(response => {
this.$modal.msgSuccess("新增成功"); this.$modal.msgSuccess("新增成功");
this.open = false; this.open = false;
this.getList(); this.getList();
}).catch(error => {
console.error('新增项目失败', error);
}); });
} }
} }
@ -324,25 +317,83 @@ export default {
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const postIds = row.postId || this.ids; const postIds = row.postId || this.ids.join(',');
this.$modal.confirm('是否确认删除项目编号为"' + postIds + '"的数据项?' + '删除这条信息之后有可能找不回来了,请思考一下哟!').then(function () { this.$modal.confirm('是否确认删除项目编号为"' + postIds + '"的数据项?删除这条信息之后有可能找不回来了,请思考一下哟!').then(() => {
return delPost(postIds); delPost(postIds).then(() => {
}).then(() => { this.getList();
this.getList(); this.$modal.msgSuccess("删除成功");
this.$modal.msgSuccess("删除成功"); }).catch(error => {
}).catch(() => { }); console.error('删除项目失败', error);
});
}).catch(() => {});
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
this.download('system/post/export', { this.download('system/post/export', {
...this.queryParams ...this.queryParams
}, `post_${new Date().getTime()}.xlsx`) }, `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>
<style scoped> <style scoped>
.headerbox { .headerbox {
background-color: #fff; background-color: #fff;

@ -1,377 +1,415 @@
<template> <template>
<div> <div>
<!-- 产业导向管理--目录管理 --> <!-- 产业导向管理--目录管理 -->
<div class="headerbox"> <div class="headerbox">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="7rem">
label-width="7rem"> <el-row>
<el-row> <el-col :span="9">
<el-col :span="9"> <el-form-item label="上楼目录类别" prop="slmllb" style="width: 100%;">
<el-form-item label="上楼目录类别" prop="postName" style="width: 100%;"> <el-input v-model="queryParams.slmllb" placeholder="请输入上楼目录类别" clearable style="width: 26.5rem;"
<el-input v-model="queryParams.postName" placeholder="请输入上楼目录类别" clearable style="width: 26.5rem;" @keyup.enter.native="handleQuery" />
@keyup.enter.native="handleQuery" /> </el-form-item>
</el-form-item> </el-col>
</el-col> <el-col :span="6">
<el-col :span="6"> <el-form-item label="工业大类" prop="industryCategory" style="width: 100%;">
<el-form-item label="工业大类" prop="postName" style="width: 100%;"> <el-input v-model="queryParams.industryCategory" placeholder="请输入工业大类" clearable style="width: 15.5rem;"
<el-input v-model="queryParams.postName" placeholder="请输入工业大类" clearable @keyup.enter.native="handleQuery" maxlength="50" show-word-limit />
@keyup.enter.native="handleQuery" /> </el-form-item>
</el-form-item> </el-col>
</el-col> <el-col :span="6">
<el-col :span="6"> <el-form-item label="产业" prop="industry" style="width: 100%;">
<el-form-item label="产业" prop="postName" style="width: 100%;"> <el-input v-model="queryParams.industry" placeholder="请输入产业" clearable style="width: 15.5rem;" @keyup.enter.native="handleQuery"
<el-input v-model="queryParams.postName" placeholder="请输入产业" clearable maxlength="50" show-word-limit />
@keyup.enter.native="handleQuery" /> </el-form-item>
</el-form-item> </el-col>
</el-col> </el-row>
</el-row> <el-row>
<el-row> <el-col :span="9">
<el-col :span="9"> <el-form-item label="更新时间" prop="updateTime">
<el-form-item label="更新时间" prop=""> <el-date-picker v-model="queryParams.updateTimeRange" type="daterange" format="yyyy-MM-dd"
<el-date-picker type="daterange" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd" :style="{ width: '100%' }" start-placeholder="开始日期" end-placeholder="结束日期"
:style="{ width: '100%' }" start-placeholder="开始日期" end-placeholder="结束日期" range-separator="至" clearable @change="handleQuery" />
range-separator="至" clearable></el-date-picker> </el-form-item>
</el-form-item> </el-col>
</el-col> <el-col :span="8">
<el-col :span="8"> <el-form-item style="margin-left: 2.5rem;">
<el-form-item style="margin-left: 2.5rem;"> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button type="primary" icon="el-icon-search" size="mini" <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
@click="handleQuery">查询</el-button> </el-form-item>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button> </el-col>
</el-form-item> </el-row>
</el-col> </el-form>
</el-row> </div>
</el-form> <!-- 表格内容区 -->
<div class="tablebox">
<!-- 标签行 -->
<div class="tablehead">
<div class="tablebtntwo">
<div>
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['system:post:add']">新增</el-button>
</div>
<div class="tablebtn">
<el-button type="primary" size="mini" @click="handleExport"
v-hasPermi="['system:post:export']">导出</el-button>
<el-button type="primary" size="mini" @click="handleImport"></el-button>
</div>
</div> </div>
<!-- 表格内容区 --> </div>
<div class="tablebox"> <el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange"
<!-- 标签行 --> :row-class-name="tableRowClassName">
<div class="tablehead"> <el-table-column label="序号" align="center" prop="id" />
<div class="tablebtntwo"> <el-table-column label="上楼目录类别" align="center" prop="slmllb" />
<el-row :gutter="10" class="mb8"> <el-table-column label="工业大类" align="center" prop="gydl" />
<el-col :span="1.5"> <el-table-column label="产业" align="center" prop="cy" />
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" <el-table-column label="更新时间" align="center" prop="updateTime" />
v-hasPermi="['system:post:add']">新增</el-button> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
</el-col> <template slot-scope="scope">
<!-- <el-col :span="1.5"> <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" v-hasPermi="['system:post:edit']">修改</el-button>
@click="handleUpdate" v-hasPermi="['system:post:edit']">修改</el-button> <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
</el-col> v-hasPermi="['system:post:remove']">删除</el-button>
<el-col :span="1.5"> </template>
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" </el-table-column>
@click="handleDelete" v-hasPermi="['system:post:remove']">删除</el-button> </el-table>
</el-col> <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
<el-col :span="1.5"> @pagination="getList" />
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" </div>
v-hasPermi="['system:post:export']">导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> -->
</el-row>
</div>
<div class="headbtn">
<!-- <el-button type="primary" icon="el-icon-search">下载模板</el-button> -->
<el-button type="primary" icon="el-icon-download" size="mini" @click="handleExport"
v-hasPermi="['system:post:export']">导出</el-button>
<el-button type="primary" icon="el-icon-upload2" 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-dialog :title="title" :visible.sync="open" width="40rem" append-to-body>
<!-- <el-table-column label="序号" align="center" prop="postId" /> --> <el-form ref="form" :model="form" :rules="rules" label-width="7rem">
<el-table-column label="上楼目录类别" align="center" prop="postName" /> <el-form-item label="上楼目录类别" prop="slmllb">
<el-table-column label="工业大类" align="center" prop="postCode" /> <el-select v-model="form.slmllb" placeholder="请选择上楼目录类别" style="width: 100%;">
<el-table-column label="产业" align="center" prop="postSort" /> <el-option v-for="dict in dict.type.shangloumulu" :key="dict.value" :label="dict.label"
<el-table-column label="更新时间" align="center" prop="postSort" /> :value="dict.value"></el-option>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> </el-select>
<template slot-scope="scope"> </el-form-item>
<!-- <el-button size="mini" type="text" icon="el-icon-view" @click="getInfo(scope.row)" <el-form-item label="工业大类" prop="industryCategory">
v-hasPermi="['system:post:detail']">详情</el-button> --> <el-input v-model="form.industryCategory" placeholder="请输入工业大类" maxlength="50" show-word-limit />
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" </el-form-item>
v-hasPermi="['system:post:edit']">修改</el-button> <el-form-item label="产业" prop="industry">
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" <el-input v-model="form.industry" placeholder="请输入产业" maxlength="50" show-word-limit />
v-hasPermi="['system:post:remove']">删除</el-button> </el-form-item>
</template> <el-form-item label="更新时间" prop="updateTime">
</el-table-column> <el-date-picker v-model="form.updateTime" type="date" placeholder="选择日期" value-format="yyyy-MM-dd"
</el-table> style="width: 100%;" />
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" </el-form-item>
:limit.sync="queryParams.pageSize" @pagination="getList" /> <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>
<!-- 批量导入对话框 -->
<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"
: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> </div>
</el-upload>
<!-- 添加或修改项目对话框 --> <div slot="footer" class="dialog-footer">
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-button type="primary" @click="submitFileForm"> </el-button>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-button @click="upload.open = false"> </el-button>
<el-form-item label="项目名称" prop="postName"> </div>
<el-input v-model="form.postName" placeholder="请输入项目名称" /> </el-dialog>
</el-form-item> </div>
<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"
: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>
</el-dialog>
</div>
</template> </template>
<script> <script>
import { listPost, getPost, delPost, addPost, updatePost } from "@/api/system/post"; import { addCatalog, deleteCatalog, editCatalog, getAllCatalogs } from '@/api/ManageApi/index';
export default { export default {
name: "Post", dicts: [
dicts: ['sys_normal_disable'], 'shangloumulu'
data() { ],
return { name: "Catalog",
// data() {
loading: true, return {
// //
ids: [], loading: true,
// //
single: true, ids: [],
// //
multiple: true, single: true,
// //
showSearch: true, multiple: true,
// //
total: 0, showSearch: true,
// //
postList: [], total: 0,
// //
title: "", postList: [],
// //
open: false, title: "",
// //
queryParams: { open: false,
pageNum: 1, //
pageSize: 10, queryParams: {
postCode: undefined, pageNum: 1,
postName: undefined, pageSize: 10,
status: undefined slmllb: undefined, // slmllb
}, industryCategory: undefined,
// industry: undefined,
form: {}, updateTimeRange: undefined
// },
rules: { //
postName: [ form: {
{ required: true, message: "项目名称不能为空", trigger: "blur" } id: undefined,
], slmllb: undefined, // slmllb
postCode: [ industryCategory: undefined,
{ required: true, message: "项目编码不能为空", trigger: "blur" } industry: undefined,
], updateTime: undefined,
postSort: [ remark: undefined
{ required: true, message: "项目顺序不能为空", trigger: "blur" } },
] //
}, rules: {
// slmllb: [
upload: { { required: true, message: "上楼目录类别不能为空", trigger: "change" }
// ],
open: false, industryCategory: [
// { required: true, message: "工业大类不能为空", trigger: "blur" },
title: "导入", { max: 50, message: "工业大类长度不能超过50个字符", trigger: "blur" }
// ],
isUploading: false, industry: [
// { required: true, message: "产业不能为空", trigger: "blur" },
updateSupport: 0, { max: 50, message: "产业长度不能超过50个字符", trigger: "blur" }
// ],
// headers: { Authorization: "Bearer " + getToken() }, updateTime: [
// { required: true, message: "更新时间不能为空", trigger: "change" }
// url: process.env.VUE_APP_BASE_API + "/tc/assetApp/importData" ]
// url: location.origin + "/api/tc/assetApp/importData" },
}, //
}; upload: {
//
open: false,
//
title: "导入",
//
isUploading: false,
//
updateSupport: 0,
//
url: process.env.VUE_APP_BASE_API + "/gysl/ml/importData"
},
};
},
created() {
this.getList();
},
methods: {
tableRowClassName({ row, rowIndex }) {
if (rowIndex === 1) {
return 'warning-row';
} else if (rowIndex === 3) {
return 'success-row';
}
return '';
}, },
created() { //
this.getList(); handleImport() {
this.upload.open = true;
}, },
methods: { //
// handleFileUploadProgress(event, file, fileList) {
handleImport() { this.upload.isUploading = true;
this.upload.open = true; },
}, //
// handleFileSuccess(response, file, fileList) {
handleFileUploadProgress(event, file, fileList) { this.upload.open = false;
this.upload.isUploading = true; 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 });
handleFileSuccess(response, file, fileList) { this.getList();
this.upload.open = false; },
this.upload.isUploading = false; //
this.$refs.upload.clearFiles(); submitFileForm() {
this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true }); this.$refs.upload.submit();
this.getList(); },
}, /** 查询目录列表 */
// getList() {
submitFileForm() { this.loading = true;
this.$refs.upload.submit(); const params = {
}, ...this.queryParams,
/** 查询项目列表 */ startTime: this.queryParams.updateTimeRange ? this.queryParams.updateTimeRange[0] : undefined,
getList() { endTime: this.queryParams.updateTimeRange ? this.queryParams.updateTimeRange[1] : undefined
this.loading = true; };
listPost(this.queryParams).then(response => { getAllCatalogs(params).then(response => {
this.postList = response.rows; this.postList = response.data.records;
this.total = response.total; this.total = response.data.total;
this.loading = false; this.loading = false;
}); }).catch(error => {
}, console.error('API Request Error:', error);
// this.loading = false;
cancel() { });
this.open = false; },
this.reset(); //
}, cancel() {
// this.open = false;
reset() { this.reset();
this.form = { },
postId: undefined, //
postCode: undefined, reset() {
postName: undefined, this.form = {
postSort: 0, id: undefined,
status: "0", postName: undefined,
remark: undefined industryCategory: undefined,
}; industry: undefined,
this.resetForm("form"); updateTime: undefined,
}, remark: undefined
/** 搜索按钮操作 */ };
handleQuery() { this.resetForm("form");
this.queryParams.pageNum = 1; },
this.getList(); /** 搜索按钮操作 */
}, handleQuery() {
/** 重置按钮操作 */ this.queryParams.pageNum = 1;
resetQuery() { this.getList();
this.resetForm("queryForm"); },
this.handleQuery(); /** 重置按钮操作 */
}, resetQuery() {
// this.resetForm("queryForm");
handleSelectionChange(selection) { this.handleQuery();
this.ids = selection.map(item => item.postId) },
this.single = selection.length != 1 //
this.multiple = !selection.length handleSelectionChange(selection) {
}, this.ids = selection.map(item => item.id);
/** 新增按钮操作 */ this.single = selection.length !== 1;
handleAdd() { this.multiple = !selection.length;
this.reset(); },
this.open = true; /** 新增按钮操作 */
this.title = "添加项目"; handleAdd() {
}, this.reset();
/** 修改按钮操作 */ this.open = true;
handleUpdate(row) { this.title = "新增目录";
this.reset(); },
const postId = row.postId || this.ids /** 修改按钮操作 */
getPost(postId).then(response => { handleUpdate(row) {
this.form = response.data; this.reset();
this.open = true; const catalogId = row.id || this.ids;
this.title = "修改项目"; editCatalog({ id: catalogId }).then(response => {
const data = response.data;
// updateTime
if (data.updateTime) {
data.updateTime = data.updateTime.split(' ')[0]; //
}
this.form = {
id: data.id,
postName: data.slmllb,
industryCategory: data.gydl,
industry: data.cy,
updateTime: data.updateTime,
remark: data.remark
};
this.open = true;
this.title = "修改目录";
}).catch(error => {
console.error('API Request Error:', error);
});
},
/** 提交按钮 */
submitForm: function () {
this.$refs["form"].validate(valid => {
if (valid) {
const formData = {
id: this.form.id,
slmllb: this.form.postName,
gydl: this.form.industryCategory,
cy: this.form.industry,
updateTime: this.form.updateTime,
remark: this.form.remark
};
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 => {
getInfo(row) { this.$modal.msgSuccess("新增成功");
this.$store.commit("SET_CRUMBS", this.$route.meta.title + "详情"); this.open = false;
const postIds = row.postId || this.ids; this.getList();
this.$router.push({ path: `/manage-info/${postIds}` }); }).catch(error => {
}, console.error('API Request Error:', error);
/** 提交按钮 */
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`)
} }
});
},
/** 删除按钮操作 */
handleDelete(row) {
const catalogIds = row.id || this.ids;
this.$modal.confirm('是否确认删除目录编号为"' + catalogIds + '"的数据项?' + '删除这条信息之后有可能找不回来了,请思考一下哟!').then(() => {
return deleteCatalog(catalogIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => { });
},
/** 导出按钮操作 */
handleExport() {
this.download('gysl/ml/export', {
...this.queryParams
}, `catalog_${new Date().getTime()}.xlsx`);
} }
}
}; };
</script> </script>
<style scoped> <style scoped>
.headerbox { .headerbox {
background-color: #fff; background-color: #fff;
border-radius: .5rem; border-radius: .5rem;
padding: 1rem; padding: 1rem;
margin: .5rem; margin: .5rem;
border: 1px solid #eee; border: 1px solid #eee;
} }
.tablebox { .tablebox {
background-color: #fff; background-color: #fff;
border-radius: .5rem; border-radius: .5rem;
padding: 1rem; padding: 1rem;
margin: .5rem; margin: .5rem;
border: 1px solid #eee; border: 1px solid #eee;
} }
.tablehead { .tablehead {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
} }
.headbtn { .headbtn {
display: flex; display: flex;
} }
.tablebtntwo { .tablebtntwo {
margin-top: 1rem; margin-top: 1rem;
margin-bottom: 1rem; margin-bottom: 1rem;
display: flex;
width: 100%;
justify-content: space-between;
}
.tablebtn {
display: flex;
gap: .5rem;
}
.el-table .warning-row {
background: oldlace;
}
.el-table .success-row {
background: #f0f9eb;
} }
</style> </style>

@ -377,4 +377,5 @@ export default {
margin-top: 1rem; margin-top: 1rem;
margin-bottom: 1rem; margin-bottom: 1rem;
} }
</style> </style>

@ -0,0 +1,3 @@
<template>
<div>123</div>
</template>
Loading…
Cancel
Save