Browse Source

登录加执法证件号,bug修复

dev
wangmingyong@163.com 1 month ago
parent
commit
0a034f2521
  1. 5
      zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/nos/RegisterPopups.vue
  2. 36
      zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnforcementInfoSection.vue
  3. 5
      zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnterpriseInfoSection.vue
  4. 3
      zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnterpriseSelector.vue
  5. 2
      zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/RegisterPopups.vue
  6. 8
      zdxt-web-client/zdxt-efcode-enforcement-app/src/store/Common.js
  7. 15
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforce/enforcementNoticeList.vue
  8. 1
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/home/enforcementHome.vue
  9. 1
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/loginByPassword.vue
  10. 286
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_detail.vue
  11. 2
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_edit.vue
  12. 2
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/plan/cp_plan_edit.vue

5
zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/nos/RegisterPopups.vue

@ -49,7 +49,7 @@
<div v-for="(person, index) in personList" :key="index" class="person-list-item"
@click="handleSelectPerson(person)">
<div class="person-name">{{ person.userName }}</div>
<div class="person-id">执法证件号{{ person.lawEnforcerIdCard ?? person.lawEnforcerPhone }}</div>
<div class="person-id">执法证件号{{ person.lawCertificateNum || person.phonenumber || person.mobileNumber }}</div>
</div>
<van-empty v-if="personList.length === 0 && !personLoading" description="暂无数据" />
</van-list>
@ -302,7 +302,10 @@ const loadPersonList = () => {
lawEnforcerId: item.userId,
lawEnforcerName: item.userName,
lawEnforcerPhone: item.phonenumber,
lawCertificateNum: item.lawCertificateNum,
mobileNumber: item.mobileNumber,
}))
console.log(data)
const total = res.total || res.count || 0
if (personPageNum.value === 1) {

36
zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnforcementInfoSection.vue

@ -15,7 +15,7 @@
<div class="form-label"><span class="required-mark">*</span>执法人员</div>
<div class="form-value person-select">
<div class="person-item default-person">
<span>{{ defaultPerson?.name }} {{ defaultPerson?.phonenumber }}</span>
<span>{{ defaultPerson?.name }} {{ defaultPerson?.lawCertificateNum || defaultPerson?.phonenumber }} </span>
</div>
<div v-for="(person, index) in additionalPersons" :key="index" class="person-item-add">
<span @click="$emit('openPersonPicker', index)" :class="{ placeholder: !person.name }">
@ -396,14 +396,16 @@ const onAfterReadImage = (file) => {
.required-mark {
color: #ee0a24;
font-size: 0.32rem;
margin-right: 0.08rem;
font-size: 15px;
font-weight: bold;
position: absolute;
left: -4px;
top: 2px;
}
.form-label {
font-size: 14px;
color: #333;
color: #000;
flex: none;
width: 2.4rem;
font-weight: 500;
@ -467,12 +469,10 @@ const onAfterReadImage = (file) => {
}
.basis-container {
margin-bottom: 0.12rem;
margin-left: 6px;
}
.basis-row {
padding: 0.24rem 0.32rem;
padding: 0.26rem 0.42667rem;
}
.basis-wrapper {
@ -554,7 +554,10 @@ const onAfterReadImage = (file) => {
justify-content: flex-end;
color: #000;
}
:deep(.van-field__label) {
font-size: 14px;
color: #000;
}
:deep(.van-checkbox__label) {
font-size: 14px;
color: #333;
@ -575,7 +578,7 @@ const onAfterReadImage = (file) => {
:deep(.van-field__label) {
font-size: 14px;
color: #333;
color: #000;
}
}
@ -624,11 +627,11 @@ const onAfterReadImage = (file) => {
}
.file-upload-row {
padding: 0px 20px 20px 20px;
padding: 0px 20px 20px 16px;
.file-upload-label {
font-size: 14px;
color: #333;
color: #000;
margin-bottom: 0.16rem;
}
}
@ -639,4 +642,15 @@ const onAfterReadImage = (file) => {
border-radius: 0.1rem;
}
}
.entrusted-options{
:deep(.van-field__label){
width:100px;
color: #000;
}
}
:deep(.van-field__label--required:before){
position: absolute;
left: 8px;
top: 10px;
}
</style>

5
zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnterpriseInfoSection.vue

@ -87,4 +87,9 @@ const handleClick = () => {
color: #000;
}
:deep(.van-field__label--required:before){
position: absolute;
left: 8px;
top: 10px;
}
</style>

3
zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnterpriseSelector.vue

@ -17,7 +17,8 @@
<div v-for="(item, index) in enterpriseList" :key="index" class="enterprise-list-item"
@click="handleSelectEnterprise(item)">
<div class="enterprise-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="enterprise-info">
<div class="enterprise-name">{{ item.enterpriseName }}</div>

2
zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/RegisterPopups.vue

@ -58,7 +58,7 @@
<div v-for="(person, index) in personList" :key="index" class="person-list-item"
@click="handleSelectPerson(person)">
<div class="person-name">{{ person.userName }}</div>
<div class="person-id">执法证件号{{ person.mobileNumber }}</div>
<div class="person-id">执法证件号{{ person.lawCertificateNum || person.phonenumber || person.mobileNumber }}</div>
</div>
<van-empty v-if="personList.length === 0 && !personLoading" description="暂无数据" />
</van-list>

8
zdxt-web-client/zdxt-efcode-enforcement-app/src/store/Common.js

@ -36,6 +36,8 @@ export default defineStore('useCommon', {
firstLoad: true,
// 是否执法人员
hasLaw: false,
// 执法证件号
lawCertificateNum: "",
}),
getters: {},
actions: {
@ -115,6 +117,10 @@ export default defineStore('useCommon', {
SET_HAS_LAW(data){
this.hasLaw = data;
},
//设置执法证件号
SET_LAW_CERTIFICATE_NUM(data){
this.lawCertificateNum = data;
},
// 获取多语言数据
/*async getLang(params) {
let url = $globalRequestUrl({
@ -157,6 +163,6 @@ export default defineStore('useCommon', {
},
persist: {
storage: sessionStorage,
pick: ['token', 'userId', 'userName', 'nickName', 'enterpriseNumber', 'enterpriseName', 'enterpriseId', 'phonenumber', 'deptId', 'deptName', 'organId', 'organName', 'bureauUnitId', 'bureauUnitName', 'hasLaw'],
pick: ['token', 'userId', 'userName', 'nickName', 'enterpriseNumber', 'enterpriseName', 'enterpriseId', 'phonenumber', 'deptId', 'deptName', 'organId', 'organName', 'bureauUnitId', 'bureauUnitName', 'hasLaw', 'lawCertificateNum'],
},
});

15
zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforce/enforcementNoticeList.vue

@ -22,7 +22,7 @@
<van-list v-model:loading="loading" :finished="finished" finished-text="" @load="onLoad" :offset="50">
<van-empty v-if="finished && list.length === 0" description="暂无数据" />
<div class="notice-card" v-for="item in list" :key="item.id">
<div class="notice-card" v-for="item in list" :key="item.id" @click="onViewDetail(item)">
<div class="card-row time-row">
<span class="label">执法时间</span>
<span class="value">{{ item.enforceDate }}</span>
@ -34,7 +34,7 @@
</div>
<div class="card-action">
<span class="feedback-btn" :class="{ 'has-dot': item.hasFeedback }"
@click="onFeedback(item)">
@click.stop="onFeedback(item)">
<van-icon name="chat-o" size="14" />
反馈
</span>
@ -164,6 +164,16 @@ const onFeedback = (item) => {
});
};
// ========== ==========
const onViewDetail = (item) => {
router.push({
path: '/enforcement/notice/detail',
query: {
id: item.id,
}
});
};
// ========== ==========
onMounted(() => {
fetchList();
@ -211,6 +221,7 @@ onMounted(() => {
padding: 0.3rem 0.35rem;
margin-bottom: 0.27rem;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
cursor: pointer;
}
.card-row {

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

@ -233,6 +233,7 @@ onMounted(() => {
useCommon.SET_BUREAU_UNIT_ID(success.data.bureauUnitId);
useCommon.SET_BUREAU_UNIT_NAME(success.data.bureauUnitName || "");
useCommon.SET_HAS_LAW(success.data.lawOfficer || "");
useCommon.SET_LAW_CERTIFICATE_NUM(success.data.lawCertificateNum || "");
isLoading.value = false;
fetchNoticeList();
fetchBannerList();

1
zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/loginByPassword.vue

@ -135,6 +135,7 @@ const doLogin = (secretName, secretKey) => {
useCommon.SET_BUREAU_UNIT_ID(response.data.bureauUnitId);
useCommon.SET_BUREAU_UNIT_NAME(response.data.bureauUnitName || "");
useCommon.SET_HAS_LAW(response.data.lawOfficer || "");
useCommon.SET_LAW_CERTIFICATE_NUM(response.data.lawCertificateNum || "");
useCommon.SET_IS_FIRST_LOAD(false);
console.log("bureauUnitName", response.data.bureauUnitName);
console.log("enforcement login success", useCommon.userId);

286
zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_detail.vue

@ -1,76 +1,80 @@
<template>
<div class="notice-detail-page app_content">
<!-- 顶部导航 -->
<!-- <van-nav-bar
title="预告详情"
left-arrow
@click-left="onBack"
/> -->
<div class="content">
<div class="notice-detail-page">
<!-- 内容区域 -->
<div class="content-area">
<div v-if="loading" class="loading-wrap">
<van-loading size="20" />&nbsp;加载中...
</div>
<template v-else-if="detail">
<!-- 基本信息 -->
<div class="form-card">
<div class="card-header">
<div class="status-tag" :class="'status-' + detail.status">
{{ getStatusText(detail.status) }}
</div>
<div class="card-date">{{ formatDate(detail.createTime) }}</div>
<!-- 基本信息卡片
<div class="info-card">
<div class="card-title">预告信息</div>
<div class="info-row">
<span class="info-label">状态</span>
<span class="info-value">{{ getStatusText(detail.status) }}</span>
</div>
<div class="notice-title">{{ detail.enforceContent || '暂无执法事项' }}</div>
<div class="info-row">
<div class="label">执法日期</div>
<div class="value">{{ detail.enforceDate || '-' }} {{ getTimeText(detail.enforceTime) }}</div>
<span class="info-label">发布时间</span>
<span class="info-value">{{ formatDate(detail.createTime) }}</span>
</div>
<div class="info-row">
<div class="label">执法单位</div>
<div class="value">{{ detail.bureauDeptName || '-' }}</div>
<span class="info-label">执法日期</span>
<span class="info-value">{{ detail.enforceDate || '-' }} {{ getTimeText(detail.enforceTime) }}</span>
</div>
<div class="info-row">
<div class="label">企业名称</div>
<div class="value">{{ detail.enterpriseName || '-' }}</div>
<span class="info-label">执法单位</span>
<span class="info-value">{{ detail.bureauDeptName || '-' }}</span>
</div>
</div> -->
<div class="info-card">
<div class="info-row">
<div class="label">企业联系人</div>
<div class="value">{{ detail.contactPerson || '-' }}</div>
<span class="info-label">企业名称</span>
<span class="info-value">{{ detail.enterpriseName || '-' }}</span>
</div>
<div class="info-row">
<div class="label">联系电话</div>
<div class="value">{{ detail.contactPhone || '-' }}</div>
<span class="info-label">企业联系人</span>
<span class="info-value">{{ detail.contactPerson || '-' }}</span>
</div>
</div>
<!-- 执法人员 -->
<div class="form-card">
<div class="section-title">执法人员</div>
<div v-if="personList.length" class="person-list">
<div v-for="(person, index) in personList" :key="index" class="person-line">
<span class="person-name">{{ person.name }}</span>
<span class="person-phone">{{ person.phone }}</span>
<div class="info-row">
<span class="info-label">联系电话</span>
<span class="info-value">{{ detail.contactPhone || '-' }}</span>
</div>
<div class="info-row">
<span class="info-label">执法日期</span>
<span class="info-value">{{ detail.enforceDate || '-' }} {{ getTimeText(detail.enforceTime) }}</span>
</div>
<div class="info-row">
<span class="info-label">执法事项</span>
<span class="info-value detail_content">{{ detail.enforceContent || '-' }}</span>
</div>
<div class="info-row">
<span class="info-label">执法要求</span>
<span class="info-value detail_content">{{ detail.enforceRequirement || '-' }}</span>
</div>
<div class="info-row">
<span class="info-label">执法人员</span>
<div v-if="personList.length" class="enforcer-list">
<div v-for="(person, index) in personList" :key="index" class="enforcer-item">
<span class="enforcer-name">{{ person.name }}</span>
<span class="enforcer-phone">{{ person.phone }}</span>
</div>
</div>
<div v-else class="empty-text">暂无执法人员</div>
</div>
<!-- 执法事项 -->
<div class="form-card">
<div class="section-title">执法事项</div>
<div class="content-text">{{ detail.enforceContent || '-' }}</div>
</div>
<!-- 执法要求 -->
<div class="form-card">
<div class="section-title">执法要求</div>
<div class="content-text">{{ detail.enforceRequirement || '-' }}</div>
</div>
<!-- <div class="info-row">
<span class="info-label">登记</span>
<span class="info-value">{{ detail.enforceRegister || '-' }}</span>
</div> -->
</div>
</template>
<van-empty v-else description="未查询到预告信息" />
</div>
<!-- 底部反馈按钮 -->
<div class="footer-bar" v-if="detail">
<van-button class="feedback-btn" type="primary" block @click="goFeedback">反馈</van-button>
</div>
</div>
</template>
@ -102,6 +106,17 @@ const formatDate = (dateStr) => {
const onBack = () => { router.back(); };
const goFeedback = () => {
const id = route.query.id;
router.push({
path: '/enforcement/notice/message',
query: {
id: id,
readonly: 0
}
});
};
onMounted(() => {
const id = route.query.id;
if (!id) {
@ -134,28 +149,13 @@ onMounted(() => {
flex-direction: column;
height: 100%;
background: #fbfdff;
overflow: hidden;
}
:deep(.van-nav-bar) {
background: #347bc3;
flex-shrink: 0;
.van-nav-bar__title {
color: #fff;
font-size: 18px;
font-weight: 600;
}
.van-icon {
color: #fff;
}
}
.content {
.content-area {
flex: 1;
overflow-y: auto;
padding: 12px;
padding: 0.27rem;
padding-bottom: 1.8rem;
}
.loading-wrap {
@ -167,127 +167,101 @@ onMounted(() => {
font-size: 14px;
}
.form-card {
/* ===== 信息卡片 ===== */
.info-card {
background: #fff;
border-radius: 14px;
padding: 16px;
margin-bottom: 12px;
box-shadow: 0 4px 14px rgba(44, 116, 190, 0.08);
border-radius: 4px;
padding: 0.3rem 0.35rem;
margin-bottom: 0.27rem;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
}
.card-header {
.card-title {
font-size: 0.4rem;
font-weight: bold;
color: #333;
margin-bottom: 0.25rem;
padding-bottom: 0.15rem;
border-bottom: 1px solid #f0f0f0;
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 12px;
}
.status-tag {
font-size: 12px;
font-weight: 500;
padding: 3px 10px;
border-radius: 10px;
}
.status-0 {
background: #f0f0f0;
color: #666;
}
.status-1 {
background: #e6f7ff;
color: #1890ff;
}
.status-2 {
background: #fff2e8;
color: #fa8c16;
}
.status-3 {
background: #f6ffed;
color: #52c41a;
}
.card-date {
font-size: 12px;
color: #999;
}
.notice-title {
font-size: 16px;
font-weight: 700;
color: #111;
line-height: 1.5;
margin-bottom: 14px;
align-items: baseline;
}
.info-row {
display: flex;
align-items: flex-start;
margin-bottom: 8px;
font-size: 14px;
line-height: 1.5;
&:last-child {
margin-bottom: 0;
font-size: 0.32rem;
line-height: 1.8;
padding: 6px 0px;
.info-label {
color: #333;
margin-right: 18px;
font-size: 14px;
width: 70px;
flex-shrink: 0;
}
.info-value {
color: #999;
flex: 1;
word-break: break-all;
font-size: 14px;
}
}
.label {
width: 80px;
flex-shrink: 0;
color: #333;
font-weight: 500;
}
.value {
flex: 1;
color: #8a8a8a;
.content-text {
color: #555;
line-height: 1.6;
word-break: break-all;
white-space: pre-wrap;
}
.section-title {
font-size: 15px;
font-weight: 600;
color: #333;
margin-bottom: 10px;
padding-bottom: 8px;
border-bottom: 1px solid #f0f0f0;
}
.person-list {
/* ===== 执法人员 ===== */
.enforcer-list {
display: flex;
flex-direction: column;
gap: 8px;
padding: 6px 0px;
}
.person-line {
.enforcer-item {
display: flex;
align-items: center;
font-size: 14px;
color: #666;
gap: 12px;
.person-name {
.enforcer-name {
font-weight: 500;
color: #999;
}
.person-phone {
.enforcer-phone {
color: #999;
}
}
.detail_content{
height: 100px;
}
.empty-text {
font-size: 14px;
color: #ccc;
/* ===== 底部反馈按钮 ===== */
.footer-bar {
position: fixed;
bottom: 0;
left: 0;
right: 0;
padding: 0.2rem 0.4rem;
padding-bottom: calc(0.2rem + env(safe-area-inset-bottom));
background: #fff;
box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.05);
z-index: 10;
}
.content-text {
font-size: 14px;
color: #555;
line-height: 1.6;
word-break: break-all;
white-space: pre-wrap;
.feedback-btn {
background: #2b7de9;
border: none;
border-radius: 0.3rem;
font-size: 0.34rem;
height: 0.88rem;
}
</style>

2
zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_edit.vue

@ -232,7 +232,7 @@
>
<div class="person-item-name">{{ user.fullname || user.userName }}</div>
<div class="person-item-meta">
<span v-if="user.mobileNumber">{{ user.mobileNumber }}</span>
<span>{{ user.lawCertificateNum || user.phonenumber || user.mobileNumber }}</span>
<span v-if="user.loginName" class="person-item-login">@{{ user.loginName }}</span>
</div>
</div>

2
zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/plan/cp_plan_edit.vue

@ -194,7 +194,7 @@
>
<div class="person-item-name">{{ user.fullname || user.userName }}</div>
<div class="person-item-meta">
<span v-if="user.mobileNumber">{{ user.mobileNumber }}</span>
<span>{{ user.lawCertificateNum || user.phonenumber || user.mobileNumber }}</span>
<span v-if="user.loginName" class="person-item-login">@{{ user.loginName }}</span>
</div>
</div>

Loading…
Cancel
Save