Compare commits

2 Commits

Author SHA1 Message Date
efee846973 fix: 🧩 修改bug 2025-10-10 11:28:56 +08:00
2837efee97 feat: 🚀 发布测试环境 2025-09-28 16:11:10 +08:00
19 changed files with 107 additions and 110 deletions

View File

@@ -1,4 +1,4 @@
ENV = 'test'
ENV = 'dev'
VITE_APP_API_VERSION =""
VITE_APP_API_BASEURL = https://dev.wms.api.v2.f2b211.com/v1/admapi/
VITE_APP_SSO_LOGINURL = http://dev.uc.v3.f2b211.com/uc/login # http://dev.uc.f2b211.com/index.php/uc/user/login.html
@@ -8,7 +8,7 @@ VITE_REDIRECT_URL =http://localhost:8080/login #单点从定向地址
VITE_SINGLE_URL = https://dev.uc.v3.f2b211.com/ #测试环境单点登录通知
# 测试环境
VITE_USER_NODE_ENV = test
VITE_USER_NODE_ENV = development
# 公共基础路径
VITE_PUBLIC_PATH = /

View File

@@ -1,6 +1,6 @@
ENV = 'test'
VITE_APP_API_VERSION =""
VITE_APP_API_BASEURL = https://dev.wms.api.v2.f2b211.com/admapi/
VITE_APP_API_BASEURL = https://dev.wms.api.v2.f2b211.com/v1/admapi/
VITE_APP_SSO_LOGINURL = http://dev.uc.v3.f2b211.com/uc/login # http://dev.uc.f2b211.com/index.php/uc/user/login.html
VITE_APP_SSO_APPID = 101341644040699904

View File

@@ -12,3 +12,6 @@ export const getMaterialListApi = (params: any) => {
export const getMaterialListReloadApi = (params: any) => {
return http.get<any>(`material/reload`, params);
};
export const getMaterialListExportApi = (params: any) => {
return http.get<any>(`material/export`, params);
};

View File

@@ -8,3 +8,6 @@ export const getSubscribeWrrListApi = (params: any) => {
export const getSubscribeResetListApi = (params: any) => {
return http.get<any>(`subscribe/wrr/reload`, params);
};
export const getSubscribeResetListExportApi = (params: any) => {
return http.get<any>(`subscribe/wrr/export`, params);
};

6
src/components.d.ts vendored
View File

@@ -13,13 +13,12 @@ declare module "vue" {
ColSetting: typeof import("./components/ProTable/components/ColSetting.vue")["default"];
DetailsSearch: typeof import("./components/DetailsSearch/index.vue")["default"];
ElAside: typeof import("element-plus/es")["ElAside"];
ElAutocomplete: typeof import("element-plus/es")["ElAutocomplete"];
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"];
ElDrawer: typeof import("element-plus/es")["ElDrawer"];
ElDropdown: typeof import("element-plus/es")["ElDropdown"];
ElDropdownItem: typeof import("element-plus/es")["ElDropdownItem"];
@@ -29,6 +28,7 @@ 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"];
@@ -43,6 +43,7 @@ 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"];
@@ -55,7 +56,6 @@ declare module "vue" {
IEpFullScreen: typeof import("~icons/ep/full-screen")["default"];
IEpRefresh: typeof import("~icons/ep/refresh")["default"];
IEpRemove: typeof import("~icons/ep/remove")["default"];
IEpSearch: typeof import("~icons/ep/search")["default"];
IEpSwitchButton: typeof import("~icons/ep/switch-button")["default"];
ImportExcel: typeof import("./components/ImportExcel/index.vue")["default"];
Loading: typeof import("./components/Loading/index.vue")["default"];

View File

@@ -113,6 +113,7 @@
v-model="_searchResult[`${item.prop}`]"
multiple
filterable
:reserve-keyword="false"
@remove-tag="handleRomoveTag(item)"
:disabled="item.disabled"
:placeholder="item.placeholder"
@@ -129,15 +130,16 @@
<template
v-if="item.type === 'selectMultipleRemoteCustomersNames' || item.type === 'selectProductLinesRemote'"
>
<!-- // filterable -->
<el-select
v-model="_searchResult[`${item.prop}`]"
:placeholder="item.placeholder"
remote
multiple
filterable
multiple
:reserve-keyword="false"
@remove-tag="handleTagRemove1(item)"
class="m-2 select"
remote-show-suffix
@clear="handleSelectClear(item.prop)"
:remote-method="(query:any)=> handleSelectMultipleRemote(query, item)"
:disabled="item.disabled"
>
@@ -169,6 +171,7 @@ const props = defineProps<{
inline?: Boolean;
getSearchValue?: () => void;
selectMultipleRemoveTag?: () => void;
selectMultipleRemoteTag1?: () => void;
setRuleFormValue?: () => void;
}>();
@@ -181,12 +184,17 @@ const emits = defineEmits<{
(e: "setMaterialList", result: Record<string, any>): void;
(e: "setRuleFormValue", result: Record<string, any>): void;
(e: "selectMultipleRemoveTag", result: Record<string, any>): void;
(e: "selectMultipleRemoteTag1", result: Record<string, any>): void;
}>();
const handleRomoveTag = (item: any) => {
emits("selectMultipleRemoveTag", { item, org_number: _searchResult.value.org_number });
};
const handleTagRemove1 = (item: any) => {
if (!_searchResult.value[item.prop].length) {
item.options = [];
}
};
//客戶
const getCustomers = async (keywords: any, item: any) => {
let org_number = _searchResult.value.org_number.join(",");
@@ -202,6 +210,8 @@ const getCustomers = async (keywords: any, item: any) => {
});
});
item.options = options;
} else {
item.options = [];
}
}
};
@@ -220,6 +230,8 @@ const getProductLines = async (keywords: any, item: any) => {
});
});
item.options = options;
} else {
item.options = [];
}
}
};
@@ -234,10 +246,12 @@ const getUsers = async (keywords: any, item: any) => {
data.forEach((item: any) => {
options.push({
value: item.dduid,
label: item.realname
label: item.realname + " " + item.mobile
});
});
item.options = options;
} else {
item.options = [];
}
}
};
@@ -247,6 +261,7 @@ const handleSelectMultipleRemote = (query: any, item: any) => {
if (!query) {
return;
}
item.options = [];
let valClone = query.replace(/^\s*|\s*$/g, "");
if (!valClone) {
return;
@@ -271,9 +286,7 @@ const remoteMethod = async (query: any, item: any) => {
getUsers(valClone, item);
}
};
const handleSelectClear = (prop: any) => {
console.log("会触发吗?", prop);
};
//input输入验证
const valueVerify = (item: any) => {
//只能输入整数

View File

@@ -94,6 +94,7 @@
remote
multiple
filterable
:reserve-keyword="false"
@clear="handleClear(item)"
:loading="loading"
class="m-2 select"
@@ -127,6 +128,7 @@
:disabled="item.disabled"
:placeholder="item.placeholder"
class="m-2 select"
:reserve-keyword="false"
style="width: 224px"
>
<!-- 循环渲染选项label 为显示文本value 为实际提交值 -->
@@ -145,6 +147,7 @@
v-model="_searchParams[`${item.prop}`]"
filterable
clearable
:reserve-keyword="false"
:disabled="item.disabled"
:placeholder="item.placeholder"
class="m-2 select"

View File

@@ -2,7 +2,7 @@
<!-- 公司名 -->
<div class="name-box font12" style="padding-top: 2px">
<span style="margin-right: 10px; margin-left: 10px">
{{ userStore.userInfo.corp.corp_name ? userStore.userInfo.corp.corp_name : "" }}
{{ userStore?.userInfo?.corp?.corp_name ? userStore?.userInfo?.corp?.corp_name : "" }}
</span>
</div>
@@ -10,7 +10,7 @@
<div class="name-box font12">
<el-dropdown trigger="click" class="triangle-box">
<div>
{{ userStore.userInfo.nickname }}
{{ userStore?.userInfo?.nickname }}
<el-icon class="triangle">
<i-ep-arrow-down />
</el-icon>
@@ -41,15 +41,12 @@ const logout = () => {
cancelButtonText: "取消",
type: "warning"
}).then(async () => {
//1.退出登录
const result: any = await logoutApi();
if (result?.code === 0) {
location.href = usePathUrl();
setTimeout(() => {
userStore.$reset();
//清除本地
localStorage.clear();
}, 300);
location.href = usePathUrl();
}
});
};

View File

@@ -30,7 +30,7 @@
:href="scope.row.download_url"
v-if="
scope.row.status == 1 &&
Math.abs((new Date(scope.row.date).getTime() - new Date().getTime()) / (24 * 60 * 60 * 1000)) <= 7
Math.abs((new Date(scope.row.created_at).getTime() - new Date().getTime()) / (24 * 60 * 60 * 1000)) <= 7
"
>下载</a
>

View File

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

View File

@@ -1,34 +1,17 @@
import { getMaterialListReloadApi } from "@/api/modules/foundationMaterial";
import { getMaterialListReloadApi, getMaterialListExportApi } from "@/api/modules/foundationMaterial";
import { useMsg } from "@/hooks/useMsg";
//getMaterialListResetApi
// 直接导出函数,无需额外包装对象
export const handleExport = (item: any, selectionList: any[], proTable: any) => {
console.log("导出操作", item);
console.log(selectionList, "=selectionList=");
let length = selectionList.length;
if (!length) {
useMsg("warning", "请选择需要删除的数据!");
return;
// 导出
export const handleExport = async (params: any) => {
const { initParam } = params;
const result = await getMaterialListExportApi(initParam);
if (result?.code === 0) {
useMsg("success", "导出成功 ");
}
ElMessageBox.confirm("您确定进行删除操作吗?", "温馨提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(async () => {
proTable.value!.getTableList();
// const result = await commitListApi();
// if (result.status === 200) {
// useMsg("success", "删除成功 ");
// } else {
// useMsg("error", result.message);
// }
})
.catch(() => {});
};
// proTable: any getMaterialListReloadApi
export const handleReload = async (item: any, selectionList: any[], proTable: any) => {
console.log("刷新操作", item);
//刷新
export const handleReload = async (params: any) => {
const { selectionList, proTable } = params;
let length = selectionList.length;
let ids: any = [];
if (length && length > 100) {

View File

@@ -44,6 +44,13 @@ const userStore = useUserStore();
const $route = useRoute();
dataStore.formData[0].options = userStore.orgIdArr;
const init = () => {
//$route.query.title === "新增订阅" ? org_number: ["101"],
if ($route.query.title === "新增订阅") {
dataStore.ruleForm.org_number = ["101"];
}
};
init();
//新增
const handleAdd = () => {
if (

View File

@@ -1,17 +1,18 @@
export const FORM_DATA: any[] = [
{
prop: "org_number",
placeholder: "",
placeholder: "请输入",
type: "selectMultiple",
label: "组织:",
disabled: false,
required: true,
class: "form-item1",
options: []
},
{
prop: "customer_number",
placeholder: "",
placeholder: "请输入",
type: "selectMultipleRemoteCustomersNames",
label: "客户名称:",
disabled: false,
@@ -21,7 +22,7 @@ export const FORM_DATA: any[] = [
},
{
prop: "customer_number",
placeholder: "",
placeholder: "请输入",
type: "input",
label: "客户编码:",
disabled: true,
@@ -30,7 +31,7 @@ export const FORM_DATA: any[] = [
},
{
prop: "product_lines",
placeholder: "",
placeholder: "请输入",
type: "selectProductLinesRemote",
label: "品线:",
disabled: false,
@@ -40,7 +41,7 @@ export const FORM_DATA: any[] = [
},
{
prop: "subscriber_dduid",
placeholder: "",
placeholder: "请输入",
type: "selectRemoteUser",
label: "订阅账号:",
disabled: false,

View File

@@ -3,19 +3,20 @@ export const COLUMNS = [
{
align: "left",
label: "订阅账号",
prop: "subscriber_name"
},
{
align: "left",
fixed: true,
label: "客户名称",
prop: "customer_name"
prop: "subscriber_name",
fixed: true
},
{
align: "left",
label: "组织",
prop: "org_name"
},
{
align: "left",
label: "客户名称",
prop: "customer_name"
},
{
align: "left",
label: "客户编码",

View File

@@ -43,7 +43,7 @@ export const setDetailsData = (dataStore: any, data: any) => {
dataStore.formData[4].options = [
{
value: data?.subscriber_dduid,
label: data?.subscriber_name
label: data?.subscriber_mobile ? data?.subscriber_name + " " + data?.subscriber_mobile : data?.subscriber_name
}
];
dataStore.ruleForm.subscriber_dduid = data?.subscriber_dduid;

View File

@@ -2,7 +2,7 @@ export const BUTTON = [
{
text: "导出",
permission: "foundationSubscribeWarehousingBtnExport",
type: "add",
type: "export",
props: {
type: "primary"
}

View File

@@ -73,7 +73,11 @@ const selectionChange = (selection: any) => {
};
const handleButtonClickCallback = (item: any) => {
const { type } = item;
btnClick[type](item, dataStore.selectionList, proTable);
btnClick[type]({
selectionList: dataStore.selectionList,
proTable,
initParam: dataStore.initParam
});
};
//搜索
const handleSearch = async (params: any) => {

View File

@@ -1,29 +1,12 @@
import { useMsg } from "@/hooks/useMsg";
import { getSubscribeResetListApi } from "@/api/modules/warehousing";
// 直接导出函数,无需额外包装对象
export const handleDel = (item: any, selectionList: any[], proTable: any) => {
console.log("导出操作", item);
console.log(selectionList, "=selectionList=");
let length = selectionList.length;
if (!length) {
useMsg("warning", "请选择需要删除的数据!");
return;
import { getSubscribeResetListApi, getSubscribeResetListExportApi } from "@/api/modules/warehousing";
// 导出
export const handleExport = async (params: any) => {
const { initParam } = params;
const result = await getSubscribeResetListExportApi(initParam);
if (result?.code === 0) {
useMsg("success", "导出成功 ");
}
ElMessageBox.confirm("您确定进行删除操作吗?", "温馨提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(async () => {
proTable.value!.getTableList();
// const result = await commitListApi();
// if (result.status === 200) {
// useMsg("success", "删除成功 ");
// } else {
// useMsg("error", result.message);
// }
})
.catch(() => {});
};
// proTable: any
export const handleReSet = async (item: any, selectionList: any[], proTable: any) => {
@@ -47,6 +30,6 @@ export const handleReSet = async (item: any, selectionList: any[], proTable: any
};
export const btnClick: any = {
del: handleDel,
export: handleExport,
reset: handleReSet
};

View File

@@ -5,37 +5,31 @@
//useRouter
import { useRoute, useRouter } from "vue-router";
// import { useMsg } from "@/hooks/useMsg";
//重定向
import { usePathUrl } from "@/hooks/usePathUrl";
//登录请求接口
import { loginApi } from "@/api/modules/login";
//用户信息存储
import { useUserStore } from "@/stores/modules/user";
//重定向
import { usePathUrl } from "@/hooks/usePathUrl";
const userStore = useUserStore();
// 路由
//路由;
const $route = useRoute();
const $router = useRouter();
// 设置用户数据
const setUserData = (data: any) => {
// 设置token
userStore.setToken(data.access_token);
// 设置用户信息
userStore.setUserInfo(data.user_data);
//设置好了token和用户信息跳转到首页
setTimeout(() => {
$router.push({ path: "/" });
}, 500);
};
// 登录
const loginHttp = async (code: any) => {
const result: Record<string, any> = await loginApi(code);
if (result.code === 0) {
setUserData(result.data);
userStore.setToken(result?.data?.access_token);
console.log(result?.data?.access_token, "=data.access_token=");
// 设置用户信息
userStore.setUserInfo(result?.data?.user_data);
//设置好了token和用户信息跳转到首页
setTimeout(() => {
$router.push({ path: "/" });
}, 500);
} else {
location.href = usePathUrl();
}