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.

1918 lines
57 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-11-01 09:29:08
* @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.title }}
</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="inventoryBtnTwo"
/>
</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"
>
<!-- <iframe style="height: 200%; width: 100%" :src="`https://api.idocv.com/view/url?url=${docxUrl}`" v-if="!isdevelopment"></iframe> -->
</div>
<div
v-if="fileExtension === 'pdf'"
class="file-content file-content-pdf"
>
<!-- <iframe style="height: 100%; width: 100%" :src="pdfUrl" v-if="!isdevelopment"></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="handleSizeChangeZoo"
@current-change="handleCurrentChangeZoo"
>
</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 {
listWz,
listDy,
listVx,
listWb,
listTtsum,
listBzhan,
listGzdt,
getGzdt,
listZdqyml,
listZdlyjg,
listZdgzxm,
listYtlc,
} from "@/api/netManage/index.js";
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,
},
zooParams: {
pageNum: 1,
pageSize: 10,
type: 1,
},
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: "",
docxUrl: "",
numPages: "",
dongtaiTotal: 0,
isdevelopment:false,
};
},
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: {
// 工作动态信息获取
getDynamicData() {
listGzdt({isStatus:1}).then(res=>{
this.dongtaiTotal = res.total;
this.dynamicList = [...this.dynamicList, ...res.rows];
})
},
// 网络平台信息获取
async networkPlatformClick(val, type) {
this.zooParams.type = type;
this.currentPage = 1;
this.pageSize = 10;
this.dialogTitle = val;
this.zoologyIconStatus = true;
// let res = await listPlatform({ pageNum: 1, pageSize: 10, type: type });
if (val === "B站") {
this.tableHeader = ["账号ID", "URL"];
this.zoologyWidth = "1000px";
this.tableData = [];
listBzhan({ pageNum: 1, pageSize: 10, type: 1, isStatus:1 }).then(res=>{
res.rows.map((item) => {
let obj = {};
obj["账号ID"] = item.zhId;
obj["URL"] = item.url;
this.tableData.push(obj);
});
this.total = res.total;
})
} else if (val === "小红书") {
this.tableHeader = ["账号ID", "URL"];
this.zoologyWidth = "1000px";
this.tableData = [];
listBzhan({ pageNum: 1, pageSize: 10, type: 2, isStatus:1 }).then(res=>{
res.rows.map((item) => {
let obj = {};
obj["账号ID"] = item.zhId;
obj["URL"] = item.url;
this.tableData.push(obj);
});
this.total = res.total;
})
} else if (val === "今日头条") {
this.tableHeader = ["账号ID", "简介"];
this.zoologyWidth = "1200px";
this.tableData = [];
listTtsum({ pageNum: 1, pageSize: 10, type: 1, isStatus:1 }).then(res=>{
res.rows.map((item) => {
let obj = {};
obj["账号ID"] = item.zhId;
obj["简介"] = item.intro;
this.tableData.push(obj);
});
this.total = res.total;
})
} else if (val === "快手") {
this.tableHeader = ["账号ID", "简介"];
this.zoologyWidth = "1000px";
this.tableData = [];
listTtsum({ pageNum: 1, pageSize: 10, type: 2, isStatus:1}).then(res=>{
res.rows.map((item) => {
let obj = {};
obj["账号ID"] = item.zhId;
obj["简介"] = item.intro;
this.tableData.push(obj);
});
this.total = res.total;
})
} else if (val === "微信") {
this.tableHeader = ["账号ID", "行业属性"];
this.zoologyWidth = "1000px";
this.tableData = [];
listVx({ pageNum: 1, pageSize: 10, isStatus:1 }).then(res=>{
res.rows.map((item) => {
let obj = {};
obj["账号ID"] = item.zhId;
// obj["行业属性"] = this.getProps(item.props);
obj["行业属性"] = item.tmt;
this.tableData.push(obj);
});
this.total = res.total;
})
} else if (val === "网站") {
this.tableHeader = ["网站名称", "真实IP", "网站域名", "备案许可证号"];
this.zoologyWidth = "2000px";
this.tableData = [];
listWz({ pageNum: 1, pageSize: 10, isStatus:1 }).then(res=>{
res.rows.map((item) => {
let obj = {};
obj["网站名称"] = item.webName;
obj["真实IP"] = item.trueIp;
obj["网站域名"] = item.webDns;
obj["备案许可证号"] = item.icp;
this.tableData.push(obj);
});
this.total = res.total;
})
} else if (val === "微博") {
this.tableHeader = ["账号名称", "认证", "地区"];
this.zoologyWidth = "1000px";
this.tableData = [];
listWb({ pageNum: 1, pageSize: 10, isStatus:1 }).then(res=>{
res.rows.map((item) => {
let obj = {};
obj["账号名称"] = item.zhName;
obj["认证"] = item.approve;
obj["地区"] = item.areaId;
this.tableData.push(obj);
});
this.total = res.total;
})
} else if (val === "抖音") {
this.tableHeader = ["账号", "简介", "粉丝数"];
this.zoologyWidth = "1500px";
this.tableData = [];
listDy({ pageNum: 1, pageSize: 10, isStatus:1 }).then(res=>{
res.rows.map((item) => {
let obj = {};
obj["账号"] = item.userName;
obj["简介"] = item.intro;
obj["粉丝数"] = item.fsCount;
this.tableData.push(obj);
});
this.total = res.total;
this.tableData.sort((a, b) => b.粉丝数 - a.粉丝数 );
})
}
this.currentPageData = this.tableData;
this.zoologyIconStatus = true;
// 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) => {
listZdqyml({...this.queryParams,isStatus:1}).then(res => {
this.currentPageData = res.rows;
this.tableKey = [
{ name: "企业名称", value: "enterpriseName" },
{
name: "企业类型",
value: "enterpriseType",
// dictType: "tc_enter_type",
},
{
name: "互联网业务",
// value: "networkYewu",
value: "netYw",
// dictType: "tc_inlet_yewu",
},
{ name: "监管部门", value: "depJg" },
{ name: "单位地址", value: "unitAddress" },
{ name: "联系人", value: "linkMan" },
{ name: "联系电话", value: "linkTel" },
{ name: "网址或平台名称", value: "url" },
{ name: "域名", value: "dns" },
];
this.total = res.total;
});
} else if (this.currentIndex == 2) {
// listDomain(this.queryParams).then((res) => {
listZdlyjg({...this.queryParams,isStatus:1}).then((res) => {
this.currentPageData = res.rows;
this.tableKey = [
{
name: "企业类型",
value: "enterpriseType",
// dictType: "tc_enter_type",
},
{ name: "重点监管内容", value: "jgObgj" },
{ name: "法律法规令禁止的有关行为", value: "jzxw" },
{ name: "主要监管部门", value: "jgDep" },
{ name: "主要依据", value: "zyyj" },
];
this.total = res.total;
});
} else if (this.currentIndex == 3) {
// listWork(this.queryParams).then((res) => {
listZdgzxm({...this.queryParams,isStatus:1}).then((res) => {
this.currentPageData = res.rows;
this.tableKey = [
{ name: "推进单位", value: "tjUnit" },
{ name: "项目名称", value: "itemName" },
{ name: "项目内容", value: "itemContent" },
{
name: "项目类型",
value: "itemType",
// dictType: "tc_item_type",
},
{ name: "项目联系人", value: "itemLinkMan" },
];
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
},
inventoryBtnTwo(status) {
// console.log(this.dialogTitle);
const { page, limit } = status;
this.queryParams.pageNum = page;
this.queryParams.pageSize = limit;
if (this.dialogTitle == "重点企业名录清单") {
this.inventoryBtn(1, "重点企业名录清单");
} else if (this.dialogTitle == "重点领域监管清单") {
this.inventoryBtn(2, "重点领域监管清单");
} else if (this.dialogTitle == "重点工作项目清单") {
this.inventoryBtn(3, "重点工作项目清单");
}
},
// 三份清单自动切换
inventoryChange() {
this.threeTimer = setInterval(() => {
this.threeStatus++;
if (this.threeStatus > 3) {
this.threeStatus = 1;
}
}, 6000);
},
iconClick(row) {
console.log(row,'row');
if (row.URL) {
this.href = row.URL;
this.pageDetails = true;
} else if (row.网站域名) {
if (row.网站域名.substring(0, 4) === "http") {
console.log(row.网站域名,'row.网站域名')
this.href = row.网站域名;
this.pageDetails = true;
} else {
console.log(row.网站域名,'row.网站域名')
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();
},
handleSizeChangeZoo(val) {
this.zooParams.pageSize = val;
this.networkPlatformClickTwo(this.zooParams);
},
handleCurrentChangeZoo(val) {
this.zooParams.pageNum = val;
this.networkPlatformClickTwo(this.zooParams);
},
async networkPlatformClickTwo(params) {
// console.log(params, "====");
this.tableData = [];
// let res = await listPlatform(params);
if (params.type == 1) {
listWz({ ...params, isStatus:1 }).then(res=>{
res.rows.map((item) => {
let obj = {};
obj["网站名称"] = item.webName;
obj["真实IP"] = item.trueIp;
obj["网站域名"] = item.webDns;
obj["备案许可证号"] = item.icp;
this.tableData.push(obj);
});
})
} else if (params.type == 2) {
listDy({ ...params, isStatus:1 }).then(res=>{
res.rows.map((item) => {
let obj = {};
obj["账号"] = item.userName;
obj["简介"] = item.intro;
obj["粉丝数"] = item.fsCount;
this.tableData.push(obj);
});
this.tableData.sort((a, b) => b.粉丝数 - a.粉丝数);
})
} else if (params.type == 3) {
listVx({ ...params, isStatus:1 }).then(res=>{
res.rows.map((item) => {
let obj = {};
obj["账号ID"] = item.zhId;
// obj["行业属性"] = this.getProps(item.props);
obj["行业属性"] = item.tmt;
this.tableData.push(obj);
});
})
} else if (params.type == 4) {
listWb({ ...params, isStatus:1 }).then(res=>{
res.rows.map((item) => {
let obj = {};
obj["账号名称"] = item.zhName;
obj["认证"] = item.approve;
obj["地区"] = item.areaId;
this.tableData.push(obj);
});
})
} else if (params.type == 5) {
listTtsum({ ...params, type: 1, isStatus:1 }).then(res=>{
res.rows.map((item) => {
let obj = {};
obj["账号ID"] = item.zhId;
obj["简介"] = item.intro;
this.tableData.push(obj);
});
})
} else if (params.type == 6) {
listTtsum({ ...params, pageSize: 10, type: 2, isStatus:1}).then(res=>{
res.rows.map((item) => {
let obj = {};
obj["账号ID"] = item.zhId;
obj["简介"] = item.intro;
this.tableData.push(obj);
});
})
} else if (params.type == 7) {
listBzhan({ ...params, type: 1, isStatus:1 }).then(res=>{
res.rows.map((item) => {
let obj = {};
obj["账号ID"] = item.zhId;
obj["URL"] = item.url;
this.tableData.push(obj);
});
})
} else if (params.type == 8) {
listBzhan({ ...params, type: 2, isStatus:1 }).then(res=>{
res.rows.map((item) => {
let obj = {};
obj["账号ID"] = item.zhId;
obj["URL"] = item.url;
this.tableData.push(obj);
});
})
}
this.currentPageData = this.tableData;
},
async dynamicClick(e) {
this.tableData = [];
this.currentPage = 1;
this.pageSize = 10;
this.tableHeader = ["材料名称"];
getGzdt(e.target.dataset.id).then(data=>{
this.dialogTitle = data.data.title;
const fileName = data.data.fileName.split(",");
const fileUrl = data.data.fileUrl.split(",");
// console.log(fileName,'fileName')
// console.log(fileUrl,'fileUrl')
if (fileUrl.length < 1 || fileName.length < 1 || fileName == "" || fileUrl == "") return;
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.isdevelopment = false;
// this.dialogDetails = true
// console.log(process.env.VUE_APP_BASE_API2 + row['材料路径'])
this.fileExtension = row["材料路径"].substring(
row["材料路径"].lastIndexOf(".") + 1
);
// let newarr = row["材料路径"].split("/");
// let lastArr = newarr.slice(newarr.indexOf("demo") + 1, newarr.length);
// console.log(row['材料路径'],'process.env.VUE_APP_BASE_API2')
if (this.fileExtension == "pdf") {
// this.pdfUrl = row['材料路径'];
// this.dialogDetails = true;
// console.log(this.pdfUrl,'this.pdfUrl')
this.getNumPages(row["材料路径"]);
// this.getNumPages("/demo" + "/" + lastArr.join("/"));
} else if (
this.fileExtension === "docx" ||
this.fileExtension === "doc"
) {
// const blob = new Blob([row["材料路径"]]);
// console.log(blob,'blob')
// this.dialogDetails = true;
// docx.renderAsync(blob, this.$refs.fileDoc);
axios({
method: "get",
responseType: "blob", // 设置响应文件格式
url: row["材料路径"],
}).then(({ data }) => {
if (data) {
console.log(data,'data')
this.dialogDetails = true;
this.$nextTick(() => {
docx.renderAsync(data, this.$refs.fileDoc); // 渲染到页面预览
});
}
});
this.docxUrl = row['材料路径'];
this.dialogDetails = true;
}
// 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) {
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) => {
// console.log(response,'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";
this.isdevelopment = true;
if (
["生成整改通知书送达回执", "生成约谈通知书", "登记约谈"].includes(val)
) {
listYtlc({name:val}).then(res=>{
this.dialogDetails = true;
this.dialogTitle = val;
this.fileExtension = res.rows[0].fileUrl.substring(
res.rows[0].fileUrl.lastIndexOf(".") + 1
);
// console.log(this.fileExtension,'this.fileExtension')
if (this.fileExtension == "pdf") {
// this.pdfUrl = row['材料路径'];
this.getNumPages(res.rows[0].fileUrl);
this.dialogDetails = true
} else if (
this.fileExtension === "docx" ||
this.fileExtension === "doc"
) {
axios({
method: "get",
responseType: "blob", // 设置响应文件格式
url: res.rows[0].fileUrl,
}).then(({ data }) => {
if (data) {
this.$nextTick(() => {
docx.renderAsync(data, this.$refs.fileDoc); // 渲染到页面预览
});
}
});
}
})
// axios({
// method: "get",
// responseType: "blob", // 设置响应文件格式
// url: `${
// process.env.NODE_ENV === "production"
// ? window._CONFIG["fileNginxUrl"] : process.env.VUE_APP_BASE_API2
// // : "/fileApi"
// }/网信办大屏内容文档/网络管理/约谈流程/${val}.docx`,
// }).then(({ data }) => {
// if (data) {
// this.dialogDetails = true;
// this.$nextTick(() => {
// docx.renderAsync(data, this.$refs.file); // 渲染到页面预览
// });
// }
// });
}
},
},
};
</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>