Browse Source

首页,扫码入企接口调试

dev-V1.0.1
wangmingyong 5 months ago
parent
commit
3e9d4cbb6c
  1. 60
      zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/index.js
  2. 8
      zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/plan.js
  3. 162
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enterpriseScanPreview.vue
  4. 39
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/home/enforcementHome.vue
  5. 69
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/login.vue
  6. 137
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/scanEntQRCode.vue
  7. 4
      zdxt-web-client/zdxt-efcode-enforcement-app/vite-config/index.js

60
zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/index.js

@ -1,35 +1,51 @@
import { _get, _post, _form, _delete } from "../../http/index";
import { _get, _post } from "@/http/index";
// region 执法端接口
const baseUrl = "/api/app-enf";
let enforcementAppBaseUrl = "/app-enf";
// region 认证模块
// 执法端用户登录
// export const enforcementLogin = (params, success, error) => _post(enforcementAppBaseUrl + "/login/do", params, success, error);
export const enforcementLogin = (params, success, error) => _post(enforcementAppBaseUrl + "/login/szyptLogin", params, success, error);
export const enforcementLogin = (params, success, error) => _post(baseUrl + "/login/szyptLogin", params, success, error);
// 扫描二维码后获取企业信息(qrContent 为前端解析二维码获取的原始文本)
export const getEntInfoByQRCode = (qrContent, success, error) => _get(enforcementAppBaseUrl + "/enterpriseInfo/getEntInfoByQRCode", { qrContent }, success, error);
// endregion
// region 企业模块
export const getEntInfoByQRCode = (qrContent, success, error) => _get(baseUrl + "/enterpriseInfo/getEntInfoByQRCode", { qrContent }, success, error);
export const getEnterpriseInformation = (enterpriseNumber, success, error) => _get(baseUrl + "/enterpriseInfo/getEnterpriseInformation", { enterpriseNumber }, success, error);
export const searchEnterprise = (keyword, success, error) => _get(baseUrl + "/enterpriseInfo/searchEnterprise", { keyword }, success, error);
export const queryEnterpriseListAndQrInfo = (params, success, error) => _post(baseUrl + "/enterpriseInfo/queryListAndQrInfo", params, success, error);
export const getEvaluateDetail = (params, success, error) => _get(baseUrl + "/enterprise/evaluate", params, success, error);
export const submitEvaluate = (params, success, error) => _post(baseUrl + "/enterprise/evaluate", params, success, error);
// 搜索企业列表(支持企业名称或统一信用代码搜索)
export const searchEnterprise = (keyword, success, error) => _get(enforcementAppBaseUrl + "/enterpriseInfo/searchEnterprise", { keyword }, success, error);
// endregion
// region 执法登记模块
// 执法登记列表
export const queryEnforcementRegistrationPageList = (params, success, error) => _get(enforcementAppBaseUrl + "/enforcement_registration/queryEnforcementRegistrationPageList", params, success, error);
export const queryEnforcementRegistrationPageList = (params, success, error) => _get(baseUrl + "/enforcement_registration/queryEnforcementRegistrationPageList", params, success, error);
// 企业消息 / 执法消息详情
export const getEnforcementRegistrationDetailById = (params, success, error) => _get(enforcementAppBaseUrl + "/enforcement_registration/queryDetailById", params, success, error);
export const getEnforcementRegistrationDetailById = (params, success, error) => _get(baseUrl + "/enforcement_registration/queryDetailById", params, success, error);
// 评价详情
export const getEvaluateDetail = (params, success, error) => _get(enforcementAppBaseUrl + "/enterprise/evaluate", params, success, error);
export const getEducationServicesList = (params, success, error) => _get(baseUrl + "/enforcementcode/educationServices/list", params, success, error);
// 提交评价
export const submitEvaluate = (params, success, error) => _post(enforcementAppBaseUrl + "/enterprise/evaluate", params, success, error);
export const getEducationServicesDetail = (params, success, error) => _get(baseUrl + "/enforcementcode/educationServices/details", params, success, error);
// endregion
// 普法服务列表
export const getEducationServicesList = (params, success, error) => _get(enforcementAppBaseUrl + "/enforcementcode/educationServices/list", params, success, error);
// region 案件模块
// 普法服务详情
export const getEducationServicesDetail = (params, success, error) => _get(enforcementAppBaseUrl + "/enforcementcode/educationServices/details", params, success, error);
export const queryXzjcList = (enterpriseNumber, success, error) => _get(baseUrl + "/caseInfo/queryXzjcList", { c601034: enterpriseNumber }, success, error);
// endregion
// region 首页模块
export const getNoticeInfoList = (params, success, error) => _get(baseUrl + "/noticeInfo/list", params, success, error);
export const getCarouselBannerList = (params, success, error) => _get(baseUrl + "/carouselBanner/list", params, success, error);
// endregion

8
zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/plan.js

@ -1,8 +1,8 @@
import { _get, _post, _put, _delete } from "../../http/index";
import { _get, _post, _put, _delete } from "@/http/index";
// region 计划管理接口
const planBaseUrl = "/app-enf/cpPlan";
const planBaseUrl = "/api/app-enf/cpPlan";
// 计划列表(分页)
export const getPlanList = (params, success, error) => _get(planBaseUrl + "/list", params, success, error);
@ -23,7 +23,7 @@ export const deletePlan = (ids, success, error) => _delete(planBaseUrl + "/" + i
// region 计划-设置接口
const settingBaseUrl = "/app-enf/cpSetting";
const settingBaseUrl = "/api/app-enf/cpSetting";
// 下阶段计划提交最晚时间(每月几号前需提交下阶段计划<=)
export const getSubmitDeadline = (success, error) => _get(settingBaseUrl + "/submitDeadline", {}, success, error);
@ -35,7 +35,7 @@ export const getMaxInnerUnitAcPersonNum = (success, error) => _get(settingBaseUr
// region 企业检索接口
const enterpriseSearchBaseUrl = "/enforcementcode/enterpriseSearch";
const enterpriseSearchBaseUrl = "/api/enforcementcode/enterpriseSearch";
// 按企业名称联合检索(>=3字符)
export const searchUnionByEnterpriseName = (enterpriseName, success, error) =>

162
zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enterpriseScanPreview.vue

@ -50,17 +50,21 @@
<div class="info-item">
<div class="info-label">注册地址</div>
<div class="info-value address-value">
<span class="address-text">{{ enterpriseData.enterpriseAddress }}</span>
<span class="address-text" :class="{ expanded: isAddressExpanded }">{{ enterpriseData.enterpriseAddress }}</span>
<span class="expand-text"
v-if="enterpriseData.enterpriseAddress && enterpriseData.enterpriseAddress.length > 20">展开</span>
v-if="enterpriseData.enterpriseAddress" @click.stop="toggleAddressExpand">
{{ isAddressExpanded ? '收起' : '展开' }}
</span>
</div>
</div>
<div class="info-item">
<div class="info-label">经营范围</div>
<div class="info-value scope-value">
<span class="scope-text">{{ enterpriseData.businessScope }}</span>
<span class="scope-text" :class="{ expanded: isScopeExpanded }">{{ enterpriseData.businessScope }}</span>
<span class="expand-text"
v-if="enterpriseData.businessScope && enterpriseData.businessScope.length > 30">展开</span>
v-if="enterpriseData.businessScope" @click.stop="toggleScopeExpand">
{{ isScopeExpanded ? '收起' : '展开' }}
</span>
</div>
</div>
</template>
@ -94,19 +98,18 @@
<!-- 执法记录列表 -->
<div class="record-list">
<div v-for="(item, index) in (recordTab === 0 ? cityRecords : unitRecords)" :key="index"
class="record-card-item">
<div v-for="(item, index) in cityRecords" :key="index" class="record-card-item">
<div class="record-header">
<div class="record-date">{{ item.date }}</div>
<div class="record-date">{{ item.createTime }}</div>
<div class="record-company">{{ enterpriseData?.enterpriseName }}</div>
<div class="record-count">被执法次数:{{ item.count }}次</div>
<div class="record-count">{{ item.caseType || '执法检查' }}</div>
</div>
<div class="record-timeline" v-if="isRecordExpanded">
<div v-for="(timeline, tIndex) in item.timeline" :key="tIndex" class="timeline-item" :class="{ 'has-line': tIndex !== item.timeline.length - 1 }">
<div class="timeline-item">
<div class="timeline-dot"></div>
<div class="timeline-content">
<div class="timeline-time">{{ timeline.time }}</div>
<div class="timeline-unit"><span class="unit-label">执法单位:</span>{{ timeline.unit }}</div>
<div class="timeline-time">{{ item.createTime }}</div>
<div class="timeline-unit"><span class="unit-label">执法单位:</span>{{ item.enforcementUnit || item.unitName }}</div>
</div>
</div>
</div>
@ -114,7 +117,7 @@
<van-icon :name="isRecordExpanded ? 'arrow-up' : 'arrow-down'" />
</div>
</div>
<div v-if="(recordTab === 0 ? cityRecords : unitRecords).length === 0" class="empty-state">
<div v-if="cityRecords.length === 0" class="empty-state">
<van-icon name="file-o" class="empty-icon" />
<div class="empty-text">暂无数据</div>
</div>
@ -136,7 +139,33 @@
<span>历史强制案件</span>
</div>
</div>
<van-empty description="暂无执法记录" />
<!-- 历史执法案件列表 -->
<div class="record-list" v-if="recordTab === 0">
<div v-for="(item, index) in cityRecords" :key="index" class="record-card-item">
<div class="record-header">
<div class="record-date">{{ item.createTime }}</div>
<div class="record-company">{{ enterpriseData?.enterpriseName }}</div>
<div class="record-count">{{ item.caseType || '执法检查' }}</div>
</div>
<div class="record-timeline" v-if="isRecordExpanded">
<div class="timeline-item">
<div class="timeline-dot"></div>
<div class="timeline-content">
<div class="timeline-time">{{ item.createTime }}</div>
<div class="timeline-unit"><span class="unit-label">执法单位:</span>{{ item.enforcementUnit || item.unitName }}</div>
</div>
</div>
</div>
<div class="record-expand" @click="toggleRecordExpand">
<van-icon :name="isRecordExpanded ? 'arrow-up' : 'arrow-down'" />
</div>
</div>
<div v-if="cityRecords.length === 0" class="empty-state">
<van-icon name="file-o" class="empty-icon" />
<div class="empty-text">暂无数据</div>
</div>
</div>
<van-empty v-else description="暂无执法记录" />
</div>
</div>
@ -149,6 +178,7 @@
import { ref, onMounted } from 'vue';
import { useRouter, useRoute } from 'vue-router';
import { showFailToast } from 'vant';
import { getEnterpriseInformation, queryXzjcList } from '@/api/enforcement/index';
const router = useRouter();
const route = useRoute();
@ -158,35 +188,14 @@ const currentTab = ref(0);
const recordTab = ref(0);
const isCollapsed = ref(false);
const isRecordExpanded = ref(false);
const isAddressExpanded = ref(false);
const isScopeExpanded = ref(false);
const enterpriseData = ref(null);
const enterpriseNumber = ref('');
const qrCodeValid = ref(false);
// 当前企业的全市执法记录假数据
const cityRecords = ref([
{
date: '2026-05-12 09:34:01',
count: 2,
timeline: [
{ time: '2026-05-12 09:34:01', unit: '深圳市司法局' },
{ time: '2026-05-12 09:34:01', unit: '深圳市司法局' },
{ time: '2026-05-06 15:44:27', unit: '深圳市司法局' },
],
},
]);
// 当前企业的本单位执法记录假数据
const unitRecords = ref([
{
date: '2026-05-11 10:15:00',
count: 3,
timeline: [
{ time: '2026-05-11 10:15:00', unit: '本单位执法大队' },
{ time: '2026-05-08 16:30:22', unit: '本单位执法大队' },
{ time: '2026-05-03 09:00:15', unit: '本单位执法大队' },
],
},
]);
// 历史执法案件数据
const cityRecords = ref([]);
// ========== 方法 ==========
const toggleCollapse = () => {
@ -197,26 +206,59 @@ const toggleRecordExpand = () => {
isRecordExpanded.value = !isRecordExpanded.value;
};
const toggleAddressExpand = () => {
isAddressExpanded.value = !isAddressExpanded.value;
};
const toggleScopeExpand = () => {
isScopeExpanded.value = !isScopeExpanded.value;
};
// ========== 获取历史执法案件数据 ==========
const fetchXzjcList = (entNumber) => {
queryXzjcList(entNumber, (res) => {
if (res.code === 200) {
cityRecords.value = res.rows || [];
console.log('历史执法案件数据加载成功:', cityRecords.value);
} else {
console.error('获取历史执法案件失败:', res.msg);
}
}, (err) => {
console.error('获取历史执法案件接口失败', err);
});
};
// ========== 初始化加载 ==========
onMounted(() => {
// 从 sessionStorage 读取扫码页传递的企业信息
const cached = sessionStorage.getItem('enterpriseScanData');
if (cached) {
try {
const data = JSON.parse(cached);
enterpriseData.value = data;
enterpriseNumber.value = data.enterpriseNumber || '';
qrCodeValid.value = !!data.qrCodeValid;
console.log('企业详情加载成功(来自缓存):', data.enterpriseName);
} catch (e) {
console.error('解析企业缓存数据失败', e);
showFailToast('企业信息解析失败');
}
// 从路由参数获取企业编号
const entNumber = route.query.enterpriseNumber;
if (entNumber) {
enterpriseNumber.value = entNumber;
fetchEnterpriseInformation(entNumber);
} else {
showFailToast('缺少企业信息,请重新扫码');
showFailToast('缺少企业编号,请重新扫码');
}
});
// ========== 获取企业画像数据 ==========
const fetchEnterpriseInformation = (enterpriseNumber) => {
getEnterpriseInformation(enterpriseNumber, (res) => {
if (res.code === 200) {
// 直接使用接口返回的数据
enterpriseData.value = res.data || res;
console.log('企业画像数据加载成功:', enterpriseData.value);
// 获取企业画像成功后,调用历史执法案件接口
fetchXzjcList(enterpriseNumber);
} else {
console.error('获取企业画像失败:', res.msg);
showFailToast(res.msg || '获取企业画像失败');
}
}, (err) => {
console.error('获取企业画像接口失败', err);
showFailToast('获取企业画像失败,请重试');
});
};
// ========== 工具方法 ==========
const formatDate = (dateStr) => {
if (!dateStr) return '';
@ -355,6 +397,20 @@ const toSign = () => {
.address-text,
.scope-text {
flex: 1;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
text-overflow: ellipsis;
line-height: 1.6;
}
.address-text.expanded,
.scope-text.expanded {
-webkit-line-clamp: unset;
overflow: visible;
text-overflow: unset;
white-space: normal;
}
.expand-text {
@ -363,6 +419,8 @@ const toSign = () => {
font-size: 0.32rem;
margin-left: 0.1rem;
cursor: pointer;
align-self: flex-start;
padding-top: 2px;
}
}

39
zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/home/enforcementHome.vue

@ -23,7 +23,7 @@
<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.image" class="banner-img" alt="" />
<img :src="item.imageUrl" class="banner-img" alt="" />
</div>
</van-swipe-item>
</van-swipe>
@ -89,7 +89,7 @@
import { ref, computed, onMounted } from 'vue';
import { useRouter } from 'vue-router';
import FooterBar from '@/components/FooterBar.vue';
import bannerImg from '@/assets/images/banner.jpg';
import { getNoticeInfoList, getCarouselBannerList } from '@/api/enforcement/index';
const router = useRouter();
@ -99,27 +99,36 @@ const noticeList = ref([]);
// 多条通知拼接(van-notice-bar 使用单一文本滚动展示)
const noticeText = computed(() => {
return noticeList.value
.map(it => it.title)
.map(it => it.noticeContent || it.title)
.filter(Boolean)
.join(' ');
});
// 调用系统通知接口并填充 noticeList、兼容多种字段名
const fetchNoticeList = () => {
// 模拟数据
setTimeout(() => {
noticeList.value = [
{ id: '1', title: '深圳市司法局2026年度行政执法计划', type: '1', createTime: '2026-04-15' },
];
}, 500);
getNoticeInfoList({}, (res) => {
if (res && res.rows) {
// 接口返回结构为 { total, rows, code, msg }
noticeList.value = res.rows || [];
}
}, (err) => {
console.error('获取通知列表失败', err);
});
};
// ========== 轮播图数据 ==========
const bannerList = ref([
{ image: bannerImg },
{ image: bannerImg },
{ image: bannerImg },
]);
const bannerList = ref([]);
const fetchBannerList = () => {
getCarouselBannerList({}, (res) => {
if (res && res.rows) {
// 接口返回结构为 { total, rows, code, msg }
bannerList.value = res.rows || [];
}
}, (err) => {
console.error('获取轮播图失败', err);
});
};
// ========== 页面跳转 ==========
@ -155,6 +164,7 @@ const toStatisticsAnalysis = () => {
// ========== 页面挂载 ==========
onMounted(() => {
fetchNoticeList();
fetchBannerList();
});
</script>
@ -311,6 +321,7 @@ onMounted(() => {
.notice-scroll {
flex: 1;
font-size: 13px;
padding: 0px;
}
.notice-text {

69
zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/login.vue

@ -68,24 +68,23 @@
// 直接触发登录
doLogin(item.account, item.password);
}
const doLogin = (secretName, secretKey) => {
const doLogin = (secretName, secretKey) => {
const encryptedKey = Encrypt(secretKey);
enforcementLogin({"secretName": secretName, "secretKey": encryptedKey}, response => {
enforcementLogin({code: '12346678985288799'}, response => {
if (response.code === 200) {
// 验证关键组织信息
if (!response.data.deptId) {
showFailToast("该用户未关联部门,无法登录");
return;
}
if (!response.data.organId) {
showFailToast("该用户未关联认证机构,无法登录");
return;
}
if (!response.data.bureauUnitId) {
showFailToast("该用户未关联执法单位,无法登录");
return;
}
// // 验证关键组织信息
// if (!response.data.deptId) {
// showFailToast("该用户未关联部门,无法登录");
// return;
// }
// if (!response.data.organId) {
// showFailToast("该用户未关联认证机构,无法登录");
// return;
// }
// if (!response.data.bureauUnitId) {
// showFailToast("该用户未关联执法单位,无法登录");
// return;
// }
// 执法端登录成功 → 赋值用户基本信息
useCommon.SET_USER_PHONENUMBER(response.data.phonenumber || "");
useCommon.SET_USER_ID(response.data.userId);
@ -107,6 +106,44 @@
showFailToast(error?.msg || "登录失败,请检查网络");
})
};
// const doLogin = (secretName, secretKey) => {
// const encryptedKey = Encrypt(secretKey);
// enforcementLogin({"secretName": secretName, "secretKey": encryptedKey}, response => {
// if (response.code === 200) {
// // 验证关键组织信息
// if (!response.data.deptId) {
// showFailToast("该用户未关联部门,无法登录");
// return;
// }
// if (!response.data.organId) {
// showFailToast("该用户未关联认证机构,无法登录");
// return;
// }
// if (!response.data.bureauUnitId) {
// showFailToast("该用户未关联执法单位,无法登录");
// return;
// }
// // 执法端登录成功 → 赋值用户基本信息
// useCommon.SET_USER_PHONENUMBER(response.data.phonenumber || "");
// useCommon.SET_USER_ID(response.data.userId);
// useCommon.SET_USER_NAME(response.data.userName || "");
// useCommon.SET_NICK_NAME(response.data.nickName || "");
// useCommon.SET_TOKEN(response.data.token);
// useCommon.SET_DEPT_ID(response.data.deptId);
// useCommon.SET_DEPT_NAME(response.data.deptName || "");
// useCommon.SET_ORGAN_ID(response.data.organId);
// useCommon.SET_ORGAN_NAME(response.data.organName || "");
// useCommon.SET_BUREAU_UNIT_ID(response.data.bureauUnitId);
// useCommon.SET_BUREAU_UNIT_NAME(response.data.bureauUnitName || "");
// console.log("enforcement login success", useCommon.userId);
// router.push({name: "enforcementHome"});
// } else {
// showFailToast(response.msg || "登录失败");
// }
// }, error => {
// showFailToast(error?.msg || "登录失败,请检查网络");
// })
// };
const onSubmit = async () => {
doLogin(loginParam.secretName, loginParam.secretKey);

137
zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/scanEntQRCode.vue

@ -100,7 +100,8 @@
@click="selectEnterprise(item)"
>
<div class="item-qr">
<van-icon name="qr" />
<img v-if="item.qrCodeUrl" :src="item.qrCodeUrl" class="qr-image" />
<van-icon v-else name="qr" />
</div>
<div class="item-name">{{ item.enterpriseName }}</div>
</div>
@ -117,7 +118,7 @@ import { ref, reactive, onMounted, onBeforeUnmount, nextTick } from 'vue';
import { useRouter } from 'vue-router';
import { showFailToast, showSuccessToast, showToast, showConfirmDialog } from 'vant';
import { baseUrl, appEnv } from '@/config/env.js';
import { getEntInfoByQRCode, searchEnterprise } from '@/api/enforcement/index';
import { getEntInfoByQRCode, queryEnterpriseListAndQrInfo } from '@/api/enforcement/index';
import wx from 'weixin-js-sdk';
const router = useRouter();
@ -373,109 +374,30 @@ const clearSearch = () => {
const loadEnterprises = () => {
loading.value = true;
// 测试数据 - 后端接口对接后可删除此段
const mockData = [
{
enterpriseName: '深圳市南山区椿立嘉源麻辣烫店',
enterpriseNumber: '92440300MA5FXXXX1',
enterpriseType: '个体工商户',
legalPerson: '张三',
registeredCapital: '5万元',
establishmentTime: '2020-03-15',
operatingTerm: '长期',
enterpriseAddress: '深圳市南山区XX街道XX路XX号',
businessScope: '餐饮服务',
enterpriseTel: '13800138001',
industry: '餐饮业',
},
{
enterpriseName: '深圳伊腾迪新能源有限公司',
enterpriseNumber: '91440300MA5FXXXX2',
enterpriseType: '有限责任公司',
legalPerson: '李四',
registeredCapital: '500万元',
establishmentTime: '2018-06-20',
operatingTerm: '2018-06-20至2038-06-20',
enterpriseAddress: '深圳市南山区XX科技园XX栋',
businessScope: '新能源技术开发、技术咨询',
enterpriseTel: '13800138002',
industry: '新能源',
},
{
enterpriseName: '深圳市永顺新绣花有限公司',
enterpriseNumber: '91440300MA5FXXXX3',
enterpriseType: '有限责任公司',
legalPerson: '王五',
registeredCapital: '100万元',
establishmentTime: '2015-09-10',
operatingTerm: '2015-09-10至2035-09-10',
enterpriseAddress: '深圳市宝安区XX工业区XX号',
businessScope: '绣花加工、服装辅料销售',
enterpriseTel: '13800138003',
industry: '制造业',
},
{
enterpriseName: '深圳市中棋金业有限公司',
enterpriseNumber: '91440300MA5FXXXX4',
enterpriseType: '有限责任公司',
legalPerson: '赵六',
registeredCapital: '1000万元',
establishmentTime: '2019-01-08',
operatingTerm: '2019-01-08至2039-01-08',
enterpriseAddress: '深圳市福田区XX金融中心XX层',
businessScope: '黄金饰品销售、投资管理',
enterpriseTel: '13800138004',
industry: '金融业',
},
{
enterpriseName: '深圳市百合隆科技有限公司',
enterpriseNumber: '91440300MA5FXXXX5',
enterpriseType: '有限责任公司',
legalPerson: '孙七',
registeredCapital: '200万元',
establishmentTime: '2021-04-22',
operatingTerm: '2021-04-22至2041-04-22',
enterpriseAddress: '深圳市龙岗区XX科技产业园XX栋',
businessScope: '电子产品研发、销售',
enterpriseTel: '13800138005',
industry: '科技服务业',
},
];
const params = {
pageSize: 20,
pageNum: 1,
orderByColumn: 'createTime',
isAsc: 'desc',
searchValue: searchKeyword.value.trim() || undefined
};
// 模拟网络请求延迟
setTimeout(() => {
queryEnterpriseListAndQrInfo(params, (res) => {
loading.value = false;
if (searchKeyword.value.trim()) {
const keyword = searchKeyword.value.trim().toLowerCase();
const filtered = mockData.filter(
(item) =>
item.enterpriseName.toLowerCase().includes(keyword) ||
item.enterpriseNumber.toLowerCase().includes(keyword)
);
enterpriseList.value = filtered;
if (res.code === 200) {
// 接口返回结构直接是 { total, rows, code, msg },没有外层 data
enterpriseList.value = res.rows || [];
finished.value = true;
} else {
enterpriseList.value = mockData;
showFailToast(res.msg || '搜索企业失败');
error.value = true;
}
finished.value = true;
}, 500);
// 后端接口对接后使用以下代码替换上面的测试数据
// searchEnterprise(searchKeyword.value, (res) => {
// loading.value = false;
// if (res.code === 200) {
// const data = res.data || [];
// enterpriseList.value = data;
// finished.value = true;
// } else {
// showFailToast(res.msg || '搜索企业失败');
// error.value = true;
// }
// }, (err) => {
// loading.value = false;
// error.value = true;
// console.error('搜索企业失败', err);
// showFailToast('搜索企业失败,请重试');
// });
}, (err) => {
loading.value = false;
error.value = true;
console.error('搜索企业失败', err);
showFailToast('搜索企业失败,请重试');
});
};
const onLoad = () => {
@ -485,9 +407,11 @@ const onLoad = () => {
const selectEnterprise = (item) => {
console.log('选中企业:', item);
sessionStorage.setItem('enterpriseScanData', JSON.stringify(item));
showSearchModal.value = false;
router.push({ path: '/enforcement/enterpriseScanPreview' });
router.push({
path: '/enforcement/enterpriseScanPreview',
query: { enterpriseNumber: item.enterpriseNumber }
});
};
// ========== 页面跳转 ==========
@ -774,6 +698,7 @@ onBeforeUnmount(() => {
justify-content: center;
margin-right: 0.3rem;
flex-shrink: 0;
overflow: hidden;
}
.item-qr .van-icon {
@ -781,6 +706,12 @@ onBeforeUnmount(() => {
color: #1367fe;
}
.item-qr .qr-image {
width: 100%;
height: 100%;
object-fit: cover;
}
.item-name {
flex: 1;
font-size: 0.35rem;

4
zdxt-web-client/zdxt-efcode-enforcement-app/vite-config/index.js

@ -47,10 +47,6 @@ const baseCfg = (viteEnv = {}) => {
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, '')
},
'/api-enf': {
target: 'http://139.186.148.21:8080',
changeOrigin: true
}
}
},
build: {

Loading…
Cancel
Save