tplus-components-touch 3.15.1 → 3.15.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["tplus-components-touch/components/settlement/settlement.js"],"names":["hasElectron","env","platform","constant","electron","Settlement","observer","props","state","visible","czkVisible","djqVisible","jfdxVisible","showSetPwdModal","currentIndex","connectCardStatus","connectCardError","amountChanged","type","isManualIntoAmount","isXianjin","newPass","newPassConfirm","noAlreadyWarn","btnDissabled","confirmPwd","settleDisabled","compoundHotkeysList","window","$","operationControl","control","map","key","toLocaleUpperCase","hotkeydebounced","hotkeydebouncedPayMode","currentInput","store","SettlementStore","resizeSettlementToolBtns","newStyle","isMemberStorePage","b","billingSettlementDocumnet","bWidth","offsetWidth","cWidth","firstChild","lastChild","childNodes","forEach","v","className","handleReadICard","readRfCard","updateInput","currentMode","paymode","member","exchangable","undefined","inputkey","input","value","Math","min","maxamount","setCurrentModeValue","inputJfdxAmount","balance","inputCzkAmount","bquick","id","parseFloat","amount","Message","error","duration","setTimeout","handleCzkCancel","czkKeyboardOnClose","quickSettle","enumController","getEnumOj","PayStyle","resolve","onValidate","then","result","setState","init","context","onHandleAmount","dataSource","Code_02","storeInfo","dto","settleZero","hyczk","showCzkModal","handleSettle","handleGuestShow","checkIsIntegralExchange","IdbusiType","viewModel","data","showModal","handleDefault","brefund","boriginReturn","JSON","getCellValue","thePaymodes","m","checkModeDisabled","paymentType","setFocusAndSelectionMode","that","ModalWraper","confirm","title","content","onOk","onCancel","handleOk","e","handleCancel","onCancelSettle","cancelState","setInventoryFocus","clean","append","params","isNewRetailBCPos","setCurrentMode","_val","isReturn","sMember","ID","WalletEnabled","warn","czkInput","focus","setSelectionRange","length","connectRfCard","handleCzkOk","loadCzk","mode","paymethodId","closeRfCard","calcMemberBalance","handleCzk","Keyboard","close","handleSetPwdCancel","handleSetModal","updataMemberInfo","queryPwd","updateMemberInfo","resp","setPwdValue","field","handleBlur","isHorizontalPad","doms","document","getElementsByClassName","getElementById","console","log","showDjqModal","djq","inputdjq","getCouponList","handleDjqOk","Differentiate","handleDjqCancel","djqs","checked","COUPON","setCurrentFocusAndAddPay","showJfdxModal","jid","djqmode","themode","IsRepelWithPoints","code","jfdx","handleJfdxOk","handleJfdxCancel","onTabsClick2","memberInfo","hasmember","Code","Name","omc","initData","wx","zfb","smzf","checkScanDisabled","bdisabled","onTabsClick","MultiPay","paymodes","exchangeRate","forign","setCurrentFocusOnly","FORBIDDEN","NOTIFICATION","editModal","changeFocusAndAddPay","setFocusAndSelection","onDelPay","index","info","delPay","handleChange","target","amountMaxLength","parseInt","isNaN","changeValue","val","max","onBlur","changeFocusOnly","onFocus","currentFocus","onFocusHack","appendCzkmode","bappend","djqChecked","q","calcDjqValue","addDjq","checkCoupon","czkdebounced","cancel","onHotKeyClick1","onHotKeyClickModal","onHotKeyClick2","changeClickFocusOnly","onHotKeyEnter","notsettle","checkSettleDisabled","payIndex","displayPayModeList","SaoMaPayMode","find","filter","paymodeOb","findHaveNoModlePayType","findModlePayBySplice","currenIndex","symbol","findIndex","endCurrentMode","endCurrentModeOb","startCurrentModeOb","settleUnReturn","__queryingModal","querySettleResult","destroy","Flag","setDtoID","settleSuccess","settleCanceled","clearVoucherData","received","charge","openCashBox","xianjin","_this","showTwoScreen","getScreenType","flag","isHorizontalSunMi","localStore","get","item","shift","Value","step","screenType","sunMi_PresentationManager","sendMessageToSecondScreen","nativeMs","setIpcRendererMethod","onSettleSuccess","getSettleGift","resp1","__loadingModal","MemberPoints","isMemberPointsReturn","message","Number","__successModal","onModalClose","stores","dtype","dt","guestshow_enable","guestshow_clear","guestshow_welcome","guestshow_collect","guestshow_refund","guestshow_change","hasSuccess","other","replace","abs","price","qty","total","inv","wel","HardwareAPI","sendDataCusDisp","dataType","ret","args","promises","results","p","push","commit","handleUserInputs","isQuickPay","status","checkCharge","receivable","zeromode","value2","name","quickmode","SQBPAY","CSYH","inputConfirm","values","bTest","indexOf","reject","curmode","inputPwd","needPwd","validePwd","fKeyboardOnOk","paymethodeId","blur","fKeyboardOnClose","keyboardOnOk","keyboardOnClose","changefn","setConfirmPwdValue","modal","onPressEnter","authCode","pwd","onPressEsc","maskClosable","keyboard","closable","width","isMobileEnvironment","height","inputAmount","btnDebounced","btndebounced","onCzkChange","setCardNo","czkKeyboardOnOk","onDjqChange","isKeyBorad","debounced","djqKeyboardOnOk","djqKeyboardOnClose","xianjinChange","inputTarget","inputTarget2","innerHTML","changeScanProduct","scanObj","startScan","onScanResult","el","setStateValue","submitHandler","onScanCzkResult","onScanDjqResult","getXianjinPayment","payType","getXianjinBalance","isStoredValueCard","PayIcon2","zl","getAttribute","backdropStyle","scan","checkCurrentModeHaveMutex","payTypeList","payTypeFilterList","filterType","disableUserMode","haveUseTypeList","xj","enabled","changeDecimalBuZero","number","bitNum","f_x","newBitNum","pow","round","s_x","toString","pos_decimal","editCzkModal","paymodesCarouselList","carouselStart","CarouseOut","CarouselTp","newParams","mapList","floor","modeList","modeIndex","renderToolbtn","loginInfo","ICCardServer","ICCardPassword","iCCardServer","iCCardPassword","bind","setTimer","initPaymodes","nextProps","clear","cardPsw","cardSec","cardKm","getNewValue","PayIcon","hasSMZF","hotkeyIndex","theArr","t","paymodeDisabled","paymodeSelected","checkThepaymode","omission","totalVariety","totalQuantity","quantityDetail","memberDisabled","noIsMinAmount","totalTaxAmount","TotalTaxAmount","settle","ExchangeIntegral","_hasSMZF","quickPay","isQuick","productsIsEmpty","RetailDetails","moreToolbtns","pagination","spaceBetween","carouselStart2","quantity1","quantity2","quantity3","quantity4","sumQuantity","buyQuantity","returnQuantity","quantityPrecision","showAmount","sumRetailDetails","Quantity","r","i","iconclass","OnlinePaymentAmount","isMemberPoints","hotKey","hotKeyBindClass","maxHeight","body","clientHeight","hotKeyNotFilter","display","overchargesAmount","StorageCardNo","cardNo","onlineamount","onKeyboardChange","mindex","czkinput","tm","sum","Add","errinfo","keyCode","open","event","ref","inputNewAmount","inputConfirmAmount","promoMethodEnum","tools","cutZero","discountPct","displayText","doorsill","expired","bonusPoints","React","Component","contextTypes","PropTypes","object"],"mappings":"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","file":"settlement.js","sourcesContent":["import React from 'react'\r\nimport { observer } from 'mobx-react'\r\nimport _filter from 'lodash/filter';\r\nimport _map from 'lodash/map';\r\nimport _find from 'lodash/find';\r\nimport _findIndex from 'lodash/findIndex';\r\nimport _sortBy from 'lodash/sortBy';\r\nimport _forEach from 'lodash/forEach';\r\nimport _trim from 'lodash/trim';\r\nimport _truncate from 'lodash/truncate';\r\nimport _debounce from 'lodash/debounce';\r\nimport _reduce from 'lodash/reduce';\r\nimport classnames from 'classnames'\r\nimport { Drawer, Modal, Carousel, Input, Button } from 'antd';\r\nimport Message from '../message';\r\nimport asyncModal from './asyncModal';\r\nimport ModalWraper from '../modalWraper';\r\nimport { openLoadingModal,openQueryingModal,showSuccessModal, getFixedNumber } from './utils';\r\nimport SettlementStore from './settlementStore';\r\nimport Keyboard from '../keyboard';\r\nimport NumKeyboard from '../keyboard/numKeyboard';\r\nimport NumKeyboardScan from '../keyboard/numKeyboardScan';\r\nimport NumkeyboardPassword from '../keyboard/numkeyboardPassword'\r\nimport Ticon from '../ticon';\r\nimport PropTypes from 'prop-types';\r\nimport Scan from '../scan';\r\nimport HardwareAPI from '../hardwareAPI';\r\nimport { nativeMs, env, localStore } from 'mutants-microfx';\r\nimport { platform,enumController,tools} from 'mutants-util';\r\nimport { hotKey } from '../../index';\r\nimport { PosInitData } from 'tplus-poslogin';\r\n\r\nconst hasElectron = (env.platform === env.constant.platform.electron);\r\n\r\n@observer\r\nclass Settlement extends React.Component {\r\n state = {\r\n visible: false ,\r\n czkVisible:false,\r\n djqVisible:false,\r\n jfdxVisible:false,\r\n showSetPwdModal: false,\r\n currentIndex:0,\r\n connectCardStatus: false, //连接IC卡状态\r\n connectCardError: '', //连接IC卡错误后记录错误信息\r\n amountChanged:false,\r\n type:0,\r\n isManualIntoAmount: PosInitData(\"IsManualIntoAmount\"),\r\n isXianjin: false,\r\n newPass: '',\r\n newPassConfirm: '',\r\n noAlreadyWarn: true,\r\n btnDissabled: true,\r\n confirmPwd: '',\r\n settleDisabled: false,\r\n }\r\n // 复核结算方式快捷键列表\r\n compoundHotkeysList = (window.$.operationControl[5]? (window.$.operationControl[5].control || []):[]).map((key)=>{\r\n return key.toLocaleUpperCase();\r\n })\r\n\r\n hotkeydebounced = null;\r\n hotkeydebouncedPayMode = \"\";\r\n\r\n static contextTypes = {\r\n viewModel: PropTypes.object,\r\n stores: PropTypes.object,\r\n }\r\n\r\n currentInput = null;\r\n\r\n store = new SettlementStore()\r\n\r\n constructor(props) {\r\n super(props);\r\n this.hasElectron = hasElectron;\r\n const { loginInfo: { ICCardServer, ICCardPassword } = {} } = localStore.get('user') || {};\r\n this.iCCardServer = parseInt(ICCardServer); // 启用IC卡:0为禁用 1为启用\r\n this.iCCardPassword = ICCardPassword; //IC卡密码\r\n //移动端环境下,没有读取IC卡的方式。\r\n const { isHorizontalPad, isHorizontalSunMi } = platform || {};\r\n this.isHorizontalPad = !!isHorizontalPad;\r\n this.isHorizontalSunMi= !!isHorizontalSunMi;\r\n this.isMobileEnvironment = !!isHorizontalPad || !!isHorizontalSunMi;\r\n this.handleReadICard = this.handleReadICard.bind(this);\r\n this.setTimer = null;\r\n }\r\n\r\n componentDidMount() {\r\n //let retailDetails=this.context.viewModel.data.RetailDetails;//明细\r\n //let totalRetailAmount=this.context.viewModel.data.TotalRetailAmount;//零售金额合计\r\n this.store.initPaymodes(this.updateInput,this.props.type,this.props.MemberPoints);\r\n\r\n }\r\n\r\n componentDidUpdate() {\r\n this.resizeSettlementToolBtns()\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (nextProps.amount != this.props.amount) {\r\n this.store.amountChanged(nextProps.amount);\r\n this.setState({ amountChanged: !this.state.amountChanged });\r\n }\r\n\r\n // 增加积分兑换和普通模式切换 重新获取支付方式\r\n if(nextProps.MemberPoints != this.props.MemberPoints){\r\n this.store.paymode.clear();\r\n this.store.initPaymodes(this.updateInput,this.props.type,nextProps.MemberPoints);\r\n }\r\n }\r\n\r\n //对结算按钮超出的处理\r\n resizeSettlementToolBtns = () => {\r\n const { newStyle } = this.store;\r\n const { isMemberStorePage } = this.props;\r\n let b = this.billingSettlementDocumnet;\r\n if (b && newStyle && !isMemberStorePage) {\r\n let bWidth = b.offsetWidth;\r\n let cWidth = 0;\r\n if (b.firstChild) {\r\n cWidth += b.firstChild.offsetWidth;\r\n }\r\n if (b.lastChild && b.lastChild.childNodes) {\r\n b.lastChild.childNodes.forEach(v => {\r\n cWidth += v.offsetWidth;\r\n })\r\n }\r\n if (b.lastChild) {\r\n if (bWidth < cWidth) {\r\n b.lastChild.className = 'btns voucherMode';\r\n } else {\r\n b.lastChild.className = 'btns';\r\n }\r\n }\r\n }\r\n }\r\n\r\n //IC卡连接\r\n connectRfCard() {\r\n //客户端环境下,并开启了启用IC卡。\r\n if (this.hasElectron === true && this.iCCardServer === 1) {\r\n nativeMs.setIpcRendererMethod('ConnectRfCard', null, ret => {\r\n let result = {}\r\n if (ret.status === 0) {\r\n result = { connectCardStatus: false, connectCardError: ret.value }\r\n } else {\r\n result = { connectCardStatus: true, connectCardError: '' };\r\n }\r\n this.setState(result)\r\n })\r\n }\r\n }\r\n //IC卡读取\r\n readRfCard() {\r\n //客户端环境下,并开启了启用IC卡。\r\n if (this.hasElectron === true && this.iCCardServer === 1) {\r\n const { connectCardStatus, connectCardError } = this.state;\r\n if (connectCardStatus === false) {\r\n Message.error(connectCardError ? connectCardError : '读取IC卡失败');\r\n this.connectRfCard(); //读取失败后,重新连接一下。\r\n return;\r\n }\r\n let params = { cardPsw: this.iCCardPassword, cardSec: 13, cardKm: 0 }\r\n nativeMs.setIpcRendererMethod('ReadRfCard', { ...params }, ret => {\r\n if (ret.status === 0) {\r\n Message.error(ret.value);\r\n this.connectRfCard(); //读取失败后,重新连接一下。\r\n return;\r\n } else if (ret.status === 1) {\r\n //this.searchMember(ret.value);\r\n this.czkInput.input[\"value\"]=ret.value;\r\n this.loadCzk(ret.value);\r\n }\r\n })\r\n }\r\n }\r\n\r\n //IC卡关闭\r\n closeRfCard(){\r\n if (this.hasElectron === true && this.iCCardServer === 1) {\r\n nativeMs.setIpcRendererMethod('CloseRfCard')\r\n }\r\n }\r\n handleReadICard = () => {\r\n this.readRfCard();\r\n }\r\n\r\n updateInput=()=>{\r\n let {currentMode}=this.store.paymode;\r\n if(this.state.jfdxVisible &¤tMode && currentMode.member.exchangable !== undefined ){\r\n this.inputkey=\"inputJfdxAmount\";\r\n this[\"inputJfdxAmount\"].input.value=currentMode && getFixedNumber(Math.min(currentMode.value,currentMode.maxamount,currentMode.member.exchangable))\r\n this.setCurrentModeValue(this.inputJfdxAmount.input.value,Math.min(currentMode.maxamount,currentMode.member.exchangable));\r\n }else if(this.state.czkVisible && currentMode && currentMode.value>=0 && currentMode.member.balance !== undefined){\r\n this.inputkey=\"inputCzkAmount\";\r\n this[\"inputCzkAmount\"] && this[\"inputCzkAmount\"].input && (this[\"inputCzkAmount\"].input.value=getFixedNumber(Math.min(currentMode.value,currentMode.maxamount,currentMode.member.balance)));\r\n const maxamount=Math.min(currentMode.maxamount,currentMode.member.balance);\r\n this.inputCzkAmount && this.inputCzkAmount.input && this.setCurrentModeValue(this.inputCzkAmount.input.value,maxamount);\r\n if(this.store.bquick && currentMode.member.id && parseFloat(this.store.paymode.amount)>parseFloat(maxamount)){\r\n Message.error(\"本单最大可用储值卡结算金额为:\"+getFixedNumber(maxamount)+\",请使用复合结算!\", {\r\n duration: 4\r\n });\r\n setTimeout(() => {\r\n this.handleCzkCancel();\r\n setTimeout(() => { this.czkKeyboardOnClose() }, 150)\r\n }, 50);\r\n }\r\n }\r\n }\r\n\r\n quickSettle = (key)=>{\r\n const { PayStyle } = enumController.getEnumOj();\r\n Promise.resolve(!this.props.onValidate || this.props.onValidate()).then(result=>{\r\n if (result) {\r\n this.setState({\r\n settleDisabled: false\r\n })\r\n this.store.init(this.props.type == 1 ? null : this.context, this.props.onHandleAmount, this.props.dataSource.Code_02, this.props.storeInfo, true, this.props.amount, this.props.type, this.props.dto);\r\n let amount = this.store.paymode.amount;\r\n if (amount == 0) {\r\n this.settleZero();\r\n return;\r\n }\r\n if (key == PayStyle.hyczk) {\r\n this.showCzkModal();\r\n } else {\r\n this.store.quickSettle(key);\r\n this.handleSettle(\"quickPay\");\r\n }\r\n this.handleGuestShow(amount < 0 ? 2 : 3, amount);\r\n }\r\n })\r\n }\r\n\r\n checkIsIntegralExchange = () => {\r\n let { IdbusiType } = this.context.viewModel.data;\r\n return (IdbusiType === 37 || IdbusiType === 36);\r\n }\r\n \r\n showModal = () => {\r\n // 支持异步验证过程\r\n Promise.resolve( !this.props.onValidate || this.props.onValidate()).then(result => {\r\n if (result) {\r\n this.setState({\r\n settleDisabled: false\r\n })\r\n this.store.init(this.props.type == 1 ? null : this.context, this.props.onHandleAmount, this.props.dataSource.Code_02, this.props.storeInfo, false, this.props.amount, this.props.type, this.props.dto);\r\n let amount = this.store.paymode.amount;\r\n if (amount == 0) {\r\n this.settleZero();\r\n return;\r\n }\r\n this.setState({ visible: true });\r\n this.handleGuestShow(amount < 0 ? 2 : 3, amount);\r\n setTimeout(() => {\r\n this.handleDefault()\r\n // // 单据模式 临时性获取第一个结算方式焦点\r\n // // document.querySelector('.modeItem:nth-child(1) .content input').focus()\r\n let { paymode, brefund, newStyle } = this.store;\r\n let boriginReturn = this.context && this.context.viewModel && this.context.viewModel.data && JSON.getCellValue(this.context.viewModel.data, \"IsOriginalReturn\");\r\n let thePaymodes = newStyle ? _filter(paymode.thePaymodes, (m) => { return !(this.checkModeDisabled(m.paymentType, brefund, boriginReturn) && parseFloat(m.value) == 0); }) : paymode.thePaymodes;\r\n this.setFocusAndSelectionMode(thePaymodes,-1);\r\n }, 100)\r\n }\r\n })\r\n }\r\n\r\n settleZero=()=>{\r\n const that = this;\r\n ModalWraper.confirm({\r\n className: 'tplus-confirm-modal',\r\n title: '结算',\r\n content: '当前收款金额为0,确认结算?',\r\n onOk() {\r\n setTimeout(() => { that.handleSettle(\"zero\") }, 300)\r\n },\r\n onCancel() {\r\n\r\n },\r\n });\r\n }\r\n\r\n handleDefault=()=>{\r\n // let dmode=_find(this.store.paymode.paymodes,(mode)=>{return mode.isDefault});\r\n // if(dmode){\r\n // if(dmode.paymentType==PayStyle.hyczk){\r\n // this.onTabsClick(PayStyle.hyczk);\r\n // }else{\r\n // this.store.quickSettle(dmode.paymentType);\r\n // this.onTabsClick(dmode.paymentType);\r\n // }\r\n // }else if(this.store.member && this.store.member.ID && parseFloat(this.store.member.BalanceStorage)>0 &&\r\n // _find(this.store.paymode.paymodes,{'paymentType':PayStyle.hyczk})){\r\n // this.onTabsClick(PayStyle.hyczk);\r\n // // this.showCzkModal();\r\n // }\r\n\r\n // else if(_find(this.store.paymode.paymodes,{'paymentType':PayStyle.xianjin})){\r\n // this.store.quickSettle(PayStyle.xianjin);\r\n // this.onTabsClick(PayStyle.xianjin);\r\n // }\r\n if(this.store.newStyle){\r\n // this.onHotKeyEnter(null,true);\r\n }\r\n }\r\n\r\n handleOk = (e) => {\r\n this.setState({\r\n visible: false,\r\n });\r\n }\r\n\r\n handleCancel = (e) => {\r\n this.props.onCancelSettle && this.props.onCancelSettle();\r\n this.cancelState();\r\n this.setInventoryFocus();\r\n }\r\n cancelState=()=>{\r\n this.store.clean();\r\n this.setState({\r\n visible: false,\r\n });\r\n }\r\n\r\n //czk\r\n showCzkModal = (id,append, params) => {\r\n const { PayStyle } = enumController.getEnumOj();\r\n let { isNewRetailBCPos } = platform || {};\r\n this.store.setCurrentMode(id,PayStyle.hyczk,append);\r\n this._val=this.store.paymode.currentMode.value;\r\n let {currentMode}=this.store.paymode;\r\n const maxamount=Math.min(currentMode.maxamount,currentMode.member.balance);\r\n if(this.store.bquick && currentMode.member.id && parseFloat(this.store.paymode.amount)>parseFloat(maxamount)){\r\n Message.error(\"本单最大可用储值卡结算金额为:\"+getFixedNumber(maxamount)+\",请使用复合结算!\",{\r\n duration: 4\r\n });\r\n } else {\r\n if (isNewRetailBCPos) {\r\n let { isReturn } = this.props;\r\n let sMember = this.store.member;\r\n if (sMember && sMember.ID) {\r\n // noPlaySetPwd 点击结算方式设置密码,点加号不设置\r\n if (!sMember.WalletEnabled && params !== 'noPlaySetPwd' && !isReturn) {\r\n this.setState({\r\n newPass: '',\r\n newPassConfirm: '',\r\n showSetPwdModal: true\r\n })\r\n } else {\r\n this.setState({\r\n showSetPwdModal: false,\r\n czkVisible: true\r\n })\r\n }\r\n } else {\r\n Message.warn('请先录入会员');\r\n } \r\n // this.setState({\r\n // czkVisible: true,\r\n // });\r\n } else {\r\n this.setState({\r\n czkVisible: true,\r\n });\r\n }\r\n // this.setState({\r\n // czkVisible: true,\r\n // });\r\n }\r\n setTimeout(() => {\r\n if(!currentMode.member || !currentMode.member.id){\r\n this.czkInput && this.czkInput.input.focus()\r\n }else{\r\n if(this.inputCzkAmount && this.inputCzkAmount.input){\r\n this.inputCzkAmount.input.focus();\r\n this.inputCzkAmount.input.setSelectionRange(0, this.inputCzkAmount.input.value.length);\r\n }\r\n }\r\n }, 350)\r\n this.connectRfCard();\r\n }\r\n\r\n handleCzkOk = async (e) => {\r\n // const maxamount=Math.min(this.store.paymode.currentMode.maxamount,this.store.paymode.currentMode.member.balance);\r\n // if(this.store.bquick && this.store.paymode.amount>maxamount){\r\n // Message.error(\"本单最大可用储值卡结算金额为:\"+getFixedNumber(maxamount)+\",请使用复合结算!\");\r\n // this.setState({\r\n // czkVisible: false,\r\n // });\r\n // return;\r\n // }\r\n const { PayStyle } = enumController.getEnumOj();\r\n if(!this.store.paymode.currentMode.member.id){\r\n await this.store.loadCzk(this.czkInput.input.value);\r\n }\r\n\r\n if(!this.store.paymode.currentMode.member.id ){\r\n Message.error(\"请录入储值卡!\");\r\n return ;\r\n }\r\n // if(this.store.paymode.currentMode.value > 0 && this.store.paymode.currentMode.member.NeedModifyPassword){\r\n // Message.error(\"U会员中密码为空,请设置密码后使用!\");\r\n // this.setState({\r\n // czkVisible: false,\r\n // });\r\n // return;\r\n // }\r\n if(_find(this.store.paymode.thePaymodes,(mode)=>{\r\n return mode.paymethodId!=this.store.paymode.currentMode.paymethodId &&\r\n mode.paymentType==PayStyle.hyczk &&\r\n mode.member.id==this.store.paymode.currentMode.member.id\r\n })){\r\n Message.error(\"该储值卡已使用。\");\r\n return;\r\n }\r\n if(this.store.bquick && this.store.paymode.amount!=this.store.paymode.currentMode.value){\r\n Message.error(\"实收金额应等于应收金额。\");\r\n return;\r\n }\r\n\r\n this.setState({\r\n czkVisible: false,\r\n });\r\n this.closeRfCard();\r\n this.store.paymode.calcMemberBalance();\r\n this.handleCzk();\r\n }\r\n\r\n handleCzkCancel = (e) => {\r\n if(this.store.bquick){\r\n this.props.onCancelSettle && this.props.onCancelSettle();\r\n this.store.clean();\r\n }\r\n this.setState({\r\n czkVisible: false,\r\n });\r\n this.closeRfCard();\r\n Keyboard.close();\r\n this.setInventoryFocus();\r\n }\r\n\r\n handleSetPwdCancel = () => {\r\n this.setState({\r\n showSetPwdModal: false\r\n })\r\n }\r\n\r\n handleSetModal = async () => {\r\n const { newPass, newPassConfirm } = this.state;\r\n const { updataMemberInfo } = this.props;\r\n const result = await this.store.queryPwd(newPass, newPassConfirm)\r\n if (result) {\r\n this.setState({\r\n showSetPwdModal: false,\r\n czkVisible: true,\r\n newPass: '',\r\n newPassConfirm: ''\r\n })\r\n Message.warn('设置成功')\r\n let { currentMode } = this.store.paymode;\r\n setTimeout(() => {\r\n if(!currentMode.member || !currentMode.member.id){\r\n this.czkInput && this.czkInput.input.focus()\r\n }else{\r\n if(this.inputCzkAmount && this.inputCzkAmount.input){\r\n this.inputCzkAmount.input.focus();\r\n this.inputCzkAmount.input.setSelectionRange(0, this.inputCzkAmount.input.value.length);\r\n }\r\n }\r\n }, 350)\r\n this.connectRfCard();\r\n let resp = await this.store.updateMemberInfo(this.store);\r\n updataMemberInfo(resp);\r\n }\r\n }\r\n\r\n setPwdValue = (field, value) => {\r\n this.setState({\r\n [field]: value\r\n }, () => {\r\n const { newPass = '', newPassConfirm = '' } = this.state || {};\r\n if (newPassConfirm.length=== 6 && newPass.length === 6 && newPass === newPassConfirm) {\r\n this.setState({\r\n btnDissabled: false\r\n })\r\n }\r\n })\r\n }\r\n\r\n handleBlur = (field) => {\r\n const { newPass = '', newPassConfirm = '' } = this.state || {};\r\n setTimeout(() => {\r\n const { showSetPwdModal } = this.state || {};\r\n if (!showSetPwdModal) return;\r\n if (field=== 'newPass' && newPass.length < 6) {\r\n this.setState({\r\n btnDissabled: true\r\n })\r\n Message.warn('请输入6位新密码!')\r\n } else {\r\n if (field === 'newPassConfirm') {\r\n if (newPass !== newPassConfirm) {\r\n this.setState({\r\n btnDissabled: true\r\n })\r\n Message.warn('密码输入不一致,请重新输入!')\r\n }\r\n }\r\n }\r\n if (newPassConfirm.length=== 6 && newPass.length === 6 && newPass === newPassConfirm) {\r\n this.setState({\r\n btnDissabled: false\r\n })\r\n }\r\n }, 80);\r\n }\r\n\r\n //关闭弹框时,执行此方法,把焦点设定到商品录入框\r\n setInventoryFocus = () => {\r\n if (!!this.isHorizontalPad) return;\r\n let doms = document.getElementsByClassName('app hot-key-focus-container');\r\n let input = document.getElementById('productPoint');\r\n if (input) setTimeout(() => { if (doms && doms.length > 0) {console.log('settlement--setInventory==Focus=='); input.focus() } }, 300);\r\n }\r\n\r\n //djq\r\n showDjqModal = (id) => {\r\n // if(!this.store.member || !this.store.member.Uid){\r\n // Message.error('请先输入会员再使用优惠券结算!');\r\n // return ;\r\n // }\r\n const { PayStyle } = enumController.getEnumOj();\r\n this.store.setCurrentMode(id,PayStyle.djq);\r\n this.setState({\r\n djqVisible: true,\r\n });\r\n setTimeout(() => {\r\n this.inputdjq && this.inputdjq.input && this.inputdjq.input.focus()\r\n }, 200)\r\n\r\n // TODO: 测试优惠券支付\r\n let { isNewRetailBCPos } = platform || {};\r\n if (isNewRetailBCPos && !this.store.paymode.currentMode.boriginReturn) {\r\n this.store.getCouponList();\r\n }\r\n }\r\n\r\n handleDjqOk = (e) => {\r\n const { PayStyle, Differentiate } = enumController.getEnumOj();\r\n if(this.store.paymode.currentMode.boriginReturn){\r\n this.handleDjqCancel(e);\r\n return;\r\n }\r\n if(_filter(this.store.paymode.currentMode.djqs,(djq)=>{return djq.checked}).length==0){\r\n Message.error(`请录入并使用${Differentiate.COUPON}。`);\r\n return ;\r\n }\r\n if(parseFloat(this.store.paymode.currentMode.value)>parseFloat(this.store.paymode.currentMode.maxamount)){\r\n Message.error(`超过了${Differentiate.COUPON}可支付的最大金额。`);\r\n return ;\r\n }\r\n this.setState({\r\n djqVisible: false,\r\n });\r\n this.setCurrentFocusAndAddPay(PayStyle.djq);\r\n }\r\n\r\n handleDjqCancel = (e) => {\r\n this.setState({\r\n djqVisible: false,\r\n });\r\n }\r\n\r\n //jfdx\r\n showJfdxModal = (jid) => {\r\n const { PayStyle, Differentiate } = enumController.getEnumOj();\r\n let id=this.store.newStyle? -1 : jid;\r\n if(!this.store.member || !this.store.member.ID){\r\n Message.error('请先输入会员再使用会员积分抵现结算!');\r\n return ;\r\n }\r\n let djqmode=_find(this.store.paymode.thePaymodes,(themode)=>{return themode.paymentType==PayStyle.djq;});\r\n let djq=djqmode && _find(djqmode.djqs,(djq)=>{return !djq.IsRepelWithPoints});\r\n if(djq){\r\n Message.error(`${Differentiate.COUPON}(${djq.code})不可与积分一起使用`);\r\n return ;\r\n }\r\n this.store.setCurrentMode(id,PayStyle.jfdx);\r\n this._val=this.store.paymode.currentMode.value;\r\n this.setState({\r\n jfdxVisible: true,\r\n });\r\n setTimeout(() => {\r\n this.inputJfdxAmount.input.focus();\r\n this.inputJfdxAmount.input.setSelectionRange(0, this.inputJfdxAmount.input.value.length);\r\n }, 200)\r\n }\r\n\r\n handleJfdxOk = (e) => {\r\n this.setState({\r\n jfdxVisible: false,\r\n });\r\n //this.setCurrentFocusAndAddPay(PayStyle.jfdx);\r\n this.handleCzk();\r\n }\r\n\r\n handleJfdxCancel = (e) => {\r\n this.setState({\r\n jfdxVisible: false,\r\n });\r\n }\r\n\r\n onTabsClick2 = (paymode, brefund, themode, key) => {\r\n const { PayStyle, Differentiate } = enumController.getEnumOj();\r\n paymode.currentMode = null;\r\n switch (key) {\r\n case PayStyle.hyczk:\r\n this.showCzkModal(-1);\r\n break;\r\n case PayStyle.jfdx:\r\n this.showJfdxModal(-1);\r\n break;\r\n case PayStyle.djq:\r\n let memberInfo = this.store && this.store.member;\r\n let hasmember = (memberInfo.ID || memberInfo.Code || memberInfo.Name) ? true : false;\r\n let omc = this.props.initData(\"OnlyMemberCanUseCoupon\")\r\n if (omc && !hasmember) {\r\n Message.warn(`仅会员可以使用${Differentiate.COUPON},请录入会员!`);\r\n return;\r\n }\r\n this.showDjqModal(-1);\r\n break;\r\n case PayStyle.wx:\r\n if (_find(paymode.thePaymodes, (mode) => { return mode.paymentType === PayStyle.zfb || mode.paymentType === PayStyle.smzf})) {\r\n Message.error('已使用了其他的付款码支付,不可以再使用微信了。');\r\n } else {\r\n this.setCurrentFocusAndAddPay(key);\r\n }\r\n break;\r\n case PayStyle.zfb:\r\n if (_find(paymode.thePaymodes, (mode) => { return mode.paymentType === PayStyle.wx || mode.paymentType === PayStyle.smzf })) {\r\n Message.error('已使用了其他的付款码支付,不可以再使用支付宝了。');\r\n } else {\r\n this.setCurrentFocusAndAddPay(key);\r\n }\r\n break;\r\n case PayStyle.smzf:\r\n if (_find(paymode.thePaymodes, (mode) => { return mode.paymentType === PayStyle.zfb || mode.paymentType === PayStyle.wx})) {\r\n Message.error('已使用了其他的付款码支付,不可以再使用扫码支付了。');\r\n } else {\r\n this.setCurrentFocusAndAddPay(key);\r\n }\r\n break;\r\n default:\r\n this.setCurrentFocusAndAddPay(key);\r\n break;\r\n }\r\n }\r\n\r\n checkScanDisabled=(key)=>{\r\n const { paymode, newStyle } = this.store;\r\n const { PayStyle } = enumController.getEnumOj();\r\n let bdisabled=false;\r\n if(!newStyle){\r\n return bdisabled;\r\n }\r\n switch (key) {\r\n case PayStyle.wx:\r\n if (_find(paymode.thePaymodes, (mode) => { return (mode.paymentType === PayStyle.zfb || mode.paymentType === PayStyle.smzf) && parseFloat(mode.value)!=0 })) {\r\n bdisabled=true;\r\n }\r\n break;\r\n case PayStyle.zfb:\r\n if (_find(paymode.thePaymodes, (mode) => { return (mode.paymentType === PayStyle.wx || mode.paymentType === PayStyle.smzf) && parseFloat(mode.value)!=0 })) {\r\n bdisabled=true;\r\n }\r\n break;\r\n case PayStyle.smzf:\r\n if (_find(paymode.thePaymodes, (mode) => { return (mode.paymentType === PayStyle.zfb || mode.paymentType === PayStyle.wx) && parseFloat(mode.value)!=0 })) {\r\n bdisabled=true;\r\n }\r\n break;\r\n }\r\n return bdisabled;\r\n }\r\n\r\n onTabsClick = (key) => {\r\n const { MultiPay } = enumController.getEnumOj();\r\n const { paymode, brefund, boriginReturn } = this.store;\r\n const { noAlreadyWarn } = this.state;\r\n if (this.checkModeDisabled(key, brefund, boriginReturn)) {\r\n return;\r\n }\r\n let themode = _find(paymode.paymodes, { 'paymentType': key });\r\n if (themode.exchangeRate != 1) {\r\n let forign = _find(paymode.thePaymodes, (mode) => { return mode.exchangeRate != 1 && mode.paymentType != key });\r\n if (forign) {\r\n Message.error(\"只允许一种外币结算。\");\r\n return;\r\n }\r\n }\r\n themode = _find(paymode.thePaymodes, (mode) => { return mode.paymentType === key });\r\n const that = this;\r\n if (themode) {\r\n this.setCurrentFocusOnly(key);\r\n return;\r\n } else if (paymode.thePaymodes.length >= 1) {\r\n switch (this.props.initData(\"multiPay\")) {\r\n case MultiPay.FORBIDDEN:\r\n Message.error(\"当前设置为不支持多种结算方式。\");\r\n break;\r\n case MultiPay.NOTIFICATION:\r\n noAlreadyWarn ? ModalWraper.confirm({\r\n className: 'tplus-confirm-modal',\r\n title: '复合结算',\r\n content: '您确定要使用多种结算方式吗?',\r\n onOk() {\r\n that.setState({\r\n noAlreadyWarn: false\r\n })\r\n that.onTabsClick2(paymode, brefund, themode, key);\r\n },\r\n onCancel() {\r\n },\r\n }) : that.onTabsClick2(paymode, brefund, themode, key);;\r\n break;\r\n default:\r\n this.onTabsClick2(paymode, brefund, themode, key);\r\n break;\r\n }\r\n } else {\r\n this.onTabsClick2(paymode, brefund, themode, key);\r\n }\r\n }\r\n\r\n editModal = (id,type,boriginReturn)=>{\r\n this.setState({currentIndex:id});\r\n const { PayStyle } = enumController.getEnumOj();\r\n switch(type){\r\n case PayStyle.hyczk:\r\n !boriginReturn && this.showCzkModal(id);\r\n break;\r\n case PayStyle.jfdx:\r\n !boriginReturn && this.showJfdxModal(id);\r\n break;\r\n case PayStyle.djq:\r\n this.showDjqModal(id);\r\n break;\r\n }\r\n }\r\n\r\n setCurrentFocusAndAddPay = (key) => {\r\n this.store.changeFocusAndAddPay(key);\r\n if(this.store.bquick){\r\n this.handleSettle(\"quickPay\");\r\n }else{\r\n this.setFocusAndSelection(key);\r\n }\r\n }\r\n\r\n onDelPay = (index,boriginReturn,type) => {\r\n const { PayStyle } = enumController.getEnumOj();\r\n if(boriginReturn && (type==PayStyle.hyczk || type==PayStyle.djq || type==PayStyle.jfdx)){\r\n Message.info('原单退货时,该结算方式不可以删除。');\r\n }else{\r\n this.store.delPay(index);\r\n }\r\n }\r\n\r\n handleChange = (index, e) => {\r\n let currentInput = e.target;\r\n let amountMaxLength = parseInt(this.props.initData[\"AmountMaxLength\"] || 10);\r\n if (!isNaN(e.target.value) || e.target.value == '-') {\r\n if (e.target.value.length <= amountMaxLength) {\r\n this.store.changeValue(index, e.target.value, false);\r\n }\r\n }\r\n }\r\n\r\n setCurrentModeValue=(val,max)=>{\r\n // let bjfdx=this.store.paymode.currentMode.paymentType==PayStyle.jfdx;\r\n let value=val;\r\n let amountMaxLength=parseInt(this.props.initData[\"AmountMaxLength\"]||10);\r\n if(isNaN(val) && val!=='-'){\r\n value = this._val;\r\n }else if(!this.store.brefund && !isNaN(val) && parseFloat(val)<=0){\r\n value = this._val;\r\n }else if(value.length>amountMaxLength){\r\n value = this._val;\r\n }else{\r\n this._val = val;\r\n }\r\n this[this.inputkey].input.value=value;\r\n this.store.paymode.setCurrentModeValue(value,max);\r\n }\r\n\r\n onBlur = (index, e) => {\r\n this.currentInput = null;\r\n this.store.changeFocusOnly(-1);\r\n this.store.changeValue(index, e.target.value == '-' ? 0 : e.target.value, true);\r\n }\r\n\r\n onFocus = (index, mode, paymode, e) => {\r\n this.currentInput = e.target;\r\n this.setState({ currentIndex: index });\r\n if (mode.paymentType == paymode.currentFocus) return;\r\n this.setCurrentFocusOnly(mode.paymentType);\r\n }\r\n\r\n onFocusHack = (index, mode, paymode, e) => {\r\n this.currentInput = e.target;\r\n this.setState({ currentIndex: index });\r\n if (mode.paymentType == paymode.currentFocus) return;\r\n this.store.changeFocusOnly(mode.paymentType);\r\n }\r\n\r\n\r\n setCurrentFocusOnly =(key)=>{\r\n this.store.changeFocusOnly(key);\r\n this.setFocusAndSelection(key);\r\n }\r\n\r\n appendCzkmode=(boriginReturn, params)=>{\r\n const { PayStyle } = enumController.getEnumOj();\r\n if(boriginReturn){\r\n Message.info('原单退货时不可以使用非原单的储值卡结算方式。');\r\n return ;\r\n }\r\n let bappend=true;\r\n const { paymode, newStyle, member } = this.store;\r\n if(newStyle && member.ID && _findIndex(paymode.thePaymodes, (mode) => {return mode.paymentType === PayStyle.hyczk && mode.member.id==member.ID} )==-1){\r\n bappend=false;\r\n }\r\n this.showCzkModal(-1,bappend, params);\r\n }\r\n\r\n djqChecked=(q)=>{\r\n const { Differentiate } = enumController.getEnumOj()\r\n if(this.store.paymode.currentMode.boriginReturn){\r\n Message.info(`原单退货时${Differentiate.COUPON}不可以取消。`);\r\n return ;\r\n }\r\n this.store.paymode.calcDjqValue(q);\r\n }\r\n\r\n addDjq=()=>{\r\n //document.getElementById(`inputS${index}`)\r\n //const v = _trim(this['inputdjq']['input']['value']);\r\n //api\r\n // this.store.addDjq('10000','5元优惠券',5,'无门槛','2019-12-31',true);\r\n const v=_trim(this.inputdjq.input.value);\r\n // if(v===''){\r\n // return ;\r\n // }\r\n this.store.checkCoupon(v).then(()=>{\r\n this.inputdjq.input.value='';\r\n this.inputdjq.input.focus();\r\n })\r\n\r\n }\r\n\r\n loadCzk=(v)=>{\r\n if(this.czkdebounced){\r\n return;\r\n }\r\n this.czkdebounced=_debounce(()=>{\r\n this.store.loadCzk(v);\r\n },1000,{\r\n 'leading': true,\r\n 'trailing': false\r\n });\r\n this.czkdebounced();\r\n setTimeout(()=>{\r\n this.czkdebounced.cancel();\r\n this.czkdebounced=null;\r\n },2000)\r\n }\r\n\r\n onHotKeyClick1=(mode,index,boriginReturn)=>{\r\n if(this.hotkeydebouncedPayMode == mode){\r\n return;\r\n }\r\n if(this.hotkeydebounced){\r\n this.hotkeydebounced.cancel();\r\n this.hotkeydebounced=null;\r\n }\r\n this.hotkeydebounced=_debounce(()=>{\r\n this.hotkeydebouncedPayMode = mode;\r\n this.onHotKeyClickModal(mode,index,boriginReturn);\r\n },500,{\r\n 'leading': true,\r\n 'trailing': false\r\n });\r\n this.hotkeydebounced();\r\n setTimeout(()=>{\r\n this.hotkeydebounced.cancel();\r\n this.hotkeydebounced=null;\r\n this.hotkeydebouncedPayMode = \"\";\r\n },1000)\r\n }\r\n\r\n onHotKeyClickModal=(mode,index,boriginReturn)=>{\r\n const { PayStyle } = enumController.getEnumOj();\r\n let { brefund } = this.store;\r\n if(this.checkModeDisabled(mode.paymentType,brefund,boriginReturn)){\r\n return;\r\n }\r\n if(mode.paymentType==PayStyle.hyczk){\r\n this.appendCzkmode(boriginReturn);\r\n }else{\r\n this.editModal(index, mode.paymentType, boriginReturn)\r\n }\r\n }\r\n\r\n onHotKeyClick2=(index,mode,paymode,e)=>{\r\n if(this.hotkeydebouncedPayMode == mode){\r\n return;\r\n }\r\n this.store.changeClickFocusOnly(mode.paymentType);\r\n this.setCurrentFocusOnly(mode.paymentType);\r\n if(this.hotkeydebounced){\r\n this.hotkeydebounced.cancel();\r\n this.hotkeydebounced=null;\r\n }\r\n this.hotkeydebounced=_debounce(()=>{\r\n this.hotkeydebouncedPayMode = mode;\r\n this.onFocus(index, mode, paymode, e);\r\n },500,{\r\n 'leading': true,\r\n 'trailing': false\r\n });\r\n this.hotkeydebounced();\r\n setTimeout(()=>{\r\n this.hotkeydebounced.cancel();\r\n this.hotkeydebounced=null;\r\n this.hotkeydebouncedPayMode = \"\";\r\n },1000)\r\n }\r\n\r\n onHotKeyEnter = (e, notsettle) => {\r\n let { paymode, brefund, newStyle } = this.store;\r\n // if (this.hotkeydebouncedPayMode == paymode) {\r\n // return;\r\n // }\r\n if (this.hotkeydebounced) {\r\n this.hotkeydebounced.cancel();\r\n this.hotkeydebounced = null;\r\n }\r\n this.hotkeydebounced = _debounce(() => {\r\n // let { type, amount, totalVariety, totalQuantity, isReturn, quantityDetail,memberDisabled } = this.props\r\n let boriginReturn = this.context && this.context.viewModel && this.context.viewModel.data && JSON.getCellValue(this.context.viewModel.data, \"IsOriginalReturn\");\r\n let thePaymodes = newStyle ? _filter(paymode.thePaymodes, (m) => { return !(this.checkModeDisabled(m.paymentType, brefund, boriginReturn) && parseFloat(m.value) == 0); }) : paymode.thePaymodes;\r\n // 定义当前检测的paymode\r\n this.hotkeydebouncedPayMode = paymode;\r\n if (!notsettle && !this.checkSettleDisabled(paymode, thePaymodes)) {\r\n this.handleSettle();\r\n } else if ((thePaymodes || []).length > 0) {\r\n\r\n // 根据currentIndex = paymethodeId 获取当前支付方式位置\r\n let payIndex = -1;\r\n thePaymodes.forEach((paymodes,index)=>{\r\n if(paymodes.paymethodId == this.state.currentIndex) payIndex = index;\r\n });\r\n\r\n this.setFocusAndSelectionMode(thePaymodes,payIndex);\r\n }\r\n }, 500, {\r\n 'leading': true,\r\n 'trailing': false\r\n });\r\n this.hotkeydebounced();\r\n setTimeout(() => {\r\n this.hotkeydebounced && this.hotkeydebounced.cancel();\r\n this.hotkeydebounced = null;\r\n this.hotkeydebouncedPayMode = \"\";\r\n }, 1000)\r\n }\r\n\r\n\r\n setFocusAndSelectionMode = (thePaymodes,currentIndex) => {\r\n const { PayStyle } = enumController.getEnumOj();\r\n let displayPayModeList = [...thePaymodes];\r\n // 复制支付方式列表\r\n const SaoMaPayMode = displayPayModeList.find( mode => mode.paymentType == PayStyle.smzf);\r\n // 查找扫码支付\r\n if(SaoMaPayMode){\r\n // 如果扫码支付存在 则 排除微信支付宝\r\n displayPayModeList = displayPayModeList.filter( mode => mode.paymentType != PayStyle.zfb && mode.paymentType != PayStyle.wx )\r\n }\r\n // 查找到下一次enter键后的支付方式\r\n let paymodeOb = this.findHaveNoModlePayType(displayPayModeList,currentIndex);\r\n if(paymodeOb){\r\n // 获取焦点\r\n this.setFocusAndSelection(paymodeOb.mode.paymentType);\r\n }\r\n }\r\n\r\n\r\n\r\n /**\r\n *\r\n * @param {*} thePaymodes 支付方式列表\r\n * @param {*} currenIndex 当前支付方式下标\r\n * @param {*} symbol 从当前currenIndex开始 还是从当前currenIndex截止\r\n */\r\n findModlePayBySplice = (thePaymodes,currenIndex,symbol) =>{\r\n const { PayStyle } = enumController.getEnumOj();\r\n let findIndex = currenIndex;\r\n const endCurrentMode = thePaymodes.find((mode, index) => {\r\n findIndex++;\r\n return (symbol? index > currenIndex:index < currenIndex) &&\r\n mode.paymentType != PayStyle.hyczk &&\r\n mode.paymentType != PayStyle.djq &&\r\n mode.paymentType != PayStyle.jfdx\r\n });\r\n if(endCurrentMode) return { mode:endCurrentMode,index:findIndex}\r\n return null;\r\n }\r\n\r\n findHaveNoModlePayType = (thePaymodes,currenIndex) => {\r\n if(!thePaymodes || thePaymodes.length == 0) return null;\r\n const endCurrentModeOb = this.findModlePayBySplice(thePaymodes,currenIndex,true)\r\n if(endCurrentModeOb) return endCurrentModeOb;\r\n const startCurrentModeOb = this.findModlePayBySplice(thePaymodes,currenIndex,false)\r\n if(startCurrentModeOb) return startCurrentModeOb;\r\n return null\r\n }\r\n\r\n\r\n setFocusAndSelection = (key) => {\r\n const that=this;\r\n const { paymode } = this.store;\r\n const themode = _find(paymode.thePaymodes, (mode) => mode.paymentType === key);\r\n const index = (themode && themode.paymethodId) || -1;\r\n if (index !== -1) {\r\n setTimeout( ()=> {\r\n const input = document.getElementById(`inputS${index}`)\r\n that.setState({currentIndex:index});\r\n this.currentInput = input;\r\n setTimeout( ()=> {\r\n input.focus();\r\n input.setSelectionRange(0, input.value.length)\r\n }, 10)\r\n\r\n }, 200)\r\n }\r\n }\r\n\r\n settleUnReturn = async () => {\r\n const that = this;\r\n ModalWraper.confirm({\r\n className: 'tplus-confirm-modal',\r\n content: <div className='unReturn'><div className='title'>支付超时,需要重新查询支付结果!</div><div>若不重新查询,会出现顾客支付成功,但零售单收款不成功的情况。</div></div>,\r\n async onOk() {\r\n window.__queryingModal = openQueryingModal();\r\n let result = await that.store.querySettleResult();\r\n setTimeout(() => {\r\n if (window.__queryingModal) {\r\n window.__queryingModal.destroy()\r\n window.__queryingModal = null\r\n }\r\n }, 0)\r\n switch (result.Flag) {\r\n case \"0\"://成功\r\n that.store.setDtoID(result.ID);\r\n that.settleSuccess();\r\n break;\r\n case \"1\"://处理中\r\n that.settleUnReturn();\r\n // Message.info(\"结算正在处理中,请稍后再次查询。\");\r\n break;\r\n case \"2\"://失败\r\n Message.info(`结算失败,原因:${result.Message}。`);\r\n // that.settleCanceled();\r\n break;\r\n }\r\n },\r\n onCancel() {\r\n // this.settleCanceled();\r\n },\r\n });\r\n }\r\n settleCanceled=()=>{\r\n console.log('settlement--settleCanceled--调用清除数据==Focus==')\r\n this.props.clearVoucherData && this.props.clearVoucherData();\r\n this.cancelState();\r\n }\r\n\r\n settleSuccess = async () => {\r\n //提示成功\r\n const { PayStyle } = enumController.getEnumOj();\r\n let { amount, received, thePaymodes } = this.store.paymode;\r\n let { IdbusiType } = this.store.dto;\r\n let charge = this.store.paymode.charge;\r\n let openCashBox = !!_find(thePaymodes, (mode) => { return mode.paymentType == PayStyle.xianjin });\r\n // 判断双屏显示。\r\n const _this = this;\r\n const showTwoScreen = function (amount, received, charge) {\r\n const getScreenType = function () {\r\n let flag = false;\r\n if (_this.hasElectron === true || _this.isHorizontalSunMi) {\r\n let data = localStore.get('setting_setData') || [];\r\n data = data.filter(item => item.Name === 'EnableDoubleScreen');\r\n data = data && data.length > 0 ? data.shift() : null;\r\n if (data && data.Value === '1') {\r\n flag = true;\r\n }\r\n }\r\n return flag;\r\n }\r\n const params = {\r\n step: 3,\r\n data: {\r\n amount: amount,\r\n received: received,\r\n charge: charge\r\n }\r\n }\r\n let screenType = getScreenType();\r\n if (screenType === true) { //副屏-第二屏幕\r\n if (_this.isHorizontalSunMi) {\r\n window.sunMi_PresentationManager.sendMessageToSecondScreen(params);\r\n } else {\r\n nativeMs && nativeMs.setIpcRendererMethod('ReplyScreen', params);\r\n }\r\n setTimeout(() => { _this.props.onSettleSuccess && _this.props.onSettleSuccess({ openCashBox }) }, 1500)\r\n } else {\r\n _this.props.onSettleSuccess && _this.props.onSettleSuccess({ openCashBox });\r\n }\r\n }\r\n\r\n const { getSettleGift } = this.store;\r\n let resp1 = false;\r\n try {\r\n // 获取支付成功后礼包情况\r\n resp1 = await getSettleGift();\r\n } catch(e) {\r\n console.log(\"获取支付礼包getSettleGift失败\");\r\n }\r\n \r\n setTimeout(() => {\r\n if (window.__loadingModal) {\r\n window.__loadingModal.destroy()\r\n window.__loadingModal = null\r\n }\r\n let isXianjin = _this.state.isXianjin\r\n showTwoScreen(amount, received, charge);\r\n if (isXianjin) this.handleGuestShow(4, charge);\r\n _this.setState({\r\n noAlreadyWarn: true\r\n })\r\n \r\n let { MemberPoints, isMemberPointsReturn, isReturn } = _this.props;\r\n let message = \"支付成功\"\r\n if ((isReturn || isMemberPointsReturn) && Number(amount) == Number(0)) {\r\n message = \"退货成功\"\r\n } else if (MemberPoints && Number(amount) == Number(0)) {\r\n message = \"兑换成功\"\r\n }\r\n window.__successModal = showSuccessModal(amount, received, charge, _this.props.onModalClose, isXianjin, message, resp1 && resp1.data, stores, () => {\r\n _this.handleGuestShow(5)\r\n })\r\n this.setState({ isXianjin: false })\r\n this.cancelState();\r\n }, 0)\r\n }\r\n // 处理客显显示功能\r\n handleGuestShow = (dtype, value) => {\r\n if (this.hasElectron === false) return;\r\n let dt = localStore.get('portsetting_hardSet') || [];\r\n const { guestshow_enable, guestshow_clear, guestshow_welcome, guestshow_collect, guestshow_refund, guestshow_change } = dt || {};\r\n const hasSuccess = localStore && localStore.get('portsetting_hardSet_isSuccess');\r\n if (!guestshow_enable || (!!guestshow_enable && hasSuccess == '0')) return;\r\n let other = '';\r\n switch (dtype) {\r\n case 0: //欢迎\r\n other = guestshow_welcome;\r\n break;\r\n case 2: //退款\r\n other = (guestshow_refund + \"\").replace('[含税总金额]', Math.abs(value))\r\n break;\r\n case 3: //收款\r\n other = (guestshow_collect + \"\").replace('[含税总金额]', value)\r\n break;\r\n case 4: //找零\r\n other = (guestshow_change + \"\").replace('[找零金额]', getFixedNumber(value))\r\n break;\r\n case 5: //清除\r\n other = guestshow_clear;\r\n break;\r\n }\r\n let params = JSON.stringify({ price: '', qty: '', total: '', inv: '', wel: '', other: other })\r\n console.log(`Send客显sendDataCusDisp:状态-${dtype},参数-${params}`)\r\n HardwareAPI.sendDataCusDisp({ data: params, dataType: dtype }, ret => { console.log(`Return客显sendDataCusDisp:状态-${dtype},返回-${JSON.stringify(ret)}`) })\r\n }\r\n\r\n handleSettle = async (args) =>{\r\n this.setState({\r\n settleDisabled: true,\r\n })\r\n console.log(\"settlement.handleSettle开始执行,参数:\",+args);\r\n // let p=new Promise((res,rej)=>{\r\n // res(args);\r\n // });\r\n //\r\n // const testAsync = async (p) => {\r\n // let result = await p;\r\n // console.log(result);\r\n // }\r\n //\r\n // testAsync(p);\r\n const { PayStyle } = enumController.getEnumOj();\r\n const { paymode,brefund,boriginReturn,newStyle } = this.store;\r\n const isQuickPay = args === 'quickPay'\r\n const that =this;\r\n let status = false\r\n paymode.thePaymodes.forEach((v) => {\r\n if (v.paymentType === PayStyle.xianjin && v.value !== '0.00') {\r\n status = true\r\n }\r\n })\r\n this.setState({\r\n isXianjin: status ? true : false\r\n })\r\n if(that.checkCharge() && Math.abs(paymode.receivable)>that.props.initData(\"posChangeUpperAmount\")){\r\n Message.error('找零不能超过最大找零金额:'+getFixedNumber(that.props.initData(\"posChangeUpperAmount\"))+'元');\r\n this.setState({\r\n settleDisabled: false\r\n })\r\n return;\r\n }\r\n if(args !==\"zero\" && !newStyle){\r\n let zeromode=_find(paymode.thePaymodes,(mode)=>{\r\n return parseFloat(mode.value)==0 || (mode.exchangeRate!=1?parseFloat(mode.value2):parseFloat(mode.value))==0;\r\n })\r\n if(zeromode){\r\n this.setState({\r\n settleDisabled: false\r\n })\r\n Message.error(zeromode.name +' 的结算金额为零,不可以结算。');\r\n return;\r\n }\r\n }\r\n\r\n let promises = []\r\n const thePaymodes = _sortBy(newStyle ?_filter(paymode.thePaymodes,(mode)=>{return parseFloat(mode.value)!=0;}):paymode.thePaymodes, 'orderBy')\r\n if(isQuickPay ){\r\n let quickmode=thePaymodes[0];\r\n if (this.checkModeDisabled(quickmode.paymentType,brefund,boriginReturn)){\r\n this.setState({\r\n settleDisabled: false\r\n })\r\n Message.error('退款不能使用'+ quickmode.name +'结算,请使用其他结算方式!');\r\n return;\r\n }\r\n }\r\n _forEach(thePaymodes, (mode) => {\r\n if (!(boriginReturn && brefund) && (mode.paymentType == PayStyle.zfb || mode.paymentType == PayStyle.wx || mode.paymentType == PayStyle.smzf || mode.paymentType == PayStyle.SQBPAY || mode.paymentType == PayStyle.CSYH\r\n || (mode.paymentType == PayStyle.xianjin && isQuickPay))) {\r\n promises.push(that.inputConfirm(mode, isQuickPay))\r\n }\r\n });\r\n\r\n const commit = async (values) => {\r\n const result = await this.store.commit(this.props.bTest);\r\n if (result === true) {//成功\r\n that.settleSuccess();\r\n Promise.resolve()\r\n } else {\r\n this.setState({\r\n settleDisabled: false\r\n })\r\n //提示失败\r\n setTimeout(() => {\r\n if (window.__loadingModal) {\r\n window.__loadingModal.destroy()\r\n window.__loadingModal = null\r\n }\r\n //撤销支付\r\n }, 0)\r\n if (result && (result.Code || result.code)) {\r\n switch (result.Code || result.code) {\r\n case 'RE_Settle_UnReturn':\r\n console.log('settlement--RE_Settle_UnReturn--调用清除数据==Focus==')\r\n this.props.clearVoucherData && this.props.clearVoucherData();\r\n this.cancelState();\r\n break;\r\n case 'ECONNABORTED'://error.code === 'ECONNABORTED' && error.message.indexOf('timeout')\r\n result.message.indexOf('timeout') > -1 && that.settleUnReturn();\r\n break;\r\n }\r\n }\r\n if(isQuickPay){\r\n that.props.onCancelSettle && that.props.onCancelSettle();\r\n that.cancelState();\r\n }\r\n\r\n await Promise.reject()\r\n }\r\n }\r\n\r\n async function handleUserInputs(promises) {\r\n let results = []\r\n try {\r\n for (let p of promises) {\r\n const result = await p\r\n results.push(result)\r\n }\r\n window.__loadingModal = openLoadingModal()\r\n await commit(results);\r\n } catch (err) {\r\n // notification.open({\r\n // message: '错误',\r\n // description: '失败, 请重新结算',\r\n // });\r\n }\r\n }\r\n\r\n handleUserInputs(promises)\r\n }\r\n\r\n handleCzk = async () =>{\r\n const that =this;\r\n const curmode = this.store.paymode.currentMode;\r\n let promises = [];\r\n const { isNewRetailBCPos } = platform || {};\r\n if (isNewRetailBCPos) {\r\n if(curmode.value>0){\r\n const { PayStyle } = enumController.getEnumOj();\r\n if (curmode.paymentType === PayStyle.hyczk) {\r\n promises.push(that.inputPwd(curmode));\r\n }\r\n }\r\n } else {\r\n if(curmode.member.needPwd && curmode.value>0){\r\n promises.push(that.inputPwd(curmode));\r\n }\r\n }\r\n\r\n const commit = async (values)=> {\r\n //密码校验\r\n const result= values.length>0 ? (await that.store.validePwd(values[0])) : \"\";\r\n if(result==\"\"){//成功\r\n //返回\r\n that.setCurrentFocusAndAddPay(curmode.paymentType);\r\n Promise.resolve()\r\n }else{\r\n //Message.info(\"密码不正确\");\r\n await Promise.reject(result)\r\n }\r\n }\r\n\r\n async function handleUserInputs(promises) {\r\n let results = []\r\n try {\r\n for (let p of promises) {\r\n const result = await p\r\n results.push(result)\r\n }\r\n await commit(results);\r\n } catch (err) {\r\n if(err!=\"cancelpwd\"){\r\n Message.error(err);\r\n setTimeout(()=>{that.handleCzk();},500);\r\n }\r\n }\r\n }\r\n\r\n handleUserInputs(promises)\r\n }\r\n //that[`inputS${paymode.paymethodId}`]\r\n fKeyboardOnOk = (paymethodeId) => {\r\n const input=this[`inputS${paymethodeId}`].input;\r\n return (e)=>{\r\n input && input.blur();\r\n Keyboard.close();\r\n }\r\n }\r\n fKeyboardOnClose = (paymethodeId) => {\r\n const input=this[`inputS${paymethodeId}`].input;\r\n return (e)=>{\r\n input && input.blur();\r\n Keyboard.close();\r\n }\r\n }\r\n\r\n keyboardOnOk = (e) => {\r\n this.inputkey && this[this.inputkey] && this[this.inputkey].input && this[this.inputkey].input.blur();\r\n Keyboard.close();\r\n }\r\n\r\n keyboardOnClose = (e) => {\r\n this.inputkey && this[this.inputkey] && this[this.inputkey].input && this[this.inputkey].input.blur();\r\n Keyboard.close();\r\n }\r\n changefn=(e)=>{\r\n console.log(e)\r\n }\r\n setConfirmPwdValue = (value) => {\r\n this.setState({\r\n confirmPwd: value\r\n })\r\n }\r\n inputPwd = async (paymode) => {\r\n const that = this\r\n const { confirmPwd } = this.state;\r\n return new Promise(function (resolve, reject) {\r\n const modal = asyncModal({\r\n onPressEnter: () => {\r\n Keyboard.close();\r\n const v = _trim(that[`inputAmount`]['input']['value']);\r\n // if (v !== '') {\r\n modal.destroy()\r\n const { confirmPwd } = that.state || {};\r\n setTimeout(() => {\r\n paymode.authCode=v;\r\n resolve({\r\n id:paymode.member.id,\r\n pwd: confirmPwd,\r\n })\r\n }, 100)\r\n // } else {\r\n // Message.info('请输入密码');\r\n // throw \"error\";\r\n // }\r\n },\r\n onPressEsc: () => {\r\n Keyboard.close();\r\n reject('cancelpwd')\r\n },\r\n maskClosable: false,\r\n keyboard: false,\r\n closable: true,\r\n title:paymode.name,\r\n width:450,\r\n className: (that.isHorizontalSunMi || !that.isMobileEnvironment) ? 'pwdModal' : 'pwdModal extraHeight',\r\n // 储值卡结账时显示为密码框\r\n content: (<div className=\"scanInput\">\r\n <div>\r\n <span className=\"label\">应收金额:</span><span className=\"yfje\">{getFixedNumber(paymode.value)}</span>\r\n </div>\r\n <div className=\"pwd\">\r\n <span className=\"label\">储值余额密码:</span>\r\n <span>\r\n {/* <input type=\"text\" style={{width:'0px',marginLeft:'20px'}}></input> */}\r\n {/* <Input\r\n className=\"content\"\r\n style={{marginLeft:'-20px'}}\r\n placeholder=\"输入密码\"\r\n ref={input => that[`inputS${paymode.paymethodId}`] = input}\r\n onChange={(e) => {\r\n this.setState({\r\n confirmPwd: e.target.value\r\n })\r\n }}\r\n value={confirmPwd}\r\n onFocus={(e)=>{\r\n const inputTarget = that[`inputS${paymode.paymethodId}`].input;\r\n Keyboard.open((v)=>{\r\n const value = Keyboard.getNewValue(inputTarget, inputTarget.value, v);\r\n console.log('zlf',inputTarget, inputTarget.value);\r\n inputTarget.value=value;\r\n this.setState({\r\n confirmPwd: e.target.value\r\n })\r\n }, that.fKeyboardOnOk(paymode.paymethodId), that.fKeyboardOnClose(paymode.paymethodId))()\r\n }\r\n }\r\n onBlur={(e)=>{\r\n this.setState({\r\n confirmPwd: e.target.value\r\n })\r\n Keyboard.close();\r\n }}\r\n /> */}\r\n <NumkeyboardPassword\r\n className=\"content\"\r\n newType='positive'\r\n bordered\r\n placeholder=\"请输入6位数字密码\"\r\n style={{ width: 266, height: 32 }}\r\n maxLength={6}\r\n ref={input => that.inputAmount = input}\r\n onChange={value => that.setConfirmPwdValue(value)}\r\n // onBlur={value => that.handleConfirmBlur}\r\n />\r\n </span>\r\n </div>\r\n <div className=\"buttonRegion\">\r\n <div className=\"fr\">\r\n <Button size=\"large\" onClick={() => {\r\n modal.destroy()\r\n reject('cancelpwd')//\r\n }}>取消\r\n </Button>\r\n <Button\r\n type=\"primary\" size=\"large\" onClick={() => {\r\n const v = _trim(that[`inputAmount`]['input']['value'])\r\n const { confirmPwd } = that.state || {};\r\n // if (v !== '') {\r\n modal.destroy()\r\n // if (isQuickPay) {\r\n // window.__loadingModal = openLoadingModal()\r\n // }\r\n setTimeout(() => {\r\n paymode.authCode=v;\r\n resolve({\r\n id:paymode.member.id,\r\n pwd: confirmPwd,\r\n })\r\n }, 100)\r\n // } else {\r\n // Message.info('请输入密码');\r\n // }\r\n }}>确定\r\n </Button>\r\n </div>\r\n </div>\r\n </div>),\r\n })\r\n // 扫码框自动聚焦\r\n setTimeout(() => {\r\n that[`inputS${paymode.paymethodId}`] && that[`inputS${paymode.paymethodId}`].input.focus();\r\n that.inputAmount && that.inputAmount.input.focus();\r\n }, 200)\r\n })\r\n }\r\n\r\n btnDebounced = (type, bquick) => {\r\n const { PayStyle } = enumController.getEnumOj();\r\n const { paymode,brefund,boriginReturn,newStyle } = this.store;\r\n let status = false;\r\n paymode.thePaymodes.forEach((v) => {\r\n if (v.paymentType === PayStyle.xianjin && v.value !== '0.00') {\r\n status = true\r\n }\r\n })\r\n this.setState({\r\n isXianjin: status ? true : false\r\n })\r\n\r\n if (this.btndebounced) {\r\n return;\r\n }\r\n this.btndebounced = _debounce(() => {\r\n if (bquick) {\r\n this.quickSettle(type);\r\n } else {\r\n this.showModal();\r\n }\r\n }, 1000, {\r\n 'leading': true,\r\n 'trailing': false\r\n });\r\n this.btndebounced();\r\n setTimeout(() => {\r\n this.btndebounced.cancel();\r\n this.btndebounced = null;\r\n }, 2000)\r\n }\r\n\r\n onCzkChange=(v)=>{\r\n // console.log(\"czk change:\"+new Date().toLocaleTimeString())\r\n const { isNewRetailBCPos } = platform || {};\r\n if (!isNewRetailBCPos) {\r\n this.store.paymode.currentMode.member.setCardNo(v);\r\n }\r\n // if(this.debounced){\r\n // this.debounced.cancel();\r\n // this.debounced=null;\r\n // // console.log(\"debounce canceled\");\r\n // }\r\n // this.debounced=_debounce(()=>{this.loadCzk(v)},2000);\r\n // this.debounced();\r\n }\r\n czkKeyboardOnOk = (e) => {\r\n this.czkInput.input.blur();\r\n Keyboard.close();\r\n this.loadCzk(this.czkInput.input[\"value\"]);\r\n }\r\n czkKeyboardOnClose = (e) => {\r\n this.czkInput && this.czkInput.input.blur();\r\n Keyboard.close();\r\n }\r\n\r\n onDjqChange=(v,isKeyBorad = false)=>{\r\n this.inputdjq.input.value=v;\r\n if(this.debounced){\r\n this.debounced.cancel();\r\n this.debounced=null;\r\n // console.log(\"debounce canceled\");\r\n }\r\n if(!isKeyBorad){\r\n this.debounced=_debounce(()=>{this.addDjq()},2000);\r\n this.debounced();\r\n }\r\n }\r\n djqKeyboardOnOk = (e) => {\r\n this.inputdjq.input && this.inputdjq.input.blur();\r\n Keyboard.close();\r\n this.addDjq();\r\n // this.loadCzk(this.czkInput.input[\"value\"]);\r\n }\r\n djqKeyboardOnClose = (e) => {\r\n this.inputdjq.input && this.inputdjq.input.blur();\r\n Keyboard.close();\r\n }\r\n\r\n checkCharge = () => {\r\n const { PayStyle } = enumController.getEnumOj();\r\n const { paymode } = this.store;\r\n const themode=_find(paymode.thePaymodes, mode=>mode.paymentType===PayStyle.xianjin);\r\n return (paymode.receivable < 0 && themode && themode.value>=Math.abs(paymode.receivable));\r\n }\r\n\r\n checkThepaymode(key){\r\n return _findIndex(this.store.paymode.thePaymodes,{paymentType:key})>-1;\r\n }\r\n\r\n onKeyboardChange(key) {\r\n if (this.currentInput) {\r\n const value = Keyboard.getNewValue(this.currentInput, this.currentInput.value, key, true);\r\n if (!isNaN(value) || value == '-') {\r\n this.currentInput.value = value;\r\n this.store.changeValue(this.state.currentIndex, value, false);\r\n }\r\n }\r\n }\r\n\r\n renderToolbtn(mode,index){\r\n const { PayIcon , PayStyle} = enumController.getEnumOj();\r\n let { isReturn } = this.props;\r\n let { paymode, brefund, boriginReturn } = this.store;\r\n let hasSMZF = _find(paymode.paymodes, (item) => { return item.paymentType === PayStyle.smzf});\r\n //同时存在微信、支付宝(或者收钱吧)、扫码支付三种方式,在非退货模式下,隐藏微信、支付宝。\r\n let hotkeyIndex = index;\r\n if (!isReturn && hasSMZF) {\r\n if (mode.paymentType == PayStyle.wx || mode.paymentType == PayStyle.zfb) {\r\n return null;\r\n } else {\r\n let theArr = _filter(paymode.paymodes, t => { return t.paymentType != PayStyle.wx && t.paymentType != PayStyle.zfb })\r\n hotkeyIndex = _findIndex(theArr, m => { return m.paymentType == mode.paymentType })\r\n }\r\n }\r\n\r\n // const classNames = classnames({ 'paymode': true, 'paymodeSelected': this.checkThepaymode(mode.paymentType), 'paymodeDisabled': this.checkModeDisabled(mode.paymentType, brefund, boriginReturn)});\r\n\r\n const paymodeDisabled = this.checkModeDisabled(mode.paymentType, brefund, boriginReturn)? 'paymodeDisabled':'';\r\n const paymodeSelected = this.checkThepaymode(mode.paymentType)? 'paymodeSelected':'';\r\n return (\r\n <div key={index + \"\"} className={paymodeDisabled+' '+paymodeSelected + ' paymode hotkey_' + this.compoundHotkeysList[hotkeyIndex]} onClick={() => { this.onTabsClick(mode.paymentType) }}>\r\n <div className=\"logo\"><div className=\"icon bg-subsidiary-gray-color4\"><Ticon className=\"primary-color\" type={PayIcon[mode.paymentType] || PayIcon['default']} /></div></div>\r\n <div className=\"text primary-color\">{mode.name.length > 8 ? _truncate(mode.name, { length: 5, omission: '' }) + '...' : mode.name}</div>\r\n <div className=\"hotkey\">{this.isHorizontalPad ? '' : this.compoundHotkeysList[hotkeyIndex] || ''}</div>\r\n </div>\r\n )\r\n }\r\n xianjinChange=(paymethodId,val,receivable)=>{\r\n const inputTarget=this[`inputS${paymethodId}`].input.input;\r\n const inputTarget2=this[`inputS${paymethodId}2`];\r\n let value=val;\r\n if(isNaN(value) && value!=='-'){\r\n value=parseFloat(receivable)+parseFloat(inputTarget2.innerHTML);\r\n }\r\n inputTarget.value=value;\r\n inputTarget2.innerHTML=getFixedNumber(parseFloat(value||0)-parseFloat(receivable));\r\n }\r\n\r\n //移动端:扫描商品\r\n changeScanProduct = () => {\r\n if (this.scanObj) this.scanObj.startScan()\r\n }\r\n onScanResult = (val, modal, el) => {\r\n let _this = this[`${el}`];\r\n if (_this) _this.setStateValue(val, () => {\r\n if (modal) modal.submitHandler()\r\n })\r\n }\r\n onScanCzkResult = (val) => {\r\n let _this = this;\r\n this.onCzkChange(val);\r\n setTimeout(() => { _this.loadCzk(val) }, 0)\r\n }\r\n\r\n //优惠券\r\n onScanDjqResult = (val) => {\r\n let el = this.inputdjq;\r\n if (el && el.input) el.input.value = val;\r\n this.addDjq(val);\r\n }\r\n\r\n //现金支付-存在权限控制\r\n getXianjinPayment = (payType, value) => {\r\n const { PayStyle } = enumController.getEnumOj();\r\n const { isManualIntoAmount } = this.state\r\n return payType === PayStyle.xianjin && isManualIntoAmount === \"1\" && value > 0 ? \"\" : value\r\n }\r\n\r\n getXianjinBalance = (payType, value) => {\r\n const { PayStyle } = enumController.getEnumOj();\r\n //找零金额-存在权限控制\r\n const { isManualIntoAmount } = this.state\r\n return payType === PayStyle.xianjin && isManualIntoAmount === \"1\" && value > 0 ? getFixedNumber(0 - value) : '0.00'\r\n }\r\n\r\n inputConfirm = (paymode, isQuickPay) => {\r\n const that = this\r\n const isStoredValueCard = false\r\n let isManualIntoAmount\r\n // 付款弹窗\r\n return new Promise(function (resolve, reject) {\r\n const { PayStyle , PayIcon2} = enumController.getEnumOj();\r\n const modal = asyncModal({\r\n onPressEnter: () => {\r\n if (paymode.paymentType == PayStyle.xianjin) {\r\n let zl = parseFloat(that[`inputS${paymode.paymethodId}2`].innerHTML);\r\n if (zl < 0) {\r\n Message.error('支付金额不能小于应收金额');\r\n throw \"error\";\r\n } else if (zl > that.props.initData(\"posChangeUpperAmount\")) {\r\n Message.error('找零不能超过最大找零金额:' + getFixedNumber(that.props.initData(\"posChangeUpperAmount\")) + '元');\r\n throw \"error\";\r\n }\r\n }\r\n const v = _trim(that[`inputS${paymode.paymethodId}`]['input']['input'].getAttribute('value'))\r\n if (v !== '') {\r\n modal.destroy()\r\n setTimeout(() => {\r\n if (paymode.paymentType == PayStyle.xianjin) {\r\n that.store.changeValue(paymode.paymethodId, v, false);\r\n } else {\r\n paymode.authCode = v;\r\n }\r\n resolve();\r\n }, 100)\r\n } else {\r\n if (paymode.paymentType == PayStyle.xianjin){\r\n Message.error('请输入付款金额');\r\n } else {\r\n Message.error('请录入或扫描付款码');\r\n }\r\n throw \"error\";\r\n }\r\n },\r\n onPressEsc: () => {\r\n Keyboard.close();\r\n that.store.bquick && that.props.onCancelSettle && that.props.onCancelSettle();\r\n reject(`支付方式: ${paymode.name}失败`)\r\n },\r\n maskClosable: false,\r\n keyboard: false,\r\n closable: false,\r\n backdropStyle: {\r\n 'z-index': '1004'\r\n },\r\n width: 440,\r\n content: (\r\n <div className=\"scanInput\">\r\n <div className={classnames({ \"icon primary-color\": true, [\"color\" + paymode.paymentType]: true })}><Ticon type={PayIcon2[paymode.paymentType]} /></div>\r\n <div className=\"title\">{paymode.name}</div>\r\n <div>\r\n <span className=\"label\">应收金额:</span><span className=\"yfje\">{paymode.value}</span>\r\n </div>\r\n {\r\n (paymode.paymentType == PayStyle.xianjin) &&\r\n <div className='contentzf'>\r\n <span className=\"contentlabel\">{paymode.name}支付:</span>\r\n <span>\r\n <NumKeyboard\r\n className=\"content\"\r\n type='text'\r\n placeholder='请输入付款金额'\r\n disabled={paymode.value < 0}\r\n defaultValue={that.getXianjinPayment(paymode.paymentType, paymode.value)}\r\n onChange={(value) => { that.xianjinChange(paymode.paymethodId, value, paymode.value); }}\r\n ref={input => that[`inputS${paymode.paymethodId}`] = input}\r\n onBlur={(e) => {\r\n const inputTarget = that[`inputS${paymode.paymethodId}`].input.input;\r\n if (that.state.isManualIntoAmount === \"1\" && paymode.paymentType === PayStyle.xianjin && inputTarget.value === \"\") {\r\n return;\r\n }\r\n inputTarget.value = getFixedNumber(inputTarget.value)\r\n }}\r\n />\r\n </span>\r\n </div>\r\n }\r\n {\r\n (paymode.paymentType == PayStyle.xianjin) &&\r\n <div className=\"zlje\">\r\n <span className=\"label\">找零金额:</span>\r\n <span className=\"yfje\" ref={input => that[`inputS${paymode.paymethodId}2`] = input}>{that.getXianjinBalance(paymode.paymentType, paymode.value)}</span>\r\n </div>\r\n }\r\n {\r\n (paymode.paymentType == PayStyle.wx || paymode.paymentType == PayStyle.zfb || paymode.paymentType == PayStyle.smzf || paymode.paymentType == PayStyle.SQBPAY || paymode.paymentType == PayStyle.CSYH) &&\r\n <div className='contentzf'>\r\n <span className=\"contentlabel\">{paymode.name}支付:</span>\r\n <span>\r\n <NumKeyboardScan\r\n className=\"content \"\r\n type='text'\r\n placeholder=\"扫描或输入付款码\"\r\n ref={input => that[`inputS${paymode.paymethodId}`] = input} />\r\n </span>\r\n {\r\n that.isHorizontalPad &&\r\n <span className='contentscan'>\r\n <Ticon type='saomiao1' className='icon' onClick={that.changeScanProduct} />\r\n <Scan ref={scan => that.scanObj = scan} onChange={value => that.onScanResult(value, modal, `inputS${paymode.paymethodId}`)} />\r\n </span>\r\n }\r\n </div>\r\n }\r\n <div className={classnames({ \"buttonRegion\": true, \"buttonRegion2\": paymode.paymentType == PayStyle.xianjin })}>\r\n <div className=\"fr\">\r\n <Button\r\n onClick={() => {\r\n modal.destroy()\r\n that.setState({\r\n settleDisabled: false\r\n })\r\n that.store.bquick && that.props.onCancelSettle && that.props.onCancelSettle();\r\n that.store.delPay(paymode.paymethodId);\r\n reject(`支付方式: ${paymode.name}失败`)\r\n }}>取消</Button>\r\n <Button\r\n type=\"primary\"\r\n onClick={() => {\r\n if (paymode.paymentType == PayStyle.xianjin) {\r\n let zl = parseFloat(that[`inputS${paymode.paymethodId}2`].innerHTML);\r\n if (zl < 0) {\r\n if (that[`inputS${paymode.paymethodId}`].input.input.value === '') {\r\n Message.error('请输入付款金额');\r\n } else {\r\n Message.error('支付金额不能小于应收金额');\r\n }\r\n return;\r\n } else if (zl > that.props.initData(\"posChangeUpperAmount\")) {\r\n Message.error('找零不能超过最大找零金额:' + getFixedNumber(that.props.initData(\"posChangeUpperAmount\")) + '元');\r\n return;\r\n }\r\n }\r\n const v = _trim(that[`inputS${paymode.paymethodId}`]['input']['input'].getAttribute('value'))\r\n\r\n if (v !== '') {\r\n modal.destroy()\r\n setTimeout(() => {\r\n if (paymode.paymentType == PayStyle.xianjin) {\r\n that.store.changeValue(paymode.paymethodId, v, false);\r\n } else {\r\n paymode.authCode = v;\r\n }\r\n resolve();\r\n }, 100)\r\n } else {\r\n if (paymode.paymentType == PayStyle.xianjin){\r\n Message.error('请输入付款金额');\r\n } else {\r\n Message.error('请录入或扫描付款码');\r\n }\r\n }\r\n }}>确定</Button>\r\n </div>\r\n </div>\r\n </div>),\r\n })\r\n // 扫码框自动聚焦\r\n setTimeout(() => {\r\n // console.log(that[`inputS${paymode.paymethodId}`].input, '-------------------')\r\n that[`inputS${paymode.paymethodId}`].input.input.focus()\r\n }, 360)\r\n })\r\n }\r\n\r\n\r\n checkCurrentModeHaveMutex = (type) => {\r\n let { paymode,newStyle } = this.store;\r\n const { PayStyle } = enumController.getEnumOj();\r\n const payTypeList = [PayStyle.SQBPAY,PayStyle.CSYH,PayStyle.smzf];\r\n const payTypeFilterList = payTypeList.filter( filterType => filterType !== type);\r\n // 主要排查当前的支付方式 是否是包含在互斥的支付方式\r\n if(payTypeFilterList.length === payTypeList.length) return false;\r\n const disableUserMode = _find(paymode.thePaymodes,(mode)=>{\r\n const haveUseTypeList = payTypeFilterList.find(filterType =>{\r\n // 单据模式的情况还有要判断互斥的支付方式是否有值 触屏模式直接判断是否选择了某个支付方式\r\n return filterType == mode.paymentType && (newStyle? mode.value != 0 :true)\r\n });\r\n // 如果查找到互斥目标支付方式并且不是当前支付方式 返回true\r\n if(mode.paymentType !== type && haveUseTypeList && haveUseTypeList.length != 0) return true\r\n })\r\n if(disableUserMode) return true\r\n return false\r\n }\r\n\r\n checkModeDisabled=(type,brefund,boriginReturn)=>{\r\n const { PayStyle } = enumController.getEnumOj();\r\n return (((brefund && (type==PayStyle.wx || type==PayStyle.zfb || type==PayStyle.smzf || type==PayStyle.jfdx || type==PayStyle.djq || type==PayStyle.SQBPAY || type==PayStyle.CSYH))\r\n || (boriginReturn && type==PayStyle.hyczk))\r\n && !(boriginReturn && (type==PayStyle.wx || type==PayStyle.zfb))) || this.checkCurrentModeHaveMutex(type) ;\r\n }\r\n\r\n checkSettleDisabled=(paymode,thePaymodes)=>{\r\n const { PayStyle } = enumController.getEnumOj();\r\n console.log(\"settlement.checkSettleDisabled开始执行,参数:\",{paymode,thePaymodes})\r\n if(paymode.amount==0 && paymode.received==0){\r\n console.log(\"settlement.checkSettleDisabled返回结果:\",false)\r\n return false;\r\n }\r\n if(this.store.brefund){\r\n let result=!(paymode.receivable==0 && thePaymodes.length>0);\r\n console.log(\"settlement.checkSettleDisabled返回结果:\",result)\r\n return result;\r\n }\r\n let xj=_find(thePaymodes,(mode)=>{return mode.paymentType==PayStyle.xianjin});\r\n let enabled=paymode.receivable==0 && thePaymodes.length>0;\r\n if(xj && xj.value!=0){\r\n enabled=paymode.receivable<=0 && thePaymodes.length>0 && (Math.abs(paymode.receivable)<xj.value);\r\n }\r\n console.log(\"settlement.checkSettleDisabled返回结果:\",!enabled);\r\n const { settleDisabled } = this.state;\r\n return !enabled || settleDisabled;\r\n }\r\n\r\n changeDecimalBuZero = (number, bitNum) => {\r\n if (bitNum == 0) return number;\r\n var f_x = parseFloat(number);\r\n if (isNaN(f_x)) {\r\n return '';\r\n }\r\n let newBitNum = Math.pow(10,bitNum)\r\n f_x = Math.round(number * newBitNum) / newBitNum;\r\n let s_x = f_x.toString();\r\n let pos_decimal = s_x.indexOf('.');\r\n if (pos_decimal < 0) {\r\n pos_decimal = s_x.length;\r\n s_x += '.';\r\n }\r\n while (s_x.length <= pos_decimal + bitNum) {\r\n s_x += '0';\r\n }\r\n return s_x;\r\n }\r\n // 单据模式下编辑储值卡\r\n editCzkModal = () => {\r\n const { PayStyle } = enumController.getEnumOj();\r\n _find(this.store.paymode.thePaymodes,(mode)=>{\r\n if (mode.paymentType==PayStyle.hyczk) {\r\n this.store.setCurrentMode(mode.paymethodId)\r\n }\r\n })\r\n \r\n this.setState({\r\n czkVisible: true\r\n })\r\n let { currentMode } = this.store.paymode;\r\n setTimeout(() => {\r\n if(!currentMode.member || !currentMode.member.id){\r\n this.czkInput && this.czkInput.input.focus()\r\n }else{\r\n if(this.inputCzkAmount && this.inputCzkAmount.input){\r\n this.inputCzkAmount.input.focus();\r\n this.inputCzkAmount.input.setSelectionRange(0, this.inputCzkAmount.input.value.length);\r\n }\r\n }\r\n }, 350)\r\n }\r\n\r\n paymodesCarouselList = (params,paymodes,carouselStart,CarouseOut) => {\r\n const CarouselTp = CarouseOut || Carousel\r\n const newParams = CarouseOut?{}:params\r\n const mapList = [];\r\n paymodes.forEach((item,index)=>{\r\n // 整除则新增轮播页面\r\n if(index % carouselStart === 0){\r\n mapList[Math.floor(index/carouselStart)] = [];\r\n }\r\n mapList[Math.floor(index/carouselStart)].push(item);\r\n })\r\n return <CarouselTp vertical dots='true' touchMove='true' {...newParams}>\r\n {_map(mapList, (modeList, index) => {\r\n return <div>\r\n {\r\n _map(modeList, (mode, modeIndex) => {\r\n return this.renderToolbtn(mode, index*carouselStart+modeIndex)\r\n })\r\n }\r\n </div>\r\n })}\r\n </CarouselTp>\r\n }\r\n\r\n render() {\r\n const { PayIcon , PayIcon2 , PayStyle , Differentiate} = enumController.getEnumOj();\r\n const { btnDissabled } = this.state;\r\n const { isNewRetailBCPos } = platform || {};\r\n let { paymode, brefund,newStyle } = this.store;\r\n let { type, amount, totalVariety, totalQuantity, isReturn, quantityDetail,memberDisabled, noIsMinAmount } = this.props\r\n // 原单退货\r\n let boriginReturn=this.context && this.context.viewModel && this.context.viewModel.data && JSON.getCellValue(this.context.viewModel.data, \"IsOriginalReturn\");\r\n let totalTaxAmount = this.context && this.context.viewModel && this.context.viewModel.data && this.context.viewModel.data.TotalTaxAmount;\r\n // 单据模式\r\n let thePaymodes=newStyle?_filter(paymode.thePaymodes,(m)=>{return !(this.checkModeDisabled(m.paymentType,brefund,boriginReturn)&& parseFloat(m.value)==0);}):paymode.thePaymodes;\r\n let { paymodes, settle, currentMode } =paymode;\r\n // 积分兑换 总积分\r\n let ExchangeIntegral = this.context && this.context.viewModel && this.context.viewModel.data.ExchangeIntegral;\r\n\r\n let _hasSMZF = _find(paymodes, (item) => { return item.paymentType === PayStyle.smzf });\r\n\r\n //同时存在微信、支付宝、扫码支付三种方式,在非退货模式下,隐藏微信、支付宝。\r\n if (!isReturn && _hasSMZF) {\r\n paymodes = paymodes.filter((mode)=>{\r\n if (mode.paymentType == PayStyle.wx || mode.paymentType == PayStyle.zfb) return null;\r\n return true;\r\n })\r\n }\r\n\r\n\r\n const quickPay =boriginReturn?[]: _filter(paymodes, paymode => paymode.isQuick);\r\n const productsIsEmpty = (type!=1 && this.context.viewModel.data.RetailDetails.length == 0) || (type==1 && parseFloat(amount || 0) <= 0) || memberDisabled || noIsMinAmount;\r\n const moreToolbtns=[];\r\n const params = {\r\n pagination: {\r\n el: '.swiper-pagination',\r\n },\r\n spaceBetween: 30\r\n }\r\n const carouselStart = 10;\r\n const carouselStart2 = 8;\r\n const currentIndex = this.state.currentIndex;\r\n const hasmember = currentMode && currentMode.member && currentMode.member.id;\r\n let quantity1 = 0, quantity2 = 0, quantity3 = 0, quantity4 = 0;\r\n let sumQuantity = 0;//数量总和的值,包括称重的。\r\n let { buyQuantity = 0, returnQuantity = 0 } = quantityDetail || {};\r\n let quantityPrecision = PosInitData(\"QuantityPrecision\");\r\n quantityPrecision = quantityPrecision ? parseInt(quantityPrecision) : '';\r\n if (this.props.showAmount) {\r\n quantity1 = totalVariety || this.context.viewModel.data.RetailDetails.length;\r\n quantity2 = this.changeDecimalBuZero(totalQuantity, quantityPrecision);\r\n quantity3 = this.changeDecimalBuZero(buyQuantity, quantityPrecision);\r\n quantity4 = this.changeDecimalBuZero(returnQuantity, quantityPrecision);\r\n let sumRetailDetails = this.context && this.context.viewModel && this.context.viewModel.data.RetailDetails;\r\n if (sumRetailDetails && sumRetailDetails.length > 0) {\r\n sumRetailDetails.forEach(v => {\r\n sumQuantity += Math.abs(v.Quantity);\r\n })\r\n }\r\n sumQuantity = this.changeDecimalBuZero(sumQuantity, quantityPrecision);\r\n }\r\n return (\r\n <div className=\"billingSettlement\" ref={r => this.billingSettlementDocumnet = r}>\r\n {\r\n this.props.MemberPoints ?\r\n (\r\n <div className=\"receivable2\">\r\n <div className=\"text\">本次应收:</div>\r\n <div className={classnames({ \"amount\": true, \"smallfont\": Math.abs(totalTaxAmount) > 100000 })}>{getFixedNumber(totalTaxAmount)}</div>\r\n <div className='total'>{`数量合计${quantity2}`}</div>\r\n <div className='total'>{`积分合计${ExchangeIntegral || 0}`}</div>\r\n </div>\r\n )\r\n :\r\n (\r\n this.props.showAmount &&\r\n <div className=\"receivable\">\r\n <div className='summary'>\r\n <div className=\"text\">本次应收:</div>\r\n <div className={classnames({ \"amount\": true, \"smallfont\": Math.abs(totalTaxAmount) > 100000 })}>{getFixedNumber(totalTaxAmount)}</div>\r\n </div>\r\n {\r\n isReturn === true ?\r\n <div className=\"remark1\">\r\n <span>{`共${quantity1}种`}</span>\r\n <span className='span'>销</span><span>{quantity3}</span><span>件</span>\r\n <span className='span'>退</span><span>{quantity4}</span><span>件</span>\r\n <span className='span'>合计</span><span>{sumQuantity}</span>\r\n </div>\r\n :\r\n <div className=\"remark2\">\r\n <span>{`共${quantity1}种`}</span>\r\n <span className=\"span\">{quantity2}</span><span>件</span>\r\n <span className=\"span\">合计</span><span>{sumQuantity}</span>\r\n </div>\r\n }\r\n </div>\r\n )\r\n }\r\n <div className=\"btns\">\r\n {\r\n !this.isHorizontalPad && !this.props.MemberPoints &&\r\n _map(quickPay, (p, i) => {\r\n let iconclass = PayIcon2[p.paymentType] ? `color${p.paymentType}` : \"primary-color\";\r\n return (\r\n <Button className={classnames({ \"quick\": true, \"quick2\": type==1 })} key={`paymentType_${p.paymentType}`} onClick={() => { this.btnDebounced(p.paymentType, true) }}\r\n disabled={productsIsEmpty || (type!=1 && this.checkModeDisabled(p.paymentType, (this.context.viewModel.data.TotalTaxAmount || 0 - this.context.viewModel.data.OnlinePaymentAmount || 0) < 0, boriginReturn))}>\r\n <div className={classnames({ [iconclass]: true, \"icon\": true })}><Ticon type={PayIcon2[p.paymentType] || PayIcon2['default']} /></div>\r\n <div className=\"text\">{p.name.length > 8 ? _truncate(p.name, { length: 7, omission: '' }) + '...' : p.name}</div>\r\n </Button>)\r\n })\r\n }\r\n <Button key=\"settle\" className={classnames({ \"settle\": true, \"settle2\": type == 1,\"settleStorage\" :true ,'primary-btn': true })} onClick={() => { this.btnDebounced() }} disabled={productsIsEmpty}>{this.props.isMemberPoints ? '立即兑换' : this.props.isMemberPointsReturn ? '退货': settle.name}</Button>\r\n </div>\r\n {type!=1 && !newStyle && <Drawer\r\n title=\"复合结算\"\r\n width=\"600px\"\r\n placement=\"right\"\r\n maskClosable={false}\r\n closable={false}\r\n onClose={this.handleCancel}\r\n visible={this.state.visible}\r\n destroyOnClose={true}\r\n className={`settlement-wraper`}\r\n >\r\n <div className= {`settlement ${hotKey.hotKeyBindClass('5')}`}>\r\n <div className={classnames({ \"toolbar bg-subsidiary-gray-color4\": true, \"carousel\": paymodes.length > carouselStart })}>\r\n {paymodes.length <= carouselStart && <div>{_map(paymodes, (mode, index) => {\r\n return this.renderToolbtn(mode, index)\r\n })}</div>}\r\n {\r\n paymodes.length > carouselStart && this.paymodesCarouselList(params,paymodes,carouselStart)\r\n }\r\n </div>\r\n <div className=\"paydetail\" style={{maxHeight:(document.body.clientHeight-(paymodes.length>6?275:200))+'px'}}>\r\n <div className=\"left\">\r\n {\r\n thePaymodes.length==0&&<div className=\"emptydata detailempty\">请添加结算方式</div>\r\n }\r\n {\r\n // _map(_sortBy(thePaymodes, pay => pay['order'] || 0), (mode) => {\r\n _map(thePaymodes, (mode) => {\r\n const index=mode.paymethodId\r\n return (<div key={index+''} className=\"modeItem\">\r\n <div className={classnames({\"main\":true,\"focusbottom\":currentIndex==index})}>\r\n <div className=\"lefticon primary-color\" onClick={() => {\r\n this.onDelPay(index,boriginReturn && mode.boriginReturn,mode.paymentType);\r\n }}><Ticon type=\"jianqu\" className=\"minus\" /></div>\r\n <div className={classnames({\"name\":true})}>{mode.name}</div>\r\n <div className={classnames({\"content\":true})}>\r\n {\r\n (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.jfdx || mode.paymentType == PayStyle.djq) ?\r\n <input id={`inputS${index}`}\r\n className={hotKey.hotKeyNotFilter()}\r\n onClick={() => { this.editModal(index, mode.paymentType, boriginReturn) }} value={getFixedNumber(mode.value)} />\r\n :\r\n <input id={`inputS${index}`}\r\n className={hotKey.hotKeyNotFilter()}\r\n value={mode.exchangeRate != 1 ? mode.value2 : mode.value}\r\n onClick={e => this.onHotKeyClick2(index, mode, paymode, e)}\r\n onBlur={e => this.onBlur(index, e)}\r\n onFocus={e => this.onFocusHack(index, mode, paymode, e)}\r\n onChange={e => this.handleChange(index, e)}\r\n />\r\n }\r\n </div>\r\n {/* <div className=\"righticon\" style={{ display:mode.paymentType==PayStyle.hyczk?'inline-block':'none'}}\r\n onClick={() => {\r\n this.appendCzkmode(boriginReturn, 'noPlaySetPwd');\r\n }}><Ticon type=\"zengjia\" className=\"plus\" /></div> */}\r\n </div>\r\n {\r\n mode.paymentType==PayStyle.djq?\r\n <div className=\"append\" style={{ display:(mode.paymentType==PayStyle.hyczk || mode.paymentType==PayStyle.djq)?'block':'none'}}>\r\n <span className=\"balance\">溢收金额:</span>\r\n <span>{mode.overchargesAmount}</span>\r\n </div>:\r\n <div className=\"append\" style={{ display:(mode.paymentType==PayStyle.hyczk || mode.paymentType==PayStyle.djq)?'block':'none'}}>\r\n <span className=\"fl\">卡号:</span>\r\n <span className=\"fl\">{isNewRetailBCPos ? mode.member && mode.member.StorageCardNo : mode.member && mode.member.cardNo}</span>\r\n <br />\r\n <span className=\"balance fl\">余额:</span>\r\n <span className=\"fl\">{ getFixedNumber(mode.balance)}</span>\r\n </div>\r\n }\r\n </div>)\r\n })\r\n }\r\n </div>\r\n <div className=\"right\">\r\n <div className=\"righttop\">\r\n {paymode.onlineamount>0 && <div className=\"receivable\">\r\n <span>线上已收</span>\r\n <span>{paymode.onlineamount}</span>\r\n </div>}\r\n <div className=\"receivable\">\r\n <span>应收金额</span>\r\n <span>{paymode.amount}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>剩余应收</span>\r\n <span>{paymode.receivable}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>实收金额</span>\r\n <span className=\"received\">{paymode.received}</span>\r\n </div>\r\n <div className=\"receivable\" style={{display:this.checkCharge()?'block':'none'}}>\r\n <span>找零金额</span>\r\n <span className=\"received\">{getFixedNumber(Math.abs(paymode.receivable))}</span>\r\n </div>\r\n </div>\r\n <div className={this.isHorizontalPad ? 'keyboard_ios' : 'keyboard'}>\r\n {\r\n !this.isHorizontalPad &&\r\n <Keyboard type=\"number\" onChange={this.onKeyboardChange.bind(this)}></Keyboard>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"payfooter\">\r\n <span className=\"hotKeyEnter\" onClick={this.onHotKeyEnter}></span>\r\n <span><Button className=\"cancel\" onClick={this.handleCancel}>取消</Button></span>\r\n <span><Button type=\"primary\" className={this.isHorizontalPad ? \"settle1\" : \"settle\"} onClick={this.handleSettle}\r\n disabled={this.checkSettleDisabled(paymode, thePaymodes)}>结算</Button></span>\r\n </div>\r\n </div>\r\n </Drawer>}\r\n {type!=1 && newStyle && <Drawer\r\n title=\"复合结算\"\r\n width=\"600px\"\r\n placement=\"right\"\r\n maskClosable={false}\r\n closable={false}\r\n onClose={this.handleCancel}\r\n visible={this.state.visible}\r\n destroyOnClose={true}\r\n className={`settlement-wraper`}\r\n >\r\n <div className= {`settlement ${hotKey.hotKeyBindClass('5')}`}>\r\n <div className=\"paydetail newstyle\">\r\n <div className=\"top\">\r\n <div className=\"righttop\">\r\n {paymode.onlineamount>0 && <div className=\"receivable\">\r\n <span>线上已收</span>\r\n <span>{paymode.onlineamount}</span>\r\n </div>}\r\n <div className=\"receivable\">\r\n <span>应收金额</span>\r\n <span>{paymode.amount}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>剩余应收</span>\r\n <span>{paymode.receivable}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>实收金额</span>\r\n <span className=\"received\">{paymode.received}</span>\r\n </div>\r\n <div className=\"receivable\" style={{display:this.checkCharge()?'block':'none'}}>\r\n <span>找零金额</span>\r\n <span className=\"received\">{getFixedNumber(Math.abs(paymode.receivable))}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"bottom\">\r\n {\r\n thePaymodes.length==0&&<div className=\"emptydata detailempty\">请添加结算方式</div>\r\n }\r\n {\r\n _map(thePaymodes, (mode, mindex) => {\r\n let { isReturn } = this.props;\r\n let hasSMZF = _find(thePaymodes, m => { return m.paymentType === PayStyle.smzf});\r\n //同时存在微信、支付宝(或者收钱吧)、扫码支付三种方式,在非退货模式下,隐藏微信、支付宝。\r\n let hotkeyIndex = index;\r\n if (!isReturn && hasSMZF) {\r\n if (mode.paymentType == PayStyle.wx || mode.paymentType == PayStyle.zfb) {\r\n return null;\r\n } else {\r\n let theArr = _filter(paymode.paymodes, t => { return t.paymentType != PayStyle.wx && t.paymentType != PayStyle.zfb })\r\n hotkeyIndex = _findIndex(theArr, m => { return m.paymentType == mode.paymentType })\r\n }\r\n }\r\n const index = mode.paymethodId;\r\n return (mode.paymentType == PayStyle.hyczk && _findIndex(thePaymodes, (m) => { return m.paymentType == PayStyle.hyczk; }) != mindex ? <div></div> :\r\n <div key={index + ''} className=\"modeItem\">\r\n <div className={classnames({\"main\":true,\"focusbottom\":currentIndex==index})}>\r\n {/* <div className=\"lefticon\"></div> */}\r\n <div className={classnames({ \"name\": true})}>\r\n <div className=\"icon\"><Ticon type={PayIcon[mode.paymentType] || PayIcon['default']} /></div>\r\n <div className=\"text\">{mode.name}</div>\r\n <div className=\"hotkey\">{this.isHorizontalPad ? '' : this.compoundHotkeysList[hotkeyIndex] || ''}</div>\r\n </div>\r\n <div className={classnames({ \"content\": true})}>\r\n {\r\n (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.jfdx || mode.paymentType == PayStyle.djq)\r\n ?\r\n <input id={`inputS${index}`}\r\n \r\n className={hotKey.hotKeyNotFilter(\"paymode hotkey_\" + this.compoundHotkeysList[hotkeyIndex])}\r\n disabled={this.checkModeDisabled(mode.paymentType, brefund, boriginReturn)}\r\n onClick={() => {\r\n let czkinput = document.getElementById('inputS' + index);\r\n mode.paymentType == PayStyle.hyczk && czkinput && czkinput.value !== '0.00' ? this.editCzkModal() : \r\n this.onHotKeyClick1(mode, index, boriginReturn);\r\n }}\r\n value={mode.paymentType == PayStyle.hyczk ? getFixedNumber(\r\n _reduce(_filter(thePaymodes, (tm) => { return tm.paymentType == PayStyle.hyczk }), function (sum, m) {\r\n return Math.Add(sum, m.value);\r\n }, 0)\r\n ) : getFixedNumber(mode.value)} />\r\n :\r\n <input id={`inputS${index}`}\r\n className={hotKey.hotKeyNotFilter(\"paymode hotkey_\" + this.compoundHotkeysList[hotkeyIndex])}\r\n disabled={this.checkModeDisabled(mode.paymentType, brefund, boriginReturn) || this.checkScanDisabled(mode.paymentType)}\r\n value={mode.exchangeRate != 1 ? mode.value2 : mode.value}\r\n onClick={e => this.onHotKeyClick2(index, mode, paymode, e)}\r\n onBlur={e => this.onBlur(index, e)}\r\n onFocus={e => this.onFocusHack(index, mode, paymode, e)}\r\n onChange={e => this.handleChange(index, e)}\r\n />\r\n }\r\n </div>\r\n </div>\r\n {mode.paymentType == PayStyle.djq && <div className=\"append\" >\r\n <span className=\"balance\">溢收金额:</span>\r\n <span>{mode.overchargesAmount}</span>\r\n </div>}\r\n {_map(_filter(thePaymodes, (tm) => { return mode.paymentType == PayStyle.hyczk && parseFloat(tm.value || 0) != 0 && tm.paymentType == PayStyle.hyczk }), (m) => {\r\n return <div className=\"append\">\r\n <span >卡号:</span>\r\n <span >{isNewRetailBCPos ? m.member && m.member.StorageCardNo : m.member && m.member.cardNo}</span>\r\n <span className=\"fr\">{getFixedNumber(m.value)}</span>\r\n <span className=\"balance fr\">支付金额:</span>\r\n </div>\r\n })}\r\n </div>)\r\n })\r\n }\r\n </div>\r\n </div>\r\n <div className=\"payfooter\">\r\n <span className=\"hotKeyEnter\" onClick={this.onHotKeyEnter}></span>\r\n <span><Button className=\"cancel\" onClick={this.handleCancel}>取消</Button></span>\r\n <span><Button type=\"primary\" className={this.isHorizontalPad ? \"settle1\" : \"settle\"} onClick={this.handleSettle}\r\n disabled={this.checkSettleDisabled(paymode, thePaymodes)}>结算</Button></span>\r\n </div>\r\n </div>\r\n </Drawer>}\r\n {\r\n type==1 && !newStyle &&\r\n <Modal\r\n wrapClassName={`settlement-wraper2`}\r\n width=\"600px\"\r\n visible={this.state.visible}\r\n maskClosable={false}\r\n title={\"复合结算\"}\r\n footer={null}\r\n maskStyle={{'z-index': '1004'}}\r\n onCancel={this.handleCancel}\r\n destroyOnClose={true}\r\n >\r\n <div className= {`settlement ${hotKey.hotKeyBindClass('5')}`}>\r\n <div className='settlementTop'>\r\n <div className={classnames({ \"toolbar\": true, \"toolbar2\": type==1, \"carousel\": paymodes.length > carouselStart2 })}>\r\n {\r\n paymodes.length <= carouselStart2 &&\r\n <div>\r\n {\r\n _map(paymodes, (mode, index) => {\r\n return this.renderToolbtn(mode, index)\r\n })\r\n }\r\n </div>\r\n }\r\n {\r\n paymodes.length > carouselStart2 && this.paymodesCarouselList(params,paymodes,carouselStart2)\r\n }\r\n </div>\r\n <div className=\"rightheader\">\r\n {\r\n paymode.onlineamount > 0 && <div className=\"receivable\">\r\n <span>线上已收</span>\r\n <span>{paymode.onlineamount}</span>\r\n </div>\r\n }\r\n <div className=\"receivable\">\r\n <span>应收金额</span>\r\n <span>{paymode.amount}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>剩余应收</span>\r\n <span>{paymode.receivable}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>实收金额</span>\r\n <span className=\"received\">{paymode.received}</span>\r\n </div>\r\n <div className=\"receivable\" style={{ display: this.checkCharge() ? 'block' : 'none' }}>\r\n <span>找零金额</span>\r\n <span className=\"received\">{getFixedNumber(Math.abs(paymode.receivable))}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"paydetail\">\r\n <div className=\"left\">\r\n {\r\n thePaymodes.length == 0 && <div className=\"emptydata detailempty2\">请添加结算方式</div>\r\n }\r\n {\r\n // _map(_sortBy(thePaymodes, pay => pay['order'] || 0), (mode) => {\r\n _map(thePaymodes, (mode) => {\r\n const index = mode.paymethodId\r\n return (<div key={index + ''} className=\"modeItem\">\r\n <div className={`main ${currentIndex == index && 'settlement-pay-item-border'}`}>\r\n <div className=\"lefticon\" onClick={() => {\r\n this.onDelPay(index);\r\n }}><Ticon type=\"jianqu\" className=\"minus\" /></div>\r\n <div className={classnames({ \"name\": true})}>{mode.name}</div>\r\n <div className={classnames({ \"content\": true})}>\r\n {\r\n (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.jfdx || mode.paymentType == PayStyle.djq) ?\r\n <input id={`inputS${index}`}\r\n onClick={() => { this.editModal(index, mode.paymentType) }} value={getFixedNumber(mode.value)} />\r\n : <input id={`inputS${index}`}\r\n value={mode.exchangeRate != 1 ? mode.value2 : mode.value}\r\n onBlur={e => this.onBlur(index, e)}\r\n onChange={e => this.handleChange(index, e)}\r\n onFocus={e => this.onFocusHack(index, mode, paymode, e)}\r\n />\r\n }\r\n </div>\r\n {/* <div className=\"righticon\" style={{ display: mode.paymentType == PayStyle.hyczk ? 'inline-block' : 'none' }}\r\n onClick={() => {\r\n this.appendCzkmode('', 'noPlaySetPwd');\r\n }}><Ticon type=\"zengjia\" className=\"plus\" /></div> */}\r\n </div>\r\n {\r\n mode.paymentType == PayStyle.djq ?\r\n <div className=\"append\" style={{ display: (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.djq) ? 'block' : 'none' }}>\r\n <span className=\"balance\">溢收金额:</span>\r\n <span>{mode.overchargesAmount}</span>\r\n </div> :\r\n <div className=\"append\" style={{ display: (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.djq) ? 'block' : 'none' }}>\r\n <span className=\"fl\">卡号:</span>\r\n <span className=\"fl\">{isNewRetailBCPos ? mode.member && mode.member.StorageCardNo : mode.member && mode.member.cardNo}</span>\r\n <br />\r\n <span className=\"balance fl\">余额:</span>\r\n <span className=\"fl\">{getFixedNumber(mode.balance)}</span>\r\n </div>\r\n }\r\n </div>)\r\n })\r\n }\r\n </div>\r\n <div className=\"right\">\r\n <div className={this.isHorizontalPad ? 'keyboard_ios' : 'keyboard'}>\r\n {\r\n !this.isHorizontalPad &&\r\n <Keyboard type=\"number\" onChange={this.onKeyboardChange.bind(this)}></Keyboard>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"payfooter2\">\r\n <span className=\"hotKeyEnter\" onClick={this.onHotKeyEnter}></span>\r\n <span><Button className=\"cancel\" onClick={this.handleCancel}>取消</Button></span>\r\n <span><Button type=\"primary\" className=\"settle\" onClick={this.handleSettle}\r\n disabled={this.checkSettleDisabled(paymode, thePaymodes)}>结算</Button></span>\r\n </div>\r\n </div>\r\n </Modal>\r\n }\r\n {\r\n type==1 && newStyle &&\r\n <Modal\r\n wrapClassName={`settlement-wraper2`}\r\n width=\"600px\"\r\n visible={this.state.visible}\r\n maskClosable={false}\r\n title={\"复合结算\"}\r\n footer={null}\r\n backdropStyle={{'z-index': '1004'}}\r\n onCancel={this.handleCancel}\r\n destroyOnClose={true}\r\n >\r\n <div className= {`settlement ${hotKey.hotKeyBindClass('5')}`}>\r\n <div className=\"paydetail newstyle newstyle2\">\r\n <div className=\"top\">\r\n <div className=\"righttop\">\r\n {paymode.onlineamount>0 && <div className=\"receivable\">\r\n <span>线上已收</span>\r\n <span>{paymode.onlineamount}</span>\r\n </div>}\r\n <div className=\"receivable\">\r\n <span>应收金额</span>\r\n <span>{paymode.amount}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>剩余应收</span>\r\n <span>{paymode.receivable}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>实收金额</span>\r\n <span className=\"received\">{paymode.received}</span>\r\n </div>\r\n <div className=\"receivable\" style={{display:this.checkCharge()?'block':'none'}}>\r\n <span>找零金额</span>\r\n <span className=\"received\">{getFixedNumber(Math.abs(paymode.receivable))}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"bottom\">\r\n {\r\n thePaymodes.length==0&&<div className=\"emptydata detailempty\">请添加结算方式</div>\r\n }\r\n {\r\n // _map(_sortBy(thePaymodes, pay => pay['order'] || 0), (mode) => {\r\n _map(thePaymodes, (mode,mindex) => {\r\n let { isReturn } = this.props;\r\n let hasSMZF = _find(thePaymodes, m => { return m.paymentType === PayStyle.smzf });\r\n let hotkeyIndex = mindex;\r\n //同时存在微信、支付宝、扫码支付三种方式,在非退货模式下,隐藏微信、支付宝。\r\n if (!isReturn && hasSMZF) {\r\n if (mode.paymentType == PayStyle.wx || mode.paymentType == PayStyle.zfb) {\r\n return null;\r\n } else {\r\n let theArr = _filter(thePaymodes, t => { return t.paymentType != PayStyle.wx && t.paymentType != PayStyle.zfb })\r\n hotkeyIndex = _findIndex(theArr, m => { return m.paymentType == mode.paymentType })\r\n }\r\n }\r\n const index=mode.paymethodId\r\n return (mode.paymentType==PayStyle.hyczk && _findIndex(thePaymodes,(m)=>{return m.paymentType==PayStyle.hyczk;})!=mindex ? <div></div> :\r\n <div key={index+''} className=\"modeItem\">\r\n <div className={classnames({\"main\":true,\"focusbottom\":currentIndex==index})}>\r\n {/* {mode.paymentType==PayStyle.hyczk && (_filter(thePaymodes,(m)=>{return m.paymentType==PayStyle.hyczk;})||[]).length>1? <div className=\"lefticon\" onClick={() => {\r\n this.onDelPay(index,boriginReturn && mode.boriginReturn,mode.paymentType);\r\n }}><Ticon type=\"jianqu\" className=\"minus\" /></div>:<div className=\"lefticon\"></div>} */}\r\n <div className=\"lefticon\"></div>\r\n <div className={classnames({\"name\":true})}>\r\n <div className=\"icon\"><Ticon type={PayIcon[mode.paymentType]||PayIcon['default']}/></div>\r\n <div className=\"text\">{mode.name}</div>\r\n <div className=\"hotkey\">{this.isHorizontalPad? '' : this.compoundHotkeysList[mindex] || \"\"}</div>\r\n </div>\r\n <div className={classnames({\"content\":true})}>\r\n {\r\n (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.jfdx || mode.paymentType == PayStyle.djq) ?\r\n <input id={`inputS${index}`}\r\n // className={classnames({'paymode':mode.paymentType == PayStyle.hyczk?(_findIndex(thePaymodes,(m)=>{return m.paymentType==PayStyle.hyczk;})==mindex?true:false):true})}\r\n className={hotKey.hotKeyNotFilter(\"paymode hotkey_\" + this.compoundHotkeysList[hotkeyIndex])}\r\n // className=\"paymode\"\r\n disabled={this.checkModeDisabled(mode.paymentType,brefund,boriginReturn)}\r\n onClick={() => {\r\n this.onHotKeyClick1(mode,index,boriginReturn);\r\n }}\r\n value={mode.paymentType==PayStyle.hyczk?getFixedNumber(\r\n _reduce(_filter(thePaymodes,(tm)=>{return tm.paymentType==PayStyle.hyczk}), function(sum, m) {\r\n return Math.Add(sum,m.value);\r\n }, 0)\r\n ):getFixedNumber(mode.value)} />\r\n :\r\n <input id={`inputS${index}`}\r\n className={hotKey.hotKeyNotFilter(\"paymode hotkey_\" + this.compoundHotkeysList[hotkeyIndex])}\r\n // className=\"paymode\"\r\n disabled={this.checkModeDisabled(mode.paymentType,brefund,boriginReturn) || this.checkScanDisabled(mode.paymentType)}\r\n value={mode.exchangeRate != 1 ? mode.value2 : mode.value}\r\n onClick={e => this.onHotKeyClick2(index, mode, paymode, e)}\r\n onBlur={e => this.onBlur(index, e)}\r\n onFocus={e => this.onFocusHack(index, mode, paymode, e)}\r\n onChange={e => this.handleChange(index, e)}\r\n />\r\n }\r\n </div>\r\n {/* <div className=\"righticon\" style={{ display:mode.paymentType==PayStyle.hyczk?'inline-block':'none'}}\r\n onClick={() => {\r\n this.appendCzkmode(boriginReturn);\r\n }}><Ticon type=\"zengjia\" className=\"plus\" /></div> */}\r\n </div>\r\n {mode.paymentType==PayStyle.djq && <div className=\"append\" >\r\n <span className=\"balance\">溢收金额:</span>\r\n <span>{mode.overchargesAmount}</span>\r\n </div>}\r\n {_map(_filter(thePaymodes,(tm)=>{return mode.paymentType==PayStyle.hyczk && parseFloat(tm.value||0)!=0 && tm.paymentType==PayStyle.hyczk}),(m)=>{\r\n return <div className=\"append\">\r\n <span >卡号:</span>\r\n <span >{m.member && m.member.cardNo}</span>\r\n <span className=\"fr\">{ getFixedNumber(m.value)}</span>\r\n <span className=\"balance fr\">支付金额:</span>\r\n </div>\r\n })}\r\n </div>)\r\n })\r\n }\r\n </div>\r\n </div>\r\n <div className=\"payfooter2\">\r\n <span className=\"hotKeyEnter\" onClick={this.onHotKeyEnter}></span>\r\n <span><Button className=\"cancel\" onClick={this.handleCancel}>取消</Button></span>\r\n <span><Button type=\"primary\" className=\"settle\" onClick={this.handleSettle}\r\n disabled={this.checkSettleDisabled(paymode, thePaymodes)}>结算</Button></span>\r\n </div>\r\n </div>\r\n </Modal>\r\n }\r\n <Modal\r\n wrapClassName={`czk ${this.isHorizontalPad ? 'extraHeight' : ''}`}\r\n width=\"400px\"\r\n visible={this.state.czkVisible}\r\n maskClosable={false}\r\n destroyOnClose={true}\r\n title={\"余额结算\"}\r\n onCancel={this.handleCzkCancel}\r\n keyboard={false}\r\n centered={ !this.isHorizontalPad ? true : false}\r\n footer={<div className=\"action\">\r\n <Button onClick={this.handleCzkCancel}>取消</Button>\r\n <Button type=\"primary\" disabled={currentMode && currentMode.errinfo!=''} onClick={this.handleCzkOk}>确定</Button>\r\n </div>}\r\n >\r\n <div>\r\n <div className=\"info\">\r\n {hasmember && <div className={classnames({\"type\":true,'colwidth3':hasmember})}>\r\n <div className=\"value valuetext\">{(currentMode && currentMode.member.type) || '普通'}</div>\r\n <div className=\"name\">类型</div>\r\n </div>}\r\n <div className=\"gap\">\r\n <div className=\"gap1\"></div>\r\n <div className=\"gap2\"></div>\r\n <div className=\"gap1\"></div>\r\n </div>\r\n <div className={classnames({\"balance\":true,'colwidth2':!hasmember,'colwidth3':hasmember})}>\r\n <div className=\"value\">{currentMode && getFixedNumber(currentMode.member.balance)}</div>\r\n <div className=\"name\">可用余额</div>\r\n </div>\r\n <div className=\"gap\">\r\n <div className=\"gap1\"></div>\r\n <div className=\"gap2\"></div>\r\n <div className=\"gap1\"></div>\r\n </div>\r\n <div className={classnames({\"available\":true,'colwidth2':!hasmember,'colwidth3':hasmember})}>\r\n <div className=\"value\">{currentMode && getFixedNumber(Math.max(0,Math.min(currentMode.maxamount,currentMode.member.balance)))}</div>\r\n <div className=\"name\">本单可用</div>\r\n </div>\r\n </div>\r\n <div className=\"no\">\r\n <span>余额卡号:</span>\r\n <span>\r\n {/* <input value={currentMode && currentMode.member.cardNo} ref={input => this['inputczk'] =input } onKeyDown={e=>{if(e.keyCode==13){this.loadCzk(e.target.value);}}}></input> */}\r\n <Input\r\n type='text'\r\n placeholder=\"请扫描或输入余额卡\"\r\n // disabled={currentMode && !currentMode.member.StorageCardNo && isReturn ? true: false}\r\n disabled\r\n className={`input ${(this.hasElectron === true && this.iCCardServer === 1 || this.isHorizontalPad === true) ? 'temp' : ''}`}\r\n onChange={(e) => this.onCzkChange(e.target.value)}\r\n value={isNewRetailBCPos ? currentMode && currentMode.member.StorageCardNo : currentMode && currentMode.member.cardNo}\r\n ref={input => this.czkInput =input}\r\n onKeyDown={\r\n (e)=>{if(e.keyCode==13){this.loadCzk(e.target.value);}}\r\n }\r\n onFocus={(e)=>{\r\n this.inputTarget = this.czkInput.input;\r\n Keyboard.open((v)=>{\r\n const value = Keyboard.getNewValue(this.inputTarget, this.inputTarget.value, v);\r\n this.onCzkChange(value);\r\n }, this.czkKeyboardOnOk, this.czkKeyboardOnClose)()\r\n }\r\n }\r\n onBlur={(e)=>{\r\n Keyboard.close();\r\n }}\r\n />\r\n </span>\r\n {\r\n this.hasElectron === true && this.iCCardServer === 1 &&\r\n <Ticon className='icon' onClick={this.handleReadICard} type=\"ICka\" />\r\n }\r\n {\r\n this.isHorizontalPad &&\r\n <Ticon type='saomiao1' className='icon' onClick={this.changeScanProduct} />\r\n }\r\n {\r\n /* 扫描组件 */\r\n this.isHorizontalPad &&\r\n <Scan ref={scan => this.scanObj = scan} onChange={this.onScanCzkResult} />\r\n }\r\n </div>\r\n <div className=\"receivable\">\r\n <span>剩余应收:</span>\r\n <span>{paymode.receivable}</span>\r\n </div>\r\n {/* <div className=\"receivable\">\r\n <span>限收金额:</span>\r\n <span>{currentMode && getFixedNumber(currentMode.maxamount)}</span>\r\n </div> */}\r\n <div className=\"received\">\r\n <span>实收金额:</span>\r\n <span>\r\n <Input\r\n type='text'\r\n className={hotKey.hotKeyNotFilter('input')}\r\n onChange={(event)=>{this.setCurrentModeValue(event.target.value,Math.min(currentMode.maxamount,currentMode.member.balance))}}\r\n defaultValue={currentMode && getFixedNumber(brefund?currentMode.value:Math.min(currentMode.value,currentMode.maxamount,currentMode.member.balance))}\r\n ref={ref => this[\"inputCzkAmount\"] = ref}\r\n onFocus={(e)=>{\r\n this.inputkey=\"inputCzkAmount\";\r\n Keyboard.open((v)=>{\r\n const value = Keyboard.getNewValue(this[this.inputkey].input, this[this.inputkey].input.value, v);\r\n this.setCurrentModeValue(value,Math.min(currentMode.maxamount,currentMode.member.balance));\r\n }, this.keyboardOnOk, this.keyboardOnClose)()\r\n }\r\n }\r\n onBlur={(e)=>{\r\n Keyboard.close();\r\n this.setCurrentModeValue(getFixedNumber(this.inputCzkAmount.input.value),Math.min(currentMode.maxamount,currentMode.member.balance));\r\n }}\r\n />\r\n </span>\r\n </div>\r\n <div className=\"error\">{currentMode && currentMode.errinfo}</div>\r\n {(!this.store.member || !this.store.member.ID) && <div className=\"tipStype\">在此处录入会员不会享有折扣、会员价等优惠,若需要优惠请返回至开单界面录入会员!</div>}\r\n </div>\r\n </Modal>\r\n <Modal\r\n wrapClassName={`djq ${this.isHorizontalPad ? 'extraHeight' : ''} passwordContainer`}\r\n width=\"400px\"\r\n visible={this.state.showSetPwdModal}\r\n backdropClosable={false}\r\n destroyOnClose={true}\r\n footer={null}\r\n onCancel={this.handleSetPwdCancel}\r\n keyboard={false}\r\n centered={ !this.isHorizontalPad ? true : false}\r\n title='设置密码'\r\n footer={<div className=\"action\">\r\n <Button onClick={this.handleSetPwdCancel}>取消</Button>\r\n <Button type=\"primary\" disabled={currentMode && currentMode.errinfo!='' || btnDissabled} onClick={this.handleSetModal}>确定</Button>\r\n </div>}\r\n >\r\n <div className='setPwdContainer'>\r\n <div className='setPwdDiv'>\r\n <div className=\"one\">新密码</div>\r\n <div className=\"two\">\r\n <NumkeyboardPassword\r\n className=\"content\"\r\n newType='positive'\r\n bordered\r\n placeholder=\"请输入6位数字密码\"\r\n style={{ width: 266, height: 32 }}\r\n maxLength={6}\r\n ref={input => this.inputNewAmount = input}\r\n onChange={value => this.setPwdValue('newPass', value)}\r\n onBlur={value => this.handleBlur('newPass')}\r\n />\r\n </div>\r\n </div>\r\n <div className='setPwdDiv'>\r\n <div className=\"one\">确认新密码</div>\r\n <div className=\"two\">\r\n <NumkeyboardPassword\r\n className=\"content\"\r\n newType='positive'\r\n bordered\r\n placeholder=\"请确认6位数字密码\"\r\n style={{ width: 266, height: 32 }}\r\n maxLength={6}\r\n ref={input => this.inputConfirmAmount = input}\r\n onChange={value => this.setPwdValue('newPassConfirm', value)}\r\n onBlur={value => this.handleBlur('newPassConfirm')}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n {/* <div className=\"action\">\r\n <Button onClick={this.handleSetPwdCancel}>取消</Button>\r\n <Button type=\"primary\" disabled={currentMode && currentMode.errinfo!=''} onClick={this.handleSetModal}>确定</Button>\r\n </div> */}\r\n </Modal>\r\n <Modal\r\n wrapClassName={`djq ${this.isHorizontalPad ? 'extraHeight' : ''}`}\r\n width=\"810px\"\r\n visible={this.state.djqVisible}\r\n maskClosable={false}\r\n onOk={this.handleDjqOk}\r\n onCancel={this.handleDjqCancel}\r\n centered={ !this.isHorizontalPad ? true : false}\r\n title={Differentiate.COUPON+'支付'}\r\n footer={<div className=\"action\">\r\n <Button onClick={this.handleDjqCancel}>取消</Button>\r\n <Button type=\"primary\" disabled={currentMode && currentMode.errinfo!=''} onClick={this.handleDjqOk}>确定</Button>\r\n </div>}\r\n >\r\n <div>\r\n {currentMode && !currentMode.boriginReturn && <div className=\"djq1\">\r\n <div className=\"col1\">{Differentiate.COUPON}号</div>\r\n <div className=\"col2\">\r\n <div>\r\n {/* <input ref={input => this['inputdjq'] =input } onKeyDown={e=>{if(e.keyCode==13){this.addDjq();}}}></input> */}\r\n <Input\r\n type='text'\r\n placeholder={`扫描/输入${Differentiate.COUPON}号并回车`}\r\n className=\"input\"\r\n // onChange={this.onDjqChange}\r\n // value={currentMode && currentMode.member.cardNo}\r\n ref={input => this.inputdjq =input}\r\n onKeyDown={\r\n (e)=>{if(e.keyCode==13){this.addDjq(e.target.value)}}\r\n }\r\n onFocus={e => {\r\n this.inputTarget = this.inputdjq.input;\r\n Keyboard.open((v) => {\r\n const value = Keyboard.getNewValue(this.inputTarget, this.inputTarget.value, v);\r\n this.onDjqChange(value,true);\r\n }, this.djqKeyboardOnOk, this.djqKeyboardOnClose)()\r\n }}\r\n onBlur={(e) => { Keyboard.close() }}\r\n />\r\n </div>\r\n <div className=\"row2\">{currentMode && currentMode.errinfo}</div>\r\n </div>\r\n {\r\n this.isHorizontalPad &&\r\n <div className=\"col3\">\r\n <Ticon type='saomiao1' className='icon' onClick={this.changeScanProduct} />\r\n <Scan ref={scan => this.scanObj = scan} onChange={this.onScanDjqResult} />\r\n </div>\r\n }\r\n </div>}\r\n <div className=\"djq2outer\">\r\n <div className=\"djq2\">\r\n {\r\n _map(currentMode&¤tMode.djqs || [],(q,index)=>{\r\n return (<div key={index + ''} className=\"djqItem\">\r\n {\r\n (!q.promoMethodEnum || q.promoMethodEnum == 'CASH_COUPON') ?\r\n <div className=\"djqLeft djqLeftCash\">\r\n <div className=\"amount\">\r\n <span>{q.amount}</span>\r\n <span>元</span>\r\n </div>\r\n <div className=\"lijian\">立减</div>\r\n </div>\r\n :\r\n <div className=\"djqLeft djqLeftDiscount\">\r\n <div className=\"amount\">\r\n <span>{tools.cutZero(q.discountPct * 10)}</span>\r\n <span>折</span>\r\n </div>\r\n <div className=\"lijian\">折扣</div>\r\n </div>\r\n }\r\n <div className={classnames('djqRight', { 'djqRightSelected': q.checked })} onClick={(e) => this.djqChecked(q)}>\r\n <div className=\"name overflow-hidden-point\">{q.name}</div>\r\n {\r\n q.displayText ?\r\n <div className=\"info overflow-hidden-point\"><span>{q.displayText}</span></div> :\r\n <div className=\"info overflow-hidden-point\"><span>使用门槛:</span><span>{q.doorsill}</span><span>元</span></div>\r\n }\r\n {\r\n q.expired ? <div className=\"info info_red overflow-hidden-point\"><span>{q.expired}</span></div> : null\r\n }\r\n </div>\r\n <div className=\"point_top\"/>\r\n <div className=\"point_bottom\"/>\r\n </div>)\r\n })\r\n }\r\n </div>\r\n </div>\r\n {currentMode && !currentMode.boriginReturn && <div className=\"djq3\">\r\n <div className=\"col1\">\r\n <div className=\"row1\">剩余应收</div>\r\n <div className=\"row2\">{currentMode ? currentMode.receivable:'0.00'}</div>\r\n </div>\r\n <div className=\"col2\">\r\n <div className=\"row1\">本单可用</div>\r\n <div className=\"row2\">{currentMode ? currentMode.maxamount:'0.00'}</div>\r\n </div>\r\n <div className=\"col2\">\r\n <div className=\"row1\">{Differentiate.COUPON}结算金额</div>\r\n <div className=\"row2\">{currentMode ? currentMode.value:'0.00'}</div>\r\n </div>\r\n <div className=\"col3\">\r\n <div className=\"row1\">溢收金额</div>\r\n <div className=\"row2\">{currentMode ? currentMode.overchargesAmount:'0.00'}</div>\r\n </div>\r\n </div>}\r\n {currentMode && currentMode.boriginReturn && <div className=\"djq3\">\r\n <div className=\"col1\">\r\n <div className=\"row1\">数量</div>\r\n <div className=\"row2\">{currentMode && currentMode.djqs ? currentMode.djqs.length:'0'}</div>\r\n </div>\r\n <div className=\"col2\">\r\n <div className=\"row1\">退款金额</div>\r\n <div className=\"row2\">{currentMode ? currentMode.value:'0.00'}</div>\r\n </div>\r\n </div>}\r\n </div>\r\n </Modal>\r\n <Modal\r\n wrapClassName={`czk ${this.isHorizontalPad ? 'extraHeight' : ''}`}\r\n width=\"420px\"\r\n visible={this.state.jfdxVisible}\r\n maskClosable={false}\r\n onCancel = { this.handleJfdxCancel }\r\n centered={ !this.isHorizontalPad ? true : false}\r\n title={\"积分抵现\"}\r\n destroyOnClose={true}\r\n footer={<div className=\"action\">\r\n <Button onClick={this.handleJfdxCancel}>取消</Button>\r\n <Button type=\"primary\" disabled={currentMode && currentMode.errinfo!=''} onClick={this.handleJfdxOk}>确定</Button>\r\n </div>}\r\n >\r\n <div>\r\n <div className=\"info\">\r\n <div className={classnames({\"type\":true,'colwidth4':hasmember})}>\r\n <div className=\"value valuetext\">{(currentMode && currentMode.member.type) || '普通'}</div>\r\n <div className=\"name\">类型</div>\r\n </div>\r\n <div className=\"gap\">\r\n <div className=\"gap1\"></div>\r\n <div className=\"gap2\"></div>\r\n <div className=\"gap1\"></div>\r\n </div>\r\n <div className={classnames({\"balance\":true,'colwidth4':hasmember})}>\r\n <div className=\"value\">{currentMode && currentMode.member.bonusPoints}</div>\r\n <div className=\"name\">积分</div>\r\n </div>\r\n <div className=\"gap\">\r\n <div className=\"gap1\"></div>\r\n <div className=\"gap2\"></div>\r\n <div className=\"gap1\"></div>\r\n </div>\r\n <div className={classnames({\"balance\":true,'colwidth4':hasmember})}>\r\n <div className=\"value\">{currentMode && getFixedNumber(currentMode.member.exchangable)}</div>\r\n <div className=\"name\">可抵现金额</div>\r\n </div>\r\n <div className=\"gap\">\r\n <div className=\"gap1\"></div>\r\n <div className=\"gap2\"></div>\r\n <div className=\"gap1\"></div>\r\n </div>\r\n <div className={classnames({\"available\":true,'colwidth4':hasmember})}>\r\n <div className=\"value\">{currentMode && getFixedNumber(Math.max(0,Math.min(currentMode.maxamount,currentMode.member.exchangable)))}</div>\r\n <div className=\"name\">本单可用</div>\r\n </div>\r\n </div>\r\n <div className=\"no\">\r\n <span>会员卡号:</span>\r\n <span className=\"notext\">{currentMode && currentMode.member.cardNo}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>剩余应收:</span>\r\n <span>{paymode.receivable}</span>\r\n </div>\r\n <div className=\"received\">\r\n <span>实收金额:</span>\r\n <span>\r\n {/* <input value={currentMode && currentMode.value} onChange={(value)=>{this.setCurrentModeValue(value,currentMode.member.exchangable)}}></input> */}\r\n <Input\r\n className={hotKey.hotKeyNotFilter('input')}\r\n type='text'\r\n onChange={(e)=>{this.setCurrentModeValue(e.target.value,Math.min(currentMode.maxamount,currentMode.member.exchangable))}}\r\n defaultValue={currentMode && getFixedNumber(Math.min(currentMode.value,currentMode.maxamount,currentMode.member.exchangable))}\r\n ref={ref => this[\"inputJfdxAmount\"] = ref}\r\n onFocus={(e)=>{\r\n this.inputkey=\"inputJfdxAmount\";\r\n Keyboard.open((v)=>{\r\n const value = Keyboard.getNewValue(this[this.inputkey].input, this[this.inputkey].input.value, v);\r\n this.setCurrentModeValue(value,Math.min(currentMode.maxamount,currentMode.member.exchangable));\r\n }, this.keyboardOnOk, this.keyboardOnClose)()\r\n }\r\n }\r\n onBlur={(e)=>{\r\n Keyboard.close();\r\n this.setCurrentModeValue(getFixedNumber(this.inputJfdxAmount.input.value),Math.min(currentMode.maxamount,currentMode.member.exchangable));\r\n }}\r\n />\r\n </span>\r\n </div>\r\n <div className=\"error\">{currentMode && currentMode.errinfo}</div>\r\n </div>\r\n </Modal>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default Settlement\r\n"]}
|
|
1
|
+
{"version":3,"sources":["tplus-components-touch/components/settlement/settlement.js"],"names":["hasElectron","env","platform","constant","electron","Settlement","observer","props","state","visible","czkVisible","djqVisible","jfdxVisible","showSetPwdModal","currentIndex","connectCardStatus","connectCardError","amountChanged","type","isManualIntoAmount","isXianjin","newPass","newPassConfirm","noAlreadyWarn","btnDissabled","confirmPwd","settleDisabled","compoundHotkeysList","window","$","operationControl","control","map","key","toLocaleUpperCase","hotkeydebounced","hotkeydebouncedPayMode","currentInput","store","SettlementStore","resizeSettlementToolBtns","newStyle","isMemberStorePage","b","billingSettlementDocumnet","bWidth","offsetWidth","cWidth","firstChild","lastChild","childNodes","forEach","v","className","handleReadICard","readRfCard","updateInput","currentMode","paymode","member","exchangable","undefined","inputkey","input","value","Math","min","maxamount","setCurrentModeValue","inputJfdxAmount","balance","inputCzkAmount","bquick","id","parseFloat","amount","Message","error","duration","setTimeout","handleCzkCancel","czkKeyboardOnClose","quickSettle","enumController","getEnumOj","PayStyle","resolve","onValidate","then","result","setState","init","context","onHandleAmount","dataSource","Code_02","storeInfo","dto","settleZero","hyczk","showCzkModal","handleSettle","handleGuestShow","checkIsIntegralExchange","IdbusiType","viewModel","data","showModal","handleDefault","brefund","boriginReturn","JSON","getCellValue","thePaymodes","m","checkModeDisabled","paymentType","setFocusAndSelectionMode","that","ModalWraper","confirm","title","content","onOk","onCancel","handleOk","e","handleCancel","onCancelSettle","cancelState","setInventoryFocus","clean","append","params","isNewRetailBCPos","setCurrentMode","_val","isReturn","sMember","StorageCardEnable","warn","ID","WalletEnabled","czkInput","focus","setSelectionRange","length","connectRfCard","handleCzkOk","loadCzk","mode","paymethodId","closeRfCard","calcMemberBalance","handleCzk","Keyboard","close","handleSetPwdCancel","handleSetModal","updataMemberInfo","queryPwd","updateMemberInfo","resp","setPwdValue","field","handleBlur","isHorizontalPad","doms","document","getElementsByClassName","getElementById","console","log","showDjqModal","djq","inputdjq","getCouponList","handleDjqOk","Differentiate","handleDjqCancel","djqs","checked","COUPON","setCurrentFocusAndAddPay","showJfdxModal","jid","djqmode","themode","IsRepelWithPoints","code","jfdx","handleJfdxOk","handleJfdxCancel","onTabsClick2","memberInfo","hasmember","Code","Name","omc","initData","wx","zfb","smzf","checkScanDisabled","bdisabled","onTabsClick","MultiPay","paymodes","exchangeRate","forign","setCurrentFocusOnly","FORBIDDEN","NOTIFICATION","editModal","changeFocusAndAddPay","setFocusAndSelection","onDelPay","index","info","delPay","handleChange","target","amountMaxLength","parseInt","isNaN","changeValue","val","max","onBlur","changeFocusOnly","onFocus","currentFocus","onFocusHack","appendCzkmode","bappend","djqChecked","q","calcDjqValue","addDjq","checkCoupon","czkdebounced","cancel","onHotKeyClick1","onHotKeyClickModal","onHotKeyClick2","changeClickFocusOnly","onHotKeyEnter","notsettle","checkSettleDisabled","payIndex","displayPayModeList","SaoMaPayMode","find","filter","paymodeOb","findHaveNoModlePayType","findModlePayBySplice","currenIndex","symbol","findIndex","endCurrentMode","endCurrentModeOb","startCurrentModeOb","settleUnReturn","__queryingModal","querySettleResult","destroy","Flag","setDtoID","settleSuccess","settleCanceled","clearVoucherData","received","charge","openCashBox","xianjin","_this","showTwoScreen","getScreenType","flag","isHorizontalSunMi","localStore","get","item","shift","Value","step","screenType","sunMi_PresentationManager","sendMessageToSecondScreen","nativeMs","setIpcRendererMethod","onSettleSuccess","getSettleGift","resp1","__loadingModal","MemberPoints","isMemberPointsReturn","message","Number","__successModal","onModalClose","stores","dtype","dt","guestshow_enable","guestshow_clear","guestshow_welcome","guestshow_collect","guestshow_refund","guestshow_change","hasSuccess","other","replace","abs","price","qty","total","inv","wel","HardwareAPI","sendDataCusDisp","dataType","ret","args","promises","results","p","push","commit","handleUserInputs","isQuickPay","status","checkCharge","receivable","zeromode","value2","name","quickmode","SQBPAY","CSYH","inputConfirm","values","bTest","indexOf","reject","curmode","inputPwd","needPwd","validePwd","fKeyboardOnOk","paymethodeId","blur","fKeyboardOnClose","keyboardOnOk","keyboardOnClose","changefn","setConfirmPwdValue","modal","onPressEnter","authCode","pwd","onPressEsc","maskClosable","keyboard","closable","width","isMobileEnvironment","height","inputAmount","btnDebounced","btndebounced","onCzkChange","setCardNo","czkKeyboardOnOk","onDjqChange","isKeyBorad","debounced","djqKeyboardOnOk","djqKeyboardOnClose","xianjinChange","inputTarget","inputTarget2","innerHTML","changeScanProduct","scanObj","startScan","onScanResult","el","setStateValue","submitHandler","onScanCzkResult","onScanDjqResult","getXianjinPayment","payType","getXianjinBalance","isStoredValueCard","PayIcon2","zl","getAttribute","backdropStyle","scan","checkCurrentModeHaveMutex","payTypeList","payTypeFilterList","filterType","disableUserMode","haveUseTypeList","xj","enabled","changeDecimalBuZero","number","bitNum","f_x","newBitNum","pow","round","s_x","toString","pos_decimal","editCzkModal","paymodesCarouselList","carouselStart","CarouseOut","CarouselTp","newParams","mapList","floor","modeList","modeIndex","renderToolbtn","loginInfo","ICCardServer","ICCardPassword","iCCardServer","iCCardPassword","bind","setTimer","initPaymodes","nextProps","clear","cardPsw","cardSec","cardKm","getNewValue","PayIcon","hasSMZF","hotkeyIndex","theArr","t","paymodeDisabled","paymodeSelected","checkThepaymode","omission","totalVariety","totalQuantity","quantityDetail","memberDisabled","noIsMinAmount","totalTaxAmount","TotalTaxAmount","settle","ExchangeIntegral","_hasSMZF","quickPay","isQuick","productsIsEmpty","RetailDetails","moreToolbtns","pagination","spaceBetween","carouselStart2","quantity1","quantity2","quantity3","quantity4","sumQuantity","buyQuantity","returnQuantity","quantityPrecision","showAmount","sumRetailDetails","Quantity","r","i","iconclass","OnlinePaymentAmount","isMemberPoints","hotKey","hotKeyBindClass","maxHeight","body","clientHeight","hotKeyNotFilter","display","overchargesAmount","StorageCardNo","cardNo","onlineamount","onKeyboardChange","mindex","czkinput","tm","sum","Add","errinfo","keyCode","open","event","ref","inputNewAmount","inputConfirmAmount","promoMethodEnum","tools","cutZero","discountPct","displayText","doorsill","expired","bonusPoints","React","Component","contextTypes","PropTypes","object"],"mappings":"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","file":"settlement.js","sourcesContent":["import React from 'react'\r\nimport { observer } from 'mobx-react'\r\nimport _filter from 'lodash/filter';\r\nimport _map from 'lodash/map';\r\nimport _find from 'lodash/find';\r\nimport _findIndex from 'lodash/findIndex';\r\nimport _sortBy from 'lodash/sortBy';\r\nimport _forEach from 'lodash/forEach';\r\nimport _trim from 'lodash/trim';\r\nimport _truncate from 'lodash/truncate';\r\nimport _debounce from 'lodash/debounce';\r\nimport _reduce from 'lodash/reduce';\r\nimport classnames from 'classnames'\r\nimport { Drawer, Modal, Carousel, Input, Button } from 'antd';\r\nimport Message from '../message';\r\nimport asyncModal from './asyncModal';\r\nimport ModalWraper from '../modalWraper';\r\nimport { openLoadingModal,openQueryingModal,showSuccessModal, getFixedNumber } from './utils';\r\nimport SettlementStore from './settlementStore';\r\nimport Keyboard from '../keyboard';\r\nimport NumKeyboard from '../keyboard/numKeyboard';\r\nimport NumKeyboardScan from '../keyboard/numKeyboardScan';\r\nimport NumkeyboardPassword from '../keyboard/numkeyboardPassword'\r\nimport Ticon from '../ticon';\r\nimport PropTypes from 'prop-types';\r\nimport Scan from '../scan';\r\nimport HardwareAPI from '../hardwareAPI';\r\nimport { nativeMs, env, localStore } from 'mutants-microfx';\r\nimport { platform,enumController,tools} from 'mutants-util';\r\nimport { hotKey } from '../../index';\r\nimport { PosInitData } from 'tplus-poslogin';\r\n\r\nconst hasElectron = (env.platform === env.constant.platform.electron);\r\n\r\n@observer\r\nclass Settlement extends React.Component {\r\n state = {\r\n visible: false ,\r\n czkVisible:false,\r\n djqVisible:false,\r\n jfdxVisible:false,\r\n showSetPwdModal: false,\r\n currentIndex:0,\r\n connectCardStatus: false, //连接IC卡状态\r\n connectCardError: '', //连接IC卡错误后记录错误信息\r\n amountChanged:false,\r\n type:0,\r\n isManualIntoAmount: PosInitData(\"IsManualIntoAmount\"),\r\n isXianjin: false,\r\n newPass: '',\r\n newPassConfirm: '',\r\n noAlreadyWarn: true,\r\n btnDissabled: true,\r\n confirmPwd: '',\r\n settleDisabled: false,\r\n }\r\n // 复核结算方式快捷键列表\r\n compoundHotkeysList = (window.$.operationControl[5]? (window.$.operationControl[5].control || []):[]).map((key)=>{\r\n return key.toLocaleUpperCase();\r\n })\r\n\r\n hotkeydebounced = null;\r\n hotkeydebouncedPayMode = \"\";\r\n\r\n static contextTypes = {\r\n viewModel: PropTypes.object,\r\n stores: PropTypes.object,\r\n }\r\n\r\n currentInput = null;\r\n\r\n store = new SettlementStore()\r\n\r\n constructor(props) {\r\n super(props);\r\n this.hasElectron = hasElectron;\r\n const { loginInfo: { ICCardServer, ICCardPassword } = {} } = localStore.get('user') || {};\r\n this.iCCardServer = parseInt(ICCardServer); // 启用IC卡:0为禁用 1为启用\r\n this.iCCardPassword = ICCardPassword; //IC卡密码\r\n //移动端环境下,没有读取IC卡的方式。\r\n const { isHorizontalPad, isHorizontalSunMi } = platform || {};\r\n this.isHorizontalPad = !!isHorizontalPad;\r\n this.isHorizontalSunMi= !!isHorizontalSunMi;\r\n this.isMobileEnvironment = !!isHorizontalPad || !!isHorizontalSunMi;\r\n this.handleReadICard = this.handleReadICard.bind(this);\r\n this.setTimer = null;\r\n }\r\n\r\n componentDidMount() {\r\n //let retailDetails=this.context.viewModel.data.RetailDetails;//明细\r\n //let totalRetailAmount=this.context.viewModel.data.TotalRetailAmount;//零售金额合计\r\n this.store.initPaymodes(this.updateInput,this.props.type,this.props.MemberPoints);\r\n\r\n }\r\n\r\n componentDidUpdate() {\r\n this.resizeSettlementToolBtns()\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (nextProps.amount != this.props.amount) {\r\n this.store.amountChanged(nextProps.amount);\r\n this.setState({ amountChanged: !this.state.amountChanged });\r\n }\r\n\r\n // 增加积分兑换和普通模式切换 重新获取支付方式\r\n if(nextProps.MemberPoints != this.props.MemberPoints){\r\n this.store.paymode.clear();\r\n this.store.initPaymodes(this.updateInput,this.props.type,nextProps.MemberPoints);\r\n }\r\n }\r\n\r\n //对结算按钮超出的处理\r\n resizeSettlementToolBtns = () => {\r\n const { newStyle } = this.store;\r\n const { isMemberStorePage } = this.props;\r\n let b = this.billingSettlementDocumnet;\r\n if (b && newStyle && !isMemberStorePage) {\r\n let bWidth = b.offsetWidth;\r\n let cWidth = 0;\r\n if (b.firstChild) {\r\n cWidth += b.firstChild.offsetWidth;\r\n }\r\n if (b.lastChild && b.lastChild.childNodes) {\r\n b.lastChild.childNodes.forEach(v => {\r\n cWidth += v.offsetWidth;\r\n })\r\n }\r\n if (b.lastChild) {\r\n if (bWidth < cWidth) {\r\n b.lastChild.className = 'btns voucherMode';\r\n } else {\r\n b.lastChild.className = 'btns';\r\n }\r\n }\r\n }\r\n }\r\n\r\n //IC卡连接\r\n connectRfCard() {\r\n //客户端环境下,并开启了启用IC卡。\r\n if (this.hasElectron === true && this.iCCardServer === 1) {\r\n nativeMs.setIpcRendererMethod('ConnectRfCard', null, ret => {\r\n let result = {}\r\n if (ret.status === 0) {\r\n result = { connectCardStatus: false, connectCardError: ret.value }\r\n } else {\r\n result = { connectCardStatus: true, connectCardError: '' };\r\n }\r\n this.setState(result)\r\n })\r\n }\r\n }\r\n //IC卡读取\r\n readRfCard() {\r\n //客户端环境下,并开启了启用IC卡。\r\n if (this.hasElectron === true && this.iCCardServer === 1) {\r\n const { connectCardStatus, connectCardError } = this.state;\r\n if (connectCardStatus === false) {\r\n Message.error(connectCardError ? connectCardError : '读取IC卡失败');\r\n this.connectRfCard(); //读取失败后,重新连接一下。\r\n return;\r\n }\r\n let params = { cardPsw: this.iCCardPassword, cardSec: 13, cardKm: 0 }\r\n nativeMs.setIpcRendererMethod('ReadRfCard', { ...params }, ret => {\r\n if (ret.status === 0) {\r\n Message.error(ret.value);\r\n this.connectRfCard(); //读取失败后,重新连接一下。\r\n return;\r\n } else if (ret.status === 1) {\r\n //this.searchMember(ret.value);\r\n this.czkInput.input[\"value\"]=ret.value;\r\n this.loadCzk(ret.value);\r\n }\r\n })\r\n }\r\n }\r\n\r\n //IC卡关闭\r\n closeRfCard(){\r\n if (this.hasElectron === true && this.iCCardServer === 1) {\r\n nativeMs.setIpcRendererMethod('CloseRfCard')\r\n }\r\n }\r\n handleReadICard = () => {\r\n this.readRfCard();\r\n }\r\n\r\n updateInput=()=>{\r\n let {currentMode}=this.store.paymode;\r\n if(this.state.jfdxVisible &¤tMode && currentMode.member.exchangable !== undefined ){\r\n this.inputkey=\"inputJfdxAmount\";\r\n this[\"inputJfdxAmount\"].input.value=currentMode && getFixedNumber(Math.min(currentMode.value,currentMode.maxamount,currentMode.member.exchangable))\r\n this.setCurrentModeValue(this.inputJfdxAmount.input.value,Math.min(currentMode.maxamount,currentMode.member.exchangable));\r\n }else if(this.state.czkVisible && currentMode && currentMode.value>=0 && currentMode.member.balance !== undefined){\r\n this.inputkey=\"inputCzkAmount\";\r\n this[\"inputCzkAmount\"] && this[\"inputCzkAmount\"].input && (this[\"inputCzkAmount\"].input.value=getFixedNumber(Math.min(currentMode.value,currentMode.maxamount,currentMode.member.balance)));\r\n const maxamount=Math.min(currentMode.maxamount,currentMode.member.balance);\r\n this.inputCzkAmount && this.inputCzkAmount.input && this.setCurrentModeValue(this.inputCzkAmount.input.value,maxamount);\r\n if(this.store.bquick && currentMode.member.id && parseFloat(this.store.paymode.amount)>parseFloat(maxamount)){\r\n Message.error(\"本单最大可用储值卡结算金额为:\"+getFixedNumber(maxamount)+\",请使用复合结算!\", {\r\n duration: 4\r\n });\r\n setTimeout(() => {\r\n this.handleCzkCancel();\r\n setTimeout(() => { this.czkKeyboardOnClose() }, 150)\r\n }, 50);\r\n }\r\n }\r\n }\r\n\r\n quickSettle = (key)=>{\r\n const { PayStyle } = enumController.getEnumOj();\r\n Promise.resolve(!this.props.onValidate || this.props.onValidate()).then(result=>{\r\n if (result) {\r\n this.setState({\r\n settleDisabled: false\r\n })\r\n this.store.init(this.props.type == 1 ? null : this.context, this.props.onHandleAmount, this.props.dataSource.Code_02, this.props.storeInfo, true, this.props.amount, this.props.type, this.props.dto);\r\n let amount = this.store.paymode.amount;\r\n if (amount == 0) {\r\n this.settleZero();\r\n return;\r\n }\r\n if (key == PayStyle.hyczk) {\r\n this.showCzkModal();\r\n } else {\r\n this.store.quickSettle(key);\r\n this.handleSettle(\"quickPay\");\r\n }\r\n this.handleGuestShow(amount < 0 ? 2 : 3, amount);\r\n }\r\n })\r\n }\r\n\r\n checkIsIntegralExchange = () => {\r\n let { IdbusiType } = this.context.viewModel.data;\r\n return (IdbusiType === 37 || IdbusiType === 36);\r\n }\r\n \r\n showModal = () => {\r\n // 支持异步验证过程\r\n Promise.resolve( !this.props.onValidate || this.props.onValidate()).then(result => {\r\n if (result) {\r\n this.setState({\r\n settleDisabled: false\r\n })\r\n this.store.init(this.props.type == 1 ? null : this.context, this.props.onHandleAmount, this.props.dataSource.Code_02, this.props.storeInfo, false, this.props.amount, this.props.type, this.props.dto);\r\n let amount = this.store.paymode.amount;\r\n if (amount == 0) {\r\n this.settleZero();\r\n return;\r\n }\r\n this.setState({ visible: true });\r\n this.handleGuestShow(amount < 0 ? 2 : 3, amount);\r\n setTimeout(() => {\r\n this.handleDefault()\r\n // // 单据模式 临时性获取第一个结算方式焦点\r\n // // document.querySelector('.modeItem:nth-child(1) .content input').focus()\r\n let { paymode, brefund, newStyle } = this.store;\r\n let boriginReturn = this.context && this.context.viewModel && this.context.viewModel.data && JSON.getCellValue(this.context.viewModel.data, \"IsOriginalReturn\");\r\n let thePaymodes = newStyle ? _filter(paymode.thePaymodes, (m) => { return !(this.checkModeDisabled(m.paymentType, brefund, boriginReturn) && parseFloat(m.value) == 0); }) : paymode.thePaymodes;\r\n this.setFocusAndSelectionMode(thePaymodes,-1);\r\n }, 100)\r\n }\r\n })\r\n }\r\n\r\n settleZero=()=>{\r\n const that = this;\r\n ModalWraper.confirm({\r\n className: 'tplus-confirm-modal',\r\n title: '结算',\r\n content: '当前收款金额为0,确认结算?',\r\n onOk() {\r\n setTimeout(() => { that.handleSettle(\"zero\") }, 300)\r\n },\r\n onCancel() {\r\n\r\n },\r\n });\r\n }\r\n\r\n handleDefault=()=>{\r\n // let dmode=_find(this.store.paymode.paymodes,(mode)=>{return mode.isDefault});\r\n // if(dmode){\r\n // if(dmode.paymentType==PayStyle.hyczk){\r\n // this.onTabsClick(PayStyle.hyczk);\r\n // }else{\r\n // this.store.quickSettle(dmode.paymentType);\r\n // this.onTabsClick(dmode.paymentType);\r\n // }\r\n // }else if(this.store.member && this.store.member.ID && parseFloat(this.store.member.BalanceStorage)>0 &&\r\n // _find(this.store.paymode.paymodes,{'paymentType':PayStyle.hyczk})){\r\n // this.onTabsClick(PayStyle.hyczk);\r\n // // this.showCzkModal();\r\n // }\r\n\r\n // else if(_find(this.store.paymode.paymodes,{'paymentType':PayStyle.xianjin})){\r\n // this.store.quickSettle(PayStyle.xianjin);\r\n // this.onTabsClick(PayStyle.xianjin);\r\n // }\r\n if(this.store.newStyle){\r\n // this.onHotKeyEnter(null,true);\r\n }\r\n }\r\n\r\n handleOk = (e) => {\r\n this.setState({\r\n visible: false,\r\n });\r\n }\r\n\r\n handleCancel = (e) => {\r\n this.props.onCancelSettle && this.props.onCancelSettle();\r\n this.cancelState();\r\n this.setInventoryFocus();\r\n }\r\n cancelState=()=>{\r\n this.store.clean();\r\n this.setState({\r\n visible: false,\r\n });\r\n }\r\n\r\n //czk\r\n showCzkModal = (id,append, params) => {\r\n const { PayStyle } = enumController.getEnumOj();\r\n let { isNewRetailBCPos } = platform || {};\r\n this.store.setCurrentMode(id,PayStyle.hyczk,append);\r\n this._val=this.store.paymode.currentMode.value;\r\n let {currentMode}=this.store.paymode;\r\n const maxamount=Math.min(currentMode.maxamount,currentMode.member.balance);\r\n if(this.store.bquick && currentMode.member.id && parseFloat(this.store.paymode.amount)>parseFloat(maxamount)){\r\n Message.error(\"本单最大可用储值卡结算金额为:\"+getFixedNumber(maxamount)+\",请使用复合结算!\",{\r\n duration: 4\r\n });\r\n } else {\r\n if (isNewRetailBCPos) {\r\n let { isReturn } = this.props;\r\n let sMember = this.store.member;\r\n if (!sMember.StorageCardEnable) {\r\n Message.warn(\"该储值卡已停用\");\r\n return;\r\n }\r\n if (sMember && sMember.ID) {\r\n // noPlaySetPwd 点击结算方式设置密码,点加号不设置\r\n if (!sMember.WalletEnabled && params !== 'noPlaySetPwd' && !isReturn) {\r\n this.setState({\r\n newPass: '',\r\n newPassConfirm: '',\r\n showSetPwdModal: true\r\n })\r\n } else {\r\n this.setState({\r\n showSetPwdModal: false,\r\n czkVisible: true\r\n })\r\n }\r\n } else {\r\n Message.warn('请先录入会员');\r\n } \r\n // this.setState({\r\n // czkVisible: true,\r\n // });\r\n } else {\r\n this.setState({\r\n czkVisible: true,\r\n });\r\n }\r\n // this.setState({\r\n // czkVisible: true,\r\n // });\r\n }\r\n setTimeout(() => {\r\n if(!currentMode.member || !currentMode.member.id){\r\n this.czkInput && this.czkInput.input.focus()\r\n }else{\r\n if(this.inputCzkAmount && this.inputCzkAmount.input){\r\n this.inputCzkAmount.input.focus();\r\n this.inputCzkAmount.input.setSelectionRange(0, this.inputCzkAmount.input.value.length);\r\n }\r\n }\r\n }, 350)\r\n this.connectRfCard();\r\n }\r\n\r\n handleCzkOk = async (e) => {\r\n // const maxamount=Math.min(this.store.paymode.currentMode.maxamount,this.store.paymode.currentMode.member.balance);\r\n // if(this.store.bquick && this.store.paymode.amount>maxamount){\r\n // Message.error(\"本单最大可用储值卡结算金额为:\"+getFixedNumber(maxamount)+\",请使用复合结算!\");\r\n // this.setState({\r\n // czkVisible: false,\r\n // });\r\n // return;\r\n // }\r\n const { PayStyle } = enumController.getEnumOj();\r\n if(!this.store.paymode.currentMode.member.id){\r\n await this.store.loadCzk(this.czkInput.input.value);\r\n }\r\n\r\n if(!this.store.paymode.currentMode.member.id ){\r\n Message.error(\"请录入储值卡!\");\r\n return ;\r\n }\r\n // if(this.store.paymode.currentMode.value > 0 && this.store.paymode.currentMode.member.NeedModifyPassword){\r\n // Message.error(\"U会员中密码为空,请设置密码后使用!\");\r\n // this.setState({\r\n // czkVisible: false,\r\n // });\r\n // return;\r\n // }\r\n if(_find(this.store.paymode.thePaymodes,(mode)=>{\r\n return mode.paymethodId!=this.store.paymode.currentMode.paymethodId &&\r\n mode.paymentType==PayStyle.hyczk &&\r\n mode.member.id==this.store.paymode.currentMode.member.id\r\n })){\r\n Message.error(\"该储值卡已使用。\");\r\n return;\r\n }\r\n if(this.store.bquick && this.store.paymode.amount!=this.store.paymode.currentMode.value){\r\n Message.error(\"实收金额应等于应收金额。\");\r\n return;\r\n }\r\n\r\n this.setState({\r\n czkVisible: false,\r\n });\r\n this.closeRfCard();\r\n this.store.paymode.calcMemberBalance();\r\n this.handleCzk();\r\n }\r\n\r\n handleCzkCancel = (e) => {\r\n if(this.store.bquick){\r\n this.props.onCancelSettle && this.props.onCancelSettle();\r\n this.store.clean();\r\n }\r\n this.setState({\r\n czkVisible: false,\r\n });\r\n this.closeRfCard();\r\n Keyboard.close();\r\n this.setInventoryFocus();\r\n }\r\n\r\n handleSetPwdCancel = () => {\r\n this.setState({\r\n showSetPwdModal: false\r\n })\r\n }\r\n\r\n handleSetModal = async () => {\r\n const { newPass, newPassConfirm } = this.state;\r\n const { updataMemberInfo } = this.props;\r\n const result = await this.store.queryPwd(newPass, newPassConfirm)\r\n if (result) {\r\n this.setState({\r\n showSetPwdModal: false,\r\n czkVisible: true,\r\n newPass: '',\r\n newPassConfirm: ''\r\n })\r\n Message.warn('设置成功')\r\n let { currentMode } = this.store.paymode;\r\n setTimeout(() => {\r\n if(!currentMode.member || !currentMode.member.id){\r\n this.czkInput && this.czkInput.input.focus()\r\n }else{\r\n if(this.inputCzkAmount && this.inputCzkAmount.input){\r\n this.inputCzkAmount.input.focus();\r\n this.inputCzkAmount.input.setSelectionRange(0, this.inputCzkAmount.input.value.length);\r\n }\r\n }\r\n }, 350)\r\n this.connectRfCard();\r\n let resp = await this.store.updateMemberInfo(this.store);\r\n updataMemberInfo(resp);\r\n }\r\n }\r\n\r\n setPwdValue = (field, value) => {\r\n this.setState({\r\n [field]: value\r\n }, () => {\r\n const { newPass = '', newPassConfirm = '' } = this.state || {};\r\n if (newPassConfirm.length=== 6 && newPass.length === 6 && newPass === newPassConfirm) {\r\n this.setState({\r\n btnDissabled: false\r\n })\r\n }\r\n })\r\n }\r\n\r\n handleBlur = (field) => {\r\n const { newPass = '', newPassConfirm = '' } = this.state || {};\r\n setTimeout(() => {\r\n const { showSetPwdModal } = this.state || {};\r\n if (!showSetPwdModal) return;\r\n if (field=== 'newPass' && newPass.length < 6) {\r\n this.setState({\r\n btnDissabled: true\r\n })\r\n Message.warn('请输入6位新密码!')\r\n } else {\r\n if (field === 'newPassConfirm') {\r\n if (newPass !== newPassConfirm) {\r\n this.setState({\r\n btnDissabled: true\r\n })\r\n Message.warn('密码输入不一致,请重新输入!')\r\n }\r\n }\r\n }\r\n if (newPassConfirm.length=== 6 && newPass.length === 6 && newPass === newPassConfirm) {\r\n this.setState({\r\n btnDissabled: false\r\n })\r\n }\r\n }, 80);\r\n }\r\n\r\n //关闭弹框时,执行此方法,把焦点设定到商品录入框\r\n setInventoryFocus = () => {\r\n if (!!this.isHorizontalPad) return;\r\n let doms = document.getElementsByClassName('app hot-key-focus-container');\r\n let input = document.getElementById('productPoint');\r\n if (input) setTimeout(() => { if (doms && doms.length > 0) {console.log('settlement--setInventory==Focus=='); input.focus() } }, 300);\r\n }\r\n\r\n //djq\r\n showDjqModal = (id) => {\r\n // if(!this.store.member || !this.store.member.Uid){\r\n // Message.error('请先输入会员再使用优惠券结算!');\r\n // return ;\r\n // }\r\n const { PayStyle } = enumController.getEnumOj();\r\n this.store.setCurrentMode(id,PayStyle.djq);\r\n this.setState({\r\n djqVisible: true,\r\n });\r\n setTimeout(() => {\r\n this.inputdjq && this.inputdjq.input && this.inputdjq.input.focus()\r\n }, 200)\r\n\r\n // TODO: 测试优惠券支付\r\n let { isNewRetailBCPos } = platform || {};\r\n if (isNewRetailBCPos && !this.store.paymode.currentMode.boriginReturn) {\r\n this.store.getCouponList();\r\n }\r\n }\r\n\r\n handleDjqOk = (e) => {\r\n const { PayStyle, Differentiate } = enumController.getEnumOj();\r\n if(this.store.paymode.currentMode.boriginReturn){\r\n this.handleDjqCancel(e);\r\n return;\r\n }\r\n if(_filter(this.store.paymode.currentMode.djqs,(djq)=>{return djq.checked}).length==0){\r\n Message.error(`请录入并使用${Differentiate.COUPON}。`);\r\n return ;\r\n }\r\n if(parseFloat(this.store.paymode.currentMode.value)>parseFloat(this.store.paymode.currentMode.maxamount)){\r\n Message.error(`超过了${Differentiate.COUPON}可支付的最大金额。`);\r\n return ;\r\n }\r\n this.setState({\r\n djqVisible: false,\r\n });\r\n this.setCurrentFocusAndAddPay(PayStyle.djq);\r\n }\r\n\r\n handleDjqCancel = (e) => {\r\n this.setState({\r\n djqVisible: false,\r\n });\r\n }\r\n\r\n //jfdx\r\n showJfdxModal = (jid) => {\r\n const { PayStyle, Differentiate } = enumController.getEnumOj();\r\n let id=this.store.newStyle? -1 : jid;\r\n if(!this.store.member || !this.store.member.ID){\r\n Message.error('请先输入会员再使用会员积分抵现结算!');\r\n return ;\r\n }\r\n let djqmode=_find(this.store.paymode.thePaymodes,(themode)=>{return themode.paymentType==PayStyle.djq;});\r\n let djq=djqmode && _find(djqmode.djqs,(djq)=>{return !djq.IsRepelWithPoints});\r\n if(djq){\r\n Message.error(`${Differentiate.COUPON}(${djq.code})不可与积分一起使用`);\r\n return ;\r\n }\r\n this.store.setCurrentMode(id,PayStyle.jfdx);\r\n this._val=this.store.paymode.currentMode.value;\r\n this.setState({\r\n jfdxVisible: true,\r\n });\r\n setTimeout(() => {\r\n this.inputJfdxAmount.input.focus();\r\n this.inputJfdxAmount.input.setSelectionRange(0, this.inputJfdxAmount.input.value.length);\r\n }, 200)\r\n }\r\n\r\n handleJfdxOk = (e) => {\r\n this.setState({\r\n jfdxVisible: false,\r\n });\r\n //this.setCurrentFocusAndAddPay(PayStyle.jfdx);\r\n this.handleCzk();\r\n }\r\n\r\n handleJfdxCancel = (e) => {\r\n this.setState({\r\n jfdxVisible: false,\r\n });\r\n }\r\n\r\n onTabsClick2 = (paymode, brefund, themode, key) => {\r\n const { PayStyle, Differentiate } = enumController.getEnumOj();\r\n paymode.currentMode = null;\r\n switch (key) {\r\n case PayStyle.hyczk:\r\n this.showCzkModal(-1);\r\n break;\r\n case PayStyle.jfdx:\r\n this.showJfdxModal(-1);\r\n break;\r\n case PayStyle.djq:\r\n let memberInfo = this.store && this.store.member;\r\n let hasmember = (memberInfo.ID || memberInfo.Code || memberInfo.Name) ? true : false;\r\n let omc = this.props.initData(\"OnlyMemberCanUseCoupon\")\r\n if (omc && !hasmember) {\r\n Message.warn(`仅会员可以使用${Differentiate.COUPON},请录入会员!`);\r\n return;\r\n }\r\n this.showDjqModal(-1);\r\n break;\r\n case PayStyle.wx:\r\n if (_find(paymode.thePaymodes, (mode) => { return mode.paymentType === PayStyle.zfb || mode.paymentType === PayStyle.smzf})) {\r\n Message.error('已使用了其他的付款码支付,不可以再使用微信了。');\r\n } else {\r\n this.setCurrentFocusAndAddPay(key);\r\n }\r\n break;\r\n case PayStyle.zfb:\r\n if (_find(paymode.thePaymodes, (mode) => { return mode.paymentType === PayStyle.wx || mode.paymentType === PayStyle.smzf })) {\r\n Message.error('已使用了其他的付款码支付,不可以再使用支付宝了。');\r\n } else {\r\n this.setCurrentFocusAndAddPay(key);\r\n }\r\n break;\r\n case PayStyle.smzf:\r\n if (_find(paymode.thePaymodes, (mode) => { return mode.paymentType === PayStyle.zfb || mode.paymentType === PayStyle.wx})) {\r\n Message.error('已使用了其他的付款码支付,不可以再使用扫码支付了。');\r\n } else {\r\n this.setCurrentFocusAndAddPay(key);\r\n }\r\n break;\r\n default:\r\n this.setCurrentFocusAndAddPay(key);\r\n break;\r\n }\r\n }\r\n\r\n checkScanDisabled=(key)=>{\r\n const { paymode, newStyle } = this.store;\r\n const { PayStyle } = enumController.getEnumOj();\r\n let bdisabled=false;\r\n if(!newStyle){\r\n return bdisabled;\r\n }\r\n switch (key) {\r\n case PayStyle.wx:\r\n if (_find(paymode.thePaymodes, (mode) => { return (mode.paymentType === PayStyle.zfb || mode.paymentType === PayStyle.smzf) && parseFloat(mode.value)!=0 })) {\r\n bdisabled=true;\r\n }\r\n break;\r\n case PayStyle.zfb:\r\n if (_find(paymode.thePaymodes, (mode) => { return (mode.paymentType === PayStyle.wx || mode.paymentType === PayStyle.smzf) && parseFloat(mode.value)!=0 })) {\r\n bdisabled=true;\r\n }\r\n break;\r\n case PayStyle.smzf:\r\n if (_find(paymode.thePaymodes, (mode) => { return (mode.paymentType === PayStyle.zfb || mode.paymentType === PayStyle.wx) && parseFloat(mode.value)!=0 })) {\r\n bdisabled=true;\r\n }\r\n break;\r\n }\r\n return bdisabled;\r\n }\r\n\r\n onTabsClick = (key) => {\r\n const { MultiPay } = enumController.getEnumOj();\r\n const { paymode, brefund, boriginReturn } = this.store;\r\n const { noAlreadyWarn } = this.state;\r\n if (this.checkModeDisabled(key, brefund, boriginReturn)) {\r\n return;\r\n }\r\n let themode = _find(paymode.paymodes, { 'paymentType': key });\r\n if (themode.exchangeRate != 1) {\r\n let forign = _find(paymode.thePaymodes, (mode) => { return mode.exchangeRate != 1 && mode.paymentType != key });\r\n if (forign) {\r\n Message.error(\"只允许一种外币结算。\");\r\n return;\r\n }\r\n }\r\n themode = _find(paymode.thePaymodes, (mode) => { return mode.paymentType === key });\r\n const that = this;\r\n if (themode) {\r\n this.setCurrentFocusOnly(key);\r\n return;\r\n } else if (paymode.thePaymodes.length >= 1) {\r\n switch (this.props.initData(\"multiPay\")) {\r\n case MultiPay.FORBIDDEN:\r\n Message.error(\"当前设置为不支持多种结算方式。\");\r\n break;\r\n case MultiPay.NOTIFICATION:\r\n noAlreadyWarn ? ModalWraper.confirm({\r\n className: 'tplus-confirm-modal',\r\n title: '复合结算',\r\n content: '您确定要使用多种结算方式吗?',\r\n onOk() {\r\n that.setState({\r\n noAlreadyWarn: false\r\n })\r\n that.onTabsClick2(paymode, brefund, themode, key);\r\n },\r\n onCancel() {\r\n },\r\n }) : that.onTabsClick2(paymode, brefund, themode, key);;\r\n break;\r\n default:\r\n this.onTabsClick2(paymode, brefund, themode, key);\r\n break;\r\n }\r\n } else {\r\n this.onTabsClick2(paymode, brefund, themode, key);\r\n }\r\n }\r\n\r\n editModal = (id,type,boriginReturn)=>{\r\n this.setState({currentIndex:id});\r\n const { PayStyle } = enumController.getEnumOj();\r\n switch(type){\r\n case PayStyle.hyczk:\r\n !boriginReturn && this.showCzkModal(id);\r\n break;\r\n case PayStyle.jfdx:\r\n !boriginReturn && this.showJfdxModal(id);\r\n break;\r\n case PayStyle.djq:\r\n this.showDjqModal(id);\r\n break;\r\n }\r\n }\r\n\r\n setCurrentFocusAndAddPay = (key) => {\r\n this.store.changeFocusAndAddPay(key);\r\n if(this.store.bquick){\r\n this.handleSettle(\"quickPay\");\r\n }else{\r\n this.setFocusAndSelection(key);\r\n }\r\n }\r\n\r\n onDelPay = (index,boriginReturn,type) => {\r\n const { PayStyle } = enumController.getEnumOj();\r\n if(boriginReturn && (type==PayStyle.hyczk || type==PayStyle.djq || type==PayStyle.jfdx)){\r\n Message.info('原单退货时,该结算方式不可以删除。');\r\n }else{\r\n this.store.delPay(index);\r\n }\r\n }\r\n\r\n handleChange = (index, e) => {\r\n let currentInput = e.target;\r\n let amountMaxLength = parseInt(this.props.initData[\"AmountMaxLength\"] || 10);\r\n if (!isNaN(e.target.value) || e.target.value == '-') {\r\n if (e.target.value.length <= amountMaxLength) {\r\n this.store.changeValue(index, e.target.value, false);\r\n }\r\n }\r\n }\r\n\r\n setCurrentModeValue=(val,max)=>{\r\n // let bjfdx=this.store.paymode.currentMode.paymentType==PayStyle.jfdx;\r\n let value=val;\r\n let amountMaxLength=parseInt(this.props.initData[\"AmountMaxLength\"]||10);\r\n if(isNaN(val) && val!=='-'){\r\n value = this._val;\r\n }else if(!this.store.brefund && !isNaN(val) && parseFloat(val)<=0){\r\n value = this._val;\r\n }else if(value.length>amountMaxLength){\r\n value = this._val;\r\n }else{\r\n this._val = val;\r\n }\r\n this[this.inputkey].input.value=value;\r\n this.store.paymode.setCurrentModeValue(value,max);\r\n }\r\n\r\n onBlur = (index, e) => {\r\n this.currentInput = null;\r\n this.store.changeFocusOnly(-1);\r\n this.store.changeValue(index, e.target.value == '-' ? 0 : e.target.value, true);\r\n }\r\n\r\n onFocus = (index, mode, paymode, e) => {\r\n this.currentInput = e.target;\r\n this.setState({ currentIndex: index });\r\n if (mode.paymentType == paymode.currentFocus) return;\r\n this.setCurrentFocusOnly(mode.paymentType);\r\n }\r\n\r\n onFocusHack = (index, mode, paymode, e) => {\r\n this.currentInput = e.target;\r\n this.setState({ currentIndex: index });\r\n if (mode.paymentType == paymode.currentFocus) return;\r\n this.store.changeFocusOnly(mode.paymentType);\r\n }\r\n\r\n\r\n setCurrentFocusOnly =(key)=>{\r\n this.store.changeFocusOnly(key);\r\n this.setFocusAndSelection(key);\r\n }\r\n\r\n appendCzkmode=(boriginReturn, params)=>{\r\n const { PayStyle } = enumController.getEnumOj();\r\n if(boriginReturn){\r\n Message.info('原单退货时不可以使用非原单的储值卡结算方式。');\r\n return ;\r\n }\r\n let bappend=true;\r\n const { paymode, newStyle, member } = this.store;\r\n if(newStyle && member.ID && _findIndex(paymode.thePaymodes, (mode) => {return mode.paymentType === PayStyle.hyczk && mode.member.id==member.ID} )==-1){\r\n bappend=false;\r\n }\r\n this.showCzkModal(-1,bappend, params);\r\n }\r\n\r\n djqChecked=(q)=>{\r\n const { Differentiate } = enumController.getEnumOj()\r\n if(this.store.paymode.currentMode.boriginReturn){\r\n Message.info(`原单退货时${Differentiate.COUPON}不可以取消。`);\r\n return ;\r\n }\r\n this.store.paymode.calcDjqValue(q);\r\n }\r\n\r\n addDjq=()=>{\r\n //document.getElementById(`inputS${index}`)\r\n //const v = _trim(this['inputdjq']['input']['value']);\r\n //api\r\n // this.store.addDjq('10000','5元优惠券',5,'无门槛','2019-12-31',true);\r\n const v=_trim(this.inputdjq.input.value);\r\n // if(v===''){\r\n // return ;\r\n // }\r\n this.store.checkCoupon(v).then(()=>{\r\n this.inputdjq.input.value='';\r\n this.inputdjq.input.focus();\r\n })\r\n\r\n }\r\n\r\n loadCzk=(v)=>{\r\n if(this.czkdebounced){\r\n return;\r\n }\r\n this.czkdebounced=_debounce(()=>{\r\n this.store.loadCzk(v);\r\n },1000,{\r\n 'leading': true,\r\n 'trailing': false\r\n });\r\n this.czkdebounced();\r\n setTimeout(()=>{\r\n this.czkdebounced.cancel();\r\n this.czkdebounced=null;\r\n },2000)\r\n }\r\n\r\n onHotKeyClick1=(mode,index,boriginReturn)=>{\r\n if(this.hotkeydebouncedPayMode == mode){\r\n return;\r\n }\r\n if(this.hotkeydebounced){\r\n this.hotkeydebounced.cancel();\r\n this.hotkeydebounced=null;\r\n }\r\n this.hotkeydebounced=_debounce(()=>{\r\n this.hotkeydebouncedPayMode = mode;\r\n this.onHotKeyClickModal(mode,index,boriginReturn);\r\n },500,{\r\n 'leading': true,\r\n 'trailing': false\r\n });\r\n this.hotkeydebounced();\r\n setTimeout(()=>{\r\n this.hotkeydebounced.cancel();\r\n this.hotkeydebounced=null;\r\n this.hotkeydebouncedPayMode = \"\";\r\n },1000)\r\n }\r\n\r\n onHotKeyClickModal=(mode,index,boriginReturn)=>{\r\n const { PayStyle } = enumController.getEnumOj();\r\n let { brefund } = this.store;\r\n if(this.checkModeDisabled(mode.paymentType,brefund,boriginReturn)){\r\n return;\r\n }\r\n if(mode.paymentType==PayStyle.hyczk){\r\n this.appendCzkmode(boriginReturn);\r\n }else{\r\n this.editModal(index, mode.paymentType, boriginReturn)\r\n }\r\n }\r\n\r\n onHotKeyClick2=(index,mode,paymode,e)=>{\r\n if(this.hotkeydebouncedPayMode == mode){\r\n return;\r\n }\r\n this.store.changeClickFocusOnly(mode.paymentType);\r\n this.setCurrentFocusOnly(mode.paymentType);\r\n if(this.hotkeydebounced){\r\n this.hotkeydebounced.cancel();\r\n this.hotkeydebounced=null;\r\n }\r\n this.hotkeydebounced=_debounce(()=>{\r\n this.hotkeydebouncedPayMode = mode;\r\n this.onFocus(index, mode, paymode, e);\r\n },500,{\r\n 'leading': true,\r\n 'trailing': false\r\n });\r\n this.hotkeydebounced();\r\n setTimeout(()=>{\r\n this.hotkeydebounced.cancel();\r\n this.hotkeydebounced=null;\r\n this.hotkeydebouncedPayMode = \"\";\r\n },1000)\r\n }\r\n\r\n onHotKeyEnter = (e, notsettle) => {\r\n let { paymode, brefund, newStyle } = this.store;\r\n // if (this.hotkeydebouncedPayMode == paymode) {\r\n // return;\r\n // }\r\n if (this.hotkeydebounced) {\r\n this.hotkeydebounced.cancel();\r\n this.hotkeydebounced = null;\r\n }\r\n this.hotkeydebounced = _debounce(() => {\r\n // let { type, amount, totalVariety, totalQuantity, isReturn, quantityDetail,memberDisabled } = this.props\r\n let boriginReturn = this.context && this.context.viewModel && this.context.viewModel.data && JSON.getCellValue(this.context.viewModel.data, \"IsOriginalReturn\");\r\n let thePaymodes = newStyle ? _filter(paymode.thePaymodes, (m) => { return !(this.checkModeDisabled(m.paymentType, brefund, boriginReturn) && parseFloat(m.value) == 0); }) : paymode.thePaymodes;\r\n // 定义当前检测的paymode\r\n this.hotkeydebouncedPayMode = paymode;\r\n if (!notsettle && !this.checkSettleDisabled(paymode, thePaymodes)) {\r\n this.handleSettle();\r\n } else if ((thePaymodes || []).length > 0) {\r\n\r\n // 根据currentIndex = paymethodeId 获取当前支付方式位置\r\n let payIndex = -1;\r\n thePaymodes.forEach((paymodes,index)=>{\r\n if(paymodes.paymethodId == this.state.currentIndex) payIndex = index;\r\n });\r\n\r\n this.setFocusAndSelectionMode(thePaymodes,payIndex);\r\n }\r\n }, 500, {\r\n 'leading': true,\r\n 'trailing': false\r\n });\r\n this.hotkeydebounced();\r\n setTimeout(() => {\r\n this.hotkeydebounced && this.hotkeydebounced.cancel();\r\n this.hotkeydebounced = null;\r\n this.hotkeydebouncedPayMode = \"\";\r\n }, 1000)\r\n }\r\n\r\n\r\n setFocusAndSelectionMode = (thePaymodes,currentIndex) => {\r\n const { PayStyle } = enumController.getEnumOj();\r\n let displayPayModeList = [...thePaymodes];\r\n // 复制支付方式列表\r\n const SaoMaPayMode = displayPayModeList.find( mode => mode.paymentType == PayStyle.smzf);\r\n // 查找扫码支付\r\n if(SaoMaPayMode){\r\n // 如果扫码支付存在 则 排除微信支付宝\r\n displayPayModeList = displayPayModeList.filter( mode => mode.paymentType != PayStyle.zfb && mode.paymentType != PayStyle.wx )\r\n }\r\n // 查找到下一次enter键后的支付方式\r\n let paymodeOb = this.findHaveNoModlePayType(displayPayModeList,currentIndex);\r\n if(paymodeOb){\r\n // 获取焦点\r\n this.setFocusAndSelection(paymodeOb.mode.paymentType);\r\n }\r\n }\r\n\r\n\r\n\r\n /**\r\n *\r\n * @param {*} thePaymodes 支付方式列表\r\n * @param {*} currenIndex 当前支付方式下标\r\n * @param {*} symbol 从当前currenIndex开始 还是从当前currenIndex截止\r\n */\r\n findModlePayBySplice = (thePaymodes,currenIndex,symbol) =>{\r\n const { PayStyle } = enumController.getEnumOj();\r\n let findIndex = currenIndex;\r\n const endCurrentMode = thePaymodes.find((mode, index) => {\r\n findIndex++;\r\n return (symbol? index > currenIndex:index < currenIndex) &&\r\n mode.paymentType != PayStyle.hyczk &&\r\n mode.paymentType != PayStyle.djq &&\r\n mode.paymentType != PayStyle.jfdx\r\n });\r\n if(endCurrentMode) return { mode:endCurrentMode,index:findIndex}\r\n return null;\r\n }\r\n\r\n findHaveNoModlePayType = (thePaymodes,currenIndex) => {\r\n if(!thePaymodes || thePaymodes.length == 0) return null;\r\n const endCurrentModeOb = this.findModlePayBySplice(thePaymodes,currenIndex,true)\r\n if(endCurrentModeOb) return endCurrentModeOb;\r\n const startCurrentModeOb = this.findModlePayBySplice(thePaymodes,currenIndex,false)\r\n if(startCurrentModeOb) return startCurrentModeOb;\r\n return null\r\n }\r\n\r\n\r\n setFocusAndSelection = (key) => {\r\n const that=this;\r\n const { paymode } = this.store;\r\n const themode = _find(paymode.thePaymodes, (mode) => mode.paymentType === key);\r\n const index = (themode && themode.paymethodId) || -1;\r\n if (index !== -1) {\r\n setTimeout( ()=> {\r\n const input = document.getElementById(`inputS${index}`)\r\n that.setState({currentIndex:index});\r\n this.currentInput = input;\r\n setTimeout( ()=> {\r\n input.focus();\r\n input.setSelectionRange(0, input.value.length)\r\n }, 10)\r\n\r\n }, 200)\r\n }\r\n }\r\n\r\n settleUnReturn = async () => {\r\n const that = this;\r\n ModalWraper.confirm({\r\n className: 'tplus-confirm-modal',\r\n content: <div className='unReturn'><div className='title'>支付超时,需要重新查询支付结果!</div><div>若不重新查询,会出现顾客支付成功,但零售单收款不成功的情况。</div></div>,\r\n async onOk() {\r\n window.__queryingModal = openQueryingModal();\r\n let result = await that.store.querySettleResult();\r\n setTimeout(() => {\r\n if (window.__queryingModal) {\r\n window.__queryingModal.destroy()\r\n window.__queryingModal = null\r\n }\r\n }, 0)\r\n switch (result.Flag) {\r\n case \"0\"://成功\r\n that.store.setDtoID(result.ID);\r\n that.settleSuccess();\r\n break;\r\n case \"1\"://处理中\r\n that.settleUnReturn();\r\n // Message.info(\"结算正在处理中,请稍后再次查询。\");\r\n break;\r\n case \"2\"://失败\r\n Message.info(`结算失败,原因:${result.Message}。`);\r\n // that.settleCanceled();\r\n break;\r\n }\r\n },\r\n onCancel() {\r\n // this.settleCanceled();\r\n },\r\n });\r\n }\r\n settleCanceled=()=>{\r\n console.log('settlement--settleCanceled--调用清除数据==Focus==')\r\n this.props.clearVoucherData && this.props.clearVoucherData();\r\n this.cancelState();\r\n }\r\n\r\n settleSuccess = async () => {\r\n //提示成功\r\n const { PayStyle } = enumController.getEnumOj();\r\n let { amount, received, thePaymodes } = this.store.paymode;\r\n let { IdbusiType } = this.store.dto;\r\n let charge = this.store.paymode.charge;\r\n let openCashBox = !!_find(thePaymodes, (mode) => { return mode.paymentType == PayStyle.xianjin });\r\n // 判断双屏显示。\r\n const _this = this;\r\n const showTwoScreen = function (amount, received, charge) {\r\n const getScreenType = function () {\r\n let flag = false;\r\n if (_this.hasElectron === true || _this.isHorizontalSunMi) {\r\n let data = localStore.get('setting_setData') || [];\r\n data = data.filter(item => item.Name === 'EnableDoubleScreen');\r\n data = data && data.length > 0 ? data.shift() : null;\r\n if (data && data.Value === '1') {\r\n flag = true;\r\n }\r\n }\r\n return flag;\r\n }\r\n const params = {\r\n step: 3,\r\n data: {\r\n amount: amount,\r\n received: received,\r\n charge: charge\r\n }\r\n }\r\n let screenType = getScreenType();\r\n if (screenType === true) { //副屏-第二屏幕\r\n if (_this.isHorizontalSunMi) {\r\n window.sunMi_PresentationManager.sendMessageToSecondScreen(params);\r\n } else {\r\n nativeMs && nativeMs.setIpcRendererMethod('ReplyScreen', params);\r\n }\r\n setTimeout(() => { _this.props.onSettleSuccess && _this.props.onSettleSuccess({ openCashBox }) }, 1500)\r\n } else {\r\n _this.props.onSettleSuccess && _this.props.onSettleSuccess({ openCashBox });\r\n }\r\n }\r\n\r\n const { getSettleGift } = this.store;\r\n let resp1 = false;\r\n try {\r\n // 获取支付成功后礼包情况\r\n resp1 = await getSettleGift();\r\n } catch(e) {\r\n console.log(\"获取支付礼包getSettleGift失败\");\r\n }\r\n \r\n setTimeout(() => {\r\n if (window.__loadingModal) {\r\n window.__loadingModal.destroy()\r\n window.__loadingModal = null\r\n }\r\n let isXianjin = _this.state.isXianjin\r\n showTwoScreen(amount, received, charge);\r\n if (isXianjin) this.handleGuestShow(4, charge);\r\n _this.setState({\r\n noAlreadyWarn: true\r\n })\r\n \r\n let { MemberPoints, isMemberPointsReturn, isReturn } = _this.props;\r\n let message = \"支付成功\"\r\n if ((isReturn || isMemberPointsReturn) && Number(amount) == Number(0)) {\r\n message = \"退货成功\"\r\n } else if (MemberPoints && Number(amount) == Number(0)) {\r\n message = \"兑换成功\"\r\n }\r\n window.__successModal = showSuccessModal(amount, received, charge, _this.props.onModalClose, isXianjin, message, resp1 && resp1.data, stores, () => {\r\n _this.handleGuestShow(5)\r\n })\r\n this.setState({ isXianjin: false })\r\n this.cancelState();\r\n }, 0)\r\n }\r\n // 处理客显显示功能\r\n handleGuestShow = (dtype, value) => {\r\n if (this.hasElectron === false) return;\r\n let dt = localStore.get('portsetting_hardSet') || [];\r\n const { guestshow_enable, guestshow_clear, guestshow_welcome, guestshow_collect, guestshow_refund, guestshow_change } = dt || {};\r\n const hasSuccess = localStore && localStore.get('portsetting_hardSet_isSuccess');\r\n if (!guestshow_enable || (!!guestshow_enable && hasSuccess == '0')) return;\r\n let other = '';\r\n switch (dtype) {\r\n case 0: //欢迎\r\n other = guestshow_welcome;\r\n break;\r\n case 2: //退款\r\n other = (guestshow_refund + \"\").replace('[含税总金额]', Math.abs(value))\r\n break;\r\n case 3: //收款\r\n other = (guestshow_collect + \"\").replace('[含税总金额]', value)\r\n break;\r\n case 4: //找零\r\n other = (guestshow_change + \"\").replace('[找零金额]', getFixedNumber(value))\r\n break;\r\n case 5: //清除\r\n other = guestshow_clear;\r\n break;\r\n }\r\n let params = JSON.stringify({ price: '', qty: '', total: '', inv: '', wel: '', other: other })\r\n console.log(`Send客显sendDataCusDisp:状态-${dtype},参数-${params}`)\r\n HardwareAPI.sendDataCusDisp({ data: params, dataType: dtype }, ret => { console.log(`Return客显sendDataCusDisp:状态-${dtype},返回-${JSON.stringify(ret)}`) })\r\n }\r\n\r\n handleSettle = async (args) =>{\r\n this.setState({\r\n settleDisabled: true,\r\n })\r\n console.log(\"settlement.handleSettle开始执行,参数:\",+args);\r\n // let p=new Promise((res,rej)=>{\r\n // res(args);\r\n // });\r\n //\r\n // const testAsync = async (p) => {\r\n // let result = await p;\r\n // console.log(result);\r\n // }\r\n //\r\n // testAsync(p);\r\n const { PayStyle } = enumController.getEnumOj();\r\n const { paymode,brefund,boriginReturn,newStyle } = this.store;\r\n const isQuickPay = args === 'quickPay'\r\n const that =this;\r\n let status = false\r\n paymode.thePaymodes.forEach((v) => {\r\n if (v.paymentType === PayStyle.xianjin && v.value !== '0.00') {\r\n status = true\r\n }\r\n })\r\n this.setState({\r\n isXianjin: status ? true : false\r\n })\r\n if(that.checkCharge() && Math.abs(paymode.receivable)>that.props.initData(\"posChangeUpperAmount\")){\r\n Message.error('找零不能超过最大找零金额:'+getFixedNumber(that.props.initData(\"posChangeUpperAmount\"))+'元');\r\n this.setState({\r\n settleDisabled: false\r\n })\r\n return;\r\n }\r\n if(args !==\"zero\" && !newStyle){\r\n let zeromode=_find(paymode.thePaymodes,(mode)=>{\r\n return parseFloat(mode.value)==0 || (mode.exchangeRate!=1?parseFloat(mode.value2):parseFloat(mode.value))==0;\r\n })\r\n if(zeromode){\r\n this.setState({\r\n settleDisabled: false\r\n })\r\n Message.error(zeromode.name +' 的结算金额为零,不可以结算。');\r\n return;\r\n }\r\n }\r\n\r\n let promises = []\r\n const thePaymodes = _sortBy(newStyle ?_filter(paymode.thePaymodes,(mode)=>{return parseFloat(mode.value)!=0;}):paymode.thePaymodes, 'orderBy')\r\n if(isQuickPay ){\r\n let quickmode=thePaymodes[0];\r\n if (this.checkModeDisabled(quickmode.paymentType,brefund,boriginReturn)){\r\n this.setState({\r\n settleDisabled: false\r\n })\r\n Message.error('退款不能使用'+ quickmode.name +'结算,请使用其他结算方式!');\r\n return;\r\n }\r\n }\r\n _forEach(thePaymodes, (mode) => {\r\n if (!(boriginReturn && brefund) && (mode.paymentType == PayStyle.zfb || mode.paymentType == PayStyle.wx || mode.paymentType == PayStyle.smzf || mode.paymentType == PayStyle.SQBPAY || mode.paymentType == PayStyle.CSYH\r\n || (mode.paymentType == PayStyle.xianjin && isQuickPay))) {\r\n promises.push(that.inputConfirm(mode, isQuickPay))\r\n }\r\n });\r\n\r\n const commit = async (values) => {\r\n const result = await this.store.commit(this.props.bTest);\r\n if (result === true) {//成功\r\n that.settleSuccess();\r\n Promise.resolve()\r\n } else {\r\n this.setState({\r\n settleDisabled: false\r\n })\r\n //提示失败\r\n setTimeout(() => {\r\n if (window.__loadingModal) {\r\n window.__loadingModal.destroy()\r\n window.__loadingModal = null\r\n }\r\n //撤销支付\r\n }, 0)\r\n if (result && (result.Code || result.code)) {\r\n switch (result.Code || result.code) {\r\n case 'RE_Settle_UnReturn':\r\n console.log('settlement--RE_Settle_UnReturn--调用清除数据==Focus==')\r\n this.props.clearVoucherData && this.props.clearVoucherData();\r\n this.cancelState();\r\n break;\r\n case 'ECONNABORTED'://error.code === 'ECONNABORTED' && error.message.indexOf('timeout')\r\n result.message.indexOf('timeout') > -1 && that.settleUnReturn();\r\n break;\r\n }\r\n }\r\n if(isQuickPay){\r\n that.props.onCancelSettle && that.props.onCancelSettle();\r\n that.cancelState();\r\n }\r\n\r\n await Promise.reject()\r\n }\r\n }\r\n\r\n async function handleUserInputs(promises) {\r\n let results = []\r\n try {\r\n for (let p of promises) {\r\n const result = await p\r\n results.push(result)\r\n }\r\n window.__loadingModal = openLoadingModal()\r\n await commit(results);\r\n } catch (err) {\r\n // notification.open({\r\n // message: '错误',\r\n // description: '失败, 请重新结算',\r\n // });\r\n }\r\n }\r\n\r\n handleUserInputs(promises)\r\n }\r\n\r\n handleCzk = async () =>{\r\n const that =this;\r\n const curmode = this.store.paymode.currentMode;\r\n let promises = [];\r\n const { isNewRetailBCPos } = platform || {};\r\n if (isNewRetailBCPos) {\r\n if(curmode.value>0){\r\n const { PayStyle } = enumController.getEnumOj();\r\n if (curmode.paymentType === PayStyle.hyczk) {\r\n promises.push(that.inputPwd(curmode));\r\n }\r\n }\r\n } else {\r\n if(curmode.member.needPwd && curmode.value>0){\r\n promises.push(that.inputPwd(curmode));\r\n }\r\n }\r\n\r\n const commit = async (values)=> {\r\n //密码校验\r\n const result= values.length>0 ? (await that.store.validePwd(values[0])) : \"\";\r\n if(result==\"\"){//成功\r\n //返回\r\n that.setCurrentFocusAndAddPay(curmode.paymentType);\r\n Promise.resolve()\r\n }else{\r\n //Message.info(\"密码不正确\");\r\n await Promise.reject(result)\r\n }\r\n }\r\n\r\n async function handleUserInputs(promises) {\r\n let results = []\r\n try {\r\n for (let p of promises) {\r\n const result = await p\r\n results.push(result)\r\n }\r\n await commit(results);\r\n } catch (err) {\r\n if(err!=\"cancelpwd\"){\r\n Message.error(err);\r\n setTimeout(()=>{that.handleCzk();},500);\r\n }\r\n }\r\n }\r\n\r\n handleUserInputs(promises)\r\n }\r\n //that[`inputS${paymode.paymethodId}`]\r\n fKeyboardOnOk = (paymethodeId) => {\r\n const input=this[`inputS${paymethodeId}`].input;\r\n return (e)=>{\r\n input && input.blur();\r\n Keyboard.close();\r\n }\r\n }\r\n fKeyboardOnClose = (paymethodeId) => {\r\n const input=this[`inputS${paymethodeId}`].input;\r\n return (e)=>{\r\n input && input.blur();\r\n Keyboard.close();\r\n }\r\n }\r\n\r\n keyboardOnOk = (e) => {\r\n this.inputkey && this[this.inputkey] && this[this.inputkey].input && this[this.inputkey].input.blur();\r\n Keyboard.close();\r\n }\r\n\r\n keyboardOnClose = (e) => {\r\n this.inputkey && this[this.inputkey] && this[this.inputkey].input && this[this.inputkey].input.blur();\r\n Keyboard.close();\r\n }\r\n changefn=(e)=>{\r\n console.log(e)\r\n }\r\n setConfirmPwdValue = (value) => {\r\n this.setState({\r\n confirmPwd: value\r\n })\r\n }\r\n inputPwd = async (paymode) => {\r\n const that = this\r\n const { confirmPwd } = this.state;\r\n return new Promise(function (resolve, reject) {\r\n const modal = asyncModal({\r\n onPressEnter: () => {\r\n Keyboard.close();\r\n const v = _trim(that[`inputAmount`]['input']['value']);\r\n // if (v !== '') {\r\n modal.destroy()\r\n const { confirmPwd } = that.state || {};\r\n setTimeout(() => {\r\n paymode.authCode=v;\r\n resolve({\r\n id:paymode.member.id,\r\n pwd: confirmPwd,\r\n })\r\n }, 100)\r\n // } else {\r\n // Message.info('请输入密码');\r\n // throw \"error\";\r\n // }\r\n },\r\n onPressEsc: () => {\r\n Keyboard.close();\r\n reject('cancelpwd')\r\n },\r\n maskClosable: false,\r\n keyboard: false,\r\n closable: true,\r\n title:paymode.name,\r\n width:450,\r\n className: (that.isHorizontalSunMi || !that.isMobileEnvironment) ? 'pwdModal' : 'pwdModal extraHeight',\r\n // 储值卡结账时显示为密码框\r\n content: (<div className=\"scanInput\">\r\n <div>\r\n <span className=\"label\">应收金额:</span><span className=\"yfje\">{getFixedNumber(paymode.value)}</span>\r\n </div>\r\n <div className=\"pwd\">\r\n <span className=\"label\">储值余额密码:</span>\r\n <span>\r\n {/* <input type=\"text\" style={{width:'0px',marginLeft:'20px'}}></input> */}\r\n {/* <Input\r\n className=\"content\"\r\n style={{marginLeft:'-20px'}}\r\n placeholder=\"输入密码\"\r\n ref={input => that[`inputS${paymode.paymethodId}`] = input}\r\n onChange={(e) => {\r\n this.setState({\r\n confirmPwd: e.target.value\r\n })\r\n }}\r\n value={confirmPwd}\r\n onFocus={(e)=>{\r\n const inputTarget = that[`inputS${paymode.paymethodId}`].input;\r\n Keyboard.open((v)=>{\r\n const value = Keyboard.getNewValue(inputTarget, inputTarget.value, v);\r\n console.log('zlf',inputTarget, inputTarget.value);\r\n inputTarget.value=value;\r\n this.setState({\r\n confirmPwd: e.target.value\r\n })\r\n }, that.fKeyboardOnOk(paymode.paymethodId), that.fKeyboardOnClose(paymode.paymethodId))()\r\n }\r\n }\r\n onBlur={(e)=>{\r\n this.setState({\r\n confirmPwd: e.target.value\r\n })\r\n Keyboard.close();\r\n }}\r\n /> */}\r\n <NumkeyboardPassword\r\n className=\"content\"\r\n newType='positive'\r\n bordered\r\n placeholder=\"请输入6位数字密码\"\r\n style={{ width: 266, height: 32 }}\r\n maxLength={6}\r\n ref={input => that.inputAmount = input}\r\n onChange={value => that.setConfirmPwdValue(value)}\r\n // onBlur={value => that.handleConfirmBlur}\r\n />\r\n </span>\r\n </div>\r\n <div className=\"buttonRegion\">\r\n <div className=\"fr\">\r\n <Button size=\"large\" onClick={() => {\r\n modal.destroy()\r\n reject('cancelpwd')//\r\n }}>取消\r\n </Button>\r\n <Button\r\n type=\"primary\" size=\"large\" onClick={() => {\r\n const v = _trim(that[`inputAmount`]['input']['value'])\r\n const { confirmPwd } = that.state || {};\r\n // if (v !== '') {\r\n modal.destroy()\r\n // if (isQuickPay) {\r\n // window.__loadingModal = openLoadingModal()\r\n // }\r\n setTimeout(() => {\r\n paymode.authCode=v;\r\n resolve({\r\n id:paymode.member.id,\r\n pwd: confirmPwd,\r\n })\r\n }, 100)\r\n // } else {\r\n // Message.info('请输入密码');\r\n // }\r\n }}>确定\r\n </Button>\r\n </div>\r\n </div>\r\n </div>),\r\n })\r\n // 扫码框自动聚焦\r\n setTimeout(() => {\r\n that[`inputS${paymode.paymethodId}`] && that[`inputS${paymode.paymethodId}`].input.focus();\r\n that.inputAmount && that.inputAmount.input.focus();\r\n }, 200)\r\n })\r\n }\r\n\r\n btnDebounced = (type, bquick) => {\r\n const { PayStyle } = enumController.getEnumOj();\r\n const { paymode,brefund,boriginReturn,newStyle } = this.store;\r\n let status = false;\r\n paymode.thePaymodes.forEach((v) => {\r\n if (v.paymentType === PayStyle.xianjin && v.value !== '0.00') {\r\n status = true\r\n }\r\n })\r\n this.setState({\r\n isXianjin: status ? true : false\r\n })\r\n\r\n if (this.btndebounced) {\r\n return;\r\n }\r\n this.btndebounced = _debounce(() => {\r\n if (bquick) {\r\n this.quickSettle(type);\r\n } else {\r\n this.showModal();\r\n }\r\n }, 1000, {\r\n 'leading': true,\r\n 'trailing': false\r\n });\r\n this.btndebounced();\r\n setTimeout(() => {\r\n this.btndebounced.cancel();\r\n this.btndebounced = null;\r\n }, 2000)\r\n }\r\n\r\n onCzkChange=(v)=>{\r\n // console.log(\"czk change:\"+new Date().toLocaleTimeString())\r\n const { isNewRetailBCPos } = platform || {};\r\n if (!isNewRetailBCPos) {\r\n this.store.paymode.currentMode.member.setCardNo(v);\r\n }\r\n // if(this.debounced){\r\n // this.debounced.cancel();\r\n // this.debounced=null;\r\n // // console.log(\"debounce canceled\");\r\n // }\r\n // this.debounced=_debounce(()=>{this.loadCzk(v)},2000);\r\n // this.debounced();\r\n }\r\n czkKeyboardOnOk = (e) => {\r\n this.czkInput.input.blur();\r\n Keyboard.close();\r\n this.loadCzk(this.czkInput.input[\"value\"]);\r\n }\r\n czkKeyboardOnClose = (e) => {\r\n this.czkInput && this.czkInput.input.blur();\r\n Keyboard.close();\r\n }\r\n\r\n onDjqChange=(v,isKeyBorad = false)=>{\r\n this.inputdjq.input.value=v;\r\n if(this.debounced){\r\n this.debounced.cancel();\r\n this.debounced=null;\r\n // console.log(\"debounce canceled\");\r\n }\r\n if(!isKeyBorad){\r\n this.debounced=_debounce(()=>{this.addDjq()},2000);\r\n this.debounced();\r\n }\r\n }\r\n djqKeyboardOnOk = (e) => {\r\n this.inputdjq.input && this.inputdjq.input.blur();\r\n Keyboard.close();\r\n this.addDjq();\r\n // this.loadCzk(this.czkInput.input[\"value\"]);\r\n }\r\n djqKeyboardOnClose = (e) => {\r\n this.inputdjq.input && this.inputdjq.input.blur();\r\n Keyboard.close();\r\n }\r\n\r\n checkCharge = () => {\r\n const { PayStyle } = enumController.getEnumOj();\r\n const { paymode } = this.store;\r\n const themode=_find(paymode.thePaymodes, mode=>mode.paymentType===PayStyle.xianjin);\r\n return (paymode.receivable < 0 && themode && themode.value>=Math.abs(paymode.receivable));\r\n }\r\n\r\n checkThepaymode(key){\r\n return _findIndex(this.store.paymode.thePaymodes,{paymentType:key})>-1;\r\n }\r\n\r\n onKeyboardChange(key) {\r\n if (this.currentInput) {\r\n const value = Keyboard.getNewValue(this.currentInput, this.currentInput.value, key, true);\r\n if (!isNaN(value) || value == '-') {\r\n this.currentInput.value = value;\r\n this.store.changeValue(this.state.currentIndex, value, false);\r\n }\r\n }\r\n }\r\n\r\n renderToolbtn(mode,index){\r\n const { PayIcon , PayStyle} = enumController.getEnumOj();\r\n let { isReturn } = this.props;\r\n let { paymode, brefund, boriginReturn } = this.store;\r\n let hasSMZF = _find(paymode.paymodes, (item) => { return item.paymentType === PayStyle.smzf});\r\n //同时存在微信、支付宝(或者收钱吧)、扫码支付三种方式,在非退货模式下,隐藏微信、支付宝。\r\n let hotkeyIndex = index;\r\n if (!isReturn && hasSMZF) {\r\n if (mode.paymentType == PayStyle.wx || mode.paymentType == PayStyle.zfb) {\r\n return null;\r\n } else {\r\n let theArr = _filter(paymode.paymodes, t => { return t.paymentType != PayStyle.wx && t.paymentType != PayStyle.zfb })\r\n hotkeyIndex = _findIndex(theArr, m => { return m.paymentType == mode.paymentType })\r\n }\r\n }\r\n\r\n // const classNames = classnames({ 'paymode': true, 'paymodeSelected': this.checkThepaymode(mode.paymentType), 'paymodeDisabled': this.checkModeDisabled(mode.paymentType, brefund, boriginReturn)});\r\n\r\n const paymodeDisabled = this.checkModeDisabled(mode.paymentType, brefund, boriginReturn)? 'paymodeDisabled':'';\r\n const paymodeSelected = this.checkThepaymode(mode.paymentType)? 'paymodeSelected':'';\r\n return (\r\n <div key={index + \"\"} className={paymodeDisabled+' '+paymodeSelected + ' paymode hotkey_' + this.compoundHotkeysList[hotkeyIndex]} onClick={() => { this.onTabsClick(mode.paymentType) }}>\r\n <div className=\"logo\"><div className=\"icon bg-subsidiary-gray-color4\"><Ticon className=\"primary-color\" type={PayIcon[mode.paymentType] || PayIcon['default']} /></div></div>\r\n <div className=\"text primary-color\">{mode.name.length > 8 ? _truncate(mode.name, { length: 5, omission: '' }) + '...' : mode.name}</div>\r\n <div className=\"hotkey\">{this.isHorizontalPad ? '' : this.compoundHotkeysList[hotkeyIndex] || ''}</div>\r\n </div>\r\n )\r\n }\r\n xianjinChange=(paymethodId,val,receivable)=>{\r\n const inputTarget=this[`inputS${paymethodId}`].input.input;\r\n const inputTarget2=this[`inputS${paymethodId}2`];\r\n let value=val;\r\n if(isNaN(value) && value!=='-'){\r\n value=parseFloat(receivable)+parseFloat(inputTarget2.innerHTML);\r\n }\r\n inputTarget.value=value;\r\n inputTarget2.innerHTML=getFixedNumber(parseFloat(value||0)-parseFloat(receivable));\r\n }\r\n\r\n //移动端:扫描商品\r\n changeScanProduct = () => {\r\n if (this.scanObj) this.scanObj.startScan()\r\n }\r\n onScanResult = (val, modal, el) => {\r\n let _this = this[`${el}`];\r\n if (_this) _this.setStateValue(val, () => {\r\n if (modal) modal.submitHandler()\r\n })\r\n }\r\n onScanCzkResult = (val) => {\r\n let _this = this;\r\n this.onCzkChange(val);\r\n setTimeout(() => { _this.loadCzk(val) }, 0)\r\n }\r\n\r\n //优惠券\r\n onScanDjqResult = (val) => {\r\n let el = this.inputdjq;\r\n if (el && el.input) el.input.value = val;\r\n this.addDjq(val);\r\n }\r\n\r\n //现金支付-存在权限控制\r\n getXianjinPayment = (payType, value) => {\r\n const { PayStyle } = enumController.getEnumOj();\r\n const { isManualIntoAmount } = this.state\r\n return payType === PayStyle.xianjin && isManualIntoAmount === \"1\" && value > 0 ? \"\" : value\r\n }\r\n\r\n getXianjinBalance = (payType, value) => {\r\n const { PayStyle } = enumController.getEnumOj();\r\n //找零金额-存在权限控制\r\n const { isManualIntoAmount } = this.state\r\n return payType === PayStyle.xianjin && isManualIntoAmount === \"1\" && value > 0 ? getFixedNumber(0 - value) : '0.00'\r\n }\r\n\r\n inputConfirm = (paymode, isQuickPay) => {\r\n const that = this\r\n const isStoredValueCard = false\r\n let isManualIntoAmount\r\n // 付款弹窗\r\n return new Promise(function (resolve, reject) {\r\n const { PayStyle , PayIcon2} = enumController.getEnumOj();\r\n const modal = asyncModal({\r\n onPressEnter: () => {\r\n if (paymode.paymentType == PayStyle.xianjin) {\r\n let zl = parseFloat(that[`inputS${paymode.paymethodId}2`].innerHTML);\r\n if (zl < 0) {\r\n Message.error('支付金额不能小于应收金额');\r\n throw \"error\";\r\n } else if (zl > that.props.initData(\"posChangeUpperAmount\")) {\r\n Message.error('找零不能超过最大找零金额:' + getFixedNumber(that.props.initData(\"posChangeUpperAmount\")) + '元');\r\n throw \"error\";\r\n }\r\n }\r\n const v = _trim(that[`inputS${paymode.paymethodId}`]['input']['input'].getAttribute('value'))\r\n if (v !== '') {\r\n modal.destroy()\r\n setTimeout(() => {\r\n if (paymode.paymentType == PayStyle.xianjin) {\r\n that.store.changeValue(paymode.paymethodId, v, false);\r\n } else {\r\n paymode.authCode = v;\r\n }\r\n resolve();\r\n }, 100)\r\n } else {\r\n if (paymode.paymentType == PayStyle.xianjin){\r\n Message.error('请输入付款金额');\r\n } else {\r\n Message.error('请录入或扫描付款码');\r\n }\r\n throw \"error\";\r\n }\r\n },\r\n onPressEsc: () => {\r\n Keyboard.close();\r\n that.store.bquick && that.props.onCancelSettle && that.props.onCancelSettle();\r\n reject(`支付方式: ${paymode.name}失败`)\r\n },\r\n maskClosable: false,\r\n keyboard: false,\r\n closable: false,\r\n backdropStyle: {\r\n 'z-index': '1004'\r\n },\r\n width: 440,\r\n content: (\r\n <div className=\"scanInput\">\r\n <div className={classnames({ \"icon primary-color\": true, [\"color\" + paymode.paymentType]: true })}><Ticon type={PayIcon2[paymode.paymentType]} /></div>\r\n <div className=\"title\">{paymode.name}</div>\r\n <div>\r\n <span className=\"label\">应收金额:</span><span className=\"yfje\">{paymode.value}</span>\r\n </div>\r\n {\r\n (paymode.paymentType == PayStyle.xianjin) &&\r\n <div className='contentzf'>\r\n <span className=\"contentlabel\">{paymode.name}支付:</span>\r\n <span>\r\n <NumKeyboard\r\n className=\"content\"\r\n type='text'\r\n placeholder='请输入付款金额'\r\n disabled={paymode.value < 0}\r\n defaultValue={that.getXianjinPayment(paymode.paymentType, paymode.value)}\r\n onChange={(value) => { that.xianjinChange(paymode.paymethodId, value, paymode.value); }}\r\n ref={input => that[`inputS${paymode.paymethodId}`] = input}\r\n onBlur={(e) => {\r\n const inputTarget = that[`inputS${paymode.paymethodId}`].input.input;\r\n if (that.state.isManualIntoAmount === \"1\" && paymode.paymentType === PayStyle.xianjin && inputTarget.value === \"\") {\r\n return;\r\n }\r\n inputTarget.value = getFixedNumber(inputTarget.value)\r\n }}\r\n />\r\n </span>\r\n </div>\r\n }\r\n {\r\n (paymode.paymentType == PayStyle.xianjin) &&\r\n <div className=\"zlje\">\r\n <span className=\"label\">找零金额:</span>\r\n <span className=\"yfje\" ref={input => that[`inputS${paymode.paymethodId}2`] = input}>{that.getXianjinBalance(paymode.paymentType, paymode.value)}</span>\r\n </div>\r\n }\r\n {\r\n (paymode.paymentType == PayStyle.wx || paymode.paymentType == PayStyle.zfb || paymode.paymentType == PayStyle.smzf || paymode.paymentType == PayStyle.SQBPAY || paymode.paymentType == PayStyle.CSYH) &&\r\n <div className='contentzf'>\r\n <span className=\"contentlabel\">{paymode.name}支付:</span>\r\n <span>\r\n <NumKeyboardScan\r\n className=\"content \"\r\n type='text'\r\n placeholder=\"扫描或输入付款码\"\r\n ref={input => that[`inputS${paymode.paymethodId}`] = input} />\r\n </span>\r\n {\r\n that.isHorizontalPad &&\r\n <span className='contentscan'>\r\n <Ticon type='saomiao1' className='icon' onClick={that.changeScanProduct} />\r\n <Scan ref={scan => that.scanObj = scan} onChange={value => that.onScanResult(value, modal, `inputS${paymode.paymethodId}`)} />\r\n </span>\r\n }\r\n </div>\r\n }\r\n <div className={classnames({ \"buttonRegion\": true, \"buttonRegion2\": paymode.paymentType == PayStyle.xianjin })}>\r\n <div className=\"fr\">\r\n <Button\r\n onClick={() => {\r\n modal.destroy()\r\n that.setState({\r\n settleDisabled: false\r\n })\r\n that.store.bquick && that.props.onCancelSettle && that.props.onCancelSettle();\r\n that.store.delPay(paymode.paymethodId);\r\n reject(`支付方式: ${paymode.name}失败`)\r\n }}>取消</Button>\r\n <Button\r\n type=\"primary\"\r\n onClick={() => {\r\n if (paymode.paymentType == PayStyle.xianjin) {\r\n let zl = parseFloat(that[`inputS${paymode.paymethodId}2`].innerHTML);\r\n if (zl < 0) {\r\n if (that[`inputS${paymode.paymethodId}`].input.input.value === '') {\r\n Message.error('请输入付款金额');\r\n } else {\r\n Message.error('支付金额不能小于应收金额');\r\n }\r\n return;\r\n } else if (zl > that.props.initData(\"posChangeUpperAmount\")) {\r\n Message.error('找零不能超过最大找零金额:' + getFixedNumber(that.props.initData(\"posChangeUpperAmount\")) + '元');\r\n return;\r\n }\r\n }\r\n const v = _trim(that[`inputS${paymode.paymethodId}`]['input']['input'].getAttribute('value'))\r\n\r\n if (v !== '') {\r\n modal.destroy()\r\n setTimeout(() => {\r\n if (paymode.paymentType == PayStyle.xianjin) {\r\n that.store.changeValue(paymode.paymethodId, v, false);\r\n } else {\r\n paymode.authCode = v;\r\n }\r\n resolve();\r\n }, 100)\r\n } else {\r\n if (paymode.paymentType == PayStyle.xianjin){\r\n Message.error('请输入付款金额');\r\n } else {\r\n Message.error('请录入或扫描付款码');\r\n }\r\n }\r\n }}>确定</Button>\r\n </div>\r\n </div>\r\n </div>),\r\n })\r\n // 扫码框自动聚焦\r\n setTimeout(() => {\r\n // console.log(that[`inputS${paymode.paymethodId}`].input, '-------------------')\r\n that[`inputS${paymode.paymethodId}`].input.input.focus()\r\n }, 360)\r\n })\r\n }\r\n\r\n\r\n checkCurrentModeHaveMutex = (type) => {\r\n let { paymode,newStyle } = this.store;\r\n const { PayStyle } = enumController.getEnumOj();\r\n const payTypeList = [PayStyle.SQBPAY,PayStyle.CSYH,PayStyle.smzf];\r\n const payTypeFilterList = payTypeList.filter( filterType => filterType !== type);\r\n // 主要排查当前的支付方式 是否是包含在互斥的支付方式\r\n if(payTypeFilterList.length === payTypeList.length) return false;\r\n const disableUserMode = _find(paymode.thePaymodes,(mode)=>{\r\n const haveUseTypeList = payTypeFilterList.find(filterType =>{\r\n // 单据模式的情况还有要判断互斥的支付方式是否有值 触屏模式直接判断是否选择了某个支付方式\r\n return filterType == mode.paymentType && (newStyle? mode.value != 0 :true)\r\n });\r\n // 如果查找到互斥目标支付方式并且不是当前支付方式 返回true\r\n if(mode.paymentType !== type && haveUseTypeList && haveUseTypeList.length != 0) return true\r\n })\r\n if(disableUserMode) return true\r\n return false\r\n }\r\n\r\n checkModeDisabled=(type,brefund,boriginReturn)=>{\r\n const { PayStyle } = enumController.getEnumOj();\r\n return (((brefund && (type==PayStyle.wx || type==PayStyle.zfb || type==PayStyle.smzf || type==PayStyle.jfdx || type==PayStyle.djq || type==PayStyle.SQBPAY || type==PayStyle.CSYH))\r\n || (boriginReturn && type==PayStyle.hyczk))\r\n && !(boriginReturn && (type==PayStyle.wx || type==PayStyle.zfb))) || this.checkCurrentModeHaveMutex(type) ;\r\n }\r\n\r\n checkSettleDisabled=(paymode,thePaymodes)=>{\r\n const { PayStyle } = enumController.getEnumOj();\r\n console.log(\"settlement.checkSettleDisabled开始执行,参数:\",{paymode,thePaymodes})\r\n if(paymode.amount==0 && paymode.received==0){\r\n console.log(\"settlement.checkSettleDisabled返回结果:\",false)\r\n return false;\r\n }\r\n if(this.store.brefund){\r\n let result=!(paymode.receivable==0 && thePaymodes.length>0);\r\n console.log(\"settlement.checkSettleDisabled返回结果:\",result)\r\n return result;\r\n }\r\n let xj=_find(thePaymodes,(mode)=>{return mode.paymentType==PayStyle.xianjin});\r\n let enabled=paymode.receivable==0 && thePaymodes.length>0;\r\n if(xj && xj.value!=0){\r\n enabled=paymode.receivable<=0 && thePaymodes.length>0 && (Math.abs(paymode.receivable)<xj.value);\r\n }\r\n console.log(\"settlement.checkSettleDisabled返回结果:\",!enabled);\r\n const { settleDisabled } = this.state;\r\n return !enabled || settleDisabled;\r\n }\r\n\r\n changeDecimalBuZero = (number, bitNum) => {\r\n if (bitNum == 0) return number;\r\n var f_x = parseFloat(number);\r\n if (isNaN(f_x)) {\r\n return '';\r\n }\r\n let newBitNum = Math.pow(10,bitNum)\r\n f_x = Math.round(number * newBitNum) / newBitNum;\r\n let s_x = f_x.toString();\r\n let pos_decimal = s_x.indexOf('.');\r\n if (pos_decimal < 0) {\r\n pos_decimal = s_x.length;\r\n s_x += '.';\r\n }\r\n while (s_x.length <= pos_decimal + bitNum) {\r\n s_x += '0';\r\n }\r\n return s_x;\r\n }\r\n // 单据模式下编辑储值卡\r\n editCzkModal = () => {\r\n const { PayStyle } = enumController.getEnumOj();\r\n _find(this.store.paymode.thePaymodes,(mode)=>{\r\n if (mode.paymentType==PayStyle.hyczk) {\r\n this.store.setCurrentMode(mode.paymethodId)\r\n }\r\n })\r\n \r\n this.setState({\r\n czkVisible: true\r\n })\r\n let { currentMode } = this.store.paymode;\r\n setTimeout(() => {\r\n if(!currentMode.member || !currentMode.member.id){\r\n this.czkInput && this.czkInput.input.focus()\r\n }else{\r\n if(this.inputCzkAmount && this.inputCzkAmount.input){\r\n this.inputCzkAmount.input.focus();\r\n this.inputCzkAmount.input.setSelectionRange(0, this.inputCzkAmount.input.value.length);\r\n }\r\n }\r\n }, 350)\r\n }\r\n\r\n paymodesCarouselList = (params,paymodes,carouselStart,CarouseOut) => {\r\n const CarouselTp = CarouseOut || Carousel\r\n const newParams = CarouseOut?{}:params\r\n const mapList = [];\r\n paymodes.forEach((item,index)=>{\r\n // 整除则新增轮播页面\r\n if(index % carouselStart === 0){\r\n mapList[Math.floor(index/carouselStart)] = [];\r\n }\r\n mapList[Math.floor(index/carouselStart)].push(item);\r\n })\r\n return <CarouselTp vertical dots='true' touchMove='true' {...newParams}>\r\n {_map(mapList, (modeList, index) => {\r\n return <div>\r\n {\r\n _map(modeList, (mode, modeIndex) => {\r\n return this.renderToolbtn(mode, index*carouselStart+modeIndex)\r\n })\r\n }\r\n </div>\r\n })}\r\n </CarouselTp>\r\n }\r\n\r\n render() {\r\n const { PayIcon , PayIcon2 , PayStyle , Differentiate} = enumController.getEnumOj();\r\n const { btnDissabled } = this.state;\r\n const { isNewRetailBCPos } = platform || {};\r\n let { paymode, brefund,newStyle } = this.store;\r\n let { type, amount, totalVariety, totalQuantity, isReturn, quantityDetail,memberDisabled, noIsMinAmount } = this.props\r\n // 原单退货\r\n let boriginReturn=this.context && this.context.viewModel && this.context.viewModel.data && JSON.getCellValue(this.context.viewModel.data, \"IsOriginalReturn\");\r\n let totalTaxAmount = this.context && this.context.viewModel && this.context.viewModel.data && this.context.viewModel.data.TotalTaxAmount;\r\n // 单据模式\r\n let thePaymodes=newStyle?_filter(paymode.thePaymodes,(m)=>{return !(this.checkModeDisabled(m.paymentType,brefund,boriginReturn)&& parseFloat(m.value)==0);}):paymode.thePaymodes;\r\n let { paymodes, settle, currentMode } =paymode;\r\n // 积分兑换 总积分\r\n let ExchangeIntegral = this.context && this.context.viewModel && this.context.viewModel.data.ExchangeIntegral;\r\n\r\n let _hasSMZF = _find(paymodes, (item) => { return item.paymentType === PayStyle.smzf });\r\n\r\n //同时存在微信、支付宝、扫码支付三种方式,在非退货模式下,隐藏微信、支付宝。\r\n if (!isReturn && _hasSMZF) {\r\n paymodes = paymodes.filter((mode)=>{\r\n if (mode.paymentType == PayStyle.wx || mode.paymentType == PayStyle.zfb) return null;\r\n return true;\r\n })\r\n }\r\n\r\n\r\n const quickPay =boriginReturn?[]: _filter(paymodes, paymode => paymode.isQuick);\r\n const productsIsEmpty = (type!=1 && this.context.viewModel.data.RetailDetails.length == 0) || (type==1 && parseFloat(amount || 0) <= 0) || memberDisabled || noIsMinAmount;\r\n const moreToolbtns=[];\r\n const params = {\r\n pagination: {\r\n el: '.swiper-pagination',\r\n },\r\n spaceBetween: 30\r\n }\r\n const carouselStart = 10;\r\n const carouselStart2 = 8;\r\n const currentIndex = this.state.currentIndex;\r\n const hasmember = currentMode && currentMode.member && currentMode.member.id;\r\n let quantity1 = 0, quantity2 = 0, quantity3 = 0, quantity4 = 0;\r\n let sumQuantity = 0;//数量总和的值,包括称重的。\r\n let { buyQuantity = 0, returnQuantity = 0 } = quantityDetail || {};\r\n let quantityPrecision = PosInitData(\"QuantityPrecision\");\r\n quantityPrecision = quantityPrecision ? parseInt(quantityPrecision) : '';\r\n if (this.props.showAmount) {\r\n quantity1 = totalVariety || this.context.viewModel.data.RetailDetails.length;\r\n quantity2 = this.changeDecimalBuZero(totalQuantity, quantityPrecision);\r\n quantity3 = this.changeDecimalBuZero(buyQuantity, quantityPrecision);\r\n quantity4 = this.changeDecimalBuZero(returnQuantity, quantityPrecision);\r\n let sumRetailDetails = this.context && this.context.viewModel && this.context.viewModel.data.RetailDetails;\r\n if (sumRetailDetails && sumRetailDetails.length > 0) {\r\n sumRetailDetails.forEach(v => {\r\n sumQuantity += Math.abs(v.Quantity);\r\n })\r\n }\r\n sumQuantity = this.changeDecimalBuZero(sumQuantity, quantityPrecision);\r\n }\r\n return (\r\n <div className=\"billingSettlement\" ref={r => this.billingSettlementDocumnet = r}>\r\n {\r\n this.props.MemberPoints ?\r\n (\r\n <div className=\"receivable2\">\r\n <div className=\"text\">本次应收:</div>\r\n <div className={classnames({ \"amount\": true, \"smallfont\": Math.abs(totalTaxAmount) > 100000 })}>{getFixedNumber(totalTaxAmount)}</div>\r\n <div className='total'>{`数量合计${quantity2}`}</div>\r\n <div className='total'>{`积分合计${ExchangeIntegral || 0}`}</div>\r\n </div>\r\n )\r\n :\r\n (\r\n this.props.showAmount &&\r\n <div className=\"receivable\">\r\n <div className='summary'>\r\n <div className=\"text\">本次应收:</div>\r\n <div className={classnames({ \"amount\": true, \"smallfont\": Math.abs(totalTaxAmount) > 100000 })}>{getFixedNumber(totalTaxAmount)}</div>\r\n </div>\r\n {\r\n isReturn === true ?\r\n <div className=\"remark1\">\r\n <span>{`共${quantity1}种`}</span>\r\n <span className='span'>销</span><span>{quantity3}</span><span>件</span>\r\n <span className='span'>退</span><span>{quantity4}</span><span>件</span>\r\n <span className='span'>合计</span><span>{sumQuantity}</span>\r\n </div>\r\n :\r\n <div className=\"remark2\">\r\n <span>{`共${quantity1}种`}</span>\r\n <span className=\"span\">{quantity2}</span><span>件</span>\r\n <span className=\"span\">合计</span><span>{sumQuantity}</span>\r\n </div>\r\n }\r\n </div>\r\n )\r\n }\r\n <div className=\"btns\">\r\n {\r\n !this.isHorizontalPad && !this.props.MemberPoints &&\r\n _map(quickPay, (p, i) => {\r\n let iconclass = PayIcon2[p.paymentType] ? `color${p.paymentType}` : \"primary-color\";\r\n return (\r\n <Button className={classnames({ \"quick\": true, \"quick2\": type==1 })} key={`paymentType_${p.paymentType}`} onClick={() => { this.btnDebounced(p.paymentType, true) }}\r\n disabled={productsIsEmpty || (type!=1 && this.checkModeDisabled(p.paymentType, (this.context.viewModel.data.TotalTaxAmount || 0 - this.context.viewModel.data.OnlinePaymentAmount || 0) < 0, boriginReturn))}>\r\n <div className={classnames({ [iconclass]: true, \"icon\": true })}><Ticon type={PayIcon2[p.paymentType] || PayIcon2['default']} /></div>\r\n <div className=\"text\">{p.name.length > 8 ? _truncate(p.name, { length: 7, omission: '' }) + '...' : p.name}</div>\r\n </Button>)\r\n })\r\n }\r\n <Button key=\"settle\" className={classnames({ \"settle\": true, \"settle2\": type == 1,\"settleStorage\" :true ,'primary-btn': true })} onClick={() => { this.btnDebounced() }} disabled={productsIsEmpty}>{this.props.isMemberPoints ? '立即兑换' : this.props.isMemberPointsReturn ? '退货': settle.name}</Button>\r\n </div>\r\n {type!=1 && !newStyle && <Drawer\r\n title=\"复合结算\"\r\n width=\"600px\"\r\n placement=\"right\"\r\n maskClosable={false}\r\n closable={false}\r\n onClose={this.handleCancel}\r\n visible={this.state.visible}\r\n destroyOnClose={true}\r\n className={`settlement-wraper`}\r\n >\r\n <div className= {`settlement ${hotKey.hotKeyBindClass('5')}`}>\r\n <div className={classnames({ \"toolbar bg-subsidiary-gray-color4\": true, \"carousel\": paymodes.length > carouselStart })}>\r\n {paymodes.length <= carouselStart && <div>{_map(paymodes, (mode, index) => {\r\n return this.renderToolbtn(mode, index)\r\n })}</div>}\r\n {\r\n paymodes.length > carouselStart && this.paymodesCarouselList(params,paymodes,carouselStart)\r\n }\r\n </div>\r\n <div className=\"paydetail\" style={{maxHeight:(document.body.clientHeight-(paymodes.length>6?275:200))+'px'}}>\r\n <div className=\"left\">\r\n {\r\n thePaymodes.length==0&&<div className=\"emptydata detailempty\">请添加结算方式</div>\r\n }\r\n {\r\n // _map(_sortBy(thePaymodes, pay => pay['order'] || 0), (mode) => {\r\n _map(thePaymodes, (mode) => {\r\n const index=mode.paymethodId\r\n return (<div key={index+''} className=\"modeItem\">\r\n <div className={classnames({\"main\":true,\"focusbottom\":currentIndex==index})}>\r\n <div className=\"lefticon primary-color\" onClick={() => {\r\n this.onDelPay(index,boriginReturn && mode.boriginReturn,mode.paymentType);\r\n }}><Ticon type=\"jianqu\" className=\"minus\" /></div>\r\n <div className={classnames({\"name\":true})}>{mode.name}</div>\r\n <div className={classnames({\"content\":true})}>\r\n {\r\n (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.jfdx || mode.paymentType == PayStyle.djq) ?\r\n <input id={`inputS${index}`}\r\n className={hotKey.hotKeyNotFilter()}\r\n onClick={() => { this.editModal(index, mode.paymentType, boriginReturn) }} value={getFixedNumber(mode.value)} />\r\n :\r\n <input id={`inputS${index}`}\r\n className={hotKey.hotKeyNotFilter()}\r\n value={mode.exchangeRate != 1 ? mode.value2 : mode.value}\r\n onClick={e => this.onHotKeyClick2(index, mode, paymode, e)}\r\n onBlur={e => this.onBlur(index, e)}\r\n onFocus={e => this.onFocusHack(index, mode, paymode, e)}\r\n onChange={e => this.handleChange(index, e)}\r\n />\r\n }\r\n </div>\r\n {/* <div className=\"righticon\" style={{ display:mode.paymentType==PayStyle.hyczk?'inline-block':'none'}}\r\n onClick={() => {\r\n this.appendCzkmode(boriginReturn, 'noPlaySetPwd');\r\n }}><Ticon type=\"zengjia\" className=\"plus\" /></div> */}\r\n </div>\r\n {\r\n mode.paymentType==PayStyle.djq?\r\n <div className=\"append\" style={{ display:(mode.paymentType==PayStyle.hyczk || mode.paymentType==PayStyle.djq)?'block':'none'}}>\r\n <span className=\"balance\">溢收金额:</span>\r\n <span>{mode.overchargesAmount}</span>\r\n </div>:\r\n <div className=\"append\" style={{ display:(mode.paymentType==PayStyle.hyczk || mode.paymentType==PayStyle.djq)?'block':'none'}}>\r\n <span className=\"fl\">卡号:</span>\r\n <span className=\"fl\">{isNewRetailBCPos ? mode.member && mode.member.StorageCardNo : mode.member && mode.member.cardNo}</span>\r\n <br />\r\n <span className=\"balance fl\">余额:</span>\r\n <span className=\"fl\">{ getFixedNumber(mode.balance)}</span>\r\n </div>\r\n }\r\n </div>)\r\n })\r\n }\r\n </div>\r\n <div className=\"right\">\r\n <div className=\"righttop\">\r\n {paymode.onlineamount>0 && <div className=\"receivable\">\r\n <span>线上已收</span>\r\n <span>{paymode.onlineamount}</span>\r\n </div>}\r\n <div className=\"receivable\">\r\n <span>应收金额</span>\r\n <span>{paymode.amount}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>剩余应收</span>\r\n <span>{paymode.receivable}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>实收金额</span>\r\n <span className=\"received\">{paymode.received}</span>\r\n </div>\r\n <div className=\"receivable\" style={{display:this.checkCharge()?'block':'none'}}>\r\n <span>找零金额</span>\r\n <span className=\"received\">{getFixedNumber(Math.abs(paymode.receivable))}</span>\r\n </div>\r\n </div>\r\n <div className={this.isHorizontalPad ? 'keyboard_ios' : 'keyboard'}>\r\n {\r\n !this.isHorizontalPad &&\r\n <Keyboard type=\"number\" onChange={this.onKeyboardChange.bind(this)}></Keyboard>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"payfooter\">\r\n <span className=\"hotKeyEnter\" onClick={this.onHotKeyEnter}></span>\r\n <span><Button className=\"cancel\" onClick={this.handleCancel}>取消</Button></span>\r\n <span><Button type=\"primary\" className={this.isHorizontalPad ? \"settle1\" : \"settle\"} onClick={this.handleSettle}\r\n disabled={this.checkSettleDisabled(paymode, thePaymodes)}>结算</Button></span>\r\n </div>\r\n </div>\r\n </Drawer>}\r\n {type!=1 && newStyle && <Drawer\r\n title=\"复合结算\"\r\n width=\"600px\"\r\n placement=\"right\"\r\n maskClosable={false}\r\n closable={false}\r\n onClose={this.handleCancel}\r\n visible={this.state.visible}\r\n destroyOnClose={true}\r\n className={`settlement-wraper`}\r\n >\r\n <div className= {`settlement ${hotKey.hotKeyBindClass('5')}`}>\r\n <div className=\"paydetail newstyle\">\r\n <div className=\"top\">\r\n <div className=\"righttop\">\r\n {paymode.onlineamount>0 && <div className=\"receivable\">\r\n <span>线上已收</span>\r\n <span>{paymode.onlineamount}</span>\r\n </div>}\r\n <div className=\"receivable\">\r\n <span>应收金额</span>\r\n <span>{paymode.amount}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>剩余应收</span>\r\n <span>{paymode.receivable}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>实收金额</span>\r\n <span className=\"received\">{paymode.received}</span>\r\n </div>\r\n <div className=\"receivable\" style={{display:this.checkCharge()?'block':'none'}}>\r\n <span>找零金额</span>\r\n <span className=\"received\">{getFixedNumber(Math.abs(paymode.receivable))}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"bottom\">\r\n {\r\n thePaymodes.length==0&&<div className=\"emptydata detailempty\">请添加结算方式</div>\r\n }\r\n {\r\n _map(thePaymodes, (mode, mindex) => {\r\n let { isReturn } = this.props;\r\n let hasSMZF = _find(thePaymodes, m => { return m.paymentType === PayStyle.smzf});\r\n //同时存在微信、支付宝(或者收钱吧)、扫码支付三种方式,在非退货模式下,隐藏微信、支付宝。\r\n let hotkeyIndex = index;\r\n if (!isReturn && hasSMZF) {\r\n if (mode.paymentType == PayStyle.wx || mode.paymentType == PayStyle.zfb) {\r\n return null;\r\n } else {\r\n let theArr = _filter(paymode.paymodes, t => { return t.paymentType != PayStyle.wx && t.paymentType != PayStyle.zfb })\r\n hotkeyIndex = _findIndex(theArr, m => { return m.paymentType == mode.paymentType })\r\n }\r\n }\r\n const index = mode.paymethodId;\r\n return (mode.paymentType == PayStyle.hyczk && _findIndex(thePaymodes, (m) => { return m.paymentType == PayStyle.hyczk; }) != mindex ? <div></div> :\r\n <div key={index + ''} className=\"modeItem\">\r\n <div className={classnames({\"main\":true,\"focusbottom\":currentIndex==index})}>\r\n {/* <div className=\"lefticon\"></div> */}\r\n <div className={classnames({ \"name\": true})}>\r\n <div className=\"icon\"><Ticon type={PayIcon[mode.paymentType] || PayIcon['default']} /></div>\r\n <div className=\"text\">{mode.name}</div>\r\n <div className=\"hotkey\">{this.isHorizontalPad ? '' : this.compoundHotkeysList[hotkeyIndex] || ''}</div>\r\n </div>\r\n <div className={classnames({ \"content\": true})}>\r\n {\r\n (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.jfdx || mode.paymentType == PayStyle.djq)\r\n ?\r\n <input id={`inputS${index}`}\r\n \r\n className={hotKey.hotKeyNotFilter(\"paymode hotkey_\" + this.compoundHotkeysList[hotkeyIndex])}\r\n disabled={this.checkModeDisabled(mode.paymentType, brefund, boriginReturn)}\r\n onClick={() => {\r\n let czkinput = document.getElementById('inputS' + index);\r\n mode.paymentType == PayStyle.hyczk && czkinput && czkinput.value !== '0.00' ? this.editCzkModal() : \r\n this.onHotKeyClick1(mode, index, boriginReturn);\r\n }}\r\n value={mode.paymentType == PayStyle.hyczk ? getFixedNumber(\r\n _reduce(_filter(thePaymodes, (tm) => { return tm.paymentType == PayStyle.hyczk }), function (sum, m) {\r\n return Math.Add(sum, m.value);\r\n }, 0)\r\n ) : getFixedNumber(mode.value)} />\r\n :\r\n <input id={`inputS${index}`}\r\n className={hotKey.hotKeyNotFilter(\"paymode hotkey_\" + this.compoundHotkeysList[hotkeyIndex])}\r\n disabled={this.checkModeDisabled(mode.paymentType, brefund, boriginReturn) || this.checkScanDisabled(mode.paymentType)}\r\n value={mode.exchangeRate != 1 ? mode.value2 : mode.value}\r\n onClick={e => this.onHotKeyClick2(index, mode, paymode, e)}\r\n onBlur={e => this.onBlur(index, e)}\r\n onFocus={e => this.onFocusHack(index, mode, paymode, e)}\r\n onChange={e => this.handleChange(index, e)}\r\n />\r\n }\r\n </div>\r\n </div>\r\n {mode.paymentType == PayStyle.djq && <div className=\"append\" >\r\n <span className=\"balance\">溢收金额:</span>\r\n <span>{mode.overchargesAmount}</span>\r\n </div>}\r\n {_map(_filter(thePaymodes, (tm) => { return mode.paymentType == PayStyle.hyczk && parseFloat(tm.value || 0) != 0 && tm.paymentType == PayStyle.hyczk }), (m) => {\r\n return <div className=\"append\">\r\n <span >卡号:</span>\r\n <span >{isNewRetailBCPos ? m.member && m.member.StorageCardNo : m.member && m.member.cardNo}</span>\r\n <span className=\"fr\">{getFixedNumber(m.value)}</span>\r\n <span className=\"balance fr\">支付金额:</span>\r\n </div>\r\n })}\r\n </div>)\r\n })\r\n }\r\n </div>\r\n </div>\r\n <div className=\"payfooter\">\r\n <span className=\"hotKeyEnter\" onClick={this.onHotKeyEnter}></span>\r\n <span><Button className=\"cancel\" onClick={this.handleCancel}>取消</Button></span>\r\n <span><Button type=\"primary\" className={this.isHorizontalPad ? \"settle1\" : \"settle\"} onClick={this.handleSettle}\r\n disabled={this.checkSettleDisabled(paymode, thePaymodes)}>结算</Button></span>\r\n </div>\r\n </div>\r\n </Drawer>}\r\n {\r\n type==1 && !newStyle &&\r\n <Modal\r\n wrapClassName={`settlement-wraper2`}\r\n width=\"600px\"\r\n visible={this.state.visible}\r\n maskClosable={false}\r\n title={\"复合结算\"}\r\n footer={null}\r\n maskStyle={{'z-index': '1004'}}\r\n onCancel={this.handleCancel}\r\n destroyOnClose={true}\r\n >\r\n <div className= {`settlement ${hotKey.hotKeyBindClass('5')}`}>\r\n <div className='settlementTop'>\r\n <div className={classnames({ \"toolbar\": true, \"toolbar2\": type==1, \"carousel\": paymodes.length > carouselStart2 })}>\r\n {\r\n paymodes.length <= carouselStart2 &&\r\n <div>\r\n {\r\n _map(paymodes, (mode, index) => {\r\n return this.renderToolbtn(mode, index)\r\n })\r\n }\r\n </div>\r\n }\r\n {\r\n paymodes.length > carouselStart2 && this.paymodesCarouselList(params,paymodes,carouselStart2)\r\n }\r\n </div>\r\n <div className=\"rightheader\">\r\n {\r\n paymode.onlineamount > 0 && <div className=\"receivable\">\r\n <span>线上已收</span>\r\n <span>{paymode.onlineamount}</span>\r\n </div>\r\n }\r\n <div className=\"receivable\">\r\n <span>应收金额</span>\r\n <span>{paymode.amount}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>剩余应收</span>\r\n <span>{paymode.receivable}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>实收金额</span>\r\n <span className=\"received\">{paymode.received}</span>\r\n </div>\r\n <div className=\"receivable\" style={{ display: this.checkCharge() ? 'block' : 'none' }}>\r\n <span>找零金额</span>\r\n <span className=\"received\">{getFixedNumber(Math.abs(paymode.receivable))}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"paydetail\">\r\n <div className=\"left\">\r\n {\r\n thePaymodes.length == 0 && <div className=\"emptydata detailempty2\">请添加结算方式</div>\r\n }\r\n {\r\n // _map(_sortBy(thePaymodes, pay => pay['order'] || 0), (mode) => {\r\n _map(thePaymodes, (mode) => {\r\n const index = mode.paymethodId\r\n return (<div key={index + ''} className=\"modeItem\">\r\n <div className={`main ${currentIndex == index && 'settlement-pay-item-border'}`}>\r\n <div className=\"lefticon\" onClick={() => {\r\n this.onDelPay(index);\r\n }}><Ticon type=\"jianqu\" className=\"minus\" /></div>\r\n <div className={classnames({ \"name\": true})}>{mode.name}</div>\r\n <div className={classnames({ \"content\": true})}>\r\n {\r\n (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.jfdx || mode.paymentType == PayStyle.djq) ?\r\n <input id={`inputS${index}`}\r\n onClick={() => { this.editModal(index, mode.paymentType) }} value={getFixedNumber(mode.value)} />\r\n : <input id={`inputS${index}`}\r\n value={mode.exchangeRate != 1 ? mode.value2 : mode.value}\r\n onBlur={e => this.onBlur(index, e)}\r\n onChange={e => this.handleChange(index, e)}\r\n onFocus={e => this.onFocusHack(index, mode, paymode, e)}\r\n />\r\n }\r\n </div>\r\n {/* <div className=\"righticon\" style={{ display: mode.paymentType == PayStyle.hyczk ? 'inline-block' : 'none' }}\r\n onClick={() => {\r\n this.appendCzkmode('', 'noPlaySetPwd');\r\n }}><Ticon type=\"zengjia\" className=\"plus\" /></div> */}\r\n </div>\r\n {\r\n mode.paymentType == PayStyle.djq ?\r\n <div className=\"append\" style={{ display: (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.djq) ? 'block' : 'none' }}>\r\n <span className=\"balance\">溢收金额:</span>\r\n <span>{mode.overchargesAmount}</span>\r\n </div> :\r\n <div className=\"append\" style={{ display: (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.djq) ? 'block' : 'none' }}>\r\n <span className=\"fl\">卡号:</span>\r\n <span className=\"fl\">{isNewRetailBCPos ? mode.member && mode.member.StorageCardNo : mode.member && mode.member.cardNo}</span>\r\n <br />\r\n <span className=\"balance fl\">余额:</span>\r\n <span className=\"fl\">{getFixedNumber(mode.balance)}</span>\r\n </div>\r\n }\r\n </div>)\r\n })\r\n }\r\n </div>\r\n <div className=\"right\">\r\n <div className={this.isHorizontalPad ? 'keyboard_ios' : 'keyboard'}>\r\n {\r\n !this.isHorizontalPad &&\r\n <Keyboard type=\"number\" onChange={this.onKeyboardChange.bind(this)}></Keyboard>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"payfooter2\">\r\n <span className=\"hotKeyEnter\" onClick={this.onHotKeyEnter}></span>\r\n <span><Button className=\"cancel\" onClick={this.handleCancel}>取消</Button></span>\r\n <span><Button type=\"primary\" className=\"settle\" onClick={this.handleSettle}\r\n disabled={this.checkSettleDisabled(paymode, thePaymodes)}>结算</Button></span>\r\n </div>\r\n </div>\r\n </Modal>\r\n }\r\n {\r\n type==1 && newStyle &&\r\n <Modal\r\n wrapClassName={`settlement-wraper2`}\r\n width=\"600px\"\r\n visible={this.state.visible}\r\n maskClosable={false}\r\n title={\"复合结算\"}\r\n footer={null}\r\n backdropStyle={{'z-index': '1004'}}\r\n onCancel={this.handleCancel}\r\n destroyOnClose={true}\r\n >\r\n <div className= {`settlement ${hotKey.hotKeyBindClass('5')}`}>\r\n <div className=\"paydetail newstyle newstyle2\">\r\n <div className=\"top\">\r\n <div className=\"righttop\">\r\n {paymode.onlineamount>0 && <div className=\"receivable\">\r\n <span>线上已收</span>\r\n <span>{paymode.onlineamount}</span>\r\n </div>}\r\n <div className=\"receivable\">\r\n <span>应收金额</span>\r\n <span>{paymode.amount}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>剩余应收</span>\r\n <span>{paymode.receivable}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>实收金额</span>\r\n <span className=\"received\">{paymode.received}</span>\r\n </div>\r\n <div className=\"receivable\" style={{display:this.checkCharge()?'block':'none'}}>\r\n <span>找零金额</span>\r\n <span className=\"received\">{getFixedNumber(Math.abs(paymode.receivable))}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"bottom\">\r\n {\r\n thePaymodes.length==0&&<div className=\"emptydata detailempty\">请添加结算方式</div>\r\n }\r\n {\r\n // _map(_sortBy(thePaymodes, pay => pay['order'] || 0), (mode) => {\r\n _map(thePaymodes, (mode,mindex) => {\r\n let { isReturn } = this.props;\r\n let hasSMZF = _find(thePaymodes, m => { return m.paymentType === PayStyle.smzf });\r\n let hotkeyIndex = mindex;\r\n //同时存在微信、支付宝、扫码支付三种方式,在非退货模式下,隐藏微信、支付宝。\r\n if (!isReturn && hasSMZF) {\r\n if (mode.paymentType == PayStyle.wx || mode.paymentType == PayStyle.zfb) {\r\n return null;\r\n } else {\r\n let theArr = _filter(thePaymodes, t => { return t.paymentType != PayStyle.wx && t.paymentType != PayStyle.zfb })\r\n hotkeyIndex = _findIndex(theArr, m => { return m.paymentType == mode.paymentType })\r\n }\r\n }\r\n const index=mode.paymethodId\r\n return (mode.paymentType==PayStyle.hyczk && _findIndex(thePaymodes,(m)=>{return m.paymentType==PayStyle.hyczk;})!=mindex ? <div></div> :\r\n <div key={index+''} className=\"modeItem\">\r\n <div className={classnames({\"main\":true,\"focusbottom\":currentIndex==index})}>\r\n {/* {mode.paymentType==PayStyle.hyczk && (_filter(thePaymodes,(m)=>{return m.paymentType==PayStyle.hyczk;})||[]).length>1? <div className=\"lefticon\" onClick={() => {\r\n this.onDelPay(index,boriginReturn && mode.boriginReturn,mode.paymentType);\r\n }}><Ticon type=\"jianqu\" className=\"minus\" /></div>:<div className=\"lefticon\"></div>} */}\r\n <div className=\"lefticon\"></div>\r\n <div className={classnames({\"name\":true})}>\r\n <div className=\"icon\"><Ticon type={PayIcon[mode.paymentType]||PayIcon['default']}/></div>\r\n <div className=\"text\">{mode.name}</div>\r\n <div className=\"hotkey\">{this.isHorizontalPad? '' : this.compoundHotkeysList[mindex] || \"\"}</div>\r\n </div>\r\n <div className={classnames({\"content\":true})}>\r\n {\r\n (mode.paymentType == PayStyle.hyczk || mode.paymentType == PayStyle.jfdx || mode.paymentType == PayStyle.djq) ?\r\n <input id={`inputS${index}`}\r\n // className={classnames({'paymode':mode.paymentType == PayStyle.hyczk?(_findIndex(thePaymodes,(m)=>{return m.paymentType==PayStyle.hyczk;})==mindex?true:false):true})}\r\n className={hotKey.hotKeyNotFilter(\"paymode hotkey_\" + this.compoundHotkeysList[hotkeyIndex])}\r\n // className=\"paymode\"\r\n disabled={this.checkModeDisabled(mode.paymentType,brefund,boriginReturn)}\r\n onClick={() => {\r\n this.onHotKeyClick1(mode,index,boriginReturn);\r\n }}\r\n value={mode.paymentType==PayStyle.hyczk?getFixedNumber(\r\n _reduce(_filter(thePaymodes,(tm)=>{return tm.paymentType==PayStyle.hyczk}), function(sum, m) {\r\n return Math.Add(sum,m.value);\r\n }, 0)\r\n ):getFixedNumber(mode.value)} />\r\n :\r\n <input id={`inputS${index}`}\r\n className={hotKey.hotKeyNotFilter(\"paymode hotkey_\" + this.compoundHotkeysList[hotkeyIndex])}\r\n // className=\"paymode\"\r\n disabled={this.checkModeDisabled(mode.paymentType,brefund,boriginReturn) || this.checkScanDisabled(mode.paymentType)}\r\n value={mode.exchangeRate != 1 ? mode.value2 : mode.value}\r\n onClick={e => this.onHotKeyClick2(index, mode, paymode, e)}\r\n onBlur={e => this.onBlur(index, e)}\r\n onFocus={e => this.onFocusHack(index, mode, paymode, e)}\r\n onChange={e => this.handleChange(index, e)}\r\n />\r\n }\r\n </div>\r\n {/* <div className=\"righticon\" style={{ display:mode.paymentType==PayStyle.hyczk?'inline-block':'none'}}\r\n onClick={() => {\r\n this.appendCzkmode(boriginReturn);\r\n }}><Ticon type=\"zengjia\" className=\"plus\" /></div> */}\r\n </div>\r\n {mode.paymentType==PayStyle.djq && <div className=\"append\" >\r\n <span className=\"balance\">溢收金额:</span>\r\n <span>{mode.overchargesAmount}</span>\r\n </div>}\r\n {_map(_filter(thePaymodes,(tm)=>{return mode.paymentType==PayStyle.hyczk && parseFloat(tm.value||0)!=0 && tm.paymentType==PayStyle.hyczk}),(m)=>{\r\n return <div className=\"append\">\r\n <span >卡号:</span>\r\n <span >{m.member && m.member.cardNo}</span>\r\n <span className=\"fr\">{ getFixedNumber(m.value)}</span>\r\n <span className=\"balance fr\">支付金额:</span>\r\n </div>\r\n })}\r\n </div>)\r\n })\r\n }\r\n </div>\r\n </div>\r\n <div className=\"payfooter2\">\r\n <span className=\"hotKeyEnter\" onClick={this.onHotKeyEnter}></span>\r\n <span><Button className=\"cancel\" onClick={this.handleCancel}>取消</Button></span>\r\n <span><Button type=\"primary\" className=\"settle\" onClick={this.handleSettle}\r\n disabled={this.checkSettleDisabled(paymode, thePaymodes)}>结算</Button></span>\r\n </div>\r\n </div>\r\n </Modal>\r\n }\r\n <Modal\r\n wrapClassName={`czk ${this.isHorizontalPad ? 'extraHeight' : ''}`}\r\n width=\"400px\"\r\n visible={this.state.czkVisible}\r\n maskClosable={false}\r\n destroyOnClose={true}\r\n title={\"余额结算\"}\r\n onCancel={this.handleCzkCancel}\r\n keyboard={false}\r\n centered={ !this.isHorizontalPad ? true : false}\r\n footer={<div className=\"action\">\r\n <Button onClick={this.handleCzkCancel}>取消</Button>\r\n <Button type=\"primary\" disabled={currentMode && currentMode.errinfo!=''} onClick={this.handleCzkOk}>确定</Button>\r\n </div>}\r\n >\r\n <div>\r\n <div className=\"info\">\r\n {hasmember && <div className={classnames({\"type\":true,'colwidth3':hasmember})}>\r\n <div className=\"value valuetext\">{(currentMode && currentMode.member.type) || '普通'}</div>\r\n <div className=\"name\">类型</div>\r\n </div>}\r\n <div className=\"gap\">\r\n <div className=\"gap1\"></div>\r\n <div className=\"gap2\"></div>\r\n <div className=\"gap1\"></div>\r\n </div>\r\n <div className={classnames({\"balance\":true,'colwidth2':!hasmember,'colwidth3':hasmember})}>\r\n <div className=\"value\">{currentMode && getFixedNumber(currentMode.member.balance)}</div>\r\n <div className=\"name\">可用余额</div>\r\n </div>\r\n <div className=\"gap\">\r\n <div className=\"gap1\"></div>\r\n <div className=\"gap2\"></div>\r\n <div className=\"gap1\"></div>\r\n </div>\r\n <div className={classnames({\"available\":true,'colwidth2':!hasmember,'colwidth3':hasmember})}>\r\n <div className=\"value\">{currentMode && getFixedNumber(Math.max(0,Math.min(currentMode.maxamount,currentMode.member.balance)))}</div>\r\n <div className=\"name\">本单可用</div>\r\n </div>\r\n </div>\r\n <div className=\"no\">\r\n <span>余额卡号:</span>\r\n <span>\r\n {/* <input value={currentMode && currentMode.member.cardNo} ref={input => this['inputczk'] =input } onKeyDown={e=>{if(e.keyCode==13){this.loadCzk(e.target.value);}}}></input> */}\r\n <Input\r\n type='text'\r\n placeholder=\"请扫描或输入余额卡\"\r\n // disabled={currentMode && !currentMode.member.StorageCardNo && isReturn ? true: false}\r\n disabled\r\n className={`input ${(this.hasElectron === true && this.iCCardServer === 1 || this.isHorizontalPad === true) ? 'temp' : ''}`}\r\n onChange={(e) => this.onCzkChange(e.target.value)}\r\n value={isNewRetailBCPos ? currentMode && currentMode.member.StorageCardNo : currentMode && currentMode.member.cardNo}\r\n ref={input => this.czkInput =input}\r\n onKeyDown={\r\n (e)=>{if(e.keyCode==13){this.loadCzk(e.target.value);}}\r\n }\r\n onFocus={(e)=>{\r\n this.inputTarget = this.czkInput.input;\r\n Keyboard.open((v)=>{\r\n const value = Keyboard.getNewValue(this.inputTarget, this.inputTarget.value, v);\r\n this.onCzkChange(value);\r\n }, this.czkKeyboardOnOk, this.czkKeyboardOnClose)()\r\n }\r\n }\r\n onBlur={(e)=>{\r\n Keyboard.close();\r\n }}\r\n />\r\n </span>\r\n {\r\n this.hasElectron === true && this.iCCardServer === 1 &&\r\n <Ticon className='icon' onClick={this.handleReadICard} type=\"ICka\" />\r\n }\r\n {\r\n this.isHorizontalPad &&\r\n <Ticon type='saomiao1' className='icon' onClick={this.changeScanProduct} />\r\n }\r\n {\r\n /* 扫描组件 */\r\n this.isHorizontalPad &&\r\n <Scan ref={scan => this.scanObj = scan} onChange={this.onScanCzkResult} />\r\n }\r\n </div>\r\n <div className=\"receivable\">\r\n <span>剩余应收:</span>\r\n <span>{paymode.receivable}</span>\r\n </div>\r\n {/* <div className=\"receivable\">\r\n <span>限收金额:</span>\r\n <span>{currentMode && getFixedNumber(currentMode.maxamount)}</span>\r\n </div> */}\r\n <div className=\"received\">\r\n <span>实收金额:</span>\r\n <span>\r\n <Input\r\n type='text'\r\n className={hotKey.hotKeyNotFilter('input')}\r\n onChange={(event)=>{this.setCurrentModeValue(event.target.value,Math.min(currentMode.maxamount,currentMode.member.balance))}}\r\n defaultValue={currentMode && getFixedNumber(brefund?currentMode.value:Math.min(currentMode.value,currentMode.maxamount,currentMode.member.balance))}\r\n ref={ref => this[\"inputCzkAmount\"] = ref}\r\n onFocus={(e)=>{\r\n this.inputkey=\"inputCzkAmount\";\r\n Keyboard.open((v)=>{\r\n const value = Keyboard.getNewValue(this[this.inputkey].input, this[this.inputkey].input.value, v);\r\n this.setCurrentModeValue(value,Math.min(currentMode.maxamount,currentMode.member.balance));\r\n }, this.keyboardOnOk, this.keyboardOnClose)()\r\n }\r\n }\r\n onBlur={(e)=>{\r\n Keyboard.close();\r\n this.setCurrentModeValue(getFixedNumber(this.inputCzkAmount.input.value),Math.min(currentMode.maxamount,currentMode.member.balance));\r\n }}\r\n />\r\n </span>\r\n </div>\r\n <div className=\"error\">{currentMode && currentMode.errinfo}</div>\r\n {(!this.store.member || !this.store.member.ID) && <div className=\"tipStype\">在此处录入会员不会享有折扣、会员价等优惠,若需要优惠请返回至开单界面录入会员!</div>}\r\n </div>\r\n </Modal>\r\n <Modal\r\n wrapClassName={`djq ${this.isHorizontalPad ? 'extraHeight' : ''} passwordContainer`}\r\n width=\"400px\"\r\n visible={this.state.showSetPwdModal}\r\n backdropClosable={false}\r\n destroyOnClose={true}\r\n footer={null}\r\n onCancel={this.handleSetPwdCancel}\r\n keyboard={false}\r\n centered={ !this.isHorizontalPad ? true : false}\r\n title='设置密码'\r\n footer={<div className=\"action\">\r\n <Button onClick={this.handleSetPwdCancel}>取消</Button>\r\n <Button type=\"primary\" disabled={currentMode && currentMode.errinfo!='' || btnDissabled} onClick={this.handleSetModal}>确定</Button>\r\n </div>}\r\n >\r\n <div className='setPwdContainer'>\r\n <div className='setPwdDiv'>\r\n <div className=\"one\">新密码</div>\r\n <div className=\"two\">\r\n <NumkeyboardPassword\r\n className=\"content\"\r\n newType='positive'\r\n bordered\r\n placeholder=\"请输入6位数字密码\"\r\n style={{ width: 266, height: 32 }}\r\n maxLength={6}\r\n ref={input => this.inputNewAmount = input}\r\n onChange={value => this.setPwdValue('newPass', value)}\r\n onBlur={value => this.handleBlur('newPass')}\r\n />\r\n </div>\r\n </div>\r\n <div className='setPwdDiv'>\r\n <div className=\"one\">确认新密码</div>\r\n <div className=\"two\">\r\n <NumkeyboardPassword\r\n className=\"content\"\r\n newType='positive'\r\n bordered\r\n placeholder=\"请确认6位数字密码\"\r\n style={{ width: 266, height: 32 }}\r\n maxLength={6}\r\n ref={input => this.inputConfirmAmount = input}\r\n onChange={value => this.setPwdValue('newPassConfirm', value)}\r\n onBlur={value => this.handleBlur('newPassConfirm')}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n {/* <div className=\"action\">\r\n <Button onClick={this.handleSetPwdCancel}>取消</Button>\r\n <Button type=\"primary\" disabled={currentMode && currentMode.errinfo!=''} onClick={this.handleSetModal}>确定</Button>\r\n </div> */}\r\n </Modal>\r\n <Modal\r\n wrapClassName={`djq ${this.isHorizontalPad ? 'extraHeight' : ''}`}\r\n width=\"810px\"\r\n visible={this.state.djqVisible}\r\n maskClosable={false}\r\n onOk={this.handleDjqOk}\r\n onCancel={this.handleDjqCancel}\r\n centered={ !this.isHorizontalPad ? true : false}\r\n title={Differentiate.COUPON+'支付'}\r\n footer={<div className=\"action\">\r\n <Button onClick={this.handleDjqCancel}>取消</Button>\r\n <Button type=\"primary\" disabled={currentMode && currentMode.errinfo!=''} onClick={this.handleDjqOk}>确定</Button>\r\n </div>}\r\n >\r\n <div>\r\n {currentMode && !currentMode.boriginReturn && <div className=\"djq1\">\r\n <div className=\"col1\">{Differentiate.COUPON}号</div>\r\n <div className=\"col2\">\r\n <div>\r\n {/* <input ref={input => this['inputdjq'] =input } onKeyDown={e=>{if(e.keyCode==13){this.addDjq();}}}></input> */}\r\n <Input\r\n type='text'\r\n placeholder={`扫描/输入${Differentiate.COUPON}号并回车`}\r\n className=\"input\"\r\n // onChange={this.onDjqChange}\r\n // value={currentMode && currentMode.member.cardNo}\r\n ref={input => this.inputdjq =input}\r\n onKeyDown={\r\n (e)=>{if(e.keyCode==13){this.addDjq(e.target.value)}}\r\n }\r\n onFocus={e => {\r\n this.inputTarget = this.inputdjq.input;\r\n Keyboard.open((v) => {\r\n const value = Keyboard.getNewValue(this.inputTarget, this.inputTarget.value, v);\r\n this.onDjqChange(value,true);\r\n }, this.djqKeyboardOnOk, this.djqKeyboardOnClose)()\r\n }}\r\n onBlur={(e) => { Keyboard.close() }}\r\n />\r\n </div>\r\n <div className=\"row2\">{currentMode && currentMode.errinfo}</div>\r\n </div>\r\n {\r\n this.isHorizontalPad &&\r\n <div className=\"col3\">\r\n <Ticon type='saomiao1' className='icon' onClick={this.changeScanProduct} />\r\n <Scan ref={scan => this.scanObj = scan} onChange={this.onScanDjqResult} />\r\n </div>\r\n }\r\n </div>}\r\n <div className=\"djq2outer\">\r\n <div className=\"djq2\">\r\n {\r\n _map(currentMode&¤tMode.djqs || [],(q,index)=>{\r\n return (<div key={index + ''} className=\"djqItem\">\r\n {\r\n (!q.promoMethodEnum || q.promoMethodEnum == 'CASH_COUPON') ?\r\n <div className=\"djqLeft djqLeftCash\">\r\n <div className=\"amount\">\r\n <span>{q.amount}</span>\r\n <span>元</span>\r\n </div>\r\n <div className=\"lijian\">立减</div>\r\n </div>\r\n :\r\n <div className=\"djqLeft djqLeftDiscount\">\r\n <div className=\"amount\">\r\n <span>{tools.cutZero(q.discountPct * 10)}</span>\r\n <span>折</span>\r\n </div>\r\n <div className=\"lijian\">折扣</div>\r\n </div>\r\n }\r\n <div className={classnames('djqRight', { 'djqRightSelected': q.checked })} onClick={(e) => this.djqChecked(q)}>\r\n <div className=\"name overflow-hidden-point\">{q.name}</div>\r\n {\r\n q.displayText ?\r\n <div className=\"info overflow-hidden-point\"><span>{q.displayText}</span></div> :\r\n <div className=\"info overflow-hidden-point\"><span>使用门槛:</span><span>{q.doorsill}</span><span>元</span></div>\r\n }\r\n {\r\n q.expired ? <div className=\"info info_red overflow-hidden-point\"><span>{q.expired}</span></div> : null\r\n }\r\n </div>\r\n <div className=\"point_top\"/>\r\n <div className=\"point_bottom\"/>\r\n </div>)\r\n })\r\n }\r\n </div>\r\n </div>\r\n {currentMode && !currentMode.boriginReturn && <div className=\"djq3\">\r\n <div className=\"col1\">\r\n <div className=\"row1\">剩余应收</div>\r\n <div className=\"row2\">{currentMode ? currentMode.receivable:'0.00'}</div>\r\n </div>\r\n <div className=\"col2\">\r\n <div className=\"row1\">本单可用</div>\r\n <div className=\"row2\">{currentMode ? currentMode.maxamount:'0.00'}</div>\r\n </div>\r\n <div className=\"col2\">\r\n <div className=\"row1\">{Differentiate.COUPON}结算金额</div>\r\n <div className=\"row2\">{currentMode ? currentMode.value:'0.00'}</div>\r\n </div>\r\n <div className=\"col3\">\r\n <div className=\"row1\">溢收金额</div>\r\n <div className=\"row2\">{currentMode ? currentMode.overchargesAmount:'0.00'}</div>\r\n </div>\r\n </div>}\r\n {currentMode && currentMode.boriginReturn && <div className=\"djq3\">\r\n <div className=\"col1\">\r\n <div className=\"row1\">数量</div>\r\n <div className=\"row2\">{currentMode && currentMode.djqs ? currentMode.djqs.length:'0'}</div>\r\n </div>\r\n <div className=\"col2\">\r\n <div className=\"row1\">退款金额</div>\r\n <div className=\"row2\">{currentMode ? currentMode.value:'0.00'}</div>\r\n </div>\r\n </div>}\r\n </div>\r\n </Modal>\r\n <Modal\r\n wrapClassName={`czk ${this.isHorizontalPad ? 'extraHeight' : ''}`}\r\n width=\"420px\"\r\n visible={this.state.jfdxVisible}\r\n maskClosable={false}\r\n onCancel = { this.handleJfdxCancel }\r\n centered={ !this.isHorizontalPad ? true : false}\r\n title={\"积分抵现\"}\r\n destroyOnClose={true}\r\n footer={<div className=\"action\">\r\n <Button onClick={this.handleJfdxCancel}>取消</Button>\r\n <Button type=\"primary\" disabled={currentMode && currentMode.errinfo!=''} onClick={this.handleJfdxOk}>确定</Button>\r\n </div>}\r\n >\r\n <div>\r\n <div className=\"info\">\r\n <div className={classnames({\"type\":true,'colwidth4':hasmember})}>\r\n <div className=\"value valuetext\">{(currentMode && currentMode.member.type) || '普通'}</div>\r\n <div className=\"name\">类型</div>\r\n </div>\r\n <div className=\"gap\">\r\n <div className=\"gap1\"></div>\r\n <div className=\"gap2\"></div>\r\n <div className=\"gap1\"></div>\r\n </div>\r\n <div className={classnames({\"balance\":true,'colwidth4':hasmember})}>\r\n <div className=\"value\">{currentMode && currentMode.member.bonusPoints}</div>\r\n <div className=\"name\">积分</div>\r\n </div>\r\n <div className=\"gap\">\r\n <div className=\"gap1\"></div>\r\n <div className=\"gap2\"></div>\r\n <div className=\"gap1\"></div>\r\n </div>\r\n <div className={classnames({\"balance\":true,'colwidth4':hasmember})}>\r\n <div className=\"value\">{currentMode && getFixedNumber(currentMode.member.exchangable)}</div>\r\n <div className=\"name\">可抵现金额</div>\r\n </div>\r\n <div className=\"gap\">\r\n <div className=\"gap1\"></div>\r\n <div className=\"gap2\"></div>\r\n <div className=\"gap1\"></div>\r\n </div>\r\n <div className={classnames({\"available\":true,'colwidth4':hasmember})}>\r\n <div className=\"value\">{currentMode && getFixedNumber(Math.max(0,Math.min(currentMode.maxamount,currentMode.member.exchangable)))}</div>\r\n <div className=\"name\">本单可用</div>\r\n </div>\r\n </div>\r\n <div className=\"no\">\r\n <span>会员卡号:</span>\r\n <span className=\"notext\">{currentMode && currentMode.member.cardNo}</span>\r\n </div>\r\n <div className=\"receivable\">\r\n <span>剩余应收:</span>\r\n <span>{paymode.receivable}</span>\r\n </div>\r\n <div className=\"received\">\r\n <span>实收金额:</span>\r\n <span>\r\n {/* <input value={currentMode && currentMode.value} onChange={(value)=>{this.setCurrentModeValue(value,currentMode.member.exchangable)}}></input> */}\r\n <Input\r\n className={hotKey.hotKeyNotFilter('input')}\r\n type='text'\r\n onChange={(e)=>{this.setCurrentModeValue(e.target.value,Math.min(currentMode.maxamount,currentMode.member.exchangable))}}\r\n defaultValue={currentMode && getFixedNumber(Math.min(currentMode.value,currentMode.maxamount,currentMode.member.exchangable))}\r\n ref={ref => this[\"inputJfdxAmount\"] = ref}\r\n onFocus={(e)=>{\r\n this.inputkey=\"inputJfdxAmount\";\r\n Keyboard.open((v)=>{\r\n const value = Keyboard.getNewValue(this[this.inputkey].input, this[this.inputkey].input.value, v);\r\n this.setCurrentModeValue(value,Math.min(currentMode.maxamount,currentMode.member.exchangable));\r\n }, this.keyboardOnOk, this.keyboardOnClose)()\r\n }\r\n }\r\n onBlur={(e)=>{\r\n Keyboard.close();\r\n this.setCurrentModeValue(getFixedNumber(this.inputJfdxAmount.input.value),Math.min(currentMode.maxamount,currentMode.member.exchangable));\r\n }}\r\n />\r\n </span>\r\n </div>\r\n <div className=\"error\">{currentMode && currentMode.errinfo}</div>\r\n </div>\r\n </Modal>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default Settlement\r\n"]}
|