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