Browse Source

bug修复

master
wangmingyong@163.com 4 weeks ago
parent
commit
09bc889588
  1. 1
      zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnforcementInfoSection.vue
  2. 1
      zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnterpriseSelector.vue
  3. 10
      zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/RegisterPopups.vue
  4. 107
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/scanEntQRCode.vue

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

@ -437,6 +437,7 @@ const onAfterReadImage = (file) => {
.person-select { .person-select {
// margin-left: 30px; // margin-left: 30px;
display: block; display: block;
padding-left: 2px;
// flex-direction: column; // flex-direction: column;
// align-items: flex-end; // align-items: flex-end;
// gap: 0.16rem; // gap: 0.16rem;

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

@ -174,7 +174,6 @@ const handleClose = () => {
align-items: center; align-items: center;
padding: 0.3rem; padding: 0.3rem;
border-bottom: 1px solid #f5f5f5; border-bottom: 1px solid #f5f5f5;
.popup-title { .popup-title {
font-size: 0.4rem; font-size: 0.4rem;
font-weight: 600; font-weight: 600;

10
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" <div v-for="(person, index) in personList" :key="index" class="person-list-item"
@click="handleSelectPerson(person)"> @click="handleSelectPerson(person)">
<div class="person-name">{{ person.userName }}</div> <div class="person-name">{{ person.userName }}</div>
<div class="person-id">执法证件号{{ person.lawCertificateNum || person.phonenumber || person.mobileNumber }}</div> <div class="person-id"><span class="id-label">{{person.lawCertificateNum?'执法证件号:':'联系电话:'}}</span>{{ person.lawCertificateNum || person.phonenumber || person.mobileNumber }}</div>
</div> </div>
<van-empty v-if="personList.length === 0 && !personLoading" description="暂无数据" /> <van-empty v-if="personList.length === 0 && !personLoading" description="暂无数据" />
</van-list> </van-list>
@ -244,10 +244,10 @@ const loadPersonList = () => {
if (res.code === 200 || res.code === 0) { if (res.code === 200 || res.code === 0) {
let data = res.data || res.rows || []; let data = res.data || res.rows || [];
// //
const selectedIds = props.selectedPersons.map(p => p.lawCertificateNum || p.userId || p.id).filter(Boolean); const selectedIds = props.selectedPersons.map(p => p.userId || p.id).filter(Boolean);
if (selectedIds.length > 0) { if (selectedIds.length > 0) {
data = data.filter(item => { data = data.filter(item => {
const id = item.lawCertificateNum || item.mobileNumber || item.userId || item.id || ''; const id = item.userId || '';
return !selectedIds.includes(id); return !selectedIds.includes(id);
}); });
} }
@ -648,6 +648,10 @@ watch(localNoticePopup, async (newVal) => {
.person-id { .person-id {
font-size: 14px; font-size: 14px;
color: #999; color: #999;
.id-label{
display: inline-block;
width: 90px;
}
} }
.notice-popup { .notice-popup {

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

@ -66,24 +66,30 @@
<!-- 企业列表 --> <!-- 企业列表 -->
<div class="enterprise-list"> <div class="enterprise-list">
<div v-for="(item, index) in enterpriseList" :key="index" class="enterprise-item" <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
@click="selectEnterprise(item)"> <van-list v-model:loading="loading" :finished="finished" finished-text="" @load="onLoad"
<div class="item-qr"> :offset="50">
<img v-if="item.qrCodeUrl" :src="item.qrCodeUrl" class="qr-image" /> <div v-for="(item, index) in enterpriseList" :key="index" class="enterprise-item"
<van-icon v-else name="qr" /> @click="selectEnterprise(item)">
</div> <div class="item-qr">
<div class="item-name">{{ item.enterpriseName }}</div> <img v-if="item.qrCodeUrl" :src="item.qrCodeUrl" class="qr-image" />
</div> <van-icon v-else name="qr" />
<!-- 搜索不到企业时显示非深圳市注册企业提示 --> </div>
<div v-if="enterpriseList.length === 0 && !loading && searchKeyword" class="no-result-section"> <div class="item-name">{{ item.enterpriseName }}</div>
<div class="no-result-card">
<div class="no-result-icon">
</div> </div>
<div class="no-result-title">非深圳市注册企业</div> <!-- 搜索不到企业时显示非深圳市注册企业提示 -->
<van-button class="no-result-btn" @click="handleOutOfCityEnterprise">市外注册企业信息录入 ></van-button> <div v-if="enterpriseList.length === 0 && finished && !loading && searchKeyword"
</div> class="no-result-section">
</div> <div class="no-result-card">
<van-loading v-if="loading" class="loading-more" /> <div class="no-result-icon">
</div>
<div class="no-result-title">非深圳市注册企业</div>
<van-button class="no-result-btn"
@click="handleOutOfCityEnterprise">市外注册企业信息录入 ></van-button>
</div>
</div>
</van-list>
</van-pull-refresh>
</div> </div>
</div> </div>
</van-popup> </van-popup>
@ -91,7 +97,7 @@
</template> </template>
<script setup name="ScanEntQRCode"> <script setup name="ScanEntQRCode">
import { ref, reactive, computed, onMounted, onBeforeUnmount, nextTick } from 'vue'; import { ref, reactive, computed, onMounted, onBeforeUnmount } from 'vue';
import { useRouter, useRoute } from 'vue-router'; import { useRouter, useRoute } from 'vue-router';
import { showFailToast, showSuccessToast, showToast, showConfirmDialog } from 'vant'; import { showFailToast, showSuccessToast, showToast, showConfirmDialog } from 'vant';
import { baseUrl, appEnv } from '@/config/env.js'; import { baseUrl, appEnv } from '@/config/env.js';
@ -332,6 +338,11 @@ const enterpriseList = ref([]);
const loading = ref(false); const loading = ref(false);
const finished = ref(false); const finished = ref(false);
const error = ref(false); const error = ref(false);
const refreshing = ref(false);
//
const pageNum = ref(1);
const pageSize = ref(20);
const reasonOptions = ref([]); const reasonOptions = ref([]);
@ -347,24 +358,22 @@ const showSearchPopup = () => {
enterpriseList.value = []; enterpriseList.value = [];
finished.value = false; finished.value = false;
error.value = false; error.value = false;
pageNum.value = 1;
loading.value = true;
if (reasonOptions.value.length === 0) { if (reasonOptions.value.length === 0) {
loadDict('no-scan-reason', (columns) => { loadDict('no-scan-reason', (columns) => {
reasonOptions.value = columns; reasonOptions.value = columns;
const otherItem = filteredReasonOptions.value.find(item => item.text === '其他' || item.value === '其他'); const otherItem = filteredReasonOptions.value.find(item => item.text === '其他' || item.value === '其他');
selectedReason.value = otherItem ? otherItem.originalIndex : (filteredReasonOptions.value[0]?.originalIndex ?? 0); selectedReason.value = otherItem ? otherItem.originalIndex : (filteredReasonOptions.value[0]?.originalIndex ?? 0);
nextTick(() => { fetchEnterprises();
loadEnterprises();
});
}); });
} else { } else {
if (selectedReason.value === -1) { if (selectedReason.value === -1) {
const otherItem = filteredReasonOptions.value.find(item => item.text === '其他' || item.value === '其他'); const otherItem = filteredReasonOptions.value.find(item => item.text === '其他' || item.value === '其他');
selectedReason.value = otherItem ? otherItem.originalIndex : (filteredReasonOptions.value[0]?.originalIndex ?? 0); selectedReason.value = otherItem ? otherItem.originalIndex : (filteredReasonOptions.value[0]?.originalIndex ?? 0);
} }
nextTick(() => { fetchEnterprises();
loadEnterprises();
});
} }
}; };
@ -374,6 +383,8 @@ const closeSearchModal = () => {
enterpriseList.value = []; enterpriseList.value = [];
finished.value = false; finished.value = false;
error.value = false; error.value = false;
pageNum.value = 1;
refreshing.value = false;
}; };
const handleSearch = () => { const handleSearch = () => {
@ -384,7 +395,9 @@ const handleSearch = () => {
enterpriseList.value = []; enterpriseList.value = [];
finished.value = false; finished.value = false;
error.value = false; error.value = false;
loadEnterprises(); pageNum.value = 1;
loading.value = true;
fetchEnterprises();
}; };
const clearSearch = () => { const clearSearch = () => {
@ -392,15 +405,18 @@ const clearSearch = () => {
enterpriseList.value = []; enterpriseList.value = [];
finished.value = false; finished.value = false;
error.value = false; error.value = false;
loadEnterprises(); pageNum.value = 1;
loading.value = true;
fetchEnterprises();
}; };
const loadEnterprises = () => { const fetchEnterprises = () => {
loading.value = true; loading.value = true;
error.value = false;
const params = { const params = {
pageSize: 20, pageSize: pageSize.value,
pageNum: 1, pageNum: pageNum.value,
orderByColumn: 'createTime', orderByColumn: 'createTime',
isAsc: 'desc', isAsc: 'desc',
searchValue: searchKeyword.value.trim() || undefined searchValue: searchKeyword.value.trim() || undefined
@ -409,24 +425,47 @@ const loadEnterprises = () => {
queryEnterpriseListAndQrInfo(params, (res) => { queryEnterpriseListAndQrInfo(params, (res) => {
loading.value = false; loading.value = false;
if (res.code === 200) { if (res.code === 200) {
// { total, rows, code, msg } data const rows = res.rows || [];
enterpriseList.value = res.rows || []; const total = res.total || 0;
finished.value = true;
if (refreshing.value) {
enterpriseList.value = rows;
refreshing.value = false;
} else {
enterpriseList.value = [...enterpriseList.value, ...rows];
}
if (total <= pageSize.value * pageNum.value) {
finished.value = true;
} else {
pageNum.value++;
}
} else { } else {
showFailToast(res.msg || '搜索企业失败'); showFailToast(res.msg || '搜索企业失败');
error.value = true; error.value = true;
finished.value = true;
} }
}, (err) => { }, (err) => {
loading.value = false; loading.value = false;
error.value = true; error.value = true;
finished.value = true;
refreshing.value = false;
console.error('搜索企业失败', err); console.error('搜索企业失败', err);
showFailToast('搜索企业失败,请重试'); showFailToast('搜索企业失败,请重试');
}); });
}; };
const onLoad = () => { const onLoad = () => {
// if (refreshing.value) return;
finished.value = true; fetchEnterprises();
};
const onRefresh = () => {
pageNum.value = 1;
enterpriseList.value = [];
finished.value = false;
loading.value = true;
fetchEnterprises();
}; };
const selectEnterprise = (item) => { const selectEnterprise = (item) => {

Loading…
Cancel
Save