diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/plan.js b/zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/plan.js index c5db42f1..322c24d7 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/plan.js +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/plan.js @@ -53,8 +53,8 @@ export const getManualMatchDays = (success, error) => _get(settingBaseUrl + "/ma const enterpriseSearchBaseUrl = "/enforcementcode/enterpriseSearch"; // 按企业名称联合检索(>=3字符) -export const searchUnionByEnterpriseName = (enterpriseName, success, error) => - _get(enterpriseSearchBaseUrl + "/searchUnionByEnterpriseName", { enterpriseName }, success, error); +export const searchUnionByEnterpriseName = (searchValue, success, error) => + _post("/app-enf/enterpriseInfo/queryListAndQrInfo", { searchValue }, success, error); // 根据企业信用代码查询联系人和联系电话 export const getEnterpriseContactInfo = (enterpriseNumber, success, error) => diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_edit.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_edit.vue index 3c066a54..3282b950 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_edit.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_edit.vue @@ -260,28 +260,38 @@ 选择企业 - +
-
-  检索中... -
- + +
@@ -292,7 +302,8 @@ import { useRouter, useRoute } from 'vue-router'; import { showToast, showSuccessToast, showConfirmDialog } from 'vant'; import { addNotice, editNotice, getNoticeDetail } from '@/api/enforcement/notice'; -import { getPlanList, searchUnionByEnterpriseName, searchBureauUnitUsers, getEnterpriseContactInfo } from '@/api/enforcement/plan'; +import { getPlanList, searchBureauUnitUsers, getEnterpriseContactInfo } from '@/api/enforcement/plan'; +import { queryEnterpriseListAndQrInfo } from '@/api/enforcement/index'; import { maskPhone } from '@/util/util'; const router = useRouter(); const route = useRoute(); @@ -404,10 +415,16 @@ const planImportDisplay = computed(() => { const enterpriseOptions = ref([]); const showEnterprisePicker = ref(false); const enterpriseSearchKeyword = ref(''); -const enterpriseSearching = ref(false); -let enterpriseSearchTimer = null; +const enterpriseLoading = ref(false); +const enterpriseFinished = ref(false); +const enterprisePageNum = ref(1); +const enterprisePageSize = 10; +const enterpriseSearched = ref(false); let enterpriseSearchSeq = 0; +const enterpriseEmptyText = computed(() => enterpriseSearched.value ? '未检索到匹配企业' : '请输入至少2个字搜索'); +const enterpriseFinishedText = computed(() => enterpriseOptions.value.length > 0 ? '没有更多了' : ''); + // 执法人员检索 const showPersonPicker = ref(false); const personSearchKeyword = ref(''); @@ -503,34 +520,88 @@ const onTimeConfirm = ({ selectedValues }) => { const onOpenEnterprisePicker = () => { enterpriseSearchKeyword.value = ''; enterpriseOptions.value = []; + enterprisePageNum.value = 1; + enterpriseFinished.value = true; + enterpriseLoading.value = false; + enterpriseSearched.value = false; showEnterprisePicker.value = true; }; -// 企业检索 -const onEnterpriseSearchInput = (val) => { - if (enterpriseSearchTimer) clearTimeout(enterpriseSearchTimer); - const keyword = (val || '').trim(); +// 企业检索(搜索按钮/回车) +const handleEnterpriseSearch = () => { + const keyword = (enterpriseSearchKeyword.value || '').trim(); if (keyword.length < 2) { + showToast('请输入至少2个字搜索'); enterpriseOptions.value = []; + enterpriseFinished.value = true; + enterpriseSearched.value = false; return; } - enterpriseSearchTimer = setTimeout(() => { - const seq = ++enterpriseSearchSeq; - enterpriseSearching.value = true; - searchUnionByEnterpriseName(keyword, (res) => { + enterprisePageNum.value = 1; + enterpriseFinished.value = false; + enterpriseOptions.value = []; + enterpriseLoading.value = true; + enterpriseSearched.value = true; + fetchEnterpriseList(keyword); +}; + +// 清除企业搜索 +const clearEnterpriseSearch = () => { + enterpriseSearchKeyword.value = ''; + enterpriseOptions.value = []; + enterprisePageNum.value = 1; + enterpriseFinished.value = true; + enterpriseLoading.value = false; + enterpriseSearched.value = false; +}; + +// van-list 触底加载 +const onEnterpriseLoad = () => { + fetchEnterpriseList(enterpriseSearchKeyword.value.trim()); +}; + +// 实际发起企业检索(分页追加) +const fetchEnterpriseList = (keyword) => { + if ((keyword || '').trim().length < 2) { + enterpriseFinished.value = true; + enterpriseLoading.value = false; + return; + } + const seq = ++enterpriseSearchSeq; + enterpriseLoading.value = true; + queryEnterpriseListAndQrInfo( + { + pageNum: enterprisePageNum.value, + pageSize: enterprisePageSize, + searchValue: keyword, + }, + (res) => { if (seq !== enterpriseSearchSeq) return; - enterpriseSearching.value = false; - if (res && res.code === 200 && Array.isArray(res.data)) { - enterpriseOptions.value = res.data; + enterpriseLoading.value = false; + if (res && res.code === 200 && Array.isArray(res.rows)) { + const data = res.rows; + if (enterprisePageNum.value === 1) { + enterpriseOptions.value = data; + } else { + enterpriseOptions.value = [...enterpriseOptions.value, ...data]; + } + const total = res.total || 0; + if (total <= enterprisePageSize * enterprisePageNum.value) { + enterpriseFinished.value = true; + } else { + enterprisePageNum.value++; + } } else { - enterpriseOptions.value = []; + if (enterprisePageNum.value === 1) enterpriseOptions.value = []; + enterpriseFinished.value = true; } - }, () => { + }, + () => { if (seq !== enterpriseSearchSeq) return; - enterpriseSearching.value = false; - enterpriseOptions.value = []; - }); - }, 350); + enterpriseLoading.value = false; + enterpriseFinished.value = true; + } + ); }; const onSelectEnterprise = (item) => { @@ -863,6 +934,20 @@ const doSubmit = (isDraft) => { .enterprise-picker-title { font-size: 16px; font-weight: 600; color: #333; } :deep(.van-icon) { font-size: 18px; color: #999; cursor: pointer; } } + .search-bar { + display: flex; + align-items: center; + margin: 0.3rem; + :deep(.van-search) { + padding-right: 0px; + flex: 1; + height: 34px; + } + .search-btn { + flex: none; + height: 34px; + } + } .enterprise-picker-body { flex: 1; overflow-y: auto; diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/plan/cp_plan_edit.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/plan/cp_plan_edit.vue index 7e183905..2bf8032e 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/plan/cp_plan_edit.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/plan/cp_plan_edit.vue @@ -222,28 +222,38 @@ 选择企业 - +
-
-  检索中... -
- + +
@@ -253,7 +263,8 @@