5 Commits

25 changed files with 1134 additions and 151 deletions

View File

@@ -26,6 +26,22 @@ export const getProductLinesApi = (params: any) => {
}; };
//仓库 //仓库
export const getWarehousesListApi = () => { export const getWarehousesListApi = (params?: any) => {
return http.get<any>(`basicinfo/warehouses`); return http.get<any>(`basicinfo/warehouses`, params);
};
//获取金蝶仓库
export const getWarehousesKingdeeListApi = (params: any) => {
return http.get<any>(`basicinfo/warehouses/kingdee`, params);
};
//获取金蝶子仓库
export const getSubwarehouseskingdeeListApi = (params?: any) => {
return http.get<any>(`basicinfo/subwarehouses/kingdee`, params);
};
//获取聚水潭仓库 /admapi/basicinfo/warehouses/jushuitan
export const getWarehousesJushuitanListApi = (params?: any) => {
return http.get<any>(`basicinfo/warehouses/jushuitan`, params);
};
export const getWarehousesLingXingListApi = (params?: any) => {
return http.get<any>(`basicinfo/warehouses/lingxing`, params);
}; };

View File

@@ -0,0 +1,26 @@
import http from "@/api";
//列表 /admapi/warehouse/pos_picking_priority
export const getGoodsListApi = (params: any) => {
return http.get<any>(`warehouse/pos_picking_priority`, params);
};
//新增 /admapi/warehouse/pos_picking_priority
export const getGoodsAddApi = (params: any) => {
return http.post<any>(`warehouse/pos_picking_priority`, params);
};
//更新
export const getGoodsUpApi = (id: any, params: any) => {
return http.post<any>(`warehouse/pos_picking_priority/${id}`, params);
};
//详情
export const getGoodsDetailsApi = (id: any) => {
return http.get<any>(`warehouse/pos_picking_priority/${id}`);
};
//预览
export const getGoodsPreviewApi = (id: any) => {
return http.get<any>(`warehouse/pos_picking_priority/preview/${id}`);
};
//验证 /admapi/warehouse/pos_picking_priority/check_exists
export const getGoodsCheckExistswApi = (params: any) => {
return http.get<any>(`warehouse/pos_picking_priority/check_exists`, params);
};

View File

@@ -1,10 +1,10 @@
import http from "@/api"; import http from "@/api";
// //列表
export const getSetWarehouseListApi = (params: any) => { export const getSetWarehouseListApi = (params: any) => {
return http.get<any>(`store`, params); return http.get<any>(`warehouse/relationship`, params);
}; };
// getWarehouseUpApi,getWarehouseDetailsApi,getWarehouseUpApi
//删除 //删除
export const getWarehouseDelApi = (params: any) => { export const getWarehouseDelApi = (params: any) => {
return http.delete<any>(`warehouse/relationship/${params}`); return http.delete<any>(`warehouse/relationship/${params}`);
@@ -18,10 +18,6 @@ export const getWarehouseUpApi = (id: any, params: any) => {
return http.post<any>(`warehouse/relationship/${id}`, params); return http.post<any>(`warehouse/relationship/${id}`, params);
}; };
//详情 //详情
// export const getWarehouseDetailsApi = (id: any) => { export const getWarehouseDetailsApi = (id: any) => {
// return http.get<any>(`store/${id}`); return http.get<any>(`warehouse/relationship/${id}`);
// }; };
// //导出
// export const getShopListExportApi = (params: any) => {
// return http.get<any>(`store/export`, params);
// };

3
src/components.d.ts vendored
View File

@@ -16,6 +16,7 @@ declare module "vue" {
ElBreadcrumb: typeof import("element-plus/es")["ElBreadcrumb"]; ElBreadcrumb: typeof import("element-plus/es")["ElBreadcrumb"];
ElBreadcrumbItem: typeof import("element-plus/es")["ElBreadcrumbItem"]; ElBreadcrumbItem: typeof import("element-plus/es")["ElBreadcrumbItem"];
ElButton: typeof import("element-plus/es")["ElButton"]; ElButton: typeof import("element-plus/es")["ElButton"];
ElCheckbox: typeof import("element-plus/es")["ElCheckbox"];
ElContainer: typeof import("element-plus/es")["ElContainer"]; ElContainer: typeof import("element-plus/es")["ElContainer"];
ElDatePicker: typeof import("element-plus/es")["ElDatePicker"]; ElDatePicker: typeof import("element-plus/es")["ElDatePicker"];
ElDialog: typeof import("element-plus/es")["ElDialog"]; ElDialog: typeof import("element-plus/es")["ElDialog"];
@@ -28,6 +29,7 @@ declare module "vue" {
ElHeader: typeof import("element-plus/es")["ElHeader"]; ElHeader: typeof import("element-plus/es")["ElHeader"];
ElIcon: typeof import("element-plus/es")["ElIcon"]; ElIcon: typeof import("element-plus/es")["ElIcon"];
ElInput: typeof import("element-plus/es")["ElInput"]; ElInput: typeof import("element-plus/es")["ElInput"];
ElInputNumber: typeof import("element-plus/es")["ElInputNumber"];
ElMain: typeof import("element-plus/es")["ElMain"]; ElMain: typeof import("element-plus/es")["ElMain"];
ElMenu: typeof import("element-plus/es")["ElMenu"]; ElMenu: typeof import("element-plus/es")["ElMenu"];
ElMenuItem: typeof import("element-plus/es")["ElMenuItem"]; ElMenuItem: typeof import("element-plus/es")["ElMenuItem"];
@@ -42,6 +44,7 @@ declare module "vue" {
ElTabPane: typeof import("element-plus/es")["ElTabPane"]; ElTabPane: typeof import("element-plus/es")["ElTabPane"];
ElTabs: typeof import("element-plus/es")["ElTabs"]; ElTabs: typeof import("element-plus/es")["ElTabs"];
ElTag: typeof import("element-plus/es")["ElTag"]; ElTag: typeof import("element-plus/es")["ElTag"];
ElTooltip: typeof import("element-plus/es")["ElTooltip"];
Empty: typeof import("./components/ProTable/components/Empty.vue")["default"]; Empty: typeof import("./components/ProTable/components/Empty.vue")["default"];
Form: typeof import("./components/Form/index.vue")["default"]; Form: typeof import("./components/Form/index.vue")["default"];
FormItem: typeof import("./components/Form/components/FormItem.vue")["default"]; FormItem: typeof import("./components/Form/components/FormItem.vue")["default"];

View File

@@ -67,6 +67,7 @@
:placeholder="item.placeholder" :placeholder="item.placeholder"
clearable clearable
:disabled="item.disabled" :disabled="item.disabled"
@change="handleSelectChange(item)"
> >
<el-option <el-option
v-for="option in item.options" v-for="option in item.options"
@@ -76,13 +77,14 @@
/> />
</el-select> </el-select>
</template> </template>
<!-- 多选不带输入 -->
<template v-if="item.type === 'selectMultiples'"> <template v-if="item.type === 'selectMultiples'">
<el-select <el-select
v-model="_searchResult[`${item.prop}`]" v-model="_searchResult[`${item.prop}`]"
:placeholder="item.placeholder" :placeholder="item.placeholder"
clearable
multiple multiple
:disabled="item.disabled" :disabled="item.disabled"
style="max-height: 150px; overflow-y: auto"
> >
<el-option <el-option
v-for="option in item.options" v-for="option in item.options"
@@ -152,10 +154,30 @@
></el-option> ></el-option>
</el-select> </el-select>
</template> </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 <template
v-if="item.type === 'selectMultipleRemoteCustomersNames' || item.type === 'selectProductLinesRemote'" v-if="item.type === 'selectMultipleRemoteCustomersNames' || item.type === 'selectProductLinesRemote'"
> >
<!-- // filterable -->
<el-select <el-select
v-model="_searchResult[`${item.prop}`]" v-model="_searchResult[`${item.prop}`]"
:placeholder="item.placeholder" :placeholder="item.placeholder"
@@ -200,6 +222,8 @@ const props = defineProps<{
selectMultipleRemoveTag?: () => void; selectMultipleRemoveTag?: () => void;
selectMultipleRemoteTag1?: () => void; selectMultipleRemoteTag1?: () => void;
setRuleFormValue?: () => void; setRuleFormValue?: () => void;
selectMultipleDClear?: () => void;
selectChange?: () => void;
}>(); }>();
let _searchResult = computed(() => { let _searchResult = computed(() => {
@@ -212,8 +236,12 @@ const emits = defineEmits<{
(e: "setRuleFormValue", result: Record<string, any>): void; (e: "setRuleFormValue", result: Record<string, any>): void;
(e: "selectMultipleRemoveTag", result: Record<string, any>): void; (e: "selectMultipleRemoveTag", result: Record<string, any>): void;
(e: "selectMultipleRemoteTag1", result: Record<string, any>): void; (e: "selectMultipleRemoteTag1", result: Record<string, any>): void;
(e: "selectMultipleDClear", result: Record<string, any>): void;
(e: "selectChange", result: Record<string, any>): void;
}>(); }>();
const handleSelectChange = (item: any) => {
emits("selectChange", item);
};
const handleRomoveTag = (item: any) => { const handleRomoveTag = (item: any) => {
emits("selectMultipleRemoveTag", { item, org_number: _searchResult.value.org_number }); emits("selectMultipleRemoveTag", { item, org_number: _searchResult.value.org_number });
}; };
@@ -222,6 +250,7 @@ const handleTagRemove1 = (item: any) => {
item.options = []; item.options = [];
} }
}; };
//客戶 //客戶
const getCustomers = async (keywords: any, item: any) => { const getCustomers = async (keywords: any, item: any) => {
let org_number = _searchResult.value.org_number.join(","); let org_number = _searchResult.value.org_number.join(",");
@@ -285,6 +314,10 @@ const getUsers = async (keywords: any, item: any) => {
} }
}; };
const handleSelectMultipleDClear = (item: any) => {
emits("selectMultipleDClear", { item });
};
//远程搜索多选 //远程搜索多选
const handleSelectMultipleRemote = (query: any, item: any) => { const handleSelectMultipleRemote = (query: any, item: any) => {
if (!query) { if (!query) {

View File

@@ -86,8 +86,15 @@
/> />
</el-select> </el-select>
</template> </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 <el-select
v-model.trim="_searchParams[`${item.prop}`]" v-model.trim="_searchParams[`${item.prop}`]"
:placeholder="item.placeholder" :placeholder="item.placeholder"
@@ -96,7 +103,6 @@
filterable filterable
:reserve-keyword="false" :reserve-keyword="false"
@remove-tag="handleTagRemove(item)" @remove-tag="handleTagRemove(item)"
@clear="handleClear(item)"
:loading="loading" :loading="loading"
class="m-2 select" class="m-2 select"
remote-show-suffix remote-show-suffix
@@ -177,7 +183,15 @@
</template> </template>
<script setup lang="ts" name="SearchForm"> <script setup lang="ts" name="SearchForm">
import { verificationInput } from "./components/utils/verificationInput"; import { verificationInput } from "./components/utils/verificationInput";
import { getSupplierApi, getCustomersApi, getProductLinesApi } from "@/api/modules/global"; import {
getSupplierApi,
getCustomersApi,
getProductLinesApi,
getWarehousesKingdeeListApi,
getSubwarehouseskingdeeListApi
} from "@/api/modules/global";
// // getWarehousesKingdeeListApi getSubwarehouseskingdeeListApi getWarehousesJushuitanListApi getWarehousesLingXingListApi
// import { getWarehousesKingdeeListApi, getSubwarehouseskingdeeListApi } from "@/api/modules/setWarehouse";
const props = defineProps<{ const props = defineProps<{
formData: any[]; formData: any[];
searchParams: Record<string, any>; searchParams: Record<string, any>;
@@ -192,7 +206,7 @@ const emits = defineEmits<{
let loading = ref(false); let loading = ref(false);
const remoteRef = ref(null); const remoteRef = ref(null);
const _searchParams = computed(() => { const _searchParams: any = computed(() => {
return props.searchParams; return props.searchParams;
}); });
@@ -259,10 +273,59 @@ const getProductLines = async (keywords: any, item: any) => {
} }
} }
}; };
//金蝶仓库
const getSetWarehouseKingdeeList = async (keywords: any, item: any) => {
const useOrgNumber: any[] = _searchParams?.value?.use_org_number;
if (Array.isArray(useOrgNumber) && useOrgNumber?.length > 0) {
item.options = [];
let use_org_number = "";
use_org_number = _searchParams.value.use_org_number.join(",");
const result = await getWarehousesKingdeeListApi({
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) => {
const kdWarehouseNumber: any[] = _searchParams?.value?.kd_warehouse_number;
if (Array.isArray(kdWarehouseNumber) && kdWarehouseNumber?.length > 0) {
//先清空一下
item.options = [];
let kd_warehouse_number = "";
kd_warehouse_number = _searchParams.value.kd_warehouse_number.join(",");
const result = await getSubwarehouseskingdeeListApi({
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) => { const handleSelectMultipleRemote = async (query: any, item: any) => {
console.log(remoteRef.value, "==========remoteRef=========");
loading.value = true; loading.value = true;
if (!query) { if (!query) {
loading.value = false; loading.value = false;
@@ -281,8 +344,11 @@ const handleSelectMultipleRemote = async (query: any, item: any) => {
getCustomers(valClone, item); getCustomers(valClone, item);
} else if (item.type === "selectProductLinesRemote") { } else if (item.type === "selectProductLinesRemote") {
//品线 //品线
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;
}; };
@@ -290,9 +356,15 @@ const handleTagRemove = (item: any) => {
if (!_searchParams.value[item.prop].length) { if (!_searchParams.value[item.prop].length) {
item.options = []; item.options = [];
} }
const { prop } = item;
if (prop === "kd_warehouse_number" || prop === "kd_subwarehouse_number") {
emits("selectMultipleRemoveTag", { item, org_number: _searchParams.value[prop] });
}
}; };
const handleTagRemove1 = (item: any) => { 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) => { const remoteMethod = async (query: any, item: any) => {

View File

@@ -63,6 +63,20 @@ export const useTable = (
state.totalParam.subscriber_name = state.totalParam?.subscriber_name.replace(/[,]/g, ","); state.totalParam.subscriber_name = state.totalParam?.subscriber_name.replace(/[,]/g, ",");
} }
} }
if (routeName === "foundationSetWarehouse") {
//组织
if (Array.isArray(state.totalParam?.use_org_number) && state.totalParam?.use_org_number?.length) {
state.totalParam.use_org_number = state.totalParam.use_org_number.join(",");
}
//金蝶仓库
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(",");
}
//金蝶子仓库
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(",");
}
}
}; };
//删除临时参数和空值参数 //删除临时参数和空值参数

View File

@@ -41,7 +41,13 @@ const breadcrumbList = computed(() => {
item.meta.title = route.query.title; item.meta.title = route.query.title;
} }
}); });
console.log(""); }
if (route.query.title === "新增仓位找货优先级" || "编辑仓位找货优先级") {
breadcrumbData.forEach((item: any) => {
if (item.name === "foundationSetGoodsAdd") {
item.meta.title = route.query.title;
}
});
} }
return breadcrumbData; return breadcrumbData;

View File

@@ -41,7 +41,8 @@ router.beforeEach(async (to, from, next) => {
const currentPath = window.location.pathname; const currentPath = window.location.pathname;
// 2.动态设置标题 // 2.动态设置标题
const title = import.meta.env.VITE_GLOB_APP_TITLE; const title = import.meta.env.VITE_GLOB_APP_TITLE;
document.title = to.meta.title ? `${to.meta.title} - ${title}` : title; // to.meta.title ? `${to.meta.title} - ${title}` :
document.title = title;
// 3.判断是访问登陆页,有 Token 就在当前页面,没有 Token 重置路由到登陆页 // 3.判断是访问登陆页,有 Token 就在当前页面,没有 Token 重置路由到登陆页
if (to.path.toLocaleLowerCase() === LOGIN_URL) { if (to.path.toLocaleLowerCase() === LOGIN_URL) {
if (userStore.newUserToken) return next(from.fullPath); if (userStore.newUserToken) return next(from.fullPath);

View File

@@ -13,6 +13,7 @@
:labelWidth="dataStore.labelWidth" :labelWidth="dataStore.labelWidth"
:inline="true" :inline="true"
ref="detailsRef" ref="detailsRef"
@selectChange="handleChange"
/> />
</div> </div>
</div> </div>
@@ -24,19 +25,140 @@ import { cloneDeep } from "lodash-es";
import { DETAILS_FORM_DATA, DETAILS_RULE_FORM } from "./constant/list/add"; import { DETAILS_FORM_DATA, DETAILS_RULE_FORM } from "./constant/list/add";
import DetailsSearch from "@/components/DetailsSearch/index.vue"; import DetailsSearch from "@/components/DetailsSearch/index.vue";
import PermissionButton from "@/components/PermissionButton/index.vue"; import PermissionButton from "@/components/PermissionButton/index.vue";
import { useUserStore } from "@/stores/modules/user";
import $Bus from "@/utils/mittBus";
import { getGoodsAddApi, getGoodsUpApi, getGoodsDetailsApi, getGoodsCheckExistswApi } from "@/api/modules/setGoods";
import { getWarehousesListApi } from "@/api/modules/global";
import { useMsg } from "@/hooks/useMsg";
const userStore = useUserStore();
const route = useRoute();
const $router = useRouter();
// 数据源 // 数据源
const dataStore = reactive<any>({ const dataStore = reactive<any>({
buttons: cloneDeep(BUTTON), buttons: cloneDeep(BUTTON),
labelWidth: "120px", labelWidth: "120px",
formData: cloneDeep(DETAILS_FORM_DATA), formData: cloneDeep(DETAILS_FORM_DATA),
ruleForm: cloneDeep(DETAILS_RULE_FORM) ruleForm: cloneDeep(DETAILS_RULE_FORM),
id: null,
title: ""
}); });
// 详情表单实例 // 详情表单实例
const detailsRef = ref(null); const detailsRef = ref(null);
//初始化组织数据
const init = () => {
if (userStore.orgIdArr.length) {
dataStore.formData[0].options = userStore?.orgIdArr;
}
};
init();
//新增
const handleAdd = async () => {
const result = await getGoodsAddApi(dataStore.ruleForm);
if (result?.code === 0) {
useMsg("success", "新增成功 ");
dataStore.id = result?.data?.id;
$Bus.emit("setGoodsResetList");
}
};
//更新
const getGoodsUp = async () => {
const result = await getGoodsUpApi(dataStore.id, dataStore.ruleForm);
if (result?.code === 0) {
useMsg("success", "更新成功 ");
$Bus.emit("setGoodsResetList");
}
};
//详情
const getGoodsDetails = async () => {
dataStore.id = route.query.id;
if (!dataStore.id) {
return;
}
//getGoodsDetailsApi
const result = await getGoodsDetailsApi(dataStore.id);
if (result?.code === 0) {
dataStore.ruleForm = result?.data;
}
};
getGoodsDetails();
//验证
const getGoodsCheckExistsw = async () => {
const result = await getGoodsCheckExistswApi({
use_org_number: dataStore.ruleForm.use_org_number,
warehouse_number: dataStore.ruleForm.warehouse_number
});
if (result?.code === 0 && result?.data?.exists) {
useMsg("error", "仓库已存在数据, 无需再次新增 ");
}
};
// 按钮点击事件 // 按钮点击事件
const handleButtonClickCallback = () => {}; const handleButtonClickCallback = (item: any) => {
const { type } = item;
dataStore.title = route.query.title;
if (type === "save") {
if (!dataStore.ruleForm.use_org_number) {
return useMsg("warning", "组织不能为空 !");
}
if (!dataStore.ruleForm.warehouse_number) {
return useMsg("warning", "仓库不能为空 !");
}
if (!dataStore.ruleForm.pos_picking_priority) {
return useMsg("warning", "仓位不能为空 !");
}
dataStore.title === "新增仓位找货优先级" ? handleAdd() : getGoodsUp();
}
if (type === "preview") {
if (!dataStore.id) {
useMsg("warning", "请先保存数据 !");
}
$router.push({
path: "/foundation/set/goods/preview",
query: { id: dataStore.id, name: dataStore.title }
});
}
if (type === "return") {
$router.push({
path: "/foundation/set/goods/index"
});
}
};
//仓库列表 /foundation/set/goods/preview
const getWarehousesList = async () => {
const result = await getWarehousesListApi({ use_org_number: dataStore.ruleForm.use_org_number });
if (result?.code === 0) {
const { data } = result;
if (data?.length) {
let options: any = [];
data.forEach((item: any) => {
options.push({
id: item.id,
value: item.warehouse_number,
label: item.warehouse_name
});
});
dataStore.formData[1].options = options;
}
}
};
const handleChange = (item: any) => {
console.log(item);
getGoodsCheckExistsw();
};
//监听当前组织
watch(
() => dataStore.ruleForm.use_org_number,
(newVal: any) => {
if (newVal) {
getWarehousesList();
}
},
{
deep: true,
immediate: true
}
);
</script> </script>
<style scoped></style> <style scoped></style>

View File

@@ -1,6 +1,15 @@
export const DETAILS_FORM_DATA: any[] = [ export const DETAILS_FORM_DATA: any[] = [
{ {
prop: "org_number", prop: "use_org_number",
placeholder: "请选择",
type: "select",
label: "组织:",
disabled: false,
required: true,
class: "form-item1"
},
{
prop: "warehouse_number",
placeholder: "请选择", placeholder: "请选择",
type: "select", type: "select",
label: "仓库:", label: "仓库:",
@@ -9,7 +18,7 @@ export const DETAILS_FORM_DATA: any[] = [
class: "form-item1" class: "form-item1"
}, },
{ {
prop: "org_number", prop: "pos_picking_priority",
placeholder: "请输入", placeholder: "请输入",
type: "textarea", type: "textarea",
label: "仓位:", label: "仓位:",
@@ -19,4 +28,6 @@ export const DETAILS_FORM_DATA: any[] = [
maxLength: 5000 maxLength: 5000
} }
]; ];
export const DETAILS_RULE_FORM: any = {}; export const DETAILS_RULE_FORM: any = {
use_org_number: "101"
};

View File

@@ -11,5 +11,10 @@ export const BUTTON = [
text: "预览(请先保存)", text: "预览(请先保存)",
permission: "foundationSetGoodsAddBtnPreview", permission: "foundationSetGoodsAddBtnPreview",
type: "preview" type: "preview"
},
{
text: "返回",
permission: "foundationSetGoodsAddBtnRreturn",
type: "return"
} }
]; ];

View File

@@ -17,10 +17,11 @@ interface FormItem {
} }
export const FORM_DATA: FormItem[] = [ export const FORM_DATA: FormItem[] = [
{ {
prop: "org_number", prop: "warehouse_number",
placeholder: "请输入仓库", placeholder: "请输入仓库",
type: "input", type: "select",
label: "仓库: " label: "仓库: ",
options: []
} }
]; ];

View File

@@ -4,38 +4,30 @@ export const COLUMNS = [
{ {
align: "left", align: "left",
fixed: true, fixed: true,
label: "金蝶仓库", label: "仓库名称",
prop: "material_number", prop: "warehouse_name"
width: 200
}, },
{ {
align: "left", align: "left",
label: "金蝶子仓库",
prop: "sku",
fixed: true, fixed: true,
width: 200 label: "组织",
prop: "use_org_name"
}, },
{ {
align: "left", align: "left",
label: "对应聚水潭仓库", label: "仓库优先级",
prop: "material_name", prop: "pos_picking_priority"
width: 200
},
{
align: "left",
label: "对应领星仓库",
prop: "org_name",
width: 200
}, },
{ {
align: "left", align: "left",
label: "更新人", label: "更新人",
prop: "product_line" prop: "operator_name"
}, },
{ {
align: "left", align: "left",
label: "更新时间", label: "更新时间",
prop: "bar_code" prop: "updated_at"
} }
]; ];

View File

@@ -11,7 +11,7 @@
<ProTable <ProTable
ref="proTableRef" ref="proTableRef"
:columns="dataStore.columns" :columns="dataStore.columns"
:request-api="getMaterialListApi" :request-api="getGoodsListApi"
:init-param="dataStore.initParam" :init-param="dataStore.initParam"
@selectionChange="selectionChange" @selectionChange="selectionChange"
> >
@@ -23,6 +23,11 @@
:formData="dataStore.formData" :formData="dataStore.formData"
/> />
</template> </template>
<template #warehouse_name="scope">
<a @click="handleOpen(scope.row)" class="break-word to-details">
{{ scope.row.warehouse_name }}
</a>
</template>
</ProTable> </ProTable>
</div> </div>
</template> </template>
@@ -31,7 +36,9 @@
import ProTable from "@/components/ProTable/index.vue"; import ProTable from "@/components/ProTable/index.vue";
import SearchForm from "@/components/SearchForm/index.vue"; import SearchForm from "@/components/SearchForm/index.vue";
import PermissionButton from "@/components/PermissionButton/index.vue"; import PermissionButton from "@/components/PermissionButton/index.vue";
import { getMaterialListApi } from "@/api/modules/foundationMaterial"; import { getGoodsListApi } from "@/api/modules/setGoods";
import { useUserStore } from "@/stores/modules/user";
import $Bus from "@/utils/mittBus";
// import { useMsg } from "@/hooks/useMsg"; // import { useMsg } from "@/hooks/useMsg";
import { RULE_FORM, FORM_DATA, COLUMNS, BUTTON } from "./constant/list/index"; import { RULE_FORM, FORM_DATA, COLUMNS, BUTTON } from "./constant/list/index";
@@ -53,7 +60,13 @@ const dataStore = reactive<any>({
dialogVisible: false, //弹窗 dialogVisible: false, //弹窗
selectionList: [] //选中表格的行 selectionList: [] //选中表格的行
}); });
const userStore = useUserStore();
const router = useRouter();
const init = () => {
//仓库赋值
dataStore.formData[0].options = userStore.warehouse;
};
init();
// 表格选择事件 // 表格选择事件
const selectionChange = (selection: any) => { const selectionChange = (selection: any) => {
dataStore.selectionList = selection; dataStore.selectionList = selection;
@@ -62,9 +75,15 @@ const selectionChange = (selection: any) => {
// 顶部按钮点击事件 // 顶部按钮点击事件
const handleButtonClickCallback = (item: any) => { const handleButtonClickCallback = (item: any) => {
console.log(item); console.log(item);
$router.push({ path: "/foundation/set/goods/add" }); $router.push({ path: "/foundation/set/goods/add", query: { title: "新增仓位找货优先级" } });
};
//跳转详情
const handleOpen = (row: any) => {
router.push({
path: "/foundation/set/goods/add",
query: { id: row.id, title: "编辑仓位找货优先级" }
});
}; };
// 搜索 // 搜索
const handleSearch = async (params: any) => { const handleSearch = async (params: any) => {
dataStore.initParam = cloneDeep(params); dataStore.initParam = cloneDeep(params);
@@ -82,6 +101,13 @@ const handleReset = () => {
proTableRef?.value!.getTableList(); proTableRef?.value!.getTableList();
}); });
}; };
onMounted(() => {
$Bus.on("setGoodsResetList", () => {
nextTick(() => {
proTableRef?.value!.getTableList();
});
});
});
</script> </script>
<style scope lang="scss"> <style scope lang="scss">

View File

@@ -0,0 +1,47 @@
<template>
<div class="table-box">
<div>
<div style="padding-bottom: 16px">
<el-button type="primary" @click="handleBlack">返回</el-button>
</div>
</div>
<div class="table-box card">
<div style="display: flex">
<el-table :data="dataStore.tableData" border style="width: 70%">
<el-table-column type="index" :index="indexMethod" label="序号" width="100" />
<el-table-column prop="position" label="仓位" />
<el-table-column prop="priority_item" label="匹配项" />
</el-table>
</div>
</div>
</div>
</template>
<script setup lang="ts" name="foundationSetGoodsPreview">
import { getGoodsPreviewApi } from "@/api/modules/setGoods";
const $router = useRouter();
const route = useRoute();
const dataStore = reactive<any>({
tableData: []
});
const indexMethod = (index: number) => {
return index + 1;
};
//预览
const getGoodsPreview = async () => {
const result = await getGoodsPreviewApi(route.query.id);
if (result?.code === 0) {
dataStore.tableData = result?.data ? result?.data : [];
console.log(result?.data);
}
};
getGoodsPreview();
const handleBlack = () => {
$router.push({
path: "/foundation/set/goods/add",
query: { id: route.query.id, title: route.query.name }
});
};
</script>
<style scoped></style>

View File

@@ -66,7 +66,6 @@ const selectionChange = (selection: any) => {
}; };
const handleButtonClickCallback = (item: any) => { const handleButtonClickCallback = (item: any) => {
const { type } = item; const { type } = item;
btnClick[type]({ btnClick[type]({
selectionList: dataStore.selectionList, selectionList: dataStore.selectionList,
proTableRef, proTableRef,

View File

@@ -159,7 +159,7 @@ const getShopAccessSystem = async () => {
const result = await getShopAccessSystemApi(); const result = await getShopAccessSystemApi();
if (result?.code === 0) { if (result?.code === 0) {
let data = cloneDeep(result?.data); let data = cloneDeep(result?.data);
let options = []; let options: any = [];
data?.length && data?.length &&
data.forEach((item: any) => { data.forEach((item: any) => {

View File

@@ -2,47 +2,59 @@ export const DETAILS_FORM_DATA: any[] = [
{ {
prop: "use_org_number", prop: "use_org_number",
placeholder: "请输入", placeholder: "请输入",
type: "select", type: "selectMultipleD",
label: "组织:", label: "组织:",
disabled: false, disabled: false,
required: true, required: true,
class: "form-item1" class: "form-item1",
options: []
}, },
{ {
prop: "kd_warehouse_number", prop: "kd_warehouse_number",
placeholder: "请输入", placeholder: "请选择",
type: "select", type: "selectMultipleD",
label: "金蝶仓库:", label: "金蝶仓库:",
disabled: false, disabled: false,
required: true, required: true,
class: "form-item1" class: "form-item1",
options: []
}, },
{ {
prop: "kd_subwarehouse ", prop: "kd_subwarehouse_number",
placeholder: "请选择", placeholder: "请选择",
type: "selectMultiples", type: "selectMultiples",
label: "金蝶子仓库:", label: "金蝶子仓库:",
disabled: false, disabled: false,
required: true, class: "form-item1",
class: "form-item1" options: []
}, },
{ {
prop: "jst_warehouse_number", prop: "jst_warehouse_number",
placeholder: "请输入", placeholder: "请选择",
type: "select", type: "select",
label: "对应聚水潭仓库:", label: "对应聚水潭仓库:",
disabled: false, disabled: false,
required: true, class: "form-item1",
options: []
class: "form-item1"
}, },
{ {
prop: "lx_warehouse_number", prop: "lx_warehouse_number",
placeholder: "请输入", placeholder: "请选择",
type: "select", type: "select",
label: "对应领星仓库:", label: "对应领星仓库:",
disabled: false, disabled: false,
required: true, class: "form-item1",
options: []
},
{
//textarea
prop: "remark",
placeholder: "请输入",
type: "textarea",
label: "备注:",
disabled: false,
maxLength: 5000,
class: "form-item1" class: "form-item1"
} }
]; ];

View File

@@ -26,17 +26,20 @@ export const FORM_DATA: FormItem[] = [
{ {
prop: "kd_warehouse_number", prop: "kd_warehouse_number",
placeholder: "请输入金蝶仓库", placeholder: "请输入金蝶仓库",
type: "input", type: "selectRemoteKD",
label: "金蝶仓库: " label: "金蝶仓库: ",
options: []
}, },
{ {
prop: "kd_subwarehouse", prop: "kd_subwarehouse_number",
placeholder: "请输入金蝶子仓库", placeholder: "请输入金蝶子仓库",
type: "input", type: "selectRemoteKDSubwarehouse",
label: "金蝶子仓库: " label: "金蝶子仓库: ",
options: []
}, },
{ {
prop: "operator_name", prop: "operator",
placeholder: "请输入更新人", placeholder: "请输入更新人",
type: "input", type: "input",
label: "更新人: " label: "更新人: "

View File

@@ -1,48 +1,64 @@
// import { RenderScope } from "@/components/ProTable/interface"; import { RenderScope } from "@/components/ProTable/interface";
export const COLUMNS = [ export const COLUMNS = [
{ type: "selection", fixed: "left", width: 40 }, { type: "selection", fixed: "left", width: 40 },
{ {
align: "left", align: "left",
fixed: true, fixed: true,
label: "金蝶仓库", label: "金蝶仓库",
prop: "material_number", prop: "kd_warehouse_name",
width: 200 width: 200
}, },
{ {
align: "left", align: "left",
fixed: true, fixed: true,
label: "组织", label: "组织",
prop: "use_org_number", prop: "use_org_name",
width: 200 width: 200
}, },
{ {
align: "left", align: "left",
label: "金蝶子仓库", label: "金蝶子仓库",
prop: "sku", prop: "kd_subwarehouse_number",
width: 400,
fixed: true, fixed: true,
width: 200 render: (scope: RenderScope<any>): VNode | string | any => {
let arr: any = [];
if (Array.isArray(scope.row.kd_subwarehouse) && scope.row.kd_subwarehouse.length) {
scope.row.kd_subwarehouse?.forEach((item: any) => {
arr.push(item.subwarehouse_name);
});
}
return Array.isArray(arr) && arr.length ? arr.join(",") : "--";
}
}, },
{ {
align: "left", align: "left",
label: "对应聚水潭仓库", label: "对应聚水潭仓库",
prop: "material_name", prop: "jst_warehouse_name",
width: 200 width: 200
}, },
{ {
align: "left", align: "left",
label: "对应领星仓库", label: "对应领星仓库",
prop: "org_name", prop: "lx_warehouse_name",
width: 200
},
{
align: "left",
label: "备注",
prop: "remark",
width: 200 width: 200
}, },
{ {
align: "left", align: "left",
label: "更新人", label: "更新人",
prop: "product_line" prop: "operator"
}, },
{ {
align: "left", align: "left",
label: "更新时间", label: "更新时间",
prop: "bar_code" prop: "updated_at",
width: 200
} }
]; ];

View File

@@ -14,6 +14,7 @@
:labelWidth="dataStore.labelWidth" :labelWidth="dataStore.labelWidth"
:inline="true" :inline="true"
:isSearch="true" :isSearch="true"
@selectMultipleDClear="handleSelectMultipleDClear"
ref="detailsRef" ref="detailsRef"
/> />
<template #footer> <template #footer>
@@ -26,7 +27,7 @@
<ProTable <ProTable
ref="proTableRef" ref="proTableRef"
:columns="dataStore.columns" :columns="dataStore.columns"
:request-api="getShopListApi" :request-api="getSetWarehouseListApi"
:init-param="dataStore.initParam" :init-param="dataStore.initParam"
@selectionChange="selectionChange" @selectionChange="selectionChange"
> >
@@ -36,24 +37,39 @@
@reset="handleReset" @reset="handleReset"
:searchParams="dataStore.initParam" :searchParams="dataStore.initParam"
:formData="dataStore.formData" :formData="dataStore.formData"
@selectMultipleRemoveTag="handleSelectMultipleRemoveTag"
/> />
</template> </template>
<template #platform_store_name="scope">
<template #kd_warehouse_name="scope">
<a @click="handleOpen(scope.row)" class="break-word to-details"> <a @click="handleOpen(scope.row)" class="break-word to-details">
{{ scope.row.platform_store_name }} {{ scope.row.kd_warehouse_name }}
</a> </a>
</template> </template>
</ProTable> </ProTable>
</div> </div>
</template> </template>
<script setup lang="ts" name="foundationSetShop"> <script setup lang="ts" name="foundationSetWarehouse">
import ProTable from "@/components/ProTable/index.vue"; import ProTable from "@/components/ProTable/index.vue";
import SearchForm from "@/components/SearchForm/index.vue"; import SearchForm from "@/components/SearchForm/index.vue";
import PermissionButton from "@/components/PermissionButton/index.vue"; import PermissionButton from "@/components/PermissionButton/index.vue";
import { getShopListApi } from "@/api/modules/shop";
import { useUserStore } from "@/stores/modules/user"; import { useUserStore } from "@/stores/modules/user";
import { getWarehouseDelApi, getWarehouseAddApi, getWarehouseUpApi } from "@/api/modules/setWarehouse"; import {
getSetWarehouseListApi,
getWarehouseDelApi,
getWarehouseAddApi,
getWarehouseUpApi,
getWarehouseDetailsApi
} from "@/api/modules/setWarehouse";
import {
getWarehousesKingdeeListApi,
getSubwarehouseskingdeeListApi,
getWarehousesJushuitanListApi,
getWarehousesLingXingListApi
} from "@/api/modules/global";
import { useMsg } from "@/hooks/useMsg"; import { useMsg } from "@/hooks/useMsg";
import { RULE_FORM, FORM_DATA, COLUMNS, BUTTON } from "./constant/list/index"; import { RULE_FORM, FORM_DATA, COLUMNS, BUTTON } from "./constant/list/index";
import { DETAILS_RULE_FORM, DETAILS_FORM_DATA } from "./constant/list/details"; import { DETAILS_RULE_FORM, DETAILS_FORM_DATA } from "./constant/list/details";
@@ -117,8 +133,8 @@ const handleDel = () => {
} }
}; };
// 新增 // 新增
const getWarehouseAdd = async () => { const getWarehouseAdd = async (params: any) => {
const result = await getWarehouseAddApi(dataStore.detailsRuleForm); const result = await getWarehouseAddApi(params);
if (result?.code === 0) { if (result?.code === 0) {
useMsg("success", "新增成功 "); useMsg("success", "新增成功 ");
setTimeout(() => { setTimeout(() => {
@@ -128,8 +144,8 @@ const getWarehouseAdd = async () => {
} }
}; };
// 更新 // 更新
const getWarehouseUp = async () => { const getWarehouseUp = async (params: any) => {
const result = await getWarehouseUpApi(dataStore.rowId, dataStore.detailsRuleForm); const result = await getWarehouseUpApi(dataStore.rowId, params);
if (result?.code === 0) { if (result?.code === 0) {
useMsg("success", "更新成功 "); useMsg("success", "更新成功 ");
setTimeout(() => { setTimeout(() => {
@@ -139,37 +155,104 @@ const getWarehouseUp = async () => {
} }
}; };
// 详情 // 详情
const getShopDetails = async (id: any) => { const getWarehouseDetails = async (id: any) => {
const result = await getShopDetailsApi(id); const result = await getWarehouseDetailsApi(id);
if (result?.code === 0) { if (result?.code === 0) {
dataStore.dialogVisible = true; dataStore.dialogVisible = true;
dataStore.title = "编辑金蝶子仓与各系统仓库关系"; dataStore.title = "编辑金蝶子仓与各系统仓库关系";
setAccessSystem(result?.data?.access_system);
dataStore.detailsRuleForm = result?.data; dataStore.detailsRuleForm = result?.data;
//临时变量存储金蝶和金蝶子仓库
let kd_warehouse_number = dataStore?.detailsRuleForm?.kd_warehouse_number;
let kd_subwarehouse = dataStore?.detailsRuleForm?.kd_subwarehouse;
//判断金蝶仓库和金蝶子仓库是否存在
if (kd_warehouse_number && Array.isArray(kd_subwarehouse) && kd_subwarehouse.length) {
let kd_subwarehouse_number: any[] = [];
dataStore?.detailsRuleForm?.kd_subwarehouse?.forEach((item: any) => {
kd_subwarehouse_number.push(item.subwarehouse_number);
});
nextTick(() => {
dataStore.detailsRuleForm.kd_subwarehouse_number = kd_subwarehouse_number;
});
}
}
};
//获取金蝶仓库
const getSetWarehouseKingdeeList = async () => {
dataStore.detailsFormData[1].options = [];
const result = await getWarehousesKingdeeListApi({ use_org_number: dataStore.detailsRuleForm.use_org_number });
if (result?.code === 0) {
let options: any = [];
result?.data?.forEach((item: any) => {
options.push({
label: item.warehouse_name,
value: item.warehouse_number
});
});
dataStore.detailsFormData[1].options = options;
}
};
//获取金蝶子仓库
const getSetWarehouseSubwarehousesList = async () => {
//先清空一下
dataStore.detailsFormData[2].options = [];
const result = await getSubwarehouseskingdeeListApi({
warehouse_number: dataStore.detailsRuleForm.kd_warehouse_number
});
if (result?.code === 0) {
let options: any = [];
result?.data?.forEach((item: any) => {
options.push({
label: item.sub_warehouse_name,
value: item.sub_warehouse_number
});
});
dataStore.detailsFormData[2].options = options;
}
};
//获取领星仓库
const getSetWarehouseSubwarehousesLingXingList = async () => {
const result = await getWarehousesLingXingListApi();
if (result?.code === 0) {
let options: any = [];
result?.data?.forEach((item: any) => {
options.push({
label: item.warehouse_name,
value: item.warehouse_number + ""
});
});
dataStore.detailsFormData[4].options = options;
}
};
//获取聚水潭仓库
const getSetWarehouseSubwarehousesJushuitanList = async () => {
const result = await getWarehousesJushuitanListApi();
if (result?.code === 0) {
let options: any = [];
result?.data?.forEach((item: any) => {
options.push({
label: item.warehouse_name,
value: item.warehouse_number + ""
});
});
dataStore.detailsFormData[3].options = options;
} }
}; };
// 表格row点击事件 // 表格row点击事件
const handleOpen = (row: any) => { const handleOpen = (row: any) => {
dataStore.rowId = row.id; dataStore.rowId = row.id;
getShopDetails(row.id); getWarehouseDetails(row.id);
}; };
// 导出
const handleExport = async () => {
const result = await getShopListExportApi(dataStore.initParam);
if (result?.code === 0) {
useMsg("success", "导出成功请前往导出列表中进行下载 ");
}
};
// 顶部按钮点击事件 // 顶部按钮点击事件
const handleButtonClickCallback = (item: any) => { const handleButtonClickCallback = (item: any) => {
const { type } = item; const { type } = item;
if (type === "del") { if (type === "del") {
return handleDel(); handleDel();
}
if (type === "export") {
return handleExport();
} }
// if (type === "export") {
// handleExport();
// }
if (type === "add") { if (type === "add") {
dataStore.title = "新增金蝶子仓与各系统仓库关系"; dataStore.title = "新增金蝶子仓与各系统仓库关系";
dataStore.dialogVisible = true; dataStore.dialogVisible = true;
@@ -184,25 +267,25 @@ const handleClose = () => {
// 弹窗确认 // 弹窗确认
const handleCommit = () => { const handleCommit = () => {
if (!dataStore.detailsRuleForm.use_org_number) { let params = cloneDeep(dataStore.detailsRuleForm);
if (!params.use_org_number) {
return useMsg("warning", "组织不能为空 !"); return useMsg("warning", "组织不能为空 !");
} }
if (!dataStore.detailsRuleForm.kd_warehouse_number) { if (!params.kd_warehouse_number) {
return useMsg("warning", "金蝶仓库不能为空 !"); return useMsg("warning", "金蝶仓库不能为空 !");
} }
if (!dataStore.detailsRuleForm.kd_subwarehouse) { //将金蝶子仓库转换为字符串
return useMsg("warning", "金蝶子仓库不能为空 !"); let kd_subwarehouse_number = params.kd_subwarehouse_number;
} if (Array.isArray(kd_subwarehouse_number) && kd_subwarehouse_number.length) {
if (!dataStore.detailsRuleForm.jst_warehouse_number) { params.kd_subwarehouse_number = kd_subwarehouse_number.join(",");
return useMsg("warning", "对应聚水潭仓库不能为空 !");
}
if (!dataStore.detailsRuleForm.lx_warehouse_number) {
return useMsg("warning", "对应对应领星仓库不能为空 !");
}
if (dataStore.title === "新增金蝶子仓与各系统仓库关系") {
getWarehouseAdd();
} else { } else {
getWarehouseUp(); delete params.kd_subwarehouse_number;
}
if (dataStore.title === "新增金蝶子仓与各系统仓库关系") {
getWarehouseAdd(params);
} else {
getWarehouseUp(params);
} }
}; };
// 搜索 // 搜索
@@ -221,6 +304,138 @@ const handleReset = () => {
proTableRef?.value!.getTableList(); proTableRef?.value!.getTableList();
}); });
}; };
//监听组织和金蝶仓库清空按钮(会触发下面的watch)
const handleSelectMultipleDClear = (params: any) => {
const {
item: { prop }
} = params;
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(
() => dataStore.dialogVisible,
(newVal: any) => {
if (newVal) {
//金蝶倉庫
getSetWarehouseKingdeeList();
//领星仓库
getSetWarehouseSubwarehousesLingXingList();
//聚水潭仓库
getSetWarehouseSubwarehousesJushuitanList();
}
},
{
deep: true
}
);
//监听组织值改变(值改变关联关系需重置)
watch(
() => dataStore.detailsRuleForm.use_org_number,
(newVal: any) => {
if (newVal) {
dataStore.detailsRuleForm.kd_warehouse_number = "";
dataStore.detailsRuleForm.kd_subwarehouse_number = "";
getSetWarehouseKingdeeList();
} else {
dataStore.detailsRuleForm.kd_warehouse_number = "";
dataStore.detailsRuleForm.kd_subwarehouse_number = "";
dataStore.detailsFormData[1].options = [];
dataStore.detailsFormData[2].options = [];
}
}
);
//监听金蝶仓库值改变(值改变关联关系需重置)
watch(
() => dataStore.detailsRuleForm.kd_warehouse_number,
(newVal: any) => {
if (newVal) {
dataStore.detailsRuleForm.kd_subwarehouse_number = "";
getSetWarehouseSubwarehousesList();
} else {
dataStore.detailsRuleForm.kd_subwarehouse_number = "";
dataStore.detailsFormData[2].options = [];
}
}
);
</script> </script>
<style scope lang="scss"> <style scope lang="scss">

View File

@@ -6,11 +6,11 @@
<script setup lang="ts" name="home"> <script setup lang="ts" name="home">
//登录请求接口 //登录请求接口
// import { getOrgsApi, getWarehousesListApi } from "@/api/modules/global"; import { getWarehousesListApi } from "@/api/modules/global";
import { useRoute, useRouter } from "vue-router"; import { useRoute, useRouter } from "vue-router";
//用户信息存储 //用户信息存储
// import { useUserStore } from "@/stores/modules/user"; import { useUserStore } from "@/stores/modules/user";
// const userStore = useUserStore(); const userStore = useUserStore();
//路由; //路由;
const $route = useRoute(); const $route = useRoute();
const $router = useRouter(); const $router = useRouter();
@@ -33,24 +33,24 @@ const $router = useRouter();
// } // }
// }; // };
// getOrgs(); // getOrgs();
// const getWarehousesList = async () => { const getWarehousesList = async () => {
// const result = await getWarehousesListApi(); const result = await getWarehousesListApi();
// if (result?.code === 0) { if (result?.code === 0) {
// const { data } = result; const { data } = result;
// if (data?.length) { if (data?.length) {
// let options: any = []; let options: any = [];
// data.forEach((item: any) => { data.forEach((item: any) => {
// options.push({ options.push({
// id: item.id, id: item.id,
// value: item.warehouse_name, value: item.warehouse_number,
// label: item.warehouse_name label: item.warehouse_name
// }); });
// }); });
// userStore.setWarehouse(options); userStore.setWarehouse(options);
// } }
// } }
// }; };
// getWarehousesList(); getWarehousesList();
const init = () => { const init = () => {
let redirect_path: any = $route.query.redirect_path; let redirect_path: any = $route.query.redirect_path;

View File

@@ -39,7 +39,7 @@ const getOrgs = async () => {
}; };
const getWarehousesList = async () => { const getWarehousesList = async () => {
const result = await getWarehousesListApi(); const result = await getWarehousesListApi({});
if (result?.code === 0) { if (result?.code === 0) {
const { data } = result; const { data } = result;
if (data?.length) { if (data?.length) {

File diff suppressed because one or more lines are too long