tplus-components-touch 3.25.2 → 3.26.1

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