新增生产环境工作台页面

master
吕天方 5 months ago
parent 2f10308e39
commit 33f0cfcd94

@ -5,9 +5,9 @@ VUE_APP_TITLE = 金鸡湖现代服务业品牌管理系统
ENV = 'development'
# 金鸡湖现代服务业品牌管理系统/开发环境
# VUE_APP_BASE_API = 'http://192.168.0.108:9040'
VUE_APP_BASE_API = 'http://192.168.0.110:9040'
# 测试环境数据库
VUE_APP_BASE_API = 'http://39.101.188.84:9040'
# VUE_APP_BASE_API = 'http://39.101.188.84:9040'
# 脱敏三方测试用数据库
# VUE_APP_BASE_API = 'http://39.101.188.84:9031'
# 正式环境数据库

@ -1,6 +1,6 @@
{
"name": "ruoyi",
"version": "1.0.202408270918",
"version": "1.0.202408290906",
"description": "金鸡湖现代服务业品牌管理系统",
"author": "若依",
"license": "MIT",

@ -39,4 +39,13 @@ export function fundStatistics() {
url: "/jjh/jProjectFund/fundStatistics" ,
method: "get",
})
}
// 正式环境政务端工作台 --> 企业获得资金拨付排名TOP5
export function top5Fund(params){
return request({
url: "/jjh/chiefWork/top5Fund" ,
method: "get",
params
})
}

@ -6,6 +6,7 @@
@import "./btn.scss";
@import "./buttonType.scss";
@import "./public.scss";
@import "./publicPro.scss";
@import "./font.css";
body {

@ -0,0 +1,447 @@
//
.workbench-box-pro {
height: 100%;
width: 100%;
header {
background: url("../images/workbench.png");
background-size: 100% 100%;
padding: 20px 0;
display: flex;
align-items: center;
.workbench-serch {
padding-left: 200px;
.workbench-title {
display: flex;
margin-bottom: 5px;
.title-item {
cursor: pointer;
padding: 10px 60px 10px 40px;
border-top-right-radius: 30% 100%;
margin-right: 15px;
background: #FFFFFF;
box-shadow: 2px 0 3px 0px #ccc;
}
.checked-item {
background: #409EFF;
color: #fff;
}
}
.workbench-btn {
height: 45px;
.el-autocomplete {
width: 800px;
height: 100%;
}
.el-input {
width: 100%;
height: 100%;
input {
height: 100%;
}
.el-input-group__append {
width: 80px;
text-align: center;
cursor: pointer;
// background: radial-gradient( farthest-side at 40px 40px, #1B84D2 20%, #30CEF5 100%);
background: linear-gradient(to right, #1B84D2, #30CEF5);
// font-family: PingFang-SC, PingFang-SC;
font-weight: bold;
font-size: 16px;
color: #FFFFFF;
}
}
}
}
}
//
.home-main {
width: 100%;
padding: 10px;
height: calc(100% - 132px);
display: flex;
flex-direction: column;
.main-row {
height: 100%;
box-sizing: border-box;
display: flex;
background-color: #f6f7f9;
.work-main-left {
background-color: #fff;
border-radius: 10px;
margin-right: 10px;
height: 100%;
.main-left {
padding: 10px 20px;
height: 100%;
.left-header {
margin-bottom: 10px;
display: flex;
align-items: flex-end;
justify-content: space-between;
.left-header-titleS {
display: flex;
align-items: center;
.dataCloudMap-birght {
width: 6px;
height: 18px;
background: #0086FF;
box-shadow: 3px 0 3px 0px #0086FF;
border-radius: 5px 5px 5px 5px;
}
.left-header-title {
font-family: AlibabaPuHuiTiB;
margin: 0 10px;
font-weight: bold;
font-size: 18px;
color: #333333;
}
}
.el-button {
font-family: PingFang-SC-Medium;
font-weight: 500;
font-size: 14px;
color: #0086FF;
}
}
.left-main {
height: calc(100% - 55px);
overflow-y: auto;
.el-card {
background-color: #F5F8FA;
border: none;
margin-bottom: 10px;
.el-card__body {
padding: 10px 20px;
}
}
.el-card-border {
border: 1px solid rgba(245, 95, 95, 0.4); // #FD5F5F
}
.warn-main {
display: flex;
justify-content: space-between;
.warn-main-left {
display: flex;
flex: 1;
.warn-main-img {
padding-top: 3px;
img {
width: 20px;
height: 20px;
margin-right: 10px;
}
}
.warn-main-content {
flex: 1;
.content-title,.content-title-type {
font-weight: bold;
font-size: 15px;
color: #333333;
}
.content-title-type {
margin-top: 5px;
}
.content-middle {
font-weight: bold;
font-size: 15px;
color: #333333;
margin: 10px 0;
}
.tixing-duanxin {
display: flex;
align-items: center;
}
.content-time {
font-weight: 500;
font-size: 14px;
color: #737373;
}
.content-time-two {
margin-left: 10px;
}
}
}
.different-left {
.warn-main-content {
display: flex;
flex-direction: column;
justify-content: space-between;
}
}
.warn-main-right {
padding-right: 10px;
display: flex;
flex-direction: column;
justify-content: space-between;
.warn-main-right-chakan {
display: flex;
align-items: center;
justify-content: center;
background: rgba(19, 78, 230, 0.1);
padding: 5px 15px;
cursor: pointer;
border-radius: 50px;
font-weight: 500;
font-size: 14px;
color: #134EE6;
margin-bottom: 10px;
}
.warn-main-right-status {
padding: 0px 15px;
font-weight: 500;
font-size: 14px;
color: #4EB997;
}
.status-unread {
color: #FD5F5F;
}
}
}
}
}
}
.service-left {
padding: 10px 20px;
.home-mainPro-top,.home-mainPro-middle,.home-mainPro-bottom {
display: flex;
align-items: center;
.pro-left-box, .pro-right-box {
width: 50%;
padding: 10px;
background-color: #F5F8FA;
border-radius: 10px;
}
}
.home-mainPro-top {
}
.home-mainPro-middle {
margin: 10px 0;
.capitalConditionTOP5-box {
padding: 10px 0;
section {
margin-top: 10px;
// .el-table--border {
// border: 1px solid #dfe6ec;
// }
.el-table {
.project-trace-table-ranking {
// padding: 1px 0px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 5px;
font-weight: normal;
font-size: 12px;
font-family: ArialB;
color: #FFFFFF;
}
.project-table-Info {
font-family: AlibabaPuHuiTiR;
font-weight: 500;
font-size: 14px;
color: #1890FF;
// font-style: normal;
// text-decoration-line: underline;
// text-transform: none;
cursor: pointer;
}
th {
font-weight: bold;
font-size: 14px;
color: #000;
text-align: center;
.Table-header {
// font-family: AlibabaPuHuiTiM;
font-size: 14px;
color: #333333;
}
.Table-unit {
font-family: AlibabaPuHuiTiR;
font-size: 12px;
font-weight: 400;
color: #333333;
}
}
td {
font-weight: 500;
font-size: 14px;
color: #666666;
}
}
}
}
}
}
.work-main-right {
background-color: #fff;
border-radius: 10px;
height: 100%;
.main-right {
padding: 10px 20px;
height: 100%;
.right-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 15px;
.right-header-box {
display: flex;
align-items: center;
.dataCloudMap-birght {
width: 6px;
height: 18px;
background: #0086FF;
box-shadow: 3px 0 3px 0px #0086FF;
border-radius: 5px 5px 5px 5px;
}
.right-header-title {
font-family: AlibabaPuHuiTiB;
margin: 0 10px;
font-weight: bold;
font-size: 18px;
color: #333333;
}
}
.el-button {
font-family: PingFang-SC-Medium;
font-weight: 500;
font-size: 14px;
color: #0086FF;
}
}
.right-main {
height: calc(100% - 55px);
overflow-y: scroll;
.main-items {
display: flex;
align-items: center;
padding: 10px 30px;
background: #F5F8FA;
border: 1px solid #D9D9D9;
border-bottom: none;
text-align: center;
&:last-child {
border-bottom: 1px solid #D9D9D9;
}
div {
width: 40%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
// font-family: PingFang-SC, PingFang-SC;
font-weight: 500;
font-size: 14px;
color: #666666;
}
.last_child_item {
width: 20%;
// font-family: PingFang-SC, PingFang-SC;
font-weight: 500;
font-size: 14px;
color: #1890FF;
// text-decoration: underline;
cursor: pointer;
}
.tab-red {
color: #C51717;
}
}
.main-item {
background-color: #fff;
}
}
}
}
}
.main-two-row {
height: 100%;
flex-direction: column;
// align-content: space-between;
justify-content: space-between;
}
.box-header {
display: flex;
align-items: center;
.garden {
width: 10px;
height: 10px;
border-radius: 50%;
background-color: #0086FF;
margin-right: 10px;
}
.box-header-title {
font-family: AlibabaPuHuiTiB;
font-size: 16px;
color: #383838;
}
.left-box-select {
flex: 1;
display: flex;
justify-content: flex-end;
align-items: center;
.el-select {
width: 100px;
.el-input__inner {
text-align: center;
}
}
}
}
}
//
.home-index-main {
height: calc(100% - 55px);
padding: 10px;
box-sizing: border-box;
}
}

@ -19,7 +19,7 @@ export default {
$route: {
handler(route) {
// console.log(route,"route");
if((route.path == "/workbench" && this.userType == "01") || route.path == "/dataCloudMap") {
if((route.path == "/workbench" && this.userType == "01") || route.path == "/dataCloudMap" || route.path == "/workbenchPro") {
this.breadcrumb = true;
} else if(route.path == "/workbench" && this.userType == "02") {
this.breadcrumbTwo = true;

@ -60,7 +60,7 @@ export default {
$route: {
handler(route) {
// console.log(route,"route");
if(route.path == "/workbench" || route.path == "/dataCloudMap") {
if(route.path == "/workbench" || route.path == "/dataCloudMap" || route.path == "/workbenchPro") {
this.breadcrumbShow = false;
} else {
this.breadcrumbShow = true;

@ -28,7 +28,7 @@
</div>
<div class="declare-time">
<span class="left-title">拨付时间</span>
<span class="right-number">{{ parseTime(item.appropriationTime, '{y}-{m}-{d}') }}</span>
<span class="right-number">{{ item.appropriationTime ? formatDate(item.appropriationTime,2) : '' }}</span>
</div>
<div class="appropriate">
<span class="left-title">拨付金额<span class="left-unit">()</span>:</span>
@ -56,7 +56,7 @@
</div>
<div class="promoteProject-bottom-right">
申报时间
<span class="span-three">{{ parseTime(item.createTime, '{y}-{m}-{d}') }}</span>
<span class="span-three">{{ formatYear(item.createTime) }}</span>
</div>
</div>
</div>
@ -87,7 +87,7 @@
</el-table-column>
<el-table-column label="专项资金拨付时间" prop="time" align="center">
<template slot-scope="scope">
<div class="project-trace-table-number">{{ parseTime(scope.row.appropriationTime, '{y}-{m}-{d}') }}</div>
<div class="project-trace-table-number">{{ scope.row.appropriationTime ? formatDate(scope.row.appropriationTime,2) : '' }}</div>
</template>
</el-table-column>
</el-table>
@ -110,7 +110,7 @@
</div>
<div class="promoteProject-bottom-right">
申报时间
<span class="span-three">{{ parseTime(item.createTime, '{y}-{m}-{d}') }}</span>
<span class="span-three">{{ formatYear(item.createTime) }}</span>
</div>
</div>
<div class="promoteProject-position" :class="(item.status == 0 || item.status == 1 || item.status == 2 || item.status == 3) ? 'orange' : (item.status == 6) ? 'green' : (item.status == 7 || item.status == 8 || item.status == 9 || item.status == 10) ? 'red' : ''">
@ -393,6 +393,26 @@ export default {
})
}
},
formatYear(time){
const year = time.slice(0, 4);
let date = new Date();
const currentYear = date.getFullYear(); //(4)
if(Number(year) < Number(currentYear)) {
return year;
} else {
return this.parseTime(time, '{y}-{m}-{d}')
}
},
formatDate(dateString,id) {
const year = dateString.slice(0, 4);
const month = dateString.slice(4, 6);
const day = dateString.slice(6, 8);
if(id == 1) {
return `${year}${month}${day}`;
} else {
return `${year}-${month}-${day}`;
}
},
//
cancalDebounce(){
const element = document.getElementById('task-box'); // ID

@ -0,0 +1,408 @@
<template>
<div class="home-box">
<el-row type="flex" class="main-row">
<el-col :span="16" class="home-main-left">
<div class="enterprise-header">
<span class="dataCloudMap-birght"></span>
<div class="enterprise-header-title">专项资金荣誉投资等统计</div>
</div>
<el-row class="home-enterprise-top">
<el-col :span="12" class="enterprise-honor" id="one-table" style="margin-right: 10px;">
<div class="box-header" id="one-table-header">
<span class="garden"></span>
<span class="box-header-title">企业荣誉资质5</span>
</div>
<div class="two-tables" :style="{height : tabOneHeader + 'px'}" v-if="enterpriseHonor.length > 0">
<div class="table-items" v-for="item in enterpriseHonor" :key="item.id">
<div class="promoteProject-top">
<span class="span-one" @click="goProjectInfo(item)"><dict-tag :options="dict.type.project_small_type" :value="item.projectSmallType"/></span>
</div>
<div class="promoteProject-bottom">
<div class="promoteProject-bottom-left">
项目类别
<span class="span-two"><dict-tag :options="dict.type.project_categories" :value="item.projectBigType"/></span>
</div>
<div class="promoteProject-bottom-right">
申报时间
<span class="span-three">{{ formatYear(item.createTime) }}</span>
</div>
</div>
</div>
</div>
<el-empty :style="{height : tabOneHeader + 'px'}" :image-size="160" v-else></el-empty>
</el-col>
<el-col :span="12" class="relevancy-project">
<div class="box-header">
<span class="garden"></span>
<span class="box-header-title">关联项目进展3</span>
</div>
<div class="promoteProject-box-wai-box" :style="{height:tableTwoHeight + 'px'}" v-if="tableTwoData.length > 0">
<div class="promoteProject-box-div" v-for="(item,index) in tableTwoData" :key="index">
<div class="promoteProject-top">
<span class="span-one" @click="goProjectInfo(item)"><dict-tag :options="dict.type.project_small_type" :value="item.projectSmallType"/></span>
</div>
<div class="promoteProject-bottom">
<div class="promoteProject-bottom-left">
项目类别
<span class="span-two"><dict-tag :options="dict.type.project_categories" :value="item.projectBigType"/></span>
</div>
<div class="promoteProject-bottom-right">
申报时间
<span class="span-three">{{ formatYear(item.createTime) }}</span>
</div>
</div>
<div class="promoteProject-position" :class="(item.status == 0 || item.status == 1 || item.status == 2 || item.status == 3) ? 'orange' : (item.status == 6) ? 'green' : (item.status == 7 || item.status == 8 || item.status == 9 || item.status == 10) ? 'red' : ''">
{{item.status == 0 ? '待填报' : item.status == 1 ? '初审中' : item.status == 2 ? '复审中' : item.status == 3 ? '终审中' : item.status == 6 ? '已填报' : item.status == 7 ? '复审不通过' : item.status == 8 ? '初审不通过' : item.status == 9 ? '终审不通过' : item.status == 10 ? '初审驳回' : ''}}
</div>
</div>
</div>
<el-empty :style="{height : tableTwoHeight + 'px'}" :image-size="160" v-else></el-empty>
</el-col>
</el-row>
<el-row class="home-enterprise-bottom">
<el-col :span="24" class="capital-declare" id="table-two">
<div class="box-header" id="table-two-title">
<span class="garden"></span>
<span class="box-header-title">往年专项资金拨付情况</span>
</div>
<section>
<el-table v-loading="loadingTab" class="dataMap-two-table" :data="tableData" :height="tableTwoHeight" border :header-cell-style="{background:'#E8F3FC'}">
<el-table-column label="项目名称" prop="projectName" align="center">
<template slot-scope="scope">
<div class="project-trace-table" @click="goProjectInfoLeft(scope.row)">{{ scope.row.projectName }}</div>
</template>
</el-table-column>
<el-table-column label="项目类别" prop="projectType" align="center">
<template slot-scope="scope">
<div v-if="scope.row.projectBigType">
<dict-tag :options="dict.type.project_categories" :value="scope.row.projectBigType"/>
</div>
<span v-else></span>
</template>
</el-table-column>
<el-table-column label="拨付金额(万元)" prop="fundAmount" align="center" />
<el-table-column label="专项资金拨付时间" prop="time" align="center">
<template slot-scope="scope">
<div class="project-trace-table-number">{{ scope.row.appropriationTime ? formatDate(scope.row.appropriationTime,2) : '' }}</div>
</template>
</el-table-column>
<el-table-column label="企业名称" prop="qymc" align="center" />
<el-table-column label="摘要" prop="zaiyao" align="center" />
</el-table>
</section>
</el-col>
</el-row>
</el-col>
<el-col :span="8" class="home-main-right">
<el-row type="flex" class="main-two-row">
<el-col :span="24" class="work-main-left" style="height: 49.5%;">
<div class="main-left">
<div class="left-header">
<div class="left-header-titleS">
<span class="dataCloudMap-birght"></span>
<div class="left-header-title">智能提醒</div>
</div>
<el-button @click="enterjump" type="text" v-if="remindList.length > 0">>> 更多记录</el-button>
</div>
<div class="left-main" v-if="remindList.length > 0">
<el-card shadow="never" v-for="(item,index) in remindList" :key="index" :class="item.isRead == 1 ? 'el-card-border' : ''">
<div class="warn-main">
<div class="warn-main-left" v-if="item.alertManner == 2">
<div class="warn-main-img"><img src="@/assets/images/warn-green.png" alt=""></div>
<div class="warn-main-content">
<div class="content-title">{{ item.declarationName }}预计{{ item.daysAdvance }}天后填报结束</div>
<div class="content-middle">{{ item.alertContent }}</div>
<!-- <div class="content-time">{{ item.alertTime }}</div> -->
<div class="tixing-duanxin">
<div class="content-time">{{ item.alertTime }}</div>
<div class="content-time content-time-two">已发送短信</div>
</div>
</div>
</div>
<div class="warn-main-left" v-else-if="item.alertManner == 1 && item.qymc && item.alertRecipients == 2">
<div class="warn-main-img"><img src="@/assets/images/warn-orange.png" alt=""></div>
<div class="warn-main-content">
<div class="content-title" style="display: flex;">{{ item.qymc }}<dict-tag :options="dict.type.project_small_type" :value="item.declarationName"/></div>
<div class="content-middle">{{ item.alertContent }}</div>
<!-- <div class="content-time">{{ item.alertTime }}</div> -->
<div class="tixing-duanxin">
<div class="content-time">{{ item.alertTime }}</div>
<div class="content-time content-time-two">已发送短信</div>
</div>
</div>
</div>
<div class="warn-main-left" v-else-if="item.alertManner == 1 && item.projectId">
<div class="warn-main-img"><img src="@/assets/images/warn-orange.png" alt=""></div>
<div class="warn-main-content">
<div class="content-title">{{ item.declarationName }}</div>
<div class="content-middle">{{ item.alertContent }}</div>
<!-- <div class="content-time">{{ item.alertTime }}</div> -->
<div class="tixing-duanxin">
<div class="content-time">{{ item.alertTime }}</div>
<div class="content-time content-time-two">已发送短信</div>
</div>
</div>
</div>
<div class="warn-main-left different-left" v-else-if="item.alertManner == 1 && !item.projectId">
<div class="warn-main-img"><img src="@/assets/images/warn-blue.png" alt=""></div>
<div class="warn-main-content">
<div class="content-title">{{ item.alertContent }}</div>
<!-- <div class="content-time">{{ item.alertTime }}</div> -->
<div class="tixing-duanxin">
<div class="content-time">{{ item.alertTime }}</div>
<div class="content-time content-time-two">已发送短信</div>
</div>
</div>
</div>
<div class="warn-main-right">
<div class="warn-main-right-chakan" @click="putMemo(item)">
查看
</div>
<div class="warn-main-right-status" :class="item.isRead == 1 ? 'status-unread' : ''">
{{ item.isRead == 1 ? '未读' : '已读' }}
</div>
</div>
</div>
</el-card>
</div>
<el-empty class="left-main" :image-size="160" v-else></el-empty>
<!-- <div class="right-main" v-else>
<el-divider content-position="center">暂无</el-divider>
</div> -->
</div>
</el-col>
<el-col :span="24" class="work-main-right" style="height: 49.5%;">
<div class="main-right" id="task-box">
<div class="right-header" id="task-header">
<div class="right-header-box">
<span class="dataCloudMap-birght"></span>
<div class="right-header-title">待办任务</div>
</div>
<el-button @click="enterjumpTask" type="text" v-if="backlogArray.length > 0">>> 更多记录</el-button>
</div>
<div class="right-main" :style="{height: tabHeader+'px'}" v-if="backlogArray.length > 0" v-loading="loading">
<div class="main-items" v-for="(item,index) in backlogArray" :key="index" :class="index % 2 == 0 ? '':'main-item'">
<div>{{ item.enterpriseDirectory}}</div>
<!-- <div>{{ item.enterpriseName }}</div> -->
<div>{{ (item.status == 0 ? "待填报" : item.status == 8 ? "初审不通过" : item.status == 10 ? "初审退回修改" : item.status == 7 ? "复审不通过" : item.status == 9 ? "终审不通过" : item.status == 5 ? "终审通过" : item.status == 1 ? "初审中" : item.status == 2 ? "复审中" : item.status == 3 ? "终审中" : item.status == 6 ? "已填报" : "") }}</div>
<!-- <div>审批知识产权材料</div> -->
<div @click="MoreRecords(item.status)" class="last_child_item" :class="item.status == 0 ? 'tab-red' : item.status == 10 ? 'tab-red' : 'last_child_item'">{{ item.status == 0 ? "去填报" : item.status == 10 ? "去修改" : "去查看"}}</div>
</div>
</div>
<el-empty :style="{height: tabHeader+'px'}" :image-size="160" v-else></el-empty>
<!-- <div class="right-main" v-else>
<el-divider content-position="center">暂无</el-divider>
</div> -->
</div>
</el-col>
</el-row>
</el-col>
</el-row>
<el-dialog title="详情" :visible.sync="open" width="400px" append-to-body :close-on-click-modal="false">
<div class="team-main">
<div>提醒时间:</div>
<div>{{ info.alertTime }}</div>
</div>
<div class="team-main">
<div>提醒内容:</div>
<div>{{ info.alertContent }}</div>
</div>
</el-dialog>
</div>
</template>
<script>
import { listRecords } from "@/api/onlineDeclartion/records"
import { chiefAll, enterpriseAll, changeIsRead } from "@/api/jin_ji_hu/intelligentReminder"
import { usualFund, enterpriseProject } from "@/api/jin_ji_hu/zijinbiao"
export default {
dicts: ["project_small_type", "project_categories"],
data() {
//
return {
// 01 02
// userType: this.$store.state.user.userType,
backlogArray:[],
queryParams: {
pageNum: 1,
pageSize: 10,
creditCode: this.$store.state.user.name,
orderChange:1,
// statusStr: [0, 5, 7, 8, 9, 10],
},
//
open: false,
fileList: [],
uploadList: [],
loading:false,
loadingTab:false,
remindList: [],
info:{},
tabHeader: 200,
tabOneHeader: 200,
tableTwoHeight:null,
tableData:[],
tableTwoData:[],
enterpriseHonor:[],
}
},
mounted(){
this.getListTwo();
this.cancalDebounce();
window.addEventListener('resize', this.cancalDebounce);
this.entRemind();
//
this.getUsualFund();
//
this.getEnterpriseProjectOne();
//
this.getEnterpriseProjectTwo();
},
beforeDestroy() {
window.removeEventListener('resize', this.cancalDebounce);
},
methods:{
//
getEnterpriseProjectOne(){
enterpriseProject({type:1}).then(res=>{
this.enterpriseHonor = res.data;
})
},
//
getEnterpriseProjectTwo(){
enterpriseProject({type:2}).then(res=>{
this.tableTwoData = res.data;
})
},
//
getUsualFund(){
usualFund().then(res=>{
this.tableData = res.data
})
},
//
getListTwo(){
this.loading = true;
listRecords(this.queryParams).then(response => {
this.backlogArray = response.rows
this.loading = false;
});
},
//
entRemind(){
enterpriseAll({current:1,size:20}).then(res=>{
this.remindList = res.data.records;
})
},
// /
goProjectInfo(item){
this.$router.push({
name: 'projectInfo',
query: { userId: Number(item.id) }
})
},
//
goProjectInfoLeft(item){
console.log(item,"item");
if(item.projectName == "区级总部" || item.projectName == "市级服务业领军") {
if(item.projectId) {
this.$router.push({
name: 'projectInfo',
query: { userId: Number(item.projectId) }
})
}
}
},
//
enterjump(){
this.$router.push({
name: 'WarningReminder',
})
},
//
putMemo(item){
if(item.isRead == 1) {
changeIsRead({id:item.id}).then(res=>{
this.entRemind();
})
}
if(item.projectId) {
this.$router.push({
name: 'projectInfo',
query: { userId: Number(item.projectId) }
})
} else if(item.alertRecipients == 1 && item.alertManner == 2) {
this.$router.push({
name: 'Online',
params: { statusChange: "0" }
})
} else if(item.alertManner == 1) {
this.open = true;
this.info = item;
}
},
//
enterjumpTask(){
this.$router.push({
name: 'AbnormalRemind',
})
},
//
MoreRecords(status){
if(status == 0 || status == 10) {
this.$router.push({
name: 'Online',
params: { statusChange: "0" }
})
} else {
this.$router.push({
name: 'Online',
params: { statusChange: "1" }
})
}
},
formatYear(time){
const year = time.slice(0, 4);
let date = new Date();
const currentYear = date.getFullYear(); //(4)
if(Number(year) < Number(currentYear)) {
return year;
} else {
return this.parseTime(time, '{y}-{m}-{d}')
}
},
formatDate(dateString,id) {
const year = dateString.slice(0, 4);
const month = dateString.slice(4, 6);
const day = dateString.slice(6, 8);
if(id == 1) {
return `${year}${month}${day}`;
} else {
return `${year}-${month}-${day}`;
}
},
//
cancalDebounce(){
const element = document.getElementById('task-box'); // ID
const header = document.getElementById('task-header'); // ID
const elementHeight = element.offsetHeight;
const headerHeight = header.offsetHeight;
this.tabHeader = elementHeight - headerHeight - 30;
const oneTable = document.getElementById('one-table'); // ID
const oneHeader = document.getElementById('one-table-header'); // ID
const oneTableHeight = oneTable.offsetHeight;
const oneHeaderHeight = oneHeader.offsetHeight;
this.tabOneHeader = oneTableHeight - oneHeaderHeight - 45;
const twoTable = document.getElementById('table-two'); // ID
const twoHeader = document.getElementById('table-two-title'); // ID
const twoTableHeight = twoTable.offsetHeight;
const twoHeaderHeight = twoHeader.offsetHeight;
this.tableTwoHeight = twoTableHeight - twoHeaderHeight - 45;
}
},
}
</script>
<style lang="scss" scoped>
</style>

@ -37,7 +37,7 @@
<section>
<el-table v-loading="loading" :data="tableData" :row-class-name="tableRowClassName" :height="tabHeader" :max-height="tabHeader">
<el-table-column label="企业名称" prop="enterpriseName" />
<el-table-column label="统一信用代码" prop="enterpriseCode" />
<el-table-column label="统一社会信用代码" prop="enterpriseCode" />
<el-table-column label="常用联系人姓名" prop="contactName" />
<el-table-column label="常用联系人公司职务" prop="contactOffice" />
<el-table-column label="常用联系人手机号码" prop="contactPhone" />

@ -4,7 +4,7 @@
<header id="L-header">
<el-form :inline="true" :model="formInline" size="small" class="demo-form-inline" ref="queryFrom">
<el-col :span="22">
<el-form-item label="政策文件" prop="name">
<el-form-item label="政策文件名称" prop="name">
<el-input v-model.trim="formInline.name" placeholder="请输入内容"></el-input>
</el-form-item>
<el-form-item label="发文单位:" prop="enterUnit">

@ -0,0 +1,111 @@
<!-- 拨付资金企业申请情况TOP5 -->
<template>
<section>
<el-table v-loading="loading" :data="tableData" :height="tabHeader" border :header-cell-style="{background:'#E8F3FC'}">
<el-table-column label="排名" key="type" prop="type" align="center" width="80">
<template slot-scope="scope">
<div class="project-trace-table-ranking" :style="{backgroundColor: scope.row.rankingBg}">{{ scope.row.ranking }}</div>
</template>
</el-table-column>
<el-table-column label="申报年份" key="year" prop="year" align="center" width="80">
<template slot="header" slot-scope="scope">
<div class="Table-header">投放金额</div>
<span class="Table-unit">(万元)</span>
</template>
<template slot-scope="scope">
<div class="project-trace-table-number">{{ scope.row.fundAmount }}</div>
</template>
</el-table-column>
<el-table-column label="所属项目" align="center" width="130">
<template slot-scope="scope">
<div class="project-table-Info" @click="ProjectInfo(scope.row)">{{ scope.row.projectName }}</div>
<!-- <el-button type="text" class="project-table-Info" @click="charu(scope.row)" :disabled="!scope.row.projectId">{{ scope.row.projectName }}</el-button> -->
</template>
</el-table-column>
<el-table-column label="所属企业" key="qymc" prop="qymc" align="center" />
</el-table>
</section>
</template>
<script>
import { top5Fund } from "@/api/jin_ji_hu/zijinbiao"
export default {
data() {
return {
loading:false,
tableData:[],
tabHeader: 288,
}
},
props:{
typeValue:{
type:Number,
default:1,
},
yearsChange:{
type:Number,
default:1,
},
},
watch:{
typeValue:{
handler(newVAlue){
console.log(newVAlue);
},
},
yearsChange:{
handler(newVAlue){
console.log(newVAlue);
},
},
},
mounted() {
// this.cancalDebounce();
window.addEventListener('resize', this.cancalDebounce);
this.getList();
},
methods:{
// top5
getList(){
this.loading = true;
top5Fund().then(res=>{
let arr = [];
let bgc = ['#EE462A','#FF8929','#ffbb00','#5CBC69','#00AEFF']
res.data.forEach((element,index) => {
let obj = {};
obj.ranking = 'TOP' + (index + 1);
obj.rankingBg = bgc[index];
obj.fundAmount = element.fundAmount;
obj.projectName = element.projectName;
obj.qymc = element.qymc;
obj.projectId = element.projectId;
arr.push(obj);
});
this.tableData = arr;
this.loading = false;
}).catch(err=>{
this.loading = false;
})
},
ProjectInfo(item){
console.log(item,"item");
if((item.projectName == "区级总部" || item.projectName == "市级服务业领军") && item.projectId) {
this.$router.push({
name: 'projectInfo',
query: { userId: Number(item.projectId) }
})
}
},
//
cancalDebounce(){
const element = document.getElementById('zhijinbofu-qingkaung'); // ID
const header = document.getElementById('zhijinbofu-header-id'); // ID
const elementHeight = element.offsetHeight;
const headerHeight = header.offsetHeight;
this.tabHeader = elementHeight - headerHeight - 35;
}
},
}
</script>
<style lang="scss" scoped>
</style>

@ -0,0 +1,433 @@
<template>
<div class="workbench-box-pro" v-if="userType == '02'">
<header class="pro_header">
<div class="workbench-serch">
<div class="workbench-title">
<div class="title-item" :class="checked == index ? 'checked-item' : ''" v-for="(item,index) in tabs" :key="index" @click="changeTab(index)">
{{ item.value }}
</div>
</div>
<div class="workbench-btn">
<!-- :placeholder="checked == 0 ? '请输入企业名称' : checked == 1 ? '请输入项目名称' : checked == 2 ? '请输入荣誉名称' : ''" -->
<el-autocomplete
placeholder="请输入企业名称"
ref="autocomplete"
v-model="search"
:fetch-suggestions="querySearch"
:trigger-on-focus="false"
@select="handleSelect"
class="input-with-select"
>
<el-button slot="append" class="work-btn" @click="searchBtn"></el-button>
</el-autocomplete>
</div>
</div>
</header>
<main class="home-main">
<el-row class="main-row">
<el-col :span="16" class="work-main-left service-left">
<div class="home-mainPro-top">
<div class="pro-left-box" style="margin-right: 10px;">
<div class="box-header" id="zhongdian-header-id">
<span class="garden"></span>
<span class="box-header-title">服务业发展总览</span>
</div>
</div>
<div class="pro-right-box">
<div class="box-header" id="zhongdian-header-id">
<span class="garden"></span>
<span class="box-header-title">近三年资金拨付情况</span>
</div>
</div>
</div>
<div class="home-mainPro-middle">
<div class="pro-left-box" style="margin-right: 10px;">
<div class="box-header" id="zhongdian-header-id">
<span class="garden"></span>
<span class="box-header-title">企业获得资金拨付排名TOP5</span>
<div class="left-box-select">
<el-select v-model="yearsChange" placeholder="请选择">
<el-option
label="当年"
:value="1">
</el-option>
<el-option
label="近三年"
:value="2">
</el-option>
</el-select>
<el-select v-model="typeValue" placeholder="请选择">
<el-option
label="总部专项"
:value="1">
</el-option>
<el-option
label="服务业专项"
:value="2">
</el-option>
</el-select>
</div>
</div>
<div class="capitalConditionTOP5-box">
<table-three :typeValue="typeValue" :yearsChange="yearsChange"></table-three>
</div>
</div>
<div class="pro-right-box">
<div class="box-header" id="zhongdian-header-id">
<span class="garden"></span>
<span class="box-header-title">当年已申报完成的项目</span>
</div>
</div>
</div>
<div class="home-mainPro-bottom">
<div class="pro-left-box" style="margin-right: 10px;">
<div class="box-header" id="zhongdian-header-id">
<span class="garden"></span>
<span class="box-header-title">项目追踪情况</span>
</div>
</div>
<div class="pro-right-box">
<div class="box-header" id="zhongdian-header-id">
<span class="garden"></span>
<span class="box-header-title">备忘录更新情况</span>
</div>
</div>
</div>
</el-col>
<el-col :span="8">
<el-row type="flex" class="main-two-row">
<el-col :span="24" class="work-main-left" style="height: 49%;">
<div class="main-left">
<div class="left-header">
<div class="left-header-titleS">
<span class="dataCloudMap-birght"></span>
<div class="left-header-title">智能提醒</div>
</div>
<el-button @click="zhinengtixingBtn" type="text" v-if="remindList.length > 0">>> 更多记录</el-button>
</div>
<div class="left-main" v-if="remindList.length > 0">
<el-card shadow="never" v-for="(item,index) in remindList" :key="index" :class="item.isRead == 1 ? 'el-card-border' : ''">
<div class="warn-main">
<div class="warn-main-left" v-if="item.alertManner == 2">
<div class="warn-main-img"><img src="@/assets/images/warn-green.png" alt=""></div>
<div class="warn-main-content">
<div class="content-title">{{ item.declarationName }}预计{{ item.daysAdvance }}天后建设完成</div>
<div class="content-middle">{{ item.alertContent }}</div>
<!-- <div class="content-middle">已发送短信已发送邮件</div> -->
<!-- <div class="content-time">{{ item.alertTime }}</div> -->
<div class="tixing-duanxin">
<div class="content-time">{{ item.alertTime }}</div>
<div class="content-time content-time-two">已发送短信</div>
</div>
</div>
</div>
<div class="warn-main-left" v-else-if="item.alertManner == 1 && item.qymc && item.alertRecipients == 2">
<div class="warn-main-img"><img src="@/assets/images/warn-orange.png" alt=""></div>
<div class="warn-main-content">
<div class="content-title" style="display: flex;">{{ item.qymc }}</div>
<div class="content-title-type"><dict-tag :options="dict.type.project_small_type" :value="item.declarationName"/></div>
<div class="content-middle">{{ item.alertContent }}</div>
<!-- <div class="content-middle">已发送短信已发送邮件</div> -->
<!-- <div class="content-time">{{ item.alertTime }}</div> -->
<div class="tixing-duanxin">
<div class="content-time">{{ item.alertTime }}</div>
<div class="content-time content-time-two">已发送短信</div>
</div>
</div>
</div>
<div class="warn-main-left" v-else-if="item.alertManner == 1 && item.projectId">
<div class="warn-main-img"><img src="@/assets/images/warn-orange.png" alt=""></div>
<div class="warn-main-content">
<div class="content-title">{{ item.declarationName }}</div>
<div class="content-middle">{{ item.alertContent }}</div>
<div class="tixing-duanxin">
<div class="content-time">{{ item.alertTime }}</div>
<div class="content-time content-time-two">已发送短信</div>
</div>
</div>
</div>
<div class="warn-main-left different-left" v-else-if="item.alertManner == 1 && !item.projectId">
<div class="warn-main-img"><img src="@/assets/images/warn-blue.png" alt=""></div>
<div class="warn-main-content">
<div class="content-title">{{ item.alertContent }}</div>
<!-- <div class="content-middle">已发送短信已发送邮件</div> -->
<!-- <div class="content-time">{{ item.alertTime }}</div> -->
<div class="tixing-duanxin">
<div class="content-time">{{ item.alertTime }}</div>
<div class="content-time content-time-two">已发送短信</div>
</div>
</div>
</div>
<div class="warn-main-right">
<div class="warn-main-right-chakan" @click="putMemo(item)">
查看
</div>
<div class="warn-main-right-status" :class="item.isRead == 1 ? 'status-unread' : ''">
{{ item.isRead == 1 ? '未读' : '已读' }}
</div>
</div>
</div>
</el-card>
</div>
<el-empty class="left-main" :image-size="160" v-else></el-empty>
</div>
</el-col>
<el-col :span="24" style="height: 49%;">
<div class="work-main-right">
<div class="main-right">
<div class="right-header">
<div class="right-header-box">
<span class="dataCloudMap-birght"></span>
<div class="right-header-title">待办任务</div>
</div>
<el-button @click="MoreRecords('all')" type="text" v-if="backlogArray.length > 0">>> 更多记录</el-button>
</div>
<div class="right-main" v-if="backlogArray.length > 0" v-loading="loading">
<div class="main-items" v-for="(item,index) in backlogArray" :key="index" :class="index % 2 == 0 ? '':'main-item'">
<div>{{ item.enterpriseDirectory }} </div>
<div>{{ (item.status == 1 ? "待初审" : item.status == 2 ? "待复审" : item.status == 3 ? "待终审" : "") }}</div>
<!-- <div>审批知识产权材料</div> -->
<div @click="MoreRecords('id',item.status)" class="last_child_item">去审批</div>
</div>
</div>
<el-empty class="right-main" :image-size="160" v-else></el-empty>
</div>
</div>
</el-col>
</el-row>
</el-col>
</el-row>
</main>
<el-dialog title="详情" :visible.sync="open" width="400px" append-to-body :close-on-click-modal="false">
<div class="team-main">
<div>提醒时间:</div>
<div>{{ info.alertTime }}</div>
</div>
<div class="team-main">
<div>提醒内容:</div>
<div>{{ info.alertContent }}</div>
</div>
</el-dialog>
<!-- 智能提醒弹框 -->
<zhinengtixing ref="zhinengtixing" @changeIsRead="govRemind()" />
<!-- 待办任务弹框 -->
<daibanrenwu ref="daibanrenwu" />
</div>
<hometwoIndex v-else-if="userType == '01'" />
</template>
<script>
import { approvalList, uploadFile } from "@/api/onlineDeclartion/pendingReview"
import { selectAll, workSearch } from "@/api/jin_ji_hu/home"
import { chiefAll, changeIsRead } from "@/api/jin_ji_hu/intelligentReminder"
import hometwoIndex from "@/views/homeTwo/index.vue"
import { zhinengtixing, daibanrenwu } from "@/views/workbench/components"
import TableThree from "./components/capitalConditionTOP5"
export default {
dicts: ["project_small_type"],
components:{
hometwoIndex,
zhinengtixing,
daibanrenwu,
TableThree
},
data() {
return {
// 01 02
userType: this.$store.state.user.userType,
search:"",
backlogArray:[],
pagination: {
current:1,
size:10,
approvalStatusStr: 0,
},
//
open: false,
tabs: [
{
value:"查企业"
},{
value:"查项目"
},{
value:"查荣誉"
},
],
checked: 0,
loading:false,
remindList: [],
info:{},
time:"",
yearsChange: 1,
typeValue: 1
}
},
mounted(){
if(this.userType == '02') {
this.getList();
this.govRemind();
this.time = this.getNowFormatDate();
}
},
methods:{
//
getNowFormatDate() {
let date = new Date(),
year = date.getFullYear(), //(4)
month = date.getMonth() + 1, //(0-11,01)
strDate = date.getDate() // (1-31)
if (month < 10) month = `0${month}` // 0
if (strDate < 10) strDate = `0${strDate}` // 0
return `${year}-${month}-${strDate}`
},
//
industryBtn(){
this.$refs.collectDialog.open();
},
//
zhinengtixingBtn(){
this.$refs.zhinengtixing.open();
},
//
getList(){
this.loading = true;
approvalList(this.pagination).then(res=>{
// console.log(res);
this.backlogArray = res.rows
this.loading = false;
})
},
//
govRemind(){
chiefAll({current:1,size:20}).then(res=>{
this.remindList = res.data.records;
})
},
//
putMemo(item){
if(item.isRead == 1) {
changeIsRead({id:item.id}).then(res=>{
this.govRemind();
})
}
if(item.projectId) {
this.$router.push({
name: 'projectInfo',
query: { userId: Number(item.projectId) }
})
} else if(item.alertManner == 1) {
this.open = true;
this.info = item;
}
},
//
MoreRecords(type,status){
if(type == 'all') {
// this.$router.push({
// name: 'PendingReview',
// params: { approvalStatusStr: "" }
// })
this.$refs.daibanrenwu.open();
} else {
this.$router.push({
name: 'PendingReview',
params: { approvalStatusStr: "0" }
})
}
},
// tab
changeTab(index){
this.checked = index;
this.search = "";
//
this.$refs.autocomplete.suggestions = [];
this.$refs.autocomplete.highlightedIndex = -1;
},
querySearch(queryString, cb) {
let results = []
if(this.checked == 0) {
workSearch({enterpriseInfo: queryString}).then(res => {
res.data.forEach(item => {
results.push({
value: item.qymc,
id: item.id,
tyshxydm: item.tyshxydm
})
})
})
} else if(this.checked == 1) {
selectAll({ name: queryString }).then(res => {
res.data.forEach(item => {
results.push({
value: item.declareUnit,
id: item.id
})
})
})
} else if(this.checked == 2) {
selectAll({ name: queryString, status: 5}).then(res => {
res.data.forEach(item => {
results.push({
value: item.declareUnit,
id: item.id
})
})
})
}
// queryString
/**
* 通过queryString 调用接口参数搜索到的数据数据处理成所需的列表 对象带value 使用callback返回列表数据
*/
// var restaurants = this.restaurants;
// var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
// callback
cb(results);
},
//
handleSelect(item) {
if(this.checked == 0) {
this.$router.push({
name: 'enterpriselibraryInfo',
query: { userId: item.id, creditCode: item.tyshxydm }
})
} else if(this.checked == 1) {
this.$router.push({
name: 'projectInfo',
query: { userId: Number(item.id) }
})
} else if(this.checked == 2) {
this.$router.push({
name: 'projectInfo',
query: { userId: Number(item.id) }
})
}
},
searchBtn(){
// console.log(this.search);
if(this.checked == 0) {
this.$router.push({
name: 'Enterpriselibrary',
params: { enterpriseName: this.search }
})
} else if(this.checked == 1) {
// this.$router.push({
// name: 'Project',
// params: { projectName: this.search }
// })
this.$router.push({
name: 'Project',
params: { declareUnit: this.search }
})
} else if(this.checked == 2) {
this.$router.push({
name: 'Project',
params: { declareUnit: this.search, status: '5' }
})
}
},
},
}
</script>
<style lang="scss" scoped>
</style>
Loading…
Cancel
Save