You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
suzhouyingjiPC/src/views/yingji/focusEnter.vue

821 lines
21 KiB

2 years ago
<!--
* @Descripttion:
* @version:
* @Author: JC9527
* @Date: 2023-09-04 10:20:06
* @LastEditors: JC9527
* @LastEditTime: 2023-09-11 16:47:11
2 years ago
-->
<template>
<div class="container-main" ref="main">
<div class="enforce-the-law-title">
<div class="filtrate-condition">
<div class="select-input">
<div class="select-span">年份:</div>
2 years ago
<div>
<el-date-picker
v-model="queryParms.year"
2 years ago
type="month"
2 years ago
placeholder="请选择"
2 years ago
value-format="yyyy-MM"
2 years ago
size="small"
2 years ago
>
2 years ago
</el-date-picker>
</div>
2 years ago
</div>
2 years ago
<!-- <div class="select-input">
<div class="select-span">区划:</div>
<el-cascader
v-model="subdistrict"
placeholder="请选择"
:options="xzList"
:props="props"
:disabled="isNoneDivision"
>
</el-cascader>
</div> -->
<!-- <div class="input-input">
<div class="select-span">企业名称/统一社会信用代码:</div>
<el-input
v-model="form.uscCode"
placeholder="请输入企业名称/统一社会信用代码"
></el-input>
</div> -->
2 years ago
</div>
<div style="display: flex">
2 years ago
<div class="export" @click="addkeys" style="background-color: #28b384">
2 years ago
<span>新增</span>
</div>
<div class="export" @click="searchList">
2 years ago
<span>搜索</span>
</div>
2 years ago
<div
class="export"
@click="chongzhiList"
style="background-color: #fdab5b"
>
2 years ago
<span>重置</span>
</div>
<div class="export" style="background: #f71052" @click="deleteItem">
<span>删除</span>
2 years ago
</div>
2 years ago
<el-upload
class="upload-demo"
action="1"
ref="uploadOver"
:http-request="exportFile"
:on-success="handleSuccess"
:multiple="false"
:show-file-list="false"
:limit="1"
:file-list="fileList"
>
<div class="export export1">
<span>导入</span>
</div>
</el-upload>
2 years ago
</div>
</div>
<div class="tables">
<el-table
:data="tableData"
style="width: 100%"
2 years ago
v-loading="loading"
2 years ago
:height="484"
:border="false"
:row-class-name="tableRowClassName"
:cell-style="columnStyle"
2 years ago
@selection-change="handleSelectionChange"
2 years ago
>
2 years ago
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column prop="year" label="计划年份" header-align="center">
2 years ago
<template slot-scope="scope">
2 years ago
{{ $moment(new Date(scope.row.year)).format("yyyy-MM") }}
2 years ago
</template>
2 years ago
</el-table-column>
2 years ago
<el-table-column
2 years ago
prop="enterpriseName"
label="企业名称"
2 years ago
header-align="center"
>
</el-table-column>
<el-table-column
2 years ago
prop="entCode"
label="统一社会信用代码"
2 years ago
header-align="center"
>
</el-table-column>
2 years ago
<el-table-column prop="type" label="企业类别" header-align="center">
</el-table-column>
2 years ago
2 years ago
<el-table-column label="操作" header-align="center">
2 years ago
<template slot-scope="scope">
<div class="tabs-btns">
<div class="look" @click="look(scope.row)">
2 years ago
<img src="@/assets/images/look.png" alt="" />
<span>查看</span>
</div>
<div class="change" @click="change(scope.row)">
<img src="@/assets/images/change.png" alt="" />
<span>修改</span>
</div>
<div class="delete" @click="deleteItem(scope.row)">
<img src="@/assets/images/delete.png" alt="" />
<span>删除</span>
2 years ago
</div>
</div>
</template>
2 years ago
</el-table-column>
2 years ago
</el-table>
</div>
<div class="pagination">
2 years ago
<my-pagination :total="total" @pagesChange="pagesChange"></my-pagination>
2 years ago
</div>
2 years ago
<!-- 新增修改 -->
<el-dialog
:visible.sync="dialogVisible"
custom-class="dialog-boxed"
append-to-body
width="50%"
>
<div class="dialog-slot">
<div class="closeClick">
<div class="newplan">
<div class="line"></div>
<div class="span">{{ headerText }}省重点企业</div>
</div>
<img src="@/assets/images/close.png" alt="" @click="closeDetail" />
</div>
<div class="content">
<div class="filtrate">
<el-form
:model="form"
label-width="100px"
class="demo-ruleForm"
ref="form1"
2 years ago
:rules="rules"
2 years ago
>
<el-row>
<el-col :span="24">
<el-form-item label="企业名称" prop="enterpriseName">
<el-input
v-model="form.enterpriseName"
size="small"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="企业代码:" prop="entCode">
<el-input
v-model="form.entCode"
size="small"
2 years ago
placeholder="请输入企业信用代码"
2 years ago
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="年份:" prop="year">
<el-date-picker
v-model="form.year"
2 years ago
type="month"
placeholder="请选择"
value-format="yyyy-MM"
2 years ago
size="small"
>
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col>
2 years ago
<el-form-item label="企业类别:" prop="type">
2 years ago
<el-input
v-model="form.type"
size="small"
2 years ago
placeholder="请输入企业类别"
2 years ago
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col>
<el-form-item label="备注:" prop="remark">
<el-input
type="textarea"
v-model="form.remark"
size="small"
:rows="5"
placeholder="请输入备注"
></el-input>
</el-form-item>
</el-col>
</el-row>
<div
style="
display: flex;
align-items: center;
justify-content: center;
"
>
<div class="select-btn" @click="confirm"></div>
<div class="select-btn" @click="closeDetail"></div>
</div>
</el-form>
</div>
</div>
</div>
</el-dialog>
<!-- 查看 -->
<el-dialog
:visible.sync="addShow"
:show-close="false"
:destroy-on-close="true"
:close-on-click-modal="false"
append-to-body
custom-class="dialog-boxed"
width="50%"
>
<div class="dialog-slot">
<div class="closeClick">
<div class="newplan">
<div class="line"></div>
<div class="span">查看省重点企业详细</div>
</div>
<img src="@/assets/images/close.png" alt="" @click="shutDownDetail" />
</div>
<div class="content">
<div class="filtrate">
<el-descriptions :column="2" border>
<el-descriptions-item label="计划年份">
2 years ago
{{ $moment(new Date(details.year)).format("yyyy-MM") }}
2 years ago
</el-descriptions-item>
<el-descriptions-item label="企业名称">
{{ details.enterpriseName }}
</el-descriptions-item>
<el-descriptions-item label="企业代码">{{
details.entCode
}}</el-descriptions-item>
2 years ago
<el-descriptions-item label="企业类别">{{
2 years ago
details.type
}}</el-descriptions-item>
<el-descriptions-item label="备注">{{
details.remark
}}</el-descriptions-item>
</el-descriptions>
</div>
</div>
</div>
</el-dialog>
2 years ago
</div>
</template>
<script>
import myPagination from "@/views/components/myPagination/index.vue";
2 years ago
import { Loading } from "element-ui";
import {
listEnterprise,
addEnterprise,
updateEnterprise,
deleteEnterprise,
exportEnterprise,
getEnterprise,
} from "@/api/yingji/keyEnterprise.js";
2 years ago
export default {
components: { myPagination },
name: "Article",
data() {
return {
2 years ago
tableData: [],
2 years ago
options: [],
2 years ago
checkList: ["全部"],
checkListTwo: [],
loading: false,
headerText: "",
ids: null,
//是否显示弹出框
dialogVisible: false,
queryParms: {
year: "",
},
searchBefore: {
pageSize: 10,
pageNum: 1,
},
//新增修改的参数
2 years ago
form: {
2 years ago
//企业名称
enterpriseName: "",
//企业代码
entCode: "",
//备注
remark: "",
//大类
type: "",
//年份
2 years ago
year: "",
},
2 years ago
addShow: false,
//详情
details: {},
2 years ago
rules: {
enterpriseName: [
{ required: true, message: "请输入企业名称", trigger: "blur" },
],
entCode: [
{ required: true, message: "请输入企业信用代码", trigger: "blur" },
],
year: [{ required: true, message: "请选择年份", trigger: "blur" }],
},
2 years ago
//总数
total: 0,
fileList: [],
2 years ago
};
},
2 years ago
created() {
this.getList();
},
2 years ago
methods: {
2 years ago
handleRemove() {},
searchList() {
2 years ago
this.searchBefore = { ...this.searchBefore, ...this.queryParms };
2 years ago
this.getList();
},
reset() {
this.form = {
enterpriseName: "",
//企业代码
entCode: "",
//备注
remark: "",
//大类
type: "",
//年份
year: "",
};
},
//重置列表
chongzhiList() {
this.searchBefore = {
pageSize: 10,
pageNum: 1,
};
this.queryParms.year = "";
this.getList();
},
//获取列表
getList() {
this.loading = true;
2 years ago
// console.log(this.searchBefore);
2 years ago
listEnterprise(this.searchBefore).then((res) => {
2 years ago
// console.log(res);
2 years ago
this.tableData = res.data.list;
this.loading = false;
this.total = res.data.total;
});
},
//关闭省重点详情
shutDownDetail() {
this.addShow = false;
},
//新增打开
addkeys() {
this.reset();
this.headerText = "新增";
this.dialogVisible = true;
this.$nextTick(() => {
this.$refs.form1.clearValidate();
});
},
//关闭新增修改弹窗
closeDetail() {
this.reset();
this.dialogVisible = false;
},
//查看详情
look(e) {
getEnterprise(e.id).then((res) => {
2 years ago
console.log(res);
2 years ago
this.details = res.data;
this.addShow = true;
});
},
//修改数据
change(e) {
this.headerText = "修改";
getEnterprise(e.id).then((res) => {
this.form = res.data;
this.dialogVisible = true;
this.$nextTick(() => {
this.$refs.form1.clearValidate();
});
});
},
//保存
confirm() {
this.$refs.form1.validate((valid) => {
if (valid) {
if (this.form.id != null) {
updateEnterprise(this.form).then((response) => {
this.$model.msgSuccess("修改成功");
this.dialogVisible = false;
this.getList();
});
} else {
addEnterprise(this.form).then((res) => {
this.$model.msgSuccess("新增成功");
this.dialogVisible = false;
this.getList();
});
}
}
});
},
//删除数据
deleteItem(row) {
/** 删除按钮操作 */
const ids = row.id || this.ids;
if (!ids) {
this.$model.msgError("请选择数据");
return;
2 years ago
}
2 years ago
this.$confirm("是否确认删除该数据?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(function () {
return deleteEnterprise({ idList: ids });
})
.then(() => {
this.$model.msgSuccess("删除成功");
this.getList();
})
.catch(() => {});
2 years ago
},
2 years ago
// 多选框变化事件
handleSelectionChange(rows) {
let arr = rows.map((item) => item.id);
this.ids = arr.join(",");
2 years ago
},
2 years ago
2 years ago
// tabs不同行给不同class
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 !== 0) {
return "success-row";
}
return "";
},
// 根据状态数据修改字体颜色
columnStyle({ row, column, rowIndex, columnIndex }) {
if (columnIndex == 3) {
if (row.state == "未执法") {
return "color: #F71052";
} else if (row.state == "已执法") {
return "color: #23B06C";
}
}
},
// 页码,当前页切换事件
pagesChange(pages) {
2 years ago
// console.log(pages);
this.searchBefore.pageSize = pages.pageSize;
this.searchBefore.pageNum = pages.pageNum;
2 years ago
this.getList();
2 years ago
},
2 years ago
handleSuccess() {},
// 导入
exportFile(e) {
let downloadLoadingInstance = Loading.service({
text: "正在导入数据,请稍候",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
let a = new FormData();
a.append("file", e.file);
exportEnterprise(a)
.then((res) => {
downloadLoadingInstance.close();
this.queryParms.year = "";
this.searchBefore = {
pageSize: 10,
pageNum: 1,
};
this.getList();
this.$refs.uploadOver.clearFiles();
})
.catch(() => {
downloadLoadingInstance.close();
this.$model.msgError("导入失败");
});
2 years ago
},
},
mounted() {
this.checkListTwo = this.checkList;
// this.$nextTick(()=>{
// let dom = document.getElementsByClassName('tables');
// let height = dom[0].getBoundingClientRect();
// let windowHeight = window.innerHeight;
// let relativeHeight = windowHeight - height.top
// this.main.height = relativeHeight - 80
// })
},
};
</script>
<style lang="scss" scoped>
2 years ago
::v-deep .el-descriptions-row th {
width: 20% !important;
font-size: 14px;
font-family: "Alibaba PuHuiTi";
font-weight: 400;
}
::v-deep .el-descriptions-row td {
width: 30% !important;
font-size: 14px;
font-family: "Alibaba PuHuiTi";
font-weight: 400;
}
.tabs-btns {
display: flex;
align-items: center;
justify-content: center;
.look,
.change,
.delete {
display: flex;
align-items: center;
margin-right: 30px;
cursor: pointer;
img {
width: 20px;
margin-right: 5px;
}
span {
font-size: 15px;
font-family: Alibaba PuHuiTi;
font-weight: 400;
color: #045ffd;
}
}
.delete {
margin-right: 0;
span {
color: #f71052;
}
}
}
::v-deep .el-date-editor {
width: 100%;
}
::v-deep .el-dialog__body {
padding-bottom: 10px;
}
2 years ago
.container-main {
// height: calc(100vh - 84px);
overflow: hidden;
padding: 0 20px;
height: 100%;
background-color: #fff;
.enforce-the-law-title {
display: flex;
align-items: center;
justify-content: space-between;
padding: 31px 0 12px 0;
.filtrate-condition {
display: flex;
align-items: center;
.select-input {
margin-right: 20px;
display: flex;
align-items: center;
.select-span {
font-size: 14px;
font-family: "Alibaba PuHuiTi";
font-weight: 400;
color: #525966;
line-height: 40px;
margin-right: 10px;
}
::v-deep .el-select {
background-color: transparent;
width: 210px;
.el-input__inner {
height: 33px;
}
2 years ago
.el-input
.el-input__suffix
.el-input__suffix-inner
.el-icon-arrow-up {
display: flex;
align-items: center;
justify-content: center;
}
2 years ago
// border-radius: 2px;
.el-input
.el-input__suffix
.el-input__suffix-inner
.el-icon-arrow-up::before {
content: "";
background: url(../../assets/images/down2.png) center center
no-repeat;
background-size: cover;
position: absolute;
width: 10px;
height: 7px;
// top: 50%;
// left: 50%;
// transform: translate(-50%, -50%);
transform: rotate(180deg);
2 years ago
}
}
}
.my-checkbox {
margin-left: 50px;
::v-deep .el-checkbox-group {
.el-checkbox__label {
font-size: 14px;
font-family: "Alibaba PuHuiTi";
font-weight: 400;
color: #525966;
}
}
}
}
.export {
display: flex;
align-items: center;
justify-content: center;
padding: 6px 19px;
background-color: #2378ec;
2 years ago
margin-right: 10px;
2 years ago
cursor: pointer;
img {
width: 22px;
margin-right: 10px;
}
span {
color: #ffffff;
font-size: 14px;
font-family: "Alibaba PuHuiTi";
font-weight: 400;
}
}
.export1 {
background-color: #28b384;
}
}
.tables {
margin-top: 10px;
background-color: #eaf2fd;
2 years ago
2 years ago
::v-deep .el-table {
.success-row {
background-color: rgba(234, 242, 253, 0.25);
}
td {
height: 42px;
text-align: center;
font-size: 14px;
font-family: "Alibaba PuHuiTi";
font-weight: 400;
color: #525966;
}
th {
height: 45px;
background-color: #eaf2fd;
font-size: 15px;
font-family: "Alibaba PuHuiTi";
font-weight: bold;
color: #525966;
.el-checkbox {
display: none;
}
}
}
::v-deep .el-table::before {
height: 0;
}
}
.pagination {
margin-top: 40px;
}
}
2 years ago
.dialog-slot {
.closeClick {
position: absolute;
top: 0;
right: 0;
padding: 10px 20px;
width: 100%;
z-index: 1000;
display: flex;
justify-content: space-between;
align-items: center;
text-align: center;
background: #f8f9fa;
box-shadow: 0px 1px 0px 0px #dbe0e8;
background-color: #e0eaf8;
img {
width: 18px;
height: 18px;
cursor: pointer;
}
.newplan {
display: flex;
align-items: center;
.line {
margin-right: 10px;
width: 5px;
height: 16px;
background-color: #1e70de;
}
.span {
font-size: 16px;
font-family: "Alibaba PuHuiTi";
font-weight: bold;
color: #1e70de;
}
}
}
.content {
// padding: 15px 10px;
.filtrate {
padding-bottom: 10px;
.select-input {
// margin-right: 10px;
margin-top: 20px;
display: flex;
align-items: center;
.select-span {
font-size: 13px;
font-family: "Alibaba PuHuiTi";
font-weight: 400;
color: #525966;
// line-height: 40px;
margin-right: 10px;
}
::v-deep .el-select,
.el-cascader {
background-color: transparent;
width: 180px;
.el-input__inner {
height: 33px;
}
// border-radius: 2px;
.el-input
.el-input__suffix
.el-input__suffix-inner
.el-icon-arrow-up::before {
content: "";
background: url(../../assets/images/down2.png) center center
no-repeat;
background-size: cover;
position: absolute;
width: 10px;
height: 7px;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
}
}
.select-input {
width: 45%;
::v-deep .el-input {
.el-input__inner {
height: 33px;
}
}
}
.select-btn {
width: 80px;
height: 33px;
background: #2378ec;
border-radius: 2px;
display: flex;
align-items: center;
justify-content: center;
font-size: 15px;
font-family: Alibaba PuHuiTi;
font-weight: 500;
color: #ffffff;
cursor: pointer;
margin-right: 10px;
}
.select-btn1 {
background: #28b384;
}
}
}
}
::v-deep .el-form-item__label {
font-size: 14px;
font-family: "Alibaba PuHuiTi";
font-weight: 400;
color: #525966;
// line-height: 40px;
}
2 years ago
</style>