feat: 🚀 修復bug

This commit is contained in:
2025-11-18 09:21:25 +08:00
parent 4168871fd4
commit e79c096e12
5 changed files with 454 additions and 98 deletions

View File

@@ -292,7 +292,7 @@ const getSetWarehouseKingdeeList = async () => {
result?.data?.forEach((it: any) => { result?.data?.forEach((it: any) => {
options.push({ options.push({
label: it.warehouse_name, label: it.warehouse_name,
value: it.warehouse_number, value: it.warehouse_number + "_" + it.use_org_number,
use_org_number: it.use_org_number use_org_number: it.use_org_number
}); });
}); });
@@ -306,17 +306,22 @@ const getSetWarehouseSubwarehousesList = async () => {
if (Array.isArray(kdWarehouseNumber) && kdWarehouseNumber?.length > 0) { if (Array.isArray(kdWarehouseNumber) && kdWarehouseNumber?.length > 0) {
//先清空一下 //先清空一下
_formData.value[2].options = []; _formData.value[2].options = [];
let kd_warehouse_number = ""; let kd_warehouse_number_str = "";
kd_warehouse_number = _searchParams.value.kd_warehouse_number.join(","); let kd_warehouse_number: any = [];
_searchParams.value.kd_warehouse_number.forEach((it: any) => {
kd_warehouse_number.push(it.split("_")[0]);
});
kd_warehouse_number_str = kd_warehouse_number.join(",");
const result = await getSubwarehouseskingdeeListApi({ const result = await getSubwarehouseskingdeeListApi({
warehouse_number: kd_warehouse_number warehouse_number: kd_warehouse_number_str
}); });
if (result?.code === 0) { if (result?.code === 0) {
let options: any = []; let options: any = [];
result?.data?.forEach((it: any) => { result?.data?.forEach((it: any) => {
options.push({ options.push({
label: it.sub_warehouse_name, label: it.sub_warehouse_name,
value: it.sub_warehouse_number, value: it.sub_warehouse_number + "_" + it.warehouse_number,
warehouse_number: it.warehouse_number warehouse_number: it.warehouse_number
}); });
}); });
@@ -347,11 +352,7 @@ const handleSelectMultipleRemote = async (query: any, item: any) => {
//品线 //品线
getProductLines(valClone, item); getProductLines(valClone, item);
} }
// else if (item.type === "selectRemoteKD") {
// getSetWarehouseKingdeeList(valClone, item);
// } else if (item.type === "selectRemoteKDSubwarehouse") {
// getSetWarehouseSubwarehousesList(valClone, item);
// }
loading.value = false; loading.value = false;
}; };
const handleTagRemove = (item: any) => { const handleTagRemove = (item: any) => {
@@ -410,15 +411,48 @@ const handleFormSearch = () => {
const handleFormReset = () => { const handleFormReset = () => {
emits("reset", _searchParams.value); emits("reset", _searchParams.value);
}; };
// 核心逻辑:根据下划线后的值匹配,保留成功项
const filterBySuffixMatch = (targetArr: any, sourceArr: any) => {
// 遍历待筛选数组,筛选出符合条件的项
const matchedResult = sourceArr.filter((item: any) => {
// 分割下划线,获取后半部分(如 "THXLC_101" → "101"
const suffix = item.split("_")[1];
// 判断后缀是否存在于目标数组中
return targetArr.includes(suffix);
});
return matchedResult;
};
// 核心逻辑:按规则对比,保留匹配项
const filterMatchedItems = (upperArr: any, lowerArr: any) => {
// 第一步:处理上方数组,提取所有「下划线前的部分」,组成匹配池
const matchPool = upperArr.map((item: any) => item.split("_")[0]);
// 第二步:遍历下方数组,筛选匹配项
const matchedResult = lowerArr.filter((item: any) => {
// 提取下方数组元素「下划线后的部分」
const lowerSuffix = item.split("_")[1];
// 判断是否在匹配池中(同时处理无下划线的情况)
return lowerSuffix && matchPool.includes(lowerSuffix);
});
return matchedResult;
};
watch( watch(
() => _searchParams?.value?.use_org_number, () => _searchParams?.value?.use_org_number,
newVal => { newVal => {
if (routeName.value === "foundationSetWarehouse") { if (routeName.value === "foundationSetWarehouse") {
if (!newVal || !newVal.length) { if (!newVal || !newVal.length) {
_searchParams.value.kd_warehouse_number = "";
_searchParams.value.kd_subwarehouse_number = "";
_formData.value[1].options = []; _formData.value[1].options = [];
_formData.value[2].options = []; _formData.value[2].options = [];
} }
getSetWarehouseKingdeeList(); getSetWarehouseKingdeeList();
if (!_searchParams?.value?.kd_warehouse_number || !_searchParams?.value?.kd_warehouse_number.length) {
return;
}
let kd_warehouse_number = filterBySuffixMatch(newVal, _searchParams?.value?.kd_warehouse_number);
_searchParams.value.kd_warehouse_number = kd_warehouse_number;
} }
}, },
{ {
@@ -431,9 +465,17 @@ watch(
newVal => { newVal => {
if (routeName.value === "foundationSetWarehouse") { if (routeName.value === "foundationSetWarehouse") {
if (!newVal || !newVal.length) { if (!newVal || !newVal.length) {
_searchParams.value.kd_subwarehouse_number = "";
_formData.value[2].options = []; _formData.value[2].options = [];
} }
getSetWarehouseSubwarehousesList(); getSetWarehouseSubwarehousesList();
if (!_searchParams?.value?.kd_subwarehouse_number || !_searchParams?.value?.kd_subwarehouse_number.length) {
return;
}
let kd_subwarehouse_number = filterMatchedItems(newVal, _searchParams?.value?.kd_subwarehouse_number);
console.log(kd_subwarehouse_number, "=kd_subwarehouse_number=");
_searchParams.value.kd_subwarehouse_number = kd_subwarehouse_number;
} }
}, },
{ {

View File

@@ -70,11 +70,19 @@ export const useTable = (
} }
//金蝶仓库 //金蝶仓库
if (Array.isArray(state.totalParam?.kd_warehouse_number) && state.totalParam?.kd_warehouse_number?.length) { if (Array.isArray(state.totalParam?.kd_warehouse_number) && state.totalParam?.kd_warehouse_number?.length) {
state.totalParam.kd_warehouse_number = state.totalParam.kd_warehouse_number.join(","); let kd_warehouse_number: any[] = [];
state.totalParam.kd_warehouse_number.forEach((item: any) => {
kd_warehouse_number.push(item.split("_")[0]);
});
state.totalParam.kd_warehouse_number = kd_warehouse_number.join(",");
} }
//金蝶子仓库 //金蝶子仓库
if (Array.isArray(state.totalParam?.kd_subwarehouse_number) && state.totalParam?.kd_subwarehouse_number?.length) { if (Array.isArray(state.totalParam?.kd_subwarehouse_number) && state.totalParam?.kd_subwarehouse_number?.length) {
state.totalParam.kd_subwarehouse_number = state.totalParam.kd_subwarehouse_number.join(","); let kd_subwarehouse_number: any[] = [];
state.totalParam.kd_subwarehouse_number.forEach((item: any) => {
kd_subwarehouse_number.push(item.split("_")[0]);
});
state.totalParam.kd_subwarehouse_number = kd_subwarehouse_number.join(",");
} }
} }
}; };

View File

@@ -37,10 +37,17 @@ const getGoodsPreview = async () => {
}; };
getGoodsPreview(); getGoodsPreview();
const handleBlack = () => { const handleBlack = () => {
$router.push({ if (route.query.name === "新增仓位找货优先级") {
path: "/foundation/set/goods/add", $router.push({
query: { id: route.query.id, title: route.query.name } path: "/foundation/set/goods/add",
}); query: { title: route.query.name }
});
} else {
$router.push({
path: "/foundation/set/goods/add",
query: { id: route.query.id, title: route.query.name }
});
}
}; };
</script> </script>

View File

@@ -31,13 +31,13 @@
:init-param="dataStore.initParam" :init-param="dataStore.initParam"
@selectionChange="selectionChange" @selectionChange="selectionChange"
> >
<!-- @selectMultipleRemoveTag="handleSelectMultipleRemoveTag" -->
<template v-slot:search> <template v-slot:search>
<SearchForm <SearchForm
@search="handleSearch" @search="handleSearch"
@reset="handleReset" @reset="handleReset"
:searchParams="dataStore.initParam" :searchParams="dataStore.initParam"
:formData="dataStore.formData" :formData="dataStore.formData"
@selectMultipleRemoveTag="handleSelectMultipleRemoveTag"
/> />
</template> </template>
@@ -271,6 +271,7 @@ const getSetWarehouseSubwarehousesLingXingList = async () => {
}); });
}); });
dataStore.detailsFormData[4].options = options; dataStore.detailsFormData[4].options = options;
console.log(dataStore.detailsRuleForm.lx_warehouse_number, "");
//领星 //领星
if (dataStore.detailsRuleForm.lx_warehouse_number) { if (dataStore.detailsRuleForm.lx_warehouse_number) {
dataStore.detailsFormData[4].options.push({ dataStore.detailsFormData[4].options.push({
@@ -293,10 +294,10 @@ const getSetWarehouseSubwarehousesJushuitanList = async () => {
}); });
}); });
dataStore.detailsFormData[3].options = options; dataStore.detailsFormData[3].options = options;
if (dataStore.detailsRuleForm.lx_warehouse_number) { if (dataStore.detailsRuleForm.jst_warehouse_number) {
dataStore.detailsFormData[3].options.push({ dataStore.detailsFormData[3].options.push({
label: dataStore.detailsRuleForm.lx_warehouse_name, label: dataStore.detailsRuleForm.jst_warehouse_name,
value: dataStore.detailsRuleForm.lx_warehouse_number value: dataStore.detailsRuleForm.jst_warehouse_number
}); });
dataStore.detailsFormData[3].options = uniqueArrayObject(dataStore.detailsFormData[3].options); dataStore.detailsFormData[3].options = uniqueArrayObject(dataStore.detailsFormData[3].options);
} }
@@ -352,6 +353,15 @@ const handleCommit = () => {
// 搜索 // 搜索
const handleSearch = async (params: any) => { const handleSearch = async (params: any) => {
dataStore.initParam = cloneDeep(params); dataStore.initParam = cloneDeep(params);
// dataStore.initParam.kd_subwarehouse_number
// if (dataStore.initParam.kd_subwarehouse_number.length) {
// let kd_subwarehouse_number = [];
// dataStore.initParam.kd_subwarehouse_number.forEach((it: any) => {
// // kd_subwarehouse_number.push(it.split("_")[1]);
// console.log(it.split("_")[1]);
// });
// dataStore.initParam.kd_subwarehouse_number = kd_subwarehouse_number;
// }
//这里需要等到表格刷新以后才去请求 //这里需要等到表格刷新以后才去请求
nextTick(() => { nextTick(() => {
proTableRef?.value!.getTableList(); proTableRef?.value!.getTableList();
@@ -372,85 +382,7 @@ const handleSelectMultipleDClear = (params: any) => {
} = params; } = params;
dataStore.detailsRuleForm[prop] = ""; dataStore.detailsRuleForm[prop] = "";
}; };
/**
* 监听查询条件标签关闭统一处理组织、仓库、子仓库联动修复split类型错误
* @param params { item: { prop: string } } - 关闭标签的相关参数包含字段标识prop
*/
const handleSelectMultipleRemoveTag = (params: any) => {
const { item } = params;
const { prop } = item;
const paramValue = dataStore.initParam[prop]; // 获取当前参数值
// 根据字段标识分发处理逻辑
switch (prop) {
case "use_org_number":
handleOrgTagRemove(paramValue);
break;
case "kd_warehouse_number":
handleKdWarehouseTagRemove(paramValue);
break;
case "kd_subwarehouse_number":
handleKdSubWarehouseTagRemove(paramValue);
break;
default:
break;
}
};
/**
* 组织标签关闭处理(联动仓库、子仓库)
* @param remainingOrgValues 关闭后剩余的组织value数组["101"]、["101","115"]
*/
const handleOrgTagRemove = (remainingOrgValues: any[]) => {
// 2. 筛选仓库:基于原始金蝶仓库数据,聚合所有剩余组织对应的仓库(去重)
let filteredWarehouses: any = [];
if (remainingOrgValues.length > 0) {
filteredWarehouses = dataStore.formData[1].options.filter((warehouse: any) =>
remainingOrgValues.includes(warehouse.use_org_number)
);
// 去重:避免同一仓库被多个组织关联导致重复
filteredWarehouses = Array.from(new Map(filteredWarehouses.map((item: any) => [item.value, item])).values());
}
// 3. 重置仓库状态(清空已选+更新选项)
dataStore.initParam.kd_warehouse_number = "";
dataStore.formData[1].options = [];
dataStore.formData[1].options = filteredWarehouses;
// 4. 重置子仓库状态(仓库变化后必须清空)
dataStore.initParam.kd_subwarehouse_number = "";
dataStore.formData[2].options = [];
};
/**
* 金蝶仓库标签关闭处理(联动子仓库)
* @param remainingWarehouseValues 关闭后剩余的仓库value数组["AD"]、["AD","CK001"]
*/
const handleKdWarehouseTagRemove = (remainingWarehouseValues: any[]) => {
// 2. 筛选子仓库:基于原始金蝶子仓库数据,聚合所有剩余仓库对应的子仓库
let filteredSubWarehouses = [];
if (remainingWarehouseValues.length > 0) {
filteredSubWarehouses = dataStore.formData[2].options.filter((subWarehouse: any) =>
remainingWarehouseValues.includes(subWarehouse.warehouse_number)
);
} else {
// 仓库全部关闭:显示所有原始子仓库数据
filteredSubWarehouses = [...dataStore.formData[2].options];
}
// 3. 重置子仓库状态(清空已选+更新选项)
dataStore.initParam.kd_subwarehouse_number = "";
dataStore.formData[2].options = [];
dataStore.formData[2].options = filteredSubWarehouses;
};
/**
* 金蝶子仓库标签关闭处理(仅更新自身,不联动上级)
* @param remainingSubWarehouseValues 关闭后剩余的子仓库value数组
*/
const handleKdSubWarehouseTagRemove = (remainingSubWarehouseValues: any[]) => {
// 同步表单已选值
dataStore.formData[2].options = remainingSubWarehouseValues;
};
// //监听弹窗开启 // //监听弹窗开启
watch( watch(
() => dataStore.dialogVisible, () => dataStore.dialogVisible,

File diff suppressed because one or more lines are too long