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.

1806 lines
53 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!--
* @Version: 1.0
* @Author: kery.chen
* @Description: 总体概览左侧
* @Date: 2021-11-30 11:08:50
* @LastEditTime: 2023-08-24 13:47:44
* @FilePath : \\tcingiocpro\\src\\views\\privateOrder\\ecosphere\\components\\componentLeft.vue
-->
<template>
<div class="container">
<div class="module-container">
<div class="section-process">
<module-title>约谈流程</module-title>
<div class="section-process-outline">
<div class="column">
<div class="top_column">
<div class="top_column1" @click="processDetails('登记约谈')">
<img
class="process-img"
src="@/assets/ecosphere/first/icon-登记约谈.png"
alt=""
/>
<div class="process-font">登记约谈</div>
</div>
<div class="top_column2" @click="processDetails('审核通过')">
<img
class="process-img"
src="@/assets/ecosphere/first/icon-审核通过.png"
alt=""
/>
<div class="process-font">审核通过</div>
</div>
</div>
<div class="center_column">
<div class="center_column1" @click="processDetails('约谈笔录')">
<img
class="process-img"
src="@/assets/ecosphere/first/icon-约谈笔录.png"
alt=""
/>
<div class="process-font">约谈笔录</div>
</div>
<div class="center_column2" @click="processDetails('送达通知书')">
<img
class="process-img"
src="@/assets/ecosphere/first/icon-送达通知书.png"
alt=""
/>
<div class="process-font">送达通知书</div>
</div>
<div
class="center_column3"
@click="processDetails('生成约谈通知书')"
>
<img
class="process-img"
src="@/assets/ecosphere/first/icon-生成约谈通知书.png"
alt=""
/>
<div class="process-font">生成约谈通知书</div>
</div>
</div>
<div class="bottom_column">
<div
class="bottom_column1"
@click="processDetails('生成整改通知书送达回执')"
>
<img
class="process-img"
src="@/assets/ecosphere/first/icon-生成整改.png"
alt=""
/>
<div class="process-font">生成整改通知 书送达回执</div>
</div>
<div class="bottom_column2" @click="processDetails('扫描归档')">
<img
class="process-img"
src="@/assets/ecosphere/first/icon-扫描归档.png"
alt=""
/>
<div class="process-font">扫描归档</div>
</div>
</div>
</div>
</div>
</div>
<div class="section-inventory">
<module-title>三份清单</module-title>
<div
class="three-inventory"
@mouseover="inventoryMouseOver"
@mouseleave="inventoryLeave"
>
<div
:class="threeStatus === 1 ? 'checked' : 'unchecked'"
@click="inventoryBtn(1, '重点企业名录清单')"
>
<div>重点企业名录清单</div>
<img
v-if="threeStatus === 1"
src="@/assets/ecosphere/icon-指挥手册-act.png"
alt=""
/>
<img
v-if="threeStatus != 1"
src="@/assets/ecosphere/icon-指挥手册-nor.png"
alt=""
/>
</div>
<div
:class="threeStatus === 2 ? 'checked' : 'unchecked'"
@click="inventoryBtn(2, '重点领域监管清单')"
>
<div>重点领域监管清单</div>
<img
v-if="threeStatus === 2"
src="@/assets/ecosphere/icon-责任清单-act.png"
alt=""
/>
<img
v-if="threeStatus != 2"
src="@/assets/ecosphere/icon-责任清单-nor.png"
alt=""
/>
</div>
<div
:class="threeStatus === 3 ? 'checked' : 'unchecked'"
@click="inventoryBtn(3, '重点工作项目清单')"
>
<div>重点工作项目清单</div>
<img
v-if="threeStatus === 3"
src="@/assets/ecosphere/icon-负面清单-act.png"
alt=""
/>
<img
v-if="threeStatus != 3"
src="@/assets/ecosphere/icon-负面清单-nor.png"
alt=""
/>
</div>
</div>
</div>
<div class="section-dynamic">
<module-title>工作动态</module-title>
<div @click="dynamicClick($event)">
<vue-seamless-scroll
:data="dynamicList"
:class-option="classOption"
class="scroll_box"
>
<div
v-for="(item, idx) in dynamicList"
:key="idx"
class="scroll_item"
>
<div class="item_txt">
<!-- materialsName -->
<span :data-id="item.id">
{{ item.name }}
</span>
</div>
<div class="item_bottom" :data-id="item.id">
<div class="bottom_icon"></div>
<div class="bottom_name" :data-id="item.id">{{ item.type }}</div>
</div>
</div>
</vue-seamless-scroll>
</div>
</div>
<div class="section-ecosphere">
<module-title>
<div class="title-main">
网络平台
<div
v-show="iconIndex === 2"
class="title-back"
@click="
iconIndex = 1;
zoologyIconData = zoologyIconList.slice(0, 4);
"
>
返回
</div>
<div
v-show="iconIndex === 1"
class="title-right"
@click="
iconIndex = 2;
zoologyIconData = zoologyIconList.slice(4, 8);
"
>
其他
</div>
</div>
</module-title>
<div class="zoology-box">
<div
v-for="(item, idx) in zoologyIconData"
:key="idx"
class="zoology-icon"
:class="{ active: currentIndex === idx }"
@mouseover="zoologyMouseOver(idx)"
@mouseleave="zoologyMouseLeave"
@click="
networkPlatformClick(item.name,item.type);
currentIndex = idx;
"
>
<div class="icon-bk">
<img :src="item.url" style="width: 66px; height: 66px" alt="" />
</div>
<div class="zoology-icon-name">{{ item.name }}</div>
</div>
</div>
</div>
</div>
<div class="bcLeft"></div>
<!-- 三份清单 -->
<el-dialog
v-if="dialogStatus"
:title="dialogTitle"
class="screen-dialog"
:visible.sync="dialogStatus"
width="2720px"
:modal-append-to-body="false"
center
:modal="false"
:before-close="beForeClose"
>
<div style="height: 765px">
<MyTable
:height="750"
:table-list="currentPageData"
:table-key="tableKey"
/>
<div style="text-align: right">
<paginations
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="inventoryBtn"
/>
</div>
</div>
<span slot="footer" class="dialog-footer">
<span>
<el-button class="dialog-btn" @click="dialogClose">关 闭</el-button>
</span>
</span>
</el-dialog>
<el-dialog
v-if="dynamicStatus"
:title="dialogTitle"
class="screen-dialog"
:visible.sync="dynamicStatus"
width="1000px"
:modal-append-to-body="false"
center
:modal="false"
>
<div style="height: 765px">
<el-table
:data="currentPageData"
height="740"
highlight-current-row
@row-click="rowClick"
>
<el-table-column
label="序号"
type="index"
:index="
(index) => {
return index + 1 + (currentPage - 1) * pageSize;
}
"
width="80"
align="center"
/>
<template v-for="item in tableHeader">
<el-table-column
v-if="item !== '序号'"
:key="item"
:prop="item"
show-overflow-tooltip
:label="item"
>
</el-table-column>
</template>
</el-table>
<div style="text-align: right">
<el-pagination
:current-page="currentPage"
:page-sizes="[10, 20, 30, 50, 100]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
popper-class="select_bottom"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
>
</el-pagination>
</div>
</div>
<span slot="footer" class="dialog-footer">
<span>
<el-button class="dialog-btn" @click="dialogClose">关 闭</el-button>
</span>
</span>
</el-dialog>
<el-dialog
v-if="dialogDetails"
:title="dialogTitle"
class="screen-dialog"
:visible.sync="dialogDetails"
width="1460px"
:modal-append-to-body="true"
center
:modal="false"
>
<div
style="
height: 730px;
overflow: auto;
text-align: center;
display: flex;
justify-content: center;
"
>
<div
v-if="fileExtension === 'docx' || fileExtension === 'doc'"
ref="fileDoc"
class="file-content"
></div>
<div v-if="fileExtension === 'pdf'" class="file-content file-content-pdf">
<iframe style="height: 100%; width: 100%" :src="pdfUrl"></iframe>
<!-- <div v-for="i in numPages" :key="i">
<pdf ref="pdf" :key="i" :src="pdfUrl" :page="i"></pdf>
</div> -->
</div>
</div>
<span slot="footer" class="dialog-footer">
<span>
<el-button
class="dialog-btn"
@click="dialogDetails = false"
> </el-button>
</span>
</span>
</el-dialog>
<!-- 网络平台小图标 -->
<el-dialog
v-if="zoologyIconStatus"
:title="dialogTitle"
class="screen-dialog"
:visible.sync="zoologyIconStatus"
:modal-append-to-body="false"
center
:width="zoologyWidth"
:modal="false"
>
<div style="height: 765px">
<el-table
:data="currentPageData"
height="740"
highlight-current-row
@row-click="iconClick"
>
<el-table-column
label="序号"
type="index"
:index="
(index) => {
return index + 1 + (currentPage - 1) * pageSize;
}
"
width="80"
align="center"
/>
<template v-for="item in tableHeader">
<el-table-column
v-if="item !== '序号'"
:key="item"
:prop="item"
show-overflow-tooltip
:label="item"
>
</el-table-column>
</template>
</el-table>
<div style="text-align: right">
<el-pagination
:current-page="currentPage"
:page-sizes="[10, 20, 30, 50, 100]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
popper-class="select_bottom"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
>
</el-pagination>
</div>
</div>
<span slot="footer" class="dialog-footer">
<span>
<el-button
class="dialog-btn"
@click="zoologyIconStatus = false"
>关 闭</el-button>
</span>
</span>
</el-dialog>
<!-- 网络平台图标点击url跳转 -->
<el-dialog
v-if="pageDetails"
class="screen-dialog"
:visible.sync="pageDetails"
width="2250px"
:modal-append-to-body="true"
center
:modal="false"
>
<div
style="
width: 2200px;
height: 765px;
display: flex;
justify-content: center;
"
>
<iframe
id="ifraRight"
style="
background: #fff;
margin-top: 200px;
width: 1080px;
height: 385px;
transform: scale(2);
"
name="ifraRight"
:src="href"
frameborder="0"
scrolling="yes"
></iframe>
</div>
<span slot="footer" class="dialog-footer">
<span>
<el-button
class="dialog-btn"
@click="pageDetails = false"
>关 闭</el-button>
</span>
</span>
</el-dialog>
<!-- 图片 -->
<el-dialog
v-if="dialogImg"
:title="dialogTitle"
class="screen-dialog"
style="overflow:aoto"
:visible.sync="dialogImg"
width="1460px"
:modal-append-to-body="true"
center
:modal="false"
>
<div style="height:762px;overflow:auto">
<img :src="imgSrc" alt="" style="width:100%">
</div>
<span slot="footer" class="dialog-footer">
<span>
<el-button
class="dialog-btn"
@click="dialogImg = false"
>关 闭</el-button>
</span>
</span>
</el-dialog>
</div>
</template>
<script>
import vueSeamlessScroll from 'vue-seamless-scroll'
import ModuleTitle from '../../common/ModuleTitle.vue'
import { listEnterprise, listDomain, listWork, listDongtai, listPlatform, dongtaiInfo } from '@/api/zongzhi/st.js'
import {
getBilibiliData,
getRedBookData,
getToDayHeadlineData,
getQuickData,
getWechat,
getWebsite,
getWeibo,
getTikTok
} from '@/api/common'
import { downloadTwo } from '@/utils/safesoft'
const docx = require('docx-preview')
import pdf from 'vue-pdf'
import axios from 'axios'
import qs from 'qs'
window.JSZip = require('jszip')
export default {
components: {
ModuleTitle,
vueSeamlessScroll,
pdf
},
data() {
return {
currentIndex: 0,
// 总条数
total: 0,
queryParams: {
pageNum: 1,
pageSize: 10
},
dtTotal: 0,
dtParams: {
pageNum: 1,
pageSize: 10
},
currentPageData: [], // 当前页显示内容
tableKey: [],
threeTimer: null,
dialogImg: false,
imgSrc: '',
zoologyTimer: null,
currentIndex: 0,
href: null,
threeStatus: 1,
pageDetails: false,
dynamicList: [],
zoologyIconList: [
{
name: '网站',
num: 0,
subList: [],
type:1,
url: require('@/assets/ecosphere/icon-网站.png')
},
{
name: '抖音',
num: 0,
subList: [],
type:2,
url: require('@/assets/ecosphere/icon-抖音.png')
},
{
name: '微信',
num: 0,
subList: [],
type:3,
url: require('@/assets/ecosphere/icon-微信.png')
},
{
name: '微博',
num: 0,
subList: [],
type:4,
url: require('@/assets/ecosphere/icon微博.png')
},
{
name: '今日头条',
num: 0,
subList: [],
type:5,
url: require('@/assets/ecosphere/icon-头条.png')
},
{
name: '快手',
num: 0,
subList: [],
type:6,
url: require('@/assets/ecosphere/icon-快手.png')
},
{
name: 'B站',
num: 0,
subList: [],
type:7,
url: require('@/assets/ecosphere/icon-b站.png')
},
{
name: '小红书',
num: 0,
subList: [],
type:8,
url: require('@/assets/ecosphere/icon-小红书.png')
}
],
zoologyIconData: [],
dialogDetails: false,
fileUrlData: {
登记约谈:
'/网信办大屏内容文档/网络管理/工作动态/10.15约谈太仓论坛/约谈材料.docx'
},
iconIndex: 1,
dialogStatus: false,
dynamicStatus: false,
zoologyIconStatus: false,
totalPage: 1, // 统共页数默认为1
total: 1, // 统共页数默认为1
currentPage: 1, // 当前页数 默认为1
pageSize: 10, // 每页显示数量
tableHeader: [],
tableData: [],
dialogTitle: '',
zoologyWidth: '',
fileExtension: '',
pdfUrl: '',
numPages: '',
dongtaiTotal:0
}
},
computed: {
classOption() {
return {
step: 0.4, // 数值越大速度滚动越快
limitMoveNum: 5, // 开始无缝滚动的数据量 this.dataList.length
hoverStop: true, // 是否开启鼠标悬停stop
direction: 1, // 0向下 1向上 2向左 3向右
openWatch: true, // 开启数据实时监控刷新dom
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
waitTime: 1000 // 单步运动停止的时间(默认值1000ms)
}
}
},
watch: {},
created() {},
destroyed() {
clearInterval(this.threeTimer)
clearInterval(this.zoologyTimer)
clearInterval(this.time2)
},
mounted() {
this.zoologyIconData = this.zoologyIconList.slice(0, 4)
// this.getZoologyData() // 网络平台信息获取
this.getZoologyChange() // 网络平台按钮切换
this.inventoryChange() // 三份清单自动切换
this.getDynamicData() // 工作动态信息获取
// this.time2 = setInterval(() => { // 安全隐患列表
// if (this.dynamicList.length >= this.dongtaiTotal) {
// clearInterval(this.time2)
// } else {
// this.getDynamicData()
// }
// }, 500)
},
methods: {
// 工作动态信息获取
async getDynamicData() {
let res = await listDongtai()
this.dongtaiTotal = res.data.count
this.dynamicList = [...this.dynamicList, ...res.data.list]
},
// 网络平台信息获取
async networkPlatformClick(val,type) {
this.currentPage = 1
this.pageSize = 10
this.dialogTitle = val
this.zoologyIconStatus = true
if (val === 'B站') {
// getBilibiliData().then((res) => {
this.tableHeader = ['账号ID', 'URL']
this.zoologyWidth = '1000px'
this.tableData = []
// this.tableData = [
// { 账号ID: 1, URL: 'https://www.bilibili.com/' }
// ]
let res = await listPlatform({type:type});
res.rows.map((item)=>{
let obj = {}
obj['账号ID'] = item.name
obj['URL'] = item.dns
this.tableData.push(obj)
})
// res['T_DATA_BILIBILI[]'].forEach((item) => {
// this.tableData.push({ 账号ID: item.account_id, URL: item.url })
// })
this.networkPlatformData()
// })
} else if (val === '小红书') {
// getRedBookData().then((res) => {
this.tableHeader = ['账号ID', 'URL']
this.zoologyWidth = '1000px'
this.tableData = []
// this.tableData = [
// { 账号ID: 1, URL: 'https://www.xiaohongshu.com/explore' }
// ]
// res['T_DATA_RED_BOOK[]'].forEach((item) => {
// this.tableData.push({ 账号ID: item.account_id, URL: item.url })
// })
let res = await listPlatform({type:type});
res.rows.map((item)=>{
let obj = {}
obj['账号ID'] = item.name
obj['URL'] = item.dns
this.tableData.push(obj)
})
this.networkPlatformData()
// })
} else if (val === '今日头条') {
// getToDayHeadlineData().then((res) => {
this.tableHeader = ['账号ID', '简介']
this.zoologyWidth = '1200px'
this.tableData = []
// this.tableData = [
// { 账号ID: 1, 简介: '今日头条是北京字节跳动科技有限公司开发的一款基于数据挖掘的推荐引擎产品为用户推荐信息、提供连接人与信息的服务的产品。由张一鸣于2012年3月创建2012年8月发布第一个版本。' }
// ]
let res = await listPlatform({type:type});
res.rows.map((item)=>{
let obj = {}
obj['账号ID'] = item.name
obj['简介'] = item.intro
this.tableData.push(obj)
})
// res['T_DATA_TODAY_HEADLINE[]'].forEach((item) => {
// this.tableData.push({
// 账号ID: item.account_id,
// 简介: item.introduction
// })
// })
this.networkPlatformData()
// })
} else if (val === '快手') {
// getQuickData().then((res) => {
this.tableHeader = ['账号ID', '简介']
this.zoologyWidth = '1000px'
this.tableData = []
// this.tableData = [
// { 账号ID: 1, 简介: '快手是北京快手科技有限公司旗下的产品。快手 [1-2]的前身叫“GIF快手”诞生于2011年3月最初是一款用来制作、分享GIF图片的手机应用。2012年11月快手从纯粹的工具应用转型为短视频社区用于用户记录和分享生产、生活的平台。后来随着智能手机、平板电脑的普及和移动流量成本的下降快手在2015年以后迎来市场' }
// ]
let res = await listPlatform({type:type});
res.rows.map((item)=>{
let obj = {}
obj['账号ID'] = item.name
obj['简介'] = item.intro
this.tableData.push(obj)
})
// res['T_DATA_QUICK_WORKER[]'].forEach((item) => {
// this.tableData.push({
// 账号ID: item.account_id,
// 简介: item.introduction
// })
// })
this.networkPlatformData()
// })
} else if (val === '微信') {
// getWechat().then((res) => {
this.tableHeader = ['账号ID', '行业属性']
this.zoologyWidth = '1000px'
this.tableData = []
// this.tableData = [
// { 账号ID: 1, 行业属性: '自媒体' }
// ]
let res = await listPlatform({type:type});
res.rows.map((item)=>{
let obj = {}
obj['账号ID'] = item.name
obj['行业属性'] = this.getProps(item.props)
this.tableData.push(obj)
})
// res['T_DATA_WECHAT[]'].forEach((item) => {
// this.tableData.push({
// 账号ID: item.account_id,
// 行业属性: item.introduction
// })
// })
this.networkPlatformData()
// })
} else if (val === '网站') {
// getWebsite().then((res) => {
this.tableHeader = ['网站名称', '真实IP', '网站域名', '备案许可证号']
this.zoologyWidth = '2000px'
this.tableData = []
// this.tableData.push({
// 网站名称: '百度',
// 真实IP: '220.181.111.188',
// 网站域名: 'https://www.xiaohongshu.com/explore',
// 备案许可证号: '京ICP证030173号',
// numOrder: 1
// })
let res = await listPlatform({type:type});
res.rows.map((item)=>{
let obj = {}
obj['网站名称'] = item.name
obj['真实IP'] = item.ipAddress
obj['网站域名'] = item.dns
obj['备案许可证号'] = item.licenceNum
this.tableData.push(obj)
})
// res['T_big_screen_website_data[]'].forEach((item) => {
// const startIndex = item.licence_num.indexOf('备')
// const endIndex = item.licence_num.lastIndexOf('号')
// this.tableData.push({
// 网站名称: item.website_name,
// 真实IP: item.acturally_ip,
// 网站域名: item.website_domain,
// 备案许可证号: item.licence_num,
// numOrder: item.licence_num.substring(startIndex + 1, endIndex)
// })
// })
this.tableData.sort((a, b) => a.numOrder - b.numOrder)
this.networkPlatformData()
// })
} else if (val === '微博') {
// getWeibo().then((res) => {
this.tableHeader = ['账号名称', '认证', '地区']
this.zoologyWidth = '1000px'
this.tableData = []
// res['T_big_screen_weibo_data[]'].forEach((item) => {
// this.tableData.push({
// 账号名称: '大红矛',
// 认证: '微博原创视频博主',
// 地区: '北京'
// })
let res = await listPlatform({type:type});
res.rows.map((item)=>{
let obj = {}
obj['账号名称'] = item.name
obj['认证'] = item.authentication
obj['地区'] = item.area
this.tableData.push(obj)
})
// })
this.networkPlatformData()
// })
} else if (val === '抖音') {
// getTikTok().then((res) => {
this.tableHeader = ['账号', '简介', '粉丝数']
this.zoologyWidth = '1500px'
this.tableData = []
// res['T_big_screen_tik_tok[]'].forEach((item) => {
// this.tableData.push({
// 账号: '1124693722',
// 简介: '无',
// 粉丝数: 25
// })
let res = await listPlatform({type:type});
res.rows.map((item)=>{
let obj = {};
obj['账号'] = item.name;
obj['简介'] = item.intro;
obj['粉丝数'] = item.fansNum;
this.tableData.push(obj)
})
this.tableData.sort((a, b) => b.粉丝数 - a.粉丝数)
// })
}
this.networkPlatformData()
},
getProps(props){
switch(props){
case 1:
return '房产';
case 2:
return '汽车';
case 3:
return '自媒体';
case 4:
return '餐饮';
case 5:
return '电子竞技';
case 6:
return '财务'
default :
break;
}
},
networkPlatformData() {
this.total = this.tableData.length
this.totalPage = Math.ceil(this.tableData.length / this.pageSize)
this.totalPage = this.totalPage === 0 ? 1 : this.totalPage
this.setCurrentPageData()
this.zoologyIconStatus = true
},
// 网络平台按钮切换
getZoologyChange() {
this.zoologyTimer = setInterval(() => {
this.currentIndex++
if (this.currentIndex > 3) {
this.currentIndex = 0
}
}, 4000)
},
// 网络平台悬停
zoologyMouseOver(index) {
this.currentIndex = index
clearInterval(this.zoologyTimer)
},
// 网络平台离开
zoologyMouseLeave() {
this.getZoologyChange()
},
/**
* 重置
*/
reset() {
this.total = 0
this.queryParams = {
pageNum: 1,
pageSize: 10
}
this.currentPageData = [] // 当前页显示内容
this.tableKey = []
},
/**
* 关闭dialog弹出前的回调
*/
beForeClose(done) {
this.reset()
done()
},
// 三份清单按钮切换
inventoryBtn(status, val) {
this.currentIndex = status
if (this.currentIndex == 1) {
listEnterprise(this.queryParams).then(res => {
this.currentPageData = res.rows
this.tableKey = [
{ name: '企业名称', value: 'enterpriseName' },
{ name: '企业类型', value: 'enterpriseType', dictType: 'tc_enter_type' },
{ name: '互联网业务', value: 'networkYewu', dictType: 'tc_inlet_yewu' },
{ name: '监管部门', value: 'jianguanBumen' },
{ name: '单位地址', value: 'address' },
{ name: '联系人', value: 'linkMan' },
{ name: '联系电话', value: 'phoneNum' },
{ name: '网址或平台名称', value: 'productName' },
{ name: '域名', value: 'dns' }
]
this.total = res.total
})
} else if (this.currentIndex == 2) {
listDomain(this.queryParams).then(res => {
this.currentPageData = res.rows
this.tableKey = [
{ name: '企业类型', value: 'enterpriseType', dictType: 'tc_enter_type' },
{ name: '重点监管监管对象', value: 'zdjgContent' },
{ name: '法律法规令禁止的有关行为', value: 'weifaXingwei' },
{ name: '主要监管部门', value: 'dep' },
{ name: '主要依据', value: 'zhuyaoYiju' }
]
this.total = res.total
})
} else if (this.currentIndex == 3) {
listWork(this.queryParams).then(res => {
this.currentPageData = res.rows
this.tableKey = [
{ name: '推进单位', value: 'unitName' },
{ name: '项目名称', value: 'projectName' },
{ name: '项目内容', value: 'projectContent' },
{ name: '项目类型', value: 'projectType', dictType: 'tc_item_type' },
{ name: '项目联系人', value: 'projectLinkMan' }
]
this.total = res.total
})
}
this.$nextTick(() => {
this.dialogTitle = val
this.dialogStatus = true
})
// this.currentPage = 1
// this.pageSize = 10
// const tableObject = require('./data.json')
// this.threeStatus = status
// this.dialogTitle = val
// this.tableData = tableObject[val]
// this.tableHeader = []
// for (const item in tableObject[val][0]) {
// this.tableHeader.push(item)
// }
// this.total = this.tableData.length
// this.totalPage = Math.ceil(this.tableData.length / this.pageSize)
// this.totalPage = this.totalPage === 0 ? 1 : this.totalPage
// this.setCurrentPageData()
// this.dialogStatus = true
},
// 三份清单自动切换
inventoryChange() {
this.threeTimer = setInterval(() => {
this.threeStatus++
if (this.threeStatus > 3) {
this.threeStatus = 1
}
}, 6000)
},
iconClick(row) {
console.log(row)
if (row.URL) {
this.href = row.URL
this.pageDetails = true
} else if (row.网站域名) {
if (row.网站域名.substring(0, 4) === 'http') {
this.href = row.网站域名
this.pageDetails = true
} else {
this.href = 'http://' + row.网站域名
this.pageDetails = true
}
}
},
// 三分清单悬停
inventoryMouseOver() {
clearInterval(this.threeTimer)
},
// 三分清单离开
inventoryLeave() {
this.inventoryChange()
},
setCurrentPageData() {
const begin = (this.currentPage - 1) * this.pageSize
const end = this.currentPage * this.pageSize
this.currentPageData = this.tableData.slice(begin, end)
},
handleSizeChange(val) {
this.pageSize = val
this.setCurrentPageData()
},
handleCurrentChange(val) {
this.currentPage = val
this.setCurrentPageData()
},
async dynamicClick(e) {
this.tableData = []
this.currentPage = 1
this.pageSize = 10
let data = await dongtaiInfo(e.target.dataset.id)
// console.log(data)
this.tableHeader= ['材料名称']
this.dialogTitle = data.data.materialsName
const fileName = data.data.materialsFileName.split(',')
const fileUrl = data.data.materialsFileUrl.split(',')
if (fileUrl.length < 1 || fileName.length < 1) return
// console.log(fileName)
if (fileName.length > 0) {
fileName.forEach((item, index) => {
this.tableData.push({ '材料名称': item.split('.')[0],'材料路径':fileUrl[index] })
})
this.networkPlatformDataTwo()
} else {
this.tableData = []
}
this.dynamicStatus = true
// this.dialogTitle = val.dynamicName
// this.tableData = val.fileList
// this.tableHeader = []
// for (const item in val.fileList[0]) {
// if (item !== '材料路径') {
// this.tableHeader.push(item)
// }
// }
// this.total = this.tableData.length
// this.totalPage = Math.ceil(this.tableData.length / this.pageSize)
// this.totalPage = this.totalPage === 0 ? 1 : this.totalPage
// this.setCurrentPageData()
// this.dynamicStatus = true
},
networkPlatformDataTwo() {
this.total = this.tableData.length
this.totalPage = Math.ceil(this.tableData.length / this.pageSize)
this.totalPage = this.totalPage === 0 ? 1 : this.totalPage
this.setCurrentPageData()
},
rowClick(row) {
// this.dialogDetails = true
// console.log(process.env.VUE_APP_BASE_API2 + row['材料路径'])
this.fileExtension = row['材料路径'].substring(
row['材料路径'].lastIndexOf('.') + 1
)
if (this.fileExtension == "pdf") {
this.pdfUrl = process.env.VUE_APP_BASE_API2 + row['材料路径'];
this.dialogDetails = true
} else if (
this.fileExtension === "docx" ||
this.fileExtension === "doc"
) {
axios({
method: "get",
responseType: "blob", // 设置响应文件格式
url: process.env.VUE_APP_BASE_API2 + row['材料路径'],
}).then(({ data }) => {
if (data) {
this.dialogDetails = true;
this.$nextTick(() => {
docx.renderAsync(data, this.$refs.fileDoc); // 渲染到页面预览
});
}
});
}
// if (['png', 'jpg', 'jpeg'].includes(row.材料路径.substring(row.材料路径.lastIndexOf('.') + 1))) {
// this.imgSrc = `${process.env.NODE_ENV === 'production' ? window._CONFIG['fileNginxUrl'] : '/fileApi'}${row['材料路径']}`
// this.dialogImg = true
// } else if (this.fileExtension === 'docx' || this.fileExtension === 'doc') {
// axios({
// method: 'get',
// responseType: 'blob', // 设置响应文件格式
// url: `${
// process.env.NODE_ENV === 'production'
// ? window._CONFIG['fileNginxUrl']
// : process.env.VUE_APP_BASE_API2
// }${row['材料路径']}`
// }).then(({ data }) => {
// if (data) {
// this.dialogDetails = true
// this.$nextTick(() => {
// docx.renderAsync(data, this.$refs.file) // 渲染到页面预览
// })
// }
// })
// } else if (this.fileExtension === 'pdf') {
// console.log('window._CONFIG[fileNginxUrl]',window._CONFIG['fileNginxUrl'])
// this.getNumPages(`${process.env.NODE_ENV === 'production' ? window._CONFIG['fileNginxUrl'] : '/fileApi'}${row['材料路径']}`)
// }
},
getNumPages(url) {
// console.log(url)
axios({
method: 'GET',
url: url, // 后台接口
paramsSerializer: function(params) {
return qs.stringify(params, { arrayFormat: 'brackets' })
},
headers: {
'Content-Type':
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
},
responseType: 'blob'
})
.then((response) => {
this.pdfUrl = this.getObjectURL(response.data)
const loadingTask = pdf.createLoadingTask(this.pdfUrl)
loadingTask.promise
.then((pdf) => {
this.numPages = 1
setInterval(() => {
if (pdf.numPages > this.numPages) {
this.numPages++
this.$forceUpdate()
} else {
clearInterval()
}
}, 2000)
this.dialogDetails = true
})
.catch((err) => {
console.error('pdf 加载失败', err)
})
})
.catch((error) => {
this.$message.error('' + error)
})
},
getObjectURL(file) {
let url = null
if (window.createObjectURL !== undefined) {
// basic
url = window.createObjectURL(file)
} else if (window.webkitURL !== undefined) {
// webkit or chrome
try {
url = window.webkitURL.createObjectURL(file)
} catch (error) {
console.log(error)
}
} else if (window.URL !== undefined) {
// mozilla(firefox)
try {
url = window.URL.createObjectURL(file)
} catch (error) {
console.log(error)
}
}
return url
},
dialogClose() {
this.reset()
this.dialogStatus = false
this.dynamicStatus = false
this.pageSize = 20
this.currentPage = 1
},
processDetails(val) {
this.fileExtension = 'docx'
if (
['生成整改通知书送达回执', '生成约谈通知书', '登记约谈'].includes(val)
) {
this.dialogDetails = true
// axios({
// method: 'get',
// responseType: 'blob', // 设置响应文件格式
// url: `${
// process.env.NODE_ENV === 'production'
// ? window._CONFIG['fileNginxUrl']
// : '/fileApi'
// }/网信办大屏内容文档/网络管理/约谈流程/${val}.docx`
// }).then(({ data }) => {
// if (data) {
// this.dialogDetails = true
// this.$nextTick(() => {
// docx.renderAsync(data, this.$refs.file) // 渲染到页面预览
// })
// }
// })
this.dialogTitle = val
}
}
}
}
</script>
<style lang="scss" scoped>
.bcLeft {
width: 210px;
height: 924px;
position: absolute;
top: 156px;
right: -128px;
background: url("~@/assets/ecosphere/左.png") no-repeat;
background-size: 100% 100%;
}
.container {
width: 100%;
height: 100%;
.module-container {
width: 1603px;
height: 950px;
margin: 130px 0 0 50px;
display: flex;
flex-wrap: wrap;
// justify-content: space-between;
align-content: space-between;
.section-process {
width: 920px;
height: 445px;
margin-right: 22px;
.section-process-outline {
background: url("~@/assets/ecosphere/动图-箭头.png") no-repeat;
background-position-x: 48%;
background-position-y: 51%;
margin-left: 16px;
margin-top: 45px;
width: 900px;
height: 345px;
.column {
.top_column {
width: 100%;
height: 115px;
display: flex;
/* align-items: center; */
.top_column1 {
cursor: pointer;
width: 254px;
height: 80px;
background: url("~@/assets/ecosphere/first/bg-约谈流程.png");
display: flex;
align-items: center;
margin-left: 93px;
.process-img {
margin-left: 30px;
}
.process-font {
margin-left: 10px;
font-family: SourceHanSansCN-Medium;
font-size: 28px;
color: #ffffff;
}
}
.top_column2 {
width: 254px;
height: 80px;
cursor: pointer;
background: url("~@/assets/ecosphere/first/bg-约谈流程.png");
display: flex;
align-items: center;
margin-left: 76px;
.process-img {
margin-left: 30px;
}
.process-font {
margin-left: 10px;
font-family: SourceHanSansCN-Medium;
font-size: 28px;
color: #ffffff;
}
}
}
.center_column {
width: 100%;
height: 115px;
display: flex;
align-items: center;
.center_column1 {
width: 254px;
height: 80px;
cursor: pointer;
background: url("~@/assets/ecosphere/first/bg-约谈流程.png");
display: flex;
align-items: center;
margin-left: -5px;
.process-img {
margin-left: 30px;
}
.process-font {
margin-left: 10px;
font-family: SourceHanSansCN-Medium;
font-size: 28px;
color: #ffffff;
}
}
.center_column2 {
cursor: pointer;
width: 254px;
height: 80px;
background: url("~@/assets/ecosphere/first/bg-约谈流程.png");
display: flex;
align-items: center;
margin-left: 76px;
.process-img {
margin-left: 30px;
}
.process-font {
margin-left: 10px;
font-family: SourceHanSansCN-Medium;
font-size: 28px;
color: #ffffff;
}
}
.center_column3 {
width: 254px;
height: 80px;
cursor: pointer;
background: url("~@/assets/ecosphere/first/bg-约谈流程.png");
display: flex;
align-items: center;
margin-left: 76px;
.process-img {
margin-left: 30px;
}
.process-font {
margin-left: 10px;
font-family: SourceHanSansCN-Medium;
font-size: 28px;
color: #ffffff;
}
}
}
.bottom_column {
width: 100%;
height: 115px;
display: flex;
align-items: flex-end;
.bottom_column1 {
width: 274px;
height: 80px;
cursor: pointer;
background: url("~@/assets/ecosphere/first/bg-约谈流程-长.png");
display: flex;
align-items: center;
margin-left: 194px;
.process-img {
margin-left: 30px;
}
.process-font {
margin-left: 10px;
font-family: SourceHanSansCN-Medium;
font-size: 28px;
color: #ffffff;
}
}
.bottom_column2 {
width: 274px;
height: 80px;
cursor: pointer;
background: url("~@/assets/ecosphere/first/bg-约谈流程-长.png");
display: flex;
align-items: center;
margin-left: 67px;
.process-img {
margin-left: 30px;
}
.process-font {
margin-left: 15px;
font-family: SourceHanSansCN-Medium;
font-size: 28px;
color: #ffffff;
}
}
}
}
}
}
.section-inventory {
width: 520px;
height: 462px;
.three-inventory {
width: 483px;
height: 382px;
margin-left: 23px;
margin-top: 19px;
:hover {
cursor: pointer;
}
> div {
width: 483px;
height: 120px;
margin-bottom: 11px;
background: url("~@/assets/ecosphere/first/bg-三份清单-nor.png");
position: relative;
div:nth-child(1) {
position: absolute;
top: 35px;
left: 139px;
}
div:nth-child(2) {
position: absolute;
top: 59px;
left: 139px;
}
img {
position: absolute;
top: 12px;
left: 36px;
}
}
.checked {
background: url("~@/assets/ecosphere/first/bg-三份清单-act.png");
font-family: FZZDHJW--GB1-0;
font-size: 36px;
line-height: 32px;
letter-spacing: 2px;
color: #fbe84f;
}
.unchecked {
background: url("~@/assets/ecosphere/first/bg-三份清单-nor.png");
font-family: FZZDHJW--GB1-0;
font-size: 36px;
line-height: 32px;
letter-spacing: 2px;
color: #ffffff;
}
}
}
.section-dynamic {
width: 719px;
height: 484px;
margin-right: 22px;
padding-top: 40px;
.scroll_box {
width: 722px;
height: 412px;
margin-top: 30px;
overflow: hidden;
.scroll_item {
cursor: pointer;
width: 719px;
height: 165px;
display: flex;
flex-direction: column;
margin-bottom: 20px;
border: 1px solid #193859;
.item_txt {
width: 100%;
padding-left: 20px;
height: 115px;
line-height: 115px;
span {
display: inline-block;
width:695px;
color: #ffffff;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
margin: 0 auto;
font-family: SourceHanSansCN-Medium;
font-size: 28px;
}
}
.item_bottom {
width: 719px;
height: 50px;
background-image: linear-gradient(
312deg,
rgb(99 202 250 / 0%) 0%,
rgba(103, 193, 253, 0.2) 0%,
rgb(106 184 255 / 0%) 0%,
#6ab7ff42 100%
),
linear-gradient(#6ab8ff00, #6ab8ff00);
display: flex;
align-items: center;
.bottom_icon {
margin-left: 20px;
width: 29px;
height: 31px;
background: url("~@/assets/ecosphere/first/icon-部门.png");
}
.bottom_name {
margin-left: 12px;
font-family: SourceHanSansCN-Regular;
font-size: 28px;
color: #68cff9;
}
.bottom_time {
flex: 1;
text-align: right;
margin-right: 20px;
font-family: SourceHanSansCN-Regular;
font-size: 28px;
color: #68cff9;
}
}
}
}
}
.section-ecosphere {
width: 720px;
height: 484px;
padding-top: 40px;
.title-main {
width: 420px;
display: flex;
.title-right {
display: flex;
align-items: center;
text-indent: 30px;
cursor: pointer;
width: 130px;
height: 50px;
font-family: SourceHanSansCN-Medium, sans-serif;
font-size: 25px;
color: #ffffff;
background: url("~@/assets/ecosphere/btn-其他.png") no-repeat;
position: absolute;
right: 180px;
bottom: 470px;
}
.title-back {
display: flex;
align-items: center;
text-indent: 30px;
cursor: pointer;
width: 130px;
height: 50px;
font-family: SourceHanSansCN-Medium, sans-serif;
font-size: 25px;
color: #ffffff;
background: url("~@/assets/ecosphere/btn-返回.png") no-repeat;
position: absolute;
right: 180px;
bottom: 470px;
}
}
.zoology-box {
width: 700px;
display: flex;
flex-wrap: wrap;
}
.zoology-icon {
text-align: center;
width: 336px;
height: 170px;
line-height: 170px;
margin-top: 34px;
margin-left: 7px;
display: flex;
align-items: center;
box-sizing: border-box;
border: 1px solid #132d56;
border-radius: 3px;
div {
font-family: SourceHanSansCN-Regular;
font-size: 28px;
font-weight: normal;
font-stretch: normal;
letter-spacing: 1px;
color: #ffffff;
}
.icon-bk {
position: relative;
left: 46px;
width: 110px;
height: 110px;
background: url("~@/assets/ecosphere/icon-bg-默认.png") no-repeat;
background-size: 100% 100%;
display: flex;
align-items: center;
justify-content: center;
}
.zoology-icon-name {
width: 170px;
text-align: center;
position: relative;
top: 0px;
left: 54px;
font-family: SourceHanSansCN-Regular, sans-serif;
font-size: 33px;
letter-spacing: 1px;
color: #68cff9;
}
&:hover {
cursor: pointer;
}
}
.active {
background: url("~@/assets/ecosphere/bg-选中.png") no-repeat;
div {
opacity: 1;
}
.zoology-icon-name {
font-family: SourceHanSansCN-Regular, sans-serif;
font-size: 33px;
font-weight: normal;
font-stretch: normal;
letter-spacing: 1px;
color: #fffffe;
}
.arrow {
background: url("~@/assets/ecosphere/箭头-选中.png") no-repeat;
}
.icon-bk {
background: url("~@/assets/ecosphere/icon-bg-选中.png") no-repeat;
background-size: 100% 100%;
}
}
}
}
}
.screen-dialog {
.dialog-btn {
background: url("~@/assets/dialog/btn-bg.png") no-repeat;
background-size: 100% 100%;
width: 160px;
height: 50px;
font-family: SourceHanSansCN-Regular;
font-size: 24px;
font-weight: normal;
font-stretch: normal;
line-height: 10px;
letter-spacing: 2px;
color: #ffffff;
}
::v-deep .el-button {
border: none;
}
.dialog-footer :hover {
.dialog-btn {
background: url("~@/assets/dialog/btn-bg-act.png") no-repeat;
background-size: 100% 100%;
}
}
::v-deep .el-dialog__header {
background: rgba(255, 255, 255, 0);
text-align: left;
padding-left: 40px;
.el-dialog__title {
font-family: SourceHanSansCN-Bold, san-serif;
font-size: 24px;
font-weight: normal;
font-stretch: normal;
line-height: 38px;
letter-spacing: 0px;
color: #ffffff;
}
}
::v-deep .el-dialog {
background: url("../../../../assets/dialog/弹窗背景-一般.png") no-repeat;
width: 1820px;
height: 950px;
background-size: 100% 100%;
}
::v-deep .el-dialog__headerbtn {
top: 0;
}
::v-deep .el-dialog__footer {
background: rgba(255, 255, 255, 0);
}
::v-deep .el-table th.el-table__cell {
background-color: rgba(0, 0, 0, 0);
}
::v-deep .el-table {
background-color: rgba(0, 0, 0, 0);
color: #fff;
border: none;
}
::v-deep .el-table .cell {
font-size: 26px;
height: 40px;
line-height: 40px;
}
::v-deep.el-table::before {
display: none;
}
::v-deep .el-table tr {
background-color: rgba(0, 0, 0, 0);
}
::v-deep .el-table__header {
background-color: rgba(76, 162, 248, 0.2);
color: #fff;
}
::v-deep .el-table__row {
font-family: SourceHanSansCN-Regular, sans-serif;
font-size: 26px;
font-weight: normal;
font-stretch: normal;
letter-spacing: 0px;
color: #b7dfff;
background-color: rgba(106, 184, 255, 0.2);
border: solid 1px #6ab8ff;
}
::v-deep .el-table {
tbody tr {
&:hover {
td {
background-color: rgba(228, 223, 223, 0.3) !important;
}
}
}
}
::v-deep .el-table td.el-table__cell {
border: none;
}
::v-deep .el-table th.el-table__cell {
border: none;
}
}
.screen-dialog ::-webkit-scrollbar {
width: 10px;
height: 10px;
background-color: rgba(#1fb6e5, 0.06);
}
::v-deep .el-pagination__total {
color: #fff;
}
::v-deep .el-input .el-input--mini .el-input--suffix {
background: transparent;
}
::v-deep .el-pagination .el-select .el-input .el-input__inner {
background: transparent;
border: none;
color: #fff;
}
::v-deep .el-select-dropdown__list {
background: #000;
}
::v-deep .el-pagination button:disabled {
background-color: transparent;
}
::v-deep .el-pagination .btn-next {
background-color: transparent;
color: #fff;
}
::v-deep .el-pager {
color: #fff !important;
}
::v-deep .el-pager li {
background-color: transparent;
}
::v-deep .el-pagination__editor.el-input .el-input__inner {
background-color: transparent;
border: none;
color: #fff;
}
::v-deep .el-pagination__jump {
color: #fff;
}
::v-deep .el-select-dropdown .el-popper {
background-color: #132d56 !important;
}
.file-content {
width: 860px;
transform: scale(1.5);
height: 440px;
}
.file-content-pdf {
height: 580px;
}
</style>
<style lang="scss">
.file-content .docx-wrapper {
background: transparent !important;
padding: 0;
}
.file-content .docx {
width: 90% !important;
}
.file-content .docx p {
text-align: center !important;
}
</style>