tplus-portaltouch 3.17.29 → 3.17.30
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.
| 
         @@ -69,7 +69,9 @@ var NETWORK_THEME_PATH = "/"; 
     | 
|
| 
       69 
69 
     | 
    
         
             
            var PLACE_ORDER_PATH = "/RE/RE01";
         
     | 
| 
       70 
70 
     | 
    
         
             
            var weakRemindNum = 0; // 弱网提示初始值
         
     | 
| 
       71 
71 
     | 
    
         
             
            var WEAK_STANDARD_NUM = 3; // 弱网提示的次数上限
         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
      
 72 
     | 
    
         
            +
            //自助大屏、PAD版本、商米暂不支持离线
         
     | 
| 
      
 73 
     | 
    
         
            +
            var otherOfflineStatus = _mutantsMicrofx.localStore.get('isVerticalTouch') == 'true' || _mutantsMicrofx.localStore.get('isHorizontalPad') == 'true' || _mutantsMicrofx.localStore.get('isHorizontalSunMi') == 'true';
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
       73 
75 
     | 
    
         
             
            //头部时间
         
     | 
| 
       74 
76 
     | 
    
         
             
            function HeadTime(props) {
         
     | 
| 
       75 
77 
     | 
    
         
             
              var time = props.time,
         
     | 
| 
         @@ -184,8 +186,27 @@ var OnLineStatusToggle = (0, _mobxReact.observer)(function (props) { 
     | 
|
| 
       184 
186 
     | 
    
         | 
| 
       185 
187 
     | 
    
         
             
              var networkState = networkCheckStore.networkState;
         
     | 
| 
       186 
188 
     | 
    
         
             
              var isOnLine = networkCheckStore.isOnLine;
         
     | 
| 
      
 189 
     | 
    
         
            +
              var hasUseOffline = isOfflineCash && !otherOfflineStatus; //是否允许离线
         
     | 
| 
       187 
190 
     | 
    
         
             
              var iconName = 'WiFi';
         
     | 
| 
       188 
     | 
    
         
            -
              if ( 
     | 
| 
      
 191 
     | 
    
         
            +
              if (hasUseOffline) {
         
     | 
| 
      
 192 
     | 
    
         
            +
                var weakConfirm = function weakConfirm() {
         
     | 
| 
      
 193 
     | 
    
         
            +
                  if (!isOnLine) return; // 离线不提示
         
     | 
| 
      
 194 
     | 
    
         
            +
                  if (networkState !== '弱网') return; // 非弱网不提示
         
     | 
| 
      
 195 
     | 
    
         
            +
                  if (weakRemindNum >= WEAK_STANDARD_NUM) return; // 提示大于三次不再提示
         
     | 
| 
      
 196 
     | 
    
         
            +
                  if (!offlineSys.getDataIsOffline) return; // 数据未下载完不提示
         
     | 
| 
      
 197 
     | 
    
         
            +
                  if (document.querySelector('.isRetailUpLoading')) return; // 上传中不提示
         
     | 
| 
      
 198 
     | 
    
         
            +
                  if (document.querySelector('.isRetailDownLoading')) return; // 下载中不提示
         
     | 
| 
      
 199 
     | 
    
         
            +
                  if (document.querySelector('.tplus-loading')) return; // 全屏loading不提示
         
     | 
| 
      
 200 
     | 
    
         
            +
                  weakRemindNum++;
         
     | 
| 
      
 201 
     | 
    
         
            +
                  _tplusComponentsTouch.ModalWraper.confirm({
         
     | 
| 
      
 202 
     | 
    
         
            +
                    title: t('提示'),
         
     | 
| 
      
 203 
     | 
    
         
            +
                    content: t('当前网络不好,是否切换到离线?'),
         
     | 
| 
      
 204 
     | 
    
         
            +
                    onOk: function onOk() {
         
     | 
| 
      
 205 
     | 
    
         
            +
                      setOffLine(true);
         
     | 
| 
      
 206 
     | 
    
         
            +
                    }
         
     | 
| 
      
 207 
     | 
    
         
            +
                  });
         
     | 
| 
      
 208 
     | 
    
         
            +
                };
         
     | 
| 
      
 209 
     | 
    
         
            +
             
     | 
| 
       189 
210 
     | 
    
         
             
                switch (networkState) {
         
     | 
| 
       190 
211 
     | 
    
         
             
                  case '联网':
         
     | 
| 
       191 
212 
     | 
    
         
             
                    iconName = 'WiFi';
         
     | 
| 
         @@ -208,18 +229,9 @@ var OnLineStatusToggle = (0, _mobxReact.observer)(function (props) { 
     | 
|
| 
       208 
229 
     | 
    
         
             
                    }
         
     | 
| 
       209 
230 
     | 
    
         
             
                  });
         
     | 
| 
       210 
231 
     | 
    
         
             
                }
         
     | 
| 
       211 
     | 
    
         
            -
                if (isOnLine && networkState === '弱网' && weakRemindNum <= WEAK_STANDARD_NUM && offlineSys.getDataIsOffline()) {
         
     | 
| 
       212 
     | 
    
         
            -
                  weakRemindNum++;
         
     | 
| 
       213 
     | 
    
         
            -
                  _tplusComponentsTouch.ModalWraper.confirm({
         
     | 
| 
       214 
     | 
    
         
            -
                    title: t('提示'),
         
     | 
| 
       215 
     | 
    
         
            -
                    content: t('当前网络不好,是否切换到离线?'),
         
     | 
| 
       216 
     | 
    
         
            -
                    onOk: function onOk() {
         
     | 
| 
       217 
     | 
    
         
            -
                      setOffLine(true);
         
     | 
| 
       218 
     | 
    
         
            -
                    }
         
     | 
| 
       219 
     | 
    
         
            -
                  });
         
     | 
| 
       220 
     | 
    
         
            -
                }
         
     | 
| 
       221 
     | 
    
         
            -
              }
         
     | 
| 
       222 
232 
     | 
    
         | 
| 
      
 233 
     | 
    
         
            +
                weakConfirm();
         
     | 
| 
      
 234 
     | 
    
         
            +
              }
         
     | 
| 
       223 
235 
     | 
    
         
             
              function switchStatus() {
         
     | 
| 
       224 
236 
     | 
    
         
             
                if (networkState === '离线' && !isOnLine) {
         
     | 
| 
       225 
237 
     | 
    
         
             
                  _tplusComponentsTouch.Message.tip('当前无网络,无法切换为在线状态');
         
     | 
| 
         @@ -249,7 +261,7 @@ var OnLineStatusToggle = (0, _mobxReact.observer)(function (props) { 
     | 
|
| 
       249 
261 
     | 
    
         
             
              function playStatus(status) {
         
     | 
| 
       250 
262 
     | 
    
         
             
                // status 为 true 是在线切离线
         
     | 
| 
       251 
263 
     | 
    
         
             
                if (status) {
         
     | 
| 
       252 
     | 
    
         
            -
                  if (!offlineSys.getDataIsOffline() ||  
     | 
| 
      
 264 
     | 
    
         
            +
                  if (!offlineSys.getDataIsOffline() || document.querySelector('.isRetailDownLoading')) {
         
     | 
| 
       253 
265 
     | 
    
         
             
                    _tplusComponentsTouch.Message.tip('数据还未下载完,无法切换为离线');
         
     | 
| 
       254 
266 
     | 
    
         
             
                    return;
         
     | 
| 
       255 
267 
     | 
    
         
             
                  }
         
     | 
| 
         @@ -271,7 +283,7 @@ var OnLineStatusToggle = (0, _mobxReact.observer)(function (props) { 
     | 
|
| 
       271 
283 
     | 
    
         
             
                    _react2.default.createElement(_tplusComponentsTouch.Ticon, { icon: iconName })
         
     | 
| 
       272 
284 
     | 
    
         
             
                  )
         
     | 
| 
       273 
285 
     | 
    
         
             
                ),
         
     | 
| 
       274 
     | 
    
         
            -
                 
     | 
| 
      
 286 
     | 
    
         
            +
                hasUseOffline && isShowUploadBtnsByRouter && _react2.default.createElement(
         
     | 
| 
       275 
287 
     | 
    
         
             
                  'div',
         
     | 
| 
       276 
288 
     | 
    
         
             
                  { className: 'status-square c-pointer online-status-bg ' + (isOnLine || isResetNetWorkTheme ? '' : 'off-line') },
         
     | 
| 
       277 
289 
     | 
    
         
             
                  _react2.default.createElement(
         
     | 
| 
         @@ -490,15 +502,14 @@ function RetailDownload() { 
     | 
|
| 
       490 
502 
     | 
    
         
             
                        case 6:
         
     | 
| 
       491 
503 
     | 
    
         
             
                          setDownStr('0 %');
         
     | 
| 
       492 
504 
     | 
    
         
             
                          setIsDownload(true);
         
     | 
| 
       493 
     | 
    
         
            -
                          isRetailDownloading = true;
         
     | 
| 
       494 
505 
     | 
    
         
             
                          _tplusComponentsTouch.Message.tip('下载中');
         
     | 
| 
       495 
     | 
    
         
            -
                          _context3.prev =  
     | 
| 
       496 
     | 
    
         
            -
                          _context3.next =  
     | 
| 
      
 506 
     | 
    
         
            +
                          _context3.prev = 9;
         
     | 
| 
      
 507 
     | 
    
         
            +
                          _context3.next = 12;
         
     | 
| 
       497 
508 
     | 
    
         
             
                          return offlineSys.downloadCatcherData(function (e) {
         
     | 
| 
       498 
509 
     | 
    
         
             
                            setDownStr(e.percent + ' %');
         
     | 
| 
       499 
510 
     | 
    
         
             
                          });
         
     | 
| 
       500 
511 
     | 
    
         | 
| 
       501 
     | 
    
         
            -
                        case  
     | 
| 
      
 512 
     | 
    
         
            +
                        case 12:
         
     | 
| 
       502 
513 
     | 
    
         
             
                          result = _context3.sent;
         
     | 
| 
       503 
514 
     | 
    
         | 
| 
       504 
515 
     | 
    
         
             
                          if (result) {
         
     | 
| 
         @@ -506,26 +517,25 @@ function RetailDownload() { 
     | 
|
| 
       506 
517 
     | 
    
         
             
                          } else {
         
     | 
| 
       507 
518 
     | 
    
         
             
                            _tplusComponentsTouch.Message.error('\u6570\u636E\u4E0B\u8F7D\u5931\u8D25');
         
     | 
| 
       508 
519 
     | 
    
         
             
                          }
         
     | 
| 
       509 
     | 
    
         
            -
                          _context3.next =  
     | 
| 
      
 520 
     | 
    
         
            +
                          _context3.next = 19;
         
     | 
| 
       510 
521 
     | 
    
         
             
                          break;
         
     | 
| 
       511 
522 
     | 
    
         | 
| 
       512 
     | 
    
         
            -
                        case  
     | 
| 
       513 
     | 
    
         
            -
                          _context3.prev =  
     | 
| 
       514 
     | 
    
         
            -
                          _context3.t0 = _context3['catch']( 
     | 
| 
      
 523 
     | 
    
         
            +
                        case 16:
         
     | 
| 
      
 524 
     | 
    
         
            +
                          _context3.prev = 16;
         
     | 
| 
      
 525 
     | 
    
         
            +
                          _context3.t0 = _context3['catch'](9);
         
     | 
| 
       515 
526 
     | 
    
         | 
| 
       516 
527 
     | 
    
         
             
                          _tplusComponentsTouch.Message.error('数据下载失败');
         
     | 
| 
       517 
528 
     | 
    
         | 
| 
       518 
     | 
    
         
            -
                        case  
     | 
| 
      
 529 
     | 
    
         
            +
                        case 19:
         
     | 
| 
       519 
530 
     | 
    
         
             
                          setDownStr('下载数据');
         
     | 
| 
       520 
531 
     | 
    
         
             
                          setIsDownload(false);
         
     | 
| 
       521 
     | 
    
         
            -
                          isRetailDownloading = false;
         
     | 
| 
       522 
532 
     | 
    
         | 
| 
       523 
     | 
    
         
            -
                        case  
     | 
| 
      
 533 
     | 
    
         
            +
                        case 21:
         
     | 
| 
       524 
534 
     | 
    
         
             
                        case 'end':
         
     | 
| 
       525 
535 
     | 
    
         
             
                          return _context3.stop();
         
     | 
| 
       526 
536 
     | 
    
         
             
                      }
         
     | 
| 
       527 
537 
     | 
    
         
             
                    }
         
     | 
| 
       528 
     | 
    
         
            -
                  }, _callee3, _this2, [[ 
     | 
| 
      
 538 
     | 
    
         
            +
                  }, _callee3, _this2, [[9, 16]]);
         
     | 
| 
       529 
539 
     | 
    
         
             
                }));
         
     | 
| 
       530 
540 
     | 
    
         | 
| 
       531 
541 
     | 
    
         
             
                return function handleDownLoad() {
         
     | 
| 
         @@ -620,7 +630,7 @@ function HeadContent(props, context) { 
     | 
|
| 
       620 
630 
     | 
    
         
             
                setIsShowUploadBtnsByRouter(route.pathname.indexOf(UPLOAD_BASE_PATH) < 0);
         
     | 
| 
       621 
631 
     | 
    
         
             
                setIsPlaceOrderPage(route.pathname.indexOf(PLACE_ORDER_PATH) > -1);
         
     | 
| 
       622 
632 
     | 
    
         
             
              });
         
     | 
| 
       623 
     | 
    
         
            -
              var  
     | 
| 
      
 633 
     | 
    
         
            +
              var hasUseOffline = (0, _tplusPoslogin.PosInitData)('IsOfflineCash') === "1" && !otherOfflineStatus; //是否允许离线
         
     | 
| 
       624 
634 
     | 
    
         
             
              var menuProps = { onClick: onClick };
         
     | 
| 
       625 
635 
     | 
    
         
             
              var menus = _react2.default.createElement(
         
     | 
| 
       626 
636 
     | 
    
         
             
                _antd.Menu,
         
     | 
| 
         @@ -799,9 +809,9 @@ function HeadContent(props, context) { 
     | 
|
| 
       799 
809 
     | 
    
         
             
                      _react2.default.createElement('i', { className: 'header-triangle-down' })
         
     | 
| 
       800 
810 
     | 
    
         
             
                    )
         
     | 
| 
       801 
811 
     | 
    
         
             
                  ),
         
     | 
| 
       802 
     | 
    
         
            -
                  _react2.default.createElement(OnLineStatusToggle, { isShowUploadBtnsByRouter: isShowUploadBtnsByRouter, isResetNetWorkTheme: isResetNetWorkTheme, isOfflineCash:  
     | 
| 
       803 
     | 
    
         
            -
                   
     | 
| 
       804 
     | 
    
         
            -
                   
     | 
| 
      
 812 
     | 
    
         
            +
                  _react2.default.createElement(OnLineStatusToggle, { isShowUploadBtnsByRouter: isShowUploadBtnsByRouter, isResetNetWorkTheme: isResetNetWorkTheme, isOfflineCash: hasUseOffline, isPlaceOrderPage: isPlaceOrderPage }),
         
     | 
| 
      
 813 
     | 
    
         
            +
                  hasUseOffline && isShowUploadBtnsByRouter && _react2.default.createElement(RetailUpload, null),
         
     | 
| 
      
 814 
     | 
    
         
            +
                  hasUseOffline && isShowUploadBtnsByRouter && _react2.default.createElement(RetailDownload, null)
         
     | 
| 
       805 
815 
     | 
    
         
             
                ),
         
     | 
| 
       806 
816 
     | 
    
         
             
                isElectron && headControlNode,
         
     | 
| 
       807 
817 
     | 
    
         
             
                _react2.default.createElement(
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"sources":["tplus-portaltouch/components/header/headContent.js"],"names":["HeadContent","Item","Menu","defaultFromat","t","i18n","getFixedT","UPLOAD_BASE_PATH","NETWORK_THEME_PATH","PLACE_ORDER_PATH","weakRemindNum","WEAK_STANDARD_NUM","isRetailDownloading","HeadTime","props","time","dateFormat","unMount","timeStr","Date","now","currentTime","setCurrentTime","timeout","refreshDate","setTimeout","clearTimeout","split","date_YMD","date_HMS","platform","isVerticalTouch","OnLineStatus","networkStatus","networkCheckStore","stores","networkState","networkOn","iconName","switchNetwork","checked","event","switchOnLine","lineIcon","marginRight","getIsOffNetWork","OnLineStatusToggle","isShowUploadBtnsByRouter","isResetNetWorkTheme","isOfflineCash","isPlaceOrderPage","offlineSys","voucherStore","isOnLine","ModalWraper","confirm","title","content","onOk","setOffLine","getDataIsOffline","switchStatus","Message","tip","status","playStatus","setIsOffline","clearVoucherData","color","OFFLINE_POINT_DESC","RetailUpload","isModalVisible","setIsModalVisible","isUpLoading","setIsUpLoading","refModal","showModal","current","fetch","handleOk","isUpLoad","uploadRetail","error","handleCancel","UnLoadNum","retailNotUploadNumber","display","RetailDownload","isDownload","setIsDownload","downStr","setDownStr","handleDownLoad","downloadCatcherData","e","percent","result","success","DownloadBtn","releaseDate","releaseVersion","__RELEASESDATE__","__BUILDVERSION__","context","isElectron","env","businessName","storeName","posCode","logo","style","history","solt","isPortal","isLogin","menu","onClick","location","themeVisible","setThemeVisible","window","href","indexOf","setIsShowUploadBtnsByRouter","pathname","setIsResetNetWorkTheme","setIsPlaceOrderPage","listen","route","menuProps","menus","map","item","i","key","icon","controlConfig","type","beforeEvent","className","Loading","show","node","delay","actionHook","actionChange","User","logout","nativeMs","doWindow","clear","localStore","remove","splitUser","value","regEmail","RegExp","isEmail","test","setInventoryFocus","isHorizontalPad","doms","document","getElementsByClassName","input","getElementById","length","console","log","focus","clickTheme","isShow","userName","overlayClassName","moreInfoNode","headControlNode","v","width","height","replace","preventDefault","contextTypes","PropTypes","object"],"mappings":"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","file":"headContent.js","sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\r\nimport { Ticon, ModalWraper, Loading, Spin, Message } from 'tplus-components-touch';\r\nimport { Tooltip, Menu, Dropdown, Switch, Popover } from 'antd';\r\nimport PropTypes from 'prop-types';\r\nimport { formatDate } from '../../utils';\r\nimport { env, nativeMs, localStore, i18n } from 'mutants-microfx';\r\nimport { PosInitData } from 'tplus-poslogin';\r\nimport { User } from 'tplus-api';\r\nimport { verticalHeadTime, verticalHeadContent } from './vertical-touch';\r\nimport { platform } from 'mutants-util';\r\nimport ThemeModal from \"./themeModal\";\r\nimport UploadOrder from \"./uploadList\";\r\nimport {stores} from 'mutants-microfx';\r\nimport {observer} from 'mobx-react';\r\nimport {OFFLINE_POINT_DESC} from './offlinePointDesc';\r\nconst { Item } = Menu;\r\nconst defaultFromat = 'yyyy-MM-dd hh:mm:ss';\r\nconst t = i18n.getFixedT(null, 'newretail');\r\nconst UPLOAD_BASE_PATH = '/login';\r\nconst NETWORK_THEME_PATH = \"/\";\r\nconst PLACE_ORDER_PATH = \"/RE/RE01\";\r\nlet weakRemindNum = 0;// 弱网提示初始值\r\nconst WEAK_STANDARD_NUM = 3; // 弱网提示的次数上限\r\nlet isRetailDownloading = false; // 零售单是否正在下载\r\n//头部时间\r\nfunction HeadTime(props) {\r\n  const { time, dateFormat } = props;\r\n  let unMount = false;\r\n  const timeStr = typeof time === 'number' ? formatDate(time, dateFormat) : time;\r\n  const [currentTime, setCurrentTime] = useState(formatDate(Date.now(), dateFormat));\r\n  let timeout;\r\n  function refreshDate() {\r\n    if (time) return;\r\n    !unMount && setCurrentTime(formatDate(Date.now(), dateFormat));\r\n    timeout = setTimeout(refreshDate, 1000);\r\n  }\r\n  useEffect(() => {\r\n    refreshDate();\r\n    return () => {\r\n      unMount = true;\r\n      clearTimeout(timeout);\r\n    };\r\n  }, [currentTime]);\r\n  const [date_YMD, date_HMS] = currentTime.split(' ') || [];\r\n\r\n  if (platform.isVerticalTouch) return verticalHeadTime({ date_HMS });\r\n  return (\r\n    <div className='time'>\r\n      {timeStr ?\r\n        <div>{timeStr}</div> :\r\n        <div>\r\n          {date_YMD}\r\n          <span>{date_HMS}</span>\r\n        </div>\r\n      }\r\n    </div>\r\n  );\r\n}\r\n\r\n//头部联网状态\r\nconst OnLineStatus = observer((props)=>{\r\n  const { networkStatus } = props;\r\n  const { networkCheckStore } = stores;\r\n  const networkState = networkCheckStore.networkState;\r\n  let networkOn = true;\r\n  let iconName = 'WiFi';\r\n  switch (networkState) {\r\n    case '联网':\r\n      iconName = 'WiFi';\r\n      break;\r\n    case '弱网':\r\n      iconName = 'ruowifi';\r\n      break;\r\n    case '离线':\r\n      networkOn = false;\r\n      iconName = 'wuwangluo';\r\n      break;\r\n    default:\r\n      break;\r\n  }\r\n  const switchNetwork = (checked ,event)=>{\r\n    networkCheckStore.switchOnLine(checked);\r\n  }\r\n  const lineIcon = <Ticon\r\n    icon={iconName}\r\n    className=\"network-state-icon\"\r\n  />\r\n  return (\r\n    <div><span className='network-status' style={{marginRight:'10px'}}>{networkStatus || lineIcon}</span><span><Switch checkedChildren=\"开启\" unCheckedChildren=\"关闭\" defaultChecked checked={networkOn} onChange={switchNetwork}/></span></div>\r\n  );\r\n});\r\nfunction getIsOffNetWork() {\r\n  const { networkCheckStore } = stores;\r\n  return networkCheckStore.networkState === '离线';\r\n}\r\n//头部联网状态\r\nconst OnLineStatusToggle = observer(props => {\r\n  const { isShowUploadBtnsByRouter, isResetNetWorkTheme, isOfflineCash, isPlaceOrderPage } = props;\r\n  const { networkCheckStore , offlineSys, voucherStore } = stores;\r\n  const networkState = networkCheckStore.networkState;\r\n  let isOnLine = networkCheckStore.isOnLine;\r\n  let iconName = 'WiFi';\r\n  if (isOfflineCash) {\r\n    switch (networkState) {\r\n      case '联网':\r\n        iconName = 'WiFi';\r\n        break;\r\n      case '弱网':\r\n        iconName = 'ruowifi';\r\n        break;\r\n      case '离线':\r\n        iconName = 'wuwangluo';\r\n        break;\r\n      default:\r\n        break;\r\n    }\r\n    if (networkState === '离线' && isOnLine) {\r\n      ModalWraper.confirm({\r\n        title: t('提示'),\r\n        content: t('网络已断,是否切换到离线收银模式?'),\r\n        onOk: () => {\r\n          setOffLine(true);\r\n        }\r\n      });\r\n    }\r\n    if (isOnLine && networkState === '弱网' && weakRemindNum <= WEAK_STANDARD_NUM && offlineSys.getDataIsOffline()) {\r\n      weakRemindNum ++;\r\n      ModalWraper.confirm({\r\n        title: t('提示'),\r\n        content: t('当前网络不好,是否切换到离线?'),\r\n        onOk: () => {\r\n          setOffLine(true);\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  function switchStatus() {\r\n    if (networkState === '离线' && !isOnLine) {\r\n      Message.tip('当前无网络,无法切换为在线状态');\r\n      return;\r\n    }\r\n    ModalWraper.confirm({\r\n        title: t('提示'),\r\n        content: t(`确定要切换为${isOnLine ? '离' : '在'}线环境吗?`),\r\n        onOk: () => {\r\n          setOffLine(isOnLine);\r\n        }\r\n    });\r\n  }\r\n  function setOffLine(status) {\r\n    if (isPlaceOrderPage) {\r\n      ModalWraper.confirm({\r\n        title: t('提示'),\r\n        content: t(`当前为开单界面,切换到${status ? '离' : '在'}线会清除当前数据,确定要切换吗?`),\r\n        onOk: () => {\r\n          playStatus(status);\r\n        }\r\n      });\r\n    } else {\r\n      playStatus(status);\r\n    }\r\n  }\r\n  function playStatus(status) {\r\n    // status 为 true 是在线切离线\r\n    if (status) {\r\n      if (!offlineSys.getDataIsOffline() || isRetailDownloading) {\r\n        Message.tip('数据还未下载完,无法切换为离线');\r\n        return;\r\n      }\r\n    }\r\n    offlineSys.setIsOffline(status);\r\n    if (isPlaceOrderPage) {\r\n      voucherStore.clearVoucherData();\r\n    }\r\n  }\r\n  return (\r\n    <div className='on-off-wrap'>\r\n      <div className='status-square'>\r\n        <span className=\"status-tog-btn\" style={{color: `${isResetNetWorkTheme ? '#fff' : ''}`}}>{<Ticon icon={iconName}/>}</span>\r\n      </div>\r\n      { isOfflineCash && isShowUploadBtnsByRouter && <div className={`status-square c-pointer online-status-bg ${isOnLine || isResetNetWorkTheme ? '' : 'off-line'}`}>\r\n        <span className=\"status-tog-btn\" onClick={switchStatus}>\r\n          <span>{isOnLine ? '在线' : '离线'}</span>\r\n          <span>{<Ticon icon=\"zaixianlixian\" className=\"ts-14\"/>}</span>\r\n        </span>\r\n        <Popover placement=\"bottom\" overlayClassName={'offline-popver'} content={<pre>{OFFLINE_POINT_DESC}</pre>} trigger=\"hover\">\r\n          <span className=\"status-tog-btn\">{<Ticon icon=\"tanhao1\"/>}</span>\r\n        </Popover>\r\n      </div>}\r\n    </div>\r\n  );\r\n});\r\n\r\n//零售单上传\r\nfunction RetailUpload() {\r\n  const [isModalVisible, setIsModalVisible] = useState(false);\r\n  const [isUpLoading, setIsUpLoading] = useState(false);\r\n  const refModal = useRef(null);\r\n  const showModal = async () => {\r\n    refModal && refModal.current.fetch();\r\n    setIsModalVisible(true);\r\n  };\r\n\r\n  const handleOk = async (isUpLoad = false) => {\r\n    setIsModalVisible(false);\r\n    if (getIsOffNetWork()) {\r\n      Message.tip('已断网,不可以上传单据');\r\n      return;\r\n    }\r\n    if (!isUpLoad) {\r\n      Message.tip('暂无可以上传的单据');\r\n      return;\r\n    }\r\n    if (isUpLoading) {\r\n      Message.tip('零售单正在上传……');\r\n      return;\r\n    }\r\n    setIsUpLoading(true);\r\n    try {\r\n      await stores.offlineSys.uploadRetail();\r\n      // Message.success('零售单上传成功');\r\n    } catch (err) {\r\n      Message.error('上传失败');\r\n    }\r\n    setIsUpLoading(false);\r\n  };\r\n\r\n  const handleCancel = () => {\r\n    setIsModalVisible(false);\r\n  };\r\n  return (\r\n    <div className='upload-retail'>\r\n      <div className=\"status-square online-status-bg c-pointer\" onClick={showModal}>\r\n        <span className=\"status-tog-btn\">\r\n          <span className={`${isUpLoading ? 'isRetailUpLoading' : ''}`}>{<Ticon icon=\"shangchuan\"/>}</span>\r\n          <span className=\"fast-upload-btn\">上传零售单</span>\r\n        </span>\r\n      </div>\r\n      <UnLoadNum/>\r\n      <UploadOrder ref={refModal} visible={isModalVisible} handleOk={handleOk} handleCancel={handleCancel}/>\r\n    </div>\r\n  );\r\n}\r\n// 零售单未上传的数量\r\nconst UnLoadNum = observer(() => {\r\n  const {offlineSys: {retailNotUploadNumber} } = stores;\r\n  return <span style={{display: retailNotUploadNumber > 0 ? 'inherit' : 'none'}} className=\"up-count-btn\">{retailNotUploadNumber > 99 ? '99+' : retailNotUploadNumber}</span>\r\n});\r\n//零售单下载\r\nfunction RetailDownload() {\r\n  const {offlineSys} = stores;\r\n  const [isDownload, setIsDownload] = useState(false);\r\n  const [downStr, setDownStr] = useState('下载数据');\r\n  const handleDownLoad = async () => {\r\n    if (getIsOffNetWork()) {\r\n      Message.tip('已断网,不可以下载单据');\r\n      return;\r\n    }\r\n    if (isDownload) {\r\n      Message.tip('下载中');\r\n      return;\r\n    }\r\n    setDownStr('0 %');\r\n    setIsDownload(true);\r\n    isRetailDownloading = true;\r\n    Message.tip('下载中');\r\n    try {\r\n      let result = await offlineSys.downloadCatcherData(e => {\r\n        setDownStr(e.percent + ' %');\r\n      });\r\n      if (result) {\r\n        Message.success(`数据下载成功`);\r\n      } else {\r\n        Message.error(`数据下载失败`);\r\n      }\r\n    } catch(err){\r\n      Message.error('数据下载失败');\r\n    }\r\n    setDownStr('下载数据');\r\n    setIsDownload(false);\r\n    isRetailDownloading = false;\r\n  };\r\n  return (\r\n    <div className='download-retail'>\r\n      <DownloadBtn handleDownLoad={handleDownLoad} isDownload={isDownload} downStr={downStr}/>\r\n    </div>\r\n  );\r\n};\r\n// 下载按钮\r\nconst DownloadBtn = observer((props) => {\r\n  const { downStr, isDownload, handleDownLoad} = props;\r\n  return (\r\n    <div className={`status-square online-status-bg c-pointer ${getIsOffNetWork() ? 'is-grey' : ''}`} onClick={handleDownLoad}>\r\n        <span className=\"status-tog-btn\">\r\n          <span className={`${isDownload ? 'isRetailDownLoading' : ''}`}>{<Ticon icon=\"xiazaishuju\"/>}</span>\r\n          <span className=\"fast-upload-btn\">{downStr}</span>\r\n        </span>\r\n      </div>\r\n  )\r\n});\r\nlet releaseDate, releaseVersion;\r\ntry {\r\n  releaseDate = __RELEASESDATE__;\r\n  releaseVersion = __BUILDVERSION__;\r\n} catch (error) {\r\n  releaseDate = '';\r\n  releaseVersion = '';\r\n}\r\nexport default function HeadContent(props, context) {\r\n  const isElectron = (env || {}).platform === 'electron';\r\n  const {businessName = '', storeName = '', posCode, logo, networkStatus, style = {}, history,\r\n    dateFormat = defaultFromat, solt, time, isPortal, isLogin, menu = [], onClick, location} = props;\r\n  const [themeVisible, setThemeVisible] = useState(false);\r\n  const [isShowUploadBtnsByRouter, setIsShowUploadBtnsByRouter] = useState(window.location.href.indexOf(UPLOAD_BASE_PATH) < 0);\r\n  const [isResetNetWorkTheme, setIsResetNetWorkTheme] = useState(window.location.pathname === NETWORK_THEME_PATH);\r\n  const [isPlaceOrderPage, setIsPlaceOrderPage] = useState(window.location.href.indexOf(PLACE_ORDER_PATH) > 0);\r\n  props.history.listen(route => {\r\n    setIsResetNetWorkTheme(route.pathname === NETWORK_THEME_PATH);\r\n    setIsShowUploadBtnsByRouter(route.pathname.indexOf(UPLOAD_BASE_PATH) < 0);\r\n    setIsPlaceOrderPage(route.pathname.indexOf(PLACE_ORDER_PATH) > -1)\r\n  });\r\n  const isOfflineCash = PosInitData('IsOfflineCash') === \"1\";\r\n  const menuProps = {onClick};\r\n  const menus = (\r\n    <Menu {...menuProps}>\r\n      {menu.map((item, i) =>\r\n        <Item key={item.key || i}>\r\n          {item.icon && <Ticon icon={item.icon}/>}\r\n          <span>{item.title}</span>\r\n        </Item>)\r\n      }\r\n    </Menu>\r\n  );\r\n\r\n  const controlConfig = [\r\n    {type: 'suoxiao', event: 'min'},\r\n    {\r\n      type: 'guanbixiao',\r\n      event: 'close',\r\n      beforeEvent: (item) => {\r\n        return ModalWraper.confirm({\r\n          className: 'tplus-confirm-modal',\r\n          title: '关闭提示',\r\n          content: '您确定要关闭应用吗?',\r\n          async onOk() {\r\n            Loading.show({\r\n              className: 'close-app-loading',\r\n              node: <div className='close-app-spin'>\r\n                <Spin scale={1.2} type='shape' visible/>\r\n                <h1>应用关闭中...</h1>\r\n              </div>,\r\n              delay: false\r\n            });\r\n            context.actionHook.actionChange('close-app');\r\n            try {\r\n              await User.logout(() => {\r\n                setTimeout(() => {\r\n                  nativeMs.doWindow(item.event);\r\n                }, 500); // 需要为500ms 时间短可能会不能正常注销清理\r\n              });\r\n            } catch (err) {\r\n              User.clear();\r\n              localStore.remove('user');\r\n              setTimeout(() => {\r\n                nativeMs.doWindow(item.event);\r\n              }, 500);\r\n            }\r\n          }\r\n        });\r\n      }\r\n    },\r\n  ];\r\n\r\n  const splitUser = (value) => {\r\n    const regEmail = new RegExp('^[A-Za-zd0-9]+([-_.][A-Za-zd0-9]+)*@([A-Za-zd0-9]+[-.])+[A-Za-zd]{2,5}$');\r\n    const isEmail = regEmail.test(value);\r\n\r\n    if (isEmail) {\r\n      return value.split('@')[0];\r\n    }\r\n    return value;\r\n  }\r\n\r\n  const setInventoryFocus = () => {\r\n    const { isHorizontalPad } = platform || {};\r\n    if (!!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('headContent--商品焦点==Focus==');input.focus() } }, 300)\r\n  }\r\n\r\n  const clickTheme = (isShow) => {\r\n    setThemeVisible(isShow)\r\n  }\r\n\r\n  const userName = PosInitData('UserName');\r\n  const overlayClassName = `_portal-header-dropdown ${!isPortal ? 'inside-header' : ''}`;\r\n  const moreInfoNode = <div className='pos-more-info-container'>\r\n    <h1 className='business-name'>{businessName}</h1>\r\n    <h1 className='store-code'>{posCode}</h1>\r\n  </div>\r\n\r\n  const headControlNode = <div className=\"head-content-control\">\r\n    {controlConfig.map(v => <Ticon\r\n      type={v.type}\r\n      key={v.type}\r\n      onClick={() => {\r\n        if (nativeMs) {\r\n          const {beforeEvent} = v;\r\n          if (beforeEvent) {\r\n            return beforeEvent(v);\r\n          }\r\n          nativeMs.doWindow(v.event)\r\n          if (typeof setInventoryFocus == 'function') {\r\n            setInventoryFocus()\r\n          }\r\n        }\r\n      }}\r\n    />)}\r\n  </div>\r\n\r\n  if (platform.isVerticalTouch) return verticalHeadContent({ style, releaseVersion, releaseDate,\r\n    time, dateFormat, logo, HeadTime, headControlNode, location, history, clickTheme, themeVisible, isPortal, isLogin });\r\n\r\n  return (<div style={{display: 'inline-block', width: '100%', height: '100%', ...style}} className='head-content' data-release={`${releaseVersion} ${releaseDate}`}>\r\n    <div className=\"head-content-left\">\r\n      {!!logo && <div className='business-logo' onClick={()=>{history.replace('/')}}>{logo}</div>}\r\n      {!!storeName && <Tooltip trigger=\"click\" placement=\"bottomRight\" title={moreInfoNode} color={'#fff'} overlayClassName='head-business-tip'>\r\n        <div className='store-name'>{storeName}<i className='header-triangle-down' /></div>\r\n       </Tooltip>}\r\n      {/* <OnLineStatus networkStatus={networkStatus}/> */}\r\n      <OnLineStatusToggle isShowUploadBtnsByRouter={isShowUploadBtnsByRouter} isResetNetWorkTheme={isResetNetWorkTheme} isOfflineCash={isOfflineCash} isPlaceOrderPage={isPlaceOrderPage}/>\r\n      {isOfflineCash && isShowUploadBtnsByRouter && <RetailUpload/>}\r\n      {isOfflineCash && isShowUploadBtnsByRouter && <RetailDownload/>}\r\n    </div>\r\n    {isElectron && headControlNode}\r\n    <div className=\"head-content-right\">\r\n      {!isLogin && <Ticon icon=\"huanfu\" className={`theme-icon ${!isPortal ? 'pos-page' : ''}` } onClick={() => {clickTheme(true)}}/>}\r\n      {!isLogin && !!userName && <Dropdown\r\n        overlayClassName={overlayClassName}\r\n        trigger={['click']}\r\n        overlay={menus}\r\n        placement=\"bottomRight\"\r\n        arrow\r\n      >\r\n        <div className='header-info-render-content' onClick={e => e.preventDefault()}>\r\n          <div className='store-info-item'>\r\n            <p className='biller'>开单员:<span>{splitUser(userName)}</span></p>\r\n          </div>\r\n          <i className='header-triangle-down'/>\r\n        </div>\r\n      </Dropdown>}\r\n      {!isLogin && <div className='store-info-item'>{solt}</div>}\r\n      <HeadTime time={time} dateFormat={dateFormat}/>\r\n    </div>\r\n    <ThemeModal\r\n        visible={themeVisible}\r\n        isVertical={platform.isVerticalTouch}\r\n        isPortal={isPortal}\r\n        closeFn={(isShow) => clickTheme(isShow)}\r\n    />\r\n  </div>);\r\n}\r\n\r\nHeadContent.contextTypes = {\r\n  actionHook: PropTypes.object,\r\n}\r\n"]}
         
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"sources":["tplus-portaltouch/components/header/headContent.js"],"names":["HeadContent","Item","Menu","defaultFromat","t","i18n","getFixedT","UPLOAD_BASE_PATH","NETWORK_THEME_PATH","PLACE_ORDER_PATH","weakRemindNum","WEAK_STANDARD_NUM","otherOfflineStatus","localStore","get","HeadTime","props","time","dateFormat","unMount","timeStr","Date","now","currentTime","setCurrentTime","timeout","refreshDate","setTimeout","clearTimeout","split","date_YMD","date_HMS","platform","isVerticalTouch","OnLineStatus","networkStatus","networkCheckStore","stores","networkState","networkOn","iconName","switchNetwork","checked","event","switchOnLine","lineIcon","marginRight","getIsOffNetWork","OnLineStatusToggle","isShowUploadBtnsByRouter","isResetNetWorkTheme","isOfflineCash","isPlaceOrderPage","offlineSys","voucherStore","isOnLine","hasUseOffline","weakConfirm","getDataIsOffline","document","querySelector","ModalWraper","confirm","title","content","onOk","setOffLine","switchStatus","Message","tip","status","playStatus","setIsOffline","clearVoucherData","color","OFFLINE_POINT_DESC","RetailUpload","isModalVisible","setIsModalVisible","isUpLoading","setIsUpLoading","refModal","showModal","current","fetch","handleOk","isUpLoad","uploadRetail","error","handleCancel","UnLoadNum","retailNotUploadNumber","display","RetailDownload","isDownload","setIsDownload","downStr","setDownStr","handleDownLoad","downloadCatcherData","e","percent","result","success","DownloadBtn","releaseDate","releaseVersion","__RELEASESDATE__","__BUILDVERSION__","context","isElectron","env","businessName","storeName","posCode","logo","style","history","solt","isPortal","isLogin","menu","onClick","location","themeVisible","setThemeVisible","window","href","indexOf","setIsShowUploadBtnsByRouter","pathname","setIsResetNetWorkTheme","setIsPlaceOrderPage","listen","route","menuProps","menus","map","item","i","key","icon","controlConfig","type","beforeEvent","className","Loading","show","node","delay","actionHook","actionChange","User","logout","nativeMs","doWindow","clear","remove","splitUser","value","regEmail","RegExp","isEmail","test","setInventoryFocus","isHorizontalPad","doms","getElementsByClassName","input","getElementById","length","console","log","focus","clickTheme","isShow","userName","overlayClassName","moreInfoNode","headControlNode","v","width","height","replace","preventDefault","contextTypes","PropTypes","object"],"mappings":";;;;;;;;;;;;;;;;;;;;;;kBA+TwBA,W;;AA/TxB;;;;AACA;;AACA;;AACA;;;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AACA;;;;AAEA;;AACA;;;;IACQC,I,GAASC,U,CAATD,I;;AACR,IAAME,gBAAgB,qBAAtB;AACA,IAAMC,IAAIC,qBAAKC,SAAL,CAAe,IAAf,EAAqB,WAArB,CAAV;AACA,IAAMC,mBAAmB,QAAzB;AACA,IAAMC,qBAAqB,GAA3B;AACA,IAAMC,mBAAmB,UAAzB;AACA,IAAIC,gBAAgB,CAApB,C,CAAsB;AACtB,IAAMC,oBAAoB,CAA1B,C,CAA6B;AAC7B;AACA,IAAMC,qBAAsBC,2BAAWC,GAAX,CAAe,iBAAf,KAAqC,MAAtC,IAAkDD,2BAAWC,GAAX,CAAe,iBAAf,KAAqC,MAAvF,IAAmGD,2BAAWC,GAAX,CAAe,mBAAf,KAAuC,MAArK;;AAEA;AACA,SAASC,QAAT,CAAkBC,KAAlB,EAAyB;AAAA,MACfC,IADe,GACMD,KADN,CACfC,IADe;AAAA,MACTC,UADS,GACMF,KADN,CACTE,UADS;;AAEvB,MAAIC,UAAU,KAAd;AACA,MAAMC,UAAU,OAAOH,IAAP,KAAgB,QAAhB,GAA2B,uBAAWA,IAAX,EAAiBC,UAAjB,CAA3B,GAA0DD,IAA1E;;AAHuB,kBAIe,qBAAS,uBAAWI,KAAKC,GAAL,EAAX,EAAuBJ,UAAvB,CAAT,CAJf;AAAA;AAAA,MAIhBK,WAJgB;AAAA,MAIHC,cAJG;;AAKvB,MAAIC,gBAAJ;AACA,WAASC,WAAT,GAAuB;AACrB,QAAIT,IAAJ,EAAU;AACV,KAACE,OAAD,IAAYK,eAAe,uBAAWH,KAAKC,GAAL,EAAX,EAAuBJ,UAAvB,CAAf,CAAZ;AACAO,cAAUE,WAAWD,WAAX,EAAwB,IAAxB,CAAV;AACD;AACD,wBAAU,YAAM;AACdA;AACA,WAAO,YAAM;AACXP,gBAAU,IAAV;AACAS,mBAAaH,OAAb;AACD,KAHD;AAID,GAND,EAMG,CAACF,WAAD,CANH;;AAXuB,aAkBMA,YAAYM,KAAZ,CAAkB,GAAlB,KAA0B,EAlBhC;AAAA;AAAA,MAkBhBC,QAlBgB;AAAA,MAkBNC,QAlBM;;AAoBvB,MAAIC,sBAASC,eAAb,EAA8B,OAAO,qCAAiB,EAAEF,kBAAF,EAAjB,CAAP;AAC9B,SACE;AAAA;AAAA,MAAK,WAAU,MAAf;AACGX,cACC;AAAA;AAAA;AAAMA;AAAN,KADD,GAEC;AAAA;AAAA;AACGU,cADH;AAEE;AAAA;AAAA;AAAOC;AAAP;AAFF;AAHJ,GADF;AAWD;;AAED;AACA,IAAMG,eAAe,yBAAS,UAAClB,KAAD,EAAS;AAAA,MAC7BmB,aAD6B,GACXnB,KADW,CAC7BmB,aAD6B;AAAA,MAE7BC,iBAF6B,GAEPC,sBAFO,CAE7BD,iBAF6B;;AAGrC,MAAME,eAAeF,kBAAkBE,YAAvC;AACA,MAAIC,YAAY,IAAhB;AACA,MAAIC,WAAW,MAAf;AACA,UAAQF,YAAR;AACE,SAAK,IAAL;AACEE,iBAAW,MAAX;AACA;AACF,SAAK,IAAL;AACEA,iBAAW,SAAX;AACA;AACF,SAAK,IAAL;AACED,kBAAY,KAAZ;AACAC,iBAAW,WAAX;AACA;AACF;AACE;AAZJ;AAcA,MAAMC,gBAAgB,SAAhBA,aAAgB,CAACC,OAAD,EAAUC,KAAV,EAAkB;AACtCP,sBAAkBQ,YAAlB,CAA+BF,OAA/B;AACD,GAFD;AAGA,MAAMG,WAAW,8BAAC,2BAAD;AACf,UAAML,QADS;AAEf,eAAU;AAFK,IAAjB;AAIA,SACE;AAAA;AAAA;AAAK;AAAA;AAAA,QAAM,WAAU,gBAAhB,EAAiC,OAAO,EAACM,aAAY,MAAb,EAAxC;AAA+DX,uBAAiBU;AAAhF,KAAL;AAAqG;AAAA;AAAA;AAAM,oCAAC,YAAD,IAAQ,iBAAgB,cAAxB,EAA6B,mBAAkB,cAA/C,EAAoD,oBAApD,EAAmE,SAASN,SAA5E,EAAuF,UAAUE,aAAjG;AAAN;AAArG,GADF;AAGD,CA9BoB,CAArB;AA+BA,SAASM,eAAT,GAA2B;AAAA,MACjBX,iBADiB,GACKC,sBADL,CACjBD,iBADiB;;AAEzB,SAAOA,kBAAkBE,YAAlB,KAAmC,IAA1C;AACD;AACD;AACA,IAAMU,qBAAqB,yBAAS,iBAAS;AAAA,MACnCC,wBADmC,GACgDjC,KADhD,CACnCiC,wBADmC;AAAA,MACTC,mBADS,GACgDlC,KADhD,CACTkC,mBADS;AAAA,MACYC,aADZ,GACgDnC,KADhD,CACYmC,aADZ;AAAA,MAC2BC,gBAD3B,GACgDpC,KADhD,CAC2BoC,gBAD3B;AAAA,MAEnChB,iBAFmC,GAEaC,sBAFb,CAEnCD,iBAFmC;AAAA,MAEhBiB,UAFgB,GAEahB,sBAFb,CAEhBgB,UAFgB;AAAA,MAEJC,YAFI,GAEajB,sBAFb,CAEJiB,YAFI;;AAG3C,MAAMhB,eAAeF,kBAAkBE,YAAvC;AACA,MAAIiB,WAAWnB,kBAAkBmB,QAAjC;AACA,MAAMC,gBAAgBL,iBAAiB,CAACvC,kBAAxC,CAL2C,CAKiB;AAC5D,MAAI4B,WAAW,MAAf;AACA,MAAIgB,aAAJ,EAAmB;AAAA,QAuBRC,WAvBQ,GAuBjB,SAASA,WAAT,GAAuB;AACrB,UAAI,CAACF,QAAL,EAAe,OADM,CACC;AACtB,UAAIjB,iBAAiB,IAArB,EAA2B,OAFN,CAEc;AACnC,UAAI5B,iBAAiBC,iBAArB,EAAwC,OAHnB,CAG2B;AAChD,UAAI,CAAC0C,WAAWK,gBAAhB,EAAkC,OAJb,CAIoB;AACzC,UAAIC,SAASC,aAAT,CAAuB,oBAAvB,CAAJ,EAAkD,OAL7B,CAKoC;AACzD,UAAID,SAASC,aAAT,CAAuB,sBAAvB,CAAJ,EAAoD,OAN/B,CAMsC;AAC3D,UAAID,SAASC,aAAT,CAAuB,gBAAvB,CAAJ,EAA8C,OAPzB,CAOgC;AACrDlD;AACAmD,wCAAYC,OAAZ,CAAoB;AAClBC,eAAO3D,EAAE,IAAF,CADW;AAElB4D,iBAAS5D,EAAE,iBAAF,CAFS;AAGlB6D,cAAM,gBAAM;AACVC,qBAAW,IAAX;AACD;AALiB,OAApB;AAOD,KAvCgB;;AACjB,YAAQ5B,YAAR;AACE,WAAK,IAAL;AACEE,mBAAW,MAAX;AACA;AACF,WAAK,IAAL;AACEA,mBAAW,SAAX;AACA;AACF,WAAK,IAAL;AACEA,mBAAW,WAAX;AACA;AACF;AACE;AAXJ;AAaA,QAAIF,iBAAiB,IAAjB,IAAyBiB,QAA7B,EAAuC;AACrCM,wCAAYC,OAAZ,CAAoB;AAClBC,eAAO3D,EAAE,IAAF,CADW;AAElB4D,iBAAS5D,EAAE,mBAAF,CAFS;AAGlB6D,cAAM,gBAAM;AACVC,qBAAW,IAAX;AACD;AALiB,OAApB;AAOD;;AAkBDT;AACD;AACD,WAASU,YAAT,GAAwB;AACtB,QAAI7B,iBAAiB,IAAjB,IAAyB,CAACiB,QAA9B,EAAwC;AACtCa,oCAAQC,GAAR,CAAY,iBAAZ;AACA;AACD;AACDR,sCAAYC,OAAZ,CAAoB;AAChBC,aAAO3D,EAAE,IAAF,CADS;AAEhB4D,eAAS5D,4CAAWmD,WAAW,GAAX,GAAiB,GAA5B,qCAFO;AAGhBU,YAAM,gBAAM;AACVC,mBAAWX,QAAX;AACD;AALe,KAApB;AAOD;AACD,WAASW,UAAT,CAAoBI,MAApB,EAA4B;AAC1B,QAAIlB,gBAAJ,EAAsB;AACpBS,wCAAYC,OAAZ,CAAoB;AAClBC,eAAO3D,EAAE,IAAF,CADW;AAElB4D,iBAAS5D,0EAAgBkE,SAAS,GAAT,GAAe,GAA/B,uGAFS;AAGlBL,cAAM,gBAAM;AACVM,qBAAWD,MAAX;AACD;AALiB,OAApB;AAOD,KARD,MAQO;AACLC,iBAAWD,MAAX;AACD;AACF;AACD,WAASC,UAAT,CAAoBD,MAApB,EAA4B;AAC1B;AACA,QAAIA,MAAJ,EAAY;AACV,UAAI,CAACjB,WAAWK,gBAAX,EAAD,IAAkCC,SAASC,aAAT,CAAuB,sBAAvB,CAAtC,EAAsF;AACpFQ,sCAAQC,GAAR,CAAY,iBAAZ;AACA;AACD;AACF;AACDhB,eAAWmB,YAAX,CAAwBF,MAAxB;AACA,QAAIlB,gBAAJ,EAAsB;AACpBE,mBAAamB,gBAAb;AACD;AACF;AACD,SACE;AAAA;AAAA,MAAK,WAAU,aAAf;AACE;AAAA;AAAA,QAAK,WAAU,eAAf;AACE;AAAA;AAAA,UAAM,WAAU,gBAAhB,EAAiC,OAAO,EAACC,aAAUxB,sBAAsB,MAAtB,GAA+B,EAAzC,CAAD,EAAxC;AAA0F,sCAAC,2BAAD,IAAO,MAAMV,QAAb;AAA1F;AADF,KADF;AAKIgB,qBAAiBP,wBAAjB,IAA6C;AAAA;AAAA,QAAK,0DAAuDM,YAAYL,mBAAZ,GAAkC,EAAlC,GAAuC,UAA9F,CAAL;AAC3C;AAAA;AAAA,UAAM,WAAU,gBAAhB,EAAiC,SAASiB,YAA1C;AACE;AAAA;AAAA;AAAOZ,qBAAW,IAAX,GAAkB;AAAzB,SADF;AAEE;AAAA;AAAA;AAAO,wCAAC,2BAAD,IAAO,MAAK,eAAZ,EAA4B,WAAU,OAAtC;AAAP;AAFF,OAD2C;AAK3C;AAAC,qBAAD;AAAA,UAAS,WAAU,QAAnB,EAA4B,kBAAkB,gBAA9C,EAAgE,SAAS;AAAA;AAAA;AAAMoB;AAAN,WAAzE,EAA0G,SAAQ,OAAlH;AACE;AAAA;AAAA,YAAM,WAAU,gBAAhB;AAAkC,wCAAC,2BAAD,IAAO,MAAK,SAAZ;AAAlC;AADF;AAL2C;AALjD,GADF;AAkBD,CA1G0B,CAA3B;;AA4GA;AACA,SAASC,YAAT,GAAwB;AAAA;;AAAA,mBACsB,qBAAS,KAAT,CADtB;AAAA;AAAA,MACfC,cADe;AAAA,MACCC,iBADD;;AAAA,mBAEgB,qBAAS,KAAT,CAFhB;AAAA;AAAA,MAEfC,WAFe;AAAA,MAEFC,cAFE;;AAGtB,MAAMC,WAAW,mBAAO,IAAP,CAAjB;AACA,MAAMC;AAAA,yFAAY;AAAA;AAAA;AAAA;AAAA;AAChBD,0BAAYA,SAASE,OAAT,CAAiBC,KAAjB,EAAZ;AACAN,gCAAkB,IAAlB;;AAFgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAZ;;AAAA;AAAA;AAAA;AAAA,KAAN;;AAKA,MAAMO;AAAA,yFAAW;AAAA,UAAOC,QAAP,uEAAkB,KAAlB;AAAA;AAAA;AAAA;AAAA;AACfR,gCAAkB,KAAlB;;AADe,mBAEX/B,iBAFW;AAAA;AAAA;AAAA;;AAGbqB,4CAAQC,GAAR,CAAY,aAAZ;AAHa;;AAAA;AAAA,kBAMViB,QANU;AAAA;AAAA;AAAA;;AAOblB,4CAAQC,GAAR,CAAY,WAAZ;AAPa;;AAAA;AAAA,mBAUXU,WAVW;AAAA;AAAA;AAAA;;AAWbX,4CAAQC,GAAR,CAAY,WAAZ;AAXa;;AAAA;AAcfW,6BAAe,IAAf;AAde;AAAA;AAAA,qBAgBP3C,uBAAOgB,UAAP,CAAkBkC,YAAlB,EAhBO;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAmBbnB,4CAAQoB,KAAR,CAAc,MAAd;;AAnBa;AAqBfR,6BAAe,KAAf;;AArBe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAX;;AAAA;AAAA;AAAA;AAAA,KAAN;;AAwBA,MAAMS,eAAe,SAAfA,YAAe,GAAM;AACzBX,sBAAkB,KAAlB;AACD,GAFD;AAGA,SACE;AAAA;AAAA,MAAK,WAAU,eAAf;AACE;AAAA;AAAA,QAAK,WAAU,0CAAf,EAA0D,SAASI,SAAnE;AACE;AAAA;AAAA,UAAM,WAAU,gBAAhB;AACE;AAAA;AAAA,YAAM,iBAAcH,cAAc,mBAAd,GAAoC,EAAlD,CAAN;AAA+D,wCAAC,2BAAD,IAAO,MAAK,YAAZ;AAA/D,SADF;AAEE;AAAA;AAAA,YAAM,WAAU,iBAAhB;AAAA;AAAA;AAFF;AADF,KADF;AAOE,kCAAC,SAAD,OAPF;AAQE,kCAAC,oBAAD,IAAa,KAAKE,QAAlB,EAA4B,SAASJ,cAArC,EAAqD,UAAUQ,QAA/D,EAAyE,cAAcI,YAAvF;AARF,GADF;AAYD;AACD;AACA,IAAMC,YAAY,yBAAS,YAAM;AAAA,MACXC,qBADW,GACgBtD,sBADhB,CACxBgB,UADwB,CACXsC,qBADW;;AAE/B,SAAO;AAAA;AAAA,MAAM,OAAO,EAACC,SAASD,wBAAwB,CAAxB,GAA4B,SAA5B,GAAwC,MAAlD,EAAb,EAAwE,WAAU,cAAlF;AAAkGA,4BAAwB,EAAxB,GAA6B,KAA7B,GAAqCA;AAAvI,GAAP;AACD,CAHiB,CAAlB;AAIA;AACA,SAASE,cAAT,GAA0B;AAAA;;AAAA,MACjBxC,UADiB,GACHhB,sBADG,CACjBgB,UADiB;;AAAA,mBAEY,qBAAS,KAAT,CAFZ;AAAA;AAAA,MAEjByC,UAFiB;AAAA,MAELC,aAFK;;AAAA,mBAGM,qBAAS,MAAT,CAHN;AAAA;AAAA,MAGjBC,OAHiB;AAAA,MAGRC,UAHQ;;AAIxB,MAAMC;AAAA,yFAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBACjBnD,iBADiB;AAAA;AAAA;AAAA;;AAEnBqB,4CAAQC,GAAR,CAAY,aAAZ;AAFmB;;AAAA;AAAA,mBAKjByB,UALiB;AAAA;AAAA;AAAA;;AAMnB1B,4CAAQC,GAAR,CAAY,KAAZ;AANmB;;AAAA;AASrB4B,yBAAW,KAAX;AACAF,4BAAc,IAAd;AACA3B,4CAAQC,GAAR,CAAY,KAAZ;AAXqB;AAAA;AAAA,qBAaAhB,WAAW8C,mBAAX,CAA+B,aAAK;AACrDF,2BAAWG,EAAEC,OAAF,GAAY,IAAvB;AACD,eAFkB,CAbA;;AAAA;AAafC,oBAbe;;AAgBnB,kBAAIA,MAAJ,EAAY;AACVlC,8CAAQmC,OAAR;AACD,eAFD,MAEO;AACLnC,8CAAQoB,KAAR;AACD;AApBkB;AAAA;;AAAA;AAAA;AAAA;;AAsBnBpB,4CAAQoB,KAAR,CAAc,QAAd;;AAtBmB;AAwBrBS,yBAAW,MAAX;AACAF,4BAAc,KAAd;;AAzBqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAjB;;AAAA;AAAA;AAAA;AAAA,KAAN;AA2BA,SACE;AAAA;AAAA,MAAK,WAAU,iBAAf;AACE,kCAAC,WAAD,IAAa,gBAAgBG,cAA7B,EAA6C,YAAYJ,UAAzD,EAAqE,SAASE,OAA9E;AADF,GADF;AAKD;AACD;AACA,IAAMQ,cAAc,yBAAS,UAACxF,KAAD,EAAW;AAAA,MAC9BgF,OAD8B,GACShF,KADT,CAC9BgF,OAD8B;AAAA,MACrBF,UADqB,GACS9E,KADT,CACrB8E,UADqB;AAAA,MACTI,cADS,GACSlF,KADT,CACTkF,cADS;;AAEtC,SACE;AAAA;AAAA,MAAK,0DAAuDnD,oBAAoB,SAApB,GAAgC,EAAvF,CAAL,EAAkG,SAASmD,cAA3G;AACI;AAAA;AAAA,QAAM,WAAU,gBAAhB;AACE;AAAA;AAAA,UAAM,iBAAcJ,aAAa,qBAAb,GAAqC,EAAnD,CAAN;AAAgE,sCAAC,2BAAD,IAAO,MAAK,aAAZ;AAAhE,OADF;AAEE;AAAA;AAAA,UAAM,WAAU,iBAAhB;AAAmCE;AAAnC;AAFF;AADJ,GADF;AAQD,CAVmB,CAApB;AAWA,IAAIS,oBAAJ;AAAA,IAAiBC,uBAAjB;AACA,IAAI;AACFD,gBAAcE,gBAAd;AACAD,mBAAiBE,gBAAjB;AACD,CAHD,CAGE,OAAOpB,KAAP,EAAc;AACdiB,gBAAc,EAAd;AACAC,mBAAiB,EAAjB;AACD;AACc,SAAS1G,WAAT,CAAqBgB,KAArB,EAA4B6F,OAA5B,EAAqC;AAClD,MAAMC,aAAa,CAACC,uBAAO,EAAR,EAAY/E,QAAZ,KAAyB,UAA5C;AADkD,4BAG2ChB,KAH3C,CAE3CgG,YAF2C;AAAA,MAE3CA,YAF2C,uCAE5B,EAF4B;AAAA,yBAG2ChG,KAH3C,CAExBiG,SAFwB;AAAA,MAExBA,SAFwB,oCAEZ,EAFY;AAAA,MAERC,OAFQ,GAG2ClG,KAH3C,CAERkG,OAFQ;AAAA,MAECC,IAFD,GAG2CnG,KAH3C,CAECmG,IAFD;AAAA,MAEOhF,aAFP,GAG2CnB,KAH3C,CAEOmB,aAFP;AAAA,qBAG2CnB,KAH3C,CAEsBoG,KAFtB;AAAA,MAEsBA,KAFtB,gCAE8B,EAF9B;AAAA,MAEkCC,OAFlC,GAG2CrG,KAH3C,CAEkCqG,OAFlC;AAAA,0BAG2CrG,KAH3C,CAGhDE,UAHgD;AAAA,MAGhDA,UAHgD,qCAGnCf,aAHmC;AAAA,MAGpBmH,IAHoB,GAG2CtG,KAH3C,CAGpBsG,IAHoB;AAAA,MAGdrG,IAHc,GAG2CD,KAH3C,CAGdC,IAHc;AAAA,MAGRsG,QAHQ,GAG2CvG,KAH3C,CAGRuG,QAHQ;AAAA,MAGEC,OAHF,GAG2CxG,KAH3C,CAGEwG,OAHF;AAAA,oBAG2CxG,KAH3C,CAGWyG,IAHX;AAAA,MAGWA,IAHX,+BAGkB,EAHlB;AAAA,MAGsBC,OAHtB,GAG2C1G,KAH3C,CAGsB0G,OAHtB;AAAA,MAG+BC,QAH/B,GAG2C3G,KAH3C,CAG+B2G,QAH/B;;AAAA,oBAIV,qBAAS,KAAT,CAJU;AAAA;AAAA,MAI3CC,YAJ2C;AAAA,MAI7BC,eAJ6B;;AAAA,oBAKc,qBAASC,OAAOH,QAAP,CAAgBI,IAAhB,CAAqBC,OAArB,CAA6BzH,gBAA7B,IAAiD,CAA1D,CALd;AAAA;AAAA,MAK3C0C,wBAL2C;AAAA,MAKjBgF,2BALiB;;AAAA,oBAMI,qBAASH,OAAOH,QAAP,CAAgBO,QAAhB,KAA6B1H,kBAAtC,CANJ;AAAA;AAAA,MAM3C0C,mBAN2C;AAAA,MAMtBiF,sBANsB;;AAAA,oBAOF,qBAASL,OAAOH,QAAP,CAAgBI,IAAhB,CAAqBC,OAArB,CAA6BvH,gBAA7B,IAAiD,CAA1D,CAPE;AAAA;AAAA,MAO3C2C,gBAP2C;AAAA,MAOzBgF,mBAPyB;;AAQlDpH,QAAMqG,OAAN,CAAcgB,MAAd,CAAqB,iBAAS;AAC5BF,2BAAuBG,MAAMJ,QAAN,KAAmB1H,kBAA1C;AACAyH,gCAA4BK,MAAMJ,QAAN,CAAeF,OAAf,CAAuBzH,gBAAvB,IAA2C,CAAvE;AACA6H,wBAAoBE,MAAMJ,QAAN,CAAeF,OAAf,CAAuBvH,gBAAvB,IAA2C,CAAC,CAAhE;AACD,GAJD;AAKA,MAAM+C,gBAAiB,gCAAY,eAAZ,MAAiC,GAAlC,IAA0C,CAAC5C,kBAAjE,CAbkD,CAamC;AACrF,MAAM2H,YAAY,EAACb,gBAAD,EAAlB;AACA,MAAMc,QACJ;AAAC,cAAD;AAAUD,aAAV;AACGd,SAAKgB,GAAL,CAAS,UAACC,IAAD,EAAOC,CAAP;AAAA,aACR;AAAC,YAAD;AAAA,UAAM,KAAKD,KAAKE,GAAL,IAAYD,CAAvB;AACGD,aAAKG,IAAL,IAAa,8BAAC,2BAAD,IAAO,MAAMH,KAAKG,IAAlB,GADhB;AAEE;AAAA;AAAA;AAAOH,eAAK3E;AAAZ;AAFF,OADQ;AAAA,KAAT;AADH,GADF;;AAWA,MAAM+E,gBAAgB,CACpB,EAACC,MAAM,SAAP,EAAkBpG,OAAO,KAAzB,EADoB,EAEpB;AACEoG,UAAM,YADR;AAEEpG,WAAO,OAFT;AAGEqG,iBAAa,qBAACN,IAAD,EAAU;AACrB,aAAO7E,kCAAYC,OAAZ,CAAoB;AACzBmF,mBAAW,qBADc;AAEzBlF,eAAO,MAFkB;AAGzBC,iBAAS,YAHgB;AAInBC,YAJmB,kBAIZ;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AACXiF,kDAAQC,IAAR,CAAa;AACXF,iCAAW,mBADA;AAEXG,4BAAM;AAAA;AAAA,0BAAK,WAAU,gBAAf;AACJ,sDAAC,0BAAD,IAAM,OAAO,GAAb,EAAkB,MAAK,OAAvB,EAA+B,aAA/B,GADI;AAEJ;AAAA;AAAA;AAAA;AAAA;AAFI,uBAFK;AAMXC,6BAAO;AANI,qBAAb;AAQAxC,4BAAQyC,UAAR,CAAmBC,YAAnB,CAAgC,WAAhC;AATW;AAAA;AAAA,2BAWHC,eAAKC,MAAL,CAAY,YAAM;AACtB9H,iCAAW,YAAM;AACf+H,iDAASC,QAAT,CAAkBjB,KAAK/F,KAAvB;AACD,uBAFD,EAEG,GAFH,EADsB,CAGb;AACV,qBAJK,CAXG;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAiBT6G,mCAAKI,KAAL;AACA/I,+CAAWgJ,MAAX,CAAkB,MAAlB;AACAlI,+BAAW,YAAM;AACf+H,+CAASC,QAAT,CAAkBjB,KAAK/F,KAAvB;AACD,qBAFD,EAEG,GAFH;;AAnBS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuBZ;AA3BwB,OAApB,CAAP;AA6BD;AAjCH,GAFoB,CAAtB;;AAuCA,MAAMmH,YAAY,SAAZA,SAAY,CAACC,KAAD,EAAW;AAC3B,QAAMC,WAAW,IAAIC,MAAJ,CAAW,yEAAX,CAAjB;AACA,QAAMC,UAAUF,SAASG,IAAT,CAAcJ,KAAd,CAAhB;;AAEA,QAAIG,OAAJ,EAAa;AACX,aAAOH,MAAMlI,KAAN,CAAY,GAAZ,EAAiB,CAAjB,CAAP;AACD;AACD,WAAOkI,KAAP;AACD,GARD;;AAUA,MAAMK,oBAAoB,SAApBA,iBAAoB,GAAM;AAAA,gBACFpI,yBAAY,EADV;AAAA,QACtBqI,eADsB,SACtBA,eADsB;;AAE9B,QAAI,CAAC,CAACA,eAAN,EAAuB;AACvB,QAAIC,OAAO3G,SAAS4G,sBAAT,CAAgC,6BAAhC,CAAX;AACA,QAAIC,QAAQ7G,SAAS8G,cAAT,CAAwB,cAAxB,CAAZ;AACA,QAAID,KAAJ,EAAW7I,WAAW,YAAM;AAAE,UAAI2I,QAAQA,KAAKI,MAAL,GAAc,CAA1B,EAA6B;AAAEC,gBAAQC,GAAR,CAAY,4BAAZ,EAA0CJ,MAAMK,KAAN;AAAe;AAAE,KAA7G,EAA+G,GAA/G;AACZ,GAND;;AAQA,MAAMC,aAAa,SAAbA,UAAa,CAACC,MAAD,EAAY;AAC7BlD,oBAAgBkD,MAAhB;AACD,GAFD;;AAIA,MAAMC,WAAW,gCAAY,UAAZ,CAAjB;AACA,MAAMC,iDAA8C,CAAC1D,QAAD,GAAY,eAAZ,GAA8B,EAA5E,CAAN;AACA,MAAM2D,eAAe;AAAA;AAAA,MAAK,WAAU,yBAAf;AACnB;AAAA;AAAA,QAAI,WAAU,eAAd;AAA+BlE;AAA/B,KADmB;AAEnB;AAAA;AAAA,QAAI,WAAU,YAAd;AAA4BE;AAA5B;AAFmB,GAArB;;AAKA,MAAMiE,kBAAkB;AAAA;AAAA,MAAK,WAAU,sBAAf;AACrBrC,kBAAcL,GAAd,CAAkB;AAAA,aAAK,8BAAC,2BAAD;AACtB,cAAM2C,EAAErC,IADc;AAEtB,aAAKqC,EAAErC,IAFe;AAGtB,iBAAS,mBAAM;AACb,cAAIW,wBAAJ,EAAc;AAAA,gBACLV,WADK,GACUoC,CADV,CACLpC,WADK;;AAEZ,gBAAIA,WAAJ,EAAiB;AACf,qBAAOA,YAAYoC,CAAZ,CAAP;AACD;AACD1B,qCAASC,QAAT,CAAkByB,EAAEzI,KAApB;AACA,gBAAI,OAAOyH,iBAAP,IAA4B,UAAhC,EAA4C;AAC1CA;AACD;AACF;AACF;AAdqB,QAAL;AAAA,KAAlB;AADqB,GAAxB;;AAmBA,MAAIpI,sBAASC,eAAb,EAA8B,OAAO,wCAAoB,EAAEmF,YAAF,EAASV,8BAAT,EAAyBD,wBAAzB;AACvDxF,cADuD,EACjDC,sBADiD,EACrCiG,UADqC,EAC/BpG,kBAD+B,EACrBoK,gCADqB,EACJxD,kBADI,EACMN,gBADN,EACeyD,sBADf,EAC2BlD,0BAD3B,EACyCL,kBADzC,EACmDC,gBADnD,EAApB,CAAP;;AAG9B,SAAQ;AAAA;AAAA,MAAK,gCAAQ5B,SAAS,cAAjB,EAAiCyF,OAAO,MAAxC,EAAgDC,QAAQ,MAAxD,IAAmElE,KAAnE,CAAL,EAAgF,WAAU,cAA1F,EAAyG,gBAAiBV,cAAjB,SAAmCD,WAA5I;AACN;AAAA;AAAA,QAAK,WAAU,mBAAf;AACG,OAAC,CAACU,IAAF,IAAU;AAAA;AAAA,UAAK,WAAU,eAAf,EAA+B,SAAS,mBAAI;AAACE,oBAAQkE,OAAR,CAAgB,GAAhB;AAAqB,WAAlE;AAAqEpE;AAArE,OADb;AAEG,OAAC,CAACF,SAAF,IAAe;AAAC,qBAAD;AAAA,UAAS,SAAQ,OAAjB,EAAyB,WAAU,aAAnC,EAAiD,OAAOiE,YAAxD,EAAsE,OAAO,MAA7E,EAAqF,kBAAiB,mBAAtG;AACd;AAAA;AAAA,YAAK,WAAU,YAAf;AAA6BjE,mBAA7B;AAAuC,+CAAG,WAAU,sBAAb;AAAvC;AADc,OAFlB;AAME,oCAAC,kBAAD,IAAoB,0BAA0BhE,wBAA9C,EAAwE,qBAAqBC,mBAA7F,EAAkH,eAAeM,aAAjI,EAAgJ,kBAAkBJ,gBAAlK,GANF;AAOGI,uBAAiBP,wBAAjB,IAA6C,8BAAC,YAAD,OAPhD;AAQGO,uBAAiBP,wBAAjB,IAA6C,8BAAC,cAAD;AARhD,KADM;AAWL6D,kBAAcqE,eAXT;AAYN;AAAA;AAAA,QAAK,WAAU,oBAAf;AACG,OAAC3D,OAAD,IAAY,8BAAC,2BAAD,IAAO,MAAK,QAAZ,EAAqB,4BAAyB,CAACD,QAAD,GAAY,UAAZ,GAAyB,EAAlD,CAArB,EAA8E,SAAS,mBAAM;AAACuD,qBAAW,IAAX;AAAiB,SAA/G,GADf;AAEG,OAACtD,OAAD,IAAY,CAAC,CAACwD,QAAd,IAA0B;AAAC,sBAAD;AAAA;AACzB,4BAAkBC,gBADO;AAEzB,mBAAS,CAAC,OAAD,CAFgB;AAGzB,mBAASzC,KAHgB;AAIzB,qBAAU,aAJe;AAKzB;AALyB;AAOzB;AAAA;AAAA,YAAK,WAAU,4BAAf,EAA4C,SAAS;AAAA,qBAAKpC,EAAEoF,cAAF,EAAL;AAAA,aAArD;AACE;AAAA;AAAA,cAAK,WAAU,iBAAf;AACE;AAAA;AAAA,gBAAG,WAAU,QAAb;AAAA;AAA0B;AAAA;AAAA;AAAO1B,0BAAUkB,QAAV;AAAP;AAA1B;AADF,WADF;AAIE,+CAAG,WAAU,sBAAb;AAJF;AAPyB,OAF7B;AAgBG,OAACxD,OAAD,IAAY;AAAA;AAAA,UAAK,WAAU,iBAAf;AAAkCF;AAAlC,OAhBf;AAiBE,oCAAC,QAAD,IAAU,MAAMrG,IAAhB,EAAsB,YAAYC,UAAlC;AAjBF,KAZM;AA+BN,kCAAC,oBAAD;AACI,eAAS0G,YADb;AAEI,kBAAY5F,sBAASC,eAFzB;AAGI,gBAAUsF,QAHd;AAII,eAAS,iBAACwD,MAAD;AAAA,eAAYD,WAAWC,MAAX,CAAZ;AAAA;AAJb;AA/BM,GAAR;AAsCD;;AAED/K,YAAYyL,YAAZ,GAA2B;AACzBnC,cAAYoC,oBAAUC;AADG,CAA3B","file":"headContent.js","sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\r\nimport { Ticon, ModalWraper, Loading, Spin, Message } from 'tplus-components-touch';\r\nimport { Tooltip, Menu, Dropdown, Switch, Popover } from 'antd';\r\nimport PropTypes from 'prop-types';\r\nimport { formatDate } from '../../utils';\r\nimport { env, nativeMs, localStore, i18n } from 'mutants-microfx';\r\nimport { PosInitData } from 'tplus-poslogin';\r\nimport { User } from 'tplus-api';\r\nimport { verticalHeadTime, verticalHeadContent } from './vertical-touch';\r\nimport { platform } from 'mutants-util';\r\nimport ThemeModal from \"./themeModal\";\r\nimport UploadOrder from \"./uploadList\";\r\nimport {stores} from 'mutants-microfx';\r\nimport {observer} from 'mobx-react';\r\nimport {OFFLINE_POINT_DESC} from './offlinePointDesc';\r\nconst { Item } = Menu;\r\nconst defaultFromat = 'yyyy-MM-dd hh:mm:ss';\r\nconst t = i18n.getFixedT(null, 'newretail');\r\nconst UPLOAD_BASE_PATH = '/login';\r\nconst NETWORK_THEME_PATH = \"/\";\r\nconst PLACE_ORDER_PATH = \"/RE/RE01\";\r\nlet weakRemindNum = 0;// 弱网提示初始值\r\nconst WEAK_STANDARD_NUM = 3; // 弱网提示的次数上限\r\n//自助大屏、PAD版本、商米暂不支持离线\r\nconst otherOfflineStatus = (localStore.get('isVerticalTouch') == 'true') || (localStore.get('isHorizontalPad') == 'true') || (localStore.get('isHorizontalSunMi') == 'true');\r\n\r\n//头部时间\r\nfunction HeadTime(props) {\r\n  const { time, dateFormat } = props;\r\n  let unMount = false;\r\n  const timeStr = typeof time === 'number' ? formatDate(time, dateFormat) : time;\r\n  const [currentTime, setCurrentTime] = useState(formatDate(Date.now(), dateFormat));\r\n  let timeout;\r\n  function refreshDate() {\r\n    if (time) return;\r\n    !unMount && setCurrentTime(formatDate(Date.now(), dateFormat));\r\n    timeout = setTimeout(refreshDate, 1000);\r\n  }\r\n  useEffect(() => {\r\n    refreshDate();\r\n    return () => {\r\n      unMount = true;\r\n      clearTimeout(timeout);\r\n    };\r\n  }, [currentTime]);\r\n  const [date_YMD, date_HMS] = currentTime.split(' ') || [];\r\n\r\n  if (platform.isVerticalTouch) return verticalHeadTime({ date_HMS });\r\n  return (\r\n    <div className='time'>\r\n      {timeStr ?\r\n        <div>{timeStr}</div> :\r\n        <div>\r\n          {date_YMD}\r\n          <span>{date_HMS}</span>\r\n        </div>\r\n      }\r\n    </div>\r\n  );\r\n}\r\n\r\n//头部联网状态\r\nconst OnLineStatus = observer((props)=>{\r\n  const { networkStatus } = props;\r\n  const { networkCheckStore } = stores;\r\n  const networkState = networkCheckStore.networkState;\r\n  let networkOn = true;\r\n  let iconName = 'WiFi';\r\n  switch (networkState) {\r\n    case '联网':\r\n      iconName = 'WiFi';\r\n      break;\r\n    case '弱网':\r\n      iconName = 'ruowifi';\r\n      break;\r\n    case '离线':\r\n      networkOn = false;\r\n      iconName = 'wuwangluo';\r\n      break;\r\n    default:\r\n      break;\r\n  }\r\n  const switchNetwork = (checked ,event)=>{\r\n    networkCheckStore.switchOnLine(checked);\r\n  }\r\n  const lineIcon = <Ticon\r\n    icon={iconName}\r\n    className=\"network-state-icon\"\r\n  />\r\n  return (\r\n    <div><span className='network-status' style={{marginRight:'10px'}}>{networkStatus || lineIcon}</span><span><Switch checkedChildren=\"开启\" unCheckedChildren=\"关闭\" defaultChecked checked={networkOn} onChange={switchNetwork}/></span></div>\r\n  );\r\n});\r\nfunction getIsOffNetWork() {\r\n  const { networkCheckStore } = stores;\r\n  return networkCheckStore.networkState === '离线';\r\n}\r\n//头部联网状态\r\nconst OnLineStatusToggle = observer(props => {\r\n  const { isShowUploadBtnsByRouter, isResetNetWorkTheme, isOfflineCash, isPlaceOrderPage } = props;\r\n  const { networkCheckStore, offlineSys, voucherStore } = stores;\r\n  const networkState = networkCheckStore.networkState;\r\n  let isOnLine = networkCheckStore.isOnLine;\r\n  const hasUseOffline = isOfflineCash && !otherOfflineStatus; //是否允许离线\r\n  let iconName = 'WiFi';\r\n  if (hasUseOffline) {\r\n    switch (networkState) {\r\n      case '联网':\r\n        iconName = 'WiFi';\r\n        break;\r\n      case '弱网':\r\n        iconName = 'ruowifi';\r\n        break;\r\n      case '离线':\r\n        iconName = 'wuwangluo';\r\n        break;\r\n      default:\r\n        break;\r\n    }\r\n    if (networkState === '离线' && isOnLine) {\r\n      ModalWraper.confirm({\r\n        title: t('提示'),\r\n        content: t('网络已断,是否切换到离线收银模式?'),\r\n        onOk: () => {\r\n          setOffLine(true);\r\n        }\r\n      });\r\n    }\r\n    function weakConfirm() {\r\n      if (!isOnLine) return;// 离线不提示\r\n      if (networkState !== '弱网') return; // 非弱网不提示\r\n      if (weakRemindNum >= WEAK_STANDARD_NUM) return; // 提示大于三次不再提示\r\n      if (!offlineSys.getDataIsOffline) return;// 数据未下载完不提示\r\n      if (document.querySelector('.isRetailUpLoading')) return;// 上传中不提示\r\n      if (document.querySelector('.isRetailDownLoading')) return;// 下载中不提示\r\n      if (document.querySelector('.tplus-loading')) return;// 全屏loading不提示\r\n      weakRemindNum ++;\r\n      ModalWraper.confirm({\r\n        title: t('提示'),\r\n        content: t('当前网络不好,是否切换到离线?'),\r\n        onOk: () => {\r\n          setOffLine(true);\r\n        }\r\n      });\r\n    }\r\n    weakConfirm();\r\n  }\r\n  function switchStatus() {\r\n    if (networkState === '离线' && !isOnLine) {\r\n      Message.tip('当前无网络,无法切换为在线状态');\r\n      return;\r\n    }\r\n    ModalWraper.confirm({\r\n        title: t('提示'),\r\n        content: t(`确定要切换为${isOnLine ? '离' : '在'}线环境吗?`),\r\n        onOk: () => {\r\n          setOffLine(isOnLine);\r\n        }\r\n    });\r\n  }\r\n  function setOffLine(status) {\r\n    if (isPlaceOrderPage) {\r\n      ModalWraper.confirm({\r\n        title: t('提示'),\r\n        content: t(`当前为开单界面,切换到${status ? '离' : '在'}线会清除当前数据,确定要切换吗?`),\r\n        onOk: () => {\r\n          playStatus(status);\r\n        }\r\n      });\r\n    } else {\r\n      playStatus(status);\r\n    }\r\n  }\r\n  function playStatus(status) {\r\n    // status 为 true 是在线切离线\r\n    if (status) {\r\n      if (!offlineSys.getDataIsOffline() || document.querySelector('.isRetailDownLoading')) {\r\n        Message.tip('数据还未下载完,无法切换为离线');\r\n        return;\r\n      }\r\n    }\r\n    offlineSys.setIsOffline(status);\r\n    if (isPlaceOrderPage) {\r\n      voucherStore.clearVoucherData();\r\n    }\r\n  }\r\n  return (\r\n    <div className='on-off-wrap'>\r\n      <div className='status-square'>\r\n        <span className=\"status-tog-btn\" style={{color: `${isResetNetWorkTheme ? '#fff' : ''}`}}>{<Ticon icon={iconName}/>}</span>\r\n      </div>\r\n      {\r\n        hasUseOffline && isShowUploadBtnsByRouter && <div className={`status-square c-pointer online-status-bg ${isOnLine || isResetNetWorkTheme ? '' : 'off-line'}`}>\r\n          <span className=\"status-tog-btn\" onClick={switchStatus}>\r\n            <span>{isOnLine ? '在线' : '离线'}</span>\r\n            <span>{<Ticon icon=\"zaixianlixian\" className=\"ts-14\" />}</span>\r\n          </span>\r\n          <Popover placement=\"bottom\" overlayClassName={'offline-popver'} content={<pre>{OFFLINE_POINT_DESC}</pre>} trigger=\"hover\">\r\n            <span className=\"status-tog-btn\">{<Ticon icon=\"tanhao1\" />}</span>\r\n          </Popover>\r\n        </div>\r\n      }\r\n    </div>\r\n  );\r\n});\r\n\r\n//零售单上传\r\nfunction RetailUpload() {\r\n  const [isModalVisible, setIsModalVisible] = useState(false);\r\n  const [isUpLoading, setIsUpLoading] = useState(false);\r\n  const refModal = useRef(null);\r\n  const showModal = async () => {\r\n    refModal && refModal.current.fetch();\r\n    setIsModalVisible(true);\r\n  };\r\n\r\n  const handleOk = async (isUpLoad = false) => {\r\n    setIsModalVisible(false);\r\n    if (getIsOffNetWork()) {\r\n      Message.tip('已断网,不可以上传单据');\r\n      return;\r\n    }\r\n    if (!isUpLoad) {\r\n      Message.tip('暂无可以上传的单据');\r\n      return;\r\n    }\r\n    if (isUpLoading) {\r\n      Message.tip('零售单正在上传……');\r\n      return;\r\n    }\r\n    setIsUpLoading(true);\r\n    try {\r\n      await stores.offlineSys.uploadRetail();\r\n      // Message.success('零售单上传成功');\r\n    } catch (err) {\r\n      Message.error('上传失败');\r\n    }\r\n    setIsUpLoading(false);\r\n  };\r\n\r\n  const handleCancel = () => {\r\n    setIsModalVisible(false);\r\n  };\r\n  return (\r\n    <div className='upload-retail'>\r\n      <div className=\"status-square online-status-bg c-pointer\" onClick={showModal}>\r\n        <span className=\"status-tog-btn\">\r\n          <span className={`${isUpLoading ? 'isRetailUpLoading' : ''}`}>{<Ticon icon=\"shangchuan\"/>}</span>\r\n          <span className=\"fast-upload-btn\">上传零售单</span>\r\n        </span>\r\n      </div>\r\n      <UnLoadNum/>\r\n      <UploadOrder ref={refModal} visible={isModalVisible} handleOk={handleOk} handleCancel={handleCancel}/>\r\n    </div>\r\n  );\r\n}\r\n// 零售单未上传的数量\r\nconst UnLoadNum = observer(() => {\r\n  const {offlineSys: {retailNotUploadNumber} } = stores;\r\n  return <span style={{display: retailNotUploadNumber > 0 ? 'inherit' : 'none'}} className=\"up-count-btn\">{retailNotUploadNumber > 99 ? '99+' : retailNotUploadNumber}</span>\r\n});\r\n//零售单下载\r\nfunction RetailDownload() {\r\n  const {offlineSys} = stores;\r\n  const [isDownload, setIsDownload] = useState(false);\r\n  const [downStr, setDownStr] = useState('下载数据');\r\n  const handleDownLoad = async () => {\r\n    if (getIsOffNetWork()) {\r\n      Message.tip('已断网,不可以下载单据');\r\n      return;\r\n    }\r\n    if (isDownload) {\r\n      Message.tip('下载中');\r\n      return;\r\n    }\r\n    setDownStr('0 %');\r\n    setIsDownload(true);\r\n    Message.tip('下载中');\r\n    try {\r\n      let result = await offlineSys.downloadCatcherData(e => {\r\n        setDownStr(e.percent + ' %');\r\n      });\r\n      if (result) {\r\n        Message.success(`数据下载成功`);\r\n      } else {\r\n        Message.error(`数据下载失败`);\r\n      }\r\n    } catch(err){\r\n      Message.error('数据下载失败');\r\n    }\r\n    setDownStr('下载数据');\r\n    setIsDownload(false);\r\n  };\r\n  return (\r\n    <div className='download-retail'>\r\n      <DownloadBtn handleDownLoad={handleDownLoad} isDownload={isDownload} downStr={downStr}/>\r\n    </div>\r\n  );\r\n};\r\n// 下载按钮\r\nconst DownloadBtn = observer((props) => {\r\n  const { downStr, isDownload, handleDownLoad} = props;\r\n  return (\r\n    <div className={`status-square online-status-bg c-pointer ${getIsOffNetWork() ? 'is-grey' : ''}`} onClick={handleDownLoad}>\r\n        <span className=\"status-tog-btn\">\r\n          <span className={`${isDownload ? 'isRetailDownLoading' : ''}`}>{<Ticon icon=\"xiazaishuju\"/>}</span>\r\n          <span className=\"fast-upload-btn\">{downStr}</span>\r\n        </span>\r\n      </div>\r\n  )\r\n});\r\nlet releaseDate, releaseVersion;\r\ntry {\r\n  releaseDate = __RELEASESDATE__;\r\n  releaseVersion = __BUILDVERSION__;\r\n} catch (error) {\r\n  releaseDate = '';\r\n  releaseVersion = '';\r\n}\r\nexport default function HeadContent(props, context) {\r\n  const isElectron = (env || {}).platform === 'electron';\r\n  const {businessName = '', storeName = '', posCode, logo, networkStatus, style = {}, history,\r\n    dateFormat = defaultFromat, solt, time, isPortal, isLogin, menu = [], onClick, location} = props;\r\n  const [themeVisible, setThemeVisible] = useState(false);\r\n  const [isShowUploadBtnsByRouter, setIsShowUploadBtnsByRouter] = useState(window.location.href.indexOf(UPLOAD_BASE_PATH) < 0);\r\n  const [isResetNetWorkTheme, setIsResetNetWorkTheme] = useState(window.location.pathname === NETWORK_THEME_PATH);\r\n  const [isPlaceOrderPage, setIsPlaceOrderPage] = useState(window.location.href.indexOf(PLACE_ORDER_PATH) > 0);\r\n  props.history.listen(route => {\r\n    setIsResetNetWorkTheme(route.pathname === NETWORK_THEME_PATH);\r\n    setIsShowUploadBtnsByRouter(route.pathname.indexOf(UPLOAD_BASE_PATH) < 0);\r\n    setIsPlaceOrderPage(route.pathname.indexOf(PLACE_ORDER_PATH) > -1)\r\n  });\r\n  const hasUseOffline = (PosInitData('IsOfflineCash') === \"1\") && !otherOfflineStatus; //是否允许离线\r\n  const menuProps = {onClick};\r\n  const menus = (\r\n    <Menu {...menuProps}>\r\n      {menu.map((item, i) =>\r\n        <Item key={item.key || i}>\r\n          {item.icon && <Ticon icon={item.icon}/>}\r\n          <span>{item.title}</span>\r\n        </Item>)\r\n      }\r\n    </Menu>\r\n  );\r\n\r\n  const controlConfig = [\r\n    {type: 'suoxiao', event: 'min'},\r\n    {\r\n      type: 'guanbixiao',\r\n      event: 'close',\r\n      beforeEvent: (item) => {\r\n        return ModalWraper.confirm({\r\n          className: 'tplus-confirm-modal',\r\n          title: '关闭提示',\r\n          content: '您确定要关闭应用吗?',\r\n          async onOk() {\r\n            Loading.show({\r\n              className: 'close-app-loading',\r\n              node: <div className='close-app-spin'>\r\n                <Spin scale={1.2} type='shape' visible/>\r\n                <h1>应用关闭中...</h1>\r\n              </div>,\r\n              delay: false\r\n            });\r\n            context.actionHook.actionChange('close-app');\r\n            try {\r\n              await User.logout(() => {\r\n                setTimeout(() => {\r\n                  nativeMs.doWindow(item.event);\r\n                }, 500); // 需要为500ms 时间短可能会不能正常注销清理\r\n              });\r\n            } catch (err) {\r\n              User.clear();\r\n              localStore.remove('user');\r\n              setTimeout(() => {\r\n                nativeMs.doWindow(item.event);\r\n              }, 500);\r\n            }\r\n          }\r\n        });\r\n      }\r\n    },\r\n  ];\r\n\r\n  const splitUser = (value) => {\r\n    const regEmail = new RegExp('^[A-Za-zd0-9]+([-_.][A-Za-zd0-9]+)*@([A-Za-zd0-9]+[-.])+[A-Za-zd]{2,5}$');\r\n    const isEmail = regEmail.test(value);\r\n\r\n    if (isEmail) {\r\n      return value.split('@')[0];\r\n    }\r\n    return value;\r\n  }\r\n\r\n  const setInventoryFocus = () => {\r\n    const { isHorizontalPad } = platform || {};\r\n    if (!!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('headContent--商品焦点==Focus==');input.focus() } }, 300)\r\n  }\r\n\r\n  const clickTheme = (isShow) => {\r\n    setThemeVisible(isShow)\r\n  }\r\n\r\n  const userName = PosInitData('UserName');\r\n  const overlayClassName = `_portal-header-dropdown ${!isPortal ? 'inside-header' : ''}`;\r\n  const moreInfoNode = <div className='pos-more-info-container'>\r\n    <h1 className='business-name'>{businessName}</h1>\r\n    <h1 className='store-code'>{posCode}</h1>\r\n  </div>\r\n\r\n  const headControlNode = <div className=\"head-content-control\">\r\n    {controlConfig.map(v => <Ticon\r\n      type={v.type}\r\n      key={v.type}\r\n      onClick={() => {\r\n        if (nativeMs) {\r\n          const {beforeEvent} = v;\r\n          if (beforeEvent) {\r\n            return beforeEvent(v);\r\n          }\r\n          nativeMs.doWindow(v.event)\r\n          if (typeof setInventoryFocus == 'function') {\r\n            setInventoryFocus()\r\n          }\r\n        }\r\n      }}\r\n    />)}\r\n  </div>\r\n\r\n  if (platform.isVerticalTouch) return verticalHeadContent({ style, releaseVersion, releaseDate,\r\n    time, dateFormat, logo, HeadTime, headControlNode, location, history, clickTheme, themeVisible, isPortal, isLogin });\r\n\r\n  return (<div style={{display: 'inline-block', width: '100%', height: '100%', ...style}} className='head-content' data-release={`${releaseVersion} ${releaseDate}`}>\r\n    <div className=\"head-content-left\">\r\n      {!!logo && <div className='business-logo' onClick={()=>{history.replace('/')}}>{logo}</div>}\r\n      {!!storeName && <Tooltip trigger=\"click\" placement=\"bottomRight\" title={moreInfoNode} color={'#fff'} overlayClassName='head-business-tip'>\r\n        <div className='store-name'>{storeName}<i className='header-triangle-down' /></div>\r\n       </Tooltip>}\r\n      {/* <OnLineStatus networkStatus={networkStatus}/> */}\r\n      <OnLineStatusToggle isShowUploadBtnsByRouter={isShowUploadBtnsByRouter} isResetNetWorkTheme={isResetNetWorkTheme} isOfflineCash={hasUseOffline} isPlaceOrderPage={isPlaceOrderPage}/>\r\n      {hasUseOffline && isShowUploadBtnsByRouter && <RetailUpload />}\r\n      {hasUseOffline && isShowUploadBtnsByRouter && <RetailDownload />}\r\n    </div>\r\n    {isElectron && headControlNode}\r\n    <div className=\"head-content-right\">\r\n      {!isLogin && <Ticon icon=\"huanfu\" className={`theme-icon ${!isPortal ? 'pos-page' : ''}` } onClick={() => {clickTheme(true)}}/>}\r\n      {!isLogin && !!userName && <Dropdown\r\n        overlayClassName={overlayClassName}\r\n        trigger={['click']}\r\n        overlay={menus}\r\n        placement=\"bottomRight\"\r\n        arrow\r\n      >\r\n        <div className='header-info-render-content' onClick={e => e.preventDefault()}>\r\n          <div className='store-info-item'>\r\n            <p className='biller'>开单员:<span>{splitUser(userName)}</span></p>\r\n          </div>\r\n          <i className='header-triangle-down'/>\r\n        </div>\r\n      </Dropdown>}\r\n      {!isLogin && <div className='store-info-item'>{solt}</div>}\r\n      <HeadTime time={time} dateFormat={dateFormat}/>\r\n    </div>\r\n    <ThemeModal\r\n        visible={themeVisible}\r\n        isVertical={platform.isVerticalTouch}\r\n        isPortal={isPortal}\r\n        closeFn={(isShow) => clickTheme(isShow)}\r\n    />\r\n  </div>);\r\n}\r\n\r\nHeadContent.contextTypes = {\r\n  actionHook: PropTypes.object,\r\n}\r\n"]}
         
     |