Commit c62ee2f3 by 蒋勇

Merge branch 'bigdata' of gitlab.gongsibao.com:jiangyong/zhichan into bigdata

parents 8f75b169 b149d5b6
......@@ -10,9 +10,9 @@ class AccessAuthAPI extends APIBase {
this.userSve = system.getObject("service.auth.userSve");
}
/*查询注册用户的信息sys*/
async queryRegUser(pobj, query, req){
var appid=req.app.id;
var userList= await this.userSve.queryUsersByAppId(appid);
async queryRegUser(pobj, query, req) {
var appid = req.app.id;
var userList = await this.userSve.queryUsersByAppId(appid);
return system.getResult(userList);
}
/**
......@@ -43,6 +43,10 @@ class AccessAuthAPI extends APIBase {
if (tmplCode && tmplCode.indexOf("SMS_") < 0) {
return system.getResult(null, "模版编码有误");
}
var tmpReslut = await this.cacheManager["VCodeCache"].getCache(appkey + "_" + mobile);
if (tmpReslut) {
return system.getResult(system.redoFail, "操作过于频繁,请勿重复获取");
}
var vcodeResult = await this.cacheManager["VCodeCache"].cache(appkey + "_" + mobile, tmplCode, 120, signName);
return system.getResult(vcodeResult);
}
......@@ -58,7 +62,11 @@ class AccessAuthAPI extends APIBase {
if (!mobile) {
return system.getResult(null, "电话号码不能为空.");
}
var vcodeResult = this.cacheManager["VCodeCache"].cache(appkey + "_" + mobile, null, 60);
var tmpReslut = await this.cacheManager["VCodeCache"].getCache(appkey + "_" + mobile);
if (tmpReslut) {
return system.getResult(system.redoFail, "操作过于频繁,请勿重复获取");
}
var vcodeResult = this.cacheManager["VCodeCache"].cache(appkey + "_" + mobile, null, 120);
return system.getResult(vcodeResult);
}
async authAccessKey(pobj, query, req) {
......@@ -178,7 +186,7 @@ class AccessAuthAPI extends APIBase {
}
var ruser = await this.userSve.getUserByUserMobile(param);
if (!ruser) {
return system.getResult(null,"查无此用户");
return system.getResult(null, "查无此用户");
}
var opencode = super.getUUID();
var authUrl = req.app.authUrl + "?opencode=" + opencode;
......@@ -187,8 +195,8 @@ class AccessAuthAPI extends APIBase {
}
//根据openid查询是否与用户绑定
async checkWxBind(p,q,req){
var openid=p.openid;
async checkWxBind(p, q, req) {
var openid = p.openid;
if (!openid) {
return system.getResult(null, "openid不能为空");
}
......@@ -197,14 +205,14 @@ class AccessAuthAPI extends APIBase {
openid: openid,
}
var ruser = await this.userSve.checkWxBind(param);
if(!ruser){
if (!ruser) {
return system.getResult(null, "用户未绑定微信");
}
return system.getResult(ruser);
}
//根据openid登录
async loginByOpenId(p,q,req){
var openid=p.openid;
async loginByOpenId(p, q, req) {
var openid = p.openid;
if (!openid) {
return system.getResult(null, "openid不能为空");
}
......@@ -213,7 +221,7 @@ class AccessAuthAPI extends APIBase {
openid: openid,
}
var ruser = await this.userSve.checkWxBind(param);
if(!ruser){
if (!ruser) {
return system.getResult(null, "用户未绑定微信");
}
var opencode = super.getUUID();
......@@ -234,23 +242,23 @@ class AccessAuthAPI extends APIBase {
return system.getResult(null, "openid不能未空.");
}
var cacheCode = await this.cacheManager["VCodeCache"].cache(appkey + "_" + pobj.mobile, null);
if (pobj.vcode != cacheCode.vcode) {
if (!cacheCode || pobj.vcode != cacheCode.vcode) {
return system.getResult(system.verifyVCodeFail, "验证码校验不成功,请重新获取验证码验证.");
}
var param = {
app_id: req.app.id,
mobile: pobj.mobile,
openid:pobj.openid
openid: pobj.openid
}
var ruser = await this.userSve.wxBind(param);
if (!ruser) {
param = {
app_id: req.app.id,
userName: pobj.mobile,
nickName:pobj.mobile,
nickName: pobj.mobile,
mobile: pobj.mobile,
password: pobj.mobile,
wxopenid:pobj.openid
wxopenid: pobj.openid
}
ruser = await this.userSve.register(param);
}
......@@ -272,17 +280,17 @@ class AccessAuthAPI extends APIBase {
var param = {
app_id: req.app.id,
mobile: pobj.mobile,
openid:pobj.openid
openid: pobj.openid
}
var ruser = await this.userSve.wxBind(param);
if (!ruser) {
param = {
app_id: req.app.id,
userName: pobj.mobile,
nickName:pobj.mobile,
nickName: pobj.mobile,
mobile: pobj.mobile,
password: pobj.mobile,
wxopenid:pobj.openid
wxopenid: pobj.openid
}
ruser = await this.userSve.register(param);
}
......@@ -305,7 +313,7 @@ class AccessAuthAPI extends APIBase {
param = {
app_id: req.app.id,
userName: pobj.mobile,
nickName:pobj.mobile,
nickName: pobj.mobile,
mobile: pobj.mobile,
password: pobj.mobile
}
......@@ -338,9 +346,9 @@ class AccessAuthAPI extends APIBase {
/**
* 按照手机号和验证码修改密码
*/
async modiPasswordByMobile(pobj, qobj, req){
var appid=req.app.id;
var appkey=req.app.appkey;
async modiPasswordByMobile(pobj, qobj, req) {
var appid = req.app.id;
var appkey = req.app.appkey;
if (!pobj.mobile) {
return system.getResult(null, "电话号码不能未空.");
}
......@@ -351,18 +359,18 @@ class AccessAuthAPI extends APIBase {
return system.getResult(null, "新密码不能未空.");
}
var cacheCode = await this.cacheManager["VCodeCache"].cache(appkey + "_" + pobj.mobile, null);
if (pobj.vcode != cacheCode.vcode) {
return system.getResultFail(-1, "验证码校验不成功,请重新获取验证码验证.",system.verifyVCodeFail);
if (!cacheCode || pobj.vcode != cacheCode.vcode) {
return system.getResultFail(-1, "验证码校验不成功,请重新获取验证码验证.", system.verifyVCodeFail);
}
//按照appid和电话查询出要修改的用户
var ruser = await this.userSve.modiPasswordByMobile(appid,pobj.mobile,pobj.newPwd);
var ruser = await this.userSve.modiPasswordByMobile(appid, pobj.mobile, pobj.newPwd);
return system.getResult(ruser);
}
/**
* 按照账号和appid修改密码
*/
async modiPasswordByUserName(pobj, qobj, req){
var appid=req.app.id;
async modiPasswordByUserName(pobj, qobj, req) {
var appid = req.app.id;
if (!pobj.userName) {
return system.getResult(null, "账号不能未空.");
}
......@@ -372,7 +380,7 @@ class AccessAuthAPI extends APIBase {
// if (!pobj.oldPwd) {
// return system.getResult(null, "旧密码不能未空.");
// }
var ruser = await this.userSve.modiPasswordByUserName(appid,pobj.userName,pobj.newPwd,pobj.oldPwd);
var ruser = await this.userSve.modiPasswordByUserName(appid, pobj.userName, pobj.newPwd, pobj.oldPwd);
return system.getResult(ruser);
}
/**
......@@ -390,7 +398,7 @@ class AccessAuthAPI extends APIBase {
return system.getResult(null, "验证码不能未空.");
}
var cacheCode = await this.cacheManager["VCodeCache"].cache(appkey + "_" + pobj.mobile, null);
if (pobj.vcode != cacheCode.vcode) {
if (!cacheCode || pobj.vcode != cacheCode.vcode) {
return system.getResult(system.verifyVCodeFail, "验证码校验不成功,请重新获取验证码验证.");
}
var param = {
......@@ -402,9 +410,9 @@ class AccessAuthAPI extends APIBase {
param = {
app_id: req.app.id,
userName: pobj.mobile,
nickName:pobj.mobile,
nickName: pobj.mobile,
mobile: pobj.mobile,
password: pobj.mobile
password: pobj.password || pobj.mobile
}
ruser = await this.userSve.register(param);
}
......
......@@ -34,11 +34,24 @@ class CacheBase {
this.redisClient.sadd(this.cacheCacheKeyPrefix, [cachekey + "|" + this.desc]);
return JSON.parse(objvalstr);
} else {
this.redisClient.setWithEx(cachekey, cacheValue, ex);
return JSON.parse(cacheValue);
}
}
async invalidate(inputkey){
const cachekey=this.prefix+inputkey;
async getCache(inputkey, ex) {
const cachekey = this.prefix + inputkey;
var cacheValue = await this.redisClient.get(cachekey);
if (!cacheValue || cacheValue == "undefined" || cacheValue == "null") {
return null;
} else {
if (ex) {
this.redisClient.set(cachekey, cacheValue, ex);
}
return JSON.parse(cacheValue);
}
}
async invalidate(inputkey) {
const cachekey = this.prefix + inputkey;
this.redisClient.delete(cachekey);
return 0;
}
......
......@@ -174,6 +174,9 @@ System.userNameLoginFail = 2020;
System.verifyVCodeFail = 2030;
//opencode存储的值已经失效
System.verifyOpencodeFail = 2040;
//重复操作
System.redoFail = 2050;
module.exports = System;
// rc=System.getObject("tool.restClient");
......
......@@ -3,6 +3,7 @@ const uuidv4 = require('uuid/v4');
class AuthUtils {
constructor() {
this.cacheManager = system.getObject("db.common.cacheManager");
this.exTime = 5 * 3600;//缓存过期时间,5小时
}
getUUID() {
var uuid = uuidv4();
......@@ -16,11 +17,11 @@ class AuthUtils {
*/
async getTokenInfo(appkey, secret) {
var rtnKey = this.getUUID();
var cacheAccessKey = await this.cacheManager["ApiAccessKeyClientCache"].cache(appkey, rtnKey, 3600);
var cacheAccessKey = await this.cacheManager["ApiAccessKeyCache"].cache(appkey, rtnKey, this.exTime);
if (cacheAccessKey) {
rtnKey = cacheAccessKey.accessKey;
}//获取之前的token值
var appData = await this.cacheManager["ApiAccessKeyCache"].cache(rtnKey, secret, 3600, appkey);
var appData = await this.cacheManager["ApiAccessKeyCache"].cache(rtnKey, secret, this.exTime, appkey);
if (!appData) {
return system.getResultFail(system.getAppInfoFail, "key或secret错误.");
}
......
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="keywords" content="知产建站,<%=company.sitename%>,商标建站,专利建站,软著建站,财税建站">
<meta name="baidu-site-verification" content="lATAxZAm8y" />
<meta name="viewport" content="width=device-width, initial-scale=0.8, maximum-scale=0.8, user-scalable=1">
<title id="idtitle"><%=company.sitename%></title>
<link rel="stylesheet" href="/css/loaders.css">
<link rel="stylesheet" href="/css/ele/index_2.5.4.css">
<link rel="stylesheet" href="/css/main.css">
<link rel="stylesheet" href="/css/pagecom.css">
<link rel="stylesheet" href="/css/igirl.css">
<link rel="stylesheet" href="/css/fontawesome/css/font-awesome.min.css">
<link rel="stylesheet" href="/css/fontawesome/css/toolicon-style.css">
<link rel="stylesheet" href="/css/fontface-timely.css">
<link rel="stylesheet" href="/css/cropper.css">
<!-- <script src="/js/vue/browser.min.js"></script> -->
<!-- <script src="/js/vue/polyfill.min.js"></script> -->
<script src="/js/vue/vue.min_2.6.10.js"></script>
<script src="/js/vue/vue-router.min.js"></script>
<script src="/js/vue/vuex.min.js"></script>
<script src="/js/ele/index_2.5.4.js"></script>
<script src="/js/vue/axios.min.js"></script>
<script>
//缓存当前域名对应的公司信息,公司、页脚、银行账号---全局变量
var companyinfo = JSON.parse(decodeURIComponent('<%=companyinfo%>'));
//缓存当前的基础组件列表
var basecomp = JSON.parse(unescape('<%=basecom%>'));
// 缓存当前的路由路径,
var routePath = JSON.parse(unescape('<%=routePath%>'));
//缓存当前的产品
var productLst = JSON.parse(unescape('<%=productLst%>'));
//缓存当前的产品
var global_rsconfig = JSON.parse(unescape('<%=rsconfig%>'));
//缓存当前的轮播
var loopplays = JSON.parse(unescape('<%=loopplays%>'));
// footerinfo:footerinfo,
// bankAccount:bankAccount}
</script>
<style>
body {
padding: 0px;
margin: 0px;
background: white;
}
.loading {
position: fixed;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
background-color: #080534;
z-index: 9999;
}
.loading-img {
box-sizing: border-box;
display: flex;
flex: 0 1 auto;
flex-direction: column;
flex-grow: 1;
flex-shrink: 0;
flex-basis: 25%;
max-width: 25%;
height: 200px;
align-items: center;
justify-content: center;
perspective: 500px;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
}
.app-main {
position: absolute;
width: 100%;
height: 100%;
margin: 0px;
padding: 0px;
overflow-y: auto;
overflow-x: hidden;
background-color: #ffffff
}
.app-header {
height: 60px;
width: 100%;
left: 0px;
top: 0px;
}
.headtransparent {
background-color: transparent !important;
position: absolute;
left: 0px;
top: 0px;
z-index: 9999;
}
.menutransparent {
/* position: absolute; */
/* z-index:9999 */
position: relative;
/* z-index:9000; */
}
.app-stage {
position: relative;
width: 100%;
}
.app-stage .el-tabs {
width: 100%;
height: 100%;
}
.app-footer {
background-color: #31373b;
width: 100%;
color: #eee;
font-size: 12px;
height: 310px;
padding-top: 40px;
border-bottom: none;
box-sizing: border-box;
overflow: hidden;
}
.app-footer1 {
width: 100%;
color: #eee;
font-size: 12px;
border-bottom: none;
box-sizing: border-box;
overflow: hidden;
visibility: visible;
height: 46px;
background: rgb(35, 41, 64);
margin-top: 60px;
display: block;
}
.app-footer-left {
float: left;
width: 35%;
}
.app-footer-right {
float: right;
width: 56%;
display: flex;
}
.app-footer-right>.app-footer-right-item {
flex: 2;
}
.app-footer-right-item>.itemtext {
color: #f5f5f5;
font-size: 16px;
line-height: 48px;
font-family: CTCuHeiSJ;
font-weight: 400;
}
.app-footer-bottom {
margin-top: 20px;
width: 100%;
text-align: center;
font-size: 12px;
font-family: MicrosoftYaHei;
font-weight: 400;
color: rgba(200, 200, 200, 1);
line-height: 48px;
letter-spacing: 1px;
}
.app-footer-bottom1 {
width: 100%;
text-align: center;
font-size: 12px;
font-family: MicrosoftYaHei;
font-weight: 400;
color: rgba(200, 200, 200, 1);
line-height: 48px;
letter-spacing: 1px;
}
.app-footer-shu {
float: left;
width: 1px;
height: 164px;
background: rgba(146, 146, 146, 1);
}
.app-header .el-button {
color: white
}
#pane-home {
padding: 0px;
margin: -18px;
}
.el-tabs--border-card>.el-tabs__content {
/* height: 100%; */
}
/* tab的自定义定位类 */
.spechorizotal {}
.home-search-pos {
width: 820px;
height: 74px;
margin: 0 auto;
border-radius: 8px;
background: hsla(0, 0%, 100%, .2);
}
.home-search-pos .el-input__inner {
line-height: 54px;
height: 54px;
}
.home-search-pos .el-input-group__append {
background: #108EE9;
border: 1px solid #108EE9;
color: white;
}
.el-tabs--border-card>.el-tabs__header {
border-bottom: none;
}
.el-tabs--border-card {
border: none;
box-shadow: none !important;
}
.el-tab-pane {
height: 100%;
border-top: none;
}
.el-tabs__content {
padding: 0px;
/* background-color: #EFF0F7; */
}
.el-loading-mask {
background-color: transparent;
}
.el-card__header {
padding: 0px;
}
.pcpagetitle {
font-size: 23px;
font-style: weight;
padding-top: 30px;
text-align: center
}
.productList:hover {
-webkit-box-shadow: 0 0 10px rgba(0, 204, 92, 0.5);
-moz-box-shadow: 0 0 10px rgba(0, 204, 204, .5);
box-shadow: 0 0 10px rgba(0, 204, 204, .5);
}
#leftmenudiv .spechorizotal .nav_color {
color: black;
}
.roleview-title {
color: #666;
}
.bytmmonittab {}
.bycdirectsearch {}
#header_row {
border-bottom: none;
padding: 0px;
}
.braMenu {
z-index: 2;
transition: all .28s ease-out;
/* margin-top:0px;
border:none;
height:100%;
background-color: #F9F9F9 */
}
.braMenuContent {
width: 180px;
height: 100%;
transition: all .28s ease-out;
border-radius: 0;
background-color: #535680;
/* margin:15px;margin-top:2px;width: 200px */
}
.qiantai {
width: 1200px;
margin: 0 auto;
background-color: transparent;
}
.houtai {
background-color: #383A52;
}
.selectsubsystem {
width: 180px;
height: 79px;
color: #fff;
padding: 20px;
box-sizing: border-box;
background: rgba(83, 86, 128, 1);
cursor: pointer;
}
.selectsubsystem>span {
display: inline-block;
width: 100%;
height: 100%;
line-height: 46px;
background: #313356;
text-align: center;
font-size: 16px;
color: #dbd8be;
}
.leftmenu .el-submenu__title:hover {
background-color: #37AAFF !important;
color: #fff !important;
}
.leftmenu .el-menu-item:hover {
background-color: #37AAFF !important;
color: #fff !important;
}
.el-popper-hover {
background: #333333;
border: none;
width: 167px;
height: 167px;
display: flex;
}
/* xinban header */
#app-header {
width: 100%;
height: 46px;
line-height: 46px;
background: rgba(15, 13, 35, 1);
font-size: 14px;
font-family: Microsoft YaHei;
font-weight: 400;
color: rgba(255, 255, 255, 1);
}
.header-main {
width: 1200px;
height: 100%;
margin: 0 auto;
}
.header-main-houtai {
width: 100%;
height: 100%;
padding: 0px 15px;
box-sizing: border-box;
}
.header-main-title {
float: left;
cursor: pointer;
}
.header-main-title1 {
float: left;
width: 68px;
cursor: pointer;
background: rgba(26, 45, 78, 1);
text-align: center;
}
.header-main-right {
float: right;
position: relative;
}
.header-main-right::before {
content: '';
position: absolute;
left: 0px;
top: 13px;
width: 1px;
height: 12px;
background: rgba(221, 221, 221, 1);
opacity: 0.25;
}
.header-main-right>span {
padding-right: 15px;
cursor: pointer;
}
.header-main-right>img {
width: 18px;
height: 18px;
vertical-align: middle;
margin-bottom: 2px;
margin-left: 15px;
}
.header-main-tool {
float: right;
cursor: pointer;
color: #fff;
}
.header-main-tool>span {
padding: 0px 5px;
}
.header-main-tool>i {
color: #fff;
margin-right: 10px;
}
.el-popover {
left: 396px !important;
background: rgba(26, 45, 78, 1) !important;
border: 1px solid #1A2D4E !important;
}
.el-popper[x-placement^=bottom] .popper__arrow::after {
border: none !important;
border-bottom-color: rgba(26, 45, 78, 1) !important;
}
.el-popper[x-placement^=bottom] .popper__arrow {
border: none !important;
border-bottom-color: rgba(26, 45, 78, 1) !important;
}
.popover-title {
font-size: 12px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: rgba(255, 255, 255, 1);
}
.popover-list {
margin-top: 20px;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(175, 190, 215, 1);
line-height: 17px;
}
.popover-list>div {
display: inline-block;
border-left: 3px solid #128EE9;
padding-left: 10px;
line-height: 12px;
margin-right: 17px;
}
.popover-list>span {
cursor: pointer;
}
.popover-list>span:hover {
color: #128EE9;
}
</style>
</head>
<body ondragstart="return false">
<div id="app" v-loading="loading" class="app-main" style="visibility: hidden" @mouseover="hidePanel($event)">
<div id="app-header">
<div :class="isfront ? 'header-main' : 'header-main-houtai'">
<div class="header-main-title" @click="backhome">智能化知识产权服务平台</div>
<div class="header-main-title1" style="margin-left:11px;"
v-if="companyinfo.company.siteTheme == 'policy'">
<el-popover placement="bottom-start" width="511" trigger="hover">
<div>
<div class="popover-title">全部省份</div>
<div class="popover-list" v-for="(item,key) in areaArr"
:key="key">
<div>{{item.name}}</div>
<span v-for="(list,index) in item.lists"
@click="areachoice(list)">{{list}}</span>
</div>
<div style="height:10px;"></div>
</div>
<span slot="reference"><i class="el-icon-location-outline"
style="margin-right:8px;"></i>{{areaName}}</span>
</el-popover>
</div>
<div v-if="!currentUser" class="header-main-login header-main-right">
<span @click="onselect('login')">登录</span>
<span @click="onselect('register')">免费注册</span>
</div>
<div v-else class="header-main-right">
<el-dropdown style="float: right;" @command="backstageHandleCommand">
<div class="header-main-right" style="color: #fff;">
<img src="/imgs/normal/backstage.png" alt="">
<span>{{ currentUser.nickName }}</span><i
class="el-icon-caret-bottom"></i></div>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="管理后台">管理后台</el-dropdown-item>
<el-dropdown-item command="退出">退出</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<!-- <span @click="goadmin">管理后台</span>
<span @click="onselect('exit')">退出</span> -->
</div>
<div class="header-main-right"><img src="/imgs/normal/icon-public.png" alt="">
<span>公众号</span></div>
<div class="header-main-right"><img src="/imgs/normal/icon-phone.png" alt="">
<span>APP</span></div>
<div style="float: left;margin-left: 135px;"
v-if="companyinfo.company.siteTheme == 'policy'">
<el-dropdown style="float: left;" @command="handleCommand">
<div class="header-main-tool" @click="onselect('policybigdata')"><span>政策大数据</span></div>
</el-dropdown>
<el-dropdown style="float: left;" @command="handleCommand">
<div class="header-main-tool" @click="onselect('declare')"><span>政策资讯</span><i
class="el-icon-caret-bottom"></i></div>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-for="item in titles" :command="item.title">{{item.name}}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
<div style="float: right;" v-else>
<el-dropdown style="float: right;" @command="handleCommand">
<div class="header-main-tool"><span>智能工具</span><i
class="el-icon-caret-bottom"></i></div>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-for="item in rsData" :command="item"
v-if="mnufunc(item.codePath)">{{item.label}}
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</div>
</div>
<!-- 第一版 -->
<div class="popups clearfix">
<div class="popups-zhanwei"></div>
<div class="popups-kailong">
<span></span>
</div>
<div class="popups-left">
<div v-for="(item,key) in popupsData"
:class="pDataKey == key ? 'popups-left-item-cla' : 'popups-left-item'"
@mouseenter="popupsList(item,key)">
<span>
{{item.itemTypeName}}
</span>
</div>
</div>
<div class="popups-right">
<div v-for="list in popupsDataList" class="popups-right-item">
<div class="popups-right-title">{{list.serviceSmallClassTypeName}}</div>
<div class="clearfix">
<div class="popups-right-it" v-for="it in list.productList"
@click="goServiceDetails(it)">
{{it.name}}
</div>
</div>
</div>
</div>
</div>
<!-- 第二版 -->
<!-- <div class="popups-two" v-if="isdefault && isfront && popupsType">
<div class="popups-two-main" @mouseleave="popupsLeave">
<div class="popups-two-main-left">
<div v-for="(item,key) in popupsData" v-if="key < 6" :style="popupslineHeight" :class="pTowDataKey == key ? 'popups-two-left-item-cla' : 'popups-two-left-item'" @mouseenter="popupsList(item,key)" >
<span class="popups-two-left-item-span" :style="pTowDataKey == key ? 'border-bottom: none;' : ''">
{{item.itemTypeName}} <i class="el-icon-arrow-right" style="float: right;margin-top: 22px;"></i>
</span>
</div>
</div>
<div class="popups-two-right" v-if="pTowDataKey != null">
<div v-for="list in popupsDataList">
<div class="clearfix" style="padding-top: 18px;padding-bottom: 4px;border-bottom:1px solid rgba(225,225,225,1);">
<div class="popups-tow-right-title">{{list.serviceSmallClassTypeName}}<i class="el-icon-arrow-right" style="float: right;margin-top:3px;color: #1a1a1a;"></i></div>
<div class="popups-tow-right-lists">
<div class="popups-tow-right-it" v-for="it in list.productList" @click="goServiceDetails(it)">
{{it.name}}
</div>
</div>
</div>
</div>
</div>
</div>
</div> -->
<!-- 结束 -->
<div id="stage" class="app-stage" style="padding: 0px;">
<div v-if="isfront && stageType" id="#serviceemp"
style="padding-top: 3px;text-align:center;font-size: 20px;position: fixed;right:10px;bottom:160px;z-index:10001;width:60px;height:180px;">
<a :href="serviceqq" target="_blank" @mouseenter="leyuhover">
<!-- <i style="color:white;" class="el-icon-service"></i> -->
<img v-if="isleyu"
style="width:28px;height:40px;vertical-align: top;box-sizing:border-box;padding:10px 5px;background:#333333;"
src="/imgs/kefu.png" alt="">
<img v-else
style="width:28px;height:40px;vertical-align: top;box-sizing: border-box;padding:10px 5px;background:#2F95FC;"
src="/imgs/kefu.png" alt="">
</a>
<div @mouseenter="phonehover" @mouseleave="phoneleave" style="cursor:pointer">
<div style="font-size:12px;background:#333333;color:#fff;line-height:38px;width:130px;height:38px; position: absolute;right:50px;top:45px;"
v-if="showPhoneNum">
<div
style="border:4px solid rgba(0,0,0,0); border-left: 4px solid #333333;position: absolute;top:17px;right:-8px;">
</div>
电话:{{servicetel}}
</div>
<!-- <i style="color:white;" class="el-icon-phone-outline"></i> -->
<img v-if="isphone"
style="width:28px;height:40px;vertical-align: top;box-sizing:border-box;padding:10px 5px;background:#2F95FC;"
src="/imgs/dianh.png" alt="">
<img v-else
style="width:28px;height:40px;vertical-align: top;box-sizing:border-box;padding:10px 5px;background:#333333;"
src="/imgs/dianh.png" alt="">
</div>
<div @mouseenter="rwmhover" @mouseleave="rwmover" style="cursor:pointer">
<div class='el-popper-hover' style="position: absolute;right:50px;top:50px;"
v-if="showWxrm">
<div
style="border:4px solid rgba(0,0,0,0); border-left: 4px solid #333333;position: absolute;top:50px;right:-8px;">
</div>
<img style="width:100%;height:100%;background: #333333;margin: auto;"
:src="footerInfo?footerInfo.wxQrCodeUrl:''" alt="">
</div>
<img v-if="iswx" slot="reference"
style="width:28px;height:40px;vertical-align: top;box-sizing:border-box;padding:10px 5px;background:#2F95FC;"
src="/imgs/erweima.png" alt="">
<img v-else slot="reference"
style="width:28px;height:40px;vertical-align: top;box-sizing:border-box;padding:10px 5px;background:#333333;"
src="/imgs/erweima.png" alt="">
</div>
<div @mouseenter="tophover" style="cursor:pointer" @click="$('#app').scrollTop(0);">
<img v-if="istop"
style="width:28px;height:40px;vertical-align: top;box-sizing:border-box;padding:10px 5px;background:#2F95FC;"
src="/imgs/wangs.png" alt="">
<img v-else
style="width:28px;height:40px;vertical-align: top;box-sizing:border-box;padding:10px 5px;background:#333333;"
src="/imgs/wangs.png" alt="">
</div>
</div>
<div style="clear:both"></div>
<div style="min-width: 800px;height:auto;display:flex;">
<div id="leftmenudiv" class="braMenu" v-if="isShowMenu && currentUser">
<!-- <el-select style="margin-left:15px;width: 89%;margin-top:20px;margin-right:15px" placeholder="请输入功能关键字搜索"></el-select> -->
<gsb-leftmenu class="braMenuContent" bkcolor="white" ref="leftmenu"
key="leftmenu" formatprop="formatItem" @menuselect="onMenuSelect">
</gsb-leftmenu>
</div>
<div style="width:calc(100% - 180px);flex-grow:5;border:none;">
<el-tabs class="maintab" style="margin-top:0px" v-model="editableTabsValue2"
type="border-card" style="border-top:none" @tab-remove="removetab"
@tab-click="tabclick" edit closable>
<el-tab-pane v-for="(item, index) in editableTabs2" :key="item.name"
:name="item.name">
<span slot="label"><i class="el-icon-date"></i>
{{ item.title}}</span>
<transition name="slide-fade">
<div class="loading" v-if="loadingHome">
<div class="loading-img">
<div
class="loader-inner ball-pulse-rise">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
</div>
<router-view :name="item.name" :key="item.name">
</router-view>
</transition>
</el-tabs>
</div>
</div>
</div>
<!-- <div id="footer" class="app-footer" style="visibility: hidden;display: none;">
<div style="width:1200px;margin: 0 auto;overflow: hidden;">
<div class="app-footer-left">
<img :src="footerInfo?footerInfo.picUrl:''" alt="">
<div class="companyname"><%=company.name%></div>
<div class="other">地址:<%=footerinfo.address%></div>
</div>
<div class="app-footer-shu"></div>
<div class="app-footer-right">
<div class="app-footer-right-item">
<div class="itemtext">联系我们</div>
<div class="other">
客服电话:<%=footerinfo.serviceTel?footerinfo.serviceTel:"4006-798-999"%>
</div>
<div class="other">
商务合作:<%=footerinfo.cooperationTel?footerinfo.cooperationTel:"4006-798-999"%>
</div>
<div class="other"
v-if="currentCompany && currentCompany.id==1 && !currentUser"
@click="siteapply">站点申请</div>
</div>
<div class="app-footer-right-item">
<div class="itemtext">友情链接</div>
<div class="other" style="cursor:pointer"
@click="window.open('http://www.sipo.gov.cn')">国家知识产权局</div>
<div class="other" style="cursor:pointer"
@click="window.open('http://sbj.cnipa.gov.cn')">国家商标局</div>
<div class="other" style="cursor:pointer"
@click="window.open('http://www.ncac.gov.cn')">国家版权局</div>
<div class="other" style="cursor:pointer"
@click="window.open('http://www.sipo.gov.cn/xglj/201310/t20131025_870731.html')">
地方知识产权局</div>
</div>
<div class="app-footer-right-item" style="flex: 1;">
<div class="itemtext">客服二维码</div>
<img style="width: 80px" src="<%=footerinfo.wxQrCodeUrl%>" alt="">
</div>
</div> -->
<!-- <div style="float:right">
<el-row class="companyname">{{footerInfo?footerInfo.companyName:"创知厚德(北京)科技有限公司"}}</el-row>
<el-row class="other">
<el-col :span="5">客服电话:{{footerInfo?footerInfo.serviceTel:"4006-798-999"}}</el-col>
<el-col :span="5">商务合作:{{footerInfo?footerInfo.cooperationTel:"4006-798-999"}}</el-col>
</el-row>
<el-row class="other">地址:{{footerInfo?footerInfo.address:"北京市朝阳区朝来高科技产业园10号楼102号"}}</el-row>
<el-row class="other" style="margin-top:10px;">
<el-col :span="5" class="aboutus"><div @click="aboutus">关于我们</div></el-col>
<el-col :span="5" class="aboutus" v-if="currentCompany && currentCompany.id==1 && !currentUser"><div @click="siteapply">站点申请</div></el-col>
</el-row>
</div> -->
<!-- </div>
<div class="app-footer-bottom">
{{footerInfo?footerInfo.icpNum+footerInfo.icpCard:"Copyright © 2017-2018 gongsibao All Rights Reserved 版权所有:汉唐信通(北京)科技有限公司 京ICP证150505号 京ICP备14043829号-2"}}
</div>
</div> -->
<div id="footer" class="app-footer1" style="visibility: hidden;display: none;">
<div class="app-footer-bottom1">
{{footerInfo?footerInfo.icpNum+footerInfo.icpCard:"Copyright 2017-2019 gongsibao All Rights Reserved 版权所有:北京创知厚德科技有限公司 京ICP备14043829号-2京ICP证150505号"}}
</div>
</div>
</div>
<script src="/js/vue/jquery.min.js"></script>
<script src="/js/cropper/index.js"></script>
<script src="/js/vue/base64.js"></script>
<script src="/js/htmleditor/htmleditor.js"></script>
<script src="/js/htmleditor/htmleditorreg.js"></script>
<script src="/js/index.js"></script>
<script src="/js/echarts/echarts.min.js"></script>
<script src="/js/echarts/echarts-wordcloud.min.js"></script>
<script src="/js/echarts/echarts-wordcloud.js"></script>
<script>
var _hmt = _hmt || [];
(function () {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?c9f6643866bd94d26ff54175fd18d60f";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
(function () {
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https') {
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
} else {
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script>
</body>
</html>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment