明树Git Lab

Commit a371fcfa authored by zhanghan's avatar zhanghan

表单样式处理

parent e114f81a
Pipeline #108564 passed with stage
in 20 seconds
...@@ -175,7 +175,7 @@ ...@@ -175,7 +175,7 @@
<!-- 操作按钮 --> <!-- 操作按钮 -->
<el-col :span="buttonSpan || 6"> <el-col :span="buttonSpan || 6">
<el-form-item> <el-form-item label=" ">
<div class="search-form-buttons"> <div class="search-form-buttons">
<el-button type="primary" :icon="Search" @click="handleSearch"> <el-button type="primary" :icon="Search" @click="handleSearch">
{{ searchText || "搜索" }} {{ searchText || "搜索" }}
...@@ -435,9 +435,5 @@ initFormData(false); ...@@ -435,9 +435,5 @@ initFormData(false);
:deep(.el-input-number) { :deep(.el-input-number) {
width: 100%; width: 100%;
} }
.el-col-6.is-guttered {
padding: 0px 24px !important;
}
} }
</style> </style>
...@@ -504,7 +504,7 @@ const handleNextClick = (val) => { ...@@ -504,7 +504,7 @@ const handleNextClick = (val) => {
.common-table { .common-table {
background: #fff; background: #fff;
border-radius: 8px; border-radius: 8px;
padding: 10px 20px; padding: 16px 20px 20px 20px;
.table-header { .table-header {
display: flex; display: flex;
......
<template>
<div>
<div class="add-project-back">
<div class="back" @click="() => router.back()">
<el-icon class="backIcon"><ArrowLeft /></el-icon>
<span class="backText">返回</span>
</div>
<span class="backName">{{ route.meta.title }}</span>
</div>
</div>
</template>
<script setup>
import { useRouter, useRoute } from "vue-router";
const route = useRoute();
const router = useRouter();
</script>
<style scoped lang="scss">
.add-project-back {
margin-bottom: 16px;
display: flex;
align-items: center;
.back {
display: flex;
align-items: center;
opacity: 1;
font-size: 14px;
font-weight: 400;
color: rgba(51, 51, 51, 1);
cursor: pointer;
&:hover {
color: #409eff;
}
}
.backName {
margin-left: 17px;
height: 24px;
font-size: 16px;
font-weight: 700;
color: rgba(51, 51, 51, 1);
}
}
</style>
...@@ -15,7 +15,7 @@ import "../public/iconFont/iconfont.css"; // 图标字体样式 ...@@ -15,7 +15,7 @@ import "../public/iconFont/iconfont.css"; // 图标字体样式
import { $get, $post } from "@/data/https.js"; import { $get, $post } from "@/data/https.js";
import windowConfig from "@/window"; import windowConfig from "@/window";
import moment from "moment"; import moment from "moment";
import "@/styles/manage.less";
const pinia = createPinia(); const pinia = createPinia();
const app = createApp(App); const app = createApp(App);
app.config.globalProperties.$get = $get; app.config.globalProperties.$get = $get;
......
...@@ -82,8 +82,8 @@ const routes = [ ...@@ -82,8 +82,8 @@ const routes = [
{ {
path: "/addProject", path: "/addProject",
name: "addProject", name: "addProject",
title: "新增项目", title: "项目详情",
meta: { title: "新增项目详情" }, // 修改:新增项目 → 新增项目详情 meta: { title: "项目详情" },
component: () => import("@/views/projectManage/addProject.vue"), component: () => import("@/views/projectManage/addProject.vue"),
}, },
], ],
...@@ -362,16 +362,16 @@ const routes = [ ...@@ -362,16 +362,16 @@ const routes = [
{ {
path: "/informationConstruction", path: "/informationConstruction",
name: "informationConstruction", name: "informationConstruction",
title: "信息化建设", title: "问题反馈",
meta: { title: "信息化建设" }, meta: { title: "问题反馈" },
component: () => component: () =>
import("@/views/everydayPage/informationConstruction.vue"), import("@/views/everydayPage/informationConstruction.vue"),
}, },
{ {
path: "/informationConstructionAdd", path: "/informationConstructionAdd",
name: "informationConstructionAdd", name: "informationConstructionAdd",
title: "信息化建设", title: "问题反馈",
meta: { title: "信息化建设详情" }, // 修改:信息化建设 → 信息化建设详情 meta: { title: "问题反馈详情" },
component: () => component: () =>
import("@/views/everydayPage/informationConstructionAdd.vue"), import("@/views/everydayPage/informationConstructionAdd.vue"),
}, },
......
.system-manage-container { .system-manage-container {
padding: 16px;
background: #ecf2f8; background: #ecf2f8;
height: 100%; height: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
box-sizing: border-box; box-sizing: border-box;
} }
.add-project-content {
background-color: #fff;
padding-top: 16px;
padding-right: 16px;
}
.system-manage-header { .system-manage-header {
background: rgba(255, 255, 255, 0.9); background: rgba(255, 255, 255, 0.9);
border-radius: 8px; border-radius: 8px;
...@@ -32,7 +26,6 @@ ...@@ -32,7 +26,6 @@
.system-manage-content { .system-manage-content {
background: rgba(255, 255, 255, 0.9); background: rgba(255, 255, 255, 0.9);
border-radius: 8px; border-radius: 8px;
padding: 20px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
} }
.manage-search { .manage-search {
...@@ -64,7 +57,7 @@ ...@@ -64,7 +57,7 @@
.manage-container { .manage-container {
width: 100%; width: 100%;
height: 100%; height: 100%;
padding: 24px 24px 0 24px; padding: 16px 16px 0 16px;
box-sizing: border-box; box-sizing: border-box;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
...@@ -80,7 +73,6 @@ ...@@ -80,7 +73,6 @@
padding-right: 16px; padding-right: 16px;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
padding-bottom: 10px;
background-color: #fff; background-color: #fff;
} }
.manage-content { .manage-content {
...@@ -106,7 +98,6 @@ ...@@ -106,7 +98,6 @@
} }
.add-project-container { .add-project-container {
width: 100%; width: 100%;
height: 100%;
padding: 16px; padding: 16px;
box-sizing: border-box; box-sizing: border-box;
display: flex; display: flex;
...@@ -116,9 +107,12 @@ ...@@ -116,9 +107,12 @@
color: var(--el-color-primary); color: var(--el-color-primary);
} }
.add-project-header { .add-project-header {
border: none;
height: 64px;
display: flex; display: flex;
justify-content: space-between; align-items: center;
margin-bottom: 10px; margin-bottom: 0;
margin-top: 10px;
} }
.add-project-content { .add-project-content {
flex: 1; flex: 1;
...@@ -241,7 +235,6 @@ ...@@ -241,7 +235,6 @@
align-items: center; align-items: center;
} }
.add-project-content .project-tab-content { .add-project-content .project-tab-content {
padding: 0 20px;
height: 100%; height: 100%;
} }
.add-dialog .el-tree { .add-dialog .el-tree {
...@@ -292,3 +285,39 @@ ...@@ -292,3 +285,39 @@
font-size: 12px; font-size: 12px;
color: #969696; color: #969696;
} }
.el-form-item__label {
min-width: 100px;
max-width: 200px;
font-weight: 400;
font-size: 14px;
color: #333333;
height: 32px;
display: flex;
align-items: center;
justify-content: center;
line-height: 1.2;
}
.el-input-number,
.el-date-editor,
.el-cascader,
.el-tree-select .el-select,
.el-input,
.el-date-editor {
width: 100% !important;
}
.add-project-content {
background-color: #fff;
padding-top: 16px;
padding-right: 16px;
padding: 16px 16px 0 16px;
}
.add-project-content .el-collapse {
border: none;
}
.add-project-content .el-collapse-item__header {
background-color: #f5f7fa;
height: 48px !important;
padding: 16px;
margin: 0;
margin-bottom: 24px;
}
.system-manage-container { .system-manage-container {
padding: 16px;
background: #ecf2f8; background: #ecf2f8;
height: 100%; height: 100%;
display: flex; display: flex;
...@@ -7,12 +6,6 @@ ...@@ -7,12 +6,6 @@
box-sizing: border-box; box-sizing: border-box;
} }
.add-project-content {
background-color: #fff;
padding-top: 16px;
padding-right: 16px;
}
.system-manage-header { .system-manage-header {
background: rgba(255, 255, 255, 0.9); background: rgba(255, 255, 255, 0.9);
border-radius: 8px; border-radius: 8px;
...@@ -34,7 +27,6 @@ ...@@ -34,7 +27,6 @@
.system-manage-content { .system-manage-content {
background: rgba(255, 255, 255, 0.9); background: rgba(255, 255, 255, 0.9);
border-radius: 8px; border-radius: 8px;
padding: 20px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
} }
.manage-search { .manage-search {
...@@ -70,7 +62,7 @@ ...@@ -70,7 +62,7 @@
&-container { &-container {
width: 100%; width: 100%;
height: 100%; height: 100%;
padding: 24px 24px 0 24px; padding: 16px 16px 0 16px;
box-sizing: border-box; box-sizing: border-box;
display: flex; display: flex;
...@@ -88,7 +80,6 @@ ...@@ -88,7 +80,6 @@
padding-right: 16px; padding-right: 16px;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
padding-bottom: 10px;
background-color: #fff; background-color: #fff;
} }
&-content { &-content {
...@@ -117,7 +108,6 @@ ...@@ -117,7 +108,6 @@
.add-project { .add-project {
&-container { &-container {
width: 100%; width: 100%;
height: 100%;
padding: 16px; padding: 16px;
box-sizing: border-box; box-sizing: border-box;
display: flex; display: flex;
...@@ -127,10 +117,14 @@ ...@@ -127,10 +117,14 @@
} }
} }
&-header { &-header {
border: none;
height: 64px;
display: flex; display: flex;
justify-content: space-between; align-items: center;
margin-bottom: 10px; margin-bottom: 0;
margin-top: 10px;
} }
&-content { &-content {
flex: 1; flex: 1;
height: 0; height: 0;
...@@ -253,11 +247,11 @@ ...@@ -253,11 +247,11 @@
align-items: center; align-items: center;
} }
.project-tab-content { .project-tab-content {
padding: 0 20px;
height: 100%; height: 100%;
} }
} }
} }
.add-dialog { .add-dialog {
.el-tree { .el-tree {
width: 100%; width: 100%;
...@@ -313,3 +307,47 @@ ...@@ -313,3 +307,47 @@
} }
} }
} }
// ==========================设置定制化样式 start ==========================
.el-form-item__label {
min-width: 100px;
max-width: 200px;
font-weight: 400;
font-size: 14px;
color: rgba(51, 51, 51, 1);
height: 32px;
display: flex;
align-items: center;
justify-content: center;
line-height: 1.2;
}
.el-input-number,
.el-date-editor,
.el-cascader,
.el-tree-select .el-select,
.el-input,
.el-date-editor {
width: 100% !important;
}
.add-project-content {
background-color: #fff;
padding-top: 16px;
padding-right: 16px;
padding: 16px 16px 0 16px;
// .el-tabs--border-card {
// border: none;
// }
.el-collapse {
border: none;
}
.el-collapse-item__header {
background-color: #f5f7fa;
height: 48px !important;
padding: 16px;
margin: 0;
margin-bottom: 24px;
}
}
// ==========================设置定制化样式 end ==========================
...@@ -185,6 +185,4 @@ onMounted(() => { ...@@ -185,6 +185,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
<template> <template>
<div class="add-project-container"> <div class="add-project-container">
<div class="add-project-content" v-loading="loading"> <div class="add-project-content" v-loading="loading">
<div class="add-project-header"> <routerBack />
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
<div class="tabs-content"> <div class="tabs-content">
<div class="project-tab-content"> <div class="project-tab-content">
<div class="tab-content"> <div class="tab-content">
<el-form :model="formData" :label-width="200" :disabled="isPreview"> <el-form :model="formData" :disabled="isPreview">
<el-collapse v-model="activeCollapse"> <el-collapse v-model="activeCollapse">
<!-- 项目信息 --> <!-- 项目信息 -->
<el-collapse-item title="项目信息" name="项目信息"> <el-collapse-item title="项目信息" name="项目信息">
...@@ -157,6 +149,15 @@ ...@@ -157,6 +149,15 @@
</div> </div>
</div> </div>
</div> </div>
<div class="add-project-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -168,7 +169,7 @@ import { ElMessage, ElMessageBox } from "element-plus"; ...@@ -168,7 +169,7 @@ import { ElMessage, ElMessageBox } from "element-plus";
import FileUploader from "../../components/FileUploader/index.vue"; 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";
// 初始化全局变量 // 初始化全局变量
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
...@@ -399,8 +400,6 @@ onMounted(() => { ...@@ -399,8 +400,6 @@ onMounted(() => {
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
@import "@/styles/manage.less";
.add-project-container { .add-project-container {
padding: 20px; padding: 20px;
background: #f5f7fa; background: #f5f7fa;
......
...@@ -175,6 +175,4 @@ onMounted(() => { ...@@ -175,6 +175,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
<template> <template>
<div class="add-project-container"> <div class="add-project-container">
<div class="add-project-content" v-loading="loading"> <div class="add-project-content" v-loading="loading">
<div class="add-project-header"> <routerBack />
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
<div class="tabs-content"> <div class="tabs-content">
<div class="project-tab-content"> <div class="project-tab-content">
<div class="tab-content"> <div class="tab-content">
<el-form :model="formData" :label-width="200" :disabled="isPreview"> <el-form :model="formData" label-width="150" :disabled="isPreview">
<el-collapse v-model="activeCollapse"> <el-collapse v-model="activeCollapse">
<el-collapse-item title="项目基本信息" name="项目基本信息"> <el-collapse-item title="项目基本信息" name="项目基本信息">
<el-row :gutter="24"> <el-row :gutter="24">
...@@ -359,6 +351,15 @@ ...@@ -359,6 +351,15 @@
</div> </div>
</div> </div>
</div> </div>
<div class="add-project-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -369,6 +370,7 @@ import { useRouter, useRoute } from "vue-router"; ...@@ -369,6 +370,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 FinancialTable from "@/components/FinancialTable.vue"; import FinancialTable from "@/components/FinancialTable.vue";
import routerBack from "@/components/common/routerBack.vue";
const transferColumns = ref([ const transferColumns = ref([
{ {
prop: "njfcgbl", prop: "njfcgbl",
...@@ -702,9 +704,6 @@ onMounted(() => { ...@@ -702,9 +704,6 @@ onMounted(() => {
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
@import "@/styles/manage.less";
// @import "@/styles/manage.less";
.DynamicTable-slot { .DynamicTable-slot {
display: flex; display: flex;
div { div {
......
...@@ -159,6 +159,4 @@ onMounted(() => { ...@@ -159,6 +159,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
<template> <template>
<div class="add-project-container"> <div class="add-project-container">
<div class="add-project-content" v-loading="loading"> <div class="add-project-content" v-loading="loading">
<div class="add-project-header"> <routerBack />
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
<div class="tabs-content"> <div class="tabs-content">
<div class="project-tab-content"> <div class="project-tab-content">
<div class="tab-content"> <div class="tab-content">
<el-form :model="formData" :label-width="200" :disabled="isPreview"> <el-form :model="formData" :disabled="isPreview">
<el-collapse v-model="activeCollapse"> <el-collapse v-model="activeCollapse">
<!-- 基本信息 --> <!-- 基本信息 -->
<el-collapse-item title="基本信息" name="基本信息"> <el-collapse-item title="基本信息" name="基本信息">
...@@ -70,6 +62,15 @@ ...@@ -70,6 +62,15 @@
</div> </div>
</div> </div>
</div> </div>
<div class="add-project-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -79,6 +80,7 @@ import { reactive, ref, onMounted, getCurrentInstance } from "vue"; ...@@ -79,6 +80,7 @@ import { reactive, ref, onMounted, getCurrentInstance } from "vue";
import { useRouter, useRoute } from "vue-router"; 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";
// 初始化全局变量 // 初始化全局变量
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
...@@ -316,6 +318,4 @@ onMounted(() => { ...@@ -316,6 +318,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
...@@ -194,6 +194,4 @@ onMounted(() => { ...@@ -194,6 +194,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
<template> <template>
<div class="add-project-container"> <div class="add-project-container">
<div class="add-project-content" v-loading="loading"> <div class="add-project-content" v-loading="loading">
<div class="add-project-header"> <routerBack />
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
<div class="tabs-content"> <div class="tabs-content">
<div class="project-tab-content"> <div class="project-tab-content">
<div class="tab-content"> <div class="tab-content">
<el-form :model="formData" :label-width="200" :disabled="isPreview"> <el-form :model="formData" :disabled="isPreview">
<el-collapse v-model="activeCollapse"> <el-collapse v-model="activeCollapse">
<!-- 项目信息 --> <!-- 项目信息 -->
<el-collapse-item title="项目信息" name="项目信息"> <el-collapse-item title="项目信息" name="项目信息">
...@@ -81,6 +73,15 @@ ...@@ -81,6 +73,15 @@
</div> </div>
</div> </div>
</div> </div>
<div class="add-project-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -90,7 +91,7 @@ import { reactive, ref, onMounted, getCurrentInstance } from "vue"; ...@@ -90,7 +91,7 @@ import { reactive, ref, onMounted, getCurrentInstance } from "vue";
import { useRouter, useRoute } from "vue-router"; 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";
// 路由与全局实例 // 路由与全局实例
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
...@@ -246,6 +247,4 @@ onMounted(() => { ...@@ -246,6 +247,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
...@@ -187,6 +187,4 @@ onMounted(() => { ...@@ -187,6 +187,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
<template> <template>
<div class="add-project-container"> <div class="add-project-container">
<div class="add-project-content" v-loading="loading"> <div class="add-project-content" v-loading="loading">
<div class="add-project-header"> <routerBack />
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
<div class="tabs-content"> <div class="tabs-content">
<div class="project-tab-content"> <div class="project-tab-content">
<div class="tab-content"> <div class="tab-content">
<el-form :model="formData" :label-width="200" :disabled="isPreview"> <el-form :model="formData" :disabled="isPreview">
<el-collapse v-model="activeCollapse"> <el-collapse v-model="activeCollapse">
<!-- 项目信息 --> <!-- 项目信息 -->
<el-collapse-item title="项目信息" name="项目信息"> <el-collapse-item title="项目信息" name="项目信息">
...@@ -61,6 +53,15 @@ ...@@ -61,6 +53,15 @@
</div> </div>
</div> </div>
</div> </div>
<div class="add-project-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -70,7 +71,7 @@ import { reactive, ref, onMounted, getCurrentInstance } from "vue"; ...@@ -70,7 +71,7 @@ import { reactive, ref, onMounted, getCurrentInstance } from "vue";
import { useRouter, useRoute } from "vue-router"; import { useRouter, useRoute } from "vue-router";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import costTab from "./costTab1.vue"; import costTab from "./costTab1.vue";
import routerBack from "@/components/common/routerBack.vue";
// 路由与全局实例 // 路由与全局实例
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
...@@ -645,6 +646,4 @@ onMounted(() => { ...@@ -645,6 +646,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
...@@ -191,6 +191,4 @@ onMounted(() => { ...@@ -191,6 +191,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
<template> <template>
<div class="add-project-container"> <div class="add-project-container">
<div class="add-project-content" v-loading="loading"> <div class="add-project-content" v-loading="loading">
<div class="add-project-header"> <routerBack />
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
<div class="tabs-content"> <div class="tabs-content">
<div class="project-tab-content"> <div class="project-tab-content">
<div class="tab-content"> <div class="tab-content">
<el-form :model="formData" :label-width="200" :disabled="isPreview"> <el-form label-width="150" :model="formData" :disabled="isPreview">
<el-collapse v-model="activeCollapse"> <el-collapse v-model="activeCollapse">
<!-- 基本信息:字段完全对齐数据库 --> <!-- 基本信息:字段完全对齐数据库 -->
<el-collapse-item title="基本信息" name="基本信息"> <el-collapse-item title="基本信息" name="基本信息">
...@@ -155,7 +147,10 @@ ...@@ -155,7 +147,10 @@
<el-collapse-item title="战略类A" name="战略类A"> <el-collapse-item title="战略类A" name="战略类A">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="是否国家中长期规划重大项目(A1)"> <el-form-item
label-width="200"
label="是否国家中长期规划重大项目(A1)"
>
<CommonSelector <CommonSelector
:radio="true" :radio="true"
v-model="formData.sfgjzcqghzdxm" v-model="formData.sfgjzcqghzdxm"
...@@ -164,7 +159,10 @@ ...@@ -164,7 +159,10 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="是否国家有关部门下达的重点项目(A2)"> <el-form-item
label-width="200"
label="是否国家有关部门下达的重点项目(A2)"
>
<CommonSelector <CommonSelector
:radio="true" :radio="true"
v-model="formData.sfgjygbmxddzdxm" v-model="formData.sfgjygbmxddzdxm"
...@@ -173,7 +171,10 @@ ...@@ -173,7 +171,10 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="大规模设备更新(A3)"> <el-form-item
label-width="200"
label="大规模设备更新(A3)"
>
<CommonSelector <CommonSelector
:radio="true" :radio="true"
v-model="formData.dgmsbgx" v-model="formData.dgmsbgx"
...@@ -182,7 +183,10 @@ ...@@ -182,7 +183,10 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="战略性新兴产业百大工程(A4)"> <el-form-item
label-width="200"
label="战略性新兴产业百大工程(A4)"
>
<CommonSelector <CommonSelector
:radio="true" :radio="true"
v-model="formData.zlxxxcybdgc" v-model="formData.zlxxxcybdgc"
...@@ -192,6 +196,7 @@ ...@@ -192,6 +196,7 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item <el-form-item
label-width="200"
label="列入央企产业焕新和未来产业启航行动的项目(A5)" label="列入央企产业焕新和未来产业启航行动的项目(A5)"
> >
<CommonSelector <CommonSelector
...@@ -202,7 +207,10 @@ ...@@ -202,7 +207,10 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="强链补链重点项目(A6)"> <el-form-item
label-width="200"
label="强链补链重点项目(A6)"
>
<CommonSelector <CommonSelector
:radio="true" :radio="true"
v-model="formData.qlblzdxm" v-model="formData.qlblzdxm"
...@@ -211,7 +219,10 @@ ...@@ -211,7 +219,10 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="对应重大或重点项目名录名称"> <el-form-item
label-width="200"
label="对应重大或重点项目名录名称"
>
<el-input <el-input
v-model="formData.dyzdhzdxmmlmc" v-model="formData.dyzdhzdxmmlmc"
placeholder="请输入对应重大或重点项目名录名称" placeholder="请输入对应重大或重点项目名录名称"
...@@ -219,7 +230,10 @@ ...@@ -219,7 +230,10 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="战略性新兴产业分类(如有,必填)"> <el-form-item
label-width="200"
label="战略性新兴产业分类(如有,必填)"
>
<el-input <el-input
v-model="formData.zlxxxcyfl" v-model="formData.zlxxxcyfl"
placeholder="请输入战略性新兴产业分类" placeholder="请输入战略性新兴产业分类"
...@@ -234,6 +248,7 @@ ...@@ -234,6 +248,7 @@
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item <el-form-item
label-width="200"
label="列入企业发展战略性新兴产业工作方案的项目(B1)" label="列入企业发展战略性新兴产业工作方案的项目(B1)"
> >
<CommonSelector <CommonSelector
...@@ -244,7 +259,10 @@ ...@@ -244,7 +259,10 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="粮食、能源、矿产资源保障项目(B2)"> <el-form-item
label-width="200"
label="粮食、能源、矿产资源保障项目(B2)"
>
<CommonSelector <CommonSelector
:radio="true" :radio="true"
v-model="formData.lsnykczybzxm" v-model="formData.lsnykczybzxm"
...@@ -254,6 +272,7 @@ ...@@ -254,6 +272,7 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item <el-form-item
label-width="200"
label="传统产业高端化、智能化、绿色化转型升级项目(B3)" label="传统产业高端化、智能化、绿色化转型升级项目(B3)"
> >
<CommonSelector <CommonSelector
...@@ -264,7 +283,10 @@ ...@@ -264,7 +283,10 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="支撑企业发展的重点项目(B4)"> <el-form-item
label-width="200"
label="支撑企业发展的重点项目(B4)"
>
<CommonSelector <CommonSelector
:radio="true" :radio="true"
v-model="formData.zcqyfzdddxm" v-model="formData.zcqyfzdddxm"
...@@ -273,7 +295,10 @@ ...@@ -273,7 +295,10 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="制造业技术改造项目"> <el-form-item
label-width="200"
label="制造业技术改造项目"
>
<CommonSelector <CommonSelector
:radio="true" :radio="true"
v-model="formData.zzyjsgzxm" v-model="formData.zzyjsgzxm"
...@@ -778,7 +803,10 @@ ...@@ -778,7 +803,10 @@
> >
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="24"> <el-col :span="24">
<el-form-item label="参股单位出资情况修正"> <el-form-item
label-width="200"
label="参股单位出资情况修正"
>
<DynamicTable <DynamicTable
:columns="transferColumns" :columns="transferColumns"
:disabled="isPreview" :disabled="isPreview"
...@@ -798,6 +826,16 @@ ...@@ -798,6 +826,16 @@
</div> </div>
</div> </div>
</div> </div>
<div class="add-project-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -808,7 +846,7 @@ import { useRouter, useRoute } from "vue-router"; ...@@ -808,7 +846,7 @@ import { useRouter, useRoute } from "vue-router";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import annualPlan from "./annualPlan.vue"; import annualPlan from "./annualPlan.vue";
import DynamicTable from "@/components/FormDynamicTable/index.vue"; import DynamicTable from "@/components/FormDynamicTable/index.vue";
import routerBack from "@/components/common/routerBack.vue";
// ========== 年度计划子组件专属时间列表【核心:适配任意年份,父子唯一统一】 ========== // ========== 年度计划子组件专属时间列表【核心:适配任意年份,父子唯一统一】 ==========
const annualDynamicTimeList = ref([]); const annualDynamicTimeList = ref([]);
...@@ -1481,56 +1519,3 @@ onMounted(() => { ...@@ -1481,56 +1519,3 @@ onMounted(() => {
} }
}); });
</script> </script>
<style scoped lang="less">
@import "@/styles/manage.less";
.add-project-container {
width: 100%;
height: 100%;
padding: 20px;
box-sizing: border-box;
}
.add-project-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20px;
}
.tab-content {
background: #fff;
padding: 20px;
border-radius: 4px;
}
// 表格样式优化:两个表格统一样式,逻辑独立
:deep(.el-table-cell) {
padding-left: 8px !important;
box-sizing: border-box;
}
:deep(.el-input-number__input) {
text-align: right;
padding-right: 25px;
}
:deep(.el-collapse-item__header) {
font-weight: bold;
}
:deep(.el-table) {
--el-table-border-color: #ebeef5;
}
// 文本域宽度适配
:deep(.el-textarea__inner) {
width: 100% !important;
}
// 年度计划表格子组件容器
.annualPlans {
width: 100%;
overflow-x: auto;
}
// 修复数字输入框样式
:deep(.el-input-number) {
width: 100%;
}
</style>
...@@ -186,6 +186,4 @@ onMounted(() => { ...@@ -186,6 +186,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
<template> <template>
<div class="add-project-container"> <div class="add-project-container">
<div class="add-project-content" v-loading="loading"> <div class="add-project-content" v-loading="loading">
<div class="add-project-header"> <routerBack />
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
<div class="tabs-content"> <div class="tabs-content">
<div class="project-tab-content"> <div class="project-tab-content">
<div class="tab-content"> <div class="tab-content">
<!-- 表单模型绑定表字段formData,保留原有布局/禁用逻辑 --> <!-- 表单模型绑定表字段formData,保留原有布局/禁用逻辑 -->
<el-form :model="formData" :label-width="200" :disabled="isPreview"> <el-form :model="formData" :disabled="isPreview">
<el-row :gutter="20"> <el-row :gutter="20">
<!-- 文件名称 → 绑定wjmc --> <!-- 文件名称 → 绑定wjmc -->
<el-col :span="12"> <el-col :span="12">
...@@ -62,7 +55,7 @@ ...@@ -62,7 +55,7 @@
<!-- 附件 → 绑定fjsc --> <!-- 附件 → 绑定fjsc -->
<el-col :span="24"> <el-col :span="24">
<el-form-item label="附件" label-width="200"> <el-form-item label="附件">
<FileUploader v-model="formData.fjsc" /> <FileUploader v-model="formData.fjsc" />
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -71,6 +64,15 @@ ...@@ -71,6 +64,15 @@
</div> </div>
</div> </div>
</div> </div>
<div class="add-project-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -81,6 +83,7 @@ import { useRouter, useRoute } from "vue-router"; ...@@ -81,6 +83,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";
// 路由&全局实例(原有逻辑保留) // 路由&全局实例(原有逻辑保留)
const router = useRouter(); const router = useRouter();
...@@ -162,8 +165,6 @@ onMounted(() => { ...@@ -162,8 +165,6 @@ onMounted(() => {
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
@import "@/styles/manage.less";
.add-project-container { .add-project-container {
padding: 20px; padding: 20px;
background: #f5f7fa; background: #f5f7fa;
......
...@@ -179,6 +179,4 @@ onMounted(() => { ...@@ -179,6 +179,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
<template> <template>
<div class="add-project-container"> <div class="add-project-container">
<div class="add-project-content" v-loading="loading"> <div class="add-project-content" v-loading="loading">
<div class="add-project-header"> <routerBack />
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
<div class="tabs-content"> <div class="tabs-content">
<div class="project-tab-content"> <div class="project-tab-content">
<div class="tab-content"> <div class="tab-content">
<el-form :model="formData" :label-width="200" :disabled="isPreview"> <el-form :model="formData" :disabled="isPreview">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="问题标题" required> <el-form-item label="问题标题" required>
...@@ -45,7 +37,7 @@ ...@@ -45,7 +37,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label-width="0" label=""> <el-form-item label="问题文件">
<FileUploader v-model="formData.fjsc" /> <FileUploader v-model="formData.fjsc" />
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -54,6 +46,15 @@ ...@@ -54,6 +46,15 @@
</div> </div>
</div> </div>
</div> </div>
<div class="add-project-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -63,7 +64,7 @@ import { reactive, ref, onMounted, getCurrentInstance } from "vue"; ...@@ -63,7 +64,7 @@ import { reactive, ref, onMounted, getCurrentInstance } from "vue";
import { useRouter, useRoute } from "vue-router"; 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";
// 路由&全局实例 // 路由&全局实例
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
...@@ -155,8 +156,6 @@ onMounted(() => { ...@@ -155,8 +156,6 @@ onMounted(() => {
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
@import "@/styles/manage.less";
.add-project-container { .add-project-container {
padding: 20px; padding: 20px;
background: #f5f7fa; background: #f5f7fa;
......
...@@ -201,6 +201,4 @@ onMounted(() => { ...@@ -201,6 +201,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
<template> <template>
<div class="add-project-container"> <div class="add-project-container">
<div class="add-project-content" v-loading="loading"> <div class="add-project-content" v-loading="loading">
<div class="add-project-header"> <routerBack />
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
<div class="tabs-content"> <div class="tabs-content">
<div class="project-tab-content"> <div class="project-tab-content">
<div class="tab-content"> <div class="tab-content">
<el-form :model="formData" :label-width="200" :disabled="isPreview"> <el-form label-width="150" :model="formData" :disabled="isPreview">
<el-row :gutter="20"> <el-row :gutter="20">
<!-- 事项名称 --> <!-- 事项名称 -->
<el-col :span="12"> <el-col :span="12">
...@@ -102,19 +94,19 @@ ...@@ -102,19 +94,19 @@
<!-- 附件上传区域 - 上级单位投资规划 --> <!-- 附件上传区域 - 上级单位投资规划 -->
<el-col :span="24"> <el-col :span="24">
<el-form-item label="上级单位投资规划" label-width="200"> <el-form-item label="上级单位投资规划">
<FileUploader v-model="formData.sjdwtzgh" /> <FileUploader v-model="formData.sjdwtzgh" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<!-- 附件上传区域 - 本级单位投资规划 --> <!-- 附件上传区域 - 本级单位投资规划 -->
<el-col :span="24"> <el-col :span="24">
<el-form-item label="本级单位投资规划" label-width="200"> <el-form-item label="本级单位投资规划">
<FileUploader v-model="formData.bjdwtzgh" /> <FileUploader v-model="formData.bjdwtzgh" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<!-- 附件上传区域 - 其他材料 --> <!-- 附件上传区域 - 其他材料 -->
<el-col :span="24"> <el-col :span="24">
<el-form-item label="其他材料" label-width="200"> <el-form-item label="其他材料">
<FileUploader v-model="formData.qtcl" /> <FileUploader v-model="formData.qtcl" />
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -123,6 +115,15 @@ ...@@ -123,6 +115,15 @@
</div> </div>
</div> </div>
</div> </div>
<div class="add-project-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -132,7 +133,7 @@ import { reactive, ref, onMounted, getCurrentInstance } from "vue"; ...@@ -132,7 +133,7 @@ import { reactive, ref, onMounted, getCurrentInstance } from "vue";
import { useRouter, useRoute } from "vue-router"; 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";
// 路由&全局实例 // 路由&全局实例
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
...@@ -240,6 +241,4 @@ onMounted(() => { ...@@ -240,6 +241,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
...@@ -177,6 +177,4 @@ onMounted(() => { ...@@ -177,6 +177,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
<template> <template>
<div class="add-project-container"> <div class="add-project-container">
<div class="add-project-content" v-loading="loading"> <div class="add-project-content" v-loading="loading">
<div class="add-project-header"> <routerBack />
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
<div class="tabs-content"> <div class="tabs-content">
<div class="project-tab-content"> <div class="project-tab-content">
<div class="tab-content"> <div class="tab-content">
<el-form :model="formData" :label-width="200" :disabled="isPreview"> <el-form :model="formData" :disabled="isPreview">
<!-- 仅保留档案基本信息折叠项,删除所有无用折叠项 --> <!-- 仅保留档案基本信息折叠项,删除所有无用折叠项 -->
<el-collapse v-model="activeCollapse"> <el-collapse v-model="activeCollapse">
<el-collapse-item title="档案基本信息" name="档案基本信息"> <el-collapse-item title="档案基本信息" name="档案基本信息">
...@@ -105,6 +98,15 @@ ...@@ -105,6 +98,15 @@
</div> </div>
</div> </div>
</div> </div>
<div class="add-project-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -116,6 +118,7 @@ import { ElMessage } from "element-plus"; ...@@ -116,6 +118,7 @@ import { ElMessage } from "element-plus";
import { useUserStore } from "@/stores/user.js"; import { useUserStore } from "@/stores/user.js";
// 引入组件:仅保留实际用到的 // 引入组件:仅保留实际用到的
import FileUploader from "@/components/FileUploader/index.vue"; import FileUploader from "@/components/FileUploader/index.vue";
import routerBack from "@/components/common/routerBack.vue";
// 初始化必要全局变量:删除无用的token/options // 初始化必要全局变量:删除无用的token/options
const userStore = useUserStore(); const userStore = useUserStore();
...@@ -242,6 +245,4 @@ onMounted(() => { ...@@ -242,6 +245,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
...@@ -191,6 +191,4 @@ onMounted(() => { ...@@ -191,6 +191,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
<template> <template>
<div class="add-project-container"> <div class="add-project-container">
<div class="add-project-content" v-loading="loading"> <div class="add-project-content" v-loading="loading">
<div class="add-project-header"> <routerBack />
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
<div class="tabs-content"> <div class="tabs-content">
<div class="project-tab-content"> <div class="project-tab-content">
<div class="tab-content"> <div class="tab-content">
<el-form :model="formData" :label-width="200" :disabled="isPreview"> <el-form :model="formData" label-width="150" :disabled="isPreview">
<el-collapse v-model="activeCollapse"> <el-collapse v-model="activeCollapse">
<el-collapse-item title="基本信息" name="基本信息"> <el-collapse-item title="基本信息" name="基本信息">
<el-row :gutter="20"> <el-row :gutter="20">
...@@ -499,6 +492,15 @@ ...@@ -499,6 +492,15 @@
</div> </div>
</div> </div>
</div> </div>
<div class="add-project-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -508,7 +510,7 @@ import { reactive, ref, onMounted, getCurrentInstance, h, computed } from "vue"; ...@@ -508,7 +510,7 @@ import { reactive, ref, onMounted, getCurrentInstance, h, computed } from "vue";
import { useRouter, useRoute } from "vue-router"; import { useRouter, useRoute } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus"; import { ElMessage, ElMessageBox } from "element-plus";
import { useUserStore } from "@/stores/user.js"; import { useUserStore } from "@/stores/user.js";
import routerBack from "@/components/common/routerBack.vue";
// 初始化全局变量 // 初始化全局变量
const userStore = useUserStore(); const userStore = useUserStore();
const router = useRouter(); const router = useRouter();
...@@ -854,9 +856,6 @@ onMounted(() => { ...@@ -854,9 +856,6 @@ onMounted(() => {
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
@import "@/styles/manage.less";
// @import "@/styles/manage.less";
.subtotal { .subtotal {
background-color: #f5f7fa; background-color: #f5f7fa;
height: 40px; height: 40px;
......
...@@ -187,6 +187,4 @@ onMounted(() => { ...@@ -187,6 +187,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
<template> <template>
<div class="add-project-container"> <div class="add-project-container">
<div class="add-project-content" v-loading="loading"> <div class="add-project-content" v-loading="loading">
<div class="add-project-header"> <routerBack />
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
<div class="tabs-content"> <div class="tabs-content">
<div class="project-tab-content"> <div class="project-tab-content">
<div class="tab-content"> <div class="tab-content">
<el-form :model="formData" :label-width="200" :disabled="isPreview"> <el-form :model="formData" :disabled="isPreview">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="文件名称"> <el-form-item label="文件名称">
...@@ -74,6 +66,15 @@ ...@@ -74,6 +66,15 @@
</div> </div>
</div> </div>
</div> </div>
<div class="add-project-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -83,7 +84,7 @@ import { reactive, ref, onMounted, getCurrentInstance } from "vue"; ...@@ -83,7 +84,7 @@ import { reactive, ref, onMounted, getCurrentInstance } from "vue";
import { useRouter, useRoute } from "vue-router"; 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";
// 路由&全局实例 // 路由&全局实例
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
...@@ -159,8 +160,6 @@ onMounted(() => { ...@@ -159,8 +160,6 @@ onMounted(() => {
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
@import "@/styles/manage.less";
.add-project-container { .add-project-container {
padding: 20px; padding: 20px;
background: #f5f7fa; background: #f5f7fa;
......
...@@ -197,6 +197,4 @@ onMounted(() => { ...@@ -197,6 +197,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
<template> <template>
<div class="add-project-container"> <div class="add-project-container">
<div class="add-project-content" v-loading="loading"> <div class="add-project-content" v-loading="loading">
<div class="add-project-header"> <routerBack />
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
<div class="tabs-content"> <div class="tabs-content">
<div class="project-tab-content"> <div class="project-tab-content">
<div class="tab-content"> <div class="tab-content">
<el-form :model="formData" :label-width="200" :disabled="isPreview"> <el-form :model="formData" :disabled="isPreview">
<el-row :gutter="20"> <el-row :gutter="20">
<!-- 会议编号(必填、唯一) --> <!-- 会议编号(必填、唯一) -->
<el-col :span="12"> <el-col :span="12">
...@@ -77,7 +70,7 @@ ...@@ -77,7 +70,7 @@
</el-col> </el-col>
<!-- 会议纪要附件(无需额外处理,组件直接绑定) --> <!-- 会议纪要附件(无需额外处理,组件直接绑定) -->
<el-col :span="24"> <el-col :span="24">
<el-form-item label="会议纪要附件" label-width="200"> <el-form-item label="会议纪要附件">
<FileUploader v-model="formData.meetingMinutesAttachment" /> <FileUploader v-model="formData.meetingMinutesAttachment" />
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -86,6 +79,15 @@ ...@@ -86,6 +79,15 @@
</div> </div>
</div> </div>
</div> </div>
<div class="add-project-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -95,6 +97,7 @@ import { reactive, ref, onMounted, getCurrentInstance } from "vue"; ...@@ -95,6 +97,7 @@ import { reactive, ref, onMounted, getCurrentInstance } from "vue";
import { useRouter, useRoute } from "vue-router"; 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";
// 路由&全局实例 // 路由&全局实例
const router = useRouter(); const router = useRouter();
...@@ -202,8 +205,6 @@ onMounted(() => { ...@@ -202,8 +205,6 @@ onMounted(() => {
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
@import "@/styles/manage.less";
.add-project-container { .add-project-container {
padding: 20px; padding: 20px;
background: #f5f7fa; background: #f5f7fa;
......
<template> <template>
<div class="add-project-container"> <div class="add-project-container">
<div class="add-project-content" v-loading="loading"> <div class="add-project-content" v-loading="loading">
<div class="add-project-header"> <routerBack />
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
<div class="tabs-content"> <div class="tabs-content">
<div class="project-tab-content"> <div class="project-tab-content">
<div class="tab-content"> <div class="tab-content">
<el-form :model="formData" :label-width="80" :disabled="isPreview"> <el-form :model="formData" :label-width="80" :disabled="isPreview">
<el-collapse v-model="activeCollapse"> <el-collapse v-model="activeCollapse">
<el-collapse-item title="投资额控制" name="投资额控制"> <el-collapse-item title="项目信息" name="项目信息">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="项目信息" required> <el-form-item label="项目信息" required>
...@@ -890,6 +882,15 @@ ...@@ -890,6 +882,15 @@
</div> </div>
</div> </div>
</div> </div>
<div class="add-project-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -898,6 +899,7 @@ import { reactive, ref, onMounted, getCurrentInstance } from "vue"; ...@@ -898,6 +899,7 @@ import { reactive, ref, onMounted, getCurrentInstance } from "vue";
import { useRouter, useRoute } from "vue-router"; 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 { useUserStore } from "@/stores/user.js"; import { useUserStore } from "@/stores/user.js";
const userStore = useUserStore(); const userStore = useUserStore();
...@@ -1340,7 +1342,6 @@ const saveClick = () => { ...@@ -1340,7 +1342,6 @@ const saveClick = () => {
} }
} }
} }
@import "@/styles/manage.less";
.add-project-header { .add-project-header {
margin-bottom: 10px; margin-bottom: 10px;
} }
......
<template> <template>
<div class="add-project-container"> <div class="add-project-container">
<div class="add-project-content" v-loading="loading"> <div class="add-project-content" v-loading="loading">
<div class="add-project-header"> <routerBack />
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
<div class="tabs-content"> <div class="tabs-content">
<div class="project-tab-content"> <div class="project-tab-content">
<div class="tab-content"> <div class="tab-content">
...@@ -374,6 +367,15 @@ ...@@ -374,6 +367,15 @@
</div> </div>
</div> </div>
</div> </div>
<div class="add-project-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -392,6 +394,7 @@ const route = useRoute(); ...@@ -392,6 +394,7 @@ const route = useRoute();
const { proxy } = getCurrentInstance(); 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";
const activeCollapse = reactive(["基本信息", "已发现或暴露的风险"]); const activeCollapse = reactive(["基本信息", "已发现或暴露的风险"]);
let formData = reactive({}); let formData = reactive({});
...@@ -570,7 +573,6 @@ const saveClick = () => { ...@@ -570,7 +573,6 @@ const saveClick = () => {
}; };
</script> </script>
<style lang="less"> <style lang="less">
@import "@/styles/manage.less";
.add-project-header { .add-project-header {
margin-bottom: 10px; margin-bottom: 10px;
} }
......
<template> <template>
<div class="add-project-container"> <div class="add-project-container">
<div class="add-project-content" v-loading="loading"> <div class="add-project-content" v-loading="loading">
<div class="add-project-header"> <routerBack />
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
<div class="tabs-content"> <div class="tabs-content">
<el-tabs v-model="pageActiveName" type="border-card"> <el-tabs v-model="pageActiveName" type="border-card">
<el-tab-pane label="全生命周期责任书" name="全生命周期责任书"> <el-tab-pane label="全生命周期责任书" name="全生命周期责任书">
...@@ -167,7 +160,6 @@ ...@@ -167,7 +160,6 @@
:max="99999999999.99999999" :max="99999999999.99999999"
controls-position="right" controls-position="right"
></el-input-number> ></el-input-number>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
...@@ -523,6 +515,15 @@ ...@@ -523,6 +515,15 @@
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
<div class="add-project-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -539,6 +540,7 @@ const { proxy } = getCurrentInstance(); ...@@ -539,6 +540,7 @@ const { proxy } = getCurrentInstance();
const pageActiveName = ref("全生命周期责任书"); 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";
const activeCollapse = reactive([ const activeCollapse = reactive([
"责任书基本信息", "责任书基本信息",
...@@ -1041,7 +1043,6 @@ const saveClick = () => { ...@@ -1041,7 +1043,6 @@ const saveClick = () => {
</script> </script>
<style lang="less"> <style lang="less">
@import "@/styles/manage.less";
.add-project-header { .add-project-header {
margin-bottom: 10px; margin-bottom: 10px;
} }
......
...@@ -196,6 +196,4 @@ onMounted(() => { ...@@ -196,6 +196,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
<template> <template>
<div class="add-project-container"> <div class="add-project-container">
<div class="add-project-content" v-loading="loading"> <div class="add-project-content" v-loading="loading">
<div class="add-project-header"> <routerBack />
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
<div class="tabs-content"> <div class="tabs-content">
<div class="project-tab-content"> <div class="project-tab-content">
<div class="tab-content"> <div class="tab-content">
<el-form :model="formData" :label-width="200" :disabled="isPreview"> <el-form :model="formData" :disabled="isPreview">
<!-- 项目信息选择 --> <!-- 项目信息选择 -->
<el-row :gutter="20" style="margin-bottom: 20px"> <el-row :gutter="20" style="margin-bottom: 20px">
<el-col :span="12"> <el-col :span="12">
...@@ -123,6 +115,15 @@ ...@@ -123,6 +115,15 @@
</div> </div>
</div> </div>
</div> </div>
<div class="add-project-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -132,7 +133,7 @@ import { reactive, ref, onMounted, getCurrentInstance } from "vue"; ...@@ -132,7 +133,7 @@ import { reactive, ref, onMounted, getCurrentInstance } from "vue";
import { useRouter, useRoute } from "vue-router"; 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";
// 初始化全局变量 // 初始化全局变量
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
...@@ -270,8 +271,6 @@ onMounted(() => { ...@@ -270,8 +271,6 @@ onMounted(() => {
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
@import "@/styles/manage.less";
// 标签页样式优化 // 标签页样式优化
:deep(.el-tabs--border-card) { :deep(.el-tabs--border-card) {
--el-tabs-card-border-color: var(--el-border-color); --el-tabs-card-border-color: var(--el-border-color);
......
...@@ -161,6 +161,4 @@ onMounted(() => { ...@@ -161,6 +161,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
<template> <template>
<div class="add-project-container"> <div class="add-project-container">
<div class="add-project-content" v-loading="loading"> <div class="add-project-content" v-loading="loading">
<div class="add-project-header"> <routerBack />
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
<div class="tabs-content"> <div class="tabs-content">
<div class="project-tab-content"> <div class="project-tab-content">
<div class="tab-content"> <div class="tab-content">
<el-form :model="formData" :label-width="200" :disabled="isPreview"> <el-form :model="formData" :disabled="isPreview">
<el-collapse v-model="activeCollapse"> <el-collapse v-model="activeCollapse">
<!-- 基本信息 --> <!-- 基本信息 -->
<el-collapse-item title="基本信息" name="基本信息"> <el-collapse-item title="基本信息" name="基本信息">
...@@ -222,6 +215,15 @@ ...@@ -222,6 +215,15 @@
</div> </div>
</div> </div>
</div> </div>
<div class="add-project-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -231,6 +233,7 @@ import { reactive, ref, onMounted, getCurrentInstance } from "vue"; ...@@ -231,6 +233,7 @@ import { reactive, ref, onMounted, getCurrentInstance } from "vue";
import { useRouter, useRoute } from "vue-router"; 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";
// 初始化全局变量 // 初始化全局变量
const router = useRouter(); const router = useRouter();
...@@ -403,8 +406,6 @@ onMounted(() => { ...@@ -403,8 +406,6 @@ onMounted(() => {
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
@import "@/styles/manage.less";
.tab-handle { .tab-handle {
margin-bottom: 10px; margin-bottom: 10px;
text-align: left; text-align: left;
......
...@@ -175,6 +175,4 @@ onMounted(() => { ...@@ -175,6 +175,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
<template> <template>
<div class="add-project-container"> <div class="add-project-container">
<div class="add-project-content" v-loading="loading"> <div class="add-project-content" v-loading="loading">
<div class="add-project-header"> <routerBack />
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
<div class="tabs-content"> <div class="tabs-content">
<div class="project-tab-content"> <div class="project-tab-content">
<div class="tab-content"> <div class="tab-content">
<el-form :model="formData" :label-width="200" :disabled="isPreview"> <el-form :model="formData" label-width="150" :disabled="isPreview">
<el-collapse v-model="activeCollapse"> <el-collapse v-model="activeCollapse">
<el-collapse-item title="项目基本信息" name="项目基本信息"> <el-collapse-item title="项目基本信息" name="项目基本信息">
<el-row :gutter="24"> <el-row :gutter="24">
...@@ -359,6 +351,15 @@ ...@@ -359,6 +351,15 @@
</div> </div>
</div> </div>
</div> </div>
<div class="add-project-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -369,6 +370,7 @@ import { useRouter, useRoute } from "vue-router"; ...@@ -369,6 +370,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 FinancialTable from "@/components/FinancialTable.vue"; import FinancialTable from "@/components/FinancialTable.vue";
import routerBack from "@/components/common/routerBack.vue";
const transferColumns = ref([ const transferColumns = ref([
{ {
prop: "njfcgbl", prop: "njfcgbl",
...@@ -701,9 +703,6 @@ onMounted(() => { ...@@ -701,9 +703,6 @@ onMounted(() => {
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
@import "@/styles/manage.less";
// @import "@/styles/manage.less";
.DynamicTable-slot { .DynamicTable-slot {
display: flex; display: flex;
div { div {
......
...@@ -191,6 +191,4 @@ onMounted(() => { ...@@ -191,6 +191,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
<template> <template>
<div class="add-project-container"> <div class="add-project-container">
<div class="add-project-content" v-loading="loading"> <div class="add-project-content" v-loading="loading">
<div class="add-project-header"> <routerBack />
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
<div class="tabs-content"> <div class="tabs-content">
<el-collapse v-model="activeCollapse"> <el-collapse v-model="activeCollapse">
<el-tabs v-model="pageActiveName" type="border-card"> <el-tabs v-model="pageActiveName" type="border-card">
<el-tab-pane label="基础信息" name="基础信息"> <el-tab-pane label="基础信息" name="基础信息">
<div class="project-tab-content"> <div class="project-tab-content">
<el-form <el-form :model="formData" :disabled="isPreview">
:model="formData"
:label-width="200"
:disabled="isPreview"
>
<!-- 1. 项目基本信息 --> <!-- 1. 项目基本信息 -->
<el-collapse-item title="项目基本信息" name="项目基本信息"> <el-collapse-item title="项目基本信息" name="项目基本信息">
<el-row :gutter="20"> <el-row :gutter="20">
...@@ -861,11 +849,7 @@ ...@@ -861,11 +849,7 @@
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="申请报告" name="申请报告"> <el-tab-pane label="申请报告" name="申请报告">
<div class="project-tab-content"> <div class="project-tab-content">
<el-form <el-form :model="formData" :disabled="isPreview">
:model="formData"
:label-width="200"
:disabled="isPreview"
>
<!-- 一、项目背景 --> <!-- 一、项目背景 -->
<el-collapse-item title="一、项目背景" name="一、项目背景"> <el-collapse-item title="一、项目背景" name="一、项目背景">
<el-row :gutter="20"> <el-row :gutter="20">
...@@ -1316,6 +1300,15 @@ ...@@ -1316,6 +1300,15 @@
</el-tabs> </el-tabs>
</el-collapse> </el-collapse>
</div> </div>
<div class="add-project-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -1325,7 +1318,7 @@ import { reactive, ref, onMounted, getCurrentInstance } from "vue"; ...@@ -1325,7 +1318,7 @@ import { reactive, ref, onMounted, getCurrentInstance } from "vue";
import { useRouter, useRoute } from "vue-router"; 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 FileUploader from "@/components/FileUploader/index.vue"; import FileUploader from "@/components/FileUploader/index.vue";
import FinancialTable from "@/components/FinancialTable.vue"; import FinancialTable from "@/components/FinancialTable.vue";
...@@ -2517,20 +2510,3 @@ onMounted(() => { ...@@ -2517,20 +2510,3 @@ onMounted(() => {
} }
}); });
</script> </script>
<style scoped lang="less">
@import "@/styles/manage.less";
// 调整折叠面板和表格样式
:deep(.el-collapse-item__header) {
font-weight: 600;
}
:deep(.el-table) {
--el-table-header-text-color: #333;
--el-table-row-hover-bg-color: #f8f9fa;
}
// 文件上传组件间距
:deep(.el-form-item) {
margin-bottom: 20px;
}
</style>
...@@ -155,6 +155,4 @@ onMounted(() => { ...@@ -155,6 +155,4 @@ onMounted(() => {
getProjectData(); getProjectData();
}); });
</script> </script>
<style lang="less" scoped> <style lang="less" scoped></style>
@import "@/styles/manage.less";
</style>
...@@ -187,6 +187,4 @@ onMounted(() => { ...@@ -187,6 +187,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
<template> <template>
<div class="add-project-container"> <div class="add-project-container">
<div class="add-project-content" v-loading="loading"> <div class="add-project-content" v-loading="loading">
<div class="add-project-header"> <routerBack />
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
<div class="tabs-content"> <div class="tabs-content">
<div class="project-tab-content"> <div class="project-tab-content">
<div class="tab-content"> <div class="tab-content">
<el-form :model="formData" :label-width="200" :disabled="isPreview"> <el-form :model="formData" label-width="150" :disabled="isPreview">
<el-collapse v-model="activeCollapse"> <el-collapse v-model="activeCollapse">
<!-- 选择类型 --> <!-- 选择类型 -->
<el-collapse-item title="选择类型" name="选择类型"> <el-collapse-item title="选择类型" name="选择类型">
...@@ -261,7 +253,7 @@ ...@@ -261,7 +253,7 @@
<el-collapse-item title="项目投资效益" name="项目投资效益"> <el-collapse-item title="项目投资效益" name="项目投资效益">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="24"> <el-col :span="24">
<el-form-item label=" "> <el-form-item label-width="0">
<DynamicTable <DynamicTable
:showDeleteButton="false" :showDeleteButton="false"
:showAddButton="false" :showAddButton="false"
...@@ -740,6 +732,15 @@ ...@@ -740,6 +732,15 @@
</div> </div>
</div> </div>
</div> </div>
<div class="add-project-header">
<div class="header-left"></div>
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<template v-if="!loading && !isPreview">
<el-button type="primary" @click="saveClick">保存</el-button>
</template>
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -750,7 +751,7 @@ import { useRouter, useRoute } from "vue-router"; ...@@ -750,7 +751,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 FileUploader from "@/components/FileUploader/index.vue"; import FileUploader from "@/components/FileUploader/index.vue";
import routerBack from "@/components/common/routerBack.vue";
const transferColumns = ref([ const transferColumns = ref([
{ {
prop: "njfcgbl", prop: "njfcgbl",
...@@ -1192,61 +1193,4 @@ onMounted(() => { ...@@ -1192,61 +1193,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
.add-project-container {
width: 100%;
height: 100%;
padding: 20px;
box-sizing: border-box;
}
.add-project-content {
background: #fff;
border-radius: 8px;
padding: 20px;
height: 100%;
overflow-y: auto;
}
.add-project-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20px;
padding-bottom: 10px;
border-bottom: 1px solid #e6e6e6;
}
.header-right {
display: flex;
gap: 10px;
}
.tabs-content {
width: 100%;
}
.project-tab-content {
width: 100%;
}
.tab-content {
width: 100%;
}
.el-collapse {
--el-collapse-header-text-color: #303133;
--el-collapse-header-font-size: 16px;
}
.el-table {
--el-table-row-hover-bg-color: #f8f9fa;
margin-bottom: 10px;
}
.el-input-number {
width: 100%;
}
</style>
...@@ -171,6 +171,4 @@ onMounted(() => { ...@@ -171,6 +171,4 @@ onMounted(() => {
jcdwList = resourceData.jcdw; jcdwList = resourceData.jcdw;
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
...@@ -182,6 +182,4 @@ onMounted(() => { ...@@ -182,6 +182,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
This diff is collapsed.
...@@ -265,6 +265,4 @@ const previewProject = (item) => { ...@@ -265,6 +265,4 @@ const previewProject = (item) => {
}; };
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
...@@ -162,6 +162,4 @@ const approvalProject = (item) => { ...@@ -162,6 +162,4 @@ const approvalProject = (item) => {
}; };
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
...@@ -159,6 +159,4 @@ const previewProject = (item) => { ...@@ -159,6 +159,4 @@ const previewProject = (item) => {
}; };
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
...@@ -188,6 +188,4 @@ const deleteProject = (item) => { ...@@ -188,6 +188,4 @@ const deleteProject = (item) => {
}; };
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
...@@ -176,6 +176,4 @@ const fillDecision = (item) => { ...@@ -176,6 +176,4 @@ const fillDecision = (item) => {
}; };
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
...@@ -142,6 +142,4 @@ const exportData = () => { ...@@ -142,6 +142,4 @@ const exportData = () => {
}; };
</script> </script>
<style lang="less"> <style lang="less"></style>
@import "@/styles/manage.less";
</style>
...@@ -309,7 +309,6 @@ onMounted(() => { ...@@ -309,7 +309,6 @@ onMounted(() => {
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
@import "@/styles/manage.less";
.depart-manage { .depart-manage {
padding: 20px; padding: 20px;
background: rgba(157, 188, 218, 0.1); background: rgba(157, 188, 218, 0.1);
......
...@@ -216,6 +216,4 @@ onMounted(() => { ...@@ -216,6 +216,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
<template> <template>
<div class="system-manage-container message-container" v-loading="loading"> <div class="manage-container">
<div class="manage-wrap">
<search-form @search="handleSearch" />
<div
class="system-manage-container message-container"
v-loading="loading"
>
<div class="system-manage-content manage-content"> <div class="system-manage-content manage-content">
<common-table <common-table
:autoHeight="true" :autoHeight="true"
:maxRows="10" :maxRows="10"
:rowHeight="40" :rowHeight="40"
:data="tableData" :data="tableData"
:columns="tableColumns" :columns="tableColumns"
:total="total" :total="total"
:current-page="currentPage" :current-page="currentPage"
:page-size="pageSize" :page-size="pageSize"
title="" title=""
:index="true" :index="true"
:border="true" :border="true"
@size-change="handleSizeChange" @size-change="handleSizeChange"
@current-page-change="handleCurrentPageChange" @current-page-change="handleCurrentPageChange"
> >
<template #operations="{ row, index }"> <template #operations="{ row, index }">
<el-button link type="primary" size="small" @click="handlePreview(row, index)"> <el-button
查看 link
</el-button> type="primary"
<el-button link type="danger" size="small" @click="handleDelete(row, index)"> size="small"
删除 @click="handlePreview(row, index)"
</el-button> >
</template> 查看
</common-table> </el-button>
<el-button
link
type="danger"
size="small"
@click="handleDelete(row, index)"
>
删除
</el-button>
</template>
</common-table>
</div> </div>
<el-dialog v-model="messageDialogVisible" title="" width="500" align-center <el-dialog
@close="closeDialog" v-model="messageDialogVisible"
title=""
width="500"
align-center
@close="closeDialog"
> >
<div class="message-wrap"> <div class="message-wrap">
<div class="message-title">{{ messageInfo.title }}</div> <div class="message-title">{{ messageInfo.title }}</div>
<div class="message-content"> <div class="message-content">
<div class="label">消息类型:</div> <div class="label">消息类型:</div>
<div class="info">{{ messageInfo.type === 2 ? "项目初步审核" : messageInfo.type === 3 ? "项目终审" : "系统消息" }}</div> <div class="info">
{{
messageInfo.type === 2
? "项目初步审核"
: messageInfo.type === 3
? "项目终审"
: "系统消息"
}}
</div> </div>
<div class="message-content"> </div>
<div class="label">时间:</div> <div class="message-content">
<div class="info">{{ proxy.moment(messageInfo.createdAt).format("YYYY-MM-DD HH:mm:SS") }}</div> <div class="label">时间:</div>
</div> <div class="info">
<div class="message-content"> {{
<div class="label">备注:</div> proxy
<div class="info">{{ messageInfo.content }}</div> .moment(messageInfo.createdAt)
.format("YYYY-MM-DD HH:mm:SS")
}}
</div> </div>
</div> </div>
<template #footer> <div class="message-content">
<div class="dialog-footer"> <div class="label">备注:</div>
<el-button @click="closeDialog">关闭</el-button> <div class="info">{{ messageInfo.content }}</div>
<el-button type="primary" @click="toProjectPage">去处理</el-button> </div>
</div> </div>
</template> <template #footer>
<div class="dialog-footer">
<el-button @click="closeDialog">关闭</el-button>
<el-button type="primary" @click="toProjectPage"
>去处理</el-button
>
</div>
</template>
</el-dialog> </el-dialog>
</div>
</div> </div>
</div>
</template> </template>
<script setup> <script setup>
import { ref, reactive, onMounted, getCurrentInstance, computed, nextTick } from "vue"; import {
ref,
reactive,
onMounted,
getCurrentInstance,
computed,
nextTick,
} from "vue";
import { ElMessage, ElMessageBox } from "element-plus"; import { ElMessage, ElMessageBox } from "element-plus";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import CommonTable from "@/components/common/commonTable.vue"; import CommonTable from "@/components/common/commonTable.vue";
import SearchForm from "@/components/common/SearchForm.vue";
const handleSearch = (formData) => {
currentPage.value = 1;
loadTableData(formData);
};
const router = useRouter(); const router = useRouter();
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const loading = ref(false); const loading = ref(false);
...@@ -72,7 +124,7 @@ const tableColumns = [ ...@@ -72,7 +124,7 @@ const tableColumns = [
{ {
prop: "title", prop: "title",
label: "标题", label: "标题",
minWidth: 100 minWidth: 100,
}, },
{ {
prop: "type", prop: "type",
...@@ -80,8 +132,12 @@ const tableColumns = [ ...@@ -80,8 +132,12 @@ const tableColumns = [
width: 120, width: 120,
align: "center", align: "center",
formatter: (data) => { formatter: (data) => {
return data.type === 2 ? "项目初步审核" : data.type === 3 ? "项目终审" : "系统消息"; return data.type === 2
} ? "项目初步审核"
: data.type === 3
? "项目终审"
: "系统消息";
},
}, },
{ {
prop: "isRead", prop: "isRead",
...@@ -89,8 +145,8 @@ const tableColumns = [ ...@@ -89,8 +145,8 @@ const tableColumns = [
width: 90, width: 90,
align: "center", align: "center",
formatter: (data) => { formatter: (data) => {
return data.isRead ? "已读" : "未读"; return data.isRead ? "已读" : "未读";
} },
}, },
{ {
prop: "createdAt", prop: "createdAt",
...@@ -98,8 +154,8 @@ const tableColumns = [ ...@@ -98,8 +154,8 @@ const tableColumns = [
width: 180, width: 180,
align: "center", align: "center",
formatter: (data) => { formatter: (data) => {
return proxy.moment(data.createdAt).format("YYYY-MM-DD HH:mm:SS"); return proxy.moment(data.createdAt).format("YYYY-MM-DD HH:mm:SS");
} },
}, },
{ {
prop: "operations", prop: "operations",
...@@ -108,15 +164,16 @@ const tableColumns = [ ...@@ -108,15 +164,16 @@ const tableColumns = [
slot: "operations", slot: "operations",
fixed: "right", fixed: "right",
align: "center", align: "center",
} },
]; ];
const loadTableData = () => { const loadTableData = (formData = {}) => {
loading.value = true; loading.value = true;
proxy.$post({ proxy.$post({
url: "/api/message/getUserMessages", url: "/api/message/getUserMessages",
data: { data: {
page: currentPage.value, page: currentPage.value,
pageSize: pageSize.value, pageSize: pageSize.value,
...formData,
}, },
callback: (data) => { callback: (data) => {
tableData.value = data.rows; tableData.value = data.rows;
...@@ -149,7 +206,7 @@ const handlePreview = (item) => { ...@@ -149,7 +206,7 @@ const handlePreview = (item) => {
proxy.$post({ proxy.$post({
url: "/api/message/getMessageInfo", url: "/api/message/getMessageInfo",
data: { data: {
id: item.id id: item.id,
}, },
callback: (data) => { callback: (data) => {
messageDialogVisible.value = true; messageDialogVisible.value = true;
...@@ -159,61 +216,60 @@ const handlePreview = (item) => { ...@@ -159,61 +216,60 @@ const handlePreview = (item) => {
ElMessage.error("加载数据失败"); ElMessage.error("加载数据失败");
}, },
}); });
} };
const closeDialog = () => { const closeDialog = () => {
messageInfo.value = {}; messageInfo.value = {};
messageDialogVisible.value = false; messageDialogVisible.value = false;
} };
// 跳转到对应项目 // 跳转到对应项目
const toProjectPage = () => { const toProjectPage = () => {
router.push({ router.push({
name: "addProject", name: "addProject",
query: { query: {
projectId: messageInfo.value.projectId, projectId: messageInfo.value.projectId,
isPreview: true isPreview: true,
} },
}); });
} };
// 删除 // 删除
const handleDelete = (row) => { const handleDelete = (row) => {
ElMessageBox.confirm(`确定删除该条消息?`, "提示", { ElMessageBox.confirm(`确定删除该条消息?`, "提示", {
confirmButtonText: "确定", confirmButtonText: "确定",
cancelButtonText: "取消", cancelButtonText: "取消",
type: "warning", type: "warning",
}).then(() => { }).then(() => {
proxy.$post({ proxy.$post({
url: "/api/message/deleteMessage", url: "/api/message/deleteMessage",
data: { id: row.id }, data: { id: row.id },
callback: (data) => { callback: (data) => {
ElMessage.success("删除成功"); ElMessage.success("删除成功");
loadTableData(); loadTableData();
}, },
error: (err) => { error: (err) => {
ElMessage.error("删除失败:", err); ElMessage.error("删除失败:", err);
}, },
});
}); });
} });
};
</script> </script>
<style lang="less"> <style lang="less">
@import "@/styles/manage.less"; .message-wrap {
.message-wrap{ .message-title {
.message-title{
font-size: 16px; font-size: 16px;
font-weight: 600; font-weight: 600;
margin: 10px 0; margin: 10px 0;
} }
.message-content{ .message-content {
display: flex; display: flex;
align-items: flex-start; align-items: flex-start;
margin-bottom: 10px; margin-bottom: 10px;
.label{ .label {
width: 80px; width: 80px;
text-align: justify; text-align: justify;
text-align-last: justify; text-align-last: justify;
} }
.info{ .info {
flex: 1; flex: 1;
width: 0; width: 0;
} }
......
...@@ -175,7 +175,11 @@ ...@@ -175,7 +175,11 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="唯一标识" prop="key"> <el-form-item label="唯一标识" prop="key">
<el-input v-model="listFormData.key" placeholder="请输入唯一标识" :disabled="!!resourceFormData.id" /> <el-input
v-model="listFormData.key"
placeholder="请输入唯一标识"
:disabled="!!resourceFormData.id"
/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
...@@ -436,7 +440,6 @@ const handleDelete = async (row, index) => { ...@@ -436,7 +440,6 @@ const handleDelete = async (row, index) => {
</script> </script>
<style lang="less"> <style lang="less">
@import "@/styles/manage.less";
.tree-content { .tree-content {
width: 100%; width: 100%;
height: 150px; height: 150px;
......
...@@ -4,7 +4,11 @@ ...@@ -4,7 +4,11 @@
<div class="header-left"> <div class="header-left">
<el-form :inline="true" :model="searchForm"> <el-form :inline="true" :model="searchForm">
<el-form-item label="名称查询"> <el-form-item label="名称查询">
<el-input v-model="searchForm.name" clearable @keydown.enter="handleSearch"/> <el-input
v-model="searchForm.name"
clearable
@keydown.enter="handleSearch"
/>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="handleSearch">查询</el-button> <el-button type="primary" @click="handleSearch">查询</el-button>
...@@ -36,10 +40,20 @@ ...@@ -36,10 +40,20 @@
@current-page-change="handleCurrentPageChange" @current-page-change="handleCurrentPageChange"
> >
<template #operations="{ row, index }"> <template #operations="{ row, index }">
<el-button link type="primary" size="small" @click="handleEdit(row, index)"> <el-button
link
type="primary"
size="small"
@click="handleEdit(row, index)"
>
编辑 编辑
</el-button> </el-button>
<el-button link type="danger" size="small" @click="handleDelete(row, index)"> <el-button
link
type="danger"
size="small"
@click="handleDelete(row, index)"
>
删除 删除
</el-button> </el-button>
<!-- <el-button type="text" size="small">数据权限 </el-button> --> <!-- <el-button type="text" size="small">数据权限 </el-button> -->
...@@ -47,36 +61,48 @@ ...@@ -47,36 +61,48 @@
</common-table> </common-table>
</div> </div>
<el-dialog class="add-dialog" <el-dialog
class="add-dialog"
v-model="dialogVisible" v-model="dialogVisible"
:title="dialogTitle" :title="dialogTitle"
width="400px" width="400px"
@close="cancelRoleForm" @close="cancelRoleForm"
:close-on-click-modal="false" :close-on-press-escape="false" :close-on-click-modal="false"
:close-on-press-escape="false"
> >
<el-form :model="roleFormData" ref="roleForm" :rules="roleRules" label-width="100"> <el-form
:model="roleFormData"
ref="roleForm"
:rules="roleRules"
label-width="100"
>
<el-form-item label="角色名称" prop="name"> <el-form-item label="角色名称" prop="name">
<el-input v-model="roleFormData.name" placeholder="请输入角色名称" /> <el-input v-model="roleFormData.name" placeholder="请输入角色名称" />
</el-form-item> </el-form-item>
<el-form-item label="角色标识" prop="key"> <el-form-item label="角色标识" prop="key">
<el-input v-model="roleFormData.key" placeholder="请输入角色标识" :disabled="!!roleFormData.id" /> <el-input
v-model="roleFormData.key"
placeholder="请输入角色标识"
:disabled="!!roleFormData.id"
/>
</el-form-item> </el-form-item>
<el-form-item label="菜单配置"> <el-form-item label="菜单配置">
<el-tree ref="treeRef" <el-tree
v-model="roleFormData.menus" ref="treeRef"
:data="treeData" v-model="roleFormData.menus"
node-key="id" :data="treeData"
:props="{label: 'name'}" node-key="id"
showCheckbox :props="{ label: 'name' }"
@check="selectMenus" showCheckbox
@check="selectMenus"
/> />
</el-form-item> </el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button @click="cancelRoleForm">取消</el-button> <el-button @click="cancelRoleForm">取消</el-button>
<el-button type="primary" @click="saveRoleForm">保存</el-button> <el-button type="primary" @click="saveRoleForm">保存</el-button>
</div> </div>
</template> </template>
<!-- <commonForm <!-- <commonForm
v-model="roleForm" v-model="roleForm"
...@@ -121,7 +147,14 @@ ...@@ -121,7 +147,14 @@
</template> </template>
<script setup> <script setup>
import { ref, reactive, onMounted, getCurrentInstance, computed, nextTick } from "vue"; import {
ref,
reactive,
onMounted,
getCurrentInstance,
computed,
nextTick,
} from "vue";
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";
...@@ -179,12 +212,8 @@ const dialogTitle = ref("新增角色"); ...@@ -179,12 +212,8 @@ const dialogTitle = ref("新增角色");
const roleForm = ref(); const roleForm = ref();
const roleFormData = ref({}); const roleFormData = ref({});
const roleRules = { const roleRules = {
name: [ name: [{ required: true, message: "请输入角色名称", trigger: "blur" }],
{ required: true, message: "请输入角色名称", trigger: "blur" } key: [{ required: true, message: "请输入角色标识", trigger: "blur" }],
],
key: [
{ required: true, message: "请输入角色标识", trigger: "blur" }
]
}; };
// 事件处理函数 // 事件处理函数
const handleSearch = (formData) => { const handleSearch = (formData) => {
...@@ -228,27 +257,27 @@ const handleEdit = (row, index) => { ...@@ -228,27 +257,27 @@ const handleEdit = (row, index) => {
// 删除 // 删除
const handleDelete = async (row, index) => { const handleDelete = async (row, index) => {
ElMessageBox.confirm(`确定要删除角色"${row.name}"吗?`, "提示", { ElMessageBox.confirm(`确定要删除角色"${row.name}"吗?`, "提示", {
confirmButtonText: "确定", confirmButtonText: "确定",
cancelButtonText: "取消", cancelButtonText: "取消",
type: "warning", type: "warning",
}).then(() => { }).then(() => {
proxy.$post({ proxy.$post({
url: "/api/user/role/deleteRole", url: "/api/user/role/deleteRole",
data: { id: row.id }, data: { id: row.id },
callback: (data) => { callback: (data) => {
ElMessage.success("删除成功"); ElMessage.success("删除成功");
loadTableData(); loadTableData();
}, },
error: (err) => { error: (err) => {
ElMessage.error("删除失败:", err); ElMessage.error("删除失败:", err);
}, },
});
}); });
});
}; };
const saveRoleForm = () => { const saveRoleForm = () => {
roleForm.value.validate(valid => { roleForm.value.validate((valid) => {
if (valid) { if (valid) {
let url = roleFormData.value.id ? "updateRole" : "createRole"; let url = roleFormData.value.id ? "updateRole" : "createRole";
proxy.$post({ proxy.$post({
...@@ -261,23 +290,25 @@ const saveRoleForm = () => { ...@@ -261,23 +290,25 @@ const saveRoleForm = () => {
}, },
error: (err) => { error: (err) => {
ElMessage.error(dialogTitle.value + "失败:", err); ElMessage.error(dialogTitle.value + "失败:", err);
} },
}); });
} }
}) });
}; };
const cancelRoleForm = () => { const cancelRoleForm = () => {
roleFormData.value = {}; roleFormData.value = {};
roleForm.value.resetFields(); roleForm.value.resetFields();
treeRef.value.setCheckedKeys([]); treeRef.value.setCheckedKeys([]);
dialogVisible.value = false; dialogVisible.value = false;
} };
const selectMenus = () => { const selectMenus = () => {
// 使用 treeRef 获取当前勾选节点 // 使用 treeRef 获取当前勾选节点
const treeInst = treeRef.value; const treeInst = treeRef.value;
if (!treeInst) return; if (!treeInst) return;
const checkedNodes = treeInst.getCheckedNodes ? treeInst.getCheckedNodes() : []; const checkedNodes = treeInst.getCheckedNodes
? treeInst.getCheckedNodes()
: [];
const halfCheckedNodes = treeInst.getHalfCheckedNodes const halfCheckedNodes = treeInst.getHalfCheckedNodes
? treeInst.getHalfCheckedNodes() ? treeInst.getHalfCheckedNodes()
: []; : [];
...@@ -287,7 +318,9 @@ const selectMenus = () => { ...@@ -287,7 +318,9 @@ const selectMenus = () => {
? halfCheckedNodes.map((node) => node.id) ? halfCheckedNodes.map((node) => node.id)
: []; : [];
const allSelectedIds = Array.from(new Set([...checkedIds, ...halfCheckedIds])); const allSelectedIds = Array.from(
new Set([...checkedIds, ...halfCheckedIds]),
);
// 把选中的菜单 id 写回表单数据,供提交使用 // 把选中的菜单 id 写回表单数据,供提交使用
roleFormData.value.menus = allSelectedIds; roleFormData.value.menus = allSelectedIds;
...@@ -338,7 +371,6 @@ onMounted(() => { ...@@ -338,7 +371,6 @@ onMounted(() => {
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
@import "@/styles/manage.less";
.el-tree { .el-tree {
max-height: 500px; max-height: 500px;
overflow-y: auto; overflow-y: auto;
......
...@@ -413,6 +413,4 @@ onMounted(() => { ...@@ -413,6 +413,4 @@ onMounted(() => {
}); });
</script> </script>
<style scoped lang="less"> <style scoped lang="less"></style>
@import "@/styles/manage.less";
</style>
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