Compare commits

3 Commits

Author SHA1 Message Date
107bd1a933 feat: 🚀 仓库关系 2025-11-07 09:46:06 +08:00
1208835216 feat: 🚀 店铺资料接口联调 2025-10-30 13:58:56 +08:00
da31b2d347 feat: 🚀 修复bug 2025-10-29 15:03:16 +08:00
28 changed files with 1691 additions and 326 deletions

View File

@@ -1,25 +0,0 @@
import http from "@/api";
import { ResPage } from "@/api/interface/index";
/**
* @name 防伪码模块
*/
//防伪码记录列表
export const getListApi = (params: Record<string, any>) => {
return http.post<ResPage<any>>(`SecurityNumber/GetGenerateRecordList`, params);
};
//生成防伪码
export const getGenerateSecurityNumberApi = (params: Record<string, any>) => {
return http.post<ResPage<any>>(`SecurityNumber/Generate`, params);
};
//防伪码下载列表 getDownListApi
export const getDownListApi = (params: Record<string, any>) => {
return http.post<ResPage<any>>(`SecurityNumber/GetList`, params);
};
//下载
export const getDownAllApi = (params: Record<string, any>) => {
return http.post<ResPage<any>>(`SecurityNumber/Export`, params);
};
//选择下载
export const getDownApi = (params: Record<string, any>) => {
return http.post<ResPage<any>>(`SecurityNumber/Export`, params);
};

View File

@@ -1,110 +0,0 @@
import http from "@/api";
import { ResPage } from "@/api/interface/index";
/**
* @name 打印产品条码模块
*/
//产品条码生成记录列表
export const getListApi = (params: Record<string, any>) => {
// console.log(params);
// return {
// isSuccess: true,
// message: "Success",
// status: 200,
// totalCount: 1,
// data: [
// {
// id: 17372,
// specifications: "ORICO-H7013-U3-AD-EU-BK-BP",
// materialNumber: "G01-43-552867",
// materialName: "7口USB3.0集线器",
// barCode: "6936761881968",
// purchaseBillNo: "ceshi1224",
// generateComplete: "已完成",
// number: 300,
// printNumber: 0,
// downLoadNumber: 300,
// useNumber: 2,
// creator: "admin",
// createTime: "2024-12-24 10:27:04",
// generateCompleteTime: "2024-12-24 10:27:05",
// supplierOrOrg: "深圳市元创时代科技有限公司",
// isUpdateMaterial: false,
// isTwo: 2
// }
// ]
// };
return http.post<ResPage<any>>(`SerialNumber/GetGenerateRecordList`, params);
};
//产品条码列表
export const getCodeListApi = (params: Record<string, any>) => {
// console.log(params);
// return {
// totalCount: 300,
// data: [
// {
// materialNumber: "G01-43-552867",
// materialName: "7口USB3.0集线器",
// specifications: "ORICO-H7013-U3-AD-EU-BK-BP",
// old_Specifications: "",
// barCode: "6936761881968",
// serialNumber: "10FC-616M3R",
// twoSerialNumber: "10FC-616M3R-two",
// numberCode: "241224000417",
// id: 202593401,
// number: 300,
// isUse: false,
// isUseStr: "否",
// box: "",
// creator: "admin",
// createTime: "2024-12-24 10:27:05",
// printNumber: 0,
// downLoadNumber: 1,
// printTime: "",
// downLoadTime: "2025-01-08 16:11:39",
// isEnablePrint: true
// },
// {
// materialNumber: "G01-43-552867",
// materialName: "7口USB3.0集线器",
// specifications: "ORICO-H7013-U3-AD-EU-BK-BP",
// old_Specifications: "",
// barCode: "6936761881968",
// serialNumber: "10FC-616M3Q",
// twoSerialNumber: "10FC-616M3R-two",
// numberCode: "241224000416",
// id: 202593400,
// number: 300,
// isUse: false,
// isUseStr: "否",
// box: "",
// creator: "admin",
// createTime: "2024-12-24 10:27:05",
// printNumber: 0,
// downLoadNumber: 1,
// printTime: "",
// downLoadTime: "2025-01-08 16:11:39",
// isEnablePrint: true
// }
// ],
// isSuccess: true,
// status: 200,
// message: "Success"
// };
return http.post<ResPage<any>>(`SerialNumber/GetList`, params);
};
//转换规格型号 SerialNumber/UpdateMaterial
export const getUpdateMaterialApi = (params: Record<string, any>) => {
return http.post<ResPage<any>>(`SerialNumber/UpdateMaterial`, params);
};
//产品条码列表下载
export const getSerialNumberDownLoadApi = (params: Record<string, any>) => {
return http.post<ResPage<any>>(`SerialNumber/Export`, params);
};
//生成条码
export const generateBarCodeApi = (params: Record<string, any>) => {
return http.post<ResPage<any>>(`SerialNumber/Generate`, params);
};
//打印
export const getPrintListCodeApi = (params: Record<string, any>) => {
return http.post<ResPage<any>>(`SerialNumber/Print`, params);
};

View File

@@ -1,48 +0,0 @@
import http from "@/api";
import { ResPage } from "@/api/interface/index";
//箱信息列表
export const getListApi = (params: any) => {
return http.post<ResPage<any>>(`Box/GetList`, params);
};
//生成箱碼
export const getBoxGenerateApi = (params: any) => {
return http.post<ResPage<any>>(`Box/Generate`, params);
};
//裝箱保存
export const getSaveBoxApi = (params: any) => {
return http.post<ResPage<any>>(`Box/Save`, params, { noLoading: false });
};
//打印
export const getPrintBoxApi = (params: any) => {
return http.post<ResPage<any>>(`Box/Print`, params);
};
//刪除 /
export const getDeleteBoxApi = (params: any) => {
return http.post<ResPage<any>>(`Box/Delete`, params);
};
//清空
export const getClearBoxApi = (params: any) => {
return http.get<ResPage<any>>(`Box/Clear`, params);
};
//根据箱号获取箱信息
export const getBoxByNoApi = (params: any) => {
return http.get<ResPage<any>>(`Box/GetBoxByNo`, params, {
noLoading: true
});
};
//根据序列号获取序列号信息
export const getSerialNumberApi = (params: any) => {
return http.get<ResPage<any>>(`SerialNumber/Get`, params);
};
//根据箱号去获取序列号
export const getSerialNumberByBoxIdApi = (params: any) => {
return http.post<ResPage<any>>(`SerialNumber/GetByBoxId`, params, { noLoading: true });
};
//重新装箱
export const getBoxRestartApi = (params: any) => {
return http.post<ResPage<any>>(`Box/Restart`, params);
};
//开始装箱时间接口 Box/BeginCarton
export const getBeginCartonApi = (params: any) => {
return http.get<ResPage<any>>(`Box/BeginCarton`, params);
};

View File

@@ -1,14 +0,0 @@
//箱唛
import http from "@/api";
import { ResPage } from "@/api/interface/index";
//箱唛列表
export const getBoxMarkListApi = (params: Record<string, any>) => {
return http.post<ResPage<any>>(`BoxMark/GetList`, params);
};
//生成箱唛
export const getMaterialListApi = (params: any) => {
console.log(params);
// return http.get<any>(`SysConfig/GetMaterialList?speci=${encodeURIComponent(speci)}`);
return [];
};

View File

@@ -1,6 +1,10 @@
import http from "@/api";
// 导出列表
export const getListApi = (params: Record<string, any>) => {
if (params?.status === "正在导出") {
params.status = 0;
}
return http.get<any>(`exports`, params);
};
//状态

View File

@@ -0,0 +1,27 @@
import http from "@/api";
//
export const getSetWarehouseListApi = (params: any) => {
return http.get<any>(`store`, params);
};
// getWarehouseUpApi,getWarehouseDetailsApi,getWarehouseUpApi
//删除
export const getWarehouseDelApi = (params: any) => {
return http.delete<any>(`warehouse/relationship/${params}`);
};
//新增 /admapi/warehouse/relationship
export const getWarehouseAddApi = (params: any) => {
return http.post<any>(`warehouse/relationship`, params);
};
//更新
export const getWarehouseUpApi = (id: any, params: any) => {
return http.post<any>(`warehouse/relationship/${id}`, params);
};
//详情
// export const getWarehouseDetailsApi = (id: any) => {
// return http.get<any>(`store/${id}`);
// };
// //导出
// export const getShopListExportApi = (params: any) => {
// return http.get<any>(`store/export`, params);
// };

30
src/api/modules/shop.ts Normal file
View File

@@ -0,0 +1,30 @@
import http from "@/api";
//店鋪資料列表
export const getShopListApi = (params: any) => {
return http.get<any>(`store`, params);
};
//獲取接入系統列表數據
export const getShopAccessSystemApi = () => {
return http.get<any>(`store/access_system`);
};
//删除
export const getShopDelApi = (params: any) => {
return http.delete<any>(`store/${params}`);
};
//新增
export const getShopAddApi = (params: any) => {
return http.post<any>(`store`, params);
};
//更新
export const getShopUpApi = (id: any, params: any) => {
return http.post<any>(`store/${id}`, params);
};
//详情
export const getShopDetailsApi = (id: any) => {
return http.get<any>(`store/${id}`);
};
//导出
export const getShopListExportApi = (params: any) => {
return http.get<any>(`store/export`, params);
};

3
src/components.d.ts vendored
View File

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

View File

@@ -69,14 +69,29 @@
:disabled="item.disabled"
>
<el-option
v-for="options in item.options"
:label="options.label"
:value="options.value"
:key="options.label"
v-for="option in item.options"
:label="option.label"
:value="option.value"
:key="option.label"
/>
</el-select>
</template>
<template v-if="item.type === 'selectMultiples'">
<el-select
v-model="_searchResult[`${item.prop}`]"
:placeholder="item.placeholder"
clearable
multiple
:disabled="item.disabled"
>
<el-option
v-for="option in item.options"
:label="option.label"
:value="option.value"
:key="option.label"
/>
</el-select>
</template>
<template v-if="item.type === 'date'">
<el-date-picker
:disabled="item.disabled"

View File

@@ -65,12 +65,6 @@ export const useTable = (
}
};
// //其他數據處理
// const initData = () => {
// if (state.totalParam?.warehouse_number) {
// state.totalParam.warehouse_number = state.totalParam?.warehouse_number.split("_")[0];
// }
// };
//删除临时参数和空值参数
const deleteParams = () => {
const KEY = ["Time", "customer_number1", "customer_numbers"];
@@ -86,7 +80,6 @@ export const useTable = (
*/
const getTableList = async () => {
if (!api) return;
try {
await initSubscribeData();
await deleteParams();
@@ -95,9 +88,7 @@ export const useTable = (
...state.totalParam,
...pageParam.value
};
const { data } = await api(params);
state.tableData = Array.isArray(data.data) && data.data.length ? data.data : [];
clearSelection && clearSelection();
if (isPageable && data.total_size !== undefined) {

View File

@@ -268,3 +268,6 @@
text-overflow: ellipsis;
white-space: nowrap;
}
.el-message {
z-index: 888;
}

View File

@@ -28,7 +28,7 @@ export const FORM_DATA: any[] = [
label: "导出失败"
},
{
value: 0,
value: "正在导出",
label: "正在导出"
},
{

View File

@@ -2,13 +2,20 @@
<template>
<div class="table-box">
<ProTable
ref="proTable"
ref="proTableRef"
:formData="dataStore.formData"
:columns="dataStore.columns"
:request-api="getListApi"
:init-param="dataStore.initParam"
:orgCode="dataStore.ruleForm.orgCode"
>
<template v-slot:search>
<SearchForm
@search="handleSearch"
@reset="handleReset"
:searchParams="dataStore.initParam"
:formData="dataStore.formData"
/>
</template>
<!-- 导出状态 -->
<template #status_text="scope">
<span v-if="scope.row.status_text === '导出成功'" style="color: #3ad6ac">
@@ -47,7 +54,7 @@ import { getListApi, getExportTypesApi } from "@/api/modules/exportList";
import { RULE_FORM, FORM_DATA, COLUMNS } from "./constant/list/index";
import { cloneDeep } from "lodash-es";
const proTable = ref<any>();
const proTableRef = ref<any>();
// 数据源
const dataStore: any = reactive({
columns: COLUMNS, //列表配置项
@@ -74,6 +81,24 @@ const getExportTypes = async () => {
}
};
getExportTypes();
// 搜索
const handleSearch = async (params: any) => {
dataStore.initParam = cloneDeep(params);
//这里需要等到表格刷新以后才去请求
nextTick(() => {
proTableRef?.value!.getTableList();
});
};
// 重置
const handleReset = () => {
dataStore.initParam = cloneDeep(RULE_FORM);
//这里需要等到表格刷新以后才去请求
nextTick(() => {
proTableRef?.value!.getTableList();
});
};
</script>
<style scope lang="scss">
.main-container {

View File

@@ -32,8 +32,10 @@ const dataStore = reactive<any>({
formData: cloneDeep(DETAILS_FORM_DATA),
ruleForm: cloneDeep(DETAILS_RULE_FORM)
});
// 详情表单实例
const detailsRef = ref(null);
console.log(dataStore.buttons, "======================");
// 按钮点击事件
const handleButtonClickCallback = () => {};
</script>

View File

@@ -14,6 +14,7 @@ export const DETAILS_FORM_DATA: any[] = [
type: "textarea",
label: "仓位:",
disabled: false,
required: true,
class: "form-item1",
maxLength: 5000
}

View File

@@ -35,10 +35,10 @@ import { getMaterialListApi } from "@/api/modules/foundationMaterial";
// import { useMsg } from "@/hooks/useMsg";
import { RULE_FORM, FORM_DATA, COLUMNS, BUTTON } from "./constant/list/index";
//表格TS
// 表格TS
import { ProTableInstance } from "@/components/ProTable/interface";
//深拷贝方法
// 深拷贝方法
import { cloneDeep } from "lodash-es";
// 获取 ProTable 元素,调用其获取刷新数据方法(还能获取到当前查询参数,方便导出携带参数)
const proTableRef = ref<ProTableInstance>();
@@ -59,13 +59,13 @@ const selectionChange = (selection: any) => {
dataStore.selectionList = selection;
};
//顶部按钮点击事件
// 顶部按钮点击事件
const handleButtonClickCallback = (item: any) => {
console.log(item);
$router.push({ path: "/foundation/set/goods/add" });
};
//搜索
// 搜索
const handleSearch = async (params: any) => {
dataStore.initParam = cloneDeep(params);
//这里需要等到表格刷新以后才去请求
@@ -73,7 +73,8 @@ const handleSearch = async (params: any) => {
proTableRef?.value!.getTableList();
});
};
//重置
// 重置
const handleReset = () => {
dataStore.initParam = cloneDeep(RULE_FORM);
//这里需要等到表格刷新以后才去请求

View File

@@ -1,6 +1,6 @@
export const DETAILS_FORM_DATA: any[] = [
{
prop: "org_number",
prop: "platform_name",
placeholder: "请输入",
type: "input",
label: "平台:",
@@ -9,7 +9,7 @@ export const DETAILS_FORM_DATA: any[] = [
class: "form-item1"
},
{
prop: "org_number",
prop: "platform_store_name",
placeholder: "请输入",
type: "input",
label: "平台店铺名称:",
@@ -18,16 +18,17 @@ export const DETAILS_FORM_DATA: any[] = [
class: "form-item1"
},
{
prop: "org_number",
placeholder: "请输入",
prop: "access_system",
placeholder: "请选择",
type: "select",
label: "订单接入系统:",
disabled: false,
required: true,
options: [],
class: "form-item1"
},
{
prop: "org_number",
prop: "kingdee_store_name",
placeholder: "请输入",
type: "input",
label: "金蝶店铺名称:",
@@ -36,7 +37,7 @@ export const DETAILS_FORM_DATA: any[] = [
class: "form-item1"
},
{
prop: "org_number",
prop: "kingdee_store_number",
placeholder: "请输入",
type: "input",
label: "金蝶店铺编码:",
@@ -45,4 +46,128 @@ export const DETAILS_FORM_DATA: any[] = [
class: "form-item1"
}
];
export const DETAILS_FORM_DATA1: any[] = [
{
prop: "platform_name",
placeholder: "请输入",
type: "input",
label: "平台:",
disabled: false,
required: true,
class: "form-item1"
},
{
prop: "platform_store_name",
placeholder: "请输入",
type: "input",
label: "平台店铺名称:",
disabled: false,
required: true,
class: "form-item1"
},
{
prop: "access_system",
placeholder: "请输入",
type: "select",
label: "订单接入系统:",
disabled: false,
required: true,
options: [],
class: "form-item1"
},
{
prop: "kingdee_store_name",
placeholder: "请输入",
type: "input",
label: "金蝶店铺名称:",
disabled: false,
required: true,
class: "form-item1"
},
{
prop: "kingdee_store_number",
placeholder: "请输入",
type: "input",
label: "金蝶店铺编码:",
disabled: false,
required: true,
class: "form-item1"
},
{
prop: "jushuitan_store_name",
placeholder: "请输入",
type: "input",
label: "聚水潭店铺名称:",
disabled: false,
required: true,
class: "form-item1"
}
];
export const DETAILS_FORM_DATA2: any[] = [
{
prop: "platform_name",
placeholder: "请输入",
type: "input",
label: "平台:",
disabled: false,
required: true,
class: "form-item1"
},
{
prop: "platform_store_name",
placeholder: "请输入",
type: "input",
label: "平台店铺名称:",
disabled: false,
required: true,
class: "form-item1"
},
{
prop: "access_system",
placeholder: "请输入",
type: "select",
label: "订单接入系统:",
disabled: false,
required: true,
options: [],
class: "form-item1"
},
{
prop: "kingdee_store_name",
placeholder: "请输入",
type: "input",
label: "金蝶店铺名称:",
disabled: false,
required: true,
class: "form-item1"
},
{
prop: "kingdee_store_number",
placeholder: "请输入",
type: "input",
label: "金蝶店铺编码:",
disabled: false,
required: true,
class: "form-item1"
},
{
prop: "lingxing_store_name",
placeholder: "请输入",
type: "input",
label: "领星店铺名称:",
disabled: false,
required: true,
class: "form-item1"
},
{
prop: "lingxing_store_number",
placeholder: "请输入",
type: "input",
label: "领星店铺SellerID:",
disabled: false,
required: true,
class: "form-item1"
}
];
export const DETAILS_RULE_FORM: any = {};

View File

@@ -17,37 +17,37 @@ interface FormItem {
}
export const FORM_DATA: FormItem[] = [
{
prop: "org_number",
prop: "platform_name",
placeholder: "请输入平台",
type: "input",
label: "平台: "
},
{
prop: "org_number",
prop: "platform_store_name",
placeholder: "请输入平台店铺名称",
type: "input",
label: "平台店铺名称: "
},
{
prop: "org_number",
prop: "kingdee_store_name",
placeholder: "请输入金蝶店铺名称",
type: "input",
label: "金蝶店铺名称: "
},
{
prop: "org_number",
prop: "jushuitan_store_name",
placeholder: "请输入聚水潭店铺名称",
type: "input",
label: "聚水潭店铺名称: "
},
{
prop: "org_number",
prop: "lingxing_store_name",
placeholder: "请输入领星店铺名称",
type: "input",
label: "领星店铺名称: "
},
{
prop: "org_number",
prop: "operator_name",
placeholder: "请输入更新人",
type: "input",
label: "更新人: "
@@ -58,7 +58,7 @@ export const FORM_DATA: FormItem[] = [
options: [],
startPlaceholder: "更新开始日期",
endPlaceholder: "更新结束日期",
startDate: "updated_at",
startDate: "update_time",
// endDate: "createEndDate",
label: "更新时间: "
}

View File

@@ -5,53 +5,55 @@ export const COLUMNS = [
align: "left",
fixed: true,
label: "平台店铺名称",
prop: "material_number",
prop: "platform_store_name",
width: 200
},
{
align: "left",
label: "平台",
prop: "sku",
fixed: true,
width: 200
prop: "platform_name",
fixed: true
},
{
align: "left",
label: "订单接入系统",
prop: "material_name",
width: 200
prop: "access_system_name"
},
{
align: "left",
label: "聚水潭店铺名称",
prop: "jushuitan_store_name"
},
{
align: "left",
label: "领星店铺名称",
prop: "org_name",
width: 200
prop: "lingxing_store_name"
},
{
align: "left",
label: "领星店铺SellerID",
prop: "product_line"
prop: "lingxing_store_number"
},
{
align: "left",
label: "金蝶店铺名称",
prop: "bar_code"
prop: "kingdee_store_name"
},
{
align: "left",
label: "金蝶店铺编码",
prop: "fnsku"
prop: "kingdee_store_number"
},
{
align: "left",
label: "更新人",
prop: "category_lv1"
prop: "operator"
},
{
align: "left",
label: "更新时间",
prop: "category_lv2"
prop: "updated_at"
}
];

View File

@@ -7,7 +7,7 @@
@handleButtonClickCallback="handleButtonClickCallback"
></PermissionButton>
</div>
<el-dialog v-model="dataStore.dialogVisible" width="660" :before-close="handleClose" title="新增店铺">
<el-dialog v-model="dataStore.dialogVisible" width="660" :before-close="handleClose" :title="dataStore.title">
<DetailsSearch
:formData="dataStore.detailsFormData"
:ruleForm="dataStore.detailsRuleForm"
@@ -26,7 +26,7 @@
<ProTable
ref="proTableRef"
:columns="dataStore.columns"
:request-api="getMaterialListApi"
:request-api="getShopListApi"
:init-param="dataStore.initParam"
@selectionChange="selectionChange"
>
@@ -38,6 +38,11 @@
:formData="dataStore.formData"
/>
</template>
<template #platform_store_name="scope">
<a @click="handleOpen(scope.row)" class="break-word to-details">
{{ scope.row.platform_store_name }}
</a>
</template>
</ProTable>
</div>
</template>
@@ -46,14 +51,22 @@
import ProTable from "@/components/ProTable/index.vue";
import SearchForm from "@/components/SearchForm/index.vue";
import PermissionButton from "@/components/PermissionButton/index.vue";
import { getMaterialListApi } from "@/api/modules/foundationMaterial";
import {
getShopListApi,
getShopDelApi,
getShopAccessSystemApi,
getShopAddApi,
getShopUpApi,
getShopDetailsApi,
getShopListExportApi
} from "@/api/modules/shop";
import { useMsg } from "@/hooks/useMsg";
import { RULE_FORM, FORM_DATA, COLUMNS, BUTTON } from "./constant/list/index";
import { DETAILS_RULE_FORM, DETAILS_FORM_DATA } from "./constant/list/details";
//表格TS
import { DETAILS_RULE_FORM, DETAILS_FORM_DATA, DETAILS_FORM_DATA1, DETAILS_FORM_DATA2 } from "./constant/list/details";
// 表格TS
import { ProTableInstance } from "@/components/ProTable/interface";
//深拷贝方法
// 深拷贝方法
import { cloneDeep } from "lodash-es";
// 获取 ProTable 元素,调用其获取刷新数据方法(还能获取到当前查询参数,方便导出携带参数)
const proTableRef = ref<ProTableInstance>();
@@ -62,23 +75,23 @@ const detailsRef = ref<any>(null);
const dataStore = reactive<any>({
columns: COLUMNS, //列表配置项
initParam: cloneDeep(RULE_FORM), // 初始化搜索条件|重置搜索条件
formData: FORM_DATA, //搜索配置项
formData: FORM_DATA, // 搜索配置项
buttons: cloneDeep(BUTTON),
options: [], //规格型号
labelWidth: "120px",
title: "新增店铺",
detailsFormData: cloneDeep(DETAILS_FORM_DATA),
detailsRuleForm: cloneDeep(DETAILS_RULE_FORM),
dialogVisible: false, //弹窗
selectionList: [] //选中表格的行
dialogVisible: false, // 弹窗
accessSystemOptions: [], // 接入系統列表
selectionList: [] // 列表选中数据
});
// 表格选择事件
const selectionChange = (selection: any) => {
dataStore.selectionList = selection;
};
//删除
// 删除
const handleDel = () => {
console.log();
if (!dataStore.selectionList.length) {
useMsg("warning", "请选择数据 ");
return;
@@ -93,24 +106,78 @@ const handleDel = () => {
dataStore.selectionList?.forEach((item: any) => {
ids.push(item.id);
});
console.log(ids, "==========");
// const result = await getSubscribeDelApi(ids.join(","));
// if (result?.code === 0) {
// proTable?.value!.getTableList();
// useMsg("success", "删除成功 ");
// }
const result = await getShopDelApi(ids.join(","));
if (result?.code === 0) {
proTableRef?.value!.getTableList();
useMsg("success", "删除成功 ");
}
})
.catch(() => {});
}
};
//导出
const handleExport = async () => {
// const result = await getSubscribeResetListExportApi(dataStore.initParam);
// if (result?.code === 0) {
// useMsg("success", "导出成功请前往导出列表中进行下载 ");
// }
// 新增
const getShopAdd = async () => {
const result = await getShopAddApi(dataStore.detailsRuleForm);
if (result?.code === 0) {
useMsg("success", "新增成功 ");
setTimeout(() => {
dataStore.dialogVisible = false;
proTableRef?.value!.getTableList();
}, 600);
}
};
//顶部按钮点击事件
// 更新
const getShopUp = async () => {
const result = await getShopUpApi(dataStore.rowId, dataStore.detailsRuleForm);
if (result?.code === 0) {
useMsg("success", "更新成功 ");
setTimeout(() => {
dataStore.dialogVisible = false;
proTableRef?.value!.getTableList();
}, 600);
}
};
// 详情
const getShopDetails = async (id: any) => {
const result = await getShopDetailsApi(id);
if (result?.code === 0) {
dataStore.dialogVisible = true;
dataStore.title = "编辑店铺";
setAccessSystem(result?.data?.access_system);
dataStore.detailsRuleForm = result?.data;
}
};
// 表格row点击事件
const handleOpen = (row: any) => {
dataStore.rowId = row.id;
getShopDetails(row.id);
};
// 獲取接入系統列表數據
const getShopAccessSystem = async () => {
const result = await getShopAccessSystemApi();
if (result?.code === 0) {
let data = cloneDeep(result?.data);
let options = [];
data?.length &&
data.forEach((item: any) => {
options.push({ value: item.id, label: item.name, is_default: item.is_default });
});
dataStore.accessSystemOptions = options;
dataStore.detailsFormData[2].options = options;
}
};
getShopAccessSystem();
// 导出
const handleExport = async () => {
const result = await getShopListExportApi(dataStore.initParam);
if (result?.code === 0) {
useMsg("success", "导出成功请前往导出列表中进行下载 ");
}
};
// 顶部按钮点击事件
const handleButtonClickCallback = (item: any) => {
const { type } = item;
if (type === "del") {
@@ -120,28 +187,68 @@ const handleButtonClickCallback = (item: any) => {
return handleExport();
}
if (type === "add") {
dataStore.title = "新增店铺";
dataStore.dialogVisible = true;
}
};
//弹窗取消
// 弹窗取消
const handleClose = () => {
dataStore.detailsRuleForm = cloneDeep(DETAILS_RULE_FORM);
detailsRef?.value?.formElement?.resetFields();
dataStore.dialogVisible = false;
};
//弹窗确认
// 弹窗确认
const handleCommit = () => {
dataStore.dialogVisible = false;
if (!dataStore.detailsRuleForm.platform_name) {
useMsg("warning", "平台不能为空 !");
return false;
}
if (!dataStore.detailsRuleForm.platform_store_name) {
useMsg("warning", "平台店铺名称不能为空 !");
return false;
}
if (!dataStore.detailsRuleForm.access_system) {
useMsg("warning", "订单接入系统不能为空 !");
return false;
}
if (!dataStore.detailsRuleForm.kingdee_store_name) {
useMsg("warning", "金蝶店铺名称不能为空 !");
return false;
}
if (!dataStore.detailsRuleForm.kingdee_store_number) {
useMsg("warning", "金蝶店铺编码不能为空 !");
return false;
}
if (dataStore.detailsRuleForm.access_system === 2 && !dataStore.detailsRuleForm.jushuitan_store_name) {
useMsg("warning", "聚水潭店铺名称不能为空 !");
return false;
}
if (dataStore.detailsRuleForm.access_system === 3 && !dataStore.detailsRuleForm.lingxing_store_name) {
useMsg("warning", "领星店铺名称不能为空 !");
return false;
}
if (dataStore.detailsRuleForm.access_system === 3 && !dataStore.detailsRuleForm.lingxing_store_number) {
useMsg("warning", "领星店铺SellerID不能为空 !");
return false;
}
if (dataStore.title === "新增店铺") {
getShopAdd();
} else {
getShopUp();
}
};
//搜索
// 搜索
const handleSearch = async (params: any) => {
console.log(params, "==============>");
dataStore.initParam = cloneDeep(params);
//这里需要等到表格刷新以后才去请求
nextTick(() => {
proTableRef?.value!.getTableList();
});
};
//重置
// 重置
const handleReset = () => {
dataStore.initParam = cloneDeep(RULE_FORM);
//这里需要等到表格刷新以后才去请求
@@ -149,6 +256,26 @@ const handleReset = () => {
proTableRef?.value!.getTableList();
});
};
// 接入系统切换
const setAccessSystem = (val: any) => {
if (val === 2) {
dataStore.detailsFormData = cloneDeep(DETAILS_FORM_DATA1);
dataStore.detailsFormData[2].options = cloneDeep(dataStore.accessSystemOptions);
dataStore.detailsRuleForm.lingxing_store_name = "";
dataStore.lingxing_store_number = "";
}
if (val === 3) {
dataStore.detailsFormData = cloneDeep(DETAILS_FORM_DATA2);
dataStore.detailsFormData[2].options = cloneDeep(dataStore.accessSystemOptions);
dataStore.detailsRuleForm.jushuitan_store_name = "";
}
};
watch(
() => dataStore.detailsRuleForm.access_system,
(newVal: any) => {
setAccessSystem(newVal);
}
);
</script>
<style scope lang="scss">

View File

@@ -1,6 +1,15 @@
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: "kd_warehouse_number ",
placeholder: "请输入",
type: "select",
label: "金蝶仓库:",
@@ -9,24 +18,26 @@ export const DETAILS_FORM_DATA: any[] = [
class: "form-item1"
},
{
prop: "org_number",
placeholder: "请输入",
type: "select",
prop: "kd_subwarehouse ",
placeholder: "请选择",
type: "selectMultiples",
label: "金蝶子仓库:",
disabled: false,
class: "form-item1"
},
{
prop: "org_number",
placeholder: "请输入",
type: "select",
label: "对应聚水潭仓库:",
disabled: false,
required: true,
class: "form-item1"
},
{
prop: "org_number",
prop: "jst_warehouse_number",
placeholder: "请输入",
type: "select",
label: "对应聚水潭仓库:",
disabled: false,
required: true,
class: "form-item1"
},
{
prop: "lx_warehouse_number",
placeholder: "请输入",
type: "select",
label: "对应领星仓库:",
@@ -35,4 +46,6 @@ export const DETAILS_FORM_DATA: any[] = [
class: "form-item1"
}
];
export const DETAILS_RULE_FORM: any = {};
export const DETAILS_RULE_FORM: any = {
use_org_number: "101"
};

View File

@@ -17,19 +17,26 @@ interface FormItem {
}
export const FORM_DATA: FormItem[] = [
{
prop: "org_number",
prop: "use_org_number",
placeholder: "请选择组织",
type: "selectMultiple",
label: "组织: ",
options: []
},
{
prop: "kd_warehouse_number",
placeholder: "请输入金蝶仓库",
type: "input",
label: "金蝶仓库: "
},
{
prop: "org_number",
prop: "kd_subwarehouse",
placeholder: "请输入金蝶子仓库",
type: "input",
label: "金蝶子仓库: "
},
{
prop: "org_number",
prop: "operator_name",
placeholder: "请输入更新人",
type: "input",
label: "更新人: "
@@ -41,7 +48,7 @@ export const FORM_DATA: FormItem[] = [
options: [],
startPlaceholder: "更新开始日期",
endPlaceholder: "更新结束日期",
startDate: "updated_at",
startDate: "update_time",
// endDate: "createEndDate",
label: "更新时间: "
}
@@ -49,5 +56,6 @@ export const FORM_DATA: FormItem[] = [
export const RULE_FORM = {
page: 1,
size: 50
size: 50,
use_org_number: ["101"]
};

View File

@@ -8,6 +8,13 @@ export const COLUMNS = [
prop: "material_number",
width: 200
},
{
align: "left",
fixed: true,
label: "组织",
prop: "use_org_number",
width: 200
},
{
align: "left",
label: "金蝶子仓库",

View File

@@ -1,4 +1,4 @@
<!-- 仓库关系 -->
<!-- 店铺资料 -->
<template>
<div class="table-box">
<div style="padding-bottom: 16px">
@@ -7,7 +7,7 @@
@handleButtonClickCallback="handleButtonClickCallback"
></PermissionButton>
</div>
<el-dialog v-model="dataStore.dialogVisible" width="660" :before-close="handleClose" title="新增店铺">
<el-dialog v-model="dataStore.dialogVisible" width="660" :before-close="handleClose" :title="dataStore.title">
<DetailsSearch
:formData="dataStore.detailsFormData"
:ruleForm="dataStore.detailsRuleForm"
@@ -26,7 +26,7 @@
<ProTable
ref="proTableRef"
:columns="dataStore.columns"
:request-api="getMaterialListApi"
:request-api="getShopListApi"
:init-param="dataStore.initParam"
@selectionChange="selectionChange"
>
@@ -38,22 +38,29 @@
:formData="dataStore.formData"
/>
</template>
<template #platform_store_name="scope">
<a @click="handleOpen(scope.row)" class="break-word to-details">
{{ scope.row.platform_store_name }}
</a>
</template>
</ProTable>
</div>
</template>
<script setup lang="ts" name="foundationSetWarehouse">
<script setup lang="ts" name="foundationSetShop">
import ProTable from "@/components/ProTable/index.vue";
import SearchForm from "@/components/SearchForm/index.vue";
import PermissionButton from "@/components/PermissionButton/index.vue";
import { getMaterialListApi } from "@/api/modules/foundationMaterial";
import { getShopListApi } from "@/api/modules/shop";
import { useUserStore } from "@/stores/modules/user";
import { getWarehouseDelApi, getWarehouseAddApi, getWarehouseUpApi } from "@/api/modules/setWarehouse";
import { useMsg } from "@/hooks/useMsg";
import { RULE_FORM, FORM_DATA, COLUMNS, BUTTON } from "./constant/list/index";
import { DETAILS_RULE_FORM, DETAILS_FORM_DATA } from "./constant/list/details";
//表格TS
// 表格TS
import { ProTableInstance } from "@/components/ProTable/interface";
//深拷贝方法
// 深拷贝方法
import { cloneDeep } from "lodash-es";
// 获取 ProTable 元素,调用其获取刷新数据方法(还能获取到当前查询参数,方便导出携带参数)
const proTableRef = ref<ProTableInstance>();
@@ -62,23 +69,30 @@ const detailsRef = ref<any>(null);
const dataStore = reactive<any>({
columns: COLUMNS, //列表配置项
initParam: cloneDeep(RULE_FORM), // 初始化搜索条件|重置搜索条件
formData: FORM_DATA, //搜索配置项
formData: FORM_DATA, // 搜索配置项
buttons: cloneDeep(BUTTON),
options: [], //规格型号
labelWidth: "120px",
title: "新增金蝶子仓与各系统仓库关系",
detailsFormData: cloneDeep(DETAILS_FORM_DATA),
detailsRuleForm: cloneDeep(DETAILS_RULE_FORM),
dialogVisible: false, //弹窗
selectionList: [] //选中表格的行
dialogVisible: false, // 弹窗
selectionList: [] // 列表选中数据
});
const userStore = useUserStore();
//初始化组织数据
const init = () => {
if (userStore.orgIdArr.length) {
dataStore.formData[0].options = userStore?.orgIdArr;
dataStore.detailsFormData[0].options = userStore?.orgIdArr;
}
};
init();
// 表格选择事件
const selectionChange = (selection: any) => {
dataStore.selectionList = selection;
};
//删除
// 删除
const handleDel = () => {
console.log();
if (!dataStore.selectionList.length) {
useMsg("warning", "请选择数据 ");
return;
@@ -90,40 +104,108 @@ const handleDel = () => {
})
.then(async () => {
let ids: any = [];
dataStore.selectionList.forEach((item: any) => {
dataStore.selectionList?.forEach((item: any) => {
ids.push(item.id);
});
// console.log(ids, "==========");
// const result = await getSubscribeDelApi(ids.join(","));
// if (result?.code === 0) {
// proTable?.value!.getTableList();
// useMsg("success", "删除成功 ");
// }
const result = await getWarehouseDelApi(ids.join(","));
if (result?.code === 0) {
proTableRef?.value!.getTableList();
useMsg("success", "删除成功 ");
}
})
.catch(() => {});
}
};
//顶部按钮点击事件
// 新增
const getWarehouseAdd = async () => {
const result = await getWarehouseAddApi(dataStore.detailsRuleForm);
if (result?.code === 0) {
useMsg("success", "新增成功 ");
setTimeout(() => {
dataStore.dialogVisible = false;
proTableRef?.value!.getTableList();
}, 600);
}
};
// 更新
const getWarehouseUp = async () => {
const result = await getWarehouseUpApi(dataStore.rowId, dataStore.detailsRuleForm);
if (result?.code === 0) {
useMsg("success", "更新成功 ");
setTimeout(() => {
dataStore.dialogVisible = false;
proTableRef?.value!.getTableList();
}, 600);
}
};
// 详情
const getShopDetails = async (id: any) => {
const result = await getShopDetailsApi(id);
if (result?.code === 0) {
dataStore.dialogVisible = true;
dataStore.title = "编辑金蝶子仓与各系统仓库关系";
setAccessSystem(result?.data?.access_system);
dataStore.detailsRuleForm = result?.data;
}
};
// 表格row点击事件
const handleOpen = (row: any) => {
dataStore.rowId = row.id;
getShopDetails(row.id);
};
// 导出
const handleExport = async () => {
const result = await getShopListExportApi(dataStore.initParam);
if (result?.code === 0) {
useMsg("success", "导出成功请前往导出列表中进行下载 ");
}
};
// 顶部按钮点击事件
const handleButtonClickCallback = (item: any) => {
const { type } = item;
if (type === "del") {
return handleDel();
}
if (type === "export") {
return handleExport();
}
if (type === "add") {
dataStore.title = "新增金蝶子仓与各系统仓库关系";
dataStore.dialogVisible = true;
}
};
//弹窗取消
// 弹窗取消
const handleClose = () => {
dataStore.detailsRuleForm = cloneDeep(DETAILS_RULE_FORM);
detailsRef?.value?.formElement?.resetFields();
dataStore.dialogVisible = false;
};
//弹窗确认
// 弹窗确认
const handleCommit = () => {
dataStore.dialogVisible = false;
if (!dataStore.detailsRuleForm.use_org_number) {
return useMsg("warning", "组织不能为空 !");
}
if (!dataStore.detailsRuleForm.kd_warehouse_number) {
return useMsg("warning", "金蝶仓库不能为空 !");
}
if (!dataStore.detailsRuleForm.kd_subwarehouse) {
return useMsg("warning", "金蝶子仓库不能为空 !");
}
if (!dataStore.detailsRuleForm.jst_warehouse_number) {
return useMsg("warning", "对应聚水潭仓库不能为空 !");
}
if (!dataStore.detailsRuleForm.lx_warehouse_number) {
return useMsg("warning", "对应对应领星仓库不能为空 !");
}
if (dataStore.title === "新增金蝶子仓与各系统仓库关系") {
getWarehouseAdd();
} else {
getWarehouseUp();
}
};
//搜索
// 搜索
const handleSearch = async (params: any) => {
dataStore.initParam = cloneDeep(params);
//这里需要等到表格刷新以后才去请求
@@ -131,7 +213,7 @@ const handleSearch = async (params: any) => {
proTableRef?.value!.getTableList();
});
};
//重置
// 重置
const handleReset = () => {
dataStore.initParam = cloneDeep(RULE_FORM);
//这里需要等到表格刷新以后才去请求

View File

@@ -53,6 +53,7 @@ import { cloneDeep } from "lodash-es";
// 获取 ProTable 元素,调用其获取刷新数据方法(还能获取到当前查询参数,方便导出携带参数)
const proTableRef = ref<ProTableInstance>();
const router = useRouter();
const userStore = useUserStore();
// 数据源

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long