fix: 🧩 修复bug
This commit is contained in:
@@ -6,7 +6,6 @@ export const getBannerListApi = (params: any) => {
|
|||||||
};
|
};
|
||||||
//新增
|
//新增
|
||||||
export const getBannerListSaveApi = (params: any) => {
|
export const getBannerListSaveApi = (params: any) => {
|
||||||
console.log("1232323");
|
|
||||||
return http.post<any>(`${B}/save`, params, {
|
return http.post<any>(`${B}/save`, params, {
|
||||||
headers: {
|
headers: {
|
||||||
"Content-Type": "application/x-www-form-urlencoded"
|
"Content-Type": "application/x-www-form-urlencoded"
|
||||||
@@ -37,3 +36,7 @@ export const getBannerListExportApi = (params: any) => {
|
|||||||
responseType: "arraybuffer"
|
responseType: "arraybuffer"
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
//分类
|
||||||
|
export const getBannerClassListApi = () => {
|
||||||
|
return http.get<any>(`/banner/list`); //v1/banner/list
|
||||||
|
};
|
||||||
|
|||||||
@@ -26,5 +26,9 @@ export const getProductBuypassUpdateApi = (params: any) => {
|
|||||||
|
|
||||||
//新增
|
//新增
|
||||||
export const getProductBuypassListSaveApi = (params: any) => {
|
export const getProductBuypassListSaveApi = (params: any) => {
|
||||||
return http.post<any>(`${PRODUCT_BUYPASS}/save`, params);
|
return http.post<any>(`${PRODUCT_BUYPASS}/save`, params, {
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/x-www-form-urlencoded"
|
||||||
|
}
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -26,3 +26,7 @@ export const getVideoListExportApi = (params: any) => {
|
|||||||
responseType: "arraybuffer"
|
responseType: "arraybuffer"
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
//视频分类
|
||||||
|
export const getVideoClassListApi = () => {
|
||||||
|
return http.get<any>(`/video/categorys`);
|
||||||
|
};
|
||||||
|
|||||||
@@ -189,7 +189,7 @@ const handlePicker = (item: any) => {
|
|||||||
if (Array.isArray(_searchParam.value[prop]) && _searchParam.value[prop].length > 0) {
|
if (Array.isArray(_searchParam.value[prop]) && _searchParam.value[prop].length > 0) {
|
||||||
let _date: any = cloneDeep(_searchParam.value[prop]);
|
let _date: any = cloneDeep(_searchParam.value[prop]);
|
||||||
_date[0] = _date[0] + " " + "00:00:00";
|
_date[0] = _date[0] + " " + "00:00:00";
|
||||||
_date[1] = _date[1] + " " + "00:00:00";
|
_date[1] = _date[1] + " " + "23:59:59";
|
||||||
_searchParam.value[item.startDate] = _date.join(",");
|
_searchParam.value[item.startDate] = _date.join(",");
|
||||||
} else {
|
} else {
|
||||||
_searchParam.value[item.startDate] = "";
|
_searchParam.value[item.startDate] = "";
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ const formItemContext = inject(formItemContextKey, void 0);
|
|||||||
const self_disabled = computed(() => {
|
const self_disabled = computed(() => {
|
||||||
return props.disabled || formContext?.disabled;
|
return props.disabled || formContext?.disabled;
|
||||||
});
|
});
|
||||||
const h = import.meta.env.VITE_APP_API_BASE_UPLOAD_URL;
|
import { h } from "@/utils/url";
|
||||||
/**
|
/**
|
||||||
* @description 图片上传
|
* @description 图片上传
|
||||||
* @param options upload 所有配置项
|
* @param options upload 所有配置项
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ const self_disabled = computed(() => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const _fileList = ref<UploadUserFile[]>(props.fileList);
|
const _fileList = ref<UploadUserFile[]>(props.fileList);
|
||||||
const h = import.meta.env.VITE_APP_API_BASE_UPLOAD_URL;
|
import { h } from "@/utils/url";
|
||||||
// 监听 props.fileList 列表默认值改变
|
// 监听 props.fileList 列表默认值改变
|
||||||
watch(
|
watch(
|
||||||
() => props.fileList,
|
() => props.fileList,
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ import { ElNotification, formContextKey, formItemContextKey } from "element-plus
|
|||||||
import type { UploadProps, UploadRequestOptions } from "element-plus";
|
import type { UploadProps, UploadRequestOptions } from "element-plus";
|
||||||
|
|
||||||
interface UploadFileProps {
|
interface UploadFileProps {
|
||||||
videoUrl: string; // 图片地址 ==> 必传
|
videoUrl: any; // 图片地址 ==> 必传
|
||||||
api?: (params: any) => Promise<any>; // 上传图片的 api 方法,一般项目上传都是同一个 api 方法,在组件里直接引入即可 ==> 非必传
|
api?: (params: any) => Promise<any>; // 上传图片的 api 方法,一般项目上传都是同一个 api 方法,在组件里直接引入即可 ==> 非必传
|
||||||
width?: string;
|
width?: string;
|
||||||
disabled?: boolean; // 是否禁用上传组件 ==> 非必传(默认为 false)
|
disabled?: boolean; // 是否禁用上传组件 ==> 非必传(默认为 false)
|
||||||
|
|||||||
1
src/utils/url.ts
Normal file
1
src/utils/url.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export const h = import.meta.env.VITE_APP_API_BASE_UPLOAD_URL;
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
<script setup lang="ts" name="QAListIndex">
|
<script setup lang="ts" name="QAListIndex">
|
||||||
import ProTable from "@/components/ProTable/index.vue";
|
import ProTable from "@/components/ProTable/index.vue";
|
||||||
const h = import.meta.env.VITE_APP_API_BASE_UPLOAD_URL;
|
import { h } from "@/utils/url";
|
||||||
import { useMsg } from "@/hooks/useMsg";
|
import { useMsg } from "@/hooks/useMsg";
|
||||||
import { integerRexg } from "@/utils/regexp/index";
|
import { integerRexg } from "@/utils/regexp/index";
|
||||||
import { messageBox } from "@/utils/messageBox";
|
import { messageBox } from "@/utils/messageBox";
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ export const EDIT_FORM_DATA: FormItem[] = [
|
|||||||
{
|
{
|
||||||
prop: "category_id",
|
prop: "category_id",
|
||||||
placeholder: "请选择",
|
placeholder: "请选择",
|
||||||
type: "treeSelect",
|
type: "select",
|
||||||
label: "文章分类: ",
|
label: "文章分类: ",
|
||||||
options: []
|
options: []
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ export const FORM_DATA: FormItem[] = [
|
|||||||
{
|
{
|
||||||
prop: "category_id",
|
prop: "category_id",
|
||||||
placeholder: "请选择",
|
placeholder: "请选择",
|
||||||
type: "treeSelect",
|
type: "select",
|
||||||
isArray: true,
|
isArray: true,
|
||||||
label: "文章分类: ",
|
label: "文章分类: ",
|
||||||
options: []
|
options: []
|
||||||
@@ -38,7 +38,7 @@ export const FORM_DATA: FormItem[] = [
|
|||||||
options: [],
|
options: [],
|
||||||
startPlaceholder: "开始日期",
|
startPlaceholder: "开始日期",
|
||||||
endPlaceholder: "结束日期",
|
endPlaceholder: "结束日期",
|
||||||
startDate: "created_at",
|
startDate: "release_time",
|
||||||
// endDate: "createEndDate",
|
// endDate: "createEndDate",
|
||||||
label: "发布时间: "
|
label: "发布时间: "
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
//import { RenderScope } from "@/components/ProTable/interface";
|
import { RenderScope } from "@/components/ProTable/interface";
|
||||||
|
const YES_OR_NO: any = {
|
||||||
|
1: "✔️",
|
||||||
|
0: "❌"
|
||||||
|
};
|
||||||
export const COLUMNS = [
|
export const COLUMNS = [
|
||||||
{
|
{
|
||||||
align: "center",
|
align: "center",
|
||||||
@@ -32,7 +36,10 @@ export const COLUMNS = [
|
|||||||
{
|
{
|
||||||
align: "left",
|
align: "left",
|
||||||
label: "首页推荐",
|
label: "首页推荐",
|
||||||
prop: "recommend"
|
prop: "recommend",
|
||||||
|
render: (scope: RenderScope<any>): VNode | string | any => {
|
||||||
|
return YES_OR_NO[scope.row.recommend];
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ import { cloneDeep } from "lodash-es";
|
|||||||
//表格和搜索條件
|
//表格和搜索條件
|
||||||
import { RULE_FORM, FORM_DATA, COLUMNS } from "./constant/index";
|
import { RULE_FORM, FORM_DATA, COLUMNS } from "./constant/index";
|
||||||
//图片地址
|
//图片地址
|
||||||
const h = import.meta.env.VITE_APP_API_BASE_UPLOAD_URL;
|
import { h } from "@/utils/url";
|
||||||
// 获取 ProTable 元素,调用其获取刷新数据方法(还能获取到当前查询参数,方便导出携带参数)
|
// 获取 ProTable 元素,调用其获取刷新数据方法(还能获取到当前查询参数,方便导出携带参数)
|
||||||
const proTableRef = ref<any>(null);
|
const proTableRef = ref<any>(null);
|
||||||
const $router = useRouter();
|
const $router = useRouter();
|
||||||
@@ -80,7 +80,14 @@ const handleAdd = (type: any) => {
|
|||||||
|
|
||||||
//导出接口
|
//导出接口
|
||||||
const getArticleListExport = async () => {
|
const getArticleListExport = async () => {
|
||||||
const result = await getArticleListExportApi(dataStore.ruleForm);
|
// searchParam,
|
||||||
|
// searchInitParam,
|
||||||
|
console.log(proTableRef?.value?.pageable, "===proTableRef?.value?.pageable==");
|
||||||
|
console.log(proTableRef?.value?.searchParam, "=dataStore.initParam=");
|
||||||
|
const result = await getArticleListExportApi({
|
||||||
|
...proTableRef?.value?.searchParam,
|
||||||
|
...proTableRef?.value?.pageable
|
||||||
|
});
|
||||||
await useExport(result);
|
await useExport(result);
|
||||||
};
|
};
|
||||||
//导出
|
//导出
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ import ProTable from "@/components/ProTable/index.vue";
|
|||||||
import { messageBox } from "@/utils/messageBox";
|
import { messageBox } from "@/utils/messageBox";
|
||||||
import { useMsg } from "@/hooks/useMsg";
|
import { useMsg } from "@/hooks/useMsg";
|
||||||
import { useSearchInfoArray } from "@/hooks/useSearch";
|
import { useSearchInfoArray } from "@/hooks/useSearch";
|
||||||
const h = import.meta.env.VITE_APP_API_BASE_UPLOAD_URL;
|
import { h } from "@/utils/url";
|
||||||
//列表接口
|
//列表接口
|
||||||
import { getArticleTrashListApi, getArticleTrashDelApi, getArticleTrashRestoreApi } from "@/api/modules/articleRecycle";
|
import { getArticleTrashListApi, getArticleTrashDelApi, getArticleTrashRestoreApi } from "@/api/modules/articleRecycle";
|
||||||
import { getArticleClassDataApi } from "@/api/modules/articleList";
|
import { getArticleClassDataApi } from "@/api/modules/articleList";
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ import ProTable from "@/components/ProTable/index.vue";
|
|||||||
import { messageBox } from "@/utils/messageBox";
|
import { messageBox } from "@/utils/messageBox";
|
||||||
import { useMsg } from "@/hooks/useMsg";
|
import { useMsg } from "@/hooks/useMsg";
|
||||||
import { useExport } from "@/hooks/useExport";
|
import { useExport } from "@/hooks/useExport";
|
||||||
const h = import.meta.env.VITE_APP_API_BASE_UPLOAD_URL;
|
import { h } from "@/utils/url";
|
||||||
//列表接口
|
//列表接口
|
||||||
|
|
||||||
import {
|
import {
|
||||||
@@ -61,7 +61,10 @@ const dataStore = reactive<any>({
|
|||||||
});
|
});
|
||||||
//导出
|
//导出
|
||||||
const getArticleRemarkExport = async () => {
|
const getArticleRemarkExport = async () => {
|
||||||
const result = await getArticleRemarkExportApi(dataStore.ruleForm);
|
const result = await getArticleRemarkExportApi({
|
||||||
|
...proTableRef?.value?.searchParam,
|
||||||
|
...proTableRef?.value?.pageable
|
||||||
|
});
|
||||||
await useExport(result);
|
await useExport(result);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -42,6 +42,7 @@
|
|||||||
ref="formRef"
|
ref="formRef"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- @handleRadioGroupEmits="handleRadioGroupEmits" -->
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div style="flex: auto">
|
<div style="flex: auto">
|
||||||
<el-button @click="handleResetClick">重置</el-button>
|
<el-button @click="handleResetClick">重置</el-button>
|
||||||
@@ -57,7 +58,7 @@ import ProTable from "@/components/ProTable/index.vue";
|
|||||||
import rulesForm from "@/components/rulesForm/index.vue";
|
import rulesForm from "@/components/rulesForm/index.vue";
|
||||||
import { messageBox } from "@/utils/messageBox";
|
import { messageBox } from "@/utils/messageBox";
|
||||||
import { useMsg } from "@/hooks/useMsg";
|
import { useMsg } from "@/hooks/useMsg";
|
||||||
const h = import.meta.env.VITE_APP_API_BASE_UPLOAD_URL;
|
import { h } from "@/utils/url";
|
||||||
//列表接口
|
//列表接口
|
||||||
import {
|
import {
|
||||||
getBannerClassListApi,
|
getBannerClassListApi,
|
||||||
@@ -99,6 +100,18 @@ const handleConfirmClick = () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// const handleRadioGroupEmits = (value: any) => {
|
||||||
|
// // if (value === "image") {
|
||||||
|
// // dataStore.editFormData = EDIT_FORM_DATA;
|
||||||
|
// // dataStore.rules = RULES;
|
||||||
|
// // } else {
|
||||||
|
// // dataStore.editFormData = EDIT_FORM_DATA1;
|
||||||
|
// // dataStore.rules = RULES1;
|
||||||
|
// // }
|
||||||
|
// console.log(value, "=========value============");
|
||||||
|
// };
|
||||||
|
|
||||||
//重置验证状态
|
//重置验证状态
|
||||||
const resetFields = () => {
|
const resetFields = () => {
|
||||||
if (!formRef.value!.ruleFormRef) return;
|
if (!formRef.value!.ruleFormRef) return;
|
||||||
|
|||||||
@@ -60,12 +60,7 @@ export const EDIT_FORM_DATA: FormItem[] = [
|
|||||||
placeholder: "请选择",
|
placeholder: "请选择",
|
||||||
type: "select",
|
type: "select",
|
||||||
label: "Banner分类: ",
|
label: "Banner分类: ",
|
||||||
options: [
|
options: []
|
||||||
{
|
|
||||||
value: "1",
|
|
||||||
label: "Level one 1"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: "sort",
|
prop: "sort",
|
||||||
@@ -137,12 +132,7 @@ export const EDIT_FORM_DATA1: FormItem[] = [
|
|||||||
placeholder: "请选择",
|
placeholder: "请选择",
|
||||||
type: "select",
|
type: "select",
|
||||||
label: "Banner分类: ",
|
label: "Banner分类: ",
|
||||||
options: [
|
options: []
|
||||||
{
|
|
||||||
value: "1",
|
|
||||||
label: "Level one 1"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: "sort",
|
prop: "sort",
|
||||||
@@ -150,15 +140,15 @@ export const EDIT_FORM_DATA1: FormItem[] = [
|
|||||||
type: "inputNumber",
|
type: "inputNumber",
|
||||||
label: "Banner排序: "
|
label: "Banner排序: "
|
||||||
},
|
},
|
||||||
{
|
// {
|
||||||
prop: "link",
|
// prop: "link",
|
||||||
placeholder: "请输入",
|
// placeholder: "请输入",
|
||||||
type: "inputSelect",
|
// type: "inputSelect",
|
||||||
label: "链接地址: ",
|
// label: "链接地址: ",
|
||||||
placeholder1: "请选择",
|
// placeholder1: "请选择",
|
||||||
prop1: "link_type",
|
// prop1: "link_type",
|
||||||
options: []
|
// options: []
|
||||||
},
|
// },
|
||||||
{
|
{
|
||||||
prop: "video",
|
prop: "video",
|
||||||
type: "video",
|
type: "video",
|
||||||
|
|||||||
@@ -57,7 +57,6 @@
|
|||||||
@check="handleCheck"
|
@check="handleCheck"
|
||||||
placeholder="请选择"
|
placeholder="请选择"
|
||||||
style="padding: 0"
|
style="padding: 0"
|
||||||
@visible-change="visibleChange"
|
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
@@ -81,7 +80,7 @@ import { useMsg } from "@/hooks/useMsg";
|
|||||||
import { useExport } from "@/hooks/useExport";
|
import { useExport } from "@/hooks/useExport";
|
||||||
import { integerRexg } from "@/utils/regexp/index";
|
import { integerRexg } from "@/utils/regexp/index";
|
||||||
// 图片地址
|
// 图片地址
|
||||||
const h = import.meta.env.VITE_APP_API_BASE_UPLOAD_URL;
|
import { h } from "@/utils/url";
|
||||||
// 列表接口
|
// 列表接口
|
||||||
import {
|
import {
|
||||||
getBannerListApi,
|
getBannerListApi,
|
||||||
@@ -90,9 +89,10 @@ import {
|
|||||||
getBannerListSortApi,
|
getBannerListSortApi,
|
||||||
getBannerUpApi,
|
getBannerUpApi,
|
||||||
getBannerListSaveApi,
|
getBannerListSaveApi,
|
||||||
getBannerListExportApi
|
getBannerListExportApi,
|
||||||
|
getBannerClassListApi
|
||||||
} from "@/api/modules/banner";
|
} from "@/api/modules/banner";
|
||||||
import { getBannerClassListApi } from "@/api/modules/bannerClass";
|
// import { getBannerClassListApi } from "@/api/modules/bannerClass";
|
||||||
import { getSystemUrlsApi } from "@/api/modules/home";
|
import { getSystemUrlsApi } from "@/api/modules/home";
|
||||||
// 深拷贝方法
|
// 深拷贝方法
|
||||||
import { cloneDeep } from "lodash-es";
|
import { cloneDeep } from "lodash-es";
|
||||||
@@ -113,7 +113,7 @@ const dataStore = reactive<any>({
|
|||||||
formData: FORM_DATA, // 搜索配置项 dataStore.formData
|
formData: FORM_DATA, // 搜索配置项 dataStore.formData
|
||||||
visible: false,
|
visible: false,
|
||||||
data: [],
|
data: [],
|
||||||
is: false
|
isFirstRequest: true
|
||||||
});
|
});
|
||||||
|
|
||||||
const selectedNodes = ref(null);
|
const selectedNodes = ref(null);
|
||||||
@@ -126,11 +126,7 @@ const treeProps = {
|
|||||||
label: "label",
|
label: "label",
|
||||||
value: "value"
|
value: "value"
|
||||||
};
|
};
|
||||||
const visibleChange = (is: any) => {
|
|
||||||
dataStore.is = is;
|
|
||||||
if (dataStore.is) {
|
|
||||||
}
|
|
||||||
};
|
|
||||||
const buildTree = (data: any, outerLinkTo: any = "") => {
|
const buildTree = (data: any, outerLinkTo: any = "") => {
|
||||||
return data.map((item: any) => {
|
return data.map((item: any) => {
|
||||||
const { name, id, url, data: childData = [], children: nestedChildren = [] } = item;
|
const { name, id, url, data: childData = [], children: nestedChildren = [] } = item;
|
||||||
@@ -149,15 +145,27 @@ const buildTree = (data: any, outerLinkTo: any = "") => {
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
let isFirstRequest = true;
|
// let isFirstRequest = true;
|
||||||
|
const handleRadioGroupEmits = (value: any) => {
|
||||||
|
getBannerClassList();
|
||||||
|
if (value === "image") {
|
||||||
|
dataStore.isFirstRequest = true;
|
||||||
|
dataStore.editFormData = EDIT_FORM_DATA;
|
||||||
|
dataStore.rules = RULES;
|
||||||
|
} else {
|
||||||
|
dataStore.editFormData = EDIT_FORM_DATA1;
|
||||||
|
dataStore.rules = RULES1;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const getSystemUrls = async (node: any, resolve: any) => {
|
const getSystemUrls = async (node: any, resolve: any) => {
|
||||||
//第一次请求
|
//第一次请求
|
||||||
if (isFirstRequest) {
|
if (dataStore.isFirstRequest) {
|
||||||
const result = await getSystemUrlsApi();
|
const result = await getSystemUrlsApi();
|
||||||
if (result?.code === 0) {
|
if (result?.code === 0) {
|
||||||
const children = buildTree(result?.data);
|
const children = buildTree(result?.data);
|
||||||
resolve(children);
|
resolve(children);
|
||||||
isFirstRequest = false;
|
dataStore.isFirstRequest = false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//第二次请求
|
//第二次请求
|
||||||
@@ -212,23 +220,32 @@ const handleCheck = (checkedNodes: any, values: any) => {
|
|||||||
|
|
||||||
// 更新
|
// 更新
|
||||||
const getBannerUp = async () => {
|
const getBannerUp = async () => {
|
||||||
|
if (dataStore.editRuleForm.type === "video") {
|
||||||
|
dataStore.editRuleForm.link_to = "";
|
||||||
|
dataStore.editRuleForm.link = "";
|
||||||
|
}
|
||||||
|
if (dataStore.editRuleForm.type === "image") {
|
||||||
|
dataStore.editRuleForm.video = "";
|
||||||
|
}
|
||||||
const result = await getBannerUpApi(dataStore.editRuleForm);
|
const result = await getBannerUpApi(dataStore.editRuleForm);
|
||||||
if (result?.code === 0) {
|
if (result?.code === 0) {
|
||||||
dataStore.visible = false;
|
dataStore.visible = false;
|
||||||
dataStore.editRuleForm = cloneDeep(EDIT_RULE_FORM);
|
dataStore.editRuleForm = cloneDeep(EDIT_RULE_FORM);
|
||||||
formRef!.value!.ruleFormRef.resetFields();
|
formRef!.value!.ruleFormRef.resetFields();
|
||||||
proTableRef?.value?.getTableList();
|
proTableRef?.value?.getTableList();
|
||||||
|
dataStore.isFirstRequest = true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// 分类
|
// 分类
|
||||||
const getBannerClassList = async () => {
|
const getBannerClassList = async () => {
|
||||||
const result = await getBannerClassListApi({ page: 1, size: 500 });
|
const result = await getBannerClassListApi();
|
||||||
if (result?.code === 0) {
|
if (result?.code === 0) {
|
||||||
let arr: any = [];
|
let arr: any = [];
|
||||||
result?.data?.data?.forEach((item: any) => {
|
result?.data?.forEach((item: any) => {
|
||||||
arr.push({ value: item.id, label: item.name });
|
arr.push({ value: item.id, label: item.name });
|
||||||
});
|
});
|
||||||
|
console.log(arr, "========arr===============");
|
||||||
dataStore.formData[1].options = arr;
|
dataStore.formData[1].options = arr;
|
||||||
dataStore.editFormData[4].options = arr;
|
dataStore.editFormData[4].options = arr;
|
||||||
}
|
}
|
||||||
@@ -241,13 +258,17 @@ const getBannerListSave = async () => {
|
|||||||
dataStore.visible = false;
|
dataStore.visible = false;
|
||||||
dataStore.editRuleForm = cloneDeep(EDIT_RULE_FORM);
|
dataStore.editRuleForm = cloneDeep(EDIT_RULE_FORM);
|
||||||
useMsg("success", result?.msg);
|
useMsg("success", result?.msg);
|
||||||
|
dataStore.isFirstRequest = true;
|
||||||
formRef!.value!.ruleFormRef.resetFields();
|
formRef!.value!.ruleFormRef.resetFields();
|
||||||
proTableRef?.value?.getTableList();
|
proTableRef?.value?.getTableList();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
// 导出接口
|
// 导出接口
|
||||||
const getArticleListExport = async () => {
|
const getArticleListExport = async () => {
|
||||||
const result = await getBannerListExportApi(dataStore.ruleForm);
|
const result = await getBannerListExportApi({
|
||||||
|
...proTableRef?.value?.searchParam,
|
||||||
|
...proTableRef?.value?.pageable
|
||||||
|
});
|
||||||
await useExport(result);
|
await useExport(result);
|
||||||
};
|
};
|
||||||
// 导出
|
// 导出
|
||||||
@@ -290,17 +311,9 @@ const handleBeforeClone = () => {
|
|||||||
dataStore.editRuleForm = cloneDeep(EDIT_RULE_FORM);
|
dataStore.editRuleForm = cloneDeep(EDIT_RULE_FORM);
|
||||||
resetFields();
|
resetFields();
|
||||||
dataStore.visible = false;
|
dataStore.visible = false;
|
||||||
|
dataStore.isFirstRequest = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleRadioGroupEmits = (value: any) => {
|
|
||||||
if (value === "image") {
|
|
||||||
dataStore.editFormData = EDIT_FORM_DATA;
|
|
||||||
dataStore.rules = RULES;
|
|
||||||
} else {
|
|
||||||
dataStore.editFormData = EDIT_FORM_DATA1;
|
|
||||||
dataStore.rules = RULES1;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
// 删除
|
// 删除
|
||||||
const getBannerDel = async (id: any) => {
|
const getBannerDel = async (id: any) => {
|
||||||
messageBox("你确定要删除?", async () => {
|
messageBox("你确定要删除?", async () => {
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ import rulesForm from "@/components/rulesForm/index.vue";
|
|||||||
import { messageBox } from "@/utils/messageBox";
|
import { messageBox } from "@/utils/messageBox";
|
||||||
import { useMsg } from "@/hooks/useMsg";
|
import { useMsg } from "@/hooks/useMsg";
|
||||||
import { integerRexg } from "@/utils/regexp/index";
|
import { integerRexg } from "@/utils/regexp/index";
|
||||||
const h = import.meta.env.VITE_APP_API_BASE_UPLOAD_URL;
|
import { h } from "@/utils/url";
|
||||||
//列表接口
|
//列表接口
|
||||||
import {
|
import {
|
||||||
getCategoryListApi,
|
getCategoryListApi,
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ const proTableRef = ref<any>(null);
|
|||||||
const $router = useRouter();
|
const $router = useRouter();
|
||||||
|
|
||||||
//图片地址
|
//图片地址
|
||||||
const h = import.meta.env.VITE_APP_API_BASE_UPLOAD_URL;
|
import { h } from "@/utils/url";
|
||||||
// 数据源
|
// 数据源
|
||||||
const dataStore = reactive<any>({
|
const dataStore = reactive<any>({
|
||||||
editTableData: cloneDeep(EDIT_TABLE_DATA), //添加|编辑里的表格数据
|
editTableData: cloneDeep(EDIT_TABLE_DATA), //添加|编辑里的表格数据
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ import { RULE_FORM, FORM_DATA, COLUMNS } from "./constant/index";
|
|||||||
// 获取 ProTable 元素,调用其获取刷新数据方法(还能获取到当前查询参数,方便导出携带参数)
|
// 获取 ProTable 元素,调用其获取刷新数据方法(还能获取到当前查询参数,方便导出携带参数)
|
||||||
const proTableRef = ref<any>(null);
|
const proTableRef = ref<any>(null);
|
||||||
//图片地址
|
//图片地址
|
||||||
const h = import.meta.env.VITE_APP_API_BASE_UPLOAD_URL;
|
import { h } from "@/utils/url";
|
||||||
// 数据源
|
// 数据源
|
||||||
const dataStore = reactive<any>({
|
const dataStore = reactive<any>({
|
||||||
columns: COLUMNS, //列表配置项
|
columns: COLUMNS, //列表配置项
|
||||||
|
|||||||
@@ -40,7 +40,10 @@ const handleExport = () => {
|
|||||||
};
|
};
|
||||||
//导出
|
//导出
|
||||||
const getMenusLisExport = async () => {
|
const getMenusLisExport = async () => {
|
||||||
const result = await getAgentListExportApi(dataStore.ruleForm);
|
const result = await getAgentListExportApi({
|
||||||
|
...proTableRef?.value?.searchParam,
|
||||||
|
...proTableRef?.value?.pageable
|
||||||
|
});
|
||||||
await useExport(result);
|
await useExport(result);
|
||||||
};
|
};
|
||||||
const getAgentTypesList = async () => {
|
const getAgentTypesList = async () => {
|
||||||
|
|||||||
@@ -40,7 +40,10 @@ const handleExport = () => {
|
|||||||
};
|
};
|
||||||
//导出
|
//导出
|
||||||
const getMenusLisExport = async () => {
|
const getMenusLisExport = async () => {
|
||||||
const result = await getLeaveMsgListExportApi(dataStore.ruleForm);
|
const result = await getLeaveMsgListExportApi({
|
||||||
|
...proTableRef?.value?.searchParam,
|
||||||
|
...proTableRef?.value?.pageable
|
||||||
|
});
|
||||||
await useExport(result);
|
await useExport(result);
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -40,7 +40,10 @@ const handleExport = () => {
|
|||||||
};
|
};
|
||||||
//导出
|
//导出
|
||||||
const getBPListExport = async () => {
|
const getBPListExport = async () => {
|
||||||
const result = await getBPListExportApi(dataStore.ruleForm);
|
const result = await getBPListExportApi({
|
||||||
|
...proTableRef?.value?.searchParam,
|
||||||
|
...proTableRef?.value?.pageable
|
||||||
|
});
|
||||||
await useExport(result);
|
await useExport(result);
|
||||||
};
|
};
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -97,6 +97,7 @@ const dataStore = reactive<any>({
|
|||||||
const getProductBuypassListSave = async (params: any) => {
|
const getProductBuypassListSave = async (params: any) => {
|
||||||
const result = await getProductBuypassListSaveApi(params);
|
const result = await getProductBuypassListSaveApi(params);
|
||||||
if (result?.code === 0) {
|
if (result?.code === 0) {
|
||||||
|
useMsg("success", result?.msg);
|
||||||
// proTableRef?.value?.getTableList();
|
// proTableRef?.value?.getTableList();
|
||||||
// console.log(result?.data);
|
// console.log(result?.data);
|
||||||
}
|
}
|
||||||
@@ -105,6 +106,7 @@ const getProductBuypassListSave = async (params: any) => {
|
|||||||
const getProductBuypassUpdate = async (params: any) => {
|
const getProductBuypassUpdate = async (params: any) => {
|
||||||
const result = await getProductBuypassUpdateApi(params);
|
const result = await getProductBuypassUpdateApi(params);
|
||||||
if (result?.code === 0) {
|
if (result?.code === 0) {
|
||||||
|
useMsg("success", result?.msg);
|
||||||
// console.log(result?.data);
|
// console.log(result?.data);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -136,17 +138,16 @@ const handleInputOrChange = (it: any, scope: any, itIndex: any) => {
|
|||||||
platform_id = item.id;
|
platform_id = item.id;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
//更新
|
|
||||||
if (link_id) {
|
//添加
|
||||||
|
if (!link_id) {
|
||||||
getProductBuypassListSave({
|
getProductBuypassListSave({
|
||||||
id: link_id,
|
product_id: scope.row.id,
|
||||||
param: {
|
|
||||||
platform_id,
|
platform_id,
|
||||||
link
|
link
|
||||||
}
|
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
//添加
|
// 更新
|
||||||
getProductBuypassUpdate({
|
getProductBuypassUpdate({
|
||||||
id: link_id,
|
id: link_id,
|
||||||
param: {
|
param: {
|
||||||
@@ -177,7 +178,10 @@ const handleExport = () => {
|
|||||||
|
|
||||||
//导出接口
|
//导出接口
|
||||||
const getProductBuypassListExport = async () => {
|
const getProductBuypassListExport = async () => {
|
||||||
const result = await getProductBuypassListExportApi(dataStore.ruleForm);
|
const result = await getProductBuypassListExportApi({
|
||||||
|
...proTableRef?.value?.searchParam,
|
||||||
|
...proTableRef?.value?.pageable
|
||||||
|
});
|
||||||
await useExport(result);
|
await useExport(result);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
<el-radio :value="0" :label="0">否</el-radio>
|
<el-radio :value="0" :label="0">否</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="是否推荐" style="width: 440px">
|
<el-form-item label="热门" style="width: 440px">
|
||||||
<el-radio-group v-model="_ruleFormParam.is_hot">
|
<el-radio-group v-model="_ruleFormParam.is_hot">
|
||||||
<el-radio :value="1" :label="1">是</el-radio>
|
<el-radio :value="1" :label="1">是</el-radio>
|
||||||
<el-radio :value="0" :label="0">否</el-radio>
|
<el-radio :value="0" :label="0">否</el-radio>
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
<el-form-item label="SEO标题">
|
<el-form-item label="SEO标题">
|
||||||
<el-input v-model="_ruleFormParam.seo_title" style="width: 440px" />
|
<el-input v-model="_ruleFormParam.seo_title" style="width: 440px" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="SEO关键字">
|
<el-form-item label="SEO关键词">
|
||||||
<el-input v-model="_ruleFormParam.seo_keywords" style="width: 440px" />
|
<el-input v-model="_ruleFormParam.seo_keywords" style="width: 440px" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="SEO描述">
|
<el-form-item label="SEO描述">
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ export const BASIC_INFO_FORM_DATA: FormItem[] = [
|
|||||||
prop: "seo_keyword",
|
prop: "seo_keyword",
|
||||||
placeholder: "请输入",
|
placeholder: "请输入",
|
||||||
type: "input",
|
type: "input",
|
||||||
label: "SEO关键字: "
|
label: "SEO关键词: "
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: "seo_desc",
|
prop: "seo_desc",
|
||||||
|
|||||||
@@ -14,12 +14,12 @@
|
|||||||
<el-tab-pane label="图片信息" name="imgInfo">
|
<el-tab-pane label="图片信息" name="imgInfo">
|
||||||
<imgInfo :imgInfoData="dataStore.imgInfoData" ref="imgInfoRef" :attrList="dataStore.attrList" />
|
<imgInfo :imgInfoData="dataStore.imgInfoData" ref="imgInfoRef" :attrList="dataStore.attrList" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="详细内容" name="third">
|
<el-tab-pane label="产品详情" name="third">
|
||||||
<div style="width: 1280px; margin: 0 auto">
|
<div style="width: 1280px; margin: 0 auto">
|
||||||
<WangEditor v-model:value="dataStore.detail" />
|
<WangEditor v-model:value="dataStore.detail" />
|
||||||
</div>
|
</div>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="相关信息及下载" name="related">
|
<el-tab-pane label="相关信息" name="related">
|
||||||
<!-- <related ref="relatedRef" :data="dataStore.related" /> -->
|
<!-- <related ref="relatedRef" :data="dataStore.related" /> -->
|
||||||
<div style="margin-bottom: 16px">
|
<div style="margin-bottom: 16px">
|
||||||
<el-button type="primary" size="small" @click="handleRelatedAdd()">添加行</el-button>
|
<el-button type="primary" size="small" @click="handleRelatedAdd()">添加行</el-button>
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ import ProTable from "@/components/ProTable/index.vue";
|
|||||||
import { integerRexg } from "@/utils/regexp/index";
|
import { integerRexg } from "@/utils/regexp/index";
|
||||||
import { useMsg } from "@/hooks/useMsg";
|
import { useMsg } from "@/hooks/useMsg";
|
||||||
import { useExport } from "@/hooks/useExport";
|
import { useExport } from "@/hooks/useExport";
|
||||||
const h = import.meta.env.VITE_APP_API_BASE_UPLOAD_URL;
|
import { h } from "@/utils/url";
|
||||||
//列表接口
|
//列表接口
|
||||||
//getProductDelApi
|
//getProductDelApi
|
||||||
import {
|
import {
|
||||||
@@ -85,7 +85,10 @@ const handleExport = () => {
|
|||||||
};
|
};
|
||||||
//导出接口
|
//导出接口
|
||||||
const getProductListExport = async () => {
|
const getProductListExport = async () => {
|
||||||
const result = await getProductListExportApi(dataStore.ruleForm);
|
const result = await getProductListExportApi({
|
||||||
|
...proTableRef?.value?.searchParam,
|
||||||
|
...proTableRef?.value?.pageable
|
||||||
|
});
|
||||||
await useExport(result);
|
await useExport(result);
|
||||||
};
|
};
|
||||||
//上下架
|
//上下架
|
||||||
@@ -128,9 +131,6 @@ const handleInput = (row: any) => {
|
|||||||
|
|
||||||
//按钮点击事件
|
//按钮点击事件
|
||||||
const handleBtnClick = (type: any, row: any) => {
|
const handleBtnClick = (type: any, row: any) => {
|
||||||
// if (type === "删除") {
|
|
||||||
// // getProductDel(row.id);
|
|
||||||
// }
|
|
||||||
//添加SUK和删除暂时无法操作
|
//添加SUK和删除暂时无法操作
|
||||||
if (type == "添加SUK" || type === "删除") {
|
if (type == "添加SUK" || type === "删除") {
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
<script setup lang="ts" name="productRecycleIndex">
|
<script setup lang="ts" name="productRecycleIndex">
|
||||||
import ProTable from "@/components/ProTable/index.vue";
|
import ProTable from "@/components/ProTable/index.vue";
|
||||||
import { messageBox } from "@/utils/messageBox";
|
import { messageBox } from "@/utils/messageBox";
|
||||||
const h = import.meta.env.VITE_APP_API_BASE_UPLOAD_URL;
|
import { h } from "@/utils/url";
|
||||||
//列表接口
|
//列表接口
|
||||||
import { getProductTrashListApi, getProductTrashDelApi, getProductTrashRestoreApi } from "@/api/modules/productRecycle";
|
import { getProductTrashListApi, getProductTrashDelApi, getProductTrashRestoreApi } from "@/api/modules/productRecycle";
|
||||||
//深拷贝方法
|
//深拷贝方法
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ import {
|
|||||||
} from "@/api/modules/videoClass";
|
} from "@/api/modules/videoClass";
|
||||||
//深拷贝方法
|
//深拷贝方法
|
||||||
import { cloneDeep } from "lodash-es";
|
import { cloneDeep } from "lodash-es";
|
||||||
const h = import.meta.env.VITE_APP_API_BASE_UPLOAD_URL;
|
import { h } from "@/utils/url";
|
||||||
//表格和搜索條件
|
//表格和搜索條件
|
||||||
import { RULE_FORM, FORM_DATA, COLUMNS, EDIT_FORM_DATA, EDIT_RULE_FORM, RULES } from "./constant/index";
|
import { RULE_FORM, FORM_DATA, COLUMNS, EDIT_FORM_DATA, EDIT_RULE_FORM, RULES } from "./constant/index";
|
||||||
// 获取 ProTable 元素,调用其获取刷新数据方法(还能获取到当前查询参数,方便导出携带参数)
|
// 获取 ProTable 元素,调用其获取刷新数据方法(还能获取到当前查询参数,方便导出携带参数)
|
||||||
|
|||||||
@@ -69,9 +69,10 @@ import {
|
|||||||
getVideoListDelApi,
|
getVideoListDelApi,
|
||||||
getVideoReadApi,
|
getVideoReadApi,
|
||||||
getVideoUpdateApi,
|
getVideoUpdateApi,
|
||||||
getVideoSaveApi
|
getVideoSaveApi,
|
||||||
|
getVideoClassListApi
|
||||||
} from "@/api/modules/videoList";
|
} from "@/api/modules/videoList";
|
||||||
import { getVideoClassListApi } from "@/api/modules/videoClass";
|
// import { getVideoClassListApi } from "@/api/modules/videoClass";
|
||||||
//深拷贝方法
|
//深拷贝方法
|
||||||
import { cloneDeep } from "lodash-es";
|
import { cloneDeep } from "lodash-es";
|
||||||
//表格和搜索條件
|
//表格和搜索條件
|
||||||
@@ -81,7 +82,7 @@ import { useExport } from "@/hooks/useExport";
|
|||||||
const proTableRef = ref<any>(null);
|
const proTableRef = ref<any>(null);
|
||||||
const formRef: any = ref(null);
|
const formRef: any = ref(null);
|
||||||
//图片地址
|
//图片地址
|
||||||
const h = import.meta.env.VITE_APP_API_BASE_UPLOAD_URL;
|
import { h } from "@/utils/url";
|
||||||
// 数据源
|
// 数据源
|
||||||
const dataStore = reactive<any>({
|
const dataStore = reactive<any>({
|
||||||
title: "添加视频",
|
title: "添加视频",
|
||||||
@@ -124,11 +125,11 @@ const handleResetClick = () => {
|
|||||||
|
|
||||||
//视频分类接口
|
//视频分类接口
|
||||||
const getVideoClassList = async () => {
|
const getVideoClassList = async () => {
|
||||||
const result = await getVideoClassListApi({ page: 1, size: 500 });
|
const result = await getVideoClassListApi();
|
||||||
if (result?.code === 0) {
|
if (result?.code === 0) {
|
||||||
let arr: any[] = [];
|
let arr: any[] = [];
|
||||||
if (result?.data?.data?.length) {
|
if (result?.data?.length) {
|
||||||
result?.data?.data?.forEach((item: any) => {
|
result?.data?.forEach((item: any) => {
|
||||||
let obj = {
|
let obj = {
|
||||||
value: item.id,
|
value: item.id,
|
||||||
label: item.name
|
label: item.name
|
||||||
@@ -166,6 +167,7 @@ const getVideoSave = async () => {
|
|||||||
useMsg("success", msg);
|
useMsg("success", msg);
|
||||||
dataStore.visible = false;
|
dataStore.visible = false;
|
||||||
dataStore.editRuleForm = cloneDeep(EDIT_RULE_FORM);
|
dataStore.editRuleForm = cloneDeep(EDIT_RULE_FORM);
|
||||||
|
proTableRef?.value?.getTableList();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
//更新
|
//更新
|
||||||
@@ -176,11 +178,15 @@ const getVideoUpdate = async () => {
|
|||||||
useMsg("success", msg);
|
useMsg("success", msg);
|
||||||
dataStore.visible = false;
|
dataStore.visible = false;
|
||||||
dataStore.editRuleForm = cloneDeep(EDIT_RULE_FORM);
|
dataStore.editRuleForm = cloneDeep(EDIT_RULE_FORM);
|
||||||
|
proTableRef?.value?.getTableList();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
//导出接口
|
//导出接口
|
||||||
const getProductListExport = async () => {
|
const getProductListExport = async () => {
|
||||||
const result = await getVideoListExportApi(dataStore.ruleForm);
|
const result = await getVideoListExportApi({
|
||||||
|
...proTableRef?.value?.searchParam,
|
||||||
|
...proTableRef?.value?.pageable
|
||||||
|
});
|
||||||
await useExport(result);
|
await useExport(result);
|
||||||
};
|
};
|
||||||
//删除
|
//删除
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ import { cloneDeep } from "lodash-es";
|
|||||||
//表格和搜索條件
|
//表格和搜索條件
|
||||||
import { RULE_FORM, FORM_DATA, COLUMNS } from "./constant/index";
|
import { RULE_FORM, FORM_DATA, COLUMNS } from "./constant/index";
|
||||||
//图片地址
|
//图片地址
|
||||||
const h = import.meta.env.VITE_APP_API_BASE_UPLOAD_URL;
|
import { h } from "@/utils/url";
|
||||||
// 获取 ProTable 元素,调用其获取刷新数据方法(还能获取到当前查询参数,方便导出携带参数)
|
// 获取 ProTable 元素,调用其获取刷新数据方法(还能获取到当前查询参数,方便导出携带参数)
|
||||||
const proTableRef = ref<any>(null);
|
const proTableRef = ref<any>(null);
|
||||||
// 数据源
|
// 数据源
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
import rulesForm from "@/components/rulesForm/index.vue";
|
import rulesForm from "@/components/rulesForm/index.vue";
|
||||||
import ProTable from "@/components/ProTable/index.vue";
|
import ProTable from "@/components/ProTable/index.vue";
|
||||||
// import RecursiveForm from "./components/RecursiveForm";
|
// import RecursiveForm from "./components/RecursiveForm";
|
||||||
const h = import.meta.env.VITE_APP_API_BASE_UPLOAD_URL;
|
import { h } from "@/utils/url";
|
||||||
import { messageBox } from "@/utils/messageBox";
|
import { messageBox } from "@/utils/messageBox";
|
||||||
import { useMsg } from "@/hooks/useMsg";
|
import { useMsg } from "@/hooks/useMsg";
|
||||||
//列表接口
|
//列表接口
|
||||||
|
|||||||
@@ -292,7 +292,7 @@ const getMenusLisSave = async () => {
|
|||||||
};
|
};
|
||||||
//导出
|
//导出
|
||||||
const getMenusLisExport = async () => {
|
const getMenusLisExport = async () => {
|
||||||
const result = await getMenusLisExportApi(dataStore.ruleForm);
|
const result = await getMenusLisExportApi(dataStore.searchParam);
|
||||||
await useExport(result);
|
await useExport(result);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user