第一版绿谷官网
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

592 lines
17 KiB

<template>
<div>
<a-button @click="showModal" type="primary">统计信息填报</a-button>
<a-modal
:confirm-loading="confirmLoading"
:ok-text="okText"
:title="title"
:visible="visible"
@cancel="handleCancel"
@ok="handleSubmit"
width="50%"
>
<!-- 公司信息 -->
<a-form :form="form" v-if="current === 0">
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="公司名称"
required
>
<a-auto-complete
@search="handleSearchTasks"
@select="onSelect"
placeholder="公司名称"
v-model="company"
>
<template slot="dataSource">
<a-select-option
:key="task.id"
:value="`${task.id}`"
v-for="task in dataSource"
>{{ task.company }}</a-select-option>
</template>
</a-auto-complete>
</a-form-item>
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="联系人"
>
<span>{{ companyInfo.name || '暂无' }}</span>
</a-form-item>
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="联系方式"
>
<span>{{ companyInfo.phone || '暂无' }}</span>
</a-form-item>
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="时间"
required
>
<a-date-picker
:open="yearShowOne"
@openChange="openChangeOne"
@panelChange="panelChangeOne"
format="YYYY"
mode="year"
placeholder="请选择年份"
v-model="platform.time"
/>
</a-form-item>
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="季度"
required
>
<a-select @select="onSelectQuarter" placeholder="请选择季度">
<a-select-option
:key="quarter.id"
:value="quarter.id"
v-for="quarter in quarters"
>{{ quarter.value }}</a-select-option>
</a-select>
</a-form-item>
</a-form>
<!-- 知识产权综合情况(项) -->
<a-form :form="form" v-if="current === 1">
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="实用本年期初数"
>
<a-input-number
placeholder="请输入实用本年期初数..."
style="width:100%"
v-model.trim="platform.practicalNumber"
/>
</a-form-item>
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="实用当年新增"
>
<a-input-number
placeholder="请输入实用当年新增..."
style="width:100%"
v-model.trim="platform.practicalIncrease"
/>
</a-form-item>
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="发明本年期初数"
>
<a-input-number
placeholder="请输入发明本年期初数..."
style="width:100%"
v-model.trim="platform.inventionNumber"
/>
</a-form-item>
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="发明当年新增"
>
<a-input-number
placeholder="请输入发明当年新增..."
style="width:100%"
v-model.trim="platform.inventionIncrease"
/>
</a-form-item>
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="软著本年期初数"
>
<a-input-number
placeholder="请输入软著本年期初数..."
style="width:100%"
v-model.trim="platform.softNumber"
/>
</a-form-item>
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="软著当年新增"
>
<a-input-number
placeholder="请输入软著当年新增..."
style="width:100%"
v-model.trim="platform.softIncrease"
/>
</a-form-item>
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="商标本年期初数"
>
<a-input-number
placeholder="请输入商标本年期初数..."
style="width:100%"
v-model.trim="platform.brandNumber"
/>
</a-form-item>
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="商标当年新增"
>
<a-input-number
placeholder="请输入商标当年新增..."
style="width:100%"
v-model.trim="platform.brandIncrease"
/>
</a-form-item>
</a-form>
<!-- 综合职工情况(个) -->
<a-form :form="form" v-if="current === 2">
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="人员总数"
>
<a-input-number
placeholder="请输入人员总数..."
style="width:100%"
v-model.trim="platform.totalNumber"
/>
</a-form-item>
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="科技人员"
>
<a-input-number
placeholder="请输入科技人员..."
style="width:100%"
v-model.trim="platform.sciencePersonnel"
/>
</a-form-item>
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="大专以上人数"
>
<a-input-number
placeholder="请输入大专以上人数..."
style="width:100%"
v-model.trim="platform.collegeaboveNumber"
/>
</a-form-item>
</a-form>
<!-- 综合经济指标 -->
<a-form :form="form" v-if="current === 3">
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="资产总额"
>
<a-input-number
:precision="precision"
placeholder="请输入资产总额..."
step="0.01"
style="width:100%"
v-model.trim="platform.totalAssets"
/>
</a-form-item>
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="营业收入"
>
<a-input-number
:precision="precision"
placeholder="请输入营业收入..."
step="0.01"
style="width:100%"
v-model.trim="platform.operatingIncome"
/>
</a-form-item>
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="利润总额"
>
<a-input-number
:precision="precision"
placeholder="请输入利润总额..."
step="0.01"
style="width:100%"
v-model.trim="platform.profitTotal"
/>
</a-form-item>
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="上缴税金"
>
<a-input-number
:precision="precision"
placeholder="请输入上缴税金..."
step="0.01"
style="width:100%"
v-model.trim="platform.taxes"
/>
</a-form-item>
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="研发费用"
>
<a-input-number
:precision="precision"
placeholder="请输入研发费用..."
step="0.01"
style="width:100%"
v-model.trim="platform.researchCosts"
/>
</a-form-item>
</a-form>
<!-- 服务情况(次) -->
<a-form :form="form" v-if="current === 4">
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="代理代办"
>
<a-input-number
placeholder="请输入代理代办..."
style="width:100%"
v-model.trim="platform.agentService"
/>
</a-form-item>
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="政策推送"
>
<a-input-number
placeholder="请输入政策推送..."
style="width:100%"
v-model.trim="platform.policyPush"
/>
</a-form-item>
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="双创活动"
>
<a-input-number
placeholder="请输入双创活动..."
style="width:100%"
v-model.trim="platform.doubleActivities"
/>
</a-form-item>
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="政策辅导"
>
<a-input-number
placeholder="请输入政策辅导..."
style="width:100%"
v-model.trim="platform.policyGuidance"
/>
</a-form-item>
<a-form-item
:label-col="formItemLayout.labelCol"
:wrapper-col="formItemLayout.wrapperCol"
label="项目申报"
>
<a-input-number
placeholder="请输入项目申报..."
style="width:100%"
v-model.trim="platform.projectDeclaration"
/>
</a-form-item>
</a-form>
<a-steps :current="current">
<a-step @click="current = 0" style="cursor: pointer">
<template slot="title">
<span v-if="current === 0">Waiting...</span>
<span v-else>完成</span>
</template>
<span slot="description">公司信息</span>
</a-step>
<a-step
:title="current > 1 ? '完成' : 'Waiting...'"
@click="current = 1"
description="知识产权综合情况(项)"
style="cursor: pointer"
/>
<a-step
:title="current > 2 ? '完成' : 'Waiting...'"
@click="current = 2"
description="综合职工情况(个)"
style="cursor: pointer"
/>
<a-step
:title="current > 3 ? '完成' : 'Waiting...'"
@click="current = 3"
description="综合经济指标"
style="cursor: pointer"
/>
<a-step
:title="current > 4 ? '完成' : 'Waiting...'"
@click="current = 4"
description="服务情况(次)"
style="cursor: pointer"
/>
</a-steps>
</a-modal>
</div>
</template>
<script>
import debounce from 'lodash/debounce';
import { mapState, mapMutations } from 'vuex';
import { addEnterprise, queryInfo } from 'config/api';
const formItemLayout = {
labelCol: { span: 5 },
wrapperCol: { span: 18 },
};
const formTailLayout = {
labelCol: { span: 6 },
wrapperCol: { span: 18, offset: 6 },
};
export default {
name: 'SettledModel',
props: {
placeType: {
type: Number,
default: null,
},
},
data() {
this.handleSearchTasks = debounce(this.handleSearchTasks, 800);
return {
form: this.$form.createForm(this, { name: 'submit' }),
visible: false,
current: 0,
fileList: [],
title: '统计信息填报',
formItemLayout,
formTailLayout,
confirmLoading: false,
okText: '下一步',
platform: {
// 公司信息
placeId: '', // 公司id
time: null, // 时间
quarter: '', // 季度
// 知识产权综合情况(项)
practicalNumber: '', // 实用本年期初数
practicalIncrease: '', // 实用当年新增
inventionNumber: '', // 发明本年期初数
inventionIncrease: '', // 发明当年新增
softNumber: '', // 软著本年期初数
softIncrease: '', // 软著当年新增
brandNumber: '', // 商标本年期初数
brandIncrease: '', // 商标当年新增
// 综合职工情况(个)
totalNumber: '', // 人员总数
sciencePersonnel: '', // 科技人员
collegeaboveNumber: '', // 大专以上人数
// 服务情况(次)
agentService: '', // 代理代办
policyPush: '', // 政策推送
doubleActivities: '', // 双创活动
policyGuidance: '', // 政策辅导
projectDeclaration: '', // 项目申报
},
company: '',
dataSource: [],
companyInfo: {
company: '', // 公司名称
name: '', // 联系人
phone: '', // 联系方式
}, // 公司信息
yearShowOne: false,
quarters: [
{ id: 1, value: '第一季度' },
{ id: 2, value: '第二季度' },
{ id: 3, value: '第三季度' },
{ id: 4, value: '第四季度' },
],
precision: 2,
};
},
computed: mapState('user', ['picCode']),
watch: {
current(val) {
if (val === 4) {
this.okText = '完成';
} else {
this.okText = '下一步';
}
},
},
methods: {
...mapMutations('home', ['setPagePath']),
// 显示表单输入框
showModal() {
const anyringToken = sessionStorage.getItem('anyringToken');
if (!anyringToken) {
this.setPagePath(this.$route.path);
this.$router.push('/login');
this.$message.warning('请先登录');
} else {
this.visible = true;
}
},
// 取消显示
handleCancel(e) {
this.visible = false;
},
// 模糊搜索 选择公司信息
async handleSearchTasks() {
try {
const params = { param: { company: this.company, placeType: this.placeType } };
const res = await queryInfo(params);
const { code, msg, data } = res.data;
if (code === 200) {
this.dataSource = data;
} else {
this.$message.error(msg);
}
} catch (error) {
console.log(error);
}
},
onSelect(value) {
const item = this.dataSource.find(item => item.id === +value);
this.platform.placeId = item.id;
this.companyInfo.company = item.company;
this.companyInfo.name = item.name;
this.companyInfo.phone = item.phone;
},
// 弹出日历和关闭日历的回调
openChangeOne(status) {
//status是打开或关闭的状态
if (status) {
this.yearShowOne = true;
}
},
// 时间选择
panelChangeOne(value) {
this.platform.time = this.$moment(value).format('YYYY');
this.yearShowOne = false;
},
// 季度选择
onSelectQuarter(value) {
this.platform.quarter = value;
},
// 点击确定
handleSubmit() {
const { placeId, time, quarter } = this.platform;
if (!placeId) {
this.$message.error('请输入公司名称');
this.current = 0;
return;
}
if (!time) {
this.$message.error('请选择时间');
this.current = 0;
return;
}
if (!quarter) {
this.$message.error('请选择季度');
this.current = 0;
return;
}
if (this.okText === '下一步') {
this.current += 1;
} else {
this.addSettled();
}
},
/**
* 添加企业统计信息填报表
* @param {object} params 提交的数据
*/
async addSettled() {
this.confirmLoading = true;
try {
const params = { param: {} };
params.param = { ...this.platform };
const res = await addEnterprise(params);
const { code, msg, data } = res.data;
if (code === 200) {
this.$message.success('添加成功');
this.visible = false;
for (let key in this.platform) {
this.platform[key] = '';
}
for (let key in this.companyInfo) {
this.companyInfo[key] = '';
}
this.company = '';
this.current = 0;
} else {
this.$message.error(msg || '添加失败');
}
this.confirmLoading = false;
} catch (error) {
console.log('error: ', error);
this.confirmLoading = false;
}
},
},
};
</script>
<style lang="stylus" scoped>
.must-color {
color: red;
}
.code_img {
height: 32px;
width: 120px;
}
</style>