|
|
@@ -3,39 +3,39 @@
|
|
|
|
|
|
|
|
|
<div style="position: relative; padding: 16px 0; background-color: #fff;">
|
|
|
- <div style="position: absolute; top: 20px; right: 20px;">
|
|
|
+ <div style="position: absolute; top: 20px; right: 20px; z-index: 99;">
|
|
|
<year-month-select v-model="currYear" :showMonth="false" style="margin: 0;" />
|
|
|
</div>
|
|
|
|
|
|
<el-row gutter="20">
|
|
|
- <el-col :span="8">
|
|
|
- <basic-card title="研发项目情况">
|
|
|
- <avue-data-display :option="projectTotalOpt"></avue-data-display>
|
|
|
- <div style="position: relative;">
|
|
|
- <basic-chart
|
|
|
- style="width: 100%; height: 300px"
|
|
|
- :options="projectStatusOpt"
|
|
|
- />
|
|
|
- </div>
|
|
|
- </basic-card>
|
|
|
+ <el-col :span="9">
|
|
|
+ <basic-card title="研发项目情况">
|
|
|
+ <avue-data-display :option="projectTotalOpt"></avue-data-display>
|
|
|
+ <div style="position: relative;">
|
|
|
+ <basic-chart
|
|
|
+ style="width: 100%; height: 300px"
|
|
|
+ :options="projectStatusOpt"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </basic-card>
|
|
|
</el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <basic-card title="研发费用情况">
|
|
|
- <avue-data-display :option="RD_costOpt"></avue-data-display>
|
|
|
- <div style="position: relative;">
|
|
|
- <basic-chart
|
|
|
- style="width: 100%; height: 300px"
|
|
|
- :options="yffyPieOptions"
|
|
|
- />
|
|
|
- </div>
|
|
|
- </basic-card>
|
|
|
+ <el-col :span="9">
|
|
|
+ <basic-card title="研发费用情况">
|
|
|
+ <avue-data-display :option="RD_costOpt"></avue-data-display>
|
|
|
+ <div style="position: relative;">
|
|
|
+ <basic-chart
|
|
|
+ style="width: 100%; height: 300px"
|
|
|
+ :options="yffyPieOptions"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </basic-card>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
<el-divider></el-divider>
|
|
|
|
|
|
<el-row gutter="20">
|
|
|
- <el-col :span="8">
|
|
|
+ <el-col :span="9">
|
|
|
<basic-card title="研发人员情况">
|
|
|
|
|
|
<div style="position: relative;">
|
|
|
@@ -46,7 +46,7 @@
|
|
|
</div>
|
|
|
</basic-card>
|
|
|
</el-col>
|
|
|
- <el-col :span="8">
|
|
|
+ <el-col :span="9">
|
|
|
<basic-card title="知识产权情况">
|
|
|
<div style="position: relative;">
|
|
|
<basic-chart
|
|
|
@@ -98,6 +98,10 @@ import basicCard from "@/components/basic-card";
|
|
|
import basicChart from "@/components/basic-chart";
|
|
|
import numStatistics from "./components/num-statistics.vue";
|
|
|
import YearMonthSelect from "@/components/year-month-select";
|
|
|
+import { getProjectListByYear } from "@/api/projectManage/projectList";
|
|
|
+import { getList as getCostSummaryList } from "@/api/yfCostManage/yfCostStatistics/yfCostSummaryList";
|
|
|
+import { getList as getZlList } from "@/api/achievement/patentAchievement";
|
|
|
+import Decimal from "decimal.js";
|
|
|
|
|
|
export default {
|
|
|
name: "home",
|
|
|
@@ -114,30 +118,9 @@ export default {
|
|
|
}
|
|
|
return {
|
|
|
currYear: "",
|
|
|
- projectTotalOpt: {
|
|
|
- span: 24,
|
|
|
- data: [
|
|
|
- {
|
|
|
- icon: 'el-icon-view',
|
|
|
- color: 'rgb(56, 161, 242)',
|
|
|
- count: 100,
|
|
|
- decimals: 0,
|
|
|
- title: "项目总数",
|
|
|
- },
|
|
|
- ],
|
|
|
- },
|
|
|
- RD_costOpt: {
|
|
|
- span: 24,
|
|
|
- data: [
|
|
|
- {
|
|
|
- icon: 'el-icon-view',
|
|
|
- color: 'rgb(56, 161, 242)',
|
|
|
- count: 1212121,
|
|
|
- decimals: 2,
|
|
|
- title: "研发费用(元)",
|
|
|
- },
|
|
|
- ],
|
|
|
- },
|
|
|
+ projectTotal: 0,
|
|
|
+ costAmount: 0,
|
|
|
+
|
|
|
// 项目情况
|
|
|
projectStatusOpt: {},
|
|
|
// 研发费用情况
|
|
|
@@ -274,21 +257,122 @@ export default {
|
|
|
}
|
|
|
};
|
|
|
},
|
|
|
+ computed: {
|
|
|
+ projectTotalOpt() {
|
|
|
+ return {
|
|
|
+ span: 24,
|
|
|
+ data: [
|
|
|
+ {
|
|
|
+ icon: 'el-icon-view',
|
|
|
+ color: 'rgb(56, 161, 242)',
|
|
|
+ count: this.projectTotal,
|
|
|
+ decimals: 0,
|
|
|
+ title: "项目总数",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ }
|
|
|
+ },
|
|
|
+ RD_costOpt() {
|
|
|
+ return {
|
|
|
+ span: 24,
|
|
|
+ data: [
|
|
|
+ {
|
|
|
+ icon: 'el-icon-view',
|
|
|
+ color: 'rgb(56, 161, 242)',
|
|
|
+ count: this.costAmount,
|
|
|
+ decimals: 2,
|
|
|
+ title: "研发费用(元)",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ }
|
|
|
+ },
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ currYear() {
|
|
|
+ this.getProjectListByYearFunc();
|
|
|
+ this.getCostSummaryListFunc();
|
|
|
+ this.getZlListFunc();
|
|
|
+ }
|
|
|
+ },
|
|
|
mounted() {
|
|
|
- this.initProjectStatusOptions();
|
|
|
+ // this.initProjectStatusOptions();
|
|
|
this.initRdPersonOptions();
|
|
|
this.initZscqOptions();
|
|
|
- this.initYfffChartOptions();
|
|
|
+ // this.initYfffChartOptions();
|
|
|
+
|
|
|
},
|
|
|
methods: {
|
|
|
- initProjectStatusOptions() {
|
|
|
- this.projectStatusOpt = this.getPieOptions("", [
|
|
|
- { value: 21, name: "开展中" },
|
|
|
- { value: 3, name: "已结题" },
|
|
|
- { value: 3, name: "项目暂停" },
|
|
|
- { value: 3, name: "项目终止" },
|
|
|
- ]);
|
|
|
+ getProjectListByYearFunc() {
|
|
|
+ getProjectListByYear({ year: this.currYear }).then(({ data }) => {
|
|
|
+ let _projectList = data.data;
|
|
|
+ this.projectTotal = _projectList.length;
|
|
|
+
|
|
|
+ this.projectStatusOpt = this.getPieOptions("研发项目情况", [
|
|
|
+ { value: _projectList.filter(item => item.status == 1).length, name: "开展中" },
|
|
|
+ { value: _projectList.filter(item => item.status == 2).length, name: "已结题" },
|
|
|
+ { value: _projectList.filter(item => item.status == 3).length, name: "项目暂停" },
|
|
|
+ { value: _projectList.filter(item => item.status == 4).length, name: "项目终止" },
|
|
|
+ ]);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 获取费用统计数据
|
|
|
+ getCostSummaryListFunc() {
|
|
|
+ getCostSummaryList({ yearAndMonth: `${this.currYear}12` }).then(({ data }) => {
|
|
|
+ let ryrgfyTotal = new Decimal(0); // 人员人工费用
|
|
|
+ let zjtrfyTotal = new Decimal(0); // 直接投入费用
|
|
|
+ let zjfyycqdtfyTotal = new Decimal(0); // 折旧费用和长期待摊费用
|
|
|
+ let sjfyTotal = new Decimal(0); // 设计费用
|
|
|
+ let wxzctxfyTotal = new Decimal(0); // 无形资产摊销费用
|
|
|
+ let zbtsfyysyfyTotal = new Decimal(0); // 装备调试费用与试验费用
|
|
|
+ let qtfyTotal = new Decimal(0); // 其他费用
|
|
|
+ let wwfyTotal = new Decimal(0); // 委外费用
|
|
|
+ data.data.forEach(item => {
|
|
|
+ ryrgfyTotal = ryrgfyTotal.add(new Decimal(item.ryrgfy));
|
|
|
+ zjtrfyTotal = zjtrfyTotal.add(new Decimal(item.zjtrfy));
|
|
|
+ zjfyycqdtfyTotal = zjfyycqdtfyTotal.add(new Decimal(item.zjfyycqdtfy));
|
|
|
+ sjfyTotal = sjfyTotal.add(new Decimal(item.sjfy));
|
|
|
+ wxzctxfyTotal = wxzctxfyTotal.add(new Decimal(item.wxzctxfy));
|
|
|
+ zbtsfyysyfyTotal = zbtsfyysyfyTotal.add(new Decimal(item.zbtsfyysyfy));
|
|
|
+ qtfyTotal = qtfyTotal.add(new Decimal(item.qtfy));
|
|
|
+ wwfyTotal = wwfyTotal.add(new Decimal(item.wwfy));
|
|
|
+ });
|
|
|
+ // 研发费用总额
|
|
|
+ let costAmount = ryrgfyTotal
|
|
|
+ .add(zjtrfyTotal)
|
|
|
+ .add(zjfyycqdtfyTotal)
|
|
|
+ .add(sjfyTotal)
|
|
|
+ .add(wxzctxfyTotal)
|
|
|
+ .add(zbtsfyysyfyTotal)
|
|
|
+ .add(qtfyTotal)
|
|
|
+ .add(wwfyTotal)
|
|
|
+
|
|
|
+ this.costAmount = costAmount.toFixed(2);
|
|
|
+ this.yffyPieOptions = this.getPieOptions("研发费用情况", [
|
|
|
+ { value: Number(ryrgfyTotal), name: "人员人工费用" },
|
|
|
+ { value: Number(zjtrfyTotal), name: "直接投入费用" },
|
|
|
+ { value: Number(zjfyycqdtfyTotal), name: "折旧费用与长期待摊费用" },
|
|
|
+ { value: Number(wxzctxfyTotal), name: "无形资产摊销费用" },
|
|
|
+ { value: Number(sjfyTotal), name: "设计费用" },
|
|
|
+ { value: Number(zbtsfyysyfyTotal), name: "装备调试费用与试验费用" },
|
|
|
+ { value: Number(wwfyTotal), name: "委托外部研究开发费用" },
|
|
|
+ { value: Number(qtfyTotal), name: "其他费用" },
|
|
|
+ ]);
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 获取专利数据
|
|
|
+ getZlListFunc() {
|
|
|
+ getZlList().then(({ data }) => {
|
|
|
+ console.log(data)
|
|
|
+ });
|
|
|
},
|
|
|
+ // initProjectStatusOptions() {
|
|
|
+ // this.projectStatusOpt = this.getPieOptions("", [
|
|
|
+ // { value: 21, name: "开展中" },
|
|
|
+ // { value: 3, name: "已结题" },
|
|
|
+ // { value: 3, name: "项目暂停" },
|
|
|
+ // { value: 3, name: "项目终止" },
|
|
|
+ // ]);
|
|
|
+ // },
|
|
|
initRdPersonOptions() {
|
|
|
this.RD_personOpt = this.getPieOptions("", [
|
|
|
{ value: 21, name: "全职" },
|
|
|
@@ -301,23 +385,12 @@ export default {
|
|
|
{ value: 29, name: "授权数" },
|
|
|
]);
|
|
|
},
|
|
|
- initYfffChartOptions() {
|
|
|
- this.yffyPieOptions = this.getPieOptions("", [
|
|
|
- { value: 800, name: "人员人工费用" },
|
|
|
- { value: 2400, name: "直接投入费用" },
|
|
|
- { value: 500, name: "折旧费用与长期待摊费用" },
|
|
|
- { value: 50, name: "无形资产摊销费用" },
|
|
|
- { value: 100, name: "设计费用" },
|
|
|
- { value: 100, name: "装备调试费用与试验费用" },
|
|
|
- { value: 20, name: "委托外部研究开发费用" },
|
|
|
- { value: 30, name: "其他费用" },
|
|
|
- ]);
|
|
|
- },
|
|
|
getPieOptions(title, seriesData) {
|
|
|
let options = {
|
|
|
title: {
|
|
|
text: title,
|
|
|
left: "center",
|
|
|
+ show: false
|
|
|
},
|
|
|
tooltip: {
|
|
|
trigger: "item",
|