企业端异常待办提醒、预警提醒、服务业发展报告导出、回显 企业端去除备忘录

des
吕天方 5 months ago
parent 6ec3a4114f
commit e07a6032a1

@ -5,8 +5,8 @@ VUE_APP_TITLE = 金鸡湖现代服务业品牌管理系统
ENV = 'development'
# 金鸡湖现代服务业品牌管理系统/开发环境
# VUE_APP_BASE_API = 'http://192.168.0.118:9040'
VUE_APP_BASE_API = 'http://39.101.188.84:9040'
VUE_APP_BASE_API = 'http://192.168.0.118:9040'
# VUE_APP_BASE_API = 'http://39.101.188.84:9040'
# VUE_APP_BASE_API = 'https://idp.sipac.gov.cn/api'
# 路由懒加载

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

@ -1,11 +1,10 @@
import request from "@/utils/request"
// 查询模板指标自定义选择
export function templateMetrics(params) {
export function templateMetrics(year) {
return request({
url: "/jjh/templateMetrics/templateMetrics",
url: "/jjh/templateMetrics/templateMetrics/" + year,
method: "get",
params
})
}
@ -17,3 +16,11 @@ export function templateMetricsAdd(data){
data
})
}
// 查询服务业发展报告
export function getId(){
return request({
url: "/jjh/templateMetrics/getId",
method: "post",
})
}

@ -44,6 +44,7 @@ export const constantRoutes = [
{
path: "/login",
component: () => import("@/views/login"),
// component: () => import("@/views/login_v1"), // 三方测试脱敏登录页
hidden: true,
},
{

@ -36,7 +36,7 @@
<el-button @click="footbtn('预览')" :disabled="isDisabled">预览</el-button>
<el-button type="primary" @click="footbtn('保存')"></el-button>
<el-button type="primary" @click="footbtn('导出')" :loading="exportLoading">导出</el-button>
<el-button type="primary" @click="footbtn('导出')" :disabled="isDisabled">导出</el-button>
</el-form-item>
</el-form>
</div>
@ -45,7 +45,7 @@
<div class="yewufazhan-title-right">模板指标自定义选择</div>
<div class="yewufazhanbox-right-from">
<span>年份</span>
<el-date-picker v-model="nianfenvalue3" value-format="yyyy" format="yyyy" @change="timeChange" type="year" placeholder="选择年">
<el-date-picker v-model="nianfenvalue3" :clearable="false" value-format="yyyy" format="yyyy" @change="timeChange" type="year" placeholder="选择年">
</el-date-picker>
</div>
<div class="yewufazhanbox-right-table">
@ -100,7 +100,7 @@ import { saveAs } from 'file-saver'
import { getToken } from '@/utils/auth'
import { blobValidate } from "@/utils/ruoyi";
import errorCode from '@/utils/errorCode'
import { templateMetrics, templateMetricsAdd } from "@/api/jin_ji_hu/ServiceDevelopment/index"
import { templateMetrics, templateMetricsAdd, getId } from "@/api/jin_ji_hu/ServiceDevelopment/index"
import axios from 'axios'
export default {
name: '',
@ -136,8 +136,6 @@ export default {
content: "<p>一、总体实力显著增强</p><p>产业规模高速增长,综合贡献明显提升。</p><p>近年来,园区服务业保持持续增长态势,截至目前,园区服务业规上企业总计 677 家。2021年,园区实现服务业增加值 1674.4亿元占GDP 比重达 50.3%。2022年全年实现服务业增加值1753.18亿元,占 GDP 比重49.9%。2023年1-3月实现服务业增加值 405.95亿元同比增加4.2%。7大服务业核算行业(①多式联运和运输代理业、②装卸报运和仓储业、③互联网和相关服务、软件信息服务业、④租赁和商务服务业、(5居民服务、修理和其他服务业、⑥文化、体育和娱乐业、⑦科学研究和技术服务业)2022年全年营股1311.71亿元增速达22%:2023年1-3月实现营收 348.34亿元,同比增速 35%。根据苏州市新兴服务业行业分类(含金融服务、信息服务、物流服务、科技服务、商务中介服务、设计服务、人力资源服务、检验栓测认证、低碳绿色服务、现代商贸、文化消费、旅游康养等 12个类别)2022年国区新兴服务业营收达 1488.57 亿元,较上年增长 24%。</p><p>二、产业结构持续优化</p><p>产业结构还步优化生产性服务占主导。经过多年发展园区服务业产业结构逐渐多样化生产性服务业与生活性服务业基本形成7:3的格局。2022年生产性服务业增加值达到1199.5亿元占服务业增加值比重达68.筑。截至目前,园区生产性服务业规上企业总计 655家(含部分工业企业)。自 2019年苏州市开展全市生产恒服务业综合译价以来园区已连续两年考评优秀。37家国区企业入选苏州市生产性服务业领军企业占全市51%位全市第一并成为苏州首个实现生产性服务业9大重点领域(信息技术服务、研发设计、金融服务、检验检测认证、知识产权服务、节能环保服务、人力资源服务、现代供应蛙管理、商务服务)全度盖的区域。推动先进制造业和现代服务业深度融合发展2022年初园区获评江苏省两业融合深度融合试点地区。</p><p>城市活力不断提升,生活性服务显潜能。完成环金鸡湖商圈城市活力提升规划并正式发布,引导环金鸡湖商圈核心商业体差异定位、错位发展,金鸡湖景区获评第一批省级现代服务业高质量发展集聚示范区。积极引入北京及上海周边外溢资源,推动园区载体与国内优质品牌对接,加快发展“首店经济”(首店经济是指一个区域利用特有的资源优势,吸引国内外品牌在区域首次开设门店,目前国区大力推动“中国首店”“苏州首店”落户园区)。通过开展“云购金鸡湖”等活动,持续打造金鸡湖系列 IP宣传园区特色消费场景在后疫情时代不断激发生活性服务业发展能。</p>",
infoVisible:false,
isDisabled:true,
//
exportLoading: false,
}
},
watch:{
@ -161,6 +159,7 @@ export default {
let year = date.getFullYear();
this.nianfenvalue3 = year + ''
this.getList();
this.getEditinfo();
},
methods: {
getText(str){
@ -175,7 +174,9 @@ export default {
//
charu(item){
// console.log(item);
this.$refs.myEditor.interposition(item.count)
if(item.count != "-") {
this.$refs.myEditor.interposition(item.count)
}
// : editor.insertText('xxx') editor.dangerouslyInsertHtml(`<h1></h1><p> <b></b></p>`)
},
//
@ -216,35 +217,29 @@ export default {
cancelButtonText: "取消",
type: "warning",
})
/**
*
* {
...this.formInline
},
*/
.then(() => {
this.exportLoading = true;
this.loading = true;
axios({
method: 'get',
url: this.VUE_APP_BASE_API + "/jjh/templateMetrics/downloadLocal",
method: 'post',
url: this.VUE_APP_BASE_API + "/jjh/templateMetrics/downloadTemplate",
data: this.addFrom,
responseType: 'blob',
headers: { 'Authorization': 'Bearer ' + getToken() }
}).then((res) => {
console.log(res);
const isBlob = blobValidate(res.data);
if (isBlob) {
const blob = new Blob([res.data])
saveAs(blob, decodeURIComponent(res.headers['download-filename']))
saveAs(blob, ("发展模板" + new Date().getTime() + ".docx"))
} else {
this.printErrMsg(res.data);
}
})
// this.download(
// "/jjh/templateMetrics/downloadLocal",
// "/jjh/templateMetrics/downloadTemplate",
// {...this.addFrom},
// "" + new Date().getTime() + ".xlsx"
// );
this.exportLoading = false;
this.loading = false;
})
.catch((err) => {
console.log(err);
@ -265,10 +260,15 @@ export default {
},
//
getList(){
templateMetrics({year:this.nianfenvalue3}).then(res=>{
templateMetrics(this.nianfenvalue3).then(res=>{
this.tableData = res.data;
})
},
getEditinfo(){
getId().then(res=>{
this.addFrom = res.data
})
},
//
timeChange(time){
this.getList()

@ -0,0 +1,249 @@
<!-- 异常待办提醒 -->
<template>
<div class="L-public-main" id="L-size-main">
<div class="L-main">
<header id="L-header">
<el-form :inline="true" :model="formInline" size="small" class="demo-form-inline" ref="queryFrom">
<el-col :span="24">
<el-form-item label="待办任务标题:" prop="enterpriseDirectory">
<el-input v-model.trim="formInline.enterpriseDirectory" placeholder="请输入内容"></el-input>
</el-form-item>
<el-form-item>
<el-button size="mini" @click="resetQuery('queryFrom')"></el-button>
<el-button size="mini" type="primary" @click="handleQuery('queryFrom')"></el-button>
</el-form-item>
</el-col>
</el-form>
</header>
<section>
<el-table v-loading="loading" :data="tableData" :row-class-name="tableRowClassName" :height="tabHeader" :max-height="tabHeader">
<el-table-column label="序号" type="index" align="center" width="50"/>
<el-table-column label="待办任务标题" align="center" prop="enterpriseDirectory" />
<el-table-column label="审核状态" align="center" prop="cylx">
<template slot-scope="scope">
<span v-if="scope.row.status == 5" class="approval_status5"></span>
<!-- <span v-if="scope.row.status == 4" class="approval_status3"></span> -->
<span v-if="scope.row.status == 3" class="approval_status3"></span>
<span v-if="scope.row.status == 2" class="approval_status1"></span>
<span v-if="scope.row.status == 1" class="approval_status1"></span>
<span v-if="scope.row.status == 0" class="approval_status0"></span>
<span v-if="scope.row.status == 8" class="approval_status8"></span>
<span v-if="scope.row.status == 7" class="approval_status9"></span>
<!-- <span v-if="scope.row.status == 6" class="approval_status9">-</span> -->
<span v-if="scope.row.status == 6" class="approval_status5"></span>
<span v-if="scope.row.status == 9" class="approval_status9"></span>
<span v-if="scope.row.status == 10" class="approval_status9"></span>
</template>
</el-table-column>
<el-table-column label="操作" prop="userId" align="center" class-name="table-operation" width="120">
<template slot-scope="scope">
<span class="look-info" @click="goInfo(scope.row)"></span>
</template>
</el-table-column>
</el-table>
<my-pagination
id="L-pagination"
:total="total"
:page="pagination.current"
:limit="pagination.size"
@pagination="getPagination"
:current-page.sync="pagination.current"
></my-pagination>
</section>
</div>
</div>
</template>
<script>
import myPagination from "@/views/components/Pagination/index.vue"
import { listRecords } from "@/api/onlineDeclartion/records"
export default {
components:{myPagination},
data() {
return {
userType: this.$store.state.user.userType,
deptId: this.$store.state.user.deptId,
total:0,
pagination: {
current:1,
size:10,
},
loading:false,
formInline: {
enterpriseDirectory: '',
type: null,
},
tableData:[],
tabHeader: undefined,
}
},
mounted() {
this.cancalDebounce();
window.addEventListener('resize', this.cancalDebounce);
// if(this.$route.params.enterpriseName) {
// this.formInline.enterpriseName = this.$route.params.enterpriseName;
// this.pagination = { ...this.pagination,...this.formInline };
// }
this.getList();
},
destroyed() {
window.removeEventListener('resize', this.cancalDebounce);
},
methods:{
//
getList(){
this.loading = true;
listRecords(this.pagination).then(res=>{
this.loading = false;
this.total = res.total;
this.tableData = res.rows;
})
},
//
getPagination(pages) {
this.pagination.current = pages.page;
this.pagination.size = pages.limit;
this.getList();
},
//
handleQuery() {
this.pagination = {
current: 1,
size: 10
}
this.pagination = { ...this.pagination,...this.formInline };
this.getList();
},
//
resetQuery(formName){
this.$refs[formName].resetFields();
this.pagination = {
current: 1,
size: 10
}
this.getList();
},
// table
tableRowClassName({row, rowIndex}){
if (rowIndex % 2 !== 0) {
return 'evenNumber-row';
}
return '';
},
//
goInfo(row){
this.$router.push({
name: 'enterpriselibraryInfo',
query: { userId: row.id, creditCode: row.tyshxydm }
})
},
//
cancalDebounce(){
const element = document.getElementById('L-size-main'); // ID
const header = document.getElementById('L-header'); // ID
const pagination = document.getElementById('L-pagination'); // ID
const elementHeight = element.offsetHeight;
const headerHeight = header.offsetHeight;
const paginationtHeight = pagination.offsetHeight;
this.tabHeader = elementHeight - headerHeight - paginationtHeight - 140;
}
},
}
</script>
<style scoped lang="scss">
.approval_status5 {
color: #24d3a9;
position: relative;
padding-left: 15px;
}
.approval_status5::after {
position: absolute;
content: '';
width: 7px;
height: 7px;
border-radius: 50%;
background-color: #24d3a9;
left: 5px;
top: 50%;
transform: translate(-50%, -50%);
}
.approval_status3 {
color: #134ee6;
position: relative;
padding-left: 15px;
}
.approval_status3::after {
position: absolute;
content: '';
width: 7px;
height: 7px;
border-radius: 50%;
background-color: #134ee6;
left: 5px;
top: 50%;
transform: translate(-50%, -50%);
}
.approval_status1 {
color: #1890ff;
position: relative;
padding-left: 15px;
}
.approval_status1::after {
position: absolute;
content: '';
width: 7px;
height: 7px;
border-radius: 50%;
background-color: #1890ff;
left: 5px;
top: 50%;
transform: translate(-50%, -50%);
}
.approval_status0 {
color: #14ecd0;
position: relative;
padding-left: 15px;
}
.approval_status0::after {
position: absolute;
content: '';
width: 7px;
height: 7px;
border-radius: 50%;
background-color: #14ecd0;
left: 5px;
top: 50%;
transform: translate(-50%, -50%);
}
.approval_status8 {
color: #f39801;
position: relative;
padding-left: 15px;
}
.approval_status8::after {
position: absolute;
content: '';
width: 7px;
height: 7px;
border-radius: 50%;
background-color: #f39801;
left: 5px;
top: 50%;
transform: translate(-50%, -50%);
}
.approval_status9 {
color: red;
position: relative;
padding-left: 15px;
}
.approval_status9::after {
position: absolute;
content: '';
width: 7px;
height: 7px;
border-radius: 50%;
background-color: red;
left: 5px;
top: 50%;
transform: translate(-50%, -50%);
}
</style>

@ -43,6 +43,7 @@ export default {
editorConfig: {
placeholder: '请输入内容...',
autoFocus:false, // focus true
backColor: "red",
MENU_CONF: {
uploadImage:{
//
@ -98,7 +99,7 @@ export default {
this.$nextTick(()=>{
const toolbar = DomEditor.getToolbar(editor)
const curToolbarConfig = toolbar.getConfig()
// console.log( curToolbarConfig.toolbarKeys ) //
console.log( curToolbarConfig.toolbarKeys ) //
})
},
onChange(editor){
@ -112,7 +113,7 @@ export default {
},
//
interposition(value){
this.editor.dangerouslyInsertHtml(`<span style="color: rgb(255, 255, 255); background-color: rgb(66, 144, 247);">${value}</span>`)
this.editor.dangerouslyInsertHtml(`<span style="color: rgb(255, 255, 255); background-color: rgb(66, 144, 247);">${value}</span><span></span>`)
},
onBlur(){
this.$emit('onBlur');

@ -10,7 +10,7 @@
<span class="dataCloudMap-birght"></span>
<span class="dataCloudMap-title">服务业发展总览</span>
</div>
<span class="dataCloudMap-data">统计数据截至{{ time }}</span>
<span class="dataCloudMap-data">统计数据截至2024-01</span>
</div>
<div class="rightBigNav">
<div class="right-nav">
@ -38,7 +38,7 @@
<span class="dataCloudMap-birght"></span>
<span class="dataCloudMap-title">行业纵深情况</span>
</div>
<span class="dataCloudMap-data">统计数据截至{{ time }}</span>
<span class="dataCloudMap-data">统计数据截至2024-01</span>
</div>
<div class="rightBtn" @click="industryBtn">>></div>
</div>
@ -91,7 +91,7 @@
<span class="dataCloudMap-birght"></span>
<span class="dataCloudMap-title">企业情况</span>
</div>
<span class="dataCloudMap-data">统计数据截至{{ time }}</span>
<span class="dataCloudMap-data">统计数据截至2024-01</span>
</div>
<div class="dataCloudMap-enterprise-bottom">
<div class="dataCloudMap-enterprise">
@ -205,7 +205,7 @@
<span class="dataCloudMap-birght"></span>
<span class="dataCloudMap-title">荣誉情况</span>
</div>
<span class="dataCloudMap-data">统计数据截至{{ time }}</span>
<span class="dataCloudMap-data">统计数据截至2024-01</span>
</div>
<div class="rightBtn" @click="honorBtn">>></div>
</div>

@ -128,7 +128,8 @@ export default {
return {
// 01 02
userType: this.$store.state.user.userType,
tabs:[
tabs:[],
govTabs:[
{
name: "基本信息",
},{
@ -139,6 +140,15 @@ export default {
name: "备忘录",
},
],
entTabs:[
{
name: "基本信息",
},{
name: "联络人列表",
},{
name: "项目清单",
},
],
active: 0,
info:{},
detailedInfo:{},
@ -204,8 +214,10 @@ export default {
},
mounted(){
if(this.userType == '02') {
this.tabs = this.govTabs
this.getInfo(this.$route.query.userId)
} else {
this.tabs = this.entTabs
this.getInfo(this.$store.state.user.enterpriseId)
}
this.cancalDebounce();

@ -108,7 +108,7 @@
<span class="dataCloudMap-birght"></span>
<div class="left-header-title">智能提醒</div>
</div>
<el-button @click="MoreRecords('all')" type="text" v-if="remindList.length > 0">>> 更多记录</el-button>
<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' : ''">
@ -167,7 +167,7 @@
<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>
<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'">
@ -175,7 +175,7 @@
<!-- <div>{{ item.enterpriseName }}</div> -->
<div>{{ (item.status == 0 ? "待填报" : item.status == 8 ? "初审不通过" : item.status == 10 ? "初审退回修改" : item.status == 7 ? "复审不通过" : item.status == 9 ? "终审不通过" : item.status == 5 ? "终审通过" : "") }}</div>
<!-- <div>审批知识产权材料</div> -->
<div @click="MoreRecords('id',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 @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>
<div class="right-main" v-else>
@ -309,8 +309,14 @@ export default {
},
//
entRemind(){
enterpriseAll().then(res=>{
this.remindList = res.data;
enterpriseAll({current:1,size:20}).then(res=>{
this.remindList = res.data.records;
})
},
//
enterjump(){
this.$router.push({
name: 'WarningReminder',
})
},
//
@ -335,25 +341,24 @@ export default {
this.info = item;
}
},
//
enterjumpTask(){
this.$router.push({
name: 'AbnormalRemind',
})
},
//
MoreRecords(type,status){
if(type == 'all') {
MoreRecords(status){
if(status == 0 || status == 10) {
this.$router.push({
name: 'Records',
params: { statusChange: "" }
params: { statusChange: "0" }
})
} else {
if(status == 0 || status == 10) {
this.$router.push({
name: 'Records',
params: { statusChange: "0" }
})
} else {
this.$router.push({
name: 'Records',
params: { statusChange: "1" }
})
}
this.$router.push({
name: 'Records',
params: { statusChange: "1" }
})
}
},
//

@ -0,0 +1,294 @@
<template>
<div class="login">
<el-form
ref="loginForm"
:model="loginForm"
:rules="loginRules"
class="login-form"
>
<!-- <h3 class="title">若依后台管理系统</h3> -->
<el-tabs v-model="userType" @tab-click="handleClick">
<el-tab-pane label="企业用户登录" name="01"></el-tab-pane>
<el-tab-pane label="政务用户登录" name="02"></el-tab-pane>
</el-tabs>
<el-form-item prop="username">
<el-input
v-model="loginForm.username"
type="text"
auto-complete="off"
placeholder="账号"
>
<svg-icon
slot="prefix"
icon-class="user"
class="el-input__icon input-icon"
/>
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-input
v-model="loginForm.password"
type="password"
auto-complete="off"
placeholder="密码"
@keyup.enter.native="handleLogin"
>
<svg-icon
slot="prefix"
icon-class="password"
class="el-input__icon input-icon"
/>
</el-input>
</el-form-item>
<el-form-item prop="code">
<el-input
v-model="loginForm.code"
auto-complete="off"
placeholder="验证码"
style="width: 63%"
@keyup.enter.native="handleLogin"
>
<svg-icon
slot="prefix"
icon-class="validCode"
class="el-input__icon input-icon"
/>
</el-input>
<div class="login-code">
<img :src="codeUrl" @click="getCode" class="login-code-img" />
</div>
</el-form-item>
<el-checkbox
v-model="loginForm.rememberMe"
style="margin: 0px 0px 25px 0px"
>记住密码</el-checkbox
>
<el-form-item style="width: 100%">
<el-button
:loading="loading"
size="medium"
type="primary"
style="width: 100%"
@click.native.prevent="handleLogin"
>
<span v-if="!loading"> </span>
<span v-else> ...</span>
</el-button>
<!-- <el-button
size="medium"
type="primary"
style="width: 100%;margin-left: 0;margin-top: 20px;"
@click.native.prevent="changeHttp"
>
<span>政务通统一身份认证登录</span>
</el-button> -->
<div style="float: right" v-if="register">
<router-link class="link-type" :to="'/register'"
>立即注册</router-link
>
</div>
</el-form-item>
</el-form>
<!-- 底部 -->
<!-- <div class="el-login-footer">
<span>Copyright © 2018-2024 ruoyi.vip All Rights Reserved.</span>
</div> -->
<!-- 正式环境部署命令 unzip /var/www/html/dist.zip -d /var/www/html/bms -->
<!-- process.env.VUE_APP_BASE_API 替换 location.origin + '/api' publicPath /dome/JinJiHu 更换为./ -->
</div>
</template>
<script>
import { getCodeImg } from "@/api/login";
import Cookies from "js-cookie";
import { encrypt, decrypt } from "@/utils/jsencrypt";
export default {
name: "Login",
data() {
return {
codeUrl: "",
loginForm: {
username: "", // admin
password: "", // admin123
rememberMe: false,
code: "",
uuid: "",
},
loginRules: {
username: [
{ required: true, trigger: "blur", message: "请输入您的账号" },
],
password: [
{ required: true, trigger: "blur", message: "请输入您的密码" },
],
code: [{ required: true, trigger: "change", message: "请输入验证码" }],
},
loading: false,
//
captchaEnabled: true,
//
register: false,
redirect: undefined,
userType:"01",
};
},
watch: {
$route: {
handler: function (route) {
this.redirect = route.query && route.query.redirect;
},
immediate: true,
},
},
created() {
this.getCode();
this.getCookie();
},
methods: {
handleClick(tab){
// if(tab.index == "1") {
// this.getCode();
// }
},
getCode() {
getCodeImg().then((res) => {
this.captchaEnabled =
res.captchaEnabled === undefined ? true : res.captchaEnabled;
if (this.captchaEnabled) {
this.codeUrl = "data:image/gif;base64," + res.img;
this.loginForm.uuid = res.uuid;
}
});
},
getCookie() {
const username = Cookies.get("username");
const password = Cookies.get("password");
const rememberMe = Cookies.get("rememberMe");
this.loginForm = {
username: username === undefined ? this.loginForm.username : username,
password:
password === undefined ? this.loginForm.password : decrypt(password),
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
};
},
handleLogin() {
this.$refs.loginForm.validate((valid) => {
if (valid) {
this.loading = true;
if (this.loginForm.rememberMe) {
Cookies.set("username", this.loginForm.username, { expires: 30 });
Cookies.set("password", encrypt(this.loginForm.password), {
expires: 30,
});
Cookies.set("rememberMe", this.loginForm.rememberMe, {
expires: 30,
});
} else {
Cookies.remove("username");
Cookies.remove("password");
Cookies.remove("rememberMe");
}
this.$store
.dispatch("Login", {...this.loginForm,userType:this.userType})
.then(() => {
this.$router.push({ path: this.redirect || "/" }).catch(() => {});
})
.catch(() => {
this.loading = false;
if (this.captchaEnabled) {
this.getCode();
}
});
}
});
},
changeHttp(){
location.href = "https://qyt.sipac.gov.cn/sipsg-enterprise-mobile-manage/#/login"
},
},
};
</script>
<style rel="stylesheet/scss" lang="scss">
.login {
position: relative;
height: 100%;
background: url("../assets/images/login-background.jpg") no-repeat;
background-size: 100% 100%;
}
.title {
margin: 0px auto 30px auto;
text-align: center;
color: #707070;
}
.enterBtnLogin {
height: 100%;
.wai-box {
height: 100%;
margin-top: 30%;
}
}
.login-form {
position: absolute;
top: 45%;
left: 68%;
transform: translate(-50%, -50%);
border-radius: 6px;
background: #ffffff;
width: 400px;
height: 380px;
padding: 25px 25px 5px 25px;
box-shadow: 0 4px 20px 0 rgba(0, 0, 0, 0.15);
.el-input {
height: 38px;
input {
height: 38px;
}
}
.input-icon {
height: 39px;
width: 14px;
margin-left: 2px;
}
::v-deep .el-tabs {
.el-tabs__nav .el-tabs__item {
width: 50%;
text-align: center;
}
}
}
.login-tip {
font-size: 13px;
text-align: center;
color: #bfbfbf;
}
.login-code {
width: 33%;
height: 38px;
float: right;
img {
cursor: pointer;
vertical-align: middle;
}
}
.el-login-footer {
height: 40px;
line-height: 40px;
position: fixed;
bottom: 0;
width: 100%;
text-align: center;
color: #fff;
font-family: Arial;
font-size: 12px;
letter-spacing: 1px;
}
.login-code-img {
height: 38px;
}
</style>

@ -0,0 +1,153 @@
<!-- 预警提醒 -->
<template>
<div class="L-public-main" id="L-size-main">
<div class="L-main">
<header id="L-header">
<el-form :inline="true" :model="formInline" size="small" class="demo-form-inline" ref="queryFrom">
<el-col :span="24">
<el-form-item label="提醒内容:" prop="alertContent">
<el-input v-model.trim="formInline.alertContent" placeholder="请输入内容"></el-input>
</el-form-item>
<el-form-item>
<el-button size="mini" @click="resetQuery('queryFrom')"></el-button>
<el-button size="mini" type="primary" @click="handleQuery('queryFrom')"></el-button>
</el-form-item>
</el-col>
</el-form>
</header>
<section>
<el-table v-loading="loading" :data="tableData" :row-class-name="tableRowClassName" :height="tabHeader" :max-height="tabHeader">
<el-table-column label="序号" type="index" align="center" width="50"/>
<el-table-column label="提醒内容" align="center" prop="alertContent" />
<el-table-column label="提醒时间" align="center" prop="alertTime" />
<el-table-column label="提醒状态" align="center" prop="isRead">
<template slot-scope="scope">
<div class="project-trace-table-type" :class="scope.row.isRead == 1 ? 'red' : 'green'">{{ scope.row.isRead == 1 ? '未读' : '已读' }}</div>
</template>
</el-table-column>
<el-table-column label="操作" prop="userId" class-name="table-operation" width="120">
<template slot-scope="scope">
<span class="look-info" @click="goInfo(scope.row)"></span>
</template>
</el-table-column>
</el-table>
<my-pagination
id="L-pagination"
:total="total"
:page="pagination.current"
:limit="pagination.size"
@pagination="getPagination"
:current-page.sync="pagination.current"
></my-pagination>
</section>
</div>
</div>
</template>
<script>
import myPagination from "@/views/components/Pagination/index.vue"
import { enterpriseAll, changeIsRead } from "@/api/jin_ji_hu/intelligentReminder"
export default {
components:{myPagination},
data() {
return {
userType: this.$store.state.user.userType,
deptId: this.$store.state.user.deptId,
total:0,
pagination: {
current:1,
size:10,
},
loading:false,
formInline: {
alertContent: '',
type: null,
},
tableData:[],
tabHeader: undefined,
}
},
mounted() {
this.cancalDebounce();
window.addEventListener('resize', this.cancalDebounce);
// if(this.$route.params.enterpriseName) {
// this.formInline.enterpriseName = this.$route.params.enterpriseName;
// this.pagination = { ...this.pagination,...this.formInline };
// }
this.getList();
},
destroyed() {
window.removeEventListener('resize', this.cancalDebounce);
},
methods:{
//
getList(){
this.loading = true;
enterpriseAll(this.pagination).then(res=>{
this.loading = false;
this.total = res.data.total;
this.tableData = res.data.records;
})
},
//
getPagination(pages) {
this.pagination.current = pages.page;
this.pagination.size = pages.limit;
this.getList();
},
//
handleQuery() {
this.pagination = {
current: 1,
size: 10
}
this.pagination = { ...this.pagination,...this.formInline };
this.getList();
},
//
resetQuery(formName){
this.$refs[formName].resetFields();
this.pagination = {
current: 1,
size: 10
}
this.getList();
},
// table
tableRowClassName({row, rowIndex}){
if (rowIndex % 2 !== 0) {
return 'evenNumber-row';
}
return '';
},
//
goInfo(row){
this.$router.push({
name: 'enterpriselibraryInfo',
query: { userId: row.id, creditCode: row.tyshxydm }
})
},
//
cancalDebounce(){
const element = document.getElementById('L-size-main'); // ID
const header = document.getElementById('L-header'); // ID
const pagination = document.getElementById('L-pagination'); // ID
const elementHeight = element.offsetHeight;
const headerHeight = header.offsetHeight;
const paginationtHeight = pagination.offsetHeight;
this.tabHeader = elementHeight - headerHeight - paginationtHeight - 140;
}
},
}
</script>
<style lang="scss" scoped>
.project-trace-table-type {
font-weight: 500;
font-size: 14px;
}
.red {
color: #FD5F5F;
}
.green {
color: #4EB997;
}
</style>

@ -73,21 +73,17 @@ export default {
formInline:{
alertContent:"",
tyshxydm:"",
servicesType: null,
},
pagination: {
pageNum:1,
pageSize:10,
},
total:40,
servicesType:null,
}
},
methods:{
open(title){
this.infoVisible = true;
this.servicesType = title;
this.formInline.servicesType = title;
this.pagination = {
pageNum: 1,
pageSize: 10
@ -102,8 +98,7 @@ export default {
this.loading = true;
approvalList(this.pagination).then(res=>{
this.tableData = res.rows
console.log(this.tableData);
this.total = res.rows.length;
this.total = res.rows.total;
this.loading = false;
})
},
@ -122,7 +117,6 @@ export default {
this.formInline = {
alertContent:"",
tyshxydm:"",
servicesType: this.servicesType,
},
this.getList();
},

@ -71,21 +71,17 @@ export default {
formInline:{
alertContent:"",
tyshxydm:"",
servicesType: null,
},
pagination: {
current:1,
size:10,
},
total:40,
servicesType:null,
}
},
methods:{
open(title){
this.infoVisible = true;
this.servicesType = title;
this.formInline.servicesType = title;
this.pagination = {
current: 1,
size: 10
@ -98,10 +94,10 @@ export default {
},
getList(){
this.loading = true;
chiefAll().then(res=>{
chiefAll(this.pagination).then(res=>{
this.loading = false;
this.total = res.data.length;
this.tableData = res.data
this.total = res.data.total;
this.tableData = res.data.chiefAll
})
// servicesList(this.pagination).then(res=>{
// this.loading = false;
@ -124,7 +120,6 @@ export default {
this.formInline = {
alertContent:"",
tyshxydm:"",
servicesType: this.servicesType,
},
this.getList();
},

@ -36,7 +36,7 @@
<span class="dataCloudMap-birght"></span>
<span class="dataCloudMap-title">服务业发展总览</span>
</div>
<span class="dataCloudMap-data">统计数据截至{{ time }}</span>
<span class="dataCloudMap-data">统计数据截至2024-01</span>
</div>
<div class="rightBigNav">
<div class="right-nav">
@ -251,7 +251,7 @@
<div class="industry-condition">
<span>02.</span> 行业纵深情况
</div>
<span class="industry-condition-statistics">统计数据截至{{ time }}</span>
<span class="industry-condition-statistics">统计数据截至2024-01</span>
</div>
<div class="rightBtn" @click="industryBtn">>></div>
</div>
@ -339,8 +339,8 @@ export default {
search:"",
backlogArray:[],
pagination: {
pageNum:1,
pageSize:10,
current:1,
size:20,
approvalStatusStr: 0,
},
//
@ -411,8 +411,8 @@ export default {
},
//
govRemind(){
chiefAll().then(res=>{
this.remindList = res.data;
chiefAll({current:1,size:20}).then(res=>{
this.remindList = res.data.records;
})
},
//

Loading…
Cancel
Save