Files
jiace-web/src/views/startEvaluation.vue
2021-11-03 15:55:25 +08:00

938 lines
28 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="start_page">
<div class="header">
<img src="@/assets/image/banner-2.png" alt="" />
</div>
<div class="content start_box">
<!-- 基本信息 -->
<el-form
ref="formA"
:model="formA"
:rules="rulesA"
:show-message="false"
label-width="100px"
>
<section class="padding-left">
<p>企业基本情况</p>
<el-form-item label="企业全称" prop="companyName" class="mb10">
<el-input
v-model.trim="formA.companyName"
size="mini"
style="width:50%"
></el-input>
</el-form-item>
<el-row :gutter="20">
<el-col :span="7">
<el-form-item label="成立时间" prop="regTime" class="mb10">
<el-date-picker
size="mini"
v-model="formA.regTime"
value-format="yyyy-MM-dd HH:mm:ss"
type="date"
placeholder="选择日期时间"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="13">
<el-form-item
label="计划申报时间"
label-width="110px"
class="mb10"
prop="plan"
>
<el-select
size="mini"
v-model="formA.plan"
placeholder="请选择"
@change="handlePlan"
>
<el-option
v-if="i.isShow"
v-for="i in planOption"
:key="i.value"
:label="i.label"
:value="i.value"
></el-option>
</el-select>
<span style="margin-left:20px;color:red" v-if="strShow == 1">
<i class="el-icon-warning"></i>
<span style="margin-left:5px">{{ str }}</span>
</span>
<span
style="margin-left:20px;color:#008000"
v-else-if="strShow == 2"
>
<i class="el-icon-success"></i>
<span style="margin-left:5px">{{ str }}</span>
</span>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="所属领域">
<el-row :gutter="10">
<el-col :span="4">
<el-form-item class="mb10">
<el-select
size="mini"
v-model="formA.one"
placeholder="请选择"
@change="handleOne"
>
<el-option
v-for="i in oneMenuList"
:key="i.id"
:label="i.name"
:value="i.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item prop="territoryId" class="mb10">
<el-select
size="mini"
v-model="formA.territoryId"
placeholder="请选择"
>
<el-option
v-for="i in twoMenuList"
:key="i.id"
:label="i.name"
:value="i.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item
class="mb10"
label="拥有所属领域发挥核心作用的知识产权?"
label-width="300px"
>
<el-select
size="mini"
v-model="formA.hasIntellectualProperty"
placeholder="请选择"
>
<el-option
v-for="item in propertyOption"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form-item>
</section>
</el-form>
<!-- 财务数据 -->
<p>二、企业基本数据</p>
<el-table :data="tableData" size="small" border>
<el-table-column
type="index"
align="center"
label="序号"
width="60"
></el-table-column>
<el-table-column prop="years" align="center" label="年限" width="100">
<template slot="header" slot-scope="scope">
<div>年限</div>
<div>(从远到近)</div>
</template>
</el-table-column>
<el-table-column
align="center"
header-align="center"
label="总收入(万元)"
>
<template slot-scope="{ row, $index }">
<span v-if="!showEdit[$index]">{{ row.total_income }}</span>
<el-input
type="text"
v-model="row.total_income"
v-else
placeholder="请输入"
></el-input>
</template>
</el-table-column>
<el-table-column
align="center"
header-align="center"
label="高新技术产品收入(万元)"
>
<template slot-scope="{ row, $index }">
<span v-if="!showEdit[$index]">{{ row.skill_income }}</span>
<el-input
type="text"
v-model="row.skill_income"
v-else
placeholder="请输入"
></el-input>
</template>
</el-table-column>
<el-table-column
align="center"
header-align="center"
label="销售收入(万元)"
>
<template slot-scope="{ row, $index }">
<span v-if="!showEdit[$index]">{{ row.sale_income }}</span>
<el-input
type="text"
v-model="row.sale_income"
v-else
placeholder="请输入"
></el-input>
</template>
</el-table-column>
<el-table-column
align="center"
header-align="center"
label="研发费用(万元)"
>
<template slot-scope="{ row, $index }">
<span v-if="!showEdit[$index]">{{ row.r_d_expenses }}</span>
<el-input
type="text"
v-model="row.r_d_expenses"
v-else
placeholder="请输入"
></el-input>
</template>
</el-table-column>
<el-table-column
align="center"
header-align="center"
label="净资产(万元)"
>
<template slot-scope="{ row, $index }">
<span v-if="!showEdit[$index]">{{ row.net_assets }}</span>
<el-input
type="text"
v-model="row.net_assets"
v-else
placeholder="请输入"
></el-input>
</template>
</el-table-column>
<el-table-column
align="center"
header-align="center"
label="成果(个)"
>
<template slot-scope="{ row, $index }">
<span v-if="!showEdit[$index]">{{ row.achievements }}</span>
<el-input
type="text"
v-model="row.achievements"
v-else
placeholder="请输入"
></el-input>
</template>
</el-table-column>
</el-table>
<!-- 人力资源 -->
<p v-if="tableData.length">三、人力资源</p>
<el-form
:model="formA"
:rules="rulesB"
ref="formB"
v-if="tableData.length"
>
<el-row :gutter="20">
<el-col :span="5">
<el-form-item
label="当年年均员工数"
label-width="120px"
class="mb0"
>
<el-input-number
v-model="formA.totalEmployee"
size="small"
></el-input-number>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item
label="技术创新科技人员入职满183天"
label-width="280px"
class="mb0"
>
<el-input-number
v-model="formA.scienceEmployee"
size="small"
></el-input-number>
</el-form-item>
</el-col>
</el-row>
<p>四、其他</p>
<el-form-item
class="mb0"
label="企业近一年内未发生重大安全、重大质量事故或严重环境违法行为。 "
>
<el-select size="mini" v-model="formA.hasBad" placeholder="请选择">
<el-option
v-for="item in propertyOption"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<p>五、知识产权</p>
<el-form-item class="mb0" label="知识产权获得方式:">
<el-radio-group v-model="formA.propertyMode">
<el-radio :label="3">受让、受赠和并购</el-radio>
<el-radio :label="6">自主研发</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
class="mb0"
label="对主要产品(服务)在技术上发挥核心支持作用:"
>
<el-radio-group v-model="formA.supportLevel">
<el-radio :label="8">强</el-radio>
<el-radio :label="6">较强</el-radio>
<el-radio :label="4">一般</el-radio>
<el-radio :label="2">较弱</el-radio>
<el-radio :label="0"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
class="mb0"
label="自主研发的Ⅰ类(发明专利、植物新品种、国家新药、集成电路布图等)数量:"
>
<el-input-number
v-model="formA.propertyNumI"
size="small"
></el-input-number>
</el-form-item>
<el-form-item
class="mb0"
label="自主研发的Ⅱ类(实用新型专利、外观设计专利、软件著作权等(不含商标))数量:"
>
<el-input-number
v-model="formA.propertyNumII"
size="small"
></el-input-number>
</el-form-item>
<el-form-item
class="mb0"
label="企业参与过编制国家标准、行业标准、检测方法、技术规范?"
>
<el-select
v-model="formA.hasStandard"
placeholder="请选择"
size="mini"
>
<el-option
v-for="item in propertyOption"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<p>组织管理水平多选</p>
<el-form-item prop="management">
<el-checkbox-group v-model="formA.management" @change="changeBox">
<el-checkbox label="1">
制定了企业研究开发的组织管理制度建立了研发投入核算体系编制了研发费用辅助账
</el-checkbox>
<el-checkbox label="2">
设立了内部科学技术研究开发机构并具备相应的科研条件与国内外研究开发机构开展多种形式产学研合作
</el-checkbox>
<el-checkbox label="3">
建立了科技成果转化的组织实施与激励奖励制度建立开放式的创新创业平台
</el-checkbox>
<br />
<el-checkbox label="4">
建立了科技人员的培养进修职工技能培训优秀人才引进以及人才绩效评价奖励制度
</el-checkbox>
<br />
<el-checkbox label="5">
以上选项都不匹配
</el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-form>
<!-- 提交 -->
<el-button
type="warning"
@click="submitFormA('formA')"
v-if="tableData.length"
> </el-button
>
</div>
<el-dialog
title="提示"
:visible.sync="dialogVisible"
:show-close="false"
:close-on-click-modal="false"
width="30%"
>
<p style="font-size:16px">
您的创新指标得分
<span
:style="{
'font-size': '27px',
'font-weight': 700,
color: formA.score >= 71 ? 'green' : 'red'
}"
>{{ formA.score }}</span
>{{
formA.score >= 71 ? '' : '不'
}}符合高企认定条件此评分为平台智能估算分仅供参考实际评分以政府实际打分为准
</p>
<section v-if="formA.badSeason.length">
<p style="font-size:16px;font-weight: bold">
平台建议
</p>
<p
style="font-size:16px"
v-for="(item, index) in formA.badSeason"
:key="index"
>
{{ index + 1 }}{{ item }}
</p>
</section>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="hidenDialog">重新评估</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import {
getTerritoryOneMenu,
getTerritoryTwoMenu,
firstAssess,
secondAssess
} from '@/api/startEvaluation';
const dataList = [
{
id: 1,
years: '第一年',
total_income: '100',
skill_income: '70',
sale_income: '1000',
r_d_expenses: '200',
net_assets: '100',
achievements: '10'
},
{
id: 2,
years: '第二年',
total_income: '100',
skill_income: '70',
sale_income: '1500',
r_d_expenses: '200',
net_assets: '1200',
achievements: '10'
},
{
id: 3,
years: '第三年',
total_income: '100',
skill_income: '70',
sale_income: '2000',
r_d_expenses: '200',
net_assets: '150',
achievements: '10'
}
];
export default {
data() {
return {
dialogVisible: false,
myYear: new Date().getFullYear(), // 当前年份
strShow: 0,
str: '',
propertyOption: [
{
value: 0,
label: '否'
},
{
value: 1,
label: '是'
}
], // 核心领域发挥作用知识产权 0->否 1->是 和 四、其他
planOption: [
{
value: 0,
label: '4月',
labelCopy: '4月',
time: '-04-01 00:00:00',
isShow: true
},
{
value: 1,
label: '7月',
labelCopy: '7月',
time: '-07-01 00:00:00',
isShow: true
}
],
propertyModeOption: [
{
value: 1,
label: '受让、受赠和并购'
},
{
value: 2,
label: '自主研发'
}
],
oneMenuList: [], // 所属领域一级菜单
twoMenuList: [], // 所属领域二级菜单
formA: {
companyName: '',
regTime: '',
territoryId: '',
hasIntellectualProperty: 0,
totalEmployee: 100,
scienceEmployee: 20,
hasBad: 0,
propertyMode: 6,
supportLevel: 0,
propertyNumI: 0,
propertyNumII: 0,
hasStandard: 0,
management: [],
score: 0,
badSeason: []
// assetGrowth: '',
// sellGrowth: ''
}, // 高企认定门槛
array: [],
//控制修改显示隐藏
showEdit: [true, true, true],
showName: [], //显示姓名
showAge: [], //显示年龄
// total_income: '',
// skill_income: '',
tableData: [],
isAdd: 0, // 控制是否添加附加分
rulesA: {
companyName: [
{ required: true, message: '请输入企业全称', trigger: 'blur' }
],
territoryId: [
{ required: true, message: '请选择所属领域', trigger: 'change' }
],
regTime: [
{
required: true,
message: '请选择成立时间',
trigger: 'change'
}
],
plan: [
{
required: true,
trigger: 'change'
}
]
},
rulesB: {
supportLevel: [
{ required: true, message: '请选择', trigger: 'change' }
],
management: [
{
type: 'array',
required: true,
message: '请至少选择一项组织管理水平',
trigger: 'change'
}
]
}
};
},
watch: {
'formA.regTime'(newVal, oldVal) {
delete this.formA.plan;
this.strShow = 0;
this.tableData = [];
if (newVal) {
const myDate = new Date();
const year = myDate.getFullYear(); // 当前年份
const month = myDate.getMonth() + 1; // 当前月份
if (month >= 4 && month <= 7) {
this.planOption[0].isShow = false;
} else if (month > 7) {
if (year == this.myYear) {
this.myYear += 1;
}
}
this.planOption.forEach(item => {
item.newTime = this.myYear + item.time;
item.label = this.myYear + '年' + item.labelCopy;
});
} else {
this.planOption.forEach(item => {
item.isShow = true;
});
}
}
},
methods: {
changeBox(e) {
e.forEach(item => {
if (item == 5) {
this.formA.management = ['5'];
}
});
},
handlePlan(e) {
if (!this.formA.regTime) return;
const thu = new Date(this.planOption[e].newTime).getTime(); // 当前年份时间戳
const past = new Date(this.formA.regTime).getTime();
const difference = thu - past;
const oneYear = 1000 * 60 * 60 * 24 * 365; // 一年时间戳
const twoYear = 1000 * 60 * 60 * 24 * 365 * 2; // 两年时间戳
const threeYear = 1000 * 60 * 60 * 24 * 365 * 3; // 三年时间戳
if (difference < oneYear) {
this.str = '成立时间未满一年';
this.strShow = 1;
this.tableData = [];
} else if (difference >= oneYear && difference < twoYear) {
this.str = '成立时间已满一年';
this.strShow = 2;
this.tableData = [JSON.parse(JSON.stringify(dataList[0]))];
} else if (difference >= twoYear && difference < threeYear) {
this.str = '成立时间已满二年';
this.strShow = 2;
this.tableData = JSON.parse(JSON.stringify(dataList));
this.tableData.pop();
} else {
this.str = '成立时间已满三年及以上';
this.strShow = 2;
this.tableData = JSON.parse(JSON.stringify(dataList));
}
},
// 切换一级领域
handleOne(e) {
this.formA.territoryId = '';
getTerritoryTwoMenu({ id: e }).then(({ data }) => {
this.twoMenuList = data;
});
},
// 提交
submitFormA(formName) {
if (!this.formA.hasIntellectualProperty) {
this.formA.badSeason.push('没有知识产权;');
}
let yearAch = 0;
let saleTotal = 0;
let rdTotal = 0;
this.tableData.map((item, index) => {
yearAch += parseInt(item.achievements);
saleTotal += parseInt(item.sale_income || 0);
rdTotal += parseInt(item.r_d_expenses || 0);
if ((item.skill_income / item.total_income) * 100 > 60) {
item.isA = true;
} else {
item.isA = false;
}
});
if (!this.tableData[this.tableData.length - 1].isA) {
this.formA.badSeason.push(
'近一年收入占企业同期总收入的比例不得低于 60%;'
);
}
const merchant = rdTotal / saleTotal || 0;
if (saleTotal <= 5000) {
if (merchant * 100 < 5) {
this.formA.badSeason.push(
'近一年研究开发费用总额占同期销售收入总额的比例不得低于 5%;'
);
}
} else if (saleTotal <= 20000) {
if (merchant * 100 < 4) {
this.formA.badSeason.push(
'近一年研究开发费用总额占同期销售收入总额的比例不得低于 4%;'
);
}
} else if (saleTotal > 20000) {
if (merchant * 100 < 3) {
this.formA.badSeason.push(
'近一年研究开发费用总额占同期销售收入总额的比例不得低于 3%;'
);
}
}
if (this.formA.hasBad) {
this.formA.badSeason.push('发生重大安全事故;');
}
if (this.formA.scienceEmployee || this.formA.totalEmployee) {
if (
(this.formA.scienceEmployee / this.formA.totalEmployee) * 100 <
10
) {
this.formA.badSeason.push(
'企业从事研发和相关技术创新活动的科技人员占企业当年职工总数的比例不得低于 10%;'
);
}
} else {
this.formA.badSeason.push(
'企业从事研发和相关技术创新活动的科技人员占企业当年职工总数的比例不得低于 10%;'
);
}
// 1.2 在技术上发挥核心支持作用得分
this.formA.score += this.formA.supportLevel;
this.isAdd += this.formA.supportLevel;
// 1.3 知识产权数量 && 技术的先进程度得分
if (this.formA.propertyNumI >= 1) {
this.formA.score += 16;
this.isAdd += 16;
} else {
if (this.formA.propertyNumII >= 5) {
this.formA.score += 12;
this.isAdd += 12;
} else if (this.formA.propertyNumII >= 3) {
this.formA.score += 8;
this.isAdd += 8;
} else if (this.formA.propertyNumII >= 1) {
this.formA.score += 4;
this.isAdd += 4;
}
}
// 1.4 知识产权获得方式得分
if (this.formA.propertyMode == 3) {
this.formA.score += 3;
this.isAdd += 3;
} else if (this.formA.propertyMode == 6) {
this.formA.score += 6;
this.isAdd += 6;
}
// 1.5 企业参与***的情况得分
if (this.formA.hasStandard) {
// 如果知识产权总数小于28 可以这项额外加2分
if (this.isAdd <= 28) {
this.formA.score += 2;
}
}
yearAch = (yearAch / this.tableData.length).toFixed(1) - 0;
// 2 年均成果转换得分
if (yearAch >= 5) {
this.formA.score += 30;
} else if (yearAch >= 4) {
this.formA.score += 24;
} else if (yearAch >= 3) {
this.formA.score += 18;
} else if (yearAch >= 2) {
this.formA.score += 12;
} else if (yearAch >= 1) {
this.formA.score += 6;
}
// 3 研发组织管理水平
this.formA.management.map(item => {
if (item == 1 || item == 2) {
this.formA.score += 6;
}
if (item == 3 || item == 4) {
this.formA.score += 4;
}
});
// sale_income 销售收入
// r_d_expenses 研发费用
// net_assets 净资产
// 4.1 净资产增长率
let assetsRate = 0;
// 4.2 销售收入增长率
let salesRate = 0;
if (this.tableData.length == 1) {
assetsRate = 0;
salesRate = 0;
} else if (this.tableData.length == 2) {
const status = this.tableData.map(item => {
if (item.net_assets <= 0) {
return false;
} else {
return true;
}
});
if (status.includes(false)) {
assetsRate = 0;
} else {
assetsRate =
(this.tableData[1].net_assets / this.tableData[0].net_assets - 1) *
100;
}
const status2 = this.tableData.map(item => {
if (item.sale_income <= 0 || assetsRate <= 0) {
return false;
} else {
return true;
}
});
if (status2.includes(false)) {
salesRate = 0;
} else {
salesRate =
(this.tableData[1].sale_income / this.tableData[0].sale_income -
1) *
100;
}
} else if (this.tableData.length == 3) {
const status = this.tableData.map(item => {
if (item.net_assets <= 0) {
return false;
} else {
return true;
}
});
if (status.toString() == [true, true, true].toString()) {
assetsRate =
((this.tableData[1].net_assets / this.tableData[0].net_assets +
this.tableData[2].net_assets / this.tableData[1].net_assets) /
2 -
1) *
100;
} else if (status.toString() == [false, true, true].toString()) {
assetsRate =
(this.tableData[2].net_assets / this.tableData[1].net_assets - 1) *
100;
} else {
assetsRate = 0;
}
const status2 = this.tableData.map(item => {
console.log('map', assetsRate);
if (item.sale_income <= 0 || assetsRate <= 0) {
return false;
} else {
return true;
}
});
if (status2.toString() == [true, true, true].toString()) {
salesRate =
((this.tableData[1].sale_income / this.tableData[0].sale_income +
this.tableData[2].sale_income / this.tableData[1].sale_income) /
2 -
1) *
100;
} else if (status2.toString() == [false, true, true].toString()) {
salesRate =
(this.tableData[2].sale_income / this.tableData[1].sale_income -
1) *
100;
} else {
salesRate = 0;
}
}
console.log(assetsRate);
console.log(salesRate);
if (assetsRate >= 35) {
this.formA.score += 10;
} else if (assetsRate >= 25) {
this.formA.score += 8;
} else if (assetsRate >= 15) {
this.formA.score += 6;
} else if (assetsRate >= 5) {
this.formA.score += 4;
} else if (assetsRate > 0) {
this.formA.score += 2;
}
if (salesRate >= 35) {
this.formA.score += 10;
} else if (salesRate >= 25) {
this.formA.score += 8;
} else if (salesRate >= 15) {
this.formA.score += 6;
} else if (salesRate >= 5) {
this.formA.score += 4;
} else if (salesRate > 0) {
this.formA.score += 2;
}
this.dialogVisible = true;
this.$refs[formName].validate(valid => {
if (valid) {
this.$refs['formB'].validate(flag => {
if (flag) {
console.log(this.formA);
console.log(this.tableData);
this.dialogVisible = true;
}
});
} else {
console.log('error submit!!');
return false;
}
});
},
hidenDialog() {
this.dialogVisible = false;
this.formA.score = 0;
this.isAdd = 0;
this.formA.badSeason = [];
}
},
created() {
getTerritoryOneMenu().then(({ data }) => {
this.oneMenuList = data;
});
}
};
</script>
<style lang="scss" scoped>
.start_page {
background-color: #f5f5f5;
height: 100vh;
overflow: auto;
.header {
img {
width: 100%;
}
}
.start_box {
position: relative;
padding: 30px;
margin-top: -120px;
background-color: #fff;
border-radius: 15px;
min-height: 350px;
p {
margin: 10px 0;
}
.mb0 {
margin-bottom: 0;
}
.mb10 {
margin-bottom: 10px;
}
.el-checkbox-group {
line-height: 20px;
.el-checkbox {
// margin: 5px 0;
}
}
// /deep/.el-form-item__label {
// font-size: 16px;
// color: #606266;
// font-weight: 700;
// }
/deep/.el-checkbox__label {
font-size: 14px;
color: #606266;
font-weight: 700;
}
}
}
</style>