明树Git Lab

Commit d259c095 authored by yangyajing's avatar yangyajing

项目管理下拉字典对接

parent 28cffdfd
Pipeline #103972 failed with stage
in 2 seconds
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -5,14 +5,16 @@ import ElementPlus from 'element-plus' ...@@ -5,14 +5,16 @@ import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css' import 'element-plus/dist/index.css'
import * as ElIcons from '@element-plus/icons' import * as ElIcons from '@element-plus/icons'
import router from './router' import router from './router'
import { createPinia } from 'pinia';
import "./assets/fonts/font.less"; // 字体样式 import "./assets/fonts/font.less"; // 字体样式
import "../public/iconFont/iconfont.css"; // 图标字体样式 import "../public/iconFont/iconfont.css"; // 图标字体样式
import { $get, $post } from "@/data/https.js"; import { $get, $post } from "@/data/https.js";
const pinia = createPinia()
const app = createApp(App) const app = createApp(App)
app.config.globalProperties.$get = $get; app.config.globalProperties.$get = $get;
app.config.globalProperties.$post = $post; app.config.globalProperties.$post = $post;
for (const [key, component] of Object.entries(ElIcons)) { for (const [key, component] of Object.entries(ElIcons)) {
app.component(key, component) app.component(key, component)
} }
app.use(ElementPlus).use(router).mount('#app') app.use(ElementPlus).use(router).use(pinia).mount('#app')
...@@ -24,15 +24,15 @@ const routes = [ ...@@ -24,15 +24,15 @@ const routes = [
}, },
{ {
path: '/projectManage', path: '/projectManage',
name: '项目管理', name: 'projectManage',
title: 'projectManage', title: '项目管理',
component: () => import('@/views/managePage/projectManage.vue'), component: () => import('@/views/managePage/projectManage.vue'),
meta: { menuName: '项目管理', icon: 'Management' } meta: { menuName: '项目管理', icon: 'Management' }
}, },
{ {
path: '/addProject', path: '/addProject',
name: '新增项目', name: 'addProject',
title: 'addProject', title: '新增项目',
component: () => import('@/views/managePage/addProject.vue'), component: () => import('@/views/managePage/addProject.vue'),
meta: { meta: {
menuName: '新增项目', menuName: '新增项目',
......
import { defineStore } from "pinia";
export const useProjectStore = defineStore('project', {
state: () => ({
params: {}
}),
actions: {
setParams(data) {
this.params = { ...this.params, ...data }
}
}
})
\ No newline at end of file
.tab-content{
th{
text-align: center;
}
}
\ No newline at end of file
...@@ -5,13 +5,14 @@ ...@@ -5,13 +5,14 @@
<div class="header-right"> <div class="header-right">
<el-button type="default" @click="backClick">返回</el-button> <el-button type="default" @click="backClick">返回</el-button>
<el-button type="primary" @click="saveClick">保存</el-button> <el-button type="primary" @click="saveClick">保存</el-button>
<el-button type="primary" @click="commitClick">提交</el-button>
</div> </div>
</div> </div>
<div class="add-project-content"> <div class="add-project-content">
<el-tabs v-model="tabActiveName"> <el-tabs v-model="tabActiveName">
<el-tab-pane label="项目基本信息" name="项目基本信息"> <el-tab-pane label="项目基本信息" name="项目基本信息">
<div class="tab-content"> <div class="tab-content">
<el-form :model="formData" :label-width="190"> <el-form :model="formData" :label-width="200" :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">
...@@ -53,10 +54,11 @@ ...@@ -53,10 +54,11 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="主业/非主业"> <el-form-item label="主业/非主业">
<el-radio-group v-model="formData.zyfzy"> <el-select v-model="formData.financialStatementType" placeholder="请选择">
<el-radio value="1"></el-radio> <el-option v-for="item in zyList" :key="item.value"
<el-radio value="2"></el-radio> :label="item.value" :value="item.key"
</el-radio-group> ></el-option>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
...@@ -83,14 +85,18 @@ ...@@ -83,14 +85,18 @@
<el-col :span="6"> <el-col :span="6">
<el-form-item label="财务报表类型"> <el-form-item label="财务报表类型">
<el-select v-model="formData.financialStatementType" placeholder="请选择"> <el-select v-model="formData.financialStatementType" placeholder="请选择">
<el-option label="1" value="1"></el-option> <el-option v-for="item in cwbblxList" :key="item.value"
:label="item.value" :value="item.key"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="政府审批(核准、备案)级别"> <el-form-item label="政府审批(核准、备案)级别">
<el-select v-model="formData.zfsphzbajb" placeholder="请选择"> <el-select v-model="formData.zfsphzbajb" placeholder="请选择">
<el-option label="1" value="1"></el-option> <el-option v-for="item in zfspjbList" :key="item.value"
:label="item.value" :value="item.key"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -109,7 +115,9 @@ ...@@ -109,7 +115,9 @@
<el-col :span="6"> <el-col :span="6">
<el-form-item label="境内/外"> <el-form-item label="境内/外">
<el-select v-model="formData.domesticOrOverseas" placeholder="请选择"> <el-select v-model="formData.domesticOrOverseas" placeholder="请选择">
<el-option label="1" value="1" /> <el-option v-for="item in jnwList" :key="item.value"
:label="item.value" :value="item.key"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -130,14 +138,18 @@ ...@@ -130,14 +138,18 @@
<el-col :span="6"> <el-col :span="6">
<el-form-item label="区县(境内)/国家(境外)"> <el-form-item label="区县(境内)/国家(境外)">
<el-select v-model="formData.qxjngjjw" placeholder="请选择"> <el-select v-model="formData.qxjngjjw" placeholder="请选择">
<el-option label="1" value="1" /> <el-option v-for="item in qxgjList" :key="item.value"
:label="item.value" :value="item.key"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="项目区域"> <el-form-item label="项目区域">
<el-select v-model="formData.xmqy" placeholder="请选择"> <el-select v-model="formData.xmqy" placeholder="请选择">
<el-option label="1" value="1" /> <el-option v-for="item in xmqyList" :key="item.value"
:label="item.value" :value="item.key"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -155,13 +167,15 @@ ...@@ -155,13 +167,15 @@
<el-col :span="6"> <el-col :span="6">
<el-form-item label="币种"> <el-form-item label="币种">
<el-select v-model="formData.bizhong" placeholder="请选择"> <el-select v-model="formData.bizhong" placeholder="请选择">
<el-option label="1" value="1" /> <el-option v-for="item in bzList" :key="item.value"
:label="item.value" :value="item.key"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="汇率"> <el-form-item label="汇率">
<el-input v-model="formData.huilv" /> <el-input v-model="formData.huilv" type="number" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -228,7 +242,7 @@ ...@@ -228,7 +242,7 @@
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="决策及批复信息" name="决策及批复信息"> <el-tab-pane label="决策及批复信息" name="决策及批复信息">
<div class="tab-content"> <div class="tab-content">
<el-form :model="formData" :label-width="190"> <el-form :model="formData" :label-width="190" :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">
...@@ -236,7 +250,9 @@ ...@@ -236,7 +250,9 @@
<div class="col-title">投资属性分类</div> <div class="col-title">投资属性分类</div>
<el-form-item label="一级分类"> <el-form-item label="一级分类">
<el-select v-model="formData.tzsxyjfl" placeholder="请选择"> <el-select v-model="formData.tzsxyjfl" placeholder="请选择">
<el-option label="1" value="1" /> <el-option v-for="item in tzsxyjflList" :key="item.value"
:label="item.value" :value="item.key"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="二级分类"> <el-form-item label="二级分类">
...@@ -425,7 +441,7 @@ ...@@ -425,7 +441,7 @@
</el-table> </el-table>
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="项目必要性及可行性" name="项目必要性及可行性"> <el-collapse-item title="项目必要性及可行性" name="项目必要性及可行性">
<el-form :model="formData" :label-width="150"> <el-form :model="formData" :label-width="150" :disabled="isPreview">
<el-form-item label="建设内容及规模"> <el-form-item label="建设内容及规模">
<el-input v-model="formData.jsnrjgm" type="textarea" /> <el-input v-model="formData.jsnrjgm" type="textarea" />
</el-form-item> </el-form-item>
...@@ -447,7 +463,7 @@ ...@@ -447,7 +463,7 @@
<div class="tab-content"> <div class="tab-content">
<el-collapse v-model="activeCollapse"> <el-collapse v-model="activeCollapse">
<el-collapse-item title="立项资料" name="立项资料"> <el-collapse-item title="立项资料" name="立项资料">
<el-form :model="formData" :label-width="150"> <el-form :model="formData" :label-width="150" :disabled="isPreview">
<el-form-item label="相关支撑材料"> <el-form-item label="相关支撑材料">
<el-upload <el-upload
v-model:file-list="zcclFileList" v-model:file-list="zcclFileList"
...@@ -614,7 +630,7 @@ ...@@ -614,7 +630,7 @@
</el-table> </el-table>
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="项目立项信息" name="项目立项信息"> <el-collapse-item title="项目立项信息" name="项目立项信息">
<el-form :model="formData" :label-width="190"> <el-form :model="formData" :label-width="190" :disabled="isPreview">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="24"> <el-col :span="24">
<el-form-item label="其他会议审议情况"> <el-form-item label="其他会议审议情况">
...@@ -624,7 +640,9 @@ ...@@ -624,7 +640,9 @@
<el-col :span="7"> <el-col :span="7">
<el-form-item label="立项最终审批意见"> <el-form-item label="立项最终审批意见">
<el-select v-model="formData.lxzzpfyj" placeholder="请选择"> <el-select v-model="formData.lxzzpfyj" placeholder="请选择">
<el-option label="1" value="1"></el-option> <el-option v-for="item in lxzzspyjList" :key="item.value"
:label="item.value" :value="item.key"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -707,7 +725,7 @@ ...@@ -707,7 +725,7 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-form :model="formData" :label-width="190"> <el-form :model="formData" :label-width="190" :disabled="isPreview">
<el-form-item label="相关上会材料"> <el-form-item label="相关上会材料">
<el-upload <el-upload
v-model:file-list="spyjFileList" v-model:file-list="spyjFileList"
...@@ -751,10 +769,13 @@ ...@@ -751,10 +769,13 @@
</template> </template>
<script setup> <script setup>
import { reactive, ref, onMounted, getCurrentInstance, h } from "vue"; import { reactive, ref, onMounted, getCurrentInstance, computed } from "vue";
import { useRouter } from "vue-router"; import { useRouter, useRoute } from "vue-router";
const router = useRouter(); const router = useRouter();
const route = useRoute();
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
import { useProjectStore } from "@/stores/project.js";
const projectStore = useProjectStore();
// tab相关 // tab相关
const tabActiveName = ref("项目基本信息"); const tabActiveName = ref("项目基本信息");
...@@ -763,23 +784,9 @@ ...@@ -763,23 +784,9 @@
"建设规模(实物量指标)", "股东信息", "项目必要性及可行性", "立项资料", "项目投资总额(全口径)", "建设规模(实物量指标)", "股东信息", "项目必要性及可行性", "立项资料", "项目投资总额(全口径)",
"财务评价指标", "核心边界条件", "项目立项信息", "审批意见" "财务评价指标", "核心边界条件", "项目立项信息", "审批意见"
]); ]);
// 获取资源库数据 let formData = reactive({});
const getResourceData = () => {
proxy.$post({
url: "/api/resource/listResourceAll",
data: {
page: 1,
pagesize: 1000
},
callback: (data) => {}
});
};
onMounted(() => {
getResourceData();
})
const formData = reactive({});
// 建设规模(实物量指标) // 建设规模(实物量指标)
const swlzbData = reactive([]); let swlzbData = reactive([]);
const addSwlzb = () => { const addSwlzb = () => {
swlzbData.push({}); swlzbData.push({});
}; };
...@@ -787,7 +794,7 @@ ...@@ -787,7 +794,7 @@
swlzbData.splice(index, 1); swlzbData.splice(index, 1);
}; };
// 股东信息 // 股东信息
const gdxxData = reactive([]); let gdxxData = reactive([]);
const addGdxx = () => { const addGdxx = () => {
gdxxData.push({}); gdxxData.push({});
}; };
...@@ -796,11 +803,11 @@ ...@@ -796,11 +803,11 @@
}; };
// 支撑材料 // 支撑材料
const zcclFileList = reactive([]); let zcclFileList = reactive([]);
const zcclData = reactive([]); let zcclData = reactive([]);
// 项目投资总额全口径 // 项目投资总额全口径
const tzzeqkjData = reactive([ let tzzeqkjData = reactive([
{ {
no: "1", no: "1",
name: "项目资本金", name: "项目资本金",
...@@ -844,7 +851,7 @@ ...@@ -844,7 +851,7 @@
]); ]);
// 财务评价指标 // 财务评价指标
const cwpjzbData = reactive([ let cwpjzbData = reactive([
{ {
name: "项目投资内部收益率", name: "项目投资内部收益率",
unit: "%" unit: "%"
...@@ -860,7 +867,7 @@ ...@@ -860,7 +867,7 @@
]); ]);
// 核心边界条件 // 核心边界条件
const hxbjtjData = reactive([]); let hxbjtjData = reactive([]);
const addHxbjtj = () => { const addHxbjtj = () => {
hxbjtjData.push({}); hxbjtjData.push({});
} }
...@@ -869,13 +876,13 @@ ...@@ -869,13 +876,13 @@
} }
// 项目立项信息--立项批复文件 // 项目立项信息--立项批复文件
const lxpfwjFileList = reactive([]); let lxpfwjFileList = reactive([]);
const lxpfwjData = reactive([]); let lxpfwjData = reactive([]);
// 审批意见 // 审批意见
const spyjTableData = reactive([]); let spyjTableData = reactive([]);
const spyjFileList = reactive([]); let spyjFileList = reactive([]);
const spyjData = reactive([]); let spyjData = reactive([]);
const addSpyj = () => { const addSpyj = () => {
spyjTableData.push({}); spyjTableData.push({});
} }
...@@ -883,6 +890,49 @@ ...@@ -883,6 +890,49 @@
spyjTableData.splice(index, 1); spyjTableData.splice(index, 1);
} }
// 获取资源库数据
let zyList = reactive([]); // 主页/非主业
let cwbblxList = reactive([]); // 财务报表类型
let zfspjbList = reactive([]); // 政府审批(核准、备案)级别
let jnwList = reactive([]); // 境内/外
let qxgjList = reactive([]); // 区县(境内)/国家(境外)
let xmqyList = reactive([]); // 项目区域
let bzList = reactive([]); // 币种
let tzsxyjflList = reactive([]); // 投资属性一级分类
let lxzzspyjList = reactive([]); // 立项最终审批意见
const getResourceData = () => {
proxy.$post({
url: "/api/resource/listResourceAll",
data: {
page: 1,
pagesize: 1000
},
callback: (data) => {
// 项目基本信息
zyList = data.zyfzy || [];
cwbblxList = data.cwbblx || [];
zfspjbList = data.zfsphzbajb || [];
// 项目所在地
qxgjList = data.qxjngjjw || [];
xmqyList = data.xmqy || [];
// 计量币种
bzList = data.bizhong || [];
// 投资分类
tzsxyjflList = data.tzsxyjfl || [];
// 项目立项信息
lxzzspyjList = data.lxzzspyj || [];
}
});
};
let isPreview = !!route.query.isPreview;
onMounted(() => {
getResourceData();
let projectInfo = projectStore.params.projectInfo;
if (projectInfo) {
formData = { ...projectInfo };
}
})
// 返回列表页 // 返回列表页
const backClick = () => { const backClick = () => {
router.push("/projectManage"); router.push("/projectManage");
...@@ -897,6 +947,8 @@ ...@@ -897,6 +947,8 @@
} }
}) })
}; };
// 提交数据
const commitClick = () => {};
</script> </script>
<style lang="less"> <style lang="less">
......
...@@ -16,8 +16,9 @@ ...@@ -16,8 +16,9 @@
<el-table-column prop="projectCode" label="项目编号" /> <el-table-column prop="projectCode" label="项目编号" />
<el-table-column fixed="right" label="操作" min-width="120"> <el-table-column fixed="right" label="操作" min-width="120">
<template #default="scope"> <template #default="scope">
<el-button link type="primary" size="small">查看</el-button> <el-button link type="primary" size="small" @click="previewProject(scope.row)">查看</el-button>
<el-button link type="primary" size="small">编辑</el-button> <el-button link type="primary" size="small" @click="editProject(scope.row)">编辑</el-button>
<el-button link type="danger" size="small" @click="deleteProject(scope.row)">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -32,6 +33,10 @@ ...@@ -32,6 +33,10 @@
<script setup> <script setup>
import { reactive, ref, onMounted, getCurrentInstance } from "vue"; import { reactive, ref, onMounted, getCurrentInstance } from "vue";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import { useProjectStore } from "@/stores/project.js";
import { ElMessage, ElMessageBox } from "element-plus";
const projectStore = useProjectStore();
const router = useRouter(); const router = useRouter();
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
...@@ -52,8 +57,46 @@ ...@@ -52,8 +57,46 @@
const addProject = () => { const addProject = () => {
router.push("/addProject"); router.push("/addProject");
}; };
const editProject = (item) => {
projectStore.setParams({
projectInfo: { ...item }
});
router.push("/addProject");
};
const previewProject = (item) => {
projectStore.setParams({
projectInfo: { ...item }
});
router.push({
name: "addProject",
query: {
isPreview: true
}
})
}
const deleteProject = (item) => {
ElMessageBox.confirm("确认删除该项?", "提示",{
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
proxy.$post({
url: "/api/project/deleteProject",
data: {
id: item.id
},
callback: (data) => {
ElMessage.success("删除成功");
getProjectData();
}
}).catch(() => {})
})
}
onMounted(() => { onMounted(() => {
getProjectData(); getProjectData();
projectStore.setParams({
projectInfo: undefined
});
}) })
</script> </script>
......
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