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