Browse Source

计划和预告人员查询调整接口和参数

dev-V1.0.6
wangmingyong@163.com 3 months ago
parent
commit
087f1a51b8
  1. 2
      zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/plan.js
  2. 1
      zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/nos/RegisterPopups.vue
  3. 70
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/notice/cp_notice_edit.vue
  4. 78
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/my/plan/cp_plan_edit.vue

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

@ -69,6 +69,6 @@ const bureauUnitBaseUrl = "/enforcementcode/bureauUnit";
// 按关键字查询执法单位内人员(分页) // 按关键字查询执法单位内人员(分页)
// params: { sysDeptId, keyword, globalSearch, pageNum, pageSize } // params: { sysDeptId, keyword, globalSearch, pageNum, pageSize }
export const searchBureauUnitUsers = (params, success, error) => export const searchBureauUnitUsers = (params, success, error) =>
_get(bureauUnitBaseUrl + "/users", params, success, error); _get(bureauUnitBaseUrl + "/queryUsersByPage", params, success, error);
// endregion // endregion

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

@ -291,6 +291,7 @@ const loadPersonList = () => {
pageNum: personPageNum.value, pageNum: personPageNum.value,
pageSize: personPageSize.value, pageSize: personPageSize.value,
dataScopeId: useCommon.userId || "", dataScopeId: useCommon.userId || "",
isShowCardId: useCommon.hasLaw ? '0' : '1',
}, },
(res) => { (res) => {
console.log(res) console.log(res)

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

@ -224,10 +224,13 @@
@update:model-value="onPersonSearchInput" @update:model-value="onPersonSearchInput"
/> />
<div class="person-picker-body"> <div class="person-picker-body">
<div v-if="personSearching" class="person-loading"> <van-list
<van-loading size="18" />&nbsp;加载中... v-model:loading="personLoading"
</div> :finished="personFinished"
<template v-else> finished-text=""
:offset="50"
@load="onPersonLoad"
>
<div <div
v-for="(user, idx) in personSearchResult" v-for="(user, idx) in personSearchResult"
:key="user.userId || idx" :key="user.userId || idx"
@ -236,12 +239,12 @@
> >
<div class="person-item-name">{{ user.fullname || user.userName }}</div> <div class="person-item-name">{{ user.fullname || user.userName }}</div>
<div class="person-item-meta"> <div class="person-item-meta">
<span>{{ user.lawCertificateNum || user.phonenumber || user.mobileNumber }}</span> <span>{{user.lawCertificateNum?'执法证件号:':'联系电话:'}} {{ user.lawCertificateNum || user.phonenumber || user.mobileNumber }}</span>
<span v-if="user.loginName" class="person-item-login">@{{ user.loginName }}</span> <!-- <span v-if="user.loginName" class="person-item-login">@{{ user.loginName }}</span> -->
</div> </div>
</div> </div>
<van-empty v-if="!personSearchResult.length" description="未检索到人员" image-size="80" /> <van-empty v-if="!personLoading && !personSearchResult.length" description="未检索到人员" image-size="80" />
</template> </van-list>
</div> </div>
</div> </div>
</van-popup> </van-popup>
@ -378,7 +381,10 @@ let enterpriseSearchSeq = 0;
const showPersonPicker = ref(false); const showPersonPicker = ref(false);
const personSearchKeyword = ref(''); const personSearchKeyword = ref('');
const personSearchResult = ref([]); const personSearchResult = ref([]);
const personSearching = ref(false); const personLoading = ref(false);
const personFinished = ref(false);
const personPageNum = ref(1);
const personPageSize = 10;
let personSearchTimer = null; let personSearchTimer = null;
let personSearchSeq = 0; let personSearchSeq = 0;
@ -519,24 +525,39 @@ const onAddPerson = () => {
} }
personSearchKeyword.value = ''; personSearchKeyword.value = '';
personSearchResult.value = []; personSearchResult.value = [];
personPageNum.value = 1;
personFinished.value = false;
personLoading.value = false;
showPersonPicker.value = true; showPersonPicker.value = true;
triggerPersonSearch(''); // van-list 挂载后自动触发 @load 加载第一页
}; };
const onPersonSearchInput = (val) => { const onPersonSearchInput = (val) => {
if (personSearchTimer) clearTimeout(personSearchTimer); if (personSearchTimer) clearTimeout(personSearchTimer);
const keyword = (val || '').trim(); const keyword = (val || '').trim();
personSearchTimer = setTimeout(() => triggerPersonSearch(keyword), 300); personSearchTimer = setTimeout(() => {
personPageNum.value = 1;
personFinished.value = false;
personSearchResult.value = [];
personLoading.value = true;
fetchPersonList(keyword);
}, 300);
}; };
const triggerPersonSearch = (keyword) => { // van-list 触底加载
const onPersonLoad = () => {
fetchPersonList(personSearchKeyword.value.trim());
};
// 实际发起人员检索(分页追加)
const fetchPersonList = (keyword) => {
const seq = ++personSearchSeq; const seq = ++personSearchSeq;
personSearching.value = true; personLoading.value = true;
searchBureauUnitUsers( searchBureauUnitUsers(
{ sysDeptId: useCommon.bureauUnitId || '', keyword, globalSearch: false, pageNum: 1, pageSize: 30 }, { sysDeptId: useCommon.bureauUnitId || '', userName: keyword, globalSearch: false, pageNum: personPageNum.value, pageSize: personPageSize, isShowCardId: '0' },
(res) => { (res) => {
if (seq !== personSearchSeq) return; if (seq !== personSearchSeq) return;
personSearching.value = false; personLoading.value = false;
if (res && res.code === 200 && Array.isArray(res.rows)) { if (res && res.code === 200 && Array.isArray(res.rows)) {
let rows = res.rows; let rows = res.rows;
// 过滤掉已选择的执法人员 // 过滤掉已选择的执法人员
@ -544,15 +565,26 @@ const triggerPersonSearch = (keyword) => {
const selectedIds = personList.value.map(p => String(p.id || '')).filter(Boolean); const selectedIds = personList.value.map(p => String(p.id || '')).filter(Boolean);
rows = rows.filter(item => !selectedIds.includes(String(item.userId || ''))); rows = rows.filter(item => !selectedIds.includes(String(item.userId || '')));
} }
personSearchResult.value = rows; if (personPageNum.value === 1) {
personSearchResult.value = rows;
} else {
personSearchResult.value = [...personSearchResult.value, ...rows];
}
const total = res.total || 0;
if (total <= personPageSize * personPageNum.value) {
personFinished.value = true;
} else {
personPageNum.value++;
}
} else { } else {
personSearchResult.value = []; if (personPageNum.value === 1) personSearchResult.value = [];
personFinished.value = true;
} }
}, },
() => { () => {
if (seq !== personSearchSeq) return; if (seq !== personSearchSeq) return;
personSearching.value = false; personLoading.value = false;
personSearchResult.value = []; personFinished.value = true;
} }
); );
}; };

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

@ -182,10 +182,13 @@
@update:model-value="onPersonSearchInput" @update:model-value="onPersonSearchInput"
/> />
<div class="person-picker-body"> <div class="person-picker-body">
<div v-if="personSearching" class="person-loading"> <van-list
<van-loading size="18" />&nbsp;加载中... v-model:loading="personLoading"
</div> :finished="personFinished"
<template v-else> finished-text=""
:offset="50"
@load="onPersonLoad"
>
<div <div
v-for="(user, idx) in personSearchResult" v-for="(user, idx) in personSearchResult"
:key="user.userId || idx" :key="user.userId || idx"
@ -194,16 +197,16 @@
> >
<div class="person-item-name">{{ user.fullname || user.userName }}</div> <div class="person-item-name">{{ user.fullname || user.userName }}</div>
<div class="person-item-meta"> <div class="person-item-meta">
<span>{{ user.lawCertificateNum || user.phonenumber || user.mobileNumber }}</span> <span>{{user.lawCertificateNum?'执法证件号:':'联系电话:'}} {{ user.lawCertificateNum || user.phonenumber || user.mobileNumber }}</span>
<span v-if="user.loginName" class="person-item-login">@{{ user.loginName }}</span> <!-- <span v-if="user.loginName" class="person-item-login">@{{ user.loginName }}</span> -->
</div> </div>
</div> </div>
<van-empty <van-empty
v-if="!personSearchResult.length" v-if="!personLoading && !personSearchResult.length"
description="未检索到人员" description="未检索到人员"
image-size="80" image-size="80"
/> />
</template> </van-list>
</div> </div>
</div> </div>
</van-popup> </van-popup>
@ -351,7 +354,10 @@ let enterpriseSearchSeq = 0;
const showPersonPicker = ref(false); const showPersonPicker = ref(false);
const personSearchKeyword = ref(''); const personSearchKeyword = ref('');
const personSearchResult = ref([]); const personSearchResult = ref([]);
const personSearching = ref(false); const personLoading = ref(false);
const personFinished = ref(false);
const personPageNum = ref(1);
const personPageSize = 10;
let personSearchTimer = null; let personSearchTimer = null;
let personSearchSeq = 0; let personSearchSeq = 0;
@ -594,43 +600,69 @@ const onAddPerson = () => {
} }
personSearchKeyword.value = ''; personSearchKeyword.value = '';
personSearchResult.value = []; personSearchResult.value = [];
personPageNum.value = 1;
personFinished.value = false;
personLoading.value = false;
showPersonPicker.value = true; showPersonPicker.value = true;
// 默认先加载单位内人员列表(空关键字) // van-list 挂载后自动触发 @load 加载第一页
triggerPersonSearch('');
}; };
// 人员检索输入(防抖) // 人员检索输入(防抖)
const onPersonSearchInput = (val) => { const onPersonSearchInput = (val) => {
if (personSearchTimer) clearTimeout(personSearchTimer); if (personSearchTimer) clearTimeout(personSearchTimer);
const keyword = (val || '').trim(); const keyword = (val || '').trim();
personSearchTimer = setTimeout(() => triggerPersonSearch(keyword), 300); personSearchTimer = setTimeout(() => {
personPageNum.value = 1;
personFinished.value = false;
personSearchResult.value = [];
personLoading.value = true;
fetchPersonList(keyword);
}, 300);
};
// van-list 触底加载
const onPersonLoad = () => {
fetchPersonList(personSearchKeyword.value.trim());
}; };
// 实际发起人员检索 // 实际发起人员检索(分页追加)
const triggerPersonSearch = (keyword) => { const fetchPersonList = (keyword) => {
const seq = ++personSearchSeq; const seq = ++personSearchSeq;
personSearching.value = true; personLoading.value = true;
searchBureauUnitUsers( searchBureauUnitUsers(
{ {
sysDeptId: useCommon.bureauUnitId || '', sysDeptId: useCommon.bureauUnitId || '',
keyword, userName: keyword,
globalSearch: false, globalSearch: false,
pageNum: 1, pageNum: personPageNum.value,
pageSize: 30, pageSize: personPageSize,
isShowCardId: '0',
}, },
(res) => { (res) => {
if (seq !== personSearchSeq) return; if (seq !== personSearchSeq) return;
personSearching.value = false; personLoading.value = false;
if (res && res.code === 200 && Array.isArray(res.rows)) { if (res && res.code === 200 && Array.isArray(res.rows)) {
personSearchResult.value = res.rows; const data = res.rows;
if (personPageNum.value === 1) {
personSearchResult.value = data;
} else {
personSearchResult.value = [...personSearchResult.value, ...data];
}
const total = res.total || 0;
if (total <= personPageSize * personPageNum.value) {
personFinished.value = true;
} else {
personPageNum.value++;
}
} else { } else {
personSearchResult.value = []; if (personPageNum.value === 1) personSearchResult.value = [];
personFinished.value = true;
} }
}, },
() => { () => {
if (seq !== personSearchSeq) return; if (seq !== personSearchSeq) return;
personSearching.value = false; personLoading.value = false;
personSearchResult.value = []; personFinished.value = true;
} }
); );
}; };

Loading…
Cancel
Save