import React,{Component,Fragment} from 'react'
import PropTypes from 'prop-types'
import {Page,Validator,Notification,FormItem,DatePickerItem,TextAreaItem,CheckboxItem,Checkbox,
    InputItem,Input,Bind,SelectItem,Button,Label,Image,Table,Steps} from '@/components/Common-Library'
import Api from '@/service/api'
import mBmtrfc from '../model'
import CodeTableFactory from '@/components/CodeTable'
import "./index.less"
import { inject, observer } from 'mobx-react'
import { action, observable,runInAction } from 'mobx'

import { Card } from 'antd'

import Ovwp from './Ovwp'
import Detp from './Detp'

import Fee from '@/views/Public/Fee'
import Gle from '@/views/Public/Gle'
import Papper from '@/views/Public/Papper'
import Engp from '@/views/Public/Engp'
 
const CodeTable = CodeTableFactory.getInstance()
const StepItem=Steps.Item

@inject('UserContext')
@inject('i18n')
@observer
export default class BmtrfcScreen extends Page
{
    static childContextTypes = {
        trn: PropTypes.string,
    }
    getChildContext () {
        return {trn:'bmtrfc'}
    }
    
    
    @observable
		formBlur=false
		
		@observable
		extra = { inifrm: 'bmtrfc', sptinr: '', oldinr:'', bchlevelLst: [] };

    constructor(props)
    {
        super(props)
        this.model = new mBmtrfc()    
				this.bind = Bind.bind(this)
				this.state={
          flag:true
        }
    }
	
		async componentWillMount() 
		{
			/*
			*添加初始化代码
      */
      let bmdinr = '';
      //如果携带参数，接收参数再发请求
      if(this.props.location.query){
        if(this.props.location.query.from=="sptsel"){
          //经办夹进入
          this.extra.sptinr = this.props.location.query.sptinr
        }else{
          bmdinr = this.props.location.query.bmdinr
        }
      }
      const rtnmsg = await Api.post(this.extra.inifrm + '/init', { params: { sptinr:this.extra.sptinr, bmdinr } })
			if (rtnmsg.retcod == SUCCESS) {
        Object.assign(this.model, rtnmsg.data)
        //给oldinr赋值为当前inr，为修改、退回等做准备
				this.extra.oldinr = rtnmsg.data.inr;
				this.setState({ flag: false });
			}
			else {
				Notification.error({ message: '服务端请求失败!' })
			}
	
			//快照模式下，不必开启校验，否则，静默校验，和记录变动
			!this.loadDisplay() && this.model.openMonitor() //开启校验
	
		}


    componentWillUnmount()
    {
        this.model.stopMonitor&&this.model.stopMonitor()//关闭校验
    }
 

    //交易内实现
    renderPage(){
    	const bind = this.bind
      const {i18n} = this.props
			
			return (
						<Card title="单据修改" size="small" className="transTitle">
							<Steps>
							
								<StepItem title="概要">
									<Ovwp model={this.model} extra={this.extra} flag={this.state.flag} />
								</StepItem>
								<StepItem title="明细">
              	  <Detp model={this.model} extra={this.extra} />
            		</StepItem>
					
                <StepItem title="表外明细">
                  <Engp model={this.model} extra={this.extra} fcdflg="DE" />
                </StepItem>
								<StepItem title="费用">
									<Fee model={this.model} extra={this.extra} />
								</StepItem>
								<StepItem title="会计分录">
									<Gle model={this.model} extra={this.extra} />
								</StepItem>
								<StepItem title="面函">
									<Papper model={this.model} extra={this.extra} />
								</StepItem>

							</Steps>
						</Card>
			)
	}
}
