|
@@ -36,25 +36,26 @@
|
|
|
|
|
|
|
|
<el-row gutter="20">
|
|
<el-row gutter="20">
|
|
|
<el-col :span="9">
|
|
<el-col :span="9">
|
|
|
- <basic-card title="研发人员情况">
|
|
|
|
|
-
|
|
|
|
|
- <div style="position: relative;">
|
|
|
|
|
- <basic-chart
|
|
|
|
|
- style="width: 100%; height: 300px"
|
|
|
|
|
- :options="RD_personOpt"
|
|
|
|
|
- />
|
|
|
|
|
- </div>
|
|
|
|
|
- </basic-card>
|
|
|
|
|
|
|
+ <basic-card title="研发人员情况">
|
|
|
|
|
+ <avue-data-display :option="RD_person_zb_opt"></avue-data-display>
|
|
|
|
|
+ <div style="position: relative;">
|
|
|
|
|
+ <basic-chart
|
|
|
|
|
+ style="width: 100%; height: 300px"
|
|
|
|
|
+ :options="RD_personOpt"
|
|
|
|
|
+ />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </basic-card>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="9">
|
|
<el-col :span="9">
|
|
|
- <basic-card title="知识产权情况">
|
|
|
|
|
- <div style="position: relative;">
|
|
|
|
|
- <basic-chart
|
|
|
|
|
- style="width: 100%; height: 300px"
|
|
|
|
|
- :options="zscqOpt"
|
|
|
|
|
- />
|
|
|
|
|
- </div>
|
|
|
|
|
- </basic-card>
|
|
|
|
|
|
|
+ <basic-card title="知识产权情况">
|
|
|
|
|
+ <avue-data-display :option="zscqTotalOpt"></avue-data-display>
|
|
|
|
|
+ <div style="position: relative;">
|
|
|
|
|
+ <basic-chart
|
|
|
|
|
+ style="width: 100%; height: 300px"
|
|
|
|
|
+ :options="zscqOpt"
|
|
|
|
|
+ />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </basic-card>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
|
|
|
|
|
@@ -101,6 +102,7 @@ import YearMonthSelect from "@/components/year-month-select";
|
|
|
import { getProjectListByYear } from "@/api/projectManage/projectList";
|
|
import { getProjectListByYear } from "@/api/projectManage/projectList";
|
|
|
import { getList as getCostSummaryList } from "@/api/yfCostManage/yfCostStatistics/yfCostSummaryList";
|
|
import { getList as getCostSummaryList } from "@/api/yfCostManage/yfCostStatistics/yfCostSummaryList";
|
|
|
import { getList as getZlList } from "@/api/achievement/patentAchievement";
|
|
import { getList as getZlList } from "@/api/achievement/patentAchievement";
|
|
|
|
|
+import { getList as getCyPersonList } from "@/api/techPerson/cyPersonRoster";
|
|
|
import Decimal from "decimal.js";
|
|
import Decimal from "decimal.js";
|
|
|
|
|
|
|
|
export default {
|
|
export default {
|
|
@@ -120,6 +122,8 @@ export default {
|
|
|
currYear: "",
|
|
currYear: "",
|
|
|
projectTotal: 0,
|
|
projectTotal: 0,
|
|
|
costAmount: 0,
|
|
costAmount: 0,
|
|
|
|
|
+ yfPersonZb: 0, // 研发人员占比
|
|
|
|
|
+ zscqTotal: 0,
|
|
|
|
|
|
|
|
// 项目情况
|
|
// 项目情况
|
|
|
projectStatusOpt: {},
|
|
projectStatusOpt: {},
|
|
@@ -286,18 +290,47 @@ export default {
|
|
|
],
|
|
],
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
|
|
+ RD_person_zb_opt() {
|
|
|
|
|
+ return {
|
|
|
|
|
+ span: 24,
|
|
|
|
|
+ data: [
|
|
|
|
|
+ {
|
|
|
|
|
+ icon: 'el-icon-view',
|
|
|
|
|
+ color: 'rgb(56, 161, 242)',
|
|
|
|
|
+ count: this.yfPersonZb,
|
|
|
|
|
+ decimals: 2,
|
|
|
|
|
+ title: "研发人员占比(%)",
|
|
|
|
|
+ },
|
|
|
|
|
+ ],
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ zscqTotalOpt() {
|
|
|
|
|
+ return {
|
|
|
|
|
+ span: 24,
|
|
|
|
|
+ data: [
|
|
|
|
|
+ {
|
|
|
|
|
+ icon: 'el-icon-view',
|
|
|
|
|
+ color: 'rgb(56, 161, 242)',
|
|
|
|
|
+ count: this.zscqTotal,
|
|
|
|
|
+ decimals: 0,
|
|
|
|
|
+ title: "知识产权总数",
|
|
|
|
|
+ },
|
|
|
|
|
+ ],
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
},
|
|
},
|
|
|
watch: {
|
|
watch: {
|
|
|
currYear() {
|
|
currYear() {
|
|
|
this.getProjectListByYearFunc();
|
|
this.getProjectListByYearFunc();
|
|
|
this.getCostSummaryListFunc();
|
|
this.getCostSummaryListFunc();
|
|
|
this.getZlListFunc();
|
|
this.getZlListFunc();
|
|
|
|
|
+ this.getCyPersonListFunc();
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
mounted() {
|
|
mounted() {
|
|
|
// this.initProjectStatusOptions();
|
|
// this.initProjectStatusOptions();
|
|
|
- this.initRdPersonOptions();
|
|
|
|
|
- this.initZscqOptions();
|
|
|
|
|
|
|
+ // this.initRdPersonOptions();
|
|
|
|
|
+ // this.initZscqOptions();
|
|
|
// this.initYfffChartOptions();
|
|
// this.initYfffChartOptions();
|
|
|
|
|
|
|
|
},
|
|
},
|
|
@@ -361,29 +394,31 @@ export default {
|
|
|
},
|
|
},
|
|
|
// 获取专利数据
|
|
// 获取专利数据
|
|
|
getZlListFunc() {
|
|
getZlListFunc() {
|
|
|
- getZlList().then(({ data }) => {
|
|
|
|
|
- console.log(data)
|
|
|
|
|
|
|
+ getZlList(1, 99999).then(({ data }) => {
|
|
|
|
|
+ let _zscqList = data.data.records;
|
|
|
|
|
+ this.zscqTotal = _zscqList.length;
|
|
|
|
|
+
|
|
|
|
|
+ // 授权数
|
|
|
|
|
+ let sqListTotal = _zscqList.filter(item => item.flzt == '授权有效').length;
|
|
|
|
|
+
|
|
|
|
|
+ this.zscqOpt = this.getPieOptions("", [
|
|
|
|
|
+ { value: _zscqList.length - sqListTotal, name: "申请数" },
|
|
|
|
|
+ { value: sqListTotal, name: "授权数" },
|
|
|
|
|
+ ]);
|
|
|
});
|
|
});
|
|
|
},
|
|
},
|
|
|
- // 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: "全职" },
|
|
|
|
|
- { value: 3, name: "非全职" },
|
|
|
|
|
- ]);
|
|
|
|
|
- },
|
|
|
|
|
- initZscqOptions() {
|
|
|
|
|
- this.zscqOpt = this.getPieOptions("", [
|
|
|
|
|
- { value: 30, name: "申请数" },
|
|
|
|
|
- { value: 29, name: "授权数" },
|
|
|
|
|
- ]);
|
|
|
|
|
|
|
+ // 获取年度参研人员
|
|
|
|
|
+ getCyPersonListFunc() {
|
|
|
|
|
+ getCyPersonList(1, 99999, { yearAndMonth: this.currYear }).then(({ data }) => {
|
|
|
|
|
+ let _personList = data.data.records;
|
|
|
|
|
+ let yfPersonList = _personList.filter(item => item.personnelType == '研发人员');
|
|
|
|
|
+ this.yfPersonZb = ((yfPersonList.length / _personList.length) * 100).toFixed(2);
|
|
|
|
|
+ console.log(yfPersonList.length, _personList.length, yfPersonList.length / _personList.length)
|
|
|
|
|
+ this.RD_personOpt = this.getPieOptions("", [
|
|
|
|
|
+ { value: _personList.filter(item => item.situation == '全职').length, name: "全职" },
|
|
|
|
|
+ { value: _personList.filter(item => item.situation == '非全职').length, name: "非全职" },
|
|
|
|
|
+ ]);
|
|
|
|
|
+ });
|
|
|
},
|
|
},
|
|
|
getPieOptions(title, seriesData) {
|
|
getPieOptions(title, seriesData) {
|
|
|
let options = {
|
|
let options = {
|