tplus-member 3.36.1 → 3.37.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. package/dist/index.js +6 -1
  2. package/dist/index.js.map +1 -1
  3. package/dist/member/MemberCardList.js +393 -0
  4. package/dist/member/MemberCardList.js.map +1 -0
  5. package/dist/member/MemberShow.js +3 -1
  6. package/dist/member/MemberShow.js.map +1 -1
  7. package/dist/member/ShopMember.js +274 -268
  8. package/dist/member/ShopMember.js.map +1 -1
  9. package/dist/member/ShopMember.less +115 -10
  10. package/dist/member/ShopMemberStorage.js +451 -0
  11. package/dist/member/ShopMemberStorage.js.map +1 -0
  12. package/dist/member/api.js +278 -42
  13. package/dist/member/api.js.map +1 -1
  14. package/dist/member/index.js +137 -116
  15. package/dist/member/index.js.map +1 -1
  16. package/dist/member/memberMenu/bindCard/index.js +295 -0
  17. package/dist/member/memberMenu/bindCard/index.js.map +1 -0
  18. package/dist/member/memberMenu/bindCard/style.less +8 -0
  19. package/dist/member/memberMenu/index.js +503 -352
  20. package/dist/member/memberMenu/index.js.map +1 -1
  21. package/dist/member/memberMenu/modifyPass/index.js +0 -2
  22. package/dist/member/memberMenu/modifyPass/index.js.map +1 -1
  23. package/dist/member/memberMenu/style.less +44 -1
  24. package/dist/member/memberMenuStorage/bindCard/index.js +172 -0
  25. package/dist/member/memberMenuStorage/bindCard/index.js.map +1 -0
  26. package/dist/member/memberMenuStorage/bindCard/style.less +8 -0
  27. package/dist/member/memberMenuStorage/changeMemberCard/index.js +260 -0
  28. package/dist/member/memberMenuStorage/changeMemberCard/index.js.map +1 -0
  29. package/dist/member/memberMenuStorage/changeMemberCard/style.less +43 -0
  30. package/dist/member/memberMenuStorage/index.js +1807 -0
  31. package/dist/member/memberMenuStorage/index.js.map +1 -0
  32. package/dist/member/memberMenuStorage/modifyPass/index.js +420 -0
  33. package/dist/member/memberMenuStorage/modifyPass/index.js.map +1 -0
  34. package/dist/member/memberMenuStorage/modifyPass/store.js +426 -0
  35. package/dist/member/memberMenuStorage/modifyPass/store.js.map +1 -0
  36. package/dist/member/memberMenuStorage/modifyPass/style.less +96 -0
  37. package/dist/member/memberMenuStorage/style.less +130 -0
  38. package/dist/member/memberTab/MemberCardInfo.js +89 -0
  39. package/dist/member/memberTab/MemberCardInfo.js.map +1 -0
  40. package/dist/member/memberTab/MemberManager.js +640 -0
  41. package/dist/member/memberTab/MemberManager.js.map +1 -0
  42. package/dist/member/memberTab/MemberStorage.js +176 -0
  43. package/dist/member/memberTab/MemberStorage.js.map +1 -0
  44. package/dist/member/memberTab/index.js +133 -0
  45. package/dist/member/memberTab/index.js.map +1 -0
  46. package/dist/member/memberTab.js +58 -11
  47. package/dist/member/memberTab.js.map +1 -1
  48. package/dist/stores/MemberStore.js +26 -21
  49. package/dist/stores/MemberStore.js.map +1 -1
  50. package/dist/utils.js +15 -1
  51. package/dist/utils.js.map +1 -1
  52. package/dist/viewDoMain/StorageAmountChangedProcessorBlock.js +4 -0
  53. package/dist/viewDoMain/StorageAmountChangedProcessorBlock.js.map +1 -1
  54. package/dist/views/MemberOrderView.js +1 -1
  55. package/dist/views/MemberOrderView.js.map +1 -1
  56. package/dist/views/MemberStoreNew.less +1 -3
  57. package/dist/views/MemberStoreNewView.js +14 -26
  58. package/dist/views/MemberStoreNewView.js.map +1 -1
  59. package/package.json +28 -29
@@ -1 +1 @@
1
- {"version":3,"sources":["tplus-member/member/index.js"],"names":["hasElectron","env","platform","constant","electron","emptyMemberImage","memberBirthday","currentMember","MemberTag","observer","props","stores","user","options","get","isMemberInputType","MemberMeStorageCardInputByKeyBoard","OpenFaceRecognition","ICCardServer","ICCardPassword","parseInt","isStorageCardInputType","openFaceRecognition","iCCardServer","iCCardPassword","ms","memberStore","isHorizontalPad","isHorizontalSunMi","isMobileEnvironment","handleReadICard","bind","keypressStime","iseyboardKEnter","isNewRetailBCPos","state","isCC","isShowBirthdayTip","context","viewModel","data","Member","dtMember","selectMemberInfo","isClear","memberChangeData","length","undefined","memberChange","setState","newAvatar","deepCloneMember","JSON","parse","ID","clearSeletMember","seletMember","selectMemberStore","clearMemberCare","connectRfCard","window","removeEventListener","windowOnresize","closeRfCard","nextProps","isSendMessage","getInStoreMemberCount","nativeMs","setIpcRendererMethod","result","ret","status","connectCardStatus","connectCardError","value","Message","error","params","cardPsw","cardSec","cardKm","searchMember","memberPhoto","titleModal","memberShow","inShopLoading","faceLoading","shopPerson","searchValue","viewMemberInfo","searchVisible","columnInfo","isMemberCare","isMemberCareModal","mode","authProcess","selectMemberSuccess","precisionInfo","items","viewVoucher","find","v","type","isTakeTheir","getIsTakeTheir","isSelectedMember","enumController","getEnumOj","Differentiate","memberCareInfo","inputSearch","el","input","e","handleSearch","target","handleFocus","handleBlur","onKeyPressed","changeScanProduct","loadFaceRecognition","scanObj","scan","onScanResult","openPhotoModal","ImageFile","handlePhotoModal","isTicket","daysToBirthday","handleMemberCareModal","setIsShowBirthdayTip","openShowModal","Name","CardCode","BalanceStorage","computedCoupon","COUPON","BalanceIntegral","openCloseModal","handleShowModal","handleMemberCareModalCancel","MemberType","memberCareDTO","memberRightRuleList","integralMultiple","integralGive","couponIdMapList","map","index","count","name","birthdayShow","handleCloseBirthdayModal","Component","propTypes","PropTypes","func","memberSearched","contextTypes","onEvent","object","defaultProps","controllerEvent","methodName","methodArgs","Action","fromJS","resetInShopMemberTimer","timer","clearTimeout","time","setTimeout","warn","res","title","jsMember","updateMember","setMemberFocus","uiState","IsIntegralExchange","store","tip","info","ModalWraper","confirm","className","content","onOk","changeBirthdayShow","val","_this","cb","Keyboard","open2","getNewValue","keyboardClose","localStore","blur","close2","readRfCard","offlineSys","shouldInOffline","searchLoading","trim","getMemberBirthday","getMeStorageCard","getSearchMember","currentPage","pageSize","key","isSingleMember","then","ColumnInfo","Data","IsStorage","drawerStore","init","onHide","listArr","changeMemberCare","catch","keyCode","stime","etime","Date","member","MemberCouponCount","couponKey","DynamicPropertyKeys","DynamicPropertyValues","couponIndex","findIndex","loadInStoreMember","String","tipMessage","console","log","err","startScan","getMemberBirthdayInfo"],"mappings":"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","file":"index.js","sourcesContent":["/**\r\n * @memberChange member 状态发生变化时的回调\r\n * @memberSearched 录入框会员状态发生变化时的回调 memberSearched(value, type) // type: searched 触发搜索 | err 搜索接口错误 | close 关闭会员\r\n *\r\n */\r\nimport React, { Component, Fragment } from 'react';\r\nimport { Button, Input } from 'antd';\r\nimport { observer } from 'mobx-react';\r\nimport { toJS } from 'mobx';\r\nimport PropTypes from 'prop-types'\r\nimport { Ticon, Message, ModalWraper, Spin, Keyboard,Scan } from 'tplus-components-touch';\r\nimport { env, nativeMs, localStore , stores} from 'mutants-microfx';\r\nimport { Action } from 'mutants-appfx'\r\nimport { platform, enumController } from 'mutants-util';\r\nimport MemberModal from './MemberShow';\r\nimport MemberPhoto from './MemberPhoto';\r\nimport memberStore from './api';\r\nimport { formatPrecision, userInfoFormat, errMessageTip } from '../utils';\r\nimport './index.less';\r\n\r\n\r\n\r\nconst hasElectron = (env.platform === env.constant.platform.electron);\r\n//定义默认头像值。\r\nconst emptyMemberImage = 'https://newretail.static.chanjet.com/default_avatar.png';\r\nconst memberBirthday = 'https://newretail.static.chanjet.com/pictures/member_birthday.png';\r\nlet currentMember;\r\n\r\n@observer\r\nclass MemberTag extends Component {\r\n\r\n state = {\r\n searchValue: '',\r\n titleModal: '',\r\n memberShow: false,\r\n memberPhoto: false,\r\n searchVisible: false,\r\n shopPerson: 0,\r\n status: 2, // 0会员详情、1到店会员、2人脸识别\r\n dtMember: {}, // 会员信息\r\n connectCardStatus: false, //连接IC卡状态\r\n connectCardError: '', //连接IC卡错误后记录错误信息\r\n isMemberCare: false,\r\n isMemberCareModal: false\r\n };\r\n\r\n static propTypes = {\r\n memberChange: PropTypes.func,\r\n memberSearched: PropTypes.func,\r\n }\r\n\r\n static contextTypes = {\r\n onEvent:PropTypes.func,\r\n viewModel: PropTypes.object,\r\n }\r\n\r\n static defaultProps = {\r\n memberChange: () => { },\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.hasElectron = hasElectron;\r\n const { isMemberInputType, MemberMeStorageCardInputByKeyBoard, OpenFaceRecognition, ICCardServer, ICCardPassword } = stores.user.options.get('loginInfo') || {};\r\n this.isMemberInputType = parseInt(isMemberInputType); // '0'为不禁用 '1'为禁用\r\n this.isStorageCardInputType = MemberMeStorageCardInputByKeyBoard; // 仅储值卡是否禁用键盘输入,'0'为不禁用 '1'为禁用\r\n this.openFaceRecognition = parseInt(OpenFaceRecognition); // 启用人脸识别:0禁用 1为启用\r\n this.iCCardServer = parseInt(ICCardServer); // 启用IC卡:0为禁用 1为启用\r\n this.iCCardPassword = ICCardPassword; //IC卡密码\r\n this.ms = memberStore;\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\r\n //记录键盘录入信息的开始时间\r\n this.keypressStime = null;\r\n this.iseyboardKEnter = false; //是否为键盘输入\r\n let { isNewRetailBCPos } = platform || {};\r\n this.state = {\r\n isCC: !!isNewRetailBCPos,\r\n isShowBirthdayTip: false,\r\n };\r\n }\r\n\r\n componentWillReact() {\r\n const { data: { Member: dtMember = {} } = {} } = this.context.viewModel || {};\r\n const { selectMemberInfo = {}, isClear = false } = this.ms;\r\n const memberChangeData = Object.keys(selectMemberInfo).length ? selectMemberInfo : undefined;\r\n\r\n const memberChange = (data) => {\r\n this.setState({newAvatar: ''});\r\n this.props.memberChange(data);\r\n }\r\n if (typeof memberChangeData === 'object') {\r\n const deepCloneMember = JSON.parse(JSON.stringify(memberChangeData));\r\n if (!currentMember) {\r\n currentMember = deepCloneMember;\r\n memberChange(memberChangeData);\r\n } else if (currentMember.ID !== memberChangeData.ID) {\r\n memberChange(memberChangeData);\r\n currentMember = deepCloneMember;\r\n } else if (!dtMember.ID && (currentMember || {}).ID) { // DataModel 中清掉member,手动同步 member\r\n currentMember = undefined;\r\n this.ms.clearSeletMember();\r\n }\r\n } else if (currentMember && !memberChangeData) {\r\n memberChange(memberChangeData);\r\n currentMember = undefined;\r\n } else if (dtMember.ID && !(currentMember || {}).ID) { // DataModel 中存在member,手动同步 member\r\n const deepCloneMember = JSON.parse(JSON.stringify(dtMember));\r\n currentMember = deepCloneMember;\r\n this.ms.seletMember(dtMember);\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n stores.selectMemberStore && stores.selectMemberStore.clearMemberCare()\r\n this.connectRfCard();\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.windowOnresize);\r\n this.closeRfCard();\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n //接受socket传递过来的信息\r\n let { isSendMessage } = nextProps;\r\n if (isSendMessage === true) this.getInStoreMemberCount()\r\n }\r\n\r\n controllerEvent = (methodName, methodArgs) => {\r\n this.context.onEvent({ 'controllerEvent': Action.fromJS(this.context.viewModel, methodName) }, 'controllerEvent', methodArgs);\r\n }\r\n\r\n resetInShopMemberTimer = (count) => {\r\n this.timer && clearTimeout(this.timer);\r\n if (!count) return;\r\n const time = 5 * 60 * 1000;\r\n this.timer = setTimeout(() => {\r\n this.getInStoreMemberCount();\r\n }, time);\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\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 }\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\r\n openPhotoModal = () => {\r\n let { isNewRetailBCPos } = platform || {};\r\n if (!isNewRetailBCPos) {\r\n if (!this.openFaceRecognition) {\r\n Message.warn('未启用人脸识别,需要先开启人脸识别功能');\r\n return;\r\n }\r\n this.setState({\r\n memberPhoto: true,\r\n titleModal: '选择头像'\r\n })\r\n }\r\n }\r\n\r\n openShowModal = (status, res) => {\r\n let title = '';\r\n const { data: { Member = {} } = {} } = this.context.viewModel || {};\r\n const {newAvatar} = this.state;\r\n const jsMember = toJS(Member);\r\n const updateMember = newAvatar ? {...jsMember, ImageFile: newAvatar} : jsMember;\r\n switch (status) {\r\n case 0:\r\n title = '会员详情';\r\n this.setState({ viewMemberInfo: updateMember })\r\n break;\r\n case 1:\r\n title = '到店会员';\r\n this.setState({ viewMemberInfo: res })\r\n break;\r\n case 2:\r\n title = '人脸识别';\r\n this.setState({ viewMemberInfo: res })\r\n break;\r\n }\r\n this.setState({\r\n status: status,\r\n memberShow: true,\r\n titleModal: title\r\n })\r\n }\r\n\r\n openCloseModal = () => {\r\n const { setMemberFocus } = this.props;\r\n const memberStore = this.context.viewModel && this.context.viewModel.items.find(el => el.name == 'MemberStore');\r\n const uiState = memberStore.uiState;\r\n const IsIntegralExchange = memberStore.store && memberStore.store.data && memberStore.store.data.IsIntegralExchange\r\n if (!!uiState.tip) {\r\n Message.info(uiState.tip)\r\n return;\r\n }\r\n ModalWraper.confirm({\r\n className: 'tplus-confirm-modal',\r\n title: '关闭会员',\r\n content: `${IsIntegralExchange ? \"关闭会员将会清空商品信息!\" : \"确定要关闭该会员吗?\"}`,\r\n onOk: () => {\r\n this.ms.clearSeletMember();\r\n stores.selectMemberStore.clearMemberCare();\r\n typeof setMemberFocus == 'function' && setMemberFocus();\r\n }\r\n })\r\n }\r\n\r\n //关闭生日提醒\r\n handleCloseBirthdayModal = () => {\r\n this.ms.changeBirthdayShow(false);\r\n }\r\n\r\n //会员关怀-送礼\r\n handleMemberCareModal = () => {\r\n this.setState({ isMemberCareModal: true })\r\n }\r\n handleMemberCareModalCancel = () => {\r\n this.setState({ isMemberCareModal: false })\r\n }\r\n\r\n handleSearch = (val) => {\r\n this.setState({ searchValue: val })\r\n }\r\n\r\n handleFocus = (el) => {\r\n if (this.isMemberInputType) return;\r\n const _this = this;\r\n function cb() {\r\n _this.searchMember(undefined, 'ok');\r\n }\r\n Keyboard.open2((v) => {\r\n const value = Keyboard.getNewValue(this.inputSearch, this.inputSearch.value, v);\r\n this.handleSearch(value);\r\n }, cb, this.keyboardClose , 'ByMember', localStore.get('ByMember'))\r\n }\r\n\r\n keyboardClose = () => {\r\n this.inputSearch.blur();\r\n }\r\n handleBlur = () => {\r\n Keyboard.close2();\r\n }\r\n\r\n handleReadICard = () => {\r\n this.readRfCard();\r\n }\r\n\r\n handleShowModal = (type, params) => {\r\n if (params) {\r\n this.setState({ dtMember: params, memberShow: type })\r\n } else {\r\n this.setState({ memberShow: type })\r\n }\r\n }\r\n\r\n handlePhotoModal = (type, newAvatar) => {\r\n if (newAvatar) {\r\n this.setState({\r\n newAvatar,\r\n memberPhoto: type\r\n })\r\n } else {\r\n this.setState({ memberPhoto: type })\r\n }\r\n } \r\n\r\n searchMember = (val, type) => {\r\n if(!stores.offlineSys.shouldInOffline()) return;\r\n if (!this.ms || this.searchLoading) return;\r\n const {searchValue} = this.state;\r\n val = val || (searchValue || '').trim();\r\n if (!val) return;\r\n const { memberSearched, selectMemberSuccess,setMemberFocus,getMemberBirthday, getMeStorageCard } = this.props;\r\n this.searchLoading = true;\r\n this.setState({searchVisible: true});\r\n this.ms.getSearchMember({\r\n currentPage: 1,\r\n pageSize: 10,\r\n key: val,\r\n isSingleMember: false\r\n }).then(ret => {\r\n this.searchLoading = false;\r\n const {ColumnInfo: columnInfo, Data} = ret || {};\r\n const data = JSON.parse(Data) || [];\r\n const info = data[0];\r\n this.setState({searchVisible: false, columnInfo});\r\n if (info && info.MemberType && info.MemberType.IsStorage && this.isStorageCardInputType && this.iseyboardKEnter){\r\n getMeStorageCard && getMeStorageCard(true);\r\n this.handleSearch('');\r\n this.keypressStime = null;\r\n } else {\r\n getMeStorageCard && getMeStorageCard(false);\r\n }\r\n memberSearched && memberSearched(info, 'searched');\r\n if (info) {\r\n if (data.length > 1) {\r\n stores.drawerStore.init({\r\n title: '会员管理',\r\n key: 'member',\r\n onHide:()=>{\r\n },\r\n listArr: data,\r\n });\r\n this.setState({\r\n searchValue: null\r\n })\r\n } else {\r\n memberSearched && memberSearched(info, 'searched');\r\n userInfoFormat(info);\r\n if (errMessageTip(info)) return;\r\n this.ms.seletMember(info, true);\r\n setTimeout(() => this.setState({ searchValue: '' }), 0);\r\n this.handleBlur();\r\n selectMemberSuccess && selectMemberSuccess();\r\n getMemberBirthday && getMemberBirthday(info.ID, (result) => {\r\n stores.selectMemberStore.changeMemberCare(result);\r\n });\r\n }\r\n } else {\r\n if (type === 'ok'){\r\n Message.warn('会员不存在');\r\n if (this.isMobileEnvironment) {\r\n setTimeout(() => this.setState({ searchValue: '' }), 0);\r\n }\r\n typeof setMemberFocus == 'function' && setMemberFocus();\r\n }\r\n }\r\n }).catch(err => {\r\n this.setState({searchVisible: false});\r\n this.searchLoading = false;\r\n memberSearched && memberSearched(undefined, 'err');\r\n })\r\n }\r\n\r\n //获取当前到店会员数量\r\n getInStoreMemberCount = () => {\r\n if (!this.ms) return;\r\n this.ms.getInStoreMemberCount().then(res => {\r\n const {data: {data: shopPerson} = {}} = res || {};\r\n this.setState({shopPerson});\r\n this.resetInShopMemberTimer(shopPerson);\r\n });\r\n }\r\n\r\n onKeyPressed = (e) => {\r\n const keyCode = e && e.keyCode\r\n if (keyCode === 13) {\r\n if (this.isMemberInputType) {\r\n let stime = this.keypressStime;\r\n let etime = Date.parse(new Date());\r\n if (etime - stime > 300) {\r\n this.handleSearch('')\r\n this.keypressStime = null;\r\n return Message.warn('未启用键盘录入功能');\r\n }\r\n this.keypressStime = null;\r\n }\r\n this.iseyboardKEnter = Date.parse(new Date()) - this.keypressStime > 300;\r\n if (this.isStorageCardInputType) {\r\n this.keypressStime = null;\r\n }\r\n if (this.searchLoading) return;\r\n this.searchMember(undefined, 'ok');\r\n }\r\n else if (this.isMemberInputType && !this.keypressStime && !(keyCode == 8)) {\r\n this.keypressStime = Date.parse(new Date())\r\n } else if (this.isStorageCardInputType && !this.keypressStime && !(keyCode == 8) && !this.isMemberInputType) {\r\n this.keypressStime = Date.parse(new Date())\r\n }\r\n }\r\n\r\n computedCoupon = (member = {}) => {\r\n let { isNewRetailBCPos } = platform || {};\r\n if (!!isNewRetailBCPos) {\r\n return member.MemberCouponCount? member.MemberCouponCount : '0';\r\n } else {\r\n const couponKey = 'membercouponcount';\r\n const {DynamicPropertyKeys = [], DynamicPropertyValues = []} = member;\r\n const couponIndex = DynamicPropertyKeys.findIndex(v => v === couponKey);\r\n return ~couponIndex ? DynamicPropertyValues[couponIndex] : '0';\r\n }\r\n }\r\n\r\n loadFaceRecognition = (type) => {\r\n // type = 1:到店会员 type = 2:POS机人脸识别\r\n this.setState({faceLoading: type === 2, inShopLoading: type === 1});\r\n this.ms.loadInStoreMember(String(type))\r\n .then(res => {\r\n this.setState({faceLoading: false, inShopLoading: false});\r\n const {Data} = res || {};\r\n if (!JSON.parse(Data).length) {\r\n const tipMessage = ['当前没有到店会员', '未识别到人脸信息'];\r\n type === 1 && this.setState({shopPerson: 0});\r\n return Message.info(tipMessage[type - 1]);\r\n }\r\n type === 1 && this.getInStoreMemberCount();\r\n this.openShowModal(type, res);\r\n })\r\n .catch(err => {\r\n this.setState({faceLoading: false, inShopLoading: false});\r\n console.log(err)\r\n });\r\n }\r\n\r\n //移动端:扫描商品\r\n changeScanProduct = () => {\r\n if (this.scanObj) this.scanObj.startScan()\r\n }\r\n onScanResult = (res) => {\r\n this.setState({\r\n searchValue: res\r\n }, () => {\r\n this.onKeyPressed({ keyCode: 13 })\r\n })\r\n }\r\n\r\n setIsShowBirthdayTip = () => {\r\n stores.selectMemberStore.clearMemberCare()\r\n }\r\n\r\n getMemberBirthdayInfo = (result) => {\r\n stores.selectMemberStore.changeMemberCare(result);\r\n }\r\n\r\n render() {\r\n const {\r\n memberPhoto, titleModal, memberShow, inShopLoading = false, faceLoading = false,\r\n status, shopPerson, searchValue, viewMemberInfo, newAvatar, searchVisible = false, columnInfo, isCC,\r\n isMemberCare, isMemberCareModal, isShowBirthdayTip\r\n } = this.state;\r\n const { mode = 'formal', authProcess, selectMemberSuccess } = this.props;\r\n const { selectMemberInfo, precisionInfo = {} } = this.ms; //selectMemberInfo 用作触发mobox render\r\n const { data: { Member: dtMember = {} } = {}, items = [] } = this.context.viewModel || {};\r\n const viewVoucher = items.find(v => v.type === 'Voucher') || {};\r\n const isTakeTheir = viewVoucher.getIsTakeTheir && viewVoucher.getIsTakeTheir();\r\n const isSelectedMember = !!dtMember.ID;\r\n const { Differentiate } = enumController.getEnumOj();\r\n const { memberCareInfo } = stores.selectMemberStore;\r\n let { isNewRetailBCPos } = platform || {};\r\n\r\n\r\n return (\r\n <div className='MemberContainer'>\r\n <div className='left'>\r\n {!isSelectedMember &&\r\n <div className='search'>\r\n <div className='b1'>\r\n <Input\r\n type='text'\r\n className=\"input\"\r\n id='memberPoint'\r\n placeholder='扫描/输入会员号'\r\n value={searchValue}\r\n ref={el => this.inputSearch = el && el.input}\r\n onChange={(e) => this.handleSearch(e.target.value)}\r\n onFocus={this.handleFocus}\r\n onBlur={this.handleBlur}\r\n onKeyDown={this.onKeyPressed}\r\n />\r\n <Spin\r\n className='search-spin'\r\n scale={0.8}\r\n type='circle-side'\r\n visible={searchVisible}\r\n />\r\n </div>\r\n <div className='b2'>\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 false && this.openFaceRecognition === 1 && !faceLoading &&\r\n <div className='openFaceRecognition-box'>\r\n <Ticon className='icon' onClick={() => this.loadFaceRecognition(2)} type=\"renlianshibie\" />\r\n <Spin\r\n className='face-spin'\r\n scale={0.8}\r\n type='circle'\r\n visible={faceLoading}\r\n />\r\n </div>\r\n )\r\n }\r\n {\r\n /* 扫描组件 */\r\n this.isHorizontalPad &&\r\n <Scan ref={scan => this.scanObj = scan} onChange={this.onScanResult} />\r\n }\r\n </div>\r\n </div>\r\n }\r\n {isSelectedMember &&\r\n <div className={`info ${this.openFaceRecognition ? '' : 'member-btn-hidden-flex'}`}>\r\n <div className='first'>\r\n <img onClick={this.openPhotoModal} src={newAvatar || dtMember.ImageFile || emptyMemberImage} />\r\n {memberPhoto && <MemberPhoto dtMember={dtMember} showModal={memberPhoto} titleModal={titleModal} handleModal={this.handlePhotoModal} />}\r\n {\r\n memberCareInfo && memberCareInfo.isTicket && <Ticon type=\"shengri\" className='shengriIcon'></Ticon>\r\n }\r\n {\r\n memberCareInfo && memberCareInfo.isTicket && <div className='birthdayContent'>\r\n <div className='birthdayWarn'>{memberCareInfo.daysToBirthday === 0 ? '今天生日' : memberCareInfo.daysToBirthday + '天后生日'}</div>\r\n <Button colors=\"warn\" onClick={this.handleMemberCareModal} className='check bg-theme'>查看</Button>\r\n <Ticon type=\"cuowuda\" className='cuowudaIcon'></Ticon>\r\n </div>\r\n }\r\n {\r\n memberCareInfo && memberCareInfo.isTicket && <Ticon type=\"cuowuda\" onClick={() => { this.setIsShowBirthdayTip()}} className='cuowudaIcon'></Ticon>\r\n }\r\n </div>\r\n <div className='second member-hotkey-info' onClick={() => this.openShowModal(0)}>\r\n <div className='one'>\r\n {dtMember.Name && <div className='a'>{dtMember.Name}</div>}\r\n <div className='b'>{dtMember.CardCode}</div>\r\n </div>\r\n <div className='two'>\r\n <div className='a'>{formatPrecision(dtMember.BalanceStorage, precisionInfo.BalanceStorage)}</div>\r\n <div className='b'>余额</div>\r\n </div>\r\n <div className='two'>\r\n <div className='a'>{this.computedCoupon(dtMember)}</div>\r\n <div className='b'>{Differentiate.COUPON}</div>\r\n </div>\r\n <div className='two'>\r\n <div className='a'>{formatPrecision(dtMember.BalanceIntegral, precisionInfo.BalanceIntegral) || 0}</div>\r\n <div className='b'>积分</div>\r\n </div>\r\n </div>\r\n <div className='close'>\r\n {!isTakeTheir && <Ticon type=\"guanbi-yuan\" onClick={this.openCloseModal} />}\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n {/* {\r\n memberCareInfo && memberCareInfo.isTicket ? <div className='float'>\r\n <div className='txt'>{memberCareInfo.daysToBirthday === 0 ? '今天生日' : memberCareInfo.daysToBirthday + '天后生日'}</div>\r\n <div className='btn' onClick={this.handleMemberCareModal}>查看</div>\r\n <div className='cancel'>\r\n <Ticon type='guanbixiao' onClick={() => {\r\n this.setIsShowBirthdayTip()\r\n }}/>\r\n </div>\r\n </div> : null\r\n } */}\r\n {!!this.openFaceRecognition && <div className='right'>\r\n <Button type=\"primary\" onClick={() => this.loadFaceRecognition(1)} className='btn' disabled={inShopLoading}>\r\n {!inShopLoading && '到店会员'}\r\n <Spin\r\n className='inshop-member-spin'\r\n scale={0.8}\r\n type='circle'\r\n visible={inShopLoading}\r\n />\r\n {!!shopPerson && <div className='badge'>{shopPerson}</div>}\r\n </Button>\r\n </div>}\r\n <MemberModal\r\n mode={mode}\r\n authProcess={authProcess}\r\n viewMemberInfo={viewMemberInfo}\r\n columnInfo={columnInfo}\r\n status={status}\r\n showModal={memberShow}\r\n titleModal={titleModal}\r\n selectMemberSuccess={selectMemberSuccess}\r\n handleModal={this.handleShowModal}\r\n />\r\n <ModalWraper\r\n show={isMemberCareModal}\r\n className='member-care-modal'\r\n width='688'\r\n centered={true}\r\n memberClass='memberCareWidth'\r\n cancel={this.handleMemberCareModalCancel}\r\n >\r\n <div className='first'>会员生日关怀</div>\r\n <div className='second'>\r\n <div className='secondContent'>\r\n <Ticon type='dengpao'/>\r\n <span>口头关怀客户,提示引导客户去线上商城领取权益。</span>\r\n </div>\r\n </div>\r\n <div className='third'>\r\n <div className='one'>\r\n <img src={emptyMemberImage} />\r\n <Ticon type='shengri' />\r\n </div>\r\n <div className='two'>\r\n {\r\n memberCareInfo && memberCareInfo.daysToBirthday === 0 ? <span>\r\n 今天是{dtMember.Name}的生日,该会员是{dtMember.MemberType.Name},可享受以下权益\r\n </span> : <span>\r\n {dtMember.Name}会员还有{memberCareInfo && memberCareInfo.daysToBirthday}天生日,该会员是{dtMember.MemberType.Name},可享受以下权益\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n {\r\n memberCareInfo && <div className='fourth'>\r\n {memberCareInfo && memberCareInfo.memberCareDTO && memberCareInfo.memberCareDTO.memberRightRuleList && memberCareInfo.memberCareDTO.memberRightRuleList[0].integralMultiple && <div className='item'>1.{ memberCareInfo.memberCareDTO.memberRightRuleList[0].integralMultiple}</div>}\r\n {memberCareInfo && memberCareInfo.memberCareDTO && memberCareInfo.memberCareDTO.memberRightRuleList && memberCareInfo.memberCareDTO.memberRightRuleList[0].integralGive && <div className='item'>2.{ memberCareInfo.memberCareDTO.memberRightRuleList[0].integralGive}</div>}\r\n {\r\n memberCareInfo && memberCareInfo.memberCareDTO && memberCareInfo.memberCareDTO.memberRightRuleList && memberCareInfo.memberCareDTO.memberRightRuleList[0].couponIdMapList.map((value, index) => {\r\n let count = 0;\r\n if (memberCareInfo.memberCareDTO.memberRightRuleList[0].integralMultiple) {\r\n count += 1;\r\n }\r\n if (memberCareInfo.memberCareDTO.memberRightRuleList[0].integralGive) {\r\n count += 1;\r\n }\r\n return (<div className='item'>{count + 1 + index}.{value.name}</div>)\r\n })\r\n }\r\n </div>\r\n }\r\n </ModalWraper>\r\n {\r\n !isNewRetailBCPos && <ModalWraper show={this.ms.birthdayShow} centered={true} className='member-birthday'>\r\n <div className='picture'>\r\n <img width='350' height='308' src={memberBirthday} />\r\n <Ticon type=\"guanbi-yuan\" onClick={this.handleCloseBirthdayModal} />\r\n </div>\r\n <div className='remark'>今天是会员<span>{dtMember.Name || dtMember.CardCode}</span>的生日</div>\r\n </ModalWraper>\r\n }\r\n </div>\r\n );\r\n }\r\n}\r\nexport default MemberTag\r\n"]}
1
+ {"version":3,"sources":["tplus-member/member/index.js"],"names":["hasElectron","env","platform","constant","electron","emptyMemberImage","memberBirthday","currentMember","MemberTag","observer","props","stores","user","options","get","isMemberInputType","MemberMeStorageCardInputByKeyBoard","OpenFaceRecognition","ICCardServer","ICCardPassword","parseInt","isStorageCardInputType","openFaceRecognition","iCCardServer","iCCardPassword","ms","memberStore","isHorizontalPad","isHorizontalSunMi","isMobileEnvironment","handleReadICard","bind","keypressStime","iseyboardKEnter","isNewRetailBCPos","state","isCC","isShowBirthdayTip","isVoucherMode","localStore","context","viewModel","data","Member","dtMember","selectMemberInfo","isClear","memberChangeData","length","undefined","ID","searchValue","setState","memberChange","newAvatar","deepCloneMember","JSON","parse","clearSeletMember","seletMember","selectMemberStore","clearMemberCare","connectRfCard","window","removeEventListener","windowOnresize","closeRfCard","nextProps","isSendMessage","getInStoreMemberCount","nativeMs","setIpcRendererMethod","result","ret","status","connectCardStatus","connectCardError","value","Message","error","params","cardPsw","cardSec","cardKm","searchMember","memberPhoto","titleModal","memberShow","inShopLoading","faceLoading","shopPerson","viewMemberInfo","searchVisible","columnInfo","isMemberCare","isMemberCareModal","mode","authProcess","selectMemberSuccess","precisionInfo","items","viewVoucher","find","v","type","isTakeTheir","getIsTakeTheir","isSelectedMember","enumController","getEnumOj","Differentiate","memberCareInfo","inputSearch","el","input","e","handleSearch","target","handleFocus","handleBlur","onKeyPressed","changeScanProduct","loadFaceRecognition","scanObj","scan","onScanResult","openPhotoModal","ImageFile","handlePhotoModal","isTicket","daysToBirthday","handleMemberCareModal","setIsShowBirthdayTip","openShowModal","Name","CardCode","BalanceStorage","computedCoupon","COUPON","BalanceIntegral","openCloseModal","handleShowModal","handleMemberCareModalCancel","MemberType","memberCareDTO","memberRightRuleList","integralMultiple","integralGive","couponIdMapList","map","index","count","name","birthdayShow","handleCloseBirthdayModal","Component","propTypes","PropTypes","func","memberSearched","contextTypes","onEvent","object","defaultProps","controllerEvent","methodName","methodArgs","Action","fromJS","resetInShopMemberTimer","timer","clearTimeout","time","setTimeout","warn","res","title","jsMember","updateMember","setMemberFocus","uiState","IsIntegralExchange","store","tip","info","ModalWraper","confirm","className","content","onOk","changeBirthdayShow","val","Keyboard","open","getNewValue","keyboardClose","open2","blur","close","close2","readRfCard","offlineSys","shouldInOffline","searchLoading","trim","getMemberBirthday","getMeStorageCard","getSearchMember","currentPage","pageSize","key","isSingleMember","then","ColumnInfo","Data","IsStorage","drawerStore","init","onHide","subKey","listArr","changeMemberCare","catch","keyCode","stime","etime","Date","member","MemberCouponCount","couponKey","DynamicPropertyKeys","DynamicPropertyValues","couponIndex","findIndex","loadInStoreMember","String","tipMessage","console","log","err","startScan","getMemberBirthdayInfo"],"mappings":"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","file":"index.js","sourcesContent":["/**\r\n * @memberChange member 状态发生变化时的回调\r\n * @memberSearched 录入框会员状态发生变化时的回调 memberSearched(value, type) // type: searched 触发搜索 | err 搜索接口错误 | close 关闭会员\r\n *\r\n */\r\nimport React, { Component, Fragment } from 'react';\r\nimport { Button, Input } from 'antd';\r\nimport { observer } from 'mobx-react';\r\nimport { toJS } from 'mobx';\r\nimport PropTypes from 'prop-types'\r\nimport { Ticon, Message, ModalWraper, Spin, Keyboard,Scan } from 'tplus-components-touch';\r\nimport { env, nativeMs, localStore , stores} from 'mutants-microfx';\r\nimport { Action } from 'mutants-appfx'\r\nimport { platform, enumController } from 'mutants-util';\r\nimport MemberModal from './MemberShow';\r\nimport MemberPhoto from './MemberPhoto';\r\nimport memberStore from './api';\r\nimport { formatPrecision, userInfoFormat, errMessageTip } from '../utils';\r\nimport './index.less';\r\n\r\n\r\n\r\nconst hasElectron = (env.platform === env.constant.platform.electron);\r\n//定义默认头像值。\r\nconst emptyMemberImage = 'https://newretail.static.chanjet.com/default_avatar.png';\r\nconst memberBirthday = 'https://newretail.static.chanjet.com/pictures/member_birthday.png';\r\nlet currentMember;\r\n\r\n@observer\r\nclass MemberTag extends Component {\r\n\r\n state = {\r\n searchValue: '',\r\n titleModal: '',\r\n memberShow: false,\r\n memberPhoto: false,\r\n searchVisible: false,\r\n shopPerson: 0,\r\n status: 2, // 0会员详情、1到店会员、2人脸识别\r\n dtMember: {}, // 会员信息\r\n connectCardStatus: false, //连接IC卡状态\r\n connectCardError: '', //连接IC卡错误后记录错误信息\r\n isMemberCare: false,\r\n isMemberCareModal: false\r\n };\r\n\r\n static propTypes = {\r\n memberChange: PropTypes.func,\r\n memberSearched: PropTypes.func,\r\n }\r\n\r\n static contextTypes = {\r\n onEvent:PropTypes.func,\r\n viewModel: PropTypes.object,\r\n }\r\n\r\n static defaultProps = {\r\n memberChange: () => { },\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.hasElectron = hasElectron;\r\n const { isMemberInputType, MemberMeStorageCardInputByKeyBoard, OpenFaceRecognition, ICCardServer, ICCardPassword } = stores.user.options.get('loginInfo') || {};\r\n this.isMemberInputType = parseInt(isMemberInputType); // '0'为不禁用 '1'为禁用\r\n this.isStorageCardInputType = MemberMeStorageCardInputByKeyBoard; // 仅储值卡是否禁用键盘输入,'0'为不禁用 '1'为禁用\r\n this.openFaceRecognition = parseInt(OpenFaceRecognition); // 启用人脸识别:0禁用 1为启用\r\n this.iCCardServer = parseInt(ICCardServer); // 启用IC卡:0为禁用 1为启用\r\n this.iCCardPassword = ICCardPassword; //IC卡密码\r\n this.ms = memberStore;\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\r\n //记录键盘录入信息的开始时间\r\n this.keypressStime = null;\r\n this.iseyboardKEnter = false; //是否为键盘输入\r\n let { isNewRetailBCPos } = platform || {};\r\n this.state = {\r\n isCC: !!isNewRetailBCPos,\r\n isShowBirthdayTip: false,\r\n };\r\n\r\n //是否单据模式\r\n this.isVoucherMode = localStore && localStore.get('voucherDefaultPosMode') == 'voucher';\r\n }\r\n\r\n componentWillReact() {\r\n const { data: { Member: dtMember = {} } = {} } = this.context.viewModel || {};\r\n const { selectMemberInfo = {}, isClear = false } = this.ms;\r\n const memberChangeData = Object.keys(selectMemberInfo).length ? selectMemberInfo : undefined;\r\n // 有会员的话清空搜索框文本\r\n if (dtMember.ID && this.state.searchValue) {\r\n this.setState({\r\n searchValue: ''\r\n })\r\n }\r\n const memberChange = (data) => {\r\n this.setState({newAvatar: ''});\r\n this.props.memberChange(data);\r\n }\r\n if (typeof memberChangeData === 'object') {\r\n const deepCloneMember = JSON.parse(JSON.stringify(memberChangeData));\r\n if (!currentMember) {\r\n currentMember = deepCloneMember;\r\n memberChange(memberChangeData);\r\n } else if (currentMember.ID !== memberChangeData.ID) {\r\n memberChange(memberChangeData);\r\n currentMember = deepCloneMember;\r\n } else if (!dtMember.ID && (currentMember || {}).ID) { // DataModel 中清掉member,手动同步 member\r\n currentMember = undefined;\r\n this.ms.clearSeletMember();\r\n }\r\n } else if (currentMember && !memberChangeData) {\r\n memberChange(memberChangeData);\r\n currentMember = undefined;\r\n } else if (dtMember.ID && !(currentMember || {}).ID) { // DataModel 中存在member,手动同步 member\r\n const deepCloneMember = JSON.parse(JSON.stringify(dtMember));\r\n currentMember = deepCloneMember;\r\n this.ms.seletMember(dtMember);\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n stores.selectMemberStore && stores.selectMemberStore.clearMemberCare()\r\n this.connectRfCard();\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.windowOnresize);\r\n this.closeRfCard();\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n //接受socket传递过来的信息\r\n let { isSendMessage } = nextProps;\r\n if (isSendMessage === true) this.getInStoreMemberCount()\r\n }\r\n\r\n controllerEvent = (methodName, methodArgs) => {\r\n this.context.onEvent({ 'controllerEvent': Action.fromJS(this.context.viewModel, methodName) }, 'controllerEvent', methodArgs);\r\n }\r\n\r\n resetInShopMemberTimer = (count) => {\r\n this.timer && clearTimeout(this.timer);\r\n if (!count) return;\r\n const time = 5 * 60 * 1000;\r\n this.timer = setTimeout(() => {\r\n this.getInStoreMemberCount();\r\n }, time);\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\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 }\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\r\n openPhotoModal = () => {\r\n let { isNewRetailBCPos } = platform || {};\r\n if (!isNewRetailBCPos) {\r\n if (!this.openFaceRecognition) {\r\n Message.warn('未启用人脸识别,需要先开启人脸识别功能');\r\n return;\r\n }\r\n this.setState({\r\n memberPhoto: true,\r\n titleModal: '选择头像'\r\n })\r\n }\r\n }\r\n\r\n openShowModal = (status, res) => {\r\n let title = '';\r\n const { data: { Member = {} } = {} } = this.context.viewModel || {};\r\n const {newAvatar} = this.state;\r\n const jsMember = toJS(Member);\r\n const updateMember = newAvatar ? {...jsMember, ImageFile: newAvatar} : jsMember;\r\n switch (status) {\r\n case 0:\r\n title = '会员详情';\r\n this.setState({ viewMemberInfo: updateMember })\r\n break;\r\n case 1:\r\n title = '到店会员';\r\n this.setState({ viewMemberInfo: res })\r\n break;\r\n case 2:\r\n title = '人脸识别';\r\n this.setState({ viewMemberInfo: res })\r\n break;\r\n }\r\n this.setState({\r\n status: status,\r\n memberShow: true,\r\n titleModal: title\r\n })\r\n }\r\n\r\n openCloseModal = () => {\r\n const { setMemberFocus } = this.props;\r\n const memberStore = this.context.viewModel && this.context.viewModel.items.find(el => el.name == 'MemberStore');\r\n const uiState = memberStore.uiState;\r\n const IsIntegralExchange = memberStore.store && memberStore.store.data && memberStore.store.data.IsIntegralExchange\r\n if (!!uiState.tip) {\r\n Message.info(uiState.tip)\r\n return;\r\n }\r\n ModalWraper.confirm({\r\n className: 'tplus-confirm-modal',\r\n title: '关闭会员',\r\n content: `${IsIntegralExchange ? \"关闭会员将会清空商品信息!\" : \"确定要关闭该会员吗?\"}`,\r\n onOk: () => {\r\n this.ms.clearSeletMember();\r\n stores.selectMemberStore.clearMemberCare();\r\n typeof setMemberFocus == 'function' && setMemberFocus();\r\n }\r\n })\r\n }\r\n\r\n //关闭生日提醒\r\n handleCloseBirthdayModal = () => {\r\n this.ms.changeBirthdayShow(false);\r\n }\r\n\r\n //会员关怀-送礼\r\n handleMemberCareModal = () => {\r\n this.setState({ isMemberCareModal: true })\r\n }\r\n handleMemberCareModalCancel = () => {\r\n this.setState({ isMemberCareModal: false })\r\n }\r\n\r\n handleSearch = (val) => {\r\n this.setState({ searchValue: val })\r\n }\r\n\r\n handleFocus = (el) => {\r\n if (this.isMemberInputType) return;\r\n if (this.isVoucherMode) {\r\n Keyboard.open(\r\n v => {\r\n const value = Keyboard.getNewValue(this.inputSearch, this.inputSearch.value, v);\r\n this.handleSearch(value);\r\n },\r\n () => { this.searchMember(undefined, 'ok') },\r\n this.keyboardClose,\r\n 'ByMember',\r\n localStore.get('ByMember')\r\n )()\r\n } else {\r\n Keyboard.open2(\r\n (v) => {\r\n const value = Keyboard.getNewValue(this.inputSearch, this.inputSearch.value, v);\r\n this.handleSearch(value);\r\n },\r\n () => {\r\n this.searchMember(undefined, 'ok');\r\n },\r\n this.keyboardClose,\r\n 'ByMember',\r\n localStore.get('ByMember')\r\n )\r\n }\r\n }\r\n\r\n keyboardClose = () => {\r\n this.inputSearch.blur();\r\n }\r\n\r\n handleBlur = () => {\r\n if (this.isVoucherMode) {\r\n Keyboard.close();\r\n } else {\r\n Keyboard.close2();\r\n }\r\n }\r\n\r\n handleReadICard = () => {\r\n this.readRfCard();\r\n }\r\n\r\n handleShowModal = (type, params) => {\r\n if (params) {\r\n this.setState({ dtMember: params, memberShow: type })\r\n } else {\r\n this.setState({ memberShow: type })\r\n }\r\n }\r\n\r\n handlePhotoModal = (type, newAvatar) => {\r\n if (newAvatar) {\r\n this.setState({\r\n newAvatar,\r\n memberPhoto: type\r\n })\r\n } else {\r\n this.setState({ memberPhoto: type })\r\n }\r\n } \r\n\r\n searchMember = (val, type) => {\r\n if(!stores.offlineSys.shouldInOffline()) return;\r\n if (!this.ms || this.searchLoading) return;\r\n const {searchValue} = this.state;\r\n val = val || (searchValue || '').trim();\r\n if (!val) return;\r\n const { memberSearched, selectMemberSuccess,setMemberFocus,getMemberBirthday, getMeStorageCard } = this.props;\r\n this.searchLoading = true;\r\n this.setState({searchVisible: true});\r\n this.ms.getSearchMember({\r\n currentPage: 1,\r\n pageSize: 10,\r\n key: val,\r\n isSingleMember: false\r\n }).then(ret => {\r\n this.searchLoading = false;\r\n const {ColumnInfo: columnInfo, Data} = ret || {};\r\n const data = JSON.parse(Data) || [];\r\n const info = data[0];\r\n this.setState({searchVisible: false, columnInfo});\r\n if (info && info.MemberType && info.MemberType.IsStorage && this.isStorageCardInputType && this.iseyboardKEnter){\r\n getMeStorageCard && getMeStorageCard(true);\r\n this.handleSearch('');\r\n this.keypressStime = null;\r\n } else {\r\n getMeStorageCard && getMeStorageCard(false);\r\n }\r\n memberSearched && memberSearched(info, 'searched');\r\n if (info) {\r\n if (data.length > 1) {\r\n stores.drawerStore.init({\r\n title: '会员管理',\r\n key: 'member',\r\n onHide:()=>{\r\n },\r\n subKey: 'memberManager',\r\n listArr: data,\r\n });\r\n this.setState({\r\n searchValue: null\r\n })\r\n } else {\r\n memberSearched && memberSearched(info, 'searched');\r\n userInfoFormat(info);\r\n if (errMessageTip(info)) return;\r\n this.ms.seletMember(info, true);\r\n setTimeout(() => this.setState({ searchValue: '' }), 0);\r\n this.handleBlur();\r\n selectMemberSuccess && selectMemberSuccess();\r\n getMemberBirthday && getMemberBirthday(info.ID, (result) => {\r\n stores.selectMemberStore.changeMemberCare(result);\r\n });\r\n }\r\n } else {\r\n if (type === 'ok'){\r\n Message.warn('会员不存在');\r\n if (this.isMobileEnvironment) {\r\n setTimeout(() => this.setState({ searchValue: '' }), 0);\r\n }\r\n typeof setMemberFocus == 'function' && setMemberFocus();\r\n }\r\n }\r\n }).catch(err => {\r\n this.setState({searchVisible: false});\r\n this.searchLoading = false;\r\n memberSearched && memberSearched(undefined, 'err');\r\n })\r\n }\r\n\r\n //获取当前到店会员数量\r\n getInStoreMemberCount = () => {\r\n if (!this.ms) return;\r\n this.ms.getInStoreMemberCount().then(res => {\r\n const {data: {data: shopPerson} = {}} = res || {};\r\n this.setState({shopPerson});\r\n this.resetInShopMemberTimer(shopPerson);\r\n });\r\n }\r\n\r\n onKeyPressed = (e) => {\r\n const keyCode = e && e.keyCode\r\n if (keyCode === 13) {\r\n if (this.isMemberInputType) {\r\n let stime = this.keypressStime;\r\n let etime = Date.parse(new Date());\r\n if (etime - stime > 300) {\r\n this.handleSearch('')\r\n this.keypressStime = null;\r\n return Message.warn('未启用键盘录入功能');\r\n }\r\n this.keypressStime = null;\r\n }\r\n this.iseyboardKEnter = Date.parse(new Date()) - this.keypressStime > 300;\r\n if (this.isStorageCardInputType) {\r\n this.keypressStime = null;\r\n }\r\n if (this.searchLoading) return;\r\n this.searchMember(undefined, 'ok');\r\n }\r\n else if (this.isMemberInputType && !this.keypressStime && !(keyCode == 8)) {\r\n this.keypressStime = Date.parse(new Date())\r\n } else if (this.isStorageCardInputType && !this.keypressStime && !(keyCode == 8) && !this.isMemberInputType) {\r\n this.keypressStime = Date.parse(new Date())\r\n }\r\n }\r\n\r\n computedCoupon = (member = {}) => {\r\n let { isNewRetailBCPos } = platform || {};\r\n if (!!isNewRetailBCPos) {\r\n return member.MemberCouponCount? member.MemberCouponCount : '0';\r\n } else {\r\n const couponKey = 'membercouponcount';\r\n const {DynamicPropertyKeys = [], DynamicPropertyValues = []} = member;\r\n const couponIndex = DynamicPropertyKeys.findIndex(v => v === couponKey);\r\n return ~couponIndex ? DynamicPropertyValues[couponIndex] : '0';\r\n }\r\n }\r\n\r\n loadFaceRecognition = (type) => {\r\n // type = 1:到店会员 type = 2:POS机人脸识别\r\n this.setState({faceLoading: type === 2, inShopLoading: type === 1});\r\n this.ms.loadInStoreMember(String(type))\r\n .then(res => {\r\n this.setState({faceLoading: false, inShopLoading: false});\r\n const {Data} = res || {};\r\n if (!JSON.parse(Data).length) {\r\n const tipMessage = ['当前没有到店会员', '未识别到人脸信息'];\r\n type === 1 && this.setState({shopPerson: 0});\r\n return Message.info(tipMessage[type - 1]);\r\n }\r\n type === 1 && this.getInStoreMemberCount();\r\n this.openShowModal(type, res);\r\n })\r\n .catch(err => {\r\n this.setState({faceLoading: false, inShopLoading: false});\r\n console.log(err)\r\n });\r\n }\r\n\r\n //移动端:扫描商品\r\n changeScanProduct = () => {\r\n if (this.scanObj) this.scanObj.startScan()\r\n }\r\n onScanResult = (res) => {\r\n this.setState({\r\n searchValue: res\r\n }, () => {\r\n this.onKeyPressed({ keyCode: 13 })\r\n })\r\n }\r\n\r\n setIsShowBirthdayTip = () => {\r\n stores.selectMemberStore.clearMemberCare()\r\n }\r\n\r\n getMemberBirthdayInfo = (result) => {\r\n stores.selectMemberStore.changeMemberCare(result);\r\n }\r\n\r\n render() {\r\n const {\r\n memberPhoto, titleModal, memberShow, inShopLoading = false, faceLoading = false,\r\n status, shopPerson, searchValue, viewMemberInfo, newAvatar, searchVisible = false, columnInfo, isCC,\r\n isMemberCare, isMemberCareModal, isShowBirthdayTip\r\n } = this.state;\r\n const { mode = 'formal', authProcess, selectMemberSuccess } = this.props;\r\n const { selectMemberInfo, precisionInfo = {} } = this.ms; //selectMemberInfo 用作触发mobox render\r\n const { data: { Member: dtMember = {} } = {}, items = [] } = this.context.viewModel || {};\r\n const viewVoucher = items.find(v => v.type === 'Voucher') || {};\r\n const isTakeTheir = viewVoucher.getIsTakeTheir && viewVoucher.getIsTakeTheir();\r\n const isSelectedMember = !!dtMember.ID;\r\n const { Differentiate } = enumController.getEnumOj();\r\n const { memberCareInfo } = stores.selectMemberStore;\r\n let { isNewRetailBCPos } = platform || {};\r\n\r\n return (\r\n <div className='MemberContainer'>\r\n <div className='left'>\r\n {!isSelectedMember &&\r\n <div className='search'>\r\n <div className='b1'>\r\n <Input\r\n type='text'\r\n className=\"input\"\r\n id='memberPoint'\r\n placeholder='扫描/输入会员号'\r\n value={searchValue}\r\n ref={el => this.inputSearch = el && el.input}\r\n onChange={(e) => this.handleSearch(e.target.value)}\r\n onFocus={this.handleFocus}\r\n onBlur={this.handleBlur}\r\n onKeyDown={this.onKeyPressed}\r\n />\r\n <Spin\r\n className='search-spin'\r\n scale={0.8}\r\n type='circle-side'\r\n visible={searchVisible}\r\n />\r\n </div>\r\n <div className='b2'>\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 false && this.openFaceRecognition === 1 && !faceLoading &&\r\n <div className='openFaceRecognition-box'>\r\n <Ticon className='icon' onClick={() => this.loadFaceRecognition(2)} type=\"renlianshibie\" />\r\n <Spin\r\n className='face-spin'\r\n scale={0.8}\r\n type='circle'\r\n visible={faceLoading}\r\n />\r\n </div>\r\n )\r\n }\r\n {\r\n /* 扫描组件 */\r\n this.isHorizontalPad &&\r\n <Scan ref={scan => this.scanObj = scan} onChange={this.onScanResult} />\r\n }\r\n </div>\r\n </div>\r\n }\r\n {isSelectedMember &&\r\n <div className={`info ${this.openFaceRecognition ? '' : 'member-btn-hidden-flex'}`}>\r\n <div className='first'>\r\n <img onClick={this.openPhotoModal} src={newAvatar || dtMember.ImageFile || emptyMemberImage} />\r\n {memberPhoto && <MemberPhoto dtMember={dtMember} showModal={memberPhoto} titleModal={titleModal} handleModal={this.handlePhotoModal} />}\r\n {\r\n memberCareInfo && memberCareInfo.isTicket && <Ticon type=\"shengri\" className='shengriIcon'></Ticon>\r\n }\r\n {\r\n memberCareInfo && memberCareInfo.isTicket && <div className='birthdayContent'>\r\n <div className='birthdayWarn'>{memberCareInfo.daysToBirthday === 0 ? '今天生日' : memberCareInfo.daysToBirthday + '天后生日'}</div>\r\n <Button colors=\"warn\" onClick={this.handleMemberCareModal} className='check bg-theme'>查看</Button>\r\n <Ticon type=\"cuowuda\" className='cuowudaIcon'></Ticon>\r\n </div>\r\n }\r\n {\r\n memberCareInfo && memberCareInfo.isTicket && <Ticon type=\"cuowuda\" onClick={() => { this.setIsShowBirthdayTip()}} className='cuowudaIcon'></Ticon>\r\n }\r\n </div>\r\n <div className='second member-hotkey-info' onClick={() => this.openShowModal(0)}>\r\n <div className='one'>\r\n {dtMember.Name && <div className='a'>{dtMember.Name}</div>}\r\n <div className='b'>{dtMember.CardCode}</div>\r\n </div>\r\n <div className='two'>\r\n <div className='a'>{formatPrecision(dtMember.BalanceStorage, precisionInfo.BalanceStorage)}</div>\r\n <div className='b'>余额</div>\r\n </div>\r\n <div className='two'>\r\n <div className='a'>{this.computedCoupon(dtMember)}</div>\r\n <div className='b'>{Differentiate.COUPON}</div>\r\n </div>\r\n <div className='two'>\r\n <div className='a'>{formatPrecision(dtMember.BalanceIntegral, precisionInfo.BalanceIntegral) || 0}</div>\r\n <div className='b'>积分</div>\r\n </div>\r\n </div>\r\n <div className='close'>\r\n {!isTakeTheir && <Ticon type=\"guanbi-yuan\" onClick={this.openCloseModal} />}\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n {/* {\r\n memberCareInfo && memberCareInfo.isTicket ? <div className='float'>\r\n <div className='txt'>{memberCareInfo.daysToBirthday === 0 ? '今天生日' : memberCareInfo.daysToBirthday + '天后生日'}</div>\r\n <div className='btn' onClick={this.handleMemberCareModal}>查看</div>\r\n <div className='cancel'>\r\n <Ticon type='guanbixiao' onClick={() => {\r\n this.setIsShowBirthdayTip()\r\n }}/>\r\n </div>\r\n </div> : null\r\n } */}\r\n {!!this.openFaceRecognition && <div className='right'>\r\n <Button type=\"primary\" onClick={() => this.loadFaceRecognition(1)} className='btn' disabled={inShopLoading}>\r\n {!inShopLoading && '到店会员'}\r\n <Spin\r\n className='inshop-member-spin'\r\n scale={0.8}\r\n type='circle'\r\n visible={inShopLoading}\r\n />\r\n {!!shopPerson && <div className='badge'>{shopPerson}</div>}\r\n </Button>\r\n </div>}\r\n <MemberModal\r\n mode={mode}\r\n authProcess={authProcess}\r\n viewMemberInfo={viewMemberInfo}\r\n columnInfo={columnInfo}\r\n status={status}\r\n showModal={memberShow}\r\n storeKey='memberManager'\r\n titleModal={titleModal}\r\n selectMemberSuccess={selectMemberSuccess}\r\n handleModal={this.handleShowModal}\r\n />\r\n <ModalWraper\r\n show={isMemberCareModal}\r\n className='member-care-modal'\r\n width='688'\r\n centered={true}\r\n memberClass='memberCareWidth'\r\n cancel={this.handleMemberCareModalCancel}\r\n >\r\n <div className='first'>会员生日关怀</div>\r\n <div className='second'>\r\n <div className='secondContent'>\r\n <Ticon type='dengpao'/>\r\n <span>口头关怀客户,提示引导客户去线上商城领取权益。</span>\r\n </div>\r\n </div>\r\n <div className='third'>\r\n <div className='one'>\r\n <img src={emptyMemberImage} />\r\n <Ticon type='shengri' />\r\n </div>\r\n <div className='two'>\r\n {\r\n memberCareInfo && memberCareInfo.daysToBirthday === 0 ? <span>\r\n 今天是{dtMember.Name}的生日,该会员是{dtMember.MemberType.Name},可享受以下权益\r\n </span> : <span>\r\n {dtMember.Name}会员还有{memberCareInfo && memberCareInfo.daysToBirthday}天生日,该会员是{dtMember.MemberType.Name},可享受以下权益\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n {\r\n memberCareInfo && <div className='fourth'>\r\n {memberCareInfo && memberCareInfo.memberCareDTO && memberCareInfo.memberCareDTO.memberRightRuleList && memberCareInfo.memberCareDTO.memberRightRuleList[0].integralMultiple && <div className='item'>1.{ memberCareInfo.memberCareDTO.memberRightRuleList[0].integralMultiple}</div>}\r\n {memberCareInfo && memberCareInfo.memberCareDTO && memberCareInfo.memberCareDTO.memberRightRuleList && memberCareInfo.memberCareDTO.memberRightRuleList[0].integralGive && <div className='item'>2.{ memberCareInfo.memberCareDTO.memberRightRuleList[0].integralGive}</div>}\r\n {\r\n memberCareInfo && memberCareInfo.memberCareDTO && memberCareInfo.memberCareDTO.memberRightRuleList && memberCareInfo.memberCareDTO.memberRightRuleList[0].couponIdMapList.map((value, index) => {\r\n let count = 0;\r\n if (memberCareInfo.memberCareDTO.memberRightRuleList[0].integralMultiple) {\r\n count += 1;\r\n }\r\n if (memberCareInfo.memberCareDTO.memberRightRuleList[0].integralGive) {\r\n count += 1;\r\n }\r\n return (<div className='item'>{count + 1 + index}.{value.name}</div>)\r\n })\r\n }\r\n </div>\r\n }\r\n </ModalWraper>\r\n {\r\n !isNewRetailBCPos && <ModalWraper show={this.ms.birthdayShow} centered={true} className='member-birthday'>\r\n <div className='picture'>\r\n <img width='350' height='308' src={memberBirthday} />\r\n <Ticon type=\"guanbi-yuan\" onClick={this.handleCloseBirthdayModal} />\r\n </div>\r\n <div className='remark'>今天是会员<span>{dtMember.Name || dtMember.CardCode}</span>的生日</div>\r\n </ModalWraper>\r\n }\r\n </div>\r\n );\r\n }\r\n}\r\nexport default MemberTag\r\n"]}
@@ -0,0 +1,295 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = undefined;
7
+
8
+ var _input = require('antd/es/input');
9
+
10
+ var _input2 = _interopRequireDefault(_input);
11
+
12
+ var _regenerator = require('babel-runtime/regenerator');
13
+
14
+ var _regenerator2 = _interopRequireDefault(_regenerator);
15
+
16
+ var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
17
+
18
+ var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
19
+
20
+ var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
21
+
22
+ var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
23
+
24
+ var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
25
+
26
+ var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
27
+
28
+ var _createClass2 = require('babel-runtime/helpers/createClass');
29
+
30
+ var _createClass3 = _interopRequireDefault(_createClass2);
31
+
32
+ var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
33
+
34
+ var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
35
+
36
+ var _inherits2 = require('babel-runtime/helpers/inherits');
37
+
38
+ var _inherits3 = _interopRequireDefault(_inherits2);
39
+
40
+ require('antd/es/input/style');
41
+
42
+ var _react = require('react');
43
+
44
+ var _react2 = _interopRequireDefault(_react);
45
+
46
+ var _tplusComponentsTouch = require('tplus-components-touch');
47
+
48
+ require('./style.less');
49
+
50
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
51
+
52
+ var keyList = ['Shift', 'Backspace', 'Enter', 'Tab', 'CapsLock', 'Meta', 'Alt', 'Control', 'Delete'];
53
+
54
+ var BindCard = function (_Component) {
55
+ (0, _inherits3.default)(BindCard, _Component);
56
+
57
+ function BindCard(props) {
58
+ var _this2 = this;
59
+
60
+ (0, _classCallCheck3.default)(this, BindCard);
61
+
62
+ var _this = (0, _possibleConstructorReturn3.default)(this, (BindCard.__proto__ || (0, _getPrototypeOf2.default)(BindCard)).call(this, props));
63
+
64
+ _this.keyPressStamp = null;
65
+ _this.scanValue = '';
66
+
67
+ _this.onChange = function () {
68
+ var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(value) {
69
+ var newValue;
70
+ return _regenerator2.default.wrap(function _callee$(_context) {
71
+ while (1) {
72
+ switch (_context.prev = _context.next) {
73
+ case 0:
74
+ newValue = value;
75
+ // console.log(Date.now())
76
+
77
+ newValue = value.replace(/[^a-zA-Z0-9]/g, '');
78
+ // newValue = newValue.length > 16 ? newValue.substring(0, 16) : newValue
79
+ _context.next = 4;
80
+ return _this.setState({ value: newValue });
81
+
82
+ case 4:
83
+ _this.changeDisabled();
84
+
85
+ case 5:
86
+ case 'end':
87
+ return _context.stop();
88
+ }
89
+ }
90
+ }, _callee, _this2);
91
+ }));
92
+
93
+ return function (_x) {
94
+ return _ref.apply(this, arguments);
95
+ };
96
+ }();
97
+
98
+ _this.onPasswordChange = function () {
99
+ var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(password) {
100
+ return _regenerator2.default.wrap(function _callee2$(_context2) {
101
+ while (1) {
102
+ switch (_context2.prev = _context2.next) {
103
+ case 0:
104
+ _context2.next = 2;
105
+ return _this.setState({ password: password });
106
+
107
+ case 2:
108
+ _this.changeDisabled();
109
+
110
+ case 3:
111
+ case 'end':
112
+ return _context2.stop();
113
+ }
114
+ }
115
+ }, _callee2, _this2);
116
+ }));
117
+
118
+ return function (_x2) {
119
+ return _ref2.apply(this, arguments);
120
+ };
121
+ }();
122
+
123
+ _this.KeyboardShow = function (inputType) {
124
+ var bindCardClick = _this.props.bindCardClick;
125
+
126
+ var ref = inputType === 'value' ? _this.inputRef.input : _this.passwordRef.input;
127
+ _tplusComponentsTouch.Keyboard.open(function (v) {
128
+ var value = _tplusComponentsTouch.Keyboard.getNewValue(ref, _this.state.value, v);
129
+ inputType === 'value' && _this.onChange(value);
130
+ inputType === 'password' && _this.setState({ password: value });
131
+ }, function () {
132
+ // 点击键盘的确定按钮,设置disabled
133
+ _this.changeDisabled();
134
+ _tplusComponentsTouch.Keyboard.close();
135
+ bindCardClick && bindCardClick();
136
+ }, _this.keyboardClose)();
137
+ };
138
+
139
+ _this.keyboardClose = function () {
140
+ _this.changeDisabled();
141
+ _this.inputRef.blur();
142
+ };
143
+
144
+ _this.inputBlur = function () {
145
+ _tplusComponentsTouch.Keyboard.close();
146
+ _this.changeDisabled();
147
+ };
148
+
149
+ _this.handleKeyPress = function () {
150
+ var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(ev, value) {
151
+ var keyCode, key, currentStamp, newValue, password, bindCardClick;
152
+ return _regenerator2.default.wrap(function _callee3$(_context3) {
153
+ while (1) {
154
+ switch (_context3.prev = _context3.next) {
155
+ case 0:
156
+ keyCode = ev.keyCode, key = ev.key;
157
+
158
+ if (key && key.length && !keyList.includes(key)) _this.scanValue += key;
159
+ // 扫描录入会自动触发enter
160
+
161
+ if (!(keyCode === 13)) {
162
+ _context3.next = 14;
163
+ break;
164
+ }
165
+
166
+ currentStamp = Date.now();
167
+ // 触发enter事件的时候,如果当前触发事件-上次keyDown事件大于300毫秒,说明是手动录入,否则是扫描录入
168
+
169
+ if (!(currentStamp - _this.keyPressStamp <= 300)) {
170
+ _context3.next = 11;
171
+ break;
172
+ }
173
+
174
+ newValue = _this.scanValue.substring(0, 16);
175
+ password = _this.scanValue.substring(16);
176
+ bindCardClick = _this.props.bindCardClick;
177
+ _context3.next = 10;
178
+ return _this.setState({
179
+ value: newValue,
180
+ password: password
181
+ });
182
+
183
+ case 10:
184
+ bindCardClick();
185
+
186
+ case 11:
187
+ _this.scanValue = '';
188
+ _context3.next = 15;
189
+ break;
190
+
191
+ case 14:
192
+ // keydown的时候保存当前时间戳,用来做是手动录入的还是扫描录入的判断
193
+ _this.keyPressStamp = Date.now();
194
+
195
+ case 15:
196
+ _this.changeDisabled();
197
+
198
+ case 16:
199
+ case 'end':
200
+ return _context3.stop();
201
+ }
202
+ }
203
+ }, _callee3, _this2);
204
+ }));
205
+
206
+ return function (_x3, _x4) {
207
+ return _ref3.apply(this, arguments);
208
+ };
209
+ }();
210
+
211
+ _this.state = {
212
+ value: '',
213
+ password: ''
214
+ };
215
+ return _this;
216
+ }
217
+
218
+ (0, _createClass3.default)(BindCard, [{
219
+ key: 'componentDidMount',
220
+ value: function componentDidMount() {
221
+ // 设置输入框focus
222
+ this.inputRef.focus();
223
+ }
224
+
225
+ // 密码框
226
+
227
+ }, {
228
+ key: 'changeDisabled',
229
+ value: function changeDisabled() {
230
+ var _state = this.state,
231
+ value = _state.value,
232
+ password = _state.password;
233
+
234
+ this.props.changeBindCardBtnDisabled(!value.length || !password.length);
235
+ }
236
+ // 显示键盘
237
+
238
+ // 点击键盘的关闭按钮,设置disabled
239
+
240
+ // 输入框失去焦点,关闭键盘,设置disabled
241
+
242
+ }, {
243
+ key: 'render',
244
+ value: function render() {
245
+ var _this3 = this;
246
+
247
+ var _state2 = this.state,
248
+ value = _state2.value,
249
+ password = _state2.password;
250
+
251
+ return _react2.default.createElement(
252
+ 'div',
253
+ { className: 'bind-card-container', style: { marginTop: ' 14px' } },
254
+ _react2.default.createElement(_input2.default, {
255
+ className: _tplusComponentsTouch.hotKey.hotKeyNotFilter('storageNo-input'),
256
+ ref: function ref(input) {
257
+ return _this3.inputRef = input;
258
+ },
259
+ placeholder: '\u8BF7\u8F93\u5165\u50A8\u503C\u5361\u53F7',
260
+ value: value,
261
+ onChange: function onChange(_ref4) {
262
+ var value = _ref4.target.value;
263
+ return _this3.onChange(value);
264
+ },
265
+ onFocus: function onFocus() {
266
+ return _this3.KeyboardShow('value');
267
+ },
268
+ onBlur: this.inputBlur,
269
+ onKeyDown: this.handleKeyPress
270
+ }),
271
+ _react2.default.createElement('div', { className: 'line' }),
272
+ _react2.default.createElement(_input2.default, {
273
+ ref: function ref(input) {
274
+ return _this3.passwordRef = input;
275
+ },
276
+ type: 'password',
277
+ placeholder: '\u8BF7\u8F93\u5165\u5151\u6362\u7801',
278
+ value: password,
279
+ onChange: function onChange(_ref5) {
280
+ var value = _ref5.target.value;
281
+ return _this3.onPasswordChange(value);
282
+ },
283
+ onFocus: function onFocus() {
284
+ return _this3.KeyboardShow('password');
285
+ },
286
+ onBlur: this.inputBlur
287
+ })
288
+ );
289
+ }
290
+ }]);
291
+ return BindCard;
292
+ }(_react.Component);
293
+
294
+ exports.default = BindCard;
295
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["tplus-member/member/memberMenu/bindCard/index.js"],"names":["keyList","BindCard","props","keyPressStamp","scanValue","onChange","value","newValue","replace","setState","changeDisabled","onPasswordChange","password","KeyboardShow","inputType","bindCardClick","ref","inputRef","input","passwordRef","Keyboard","open","getNewValue","state","v","close","keyboardClose","blur","inputBlur","handleKeyPress","ev","keyCode","key","length","includes","currentStamp","Date","now","substring","focus","changeBindCardBtnDisabled","marginTop","hotKey","hotKeyNotFilter","target","Component"],"mappings":"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","file":"index.js","sourcesContent":["import React, { Component } from 'react'\r\nimport { Input } from 'antd'\r\nimport { Keyboard, hotKey } from 'tplus-components-touch'\r\nimport './style.less';\r\n\r\nconst keyList = ['Shift', 'Backspace', 'Enter', 'Tab', 'CapsLock', 'Meta', 'Alt', 'Control', 'Delete']\r\nexport default class BindCard extends Component {\r\n keyPressStamp = null\r\n scanValue = ''\r\n constructor (props) {\r\n super(props)\r\n this.state = {\r\n value: '',\r\n password: ''\r\n }\r\n }\r\n componentDidMount () {\r\n // 设置输入框focus\r\n this.inputRef.focus()\r\n }\r\n onChange = async (value) => {\r\n let newValue = value\r\n // console.log(Date.now())\r\n newValue = value.replace(/[^a-zA-Z0-9]/g,'')\r\n // newValue = newValue.length > 16 ? newValue.substring(0, 16) : newValue\r\n await this.setState({value: newValue})\r\n this.changeDisabled()\r\n }\r\n \r\n // 密码框\r\n onPasswordChange = async (password) => {\r\n await this.setState({password})\r\n this.changeDisabled()\r\n }\r\n changeDisabled () {\r\n const { value, password } = this.state\r\n this.props.changeBindCardBtnDisabled((!value.length || !password.length))\r\n }\r\n // 显示键盘\r\n KeyboardShow = (inputType) => {\r\n const { bindCardClick } = this.props\r\n const ref = inputType === 'value' ? this.inputRef.input : this.passwordRef.input\r\n Keyboard.open(v => {\r\n const value = Keyboard.getNewValue(ref, this.state.value, v);\r\n inputType === 'value' && this.onChange(value)\r\n inputType === 'password' && this.setState({password: value})\r\n }, () => {\r\n // 点击键盘的确定按钮,设置disabled\r\n this.changeDisabled()\r\n Keyboard.close() \r\n bindCardClick && bindCardClick()\r\n }, this.keyboardClose)()\r\n }\r\n // 点击键盘的关闭按钮,设置disabled\r\n keyboardClose = () => {\r\n this.changeDisabled()\r\n this.inputRef.blur()\r\n }\r\n // 输入框失去焦点,关闭键盘,设置disabled\r\n inputBlur = () => {\r\n Keyboard.close()\r\n this.changeDisabled()\r\n }\r\n handleKeyPress = async (ev, value) => {\r\n const { keyCode, key } = ev\r\n if (key && key.length && !keyList.includes(key)) this.scanValue += key\r\n // 扫描录入会自动触发enter\r\n if (keyCode === 13) {\r\n const currentStamp = Date.now()\r\n // 触发enter事件的时候,如果当前触发事件-上次keyDown事件大于300毫秒,说明是手动录入,否则是扫描录入\r\n if (currentStamp - this.keyPressStamp <= 300) {\r\n const newValue = this.scanValue.substring(0, 16)\r\n const password = this.scanValue.substring(16)\r\n const { bindCardClick } = this.props\r\n await this.setState({\r\n value: newValue,\r\n password\r\n })\r\n bindCardClick()\r\n }\r\n this.scanValue = ''\r\n } else {\r\n // keydown的时候保存当前时间戳,用来做是手动录入的还是扫描录入的判断\r\n this.keyPressStamp = Date.now()\r\n }\r\n this.changeDisabled()\r\n }\r\n\r\n render () {\r\n const { value, password } = this.state\r\n return (\r\n <div className=\"bind-card-container\" style={{ marginTop:' 14px' }}>\r\n <Input \r\n className={hotKey.hotKeyNotFilter('storageNo-input')}\r\n ref={input => this.inputRef = input}\r\n placeholder='请输入储值卡号'\r\n value={value}\r\n onChange={({ target: { value } }) => this.onChange(value)}\r\n onFocus={() => this.KeyboardShow('value')}\r\n onBlur={this.inputBlur}\r\n onKeyDown={this.handleKeyPress}\r\n />\r\n <div className=\"line\"></div>\r\n <Input \r\n ref={input => this.passwordRef = input}\r\n type='password'\r\n placeholder='请输入兑换码'\r\n value={password}\r\n onChange={({ target: { value } }) => this.onPasswordChange(value)}\r\n onFocus={() => this.KeyboardShow('password')}\r\n onBlur={this.inputBlur}\r\n />\r\n </div>\r\n )\r\n }\r\n} "]}
@@ -0,0 +1,8 @@
1
+ .bind-card-container {
2
+ width: 250px;
3
+ margin: 0 auto;
4
+ margin-top: 37px;
5
+ .line {
6
+ height: 12px;
7
+ }
8
+ }