| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358 | 
							- 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 (
 
-       <Spin spinning={loading}>
 
-         <div className="steps-result">
 
-           <div className="steps-name">基本信息</div>
 
-           <Table {...tableProps} columns={this.step1Col()} dataSource={this.step1Data()}></Table>
 
-           <div className="steps-name">法律状况评估</div>
 
-           <Table {...tableProps} columns={this.step1Col()} dataSource={this.step2Data()}></Table>
 
-           <div className="steps-name">技术状况评估</div>
 
-           <Table {...tableProps} columns={this.step1Col()} dataSource={this.step3Data()}></Table>
 
-           <div className="steps-name">历史收入</div>
 
-           <Table columns={this.step4Col()} dataSource={this.step4Data()} locale={{ emptyText: "无历史收入" }} rowKey="year" pagination={false} size="middle"></Table>
 
-           <div className="steps-name">收入预估</div>
 
-           <Table columns={this.step5Col()} dataSource={this.step5Data()} pagination={false} size="middle" showHeader={true} title={this.step5Title}></Table>
 
-           <div className="steps-name">所得税预估</div>
 
-           <Table {...tableProps} columns={this.step1Col()} dataSource={this.step6Data()}></Table>
 
-           <div className="steps-name">风险预估</div>
 
-           <Table {...tableProps} columns={this.step1Col()} dataSource={this.step7Data()}></Table>
 
-           {
 
-             value ? <div><div className="steps-name">价值评估结果:</div>
 
-               <div className="steps-value">{money(value)}元</div></div> : <div />
 
-           }
 
-         </div>
 
-         <div className="steps-action">
 
-           {
 
-             value ? <Button type="primary" onClick={() => window.open(globalConfig.context + '/user/account/evaluateInfo?id=' + this.props.id)}>查看评估报告</Button>
 
-               : <Button type="primary" onClick={this.calc}>确认表单,开始估值</Button>
 
-           }
 
-           <Button style={{ marginLeft: 8 }} onClick={() => this.prev()}>上一步</Button>
 
-         </div>
 
-       </Spin>
 
-     )
 
-   },
 
- }));
 
- export default EvaluateStep8;
 
 
  |