From 5374b127974aaa7ac41b5691434febcc4b64c7ca Mon Sep 17 00:00:00 2001
From: lijie_ycrj <1540286404@qq.com>
Date: Wed, 11 Mar 2026 14:08:36 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6=E4=BF=AE?=
=?UTF-8?q?=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
packageB/priority/recordsManagement.vue | 109 ++++++++++++++++++--
packageB/priority/targetPersonnelChoice.vue | 109 +++++++++++++++++++-
2 files changed, 207 insertions(+), 11 deletions(-)
diff --git a/packageB/priority/recordsManagement.vue b/packageB/priority/recordsManagement.vue
index 3db84d5..fcafbd5 100644
--- a/packageB/priority/recordsManagement.vue
+++ b/packageB/priority/recordsManagement.vue
@@ -78,7 +78,10 @@
所属区域:
-
+
+
+
帮扶时间:
@@ -255,6 +258,9 @@ const getBackgroundStyle = (imageName) => ({
backgroundPosition: 'center', // 居中
backgroundRepeat: 'no-repeat'
});
+// 所属区域选项(可根据实际替换为动态数据)
+const regions = ref([])
+const picker = ref(null)
function listNotParam(){
let header={
'Authorization':uni.getStorageSync('Padmin-Token'),
@@ -263,14 +269,15 @@ function listNotParam(){
let params={}
$api.myRequest('/dispatch/dept/listNotParam',params,'get',9100,header).then((resData) => {
if(resData && resData.code == 200){
- resData.data.forEach(item=>{
- const obj = {
- value: item.deptId,
- text: item.deptName,
- ancestors:item.ancestors
- }
- executeDeptOptions.value.push(obj)
- })
+ loadLevelData(resData.data[0].parentId);
+ // resData.data.forEach(item=>{
+ // const obj = {
+ // value: item.deptId,
+ // text: item.deptName,
+ // ancestors:item.ancestors
+ // }
+ // executeDeptOptions.value.push(obj)
+ // })
}
});
}
@@ -348,7 +355,8 @@ function onExecuteDeptChange(e){
formData.executeDeptId=e
}
function handleSearch(){
- formData.pageSize=1
+ formData.pageNum=1
+ console.log("formData",formData)
dataList.value=[]
getDataList()
}
@@ -358,6 +366,7 @@ function getDataList(){
'Content-Type': "application/x-www-form-urlencoded"
}
$api.myRequest('/dispatch/assist/records/pageRecords',formData,'get',9100,header).then((resData) => {
+ console.log("resData",resData)
resData.rows.forEach(item=>{
item.task_type=getabelByValue(item.task_type,taskTypeOptions)
})
@@ -422,6 +431,86 @@ function scrollBottom(){
formData.pageNum++
getDataList()
}
+}
+ // 加载某一级的数据(parentId 为空表示根)
+async function loadLevelData(parentId,node) {
+ let header = {
+ 'Authorization': uni.getStorageSync('Padmin-Token'),
+ 'Content-Type': "application/x-www-form-urlencoded"
+ };
+ let params = { parentId };
+
+ try {
+ const resData = await $api.myRequest('/dispatch/dept/list', params, 'get', 9100, header);
+ if(resData.data.length==0){
+ picker.value.hide()
+ return
+ }
+ const formatted = (resData.data || []).map(item => ({
+ text: item.deptName,
+ value: item.tags,
+ deptId: item.deptId,
+ children: []
+ }));
+ if(node){
+ injectChildren(parentId, formatted);
+ }else{
+ regions.value=formatted
+ }
+ } catch (error) {
+ console.error("加载部门数据失败:", error);
+ // uni.showToast({ title: '加载失败', icon: 'none' });
+ }
+}
+// 将子级数据注入到对应的父节点
+function injectChildren(parentValue, childrenData) {
+ const findAndInject = (nodes) => {
+ for (let node of nodes) {
+ if (node.deptId === parentValue) {
+ // 如果 children 已存在且非空,避免重复加载
+ if (!node.children || node.children.length === 0) {
+ node.children = childrenData;
+ }
+ return true;
+ }
+ if (node.children && node.children.length > 0) {
+ if (findAndInject(node.children)) return true;
+ }
+ }
+ return false;
+ }
+
+ findAndInject(regions.value);
+ // 强制更新
+}
+// 当用户选择时触发(注意:change 在每级选择后都会触发)
+function onchange(e) {
+ const selectedValues = e.detail.value;
+ // formData.deptId=selectedValues.map(item => item.value).join(',');
+ if (selectedValues.length === 0) return;
+ // 获取最后一级选中的 value
+ const lastSelectedValue = selectedValues[selectedValues.length - 1];
+ // 查找该节点是否有 children,如果没有则尝试加载
+ const node = findNodeByValue(regions.value, lastSelectedValue);
+ if (node && (!node.children || node.children.length === 0)) {
+ // 检查接口是否还有下一级(可通过接口返回判断,或先尝试加载)
+ // 这里我们直接尝试加载下一级
+ loadLevelData(node.deptId , node);
+ picker.value.show()
+ }
+}
+// 工具函数:根据 value 查找节点
+function findNodeByValue(nodes, value) {
+ for (let node of nodes) {
+ if (node.value === value.value) {
+ return node;
+ }
+ if (node.children && node.children.length > 0) {
+ const found = findNodeByValue(node.children, value);
+ if (found) return found;
+ }
+ }
+ return null;
}
onShow(()=>{
})
diff --git a/packageB/priority/targetPersonnelChoice.vue b/packageB/priority/targetPersonnelChoice.vue
index c0f9fdc..f0bfc28 100644
--- a/packageB/priority/targetPersonnelChoice.vue
+++ b/packageB/priority/targetPersonnelChoice.vue
@@ -28,7 +28,10 @@
所属区域:
-
+
+
+
@@ -221,6 +224,109 @@ const getBackgroundStyle = (imageName) => ({
backgroundRepeat: 'no-repeat'
});
const emit = defineEmits(['update:showVue'])
+// 所属区域选项(可根据实际替换为动态数据)
+const regions = ref([])
+const picker = ref(null)
+function listNotParam(){
+ let header={
+ 'Authorization':uni.getStorageSync('Padmin-Token'),
+ 'Content-Type': "application/x-www-form-urlencoded"
+ }
+ let params={}
+ $api.myRequest('/dispatch/dept/listNotParam',params,'get',9100,header).then((resData) => {
+ if(resData && resData.code == 200){
+ loadLevelData(resData.data[0].parentId);
+ // resData.data.forEach(item=>{
+ // const obj = {
+ // value: item.deptId,
+ // text: item.deptName,
+ // ancestors:item.ancestors
+ // }
+ // executeDeptOptions.value.push(obj)
+ // })
+ }
+ });
+}
+ // 加载某一级的数据(parentId 为空表示根)
+async function loadLevelData(parentId,node) {
+ let header = {
+ 'Authorization': uni.getStorageSync('Padmin-Token'),
+ 'Content-Type': "application/x-www-form-urlencoded"
+ };
+ let params = { parentId };
+
+ try {
+ const resData = await $api.myRequest('/dispatch/dept/list', params, 'get', 9100, header);
+ if(resData.data.length==0){
+ picker.value.hide()
+ return
+ }
+ const formatted = (resData.data || []).map(item => ({
+ text: item.deptName,
+ value: item.tags,
+ deptId: item.deptId,
+ children: []
+ }));
+ if(node){
+ injectChildren(parentId, formatted);
+ }else{
+ regions.value=formatted
+ }
+ } catch (error) {
+ console.error("加载部门数据失败:", error);
+ // uni.showToast({ title: '加载失败', icon: 'none' });
+ }
+}
+// 将子级数据注入到对应的父节点
+function injectChildren(parentValue, childrenData) {
+ const findAndInject = (nodes) => {
+ for (let node of nodes) {
+ if (node.deptId === parentValue) {
+ // 如果 children 已存在且非空,避免重复加载
+ if (!node.children || node.children.length === 0) {
+ node.children = childrenData;
+ }
+ return true;
+ }
+ if (node.children && node.children.length > 0) {
+ if (findAndInject(node.children)) return true;
+ }
+ }
+ return false;
+ }
+
+ findAndInject(regions.value);
+ // 强制更新
+}
+// 当用户选择时触发(注意:change 在每级选择后都会触发)
+function onchange(e) {
+ const selectedValues = e.detail.value;
+ // formData.deptId=selectedValues.map(item => item.value).join(',');
+ if (selectedValues.length === 0) return;
+ // 获取最后一级选中的 value
+ const lastSelectedValue = selectedValues[selectedValues.length - 1];
+ // 查找该节点是否有 children,如果没有则尝试加载
+ const node = findNodeByValue(regions.value, lastSelectedValue);
+ if (node && (!node.children || node.children.length === 0)) {
+ // 检查接口是否还有下一级(可通过接口返回判断,或先尝试加载)
+ // 这里我们直接尝试加载下一级
+ loadLevelData(node.deptId , node);
+ picker.value.show()
+ }
+}
+// 工具函数:根据 value 查找节点
+function findNodeByValue(nodes, value) {
+ for (let node of nodes) {
+ if (node.value === value.value) {
+ return node;
+ }
+ if (node.children && node.children.length > 0) {
+ const found = findNodeByValue(node.children, value);
+ if (found) return found;
+ }
+ }
+ return null;
+}
function getDictionary(){
$api.myRequest('/system/public/dict/data/type/person_database_status').then((resData) => {
if(resData && resData.code == 200){
@@ -348,6 +454,7 @@ function scrollBottom(){
}
}
onLoad((options) => {
+ listNotParam()
if(options.allocationId){
formData.allocationId=options.allocationId
}