明树Git Lab

Commit 3a83439f authored by zhanghan's avatar zhanghan

调整项目信息

parent f4c9ec20
Pipeline #109870 passed with stage
in 20 seconds
import { defineStore } from "pinia";
export const useProjectInfoStore = defineStore("projectInfo", {
state: () => ({
projectInfo: null,
}),
getters: {
getProjectInfo: (state) => state.projectInfo,
},
actions: {
// 设置项目信息(增)
setProjectInfo(data) {
this.projectInfo = data;
sessionStorage.setItem("projectFinalInfo", JSON.stringify(data));
},
// 更新项目信息的某个字段(改)
updateProjectInfo(field, value) {
if (this.projectInfo) {
this.projectInfo[field] = value;
sessionStorage.setItem(
"projectFinalInfo",
JSON.stringify(this.projectInfo),
);
}
},
// 批量更新项目信息(改)
batchUpdateProjectInfo(updates) {
if (this.projectInfo) {
Object.assign(this.projectInfo, updates);
sessionStorage.setItem(
"projectFinalInfo",
JSON.stringify(this.projectInfo),
);
}
},
// 获取项目信息(查)- 优先从 state 取,没有则从 sessionStorage 恢复
loadProjectInfo() {
if (this.projectInfo) return this.projectInfo;
const raw = sessionStorage.getItem("projectFinalInfo");
if (raw) {
try {
this.projectInfo = JSON.parse(raw);
return this.projectInfo;
} catch {
return null;
}
}
return null;
},
// 通过接口获取并保存项目信息(查 + 增)
fetchProjectInfo(proxy, projectId) {
return new Promise((resolve, reject) => {
proxy.$post({
url: "/api/project/getProjectFinalInfo",
data: { id: projectId },
callback: (data) => {
this.setProjectInfo({ ...data, projectId: projectId - 0 });
resolve(data);
},
error: () => {
console.error("获取项目详情失败");
reject(new Error("获取项目详情失败"));
},
});
});
},
// 清除项目信息(删)
clearProjectInfo() {
this.projectInfo = null;
sessionStorage.removeItem("projectFinalInfo");
},
},
});
......@@ -59,6 +59,7 @@ import { useRouter } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import CommonTable from "@/components/common/commonTable.vue";
import SearchForm from "@/components/common/SearchForm.vue";
import { useProjectInfoStore } from "@/stores/projectInfo";
const handleSearch = (formData) => {
currentPage.value = 1;
......@@ -181,6 +182,9 @@ const deleteStatement = (item) => {
.catch(() => {});
};
onMounted(() => {
if (!window.location.href.includes("xmdakDetaill")) {
useProjectInfoStore().clearProjectInfo();
}
getProjectData();
});
</script>
......
......@@ -18,6 +18,7 @@
<el-form-item label="项目信息" required>
<el-select
v-model="formData.projectId"
:disabled="projectDisabled"
placeholder="请选择项目信息"
no-data-text="暂无数据"
@change="changeProject"
......@@ -176,6 +177,7 @@ import FileUploader from "../../components/FileUploader/index.vue";
// 引入增强后的DynamicTable组件
import DynamicTable from "../../components/FormDynamicTable/index.vue";
import routerBack from "@/components/common/routerBack.vue";
import { useProjectInfoStore } from "@/stores/projectInfo";
// 初始化全局变量
const router = useRouter();
const route = useRoute();
......@@ -289,6 +291,7 @@ const formData = reactive({
// 加载状态
const loading = ref(false);
const projectDisabled = ref(false);
// 是否预览模式
const isPreview = ref(!!route.query.isPreview);
// 项目列表数据
......@@ -389,6 +392,12 @@ let options = ref();
// 页面初始化
onMounted(() => {
getProjectData();
const cachedInfo = useProjectInfoStore().loadProjectInfo();
if (cachedInfo) {
formData.projectName = cachedInfo.projectName || "";
formData.projectId = cachedInfo.projectId || "";
projectDisabled.value = true;
}
try {
options.value = JSON.parse(sessionStorage.getItem("resourceData")) || {};
// 合并全局选项到selectOptions
......
......@@ -61,6 +61,7 @@ import { useRouter } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import CommonTable from "@/components/common/commonTable.vue";
import SearchForm from "@/components/common/SearchForm.vue";
import { useProjectInfoStore } from "@/stores/projectInfo";
const searchItems = [
{
......@@ -226,6 +227,9 @@ const deleteStatement = (item) => {
.catch(() => {});
};
onMounted(() => {
if (!window.location.href.includes("xmdakDetaill")) {
useProjectInfoStore().clearProjectInfo();
}
getProjectData();
});
</script>
......
......@@ -32,6 +32,7 @@
<el-form-item label="项目名称" required>
<el-select
v-model="formData.projectId"
:disabled="projectDisabled"
placeholder="请选择项目名称"
no-data-text="暂无数据"
@change="changeProject"
......@@ -540,6 +541,7 @@ import FinancialTable from "@/components/FinancialTable.vue";
import InvestmentRecoveryTable from "@/components/InvestmentRecoveryTable.vue";
import routerBack from "@/components/common/routerBack.vue";
import CollapseNavigation from "@/components/CollapseNavigation/index.vue";
import { useProjectInfoStore } from "@/stores/projectInfo";
const transferColumns = ref([
{
prop: "njfcgbl",
......@@ -1299,6 +1301,7 @@ const changeProject = (val) => {
};
// 加载状态
const loading = ref(false);
const projectDisabled = ref(false);
// 是否预览模式
const isPreview = ref(!!route.query.isPreview);
// 项目列表数据
......@@ -1384,12 +1387,19 @@ const saveClick = () => {
onMounted(() => {
// 获取项目列表
getProjectData();
const cachedInfo = useProjectInfoStore().loadProjectInfo();
if (cachedInfo) {
formData.projectName = cachedInfo.projectName || "";
formData.projectId = cachedInfo.projectId || "";
projectDisabled.value = true;
}
options.value = JSON.parse(sessionStorage.getItem("resourceData"));
// 如果有ID则加载详情
if (rcCgqyglId.value) {
getRcCgqyglDetail();
} else {
initTableData();
// 新增模式:从 store 读取缓存的项目信息
}
});
</script>
......
......@@ -59,6 +59,7 @@ import { useRouter } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import CommonTable from "@/components/common/commonTable.vue";
import SearchForm from "@/components/common/SearchForm.vue";
import { useProjectInfoStore } from "@/stores/projectInfo";
const handleSearch = (formData) => {
currentPage.value = 1;
getProjectData(formData);
......@@ -155,6 +156,9 @@ const deleteStatement = (item) => {
.catch(() => {});
};
onMounted(() => {
if (!window.location.href.includes("xmdakDetaill")) {
useProjectInfoStore().clearProjectInfo();
}
getProjectData();
});
</script>
......
......@@ -22,6 +22,7 @@
<el-form-item label="项目信息" required>
<el-select
v-model="formData.projectId"
:disabled="projectDisabled"
placeholder="请选择项目信息"
no-data-text="暂无数据"
@change="changeProject"
......@@ -85,6 +86,7 @@ import { useRouter, useRoute } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import DynamicTable from "@/components/FormDynamicTable/index.vue"; // 引入通用组件
import routerBack from "@/components/common/routerBack.vue";
import { useProjectInfoStore } from "@/stores/projectInfo";
// 初始化全局变量
const router = useRouter();
const route = useRoute();
......@@ -196,6 +198,7 @@ const formData = reactive({
// 加载状态
const loading = ref(false);
const projectDisabled = ref(false);
// 是否预览模式
const isPreview = ref(!!route.query.isPreview);
// 项目列表数据
......@@ -296,6 +299,12 @@ let options = ref();
onMounted(() => {
// 获取项目列表
getProjectData();
const cachedInfo = useProjectInfoStore().loadProjectInfo();
if (cachedInfo) {
formData.projectName = cachedInfo.projectName || "";
formData.projectId = cachedInfo.projectId || "";
projectDisabled.value = true;
}
options.value = JSON.parse(sessionStorage.getItem("resourceData"));
// 如果有ID则加载详情
......
......@@ -60,6 +60,7 @@ import { useRouter } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import CommonTable from "@/components/common/commonTable.vue";
import SearchForm from "@/components/common/SearchForm.vue";
import { useProjectInfoStore } from "@/stores/projectInfo";
const handleSearch = (formData) => {
currentPage.value = 1;
......@@ -190,6 +191,9 @@ const deleteStatement = (item) => {
.catch(() => {});
};
onMounted(() => {
if (!window.location.href.includes("xmdakDetaill")) {
useProjectInfoStore().clearProjectInfo();
}
getProjectData();
});
</script>
......
......@@ -18,6 +18,7 @@
<el-form-item label="项目信息" required>
<el-select
v-model="formData.projectId"
:disabled="projectDisabled"
placeholder="请选择项目信息"
no-data-text="暂无数据"
@change="changeProject"
......@@ -96,6 +97,7 @@ import { useRouter, useRoute } from "vue-router";
import { ElMessage } from "element-plus";
import DynamicTable from "@/components/FormDynamicTable/index.vue";
import routerBack from "@/components/common/routerBack.vue";
import { useProjectInfoStore } from "@/stores/projectInfo";
// 路由与全局实例
const router = useRouter();
const route = useRoute();
......@@ -136,6 +138,7 @@ const formData = reactive({
// 状态管理
const loading = ref(false);
const projectDisabled = ref(false);
const isPreview = ref(!!route.query.isPreview);
const projectList = ref([]);
const rcCgqyglId = ref(route.query.id || "");
......@@ -246,6 +249,12 @@ const saveClick = () => {
// 页面初始化
onMounted(() => {
getProjectData();
const cachedInfo = useProjectInfoStore().loadProjectInfo();
if (cachedInfo) {
formData.projectName = cachedInfo.projectName || "";
formData.projectId = cachedInfo.projectId || "";
projectDisabled.value = true;
}
options.value = JSON.parse(sessionStorage.getItem("resourceData"));
if (rcCgqyglId.value) getJsqtzjcDetail();
});
......
......@@ -20,6 +20,7 @@
<el-form-item label="项目信息" required>
<el-select
v-model="formData.projectId"
:disabled="projectDisabled"
placeholder="请选择"
no-data-text="暂无数据"
>
......@@ -1017,6 +1018,7 @@ import FileUploader from "@/components/FileUploader/index.vue";
import routerBack from "@/components/common/routerBack.vue";
import CollapseNavigation from "@/components/CollapseNavigation/index.vue";
import { useProjectInfoStore } from "@/stores/projectInfo";
import { useUserStore } from "@/stores/user.js";
const userStore = useUserStore();
const router = useRouter();
......@@ -1089,6 +1091,7 @@ const handleNavClick = (item) => {
};
let formData = reactive({});
let loading = ref(false);
const projectDisabled = ref(false);
// 项目列表
let projectList = ref([]);
......@@ -1194,6 +1197,12 @@ let lyList = reactive([]); // 安全质量环保-来源列表
onMounted(() => {
getProjectData();
const cachedInfo = useProjectInfoStore().loadProjectInfo();
if (cachedInfo) {
formData.projectName = cachedInfo.projectName || "";
formData.projectId = cachedInfo.projectId || "";
projectDisabled.value = true;
}
let resourceData = JSON.parse(sessionStorage.getItem("resourceData"));
ssjdList = resourceData.ssjd;
jcdwList = resourceData.jcdw;
......
......@@ -18,6 +18,7 @@
<el-form-item label="项目信息" required>
<el-select
v-model="formData.projectId"
:disabled="projectDisabled"
placeholder="请选择"
no-data-text="暂无数据"
>
......@@ -32,7 +33,7 @@
</el-col>
<el-col :span="12">
<el-form-item label="项目名称">
<el-input v-model="formData.projectName" />
<el-input v-model="formData.projectName" :disabled="projectDisabled" />
</el-form-item>
</el-col>
<el-col :span="12">
......@@ -407,10 +408,12 @@ const { proxy } = getCurrentInstance();
let token = ref("");
token.value = userStore.authToken || sessionStorage.getItem("authToken") || "";
import routerBack from "@/components/common/routerBack.vue";
import { useProjectInfoStore } from "@/stores/projectInfo";
const activeCollapse = reactive(["基本信息", "已发现或暴露的风险"]);
let formData = reactive({});
let loading = ref(false);
const projectDisabled = ref(false);
let isPreview = !!route.query.isPreview;
let riskId = route.query.riskId;
const getRiskInfo = () => {
......@@ -465,6 +468,12 @@ let tzbkProps = {
let xmlxList = ref([]); //项目类型
onMounted(() => {
getProjectData();
const cachedInfo = useProjectInfoStore().loadProjectInfo();
if (cachedInfo) {
formData.projectName = cachedInfo.projectName || "";
formData.projectId = cachedInfo.projectId || "";
projectDisabled.value = true;
}
let resourceData = JSON.parse(sessionStorage.getItem("resourceData"));
jnwList = resourceData.dqlx;
tzbkList = resourceData.tzbk;
......
......@@ -44,6 +44,7 @@
<el-form-item label="项目信息" required>
<el-select
v-model="formData.projectId"
:disabled="projectDisabled"
placeholder="请选择"
no-data-text="暂无数据"
@change="changeProject"
......@@ -60,7 +61,7 @@
<el-col :span="12">
<el-form-item label="项目名称">
<el-input v-model="formData.projectName" />
<el-input v-model="formData.projectName" :disabled="projectDisabled" />
</el-form-item>
</el-col>
<el-col :span="12">
......@@ -808,6 +809,7 @@ const pageActiveName = ref("投资目标责任书");
let token = ref("");
token.value = userStore.authToken || sessionStorage.getItem("authToken") || "";
import routerBack from "@/components/common/routerBack.vue";
import { useProjectInfoStore } from "@/stores/projectInfo";
const activeCollapse = reactive([
"责任书基本信息",
......@@ -899,6 +901,7 @@ const deletePfyjlsqk = (index) => {
};
let isPreview = !!route.query.isPreview;
const projectDisabled = ref(false);
let statementId = route.query.statementId;
// 查看编辑详情
const getStatementInfo = () => {
......@@ -929,6 +932,12 @@ const getStatementInfo = () => {
};
onMounted(() => {
getProjectData();
const cachedInfo = useProjectInfoStore().loadProjectInfo();
if (cachedInfo) {
formData.projectName = cachedInfo.projectName || "";
formData.projectId = cachedInfo.projectId || "";
projectDisabled.value = true;
}
let resourceData = JSON.parse(sessionStorage.getItem("resourceData"));
zrslxList = resourceData.level;
pfyjlxList = resourceData.ssjd;
......
......@@ -59,6 +59,7 @@ import { useRouter } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import CommonTable from "@/components/common/commonTable.vue";
import SearchForm from "@/components/common/SearchForm.vue";
import { useProjectInfoStore } from "@/stores/projectInfo";
const handleSearch = (formData) => {
currentPage.value = 1;
......@@ -192,6 +193,9 @@ const deleteStatement = (item) => {
.catch(() => {});
};
onMounted(() => {
if (!window.location.href.includes("xmdakDetaill")) {
useProjectInfoStore().clearProjectInfo();
}
getProjectData();
});
</script>
......
......@@ -20,6 +20,7 @@
<el-form-item label="项目信息" required>
<el-select
v-model="formData.projectId"
:disabled="projectDisabled"
placeholder="请选择项目信息"
no-data-text="暂无数据"
@change="changeProject"
......@@ -238,6 +239,7 @@ import { useRouter, useRoute } from "vue-router";
import { ElMessage } from "element-plus";
import FileUploader from "../../components/FileUploader/index.vue";
import routerBack from "@/components/common/routerBack.vue";
import { useProjectInfoStore } from "@/stores/projectInfo";
// 初始化全局变量
const router = useRouter();
const route = useRoute();
......@@ -277,6 +279,7 @@ const formData = reactive({
// 加载状态
const loading = ref(false);
const projectDisabled = ref(false);
// 是否预览模式
const isPreview = ref(!!route.query.isPreview);
// 项目列表数据
......@@ -377,6 +380,12 @@ const saveClick = () => {
onMounted(() => {
// 获取项目列表
getProjectData();
const cachedInfo = useProjectInfoStore().loadProjectInfo();
if (cachedInfo) {
formData.projectName = cachedInfo.projectName || "";
formData.projectId = cachedInfo.projectId || "";
projectDisabled.value = true;
}
if (rcCgqyglId.value) {
getJsqtzjcDetail();
}
......
......@@ -59,6 +59,7 @@ import { useRouter } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import CommonTable from "@/components/common/commonTable.vue";
import SearchForm from "@/components/common/SearchForm.vue";
import { useProjectInfoStore } from "@/stores/projectInfo";
const handleSearch = (formData) => {
currentPage.value = 1;
......@@ -157,6 +158,9 @@ const deleteStatement = (item) => {
.catch(() => {});
};
onMounted(() => {
if (!window.location.href.includes("xmdakDetaill")) {
useProjectInfoStore().clearProjectInfo();
}
getProjectData();
});
</script>
......
......@@ -19,6 +19,7 @@
<el-form-item label="项目信息" required>
<el-select
v-model="formData.projectId"
:disabled="projectDisabled"
placeholder="请选择项目信息"
no-data-text="暂无数据"
@change="changeProject"
......@@ -316,6 +317,7 @@ import { useRouter, useRoute } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import FileUploader from "../../components/FileUploader/index.vue";
import routerBack from "@/components/common/routerBack.vue";
import { useProjectInfoStore } from "@/stores/projectInfo";
// 初始化全局变量
const router = useRouter();
......@@ -336,6 +338,7 @@ const formData = reactive({
// 加载状态
const loading = ref(false);
const projectDisabled = ref(false);
// 是否预览模式
const isPreview = ref(!!route.query.isPreview);
// 项目列表数据
......@@ -482,6 +485,12 @@ let options = ref();
onMounted(() => {
// 获取项目列表
getProjectData();
const cachedInfo = useProjectInfoStore().loadProjectInfo();
if (cachedInfo) {
formData.projectName = cachedInfo.projectName || "";
formData.projectId = cachedInfo.projectId || "";
projectDisabled.value = true;
}
options.value = JSON.parse(sessionStorage.getItem("resourceData"));
// 如果有ID则加载详情
......
......@@ -61,6 +61,7 @@ import { useRouter } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import CommonTable from "@/components/common/commonTable.vue";
import SearchForm from "@/components/common/SearchForm.vue";
import { useProjectInfoStore } from "@/stores/projectInfo";
const handleSearch = (formData) => {
currentPage.value = 1;
......@@ -164,6 +165,9 @@ const deleteStatement = (item) => {
.catch(() => {});
};
onMounted(() => {
if (!window.location.href.includes("xmdakDetaill")) {
useProjectInfoStore().clearProjectInfo();
}
getProjectData();
});
</script>
......
......@@ -32,6 +32,7 @@
<el-form-item label="项目名称" required>
<el-select
v-model="formData.projectId"
:disabled="projectDisabled"
placeholder="请选择项目名称"
no-data-text="暂无数据"
@change="changeProject"
......@@ -540,6 +541,7 @@ import FinancialTable from "@/components/FinancialTable.vue";
import InvestmentRecoveryTable from "@/components/InvestmentRecoveryTable.vue";
import routerBack from "@/components/common/routerBack.vue";
import CollapseNavigation from "@/components/CollapseNavigation/index.vue";
import { useProjectInfoStore } from "@/stores/projectInfo";
// 接收父组件传递的 isPreview prop
const props = defineProps({
......@@ -1301,6 +1303,7 @@ const changeProject = (val) => {
};
// 加载状态
const loading = ref(false);
const projectDisabled = ref(false);
// 是否预览模式 - 优先使用父组件传递的 prop,否则从路由参数读取
const isPreview = computed(() => {
// 如果父组件显式传递了 isPreview prop,使用 prop 的值
......@@ -1393,6 +1396,12 @@ const saveClick = () => {
onMounted(() => {
// 获取项目列表
getProjectData();
const cachedInfo = useProjectInfoStore().loadProjectInfo();
if (cachedInfo) {
formData.projectName = cachedInfo.projectName || "";
formData.projectId = cachedInfo.projectId || "";
projectDisabled.value = true;
}
options.value = JSON.parse(sessionStorage.getItem("resourceData"));
// 如果有ID则加载详情
if (rcCgqyglId.value) {
......
......@@ -79,6 +79,7 @@ import { useRouter } from "vue-router";
import { useUserStore } from "@/stores/user.js";
import CommonTable from "@/components/common/commonTable.vue";
import SearchForm from "@/components/common/SearchForm.vue";
import { useProjectInfoStore } from "@/stores/projectInfo";
const handleSearch = (formData) => {
currentPage.value = 1;
......@@ -174,6 +175,9 @@ const getProjectData = (params = {}) => {
});
};
onMounted(() => {
if (!window.location.href.includes("xmdakDetaill")) {
useProjectInfoStore().clearProjectInfo();
}
getProjectData();
});
// 分页
......
......@@ -24,7 +24,7 @@
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="项目名称">
<el-input v-model="jcFormData.projectName" />
<el-input v-model="jcFormData.projectName" :disabled="projectDisabled" />
</el-form-item>
</el-col>
<el-col :span="12">
......@@ -3230,6 +3230,7 @@ import DynamicTable from "@/components/FormDynamicTable/index.vue";
import _ from "lodash";
import Decimal from "decimal.js";
import { useProjectInfoStore } from "@/stores/projectInfo";
const router = useRouter();
const route = useRoute();
const { proxy } = getCurrentInstance();
......@@ -3309,6 +3310,7 @@ const jcpfcollapse = reactive([
let formData = reactive({});
let jcFormData = reactive({});
let loading = ref(false);
const projectDisabled = ref(false);
// 单选框点击事件
const radioClick = (value, key) => {
if (formData[key] !== value) {
......@@ -4697,6 +4699,12 @@ const getProjectInfo = () => {
let resourceData = null;
onMounted(() => {
projectId && getProjectInfo();
const cachedInfo = useProjectInfoStore().loadProjectInfo();
if (cachedInfo) {
formData.projectName = cachedInfo.projectName || "";
formData.projectId = cachedInfo.projectId || "";
projectDisabled.value = true;
}
resourceData = JSON.parse(sessionStorage.getItem("resourceData"));
zyList = resourceData.zyfzy;
cwbblxList = resourceData.cwbblx;
......
......@@ -51,6 +51,7 @@ import { useRouter } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import CommonTable from "@/components/common/commonTable.vue";
import SearchForm from "@/components/common/SearchForm.vue";
import { useProjectInfoStore } from "@/stores/projectInfo";
const handleSearch = (formData) => {
currentPage.value = 1;
......@@ -152,6 +153,9 @@ const deleteRisk = (item) => {
.catch(() => {});
};
onMounted(() => {
if (!window.location.href.includes("xmdakDetaill")) {
useProjectInfoStore().clearProjectInfo();
}
getProjectData();
});
</script>
......
......@@ -59,6 +59,7 @@ import { useRouter } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import CommonTable from "@/components/common/commonTable.vue";
import SearchForm from "@/components/common/SearchForm.vue";
import { useProjectInfoStore } from "@/stores/projectInfo";
const handleSearch = (formData) => {
currentPage.value = 1;
......@@ -183,6 +184,9 @@ const deleteStatement = (item) => {
.catch(() => {});
};
onMounted(() => {
if (!window.location.href.includes("xmdakDetaill")) {
useProjectInfoStore().clearProjectInfo();
}
getProjectData();
});
</script>
......
......@@ -28,6 +28,7 @@
<el-form-item label="项目名称" required>
<el-select
v-model="formData.projectId"
:disabled="projectDisabled"
placeholder="请选择项目名称"
no-data-text="暂无数据"
@change="changeProject"
......@@ -799,6 +800,7 @@ import { ElMessage } from "element-plus";
import DynamicTable from "@/components/FormDynamicTable/index.vue";
import FileUploader from "@/components/FileUploader/index.vue";
import routerBack from "@/components/common/routerBack.vue";
import { useProjectInfoStore } from "@/stores/projectInfo";
const transferColumns = ref([
{
prop: "njfcgbl",
......@@ -882,6 +884,7 @@ const activeCollapse = ref([
"财务评价指标",
]);
const loading = ref(false);
const projectDisabled = ref(false);
const isPreview = ref(!!route.query.isPreview);
const projectList = ref([]);
const rcCgqyglId = ref(route.query.id || "");
......@@ -1203,6 +1206,12 @@ const backClick = () => router.back(-1);
onMounted(() => {
getProjectData();
const cachedInfo = useProjectInfoStore().loadProjectInfo();
if (cachedInfo) {
formData.projectName = cachedInfo.projectName || "";
formData.projectId = cachedInfo.projectId || "";
projectDisabled.value = true;
}
// 非预览状态下自动弹出类型选择弹窗
if (!isPreview.value) {
......
......@@ -58,6 +58,7 @@ import { useRouter } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import CommonTable from "@/components/common/commonTable.vue";
import SearchForm from "@/components/common/SearchForm.vue";
import { useProjectInfoStore } from "@/stores/projectInfo";
const handleSearch = (formData) => {
currentPage.value = 1;
......@@ -166,6 +167,9 @@ const deleteControl = (item) => {
.catch(() => {});
};
onMounted(() => {
if (!window.location.href.includes("xmdakDetaill")) {
useProjectInfoStore().clearProjectInfo();
}
getProjectData();
let resourceData = JSON.parse(sessionStorage.getItem("resourceData"));
jcdwList = resourceData.jcdw;
......
......@@ -59,6 +59,7 @@ import { useRouter } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import CommonTable from "@/components/common/commonTable.vue";
import SearchForm from "@/components/common/SearchForm.vue";
import { useProjectInfoStore } from "@/stores/projectInfo";
const handleSearch = (formData) => {
currentPage.value = 1;
......@@ -178,6 +179,9 @@ const deleteStatement = (item) => {
.catch(() => {});
};
onMounted(() => {
if (!window.location.href.includes("xmdakDetaill")) {
useProjectInfoStore().clearProjectInfo();
}
getProjectData();
});
</script>
......
......@@ -54,8 +54,19 @@
</template>
<script setup>
import { ref, computed, markRaw, onMounted, watch } from "vue";
import {
ref,
computed,
markRaw,
onMounted,
watch,
getCurrentInstance,
} from "vue";
import { useRoute } from "vue-router";
import { useProjectInfoStore } from "@/stores/projectInfo";
const { proxy } = getCurrentInstance();
const projectInfoStore = useProjectInfoStore();
import {
Document,
FolderOpened,
......@@ -240,9 +251,18 @@ const currentTabChildren = computed(() => {
return routeChildren[currentKey] || [];
});
// 请求项目详情并保存到 sessionStorage
const fetchProjectInfo = () => {
if (!projectId.value) return;
projectInfoStore.fetchProjectInfo(proxy, projectId.value);
};
// 初始化:优先恢复缓存状态,否则加载默认 tab
onMounted(async () => {
if (projectId.value) {
// 请求项目详情并缓存
fetchProjectInfo();
const saved = restoreTabState();
if (saved && saved.activeTab !== undefined && saved.activeSubItem) {
// 恢复之前离开的位置
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment