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.
512 lines
13 KiB
512 lines
13 KiB
|
5 months ago
|
<template>
|
||
|
|
<div class="home app_content">
|
||
|
|
|
||
|
|
<!-- 中间 -->
|
||
|
|
<div class="warp_body">
|
||
|
|
<div class="white-body">
|
||
|
|
<div class="boutique_box">
|
||
|
|
<div class="boutique_body">
|
||
|
|
<div class="box-qr-code" @click="toScanPageView"></div>
|
||
|
|
</div>
|
||
|
|
<div class="scan-note">扫一扫企业二维码,即可查看企业信息</div>
|
||
|
|
<div class="nocode" @click="showPopup()">手动登记,请输入关键字搜索企业 >></div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<div class="record">如遇网络异常、设备故障无法登录系统的情况,<a @click="toSign">补录 >></a></div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<popup :visible="popupVisible" :content="data.lawContent" @close="closePopup" @reciveData=""/>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
</template>
|
||
|
|
|
||
|
|
<script setup name="Home">
|
||
|
|
import {showFailToast} from 'vant';
|
||
|
|
import {checkIsState,getEnterpriseInfoBySj} from '@/api/enforce';
|
||
|
|
import {szyptGetToken} from "@/api/Home";
|
||
|
|
import wx from "weixin-js-sdk";
|
||
|
|
|
||
|
|
|
||
|
|
const {useCommon} = $globalStore;
|
||
|
|
const router = useRouter();
|
||
|
|
let freshMap = reactive({
|
||
|
|
refreshLoad: false, // 是否刷新
|
||
|
|
listLoading: false, // 是否加载中
|
||
|
|
listFinished: false, // 是否加载完成标识
|
||
|
|
});
|
||
|
|
const data = reactive({
|
||
|
|
showNoScanPicker: ref(false)
|
||
|
|
});
|
||
|
|
|
||
|
|
const openScan = () => {
|
||
|
|
let fullUrl = window.location.href;
|
||
|
|
let code = fullUrl.substring(fullUrl.indexOf('code=') + 5, fullUrl.indexOf('&state='));
|
||
|
|
let paramUrl = window.location.href.split("#")[0];
|
||
|
|
let param = {code: code, url: paramUrl};
|
||
|
|
szyptGetToken(param, success => {
|
||
|
|
let resMsg = success.data;
|
||
|
|
console.log(resMsg);
|
||
|
|
wx.config({
|
||
|
|
// 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
|
||
|
|
debug: false,
|
||
|
|
// 必填,公众号的唯一标识
|
||
|
|
appId: resMsg.corpid,
|
||
|
|
// 必填,生成签名的时间戳
|
||
|
|
timestamp: resMsg.timestamp,
|
||
|
|
// 必填,生成签名的随机串
|
||
|
|
nonceStr: resMsg.nonceStr,
|
||
|
|
// 必填,签名,见附录1
|
||
|
|
signature: resMsg.signature,
|
||
|
|
// 必填,需要使用的JS接口列表,所有JS接口列表见附录2
|
||
|
|
jsApiList: ["scanQRCode"],
|
||
|
|
});
|
||
|
|
wx.ready(() => {
|
||
|
|
//微信扫一扫请求操作
|
||
|
|
ClickScan()
|
||
|
|
});
|
||
|
|
wx.error((res) => {
|
||
|
|
console.log("获取失败", res);
|
||
|
|
});
|
||
|
|
}, error => {
|
||
|
|
});
|
||
|
|
};
|
||
|
|
|
||
|
|
const ClickScan = () => {
|
||
|
|
wx.scanQRCode({
|
||
|
|
needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
|
||
|
|
scanType: ['qrCode', 'barCode'], // 可以指定扫二维码还是一维码,默认二者都有
|
||
|
|
success: (res) => {
|
||
|
|
// 页面跳转
|
||
|
|
console.log("=========== 扫码返回 ===========")
|
||
|
|
console.log(res)
|
||
|
|
//TODO 判断是否是市监
|
||
|
|
if(isHttpLink(res.resultStr)){
|
||
|
|
//判断地址是否存在cid统一信用代码
|
||
|
|
getEnterpriseInfoBySj({"url":res.resultStr},success =>{
|
||
|
|
if (success.success) {
|
||
|
|
var element = success.data;
|
||
|
|
//跳转企业二维码中间页面
|
||
|
|
toQrView(element.enterpriseNumber,element.qrCodeGenerateHistory.qrCodeUrl)
|
||
|
|
} else {
|
||
|
|
showFailToast(success.message);
|
||
|
|
router.push({
|
||
|
|
path: "/non-scan",
|
||
|
|
})
|
||
|
|
}
|
||
|
|
},error =>{})
|
||
|
|
}else{
|
||
|
|
const scanObj = JSON.parse(res.resultStr);
|
||
|
|
// 判断二维码是否过期, 如果已过期则跳转提示页
|
||
|
|
checkIsState(scanObj.salt, scanObj.codeId, success => {
|
||
|
|
if (success.data) {
|
||
|
|
router.push({
|
||
|
|
path: "/non-preview",
|
||
|
|
query: {
|
||
|
|
enterpriseNumber: scanObj.salt,
|
||
|
|
isNoScan: false
|
||
|
|
}
|
||
|
|
})
|
||
|
|
} else {
|
||
|
|
showFailToast(success.message);
|
||
|
|
router.push({
|
||
|
|
path: "/non-scan",
|
||
|
|
})
|
||
|
|
}
|
||
|
|
}, error => {
|
||
|
|
showFailToast("该二维码不正确");
|
||
|
|
})
|
||
|
|
}
|
||
|
|
},
|
||
|
|
error: function(res) {
|
||
|
|
console.log("错误回调",res)
|
||
|
|
if (res.errMsg.indexOf('function_not_exist') > 0) {
|
||
|
|
showFailToast('版本过低请升级')
|
||
|
|
}
|
||
|
|
},
|
||
|
|
cancel: (res) => {
|
||
|
|
console.log('err', res);
|
||
|
|
},
|
||
|
|
|
||
|
|
});
|
||
|
|
};
|
||
|
|
|
||
|
|
const toScanPageView = async () => {
|
||
|
|
openScan();
|
||
|
|
};
|
||
|
|
|
||
|
|
const toSign = () => {
|
||
|
|
router.push({
|
||
|
|
path: "/non-sign",
|
||
|
|
query: {
|
||
|
|
// enterpriseNumber: data.enterpriseNumber,
|
||
|
|
reason: '补录',
|
||
|
|
checkCss: 3,
|
||
|
|
// checkCss: 9,
|
||
|
|
isNoScan: true,
|
||
|
|
}
|
||
|
|
});
|
||
|
|
};
|
||
|
|
|
||
|
|
onMounted(() => {
|
||
|
|
// new Vconsole();
|
||
|
|
})
|
||
|
|
|
||
|
|
const toQrView = (enterpriseNumber,qrCodeUrl) => {
|
||
|
|
router.push({
|
||
|
|
path: "/non-qrCodeLoading",
|
||
|
|
query: {
|
||
|
|
enterpriseNumber: enterpriseNumber,
|
||
|
|
qrCodeUrl: qrCodeUrl,
|
||
|
|
}
|
||
|
|
});
|
||
|
|
};
|
||
|
|
const isHttpLink = (url) =>{
|
||
|
|
return url.indexOf("http://") === 0 || url.indexOf("https://") === 0;
|
||
|
|
}
|
||
|
|
const openEnterpriseView = (enterpriseNumber) =>{
|
||
|
|
console.log("外层获取企业统一信用代码",enterpriseNumber);
|
||
|
|
setTimeout(() =>{
|
||
|
|
console.log("定时内获取企业统一信用代码",enterpriseNumber);
|
||
|
|
router.push({
|
||
|
|
path: "/non-preview",
|
||
|
|
query: {
|
||
|
|
enterpriseNumber: enterpriseNumber,
|
||
|
|
isNoScan: false
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}, 3000);
|
||
|
|
}
|
||
|
|
</script>
|
||
|
|
<script>
|
||
|
|
//不扫码企业筛选弹窗
|
||
|
|
import Popup from '@/views/non-law/noScanFilter.vue';
|
||
|
|
import { baseUrl } from "../../config/env";
|
||
|
|
|
||
|
|
export default {
|
||
|
|
components: {
|
||
|
|
Popup
|
||
|
|
},
|
||
|
|
data() {
|
||
|
|
return {
|
||
|
|
popupVisible: false,
|
||
|
|
popupContent: ''
|
||
|
|
}
|
||
|
|
},
|
||
|
|
methods: {
|
||
|
|
showPopup() {
|
||
|
|
this.popupVisible = true;
|
||
|
|
},
|
||
|
|
closePopup() {
|
||
|
|
this.popupVisible = false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
</script>
|
||
|
|
<style lang="less" scoped>
|
||
|
|
.home {
|
||
|
|
display: flex;
|
||
|
|
flex-direction: column;
|
||
|
|
height: 100%;
|
||
|
|
overflow: hidden;
|
||
|
|
background-color: #ebf3fb;
|
||
|
|
|
||
|
|
.warp_body {
|
||
|
|
position: relative;
|
||
|
|
background-image: linear-gradient(to bottom, #ebf3fb, transparent);
|
||
|
|
|
||
|
|
.carousel_box {
|
||
|
|
position: relative;
|
||
|
|
top: 2%;
|
||
|
|
height: 4rem;
|
||
|
|
width: 100%;
|
||
|
|
background: url("/src/assets/images/scan-mean.jpg") no-repeat center center;
|
||
|
|
background-size: 60%;
|
||
|
|
opacity: 0.75;
|
||
|
|
|
||
|
|
.box-scan-one, .box-scan-two {
|
||
|
|
position: absolute;
|
||
|
|
top: 30%;
|
||
|
|
left: 15%;
|
||
|
|
height: 2.67rem;
|
||
|
|
width: 30%;
|
||
|
|
font-size: 0.4rem;
|
||
|
|
color: #999;
|
||
|
|
|
||
|
|
.box-scan-text {
|
||
|
|
margin-top: 70%;
|
||
|
|
display: block;
|
||
|
|
width: 100%;
|
||
|
|
text-align: center
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
.box-scan-two {
|
||
|
|
left: auto;
|
||
|
|
right: 12.5%;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
.boutique_box {
|
||
|
|
position: relative;
|
||
|
|
top: 25%;
|
||
|
|
z-index: 100;
|
||
|
|
width: 100%;
|
||
|
|
|
||
|
|
.boutique_body {
|
||
|
|
padding: 0 0 0.27rem 0;
|
||
|
|
display: flex;
|
||
|
|
justify-content: center;
|
||
|
|
}
|
||
|
|
;
|
||
|
|
|
||
|
|
.box-qr-code {
|
||
|
|
width: 52%;
|
||
|
|
text-align: right;
|
||
|
|
height: 6rem;
|
||
|
|
//background-color: var(--van-primary-color);
|
||
|
|
background: url("../../assets/images/scan-btn.jpg") no-repeat center center;
|
||
|
|
background-size: 100%;
|
||
|
|
// border-radius: 0.27rem;
|
||
|
|
// background-size: cover;
|
||
|
|
// border-radius: 50%;
|
||
|
|
// background-image: url("@/assets/images/scan.png");
|
||
|
|
.box-qr-code-text {
|
||
|
|
margin-right: 25%;
|
||
|
|
margin-top: 70%;
|
||
|
|
display: block;
|
||
|
|
font-size: 0.45rem;
|
||
|
|
}
|
||
|
|
|
||
|
|
img {
|
||
|
|
position: absolute;
|
||
|
|
top: 0%;
|
||
|
|
left: 34%;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
.white-body {
|
||
|
|
position: relative;
|
||
|
|
margin: 0 3%;
|
||
|
|
width: 94%;
|
||
|
|
height: 99%;
|
||
|
|
background-color: #fff;
|
||
|
|
border-radius: 0.27rem;
|
||
|
|
}
|
||
|
|
|
||
|
|
.nocode {
|
||
|
|
margin: 15% 0 0;
|
||
|
|
width: 100%;
|
||
|
|
color: #fb7905;
|
||
|
|
font-size: 0.42rem;
|
||
|
|
text-align: center;
|
||
|
|
line-height: 5;
|
||
|
|
}
|
||
|
|
|
||
|
|
.scan-note {
|
||
|
|
width: 100%;
|
||
|
|
color: #d3d0d0;
|
||
|
|
font-size: 0.35rem;
|
||
|
|
text-align: center;
|
||
|
|
line-height: 2;
|
||
|
|
}
|
||
|
|
|
||
|
|
.popup {
|
||
|
|
position: fixed;
|
||
|
|
top: 0;
|
||
|
|
left: 0;
|
||
|
|
width: 100%;
|
||
|
|
height: 100%;
|
||
|
|
background: rgba(0, 0, 0, 0.35);
|
||
|
|
}
|
||
|
|
|
||
|
|
.popup-content {
|
||
|
|
position: fixed;
|
||
|
|
z-index: 999;
|
||
|
|
bottom: 0;
|
||
|
|
left: 0;
|
||
|
|
padding: 0 3%;
|
||
|
|
width: 94%;
|
||
|
|
height: 35vh;
|
||
|
|
background: #fff;
|
||
|
|
overflow-y: auto;
|
||
|
|
font-size: 0.37rem;
|
||
|
|
}
|
||
|
|
|
||
|
|
.subtitle {
|
||
|
|
margin: 5% 2% 2%;
|
||
|
|
width: 96%;
|
||
|
|
/*font-size: 0.4rem;
|
||
|
|
font-weight: 600;*/
|
||
|
|
border-bottom: 1px solid #f4f4f4;
|
||
|
|
line-height: 2;
|
||
|
|
}
|
||
|
|
|
||
|
|
.item-btn {
|
||
|
|
float: left;
|
||
|
|
margin: 0.3rem 0.2rem;
|
||
|
|
padding: 0.2rem 0.3rem;
|
||
|
|
background-color: #f2f3f4;
|
||
|
|
color: #999;
|
||
|
|
border-radius: 1rem;
|
||
|
|
font-size: 0.35rem;
|
||
|
|
}
|
||
|
|
|
||
|
|
.item-btn.active {
|
||
|
|
background-color: #e9f2fb;
|
||
|
|
color: #1367fe;
|
||
|
|
}
|
||
|
|
|
||
|
|
.btnbox {
|
||
|
|
display: flex;
|
||
|
|
justify-content: center;
|
||
|
|
position: absolute;
|
||
|
|
bottom: 1rem;
|
||
|
|
left: 5%;
|
||
|
|
width: 90%;
|
||
|
|
height: 1rem;
|
||
|
|
}
|
||
|
|
|
||
|
|
.btn-reset {
|
||
|
|
display: inline-block;
|
||
|
|
margin: 0 2%;
|
||
|
|
padding: 0;
|
||
|
|
width: 60%;
|
||
|
|
color: #fff;
|
||
|
|
font-size: 0.35rem;
|
||
|
|
border-radius: 1rem;
|
||
|
|
background: #1367fe;
|
||
|
|
border: 1px solid #1367fe;
|
||
|
|
text-align: center;
|
||
|
|
}
|
||
|
|
|
||
|
|
.btn-search {
|
||
|
|
display: inline-block;
|
||
|
|
margin: 3% 7%;
|
||
|
|
padding: 0;
|
||
|
|
width: 70%;
|
||
|
|
color: #fff;
|
||
|
|
font-size: 0.35rem;
|
||
|
|
border-radius: 1rem;
|
||
|
|
background: #1367fe;
|
||
|
|
border: 1px solid #1367fe;
|
||
|
|
text-align: center;
|
||
|
|
height: 90%;
|
||
|
|
}
|
||
|
|
|
||
|
|
.btn-reset {
|
||
|
|
width: 35%;
|
||
|
|
background-color: #fff;
|
||
|
|
border-color: rgba(19, 103, 254, .7);
|
||
|
|
color: #1367fe;
|
||
|
|
}
|
||
|
|
|
||
|
|
.close-button {
|
||
|
|
position: absolute;
|
||
|
|
top: 0.15rem;
|
||
|
|
right: 0.1rem;
|
||
|
|
width: 0.8rem;
|
||
|
|
height: 0.8rem;
|
||
|
|
background-color: rgba(255, 255, 255, .5);
|
||
|
|
border: 0.05rem solid rgba(255, 255, 255, .7);
|
||
|
|
border-radius: 50%;
|
||
|
|
transform: rotate(45deg);
|
||
|
|
}
|
||
|
|
|
||
|
|
.close-button:before,
|
||
|
|
.close-button:after {
|
||
|
|
content: '';
|
||
|
|
position: absolute;
|
||
|
|
top: 50%;
|
||
|
|
left: 50%;
|
||
|
|
background: #333;
|
||
|
|
border-radius: 50%;
|
||
|
|
transform: translate(-50%, -50%);
|
||
|
|
height: 0.4rem;
|
||
|
|
width: 0.02rem;
|
||
|
|
}
|
||
|
|
|
||
|
|
.close-button:after {
|
||
|
|
height: 0.02rem;
|
||
|
|
width: 0.4rem;
|
||
|
|
}
|
||
|
|
|
||
|
|
.nav-div {
|
||
|
|
display: flex;
|
||
|
|
margin: 15% 2% 0;
|
||
|
|
width: 96%;
|
||
|
|
color: #287eef;
|
||
|
|
font-size: 0.4rem;
|
||
|
|
line-height: 2;
|
||
|
|
text-align: center;
|
||
|
|
}
|
||
|
|
|
||
|
|
.nav-div > div {
|
||
|
|
margin: 2% 3%;
|
||
|
|
width: 45%;
|
||
|
|
}
|
||
|
|
|
||
|
|
.nav-div div span{
|
||
|
|
display: block;
|
||
|
|
}
|
||
|
|
|
||
|
|
.nav-div div i {
|
||
|
|
margin: 0.35rem;
|
||
|
|
width: 1.5rem;
|
||
|
|
height: 1.5rem;
|
||
|
|
font-size: 0.8rem;
|
||
|
|
background: #e6eff7;
|
||
|
|
border-radius: 50%;
|
||
|
|
text-align: center;
|
||
|
|
line-height: 1.85;
|
||
|
|
}
|
||
|
|
|
||
|
|
.nav-div .act-note {
|
||
|
|
margin: 10% 0 0;
|
||
|
|
width: 100%;
|
||
|
|
font-size: 0.3rem;
|
||
|
|
color: #d3d0d0;
|
||
|
|
line-height: 1.5;
|
||
|
|
text-align: left;
|
||
|
|
}
|
||
|
|
|
||
|
|
.addinfo {
|
||
|
|
position: absolute;
|
||
|
|
bottom: 2rem;
|
||
|
|
right: 2%;
|
||
|
|
z-index: 999;
|
||
|
|
width: 1.5rem;
|
||
|
|
height: 1.5rem;
|
||
|
|
background-color: #e0e9f9;
|
||
|
|
border-radius: 50%;
|
||
|
|
box-shadow: 0 0 0.27rem #90b6f9;
|
||
|
|
color: #0240f7;
|
||
|
|
font-size: 0.4rem;
|
||
|
|
text-align: center;
|
||
|
|
vertical-align: middle;
|
||
|
|
padding-top: 0.45rem;
|
||
|
|
box-sizing: border-box;
|
||
|
|
}
|
||
|
|
|
||
|
|
.record {
|
||
|
|
position: absolute;
|
||
|
|
bottom: 2rem;
|
||
|
|
color: #bbbaba;
|
||
|
|
font-size: 0.35rem;
|
||
|
|
width: 100%;
|
||
|
|
text-align: center;
|
||
|
|
white-space: nowrap;
|
||
|
|
}
|
||
|
|
|
||
|
|
.record a {
|
||
|
|
color: #287eef;
|
||
|
|
}
|
||
|
|
|
||
|
|
</style>
|
||
|
|
|