feat: 🚀 修复bug
This commit is contained in:
@@ -13,14 +13,14 @@
|
||||
:label="item.label"
|
||||
:prop="item.prop"
|
||||
:label-width="labelWidth || '81px'"
|
||||
:rules="item.rules"
|
||||
:error="item.error"
|
||||
:required="item.required"
|
||||
:show-message="item.showMessage ? item.showMessage : false"
|
||||
:inline-message="item.inlineMessage"
|
||||
:style="item.style ? item.style : 'margin-right:8px;position: relative;'"
|
||||
:required="item.required"
|
||||
:class="item.class ? item.class : 'form-item'"
|
||||
>
|
||||
<!-- :required="item.required" -->
|
||||
<template v-if="item.type === 'input'">
|
||||
<el-input
|
||||
v-model.trim="_searchResult[`${item.prop}`]"
|
||||
@@ -31,6 +31,15 @@
|
||||
>
|
||||
</el-input>
|
||||
</template>
|
||||
<template v-if="item.type === 'textarea'">
|
||||
<el-input
|
||||
v-model.trim="_searchResult[`${item.prop}`]"
|
||||
:placeholder="item.placeholder"
|
||||
:disabled="item.disabled"
|
||||
type="textarea"
|
||||
>
|
||||
</el-input>
|
||||
</template>
|
||||
<template v-if="item.type === 'inputs'">
|
||||
<el-input
|
||||
v-model.trim="_searchResult[`${item.startProp}`]"
|
||||
@@ -142,6 +151,7 @@
|
||||
class="m-2 select"
|
||||
:remote-method="(query:any)=> handleSelectMultipleRemote(query, item)"
|
||||
:disabled="item.disabled"
|
||||
style="max-height: 300px; overflow-y: auto"
|
||||
>
|
||||
<el-option
|
||||
:label="option.label"
|
||||
@@ -322,6 +332,9 @@ const valueVerifyInputs = (item: any) => {
|
||||
// const handleSelectMultipleClear = (item: any) => {
|
||||
// console.log(item, "===========>");
|
||||
// };
|
||||
defineExpose({
|
||||
formElement: ruleFormRef
|
||||
});
|
||||
</script>
|
||||
<style lang="scss" scope>
|
||||
.search-box1 {
|
||||
|
||||
@@ -56,6 +56,7 @@ watch(
|
||||
if (route.meta.isFull) return;
|
||||
tabsMenuValue.value = route.fullPath;
|
||||
let title: any = route.query.title ? route.query.title : route.meta.title;
|
||||
|
||||
const tabsParams = {
|
||||
icon: route.meta.icon as string,
|
||||
title: title,
|
||||
@@ -63,6 +64,7 @@ watch(
|
||||
name: route.name as string,
|
||||
close: !route.meta.isAffix
|
||||
};
|
||||
console.log(1232323232323);
|
||||
tabStore.addTabs(tabsParams);
|
||||
route.meta.isKeepAlive && keepAliveStore.addKeepAliveName(route.name as string);
|
||||
},
|
||||
|
||||
@@ -17,33 +17,72 @@ export const useTabsStore = defineStore({
|
||||
]
|
||||
}),
|
||||
actions: {
|
||||
// Add Tabs:按 name 去重,首页始终在最前
|
||||
async addTabs(tabItem: any) {
|
||||
// 1. 校验参数:确保 tabItem 有 name(避免异常数据)
|
||||
if (!tabItem.name) return;
|
||||
// 1. 校验参数:首页必须有 name,其他标签必须有 path
|
||||
if ((tabItem.name === "home" && !tabItem.name) || (!tabItem.name && !tabItem.path)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 2. 去重逻辑:按 name 判断是否已存在
|
||||
const isExist = this.tabsMenuList.some(item => item.name === tabItem.name);
|
||||
// 2. 区分首页和普通标签的去重逻辑
|
||||
let isExist = false;
|
||||
if (tabItem.name === "home") {
|
||||
// 首页:按 name 去重(确保唯一)
|
||||
isExist = this.tabsMenuList.some(item => item.name === "home");
|
||||
} else {
|
||||
// 普通标签:按完整 path 去重(区分参数)
|
||||
isExist = this.tabsMenuList.some(item => item.path === tabItem.path);
|
||||
}
|
||||
|
||||
if (!isExist) {
|
||||
// 3. 首页(name: "home")添加到数组开头,其他标签添加到末尾
|
||||
// 3. 首页放首位,其他放末尾
|
||||
if (tabItem.name === "home") {
|
||||
// 先移除旧的首页(防止极端情况残留),再添加新首页到最前
|
||||
// 先移除旧首页(防止重复),再添加到最前
|
||||
this.tabsMenuList = this.tabsMenuList.filter(item => item.name !== "home");
|
||||
this.tabsMenuList.unshift(tabItem); // 首页放第一位
|
||||
this.tabsMenuList.unshift(tabItem);
|
||||
} else {
|
||||
this.tabsMenuList.push(tabItem); // 非首页放末尾
|
||||
this.tabsMenuList.push(tabItem);
|
||||
}
|
||||
} else {
|
||||
// 4. 可选优化:若标签已存在,同步更新其 path(如首页参数变化时)
|
||||
// 4. 已存在时更新信息
|
||||
this.tabsMenuList = this.tabsMenuList.map(item => {
|
||||
if (item.name === tabItem.name) {
|
||||
return { ...item, path: tabItem.path }; // 仅更新 path,保留其他属性
|
||||
if (tabItem.name === "home" && item.name === "home") {
|
||||
// 首页:更新 path 等信息(如首页参数变化)
|
||||
return { ...item, path: tabItem.path };
|
||||
} else if (item.path === tabItem.path) {
|
||||
// 普通标签:全量更新(如标题、参数)
|
||||
return { ...item, ...tabItem };
|
||||
}
|
||||
return item;
|
||||
});
|
||||
}
|
||||
},
|
||||
// // Add Tabs:按 name 去重,首页始终在最前
|
||||
// async addTabs(tabItem: any) {
|
||||
// // 1. 校验参数:确保 tabItem 有 name(避免异常数据)
|
||||
// if (!tabItem.name) return;
|
||||
|
||||
// // 2. 去重逻辑:按 name 判断是否已存在
|
||||
// const isExist = this.tabsMenuList.some(item => item.name === tabItem.name);
|
||||
|
||||
// if (!isExist) {
|
||||
// // 3. 首页(name: "home")添加到数组开头,其他标签添加到末尾
|
||||
// if (tabItem.name === "home") {
|
||||
// // 先移除旧的首页(防止极端情况残留),再添加新首页到最前
|
||||
// this.tabsMenuList = this.tabsMenuList.filter(item => item.name !== "home");
|
||||
// this.tabsMenuList.unshift(tabItem); // 首页放第一位
|
||||
// } else {
|
||||
// this.tabsMenuList.push(tabItem); // 非首页放末尾
|
||||
// }
|
||||
// } else {
|
||||
// // 4. 可选优化:若标签已存在,同步更新其 path(如首页参数变化时)
|
||||
// this.tabsMenuList = this.tabsMenuList.map(item => {
|
||||
// if (item.name === tabItem.name) {
|
||||
// return { ...item, path: tabItem.path }; // 仅更新 path,保留其他属性
|
||||
// }
|
||||
// return item;
|
||||
// });
|
||||
// }
|
||||
// },
|
||||
|
||||
// Remove Tabs(原有逻辑不变,无需修改)
|
||||
async removeTabs(tabPath: string, isCurrent: boolean = true) {
|
||||
@@ -89,6 +128,7 @@ export const useTabsStore = defineStore({
|
||||
|
||||
// Set Tabs Title(原有逻辑不变)
|
||||
async setTabsTitle(title: string) {
|
||||
console.log("12332323");
|
||||
const nowFullPath = location.hash.substring(1);
|
||||
this.tabsMenuList.forEach(item => {
|
||||
if (item.path == nowFullPath) item.title = title;
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
:labelWidth="dataStore.labelWidth"
|
||||
@selectMultipleRemoveTag="handleSelectMultipleRemoveTag"
|
||||
:inline="true"
|
||||
ref="detailsRef"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -29,7 +30,7 @@ import { useMsg } from "@/hooks/useMsg";
|
||||
import { BUTTON } from "./constant/add/button";
|
||||
import { useUserStore } from "@/stores/modules/user";
|
||||
import { cloneDeep } from "lodash-es";
|
||||
|
||||
import $Bus from "@/utils/mittBus";
|
||||
const dataStore = reactive({
|
||||
formData: cloneDeep(FORM_DATA),
|
||||
ruleForm: cloneDeep(RULE_FORM),
|
||||
@@ -42,9 +43,9 @@ const dataStore = reactive({
|
||||
const userStore = useUserStore();
|
||||
const $route = useRoute();
|
||||
const $router = useRouter();
|
||||
const detailsRef = ref<any>(null);
|
||||
dataStore.formData[0].options = userStore.orgIdArr;
|
||||
const init = () => {
|
||||
//$route.query.title === "新增订阅" ? org_number: ["101"],
|
||||
if ($route.query.title === "新增订阅") {
|
||||
dataStore.ruleForm.org_number = ["101"];
|
||||
}
|
||||
@@ -65,12 +66,20 @@ const handleAdd = () => {
|
||||
})
|
||||
.then(async () => {
|
||||
dataStore.ruleForm = cloneDeep(RULE_FORM);
|
||||
dataStore.ruleForm.org_number = ["101"];
|
||||
dataStore.isAdd = true;
|
||||
detailsRef?.value?.formElement?.resetFields();
|
||||
})
|
||||
.catch(() => {});
|
||||
}
|
||||
};
|
||||
|
||||
const handleGoList = () => {
|
||||
detailsRef?.value?.formElement?.resetFields();
|
||||
setTimeout(() => {
|
||||
$router.replace({ path: "/foundation/subscribe/list/index" });
|
||||
$Bus.emit("setResetList");
|
||||
}, 300);
|
||||
};
|
||||
//添加
|
||||
const getSubscribeAdd = async (params: any) => {
|
||||
console.log(params);
|
||||
@@ -78,10 +87,7 @@ const getSubscribeAdd = async (params: any) => {
|
||||
if (result?.code === 0) {
|
||||
useMsg("success", "新增成功 !");
|
||||
dataStore.ruleForm = cloneDeep(RULE_FORM);
|
||||
init();
|
||||
setTimeout(() => {
|
||||
$router.replace({ path: "/foundation/subscribe/list/index" });
|
||||
}, 300);
|
||||
dataStore.ruleForm.org_number = ["101"];
|
||||
}
|
||||
};
|
||||
//更新
|
||||
@@ -89,6 +95,7 @@ const getSubscribeUpdate = async (params: any) => {
|
||||
const result = await getSubscribeUpdateApi($route.query.id, params);
|
||||
if (result?.code === 0) {
|
||||
useMsg("success", "更新成功 !");
|
||||
handleGoList();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ export const FORM_DATA: any[] = [
|
||||
{
|
||||
prop: "customer_number",
|
||||
placeholder: "请输入",
|
||||
type: "input",
|
||||
type: "textarea",
|
||||
label: "客户编码:",
|
||||
disabled: true,
|
||||
required: true,
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts" name="foundationSubscribeList">
|
||||
import { onMounted } from "vue";
|
||||
import SearchForm from "@/components/SearchForm/index.vue";
|
||||
import ProTable from "@/components/ProTable/index.vue";
|
||||
import PermissionButton from "@/components/PermissionButton/index.vue";
|
||||
@@ -46,7 +47,7 @@ import { ProTableInstance } from "@/components/ProTable/interface";
|
||||
import { btnClick } from "./init";
|
||||
import { useRouter } from "vue-router";
|
||||
import { useUserStore } from "@/stores/modules/user";
|
||||
|
||||
import $Bus from "@/utils/mittBus";
|
||||
//深拷贝方法
|
||||
import { cloneDeep } from "lodash-es";
|
||||
// 获取 ProTable 元素,调用其获取刷新数据方法(还能获取到当前查询参数,方便导出携带参数)
|
||||
@@ -162,6 +163,13 @@ watch(
|
||||
deep: true
|
||||
}
|
||||
);
|
||||
onMounted(() => {
|
||||
$Bus.on("setResetList", () => {
|
||||
nextTick(() => {
|
||||
proTableRef?.value!.getTableList();
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scope lang="scss">
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
import { useMsg } from "@/hooks/useMsg";
|
||||
import { getSubscribeResetListApi, getSubscribeResetListExportApi } from "@/api/modules/warehousing";
|
||||
import { cloneDeep } from "lodash-es";
|
||||
// 导出
|
||||
export const handleExport = async (params: any) => {
|
||||
const { initParam } = params;
|
||||
const result = await getSubscribeResetListExportApi(initParam);
|
||||
export const handleExport = async (data: any) => {
|
||||
const { initParam } = data;
|
||||
let params = cloneDeep(initParam);
|
||||
params.org_number =
|
||||
Array.isArray(params?.org_number) && params?.org_number?.length ? params.org_number.join(",") : params.org_number;
|
||||
const result = await getSubscribeResetListExportApi(params);
|
||||
if (result?.code === 0) {
|
||||
useMsg("success", "导出成功 !");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user