明树Git Lab

Commit 502ba659 authored by chenron's avatar chenron
parents f81a5cf9 d259c095
Pipeline #103975 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'
import 'element-plus/dist/index.css'
import * as ElIcons from '@element-plus/icons'
import router from './router'
import { createPinia } from 'pinia';
import "./assets/fonts/font.less"; // 字体样式
import "../public/iconFont/iconfont.css"; // 图标字体样式
import { $get, $post } from "@/data/https.js";
const pinia = createPinia()
const app = createApp(App)
app.config.globalProperties.$get = $get;
app.config.globalProperties.$post = $post;
for (const [key, component] of Object.entries(ElIcons)) {
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 = [
},
{
path: '/projectManage',
name: '项目管理',
title: 'projectManage',
name: 'projectManage',
title: '项目管理',
component: () => import('@/views/managePage/projectManage.vue'),
meta: { menuName: '项目管理', icon: 'Management' }
},
{
path: '/addProject',
name: '新增项目',
title: 'addProject',
name: 'addProject',
title: '新增项目',
component: () => import('@/views/managePage/addProject.vue'),
meta: {
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 @@
<div class="header-right">
<el-button type="default" @click="backClick">返回</el-button>
<el-button type="primary" @click="saveClick">保存</el-button>
<el-button type="primary" @click="commitClick">提交</el-button>
</div>
</div>
<div class="add-project-content">
<el-tabs v-model="tabActiveName">
<el-tab-pane label="项目基本信息" name="项目基本信息">
<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-item title="项目基本信息" name="项目基本信息">
<el-row :gutter="20">
......@@ -53,10 +54,11 @@
</el-col>
<el-col :span="12">
<el-form-item label="主业/非主业">
<el-radio-group v-model="formData.zyfzy">
<el-radio value="1"></el-radio>
<el-radio value="2"></el-radio>
</el-radio-group>
<el-select v-model="formData.financialStatementType" placeholder="请选择">
<el-option v-for="item in zyList" :key="item.value"
:label="item.value" :value="item.key"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
......@@ -83,14 +85,18 @@
<el-col :span="6">
<el-form-item label="财务报表类型">
<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-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="政府审批(核准、备案)级别">
<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-form-item>
</el-col>
......@@ -109,7 +115,9 @@
<el-col :span="6">
<el-form-item label="境内/外">
<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-form-item>
</el-col>
......@@ -130,14 +138,18 @@
<el-col :span="6">
<el-form-item label="区县(境内)/国家(境外)">
<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-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="项目区域">
<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-form-item>
</el-col>
......@@ -155,13 +167,15 @@
<el-col :span="6">
<el-form-item label="币种">
<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-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="汇率">
<el-input v-model="formData.huilv" />
<el-input v-model="formData.huilv" type="number" />
</el-form-item>
</el-col>
</el-row>
......@@ -228,7 +242,7 @@
</el-tab-pane>
<el-tab-pane label="决策及批复信息" name="决策及批复信息">
<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-item title="投资分类" name="投资分类">
<el-row :gutter="20">
......@@ -236,7 +250,9 @@
<div class="col-title">投资属性分类</div>
<el-form-item label="一级分类">
<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-form-item>
<el-form-item label="二级分类">
......@@ -425,7 +441,7 @@
</el-table>
</el-collapse-item>
<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-input v-model="formData.jsnrjgm" type="textarea" />
</el-form-item>
......@@ -447,7 +463,7 @@
<div class="tab-content">
<el-collapse v-model="activeCollapse">
<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-upload
v-model:file-list="zcclFileList"
......@@ -614,7 +630,7 @@
</el-table>
</el-collapse-item>
<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-col :span="24">
<el-form-item label="其他会议审议情况">
......@@ -624,7 +640,9 @@
<el-col :span="7">
<el-form-item label="立项最终审批意见">
<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-form-item>
</el-col>
......@@ -707,7 +725,7 @@
</template>
</el-table-column>
</el-table>
<el-form :model="formData" :label-width="190">
<el-form :model="formData" :label-width="190" :disabled="isPreview">
<el-form-item label="相关上会材料">
<el-upload
v-model:file-list="spyjFileList"
......@@ -751,10 +769,13 @@
</template>
<script setup>
import { reactive, ref, onMounted, getCurrentInstance, h } from "vue";
import { useRouter } from "vue-router";
import { reactive, ref, onMounted, getCurrentInstance, computed } from "vue";
import { useRouter, useRoute } from "vue-router";
const router = useRouter();
const route = useRoute();
const { proxy } = getCurrentInstance();
import { useProjectStore } from "@/stores/project.js";
const projectStore = useProjectStore();
// tab相关
const tabActiveName = ref("项目基本信息");
......@@ -763,23 +784,9 @@
"建设规模(实物量指标)", "股东信息", "项目必要性及可行性", "立项资料", "项目投资总额(全口径)",
"财务评价指标", "核心边界条件", "项目立项信息", "审批意见"
]);
// 获取资源库数据
const getResourceData = () => {
proxy.$post({
url: "/api/resource/listResourceAll",
data: {
page: 1,
pagesize: 1000
},
callback: (data) => {}
});
};
onMounted(() => {
getResourceData();
})
const formData = reactive({});
let formData = reactive({});
// 建设规模(实物量指标)
const swlzbData = reactive([]);
let swlzbData = reactive([]);
const addSwlzb = () => {
swlzbData.push({});
};
......@@ -787,7 +794,7 @@
swlzbData.splice(index, 1);
};
// 股东信息
const gdxxData = reactive([]);
let gdxxData = reactive([]);
const addGdxx = () => {
gdxxData.push({});
};
......@@ -796,11 +803,11 @@
};
// 支撑材料
const zcclFileList = reactive([]);
const zcclData = reactive([]);
let zcclFileList = reactive([]);
let zcclData = reactive([]);
// 项目投资总额全口径
const tzzeqkjData = reactive([
let tzzeqkjData = reactive([
{
no: "1",
name: "项目资本金",
......@@ -844,7 +851,7 @@
]);
// 财务评价指标
const cwpjzbData = reactive([
let cwpjzbData = reactive([
{
name: "项目投资内部收益率",
unit: "%"
......@@ -860,7 +867,7 @@
]);
// 核心边界条件
const hxbjtjData = reactive([]);
let hxbjtjData = reactive([]);
const addHxbjtj = () => {
hxbjtjData.push({});
}
......@@ -869,13 +876,13 @@
}
// 项目立项信息--立项批复文件
const lxpfwjFileList = reactive([]);
const lxpfwjData = reactive([]);
let lxpfwjFileList = reactive([]);
let lxpfwjData = reactive([]);
// 审批意见
const spyjTableData = reactive([]);
const spyjFileList = reactive([]);
const spyjData = reactive([]);
let spyjTableData = reactive([]);
let spyjFileList = reactive([]);
let spyjData = reactive([]);
const addSpyj = () => {
spyjTableData.push({});
}
......@@ -883,6 +890,49 @@
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 = () => {
router.push("/projectManage");
......@@ -897,6 +947,8 @@
}
})
};
// 提交数据
const commitClick = () => {};
</script>
<style lang="less">
......
......@@ -16,8 +16,9 @@
<el-table-column prop="projectCode" label="项目编号" />
<el-table-column fixed="right" label="操作" min-width="120">
<template #default="scope">
<el-button link type="primary" size="small">查看</el-button>
<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" @click="editProject(scope.row)">编辑</el-button>
<el-button link type="danger" size="small" @click="deleteProject(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
......@@ -32,6 +33,10 @@
<script setup>
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
import { useRouter } from "vue-router";
import { useProjectStore } from "@/stores/project.js";
import { ElMessage, ElMessageBox } from "element-plus";
const projectStore = useProjectStore();
const router = useRouter();
const { proxy } = getCurrentInstance();
......@@ -52,8 +57,46 @@
const 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(() => {
getProjectData();
projectStore.setParams({
projectInfo: undefined
});
})
</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