| | |
| | | tax_type: '', |
| | | reqfields: [], |
| | | requireds: [], |
| | | timestamp: new Date().getTime() + '' |
| | | invoice_no: '', |
| | | invoice_code: '', |
| | | invoice_date: '', |
| | | read_only: false, |
| | | invoice_type_name: '', |
| | | timestamp: '' |
| | | } |
| | | |
| | | UNSAFE_componentWillMount () { |
| | |
| | | } |
| | | }) |
| | | |
| | | let invoice_type_name = '' |
| | | if (line.read_only === 'true') { |
| | | let types = book.invoice_type || [] |
| | | types.forEach(item => { |
| | | if (item.value === line.invoice_type) { |
| | | invoice_type_name = item.label |
| | | } |
| | | }) |
| | | invoice_type_name = invoice_type_name || line.invoice_type |
| | | } |
| | | |
| | | this.setState({ |
| | | ID: line[config.setting.primaryKey] || Utils.getguid(), |
| | | io: line.io, |
| | |
| | | reviewer: line.reviewer, |
| | | drawer: line.drawer, |
| | | details: details, |
| | | invoice_no: line.invoice_no, |
| | | invoice_code: line.invoice_code, |
| | | invoice_date: line.read_only === 'true' ? line.invoice_date : '', |
| | | read_only: line.read_only === 'true', |
| | | invoice_type_name: invoice_type_name, |
| | | oriDetails: fromJS(details).toJS(), |
| | | timestamp: new Date().getTime() + '', |
| | | loading: false |
| | |
| | | // } |
| | | |
| | | render() { |
| | | const { config, book, loading, invTypes, reqfields, saveType, date, timestamp, invoice_type, from_to_name, from_to_tax_no, from_to_addr, from_to_tel, from_to_bank_name, from_to_account_no, from_to_mob, from_to_email, orgname, tax_no, addr, tel, bank_name, account_no, remark, reviewer, drawer, payee, details, visible, tax_type } = this.state |
| | | const { config, book, loading, invTypes, reqfields, saveType, date, timestamp, invoice_type, from_to_name, from_to_tax_no, from_to_addr, from_to_tel, from_to_bank_name, from_to_account_no, from_to_mob, from_to_email, orgname, tax_no, addr, tel, bank_name, account_no, remark, reviewer, drawer, payee, details, visible, tax_type, invoice_no, invoice_code, invoice_date, read_only, invoice_type_name } = this.state |
| | | |
| | | if (!book || (config.wrap.datatype === 'dynamic' && !tax_no)) { |
| | | if (!book || (config.wrap.datatype === 'dynamic' && !timestamp)) { |
| | | return <div className="menu-invoice-wrap" style={config.style}> |
| | | <div className="loading-mask"> |
| | | <div className="ant-spin-blur"></div> |
| | | <Spin /> |
| | | </div> |
| | | </div> |
| | | } |
| | | |
| | | if (read_only) { |
| | | return ( |
| | | <div className="menu-invoice-wrap read_only" style={config.style}> |
| | | {loading ? |
| | | <div className="loading-mask"> |
| | | <div className="ant-spin-blur"></div> |
| | | <Spin /> |
| | | </div> : null |
| | | } |
| | | <div className="inv-action"> |
| | | {config.wrap.backBtn === 'show' ? <Button className="mk-back" onClick={this.goback}><LeftOutlined />返回</Button> : null} |
| | | </div> |
| | | <div className="inv-header"> |
| | | <div className="inv-type">{invoice_type_name}</div> |
| | | <div className="inv-msg"> |
| | | {invoice_no ? <div>发票号码:{invoice_no}</div> : null} |
| | | {invoice_code ? <div>发票代码:{invoice_code}</div> : null} |
| | | {invoice_date ? <div>开票日期:{invoice_date}</div> : null} |
| | | </div> |
| | | </div> |
| | | <div className="inv-body"> |
| | | <div className="inv-main-content"> |
| | | <div className="inv-buyer"> |
| | | <div className="inv-label">购买方</div> |
| | | <div className="inv-content"> |
| | | <Form.Item className="mk-name" label={<>名<span></span>称</>}> |
| | | {from_to_name} |
| | | </Form.Item> |
| | | <Form.Item label="纳税人识别号"> |
| | | {from_to_tax_no} |
| | | </Form.Item> |
| | | <Form.Item label={<>地<span></span>址<span></span>、<span></span>电<span></span>话</>}> |
| | | {from_to_addr + ' ' + from_to_tel} |
| | | </Form.Item> |
| | | <Form.Item label="开户行及账号"> |
| | | {from_to_bank_name + ' ' + from_to_account_no} |
| | | </Form.Item> |
| | | </div> |
| | | </div> |
| | | <div className="inv-notice"> |
| | | <div className="inv-label">通知到</div> |
| | | <div className="inv-content"> |
| | | <Form.Item label={<>手<span></span>机<span></span>号</>}> |
| | | {from_to_mob} |
| | | </Form.Item> |
| | | <Form.Item label={<>邮<span></span>箱</>}> |
| | | {from_to_email} |
| | | </Form.Item> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div className="inv-details"> |
| | | <InvoiceTable data={details} timestamp={timestamp} read_only={true} config={config.detail} tax_type={tax_type} onChange={(details) => this.setState({details})}/> |
| | | </div> |
| | | <div className="inv-main-content"> |
| | | <div className="inv-buyer"> |
| | | <div className="inv-label">销售方</div> |
| | | <div className="inv-content"> |
| | | <Form.Item label={<>名<span></span>称</>}> |
| | | {orgname} |
| | | </Form.Item> |
| | | <Form.Item label="纳税人识别号"> |
| | | {tax_no} |
| | | </Form.Item> |
| | | <Form.Item label={<>地<span></span>址<span></span>、<span></span>电<span></span>话</>}> |
| | | {addr + ' ' + tel} |
| | | </Form.Item> |
| | | <Form.Item label="开户行及账号"> |
| | | {bank_name + ' ' + account_no} |
| | | </Form.Item> |
| | | </div> |
| | | </div> |
| | | <div className="inv-notice"> |
| | | <div className="inv-label">备注</div> |
| | | <div className="inv-content" style={{paddingTop: '30px'}}> |
| | | <Form.Item label=""> |
| | | {remark} |
| | | </Form.Item> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div className="inv-tail"> |
| | | <Form.Item label="收款人"> |
| | | {payee} |
| | | </Form.Item> |
| | | <Form.Item label="复核人"> |
| | | {reviewer} |
| | | </Form.Item> |
| | | <Form.Item label="开票人"> |
| | | {drawer} |
| | | </Form.Item> |
| | | </div> |
| | | </div> |
| | | ) |
| | | } |
| | | |
| | | return ( |
| | |
| | | </div> |
| | | </div> |
| | | <div className="inv-details"> |
| | | <InvoiceTable data={details} timestamp={timestamp} config={config.detail} tax_type={tax_type} onChange={(details) => this.setState({details})}/> |
| | | <InvoiceTable data={details} timestamp={timestamp} read_only={false} config={config.detail} tax_type={tax_type} onChange={(details) => this.setState({details})}/> |
| | | </div> |
| | | <div className="inv-main-content"> |
| | | <div className="inv-buyer"> |