feat: 🚀 查询条件关联关系处理
This commit is contained in:
@@ -76,13 +76,14 @@
|
||||
/>
|
||||
</el-select>
|
||||
</template>
|
||||
<!-- 多选不带输入 -->
|
||||
<template v-if="item.type === 'selectMultiples'">
|
||||
<el-select
|
||||
v-model="_searchResult[`${item.prop}`]"
|
||||
:placeholder="item.placeholder"
|
||||
clearable
|
||||
multiple
|
||||
:disabled="item.disabled"
|
||||
style="max-height: 150px; overflow-y: auto"
|
||||
>
|
||||
<el-option
|
||||
v-for="option in item.options"
|
||||
@@ -152,10 +153,30 @@
|
||||
></el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
<!-- 单选带模糊搜索 -->
|
||||
<template v-if="item.type === 'selectMultipleD'">
|
||||
<el-select
|
||||
v-model="_searchResult[`${item.prop}`]"
|
||||
filterable
|
||||
:reserve-keyword="false"
|
||||
:disabled="item.disabled"
|
||||
:placeholder="item.placeholder"
|
||||
clearable
|
||||
@clear="handleSelectMultipleDClear(item)"
|
||||
>
|
||||
<!-- 循环渲染选项:label 为显示文本,value 为实际提交值 -->
|
||||
<el-option
|
||||
v-for="option in item.options"
|
||||
:key="option.value"
|
||||
:label="option.label"
|
||||
:value="option.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
<!-- 客户也是多选带模糊搜搜 -->
|
||||
<template
|
||||
v-if="item.type === 'selectMultipleRemoteCustomersNames' || item.type === 'selectProductLinesRemote'"
|
||||
>
|
||||
<!-- // filterable -->
|
||||
<el-select
|
||||
v-model="_searchResult[`${item.prop}`]"
|
||||
:placeholder="item.placeholder"
|
||||
@@ -200,6 +221,7 @@ const props = defineProps<{
|
||||
selectMultipleRemoveTag?: () => void;
|
||||
selectMultipleRemoteTag1?: () => void;
|
||||
setRuleFormValue?: () => void;
|
||||
selectMultipleDClear?: () => void;
|
||||
}>();
|
||||
|
||||
let _searchResult = computed(() => {
|
||||
@@ -212,6 +234,7 @@ const emits = defineEmits<{
|
||||
(e: "setRuleFormValue", result: Record<string, any>): void;
|
||||
(e: "selectMultipleRemoveTag", result: Record<string, any>): void;
|
||||
(e: "selectMultipleRemoteTag1", result: Record<string, any>): void;
|
||||
(e: "selectMultipleDClear", result: Record<string, any>): void;
|
||||
}>();
|
||||
|
||||
const handleRomoveTag = (item: any) => {
|
||||
@@ -222,6 +245,7 @@ const handleTagRemove1 = (item: any) => {
|
||||
item.options = [];
|
||||
}
|
||||
};
|
||||
|
||||
//客戶
|
||||
const getCustomers = async (keywords: any, item: any) => {
|
||||
let org_number = _searchResult.value.org_number.join(",");
|
||||
@@ -285,6 +309,10 @@ const getUsers = async (keywords: any, item: any) => {
|
||||
}
|
||||
};
|
||||
|
||||
const handleSelectMultipleDClear = (item: any) => {
|
||||
emits("selectMultipleDClear", { item });
|
||||
};
|
||||
|
||||
//远程搜索多选
|
||||
const handleSelectMultipleRemote = (query: any, item: any) => {
|
||||
if (!query) {
|
||||
|
||||
@@ -86,8 +86,15 @@
|
||||
/>
|
||||
</el-select>
|
||||
</template>
|
||||
<!-- getProductLinesApi -->
|
||||
<template v-if="item.type === 'selectMultipleRemote' || item.type === 'selectProductLinesRemote'">
|
||||
|
||||
<template
|
||||
v-if="
|
||||
item.type === 'selectMultipleRemote' ||
|
||||
item.type === 'selectProductLinesRemote' ||
|
||||
item.type === 'selectRemoteKD' ||
|
||||
item.type === 'selectRemoteKDSubwarehouse'
|
||||
"
|
||||
>
|
||||
<el-select
|
||||
v-model.trim="_searchParams[`${item.prop}`]"
|
||||
:placeholder="item.placeholder"
|
||||
@@ -96,7 +103,6 @@
|
||||
filterable
|
||||
:reserve-keyword="false"
|
||||
@remove-tag="handleTagRemove(item)"
|
||||
@clear="handleClear(item)"
|
||||
:loading="loading"
|
||||
class="m-2 select"
|
||||
remote-show-suffix
|
||||
@@ -178,6 +184,7 @@
|
||||
<script setup lang="ts" name="SearchForm">
|
||||
import { verificationInput } from "./components/utils/verificationInput";
|
||||
import { getSupplierApi, getCustomersApi, getProductLinesApi } from "@/api/modules/global";
|
||||
import { getSetWarehouseKingdeeListApi, getSetWarehouseSubwarehousesListApi } from "@/api/modules/setWarehouse";
|
||||
const props = defineProps<{
|
||||
formData: any[];
|
||||
searchParams: Record<string, any>;
|
||||
@@ -259,10 +266,57 @@ const getProductLines = async (keywords: any, item: any) => {
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
//金蝶仓库
|
||||
const getSetWarehouseKingdeeList = async (keywords: any, item: any) => {
|
||||
item.options = [];
|
||||
let use_org_number = "";
|
||||
if (Array.isArray(_searchParams.value.use_org_number) ** _searchParams.value.use_org_number.length) {
|
||||
use_org_number = _searchParams.value.use_org_number.join(",");
|
||||
}
|
||||
const result = await getSetWarehouseKingdeeListApi({
|
||||
keywords: keywords,
|
||||
use_org_number
|
||||
});
|
||||
if (result?.code === 0) {
|
||||
let options: any = [];
|
||||
result?.data?.forEach((it: any) => {
|
||||
options.push({
|
||||
label: it.warehouse_name,
|
||||
value: it.warehouse_number,
|
||||
use_org_number: it.use_org_number
|
||||
});
|
||||
});
|
||||
item.options = options;
|
||||
}
|
||||
};
|
||||
//获取金蝶子仓库
|
||||
const getSetWarehouseSubwarehousesList = async (keywords: any, item: any) => {
|
||||
//先清空一下
|
||||
item.options = [];
|
||||
let kd_warehouse_number = "";
|
||||
if (Array.isArray(_searchParams.value.kd_warehouse_number) ** _searchParams.value.kd_warehouse_number.length) {
|
||||
kd_warehouse_number = _searchParams.value.kd_warehouse_number.join(",");
|
||||
}
|
||||
const result = await getSetWarehouseSubwarehousesListApi({
|
||||
keywords,
|
||||
warehouse_number: kd_warehouse_number
|
||||
});
|
||||
if (result?.code === 0) {
|
||||
let options: any = [];
|
||||
result?.data?.forEach((it: any) => {
|
||||
options.push({
|
||||
label: it.sub_warehouse_name,
|
||||
value: it.sub_warehouse_number,
|
||||
warehouse_number: it.warehouse_number
|
||||
});
|
||||
});
|
||||
item.options = options;
|
||||
}
|
||||
};
|
||||
|
||||
//多选远程搜索
|
||||
const handleSelectMultipleRemote = async (query: any, item: any) => {
|
||||
console.log(remoteRef.value, "==========remoteRef=========");
|
||||
|
||||
loading.value = true;
|
||||
if (!query) {
|
||||
loading.value = false;
|
||||
@@ -281,8 +335,11 @@ const handleSelectMultipleRemote = async (query: any, item: any) => {
|
||||
getCustomers(valClone, item);
|
||||
} else if (item.type === "selectProductLinesRemote") {
|
||||
//品线
|
||||
|
||||
getProductLines(valClone, item);
|
||||
} else if (item.type === "selectRemoteKD") {
|
||||
getSetWarehouseKingdeeList(valClone, item);
|
||||
} else if (item.type === "selectRemoteKDSubwarehouse") {
|
||||
getSetWarehouseSubwarehousesList(valClone, item);
|
||||
}
|
||||
loading.value = false;
|
||||
};
|
||||
@@ -290,9 +347,15 @@ const handleTagRemove = (item: any) => {
|
||||
if (!_searchParams.value[item.prop].length) {
|
||||
item.options = [];
|
||||
}
|
||||
const { prop } = item;
|
||||
if (prop === "kd_warehouse_number" || prop === "kd_subwarehouse") {
|
||||
emits("selectMultipleRemoveTag", { item, org_number: _searchParams.value[prop] });
|
||||
}
|
||||
};
|
||||
const handleTagRemove1 = (item: any) => {
|
||||
emits("selectMultipleRemoveTag", { item, org_number: _searchParams.value.org_number });
|
||||
const { prop } = item;
|
||||
console.log(prop);
|
||||
emits("selectMultipleRemoveTag", { item, org_number: _searchParams.value[prop] });
|
||||
};
|
||||
//单选远程搜索(供应商)
|
||||
const remoteMethod = async (query: any, item: any) => {
|
||||
|
||||
Reference in New Issue
Block a user