10 changed files with 1371 additions and 0 deletions
@ -0,0 +1,31 @@ |
|||
package com.zdxt.enforcementcode.domain.bo.externalInterface; |
|||
|
|||
import com.fasterxml.jackson.annotation.JsonFormat; |
|||
import lombok.Data; |
|||
|
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* 外部接口-案件数据同步查询(龙岗渠道) |
|||
* <p> |
|||
* 不传 syncDate:全量同步;传入 syncDate:只返回该自然日变更/产生的数据。 |
|||
*/ |
|||
@Data |
|||
public class LongGangQueryCaseBo { |
|||
|
|||
/** |
|||
* 同步日期(yyyy-MM-dd)。为空则全量;有值则只取当天数据 |
|||
*/ |
|||
@JsonFormat(pattern = "yyyy-MM-dd") |
|||
private Date syncDate; |
|||
|
|||
/** |
|||
* 页码,从 1 开始,默认 1 |
|||
*/ |
|||
private Integer pageNum = 1; |
|||
|
|||
/** |
|||
* 每页条数,默认 100(三类主表各自按此分页) |
|||
*/ |
|||
private Integer pageSize = 100; |
|||
} |
|||
@ -0,0 +1,54 @@ |
|||
package com.zdxt.enforcementcode.domain.vo.externalInterface; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 外部接口-案件同步结果(行政检查 / 行政处罚 / 行政强制) |
|||
* <p> |
|||
* 三类主表各自独立分页,pageNum/pageSize 对三类同时生效。 |
|||
*/ |
|||
@Data |
|||
public class LongGangCaseSyncVo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
private Integer pageNum; |
|||
|
|||
private Integer pageSize; |
|||
|
|||
/** |
|||
* 行政检查 |
|||
*/ |
|||
private List<LongGangXzjcCaseVo> xzjcList = new ArrayList<>(); |
|||
|
|||
/** |
|||
* 行政检查主表总条数 |
|||
*/ |
|||
private Long xzjcTotal = 0L; |
|||
|
|||
/** |
|||
* 行政处罚 |
|||
*/ |
|||
private List<LongGangXzcfCaseVo> xzcfList = new ArrayList<>(); |
|||
|
|||
/** |
|||
* 行政处罚主表总条数 |
|||
*/ |
|||
private Long xzcfTotal = 0L; |
|||
|
|||
/** |
|||
* 行政强制 |
|||
*/ |
|||
private List<LongGangXzqzCaseVo> xzqzList = new ArrayList<>(); |
|||
|
|||
/** |
|||
* 行政强制主表总条数 |
|||
*/ |
|||
private Long xzqzTotal = 0L; |
|||
} |
|||
@ -0,0 +1,36 @@ |
|||
package com.zdxt.enforcementcode.domain.vo.externalInterface; |
|||
|
|||
import com.zdxt.enforcementcode.domain.vo.SxtXzcfajdsrxx594019Vo; |
|||
import com.zdxt.enforcementcode.domain.vo.SxtXzcfajjbxx026705Vo; |
|||
import com.zdxt.enforcementcode.domain.vo.SxtXzcfajjdxx778518Vo; |
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 行政处罚同步包:案件基本信息 + 决定信息 + 当事人 |
|||
*/ |
|||
@Data |
|||
public class LongGangXzcfCaseVo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 行政处罚案件基本信息 sxt_xzcfajjbxx026705 |
|||
*/ |
|||
private SxtXzcfajjbxx026705Vo master; |
|||
|
|||
/** |
|||
* 行政处罚案件决定信息 sxt_xzcfajjdxx778518 |
|||
*/ |
|||
private List<SxtXzcfajjdxx778518Vo> decisions = new ArrayList<>(); |
|||
|
|||
/** |
|||
* 行政处罚案件当事人信息 sxt_xzcfajdsrxx594019 |
|||
*/ |
|||
private List<SxtXzcfajdsrxx594019Vo> parties = new ArrayList<>(); |
|||
} |
|||
@ -0,0 +1,36 @@ |
|||
package com.zdxt.enforcementcode.domain.vo.externalInterface; |
|||
|
|||
import com.zdxt.enforcementcode.domain.vo.SxtJcdzb107522Vo; |
|||
import com.zdxt.enforcementcode.domain.vo.SxtXzjcdsrxx016987Vo; |
|||
import com.zdxt.enforcementcode.domain.vo.SxtXzjcjcxxx050280Vo; |
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 行政检查同步包:检查单主表 + 检查项 + 当事人 |
|||
*/ |
|||
@Data |
|||
public class LongGangXzjcCaseVo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 检查单主表 sxt_jcdzb107522 |
|||
*/ |
|||
private SxtJcdzb107522Vo master; |
|||
|
|||
/** |
|||
* 行政检查项信息 sxt_xzjcjcxxx050280 |
|||
*/ |
|||
private List<SxtXzjcjcxxx050280Vo> items = new ArrayList<>(); |
|||
|
|||
/** |
|||
* 行政检查当事人信息 sxt_xzjcdsrxx016987 |
|||
*/ |
|||
private List<SxtXzjcdsrxx016987Vo> parties = new ArrayList<>(); |
|||
} |
|||
@ -0,0 +1,36 @@ |
|||
package com.zdxt.enforcementcode.domain.vo.externalInterface; |
|||
|
|||
import com.zdxt.enforcementcode.domain.vo.SxtXzqzcsxx274939Vo; |
|||
import com.zdxt.enforcementcode.domain.vo.SxtXzqzdsrxx997874Vo; |
|||
import com.zdxt.enforcementcode.domain.vo.SxtXzqzjbxx173774Vo; |
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 行政强制同步包:基本信息 + 措施信息 + 当事人 |
|||
*/ |
|||
@Data |
|||
public class LongGangXzqzCaseVo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 行政强制基本信息 sxt_xzqzjbxx173774 |
|||
*/ |
|||
private SxtXzqzjbxx173774Vo master; |
|||
|
|||
/** |
|||
* 行政强制措施信息 sxt_xzqzcsxx274939 |
|||
*/ |
|||
private List<SxtXzqzcsxx274939Vo> measures = new ArrayList<>(); |
|||
|
|||
/** |
|||
* 行政强制当事人信息 sxt_xzqzdsrxx997874 |
|||
*/ |
|||
private List<SxtXzqzdsrxx997874Vo> parties = new ArrayList<>(); |
|||
} |
|||
@ -0,0 +1,20 @@ |
|||
package com.zdxt.enforcementcode.service; |
|||
|
|||
import com.zdxt.enforcementcode.domain.bo.externalInterface.LongGangQueryCaseBo; |
|||
import com.zdxt.enforcementcode.domain.vo.externalInterface.LongGangCaseSyncVo; |
|||
|
|||
/** |
|||
* 龙岗外部接口-案件同步查询 |
|||
*/ |
|||
public interface ILongGangCaseQueryService { |
|||
|
|||
/** |
|||
* 同步查询行政检查、行政处罚、行政强制三组完整数据。 |
|||
* <p> |
|||
* syncDate 为空:全量;有值:只返回该自然日数据。三类主表各自按 pageNum/pageSize 分页。 |
|||
* |
|||
* @param bo 同步参数 |
|||
* @return 三组嵌套案件数据及各自总条数 |
|||
*/ |
|||
LongGangCaseSyncVo syncCase(LongGangQueryCaseBo bo); |
|||
} |
|||
@ -0,0 +1,218 @@ |
|||
package com.zdxt.enforcementcode.service.impl; |
|||
|
|||
import cn.hutool.core.collection.CollUtil; |
|||
import cn.hutool.core.date.DateUtil; |
|||
import cn.hutool.core.util.StrUtil; |
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|||
import com.zdxt.enforcementcode.domain.*; |
|||
import com.zdxt.enforcementcode.domain.bo.externalInterface.LongGangQueryCaseBo; |
|||
import com.zdxt.enforcementcode.domain.vo.*; |
|||
import com.zdxt.enforcementcode.domain.vo.externalInterface.LongGangCaseSyncVo; |
|||
import com.zdxt.enforcementcode.domain.vo.externalInterface.LongGangXzcfCaseVo; |
|||
import com.zdxt.enforcementcode.domain.vo.externalInterface.LongGangXzjcCaseVo; |
|||
import com.zdxt.enforcementcode.domain.vo.externalInterface.LongGangXzqzCaseVo; |
|||
import com.zdxt.enforcementcode.mapper.*; |
|||
import com.zdxt.enforcementcode.service.ILongGangCaseQueryService; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.dromara.common.mybatis.core.page.PageQuery; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.Collections; |
|||
import java.util.Date; |
|||
import java.util.LinkedHashSet; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
import java.util.Set; |
|||
import java.util.function.Function; |
|||
import java.util.stream.Collectors; |
|||
|
|||
/** |
|||
* 龙岗外部接口-案件同步查询。 |
|||
* 按主表分页查出案件,再按主键整包装明细、当事人,供对方系统落库。 |
|||
*/ |
|||
@Slf4j |
|||
@RequiredArgsConstructor |
|||
@Service |
|||
public class LongGangCaseQueryServiceImpl implements ILongGangCaseQueryService { |
|||
|
|||
private static final int DEFAULT_PAGE_NUM = 1; |
|||
private static final int DEFAULT_PAGE_SIZE = 100; |
|||
private static final int MAX_PAGE_SIZE = 500; |
|||
|
|||
private final SxtJcdzb107522Mapper jcdzbMapper; |
|||
private final SxtXzjcjcxxx050280Mapper xzjcItemMapper; |
|||
private final SxtXzjcdsrxx016987Mapper xzjcDsrMapper; |
|||
|
|||
private final SxtXzcfajjbxx026705Mapper xzcfJbxxMapper; |
|||
private final SxtXzcfajjdxx778518Mapper xzcfJdxxMapper; |
|||
private final SxtXzcfajdsrxx594019Mapper xzcfDsrMapper; |
|||
|
|||
private final SxtXzqzjbxx173774Mapper xzqzJbxxMapper; |
|||
private final SxtXzqzcsxx274939Mapper xzqzCsxxMapper; |
|||
private final SxtXzqzdsrxx997874Mapper xzqzDsrMapper; |
|||
|
|||
@Override |
|||
public LongGangCaseSyncVo syncCase(LongGangQueryCaseBo bo) { |
|||
int pageNum = bo.getPageNum() == null || bo.getPageNum() < 1 ? DEFAULT_PAGE_NUM : bo.getPageNum(); |
|||
int pageSize = bo.getPageSize() == null || bo.getPageSize() < 1 ? DEFAULT_PAGE_SIZE : Math.min(bo.getPageSize(), MAX_PAGE_SIZE); |
|||
PageQuery pageQuery = new PageQuery(pageSize, pageNum); |
|||
|
|||
Date dayBegin = null; |
|||
Date dayEnd = null; |
|||
if (bo.getSyncDate() != null) { |
|||
dayBegin = DateUtil.beginOfDay(bo.getSyncDate()); |
|||
dayEnd = DateUtil.endOfDay(bo.getSyncDate()); |
|||
} |
|||
|
|||
LongGangCaseSyncVo vo = new LongGangCaseSyncVo(); |
|||
vo.setPageNum(pageNum); |
|||
vo.setPageSize(pageSize); |
|||
fillXzjc(vo, pageQuery, dayBegin, dayEnd); |
|||
fillXzcf(vo, pageQuery, dayBegin, dayEnd); |
|||
fillXzqz(vo, pageQuery, dayBegin, dayEnd); |
|||
return vo; |
|||
} |
|||
|
|||
/** |
|||
* 检查单主表.sign_id = 检查项.c601000 = 当事人.c601000 |
|||
* 按日过滤:检查日期 inspectionDate |
|||
*/ |
|||
private void fillXzjc(LongGangCaseSyncVo vo, PageQuery pageQuery, Date dayBegin, Date dayEnd) { |
|||
LambdaQueryWrapper<SxtJcdzb107522> lqw = Wrappers.lambdaQuery(); |
|||
if (dayBegin != null && dayEnd != null) { |
|||
lqw.between(SxtJcdzb107522::getInspectionDate, dayBegin, dayEnd); |
|||
} |
|||
lqw.orderByDesc(SxtJcdzb107522::getInspectionDate).orderByAsc(SxtJcdzb107522::getId); |
|||
|
|||
Page<SxtJcdzb107522Vo> page = jcdzbMapper.selectVoPage(pageQuery.build(), lqw); |
|||
vo.setXzjcTotal(page.getTotal()); |
|||
List<SxtJcdzb107522Vo> masters = page.getRecords(); |
|||
if (CollUtil.isEmpty(masters)) { |
|||
vo.setXzjcList(Collections.emptyList()); |
|||
return; |
|||
} |
|||
|
|||
Set<String> signIds = collectIds(masters, SxtJcdzb107522Vo::getSignId); |
|||
Map<String, List<SxtXzjcjcxxx050280Vo>> itemMap = groupBy( |
|||
xzjcItemMapper.selectVoList( |
|||
Wrappers.<SxtXzjcjcxxx050280>lambdaQuery().in(SxtXzjcjcxxx050280::getC601000, signIds)), |
|||
SxtXzjcjcxxx050280Vo::getC601000); |
|||
Map<String, List<SxtXzjcdsrxx016987Vo>> partyMap = groupBy( |
|||
xzjcDsrMapper.selectVoList( |
|||
Wrappers.<SxtXzjcdsrxx016987>lambdaQuery().in(SxtXzjcdsrxx016987::getC601000, signIds)), |
|||
SxtXzjcdsrxx016987Vo::getC601000); |
|||
|
|||
List<LongGangXzjcCaseVo> list = new ArrayList<>(); |
|||
for (SxtJcdzb107522Vo master : masters) { |
|||
LongGangXzjcCaseVo caseVo = new LongGangXzjcCaseVo(); |
|||
caseVo.setMaster(master); |
|||
caseVo.setItems(itemMap.getOrDefault(master.getSignId(), Collections.emptyList())); |
|||
caseVo.setParties(partyMap.getOrDefault(master.getSignId(), Collections.emptyList())); |
|||
list.add(caseVo); |
|||
} |
|||
vo.setXzjcList(list); |
|||
} |
|||
|
|||
/** |
|||
* 处罚基本信息.c201000 = 决定.c201000 = 当事人.c201000 |
|||
* 按日过滤:最后变更时间 cdTime |
|||
*/ |
|||
private void fillXzcf(LongGangCaseSyncVo vo, PageQuery pageQuery, Date dayBegin, Date dayEnd) { |
|||
LambdaQueryWrapper<SxtXzcfajjbxx026705> lqw = Wrappers.lambdaQuery(); |
|||
if (dayBegin != null && dayEnd != null) { |
|||
lqw.between(SxtXzcfajjbxx026705::getCdTime, dayBegin, dayEnd); |
|||
} |
|||
lqw.orderByDesc(SxtXzcfajjbxx026705::getCdTime).orderByAsc(SxtXzcfajjbxx026705::getId); |
|||
|
|||
Page<SxtXzcfajjbxx026705Vo> page = xzcfJbxxMapper.selectVoPage(pageQuery.build(), lqw); |
|||
vo.setXzcfTotal(page.getTotal()); |
|||
List<SxtXzcfajjbxx026705Vo> masters = page.getRecords(); |
|||
if (CollUtil.isEmpty(masters)) { |
|||
vo.setXzcfList(Collections.emptyList()); |
|||
return; |
|||
} |
|||
|
|||
Set<String> jbxxIds = collectIds(masters, SxtXzcfajjbxx026705Vo::getC201000); |
|||
Map<String, List<SxtXzcfajjdxx778518Vo>> decisionMap = groupBy( |
|||
xzcfJdxxMapper.selectVoList( |
|||
Wrappers.<SxtXzcfajjdxx778518>lambdaQuery().in(SxtXzcfajjdxx778518::getC201000, jbxxIds)), |
|||
SxtXzcfajjdxx778518Vo::getC201000); |
|||
Map<String, List<SxtXzcfajdsrxx594019Vo>> partyMap = groupBy( |
|||
xzcfDsrMapper.selectVoList( |
|||
Wrappers.<SxtXzcfajdsrxx594019>lambdaQuery().in(SxtXzcfajdsrxx594019::getC201000, jbxxIds)), |
|||
SxtXzcfajdsrxx594019Vo::getC201000); |
|||
|
|||
List<LongGangXzcfCaseVo> list = new ArrayList<>(); |
|||
for (SxtXzcfajjbxx026705Vo master : masters) { |
|||
LongGangXzcfCaseVo caseVo = new LongGangXzcfCaseVo(); |
|||
caseVo.setMaster(master); |
|||
caseVo.setDecisions(decisionMap.getOrDefault(master.getC201000(), Collections.emptyList())); |
|||
caseVo.setParties(partyMap.getOrDefault(master.getC201000(), Collections.emptyList())); |
|||
list.add(caseVo); |
|||
} |
|||
vo.setXzcfList(list); |
|||
} |
|||
|
|||
/** |
|||
* 强制基本信息.c301000 = 措施.c301000 = 当事人.c301000 |
|||
* 按日过滤:最后变更时间 cdTime |
|||
*/ |
|||
private void fillXzqz(LongGangCaseSyncVo vo, PageQuery pageQuery, Date dayBegin, Date dayEnd) { |
|||
LambdaQueryWrapper<SxtXzqzjbxx173774> lqw = Wrappers.lambdaQuery(); |
|||
if (dayBegin != null && dayEnd != null) { |
|||
lqw.between(SxtXzqzjbxx173774::getCdTime, dayBegin, dayEnd); |
|||
} |
|||
lqw.orderByDesc(SxtXzqzjbxx173774::getCdTime).orderByAsc(SxtXzqzjbxx173774::getId); |
|||
|
|||
Page<SxtXzqzjbxx173774Vo> page = xzqzJbxxMapper.selectVoPage(pageQuery.build(), lqw); |
|||
vo.setXzqzTotal(page.getTotal()); |
|||
List<SxtXzqzjbxx173774Vo> masters = page.getRecords(); |
|||
if (CollUtil.isEmpty(masters)) { |
|||
vo.setXzqzList(Collections.emptyList()); |
|||
return; |
|||
} |
|||
|
|||
Set<String> jbxxIds = collectIds(masters, SxtXzqzjbxx173774Vo::getC301000); |
|||
Map<String, List<SxtXzqzcsxx274939Vo>> measureMap = groupBy( |
|||
xzqzCsxxMapper.selectVoList( |
|||
Wrappers.<SxtXzqzcsxx274939>lambdaQuery().in(SxtXzqzcsxx274939::getC301000, jbxxIds)), |
|||
SxtXzqzcsxx274939Vo::getC301000); |
|||
Map<String, List<SxtXzqzdsrxx997874Vo>> partyMap = groupBy( |
|||
xzqzDsrMapper.selectVoList( |
|||
Wrappers.<SxtXzqzdsrxx997874>lambdaQuery().in(SxtXzqzdsrxx997874::getC301000, jbxxIds)), |
|||
SxtXzqzdsrxx997874Vo::getC301000); |
|||
|
|||
List<LongGangXzqzCaseVo> list = new ArrayList<>(); |
|||
for (SxtXzqzjbxx173774Vo master : masters) { |
|||
LongGangXzqzCaseVo caseVo = new LongGangXzqzCaseVo(); |
|||
caseVo.setMaster(master); |
|||
caseVo.setMeasures(measureMap.getOrDefault(master.getC301000(), Collections.emptyList())); |
|||
caseVo.setParties(partyMap.getOrDefault(master.getC301000(), Collections.emptyList())); |
|||
list.add(caseVo); |
|||
} |
|||
vo.setXzqzList(list); |
|||
} |
|||
|
|||
private <T> Set<String> collectIds(List<T> list, Function<T, String> idGetter) { |
|||
if (CollUtil.isEmpty(list)) { |
|||
return Collections.emptySet(); |
|||
} |
|||
return list.stream() |
|||
.map(idGetter) |
|||
.filter(StrUtil::isNotBlank) |
|||
.collect(Collectors.toCollection(LinkedHashSet::new)); |
|||
} |
|||
|
|||
private <T> Map<String, List<T>> groupBy(List<T> list, Function<T, String> keyGetter) { |
|||
if (CollUtil.isEmpty(list)) { |
|||
return Collections.emptyMap(); |
|||
} |
|||
return list.stream() |
|||
.filter(item -> StrUtil.isNotBlank(keyGetter.apply(item))) |
|||
.collect(Collectors.groupingBy(keyGetter)); |
|||
} |
|||
} |
|||
@ -0,0 +1,485 @@ |
|||
<!--<template>--> |
|||
<!-- <div class="home app_content">--> |
|||
<!-- <!– 顶部蓝色背景区域 –>--> |
|||
<!-- <div class="header-bg">--> |
|||
<!-- <div class="header-city-bg"></div>--> |
|||
<!-- <div class="header-city-info"></div>--> |
|||
<!-- <div class="header-badge"></div>--> |
|||
<!-- <div class="header-badge-text"></div>--> |
|||
<!-- </div>--> |
|||
<!-- <!– 内容区域 –>--> |
|||
<!-- <div class="content-area">--> |
|||
<!-- <!– 通知栏 –>--> |
|||
<!-- <div class="notice-bar">--> |
|||
<!-- <img src="@/assets/images/icon_notice.png" class="notice-icon" alt="" />--> |
|||
<!-- <van-notice-bar v-if="noticeList.length > 0" class="notice-scroll"--> |
|||
<!-- :scrollable="noticeList.length > 0 || (noticeList[0]?.title || '').length > 16"--> |
|||
<!-- background="transparent" color="#8c8c8c" :text="noticeText" />--> |
|||
<!-- <span v-else class="notice-text">暂无新通知</span>--> |
|||
<!-- </div>--> |
|||
|
|||
<!-- <!– 轮播图 –>--> |
|||
<!-- <div class="banner-card">--> |
|||
<!-- <van-swipe :autoplay="3000" indicator-color="rgba(255,255,255,0.9)" :loop="true">--> |
|||
<!-- <van-swipe-item v-for="(item, index) in bannerList" :key="index">--> |
|||
<!-- <div class="banner-inner">--> |
|||
<!-- <img :src="item.imageUrl" class="banner-img" alt="" @click="toBannerDetail(item)" />--> |
|||
<!-- </div>--> |
|||
<!-- </van-swipe-item>--> |
|||
<!-- </van-swipe>--> |
|||
<!-- </div>--> |
|||
|
|||
<!-- <!– 扫码入企双卡片行 –>--> |
|||
<!-- <div class="card-row">--> |
|||
<!-- <!– 行政执法 - 扫码入企 –>--> |
|||
<!-- <div class="function-card enforcement-card" @click="toScanEntQRCode('enforcement')">--> |
|||
<!-- <div class="card-label-wrap">--> |
|||
<!-- <img src="@/assets/images/bg_label_xzzf.png" class="card-label" />--> |
|||
<!-- <div class="card-title">扫码入企</div>--> |
|||
<!-- </div>--> |
|||
<!-- <div class="card-content">--> |
|||
<!-- <div class="card-text">行政执法</div>--> |
|||
<!-- <img src="@/assets/images/icon_xzrq.jpg" class="card-icon" />--> |
|||
|
|||
<!-- </div>--> |
|||
|
|||
<!-- </div>--> |
|||
|
|||
<!-- <!– 非行政执法 - 扫码入企 –>--> |
|||
<!-- <div class="function-card other-card" @click="toScanEntQRCode('non-enforcement')">--> |
|||
<!-- <div class="card-label-wrap">--> |
|||
<!-- <img src="@/assets/images/bg_label_fxzzf.png" class="card-label" />--> |
|||
<!-- <div class="card-title">扫码入企</div>--> |
|||
<!-- </div>--> |
|||
<!-- <div class="card-content">--> |
|||
<!-- <div class="card-text">非行政执法</div>--> |
|||
<!-- <img src="@/assets/images/icon_fxzrq.jpg" class="card-icon" />--> |
|||
<!-- </div>--> |
|||
<!-- </div>--> |
|||
<!-- </div>--> |
|||
|
|||
<!-- <!– 行政执法信息 + 统计分析 双卡片行 –>--> |
|||
<!-- <div class="card-row">--> |
|||
<!-- <!– 行政执法信息 –>--> |
|||
<!-- <div class="function-card information-card" @click="toEnforcementList">--> |
|||
<!-- <div class="card-content">--> |
|||
<!-- <div class="cardOther-text">行政执法信息</div>--> |
|||
<!-- <img src="@/assets/images/icon_zfxx.jpg" class="card-icon" />--> |
|||
|
|||
<!-- </div>--> |
|||
<!-- </div>--> |
|||
|
|||
<!-- <!– 统计分析 –>--> |
|||
<!-- <div class="function-card statistics-card" @click="toStatisticsAnalysis">--> |
|||
<!-- <div class="card-content">--> |
|||
<!-- <div class="cardOther-text">统计分析</div>--> |
|||
<!-- <img src="@/assets/images/icon_tjfx.jpg" class="card-icon" />--> |
|||
|
|||
<!-- </div>--> |
|||
<!-- </div>--> |
|||
<!-- </div>--> |
|||
<!-- </div>--> |
|||
|
|||
<!-- <!– 底部导航栏 –>--> |
|||
<!-- <FooterBar active="home" />--> |
|||
<!-- </div>--> |
|||
<!--</template>--> |
|||
|
|||
<!--<script setup name="enforcementHome">--> |
|||
<!--import { ref, computed, onMounted } from 'vue';--> |
|||
<!--import { useRouter } from 'vue-router';--> |
|||
<!--import FooterBar from '@/components/FooterBar.vue';--> |
|||
<!--import { getNoticeInfoList, getCarouselBannerList } from '@/api/enforcement/index';--> |
|||
<!--import { baseUrl } from '@/config/env';--> |
|||
|
|||
<!--const router = useRouter();--> |
|||
|
|||
<!--// ========== 通知数据 ==========--> |
|||
<!--const noticeList = ref([]);--> |
|||
|
|||
<!--// 多条通知拼接(van-notice-bar 使用单一文本滚动展示)--> |
|||
<!--const noticeText = computed(() => {--> |
|||
<!-- return noticeList.value--> |
|||
<!-- .map(it => it.noticeContent || it.title)--> |
|||
<!-- .filter(Boolean)--> |
|||
<!-- .join(' ');--> |
|||
<!--});--> |
|||
|
|||
<!--// 调用系统通知接口并填充 noticeList、兼容多种字段名--> |
|||
<!--const fetchNoticeList = () => {--> |
|||
<!-- getNoticeInfoList({}, (res) => {--> |
|||
<!-- if (res && res.rows) {--> |
|||
<!-- // 接口返回结构为 { total, rows, code, msg }--> |
|||
<!-- noticeList.value = res.rows || [];--> |
|||
<!-- }--> |
|||
<!-- }, (err) => {--> |
|||
<!-- console.error('获取通知列表失败', err);--> |
|||
<!-- });--> |
|||
<!--};--> |
|||
|
|||
<!--// ========== 轮播图数据 ==========--> |
|||
<!--const bannerList = ref([]);--> |
|||
|
|||
<!--const fetchBannerList = () => {--> |
|||
<!-- getCarouselBannerList({}, (res) => {--> |
|||
<!-- if (res && res.rows) {--> |
|||
<!-- // 接口返回结构为 { total, rows, code, msg }--> |
|||
<!-- bannerList.value = (res.rows || []).map(item => ({--> |
|||
<!-- ...item,--> |
|||
<!-- imageUrl: baseUrl + item.imageUrl--> |
|||
<!-- }));--> |
|||
<!-- }--> |
|||
<!-- }, (err) => {--> |
|||
<!-- console.error('获取轮播图失败', err);--> |
|||
<!-- });--> |
|||
<!--};--> |
|||
|
|||
<!--// ========== 页面跳转 ==========--> |
|||
|
|||
<!--/**--> |
|||
<!-- * 跳转扫码入企页面--> |
|||
<!-- * @param {string} type 执法类型:enforcement=行政执法,non-enforcement=非行政执法--> |
|||
<!-- */--> |
|||
<!--const toScanEntQRCode = (type) => {--> |
|||
<!-- router.push({--> |
|||
<!-- path: '/enforcement/scanEntQRCode',--> |
|||
<!-- query: { type },--> |
|||
<!-- });--> |
|||
<!--};--> |
|||
|
|||
<!--/**--> |
|||
<!-- * 跳转行政执法信息列表页面--> |
|||
<!-- */--> |
|||
<!--const toEnforcementList = () => {--> |
|||
<!-- router.push({--> |
|||
<!-- path: '/enforcement/enforcementList',--> |
|||
<!-- });--> |
|||
<!--};--> |
|||
|
|||
<!--/**--> |
|||
<!-- * 跳转统计分析页面--> |
|||
<!-- */--> |
|||
<!--const toStatisticsAnalysis = () => {--> |
|||
<!-- router.push({--> |
|||
<!-- path: '/enforcement/statisticsAnalysis',--> |
|||
<!-- });--> |
|||
<!--};--> |
|||
|
|||
<!--/**--> |
|||
<!-- * 跳转banner详情页面--> |
|||
<!-- * @param {Object} item banner项--> |
|||
<!-- */--> |
|||
<!--const toBannerDetail = (item) => {--> |
|||
<!-- router.push({--> |
|||
<!-- path: '/enforcement/bannerDetail',--> |
|||
<!-- query: {--> |
|||
<!-- id: item.id--> |
|||
<!-- },--> |
|||
<!-- });--> |
|||
<!--};--> |
|||
|
|||
<!--// ========== 页面挂载 ==========--> |
|||
<!--onMounted(() => {--> |
|||
<!-- fetchNoticeList();--> |
|||
<!-- fetchBannerList();--> |
|||
<!--});--> |
|||
|
|||
<!--</script>--> |
|||
|
|||
<!--<style lang="less" scoped>--> |
|||
<!--.home {--> |
|||
<!-- display: flex;--> |
|||
<!-- flex-direction: column;--> |
|||
<!-- height: 100%;--> |
|||
<!-- overflow: hidden;--> |
|||
<!-- background: #f0f6ff;--> |
|||
<!-- font-family: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Microsoft YaHei', sans-serif;--> |
|||
<!--}--> |
|||
|
|||
<!--/* ===== 顶部蓝色背景区域 ===== */--> |
|||
<!--.header-bg {--> |
|||
<!-- text-align: center;--> |
|||
<!-- position: relative;--> |
|||
<!-- overflow: hidden;--> |
|||
<!-- flex-shrink: 0;--> |
|||
<!-- position: relative;--> |
|||
<!-- height: 152px;--> |
|||
<!--}--> |
|||
|
|||
<!--.header-city-bg {--> |
|||
<!-- height: 150px;--> |
|||
<!-- background: url('@/assets/images/bg_top.jpg') no-repeat center center;--> |
|||
<!-- background-size: 100% 100%;--> |
|||
<!--}--> |
|||
|
|||
<!--.header-city-info {--> |
|||
<!-- width: 100%;--> |
|||
<!-- height: 138px;--> |
|||
<!-- background: url('@/assets/images/logo_top.png') no-repeat center center;--> |
|||
<!-- background-size: 100% 100%;--> |
|||
<!-- position: absolute;--> |
|||
<!-- top: 0;--> |
|||
<!-- left: 0;--> |
|||
<!-- z-index: 1;--> |
|||
<!--}--> |
|||
|
|||
<!--.header-badge {--> |
|||
<!-- height: 30px;--> |
|||
<!-- width: 65px;--> |
|||
<!-- background: url('@/assets/images/label_zfd.png') no-repeat center center;--> |
|||
<!-- background-size: 100% 100%;--> |
|||
<!-- position: absolute;--> |
|||
<!-- bottom:38px;--> |
|||
<!-- left: 42%;--> |
|||
<!-- z-index: 1;--> |
|||
<!--}--> |
|||
|
|||
<!--.header-badge-text {--> |
|||
<!-- height: 34px;--> |
|||
<!-- width: 62%;--> |
|||
<!-- background: url('@/assets/images/slogan_top.png') no-repeat center center;--> |
|||
<!-- background-size: 100% 100%;--> |
|||
<!-- position: absolute;--> |
|||
<!-- bottom: 6px;--> |
|||
<!-- left: 72px;--> |
|||
<!-- z-index: 1;--> |
|||
<!--}--> |
|||
|
|||
|
|||
<!--.badge-inner {--> |
|||
<!-- display: flex;--> |
|||
<!-- flex-direction: column;--> |
|||
<!-- align-items: center;--> |
|||
<!--}--> |
|||
|
|||
<!--.badge-icon {--> |
|||
<!-- width: 80px;--> |
|||
<!-- height: 80px;--> |
|||
<!-- background: linear-gradient(135deg, #2563eb, #1d4ed8);--> |
|||
<!-- border-radius: 50%;--> |
|||
<!-- display: flex;--> |
|||
<!-- align-items: center;--> |
|||
<!-- justify-content: center;--> |
|||
<!-- box-shadow: 0 8px 24px rgba(37, 99, 235, 0.4);--> |
|||
<!-- border: 3px solid rgba(255, 255, 255, 0.3);--> |
|||
<!--}--> |
|||
|
|||
<!--.badge-svg {--> |
|||
<!-- width: 70px;--> |
|||
<!-- height: 70px;--> |
|||
<!--}--> |
|||
|
|||
<!--.badge-label {--> |
|||
<!-- margin-top: 8px;--> |
|||
<!-- font-size: 14px;--> |
|||
<!-- color: rgba(255, 255, 255, 0.9);--> |
|||
<!-- font-weight: 500;--> |
|||
<!-- letter-spacing: 2px;--> |
|||
<!--}--> |
|||
|
|||
<!--/* 标语 */--> |
|||
<!--.header-slogan {--> |
|||
<!-- position: relative;--> |
|||
<!-- z-index: 2;--> |
|||
<!-- display: flex;--> |
|||
<!-- align-items: center;--> |
|||
<!-- justify-content: center;--> |
|||
<!-- gap: 12px;--> |
|||
<!--}--> |
|||
|
|||
<!--.slogan-text {--> |
|||
<!-- font-size: 18px;--> |
|||
<!-- color: #fff;--> |
|||
<!-- font-weight: 600;--> |
|||
<!-- letter-spacing: 3px;--> |
|||
<!--}--> |
|||
|
|||
<!--.slogan-divider {--> |
|||
<!-- color: rgba(255, 255, 255, 0.6);--> |
|||
<!-- font-size: 18px;--> |
|||
<!--}--> |
|||
|
|||
<!--/* ===== 内容区域 ===== */--> |
|||
<!--.content-area {--> |
|||
<!-- padding: 12px;--> |
|||
<!-- position: relative;--> |
|||
<!-- z-index: 2;--> |
|||
<!-- flex: 1;--> |
|||
<!-- overflow-y: auto;--> |
|||
<!-- padding-bottom: 16px;--> |
|||
<!-- border-radius: 10px 10px 0 0;--> |
|||
<!-- top: -10px;--> |
|||
<!-- bottom: 0px;--> |
|||
<!-- background: #fff;--> |
|||
<!-- // height: calc(100% - 20px);--> |
|||
<!--}--> |
|||
|
|||
<!--/* 通知栏 */--> |
|||
<!--.notice-bar {--> |
|||
<!-- background: #fffbe6;--> |
|||
<!-- border-radius: 10px;--> |
|||
<!-- padding: 0px 10px;--> |
|||
<!-- margin-bottom: 8px;--> |
|||
<!-- display: flex;--> |
|||
<!-- align-items: center;--> |
|||
<!-- box-shadow: 0 2px 12px rgba(0, 0, 0, 0.04);--> |
|||
<!-- border: 1px solid rgba(255, 220, 120, 0.4);--> |
|||
<!-- box-sizing: border-box;--> |
|||
|
|||
<!-- .notice-icon {--> |
|||
<!-- width: 18px;--> |
|||
<!-- height: 18px;--> |
|||
<!-- min-width: 18px;--> |
|||
<!-- margin-right: 10px;--> |
|||
<!-- object-fit: contain;--> |
|||
<!-- }--> |
|||
|
|||
<!-- /* 通知滚动 */--> |
|||
<!-- .notice-scroll {--> |
|||
<!-- flex: 1;--> |
|||
<!-- font-size: 13px;--> |
|||
<!-- padding: 0px;--> |
|||
<!-- }--> |
|||
|
|||
<!-- .notice-text {--> |
|||
<!-- flex: 1;--> |
|||
<!-- font-size: 13px;--> |
|||
<!-- color: #8c8c8c;--> |
|||
<!-- line-height: 1.4;--> |
|||
<!-- }--> |
|||
<!--}--> |
|||
|
|||
<!--/* 轮播图 */--> |
|||
<!--.banner-card {--> |
|||
<!-- border-radius: 16px;--> |
|||
<!-- overflow: hidden;--> |
|||
<!-- margin-bottom: 14px;--> |
|||
<!-- position: relative;--> |
|||
<!-- box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);--> |
|||
<!--}--> |
|||
|
|||
<!--.banner-inner {--> |
|||
<!-- width: 100%;--> |
|||
<!-- height: 130px;--> |
|||
<!-- position: relative;--> |
|||
<!-- overflow: hidden;--> |
|||
<!--}--> |
|||
|
|||
<!--.banner-img {--> |
|||
<!-- width: 100%;--> |
|||
<!-- height: 100%;--> |
|||
<!-- // object-fit: cover;--> |
|||
<!--}--> |
|||
|
|||
<!--:deep(.van-swipe__indicator) {--> |
|||
<!-- width: 8px;--> |
|||
<!-- height: 8px;--> |
|||
<!-- border-radius: 4px;--> |
|||
<!-- background: rgba(255, 255, 255, 0.5);--> |
|||
<!-- transition: all 0.3s;--> |
|||
<!--}--> |
|||
|
|||
<!--:deep(.van-swipe__indicator--active) {--> |
|||
<!-- width: 20px;--> |
|||
<!-- background: rgba(255, 255, 255, 0.9);--> |
|||
<!--}--> |
|||
|
|||
<!--/* ===== 卡片行 ===== */--> |
|||
<!--.card-row {--> |
|||
<!-- display: flex;--> |
|||
<!-- gap: 12px;--> |
|||
<!-- margin-bottom: 14px;--> |
|||
<!--}--> |
|||
|
|||
<!--.enforcement-card {--> |
|||
<!-- height: 140px;--> |
|||
<!-- background: url('@/assets/images/bg_xzzf.png') no-repeat center center, linear-gradient(180deg, #7cc5fe 0%, #fff 60%);--> |
|||
<!-- background-size: 100% 100%;--> |
|||
<!--}--> |
|||
|
|||
<!--.other-card {--> |
|||
<!-- height: 140px;--> |
|||
<!-- background: url('@/assets/images/bg_fxzzf.png') no-repeat center center, linear-gradient(180deg, #aacbfd 0%, #fff 60%);--> |
|||
<!-- background-size: 100% 100%;--> |
|||
<!--}--> |
|||
|
|||
<!--.information-card {--> |
|||
<!-- height: 120px;--> |
|||
<!-- background: url('@/assets/images/bg_zfxx.png') no-repeat center center, linear-gradient(180deg, #bbecfd 0%, #fff 60%);--> |
|||
<!-- background-size: 100% 100%;--> |
|||
<!--}--> |
|||
|
|||
<!--.statistics-card {--> |
|||
<!-- height: 120px;--> |
|||
<!-- background: url('@/assets/images/bg_tjfx.png') no-repeat center center, linear-gradient(180deg, #a3d4f7 0%, #fff 60%);--> |
|||
<!-- background-size: 100% 100%;--> |
|||
<!--}--> |
|||
|
|||
<!--/* 功能卡片 */--> |
|||
<!--.function-card {--> |
|||
<!-- flex: 1;--> |
|||
<!-- border-radius: 16px;--> |
|||
<!-- padding: 0;--> |
|||
<!-- position: relative;--> |
|||
<!-- overflow: hidden;--> |
|||
<!-- // min-height: 140px;--> |
|||
<!-- box-shadow: 0 2px 12px rgba(0, 0, 0, 0.15);--> |
|||
|
|||
<!-- .card-label-wrap {--> |
|||
<!-- .card-title {--> |
|||
<!-- font-size: 12px;--> |
|||
<!-- color: #fff;--> |
|||
<!-- letter-spacing: 1px;--> |
|||
<!-- position: absolute;--> |
|||
<!-- top: 6px;--> |
|||
<!-- left: 12px;--> |
|||
<!-- }--> |
|||
<!-- }--> |
|||
|
|||
<!-- .card-label {--> |
|||
<!-- width: 100px;--> |
|||
<!-- height: 38px;--> |
|||
<!-- display: block;--> |
|||
<!-- }--> |
|||
|
|||
<!-- .card-content {--> |
|||
<!-- position: relative;--> |
|||
<!-- z-index: 2;--> |
|||
<!-- padding: 0 16px 16px;--> |
|||
<!-- }--> |
|||
|
|||
<!-- .card-icon {--> |
|||
<!-- width: 52px;--> |
|||
<!-- height: 38px;--> |
|||
<!-- border-radius: 18px;--> |
|||
<!-- margin-top: 8px;--> |
|||
<!-- display: block;--> |
|||
<!-- }--> |
|||
|
|||
<!-- .card-text {--> |
|||
<!-- font-size: 15px;--> |
|||
<!-- color: #000;--> |
|||
<!-- position: relative;--> |
|||
<!-- z-index: 1;--> |
|||
<!-- }--> |
|||
|
|||
<!-- .cardOther-text {--> |
|||
<!-- font-size: 15px;--> |
|||
<!-- color: #000;--> |
|||
<!-- position: relative;--> |
|||
<!-- z-index: 1;--> |
|||
<!-- margin-top: 12px;--> |
|||
<!-- }--> |
|||
|
|||
<!-- .card-bg-decor {--> |
|||
<!-- position: absolute;--> |
|||
<!-- bottom: 0;--> |
|||
<!-- left: 0;--> |
|||
<!-- width: 100%;--> |
|||
<!-- height: 100%;--> |
|||
<!-- object-fit: cover;--> |
|||
<!-- opacity: 0.06;--> |
|||
<!-- pointer-events: none;--> |
|||
<!-- }--> |
|||
<!--}--> |
|||
<!--</style>--> |
|||
@ -0,0 +1,418 @@ |
|||
<!--<template>--> |
|||
<!-- <!– <Loading class="loading-div" type="spinner" v-show="isLoading" color="#1989fa"/>--> |
|||
<!-- <div class="home app_content" v-if="!isLoading"> –>--> |
|||
<!-- <div class="home app_content">--> |
|||
<!-- <!– 导航栏 –>--> |
|||
<!-- <!– <div class="header_body">–>--> |
|||
<!-- <!– <header-nav :leftArrow="false" titelText="执法监督码"></header-nav>–>--> |
|||
<!-- <!– </div>–>--> |
|||
<!-- <!– 中间 –>--> |
|||
<!-- <div class="warp_body">--> |
|||
<!-- <div class="logobox">--> |
|||
<!-- <div class="logobox-title" style="position: absolute;top: 100px;left: 50%;transform: translateX(-50%);background: #0d8ddb;z-index: 100;padding: 10px 20px;color: #fff;border-radius: 8px;" @click="toDemoList">demo-list</div>--> |
|||
<!-- </div>--> |
|||
<!-- <!– <refresh-list v-model:freshMap="freshMap" @refresh="onRefresh" @onLoad="onLoad"> –>--> |
|||
<!--<!– <div class="carousel_box" @onLoad="onLoad">--> |
|||
<!-- <carousel-card v-if="carouselList.length" v-model:carouselList="carouselList"></carousel-card>--> |
|||
<!-- </div>–>--> |
|||
<!-- <div class="boutique_box">--> |
|||
<!-- <!– <van-cell :border="false" title="精品" /> –>--> |
|||
<!-- <div class="boutique_body">--> |
|||
<!-- <!– <goodsCard :goodsList="boutique" :cardAttr="boutiqueAttr"></goodsCard> –>--> |
|||
<!-- <div class="box-qr-code" @click="showEnterpriseQRCode">--> |
|||
<!-- <span class="box-qr-code-text">执法监督码</span>--> |
|||
<!-- </div>--> |
|||
<!-- </div>--> |
|||
<!-- <div class="boutique_body">--> |
|||
<!-- <!– <goodsCard :goodsList="boutique" :cardAttr="boutiqueAttr"></goodsCard> –>--> |
|||
<!-- <div class="box-info" @click="toRegistrationListView">--> |
|||
<!-- <span class="box-info-text">历史执法信息</span>--> |
|||
<!-- </div>--> |
|||
<!-- <div class="box-complaint" @click="toComplaintView">--> |
|||
<!-- <span class="box-complaint-text">执法投诉</span>--> |
|||
<!-- </div>--> |
|||
<!-- </div>--> |
|||
<!-- </div>--> |
|||
<!-- <!– </refresh-list> –>--> |
|||
<!-- </div>--> |
|||
<!-- <!– 底部 –>--> |
|||
<!-- <div class="footer_body">--> |
|||
<!-- <footer-nav></footer-nav>--> |
|||
<!-- </div>--> |
|||
<!-- </div>--> |
|||
<!--</template>--> |
|||
|
|||
<!--<script setup name="enterpriseHome">--> |
|||
<!--import * as w6s from 'szient-js-sdk';--> |
|||
<!--import sha1 from 'crypto-js/sha1';--> |
|||
<!--import {getEnterpriseMerchantAuthorization, getSiqLoginAuth, siqCode} from '../../../api/enterprise';--> |
|||
<!--import 'vant/es/toast/style';--> |
|||
<!--import Vconsolefrom from 'vconsole';--> |
|||
|
|||
<!--const {useCommon} = $globalStore;--> |
|||
<!--const router = useRouter();--> |
|||
<!--const isLoading = ref(true);--> |
|||
<!--let freshMap = reactive({--> |
|||
<!-- refreshLoad: false, // 是否刷新--> |
|||
<!-- listLoading: false, // 是否加载中--> |
|||
<!-- listFinished: false, // 是否加载完成标识--> |
|||
<!--});--> |
|||
|
|||
<!--const showEnterpriseQRCode = async () => {--> |
|||
<!-- /*if (useCommon.enterpriseNumber == null || useCommon.enterpriseNumber == "") {--> |
|||
<!-- router.push({path: "/enterprise/register"});--> |
|||
<!-- } else {*/--> |
|||
<!-- router.push({--> |
|||
<!-- path: "/enterprise/qrCode",--> |
|||
<!-- query: {--> |
|||
<!-- enterpriseNumber: useCommon.enterpriseNumber,--> |
|||
<!-- }--> |
|||
<!-- });--> |
|||
<!-- //}--> |
|||
<!--};--> |
|||
|
|||
<!--const toRegistrationListView = async () => {--> |
|||
<!-- router.push({--> |
|||
<!-- path: "/enterprise/registrationList",--> |
|||
<!-- });--> |
|||
<!--}--> |
|||
<!--const toDemoList = () => {--> |
|||
<!-- router.push({ path: "/demo/enfDemoList" });--> |
|||
<!--};--> |
|||
|
|||
<!--const toComplaintView = async () => {--> |
|||
<!-- router.push({--> |
|||
<!-- path: "/enterprise/complaint",--> |
|||
<!-- query: {--> |
|||
<!-- comOrOpi: 0,--> |
|||
<!-- isSelect: true--> |
|||
<!-- }--> |
|||
<!-- });--> |
|||
<!--}--> |
|||
|
|||
<!--//下拉刷新--> |
|||
<!--const onRefresh = () => {--> |
|||
<!-- freshMap.listFinished = false;--> |
|||
<!-- freshMap.listLoading = true;--> |
|||
<!-- freshMap.refreshLoad = true;--> |
|||
<!--};--> |
|||
|
|||
<!--// 触底加载--> |
|||
<!--const onLoad = () => {--> |
|||
<!--};--> |
|||
|
|||
<!--const generateRandomNumber = () => {--> |
|||
<!-- const min = 100000;--> |
|||
<!-- const max = 999999;--> |
|||
<!-- const randomNum = (Math.floor(Math.random() * (max - min + 1)) + min);--> |
|||
<!-- return randomNum.toString().padStart(6, '0');--> |
|||
<!--}--> |
|||
|
|||
<!--const getEnterpriseMerchant = (enterpriseNum, phoneNumber) => {--> |
|||
<!-- getEnterpriseMerchantAuthorization({enterpriseNumber: enterpriseNum, merchantTel: phoneNumber}, success => {--> |
|||
<!-- if (success.data != null && success.data.length > 0) {--> |
|||
<!-- useCommon.SET_USER_ENTERPRISE_NUMBER(success.data[0].enterpriseNumber);--> |
|||
<!-- }--> |
|||
<!-- }, error => {--> |
|||
<!-- })--> |
|||
<!--}--> |
|||
|
|||
<!--/** 登录成功后写入 store(与一期 Home.vue 一致,并补充企业名称/ID) */--> |
|||
<!--const applyLoginResult = (data) => {--> |
|||
<!-- useCommon.SET_USER_PHONENUMBER(data.phonenumber.toString());--> |
|||
<!-- useCommon.SET_USER_ID(data.userId);--> |
|||
<!-- useCommon.SET_USER_ENTERPRISE_NUMBER(data.enterpriseNumber);--> |
|||
<!-- if (data.enterpriseName) {--> |
|||
<!-- useCommon.SET_USER_ENTERPRISE_NAME(data.enterpriseName);--> |
|||
<!-- }--> |
|||
<!-- if (data.enterpriseId) {--> |
|||
<!-- useCommon.SET_USER_ENTERPRISE_ID(data.enterpriseId);--> |
|||
<!-- }--> |
|||
<!-- useCommon.SET_TOKEN(data.token);--> |
|||
<!-- useCommon.SET_IS_FIRST_LOAD(false);--> |
|||
<!-- if (useCommon.firstLoad) {--> |
|||
<!-- isLoading.value = false;--> |
|||
<!-- }--> |
|||
<!-- getEnterpriseMerchant(data.enterpriseNumber.toString(), data.phonenumber.toString());--> |
|||
<!--}--> |
|||
|
|||
<!--onMounted(() => {--> |
|||
<!-- console.log("企业端 Home onMounted");--> |
|||
<!-- // new Vconsolefrom();--> |
|||
<!-- console.log(useCommon.firstLoad);--> |
|||
<!-- isLoading.value = useCommon.firstLoad;--> |
|||
|
|||
<!-- siqCode(null, success => {--> |
|||
<!-- console.log("-–> 获取密钥", success);--> |
|||
<!-- let access_key = "";--> |
|||
<!-- let access_secret = "";--> |
|||
<!-- if (success.success) {--> |
|||
<!-- access_key = success.data.accessKey;--> |
|||
<!-- access_secret = success.data.accessSecret;--> |
|||
<!-- }--> |
|||
|
|||
<!-- const nonce = generateRandomNumber();--> |
|||
<!-- const timestamp = `${Date.now()}`;--> |
|||
|
|||
<!-- const str = [access_secret, nonce, timestamp]--> |
|||
<!-- .sort()--> |
|||
<!-- .reduce((str, item) => str += item, '');--> |
|||
|
|||
<!-- // 最终还需要转成全小写--> |
|||
<!-- const signature = sha1(str).toString().toLowerCase();--> |
|||
|
|||
<!-- w6s.config({--> |
|||
<!-- access_key: access_key,--> |
|||
<!-- nonce: nonce,--> |
|||
<!-- timestamp: timestamp,--> |
|||
<!-- signature: signature,--> |
|||
<!-- }).then((res) => {--> |
|||
<!-- console.log("鉴权", res);--> |
|||
<!-- }).catch((err) => {--> |
|||
<!-- console.log("鉴权", err);--> |
|||
<!-- getEnterpriseMerchant(useCommon.enterpriseNumber.toString(), useCommon.phonenumber.toString());--> |
|||
<!-- });--> |
|||
|
|||
<!-- w6s.ready(() => {--> |
|||
<!-- w6s.header.setTitle('深圳市行政执法监督码');--> |
|||
<!-- w6s.szient.getAuthCode({--> |
|||
<!-- success: function (res) {--> |
|||
<!-- console.log(res)--> |
|||
<!-- console.log("认证", res);--> |
|||
<!-- console.log("code: " + res.result.result.code);--> |
|||
<!-- getSiqLoginAuth({code: res.result.result.code}, success => {--> |
|||
<!-- console.log(success.data);--> |
|||
<!-- applyLoginResult(success.data);--> |
|||
<!-- }, error => {--> |
|||
<!-- console.log("error : " + error)--> |
|||
<!-- })--> |
|||
<!-- },--> |
|||
<!-- fail: function (err) {--> |
|||
<!-- console.log(err)--> |
|||
<!-- console.log("认证", err);--> |
|||
<!-- },--> |
|||
<!-- });--> |
|||
<!-- });--> |
|||
|
|||
<!-- });--> |
|||
<!-- const {VITE_BASE_URL, access_key, access_secret} = import.meta.env;--> |
|||
<!-- console.log(VITE_BASE_URL);--> |
|||
<!-- const apiUrl = ref(import.meta.env.accessKey);--> |
|||
<!-- console.log(access_key);--> |
|||
<!-- console.log(access_secret);--> |
|||
<!--});--> |
|||
<!--</script>--> |
|||
|
|||
<!--<style lang="less" scoped>--> |
|||
<!--.home {--> |
|||
<!-- display: flex;--> |
|||
<!-- flex-direction: column;--> |
|||
<!-- height: 100%;--> |
|||
<!-- overflow: hidden;--> |
|||
<!-- background-color: #f4f4f4;--> |
|||
|
|||
<!-- .warp_body {--> |
|||
<!-- position: relative;--> |
|||
<!-- margin: 0;--> |
|||
<!-- width: 100%;--> |
|||
<!-- height: 100%;--> |
|||
<!-- background: #c6e6ff url("../../../assets/images/bg_c.jpg") no-repeat top;--> |
|||
<!-- background-size: auto 100%;--> |
|||
<!-- overflow-x: hidden;--> |
|||
<!-- overflow-y: auto;--> |
|||
|
|||
<!-- .carousel_box {--> |
|||
<!-- height: 4rem;--> |
|||
<!-- width: 100%;--> |
|||
<!-- padding-bottom: 0.27rem;--> |
|||
|
|||
<!-- }--> |
|||
|
|||
<!-- }--> |
|||
|
|||
<!-- .boutique_box {--> |
|||
<!-- position: absolute;--> |
|||
<!-- width: 100%;--> |
|||
<!-- bottom: 1%;--> |
|||
|
|||
<!-- .boutique_body {--> |
|||
<!-- padding: 0 0 0.27rem 0;--> |
|||
<!-- display: flex;--> |
|||
<!-- justify-content: center;--> |
|||
<!-- }--> |
|||
|
|||
<!-- .box-qr-code {--> |
|||
<!-- position: relative;--> |
|||
<!-- margin: 2% 0;--> |
|||
<!-- width: 90%;--> |
|||
<!-- height: 3.67rem;--> |
|||
<!-- text-align: right;--> |
|||
<!-- border-radius: 0.27rem;--> |
|||
|
|||
<!-- .box-qr-code-text {--> |
|||
<!-- position: absolute;--> |
|||
<!-- z-index: 10;--> |
|||
<!-- top: 0.35rem;--> |
|||
<!-- right: 0.35rem;--> |
|||
<!-- display: block;--> |
|||
<!-- font-size: 0.5rem;--> |
|||
<!-- }--> |
|||
<!-- }--> |
|||
|
|||
<!-- .box-qr-code::before {--> |
|||
<!-- content: "";--> |
|||
<!-- position: absolute;--> |
|||
<!-- top: -0.14rem;--> |
|||
<!-- left: -0.14rem;--> |
|||
<!-- z-index: 0;--> |
|||
<!-- width: calc(100% + 0.13rem);--> |
|||
<!-- height: calc(100% + 0.13rem);--> |
|||
<!-- background-color: #fff;--> |
|||
<!-- border: 0.14rem solid rgba(255, 255, 255, 0.5);--> |
|||
<!-- border-radius: 0.27rem;--> |
|||
<!-- }--> |
|||
|
|||
<!-- .box-qr-code::after {--> |
|||
<!-- content: "";--> |
|||
<!-- position: absolute;--> |
|||
<!-- top: 0;--> |
|||
<!-- left: 0;--> |
|||
<!-- z-index: 1;--> |
|||
<!-- width: 100%;--> |
|||
<!-- height: 100%;--> |
|||
<!-- border-radius: 0.27rem;--> |
|||
<!-- background: #fff url("../../../assets/images/item_code.jpg") no-repeat left;--> |
|||
<!-- background-size: auto 100%;--> |
|||
<!-- border: 1px solid #8db4ff;--> |
|||
<!-- }--> |
|||
|
|||
<!-- .box-info {--> |
|||
<!-- position: relative;--> |
|||
<!-- margin-right: 2%;--> |
|||
<!-- width: 50%;--> |
|||
<!-- height: 3.67rem;--> |
|||
<!-- text-align: right;--> |
|||
<!-- border-radius: 0.27rem;--> |
|||
|
|||
<!-- .box-info-text {--> |
|||
<!-- position: absolute;--> |
|||
<!-- z-index: 10;--> |
|||
<!-- top: 0.35rem;--> |
|||
<!-- right: 0.35rem;--> |
|||
<!-- display: block;--> |
|||
<!-- font-size: 0.5rem;--> |
|||
<!-- }--> |
|||
<!-- }--> |
|||
|
|||
<!-- .box-info::before {--> |
|||
<!-- content: "";--> |
|||
<!-- position: absolute;--> |
|||
<!-- top: -0.14rem;--> |
|||
<!-- left: -0.14rem;--> |
|||
<!-- z-index: 0;--> |
|||
<!-- width: calc(100% + 0.13rem);--> |
|||
<!-- height: calc(100% + 0.13rem);--> |
|||
<!-- background-color: #fff;--> |
|||
<!-- border: 0.14rem solid rgba(255, 255, 255, 0.5);--> |
|||
<!-- border-radius: 0.27rem;--> |
|||
<!-- }--> |
|||
|
|||
<!-- .box-info::after {--> |
|||
<!-- content: "";--> |
|||
<!-- position: absolute;--> |
|||
<!-- top: 0;--> |
|||
<!-- left: 0;--> |
|||
<!-- z-index: 1;--> |
|||
<!-- width: 100%;--> |
|||
<!-- height: 100%;--> |
|||
<!-- border-radius: 0.27rem;--> |
|||
<!-- background: #fff url("../../../assets/images/item_checkc.jpg") no-repeat left;--> |
|||
<!-- background-size: auto 100%;--> |
|||
<!-- border: 1px solid #8db4ff;--> |
|||
<!-- }--> |
|||
|
|||
<!-- .box-complaint {--> |
|||
<!-- position: relative;--> |
|||
<!-- margin-left: 3%;--> |
|||
<!-- width: 35%;--> |
|||
<!-- height: 3.67rem;--> |
|||
<!-- text-align: right;--> |
|||
<!-- border-radius: 0.27rem;--> |
|||
|
|||
<!-- .box-complaint-text {--> |
|||
<!-- position: absolute;--> |
|||
<!-- z-index: 10;--> |
|||
<!-- top: 0.35rem;--> |
|||
<!-- right: 0.35rem;--> |
|||
<!-- display: block;--> |
|||
<!-- font-size: 0.5rem;--> |
|||
<!-- }--> |
|||
<!-- }--> |
|||
<!-- }--> |
|||
|
|||
<!-- .box-complaint::before {--> |
|||
<!-- content: "";--> |
|||
<!-- position: absolute;--> |
|||
<!-- top: -0.14rem;--> |
|||
<!-- left: -0.14rem;--> |
|||
<!-- z-index: 0;--> |
|||
<!-- width: calc(100% + 0.13rem);--> |
|||
<!-- height: calc(100% + 0.13rem);--> |
|||
<!-- background-color: #fff;--> |
|||
<!-- border: 0.14rem solid rgba(255, 255, 255, 0.5);--> |
|||
<!-- border-radius: 0.27rem;--> |
|||
<!-- }--> |
|||
|
|||
<!-- .box-complaint::after {--> |
|||
<!-- content: "";--> |
|||
<!-- position: absolute;--> |
|||
<!-- top: 0;--> |
|||
<!-- left: 0;--> |
|||
<!-- z-index: 1;--> |
|||
<!-- width: 100%;--> |
|||
<!-- height: 100%;--> |
|||
<!-- border-radius: 0.27rem;--> |
|||
<!-- background: #fff url("../../../assets/images/item_complain.jpg") no-repeat left;--> |
|||
<!-- background-size: auto 100%;--> |
|||
<!-- border: 1px solid #8db4ff;--> |
|||
<!-- }--> |
|||
|
|||
<!-- .recommend_box {--> |
|||
<!-- .recommend_body {--> |
|||
<!-- width: 100%;--> |
|||
<!-- }--> |
|||
<!-- }--> |
|||
<!--}--> |
|||
|
|||
<!--.logobox {--> |
|||
<!-- position: relative;--> |
|||
<!-- top: 4%;--> |
|||
<!-- left: 5%;--> |
|||
<!-- z-index: 99;--> |
|||
<!-- width: 82%;--> |
|||
<!-- height: 10vh;--> |
|||
<!-- background: url("../../../assets/images/logo.png") no-repeat;--> |
|||
<!-- background-size: 100% auto;--> |
|||
<!--}--> |
|||
|
|||
<!--@media screen and (max-width: 380px) {--> |
|||
<!-- .home .warp_body {--> |
|||
<!-- background: #c6e6ff url("../../../assets/images/bg_c.jpg") no-repeat top;--> |
|||
<!-- background-size: 100% auto;--> |
|||
<!-- }--> |
|||
<!--}--> |
|||
|
|||
<!--@media screen and (min-width: 540px) {--> |
|||
<!-- .home .warp_body {--> |
|||
<!-- background: #c6e6ff url("../../../assets/images/bg_c.jpg") no-repeat top;--> |
|||
<!-- background-size: 100% auto;--> |
|||
<!-- }--> |
|||
<!--}--> |
|||
|
|||
<!--.loading-div {--> |
|||
<!-- position: absolute;--> |
|||
<!-- top: 45%;--> |
|||
<!-- left: 48%;--> |
|||
<!--}--> |
|||
|
|||
<!--</style>--> |
|||
Loading…
Reference in new issue