import React from 'react'; import { Spin, Form, Button, message, Table } from 'antd'; import ajax from 'jquery/src/ajax/xhr.js' import $ from 'jquery/src/ajax'; import dict from './dict.js'; import money from '@/money.js'; const FormItem = Form.Item; const formItemLayout = { labelCol: { span: 4 }, wrapperCol: { span: 10 }, }; const NUMBERS = { 1: '第一年', 2: '第二年', 3: '第三年', 4: '第四年', 5: '第五年', } const getText = (map, key, field) => { if (field) { return map[key] ? (map[key][field || 'text'] || '') : key; } return map[key] ? map[key] : key; } const EvaluateStep8 = Form.create({})(React.createClass({ getInitialState() { return { loading: true, record: {}, industries: {}, subIndustries: {}, districts: {}, value: 0, recommends: [] }; }, componentWillMount() { let record = this.props.record || {}, dictMap = {}; if (record[0] && record[0].industry) { this.loadData(record[0].industry); } else { this.state.loading = false; } this.state.record = record; this.state.value = this.props.value || 0; for (let key in dict) { if (dict.hasOwnProperty(key) && key != 'toMap') { dictMap[key] = dict.toMap(dict[key]); } } this.state.dictMap = dictMap; }, loadData(pid) { $.when($.ajax({ url: globalConfig.context + '/open/findIndustryCategory' }), $.ajax({ url: globalConfig.context + '/open/findIndustryCategory', data: { id: pid } }), $.ajax({ url: globalConfig.context + '/open/findDistrict' }), $.ajax({ url: globalConfig.context + '/api/user/evaluate/step5/' + this.props.id })).done(function (industryRes, subIndustryRes, districtRes, recommendRes) { let i = {}, si = {}, d = { 0: "全国" }, r = []; if (industryRes[0] && industryRes[0].data) { industryRes[0].data.forEach(it => { i[String(it.id)] = it; }) } if (subIndustryRes[0] && subIndustryRes[0].data) { subIndustryRes[0].data.forEach(it => { si[String(it.id)] = it; }) } if (districtRes[0] && districtRes[0].data) { districtRes[0].data.forEach(it => { d[String(it.id)] = it.name; }) } if (recommendRes[0] && recommendRes[0].data) { r = recommendRes[0].data; } this.setState({ loading: false, industries: i, subIndustries: si, districts: d, recommends: r }) }.bind(this)).fail(function () { this.setState({ loading: false }) }.bind(this)); }, next() { if (this.props.next) { this.props.next(); } }, prev() { if (this.props.prev) { this.props.prev(); } }, step1Col() { return [{ dataIndex: 'key', key: 'key', width: '40%', className: 'steps-cell-key' }, { dataIndex: 'text', key: 'text', width: '60%' }] }, step4Col() { return [{ title: '年份', dataIndex: 'year', key: 'year' }, { title: '营收', dataIndex: 'income', key: 'income', render: (text) => { return money(text || 0) + '元' } }, { title: '利润率', dataIndex: 'profit', key: 'profit', render: (text) => { return (text || 0) + '%' } }] }, step5Col() { const step = this.state.record[4]; let cols = [{ title: '年份', dataIndex: 'key', key: 'key', render: (text) => { return NUMBERS[text + 1] } }] switch (step.type) { case "2": cols.push({ title: '市场规模', dataIndex: 'marketScale', key: 'marketScale', render: (text) => { return money(text || 0) + '元' } }); cols.push({ title: '技术覆盖率/市场份额', dataIndex: 'marketRate', key: 'marketRate', render: (text) => { return (text || 0) + '%' } }); break; case "3": cols.push({ title: '单价', dataIndex: 'unitPrice', key: 'unitPrice', render: (text) => { return money(text || 0) + '元' } }); cols.push({ title: '销量', dataIndex: 'saleCount', key: 'saleCount' }); break; } cols.push({ title: '营业收入', dataIndex: 'income', key: 'income', render: (text) => { return money(text || 0) + '元' } }); if(this.state.record[3].hasIncome=='2') { cols.push({ title: '建议值', dataIndex: 'recommend', key: 'recommend', render: (text) => { return money(text || 0) + '元' } }); } return cols; }, step1Data() { const step = this.state.record[0], { industries, subIndustries, districts } = this.state; const { transferTypes, leftTimes } = this.state.dictMap; return step ? [{ key: "技术名称", text: step.name }, { key: "所属主行业", text: getText(industries, String(step.industry), 'name') }, { key: "所属子行业", text: step.subIndustry.split(',').map(it => { return getText(subIndustries, it, 'name'); }).join(',') }, { key: "转让方式", text: getText(transferTypes, String(step.transferType)) }, { key: "预估技术剩余寿命", text: getText(leftTimes, String(step.timeLeft)) }, { key: "转让区域", text: step.transferArea.split(',').map(it => { return districts[it] || it; }).join(',') }, { key: "评估基准日", text: step.benchmarkDate }, { key: "评估币种", text: step.currencyType }] : [] }, step2Data() { const step = this.state.record[1]; const { accessMethods, legalStatus, maintenanceStatus, confidentialities, decidabilities, rightLimitations } = this.state.dictMap; return step ? [{ key: "取得方式", text: getText(accessMethods, String(step.accessMethod)) }, { key: "法律状态", text: getText(legalStatus, String(step.legalStatus)) }, { key: "专利维护", text: getText(maintenanceStatus, String(step.patentMaintenance)) }, { key: "保密性", text: getText(confidentialities, String(step.confidentiality)) }, { key: "他人侵权的易判定性", text: getText(decidabilities, String(step.decidability)) }, { key: "是否涉及质押、担保、诉讼等权利限制", text: getText(rightLimitations, String(step.hasRightLimitation)) }] : [] }, step3Data() { const step = this.state.record[2]; const { progressiveness, innovativeness, ripeness, alternatives, defensive, prospect, supplyAndDemand, rangeOfApplication, imitable, profitability } = this.state.dictMap; return step ? [{ key: "先进性", text: getText(progressiveness, String(step.progressiveness)) }, { key: "创新性", text: getText(innovativeness, String(step.innovativeness)) }, { key: "成熟度", text: getText(ripeness, String(step.ripeness)) }, { key: "替代性", text: getText(alternatives, String(step.alternatives)) }, { key: "技术防御力", text: getText(defensive, String(step.defensive)) }, { key: "技术领域发展前景", text: getText(prospect, String(step.prospect)) }, { key: "供求关系", text: getText(supplyAndDemand, String(step.supplyAndDemand)) }, { key: "产品应用范围", text: getText(rangeOfApplication, String(step.rangeOfApplication)) }, { key: "遭他人模仿可能性", text: getText(imitable, String(step.imitable)) }, { key: "独立获利能力", text: getText(profitability, String(step.profitability)) }] : [] }, step4Data() { const step = this.state.record[3]; return step.hasIncome == 2 && step.incomes || [] }, step5Data() { const step = this.state.record[4], { recommends } = this.state; let res = []; if (step.forecastIncomes) { step.forecastIncomes.forEach((it, idx) => { res.push(Object.assign({}, it, { key: idx, recommend: recommends[idx] })) }) } return res }, step6Data() { const step = this.state.record[5]; return step ? [{ key: "企业所得税率预估", text: step.taxRate + '%' }] : [] }, step7Data() { const step = this.state.record[6]; const { political, technical, market, capital, management } = this.state.dictMap; return step ? [{ key: "政策风险", text: getText(political, String(step.political)) }, { key: "技术风险", text: getText(technical, String(step.technical)) }, { key: "市场风险", text: getText(market, String(step.market)) }, { key: "资金风险", text: getText(capital, String(step.capital)) }, { key: "管理风险", text: getText(management, String(step.management)) }] : [] }, step5Title() { const step = this.state.record[4]; let title = "收入直接预估" switch (step.type) { case "2": title = "市场占比预估" break; case "3": title = "产品开发预估" break; } return title; }, calc() { if(this.state.loading) { return; } this.setState({ loading: true }) $.ajax({ url: globalConfig.context + '/api/user/evaluate/calc/' + this.props.id }).done(function (res) { let val = res && res.data || 0; this.setState({ value: val, loading: false }) if (this.props.next) { this.props.next(val) } }.bind(this)).fail(function () { this.setState({ loading: false }) }.bind(this)); }, render() { let { loading, record, value } = this.state; const tableProps = { showHeader: false, pagination: false, size: 'middle' } return (
基本信息
法律状况评估
技术状况评估
历史收入
收入预估
所得税预估
风险预估
{ value ?
价值评估结果:
{money(value)}元
:
}
{ value ? : }
) }, })); export default EvaluateStep8;