| | |
| | | tax_type: '', |
| | | reqfields: [], |
| | | requireds: [], |
| | | timestamp: new Date().getTime() + '' |
| | | invoice_no: '', |
| | | invoice_code: '', |
| | | invoice_date: '', |
| | | read_only: false, |
| | | invoice_type_name: '', |
| | | timestamp: '' |
| | | } |
| | | |
| | | UNSAFE_componentWillMount () { |
| | |
| | | item.setting.customScript = _customScript // 整理后自定义脚本 |
| | | item.setting.tailScript = _tailScript // 后置自定义脚本 |
| | | |
| | | item.setting.custompage = /@pageSize@|@orderBy@/i.test(item.setting.dataresource + item.setting.customScript) |
| | | item.setting.custompage = /@pageSize@|@orderBy@|@mk_total/i.test(item.setting.dataresource + item.setting.customScript) |
| | | |
| | | return item |
| | | } |
| | |
| | | } |
| | | }) |
| | | |
| | | 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 |
| | |
| | | }) |
| | | if (res.status) { |
| | | if (config.billSaveBtn.reTabId) { |
| | | MKEmitter.emit('reloadMenuView', config.billSaveBtn.reTabId, 'table') |
| | | MKEmitter.emit('reloadMenuView', config.billSaveBtn.reTabId) |
| | | } |
| | | if (config.billSaveBtn.syncComId) { |
| | | MKEmitter.emit('reloadData', config.billSaveBtn.syncComId) |
| | |
| | | |
| | | outBill = () => { |
| | | const { config, BID, saveType } = this.state |
| | | |
| | | if (window.GLOB.storeFiles) { |
| | | if (!window.GLOB.storeDate || window.GLOB.storeDate < 0) { |
| | | Modal.warning({ |
| | | title: `电子档案存储包已过期。`, |
| | | okText: '知道了' |
| | | }) |
| | | return |
| | | } else if (window.GLOB.storeDate < 30) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: `电子档案存储包还剩${window.GLOB.storeDate}天。`, |
| | | duration: 5 |
| | | }) |
| | | } |
| | | } |
| | | |
| | | if (window.GLOB.systemType === 'production' && !config.billOutBtn.proInterface) { |
| | | notification.warning({ |
| | |
| | | sql = sql.replace(/@SessionUid@/ig, `'${localStorage.getItem('SessionUid') || ''}'`) |
| | | sql = sql.replace(/@UserID@/ig, `'${sessionStorage.getItem('UserID') || ''}'`) |
| | | sql = sql.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`) |
| | | sql = sql.replace(/@lang@/ig, `'${sessionStorage.getItem('lang')}'`) |
| | | sql = sql.replace(/@typename@/ig, `'admin'`) |
| | | |
| | | if (window.GLOB.externalDatabase !== null) { |
| | |
| | | |
| | | param.data.invoiceTypeCode = trans[param.data.invoiceTypeCode] || '' |
| | | |
| | | if (window.GLOB.storeFiles) { |
| | | param.store = true |
| | | } |
| | | |
| | | let url = '' |
| | | if (window.GLOB.systemType === 'production') { |
| | | url = config.billOutBtn.proInterface |
| | | } else { |
| | | url = config.billOutBtn.interface |
| | | } |
| | | if (!/^http/.test(url)) { |
| | | url = window.location.origin + url |
| | | } |
| | | |
| | | let _params = { |
| | |
| | | sql = sql.replace(/@SessionUid@/ig, `'${localStorage.getItem('SessionUid') || ''}'`) |
| | | sql = sql.replace(/@UserID@/ig, `'${sessionStorage.getItem('UserID') || ''}'`) |
| | | sql = sql.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`) |
| | | sql = sql.replace(/@lang@/ig, `'${sessionStorage.getItem('lang')}'`) |
| | | sql = sql.replace(/@typename@/ig, `'admin'`) |
| | | |
| | | if (sessionStorage.getItem('dataM') === 'true') { // 数据权限 |
| | |
| | | }) |
| | | if (res.status) { |
| | | if (config.billOutBtn.reTabId) { |
| | | MKEmitter.emit('reloadMenuView', config.billOutBtn.reTabId, 'table') |
| | | MKEmitter.emit('reloadMenuView', config.billOutBtn.reTabId) |
| | | } |
| | | if (config.billOutBtn.syncComId) { |
| | | MKEmitter.emit('reloadData', config.billOutBtn.syncComId) |
| | |
| | | }) |
| | | return |
| | | } |
| | | // window.open('https://kgcs.kuan-gu.com:10853/thirdPlatFormLogin?userName=admin&taxCode=91120222MA07GMNW97&taxName=天津畅享数字科技有限公司') |
| | | |
| | | this.clearData() |
| | | |
| | |
| | | }) |
| | | } |
| | | |
| | | 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 |
| | | // jumpSys = () => { |
| | | // window.open(`${window.location.origin}/kgcs/thirdPlatFormLogin?userName=admin&taxCode=91120222MA07GMNW97&taxName=天津畅享数字科技有限公司`) |
| | | // } |
| | | |
| | | if (!book || (config.wrap.datatype === 'dynamic' && !tax_no)) { |
| | | 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, invoice_no, invoice_code, invoice_date, read_only, invoice_type_name } = this.state |
| | | |
| | | 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 className="inv-action"> |
| | | {config.wrap.backBtn === 'show' ? <Button className="mk-back" onClick={this.goback}><LeftOutlined />返回</Button> : null} |
| | | {/* <Button className="mk-addinv" onClick={this.jumpSys}>跳转</Button> */} |
| | | <Button className="mk-addinv" onClick={this.addInvice}>新增发票</Button> |
| | | <Button className="mk-bill" loading={saveType === 'bill'} onClick={this.saveBill}>保存单据</Button> |
| | | <Button className="mk-submit" loading={saveType === 'out'} onClick={this.outBill}>提交开票</Button> |
| | |
| | | </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"> |