{"version":3,"sources":["service/interface/purchase-check.d.ts","pages/login/style.tsx","config/style-to-json/colors.ts","utils/local-storage.ts","service/purchase-check.ts","hooks/table.ts","pages/booking/components/BookingForm.tsx","utils/reg.ts","pages/booking/components/BookingPayNoModal.tsx","pages/booking/components/BookingSteps.tsx","pages/booking/index.tsx","service/interface/second-hand.d.ts","service/sales-billing.ts","utils/common.tsx","components/empty/index.tsx","hooks/useRole.tsx","service/dashboard.ts","service/my-set.ts","hooks/useGroup.tsx","components/color-span/index.tsx","setupProxyConfig.js","service/interface/commom.d.ts","components/my-upload/index.tsx","utils/encryptDes.js","service/user.ts","components/add-time/index.tsx","service/interface/user.d.ts","styles/flex-layout.ts","pages/booking/components/CountdownButton.tsx","utils/print.ts","pages/user-manage/UserManageAuthority.tsx","pages/user-manage/UserManageCustom.tsx","pages/user-manage/UserManageMenu.tsx","pages/user-manage/UserManageAccess.tsx","pages/user-manage/UserManagePersonnel.tsx","pages/user-manage/components/UserManageAccountFilter.tsx","hooks/useIgnoreSupperRole.tsx","pages/user-manage/components/UserManageAccountModal.tsx","pages/user-manage/components/UserManageAccountImportModal.tsx","pages/user-manage/components/UserManageAccountChangePwdModal.tsx","pages/user-manage/UserManageAccount.tsx","pages/login/index.tsx","pages/ecpay-info/index.tsx","pages/search-warehouse/index.tsx","pages/qr-code-logistics/index.tsx","service/search-warehouse.ts","pages/goodsPriceLabelPrint/index.tsx","hooks/useShop.tsx","hooks/useButtonVOList.tsx","service/second-hand.ts","hooks/useUserInfo.tsx","h5/constants/assets.const.ts","hooks/usePrint.ts","hooks/useWebSupplier.tsx","utils/comp2modal.tsx","hooks/usePayWay.tsx","hooks/useConditionLevel.tsx","config/constant.ts","pages/user-manage/index.ts","config/router-config.tsx","pages/user-manage/components/UserManageAuthorityModal.tsx","components/AppDownloadEntrance/useAppVersions.ts","components/AppDownloadEntrance/styles.ts","components/AppDownloadEntrance/AppDisplay.tsx","components/AppDownloadEntrance/DownloadModal.tsx","components/AppDownloadEntrance/index.tsx","utils/ajax.ts","hooks/useLanguage.tsx","context.ts","service/booking.ts","utils/cookies.ts","config/style-to-json/fonts.ts","config/style-to-json/gaps.ts","config/style-to-json/index.ts","layouts/layoutStyleConfig.ts","components/header/ChangePasswordModal.tsx","components/header/ChangeInfoModal.tsx","components/header/ChangeGroupModal.tsx","components/header/index.tsx","components/nav-sidebar/router-menu.tsx","components/nav-sidebar/index.tsx","layouts/MainLayout.tsx","config/language-letter.ts","config/zh.ts","config/zhTw.ts","config/english.ts","layouts/SecurityLayout.tsx","service/forgot-pass.ts","pages/forgot-pass/components/info.tsx","pages/forgot-pass/components/sms.tsx","pages/forgot-pass/components/unlock.tsx","pages/forgot-pass/components/reset-pass.tsx","pages/forgot-pass/components/operate-choose.tsx","pages/forgot-pass/index.tsx","h5/context/app.data.context.ts","h5/app.logical.tsx","h5/hooks/use-init.ts","h5/constants/route.const.ts","h5/pages/detail/ui.elements.ts","h5/pages/detail/components/carousel/elements.ts","h5/pages/detail/context/data.context.ts","h5/pages/detail/components/carousel/index.tsx","h5/pages/detail/components/meta-data/elements.ts","h5/pages/detail/components/meta-data/index.tsx","h5/pages/detail/components/sku-info/elements.ts","h5/pages/detail/components/sku-info/index.tsx","h5/pages/detail/components/freight-info/elements.ts","h5/pages/detail/components/freight-info/index.tsx","h5/components/rich-text-display/elments.ts","h5/components/rich-text-display/index.tsx","h5/pages/detail/components/goods-detail/index.tsx","h5/components/header/elements.ts","h5/components/header/index.tsx","h5/pages/detail/components/attention-info/index.tsx","h5/pages/detail/components/similar-goods/elements.ts","h5/components/goods-card/elements.ts","h5/components/goods-card/index.tsx","h5/pages/detail/components/similar-goods/index.tsx","h5/pages/detail/components/comments/elements.ts","h5/pages/detail/components/comments/index.tsx","h5/components/scroll-tab/consts.ts","h5/utils/emitter.ts","h5/components/scroll-tab/elements.ts","h5/components/scroll-tab/scroll-tab-item.tsx","h5/components/scroll-tab/tab.tsx","h5/components/scroll-tab/index.tsx","h5/pages/detail/ui.tsx","h5/pages/detail/logical.tsx","h5/pages/detail/hooks/use-demo.ts","h5/pages/detail/index.tsx","h5/pages/second-hand/detail/context/page-data.context.ts","h5/pages/second-hand/detail/mock/deliver.mock.ts","h5/pages/second-hand/detail/mock/attention.mock.ts","h5/pages/second-hand/detail/elements.ts","h5/pages/second-hand/detail/components/carousel/elements.ts","h5/pages/second-hand/detail/components/carousel/index.tsx","h5/pages/second-hand/detail/components/carousel/use-nav-scroll.ts","h5/pages/second-hand/detail/components/main-info/index.tsx","h5/pages/second-hand/detail/components/meta-info/index.tsx","h5/pages/second-hand/detail/components/goods-detail/index.tsx","h5/pages/second-hand/detail/components/detection-report/components/card-item.tsx","h5/pages/second-hand/detail/components/detection-report/components/summary-info.tsx","h5/pages/second-hand/detail/components/detection-report/components/accordion.tsx","h5/pages/second-hand/detail/components/detection-report/components/line-list.tsx","h5/pages/second-hand/detail/components/detection-report/components/functional-list.tsx","h5/pages/second-hand/detail/components/detection-report/components/pic-info-card.tsx","h5/pages/second-hand/detail/components/detection-report/components/guarantee-banner.tsx","h5/pages/second-hand/detail/components/detection-report/components/guarantee-list.tsx","h5/pages/second-hand/detail/components/detection-report/components/guarantee.tsx","h5/pages/second-hand/detail/components/detection-report/components/card.tsx","h5/pages/second-hand/detail/components/detection-report/index.tsx","h5/pages/second-hand/detail/components/deliver-ways/index.tsx","h5/pages/second-hand/detail/components/attention-info/index.tsx","h5/helpers/custom-url.helper.ts","h5/helpers/json.helper.ts","h5/helpers/crypto.helper.ts","h5/utils/storage.ts","h5/consts.ts","h5/service/requester.ts","h5/service/apis.ts","h5/helpers/api.join.helper.ts","h5/pages/second-hand/detail/content.tsx","h5/pages/second-hand/detail/hooks/use-data.ts","h5/pages/second-hand/detail/parser/detail.parser.ts","h5/pages/second-hand/detail/index.tsx","h5/app.routes.tsx","h5/index.tsx","router.tsx","config/global-style-config.ts","App.tsx","utils/sound-creator.ts","reportWebVitals.ts","index.tsx","service/interface/booking.d.ts","layouts/style-config.ts"],"names":["WarehouseStatus","StoreStatus","GetPickStatus","PickOrPackage","PackPackageStatus","TradeVOListItemStatus","OperateType","AxisType","PageWrapper","styled","div","ImgContainer","LoginWrapper","LoginFormContainer","props","account","password","FormTitle","byPrimary","byBlues","generate","grey1","grey2","grey3","grey4","grey5","grey6","grey7","grey8","grey9","grey10","white","link","success","green","primary","warning","gold","error","red","title","primaryText","secondaryText","disable","border","dividers","background","titleInDark","primaryTextInDark","secondaryTextInDark","disableInDark","borderInDark","dividersInDark","backgroundInDark","dividersDark","upgradePrimary","primaryHover","primaryActive","STORAGE_KEYS","Q3_EXPAND","PREFIX","clear","all","localStorage","i","length","key","test","Object","values","includes","removeItem","storage","hasItem","getItem","setItem","value","e","name","getAllProductList","params","ajaxPost","getPartnoList","getPartnoInfo","id","undefined","deletePartno","getProductInfo2","productCode","addPartno","editPartno","uploadExcel","ajaxForm","getPickList","deletePickItem","checkPickItem","startPick","changePicker","changeAxisType","axisType","getCurrentAxis","getEfficiencyStatisticsList","startBtachPick","getPackList","scanPickInfo","tradeNo","pickInfoDetail","scanOnOk","partPackageBatchId","getPickInfo","partPickId","completePick","outOfStock","DEFAULT_QUERY_CHECK","DEFAULT_QUERY","defaultSelectionStates","selectedCount","selectedRowKeys","useTable","useTableProps","service","rowKey","routerSync","query","select","defaultPageSize","queryChecker","extraSelectProps","useLocation","search","pathname","routeQuery","qs","parse","history","useHistory","useState","currentPageNum","setCurrentPageNum","list","setList","total","setTotal","pageSize","setPageSize","loading","setLoading","wholeResult","setWholeResult","selectRowState","setSelectRowState","prevQuery","usePrevious","prevRouteQuery","useMemo","pageNum","routerPageNum","realPageSize","parseInt","realPageNum","page","serviceParams","selectByPageAndAll","text","onSelect","changeableRowKeys","count","rowSelection","onChange","newSelectedRowKeys","hideDefaultSelections","selections","pagination","current","size","push","stringify","showSizeChanger","showTotal","rowSelectionProps","selected","selectedKeys","loadData","then","res","records","useDebounce","isEqual","tableProps","dataSource","useEffect","newSelectRows","reduce","cur","it","clearSelection","levelTwoMap","label","isEnv","window","location","origin","BookingForm","saved","form","Form","useForm","checkForm","visible","setVisible","captcha1","setCaptcha1","model","setModel","errorCount","setErrorCount","showFlag","setShowFlag","version","setVersion","colorArr","setColorArr","capacityArr","setCapacityArr","btnLoading","setBtnLoading","needDepositFlag","setNeedDepositFlag","mobilePhoneInfoByLevelFive","setMobilePhoneInfoByLevelFive","shop","useShop","payWayList","usePayWay","isVip","useRef","fetchConfigInfo2","a","getBookingConfigInfo","configValue","handleChangeLevelOne","setFieldsValue","levelTwo","levelThree","levelFour","ramId","phoneTypeInfo","subWebAttributeList","map","item","attributesName","machineTypeId","fetchCaptcha1","getCaptcha","formatPhoneNumber","phoneNumber","formattedNumber","replace","sendCode","Promise","resolve","reject","getFieldsValue","phone","flag","message","bookingSendVerificationCode","mobileModel","filter","vipCustomer","skuId","handleChangeType","onlineBook","handleChangeModel","subWebAttributeMaps","neicunArr","handleChangeColor","getFieldValue","getSkuIdByRamId","handleChangeCapacity","onOk","validateFields","_curPrice","priceType","price","officialPrice","verifySentVerificationCode","encodeURIComponent","verificationCode","verificationCodeBusinessEnum","verificationCodeFlag","rightFlag","addBooking","reservePrice","levelOne","branchesName","groupBy","branches","introduceMask","introduceInsurance","introduceRenewDiscount","introduceOldDiscount","payWay","needUnifyNumber","reserveNeedDepositFlag","resetFields","skuName","validatorUnifyNumber","r","val","Error","trim","onClick","email","scrollToFirstError","style","maxWidth","initialValues","gutter","xs","sm","md","lg","xl","Item","rules","validator","ISH5","marginBottom","required","placeholder","index","Option","extra","color","Group","allowClear","shopType","ShopType","NORMAL","reserveBranchesName","noStyle","shouldUpdate","disabled","payWayName","target","_val","companyName","getCompanyName","valuePropName","display","alignItems","CountdownButton","marginTop","width","marginRight","type","debounce","verifyCode","checkCaptcha","verifyCodeName","onCancel","src","alt","floatPattern","BookingPayNoModal","record","JSON","payNo","onOkElse","addPayNo","span","Step","Steps","BookingSteps","activePayNo","setActivePayNo","payDetailVisible","setPayDetailVisible","captcha","setCaptcha","setRecord","tableList","setTableList","setCurrent","inputRef","fetchCaptcha","PayStatusMap","PayStatus","PAYING","PAYED","BookingPayWay","ECPAY","CASH","rePay","curRecord","skuPrice","getBookingList","direction","justifyContent","header","footer","bordered","renderItem","actions","payStatus","status","href","open","Modal","confirm","keyboard","icon","CheckCircleOutlined","cancelBooking","phoneOrderPayVO","merchantTradeNo","Meta","description","reserveNo","gmtCreate","height","top","destroyOnClose","maskClosable","overflowY","enCryptoByDes","minHeight","moment","locale","BookingStatus","Content","Layout","Booking","isOpen","setIsOpen","desc","setDesc","orderValue","setOrderValue","payModalVisible","setPayModalVisible","REGISTER","setStatus","getWebBookingMessageList","webBookingMessageList","getWebBookingMessageInfo","result","createPay","orderId","fetchConfigInfo","iFrame","document","getElementById","onload","contentWindow","postMessage","msg","envUrl","addEventListener","event","data","console","log","childData","url","ROUTER_PREFIX","content","okText","cancelText","close","levelFive","renderEmpty","MyEmpty","zhTW","className","margin","padding","overflowX","dangerouslySetInnerHTML","__html","activeKey","active","TabPane","tab","ECHO","TransferOldPhoneDealStatus","OldPhoneStatus","TransferStatus","ConditionLevel","phoneOrderList","getCustomerByPhone","getPagePacked","getPagePackedInfo","ajaxGet","logisticsDoReceipt","phoneOrderLogistics","phoneCustomerOrderLogistics","deletePhoneOrder","cancelPhoneOrder","cancelSimOrder","addBlack","editBlack","addPhoneOrder","editPhoneOrder","getPhoneOrderInfo","isPrint","getWebRepairstatusList","dealPhone","stayToReceive","restorePhone","getCurrentOrderList","getSimOrderList","deleteCurrentOrder","deleteSimOrder","getCurrentOrderInfo","getSimOrderInfo","addCurrentOrder","editCurrentOrder","saveSimOrder","changeProject","cancelProject","getAheadOrderList","deleteAheadOrder","getAheadOrderInfo","addAheadOrder","editAheadOrder","getMenhaoOrderList","deleteMenhaoOrder","addMenhaoOrder","editMenhaoOrder","getMenhaoOrderInfo","savePhoto","getRepairInfo","startRepair","newPhoneStatisticalReportList","profitStatisticalReportList","profitStatisticalReportDetailList","newPhoneStatisticalReportCount","require","apiEnvTargetImgMap","currentNodeEnv","processValue","unit","toString","secondsFormat","s","day","Math","floor","hour","ISH52","navigator","userAgent","checkSncode","code","isSMode","sModeCheck","_sModeCheck","curCode","toLocaleUpperCase","indexOf","substring","checkNumber","num","downloadUrl","fileName","alink","createElement","download","body","appendChild","click","removeChild","dealTime","sTime","eTime","diff","Date","h","m","getBase64","file","reader","FileReader","readAsDataURL","onerror","dealSimpleMinioImgUrl","dealSecretMinioImgUrl","getImageMinioUrl","cutPrefixImgUrl","match","image","AntdEmpty","PRESENTED_IMAGE_DEFAULT","useRole","roleList","setRoleList","fetchRole","getUserRoleList","roleName","webMessageList","getWebMessageInfo","editWebMessageInfo","editWebBookingMessageInfo","getEcpayInfo","getClusterNodeList","switchClusterSms","phoneTypeList","phoneTypeListAll","levelFourAll","getLevelThreeInfo","attributesType","getWebPriceList","getWebOldPriceList","getWebOldHuiShouPriceList","webPriceSubmit","getPhoneRamList","submitOpenRam","getWebOldupc","exportOpenRam","getWebUpc","exportUpc","addUpc","editUpc","commitUpc","editWebOldupc","editWebHuiShouOldupc","addPhone","editPhone","uploadMainImg","uploadPhoneImg","setMachineType","allShopTransfer","commitAllShopTransfer","getProfit","useGroup","groupList","setGroupList","fetchGroup","getGroupList","groupName","ColorSpan","isGreen","theme","apiEnvTargetMap","development","taiwan","production","newProduction","module","exports","process","apiList","IS_LOCAL","NewImageType","MyUpload","imageType","accept","fileList","handleSetImageUrl","handleSetFileList","validateSizeParams","lal","useLanguage","common","uploadImg","imgUpload","mpSet","mainImgUpload","secondHand","handleBeforeUpload","validateSize","overSize","_URL","URL","webkitURL","img","Image","createObjectURL","listType","maxCount","action","headers","getToken","token","beforeUpload","info","xhr","response","er","onRemove","Crypto","enc","Utf8","iv","Hex","paramsStr","DES","encrypt","goPreWebsite","goSimCardCombo","sendLoginV2VerificationCode","verifyLoginV2SentVerificationCode","agentType","submitLogin2","logout","getUserInfo","changePwd","changeGroup","changeRefreshTime","refreshMin","changeLanguage","languageType","getMenuListByToken","getErpMenuListByToken","getAllMenuList","getUserLoginLogList","deleteRole","roleId","addRole","editRole","getRoleInfo","getMaintenanceGroupList","getMaintenanceWithoutGroupList","commitGroup","getAccessList","addAccess","editAccess","addGroup","editGroup","addMaintenanceGroup","editMaintenanceGroup","deleteGroup","webGroupId","deleteMaintenanceGroup","repairGroupId","fetchGroupInfo","getUserList","changeUserLoginSecondaryVerificationUser","enable","singleChangeUserLoginSecondaryVerificationUser","getUserInfoConfigCode","deleteUser","userId","changeUserStatus","userStatus","addUser","editUser","editPwd","hanldeGetUserInfo","deleteMenu","menuId","editMenu","addMenu","getWebWarrantyList","addWebWarranty","editWebWarranty","deleteWebWarranty","getWebPayList","getDiscountList","getDiscountReasonList","addWebPay","addDiscount","addDiscountReason","editWebPay","editDiscount","editDiscountReason","deleteWebPay","deleteDiscount","deleteDiscountReason","getWebStagesList","toggleReserve","addWebStages","editWebStages","deleteWebStages","addWebRepairstatus","editWebRepairstatus","deleteWebRepairstatus","sortGroup","getWebShopsList","getOutWebShopsList","addWebShops","saveOutWebShops","editWebShops","deleteWebShops","deleteOutWebShops","disableOutWebShops","getWebSupplierList","getPrintTemplateList","getPrintTemplate","printTemplateStatus","getExcelTemplateList","getJipinList","blacklist","getYanzhengmaList","editPrintTemplate","editExcelTemplate","addWebSupplier","callGoodsCoefficientList","editWebSupplier","deleteWwebSupplier","deletePrintTemplate","deleteExcelTemplate","rollbackPrintTemplateHistory","historyId","pagePrintTemplateHistory","publishPrintTemplate","copyPrintTemplate","getRegularCustomerList","getBackList","addRegularCustomer","addBackItem","editRegularCustomer","editBackItem","deleteRegularCustomer","deleteBackItem","getWebStoreSetTimeList","getWebStoreSetTimeInfo","editWebStoreSetTime","getBannerList","addBanner","editBanner","deleteBanner","getMachineList","getListNetworkServiceProvider","getListDistributorServiceProvider","getListNetworkType","getMachineInfo","businessType","getBannerInfo","category","editMachine","saveMachine","deleteMachine","getQItemList","getTianQItemList","addQItem","addTianQItem","editQItem","editTianQItem","getQPackageList","getSimCardComboInfo","getTianQPackageList","getSimPackageList","addQPackage","addTianQPackage","editQPackage","directSale","editTianQPackage","deleteQPackage","deleteTianQPackage","enableQPackage","enableTianQPackage","getQPackageInfo","getTianQPackageInfo","getQContractList","addQContract","editQContract","enableDidan","deleteDidan","submitDidan","getQContractInfo","getQList","getSimList","cancelSim","scrapSim","getTianQList","getThreeQList","getQItemUseInfo","getTianQItemUseInfo","checkTianQItemUseInfo","str","addQUseNum","addTianQUseNum","addThreeQUseNum","getQDistributionList","getTianQDistributionList","getThreeQDistributionList","getThreeQpageNewImport","getThreeQpageNewImport2","getThreeQpageNewImport3","getThreeQpageHistoryImport","getThreeQpageHistoryImport2","getThreeQpageHistoryImport3","getSimDistributionList","getQDistributionSearchList","getTianQDistributionSearchList","getThreeQDistributionSearchList","getSimDistributionSearchList","getQAbnormalList","getTianQAbnormalList","getThreeQAbnormalList","getSimAbnormalList","deliverQ","deliverTianQ","deliverThreeQ","deliverSim","transferQ","qBatchScan","threeqBatchScan","tianqBatchScan","transferTianQ","transferThreeQ","transferThreeQbatchImport","transferThreeQbatchImport2","transferThreeQbatchImport3","transferSim","scanAddSpotsScanSim","iccid","checkQ","cardNo","checkTianQ","checkThreeQ","checkSim","editQ","editSim","editTianQ","editThreeQ","restoreQ","restoreTianQ","restoreThreeQ","deleteQ","deleteTianQ","deleteThreeQ","getImportNoByCardNo","getImportNoByCardNo2","getListCardNoByImport","getListCardNoByImport2","getListCardNoByImport3","deleteSim","fetchSimDetail","fetchComboInfo","deleteQDistribution","deleteTianQDistribution","deleteThreeQDistribution","deleteSimDistribution","resetQDistribution","resetTianQDistribution","resetThreeQDistribution","resetSimDistribution","cancelQ","cancelTianQ","cancelThreeQ","usageQ","usageTianQ","usageThreeQ","tranTianQToQ","qcardId","tranThreeQToTianQ","qToTianQ","reissueQ","scanAddSim","reissueTianQ","reissueThreeQ","getRList","deleteR","cancelR","getQCheckList","getTianQCheckList","getThreeQCheckList","getSimCheckList","checkQCard","checkTianQCard","checkThreeQCard","checkSimCard","getRCheckList","checkRCard","getImportInfo","bizType","releaseImport","resetSmsRemainTimes","AddTime","startTime","shouldStop","time","setTime","timeRef","clearInterval","setInterval","Language","USERAGENTTYPE","RefreshTimeType","LanguageType","MenuType","UserStatus","BannerCategory","QItemEnable","PackageType","PackageTypeEnum","QServiceListParamsStatus","SimServiceListParamsStatus","TransferQItemDeliverStatus","TransferQItemReceiveStatus","UsageStatus","QDeliverStatus","QReceiveStatus","CheckStatus","AgentType","BizType","ImportStatus","languageMap","ZHTW","ZHCN","userAgentMap","PC","H5","flexHorizontal","flexVertical","flexMainAxisCenter","flexCrossAxisCenter","flexStatic","flexReactive","timeLeft","setTimeLeft","isDisabled","setIsDisabled","timerId","setTimeout","clearTimeout","handleClick","dealPrintTemplate","UserManageAuthority","isSupperRole","useContext","GlobalContext","userInfo","setQuery","enter","add","edit","deleteText","delete","sureDelete","tips","userManage","columns","dataIndex","render","roleIntro","table","operate","handleDelete","layout","onValuesChange","_","allFields","marginLeft","UserManageCustom","UserManageMenu","menuList","setMenuList","parentId","setParentId","MENU","menuType","setMenuType","allRoute","menuName","catalog","perms","menu","curButton","button","order","menuTypeMap","ALLROUTE","DIRECTORY","BUTTON","fetchMenuList","sort","dealMenuList","Array","route","children","openAddModal","expandable","indentSize","confirmLoading","modalFormLayout","min","max","UserManageAccess","setDataSource","remark","buttonName","buttonCode","pathRoute","userIdList","userVOList","isArray","fetchUserList","realName","join","arr","roleVOList","arrMap","entries","dataArr","userList","li","spinning","maxHeight","overflow","treeData","treeCheckable","showCheckedStrategy","TreeSelect","SHOW_CHILD","TextArea","UserManagePersonnel","group","note","Select","UserManageAccountFilter","showModal","showImportModal","setConfigValue","import","nickName","role","fetchInfo","SearchOutlined","PlusOutlined","useIgnoreSupperRole","ignoreSupperRoleList","ignoreSupperRole","UserManageAccountModal","setFileList","imageUrl","setImageUrl","webSupplierList","useWebSupplier","fetchUserInfo","reset","uid","jobNum","roleIds","Number","groupId","supplierId","groupVOList","curGroupVOList","supplierName","mode","labelInValue","Dragger","Upload","UserManageAccountImportModal","curImport","curFileUpload","fileUpload","InboxOutlined","UserManageAccountChangePwdModal","UserManageAccount","importVisible","setImportVisible","changePwdVisible","setChangePwdVisible","accountStatus","normal","stopUsing","startUsing","locking","unlocking","locked","userStatusMap","DISABLED","LOCKED","useUniqueAsync","handleResetUserSmsRemainTimes","asyncFn","resetSmsLoading","fixed","format","onConfirm","isSecondaryVerification","ExclamationCircleOutlined","handleChangeUserStatus","curQuery","scroll","x","Login","showSmsVisible","setShowSmsVisible","smsForm","loginRef","onFinish","secondaryVerificationEnable","setToken","split","redirectUrl","hideRequiredMark","Password","textAlign","block","htmlType","EcpayInfo","detail","setDetail","useRouteMatch","orderNo","curTradeNo","tradeStatus","tradeAmt","paymentDate","tradeDate","paymentType","invoiceVO","atmBankName","unifyNumber","chargeFee","atmBankCode","atmExpireTime","atmAccNo","atmVirtualAccount","atmExpireDate","cardAuthCode","card4No","card6No","cardGwsr","cardEci","cardProcessDate","getInfo","decodeURIComponent","paddingLeft","copy","translateNum","customerIdentifier","customerEmail","invoiceNo","invoiceStatus","salesAmount","itemRemark","SearchWarehouse","QrCodeLogistics","logisticsDataSource","setLogisticsDataSource","fetchPhoneOrderLogistics","operateDesc","getProductInfo","GoodsPriceLabelPrint","printForm","productInfo","setProductInfo","productNumber","productStorage","productStyle","salePrice","productSize","productName","listPrint","usePrint","Sound","play","fetchInfo2","listData","fill","onPressEnter","defaultValue","orderType","shopTypeList","shopList","setShopList","fetchShop","extraArr","elseArr","useButtonVOList","buttonVOList","getOldPhoneCheckList","transferOldPhoneDealList","oldphoneRepertoryList","oldphoneBatchEditRepertory","editTransferOldPhoneDeal","getOldPhoneList","oldPhoneUncheck","cancelMobilePhonePhoto","revokeRedo","uploadSecondSaleExcel","uploadNewSaleExcel","needRemoveS","uploadPlatformExcel","cancelMobilePhone","cancelPlatform","submitMobilePhone","submitPlatform","scanPlatform","scanSNPlatform","snCode","upcCode","scanSNPlatformSubmit","deleteOldMobilePhone","lockOldMobilePhone","unlockOldMobilePhone","checkOldMobilePhone","unreserveOldMobilePhone","reserveOldMobilePhone","addOldMobilePhone","editOldMobilePhone","getOldMobilePhoneById","doMachineVerification","passMachineVerification","withdrawCertainMachineVerification","uploadPhotosTaken","deleteAllPhotosAtOnce","getMobilePhoneInfoById","getPlatformInfoById","getUploadImageNew","ajaxFormImg","getOldMobilePhoneStatisticsList","getSkuById","getOldMobilePhoneLink","getSkuIdByLevelFourAndRamId","transferOldPhoneCommitList","oldMobilePhoneTransferCommit","oldMobilePhoneDirectTransferCommit","oldMobilePhoneTransfer","oldMobilePhoneReceive","oldMobileRecyclingStoreList","oldMobileRecyclingStoreCancel","oldMobileRecyclingStoreContact","oldMobileRecyclingStoreRecycle","oldMobileRecyclingDeliveryList","oldMobileRecyclingDeliveryCancel","oldMobileRecyclingDeliveryDispatch","oldMobileRecyclingDeliveryReceived","oldMobileRecyclingDeliveryGiveBack","oldMobileRecycling711List","oldMobileRecycling711Cancel","oldMobileRecycling711Remark","oldMobileRecycling711Received","oldMobileRecycling711GiveBack","useUserInfo","ASSETS_PREFIX","printTemplateCode","LODOP","printData","printTemplateContent","printTemplateDeviceList","_printTemplateContent","printInvoker","Function","machine","curDate","curDateDay","curDateMinute","currentDateSeconds","singlePrint","singlePrintLoading","listPrintLoading","setWebSupplierList","fetchWebSupplierList","ModalContent","closeOnOk","$props","EmptyComp","comp2modal","_Comp","element","unmountComponentAtNode","remove","Comp","modalConfig","afterClose","compProps","setPayWay","fetchList","getPayWayList","useConditionLevel","LevelOne","LevelTwo","LevelThree","LevelFour","LevelFive","LevelFivePonitFive","APP_CONTENT_ID","Loading","Loadable","loader","InputDemo","Dashboard","GoodsReceipted","OldPhonePhoto","OldPhonePhotoDetail","GoodsReceiptedDetail","OutBranchBookingAccount","OutBranchBookingSecondHandList","Error500","UserManageMaintenance","userManageLoginLog","ConfigurationGuarantee","ConfigurationCommodityDiscount","ConfigurationCommodityDiscountReason","ConfigurationSubscribe","ConfigurationPrintTemplate","ConfigurationExcelTemplate","JipinManage","YanzhengmaManage","ConfigurationPayWay","ConfigurationStagesWay","ConfigurationRepairState","ConfigurationNotice","ConfigurationBookingNotice","ConfigurationBookingVipNotice","ConfigurationRetailSales","ConfigurationWeight","ConfigurationSupplier","ConfigurationRegularCustomer","ConfigurationBackConfig","ConfigurationCheckTimeout","ConfigurationPoster","ConfigurationPhoneModel","MaintenanceReceiveSending","MaintenanceGuestBusiness","StayPhoneEfficiencyStatistics","MaintenanceToOriginal","MaintenanceStoreBusiness","MaintenanceScrapApproval","SignPage","SimSignPage","PhotoPage","PrintMobile","NewPDFPrint","NewPDFPrintV2","Print","SparePartList","SparePartCheck","SparePartAbnormal","SecondHandNewList","SecondHandNewCheck","SecondHandToReviewNewCheck","SecondHandAbnormal","SecondHandStartTransfer","SecondHandTransferExamine","SecondHandTransferAbnormal","SecondHandReserveSet","SecondHandAppointment","SalesBillingSiteRepair","SalesBillingStay","SalesBillingRecieving","SalesBillingNewSale","SalesBillingSecondHandSale","SalesBillingEnvelope","SalesBillingSaleBills","SalesBillingSim","SalesBillingScheduleBills","SalesBillingRefund","SalesBillingOldBilling","MpSetPrice","MpSetModelRam","MpSetModel","MpSetSecondHandUpc","MpSetUpc","MpSetSecondHandPrice","MpSetSecondHandHuiShouPrice","MpSetSecondHandConfig","NewSaleNewList","NewSaleOutbound","NewSaleNewSale","NewSaleNewSchedule","NewSaleScheduleRegister","NewSaleNewCheck","NewSaleAbnormal","NewSaleStartTransfer","NewSaleTransferExamine","NewSaleTransferAbnormal","NewSaleNewPhoneTransferAbnormal","NewSaleReserveSet","PurchaseCheckGoodsImport","PurchaseCheckGoodsCheck","PurchaseCheckDeliveryCheck","PurchaseCheckReceiveCheck","PurchaseCheckReceiveRegister","PurchaseCheckPackingRegister","PurchaseCheckEfficiencyStatistics","QServiceAgreement","QServiceNewList","QServiceCheck","QServiceDistribution","QServiceReceive","QServiceItem","QServicePackage","TianQServiceAgreement","TianQServiceNewList","TianQServiceCheck","TianQServiceDistribution","TianQServiceReceive","ThreeQServiceNewList","ThreeQServiceCheck","ThreeQServiceDistribution","ThreeQServiceReceive","TianQServiceImport","ThreeQServiceImport","QServiceImport","TianQServiceItem","TianQServicePackage","RServiceNewList","RServiceCheck","RServiceDistribution","RServiceReceive","SimServiceReceive","AdminRouterData","exact","path","component","UserManageAuthorityModal","checkedKeys","setCheckedKeys","menuPermission","fetchRoleInfo","roleCode","menuIdList","String","checkable","selectable","onCheck","checkedKeysValue","ENTRANCE_ROOT","urlJoin","getAppRootPath","appName","AppDisplayWrapper","QrcodeWrapper","Qrcode","AppDisplay","$id","nanoid","latestVersion","setLatestVersion","currentVersion","setCurrentVersion","appRoot","axios","get","now","targetVersionList","rsort","versionList","ext","forEach","getVersionList","latest","useAppVersions","removeOriginCanvas","useCallback","wrapper","canvasList","querySelectorAll","prototype","call","canvas","currentInfo","find","QRCode","toCanvas","errorCorrectionLevel","scal","dark","rendererOpts","quality","append","tip","column","labelStyle","lineHeight","options","DownloadOutlined","currentItem","AppDownloadEntrance","CloudDownloadOutlined","modal","ERR_CALL_BACK","isInit","SUCCESS_CODE","BACK_LOGIN_CODE","NET_ERROR_MSG","EXPECT_CODE_LIST","RequestTimeStampSet","request","Axios","create","ajaxInit","errCallBack","expectCodeList","enablePushState","antiImpact","interceptors","use","config","timeStamp","getTime","ApiAntiImpact","method","antiImpactVar","err","warn","handleAjaxSuccessful","rtn","errResponse","resultMsg","expectAxioCode","outRes","post","fd","FormData","keys","languageLetter","createContext","importStatus","DONE","changeLocale","changeImportStatus","handlegetCurrentAxis","currentAxis","displayName","phoneReserveId","configCode","configType","bookingAddQuickly","bookingBatchAddQuickly","updateByTypeAndCode","editPayWay","checkPay","unpay","checkBalance","sortFirst","sortLast","editBooking","refundBooking","getInfoByUpc","commitDistribution","commitPrint","cancelCommitDistribution","andorcancel","getBookingTransferList","getPrintInfo","handleDeleteNewSaleTransferAbnormal","tokenKey","Cookies","set","removeToken","font12","fontSize","font14","font16","font20","font26","fontRegular","fontMedium","fontSemiBold","gap4","gap8","gap10","gap16","gap20","gap24","colors","fonts","gaps","HeaderWrapper","ChangePasswordModal","handleChangePwd","handleLogOut","login","requirePassword","ChangeInfoModal","reload","ChangeGroupModal","Header","isMove","tableArr","PageHeader","currentAxisTimeRef","baohuoVisible","setBaohuoVisible","groupVisible","setGroupVisible","infoVisible","setInfoVisible","timeMsg","setTimeMsg","importInfo","setImportInfo","otherForm","elseTimeRef","importTimeRef","navbar","fiveM","thirtyM","oneHour","never","goPre","logOut","refresh","editSuccessfully","changeInfo","last","RefreshTimeTypeMap","FIVE","THIRTY","HOUR","NEVER","setUserAgent","timeConfig","zhCN","onmousemove","fetchImportInfo","fetchImportInfoInterval","countdown","handleChangeLanguage","handleChangeUserAgent","handleChangeRefresh","maxtime","minutes","seconds","userAgentMenu","languageMenu","handleGoERP","handleGoPre","FITTINGS","AxisTypeMap","xiapi","OwnPick","Play","Pick","Pack","MakeOut","Rest","renderContent","reverse","axisTime","placement","onVisibleChange","nextAxisTime","trigger","percent","realDealCount","totalCount","paddingRight","overlay","overlayClassName","CaretDownOutlined","packageUserName","packageTable","routerMenu","goodsPriceLabelPrint","goodsReceipted","oldPhonePhoto","goodsReceiptedDetail","userManageAccount","outBranchBooking","outBranchBookingAccount","outBranchBookingSecondHandList","userManageAuthority","userManagePersonnel","userManageMaintenance","userManageMenu","userManageAccess","userManageCustom","mpSetPrice","mpSetModelRam","mpSetModel","mpSetSecondHandUpc","mpSetUpc","mpSetSecondHandPrice","mpSetSecondHandConfig","mpSetSecondHandHuiShouPrice","configuration","configurationGuarantee","configurationCommodityDiscount","configurationCommodityDiscountReason","configurationSubscribe","configurationPrintTemplate","configurationExcelTemplate","jipinManage","yanzhengmaManage","configurationBackConfig","configurationPayWay","configurationStagesWay","configurationRepairState","configurationNotice","configurationBookingNotice","configurationBookingVipNotice","configurationRetailSales","configurationWeight","configurationSupplier","configurationRegularCustomer","configurationCheckTimeout","configurationPoster","configurationPhoneModel","purchaseCheck","purchaseCheckGoodsImport","purchaseCheckGoodsCheck","purchaseCheckGoodsCheckHistory","purchaseCheckDeliveryCheck","purchaseCheckReceiveCheck","purchaseCheckReceiveRegister","purchaseCheckPackingRegister","purchaseCheckEfficiencyStatistics","procurementManage","procurementManageApplyGoods","newSale","newSaleNewList","newSaleOutbound","newSaleNewSale","newSaleNewSchedule","newSaleScheduleRegister","newSaleNewCheck","newSaleAbnormal","newSaleStartTransfer","newSaleTransferExamine","newSaleTransferAbnormal","newSaleNewPhoneTransferAbnormal","newSaleReserveSet","secondHandNewList","secondHandConfigAppointment","secondHandNewCheck","secondHandToReviewNewCheck","secondHandAbnormal","secondHandStartTransfer","secondHandTransferExamine","secondHandTransferAbnormal","secondHandReserveSet","salesBilling","salesBillingSiteRepair","salesBillingStay","salesBillingRecieving","salesBillingNewSale","salesBillingSecondHandSale","salesBillingEnvelope","salesBillingSaleBills","salesBillingScheduleBills","salesBillingRefund","salesBillingSim","salesBillingOldBilling","mobile","signPage","print","printMobile","maintenanceReceiveSending","maintenance","maintenanceGuestBusiness","stayPhoneEfficiencyStatistics","maintenanceToOriginal","maintenanceStoreBusiness","maintenanceScrapApproval","sparePart","sparePartList","sparePartCheck","sparePartAbnormal","operatingDataSearch","newPhoneInventoryRecord","statisticalReport","newPhoneStatisticalReport","profitStatisticalReport","secondPhoneStatisticalReport","qService","qServiceNewList","qServiceCheck","qServiceDistribution","qServiceReceive","qServiceItem","qServicePackage","qServiceAgreement","tianqService","tianqServiceNewList","tianqServiceCheck","tianqServiceDistribution","tianqServiceReceive","tianqServiceItem","tianqServicePackage","tianqServiceAgreement","rService","rServiceNewList","rServiceCheck","rServiceDistribution","rServiceReceive","simService","simServiceDistribution","simServiceNewList","simServiceReceive","simServiceCheck","simServicePackage","threeqService","threeqServiceNewList","threeqServiceCheck","threeqServiceDistribution","threeqServiceReceive","tianqServiceImport","threeqServiceImport","qServiceImport","modelSearch","menuIcon","dashboard","DashboardOutlined","SyncOutlined","TeamOutlined","RocketOutlined","ContactsOutlined","MobileOutlined","AppstoreAddOutlined","PayCircleOutlined","RobotOutlined","BugOutlined","FileSearchOutlined","PieChartOutlined","ControlOutlined","SettingOutlined","TransactionOutlined","TrademarkCircleOutlined","StrikethroughOutlined","newRouterMenu","SubMenu","Menu","Sider","NavSidebar","collapsed","menuDataSource","setMenuDataSource","rootSubmenuKeys","setRootSubmenuKeys","dealMenuDataSource","setDealMenuDataSource","openKeys","setOpenKeys","fetchMenu","curRes","handleDealMenu","b","handleItemClick","nextKey","collapsible","defaultOpenKeys","onOpenChange","latestOpenKey","curKey","MainLayout","routes","setCollapsed","React","MenuUnfoldOutlined","MenuFoldOutlined","LANGUAGE_LETTER","configurationQserviceItem","configurationQservicePackage","procurementManageApplyGoodsCostCoefficient","secondHandSchedule","signTile","signTips","signTips1","signTips2","signTips3","signTips4","signTips5","signTips6","signTips7","logIn","username","requireUsername","components","changeLanguageTips","back","message401_1","message401_2","message404_1","message404_2","export","changePwdSuc","cancel","save","yes","no","have","none","submit","rewrite","tempSave","empty","chosen","adopt","sureCancel","surePass","uploadPdf","uploadImgFirst","sureConfirm","tips1","tips2","configName","ifOpen","accountValidate","phoneValidate","pwdLengthValidate","pwdValidate","roleValidate","interface","interfaceName","interfaceHref","permissionName","sortValidate","brand","chooseType","modelName","capacity","nowPrice","newPrice","priceChange","upc","IMEI","sn_code","recentUpdate","noCapacity","ifOpenSaleNew","ifOpenSaleOld","upcRules","percentOne","percentTwo","percentThree","percentFour","percentFive","percentFivePointFive","choosePhoneType","chooseModal","chooseVersion","warrantyName","warrantyDays","printNote","payName","stagesName","bcode","address","newMobile","oldMobile","dismantle","orderRepair","orderTransfer","xcwx","rlsj","lj","sj","mj","bm","esmj","statusName","posterCategory","posterContext","rate","onGoing","completed","deliveryStore","receiveStore","createDate","totalNum","toAmountWarehouse","toAmountStore","remarks","corresponding","goodsNo","goodsName","goodsStyle","goodsSize","deliveryNum","wantNum","getNum","difference","specsRemark","recentImportTime","checking","checked","booked","canceled","bookStatus","number","store","newStatistics","addPreSale","sale","reserveStatus","supplier","createTime","inventoryTime","imei","sn","upcImei","inventoryUser","inventoryStatus","scan","saleDown","saleIng","waitExam","auditPass","auditFail","startTransfer","transferStatus","skuInfo","examineOperate","deliveryOperate","receiveOperate","machineAssign","reserveStatistics","reserveName","reserveDate","pickUpStore","telephone","deposit","balance","houseNumber","shellMembrane","insurance","availableNum","reserveNum","startDate","startUser","handleUserGroup","handleUser","handleDate","outCanSale","outSafe","inCanSale","inSafe","transferProposal","transferApply","distribution","editNote","allowTransfer","cancelTransfer","expectedDate","arriveDate","affirmReservePrice","serviceCommission","distributed","distributing","cancelReserve","overSoldNum","frozenNum","frozenTime","addTime","sureAddTime","unFrozen","transferNum","overSold","overSolded","toOverSolded","noOverSolded","oversoldtolock","transferNo","auditTime","auditName","transferNum1","realTransferNum","receiveNum","receiveTime","receiveName","originalNum","realityNum","canNotExceed","reDraw","notZero","basicInformation","transferConfirmation","sendConfirmation","done","randomNum","secondHandStatistics","minReserves","nowReserves","transferUser","transferDate","transferOut","transferIn","machineType","spotGoods","reserved","saled","waitTransfer","onOrder","frozen","choosePrint","labelPrinting","printing","dateTime","abnormalCondition","fixGroup","fixUser","QNo","recommendNo","imeiNo","oldNewDegree","haveBoxed","haveParts","batteryDegree","skuDesc","customerOrder","customerTel","customerName","backDesc","backUrl","frontDesc","frontUrl","isShellBend","isShellDamaged","isShellWater","isTellInfo","conditionLevel","levelFivePonitFive","partsList","customerSurname","byDate","endDate","sign","noSign","signed","partsNum","repairStatus","repairStat","repairSubStatus","abnormal","deliveryStatus","delivering","delivered","orderTakingGroup","orderTakingUser","openStatus","processing","processed","toBeTested","quotedPrice","waitingMaterial","repairing","toBeTaken","fixDate","replaceBoardNo","repairPrice","storeContactTime","deliveryDate","repairRemark","testReport","recievingGroup","recievingUser","new","disposal","arrange","spare","headquarters","backDepartment","secondLevelGroup","secondLevelUser","boxPacked","numberFit","unLocked","machineStatus","billNo","buyInsurance","noInsurance","insure","oneYear","secondYear","ac","insureLevel","handlingGroup","handlingUser","scheduleDate","scheduleOrderNo","registerGroup","registerUser","formDate","male","female","amount","operateGroup","operateUser","payee","idCard","permanentAdd","nextStep","prevStep","diagnosticItems","good","screenDisplayTouch","LCDcoating","LOGOlamp","camera","mic","keybacklight","clickpanel","chargingjack","USBport","headphonejack","otherjacks","wifibt","speaker","vibrator","battery","volumeKeys","frontLensModule","wifiBluetooth","backShot","geolocation","tailRowModule","rearLensGlassCover","bootModule","gyroSensor","homeKey","mainboardCapacity","receiver","mainboardLeakage","horn","signal","appearance","front","onNew","onSecondHand","toRepair","birthday","customer","customerAddress","gender","logisticsStatus","printRemark","storeRemark","priceTake","priceFinal","firstConnectName","firstConnectTime","secondConnectName","secondConnectTime","thirdConnectName","thirdConnectTime","expectBranches","deliverPrimary","consumeMaterial","consumeMaterialPrice","maintenanceContent","toBeDelivered","toBeReceived","received","oppositeStore","pickUpProblem","lastProcessingTime","sendTime","signingTime","passedTime","handler","currentState","totalDuration","handleStore","handleRecord","sendOut","confirmReceive","scanSend","scanReceive","recall","todo","handled","handle","handleWay","hasPaid","paidPrice","orderDismantleTypeList","mainboard","screen","cameraLens","other","noUse","used","dismantleCode","lastCheckTime","lastCheckPerson","checkStatus","check","root001","root002","purchaseCheckGoodsDeliver","purchaseCheckGoodsPlace","purchaseCheckInventoryChangesSearch","purchaseCheckMallbicList","purchaseCheckMallbicListSetting","memberManage","memberManageList","shopManageCardList","logisticsUserManageAccount","procurementManageSalePriceCoefficient","shopManage","en","SecurityLayout","setLocale","setImportStatus","setUserInfo","setLanguageLetter","isFetchingUserInfo","setIsFetchingUserInfo","routeChildren","setRouteChildren","setCurrentAxis","needChangePassword","permissionKeyList","isNeedAddRedirectRoute","pre","next","permissionKey","to","getRouteNodes","Provider","localeValue","getUnimportantInfoByAccount","checkAccountAndPhone","sendVerificationCode","getToResendVerificationCodeTime","unlockAccount","retrievePassword","Paragraph","Typography","Text","Info","forwardRef","ref","$onNext","onNext","$info","$response","hideModal","handleOk","useImperativeHandle","show","okButtonProps","cancelButtonProps","strong","selfServiceSendMessagesRemainingTimes","Sms","$timer","remainTime","setRemainTime","setInfo","clearTick","createTick","hasRemain","isNumber","isNaN","checkRemainLoading","checkRemain","smsLoading","sendSms","formData","validating","validateCode","isNil","Unlock","unlockLoading","handleUnlock","ResetPass","submitLoading","handleSubmit","pass","OperateChoose","handleNext","showIcon","ForgotPass","$sms","$operate","$unlock","$resetPass","queryMap","handleComplete","callbackUrl","callback","goBack","storeCreator","useStoreContext","storeInstance","STORE_CONTEXT","AppLogical","useAppContext","useInit","H5_ROUTE_NAME","H5_ROUTE_BASE","PageContainer","PageCard","Container","SwiperContainer","Swiper","SwiperImage","PaginationContainer","useInitStore","Carousel","useDataContext","state","carousels","carouseList","currentIndex","onSlideChange","swiper","realIndex","onSwiper","backgroundImage","memo","Title","h1","InfoContainer","PriceText","OriginText","HeartIcon","Tag","MetaData","discount","maxOut","originPrice","hasCollect","setData","handleToggleCollect","dataContextInstance","onTouchEnd","SkuInfoRow","SkuInfoItem","SkuInfoTitle","SkuInfoText","RemainCount","GuaranteeContainer","GuaranteeIcon","GuaranteeText","SkuInfo","sku","infos","row","rowIndex","maxItemWidth","classnames","itemIndex","remainCount","customerRight","FreightRow","FreightInfo","freightInfo","RichTextContainer","RichTextDisplay","isString","GoodsDetail","goodsDetail","HeaderContainer","HeaderTitle","HeaderLink","linkText","onLinkClick","AttentionInfo","attentionDetail","CardContainer","CardImage","CardContent","CardContentTitleArea","CardGoodsName","CardGoodsDesc","CardContentSubInfo","GoodsCard","onCollect","$dataSource","$onClick","isEmpty","pic","preventDefault","stopPropagation","isCollect","SimilarGoods","similarGoods","freeMode","spaceBetween","slidesPerView","Input","input","Button","ListContainer","ListItem","ListTop","ListUserName","ListTime","ListContent","Comments","comments","comment","user","ITEM_SYMBOL","Symbol","EVENT_CHANNEL","EVENT_CHANNEL2CHILD","emitter","EventEmitter","TabContainer","TabItem","TAB_HEIGHT","EmptyAnchor","ScrollTabItem","tabName","$containerSelector","$anchor","$hasSetContainerSelector","$isHolding","$handlerEl","scrollHandler","throttle","documentElement","getBoundingClientRect","offsetTop","currentIsActive","scrollTop","emit","payload","registerScrollHandler","unRegisterScrollHandler","removeEventListener","handleEmit","bodyEl","querySelector","parentEl","$","animate","on","off","__scrollType","Tab","containerSelector","onTabChange","scrollHeight","$scrollHeight","isActive","setIsActive","activeTab","setActiveTab","$isActive","$activeTab","$onTabChange","handleParentScroll","nextState","ScrollTab","tabs","setTabs","$tabs","$activeCache","$tab","handleItemActive","handleSetTab","lastActiveId","tabIds","tabId","prev","useLayoutEffect","Logical","setDataObject","getDemoData","useDemo","Detail","initialStore","meta","pickInfo","deliverInfo","attention","detection","warranty","liberal","summary","detector","materials","appearanceInfo","pics","functionalCheck","NavContainer","NavItem","SwiperCore","Autoplay","usePageData","$swiper","$clickRef","$scrollContainer","dataLen","$currentIndex","$dataLen","handleScroll","left","offsetLeft","scrollLeft","useNavScroll","loop","autoplay","delay","disableOnInteraction","slideToLoop","GoodsTitle","SkuContainer","MainInfo","Price","MetaInfo","setCount","$count","$remainCount","$onTopChange","onTopChange","$container","handleCalculateHeight","CardItemContainer","CardItem","InfoBlock","InfoValue","InfoTitle","GuardTitle","GuardDetectorCard","SummaryInfo","HeaderSubTitle","Body","Accordion","contentStyle","headerStyle","subTitle","isDefaultOpen","setOpen","$open","$content","doAnimate","stop","toggleOpen","DownCircleFilled","LineRow","LineText","Line","LineValue","COLOR_MAP","blue","LineList","ICON_MAP","CheckCircleFilled","WarningFilled","danger","CloseCircleFilled","FunctionalList","PicInfoCard","Icon","ContentTop","MainText","ContentBottom","GuaranteeBanner","GuaranteeList","PLAT_GUARANTEE","Guarantee","CardHeader","CardFooter","Card","paddingTop","DetectionReport","paddingBottom","DeliverWay","customUrlParser","valueParts","toUpperCase","pop","jsonToString","spacer","toJson","secretKey","crypto","json","AES","COMMON_STORAGE_KEY","obj","decrypt","ENC","deCrypto","originObj","encodeStr","requester","showToast","urlInfo","$url","requestConfig","Accept","Toast","API","combinedAPI","cloneDeep","apiJoinHelper","apiObj","preFixes","oldPhone","topHeight","setTopHeight","conditionLevelList","getPageData","levelOneName","levelTwoName","levelThreeName","levelFourName","levelFiveName","nameArr","appearanceArr","levelConditionStr","condition","concat","$pageDataStore","projectDiagnoseVOList","wellFlag","abnormalReason","useData","SecondHandDetail","AppRoutes","Fragment","H5Index","createBrowserHistory","LayoutRoute","GlobalStyle","createGlobalStyle","App","initErr","duration","ownProps","resArray","getCLodop","SET_LICENSES","pathParts","initWav","sounds","fieldName","sound","Pizzicato","soundCreator","errorSound","notExistSound","repeatSound","overSound","completeSound","startSound","antd","source","lineno","colno","Theme","reportWebVitals","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","ReviewStatus","RefundPayWay","OperatorType","FilterFlexWrapper","FilterLargeItem","FilterLargePlusItem","labelCol","wrapperCol","SelectedWrapper"],"mappings":"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","file":"static/js/main.1999befa.chunk.js","sourcesContent":["export interface AllProductItemParams {\n productCode?: string;\n productName?: string;\n productNumber?: string;\n}\n\nexport interface AllProductItem {\n id: number;\n salePrice: any;\n productCode: string;\n productNumber: string;\n productName: string;\n productSize: string;\n productStyle: string;\n salePrice: string;\n specsRemark: string;\n supplier: string;\n remark: string;\n sendNum?: number;\n toNumWarehouse?: number;\n toNumStore?: number;\n partSn: string;\n costPrice: any;\n}\n\nexport enum WarehouseStatus {\n DOING,\n DONE,\n}\nexport enum StoreStatus {\n DOING,\n DONE,\n}\n\nexport interface PartnoParams {\n gmtCreate?: string;\n sendBranches?: number;\n toBranches?: number;\n warehouseStatus?: WarehouseStatus;\n storeStatus?: StoreStatus;\n}\n\nexport interface PartnoItem {\n id: number;\n partNo: string;\n sendBranchesName: string;\n toBranchesName: string;\n sendAmount: number;\n toAmountWarehouse: number;\n toAmountStore: number;\n gmtCreate: string;\n remark: string;\n sendBranches: number;\n toBranches: number;\n webPartSnVOList?: webPartSnVOItem[];\n}\n\nexport interface webPartSnVOItem {\n id: number;\n productNumber: string;\n productName: string;\n productStyle: string;\n productSize: string;\n partSn: string;\n productCode: string;\n sendNum: number;\n toNumWarehouse: number;\n toNumStore: number;\n}\n\nexport interface AddOrEditPartnoParmas {\n id?: number;\n remark: string;\n sendBranches: number;\n toBranches: number;\n warehouseStatus?: WarehouseStatus;\n webPartSnAddVOList?: WebPartSnAddItem[];\n webPartSnVOList?: WebPartSnAddItem[];\n webPartSnEditVOList?: WebPartSnAddItem[];\n}\n\nexport interface WebPartSnAddItem {\n partSn: stirng;\n productCode: stirng;\n productName: stirng;\n productNumber: stirng;\n productSize: stirng;\n productStyle: stirng;\n remark: stirng;\n sendNum: number;\n toNumWarehouse: number;\n}\n\nexport interface ProductInfo {\n productCode: string;\n id: number;\n}\n\nexport enum GetPickStatus {\n TODO, // 待开始\n DOING, // 拣货中\n DONE, // 完成\n COMPULSION = 4, // 强制完成\n}\nexport interface GetPickListParams {\n pickEndTime?: string;\n pickStartTime?: string;\n pickNo?: string;\n pickUserName?: string;\n tradeNo?: string;\n status?: GetPickStatus;\n}\n\nexport interface PartPickUser {\n pickUserName: string;\n partPickUserId: number;\n userBatchId: number;\n id: number;\n}\n\nexport interface PartPickItem {\n id: number;\n tradeNo: string;\n productCode: string;\n productNumber: string;\n productName: string;\n productStyle: string;\n buyerNum: number;\n checkBuyerNum: number;\n doubleCheckBuyerNum: number;\n productStorage: string;\n}\n\nexport interface PickListItem {\n id: number;\n pickNo: string;\n gmtCreate: string;\n pickEndTime: string;\n pickStartTime: string;\n pickMin: string;\n partNum: number;\n partSkuNum: number;\n status: GetPickStatus;\n remark: string;\n userVOList: PartPickUser[];\n detailVOList: PartPickItem[];\n useTime?: string;\n pickTradeNum: number;\n checkPartNum: number;\n checkPartSkuNum: number;\n checkTradeNum: number;\n}\n\nexport interface StartPickParams {\n id: number;\n pickUserNameList: string[];\n pickUserIdList: number[];\n}\n\nexport interface ChangePickerParams {\n id: number;\n userDetailList: { partPickUserId: string; pickUserName: number }[];\n}\n\nexport enum PickOrPackage {\n PICK,\n PACK,\n}\nexport interface EfficiencyStatisticsListParams {\n endTime: string;\n orderType: number;\n pickOrPackage?: PickOrPackage;\n axisType?: AxisType;\n userName: string;\n startTime: string;\n}\n\nexport interface StartBtachPickParams {\n packageUserName: string;\n packageTable: string;\n}\n\nexport interface EfficiencyStatisticsListItem {\n userName: string;\n pickMin: string;\n pickSkuNum: number;\n avgPickSkuNum: number;\n pickTradeNum: number;\n avgPickTradeNum: number;\n pickNum: number;\n avgPickNum: number;\n}\n\nexport interface StartBtachPickInfo {\n id: number;\n packageEndTime: string;\n packageNum: number;\n packageStartTime: string;\n packageUserName: string;\n remark: string;\n}\n\nexport enum PackPackageStatus {\n TODO,\n DONE,\n}\n\nexport interface GetPackListParams {\n packageEndTime?: string | undefined;\n packageStartTime?: string | undefined;\n pickEndTime: string;\n pickStartTime: string;\n tradeNo: string;\n packageUserName: string;\n packageStatus: PackPackageStatus;\n tabStatus: PackPackageStatus | string;\n}\n\nexport interface PackListItem {\n id: number;\n pickEndTime: string;\n tradeNo: string;\n pickSkuNum: number;\n pickNum: number;\n packageUserName: string;\n packageEndTime: string;\n detailVOList: PartPickItem[];\n}\n\nexport enum TradeVOListItemStatus {\n TODO,\n PICKING,\n DONE,\n STAGING,\n COMPULSION,\n}\nexport interface TradeVOListItem {\n id: number;\n tradeNo: string;\n pickNum: number;\n pickSkuNum: number;\n pickStartTime: string;\n remark: string;\n pickStartTime: string;\n detailVOList: PartPickItem[];\n status: TradeVOListItemStatus;\n}\nexport interface PickInfo {\n id: number;\n tradeVOList: TradeVOListItem[];\n}\n\nexport enum OperateType {\n DONE = 2, // 自动完成\n STAGING = 3, // 暂存\n CANCEL = 4, // 取消\n COMPULSION = 5, // 强制完成\n}\nexport interface CompletePickParams {\n id: number;\n operateType: OperateType;\n checkDetailList: CheckDetailItem[];\n}\n\nexport interface CheckDetailItem {\n id: number;\n checkBuyerNum: number;\n}\n// BRANCH_PICK(0,\"本门市拣货-新增\"),\n// LOGIN_PICK(1,\"登陆强制开始拣货-后续要删掉归类为虾皮拣货\"),\n// PRINT(2,\"打单\"),\n// PICK(3,\"虾皮拣货-老的拣货\"),\n// PACKAGE(4,\"包货\"),\n// SHIP(5,\"出货-寄货-理货\"),\n\nexport enum AxisType {\n xiapi = 3,\n OwnPick = 1,\n Play = 2,\n Pick = 0,\n Pack = 4,\n MakeOut = 5,\n Rest = 6,\n}\n\nexport interface CurrentAxisItem {\n id: number;\n axisType: AxisType;\n axisCostMin: string;\n axisTime: string;\n remark: string;\n userId: number;\n userName: string;\n axisNo: number;\n nextAxisTime: string;\n packageTable: string;\n}\n","import styled from 'styled-components';\n\nexport const PageWrapper = styled.div`\n width: 100%;\n height: 100%;\n display: flex;\n background: #150754 url(${process.env.PUBLIC_URL + '/login-bg.jpg'}) no-repeat center/cover;\n @media screen and (max-width: 1280px) {\n background-image: url(${process.env.PUBLIC_URL + '/small-login-bg.jpg'});\n }\n`;\n\nexport const ImgContainer = styled.div`\n @media screen and (max-width: 1280px) {\n display: none;\n }\n display: flex;\n flex: 1;\n justify-content: center;\n align-items: center;\n & > img {\n width: 22vw;\n min-width: 280px;\n margin-bottom: 2vw;\n margin-left: 2vw;\n }\n`;\n\nexport const LoginWrapper = styled.div`\n display: flex;\n flex: 1;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 0;\n position: relative;\n\n .footer {\n position: absolute;\n bottom: 40px;\n left: 50%;\n justify-self: end;\n color: #b2a9c3;\n text-align: center;\n transform: translateX(-50%);\n }\n\n #validate-code {\n position: absolute !important;\n top: -10px;\n\n .yp-riddler-slider-area {\n height: 40px !important;\n color: rgb(178, 169, 195);\n line-height: 40px !important;\n background-color: rgb(63, 42, 107);\n border: none;\n }\n\n .yp-riddler-slider-tip-default {\n font-size: 15px !important;\n }\n\n .yp-riddler-slider-btn-sign {\n color: rgb(21, 7, 84) !important;\n }\n }\n`;\n\nexport const LoginFormContainer = styled.div<{ account?: boolean; password?: boolean }>`\n .logo-img {\n width: 275px;\n }\n\n .form {\n width: 400px;\n }\n\n .login-btn {\n color: #fff;\n background-color: #1890ff;\n border: none;\n }\n\n /* 有值和输入状态 */\n\n .ant-input:focus {\n color: #333;\n background-color: #fff;\n }\n\n .ant-form-item-label > label {\n color: rgb(255, 255, 255);\n }\n\n .account-input {\n color: ${props => (props.account ? '#333' : '#B2A9C3')};\n background-color: #fff;\n border: none;\n }\n\n .password-input {\n color: ${props => (props.password ? '#333' : '#B2A9C3')};\n background-color: #fff;\n border: none;\n\n .ant-input {\n color: ${props => (props.password ? '#333' : '#B2A9C3')};\n background-color: #fff;\n border: none;\n\n &:focus {\n box-shadow: none;\n }\n }\n }\n\n /* antd */\n\n .ant-legacy-form-item-label {\n & > label {\n color: #fff;\n }\n }\n\n .has-error .ant-legacy-form-explain {\n color: #b2a9c3;\n }\n\n .ant-legacy-form-explain {\n margin: 0;\n line-height: 32px;\n }\n`;\n\nexport const CaptchaGroupWrapper = styled.div`\n display: flex;\n`;\n\nexport const FormTitle = styled.div`\n width: 400px;\n display: flex;\n justify-content: center;\n font-size: 40px;\n color: #fff;\n`;\n","import { generate, green, gold, red } from '@ant-design/colors';\n\nconst byPrimary = '#2f82f8';\nexport const byBlues = generate(byPrimary);\n\n// 中性色板\nexport const grey1 = '#ffffff';\nexport const grey2 = '#fafafa';\nexport const grey3 = '#f5f5f5';\nexport const grey4 = '#e8e8e8';\nexport const grey5 = '#d9d9d9';\nexport const grey6 = '#bfbfbf';\nexport const grey7 = '#8c8c8c';\nexport const grey8 = '#595959';\nexport const grey9 = '#262626';\nexport const grey10 = '#000000';\n\nexport const white = grey1;\n\n// 功能色\nexport const link = byPrimary;\nexport const success = green.primary;\nexport const warning = gold.primary;\nexport const error = red.primary;\n\n// 中性字体边框颜色\nexport const title = 'rgba(0, 0, 0, 0.85)';\nexport const primaryText = 'rgba(0, 0, 0, 0.65)';\nexport const secondaryText = 'rgba(0, 0, 0, 0.45)';\nexport const disable = 'rgba(0, 0, 0, 0.25)';\nexport const border = grey5;\nexport const dividers = grey4;\nexport const background = '#F9F9FB';\n\nexport const titleInDark = grey1;\nexport const primaryTextInDark = 'rgba(255, 255, 255, 0.85)';\nexport const secondaryTextInDark = 'rgba(255, 255, 255, 0.65)';\nexport const disableInDark = 'rgba(255, 255, 255, 0.45)';\n\nexport const borderInDark = 'rgba(255, 255, 255, 0.25)';\nexport const dividersInDark = 'rgba(255, 255, 255, 0.15)';\nexport const backgroundInDark = 'rgba(255, 255, 255, 0.09)';\n\n/** 深色分隔线,仅在菜单中使用 */\nexport const dividersDark = '#E8E8EC';\n\n/** 主体升级色,仅在菜单和导航中使用 */\nexport const upgradePrimary = '#264EEE';\n/** 主题色 */\nexport const primary = byPrimary;\n/** Hover色 */\nexport const primaryHover = byBlues[4];\n/** 激活、点击色 */\nexport const primaryActive = byBlues[6];\n","export const STORAGE_KEYS = {\n Q3_EXPAND: 'q3_expand',\n};\n\nconst PREFIX = 'q3c:';\n\nfunction setItem(key: string, value: string) {\n try {\n localStorage.setItem(PREFIX + key, value);\n } catch (e) {\n /** 超出5Mb存储,异常case */\n if (e.name === 'QUOTA_EXCEEDED_ERR' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') {\n clear();\n }\n }\n}\n\nfunction getItem(key: string) {\n return localStorage.getItem(PREFIX + key);\n}\n\nfunction removeItem(key: string) {\n localStorage.removeItem(PREFIX + key);\n}\n\nfunction hasItem(key: string) {\n return localStorage.getItem(PREFIX + key) !== null;\n}\n\nfunction clear(all: boolean = false) {\n if (all) {\n localStorage.clear();\n } else {\n for (let i = 0; i < localStorage.length; i += 1) {\n const key: string = localStorage.key(i) as string;\n if (/^q3:/.test(key) && !Object.values(STORAGE_KEYS).includes(key)) {\n localStorage.removeItem(key);\n }\n }\n }\n}\n\nexport const storage = {\n clear,\n hasItem,\n getItem,\n removeItem,\n setItem,\n};\n","import { ajaxForm, ajaxPost } from '@/utils/ajax';\nimport { IPaginationParams, IPaginationRes } from './interface/commom';\nimport {\n AllProductItemParams,\n AllProductItem,\n PartnoParams,\n PartnoItem,\n AddOrEditPartnoParmas,\n ProductInfo,\n GetPickListParams,\n PickListItem,\n StartPickParams,\n EfficiencyStatisticsListParams,\n EfficiencyStatisticsListItem,\n StartBtachPickInfo,\n GetPackListParams,\n PackListItem,\n PickInfo,\n CompletePickParams,\n AxisType,\n CurrentAxisItem,\n StartBtachPickParams,\n ChangePickerParams,\n} from './interface/purchase-check.d';\n\n/** 获取商品库列表 */\nexport const getAllProductList = (params: AllProductItemParams & IPaginationParams) =>\n ajaxPost>('/q3c-api/parts/allproduct/list', params);\n\n/** 获取仓库发货盘点 */\nexport const getPartnoList = (params: PartnoParams & IPaginationParams) =>\n ajaxPost>('/q3c-api/parts/partno/list', params);\n\n/** 获取仓库发货盘点 */\nexport const getPartnoInfo = (id: number) =>\n ajaxPost(`/q3c-api/parts/partno/info?webPartNoId=${id}`, undefined);\n\n/** 删除 */\nexport const deletePartno = (id: number) =>\n ajaxPost(`/q3c-api/parts/partno/delete?webPartNoId=${id}`, undefined);\n\n/** 通过条码获取信息 */\nexport const getProductInfo = (params: ProductInfo) =>\n ajaxPost(`/q3c-api/parts/allproduct/searchbycode/partNoId`, params);\n\nexport const getProductInfo2 = params =>\n ajaxPost(\n `/q3c-api/parts/allproduct/searchbycode?productCode=${params.productCode}`,\n undefined,\n );\n\n/** 添加 */\nexport const addPartno = (params: AddOrEditPartnoParmas) =>\n ajaxPost(`/q3c-api/parts/partno/add`, params);\n\n/** 编辑 */\nexport const editPartno = (params: AddOrEditPartnoParmas) =>\n ajaxPost(`/q3c-api/parts/partno/edit`, params);\n\nexport const uploadExcel = (params: {\n fromBranches: number;\n remarks: string;\n toBranches: number;\n file: FormData;\n}) => ajaxForm(`/q3c-api/parts/partno/import`, params);\n\n/** 获取拣货列表 */\nexport const getPickList = (params: GetPickListParams & IPaginationParams) =>\n ajaxPost>('/q3c-api/part/pick/list', params);\n\n/** 删除 */\nexport const deletePickItem = (id: number) =>\n ajaxPost(`/q3c-api/part/pick/delete?partPickId=${id}`, undefined);\n\n/** 卡單核對 */\nexport const checkPickItem = (id: number) =>\n ajaxPost(`/q3c-api/part/pick/check/block?partPickId=${id}`, undefined);\n\n/** 開始揀貨 */\nexport const startPick = (params: StartPickParams) => ajaxPost(`/q3c-api/part/pick/start`, params);\n\n/** 增减人员 */\nexport const changePicker = (params: ChangePickerParams) =>\n ajaxPost(`/q3c-api/part/pick/change/user`, params);\n\n/** 結束揀貨 */\nexport const endPick = (id: number) =>\n ajaxPost(`/q3c-api/part/pick/end?partPickId=${id}`, undefined);\n\nexport const changeAxisType = (axisType: AxisType) =>\n ajaxPost(`/q3c-api/parts/time/axis/change/axisType?axisType=${axisType}`, undefined);\n\nexport const getCurrentAxis = () =>\n ajaxPost(`/q3c-api/parts/time/axis/getCurrentAxis`, undefined);\n\n/** 获取拣货列表 */\nexport const getEfficiencyStatisticsList = params =>\n ajaxPost>('/q3c-api/part/pick/static/list', params);\n/** 开始包货 */\nexport const startBtachPick = (params: StartBtachPickParams) =>\n ajaxPost(`/q3c-api/part/package/batch/start`, params);\n\n/** 结束包货 */\nexport const endBtachPick = (id: number) =>\n ajaxPost(\n `/q3c-api/part/package/batch/end?partPackageBatchId=${id}`,\n undefined,\n );\n\n/** 获取包货列表 */\nexport const getPackList = (params: GetPackListParams & IPaginationParams) =>\n ajaxPost>('/q3c-api/part/pick/trade/list', params);\n\n/** 扫码详情 */\nexport const scanPickInfo = (tradeNo: string) =>\n ajaxPost(`/q3c-api/part/pick/trade/scan/info?tradeNo=${tradeNo}`, undefined);\n\nexport const pickInfoDetail = (tradeNo: string) =>\n ajaxPost(`/q3c-api/part/pick/trade/info?partPickTradeId=${tradeNo}`, undefined);\n\n/** 掃碼包貨 */\nexport const scanOnOk = (tradeNo: string, partPackageBatchId: number) =>\n ajaxPost(\n `/q3c-api/part/package/batch/scan/trade?tradeNo=${tradeNo}&partPackageBatchId=${partPackageBatchId}`,\n undefined,\n );\n\n/** 拣货核对-详情 */\nexport const getPickInfo = (partPickId: number) =>\n ajaxPost(`/q3c-api/part/pick/check/info?partPickId=${partPickId}`, undefined);\n\nexport const completePick = (params: CompletePickParams) =>\n ajaxPost(`/q3c-api/part/pick/check/complete`, params);\n\n// 缺货\nexport const outOfStock = (id: number) =>\n ajaxPost(`/q3c-api/part/pick/check/delete?partPickDetailId=${id}`, undefined);\n","import { useEffect, useState, useMemo } from 'react';\nimport { useDebounce, usePrevious } from 'react-use';\nimport isEqual from 'lodash/isEqual';\nimport qs from 'query-string';\nimport { useLocation, useHistory } from 'react-router';\nimport { IPaginationParams, IPaginationRes } from '@/service/interface/commom.d';\n\nconst DEFAULT_PAGESIZE = 20;\nconst DEFAULT_QUERY_CHECK = () => true;\nconst DEFAULT_SELECT = false;\nconst FIRST_PAGE = 1;\nconst DEFAULT_QUERY = {};\n\nexport type Key = React.Key;\n\n// 'withPageAndAll':全选的时候选择当前页面或者全部 'withAll':多选支持全选的时候选中全部\nexport declare type Selection = 'withPageAndAll' | 'withAll';\n\nexport interface Pagination {\n total: number;\n pageSize: number;\n current: number;\n onChange: (pageNum: number, pageSize?: number) => void;\n showSizeChanger: boolean;\n showTotal: (total: number) => string;\n}\n\nexport type SelectionItemSelectFn = (currentRowKeys: Key[]) => void;\n\nexport interface SelectionItem {\n key: string;\n text: React.ReactNode;\n onSelect?: SelectionItemSelectFn;\n}\nexport interface TableRowSelection {\n selectedRowKeys?: Key[];\n onChange?: (selectedRowKeys: Key[], selectedRows: R[]) => void;\n selections?: SelectionItem[] | boolean;\n hideDefaultSelections?: boolean;\n}\nexport interface ClearSelectionProps {\n total: number;\n selected: number;\n selectedKeys: number[] | string[];\n setSelectRowState: () => void;\n}\nexport interface TableProps {\n rowKey: string;\n loading: boolean;\n pagination: Pagination;\n dataSource: R[];\n rowSelection: TableRowSelection | undefined;\n [key: string]: any;\n}\n/**\n * service:接口\n * query:查询参数\n * queryCheck?:是否要同步当前 query 变化导致的页面数据刷新(这个是一个自定义的函数,只有满足你的函数需求的时候,也就是函数返回true的时候才会去请求数据,刷新列表)\n * select?:是否需要多选\n * pagination?:是否需要分页\n * pageSize?:是否要指定分页大小\n * tableDataType?:是否要指定固定的返回数据 interface\n */\nexport interface UseTableProps {\n service: (query: IPaginationParams & Q) => Promise>;\n rowKey: string;\n routerSync?: boolean;\n // 正常使用query请确保query是undefined\n query?: Q;\n select?: boolean | Selection;\n defaultPageSize?: number;\n queryChecker?: (query?: Q) => boolean;\n extraSelectProps?: TableRowSelection;\n}\n\nexport interface SelectionStates {\n selectedCount: number;\n selectedRowKeys: Key[];\n}\n\n/**\n * tableProps:使用antd的table的时候需要的数据\n * loadData:手动加载数据\n * wholeResult:接口返回的所有数据\n * setPagination:手动更新分页数据\n * clearSelection:手动清除多选数据\n * setSelectRowState:手动更新多选情况\n */\nexport interface UseTableResult {\n tableProps: TableProps;\n loadData: () => void;\n routeQuery: Q | undefined;\n pagination: Pagination;\n wholeResult: IPaginationRes | null;\n clearSelection: () => void;\n rowSelectionProps: ClearSelectionProps;\n}\n\nconst defaultSelectionStates = {\n selectedCount: 0,\n selectedRowKeys: [],\n};\n\nexport function useTable(\n useTableProps: UseTableProps,\n): UseTableResult {\n const {\n service,\n rowKey,\n routerSync = false,\n query = undefined,\n select = DEFAULT_SELECT,\n defaultPageSize = DEFAULT_PAGESIZE,\n queryChecker = DEFAULT_QUERY_CHECK,\n extraSelectProps = {},\n } = useTableProps;\n\n const { search, pathname } = useLocation();\n const routeQuery = routerSync ? qs.parse(search) : undefined;\n const history = useHistory();\n // 当前第几页\n const [currentPageNum, setCurrentPageNum] = useState(1);\n // 返回的dataSource\n const [list, setList] = useState([]);\n // 总数据\n const [total, setTotal] = useState(0);\n // 分页大小\n const [pageSize, setPageSize] = useState(defaultPageSize);\n // 当前加载中\n const [loading, setLoading] = useState(false);\n // 拿到返回的所有数据,需求是后端会增加固定分页结构的某个值\n const [wholeResult, setWholeResult] = useState | null>(null);\n // 多选的state\n const [selectRowState, setSelectRowState] = useState(defaultSelectionStates);\n\n // 保留之前的query;\n const prevQuery = usePrevious(query);\n const prevRouteQuery = usePrevious(routeQuery);\n\n const { realPageNum, realPageSize } = useMemo(() => {\n const { pageNum: routerPageNum = '1', pageSize: routerPageSize = pageSize } = qs.parse(search);\n return {\n realPageSize: routerSync\n ? parseInt(routerPageSize as string, 10) || DEFAULT_PAGESIZE\n : pageSize,\n realPageNum: routerSync\n ? parseInt(routerPageNum as string, 10) || FIRST_PAGE\n : currentPageNum,\n };\n }, [search, currentPageNum, pageSize, routerSync]);\n\n const page: IPaginationParams = { pageNum: realPageNum, pageSize: realPageSize };\n const serviceParams: IPaginationParams = {\n ...(query || DEFAULT_QUERY),\n ...(routeQuery || DEFAULT_QUERY),\n ...page,\n };\n\n const handlePageNumChange = (pageNum: number, size?: number) => {\n if (routerSync) {\n history.push(\n `${pathname}?${qs.stringify({ ...qs.parse(search), pageNum, pageSize: size || pageSize })}`,\n );\n }\n setCurrentPageNum(pageNum);\n setPageSize(size || pageSize);\n };\n\n // 选择当前页和全部的多选配置项\n const selectByPageAndAll: SelectionItem[] = [\n {\n key: 'page-data',\n text: `选择本页 ${total < pageSize ? total : pageSize} 条 `,\n onSelect: (changeableRowKeys: Key[]) => {\n const count = total && pageSize && total < pageSize ? total : pageSize;\n if (pageSize && changeableRowKeys.length < pageSize) {\n setSelectRowState({\n selectedCount: changeableRowKeys.length,\n selectedRowKeys: changeableRowKeys,\n });\n } else {\n setSelectRowState({\n selectedCount: count,\n selectedRowKeys: changeableRowKeys,\n });\n }\n },\n },\n {\n key: 'all-data',\n text: `选择全部 ${total} 条`,\n onSelect: (changeableRowKeys: Key[]) => {\n setSelectRowState({\n selectedCount: total,\n selectedRowKeys: changeableRowKeys,\n });\n },\n },\n ];\n // 多选配置项\n const rowSelection: TableRowSelection = {\n selectedRowKeys: selectRowState.selectedRowKeys,\n onChange: (newSelectedRowKeys: Key[]) => {\n // 当前选中数据的长度\n const length = newSelectedRowKeys.length;\n setSelectRowState({\n selectedCount: length,\n selectedRowKeys: newSelectedRowKeys,\n });\n },\n hideDefaultSelections: true,\n selections: select === 'withPageAndAll' ? selectByPageAndAll : false,\n // 额外的多选数据\n ...extraSelectProps,\n };\n // 分页信息\n const pagination = {\n total,\n pageSize: realPageSize,\n current: realPageNum,\n onChange: handlePageNumChange,\n showSizeChanger: true,\n showTotal: (total: number) => `數據共${total}條`,\n };\n // 返回的多选数据\n const rowSelectionProps = {\n total,\n selected: selectRowState.selectedCount,\n selectedKeys: selectRowState.selectedRowKeys,\n setSelectRowState,\n };\n // 清除多选数据\n const clearSelection = () => {\n setSelectRowState(defaultSelectionStates);\n };\n // 加载数据\n const loadData = () => {\n if (queryChecker && !queryChecker(query)) {\n return;\n }\n setLoading(true);\n service(serviceParams as IPaginationParams & Q).then(res => {\n if (!res) {\n setLoading(false);\n return;\n }\n setLoading(false);\n setWholeResult(res);\n setList(res.records || []);\n setTotal(res.total);\n });\n };\n\n // 防抖加载\n useDebounce(\n () => {\n if (routerSync && isEqual(routeQuery, prevRouteQuery)) {\n return;\n }\n if (!routerSync && isEqual(query, prevQuery)) {\n return;\n }\n // 如果更新了query而且当前页不是第一页\n if (currentPageNum !== FIRST_PAGE) {\n setCurrentPageNum(FIRST_PAGE);\n return;\n }\n loadData();\n },\n 200,\n [query],\n );\n // 返回的Table的数据\n const tableProps: TableProps = {\n rowKey,\n loading,\n pagination,\n dataSource: list,\n rowSelection: select ? rowSelection : undefined,\n size: 'small',\n };\n\n // 全选的时候把id数据塞进去\n const getNewSelectRows = () => {\n const { selectedCount } = selectRowState;\n // 选中的数据是否等于全部,而且不等于0,是否有重新加载数据且加载成功,返回值是否正确\n if (selectedCount && selectedCount === total && loading === false && tableProps.dataSource) {\n const newSelectRows = tableProps.dataSource.reduce((cur, it) => {\n cur.push(it[rowKey]);\n return cur;\n }, []);\n setSelectRowState({\n selectedCount,\n selectedRowKeys: [...newSelectRows],\n });\n }\n };\n\n // 当页数和分页大小改变时更新数据\n useEffect(loadData, [realPageNum, realPageSize, search]);\n // 当数据的改变的时候,下一页的时候是否渲染已选数据\n useEffect(getNewSelectRows, [loading]);\n\n // useTable 返回值\n return {\n loadData,\n routeQuery,\n pagination,\n tableProps,\n wholeResult,\n clearSelection,\n rowSelectionProps,\n } as UseTableResult;\n}\n","import React, { FC, useState, useEffect, useRef } from 'react';\nimport {\n Form,\n Input,\n Row,\n Col,\n Select,\n message,\n Radio,\n Button,\n Switch,\n FormInstance,\n DatePicker,\n Modal,\n} from 'antd';\nimport { phoneTypeInfo } from '@/service/my-set';\nimport { LabelVallue } from '@/service/interface/commom.d';\nimport useShop from '@/hooks/useShop';\nimport { debounce, divide, groupBy } from 'lodash';\nimport { getSkuIdByRamId } from '@/service/sales-billing';\nimport { ISH5 } from '@/utils/common';\nimport {\n addBooking,\n checkCaptcha,\n getBookingConfigInfo,\n getCaptcha,\n getCompanyName,\n bookingSendVerificationCode,\n verifySentVerificationCode,\n} from '@/service/booking';\nimport { BookingPayWay, CaptchaItem } from '@/service/interface/booking.d';\nimport { ShopType } from '@/service/interface/user.d';\nimport moment from 'moment';\nimport usePayWay from '@/hooks/usePayWay';\nimport CountdownButton from './CountdownButton';\n\nconst levelTwoMap = [\n { label: 'iPhone', value: 18 },\n { label: 'iPad', value: 267 },\n { label: 'Watch', value: 446 },\n { label: 'AirPods', value: 411 },\n];\n\nconst isEnv =\n window.location.origin.includes('willyhzt.myds.me') ||\n window.location.origin.includes('localhost');\n\ninterface Props {\n form: FormInstance;\n saved: (payWay: BookingPayWay, orderId: string, orderValue: any) => void;\n}\nconst enter = '請輸入';\nconst select = '請選擇';\n\nconst BookingForm: FC = ({ saved, form }) => {\n const [checkForm] = Form.useForm();\n const [visible, setVisible] = useState(false);\n const [captcha, setCaptcha] = useState({} as CaptchaItem);\n const [captcha1, setCaptcha1] = useState({} as CaptchaItem);\n const [model, setModel] = useState([]); // 手机型号\n const [errorCount, setErrorCount] = useState(0);\n const [showFlag, setShowFlag] = useState(false);\n const [version, setVersion] = useState([]); // 手机具体版本\n const [colorArr, setColorArr] = useState([]); // 颜色\n const [capacityArr, setCapacityArr] = useState([]); // 容量\n const [btnLoading, setBtnLoading] = useState(false);\n const [needDepositFlag, setNeedDepositFlag] = useState(false);\n const [mobilePhoneInfoByLevelFive, setMobilePhoneInfoByLevelFive] = useState(\n {} as { id: number; skuName: string; price: number; officialPrice: number },\n );\n const [companyNameList, setCompanyNameList] = useState([]);\n const shop = useShop(2);\n const payWayList = usePayWay();\n const inputRef = useRef({} as { name: string; phone: string; verifyCode: string });\n const isVip =\n window.location.pathname.includes('vipBooking') ||\n window.location.pathname.includes('vipbooking')\n ? true\n : false;\n\n useEffect(() => {\n // handleChangeType(18);\n const fn = async () => {\n await handleChangeModel(4718);\n const res = await getSkuIdByRamId({\n levelFour: 4730,\n ramId: 4725,\n });\n if (res) {\n setMobilePhoneInfoByLevelFive(res);\n }\n };\n // if (isEnv) {\n // fn();\n // }\n fetchConfigInfo2();\n // fetchCaptcha();\n }, []);\n\n const fetchConfigInfo2 = async () => {\n const res = await getBookingConfigInfo('reserve_need_deposit_flag', '1');\n if (res) {\n setNeedDepositFlag(res.configValue === 'true' ? true : false);\n }\n };\n\n const handleChangeLevelOne = async value => {\n form.setFieldsValue({\n levelTwo: undefined,\n levelThree: undefined,\n levelFour: undefined,\n ramId: undefined,\n });\n setVersion([]);\n setColorArr([]);\n setCapacityArr([]);\n if (value === 17) {\n setModel(levelTwoMap);\n } else {\n const res = await phoneTypeInfo(value);\n if (res) {\n setModel(\n res.subWebAttributeList.map(item => ({\n label: item.attributesName,\n value: item.id,\n machineTypeId: item.machineTypeId,\n })),\n );\n }\n }\n };\n\n // const fetchCaptcha = async () => {\n // const res = await getCaptcha();\n // if (res) {\n // setCaptcha(res);\n // }\n // };\n\n const fetchCaptcha1 = async () => {\n const res = await getCaptcha();\n if (res) {\n setCaptcha1(res);\n }\n };\n\n useEffect(() => {\n fetchCaptcha1();\n }, [visible]);\n\n const formatPhoneNumber = phoneNumber => {\n // 去掉开头的所有0\n let formattedNumber = phoneNumber.replace(/^0+/, '');\n\n // 在开头加上 +886\n return `+886${formattedNumber}`;\n };\n\n const sendCode = async () => {\n return new Promise(async (resolve, reject) => {\n const { levelTwo, levelThree, levelFour, ramId, phone, name } = form.getFieldsValue();\n let flag = true;\n if (!levelTwo) {\n message.error('請先選擇類型');\n flag = false;\n resolve(false);\n }\n if (!levelThree) {\n message.error('請先選擇型號');\n flag = false;\n resolve(false);\n }\n if (!levelFour) {\n message.error('請先選擇顏色');\n flag = false;\n resolve(false);\n }\n if (!ramId) {\n message.error('請先選擇容量');\n flag = false;\n resolve(false);\n }\n if (!name) {\n message.error('請先填寫姓名');\n flag = false;\n resolve(false);\n }\n if (!phone) {\n message.error('請先填寫手機門號');\n flag = false;\n resolve(false);\n }\n\n if (flag) {\n const res = await bookingSendVerificationCode({\n mobileModel: `Apple/${levelTwoMap.filter(item => item.value === levelTwo)[0]?.label}/${\n version.filter(item => item.value === levelThree)[0]?.label\n }/${colorArr.filter(item => item.value === levelFour)[0]?.label}/${\n capacityArr.filter(item => item.value === ramId)[0]?.label\n }`,\n name,\n phone: formatPhoneNumber(phone),\n vipCustomer: isVip ? true : undefined,\n skuId: mobilePhoneInfoByLevelFive.id,\n });\n if (res) {\n message.success('認證碼傳送成功');\n resolve(true);\n } else {\n resolve(false);\n }\n }\n resolve(false);\n });\n };\n\n const handleChangeType = async value => {\n const res = await phoneTypeInfo(value);\n if (res) {\n setVersion(\n res.subWebAttributeList\n .filter(item => item.onlineBook === true)\n .map(item => ({\n label: item.attributesName,\n value: item.id,\n })),\n );\n setColorArr([]);\n setCapacityArr([]);\n form.setFieldsValue({\n levelThree: undefined,\n levelFour: undefined,\n ramId: undefined,\n });\n }\n };\n\n const handleChangeModel = async value => {\n const res = await phoneTypeInfo(value);\n if (res) {\n const colorArr = res.subWebAttributeMaps?.[1].map(item => ({\n ...item,\n label: item.attributesName,\n value: item.id,\n }));\n const neicunArr = res.subWebAttributeMaps?.[2].map(item => ({\n ...item,\n label: item.attributesName,\n value: item.id,\n }));\n\n setColorArr(colorArr);\n setCapacityArr(neicunArr);\n form.setFieldsValue({\n levelFour: undefined,\n ramId: undefined,\n });\n }\n };\n\n const handleChangeColor = async value => {\n if (value && form.getFieldValue('ramId')) {\n const res = await getSkuIdByRamId({\n ramId: form.getFieldValue('ramId'),\n levelFour: value,\n });\n if (res) {\n setMobilePhoneInfoByLevelFive(res);\n }\n }\n };\n\n const handleChangeCapacity = async value => {\n if (value && form.getFieldValue('levelFour')) {\n const res = await getSkuIdByRamId({\n ramId: value,\n levelFour: form.getFieldValue('levelFour'),\n });\n if (res) {\n setMobilePhoneInfoByLevelFive(res);\n }\n }\n };\n\n const onBeforeOk = () => {\n if (errorCount >= 3) {\n setVisible(true);\n return;\n }\n onOk();\n };\n\n const onOk = async () => {\n form.validateFields().then(async values => {\n const _curPrice =\n values.priceType === 1\n ? mobilePhoneInfoByLevelFive.price\n : mobilePhoneInfoByLevelFive.officialPrice;\n if (!_curPrice) {\n message.error('機型價格異常,無法提交,請聯絡客服');\n return;\n }\n const verificationCodeFlag = await verifySentVerificationCode({\n phone: encodeURIComponent(formatPhoneNumber(values.phone)),\n verificationCode: values.verificationCode,\n verificationCodeBusinessEnum: 'BOOKING',\n });\n if (!verificationCodeFlag.rightFlag) {\n message.error('簡訊認證碼錯誤');\n setErrorCount(verificationCodeFlag?.errorCount || 0);\n return;\n }\n setBtnLoading(true);\n const res = await addBooking({\n ...values,\n reservePrice: needDepositFlag ? 2000 : 0,\n // verifyCodeName: captcha.verifyCodeName,\n levelOne: 17,\n // expectTakeTime: moment(values.expectTakeTime).format('YYYY-MM-DD HH:mm:ss'),\n levelTwo: values.levelTwo,\n skuId: mobilePhoneInfoByLevelFive.id,\n machineTypeId: 2,\n branchesName: groupBy(shop, 'value')[values.branches][0].label,\n // needInsurance: values.needInsurance || false,\n // needAddress: values.needAddress || false,\n // needDepreciatione: values.needDepreciatione || false,\n introduceMask: values.introduceMask || false,\n introduceInsurance: values.introduceInsurance || false,\n introduceRenewDiscount: values.introduceRenewDiscount || false,\n introduceOldDiscount: values.introduceOldDiscount || false,\n price:\n values.priceType === 1\n ? mobilePhoneInfoByLevelFive.price\n : mobilePhoneInfoByLevelFive.officialPrice,\n payWay: needDepositFlag ? values.payWay || 0 : undefined,\n needUnifyNumber: needDepositFlag ? values.needUnifyNumber : undefined,\n vipCustomer: isVip ? true : undefined,\n reserveNeedDepositFlag: needDepositFlag,\n });\n setBtnLoading(false);\n if (res) {\n form.resetFields();\n message.success('操作成功');\n // fetchCaptcha();\n saved(needDepositFlag ? values.payWay || 0 : undefined, res as string, {\n skuName: `Apple/${levelTwoMap.filter(item => item.value === values.levelTwo)[0]?.label}/${\n version.filter(item => item.value === values.levelThree)[0]?.label\n }/${colorArr.filter(item => item.value === values.levelFour)[0]?.label}/${\n capacityArr.filter(item => item.value === values.ramId)[0]?.label\n }`,\n mobilePhoneInfoByLevelFive,\n _curPrice,\n text: `${values.name}您好,已成功預約${\n levelTwoMap.filter(item => item.value === values.levelTwo)[0]?.label\n }/${version.filter(item => item.value === values.levelThree)[0]?.label}/${\n colorArr.filter(item => item.value === values.levelFour)[0]?.label\n }/${capacityArr.filter(item => item.value === values.ramId)[0]?.label},配送${\n groupBy(shop, 'value')[values.branches][0].label\n }門市。其他需求請聯繫Line客服;@qek888。(Q哥)`,\n });\n }\n });\n };\n\n const validatorPhone = (r, val) => {\n if (!val) {\n return Promise.reject(new Error('請輸入手機門號'));\n }\n if (!val.trim()) {\n return Promise.reject(new Error('手機門號不能為空'));\n }\n if (val.length !== 10) {\n return Promise.reject(new Error('手機門號為10位數字'));\n }\n if (!/^[0-9]*$/.test(val)) {\n return Promise.reject(new Error('手機門號為10位數字'));\n }\n return Promise.resolve();\n };\n\n const validatorAccess = (r, val) => {\n if (!val) {\n return Promise.reject(new Error('請輸入郵箱'));\n }\n if (!val.trim()) {\n return Promise.reject(new Error('郵箱不能為空'));\n }\n const reg = /^[A-Za-z\\d]+([-_.][A-Za-z\\d]+)*@([A-Za-z\\d]+[-.])+[A-Za-z\\d]{2,4}$/;\n if (!reg.test(val)) {\n return Promise.reject(new Error('請輸入正確郵箱'));\n }\n return Promise.resolve();\n };\n\n const validatorName = (r, val) => {\n if (!val) {\n return Promise.reject(new Error('請輸入姓名'));\n }\n if (!val.trim()) {\n return Promise.reject(new Error('姓名不能為空'));\n }\n const reg = /^[\\u4E00-\\u9FA5]+$/;\n if (!reg.test(val)) {\n return Promise.reject(new Error('姓名有誤'));\n }\n return Promise.resolve();\n };\n\n const validatorUnifyNumber = (r, val) => {\n if (!val) {\n return Promise.reject(new Error('請輸入訂金統編'));\n }\n if (!val.trim()) {\n return Promise.reject(new Error('訂金統編不能為空'));\n }\n const reg = /^[0-9]{8}$/;\n if (!reg.test(val)) {\n return Promise.reject(new Error('格式有誤'));\n }\n return Promise.resolve();\n };\n\n const handleOnOk = () => {\n checkForm.validateFields().then(async values => {\n const { verifyCode } = values;\n const res = await checkCaptcha({ verifyCode, verifyCodeName: captcha1.verifyCodeName });\n if (res) {\n setVisible(false);\n checkForm.resetFields();\n await onOk();\n }\n });\n };\n\n return (\n <>\n {isEnv && (\n {\n form.setFieldsValue({\n branches: 1,\n branchesName: '台南文賢',\n email: 'qek999@qekpro.com',\n // expectTakeTime: moment(new Date()),\n // levelFive: 4361,\n levelOne: 17,\n levelTwo: 18,\n levelThree: 4718,\n levelFour: 4730,\n ramId: 4725,\n machineTypeId: 2,\n name: '青測試',\n // needAddress: false,\n // needDepreciatione: false,\n // needInsurance: false,\n introduceOldDiscount: false,\n introduceRenewDiscount: false,\n introduceMask: false,\n introduceInsurance: false,\n // payWay: 3,\n payWay: 0,\n phone: '0963667739',\n priceType: 2,\n });\n }}\n >\n 测试\n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {needDepositFlag && (\n \n 2000元\n \n )}\n \n \n \n \n // (3-12期指定卡別刷卡分期零利率、14天退換貨鑑賞期)\n // \n // }\n >\n {mobilePhoneInfoByLevelFive.officialPrice || '暫無價格,請聯絡客服。'}\n \n \n \n \n (享現金優惠付款、信用卡一次刷+2%、14天鑑賞期,刷卡分期12期不超過官網售價)\n \n }\n >\n {mobilePhoneInfoByLevelFive.price || '暫無售價,請聯絡客服。'}\n \n \n \n \n form.setFieldsValue({ payWay: undefined })}>\n {/* 官網售價方案 */}\n Q哥現金含稅方案\n \n \n \n {/* \n \n\n \n {payWayList.map((item, key) => (\n \n {item.payWayName}\n \n ))}\n \n \n */}\n \n \n \n \n \n {/* \n \n \n \n \n \n {({ getFieldValue }) =>\n getFieldValue('isSecondColor') && (\n \n \n \n \n \n )\n }\n */}\n {/* \n \n \n \n */}\n {needDepositFlag && (\n \n \n {({ getFieldValue }) => (\n \n \n {payWayList.map((item, key) => (\n \n {item.payWayName}\n \n ))}\n \n \n )}\n \n \n )}\n {needDepositFlag && (\n \n \n \n {[\n { label: '否', value: false },\n { label: '是', value: true },\n ].map((item, key) => (\n \n {item.label}\n \n ))}\n \n \n \n )}\n \n {({ getFieldValue }) => {\n if (getFieldValue('needUnifyNumber') === true) {\n return (\n \n \n
輸入統編之後,系統自動查詢統編抬頭,如果查詢沒有結果可自行錄入
\n {showFlag && (\n
無法自動查詢到抬頭,請手動填寫
\n )}\n \n }\n >\n {\n const val = e.target.value;\n if (val) {\n const _val = val.trim();\n if (_val.length === 8) {\n form.setFieldsValue({\n companyName: undefined,\n });\n const res = await getCompanyName(_val);\n if (res && typeof res === 'string') {\n setShowFlag(false);\n form.setFieldsValue({\n companyName: res,\n });\n } else {\n setShowFlag(true);\n }\n }\n }\n }}\n />\n
\n \n );\n }\n return null;\n }}\n \n \n {({ getFieldValue }) => {\n if (getFieldValue('needUnifyNumber') === true) {\n return (\n \n \n \n \n \n );\n }\n return null;\n }}\n \n {/* \n \n \n \n */}\n {/* \n \n \n \n */}\n {/* \n \n \n \n */}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {/* \n
\n \n {\n (inputRef.current || {}).verifyCode = e.target.value;\n }}\n />\n \n {\n fetchCaptcha();\n }}\n />\n
\n */}\n \n
\n \n {\n // (inputRef.current || {}).verifyCode = e.target.value;\n // }}\n />\n \n \n
\n \n \n
\n \n
\n {\n form.resetFields();\n }}\n >\n 重填\n \n \n 提交\n \n
\n {\n setVisible(false);\n checkForm.resetFields();\n }}\n >\n
\n
\n \n \n \n {\n fetchCaptcha1();\n }}\n />\n
\n
\n \n \n );\n};\n\nexport default BookingForm;\n","export const positiveInteger = /[1-9]\\d*/;\n\nexport const phoneNumber = /1\\d{10}/;\n\n/** 判断是否为中文 */\nexport const isChinese = /^[\\u4e00-\\u9fa5]+$/;\n\n/** 校验Emoji表情 */\nexport const EMOJI_REG = /\\uD83C[\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDE4F]/;\n\n/**\n * 判断是否为正整数\n */\nexport const isPositiveInteger = (val: any) => /^\\d+$/.test(val);\n\n/**\n * 校验是否为最多一位小数的正则\n */\nexport const decimal1Pattern = /^(([1-9][0-9]*)|(([0]\\.\\d{1}|[1-9][0-9]*\\.\\d{1})))$/;\n\n/**\n * 校验是否为最多两位小数的正则\n */\nexport const decimal2Pattern = /^(([1-9][0-9]*)|(([0]\\.\\d{1,2}|[1-9][0-9]*\\.\\d{1,2})))$/;\n\n/**\n * 校验是否为最多三位小数的正则\n */\nexport const decimal3Pattern = /^(([1-9][0-9]*)|(([0]\\.\\d{1,3}|[1-9][0-9]*\\.\\d{1,3})))$/;\n\n/**\n * 校验是否为正整数\n */\nexport const integerPattern = /^[1-9]\\d*$/;\n\n/**\n * 校验是否为数字\n */\nexport const floatPattern = /^(-|\\+)?\\d+(\\.\\d+)?$/;\n\n/**\n * 以符号分割句子\n */\nexport const splitPattern = /[?|?|:|;|,|,|。|!|!]/;\n\n/**\n * 识别 ${}\n */\nexport const variablePattern = /(\\${).*?}/g;\n","import React, { FC, useEffect } from 'react';\nimport { Modal, message, Input, Form, Row, Col } from 'antd';\nimport { ISH5 } from '@/utils/common';\nimport { addPayNo } from '@/service/booking';\nimport { BookingListItem } from '@/service/interface/booking.d';\nimport { floatPattern } from '@/utils/reg';\n\ninterface Props {\n record: BookingListItem;\n visible: boolean;\n onCancel: () => void;\n loadData: () => void;\n}\n\nconst BookingPayNoModal: FC = ({ record, visible, loadData, onCancel }) => {\n const [form] = Form.useForm();\n useEffect(() => {\n if (record && JSON.stringify(record) !== '{}') {\n form.setFieldsValue({\n payNo: record.payNo,\n });\n }\n }, [record]);\n\n const onOkElse = async () => {\n form.validateFields().then(async values => {\n if (\n (floatPattern.test(values.payNo) && values.payNo.length === 6) ||\n values.payNo.length === 7\n ) {\n const res = await addPayNo({\n ...values,\n id: record.id,\n });\n if (res) {\n message.success(`回填成功`);\n onCancel();\n loadData();\n }\n } else {\n message.error('單號格式錯誤');\n }\n });\n };\n\n return (\n \n
\n \n \n \n \n \n \n \n
\n
\n );\n};\n\nexport default BookingPayNoModal;\n","import React, { FC, useState, useEffect, useRef } from 'react';\nimport { Button, Col, Form, Input, List, message, Modal, Row, Space, Steps, Table } from 'antd';\nimport { ISH5, processValue } from '@/utils/common';\nimport { cancelBooking, getBookingList, getCaptcha } from '@/service/booking';\nimport { CheckCircleOutlined } from '@ant-design/icons';\nimport {\n BookingListItem,\n BookingPayWay,\n CaptchaItem,\n PayStatus,\n} from '@/service/interface/booking.d';\nimport { ColumnProps } from 'antd/lib/table';\nimport BookingPayNoModal from './BookingPayNoModal';\nimport { success, link, error } from '@/config/style-to-json/colors';\nimport { enCryptoByDes } from '@/utils/encryptDes';\n\nconst { Step } = Steps;\ninterface Props {\n saved: (payWay: BookingPayWay, orderId: string, orderValue: any) => void;\n}\n\nconst BookingSteps: FC = ({ saved }) => {\n const [form] = Form.useForm();\n const [activePayNo, setActivePayNo] = useState('');\n const [payDetailVisible, setPayDetailVisible] = useState(false);\n const [captcha, setCaptcha] = useState({} as CaptchaItem);\n const [record, setRecord] = useState({} as BookingListItem);\n const [visible, setVisible] = useState(false);\n const [btnLoading, setBtnLoading] = useState(false);\n const [tableList, setTableList] = useState([]);\n const [current, setCurrent] = useState(0);\n const inputRef = useRef({} as { name: string; phone: string; verifyCode: string });\n\n const handleChangeStep = val => {\n setCurrent(val);\n };\n\n useEffect(() => {\n fetchCaptcha();\n }, []);\n\n const fetchCaptcha = async () => {\n const res = await getCaptcha();\n if (res) {\n setCaptcha(res);\n }\n };\n\n const PayStatusMap: Record = {\n [PayStatus.PAYING]: '資料回填',\n [PayStatus.PAYED]: '已支付',\n };\n\n const BookingPayWayMap: Record = {\n [BookingPayWay.ECPAY]: '線上支付',\n [BookingPayWay.CASH]: '門市現場支付',\n };\n\n const onOk = async () => {\n form.validateFields().then(values => {\n loadData();\n });\n };\n\n const rePay = async curRecord => {\n saved(curRecord.payWay, curRecord.id, {\n skuName: curRecord.skuName,\n mobilePhoneInfoByLevelFive: {\n skuName: curRecord.skuName,\n price: curRecord.skuPrice,\n officialPrice: curRecord.officialPrice,\n },\n });\n };\n\n const columns: ColumnProps[] = [\n {\n title: '預約客戶',\n dataIndex: 'name',\n key: 'name',\n width: 100,\n render: value => processValue(value),\n },\n {\n title: '預約電話',\n dataIndex: 'phone',\n key: 'phone',\n width: 100,\n render: value => processValue(value),\n },\n {\n title: '預約單號',\n dataIndex: 'reserveNo',\n key: 'reserveNo',\n width: 150,\n render: value => processValue(value),\n },\n {\n title: '預約機型',\n dataIndex: 'skuName',\n key: 'skuName',\n width: 150,\n render: value => processValue(value),\n },\n // {\n // title: '銷售類型',\n // dataIndex: 'priceType',\n // key: 'priceType',\n // width: 150,\n // render: value => {\n // if (value === 1) {\n // return '通訊行價格';\n // } else if (value === 2) {\n // return '官網授權價';\n // }\n // return '--';\n // },\n // },\n {\n title: '現金含稅方案',\n dataIndex: 'skuPrice',\n key: 'skuPrice',\n width: 150,\n render: value => processValue(value),\n },\n {\n title: '官網授權方案',\n dataIndex: 'officialPrice',\n key: 'officialPrice',\n width: 150,\n render: value => processValue(value),\n },\n {\n title: '預約日期',\n dataIndex: 'gmtCreate',\n key: 'gmtCreate',\n width: 120,\n render: value => processValue(value),\n },\n {\n title: '支付方式',\n dataIndex: 'payWayName',\n key: 'payWayName',\n width: 100,\n render: value => processValue(value),\n },\n {\n title: 'ECPay交易編號',\n dataIndex: 'payNo',\n key: 'payNo',\n width: 180,\n render: value => processValue(value),\n },\n // {\n // title: '售價',\n // dataIndex: 'price',\n // key: 'price',\n // width: 100,\n // render: value => processValue(value),\n // },\n {\n title: '訂金',\n dataIndex: 'reservePrice',\n key: 'reservePrice',\n width: 100,\n render: value => processValue(value),\n },\n {\n title: '支付狀態',\n dataIndex: 'payStatus',\n key: 'payStatus',\n width: 100,\n render: value => {\n if (value === PayStatus.PAYING) {\n return
未支付
;\n } else if (value === PayStatus.PAYED) {\n return
已支付
;\n }\n return '';\n },\n },\n {\n title: '订单狀態',\n dataIndex: 'status',\n key: 'status',\n width: 100,\n render: value => {\n if (value === 1) {\n return
未審核
;\n } else if (value === 2) {\n return
已審核
;\n } else if (value === 3) {\n return
已取消
;\n }\n return '--';\n },\n },\n {\n title: '操作',\n dataIndex: 'payStatus',\n key: 'payStatus',\n fixed: 'right',\n width: 200,\n render: (value, curRecord) => {\n if (value === PayStatus.PAYING) {\n if (\n (curRecord.payWay === BookingPayWay.ECPAY || curRecord.payWay === 2) &&\n curRecord.status !== 3\n ) {\n return (\n \n {\n rePay(curRecord);\n }}\n >\n 重新支付\n \n {\n Modal.confirm({\n keyboard: false,\n title: '確認取消預約?',\n icon: ,\n onOk: async () => {\n const res = await cancelBooking(curRecord.id);\n if (res) {\n message.success('取消預約成功');\n loadData();\n }\n },\n });\n }}\n >\n 取消預約\n \n {curRecord?.phoneOrderPayVO?.merchantTradeNo && (\n {\n if (curRecord?.phoneOrderPayVO?.merchantTradeNo) {\n setActivePayNo(curRecord?.phoneOrderPayVO?.merchantTradeNo);\n setPayDetailVisible(true);\n } else {\n message.error('merchantTradeNo不存在');\n }\n }}\n >\n 查看詳情\n \n )}\n \n );\n } else {\n return (\n {\n window.open(\n 'https://www.qek888.com/pages/q%E5%93%A5%E6%89%8B%E6%A9%9F%E7%B6%AD%E4%BF%AE%E6%93%9A%E9%BB%9E',\n );\n }}\n >\n 未支付,門市列表\n \n );\n }\n } else if (value === PayStatus.PAYED) {\n if (curRecord.payWay === BookingPayWay.ECPAY || curRecord.payWay === 2) {\n return (\n <>\n {curRecord?.phoneOrderPayVO?.merchantTradeNo && (\n {\n // readDetail(curRecord);\n if (curRecord?.phoneOrderPayVO?.merchantTradeNo) {\n setActivePayNo(curRecord?.phoneOrderPayVO?.merchantTradeNo);\n setPayDetailVisible(true);\n } else {\n message.error('merchantTradeNo不存在');\n }\n }}\n >\n 查看詳情\n \n )}\n \n );\n }\n return {PayStatusMap[value]};\n }\n return '--';\n },\n },\n ];\n\n const onCancel = () => {\n setVisible(false);\n setRecord({} as BookingListItem);\n };\n\n const loadData = async () => {\n setBtnLoading(true);\n const res = await getBookingList({\n ...form.getFieldsValue(),\n verifyCodeName: captcha.verifyCodeName,\n verifyCode: form.getFieldsValue().verifyCode || inputRef.current?.verifyCode,\n name: form.getFieldsValue().name || inputRef.current?.name,\n phone: form.getFieldsValue().phone || inputRef.current?.phone,\n });\n setBtnLoading(false);\n if (res) {\n // 通過手機號查訂單\n setTableList(res);\n setCurrent(1);\n }\n };\n\n return (\n
\n \n \n \n \n {current === 0 && (\n <>\n \n \n \n \n {\n (inputRef.current || {}).phone = e.target.value;\n }}\n />\n \n \n \n \n {\n (inputRef.current || {}).name = e.target.value;\n }}\n />\n \n \n \n \n \n {\n (inputRef.current || {}).verifyCode = e.target.value;\n }}\n />\n \n {\n fetchCaptcha();\n }}\n />\n
\n \n \n \n
\n {\n form.resetFields();\n }}\n >\n 重填\n \n \n 下一步\n \n
\n \n )}\n {/* {current === 1 && !ISH5 && (\n \n )} */}\n {current === 1 && (\n {\n let actions: any[] = [];\n if (item.payStatus === PayStatus.PAYING) {\n if ((item.payWay === BookingPayWay.ECPAY || item.payWay === 2) && item.status !== 3) {\n actions = [\n {\n rePay(item);\n }}\n >\n 重新支付\n ,\n {\n Modal.confirm({\n keyboard: false,\n title: '確認取消預約?',\n icon: ,\n onOk: async () => {\n const res = await cancelBooking(item.id);\n if (res) {\n message.success('取消預約成功');\n loadData();\n }\n },\n });\n }}\n >\n 取消預約\n ,\n ];\n if (item?.phoneOrderPayVO?.merchantTradeNo) {\n actions.push(\n {\n if (item?.phoneOrderPayVO?.merchantTradeNo) {\n setActivePayNo(item?.phoneOrderPayVO?.merchantTradeNo);\n setPayDetailVisible(true);\n } else {\n message.error('merchantTradeNo不存在');\n }\n }}\n >\n 查看詳情\n ,\n );\n }\n } else {\n actions = [\n {\n window.open(\n 'https://www.qek888.com/pages/q%E5%93%A5%E6%89%8B%E6%A9%9F%E7%B6%AD%E4%BF%AE%E6%93%9A%E9%BB%9E',\n );\n }}\n >\n 未支付,門市列表\n ,\n ];\n }\n } else if (item.payStatus === PayStatus.PAYED) {\n if (\n (item.payWay === BookingPayWay.ECPAY || item.payWay === 2) &&\n item?.phoneOrderPayVO?.merchantTradeNo\n ) {\n actions = [\n {\n if (item?.phoneOrderPayVO?.merchantTradeNo) {\n setActivePayNo(item?.phoneOrderPayVO?.merchantTradeNo);\n setPayDetailVisible(true);\n } else {\n message.error('merchantTradeNo不存在');\n }\n }}\n >\n 查看詳情\n ,\n ];\n } else {\n actions = [{PayStatusMap[item?.payStatus]}];\n }\n }\n return (\n \n \n
  • 預約客戶:{item.name}
  • \n
  • 預約门市:{item.branchesName}
  • \n {/*
  • \n 支付方式:\n \n {`${item.payWayName} ${item.paymentTypeName}`}\n \n
  • */}\n
  • 預約電話:{item.phone}
  • \n
  • 預約單號:{item.reserveNo}
  • \n
  • 現金含稅方案:{item.skuPrice}
  • \n
  • 官網授權方案:{item.officialPrice}
  • \n {item.payWay !== 2 && item.payWay !== 3 &&
  • 訂金:{item.reservePrice}
  • }\n
  • 支付方式:{item.payWayName}
  • \n
  • ECPay交易編號:{item.payNo || '--'}
  • \n
  • \n 支付狀態:\n {(value => {\n if (value === PayStatus.PAYING) {\n return 未支付;\n } else if (value === PayStatus.PAYED) {\n return 已支付;\n }\n return '';\n })(item.payStatus)}\n
  • \n
  • \n 订单狀態:\n {(value => {\n if (value === 1) {\n return 未審核;\n } else if (value === 2) {\n return 已審核;\n } else if (value === 3) {\n return 已取消;\n }\n return '--';\n })(item.status)}\n
  • \n
  • 預約時間:{item.gmtCreate}
  • \n \n }\n />\n
    \n );\n }}\n />\n )}\n {visible && (\n \n )}\n {payDetailVisible && (\n {\n setActivePayNo('');\n setPayDetailVisible(false);\n }}\n width={1000}\n style={{ height: 600, top: 10 }}\n footer={null}\n destroyOnClose\n maskClosable={false}\n keyboard={false}\n >\n
    \n \n
    \n \n )}\n \n );\n};\n\nexport default BookingSteps;\n","import React, { FC, useState, useEffect } from 'react';\nimport { Tabs, Layout, ConfigProvider, Modal, Form, Button } from 'antd';\nimport moment from 'moment';\n// import md5 from 'md5'\nimport { useHistory } from 'react-router-dom';\nimport { CheckCircleOutlined } from '@ant-design/icons';\nimport zhTW from 'antd/lib/locale/zh_TW';\nimport {\n createPayment,\n getPaymentToken,\n getWebBookingMessageInfo,\n webBookingMessageList,\n} from '@/service/dashboard';\nimport { ISH5 } from '@/utils/common';\nimport BookingForm from './components/BookingForm';\nimport { MyEmpty } from '@/components/empty';\nimport { BookingPayWay } from '@/service/interface/booking.d';\nimport BookingSteps from './components/BookingSteps';\nimport { ROUTER_PREFIX } from '@/config/router-config';\nimport { enCryptoByDes } from '@/utils/encryptDes';\nimport { getBookingConfigInfo } from '@/service/booking';\n\nmoment.locale('zh-tw');\nconst { Content } = Layout;\n\ninterface Props {}\nexport enum BookingStatus {\n REGISTER,\n ECHO,\n}\n\nconst Booking: FC = () => {\n const [form] = Form.useForm();\n const history = useHistory();\n const pathname = history?.location?.pathname;\n const [isOpen, setIsOpen] = useState(false);\n const [desc, setDesc] = useState('');\n const [orderValue, setOrderValue] = useState({} as any);\n const [payModalVisible, setPayModalVisible] = useState(false);\n const [status, setStatus] = useState(BookingStatus.REGISTER);\n const isVip =\n window.location.pathname.includes('vipBooking') ||\n window.location.pathname.includes('vipbooking')\n ? true\n : false;\n\n useEffect(() => {\n getWebBookingMessageList();\n }, [window.location.pathname]);\n\n const getWebBookingMessageList = async () => {\n const res = await webBookingMessageList({\n pageNum: 1,\n pageSize: 10,\n isVip,\n });\n if (res) {\n const id = res?.records?.[0]?.id;\n if (id) {\n const result = await getWebBookingMessageInfo({\n id,\n });\n if (result) {\n setDesc(result.desc);\n }\n }\n }\n };\n const hanldeChangeActiveTab = active => {\n setStatus(+active);\n };\n\n const createPay = async params => {\n const { orderId, orderValue, payWay } = params;\n setOrderValue({\n ...orderValue,\n orderId,\n payWay,\n });\n setPayModalVisible(true);\n };\n\n useEffect(() => {\n fetchConfigInfo();\n }, [window.location.pathname]);\n\n const fetchConfigInfo = async () => {\n if (window.location.pathname.includes('booking-')) {\n const res = await getBookingConfigInfo('open_else_reserve', '1');\n if (res) {\n setIsOpen(res.configValue === 'true' ? true : false);\n }\n } else {\n const res = await getBookingConfigInfo('open_reserve', '1');\n if (res) {\n setIsOpen(res.configValue === 'true' ? true : false);\n }\n }\n };\n\n useEffect(() => {\n if (payModalVisible) {\n const iFrame = document.getElementById('payIframe');\n if (iFrame) {\n iFrame.onload = function() {\n // iframe加载完立即发送一条消息\n // @ts-ignore\n iFrame.contentWindow.postMessage(\n {\n msg: JSON.stringify({\n text: `
    \n
    您預約的機型為:${orderValue.skuName || '--'}
    \n
    您需要支付金额為:${\n orderValue?.payWay === 2 ? orderValue?._curPrice : 2000\n }元
    \n
    請按照頁面提示進行付款操作,感謝您~
    \n

    PS:

    \n
    1.如果您遇到支付遇到問題無法完成,可在Q哥預定首頁-點選預約查詢-輸入個人資料以後重新進行支付,無需重新填預約資訊。
    \n
    2.若您已經完成3D認證,銀行已經提示扣款但提示付款失敗,請嘗試半小時以後從『預約查詢』查詢付款狀態,再有疑問請聯絡客服。
    \n
    Q哥感謝您
    \n
    `,\n orderId: orderValue.orderId,\n envUrl: window.location.origin,\n }),\n },\n '*',\n );\n };\n }\n }\n }, [payModalVisible]);\n\n useEffect(() => {\n window.addEventListener(\n 'message',\n function receiveMessageFromIframePage(event) {\n if (event.data.msg) {\n console.log('这里是子页面发送来的消息,消息内容在event.data属性中', event.data.msg);\n const childData = JSON.parse(event.data.msg);\n if (childData.type === 'creditCard') {\n // 跳 3D支付页面\n window.location.href = childData.url;\n }\n if (childData.type === 'atm') {\n window.location.href =\n window.location.origin +\n `/${ROUTER_PREFIX}/ecpay/info/${encodeURIComponent(\n enCryptoByDes(childData.tradeNo),\n )}`;\n }\n }\n },\n false,\n );\n }, []);\n\n const saved = (payWay, orderId, orderValue) => {\n if (payWay === BookingPayWay.CASH || payWay === 3 || payWay === undefined) {\n Modal.confirm({\n width: 600,\n title: '登記成功!',\n icon: ,\n content: (\n
    \n {/*

    請前往您最近的Q哥門市

    */}\n {/*

    請提供門市人員您訂單填寫的姓名及電話號碼。

    */}\n

    {orderValue?.text || '--'}

    \n
    \n ),\n okText: '查看Q哥門市列表',\n cancelText: '關閉',\n onOk: () => {\n window.open(\n 'https://www.qek888.com/pages/q%E5%93%A5%E6%89%8B%E6%A9%9F%E7%B6%AD%E4%BF%AE%E6%93%9A%E9%BB%9E',\n );\n return Promise.reject();\n },\n onCancel: close => {\n form.setFieldsValue({\n levelThree: undefined,\n levelFour: undefined,\n levelFive: undefined,\n });\n return Promise.resolve();\n },\n });\n } else if (payWay === BookingPayWay.ECPAY || payWay === 2) {\n createPay({\n orderId,\n orderValue,\n payWay,\n });\n // Modal.confirm({\n // width: 600,\n // title: '登記成功!',\n // icon: ,\n // content: (\n //
    \n //

    請點擊下方按鈕前往線上支付訂金,支付成功以後請複製訂單編號回填。

    \n //

    {`您也可以稍後在 資料回填&查詢 按鈕內操作。`}

    \n //

    \n // {\n // window.open('https://cart.cashier.ecpay.com.tw/qp/n7n6');\n // }}\n // >\n // 點此前往在線支付\n // \n //

    \n //

    也可掃描下方二維碼支付:

    \n //

    信用卡付款請選「信用卡一次付清」

    \n //

    取得轉帳匯款帳號請選「ATM櫃員機」

    \n //
    \n // \n //
    \n //
    \n // ),\n // okText: '前往支付訂金',\n // cancelText: '付款完成回填單號',\n // onOk: () => {\n // window.open('https://cart.cashier.ecpay.com.tw/qp/n7n6');\n // return Promise.reject();\n // },\n // onCancel: close => {\n // setStatus(BookingStatus.ECHO);\n // return Promise.resolve();\n // },\n // });\n }\n };\n\n const rePay = () => {};\n\n return (\n \n \n \n {isOpen ? (\n \n
    \n
    \n
    \n
    \n \n \n
    \n \n
    \n
    \n \n \n \n
    \n
    \n {payModalVisible && (\n {\n setPayModalVisible(false);\n }}\n destroyOnClose\n maskClosable={false}\n keyboard={false}\n >\n
    \n \n
    \n \n )}\n \n ) : (\n
    \n \n
    \n )}\n \n \n \n );\n};\n\nexport default Booking;\n","export interface TransferOldPhoneDealParams {\n branches?: number;\n transferStatus: TransferOldPhoneDealStatus;\n}\n\nexport enum TransferOldPhoneDealStatus {\n ToAudit, // 待审核\n AuditPass, // 审核通过\n AuditFail, // 审核不通过\n Sended, // 已发货\n Received, // 已接收\n}\n\nexport interface TransferOldPhoneDealItem {\n id: number;\n skuName: string;\n snCode: string;\n imei: string;\n branchesFromName: string;\n branchesToName: string;\n gmtCreate: string;\n status: TransferOldPhoneDealStatus;\n remarks: string;\n branchesTo: number;\n branchesFrom: number;\n}\n\nexport interface EditTransferOldPhoneDealParams {\n id: number;\n status: TransferOldPhoneDealStatus;\n isSale?: boolean;\n}\n\nexport enum OldPhoneStatus {\n // 0现货 1已預約 2已售卖 3等待调拨发货 4在途 5冻结 6待审核 7 待售中 8代售已售出\n Spot,\n Reserved,\n Saled,\n ToDelivery,\n OnTheWay,\n Freeze,\n ToAudit,\n OutBranchSaling,\n OutBranchSaled,\n}\n\nexport enum TransferStatus {\n NOTREVIEW, // 待审核\n REVIEWPASS, // 审核通过\n REVIEWNOTPASS, // 审核不通过\n DELIVERED, // 已发货\n RECEIVED, // 已收货\n NOTRECEIVED, // 待收货\n CANCELED, // 已取消\n NULL, // 未发起调货\n}\nexport interface MobilePhoneInfo {\n batchNo: string;\n failureVOList: FailureVOItem[];\n successVOList: SuccessVOItem[];\n}\n\nexport interface FailureVOItem {\n id: number;\n remarks: string;\n skuName: string;\n snCode: string;\n upcCode: number;\n}\n\nexport interface SuccessVOItem {\n branches: number;\n branchesName: string;\n costPrice: number;\n skuId: number;\n skuName: string;\n snCode: string;\n supplierId: number;\n supplierName: string;\n upcCode: number;\n upcId: number;\n}\n\nexport interface OldPhoneListItem {\n id: number;\n machineVerificationVOList: any;\n machineVerificationStatus: number;\n skuIsDelete: boolean;\n machineVerificationPhotoJson: string;\n costPrice: number;\n machineVerificationPhotoJson: string;\n conditionLevel: number;\n saleApplicationId: number;\n invoice: string;\n machineTypeId: nunber;\n skuName: string;\n skuId: string;\n randomNum: string;\n snCode: string;\n imei: string;\n branchesName: string;\n remarks: string;\n supplierName: string;\n price: number;\n gmtCreate: string;\n contactTime: string;\n status: OldPhoneStatus;\n mobile: string;\n userName: string;\n upcCode: string;\n branches: number;\n levelFive: number;\n ramId: number;\n levelFiveName: string;\n levelFour: number;\n levelFourName: string;\n levelOne: number;\n levelOneName: string;\n levelThree: number;\n levelThreeName: string;\n levelTwo: number;\n levelTwoName: string;\n supplierId: number;\n purchasePrice: number;\n skuDesc: string;\n haveParts: boolean;\n haveBoxed: boolean;\n batteryDegree: number;\n imageUrl: string;\n transferStatus: TransferStatus;\n frozen: boolean;\n appearanceVO: any;\n projectDiagnoseVOList: any;\n}\n\nexport interface ReserveOldMobilePhoneParams {\n id: number;\n mobile: string;\n status: OldPhoneStatus;\n username: string;\n}\n\nexport interface OldMobilePhoneStatistics {\n notReserveCount: number;\n reserveCount: number;\n skuId: number;\n skuName: string;\n}\n\nexport interface SkuInfo {\n imageUrl: string;\n id: number;\n machineTypeId: number;\n machineTypeName: string;\n skuName: string;\n underImage: string;\n}\n\nexport enum ConditionLevel {\n LevelOne,\n LevelTwo,\n LevelThree,\n LevelFour,\n LevelFive,\n LevelFivePonitFive,\n}\n\nexport interface AddOldMobilePhoneParams {\n batteryDegree: number;\n branches: number;\n branchesName: string;\n conditionLevel: ConditionLevel;\n haveBoxed: boolean;\n haveParts: boolean;\n imageUrl: string;\n levelFive: number;\n levelFour: number;\n levelOne: number;\n levelThree: number;\n levelTwo: number;\n price: number;\n purchasePrice: number;\n remarks: string;\n skuDesc: string;\n skuId: number;\n snCode: string;\n supplierId: number;\n supplierName: string;\n upc: string;\n upcId: number;\n}\n\nexport interface OldMobilePhoneInfoByLevelFive {\n skuId: number;\n upcCode: string;\n percentFive: number;\n percentFivePointFive: number;\n percentFour: number;\n percentOne: number;\n percentTwo: number;\n percentThree: number;\n}\n\nexport interface TransferOldPhoneCommitListParams {\n branches?: number;\n snCode?: string;\n levelFive?: number;\n levelFour?: number;\n levelOne?: number;\n levelThree?: number;\n levelTwo?: number;\n toBranches?: number;\n}\n\nexport interface TransferOldPhoneCommitItem {\n skuName: string;\n snCode: string;\n branchesName: string;\n branches: number;\n remarks: string;\n id: number;\n}\n\nexport interface OldMobilePhoneTransferCommitParams {\n branches?: number;\n branchesName?: string;\n branchesTo?: number;\n branchesToName?: string;\n id: number;\n remarks?: string;\n skuName?: string;\n snCode?: string;\n isSale?: boolean;\n}\n\nexport interface OldMobilePhoneTransfer {\n id: number;\n snCode: string;\n arrivalTime?: string;\n}\n","import { ajaxPost, ajaxGet } from '@/utils/ajax';\nimport { IPaginationParams, IPaginationRes } from './interface/commom';\nimport {\n AddAheadOrderParams,\n AddCurrentOrderParams,\n AddMenhaoOrderListParams,\n AddMenhaoOrderParams,\n AddPhoneOrderParams,\n AheadOrderItem,\n AheadOrderListParams,\n CancelParams,\n CurrentOrderItem,\n CurrentOrderListParams,\n DealPhoneParams,\n MenhaoOrderItem,\n NewPhoneStatisticalReportCountItem,\n NewPhoneStatisticalReportListItem,\n NewPhoneStatisticalReportListParams,\n PhoneOrderListItem,\n PhoneOrderListParams,\n PhoneOrderLogisticsItem,\n ProfitStatisticalReportDetailListItem,\n ProfitStatisticalReportListItem,\n ProfitStatisticalReportListParams,\n RepairInfoItem,\n SavePhotoParams,\n SimItem,\n SimOrderListParams,\n StartRepairParams,\n StatToReceiveParams,\n WebRepairstatusItem,\n} from './interface/sales-billing';\n\n/** 新机卖机列表 */\nexport const phoneOrderList = (params: PhoneOrderListParams & IPaginationParams) =>\n ajaxPost>(`/q3c-api/phone/order/list`, params);\n\nexport const getCustomerByPhone = (phone: string) =>\n ajaxPost(`/q3c-api/pos/customer/infoByPhone?phone=${phone}`, undefined);\n\nexport const getPagePacked = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/logistics/pageExceptToBePacked', params);\n\nexport const getPagePackedInfo = id =>\n ajaxGet(`/q3c-api/logistics/getPackedDetail?id=${id}`, undefined);\n\nexport const logisticsDoReceipt = params => ajaxPost(`/q3c-api/logistics/doReceipt`, params);\n\nexport const phoneOrderLogistics = (id: number) =>\n ajaxPost(\n `/q3c-api/phone/order/logistics?phoneOrderId=${id}`,\n undefined,\n );\n\nexport const phoneCustomerOrderLogistics = (id: number) =>\n ajaxPost(\n `/q3c-api/phone/order/customer/logistics?phoneOrderId=${id}`,\n undefined,\n );\n\n/** 删除 */\nexport const deletePhoneOrder = (id: number) =>\n ajaxPost(`/q3c-api/phone/order/delete?phoneOrderId=${id}`, undefined);\n\n/** 取消 */\nexport const cancelPhoneOrder = (params: CancelParams) =>\n ajaxPost(`/q3c-api/phone/order/cancel`, params);\n\nexport const cancelSimOrder = (params: any) =>\n ajaxPost(`/q3c-api/simCardPhoneOrder/cancel`, params);\n\nexport const addBlack = (params: any) => ajaxPost(`/q3c-api/pos/customer/add`, params);\n\nexport const editBlack = (params: any) => ajaxPost(`/q3c-api/pos/customer/edit`, params);\n\nexport const addPhoneOrder = (params: AddPhoneOrderParams) =>\n ajaxPost(`/q3c-api/phone/order/add`, params);\n\nexport const editPhoneOrder = (params: AddPhoneOrderParams) =>\n ajaxPost(`/q3c-api/phone/order/edit`, params);\n\n/** 查看详情 */\nexport const getPhoneOrderInfo = (id: number, isPrint?: boolean) =>\n ajaxPost(\n `/q3c-api/phone/order/info?phoneOrderId=${id}&isPrint=${isPrint || false}`,\n undefined,\n );\n\nexport const getSkuIdByRamId = ({ ramId, levelFour }) =>\n ajaxPost<{ id: number; skuName: string; price: number; officialPrice: number; upcCode: string }>(\n `/q3c-api/phone/getSkuIdByLevelFourAndRamId?ramId=${ramId}&levelFour=${levelFour}`,\n undefined,\n );\n// export const getSkuIdByLevelFive = levelFive =>\n// ajaxPost<{ id: number; skuName: string; price: number; officialPrice: number; upcCode: string }>(\n// `/q3c-api/phone/getSkuIdByLevelFive?levelFive=${levelFive}`,\n// undefined,\n// );\n\n/** 获取维修子状态 */\nexport const getWebRepairstatusList = (params: { statusPid: string } & IPaginationParams) =>\n ajaxPost>(`/q3c-api/usr/webRepairstatus/list`, params);\n\n/** 維修操作 */\nexport const dealPhone = (params: DealPhoneParams) => ajaxPost(`/q3c-api/phone/order/deal`, params);\n\n/** 客人業務待處理 留機一鍵轉收機 */\nexport const stayToReceive = (params: StatToReceiveParams) =>\n ajaxPost(`/q3c-api/phone/order/repair/to/recovery`, params);\n\n/** 拆機復原 */\nexport const restorePhone = (id: number) =>\n ajaxPost(`/q3c-api/phone/order/repair/restore?phoneOrderRepairId=${id}`, undefined);\n\n/** 通用卖机单 */\nexport const getCurrentOrderList = (params: CurrentOrderListParams & IPaginationParams) =>\n ajaxPost>(`/q3c-api/order/current/list`, params);\n\nexport const getSimOrderList = (params: SimOrderListParams & IPaginationParams) =>\n ajaxPost>(`/q3c-api/simCardPhoneOrder/page`, params);\n\n/** 删除 */\nexport const deleteCurrentOrder = (id: number) =>\n ajaxPost(`/q3c-api/order/current/delete?webCurrentId=${id}`, undefined);\n\nexport const deleteSimOrder = (id: number) => ajaxPost(`/q3c-api/simCardPhoneOrder/delete`, { id });\n\n/** 查看详情 */\nexport const getCurrentOrderInfo = (id: number) =>\n ajaxPost(`/q3c-api/order/current/info?webCurrentId=${id}`, undefined);\n\nexport const getSimOrderInfo = (id: number) =>\n ajaxGet(`/q3c-api/simCardPhoneOrder/detail?id=${id}`, undefined);\n\n/** 新增 */\nexport const addCurrentOrder = (params: AddCurrentOrderParams) =>\n ajaxPost(`/q3c-api/order/current/add`, params);\n\n/** 编辑 */\nexport const editCurrentOrder = (params: AddCurrentOrderParams) =>\n ajaxPost(`/q3c-api/order/current/edit`, params);\n\nexport const saveSimOrder = (params: any) => ajaxPost(`/q3c-api/simCardPhoneOrder/save`, params);\n\nexport const changeProject = (params: AddCurrentOrderParams) =>\n ajaxPost(`/q3c-api/simCard/changeNetworkServiceProvider`, params);\n\nexport const cancelProject = (params: AddCurrentOrderParams) =>\n ajaxPost(`/q3c-api/simCard/cancelProject`, params);\n\nexport const bianGengZhuanAn = (params: AddCurrentOrderParams) =>\n ajaxPost(`/q3c-api/simCard/changeProject`, params);\n\n/** 通用預約单 */\nexport const getAheadOrderList = (params: AheadOrderListParams & IPaginationParams) =>\n ajaxPost>(`/q3c-api/order/ahead/list`, params);\n\n/** 删除 */\nexport const deleteAheadOrder = (id: number) =>\n ajaxPost(`/q3c-api/order/ahead/delete?webAheadId=${id}`, undefined);\n\n/** 查看详情 */\nexport const getAheadOrderInfo = (id: number) =>\n ajaxPost(`/q3c-api/order/ahead/info?webAheadId=${id}`, undefined);\n\n/** 新增 */\nexport const addAheadOrder = (params: AddAheadOrderParams) =>\n ajaxPost(`/q3c-api/order/ahead/add`, params);\n\n/** 编辑 */\nexport const editAheadOrder = (params: AddAheadOrderParams) =>\n ajaxPost(`/q3c-api/order/ahead/edit`, params);\n\n/** 退款 */\nexport const getMenhaoOrderList = (params: AddMenhaoOrderListParams & IPaginationParams) =>\n ajaxPost>(`/q3c-api/order/menhao/list`, params);\n\n/** 删除 */\nexport const deleteMenhaoOrder = (id: number) =>\n ajaxPost(`/q3c-api/order/menhao/delete?webMenhaoId=${id}`, undefined);\n\n/** 新增 */\nexport const addMenhaoOrder = (params: AddMenhaoOrderParams) =>\n ajaxPost(`/q3c-api/order/menhao/add`, params);\n\n/** 编辑 */\nexport const editMenhaoOrder = (params: AddMenhaoOrderParams) =>\n ajaxPost(`/q3c-api//order/menhao/edit`, params);\n\n/** 查看详情 */\nexport const getMenhaoOrderInfo = (id: number) =>\n ajaxPost(`/q3c-api/order/menhao/info?webMenhaoId=${id}`, undefined);\n\n/** 照片保存 */\nexport const savePhoto = (params: SavePhotoParams) =>\n ajaxPost(`/q3c-api/file/uploadIdCard`, params);\n\n/** 返修资讯信息 */\nexport const getRepairInfo = (id: number) =>\n ajaxPost(`/q3c-api/phone/order/return/repair/info?phoneOrderId=${id}`, undefined);\n\n/** 返修资讯信息 */\n\nexport const startRepair = (params: StartRepairParams) =>\n ajaxPost(`/q3c-api/phone/order/return/repair`, params);\n\n/** 查看详情 */\nexport const getPrintPdf = (id: number, printCategory?: string) =>\n ajaxGet(\n `/q3c-api/pdf/print`,\n {\n phoneOrderId: id,\n printCategory,\n },\n {\n responseType: 'blob',\n } as any,\n );\n\nexport const newPhoneStatisticalReportList = (\n params: NewPhoneStatisticalReportListParams & IPaginationParams,\n) =>\n ajaxPost>(\n `/q3c-api/phone/operate/record/list`,\n params,\n );\n\nexport const profitStatisticalReportList = (\n params: ProfitStatisticalReportListParams & IPaginationParams,\n) =>\n ajaxPost>(\n `/q3c-api/phone/order/statistics/list`,\n params,\n );\n\nexport const profitStatisticalReportDetailList = (params: IPaginationParams) =>\n ajaxPost>(\n `/q3c-api/phone/order/statistics/detail/list`,\n params,\n );\n\nexport const newPhoneStatisticalReportCount = (params: NewPhoneStatisticalReportListParams) =>\n ajaxPost(`/q3c-api/phone/operate/record/count`, params);\n","import _ from 'lodash';\nimport { RcFile } from 'antd/es/upload';\nimport { storage } from './local-storage';\nimport { message } from 'antd';\nimport { getImageMinioUrl } from '@/service/second-hand';\n\nconst { apiEnvTargetImgMap, currentNodeEnv } = require('@/setupProxyConfig');\n\nexport function processValue(val: any, unit?: string): string {\n if (val === '—' || val === undefined || val === null || val.toString().trim() === '') {\n return '--';\n }\n return unit ? val + unit : val;\n}\n\n// 数据扁平化处理\nexport function normalizeData(data: any, schema: any) {\n const { id, name } = schema;\n const kvObj = {} as { [index: string]: any };\n const ids: any[] = [];\n if (Array.isArray(data)) {\n data.forEach(item => {\n kvObj[item[id]] = item;\n ids.push(item[id]);\n });\n } else {\n kvObj[data[id]] = data;\n ids.push(data[id]);\n }\n return {\n [name]: kvObj,\n ids,\n };\n}\n\n/**\n *\n * @param phone 电话号码\n * subReg1 = /^([0-9]{2,4}(-)){1,2}[0-9]{6,11}$/ 匹配 86-0771-5333898 or 852-66666666 此类形式电话号码\n * subReg2 = /^[0-9]{10,15}$/ 匹配正常不带符号电话号码\n */\nexport function isTelePhone(phone: string) {\n const reg = /^((([0-9]{2,5}(-)){1,2}[0-9]{6,11})|([0-9]{7,15}))$/;\n return reg.test(phone);\n}\n\nexport function getCookie(key: string) {\n if (document.cookie && document.cookie.length === 0) {\n return '';\n }\n\n const keyStart = document.cookie.indexOf(`${key}=`); // 获取字符串的起\n if (keyStart === -1) {\n return '';\n }\n\n const keyValueStart = keyStart + key.length + 1;\n let keyEnd = document.cookie.indexOf(';', keyValueStart);\n\n if (keyEnd === -1) {\n keyEnd = document.cookie.length;\n }\n\n const keyStr = decodeURI(document.cookie.substring(keyStart, keyEnd));\n\n return keyStr.slice(key.length + 1, keyStr.length);\n}\n\nexport function checkEditRights(permissionList: Array, key: string) {\n // 无权限\n const keys = key.split(',');\n return _.intersection(keys, permissionList).length > 0;\n}\n\n/** 将秒转化mm:ss */\nexport function formatSeconds(secs: number, fillM?: boolean) {\n function pad(num: number) {\n if (num < 10) {\n return `0${num}`;\n }\n return num;\n }\n\n const minutes = Math.floor(secs / 60);\n secs %= 60;\n // minutes = minutes % 60;\n if (minutes > 0) {\n return `${pad(minutes)}分${pad(secs)}秒`;\n }\n if (secs === 0) {\n return `${fillM ? '00分' : ''}00秒`;\n }\n return `${fillM ? '00分' : ''}${pad(secs)}秒`;\n}\n\nexport function secondsFormat(s) {\n const day = Math.floor(s / (24 * 3600)); // Math.floor()向下取整\n const hour = Math.floor((s - day * 24 * 3600) / 3600);\n const minute = Math.floor((s - day * 24 * 3600 - hour * 3600) / 60);\n // const second = s - day * 24 * 3600 - hour * 3600 - minute * 60;\n return day + '天' + hour + '时' + minute + '分';\n}\n\nexport const checkTimeRangeIntersect = (\n timeList: Array<{ startTime: string; endTime: string }>,\n) => {\n timeList.sort((a, b) => (a.startTime > b.startTime ? 1 : -1));\n const list: string[] = [];\n timeList.forEach(item => {\n list.push(item.startTime);\n list.push(item.endTime);\n });\n let result = false;\n list.forEach((value: string, index: number) => {\n if (value > list[index + 1]) {\n result = true;\n return false;\n }\n return true;\n });\n return result;\n};\n\n/** 从url中提取域名 */\nexport const getDominFromUrl = (url: string) => {\n const reg = /(http|https):\\/\\/.*?\\//;\n const res = url.match(reg);\n return Array.isArray(res) ? res[0] : '';\n};\n\nexport const getPercent = (divisor: number, total: number) => {\n if (!divisor || divisor <= 0 || !total || total <= 0) {\n return 0;\n }\n\n const res = ((divisor / total) * 100).toFixed(1);\n return res;\n};\n\n/** 更新元素在数组中的位置 */\nexport function updateItemIndexOfList(list: T[], oldIndex: number, newIndex: number): T[] {\n if (oldIndex === newIndex) {\n return [...list];\n }\n\n // 需要更新index的元素区间\n const interval = (index: number) =>\n oldIndex > newIndex\n ? index >= newIndex && index < oldIndex\n : index > oldIndex && index <= newIndex;\n\n // 区间内元素下标变化值,加1或者减1\n const operatorNum = oldIndex > newIndex ? 1 : -1;\n const newList = list.reduce((pre: T[], cur: T, index: number) => {\n if (index === oldIndex) {\n return pre;\n }\n if (interval(index)) {\n pre[index + operatorNum] = cur;\n } else {\n pre[index] = cur;\n }\n return pre;\n }, []);\n newList[newIndex] = list[oldIndex];\n return newList;\n}\n\n/** 判断两个时间段是否有重叠 */\nexport function isTimeIntersect(rangeA: string[], rangeB: string[]) {\n function timeToNumber(time: string) {\n const [h, m, s] = time.split(':');\n let num = 0;\n if (h && !Number.isNaN(Number(h))) {\n num += Number(h) * 60 * 60;\n }\n if (m && !Number.isNaN(Number(m))) {\n num += Number(m) * 60;\n }\n if (s && !Number.isNaN(Number(s))) {\n num += Number(s);\n }\n return num;\n }\n\n const rangeAStart = timeToNumber(rangeA[0]);\n const rangeAEnd = timeToNumber(rangeA[1]);\n const rangeBStart = timeToNumber(rangeB[0]);\n const rangeBEnd = timeToNumber(rangeB[1]);\n\n if (rangeAEnd < rangeAStart || rangeBEnd < rangeBStart) {\n throw new Error('参数格式不正确,结束时间不能小于开始时间');\n }\n\n const totalLength = rangeAEnd - rangeAStart + rangeBEnd - rangeBStart;\n\n if (rangeAStart > rangeBStart) {\n if (rangeAEnd - rangeBStart < totalLength) {\n return true;\n }\n } else if (rangeBEnd - rangeAStart < totalLength) {\n return true;\n }\n return false;\n}\n\nexport const getQueryStringMap = (url: string) => {\n if (!url) {\n return {};\n }\n if (url.indexOf('?') < 0) {\n return {};\n }\n const urls = url.split('?');\n const search = urls.pop() || '';\n const query = {} as { [index: string]: any };\n search.split('&').forEach(item => {\n const [name, value] = item.split('=');\n query[name] = value;\n });\n return query;\n};\n\nexport const getQueryString = (query: object) => {\n const list: string[] = [];\n _.forEach(query, (val: string, key: string) => {\n list.push(`${key || ''}=${val || ''}`);\n });\n return list.join('&');\n};\n\nexport const display = (show: boolean) => ({ display: show ? 'block' : 'none' });\n\nexport const getWholeHost = (port?: number) => {\n let host = window.location.host;\n if (host.includes(':')) {\n host = `${host.split(':')[0]}:${port}`;\n }\n return `${window.location.protocol}//${host}`;\n};\n\n/**\n * 解析URL search\n * @param {string} [str] 要解析的字符串\n * @param {Boolean} [isDecode] 是否decode\n * @return {object}\n */\nexport function parseQuery(str: string, isDecode?: boolean) {\n str = str || window.location.search;\n isDecode = isDecode === undefined ? true : isDecode;\n const ary = str.split(/[?&]/);\n const result = {} as { [index: string]: any };\n for (let i = 0, j = ary.length; i < j; i += 1) {\n const n = ary[i];\n if (!n) {\n // eslint-disable-next-line no-continue\n continue;\n }\n const tmp = n.split('=');\n result[tmp[0]] = isDecode && !!tmp[1] ? decodeURIComponent(tmp[1]) : tmp[1];\n }\n return result;\n}\n\nexport function queryString(obj: { [index: string]: any } = {}) {\n const encode = encodeURIComponent;\n return Object.keys(obj)\n .map(k => `${encode(k)}=${encode(obj[k])}`)\n .join('&');\n}\n\nexport const filterText = (test: string) => (test === '~' ? '无意义语句走默认' : test);\n\n/**\n * 判断dom元素实际内容是否超出展示内容\n * @param el dom元素(不能是inline元素)\n */\nexport const isElementTextOverflow = (el: HTMLElement | null) => {\n if (!el) {\n return false;\n }\n const range = document.createRange();\n range.setStart(el, 0);\n range.setEnd(el, el.childNodes.length);\n const rangeWidth = Math.floor(range.getBoundingClientRect().width || 0);\n\n return rangeWidth > el.offsetWidth || el.scrollWidth > el.offsetWidth;\n};\n\n// 判断 h5 环境\nexport const ISH52 =\n /iPhone|Android|Mobile/i.test(navigator.userAgent) ||\n (/iPad|Safari/i.test(navigator.userAgent) && !/Chrome/i.test(navigator.userAgent));\n\nexport const ISH5 =\n storage.getItem('my-user-agent') !== null ? storage.getItem('my-user-agent') !== '0' : ISH52;\n\nexport const checkSncode = (code: string, isSMode?: boolean, sModeCheck?: boolean) => {\n // 默认是开启截取 S 的\n const _isSMode = typeof isSMode === 'boolean' ? isSMode : true;\n const _sModeCheck = typeof sModeCheck === 'boolean' ? sModeCheck : false;\n\n if (!code) {\n return false;\n }\n // 开启截取 S 模式\n if (_isSMode) {\n if ([8, 10, 12, 14, 15, 16, 17, 19, 20].includes(code.length)) {\n return code;\n }\n const curCode = code.toLocaleUpperCase();\n if (\n (curCode.length === 11 && curCode.indexOf('S') === 0) ||\n (curCode.length === 13 && curCode.indexOf('S') === 0) ||\n (curCode.length === 18 && curCode.indexOf('S') === 0) ||\n (curCode.length === 19 && curCode.indexOf('S') === 0)\n ) {\n return curCode.substring(1);\n }\n //\n if ([11, 13, 18, 19].includes(curCode.length)) {\n message.error('序號格式不符合蘋果新盒,請檢查');\n return false;\n }\n } else {\n if ([8, 10, 11, 12, 14, 15, 16, 17, 18, 20, 22, 23].includes(code.length)) {\n const curCode = code.toLocaleUpperCase();\n if (\n _sModeCheck &&\n ((curCode.length === 11 && curCode.indexOf('S') === 0) ||\n (curCode.length === 13 && curCode.indexOf('S') === 0) ||\n (curCode.length === 18 && curCode.indexOf('S') === 0))\n ) {\n message.error({\n content: (\n
    \n

    系統識別到當前序列格式可能是蘋果新盒S開頭序號。

    \n

    如果是蘋果新盒請打開截取S模式。

    \n

    如果非蘋果產品,請取消勾選序號格式檢查開關後繼續操作。

    \n
    \n ),\n // duration: 6,\n });\n return false;\n }\n return code;\n }\n }\n\n message.error('無效的snCode');\n return false;\n};\n\nexport const checkNumber = num => /^[0-9]+.?[0-9]*$/.test(num);\n\nexport const downLoadFile = (res, title) => {\n const blob = new Blob(res);\n const fileName = `${title}`;\n const alink = document.createElement('a');\n alink.download = fileName;\n alink.style.display = 'none';\n alink.href = URL.createObjectURL(blob); // 这里是将文件流转化为一个文件地址\n document.body.appendChild(alink);\n alink.click();\n URL.revokeObjectURL(alink.href); // 释放URL 对象\n document.body.removeChild(alink);\n};\n\nexport const downloadUrl = (url: string, fileName: string) => {\n const alink = document.createElement('a');\n alink.download = fileName;\n alink.style.display = 'none';\n alink.href = url;\n document.body.appendChild(alink);\n alink.click();\n document.body.removeChild(alink);\n};\n\nexport const dealTime = (sTime, eTime?) => {\n // @ts-ignore\n const diff = parseInt(((eTime ? new Date(eTime) : new Date()) - new Date(sTime)) / 1000); // 取秒數\n const h = Math.floor(diff / 3600);\n const m = Math.floor((diff - h * 3600) / 60);\n const s = (diff % 3600) % 60;\n return h ? `${h}小時${m}分${s}秒` : `${m}分${s}秒`;\n};\n\nexport const getBase64 = (file: RcFile): Promise =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = error => reject(error);\n });\n\n// 不是重要图片\nexport const dealSimpleMinioImgUrl = url => {\n if (!url) {\n return '';\n }\n if (url.includes('//')) {\n return url;\n }\n return `${apiEnvTargetImgMap[currentNodeEnv]}/${url}`;\n};\n\nexport const dealSecretMinioImgUrl = async url => {\n if (!url) {\n return '';\n }\n if (url.includes('//')) {\n return url;\n }\n // 重要图片\n const res = await getImageMinioUrl({ fileName: url });\n if (res) {\n return res as string;\n }\n return '';\n};\n\n// 去掉域名信息\nexport const cutPrefixImgUrl = url => {\n // 去掉前面的域名\n if (url.includes('/common/')) {\n return url.match(/common\\/(\\S*)/)[1];\n }\n return url;\n};\n","/**\n * @Author: haimian\n * @Description: 空组件\n * @Date: 2021-07-22\n */\nimport React from 'react';\nimport { Empty as AntdEmpty } from 'antd';\nimport { EmptyProps } from 'antd/lib/empty';\n\nexport const MyEmpty = () => ;\n\nexport const Empty = (props: EmptyProps) => (\n \n);\n","import { useEffect, useState } from 'react';\nimport { RoleDataSourceItem } from '@/service/interface/user';\nimport { getUserRoleList } from '@/service/user';\n\nfunction useRole() {\n const [roleList, setRoleList] = useState([]);\n useEffect(() => {\n fetchRole();\n }, []);\n\n const fetchRole = async () => {\n const res = await getUserRoleList({\n pageNum: 1,\n pageSize: 9999,\n });\n if (res) {\n setRoleList(\n (res.records || []).map(item => ({\n label: item.roleName,\n value: item.id,\n })),\n );\n }\n };\n return roleList;\n}\n\nexport default useRole;\n","import { ajaxGet, ajaxPost } from '@/utils/ajax';\nimport { CreatePaymentRes, IClusterNodeList, IEcpayInfo } from './interface/booking';\nimport { IPaginationParams, IPaginationRes } from './interface/commom';\n\n/** 通知列表 */\nexport const webMessageList = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/usr/webMessage/list', params);\n\n/** 单条通知 */\nexport const getWebMessageInfo = params =>\n ajaxPost<{ desc: string; id: number }>(\n `/q3c-api/usr/webMessage/info?webMessageId=${params.id}`,\n undefined,\n );\n\n/** 编辑通知 */\nexport const editWebMessageInfo = (params: { desc: string; id: number | null }) =>\n ajaxPost('/q3c-api/usr/webMessage/edit', params);\n\n/** 預約通知列表 */\nexport const webBookingMessageList = (params: IPaginationParams & { isVip: boolean }) =>\n ajaxPost>('/q3c-api/usr/webBookingMessage/list', params);\n\n/** 单条通知 */\nexport const getWebBookingMessageInfo = params =>\n ajaxPost<{ desc: string; id: number }>(\n `/q3c-api/usr/webBookingMessage/info?webBookingMessageId=${params.id}`,\n undefined,\n );\n\n/** 编辑通知 */\nexport const editWebBookingMessageInfo = (params: {\n desc: string;\n id: number | null;\n isVip: boolean;\n}) => ajaxPost('/q3c-api/usr/webBookingMessage/edit', params);\n\n/** 获取支付token */\nexport const getPaymentToken = (params: { orderId: string }) =>\n ajaxPost(\n `/q3c-api/ec/pay/getMerchantToken?orderId=${params.orderId}&category=12`,\n undefined,\n );\n\n/** 发起支付 */\nexport const createPayment = (params: { orderId: string; payToken: string }) =>\n ajaxPost('/q3c-api/ec/pay/createPayment', params);\n\n/** ecpay详情 */\nexport const getEcpayInfo = (params: { tradeNo: string }) =>\n ajaxPost(`/q3c-api/ec/pay/info?tradeNo=${params.tradeNo}`, {});\n\n/** 獲取集群信息 & 集群節點信息接口 */\nexport const getClusterNodeList = () => {\n return (ajaxGet('/q3c-api/clusterStateReading/listNode') as unknown) as Promise;\n};\n\n/** 打開|關閉 集群簡訊報警 */\nexport const switchClusterSms = (params: { enableFlag: boolean }) => {\n return ajaxPost('/q3c-api/clusterStateReading/openCloseSmsSend', params);\n};\n","import { ajaxPost, ajaxGet } from '@/utils/ajax';\nimport { IPaginationParams, IPaginationRes } from './interface/commom';\nimport {\n AddPhoneParams,\n AddUpcItem,\n EditOldPhonePrice,\n EditPhoneParams,\n GetProfitParams,\n LevelThreeItem,\n PhoneRamItem,\n PhoneTypeAll,\n ProfitInfo,\n RamType,\n WebOldPriceItem,\n WebOldPriceParams,\n WebOldupcItem,\n WebPriceItem,\n WebUpcItem,\n WebUpcParams,\n} from './interface/my-set.d';\n\n/** 获取手机品牌 */\nexport const phoneTypeList = () => ajaxPost('/q3c-api/phone/tree/all', undefined);\n/** 所有机型 */\nexport const phoneTypeListAll = () => ajaxPost('/q3c-api/phone/tree/listAll', undefined);\n\n/** 手机品牌列表 */\nexport const phoneTypeInfo = (id: number, levelFourAll?: boolean) =>\n ajaxPost(`/q3c-api/phone/tree/info?webAttributesId=${id}`, { levelFourAll });\n\n/** 手机levelThree列表 */\nexport const getLevelThreeInfo = () =>\n ajaxPost>(`/q3c-api/phone/tree/list`, {\n attributesType: 3,\n pageSize: 9999,\n });\n\n/** 获取新机价格设定列表 */\nexport const getWebPriceList = (params: { levelThree: number } & IPaginationParams) =>\n ajaxPost>('/q3c-api/phone/webPrice/list', params);\n\n/** 获取二手机价格设定列表 */\nexport const getWebOldPriceList = (params: WebOldPriceParams & IPaginationParams) =>\n ajaxPost>('/q3c-api/phone/webOldupc/list', params);\n\n/** 获取二手机回收列表 */\nexport const getWebOldHuiShouPriceList = (params: any) =>\n ajaxPost>('/q3c-api/oldupc/recovery/price/list', params);\n\n/** 手机品牌列表 */\nexport const webPriceSubmit = (params: { id: number; nowPrice: number; skuId: number }[]) =>\n ajaxPost(`/q3c-api/phone/webPrice/submit`, params);\n\n/** 机型内存设定列表 */\nexport const getPhoneRamList = (params: { parentId: number } & IPaginationParams) =>\n ajaxPost>('/q3c-api/phone/ram/list', params);\n\n/** 机型内存设定 */\nexport const submitOpenRam = (params: { id: number; open: boolean; ramType: RamType }) =>\n ajaxPost(`/q3c-api/phone/ram/openRam`, params);\n\n/** 获取二手 upc 列表 */\nexport const getWebOldupc = (params: { upcCode: string } & IPaginationParams) =>\n ajaxPost>('/q3c-api/phone/webOldupc/list', params);\n\n/** 导出 */\nexport const exportOpenRam = () => ajaxGet(`/q3c-api/phone/webOldupc/template/export`);\n\n/** 获取新机 upc 列表 */\nexport const getWebUpc = (params: WebUpcParams & IPaginationParams) =>\n ajaxPost>('/q3c-api/phone/webUpc/list', params);\n\n/** 导出 upc */\nexport const exportUpc = () => ajaxGet('/q3c-api/phone/webUpc/template/export', undefined);\n\n/** 新增 upc */\nexport const addUpc = (params: AddUpcItem) => ajaxPost('/q3c-api/phone/webUpc/add', params);\n\n/** 编辑 upc */\nexport const editUpc = (params: AddUpcItem) => ajaxPost('/q3c-api/phone/webUpc/edit', params);\n\n/** upc */\nexport const commitUpc = (params: { skuId?: number; upcCode: string }) =>\n ajaxPost('/q3c-api/phone/webUpc/commit', params);\n\n/** 编辑 二手价格 */\nexport const editWebOldupc = (params: EditOldPhonePrice) =>\n ajaxPost('/q3c-api/phone/webOldupc/edit', params);\n\nexport const editWebHuiShouOldupc = (params: any) =>\n ajaxPost('/q3c-api/oldupc/recovery/price/edit', params);\n\n/** 编辑 机型 */\nexport const addPhone = (params: AddPhoneParams) => ajaxPost('/q3c-api/phone/tree/add', params);\n\n/** 编辑 机型 */\nexport const editPhone = (params: EditPhoneParams) => ajaxPost('/q3c-api/phone/tree/edit', params);\n\n/** 型号机型上传图片 */\nexport const uploadMainImg = (params: { id: number; mainUrl: string }) =>\n ajaxPost('/q3c-api/phone/tree/mainImage', params);\n\n/** 颜色机型上传图片 */\nexport const uploadPhoneImg = (params: { id: number; imageUrl: string }) =>\n ajaxPost('/q3c-api/phone/tree/subImage', params);\n\n/** 选择机型 */\nexport const setMachineType = (params: {\n id: number;\n machineTypeId: string;\n machineTypeName: string;\n}) => ajaxPost('/q3c-api/phone/tree/machine/type', params);\n\n/** 总仓调货建议 */\nexport const allShopTransfer = () =>\n ajaxPost('/q3c-api/transfer/commit/recommend', undefined);\n\n/** 确认总仓调货建议 */\nexport const commitAllShopTransfer = () =>\n ajaxPost('/q3c-api/transfer/commit/recommend/commit', undefined);\n\n/** 利潤 */\nexport const getProfit = (params: GetProfitParams) =>\n ajaxPost('/q3c-api/phone/order/repair/profit', params);\n","import { GroupDataSourceItem } from '@/service/interface/user';\nimport { getGroupList } from '@/service/user';\nimport { useEffect, useState } from 'react';\n\nfunction useGroup() {\n const [groupList, setGroupList] = useState([]);\n useEffect(() => {\n fetchGroup();\n }, []);\n\n const fetchGroup = async () => {\n const res = await getGroupList({\n pageNum: 1,\n pageSize: 9999,\n });\n if (res) {\n setGroupList(\n (res.records || []).map(item => ({\n label: item.groupName,\n value: item.id,\n })),\n );\n }\n };\n return groupList;\n}\n\nexport default useGroup;\n","import styled from 'styled-components';\n\nconst ColorSpan = styled.span<{ isGreen?: boolean }>`\n color: ${({ isGreen, theme }) => (isGreen ? 'green' : 'red')};\n`;\n\nexport default ColorSpan;\n","const IS_LOCAL = process.env.NODE_ENV === 'development';\n\nconst apiEnvTargetMap = {\n // development: 'http://115.205.193.91:9000',\n development: 'http://willyhzt.myds.me:82',\n // development: 'http://willyh.myds.me:9000',\n taiwan: '//127.0.0.1:80',\n // production: 'http://47.242.92.13:9000',\n production : '//java.q3c.tw',\n newProduction: IS_LOCAL ? 'https://new.q3c.tw' : '//new.q3c.tw',\n // production: 'http://java.q3c.tw:9000',\n};\n\nconst apiEnvTargetImgMap = {\n development : '//willyhzt.myds.me:9100/common',\n production : '//java.q3c.tw:9100/common',\n newProduction: '//new.q3c.tw:9100/common',\n};\n\nconst currentNodeEnv = process.env.REACT_APP_API_ENV || 'development';\n\nconst apiList = ['/q3c-api/'];\n\nmodule.exports = {\n apiEnvTargetMap,\n currentNodeEnv,\n apiList,\n apiEnvTargetImgMap,\n IS_LOCAL,\n};\n","/** 通用分页返回参数 */\nexport interface IPaginationRes {\n records: T[];\n current: number; // 当前页数\n pages: number;\n size: number;\n total: number;\n [key: string]: any;\n}\n\n/** 通用分页查询参数 */\nexport interface IPaginationParams {\n pageNum: number;\n pageSize: number;\n}\n\nexport interface LabelVallue {\n label: string;\n value: number;\n}\n\n/**\n * 修改个人信息,图片上传 100\n * 账户信息 100\n * 身份证 101\n * 验机底图 102\n * 签名图 103 //\n * Q卡套餐维护协议文件 104\n * 其他图片-阿里云 105\n * excel导入 106\n * 留机图片 现场维修图片等 107\n * 二手機照片拍攝 108\n * 销售开单里面,检测外觀有無瑕疵的验机图片 200\n * 留机/收机管理中,验机报告 text 文件 201\n * 机型类型设定页面中图片-3级图 202\n * 机型设定中,图片上传-4级图 202\n * 订单图片 留机/收机管理中,图片上传 203\n * 全门市二手机中,图片 204\n * 配件导入-新的mallbicerp商品图片 205\n * 其他图片-台湾 206\n */\n\nexport enum NewImageType {\n '100' = 100,\n '101' = 101,\n '102' = 102,\n '103' = 103,\n '104' = 104,\n '105' = 105,\n '106' = 106,\n '107' = 107,\n '108' = 108,\n '200' = 200,\n '201' = 201,\n '202' = 202,\n '203' = 203,\n '204' = 204,\n '205' = 205,\n '206' = 206,\n}\n","import React, { FC } from 'react';\nimport { Form, Upload, Modal, message } from 'antd';\nimport { getToken } from '@/utils/cookies';\nimport { useLanguage } from '@/hooks/useLanguage';\nimport { PlusOutlined } from '@ant-design/icons';\nimport { NewImageType } from '@/service/interface/commom.d';\n\nconst { apiEnvTargetMap, currentNodeEnv } = require('@/setupProxyConfig');\n\ninterface Props {\n disable?: boolean;\n maxNum?: number;\n title?: string | any;\n extra?: string;\n accept?: string;\n validateSizeParams?: {\n width: number;\n height: number;\n overSize: number;\n };\n imageType: NewImageType;\n fileList: FileItem[] | undefined;\n handleSetImageUrl: (val: string) => void;\n handleSetFileList: (val) => void;\n}\n\ninterface FileItem {\n uid: string;\n name: string;\n status: string;\n url: string;\n}\n\nconst MyUpload: FC = ({\n imageType,\n accept = 'image/jpg, image/jpeg, image/png,',\n title = '',\n extra = '',\n fileList,\n disable,\n handleSetImageUrl,\n handleSetFileList,\n validateSizeParams,\n}) => {\n const lal = useLanguage();\n const {\n common: { error, uploadImg, success },\n mpSet: { mainImgUpload },\n secondHand: { imgUpload },\n } = lal;\n\n const handleBeforeUpload = async file => {\n if (file.size > 5 * 1024 * 1024) {\n Modal.warning({\n content:
    {extra || uploadImg}
    ,\n });\n return false;\n }\n if (validateSizeParams) {\n const res = (await validateSize(file, validateSizeParams)) as Promise;\n return res;\n } else {\n return true;\n }\n };\n\n const validateSize = (file, { width, height, overSize }) => {\n return new Promise(resolve => {\n let _URL = window.URL || window.webkitURL;\n let img = new Image();\n img.onload = () => {\n let valid =\n img.width > width + overSize ||\n img.height > height + overSize ||\n img.width < width - overSize ||\n img.height < height - overSize;\n if (valid) {\n message.error('图片尺寸不符合要求,请修改后重新上传!');\n return resolve(false);\n }\n return resolve(true);\n };\n img.src = _URL.createObjectURL(file);\n });\n };\n\n const uploadImgOnChange = info => {\n if (info.file.status === 'done') {\n message.success(`${info.file.name}上傳${success}`);\n try {\n handleSetImageUrl(JSON.parse(info.file.xhr.response)?.result || '');\n } catch (er) {\n console.error(er);\n }\n } else if (info.file.status === 'error') {\n message.error(`${info.file.name}上傳${error}`);\n }\n };\n\n return (\n \n {\n handleSetImageUrl('');\n handleSetFileList([]);\n }}\n >\n
    \n \n
    上傳
    \n
    \n \n
    \n );\n};\n\nexport default MyUpload;\n","import Crypto from 'crypto-js'\n\nexport const enCryptoByDes = function (params) {\n // 第一步字符串化\n let key = Crypto.enc.Utf8.parse('L5IRTNDW')\n let iv = Crypto.enc.Hex.parse('0102030405060708')\n let paramsStr = typeof params === 'string' ? params : JSON.stringify(params)\n paramsStr = Crypto.enc.Utf8.parse(paramsStr)\n paramsStr = Crypto.DES.encrypt(paramsStr, key, {\n iv,\n })\n return paramsStr.toString()\n}\n\nexport const deCryptoByDes = (str) => {\n let key = Crypto.enc.Utf8.parse('L5IRTNDW')\n let iv = Crypto.enc.Hex.parse('0102030405060708')\n str = Crypto.DES.decrypt(str, key, {\n iv,\n })\n return str.toString(Crypto.enc.Utf8)\n}\n\nexport const encodeByMd5 = (signStr) => {\n return Crypto.MD5(signStr).toString()\n}\n","import { ajaxGet, ajaxPost } from '@/utils/ajax';\nimport { IPaginationParams, IPaginationRes } from './interface/commom';\nimport {\n LoginParams,\n UserInfo,\n ChangePwdParams,\n RefreshTimeType,\n LanguageType,\n MenuItem,\n RoleItem,\n AddRoleParams,\n GroupItem,\n UserParams,\n UserItem,\n UserStatus,\n AddUserItem,\n MenuType,\n WebWarrantyItem,\n WebPayItem,\n WebStagesItem,\n WebRepairstatusItem,\n WebShopsItem,\n WebSupplierItem,\n WebStoreSetTimeParams,\n BannerItem,\n MachineItem,\n QItem,\n QPackage,\n QContract,\n QListParams,\n QListItem,\n UsageQParams,\n QCheckParams,\n AgentType,\n ImportInfoItem,\n BizType,\n QDistributionListParams,\n QDistributionListItem,\n DeliverQParams,\n ReissueQParams,\n TransferQParams,\n QPackageListParams,\n RegularCustomerItem,\n QUseItem,\n QRecovery,\n AddQUseNumParams,\n AccessParams,\n AccessItem,\n ChangeGroupParams,\n MaintenanceGroupItem,\n MaintenanceWithoutGroupItem,\n SortVOItem,\n SimDistributionListParams,\n SimDistributionListItem,\n SimPackage,\n SimPackageListParams,\n SimListParams,\n SimListItem,\n OutWebShopsItem,\n PrintTemplateItem,\n ExcelTemplateItem,\n} from './interface/user.d';\n\n/** 返回旧版 */\nexport const goPreWebsite = () => ajaxGet('/q3c-api/usr/user/redirect/php');\n\n/** 可用期数 */\nexport const goSimCardCombo = () => ajaxGet('/q3c-api/simCard/combo/listPeriod');\n\n/** 用户登录 */\nexport const submitLogin = (params: LoginParams) =>\n ajaxPost('/q3c-api/usr/user/login', params);\n\nexport const sendLoginV2VerificationCode = params =>\n ajaxGet(`/q3c-api/usr/user/v2/sendLoginV2VerificationCode?account=${params.account}`, undefined);\n\nexport const verifyLoginV2SentVerificationCode = params =>\n ajaxGet(\n `/q3c-api/usr/user/v2/verifyLoginV2SentVerificationCode?account=${params.account}&verificationCode=${params.verificationCode}&agentType=${params.agentType}`,\n undefined,\n );\n\nexport const submitLogin2 = (params: LoginParams) =>\n ajaxPost('/q3c-api/usr/user/v2/login', params);\n\n/** 用户登出 */\nexport const logout = (params: { agentType: AgentType }) =>\n ajaxPost('/q3c-api/usr/user/quit', params);\n\n/** 获取用户信息 */\nexport const getUserInfo = (params: { token: string | undefined }) =>\n ajaxPost('/q3c-api/usr/user/getUserByToken', params);\n\n/** 修改用户密码 */\nexport const changePwd = (params: ChangePwdParams) =>\n ajaxPost('/q3c-api/usr/user/editPassword', params);\n\n/** 切換分組 */\nexport const changeGroup = (params: ChangeGroupParams) =>\n ajaxPost('/q3c-api/usr/user/change/group', params);\n\n/** 更新页面刷新时间 */\nexport const changeRefreshTime = (params: { refreshMin: RefreshTimeType }) =>\n ajaxPost(`/q3c-api/usr/user/change/refreshMin?refreshMin=${params.refreshMin}`, undefined);\n\n/** 修改用户语言 */\nexport const changeLanguage = (params: { languageType: LanguageType }) =>\n ajaxPost(`/q3c-api/usr/user/change/language?languageType=${params.languageType}`, undefined);\n\n/** 根据当前用户获取菜单 */\nexport const getMenuListByToken = () =>\n ajaxPost('/q3c-api/usr/menu/getMenuListByToken?rootType=137', undefined);\n\nexport const getErpMenuListByToken = () =>\n ajaxPost('/q3c-api/usr/menu/getMenuListByToken?rootType=138', undefined);\n\n/** 获取所有菜单 */\nexport const getAllMenuList = () => ajaxPost('/q3c-api/usr/menu/list', undefined);\n\n/** 角色管理列表 */\nexport const getUserRoleList = (\n params: { roleName?: string | undefined; ignoreSupperRole?: boolean } & IPaginationParams,\n) => ajaxPost>('/q3c-api/usr/role/list', params);\n\nexport const getUserLoginLogList = (\n params: { roleName?: string | undefined; ignoreSupperRole?: boolean } & IPaginationParams,\n) => ajaxPost>('/q3c-api/systemLoginLog/page', params);\n\n/** 删除角色 */\nexport const deleteRole = (roleId: number) =>\n ajaxPost(`/q3c-api/usr/role/delete?roleId=${roleId}`, undefined);\n\n/** 添加角色 */\nexport const addRole = (params: AddRoleParams) => ajaxPost(`/q3c-api/usr/role/add`, params);\n\n/** 编辑角色 */\nexport const editRole = (params: { menuIdList: string[] } & RoleItem) =>\n ajaxPost(`/q3c-api/usr/role/edit`, params);\n\n/** 获取角色信息 */\nexport const getRoleInfo = (roleId: number) =>\n ajaxPost<{ menuIdList: number[] }>(`/q3c-api/usr/role/info?roleId=${roleId}`, undefined);\n\n/** 获取地区分组 */\nexport const getGroupList = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/usr/webGroup/list', params);\n\n/** 获取維修分组 */\nexport const getMaintenanceGroupList = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/usr/repair/group/list', params);\n\n/** 获取維修分组 */\nexport const getMaintenanceWithoutGroupList = () =>\n ajaxPost('/q3c-api/usr/repair/group/without', undefined);\n\n/** 添加权限 */\nexport const commitGroup = (params: { id: number; userIdList: number[] }[]) =>\n ajaxPost(`/q3c-api/usr/repair/group/commit`, params);\n\n/** 获取权限 */\nexport const getAccessList = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/usr/button/list', params);\n\n/** 添加权限 */\nexport const addAccess = (params: AccessParams) => ajaxPost(`/q3c-api/usr/button/add`, params);\n\n/** 编辑权限 */\nexport const editAccess = (params: AccessParams) => ajaxPost(`/q3c-api/usr/button/edit`, params);\n\n/** 添加组 */\nexport const addGroup = (params: { note: string; groupName: string }) =>\n ajaxPost(`/q3c-api/usr/webGroup/add`, params);\n\n/** 编辑组 */\nexport const editGroup = (params: { id: number; note: string; groupName: string }) =>\n ajaxPost(`/q3c-api/usr/webGroup/edit`, params);\n\n/** 添加维修组 */\nexport const addMaintenanceGroup = (params: {\n remark: string;\n repairGroupName: string;\n joinAllocate: boolean;\n}) => ajaxPost(`/q3c-api/usr/repair/group/add`, params);\n\n/** 编辑维修组 */\nexport const editMaintenanceGroup = (params: {\n id: number;\n remark: string;\n repairGroupName: string;\n joinAllocate: boolean;\n}) => ajaxPost(`/q3c-api/usr/repair/group/edit`, params);\n\n/** 删除组 */\nexport const deleteGroup = (webGroupId: number) =>\n ajaxPost(`/q3c-api/usr/webGroup/delete?webGroupId=${webGroupId}`, undefined);\n\n/** 删除维修组 */\nexport const deleteMaintenanceGroup = (repairGroupId: number) =>\n ajaxPost(`/q3c-api/usr/repair/group/delete?repairGroupId=${repairGroupId}`, undefined);\n\n/** 获取分组信息 */\nexport const fetchGroupInfo = (webGroupId: number) =>\n ajaxPost<{ menuIdList: number[] }>(\n `/q3c-api/usr/webGroup/info?webGroupId=${webGroupId}`,\n undefined,\n );\n\n/** 获取地区分组 */\nexport const getUserList = (params: UserParams & IPaginationParams) =>\n ajaxPost>('/q3c-api/usr/user/list', params);\n\nexport const changeUserLoginSecondaryVerificationUser = params =>\n ajaxPost(`/q3c-api/usr/user/changeUserLoginSecondaryVerification`, { enable: params.enable });\n\nexport const singleChangeUserLoginSecondaryVerificationUser = params =>\n ajaxPost(`/q3c-api/usr/user/changeOneUserLoginSecondaryVerification`, {\n enable: params.enable,\n id: params.id,\n });\n\nexport const getUserInfoConfigCode = () =>\n ajaxPost(\n `/q3c-api/usr/config/getInfo?configCode=user_login_secondary_verification&configType=1 `,\n undefined,\n );\n\n/** 删除用户 */\nexport const deleteUser = (userId: number) =>\n ajaxPost(`/q3c-api/usr/user/delete?userId=${userId}`, undefined);\n\n/** 修改用户状态 */\nexport const changeUserStatus = (params: { userId: number; userStatus: UserStatus }) =>\n ajaxPost(\n `/q3c-api/usr/user/changeStatus?userId=${params.userId}&userStatus=${params.userStatus}`,\n undefined,\n );\n\n/** 添加用户*/\nexport const addUser = (params: AddUserItem) => ajaxPost(`/q3c-api/usr/user/add`, params);\n\n/** 编辑用户 */\nexport const editUser = (params: { id: number; note?: string; groupName?: string }) =>\n ajaxPost(`/q3c-api/usr/user/edit`, params);\n\n/** 修改密码 */\nexport const editPwd = (params: { id: number; account: string; password: string }) =>\n ajaxPost(`/q3c-api/usr/user/editPassword`, params);\n\n/** 获取信息 */\nexport const hanldeGetUserInfo = (userId: number) =>\n ajaxPost(`/q3c-api/usr/user/info?userId=${userId}`, undefined);\n\n/** 删除菜單 */\nexport const deleteMenu = (menuId: number) =>\n ajaxPost(`/q3c-api/usr/menu/delete?menuId=${menuId}`, undefined);\n\n/** 编辑菜单 */\nexport const editMenu = (params: MenuItem) => ajaxPost(`/q3c-api/usr/menu/edit`, params);\n\n/** 编辑菜单 */\nexport const addMenu = (params: {\n menuName: string;\n menuType: MenuType;\n parentId: number | null | undefined;\n perms: string;\n sort?: number;\n}) => ajaxPost(`/q3c-api/usr/menu/add`, params);\n\n/** 获取保修时长列表 */\nexport const getWebWarrantyList = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/usr/webWarranty/list', params);\n\n/** 添加保修时长 */\nexport const addWebWarranty = (params: WebWarrantyItem) =>\n ajaxPost(`/q3c-api/usr/webWarranty/add`, params);\n\n/** 编辑保修时长 */\nexport const editWebWarranty = (params: WebWarrantyItem) =>\n ajaxPost(`/q3c-api/usr/webWarranty/edit`, params);\n\n/** 删除保修时长 */\nexport const deleteWebWarranty = (id: number) =>\n ajaxPost(`/q3c-api/usr/webWarranty/delete?webWarrantyId=${id}`, undefined);\n\n/** 获取付款方式列表 */\nexport const getWebPayList = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/usr/webPay/list', params);\n\nexport const getDiscountList = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/usr/discount/list', params);\n\nexport const getDiscountReasonList = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/usr/discount/reason/list', params);\n\n/** 添加付款方式 */\nexport const addWebPay = (params: WebWarrantyItem) => ajaxPost(`/q3c-api/usr/webPay/add`, params);\n\nexport const addDiscount = params => ajaxPost(`/q3c-api/usr/discount/add`, params);\n\nexport const addDiscountReason = params => ajaxPost(`/q3c-api/usr/discount/reason/add`, params);\n\n/** 编辑付款方式 */\nexport const editWebPay = (params: WebWarrantyItem) => ajaxPost(`/q3c-api/usr/webPay/edit`, params);\n\nexport const editDiscount = params => ajaxPost(`/q3c-api/usr/discount/edit`, params);\n\nexport const editDiscountReason = params => ajaxPost(`/q3c-api/usr/discount/reason/edit`, params);\n\n/** 删除付款方式 */\nexport const deleteWebPay = (id: number) =>\n ajaxPost(`/q3c-api/usr/webPay/delete?webPayId=${id}`, undefined);\n\nexport const deleteDiscount = (id: number) =>\n ajaxPost(`/q3c-api/usr/discount/delete?webDiscountId=${id}`, undefined);\n\nexport const deleteDiscountReason = (id: number) =>\n ajaxPost(`/q3c-api/usr/discount/reason/delete?webDiscountReasonId=${id}`, undefined);\n\n/** 获取分期方式列表 */\nexport const getWebStagesList = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/usr/webStages/list', params);\n\n/** 获取分期方式列表 */\nexport const getToggleReserve = () =>\n ajaxPost>(`/q3c-api/usr/config/open/reserve`, undefined);\n\nexport const toggleReserve = (configValue: boolean) =>\n ajaxPost>(\n `/q3c-api/usr/config/open/reserve?configValue=${configValue}`,\n undefined,\n );\n\n/** 添加分期方式 */\nexport const addWebStages = (params: WebStagesItem) =>\n ajaxPost(`/q3c-api/usr/webStages/add`, params);\n\n/** 编辑分期方式 */\nexport const editWebStages = (params: WebStagesItem) =>\n ajaxPost(`/q3c-api/usr/webStages/edit`, params);\n\n/** 删除分期方式 */\nexport const deleteWebStages = (id: number) =>\n ajaxPost(`/q3c-api/usr/webStages/delete?webStagesId=${id}`, undefined);\n\n/** 获取维修状态列表 */\nexport const getWebRepairstatusList = (params: { statusPid: string } & IPaginationParams) =>\n ajaxPost>('/q3c-api/usr/webRepairstatus/list', params);\n\n/** 添加维修状态 */\nexport const addWebRepairstatus = (params: WebRepairstatusItem) =>\n ajaxPost(`/q3c-api/usr/webRepairstatus/add`, params);\n\n/** 编辑维修状态 */\nexport const editWebRepairstatus = (params: WebRepairstatusItem) =>\n ajaxPost(`/q3c-api/usr/webRepairstatus/edit`, params);\n\n/** 删除维修状态 */\nexport const deleteWebRepairstatus = (id: number) =>\n ajaxPost(`/q3c-api/usr/webRepairstatus/delete?webRepairstatusId=${id}`, undefined);\n\n/** 门市权重排序 */\nexport const sortGroup = (params: SortVOItem[]) =>\n ajaxPost(`/q3c-api/usr/webShops/commit/sort`, params);\n\n/** 获取门市列表 */\nexport const getWebShopsList = (\n params: { statusPid?: string; orderType?: number; shopTypeList?: number[] } & IPaginationParams,\n) => ajaxPost>('/q3c-api/usr/webShops/list', params);\n\n/** 获取外部门市列表 */\nexport const getOutWebShopsList = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/saleAccountConfiguration/list', params);\n\n/** 添加门市 */\nexport const addWebShops = (params: WebShopsItem) => ajaxPost(`/q3c-api/usr/webShops/add`, params);\n\n/** 保存外部门市 */\nexport const saveOutWebShops = (params: OutWebShopsItem) =>\n ajaxPost(`/q3c-api/saleAccountConfiguration/saveStore`, params);\n\n/** 编辑门市 */\nexport const editWebShops = (params: WebShopsItem) =>\n ajaxPost(`/q3c-api/usr/webShops/edit`, params);\n\n/** 删除门市 */\nexport const deleteWebShops = (id: number) =>\n ajaxPost(`/q3c-api/usr/webShops/delete?webShopsId=${id}`, undefined);\n/** 删除门市 */\nexport const deleteOutWebShops = (params: { id: number }) =>\n ajaxPost(`/q3c-api/saleAccountConfiguration/deleteStore`, params);\n\n/** 停用门市 */\nexport const disableOutWebShops = (params: { id: number }) =>\n ajaxPost(`/q3c-api/saleAccountConfiguration/disable`, params);\n\n/** 获取供货商列表 */\nexport const getWebSupplierList = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/usr/webSupplier/list', params);\n\nexport const getPrintTemplateList = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/printTemplateMaintenance/page', params);\n\nexport const getPrintTemplate = (code, printTemplateStatus) =>\n ajaxGet(\n `/q3c-api/printTemplateMaintenance/getTemplate?code=${code}&printTemplateStatus=${printTemplateStatus}`,\n undefined,\n );\n\nexport const getExcelTemplateList = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/importTemplateMaintenance/page', params);\n\nexport const getJipinList = (params: IPaginationParams) =>\n ajaxPost('/q3c-api/pos/customer/list', {\n ...params,\n blacklist: 'true',\n });\n\nexport const getYanzhengmaList = (params: any) =>\n ajaxPost('/q3c-api/verificationCode/page', {\n ...params,\n });\n\n/** 编辑供货商 */\nexport const editPrintTemplate = (params: PrintTemplateItem) =>\n ajaxPost(`/q3c-api/printTemplateMaintenance/save`, params);\n\nexport const editExcelTemplate = (params: PrintTemplateItem) =>\n ajaxPost(`/q3c-api/importTemplateMaintenance/save`, params);\n\n/** 添加供货商 */\nexport const addWebSupplier = (params: WebSupplierItem) =>\n ajaxPost(`/q3c-api/usr/webSupplier/add`, params);\n\nexport const callGoodsCoefficientList = (params: IPaginationParams) =>\n ajaxPost>(`/q3c-api/callGoodsCoefficient/pageCurrency`, params);\n\n/** 编辑供货商 */\nexport const editWebSupplier = (params: WebSupplierItem) =>\n ajaxPost(`/q3c-api/usr/webSupplier/edit`, params);\n\n/** 删除供货商 */\nexport const deleteWwebSupplier = (id: number) =>\n ajaxPost(`/q3c-api/usr/webSupplier/delete?webSupplierId=${id}`, undefined);\n\nexport const deletePrintTemplate = (id: number) =>\n ajaxPost(`/q3c-api/printTemplateMaintenance/delete`, { id });\n\nexport const deleteExcelTemplate = (id: number) =>\n ajaxPost(`/q3c-api/importTemplateMaintenance/delete`, { id });\n\nexport const rollbackPrintTemplateHistory = (id: number, historyId: number) =>\n ajaxPost(`/q3c-api/printTemplateMaintenance/rollbackPrintTemplateHistory`, { id, historyId });\n\nexport const pagePrintTemplateHistory = (id: number) =>\n ajaxPost(`/q3c-api/printTemplateMaintenance/pagePrintTemplateHistory`, {\n id,\n pageSize: 9999,\n pageNum: 1,\n });\n\nexport const publishPrintTemplate = (id: number, printTemplateStatus: number) =>\n ajaxPost(`/q3c-api/printTemplateMaintenance/publishPrintTemplate`, {\n id,\n printTemplateStatus,\n });\n\nexport const copyPrintTemplate = (id: number) =>\n ajaxPost(`/q3c-api/printTemplateMaintenance/copy`, {\n id,\n });\n\n/** 获取常客列表 */\nexport const getRegularCustomerList = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/setting/customer/list', params);\n\nexport const getBackList = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/usr/config/backend/list', params);\n\n/** 添加常客 */\nexport const addRegularCustomer = (params: RegularCustomerItem) =>\n ajaxPost(`/q3c-api/setting/customer/add`, params);\n\nexport const addBackItem = (params: any) => ajaxPost(`/q3c-api/usr/config/backend/add`, params);\n\n/** 编辑常客 */\nexport const editRegularCustomer = (params: RegularCustomerItem) =>\n ajaxPost(`/q3c-api/setting/customer/edit`, params);\n\nexport const editBackItem = (params: any) => ajaxPost(`/q3c-api/usr/config/backend/edit`, params);\n\n/** 删除常客 */\nexport const deleteRegularCustomer = (id: number) =>\n ajaxPost(`/q3c-api/setting/customer/delete?settingCustomerId=${id}`, undefined);\n\nexport const deleteBackItem = (id: number) =>\n ajaxPost(`/q3c-api/usr/config/backend/delete?webConfigId=${id}`, undefined);\n\n/** 获取超时时间列表 */\nexport const getWebStoreSetTimeList = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/usr/webStoreSetTime/list', params);\n\n/** 获取超时时间 */\nexport const getWebStoreSetTimeInfo = (id: number) =>\n ajaxPost(\n `/q3c-api/usr/webStoreSetTime/info?webStoreSetTimeId=${id}`,\n undefined,\n );\n\n/** 编辑超时时间 */\nexport const editWebStoreSetTime = (params: WebStoreSetTimeParams) =>\n ajaxPost(`/q3c-api/usr/webStoreSetTime/edit`, params);\n\n/** 获取广告列表 */\nexport const getBannerList = (params: any) =>\n ajaxPost>('/q3c-api/usr/banner/list', params);\n\n/** 添加 */\nexport const addBanner = (params: BannerItem) => ajaxPost(`/q3c-api/usr/banner/add`, params);\n\n/** 编辑 */\nexport const editBanner = (params: BannerItem) => ajaxPost(`/q3c-api/usr/banner/edit`, params);\n\n/** 删除 */\nexport const deleteBanner = (id: number) =>\n ajaxPost(`/q3c-api/usr/banner/delete?webBannerId=${id}`, undefined);\n\n/** 获取机型列表 */\nexport const getMachineList = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/machine/type/list', params);\n\nexport const getListNetworkServiceProvider = () =>\n ajaxGet('/q3c-api/simCard/combo/listNetworkServiceProvider', undefined);\n\nexport const getListDistributorServiceProvider = () =>\n ajaxGet('/q3c-api/simCard/combo/listDistributor', undefined);\n\nexport const getListNetworkType = () =>\n ajaxGet('/q3c-api/simCard/combo/listNetworkType', undefined);\n\n/** 获取机型详情 */\nexport const getMachineInfo = (id: number, businessType?: number) => {\n if (businessType) {\n return ajaxPost(\n `/q3c-api/machine/type/info?machineTypeId=${id}&businessType=${businessType}`,\n undefined,\n );\n }\n return ajaxPost(`/q3c-api/machine/type/info?machineTypeId=${id}`, undefined);\n};\n\nexport const getBannerInfo = (category: number) =>\n ajaxPost(`/q3c-api/usr/banner/list?pageNum=1&pageSize=999`, {\n category,\n });\n\n/** 添加机型 */\nexport const addMachine = (params: Omit) =>\n ajaxPost(`/q3c-api/machine/type/add`, params);\n\n/** 编辑机型 */\nexport const editMachine = (params: MachineItem) => ajaxPost(`/q3c-api/machine/type/edit`, params);\n\nexport const saveMachine = (params: MachineItem) => ajaxPost(`/q3c-api/machine/type/save`, params);\n\n/** 删除机型 */\nexport const deleteMachine = (id: number) =>\n ajaxPost(`/q3c-api/machine/type/delete?machineTypeId=${id}`, undefined);\n\n/** 获取Q卡項目列表 */\nexport const getQItemList = (params: IPaginationParams & { enable?: number }) =>\n ajaxPost>('/q3c-api/qservice/item/list', params);\n\nexport const getTianQItemList = (params: IPaginationParams & { enable?: boolean }) =>\n ajaxPost>('/q3c-api/sweet/qservice/item/list', params);\n\n/** 添加Q卡項目 */\nexport const addQItem = (params: QItem) => ajaxPost(`/q3c-api/qservice/item/add`, params);\n\nexport const addTianQItem = (params: QItem) => ajaxPost(`/q3c-api/sweet/qservice/item/add`, params);\n\n/** 编辑Q卡項目 */\nexport const editQItem = (params: QItem) => ajaxPost(`/q3c-api/qservice/item/edit`, params);\n\nexport const editTianQItem = (params: QItem) =>\n ajaxPost(`/q3c-api/sweet/qservice/item/edit`, params);\n\n/** 删除Q卡項目 */\nexport const deleteQItem = (id: number) =>\n ajaxPost(`/q3c-api/qservice/item/delete?itemId=${id}`, undefined);\n\n/** 获取Q卡套餐列表 */\nexport const getQPackageList = (params: QPackageListParams & IPaginationParams) =>\n ajaxPost>('/q3c-api/qservice/package/list', params);\n\n/** sim 卡套餐详情 */\nexport const getSimCardComboInfo = (id: number) =>\n ajaxGet(`/q3c-api/simCard/combo/info?comboId=${id}`);\n\nexport const getTianQPackageList = (\n params: QPackageListParams & IPaginationParams & { enable?: number },\n) => ajaxPost>('/q3c-api/sweet/qservice/package/list', params);\n\n/** 获取Q卡套餐列表 */\nexport const getSimPackageList = (params: SimPackageListParams & IPaginationParams) =>\n ajaxPost>('/q3c-api/simCard/combo/list', params);\n\n/** 添加Q卡套餐 */\nexport const addQPackage = (params: QPackage) => ajaxPost(`/q3c-api/qservice/package/add`, params);\n\nexport const addTianQPackage = (params: QPackage) =>\n ajaxPost(`/q3c-api/sweet/qservice/package/add`, params);\n\n/** 编辑Q卡套餐 */\nexport const editQPackage = (params: QPackage) =>\n ajaxPost(`/q3c-api/qservice/package/edit`, params);\n\nexport const directSale = (params: any) => ajaxPost(`/q3c-api/sweet/qcard/directSale`, params);\n\nexport const editTianQPackage = (params: QPackage) =>\n ajaxPost(`/q3c-api/sweet/qservice/package/edit`, params);\n\n/** 删除Q卡套餐 */\nexport const deleteQPackage = (id: number) =>\n ajaxPost(`/q3c-api/qservice/package/delete?packageId=${id}`, undefined);\n\n/** 删除Q卡套餐 */\nexport const deleteTianQPackage = (id: number) =>\n ajaxPost(`/q3c-api/sweet/qservice/package/delete?packageId=${id}`, undefined);\n\n/** 启停Q卡套餐 */\nexport const enableQPackage = (params: { id: number; enable: boolean }) =>\n ajaxPost(`/q3c-api/qservice/package/enable`, params);\n\nexport const enableTianQPackage = (params: { id: number; enable: boolean }) =>\n ajaxPost(`/q3c-api/sweet/qservice/package/enable`, params);\n\n/** Q卡套餐info */\nexport const getQPackageInfo = (id: number) =>\n ajaxPost(`/q3c-api/qservice/package/info?packageId=${id}`, undefined);\n\nexport const getTianQPackageInfo = (id: number) =>\n ajaxPost(`/q3c-api/sweet/qservice/package/info?packageId=${id}`, undefined);\n\n/** 获取Q卡協議列表 */\nexport const getQContractList = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/qservice/contract/list', params);\n\n/** 添加Q卡協議 */\nexport const addQContract = (params: QContract) =>\n ajaxPost(`/q3c-api/qservice/contract/add`, params);\n\n/** 编辑Q卡協議 */\nexport const editQContract = (params: QContract) =>\n ajaxPost(`/q3c-api/qservice/contract/edit`, params);\n\nexport const enableDidan = (params: any) => ajaxPost(`/q3c-api/bottomSheet/enable`, params);\n\n/** 删除Q卡協議 */\nexport const deleteQContract = (id: number) =>\n ajaxPost(`/q3c-api/qservice/contract/delete?contractId=${id}`, undefined);\n\nexport const deleteDidan = (id: number) => ajaxPost(`/q3c-api/bottomSheet/delete`, { id });\n\nexport const submitDidan = params => ajaxPost(`/q3c-api/bottomSheet/save`, params);\n\n/** Q卡協議info */\nexport const getQContractInfo = (id: number) =>\n ajaxPost(`/q3c-api/qservice/contract/info?contractId=${id}`, undefined);\n\n/** Q卡列表 */\nexport const getQList = (params: QListParams & IPaginationParams) =>\n ajaxPost>('/q3c-api/qcard/list', params);\n\nexport const getSimList = (params: SimListParams & IPaginationParams) =>\n ajaxPost>('/q3c-api/simCard/list', params);\n/** 作廢 sim */\nexport const cancelSim = (params: { id: number; iccid: string; cancelRemark: string }) =>\n ajaxPost('/q3c-api/simCard/returnWhiteCard', params);\n\n/** 報廢 sim */\nexport const scrapSim = (params: { id: number; iccid: string; cancelRemark: string }) =>\n ajaxPost('/q3c-api/simCard/scrap', params);\n\nexport const getTianQList = (params: QListParams & IPaginationParams) =>\n ajaxPost>('/q3c-api/sweet/qcard/list', params);\n\nexport const getThreeQList = (params: QListParams & IPaginationParams) =>\n ajaxPost>('/q3c-api/three/qcard/list', params);\n\nexport const getQItemUseInfo = (id: number) =>\n ajaxPost(`/q3c-api/qservice/item/info?itemId=${id}`, undefined);\n\nexport const getTianQItemUseInfo = (id: number) =>\n ajaxPost(`/q3c-api/sweet/qservice/item/info?itemId=${id}`, undefined);\n\nexport const getThreeQItemUseInfo = (id: number) =>\n ajaxPost(`/q3c-api/three/qservice/item/info?itemId=${id}`, undefined);\n\nexport const checkTianQItemUseInfo = str =>\n ajaxPost(`/q3c-api/sweet/qcard/usage/record/check?${str}`, undefined);\n\nexport const checkThreeQItemUseInfo = str =>\n ajaxPost(`/q3c-api/three/qcard/usage/record/check?${str}`, undefined);\n\nexport const addQUseNum = (params: AddQUseNumParams) =>\n ajaxPost(`/q3c-api/qcard/add/total`, params);\n\nexport const addTianQUseNum = (params: AddQUseNumParams) =>\n ajaxPost(`/q3c-api/sweet/qcard/add/total`, params);\n\nexport const addThreeQUseNum = (params: AddQUseNumParams) =>\n ajaxPost(`/q3c-api/three/qcard/add/total`, params);\n\n/** Q卡配貨列表 */\nexport const getQDistributionList = (params: QDistributionListParams & IPaginationParams) =>\n ajaxPost>('/q3c-api/qcard/transfer/list', params);\n\nexport const getTianQDistributionList = (params: QDistributionListParams & IPaginationParams) =>\n ajaxPost>('/q3c-api/sweet/qcard/transfer/list', params);\n\nexport const getThreeQDistributionList = (params: QDistributionListParams & IPaginationParams) =>\n ajaxPost>('/q3c-api/three/qcard/transfer/list', params);\n\nexport const getThreeQpageNewImport = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/sweet/qcard/import/pageNewImport', params);\n\nexport const getThreeQpageNewImport2 = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/three/qcard/import/pageNewImport', params);\n\nexport const getThreeQpageNewImport3 = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/qcard/import/pageNewImport', params);\n\nexport const getThreeQpageHistoryImport = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/sweet/qcard/import/pageHistoryImport', params);\n\nexport const getThreeQpageHistoryImport2 = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/three/qcard/import/pageHistoryImport', params);\n\nexport const getThreeQpageHistoryImport3 = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/qcard/import/pageHistoryImport', params);\n\n/** Sim卡配貨列表 */\nexport const getSimDistributionList = (params: SimDistributionListParams & IPaginationParams) =>\n ajaxPost>('/q3c-api/simCard/transfer/list', params);\n\n/** Q卡庫存查詢列表 */\nexport const getQDistributionSearchList = (params: QDistributionListParams & IPaginationParams) =>\n ajaxPost>('/q3c-api/qcard/statistic/list', params);\n\nexport const getTianQDistributionSearchList = (\n params: QDistributionListParams & IPaginationParams,\n) => ajaxPost>('/q3c-api/sweet/qcard/statistic/list', params);\n\nexport const getThreeQDistributionSearchList = (\n params: QDistributionListParams & IPaginationParams,\n) => ajaxPost>('/q3c-api/three/qcard/statistic/list', params);\n\n/** Sim卡庫存查詢列表 */\nexport const getSimDistributionSearchList = (\n params: SimDistributionListParams & IPaginationParams,\n) => ajaxPost>('/q3c-api/simCard/statistic/list', params);\n\nexport const getQAbnormalList = (params: { branches: number } & IPaginationParams) =>\n ajaxPost>('/q3c-api/qcard/transfer/abnormal/list', params);\n\nexport const getTianQAbnormalList = (params: { branches: number } & IPaginationParams) =>\n ajaxPost>(\n '/q3c-api/sweet/qcard/transfer/abnormal/list',\n params,\n );\n\nexport const getThreeQAbnormalList = (params: { branches: number } & IPaginationParams) =>\n ajaxPost>(\n '/q3c-api/three/qcard/transfer/abnormal/list',\n params,\n );\n\nexport const getSimAbnormalList = (params: { branches: number } & IPaginationParams) =>\n ajaxPost>(\n '/q3c-api/simCard/transfer/abnormal/list',\n params,\n );\n\n/** Q卡配貨 */\nexport const deliverQ = (params: DeliverQParams) => ajaxPost(`/q3c-api/qcard/transfer/add`, params);\n\nexport const deliverTianQ = (params: DeliverQParams) =>\n ajaxPost(`/q3c-api/sweet/qcard/transfer/add`, params);\n\nexport const deliverThreeQ = (params: DeliverQParams) =>\n ajaxPost(`/q3c-api/three/qcard/transfer/add`, params);\n\n/** Q卡配貨 */\nexport const deliverSim = (params: DeliverQParams) =>\n ajaxPost(`/q3c-api/simCard/transfer/add`, params);\n\n/** 添加Q卡協議 */\nexport const addQ = (params: QContract) => ajaxPost(`/q3c-api/qcard/add`, params);\n\n/** 配貨 */\nexport const transferQ = (params: TransferQParams) =>\n ajaxPost(`/q3c-api/qcard/transfer/edit`, params);\n\nexport const qBatchScan = (params: any) => ajaxPost(`/q3c-api/qcard/batchScan`, params);\n\nexport const threeqBatchScan = (params: any) => ajaxPost(`/q3c-api/three/qcard/batchScan`, params);\n\nexport const tianqBatchScan = (params: any) => ajaxPost(`/q3c-api/sweet/qcard/batchScan`, params);\n\nexport const transferTianQ = (params: TransferQParams) =>\n ajaxPost(`/q3c-api/sweet/qcard/transfer/edit`, params);\n\nexport const transferThreeQ = (params: TransferQParams) =>\n ajaxPost(`/q3c-api/three/qcard/transfer/edit`, params);\n\nexport const transferThreeQbatchImport = (params: any) =>\n ajaxPost(`/q3c-api/sweet/qcard/import/batchImport`, params);\n\nexport const transferThreeQbatchImport2 = (params: any) =>\n ajaxPost(`/q3c-api/three/qcard/import/batchImport`, params);\n\nexport const transferThreeQbatchImport3 = (params: any) =>\n ajaxPost(`/q3c-api/qcard/import/batchImport`, params);\n\nexport const transferSim = (params: TransferQParams) =>\n ajaxPost(`/q3c-api/simCard/transfer/edit`, params);\n\nexport const scanAddSpotsScanSim = (iccid: string) =>\n ajaxPost(`/q3c-api/simCard/scanAddSpotsScan?iccid=${iccid}`, undefined);\n\nexport const checkQ = (cardNo: string) =>\n ajaxPost(`/q3c-api/qcard/scan?cardNo=${cardNo}`, undefined);\n\nexport const checkTianQ = (cardNo: string) =>\n ajaxPost(`/q3c-api/sweet/qcard/scan?cardNo=${cardNo}`, undefined);\n\nexport const checkThreeQ = (cardNo: string) =>\n ajaxPost(`/q3c-api/three/qcard/scan?cardNo=${cardNo}`, undefined);\n\nexport const checkSim = (cardNo: string) =>\n ajaxPost(`/q3c-api/simCard/scan?iccid=${cardNo}`, undefined);\n\nexport const editQ = (params: QContract) => ajaxPost(`/q3c-api/qcard/edit`, params);\n\nexport const editSim = (params: any) => ajaxPost(`/q3c-api/simCard/edit`, params);\n\nexport const editTianQ = (params: QContract) => ajaxPost(`/q3c-api/sweet/qcard/edit`, params);\n\nexport const editThreeQ = (params: QContract) => ajaxPost(`/q3c-api/three/qcard/edit`, params);\n\nexport const restoreQ = (params: QRecovery) => ajaxPost(`/q3c-api/qcard/recovery`, params);\n\nexport const restoreTianQ = (params: QRecovery) =>\n ajaxPost(`/q3c-api/sweet/qcard/recovery`, params);\n\nexport const restoreThreeQ = (params: QRecovery) =>\n ajaxPost(`/q3c-api/three/qcard/recovery`, params);\n\nexport const deleteQ = (id: number) => ajaxPost(`/q3c-api/qcard/delete?qCardId=${id}`, undefined);\n\nexport const deleteTianQ = (id: number) =>\n ajaxPost(`/q3c-api/sweet/qcard/delete?qCardId=${id}`, undefined);\n\nexport const deleteThreeQ = (id: number) =>\n ajaxPost(`/q3c-api/three/qcard/delete?qCardId=${id}`, undefined);\n\nexport const getImportNoByCardNo = (cardNo: number) =>\n ajaxGet(`/q3c-api/sweet/qcard/import/getImportNoByCardNo?cardNo=${cardNo}`, undefined);\n\nexport const getImportNoByCardNo2 = (cardNo: number) =>\n ajaxGet(`/q3c-api/three/qcard/import/getImportNoByCardNo?cardNo=${cardNo}`, undefined);\n\nexport const getImportNoByCardNo3 = (cardNo: number) =>\n ajaxGet(`/q3c-api/qcard/import/getImportNoByCardNo?cardNo=${cardNo}`, undefined);\n\nexport const getListCardNoByImport = (id: number) =>\n ajaxGet(`/q3c-api/sweet/qcard/import/listCardNo?id=${id}`, undefined);\n\nexport const getListCardNoByImport2 = (id: number) =>\n ajaxGet(`/q3c-api/three/qcard/import/listCardNo?id=${id}`, undefined);\n\nexport const getListCardNoByImport3 = (id: number) =>\n ajaxGet(`/q3c-api/qcard/import/listCardNo?id=${id}`, undefined);\n\nexport const deleteSim = (id: number) =>\n ajaxPost(`/q3c-api/simCard/delete?simCardId=${id}`, undefined);\n\nexport const fetchSimDetail = (id: number) =>\n ajaxGet(`/q3c-api/simCard/detail?id=${id}`, undefined);\n\nexport const fetchComboInfo = (id: number) =>\n ajaxGet(`/q3c-api/simCard/combo/info?comboId=${id}`, undefined);\n\nexport const deleteQDistribution = (id: number) =>\n ajaxPost(`/q3c-api/qcard/transfer/delete?transferId=${id}`, undefined);\n\nexport const deleteTianQDistribution = (id: number) =>\n ajaxPost(`/q3c-api/sweet/qcard/transfer/delete?transferId=${id}`, undefined);\n\nexport const deleteThreeQDistribution = (id: number) =>\n ajaxPost(`/q3c-api/three/qcard/transfer/delete?transferId=${id}`, undefined);\n\nexport const deleteSimDistribution = (id: number) =>\n ajaxPost(`/q3c-api/simCard/transfer/delete?transferId=${id}`, undefined);\n\nexport const resetQDistribution = () =>\n ajaxPost(`/q3c-api/qcard/transfer/abnormal/clear`, undefined);\n\nexport const resetTianQDistribution = () =>\n ajaxPost(`/q3c-api/sweet/qcard/transfer/abnormal/clear`, undefined);\n\nexport const resetThreeQDistribution = () =>\n ajaxPost(`/q3c-api/three/qcard/transfer/abnormal/clear`, undefined);\n\nexport const resetSimDistribution = () =>\n ajaxPost(`/q3c-api/simCard/transfer/abnormal/clear`, undefined);\n\nexport const cancelQ = (params: { id: number; cancelRemark: string }) =>\n ajaxPost(`/q3c-api/qcard/cancel`, params);\n\nexport const cancelTianQ = (params: { id: number; cancelRemark: string }) =>\n ajaxPost(`/q3c-api/sweet/qcard/cancel`, params);\n\nexport const cancelThreeQ = (params: { id: number; cancelRemark: string }) =>\n ajaxPost(`/q3c-api/three/qcard/cancel`, params);\n\nexport const getQInfo = (id: number) =>\n ajaxPost(`/q3c-api/qcard/info?qCardId=${id}`, undefined);\n\nexport const usageQ = (params: UsageQParams) => ajaxPost(`/q3c-api/qcard/add/usage`, params);\n\nexport const usageTianQ = (params: UsageQParams) =>\n ajaxPost(`/q3c-api/sweet/qcard/add/usage`, params);\n\nexport const usageThreeQ = (params: any) => ajaxPost(`/q3c-api/three/qcard/add/usage`, params);\n\nexport const tranTianQToQ = (params: any) =>\n ajaxPost(`/q3c-api/sweet/qcard/convert?qCardId=${params.qcardId}`, params);\n\nexport const tranThreeQToTianQ = (params: any) =>\n ajaxPost(`/q3c-api/three/qcard/convert?qCardId=${params.qcardId}`, params);\n\nexport const qToTianQ = (params: any) =>\n ajaxPost(`/q3c-api/qcard/convert?qCardId=${params.qcardId}`, params);\n\nexport const reissueQ = (params: ReissueQParams) => ajaxPost(`/q3c-api/qcard/change`, params);\n\nexport const scanAddSim = params => ajaxPost(`/q3c-api/simCard/scanAddSpotsSubmit`, params);\n\nexport const reissueTianQ = (params: ReissueQParams) =>\n ajaxPost(`/q3c-api/sweet/qcard/change`, params);\n\nexport const reissueThreeQ = (params: ReissueQParams) =>\n ajaxPost(`/q3c-api/three/qcard/change`, params);\n\n/** R卡列表 */\nexport const getRList = (params: QListParams & IPaginationParams) =>\n ajaxPost>('/q3c-api/rcard/list', params);\n\n/** 添加R卡協議 */\nexport const addR = (params: QContract) => ajaxPost(`/q3c-api/rcard/add`, params);\n\nexport const editR = (params: QContract) => ajaxPost(`/q3c-api/rcard/edit`, params);\n\nexport const deleteR = (id: number) => ajaxPost(`/q3c-api/rcard/delete?rCardId=${id}`, undefined);\n\nexport const cancelR = (params: { id: number; cancelRemark: string }) =>\n ajaxPost(`/q3c-api/rcard/cancel`, params);\n\nexport const getRInfo = (id: number) =>\n ajaxPost(`/q3c-api/rcard/info?rCardId=${id}`, undefined);\n\nexport const usageR = (params: UsageQParams) => ajaxPost(`/q3c-api/rcard/add/usage`, params);\n\n/** Q卡盘点 */\nexport const getQCheckList = (params: QCheckParams & IPaginationParams) =>\n ajaxPost>('/q3c-api/qcard/check/list', params);\n\n/** Q卡盘点 */\nexport const getTianQCheckList = (params: QCheckParams & IPaginationParams) =>\n ajaxPost>('/q3c-api/sweet/qcard/check/list', params);\n\nexport const getThreeQCheckList = (params: QCheckParams & IPaginationParams) =>\n ajaxPost>('/q3c-api/three/qcard/check/list', params);\n\n/** SIm卡盘点 */\nexport const getSimCheckList = (params: QCheckParams & IPaginationParams) =>\n ajaxPost>('/q3c-api/simCard/check/list', params);\n\n/** Q卡扫码盘点 */\nexport const checkQCard = (cardNo: string) =>\n ajaxPost(`/q3c-api/qcard/check/check?cardNo=${cardNo}`, undefined);\n\nexport const checkTianQCard = (cardNo: string) =>\n ajaxPost(`/q3c-api/sweet/qcard/check/check?cardNo=${cardNo}`, undefined);\n\nexport const checkThreeQCard = (cardNo: string) =>\n ajaxPost(`/q3c-api/three/qcard/check/check?cardNo=${cardNo}`, undefined);\n\n/** SIM卡扫码盘点 */\nexport const checkSimCard = (cardNo: string) =>\n ajaxPost(`/q3c-api/simCard/check/check?iccid=${cardNo}`, undefined);\n\n/** R卡盘点 */\nexport const getRCheckList = (params: QCheckParams & IPaginationParams) =>\n ajaxPost>('/q3c-api/rcard/check/list', params);\n\n/** R卡扫码盘点 */\nexport const checkRCard = (cardNo: string) =>\n ajaxPost(`/q3c-api/rcard/check/check?cardNo=${cardNo}`, undefined);\n\n/** 导入进度 */\nexport const getImportInfo = (bizType: BizType) =>\n ajaxPost(`/q3c-api/excel/import/record/last?bizType=${bizType}`, undefined);\n\n/** 釋放 */\nexport const releaseImport = (bizType: BizType) =>\n ajaxPost(`/q3c-api/excel/import/record/reset?bizType=${bizType}`, undefined);\n\n/** 釋放 */\nexport const resetSmsRemainTimes = (params: { id: any }) =>\n ajaxPost(\n `/q3c-api/usr/user/resettingSelfServiceSendMessagesRemainingTimes`,\n params,\n );\n","import React, { FC, useRef, useEffect, useState } from 'react';\nimport {} from 'antd';\nimport ColorSpan from '../color-span';\nimport { dealTime } from '@/utils/common';\n\ninterface Props {\n shouldStop?: boolean;\n startTime: string;\n}\n\nconst AddTime: FC = ({ startTime, shouldStop }) => {\n const [time, setTime] = useState(dealTime(startTime));\n const timeRef = useRef(null as any);\n useEffect(() => {\n if ((shouldStop || startTime) && timeRef.current) {\n clearInterval(timeRef.current);\n }\n if (!shouldStop) {\n timeRef.current = setInterval(() => {\n setTime(dealTime(startTime));\n }, 1000);\n }\n }, [shouldStop, startTime]);\n\n return {time};\n};\n\nexport default AddTime;\n","import { IPaginationParams } from './commom';\nimport { Category } from './new-sale';\n\n/** @name 登录 */\nexport interface LoginParams {\n account: string;\n password: string;\n}\n\nexport interface RoleVOItem {\n id: number;\n isDelete: boolean;\n roleIntro: string;\n roleName: string;\n menuIdList: number[];\n gmtCreate: string;\n gmtUpdate: string;\n}\n\nexport enum Language {\n ZHTW = 1,\n ZHCN = 2,\n}\n\nexport enum USERAGENTTYPE {\n PC,\n H5,\n}\n\nexport const languageMap: Record = {\n [Language.ZHTW]: '繁體中文',\n [Language.ZHCN]: '简体中文',\n};\n\nexport const userAgentMap: Record = {\n [USERAGENTTYPE.PC]: 'PC端',\n [USERAGENTTYPE.H5]: '行動端',\n};\n\nexport interface UserInfo {\n account: string;\n needChangePassword: string;\n email: string;\n groupId: number;\n groupName: string;\n id: number;\n isDelete: boolean;\n imageUrl: string;\n nickName: string;\n note: string;\n password: string;\n phone: string;\n realName: string;\n roleIds: number[];\n gmtCreate: string;\n gmtUpdate: string;\n roleVOList: RoleVOItem[];\n userStatus: number;\n languageType: Language;\n refreshMin: RefreshTimeType;\n isSupperRole: boolean;\n groupVOList: GroupVOItem[];\n repairGroupId: number;\n buttonVOList: ButtonVOList[];\n}\n\nexport interface GroupVOItem {\n groupName: string;\n groupId: number;\n}\n\nexport interface ButtonVOList {\n id: number;\n buttonCode: string;\n buttonName: string;\n}\nexport interface ChangePwdParams {\n account: string;\n id: number;\n password: string;\n token: string;\n}\n\nexport interface ChangeGroupParams {\n id: number;\n groupName: string;\n groupId: nunber;\n groupVOList: GroupVOItem[];\n}\n\nexport enum RefreshTimeType {\n FIVE = 5,\n THIRTY = 30,\n HOUR = 60,\n NEVER = 0,\n}\n\nexport enum LanguageType {\n zhTW = 1,\n zhCN = 2,\n enUS = 3,\n}\n\nexport interface MenuItem {\n id: number;\n isDelete: boolean;\n menuName: string; // 菜单名\n menuType: MenuType; // 菜单类型\n parentId: number | null; // 菜单父级ID\n perms: stirng; // 权限字段配置\n sort: number; // 排序\n url: null | string; // 链接\n menuList: MenuItem[]; // 子菜单列表\n}\n\nexport enum MenuType {\n ALLROUTE = -1,\n DIRECTORY = 0, // 目录\n MENU = 1, // 子菜单\n BUTTON = 2, // 按钮\n}\n\n/** 角色 */\nexport interface RoleItem {\n id: number;\n isDelete: boolean;\n roleIntro: string;\n roleCode: string;\n roleName: string;\n}\n\nexport interface RoleListParams extends IPaginationParams {\n roleName: string | undefined;\n}\n\nexport interface AddRoleParams {\n roleIntro: string;\n roleCode: string;\n roleName: string;\n menuIdList: string[];\n}\n\nexport interface AccessParams {\n buttonName: string;\n buttonCode: string;\n pathRoute?: string;\n remark?: string;\n userIdList: number[];\n id?: number;\n}\n\nexport interface GroupItem {\n id: number;\n note: string;\n isDelete: boolean;\n groupName: string;\n}\n\nexport interface MaintenanceGroupItem {\n id: number;\n remark: string;\n repairGroupName: string;\n joinAllocate: boolean;\n userVOList: MaintenanceWithoutGroupItem[];\n}\n\nexport interface MaintenanceWithoutGroupItem {\n id: number;\n realName: string;\n isNew?: boolean;\n}\n\nexport interface UserVOListItem {\n id: number;\n realName: string;\n account: string;\n}\nexport interface AccessItem {\n buttonName: string;\n buttonCode: string;\n pathRoute: string;\n creator: string;\n id: number;\n remark: string;\n userVOList: UserVOListItem[];\n}\n\nexport interface AccessUserItem {\n realName: string;\n userId: number;\n account: string;\n}\n\nexport interface AccessItem {\n id: number;\n accessName: string;\n accessCode: string;\n accessUser?: AccessUserItem[];\n accessRoute?: string;\n remark?: string;\n}\n\nexport interface AccessTreeItem {\n title: string;\n value: number | string;\n key: number;\n}\n\nexport interface AccessTree extends AccessTreeItem {\n children: AccessTreeItem[];\n}\n\nexport interface GroupDataSourceItem {\n label: string;\n value: number;\n}\n\nexport interface RoleDataSourceItem {\n label: string;\n value: number;\n statusType?: number;\n}\n\nexport interface UserParams {\n account?: string;\n realName?: string;\n nikeName?: string;\n phone?: string;\n roleIds?: string;\n groupId?: string;\n}\n\n// 账号状态\nexport enum UserStatus {\n NORMAL, // 正常\n DISABLED, // 停用\n LOCKED, // 锁定\n}\n\nexport interface UserItem {\n account: string;\n jobNum: string;\n id: number;\n realName: string;\n nikeName: string;\n groupName: string;\n roleVOList: RoleItem[];\n phone: string;\n gmtCreate: string;\n note: string;\n userStatus: UserStatus;\n imageUrl: string;\n email: string;\n nickName: string;\n roleIds: string[];\n groupId: number;\n supplierId: number;\n supplierName: string;\n groupVOList: { groupName: string; groupId: number }[];\n}\n\nexport interface AddUserItem {\n account: string;\n password: string;\n id?: number;\n realName: string;\n nikeName?: string;\n groupName: string;\n groupId: number;\n roleIds: string[];\n phone: string;\n note?: string;\n}\n\nexport interface WebWarrantyItem {\n id?: number;\n warrantyDays: number;\n note: string;\n warrantyName: string;\n}\n\nexport interface WebPayItem {\n id?: number;\n payName: string;\n note: string;\n}\n\nexport interface WebStagesItem {\n id?: number;\n stagesName: string;\n note: string;\n rate?: number;\n}\n\nexport interface WebRepairstatusItem {\n statusName: string;\n id?: number;\n}\n\nexport interface WebMessageItem {\n id: number;\n desc: string;\n}\n\nexport interface WebShopsItem {\n id: number;\n groupId: number;\n phone: number;\n groupName: string;\n address: string;\n note: string;\n bcode: string;\n name: string;\n shopType: ShopType;\n sort: number;\n reserveBranchesName: string;\n joinPartSort?: boolean;\n}\n\nexport interface OutWebShopsItem {\n account: string;\n accountId: number;\n address: string;\n contactName: string;\n contactNumber: string;\n county: string;\n gmtCreate: string;\n id: number;\n isDisabled: boolean;\n remark: string;\n storeName: string;\n}\n\nexport interface SortGroupParams {\n sortVOList: SortVOItem[];\n}\n\nexport interface SortVOItem {\n id: number;\n sort: number;\n}\n\nexport interface WebSupplierItem {\n supplierName: string;\n id: number;\n phone: string;\n remark: string;\n}\n\nexport interface ExcelTemplateItem {\n importTemplatePath: string;\n id: number;\n code: string;\n creator: string;\n gmtCreate: string;\n gmtUpdate: string;\n modifier: string;\n}\nexport interface PrintTemplateItem {\n code?: string;\n id: number;\n printTemplateContent?: string;\n printTemplateStatus?: number;\n canPublishFlag?: boolean;\n canCopyFlag?: boolean;\n haveHistoryFlag?: boolean;\n printTemplateDeviceList?: string[];\n variable?: string;\n}\nexport interface RegularCustomerItem {\n customerName: string;\n id: number;\n phone: string;\n remark: string;\n}\nexport interface WebStoreSetTimeParams {\n dismantle: number;\n id: number;\n newMobile: number;\n oldMobile: number;\n orderRepair: number;\n productCheck: number;\n orderTransfer: number;\n qcard: number;\n simCard: number;\n}\n\nexport enum BannerCategory {\n XCWX = 1,\n RLSJ = 2,\n LJ = 3,\n SJ = 4,\n MJ = 5,\n BM = 6,\n ESMJ = 7,\n}\n\nexport interface BannerItem {\n id: number;\n context: string;\n category: BannerCategory;\n}\n\nexport interface TestingMachineProjectVOItem {\n code: string;\n id: number;\n name: string;\n needCheck: boolean;\n remark: string;\n InputName: string;\n radioName;\n string;\n}\nexport interface MachineItem {\n id: number;\n typeName: string;\n remark: string;\n businessType: number;\n underImage: string;\n testingMachineProjectVOList: TestingMachineProjectVOItem[];\n}\n\nexport enum QItemEnable {\n DISABLED, // 停用\n ABLED, // 啟用\n}\nexport interface QItem {\n id?: number;\n enable?: QItemEnable;\n itemName?: string;\n remark?: string;\n totalNum?: number;\n needCustomerName?: boolean;\n needCustomerPhone?: boolean;\n needRemark?: boolean;\n needPhoneType?: boolean;\n needTime?: boolean;\n needOperator?: boolean;\n needOperatorBranches?: boolean;\n}\n\nexport interface PhoneItem {\n levelOne: number;\n levelOneName: string;\n levelTwo: number;\n levelTwoName: number;\n levelThree: number;\n levelThreeName: number;\n}\nexport interface QPackage {\n id?: number;\n addItemVOList?: AddItemVOList[];\n editItemVOList?: AddItemVOList[];\n itemVOList?: AddItemVOList[];\n phoneVOList: PhoneItem[];\n enable?: QItemEnable;\n packageName?: string;\n packagePrice?: number;\n remark?: string;\n imageUrl?: string;\n selfPrice: number;\n}\n\nexport interface SimPackage {\n advancePaymentAmount: string;\n applicationCopyLink: string;\n distributor: string;\n networkServiceProvider: string;\n newCashBack: string;\n newCombination: string;\n projectName: string;\n name: string;\n remark: string;\n transferCashBack: string;\n transferCombination: string;\n type: string;\n id: number;\n remark: string;\n}\n\nexport enum PackageType {\n NEW,\n OLD,\n}\nexport interface QPackageListParams {\n levelOne?: number;\n levelTwo?: number;\n levevlThree?: number;\n packageType?: PackageType;\n skuId?: number;\n}\n\nexport interface SimPackageListParams {\n networkServiceProvider?: string;\n networkType?: string;\n type?: string;\n tabType?: number;\n}\n\nexport enum PackageTypeEnum {\n NEWPACKAGE,\n OLDPACKAGE,\n}\n\nexport interface AddItemVOList {\n itemId: nunber;\n itemName: string;\n totalNum: number;\n}\n\nexport interface QRecovery {\n id: number;\n recoveryRemark: string;\n}\n\nexport interface QContract {\n id?: number;\n contractName?: string;\n imageUrl?: string;\n serviceRemark?: string;\n remark?: string;\n enable?: QItemEnable;\n sendExpress?: boolean;\n}\nexport enum QServiceListParamsStatus {\n SALING = 2,\n SALED = 3,\n CANCELED = 5,\n OVERDUE = 6,\n}\n\nexport enum SimServiceListParamsStatus {\n SALING = 2,\n SALED = 3,\n ABNORMAL = 4,\n CANCELED = 5,\n OVERDUE = 6,\n}\n\nexport interface QListParams {\n cardStatus?: QServiceListParamsStatus;\n subStatus?: number | undefined;\n branches?: number;\n cardNo?: string;\n customerName?: string;\n gmtCreate?: string;\n packageId?: number;\n usageStatus?: UsageStatus;\n}\n\nexport interface SimListParams {\n subStatus?: number | undefined;\n cardStatus?: SimServiceListParamsStatus;\n branches?: number;\n gmtCreate?: string;\n iccid?: string;\n packageId?: number;\n customerName?: string;\n}\n\nexport interface QDistributionListParams {\n branches?: number;\n gmtCreate?: string;\n deliverStatus?: QDeliverStatus;\n receiveStatus?: QReceiveStatus;\n}\n\nexport interface SimDistributionListParams {\n branches?: number;\n gmtCreate?: string;\n deliverStatus?: QDeliverStatus;\n receiveStatus?: QReceiveStatus;\n}\n\nexport interface AddQUseNumParams {\n qcardId: number;\n firstItemId?: number;\n secondItemId?: number;\n thirdItemId?: number;\n fourthItemId?: number;\n fifthItemId?: number;\n}\n\nexport interface QCardDeliverItem {\n branches: number;\n branchesName: string;\n cardNo: number;\n transferNo: string;\n}\n\nexport interface DeliverQParams {\n branches: number;\n branchesName: string;\n planNum: number;\n remark?: string;\n}\n\nexport enum OperateType {\n SENDBRIEF, // 发货暂存\n SENDSAVE, // 发货保存\n RECEIVEBRIEF, // 收获暂存\n RECEIVESAVE, // 收货保存\n}\nexport interface TransferQParams {\n branches: number;\n branchesName: string;\n id: number;\n operateType: OperateType;\n planNum: number;\n deliverNum?: number;\n receiveNum?: number;\n remark?: string;\n transferNo: string;\n detailVOList: TransferQItem[];\n}\n\nexport enum TransferQItemDeliverStatus {\n BRIEF, // 暂存\n SAVE, // 保存\n}\n\nexport enum TransferQItemReceiveStatus {\n BRIEF,\n SAVE,\n}\n\nexport interface TransferQItem {\n branches: number;\n branchesName: string;\n cardNo?: string;\n iccid?: string;\n transferNo: string;\n deliverStatus?: TransferQItemDeliverStatus;\n receiveStatus?: TransferQItemReceiveStatus;\n distributor?: string;\n networkServiceProvider?: string;\n}\nexport interface QDistributionSearchListParams {\n branches?: number;\n}\n\nexport enum UsageStatus {\n UnUsed,\n Used,\n}\n\nexport enum QDeliverStatus {\n DOING, // 0发货中\n DONE, // 1已完成\n}\n\nexport enum QReceiveStatus {\n DOING, // 0 待收货\n DONE, // 1 已完成\n}\n\nexport interface QDistributionListItem {\n transferNo: string;\n remark: string;\n receiveNum: number;\n planNum: number;\n deliverNum: number;\n id: number;\n gmtCreate: string;\n deliverStatus: QDeliverStatus;\n receiveStatus: QReceiveStatus;\n branchesName: string;\n branches: number;\n detailVOList: TransferQItem[];\n availableNum: number;\n cancelNum: number;\n lastTransferTime: string;\n lastTransferNum: number;\n receiveTime: string;\n deliverTime: string;\n cardNo: number;\n}\n\nexport interface SimDistributionListItem {\n transferNo: string;\n remark: string;\n receiveNum: number;\n planNum: number;\n deliverNum: number;\n id: number;\n gmtCreate: string;\n deliverStatus: QDeliverStatus;\n receiveStatus: QReceiveStatus;\n branchesName: string;\n branches: number;\n detailVOList: TransferQItem[];\n availableNum: number;\n cancelNum: number;\n lastTransferTime: string;\n lastTransferNum: number;\n receiveTime: string;\n deliverTime: string;\n cardNo: number;\n}\n\nexport interface QUseItem {\n needTime: boolean;\n needRemark: boolean;\n needPhoneType: boolean;\n needOperatorBranches: boolean;\n needOperator: boolean;\n needCustomerPhone: boolean;\n needCustomerName: boolean;\n useLimit?: boolean;\n}\n\nexport interface SimListItem {\n id: number;\n branches?: number;\n branchesName?: string;\n iccid?: string;\n cardStatus?: SimServiceListParamsStatus;\n packageName?: string;\n packageId?: number;\n customerName?: string;\n customerPhone?: string;\n orderNo?: string;\n orderPrice?: string;\n orderBranchesName?: string;\n orderBranches?: string;\n cancelRemark?: string;\n isChangedProject?: boolean;\n isChangedNetworkServiceProvider?: boolean;\n}\nexport interface QListItem {\n id: number;\n branches?: number;\n sendExpress?: boolean;\n packageExpireStartTime?: string;\n branchesName?: string;\n contractName?: string;\n contractId?: number;\n category?: Category;\n cardSendName?: string;\n usageStatus: UsageStatus;\n usageOrderTime?: string;\n usageOrderCategory?: string;\n usageOrderNo?: string;\n usageBranchesName?: string;\n usageCustomerName?: string;\n usageCustomerPhone?: string;\n remark?: string;\n usageOperateName?: string;\n cancelRemark?: string;\n cardNo?: string;\n gmtCreate?: string;\n creator?: string;\n packageName?: string;\n packageId?: number;\n customerName?: string;\n customerPhone?: string;\n orderNo?: string;\n orderPrice?: string;\n orderBranchesName?: string;\n orderBranches?: string;\n firstItemId?: number;\n firstItemName?: string;\n firstItemTotal?: number;\n firstItemUsage?: number;\n secondItemId?: number;\n secondItemName?: string;\n secondItemTotal?: number;\n secondItemUsage?: number;\n thirdItemId?: number;\n thirdItemName?: string;\n thirdItemTotal?: number;\n thirdItemUsage?: number;\n fourthItemId?: number;\n fourthItemName?: string;\n fourthItemTotal?: number;\n fourthItemUsage?: number;\n fifthItemId?: number;\n fifthItemName?: string;\n fifthItemTotal?: number;\n fifthItemUsage?: number;\n sixthItemId?: number;\n sixthItemName?: string;\n sixthItemTotal?: number;\n sixthItemUsage?: number;\n cardStatus: QServiceListParamsStatus;\n firstUsageRecordList: UsageRecordItem[];\n secondUsageRecordList: UsageRecordItem[];\n thirdUsageRecordList: UsageRecordItem[];\n fourthUsageRecordList: UsageRecordItem[];\n fifthUsageRecordList: UsageRecordItem[];\n sixthUsageRecordList: UsageRecordItem[];\n}\n\nexport interface UsageRecordItem {\n id: number;\n customerName: string;\n customerPhone: string;\n usageTime: string;\n remark: string;\n operatorBranchesName: string;\n operator: string;\n}\nexport interface UsageQParams {\n customerName: string;\n customerPhone: string;\n qcardId?: number;\n remark?: string;\n firstItemUsage?: number;\n secondItemUsage?: number;\n thirdItemUsage?: number;\n fourthItemUsage?: number;\n fifthItemUsage?: number;\n phoneType?: string;\n operator?: string;\n operatorBranchesId?: number;\n operatorBranchesName?: string;\n usageTime?: string;\n increaseItemUsage?: number;\n}\n\nexport interface ReissueQParams {\n id: number;\n cardNo: number;\n cancelRemark: string;\n branches?: number;\n branchesName?: string;\n}\n\nexport enum CheckStatus {\n Checking, // 待盘点\n Checked, // 已盘点\n Abnormal, //盘点异常\n}\n\nexport interface QCheckParams {\n branches?: number;\n checkStatus: CheckStatus;\n}\n\nexport enum AgentType {\n PC,\n H5,\n}\n\nexport enum ShopType {\n NORMAL = 1,\n HEADQUARTERS = 2,\n VIRTUAL = 3,\n MAINTENANCE = 4,\n}\n\nexport enum BizType {\n FITTINGS = 1,\n}\n\nexport enum ImportStatus {\n DOING,\n DONE,\n}\nexport interface ImportInfoItem {\n bizType: BizType;\n realDealCount: number;\n status: ImportStatus;\n totalCount: number;\n remark: string;\n creator: string;\n fileName: string;\n gmtCreate: string;\n}\n","export const flexHorizontal = `\n display: flex;\n flex-direction: row;\n`;\n\nexport const flexVertical = `\n display: flex;\n flex-direction: column;\n`;\n\nexport const flexHorizontalInline = `\n display: inline-flex;\n flex-direction: row;\n`;\n\nexport const flexVerticalInline = `\n display: inline-flex;\n flex-direction: column;\n`;\n\nexport const flexMainAxisCenter = `\n justify-content: center;\n`;\n\nexport const flexCrossAxisCenter = `\n align-items: center;\n`;\n\nexport const flexStatic = `\n flex-shrink: 0;\n flex-grow: 0;\n`;\n\nexport const flexReactive = `\n flex-shrink: 1;\n flex-grow: 1;\n`;\n","import { Button, Form, Input, Modal } from 'antd';\nimport React, { useState, useEffect } from 'react';\nimport { ISH5 } from '@/utils/common';\nimport { checkCaptcha, getCaptcha } from '@/service/booking';\nimport { CaptchaItem } from '@/service/interface/booking';\n\nfunction CountdownButton({ onClick, errorCount }) {\n const [form] = Form.useForm();\n const [timeLeft, setTimeLeft] = useState(0);\n const [visible, setVisible] = useState(false);\n const [captcha, setCaptcha] = useState({} as CaptchaItem);\n const [isDisabled, setIsDisabled] = useState(false);\n\n useEffect(() => {\n // 如果倒计时正在进行,则设置定时器\n if (timeLeft > 0) {\n const timerId = setTimeout(() => {\n setTimeLeft(timeLeft - 1);\n }, 1000);\n return () => clearTimeout(timerId);\n } else if (timeLeft === 0 && isDisabled) {\n // 倒计时结束后,启用按钮\n setIsDisabled(false);\n }\n }, [timeLeft, isDisabled]);\n\n const handleClick = async () => {\n if (errorCount >= 3) {\n setVisible(true);\n } else {\n const res = await onClick();\n if (!res) {\n return false;\n }\n // 点击按钮后开始倒计时\n setTimeLeft(60);\n setIsDisabled(true);\n }\n };\n\n const fetchCaptcha = async () => {\n const res = await getCaptcha();\n if (res) {\n setCaptcha(res);\n }\n };\n\n useEffect(() => {\n fetchCaptcha();\n }, [visible]);\n\n const handleOnOk = () => {\n form.validateFields().then(async values => {\n const { verifyCode } = values;\n const res = await checkCaptcha({ verifyCode, verifyCodeName: captcha.verifyCodeName });\n if (res) {\n const res1 = await onClick();\n if (!res1) {\n return false;\n }\n // 点击按钮后开始倒计时\n setTimeLeft(60);\n setIsDisabled(true);\n setVisible(false);\n }\n });\n };\n\n return (\n <>\n \n {\n setVisible(false);\n form.resetFields();\n }}\n >\n
    \n
    \n \n \n \n {\n fetchCaptcha();\n }}\n />\n
    \n
    \n \n \n );\n}\n\nexport default CountdownButton;\n","import { message } from 'antd';\n\nconst dealPrintTemplate = (str: string) => {\n const defaultStr = `\n const LODOP = window.LODOP;\n if (!LODOP) {\n window.antd.message.error('请安装 LODOP');\n window.Sound.play();\n return true;\n }\n `;\n return `${defaultStr}\n ${str}\n `;\n};\n\nfunction CreateFullBill8040() {\n const LODOP = window.LODOP;\n if (!LODOP) {\n message.error('请安装 LODOP');\n window.Sound.play();\n return true;\n }\n // LODOP.SET_LICENSES(\n // '',\n // '00BA01243641FB426577823C83A6B8C37DC',\n // '23580B189D96F33252722697A57AC00506B',\n // '',\n // );\n\n LODOP.PRINT_INIT('');\n LODOP.SET_PRINT_PAGESIZE(1, 800, 400, '');\n LODOP.ADD_PRINT_RECT(11, 5, 278, 128, 0, 1);\n LODOP.ADD_PRINT_TEXT(18, 6, 52, 27, '良品');\n LODOP.SET_PRINT_STYLEA(0, 'FontSize', 14);\n LODOP.ADD_PRINT_TEXT(16, 54, 62, 20, '台南崇善');\n LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);\n LODOP.ADD_PRINT_RECT(11, 5, 120, 31, 0, 1);\n LODOP.ADD_PRINT_TEXT(28, 54, 70, 20, '2020/01/02');\n LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);\n LODOP.ADD_PRINT_RECT(42, 5, 120, 44, 0, 1);\n LODOP.ADD_PRINT_TEXT(46, 9, 38, 20, '型號');\n LODOP.SET_PRINT_STYLEA(0, 'FontSize', 10);\n LODOP.ADD_PRINT_BARCODE(44, 47, 83, 19, '128A', 'QEK11PMY128');\n LODOP.SET_PRINT_STYLEA(0, 'ShowBarText', 0);\n LODOP.ADD_PRINT_TEXT(64, 7, 132, 27, 'Apple/iPhone/11 Pro Max/黃色/128G');\n LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);\n LODOP.SET_PRINT_STYLEA(0, 'LineSpacing', -4);\n LODOP.ADD_PRINT_RECT(86, 5, 120, 53, 0, 1);\n LODOP.ADD_PRINT_BARCODE(89, 16, 115, 25, '128A', '351111111111111');\n LODOP.SET_PRINT_STYLEA(0, 'FontSize', 7);\n LODOP.ADD_PRINT_BARCODE(116, 16, 115, 22, '128A', '351111111111112');\n LODOP.SET_PRINT_STYLEA(0, 'FontSize', 7);\n LODOP.ADD_PRINT_TEXT(16, 129, 64, 20, '訂單資訊');\n LODOP.SET_PRINT_STYLEA(0, 'FontSize', 10);\n LODOP.ADD_PRINT_BARCODE(15, 203, 75, 24, '128A', '25423412');\n LODOP.ADD_PRINT_TEXT(\n 42,\n 126,\n 173,\n 55,\n '測試測試測試測試測試測試測試測試測試測試測試測测测试\\r\\nABCDEFGHIJKL',\n );\n LODOP.ADD_PRINT_BARCODE(94, 233, 79, 60, 'QRCode', '123456789012');\n LODOP.ADD_PRINT_TEXT(104, 133, 100, 30, '掃碼填寫處理後續\\r\\n >>>');\n LODOP.SET_PRINT_STYLEA(0, 'FontSize', 8);\n}\n\nfunction CreateFullBill4020() {\n const LODOP = window.LODOP;\n if (!LODOP) {\n message.error('请安装 LODOP');\n window.Sound.play();\n return true;\n }\n // LODOP.SET_LICENSES(\"\",\"00BA01243641FB426577823C83A6B8C37DC\",\"23580B189D96F33252722697A57AC00506B\",\"\");\n\n LODOP.PRINT_INIT('');\n LODOP.SET_PRINT_PAGESIZE(1, 400, 200, '');\n LODOP.ADD_PRINT_RECT(8, 1, 121, 60, 0, 1);\n LODOP.ADD_PRINT_TEXT(9, 3, 120, 35, 'Apple MacBook A1534 A+ 電池組');\n LODOP.SET_PRINT_STYLEA(0, 'LineSpacing', -6);\n LODOP.SET_PRINT_STYLEA(0, 'LetterSpacing', -1);\n LODOP.ADD_PRINT_TEXT(34, 2, 40, 20, '日期:');\n LODOP.SET_PRINT_STYLEA(0, 'FontSize', 7);\n LODOP.ADD_PRINT_TEXT(34, 25, 70, 20, '2020/12/12');\n LODOP.SET_PRINT_STYLEA(0, 'FontSize', 7);\n LODOP.SET_PRINT_STYLEA(0, 'LetterSpacing', -1);\n LODOP.ADD_PRINT_TEXT(34, 66, 38, 20, '供貨:');\n LODOP.SET_PRINT_STYLEA(0, 'FontSize', 7);\n LODOP.ADD_PRINT_TEXT(34, 88, 43, 20, '深圳蔡');\n LODOP.SET_PRINT_STYLEA(0, 'FontSize', 7);\n LODOP.SET_PRINT_STYLEA(0, 'ReadOnly', 0);\n LODOP.ADD_PRINT_BARCODE(45, 18, 100, 15, 'Code39', '123456789012');\n LODOP.SET_PRINT_STYLEA(0, 'ShowBarText', 0);\n LODOP.ADD_PRINT_TEXT(59, 28, 90, 10, '1234567890123');\n LODOP.SET_PRINT_STYLEA(0, 'FontSize', 7);\n LODOP.SET_PRINT_STYLEA(0, 'ReadOnly', 0);\n}\n\nexport { CreateFullBill8040, CreateFullBill4020, dealPrintTemplate };\n","/**\n * @Author: haimian\n * @Description: 分组管理\n * @Date: 2021-07-25\n */\nimport React, { FC, useContext, useState } from 'react';\nimport { Form, Button, Input, Table, Modal, message } from 'antd';\nimport { ColumnProps } from 'antd/lib/table/Column';\nimport { FilterFlexWrapper, FilterLargeItem } from '@/layouts/style-config';\nimport { PlusOutlined, ExclamationCircleOutlined, SearchOutlined } from '@ant-design/icons';\nimport { useLanguage } from '@/hooks/useLanguage';\nimport { processValue } from '@/utils/common';\nimport { RoleItem } from '@/service/interface/user';\nimport { useTable } from '@/hooks/table';\nimport { deleteRole, getUserRoleList } from '@/service/user';\nimport UserManageAuthorityModal from './components/UserManageAuthorityModal';\nimport { GlobalContext } from '@/context';\n\ninterface Props {}\n\nconst UserManageAuthority: FC = () => {\n const { userInfo } = useContext(GlobalContext);\n const { isSupperRole } = userInfo;\n const [form] = Form.useForm();\n const [query, setQuery] = useState({});\n const [visible, setVisible] = useState(false);\n const [record, setRecord] = useState({} as RoleItem);\n const lal = useLanguage();\n const { tableProps, loadData } = useTable({\n service: getUserRoleList,\n query,\n rowKey: 'id',\n });\n\n const {\n common: { search, enter, add, edit, delete: deleteText, sureDelete, tips, success },\n userManage: { roleName, roleIntro },\n table: { operate },\n } = lal;\n\n const columns: ColumnProps[] = [\n {\n title: roleName,\n dataIndex: 'roleName',\n key: 'roleName',\n render: value => processValue(value),\n },\n {\n title: '編碼',\n dataIndex: 'roleCode',\n key: 'roleCode',\n render: value => processValue(value),\n },\n {\n title: roleIntro,\n dataIndex: 'roleIntro',\n key: 'roleIntro',\n render: value => processValue(value),\n },\n {\n title: operate,\n dataIndex: 'id',\n key: 'id',\n render: (val, record) => (\n
    \n {\n setVisible(true);\n setRecord(record);\n }}\n >\n {edit}\n \n {\n Modal.confirm({\n keyboard: false,\n title: tips,\n icon: ,\n content: sureDelete,\n onOk: () => handleDelete(val),\n });\n }}\n >\n {deleteText}\n \n
    \n ),\n },\n ];\n\n const onValuesChange = (_, allFields) => {\n setQuery({\n ...allFields,\n });\n };\n\n const toggleModal = () => {\n setVisible(true);\n };\n\n const onCancel = () => {\n setVisible(false);\n setRecord({} as RoleItem);\n };\n\n const handleDelete = async id => {\n const res = await deleteRole(id);\n if (res) {\n message.success(`${deleteText}${success}`);\n loadData();\n }\n };\n\n return (\n
    \n \n
    \n \n \n \n }\n onClick={() => {\n loadData();\n }}\n >\n {search}\n \n }\n type=\"primary\"\n style={{ marginLeft: 8 }}\n onClick={toggleModal}\n >\n {add}\n \n \n
    \n \n {visible && (\n \n )}\n \n );\n};\n\nexport default UserManageAuthority;\n","import React, { FC, useState } from 'react';\nimport { Empty } from 'antd';\n\ninterface Props {}\n\nconst UserManageCustom: FC = () => {\n return (\n
    \n \n
    \n );\n};\n\nexport default UserManageCustom;\n","import React, { FC, useState, useEffect, useContext } from 'react';\nimport { Table, Button, Modal, message, Input, Form, InputNumber } from 'antd';\nimport { ExclamationCircleOutlined } from '@ant-design/icons';\nimport { useLanguage } from '@/hooks/useLanguage';\nimport { addMenu, deleteMenu, editMenu, getAllMenuList } from '@/service/user';\nimport { TreeItem } from './components/UserManageAuthorityModal';\nimport { processValue } from '@/utils/common';\nimport { MenuItem, MenuType } from '@/service/interface/user.d';\nimport { modalFormLayout } from '@/layouts/style-config';\nimport { debounce } from 'lodash';\nimport { GlobalContext } from '@/context';\n\ninterface Props {}\n\nconst UserManageMenu: FC = () => {\n const lal = useLanguage();\n const [form] = Form.useForm();\n const [btnLoading, setBtnLoading] = useState(false);\n const [menuList, setMenuList] = useState([]);\n const [parentId, setParentId] = useState(null);\n const [menuType, setMenuType] = useState(MenuType.MENU);\n const [visible, setVisible] = useState(false);\n const [record, setRecord] = useState({} as MenuItem);\n const { userInfo } = useContext(GlobalContext);\n const { isSupperRole } = userInfo;\n const {\n common: { allRoute, enter, add, edit, delete: deleteText, sureDelete, tips, success },\n userManage: { type, menuName, catalog, perms, menu, button: curButton },\n table: { order, operate },\n } = lal;\n\n const menuTypeMap: Record = {\n [MenuType.ALLROUTE]: allRoute,\n [MenuType.DIRECTORY]: catalog,\n [MenuType.MENU]: menu,\n [MenuType.BUTTON]: curButton,\n };\n useEffect(() => {\n fetchMenuList();\n }, []);\n\n useEffect(() => {\n if (record && JSON.stringify(record) !== '{}') {\n form.setFieldsValue({\n menuName: record.menuName,\n perms: record.perms,\n sort: record.sort,\n });\n } else {\n form.setFieldsValue({\n menuName: undefined,\n perms: undefined,\n sort: undefined,\n });\n }\n }, [record]);\n\n const fetchMenuList = async () => {\n const res = await getAllMenuList();\n if (res) {\n setMenuList(dealMenuList(res));\n // setMenuList([\n // {\n // title: allRoute,\n // key: 'all',\n // children: dealMenuList(res),\n // menuType: -1,\n // },\n // ]);\n }\n };\n\n const dealMenuList = res => {\n if (res instanceof Array && !res.length) {\n return undefined;\n }\n return (res || []).map(item => {\n return {\n id: item.id,\n menuName: item.menuName,\n title: lal.route[item.menuName] || item.menuName,\n key: item.id,\n perms: item.perms,\n sort: item.sort,\n menuType: item.menuType,\n children: dealMenuList(item.menuList || []),\n };\n });\n };\n\n const columns = [\n {\n title: menuName,\n dataIndex: 'title',\n key: 'title',\n },\n {\n title: perms,\n dataIndex: 'perms',\n key: 'perms',\n render: value => processValue(value),\n },\n {\n title: order,\n dataIndex: 'sort',\n key: 'sort',\n render: value => processValue(value),\n },\n {\n title: type,\n dataIndex: 'menuType',\n key: 'menuType',\n render: value => processValue(menuTypeMap[value]),\n },\n {\n title: operate,\n dataIndex: 'id',\n key: 'id',\n render: (val, record) => (\n
    \n {record.menuType === -1 && record.title !== '所有路由' && (\n {\n openAddModal();\n setParentId(record.id);\n setMenuType(MenuType.DIRECTORY);\n }}\n >\n {add}\n {catalog}\n \n )}\n {record.menuType === MenuType.DIRECTORY && (\n {\n openAddModal();\n setParentId(record.id);\n setMenuType(MenuType.MENU);\n }}\n >\n {add}\n {menu}\n \n )}\n {record.menuType === MenuType.MENU && (\n {\n setParentId(record.id);\n setMenuType(MenuType.BUTTON);\n openAddModal();\n }}\n >\n {add}\n {curButton}\n \n )}\n {record.menuType !== -1 && (\n {\n openAddModal();\n setRecord(record);\n }}\n >\n {edit}\n \n )}\n {record.menuType !== -1 && (\n {\n Modal.confirm({\n keyboard: false,\n title: tips,\n icon: ,\n content: sureDelete,\n onOk: () => handleDelete(val),\n });\n }}\n >\n {deleteText}\n \n )}\n
    \n ),\n },\n ];\n\n const handleDelete = async id => {\n const res = await deleteMenu(id);\n if (res) {\n message.success(`${deleteText}${success}`);\n fetchMenuList();\n }\n };\n\n const openAddModal = () => {\n setVisible(true);\n };\n\n const onCancel = () => {\n setVisible(false);\n setRecord({} as MenuItem);\n setParentId(null);\n setMenuType(undefined);\n fetchMenuList();\n };\n\n return (\n
    \n \n {visible && (\n {\n form.validateFields().then(async values => {\n setBtnLoading(true);\n let res;\n if (record && JSON.stringify(record) !== '{}') {\n res = await editMenu({\n ...record,\n ...values,\n });\n } else {\n res = await addMenu({\n ...values,\n parentId,\n menuType,\n });\n }\n setBtnLoading(false);\n if (res) {\n message.success(\n !record || JSON.stringify(record) === '{}'\n ? `${add}${success}`\n : `${edit}${success}`,\n );\n onCancel();\n }\n });\n }, 200)}\n >\n
    \n \n \n \n \n \n \n \n \n \n \n \n )}\n
    \n );\n};\n\nexport default UserManageMenu;\n","/**\n * @Author: haimian\n * @Description: 權限管理\n * @Date: 2022-01-26\n */\nimport React, { FC, useState, useEffect } from 'react';\nimport { Button, Table, Modal, Form, message, Input, TreeSelect, Spin } from 'antd';\nimport { PlusOutlined } from '@ant-design/icons';\nimport { useLanguage } from '@/hooks/useLanguage';\nimport { useTable } from '@/hooks/table';\nimport { processValue } from '@/utils/common';\nimport { ColumnProps } from 'antd/lib/table';\nimport { AccessItem, AccessTree } from '@/service/interface/user';\nimport { addAccess, editAccess, getAccessList, getUserList } from '@/service/user';\nimport { modalFormLayout } from '@/layouts/style-config';\nimport { debounce, groupBy } from 'lodash';\nimport useRole from '@/hooks/useRole';\n\ninterface Props {}\n\nconst UserManageAccess: FC = () => {\n const [loading, setLoading] = useState(false);\n const [form] = Form.useForm();\n const [btnLoading, setBtnLoading] = useState(false);\n const [visible, setVisible] = useState(false);\n const [dataSource, setDataSource] = useState([]);\n const [record, setRecord] = useState({} as AccessItem);\n const lal = useLanguage();\n const roleList = useRole();\n const { tableProps, loadData } = useTable({\n service: getAccessList,\n rowKey: 'id',\n });\n\n const {\n common: { enter, add, edit, success },\n userManage: { remark },\n table: { operate },\n } = lal;\n\n useEffect(() => {\n if (record && JSON.stringify(record) !== '{}') {\n form.setFieldsValue({\n buttonName: record.buttonName,\n buttonCode: record.buttonCode,\n pathRoute: record.pathRoute,\n remark: record.remark,\n userIdList: (record.userVOList || []).map(item => item?.id),\n });\n } else {\n form.resetFields();\n }\n }, [record]);\n\n useEffect(() => {\n if (Array.isArray(roleList) && roleList.length > 0) {\n fetchUserList();\n }\n }, [roleList]);\n\n const toggleModal = () => {\n setVisible(true);\n };\n\n const columns: ColumnProps[] = [\n {\n title: '權限名稱',\n width: 180,\n dataIndex: 'buttonName',\n key: 'buttonName',\n render: value => processValue(value),\n },\n {\n title: '權限編碼',\n width: 120,\n dataIndex: 'buttonCode',\n key: 'buttonCode',\n render: value => processValue(value),\n },\n {\n title: '员工',\n dataIndex: 'userVOList',\n key: 'userVOList',\n render: value => (value || []).map(item => item?.realName).join('、'),\n },\n {\n title: '路由地址',\n width: 100,\n dataIndex: 'pathRoute',\n key: 'pathRoute',\n render: value => processValue(value),\n },\n {\n title: remark,\n width: 100,\n dataIndex: 'remark',\n key: 'remark',\n render: value => processValue(value),\n },\n {\n title: '創建人',\n width: 100,\n dataIndex: 'creator',\n key: 'creator',\n render: value => processValue(value),\n },\n {\n title: operate,\n width: 100,\n dataIndex: 'id',\n key: 'id',\n render: (val, record) => (\n
    \n {\n setVisible(true);\n setRecord(record);\n }}\n >\n {edit}\n \n
    \n ),\n },\n ];\n\n const onCancel = () => {\n form.resetFields();\n setVisible(false);\n setRecord({} as AccessItem);\n };\n\n const onOk = () => {\n form.validateFields().then(async values => {\n setBtnLoading(true);\n const { buttonName, buttonCode, remark, userIdList, pathRoute } = values;\n let res;\n if (record && JSON.stringify(record) !== '{}') {\n res = await editAccess({\n id: record.id,\n buttonName,\n buttonCode,\n pathRoute,\n remark,\n userIdList,\n });\n } else {\n res = await addAccess({\n ...values,\n });\n }\n setBtnLoading(false);\n if (res) {\n loadData();\n message.success(\n !record || JSON.stringify(record) === '{}' ? `${add}${success}` : `${edit}${success}`,\n );\n onCancel();\n }\n });\n };\n\n const fetchUserList = async () => {\n setLoading(true);\n const res = await getUserList({\n pageNum: 1,\n pageSize: 9999,\n });\n if (res) {\n const arr = (res.records || []).map(({ realName, id, roleVOList }) => ({\n userId: id,\n realName,\n roleName: (roleVOList || [])?.[0].roleName,\n roleId: (roleVOList || [])?.[0].id,\n }));\n const arrMap = Object.entries(groupBy(arr, 'roleId'));\n const dataArr = arrMap.map(([roleId, userList]) => {\n return {\n title: roleList.filter(li => li.value === +roleId)?.[0]?.label,\n value: +roleId * -1,\n key: +roleId * -1,\n children: (userList || []).map(({ realName, userId }) => ({\n title: realName,\n value: userId,\n key: userId,\n })),\n };\n });\n setDataSource(dataArr);\n }\n setLoading(false);\n };\n\n return (\n
    \n \n }\n type=\"primary\"\n style={{ marginLeft: 8, marginBottom: 8 }}\n onClick={toggleModal}\n >\n {add}\n \n
    \n \n {visible && (\n \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n \n );\n};\n\nexport default UserManageAccess;\n","/**\n * @Author: haimian\n * @Description: 地区分组管理\n * @Date: 2021-07-25\n */\nimport React, { FC, useState, useEffect, useContext } from 'react';\nimport { Button, Table, Modal, Form, message, Input } from 'antd';\nimport { PlusOutlined, ExclamationCircleOutlined } from '@ant-design/icons';\nimport { useLanguage } from '@/hooks/useLanguage';\nimport { useTable } from '@/hooks/table';\nimport { processValue } from '@/utils/common';\nimport { ColumnProps } from 'antd/lib/table';\nimport { GroupItem } from '@/service/interface/user';\nimport { addGroup, deleteGroup, editGroup, fetchGroupInfo, getGroupList } from '@/service/user';\nimport { modalFormLayout } from '@/layouts/style-config';\nimport { debounce } from 'lodash';\nimport { GlobalContext } from '@/context';\n\ninterface Props {}\n\nconst UserManagePersonnel: FC = () => {\n const [form] = Form.useForm();\n const { userInfo } = useContext(GlobalContext);\n const { isSupperRole } = userInfo;\n const [btnLoading, setBtnLoading] = useState(false);\n const [visible, setVisible] = useState(false);\n const [record, setRecord] = useState({} as GroupItem);\n const lal = useLanguage();\n const { tableProps, loadData } = useTable({\n service: getGroupList,\n rowKey: 'id',\n });\n\n const {\n common: { enter, add, edit, delete: deleteText, sureDelete, tips, success },\n userManage: { group, remark },\n table: { operate },\n } = lal;\n\n useEffect(() => {\n if (record && JSON.stringify(record) !== '{}') {\n fetchGroupInfo(record.id);\n form.setFieldsValue({\n groupName: record.groupName,\n note: record.note,\n });\n }\n }, [record]);\n\n const toggleModal = () => {\n setVisible(true);\n };\n\n const columns: ColumnProps[] = [\n {\n title: group,\n dataIndex: 'groupName',\n key: 'groupName',\n render: value => processValue(value),\n },\n {\n title: remark,\n dataIndex: 'note',\n key: 'note',\n render: value => processValue(value),\n },\n {\n title: operate,\n dataIndex: 'id',\n key: 'id',\n render: (val, record) => (\n
    \n {\n setVisible(true);\n setRecord(record);\n }}\n >\n {edit}\n \n {\n Modal.confirm({\n keyboard: false,\n title: tips,\n icon: ,\n content: sureDelete,\n onOk: () => handleDelete(val),\n });\n }}\n >\n {deleteText}\n \n
    \n ),\n },\n ];\n\n const handleDelete = async val => {\n const res = await deleteGroup(val);\n if (res) {\n message.success(`${deleteText}${success}`);\n loadData();\n }\n };\n\n const onCancel = () => {\n setVisible(false);\n setRecord({} as GroupItem);\n form.resetFields();\n };\n\n const onOk = () => {\n form.validateFields().then(async values => {\n setBtnLoading(true);\n const { groupName, note } = values;\n let res;\n if (record && JSON.stringify(record) !== '{}') {\n res = await editGroup({\n ...record,\n groupName,\n note,\n });\n } else {\n res = await addGroup({\n groupName,\n note,\n });\n }\n setBtnLoading(false);\n if (res) {\n loadData();\n message.success(\n !record || JSON.stringify(record) === '{}' ? `${add}${success}` : `${edit}${success}`,\n );\n onCancel();\n }\n });\n };\n\n return (\n
    \n }\n type=\"primary\"\n style={{ marginLeft: 8, marginBottom: 8 }}\n onClick={toggleModal}\n >\n {add}\n \n
    \n {visible && (\n \n
    \n \n \n \n \n \n \n \n \n )}\n \n );\n};\n\nexport default UserManagePersonnel;\n","import React, { FC, useEffect, useState } from 'react';\nimport { Form, Input, Button, Select, Modal, message } from 'antd';\nimport { SearchOutlined, PlusOutlined, CloudUploadOutlined } from '@ant-design/icons';\nimport { useLanguage } from '@/hooks/useLanguage';\nimport { FilterFlexWrapper, FilterLargeItem } from '@/layouts/style-config';\nimport useRole from '@/hooks/useRole';\nimport useGroup from '@/hooks/useGroup';\nimport { changeUserLoginSecondaryVerificationUser, getUserInfoConfigCode } from '@/service/user';\n\nconst { Option } = Select;\n\ninterface UserManageAccountFilterFormParams {\n account: string;\n realName: string;\n nickName: string;\n phone: string;\n roleIds: number;\n groupId: number;\n}\n\ninterface Props {\n onChange: (params: UserManageAccountFilterFormParams) => void;\n showModal: () => void;\n showImportModal: () => void;\n loadData: () => void;\n}\n\nconst UserManageAccountFilter: FC = ({ loadData, onChange, showModal, showImportModal }) => {\n const [form] = Form.useForm();\n const roleList = useRole();\n const groupList = useGroup();\n const lal = useLanguage();\n const [configValue, setConfigValue] = useState('false');\n const {\n common: { search, select, enter, add, import: curImport },\n userManage: { account, realName, nickName, phone, role, group },\n } = lal;\n\n const onValuesChange = (_, allFields) => {\n onChange(allFields);\n };\n\n const fetchInfo = async () => {\n const res = await getUserInfoConfigCode();\n if (res) {\n setConfigValue(res.configValue);\n }\n };\n\n useEffect(() => {\n fetchInfo();\n }, []);\n\n return (\n \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n }\n onClick={() => {\n loadData();\n }}\n >\n {search}\n \n showModal()}\n icon={}\n >\n {add}\n \n {\n Modal.confirm({\n title: configValue === 'true' ? `關閉登錄二次驗證` : `打開登錄二次驗證`,\n onOk: async () => {\n const res = await changeUserLoginSecondaryVerificationUser({\n enable: configValue === 'true' ? false : true,\n });\n if (res) {\n message.success('操作成功');\n fetchInfo();\n loadData();\n }\n },\n });\n }}\n >\n {configValue === 'true' ? `關閉登錄二次驗證` : `打開登錄二次驗證`}\n \n {/* showImportModal()}\n icon={}\n >\n {curImport}\n */}\n \n
    \n );\n};\n\nexport default UserManageAccountFilter;\n","import { useEffect, useState } from 'react';\nimport { RoleDataSourceItem } from '@/service/interface/user';\nimport { getUserRoleList } from '@/service/user';\n\nfunction useIgnoreSupperRole() {\n const [ignoreSupperRoleList, setRoleList] = useState([]);\n useEffect(() => {\n fetchRole();\n }, []);\n\n const fetchRole = async () => {\n const res = await getUserRoleList({\n pageNum: 1,\n pageSize: 9999,\n ignoreSupperRole: true,\n });\n if (res) {\n setRoleList(\n (res.records || []).map(item => ({\n label: item.roleName,\n value: item.id,\n })),\n );\n }\n };\n return ignoreSupperRoleList;\n}\n\nexport default useIgnoreSupperRole;\n","import React, { FC, useState, useEffect } from 'react';\nimport { Modal, Form, Input, Row, Col, Select, message } from 'antd';\nimport { debounce, groupBy } from 'lodash';\nimport useRole from '@/hooks/useRole';\nimport useGroup from '@/hooks/useGroup';\nimport { useLanguage } from '@/hooks/useLanguage';\nimport { UserItem } from '@/service/interface/user';\nimport { addUser, editUser, hanldeGetUserInfo } from '@/service/user';\nimport MyUpload from '@/components/my-upload';\nimport useWebSupplier from '@/hooks/useWebSupplier';\nimport useIgnoreSupperRole from '@/hooks/useIgnoreSupperRole';\nimport { NewImageType } from '@/service/interface/commom.d';\nimport { cutPrefixImgUrl, dealSimpleMinioImgUrl } from '@/utils/common';\n\ninterface Props {\n record: UserItem;\n visible: boolean;\n loadData: () => void;\n onCancel: () => void;\n}\ninterface FileItem {\n uid: string;\n name: string;\n status: string;\n url: string;\n}\nconst { Option } = Select;\n\nconst UserManageAccountModal: FC = ({ visible, record, onCancel, loadData }) => {\n const [form] = Form.useForm();\n const [btnLoading, setBtnLoading] = useState(false);\n const [fileList, setFileList] = useState([]);\n const [imageUrl, setImageUrl] = useState('');\n const roleList = useRole();\n const ignoreSupperRoleList = useIgnoreSupperRole();\n\n const webSupplierList = useWebSupplier();\n const groupList = useGroup();\n const lal = useLanguage();\n const {\n common: { enter, select, add, edit, success },\n userManage: { account, realName, remark, nickName, phone, role, email, group, password },\n } = lal;\n\n useEffect(() => {\n if (record && JSON.stringify(record) !== '{}') {\n fetchUserInfo(record.id);\n } else {\n reset();\n }\n }, [record]);\n\n const reset = () => {\n form.resetFields();\n setImageUrl('');\n setFileList([]);\n };\n\n const fetchUserInfo = async id => {\n const res = await hanldeGetUserInfo(id);\n if (res) {\n if (res.imageUrl) {\n setImageUrl(dealSimpleMinioImgUrl(res.imageUrl));\n setFileList([\n {\n uid: '-1',\n name: 'img.png',\n status: 'done',\n url: dealSimpleMinioImgUrl(res.imageUrl),\n },\n ]);\n }\n form.setFieldsValue({\n note: res.note,\n account: res.account,\n jobNum: res.jobNum,\n phone: res.phone,\n email: res.email,\n nickName: res.nickName,\n realName: res.realName,\n roleIds: res.roleIds.map(Number) || [],\n groupId: res.groupId,\n supplierId: res.supplierId,\n groupVOList: (res.groupVOList || []).map(item => ({\n label: item.groupName,\n value: item.groupId,\n })),\n });\n }\n };\n\n const onOk = async () => {\n form.validateFields().then(async values => {\n setBtnLoading(true);\n const { groupVOList } = values;\n let curGroupVOList: { groupName: string; groupId: number }[] = [];\n if (groupVOList instanceof Array && !!groupVOList.length) {\n curGroupVOList = groupVOList.map(item => ({ groupName: item.label, groupId: item.value }));\n }\n let res;\n if (record && JSON.stringify(record) !== '{}') {\n res = await editUser({\n ...record,\n ...values,\n imageUrl: cutPrefixImgUrl(imageUrl),\n groupName: groupBy(groupList, 'value')[values.groupId][0].label,\n supplierId: values.supplierId || null,\n supplierName: groupBy(webSupplierList, 'value')[values.supplierId]?.[0]?.label || null,\n groupVOList: curGroupVOList,\n });\n } else {\n res = await addUser({\n ...values,\n imageUrl: cutPrefixImgUrl(imageUrl),\n groupName: groupBy(groupList, 'value')[values.groupId][0].label,\n supplierId: values.supplierId || null,\n supplierName: groupBy(webSupplierList, 'value')[values.supplierId]?.[0]?.label || null,\n groupVOList: curGroupVOList,\n });\n }\n setBtnLoading(false);\n if (res) {\n onCancel();\n loadData();\n message.success(\n !record || JSON.stringify(record) === '{}' ? `${add}${success}` : `${edit}${success}`,\n );\n }\n });\n };\n\n const handleSetImageUrl = val => {\n setImageUrl(val);\n };\n\n const handleSetFileList = val => {\n setFileList(val);\n };\n\n return (\n {\n reset();\n onCancel();\n }}\n visible={visible}\n confirmLoading={btnLoading}\n width={650}\n onOk={debounce(onOk, 200)}\n maskClosable={false}\n >\n
    \n \n
    \n \n \n \n \n \n \n \n \n \n {!(record && JSON.stringify(record) !== '{}') && (\n \n \n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n if ((form.getFieldValue('groupVOList') || []).includes(val)) {\n form.setFieldsValue({\n groupVOList: (form.getFieldValue('groupVOList') || []).filter(\n item => item.value !== val,\n ),\n });\n }\n }}\n >\n {groupList.map(({ label, value }, index) => (\n \n ))}\n \n \n \n \n {({ getFieldValue }) => (\n \n \n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n 0 ? fileList : undefined\n }\n handleSetImageUrl={handleSetImageUrl}\n handleSetFileList={handleSetFileList}\n />\n \n \n );\n};\n\nexport default UserManageAccountModal;\n","import React, { FC } from 'react';\nimport { Modal, Upload, message } from 'antd';\nimport { InboxOutlined } from '@ant-design/icons';\nimport { useLanguage } from '@/hooks/useLanguage';\nimport { getToken } from '@/utils/cookies';\n\nconst { apiEnvTargetMap, currentNodeEnv } = require('@/setupProxyConfig');\n\nconst { Dragger } = Upload;\n\ninterface Props {\n visible: boolean;\n onCancel: () => void;\n}\n\nconst UserManageAccountImportModal: FC = ({ visible, onCancel }) => {\n const lal = useLanguage();\n const {\n common: { import: curImport, success, error },\n file: { tips },\n secondHand: { fileUpload: curFileUpload },\n } = lal;\n\n const uploadImgOnChange = info => {\n if (info.file.status === 'done') {\n message.success(`${info.file.name}${curFileUpload}${success}`);\n onCancel();\n } else if (info.file.status === 'error') {\n message.error(`${info.file.name}${curFileUpload}${error}`);\n }\n };\n\n return (\n \n
    \n \n

    \n \n

    \n

    {tips}

    \n \n
    \n
    \n );\n};\n\nexport default UserManageAccountImportModal;\n","import React, { FC, useState } from 'react';\nimport { Modal, Form, Input, Row, Col, message } from 'antd';\nimport { useLanguage } from '@/hooks/useLanguage';\nimport { UserItem } from '@/service/interface/user';\nimport { editPwd } from '@/service/user';\n\ninterface Props {\n record: UserItem;\n visible: boolean;\n loadData: () => void;\n onCancel: () => void;\n}\n\nconst UserManageAccountChangePwdModal: FC = ({ visible, record, onCancel, loadData }) => {\n const [form] = Form.useForm();\n const [btnLoading, setBtnLoading] = useState(false);\n const lal = useLanguage();\n const {\n common: { enter, changePwd, success },\n table: { operate },\n userManage: { password },\n } = lal;\n\n const reset = () => {\n form.resetFields();\n };\n\n const onOk = async () => {\n form.validateFields().then(async values => {\n setBtnLoading(true);\n const res = await editPwd({\n id: record.id,\n account: record.account,\n ...values,\n });\n setBtnLoading(false);\n if (res) {\n onCancel();\n loadData();\n message.success(`${operate}${success}`);\n }\n });\n };\n\n return (\n {\n reset();\n onCancel();\n }}\n visible={visible}\n confirmLoading={btnLoading}\n onOk={onOk}\n >\n
    \n \n
    \n \n \n \n \n \n \n \n );\n};\n\nexport default UserManageAccountChangePwdModal;\n","/**\n * @Author: haimian\n * @Description: 账户管理\n * @Date: 2021-07-25\n */\nimport React, { FC, useContext, useState } from 'react';\nimport { Table, Button, Modal, message, Popconfirm } from 'antd';\nimport { ExclamationCircleOutlined } from '@ant-design/icons';\nimport { ColumnProps } from 'antd/lib/table';\nimport {\n changeUserStatus,\n deleteUser,\n getUserList,\n resetSmsRemainTimes,\n singleChangeUserLoginSecondaryVerificationUser,\n} from '@/service/user';\nimport { useLanguage } from '@/hooks/useLanguage';\nimport { UserItem, UserStatus } from '@/service/interface/user.d';\nimport { useTable } from '@/hooks/table';\nimport { processValue } from '@/utils/common';\nimport UserManageAccountFilter from './components/UserManageAccountFilter';\nimport UserManageAccountModal from './components/UserManageAccountModal';\nimport UserManageAccountImportModal from './components/UserManageAccountImportModal';\nimport { error } from '@/config/style-to-json/colors';\nimport UserManageAccountChangePwdModal from './components/UserManageAccountChangePwdModal';\nimport { GlobalContext } from '@/context';\nimport moment from 'moment';\nimport { useUniqueAsync } from 'khooks-lib';\n\ninterface Props {}\n\nconst UserManageAccount: FC = () => {\n const [query, setQuery] = useState({});\n const [visible, setVisible] = useState(false);\n const [importVisible, setImportVisible] = useState(false);\n const [changePwdVisible, setChangePwdVisible] = useState(false);\n const [record, setRecord] = useState({} as UserItem);\n const lal = useLanguage();\n const { userInfo } = useContext(GlobalContext);\n const { isSupperRole } = userInfo;\n const { tableProps, loadData } = useTable({\n service: getUserList,\n query,\n rowKey: 'id',\n });\n\n const {\n common: { edit, delete: deleteText, sureDelete, tips, success, changePwd },\n userManage: {\n account,\n nickName,\n realName,\n group,\n role,\n phone,\n gmtCreate,\n remark,\n accountStatus,\n normal,\n stopUsing,\n startUsing,\n locking,\n unlocking,\n locked,\n },\n table: { operate },\n } = lal;\n\n const userStatusMap: Record = {\n [UserStatus.NORMAL]: normal,\n [UserStatus.DISABLED]: stopUsing,\n [UserStatus.LOCKED]: locked,\n };\n\n const { asyncFn: handleResetUserSmsRemainTimes, loading: resetSmsLoading } = useUniqueAsync(\n async (id: any) => {\n const success = await resetSmsRemainTimes({ id });\n if (success) {\n message.success('重置成功!');\n loadData();\n }\n },\n );\n\n const columns: ColumnProps[] = [\n {\n width: 80,\n title: account,\n dataIndex: 'account',\n key: 'account',\n fixed: 'left',\n render: value => processValue(value),\n },\n // {\n // width: 120,\n // title: '工號',\n // dataIndex: 'jobNum',\n // key: 'jobNum',\n // render: value => processValue(value),\n // },\n {\n width: 80,\n title: realName,\n dataIndex: 'realName',\n key: 'realName',\n render: value => processValue(value),\n },\n {\n width: 80,\n title: nickName,\n dataIndex: 'nickName',\n key: 'nickName',\n render: value => processValue(value),\n },\n {\n width: 80,\n title: group,\n dataIndex: 'groupName',\n key: 'groupName',\n render: value => processValue(value),\n },\n {\n width: 150,\n title: role,\n dataIndex: 'roleVOList',\n key: 'roleVOList',\n render: value => {\n return (\n
    \n {(value || []).map(it => (\n
    {processValue(it.roleName)}
    \n ))}\n
    \n );\n },\n },\n {\n width: 120,\n title: phone,\n dataIndex: 'phone',\n key: 'phone',\n render: value => processValue(value),\n },\n {\n width: 120,\n title: gmtCreate,\n dataIndex: 'gmtCreate',\n key: 'gmtCreate',\n render: value => moment(value).format('YYYY-MM-DD'),\n },\n {\n width: 120,\n title: '最後登錄時間',\n dataIndex: 'latestLoginTime',\n key: 'latestLoginTime',\n render: value => (value ? moment(value).format('YYYY-MM-DD HH:mm:ss') : '--'),\n },\n {\n width: 120,\n title: '最後登錄IP',\n dataIndex: 'latestLoginIp',\n key: 'latestLoginIp',\n render: value => processValue(value),\n },\n {\n width: 100,\n title: remark,\n dataIndex: 'note',\n key: 'note',\n render: value => processValue(value),\n },\n {\n width: 80,\n title: accountStatus,\n dataIndex: 'userStatus',\n key: 'userStatus',\n render: value => (\n \n {processValue(userStatusMap[value])}\n \n ),\n },\n {\n width: 100,\n title: '剩餘簡訊次數',\n dataIndex: 'selfServiceSendMessagesRemainingTimes',\n key: 'selfServiceSendMessagesRemainingTimes',\n render: (value, record) => {\n return (\n <>\n {processValue(value)}\n {isSupperRole ? (\n {\n void handleResetUserSmsRemainTimes(record.id);\n }}\n >\n \n \n ) : null}\n \n );\n },\n },\n {\n title: operate,\n dataIndex: 'id',\n key: 'id',\n width: 140,\n render: (val, record) => (\n
    \n {\n Modal.confirm({\n title: '確認此操作',\n onOk: async () => {\n const res = await singleChangeUserLoginSecondaryVerificationUser({\n id: record.id,\n enable: !record?.isSecondaryVerification,\n });\n if (res) {\n message.success('操作成功');\n loadData();\n }\n },\n });\n }}\n >\n {!record?.isSecondaryVerification ? '打開二次驗證' : '關閉二次驗證'}\n \n {\n setVisible(true);\n setRecord(record);\n }}\n >\n {edit}\n \n {\n Modal.confirm({\n keyboard: false,\n title: tips,\n icon: ,\n content: sureDelete,\n onOk: () => handleDelete(val),\n });\n }}\n >\n {deleteText}\n \n {record.userStatus === UserStatus.NORMAL && (\n {\n handleChangeUserStatus(UserStatus.DISABLED, val);\n }}\n >\n {stopUsing}\n \n )}\n {record.userStatus === UserStatus.DISABLED && (\n {\n handleChangeUserStatus(UserStatus.NORMAL, val);\n }}\n >\n {startUsing}\n \n )}\n {record.userStatus === UserStatus.NORMAL && (\n {\n handleChangeUserStatus(UserStatus.LOCKED, val);\n }}\n >\n {locking}\n \n )}\n {record.userStatus === UserStatus.LOCKED && (\n {\n handleChangeUserStatus(UserStatus.NORMAL, val);\n }}\n >\n {unlocking}\n \n )}\n {\n setChangePwdVisible(true);\n setRecord(record);\n }}\n >\n {changePwd}\n \n
    \n ),\n },\n ];\n\n /** 删除用户 */\n const handleDelete = async val => {\n const res = await deleteUser(val);\n if (res) {\n message.success(`${deleteText}${success}`);\n loadData();\n }\n };\n\n const handleChangeUserStatus = async (userStatus, userId) => {\n const res = await changeUserStatus({\n userStatus,\n userId,\n });\n if (res) {\n message.success(`${operate}${success}`);\n loadData();\n }\n };\n\n const showModal = () => {\n setVisible(true);\n };\n\n const showImportModal = () => {\n setImportVisible(true);\n };\n\n return (\n
    \n {\n setQuery(curQuery);\n }}\n showModal={showModal}\n showImportModal={showImportModal}\n loadData={loadData}\n />\n \n {visible && (\n {\n setVisible(false);\n setRecord({} as UserItem);\n }}\n record={record}\n loadData={loadData}\n />\n )}\n {importVisible && (\n {\n setImportVisible(false);\n }}\n />\n )}\n {changePwdVisible && (\n {\n setChangePwdVisible(false);\n setRecord({} as UserItem);\n }}\n visible={changePwdVisible}\n record={record}\n loadData={loadData}\n />\n )}\n
    \n );\n};\n\nexport default UserManageAccount;\n","/**\n * @Author: haimian\n * @Description: 登录页面\n * @Date: 2021-07-22\n */\nimport React, { useState, useEffect, useRef } from 'react';\nimport qs from 'qs';\nimport { Form, Input, Button, Modal, Row, Col, message } from 'antd';\nimport { PageWrapper, ImgContainer, LoginWrapper, LoginFormContainer, FormTitle } from './style';\nimport {\n sendLoginV2VerificationCode,\n submitLogin2,\n verifyLoginV2SentVerificationCode,\n} from '@/service/user';\nimport { setToken } from '@/utils/cookies';\nimport { ROUTER_PREFIX } from '@/config/router-config';\nimport { ISH5 } from '@/utils/common';\nimport { AgentType } from '@/service/interface/user.d';\nimport { useLocation } from 'react-router';\nimport CountdownButton from '../booking/components/CountdownButton';\n\nconst Login = () => {\n const [loading, setLoading] = useState(false);\n const [showSmsVisible, setShowSmsVisible] = useState(false);\n const { search } = useLocation();\n const [form] = Form.useForm();\n const [smsForm] = Form.useForm();\n const { getFieldValue } = form;\n\n const loginRef = useRef(null);\n\n useEffect(() => {\n if (\n process.env.REACT_APP_API_ENV === 'development' &&\n window.location.host.indexOf('localhost') !== -1\n ) {\n form.setFieldsValue({\n account: 'qek779',\n password: 'Aa111111',\n });\n }\n }, []);\n\n const onFinish = async values => {\n setLoading(true);\n const res = await submitLogin2({\n ...values,\n agentType: ISH5 ? AgentType.H5 : AgentType.PC,\n });\n if (res) {\n if (res?.secondaryVerificationEnable) {\n loginRef.current = values;\n setShowSmsVisible(true);\n } else {\n setToken(res.token);\n if (search && search.includes('?')) {\n const { redirectUrl } = qs.parse((search.split('?') || [])[1]);\n if (redirectUrl) {\n window.location.href = redirectUrl as string;\n } else {\n window.location.href = `/${ROUTER_PREFIX}/dashboard`;\n }\n } else {\n window.location.href = `/${ROUTER_PREFIX}/dashboard`;\n }\n }\n }\n setLoading(false);\n };\n\n const sendCode = async account => {\n const res = await sendLoginV2VerificationCode({\n account: loginRef.current?.account,\n });\n\n return new Promise(async (resolve, reject) => {\n if (res) {\n message.success('簡訊認證碼發送成功');\n resolve(true);\n } else {\n resolve(false);\n }\n });\n };\n\n return (\n \n \n \n \n 系統登錄\n \n \n \n \n \n \n \n \n \n 忘記密碼 / 解鎖賬號\n \n \n \n \n \n \n \n \n {\n smsForm.validateFields().then(async values => {\n const { verificationCode } = values;\n const res = await verifyLoginV2SentVerificationCode({\n account: form.getFieldValue('account'),\n verificationCode,\n agentType: ISH5 ? AgentType.H5 : AgentType.PC,\n });\n if (res && res.token) {\n setToken(res.token);\n if (search && search.includes('?')) {\n const { redirectUrl } = qs.parse((search.split('?') || [])[1]);\n if (redirectUrl) {\n window.location.href = redirectUrl as string;\n } else {\n window.location.href = `/${ROUTER_PREFIX}/dashboard`;\n }\n } else {\n window.location.href = `/${ROUTER_PREFIX}/dashboard`;\n }\n }\n });\n }}\n onCancel={() => {\n setShowSmsVisible(false);\n }}\n >\n
    \n \n
    \n
    \n \n \n \n \n
    \n \n \n \n \n \n );\n};\n\nexport default Login;\n","import { getEcpayInfo } from '@/service/dashboard';\nimport { IEcpayInfo } from '@/service/interface/booking';\nimport { enCryptoByDes } from '@/utils/encryptDes';\nimport { Button, Descriptions, Divider, message } from 'antd';\nimport copy from 'copy-to-clipboard';\nimport moment from 'moment';\nimport React, { useEffect, useState } from 'react';\nimport { useRouteMatch, useHistory } from 'react-router-dom';\n\nexport interface RouteMatch {\n tradeNo: string | undefined;\n}\n\nconst tradeStatusMap = {\n 0: '待付款',\n 1: '已付款',\n 2: '已過期',\n};\n\nexport default function EcpayInfo() {\n const [detail, setDetail] = useState({} as IEcpayInfo);\n const match = useRouteMatch();\n const { tradeNo } = match.params;\n const {\n merchantTradeNo,\n orderNo,\n skuName,\n tradeNo: curTradeNo,\n tradeStatus,\n paymentDate,\n tradeAmt,\n tradeDate,\n paymentType,\n price,\n needUnifyNumber,\n invoiceVO,\n unifyNumber,\n chargeFee,\n atmBankName,\n atmBankCode,\n atmAccNo,\n atmExpireTime,\n atmExpireDate,\n atmVirtualAccount,\n cardAuthCode,\n card6No,\n card4No,\n cardEci,\n cardGwsr,\n cardProcessDate,\n } = detail;\n\n useEffect(() => {\n if (tradeNo) {\n getInfo(tradeNo);\n }\n }, [tradeNo]);\n\n const getInfo = async tradeNo => {\n const res = await getEcpayInfo({\n tradeNo: decodeURIComponent(tradeNo),\n });\n if (res) {\n setDetail(res);\n }\n };\n\n const translateNum = str => {\n let result = '';\n for (let i = 0; i < str.length; i++) {\n if (i % 4 === 0 && i !== 0) {\n result += ' ' + str[i];\n } else {\n result += str[i];\n }\n }\n return (\n \n {result.split(' ').map((item, index) => {\n return (\n \n {item}\n {index === result.length - 1 ? '' : ' '}\n \n );\n })}\n \n );\n };\n\n return (\n
    \n
    \n

    \n 訂單資訊:\n

    \n

    您預約的機型:{skuName || '--'}

    \n

    \n Q哥預約單號:{orderNo}\n {\n copy(orderNo);\n message.success('拷貝成功');\n }}\n >\n 拷貝\n \n

    \n

    \n ECPay交易編號:{curTradeNo}\n {\n copy(curTradeNo);\n message.success('拷貝成功');\n }}\n >\n 拷貝\n \n

    \n

    訂單創建時間:{tradeDate}

    \n

    付款方式:{paymentType}

    \n

    訂單金額:{price}

    \n
    \n\n
    \n

    \n 付款資訊:\n

    \n {detail.paymentType === 'ATM' && (\n <>\n

    \n 轉賬銀行代碼:{atmBankCode}({atmBankName})\n

    \n

    \n 收款虛擬賬號:{translateNum(atmVirtualAccount)}{' '}\n {\n copy(atmVirtualAccount);\n message.success('拷貝成功');\n }}\n >\n 拷貝\n \n

    \n {/*

    付款賬號后5位:{atmAccNo}

    */}\n

    付款有效期:{moment(atmExpireTime).format('YYYY-MM-DD')} 之前

    \n \n )}\n {detail.paymentType === 'Credit' && (\n <>\n

    信用卡銀行授權碼:{cardAuthCode || '--'}

    \n

    信用卡授權交易單號:{cardGwsr || '--'}

    \n

    信用卡卡號末4位:{card4No || '--'}

    \n

    信用卡交易時間:{cardProcessDate}

    \n \n )}\n
    \n\n
    \n

    \n 支付資訊:\n

    \n <>\n

    \n 支付狀態:\n {typeof tradeStatus === 'number' ? { 1: '支付成功', 0: '支付失敗' }[tradeStatus] : '--'}\n

    \n

    支付金額:{tradeAmt || '--'}

    \n \n
    \n\n
    \n

    \n 發票資訊:\n

    \n <>\n

    是否需要統編:{invoiceVO?.customerIdentifier ? '是' : '否'}

    \n

    統編編號:{invoiceVO?.customerIdentifier || '--'}

    \n

    E-Mail:{invoiceVO?.customerEmail || '--'}

    \n

    發票號碼:{invoiceVO?.invoiceNo || '--'}

    \n

    \n 發票狀態:\n {invoiceVO?.invoiceStatus\n ? {\n 0: '待開票',\n 1: '開票成功',\n 2: '開票作廢',\n }[invoiceVO?.invoiceStatus]\n : '--'}\n

    \n {invoiceVO?.invoiceStatus === 3 &&

    可以前往門店開票

    }\n

    含稅金額:{invoiceVO?.salesAmount || '--'}

    \n

    發票備註:{invoiceVO?.itemRemark}

    \n \n
    \n\n
    \n

    \n PS:\n

    \n

    完成轉賬之後,您可自助在預約頁面點選「預約查詢」查詢轉賬狀態。

    \n

    \n 如果您遇到支付遇到問題無法完成,可在Q哥預定首頁-點選預約查詢-輸入個人資料以後重新進行支付,無需重新填預約資訊。\n

    \n

    \n {\n window.open('/react/booking');\n }}\n >\n 返回預約首頁\n \n

    \n
    \n\n {/* \n {merchantTradeNo}\n {curTradeNo}\n {tradeStatusMap[tradeStatus]}\n {paymentDate}\n {tradeAmt || '-'}元\n {tradeDate}\n {price || '--'}元\n {chargeFee || '--'}元\n {paymentType}\n \n \n {detail.paymentType === 'ATM' && (\n \n {atmBankCode}\n {atmAccNo}\n {atmExpireTime}\n {atmExpireDate}\n {atmVirtualAccount}\n \n )}\n {detail.paymentType === 'Credit' && (\n \n {cardAuthCode}\n {cardGwsr}\n {cardProcessDate}\n {cardEci}\n {card6No}\n {card4No}\n \n )} */}\n
    \n );\n}\n","import React, { FC } from 'react';\nimport { Layout, ConfigProvider } from 'antd';\nimport moment from 'moment';\nimport zhTW from 'antd/lib/locale/zh_TW';\nimport { ISH5 } from '@/utils/common';\nimport { MyEmpty } from '@/components/empty';\nimport GoodsPriceLabelPrint from '../goodsPriceLabelPrint';\n\nmoment.locale('zh-tw');\nconst { Content } = Layout;\n\ninterface Props {}\n\nconst SearchWarehouse: FC = () => {\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default SearchWarehouse;\n","import React, { FC, useEffect, useState } from 'react';\nimport { useLocation } from 'react-router';\nimport {} from 'antd';\nimport { phoneCustomerOrderLogistics } from '@/service/sales-billing';\nimport { PhoneOrderLogisticsItem } from '@/service/interface/sales-billing.d';\nimport { UserManageCustom } from '../user-manage';\nimport moment from 'moment';\nimport { enCryptoByDes } from '@/utils/encryptDes';\n\ninterface Props {}\n\nconst QrCodeLogistics: FC = () => {\n const [logisticsDataSource, setLogisticsDataSource] = useState([]);\n const { search } = useLocation();\n useEffect(() => {\n if (search && search.includes('?')) {\n const id = (search.split('?') || [])[1];\n fetchPhoneOrderLogistics(id);\n }\n }, []);\n\n const fetchPhoneOrderLogistics = async id => {\n const res = await phoneCustomerOrderLogistics(id);\n if (res) {\n setLogisticsDataSource(res || []);\n }\n };\n\n return (\n
      \n {logisticsDataSource.length > 0 ? (\n logisticsDataSource.map(({ gmtCreate, branchesName, operateDesc }) => (\n
    • \n

      {moment(gmtCreate).format('YYYY-MM-DD HH:mm:ss')}

      \n

      \n 【{branchesName}】:{operateDesc}\n

      \n
    • \n ))\n ) : (\n \n )}\n
    \n );\n};\n\nexport default QrCodeLogistics;\n","import { ajaxPost } from '@/utils/ajax';\nimport { ProductInfo } from './interface/search-warehouse';\n\nexport const getProductInfo = (code: number) =>\n ajaxPost(`/q3c-api/parts/scan/searchbycode?productCode=${code}`, undefined);\n","import React, { FC, useState } from 'react';\nimport { Form, Row, Col, Input, Tabs, InputNumber, message, Modal } from 'antd';\nimport { ExclamationCircleOutlined } from '@ant-design/icons';\nimport { ISH5, processValue } from '@/utils/common';\nimport { getProductInfo } from '@/service/search-warehouse';\nimport { ProductInfo } from '@/service/interface/search-warehouse';\nimport { error } from '@/config/style-to-json/colors';\nimport { usePrint } from '@/hooks/usePrint';\n\nconst { currentNodeEnv } = require('@/setupProxyConfig');\n\ninterface Props {}\n\nconst GoodsPriceLabelPrint: FC = () => {\n const [form] = Form.useForm();\n const [printForm] = Form.useForm();\n const [status, setStatus] = useState('1');\n const [productInfo, setProductInfo] = useState({} as ProductInfo);\n const {\n productCode = '',\n productNumber = '',\n productStorage = '',\n productStyle = '',\n salePrice = '',\n productSize = '',\n productName = '',\n } = productInfo;\n\n const { listPrint } = usePrint();\n\n const handlePress = e => {\n const value = e.target.value;\n if (!value) {\n return;\n } else {\n fetchInfo(value);\n }\n };\n\n const fetchInfo = async code => {\n const res = await getProductInfo(code);\n form.setFieldsValue({\n productCode: undefined,\n });\n if (res) {\n setProductInfo(res);\n } else {\n window.Sound.play();\n }\n };\n\n const handlePrintPress = e => {\n const value = e.target.value;\n if (!value) {\n return;\n } else {\n fetchInfo2(value);\n }\n };\n\n const fetchInfo2 = async code => {\n const res = await getProductInfo(code);\n printForm.setFieldsValue({\n productCode: undefined,\n });\n if (res) {\n setProductInfo(res);\n if (+printForm.getFieldValue('printNum') > 1) {\n Modal.confirm({\n keyboard: false,\n title: `即將列印${printForm.getFieldValue('printNum')}張,確認嗎?`,\n icon: ,\n onOk: () => {\n const listData = new Array(+printForm.getFieldValue('printNum')).fill(res);\n listPrint('price_label', listData);\n },\n });\n } else {\n listPrint('price_label', [res]);\n // [res].forEach(it => {\n // printFunc(it);\n // });\n }\n } else {\n window.Sound.play();\n }\n };\n\n const hanldeChangeActiveTab = active => {\n setStatus(active);\n setProductInfo({} as ProductInfo);\n };\n\n return (\n
    \n \n \n
    \n \n
    \n \n \n \n \n

    品項條碼:{processValue(productCode)}

    \n

    編號:{processValue(productNumber)}

    \n

    名稱:{processValue(productName)}

    \n

    尺寸:{processValue(productSize)}

    \n

    樣式:{processValue(productStyle)}

    \n

    售價:{processValue(salePrice)}

    \n

    \n 儲位:{processValue(productStorage)}\n

    \n
    \n \n \n \n \n \n
    \n \n
    \n \n \n \n \n \n \n \n

    品項條碼:{processValue(productCode)}

    \n

    編號:{processValue(productNumber)}

    \n

    名稱:{processValue(productName)}

    \n

    尺寸:{processValue(productSize)}

    \n

    樣式:{processValue(productStyle)}

    \n

    售價:{processValue(salePrice)}

    \n

    \n 儲位:{processValue(productStorage)}\n

    \n
    \n \n \n \n \n \n \n );\n};\n\nexport default GoodsPriceLabelPrint;\n","import { useEffect, useState } from 'react';\nimport { RoleDataSourceItem, ShopType } from '@/service/interface/user';\nimport { getWebShopsList } from '@/service/user';\n\nexport interface SHOPDATASOURCE extends RoleDataSourceItem {\n shopType: ShopType;\n groupId: number;\n reserveBranchesName: string;\n}\n\nfunction useShop(orderType?: number, shopTypeList?: number[]) {\n const [shopList, setShopList] = useState([]);\n useEffect(() => {\n fetchShop();\n }, []);\n\n const fetchShop = async () => {\n const res = await getWebShopsList({\n pageNum: 1,\n pageSize: 9999,\n orderType,\n shopTypeList,\n });\n if (res) {\n const arr = (res.records || []).map(item => ({\n ...item,\n label: item.name,\n value: item.id,\n shopType: item.shopType,\n groupId: item.groupId,\n reserveBranchesName: item.reserveBranchesName,\n }));\n const extraArr = arr.filter(item => item.label === '往下選');\n const elseArr = arr.filter(item => item.label !== '往下選');\n setShopList([...extraArr, ...elseArr]);\n }\n };\n return shopList;\n}\n\nexport default useShop;\n","import { useContext } from 'react';\nimport { GlobalContext } from '@/context';\n\nfunction useButtonVOList() {\n const { userInfo } = useContext(GlobalContext);\n const { buttonVOList } = userInfo;\n return (buttonVOList || []).map(item => item.buttonCode);\n}\n\nexport { useButtonVOList };\n","import { ajaxFormImg, ajaxPost, ajaxForm, ajaxGet } from '@/utils/ajax';\nimport { IPaginationParams, IPaginationRes, NewImageType } from './interface/commom';\nimport {\n PhoneCheckItem,\n PhoneCheckParams,\n RepertoryItem,\n RepertoryListParams,\n WebMobilePhoneListParams,\n} from './interface/new-sale';\nimport {\n AddOldMobilePhoneParams,\n EditTransferOldPhoneDealParams,\n MobilePhoneInfo,\n OldMobilePhoneInfoByLevelFive,\n OldMobilePhoneStatistics,\n OldMobilePhoneTransfer,\n OldMobilePhoneTransferCommitParams,\n OldPhoneListItem,\n OldPhoneStatus,\n ReserveOldMobilePhoneParams,\n SkuInfo,\n TransferOldPhoneCommitItem,\n TransferOldPhoneCommitListParams,\n TransferOldPhoneDealItem,\n TransferOldPhoneDealParams,\n} from './interface/second-hand';\n\n/** 二手机盘点或异常盘点 */\nexport const getOldPhoneCheckList = (params: PhoneCheckParams & IPaginationParams) =>\n ajaxPost>(`/q3c-api/oldphone/check/list`, params);\n\n/** 调货流程 */\nexport const transferOldPhoneDealList = (params: TransferOldPhoneDealParams & IPaginationParams) =>\n ajaxPost>(`/q3c-api/oldphone/transfer/list`, params);\n\n/** 门市安全储量设定 */\nexport const oldphoneRepertoryList = (params: RepertoryListParams & IPaginationParams) =>\n ajaxPost>(`/q3c-api/oldphone/repertory/list`, params);\n\n/** 编辑门市安全储量设定 */\nexport const oldphoneBatchEditRepertory = (params: RepertoryItem[]) =>\n ajaxPost(`/q3c-api/oldphone/repertory/batchEdit`, params);\n\n/** 调货 */\nexport const editTransferOldPhoneDeal = (params: EditTransferOldPhoneDealParams) =>\n ajaxPost(`/q3c-api/oldphone/transfer/audit`, params);\n\n/** 二手机列表 */\nexport const getOldPhoneList = params =>\n ajaxPost>(`/q3c-api/phone/oldphone/list`, params);\n\nexport const oldPhoneUncheck = id =>\n ajaxPost(`/q3c-api/phone/oldphone/uncheck?webMobileOldphoneId=${id}`, undefined);\n\nexport const cancelMobilePhonePhoto = params =>\n ajaxPost(`/q3c-api/phone/oldphone/machineVerification/deleteAllPhotosAtOnce`, params);\n\nexport const revokeRedo = params =>\n ajaxPost(`/q3c-api/phone/oldphone/machineVerification/revokeRedo`, params);\n\nexport const uploadSecondSaleExcel = (params: { branches: number; file: FormData }) =>\n ajaxForm(`/q3c-api/oldphone/repertory/import`, params);\n\nexport const uploadNewSaleExcel = (params: { file: FormData }, query: any) =>\n ajaxForm(`/q3c-api/phone/webMobilePhone/import?needRemoveS=${query.needRemoveS}`, params);\n\nexport const uploadPlatformExcel = (params: { file: FormData }) =>\n ajaxForm(`/q3c-api/platform/order/import`, params);\n\nexport const cancelMobilePhone = (id: number) =>\n ajaxPost(`/q3c-api/phone/webMobilePhone/import/cancel?batchNo=${id}`, undefined);\n\nexport const cancelPlatform = (id: number) =>\n ajaxPost(`/q3c-api/platform/order/import/cancel?batchNo=${id}`, undefined);\n\nexport const submitMobilePhone = (id: number) =>\n ajaxPost(`/q3c-api/phone/webMobilePhone/import/commit?batchNo=${id}`, undefined);\n\nexport const submitPlatform = (id: number) =>\n ajaxPost(`/q3c-api/platform/order/import/commit?batchNo=${id}`, undefined);\n\nexport const scanPlatform = (id: number) =>\n ajaxPost(`/q3c-api/platform/order/scan/platform?platformOrderNo=${id}`, undefined);\n\nexport const scanSNPlatform = (id: number, snCode: string, upcCode: string) =>\n ajaxPost(\n `/q3c-api/platform/order/scan/sncode?phonePlatformOrderId=${id}&snCode=${snCode}&upcCode=${upcCode}`,\n undefined,\n );\nexport const scanSNPlatformSubmit = params =>\n ajaxPost(`/q3c-api/platform/order/scan/commit`, params);\n\nexport const deleteOldMobilePhone = (id: number) =>\n ajaxPost(`/q3c-api/phone/oldphone/delete?webMobileOldphoneId=${id}`, undefined);\n\n/** 冻结二手机 */\nexport const lockOldMobilePhone = (id: number) =>\n ajaxPost(`/q3c-api/phone/oldphone/lock?id=${id}`, undefined);\n\n/** 解冻二手机 */\nexport const unlockOldMobilePhone = (id: number) =>\n ajaxPost(`/q3c-api/phone/oldphone/unlock?id=${id}`, undefined);\n\n/** 审核二手机 */\nexport const checkOldMobilePhone = (id: number) =>\n ajaxPost(`/q3c-api/phone/oldphone/check?webMobileOldphoneId=${id}`, undefined);\n\n/** 取消预约二手机 */\nexport const unreserveOldMobilePhone = (id: number) =>\n ajaxPost(`/q3c-api/phone/oldphone/unreserve?id=${id}`, undefined);\n\n/** 预约二手机 */\nexport const reserveOldMobilePhone = (params: ReserveOldMobilePhoneParams) =>\n ajaxPost(`/q3c-api/phone/oldphone/reserve`, params);\n\n/** 新增二手机 */\nexport const addOldMobilePhone = (params: AddOldMobilePhoneParams) =>\n ajaxPost(`/q3c-api/phone/oldphone/add`, params);\n\nexport const editOldMobilePhone = (params: AddOldMobilePhoneParams) =>\n ajaxPost(`/q3c-api/phone/oldphone/edit`, params);\n\n/** 二手机详情 */\nexport const getOldMobilePhoneById = (id: number) =>\n ajaxPost(`/q3c-api/phone/oldphone/info?webMobileOldphoneId=${id}`, undefined);\n\nexport const doMachineVerification = params =>\n ajaxPost(`/q3c-api/phone/oldphone/machineVerification/doMachineVerification`, params);\n\nexport const passMachineVerification = params =>\n ajaxPost(`/q3c-api/phone/oldphone/machineVerification/pass`, params);\n\nexport const withdrawCertainMachineVerification = params =>\n ajaxPost(\n `/q3c-api/phone/oldphone/machineVerification/withdrawCertainMachineVerification\n`,\n params,\n );\n\nexport const uploadPhotosTaken = params =>\n ajaxPost(`/q3c-api/phone/oldphone/machineVerification/uploadPhotosTaken`, params);\n\nexport const deleteAllPhotosAtOnce = params =>\n ajaxPost(`/q3c-api/phone/oldphone/machineVerification/deleteAllPhotosAtOnce`, params);\n\nexport const getMobilePhoneInfoById = (id: number) =>\n ajaxPost(`/q3c-api/phone/webMobilePhone/import/info?batchNo=${id}`, undefined);\n\nexport const getPlatformInfoById = (id: number) =>\n ajaxPost(`/q3c-api/platform/order/import/info?batchNo=${id}`, undefined);\n\n/** 上传 */\nexport const getUploadImageNew = (data, params) =>\n ajaxFormImg(`/q3c-api/file/minio/uploadImage?imageType=${params.imageType}`, data);\n\nexport const getImageMinioUrl = ({ fileName }) =>\n ajaxPost(`/q3c-api/file/minio/previewImage/default?fileName=${fileName}`, undefined);\n\nexport const getOldMobilePhoneStatisticsList = () =>\n ajaxPost(`/q3c-api/phone/oldphone/getStatisticsList`, undefined);\n\n/** 机器类型 */\nexport const getSkuById = (id: number) =>\n ajaxPost(`/q3c-api/phone/getSkuById?skuId=${id}`, undefined);\n\n/** 根据 LevelFive 获取 info */\nexport const getOldMobilePhoneInfoByLevelFive = (id: number) =>\n ajaxPost(\n `/q3c-api/phone/webOldupc/getInfoByLevelFive?levelFive=${id}`,\n undefined,\n );\n\n/** 获取二手机连接 */\nexport const getOldMobilePhoneLink = (id: number) =>\n ajaxGet(`/q3c-api/phone/oldphone/getSaleLink?id=${id}`);\n\nexport const getSkuIdByLevelFourAndRamId = (params: { levelFour: number; ramId: number }) =>\n ajaxPost(\n `/q3c-api/phone/webOldupc/getSkuIdByLevelFourAndRamId?ramId=${params.ramId}&levelFour=${params.levelFour}`,\n undefined,\n );\n\n/** 发起调货列表 */\nexport const transferOldPhoneCommitList = (\n params: TransferOldPhoneCommitListParams & IPaginationParams,\n) =>\n ajaxPost>(\n `/q3c-api/oldphone/transfer/commit/list`,\n params,\n );\n\n/** 调货 */\nexport const oldMobilePhoneTransferCommit = (params: OldMobilePhoneTransferCommitParams) =>\n ajaxPost(`/q3c-api/oldphone/transfer/commit/transferCommit`, params);\n\n/** 总库发起调货 */\nexport const oldMobilePhoneDirectTransferCommit = (params: OldMobilePhoneTransferCommitParams) =>\n ajaxPost(`/q3c-api/oldphone/transfer/commit/transferCommit/direct`, params);\n\n/** 确认发货 */\nexport const oldMobilePhoneTransfer = (params: OldMobilePhoneTransfer) =>\n ajaxPost(`/q3c-api/oldphone/transfer/transfer`, params);\n\n/** 确认收货 */\nexport const oldMobilePhoneReceive = (params: OldMobilePhoneTransfer) =>\n ajaxPost(`/q3c-api/oldphone/transfer/receive`, params);\n\n/** 二手机回收列表 */\nexport const oldMobilePhoneRecyclingList = (params: Record) =>\n ajaxPost('/q3c-api/phone/oldPhone/reservation/page', params);\n\n/** 二手機回收——門市列表 */\nexport const oldMobileRecyclingStoreList = (params: Record) =>\n ajaxPost('/q3c-api/phone/oldPhone/recovery/store/page', params);\n\n/** 二手機回收——門市-取消 */\nexport const oldMobileRecyclingStoreCancel = (params: Record) =>\n ajaxPost('/q3c-api/phone/oldPhone/recovery/store/cancel', params);\n\n/** 二手機回收——門市未聯絡-聯絡 */\nexport const oldMobileRecyclingStoreContact = (params: Record) =>\n ajaxPost('/q3c-api/phone/oldPhone/recovery/store/notContacted/contact', params);\n\n/** 二手機回收——門市已聯絡-回收 */\nexport const oldMobileRecyclingStoreRecycle = (params: Record) =>\n ajaxPost('/q3c-api/phone/oldPhone/recovery/store/contacted/markAsRecycled', params);\n\n/** 二手機回收——線上宅配-列表 */\nexport const oldMobileRecyclingDeliveryList = (params: Record) =>\n ajaxPost('/q3c-api/phone/oldPhone/recovery/homeDelivery/page', params);\n\n/** 二手機回收——線上宅配-取消 */\nexport const oldMobileRecyclingDeliveryCancel = (params: Record) =>\n ajaxPost('/q3c-api/phone/oldPhone/recovery/homeDelivery/cancel', params);\n\n/** 二手機回收——線上宅配-派單 */\nexport const oldMobileRecyclingDeliveryDispatch = (params: Record) =>\n ajaxPost('/q3c-api/phone/oldPhone/recovery/homeDelivery/dispatchOrders', params);\n\n/** 二手機回收——線上宅配-已收 */\nexport const oldMobileRecyclingDeliveryReceived = (params: Record) =>\n ajaxPost('/q3c-api/phone/oldPhone/recovery/homeDelivery/received', params);\n\n/** 二手機回收——線上宅配-退回 */\nexport const oldMobileRecyclingDeliveryGiveBack = (params: Record) =>\n ajaxPost('/q3c-api/phone/oldPhone/recovery/homeDelivery/giveBack', params);\n\n/** 二手機回收——711-列表 */\nexport const oldMobileRecycling711List = (params: Record) =>\n ajaxPost('/q3c-api/phone/oldPhone/recovery/711/page', params);\n\n/** 二手機回收——711-取消 */\nexport const oldMobileRecycling711Cancel = (params: Record) =>\n ajaxPost('/q3c-api/phone/oldPhone/recovery/711/cancel', params);\n\n/** 二手機回收——711-備註 */\nexport const oldMobileRecycling711Remark = (params: Record) =>\n ajaxPost('/q3c-api/phone/oldPhone/recovery/711/remark', params);\n\n/** 二手機回收——711-已收 */\nexport const oldMobileRecycling711Received = (params: Record) =>\n ajaxPost('/q3c-api/phone/oldPhone/recovery/711/received', params);\n\n/** 二手機回收——711-退回 */\nexport const oldMobileRecycling711GiveBack = (params: Record) =>\n ajaxPost('/q3c-api/phone/oldPhone/recovery/711/giveBack', params);\n","import { useContext } from 'react';\nimport { GlobalContext } from '@/context';\n\nfunction useUserInfo() {\n const { userInfo } = useContext(GlobalContext);\n return userInfo;\n}\n\nexport { useUserInfo };\n","export const ASSETS_PREFIX = `${process.env.PUBLIC_URL}/static/`;\n","import { message } from 'antd';\nimport { useUniqueAsync } from 'khooks-lib';\nimport { dealPrintTemplate } from '@/utils/print';\nimport moment from 'moment/moment';\nimport { getPrintTemplate } from '@/service/user';\n\nexport type IPrintData = {\n /** 打印下標 */\n index?: number;\n /** 訂單號 */\n orderNo?: number;\n [property: string]: any;\n};\n\n/** 打印統一處理 */\nexport function usePrint() {\n // 單次打印\n const { asyncFn: singlePrint, loading: singlePrintLoading } = useUniqueAsync(\n async (printTemplateCode: string, data: IPrintData = {}) => {\n if (!printTemplateCode) {\n message.error('請傳入打印模板code!');\n return;\n }\n const LODOP = window.LODOP;\n if (!LODOP) {\n message.error('请安装 LODOP');\n window.Sound.play();\n return;\n }\n console.log('log[单次打印数据 data]--->', data);\n\n // 獲取已發佈打印模板數據\n const printData = await getPrintTemplate(printTemplateCode, 1);\n if (printData) {\n try {\n const { printTemplateContent, printTemplateDeviceList } = printData;\n const _printTemplateContent = dealPrintTemplate(printTemplateContent);\n const printInvoker = new Function('_context', _printTemplateContent);\n const flag = printInvoker({\n ...data,\n moment,\n // 打印設備,系統內置\n machine: printTemplateDeviceList[0]?.trim(),\n // 當前日期(到月),系統內置\n curDate: moment().format('YYYY/MM'),\n curDateDay: moment().format('YYYY-MM-DD'),\n curDateMinute: moment().format('YYYY-MM-DD HH:mm'),\n currentDateSeconds: moment().format('YYYY-MM-DD HH:mm:ss'),\n // 訂單號\n orderNo: data?.orderNo ?? '',\n // 页码\n index: data?.index ?? 1,\n });\n } catch (e) {\n console.log('log[打印出錯 e]--->', e);\n message.error('打印失敗,請檢查');\n }\n } else {\n message.error('獲取打印模板失敗!');\n }\n },\n );\n // 列表打印\n const { asyncFn: listPrint, loading: listPrintLoading } = useUniqueAsync(\n async (printTemplateCode: string, listData: IPrintData[] = []) => {\n if (!printTemplateCode) {\n message.error('請傳入打印模板code!');\n return;\n }\n const LODOP = window.LODOP;\n if (!LODOP) {\n message.error('请安装 LODOP');\n window.Sound.play();\n return;\n }\n console.log('log[列表打印数据 listData]--->', listData);\n\n // 獲取已發佈打印模板數據\n const printData = await getPrintTemplate(printTemplateCode, 1);\n if (printData) {\n try {\n const { printTemplateContent, printTemplateDeviceList } = printData;\n const _printTemplateContent = dealPrintTemplate(printTemplateContent);\n const printInvoker = new Function('_context', _printTemplateContent);\n for (let i = 0; i < listData.length; i++) {\n const data = listData[i];\n const flag = printInvoker({\n ...data,\n moment,\n // 打印設備,系統內置\n machine: printTemplateDeviceList[0]?.trim(),\n // 當前日期,系統內置\n curDate: moment().format('YYYY/MM'),\n curDateDay: moment().format('YYYY-MM-DD'),\n curDateMinute: moment().format('YYYY-MM-DD HH:mm'),\n currentDateSeconds: moment().format('YYYY-MM-DD HH:mm:ss'),\n // 訂單號\n orderNo: data?.orderNo ?? '',\n // 页码\n index: i + 1,\n });\n }\n } catch (e) {\n console.log('log[打印出錯 e]--->', e);\n message.error('打印失敗,請檢查');\n }\n } else {\n message.error('獲取打印模板失敗!');\n }\n },\n );\n return {\n singlePrint,\n singlePrintLoading,\n listPrint,\n listPrintLoading,\n };\n}\n","import { useEffect, useState } from 'react';\nimport { RoleDataSourceItem } from '@/service/interface/user';\nimport { getWebSupplierList } from '@/service/user';\n\nfunction useWebSupplier() {\n const [webSupplierList, setWebSupplierList] = useState([]);\n useEffect(() => {\n fetchWebSupplierList();\n }, []);\n\n const fetchWebSupplierList = async () => {\n const res = await getWebSupplierList({\n pageNum: 1,\n pageSize: 9999,\n });\n if (res) {\n setWebSupplierList(\n (res.records || []).map(item => ({\n label: item.supplierName,\n value: item.id,\n })),\n );\n }\n };\n return webSupplierList;\n}\n\nexport default useWebSupplier;\n","import React, { useState } from 'react';\nimport { render, unmountComponentAtNode } from 'react-dom';\nimport { Modal, ModalProps, ConfigProvider } from 'antd';\nimport zhTW from 'antd/lib/locale/zh_TW';\n\ninterface IContentProps extends Omit {\n /** 是否在點擊ok時關閉彈窗,默認:true */\n closeOnOk?: boolean;\n}\n\nfunction ModalContent(props: React.PropsWithChildren) {\n const [visible, setVisible] = useState(true);\n const { visible: _, closeOnOk = true, ...$props } = props as any;\n\n return (\n {\n setVisible(false);\n }}\n onOk={e => {\n $props.onOk?.(e);\n if (closeOnOk) {\n setVisible(false);\n }\n }}\n >\n {props.children}\n \n );\n}\n\nconst EmptyComp = () => null;\n\nexport type IComp2ModalRProps = {\n compProps?: ComProps;\n modalConfig?: IContentProps;\n};\n\nexport default function comp2modal(_Comp: def.element.IReactElementType) {\n return (props: IComp2ModalRProps) => {\n let element = document.createElement('div');\n\n function clear() {\n unmountComponentAtNode(element);\n element.remove();\n }\n\n const Comp = _Comp || EmptyComp;\n\n render(\n \n {\n props?.modalConfig?.afterClose?.();\n clear();\n }}\n >\n \n \n ,\n element,\n );\n\n return clear;\n };\n}\n","import { getPayWayList } from '@/service/booking';\nimport { useEffect, useState } from 'react';\n\nfunction usePayWay() {\n const [payWay, setPayWay] = useState([]);\n useEffect(() => {\n fetchList();\n }, []);\n\n const fetchList = async () => {\n const res = await getPayWayList({\n pageNum: 1,\n pageSize: 9999,\n status: true,\n });\n if (res) {\n setPayWay(res.records || []);\n }\n };\n return payWay;\n}\n\nexport default usePayWay;\n","import { ConditionLevel } from '@/service/interface/second-hand.d';\n\nfunction useConditionLevel() {\n const conditionLevelList = [\n {\n label: '待處理',\n value: ConditionLevel.LevelOne,\n },\n {\n label: '7成新',\n value: ConditionLevel.LevelTwo,\n },\n {\n label: '8成新',\n value: ConditionLevel.LevelThree,\n },\n {\n label: '9成新',\n value: ConditionLevel.LevelFour,\n },\n {\n label: '95成新',\n value: ConditionLevel.LevelFive,\n },\n {\n label: '99成新',\n value: ConditionLevel.LevelFivePonitFive,\n },\n ]\n // .reverse();\n\n return conditionLevelList;\n}\n\nexport default useConditionLevel;\n","export const ROUTER_PREFIX = 'new-q3c-front';\n\nexport const APP_CONTENT_ID = 'main-app-content-wrapper';\n","import UserManageAccount from './UserManageAccount';\nimport UserManageAuthority from './UserManageAuthority';\nimport UserManageCustom from './UserManageCustom';\nimport UserManageMenu from './UserManageMenu';\nimport UserManageAccess from './UserManageAccess';\nimport UserManagePersonnel from './UserManagePersonnel';\n\nexport {\n UserManageAccount,\n UserManageAuthority,\n UserManageCustom,\n UserManageMenu,\n UserManagePersonnel,\n UserManageAccess,\n};\n","import React from 'react';\nimport Loadable from 'react-loadable';\nimport { Spin } from 'antd';\n\nexport interface IRouterConfig {\n exact: boolean;\n path: string;\n component: React.ComponentType;\n permissionKey?: string;\n}\n\nconst Loading = () => ;\n\nexport const ROUTER_PREFIX = 'react';\n\nconst Login = Loadable({\n loader: () => import('../pages/login'),\n loading: Loading,\n});\n\nconst InputDemo = Loadable({\n loader: () => import('../pages/input-demo'),\n loading: Loading,\n});\n\nconst Booking = Loadable({\n loader: () => import('../pages/booking'),\n loading: Loading,\n});\n\nconst EcpayInfo = Loadable({\n loader: () => import('../pages/ecpay-info'),\n loading: Loading,\n});\n\nconst QrCodeLogistics = Loadable({\n loader: () => import('../pages/qr-code-logistics'),\n loading: Loading,\n});\n\nconst SearchWarehouse = Loadable({\n loader: () => import('../pages/search-warehouse'),\n loading: Loading,\n});\n\nconst Dashboard = Loadable({\n loader: () => import('../pages/dashboard'),\n loading: Loading,\n});\n\nconst GoodsPriceLabelPrint = Loadable({\n loader: () => import('../pages/goodsPriceLabelPrint'),\n loading: Loading,\n});\n\nconst GoodsReceipted = Loadable({\n loader: () => import('../pages/goodsReceipted'),\n loading: Loading,\n});\n\nconst OldPhonePhoto = Loadable({\n loader: () => import('../pages/oldPhonePhoto'),\n loading: Loading,\n});\n\nconst OldPhonePhotoDetail = Loadable({\n loader: () => import('../pages/oldPhonePhotoDetail'),\n loading: Loading,\n});\n\nconst GoodsReceiptedDetail = Loadable({\n loader: () => import('../pages/goodsReceiptedDetail'),\n loading: Loading,\n});\n\nconst OutBranchBookingAccount = Loadable({\n loader: () => import('../pages/out-branch-booking/OutBranchBookingAccount'),\n loading: Loading,\n});\n\nconst OutBranchBookingSecondHandList = Loadable({\n loader: () => import('../pages/out-branch-booking/OutBranchBookingSecondHandList'),\n loading: Loading,\n});\n\nconst Error500 = Loadable({\n loader: () => import('../pages/Error500'),\n loading: Loading,\n});\n\nconst UserManageAccount = Loadable({\n loader: () => import('@/pages/user-manage/UserManageAccount'),\n loading: Loading,\n});\nconst UserManageAuthority = Loadable({\n loader: () => import('@/pages/user-manage/UserManageAuthority'),\n loading: Loading,\n});\nconst UserManageCustom = Loadable({\n loader: () => import('@/pages/user-manage/UserManageCustom'),\n loading: Loading,\n});\nconst UserManageMenu = Loadable({\n loader: () => import('@/pages/user-manage/UserManageMenu'),\n loading: Loading,\n});\nconst UserManageAccess = Loadable({\n loader: () => import('@/pages/user-manage/UserManageAccess'),\n loading: Loading,\n});\nconst UserManagePersonnel = Loadable({\n loader: () => import('@/pages/user-manage/UserManagePersonnel'),\n loading: Loading,\n});\nconst UserManageMaintenance = Loadable({\n loader: () => import('@/pages/user-manage/UserManageMaintenance'),\n loading: Loading,\n});\nconst userManageLoginLog = Loadable({\n loader: () => import('@/pages/user-manage/userManageLoginLog'),\n loading: Loading,\n});\nconst ConfigurationGuarantee = Loadable({\n loader: () => import('@/pages/configuration/ConfigurationGuarantee'),\n loading: Loading,\n});\nconst ConfigurationCommodityDiscount = Loadable({\n loader: () => import('@/pages/configuration/ConfigurationCommodityDiscount'),\n loading: Loading,\n});\nconst ConfigurationCommodityDiscountReason = Loadable({\n loader: () => import('@/pages/configuration/ConfigurationCommodityDiscountReason'),\n loading: Loading,\n});\nconst ConfigurationSubscribe = Loadable({\n loader: () => import('@/pages/configuration/ConfigurationSubscribe'),\n loading: Loading,\n});\nconst ConfigurationPrintTemplate = Loadable({\n loader: () => import('@/pages/configuration/ConfigurationPrintTemplate'),\n loading: Loading,\n});\nconst ConfigurationExcelTemplate = Loadable({\n loader: () => import('@/pages/configuration/ConfigurationExcelTemplate'),\n loading: Loading,\n});\nconst JipinManage = Loadable({\n loader: () => import('@/pages/configuration/JipinManage'),\n loading: Loading,\n});\nconst YanzhengmaManage = Loadable({\n loader: () => import('@/pages/configuration/YanzhengmaManage'),\n loading: Loading,\n});\nconst ConfigurationPayWay = Loadable({\n loader: () => import('@/pages/configuration/ConfigurationPayWay'),\n loading: Loading,\n});\nconst ConfigurationStagesWay = Loadable({\n loader: () => import('@/pages/configuration/ConfigurationStagesWay'),\n loading: Loading,\n});\nconst ConfigurationRepairState = Loadable({\n loader: () => import('@/pages/configuration/ConfigurationRepairState'),\n loading: Loading,\n});\nconst ConfigurationNotice = Loadable({\n loader: () => import('@/pages/configuration/ConfigurationNotice'),\n loading: Loading,\n});\nconst ConfigurationBookingNotice = Loadable({\n loader: () => import('@/pages/configuration/ConfigurationBookingNotice'),\n loading: Loading,\n});\nconst ConfigurationBookingVipNotice = Loadable({\n loader: () => import('@/pages/configuration/ConfigurationBookingVipNotice'),\n loading: Loading,\n});\nconst ConfigurationRetailSales = Loadable({\n loader: () => import('@/pages/configuration/ConfigurationRetailSales'),\n loading: Loading,\n});\nconst ConfigurationWeight = Loadable({\n loader: () => import('@/pages/configuration/ConfigurationWeight'),\n loading: Loading,\n});\nconst ConfigurationSupplier = Loadable({\n loader: () => import('@/pages/configuration/ConfigurationSupplier'),\n loading: Loading,\n});\nconst ConfigurationRegularCustomer = Loadable({\n loader: () => import('@/pages/configuration/ConfigurationRegularCustomer'),\n loading: Loading,\n});\nconst ConfigurationBackConfig = Loadable({\n loader: () => import('@/pages/configuration/ConfigurationBackConfig'),\n loading: Loading,\n});\nconst ConfigurationCheckTimeout = Loadable({\n loader: () => import('@/pages/configuration/ConfigurationCheckTimeout'),\n loading: Loading,\n});\nconst ConfigurationPoster = Loadable({\n loader: () => import('@/pages/configuration/ConfigurationPoster'),\n loading: Loading,\n});\nconst ConfigurationPhoneModel = Loadable({\n loader: () => import('@/pages/configuration/ConfigurationPhoneModel'),\n loading: Loading,\n});\nconst MaintenanceReceiveSending = Loadable({\n loader: () => import('@/pages/maintenance/MaintenanceReceiveSending'),\n loading: Loading,\n});\nconst MaintenanceGuestBusiness = Loadable({\n loader: () => import('@/pages/maintenance/MaintenanceGuestBusiness'),\n loading: Loading,\n});\nconst StayPhoneEfficiencyStatistics = Loadable({\n loader: () => import('@/pages/maintenance/StayPhoneEfficiencyStatistics'),\n loading: Loading,\n});\nconst MaintenanceToOriginal = Loadable({\n loader: () => import('@/pages/maintenance/MaintenanceToOriginal'),\n loading: Loading,\n});\nconst MaintenanceStoreBusiness = Loadable({\n loader: () => import('@/pages/maintenance/MaintenanceStoreBusiness'),\n loading: Loading,\n});\nconst MaintenanceScrapApproval = Loadable({\n loader: () => import('@/pages/maintenance/MaintenanceScrapApproval'),\n loading: Loading,\n});\nconst SignPage = Loadable({\n loader: () => import('@/pages/mobile/SignPage'),\n loading: Loading,\n});\nconst SimSignPage = Loadable({\n loader: () => import('@/pages/mobile/SimSignPage'),\n loading: Loading,\n});\nconst PhotoPage = Loadable({\n loader: () => import('@/pages/mobile/PhotoPage'),\n loading: Loading,\n});\nconst PrintMobile = Loadable({\n loader: () => import('@/pages/mobile/PrintMobile'),\n loading: Loading,\n});\nconst NewPDFPrint = Loadable({\n loader: () => import('@/pages/mobile/NewPDFPrint'),\n loading: Loading,\n});\nconst NewPDFPrintV2 = Loadable({\n loader: () => import('@/pages/mobile/NewPDFPrintV2'),\n loading: Loading,\n});\nconst Print = Loadable({\n loader: () => import('@/pages/mobile/Print'),\n loading: Loading,\n});\nconst SparePartList = Loadable({\n loader: () => import('@/pages/spare-part/SparePartList'),\n loading: Loading,\n});\nconst SparePartCheck = Loadable({\n loader: () => import('@/pages/spare-part/SparePartCheck'),\n loading: Loading,\n});\nconst SparePartAbnormal = Loadable({\n loader: () => import('@/pages/spare-part/SparePartAbnormal'),\n loading: Loading,\n});\nconst SecondHandNewList = Loadable({\n loader: () => import('@/pages/second-hand/SecondHandNewList'),\n loading: Loading,\n});\nconst SecondHandNewCheck = Loadable({\n loader: () => import('@/pages/second-hand/SecondHandNewCheck'),\n loading: Loading,\n});\nconst SecondHandToReviewNewCheck = Loadable({\n loader: () => import('@/pages/second-hand/SecondHandToReviewNewCheck'),\n loading: Loading,\n});\nconst SecondHandAbnormal = Loadable({\n loader: () => import('@/pages/second-hand/SecondHandAbnormal'),\n loading: Loading,\n});\nconst SecondHandStartTransfer = Loadable({\n loader: () => import('@/pages/second-hand/SecondHandStartTransfer'),\n loading: Loading,\n});\nconst SecondHandTransferExamine = Loadable({\n loader: () => import('@/pages/second-hand/SecondHandTransferExamine'),\n loading: Loading,\n});\nconst SecondHandTransferAbnormal = Loadable({\n loader: () => import('@/pages/second-hand/SecondHandTransferAbnormal'),\n loading: Loading,\n});\nconst SecondHandReserveSet = Loadable({\n loader: () => import('@/pages/second-hand/SecondHandReserveSet'),\n loading: Loading,\n});\n\nconst SecondHandAppointment = Loadable({\n loader: () => import('@/pages/second-hand/second-hand-appointment'),\n loading: Loading,\n});\n\nconst SalesBillingSiteRepair = Loadable({\n loader: () => import('@/pages/sales-billing/SalesBillingSiteRepair'),\n loading: Loading,\n});\nconst SalesBillingStay = Loadable({\n loader: () => import('@/pages/sales-billing/SalesBillingStay'),\n loading: Loading,\n});\nconst SalesBillingRecieving = Loadable({\n loader: () => import('@/pages/sales-billing/SalesBillingRecieving'),\n loading: Loading,\n});\nconst SalesBillingNewSale = Loadable({\n loader: () => import('@/pages/sales-billing/SalesBillingNewSale'),\n loading: Loading,\n});\nconst SalesBillingSecondHandSale = Loadable({\n loader: () => import('@/pages/sales-billing/SalesBillingSecondHandSale'),\n loading: Loading,\n});\nconst SalesBillingEnvelope = Loadable({\n loader: () => import('@/pages/sales-billing/SalesBillingEnvelope'),\n loading: Loading,\n});\nconst SalesBillingSaleBills = Loadable({\n loader: () => import('@/pages/sales-billing/SalesBillingSaleBills'),\n loading: Loading,\n});\nconst SalesBillingSim = Loadable({\n loader: () => import('@/pages/sales-billing/SalesBillingSim'),\n loading: Loading,\n});\nconst SalesBillingScheduleBills = Loadable({\n loader: () => import('@/pages/sales-billing/SalesBillingScheduleBills'),\n loading: Loading,\n});\nconst SalesBillingRefund = Loadable({\n loader: () => import('@/pages/sales-billing/SalesBillingRefund'),\n loading: Loading,\n});\nconst SalesBillingOldBilling = Loadable({\n loader: () => import('@/pages/sales-billing/SalesBillingOldBilling'),\n loading: Loading,\n});\nconst MpSetPrice = Loadable({\n loader: () => import('@/pages/mp-set/MpSetPrice'),\n loading: Loading,\n});\nconst MpSetModelRam = Loadable({\n loader: () => import('@/pages/mp-set/MpSetModelRam'),\n loading: Loading,\n});\nconst MpSetModel = Loadable({\n loader: () => import('@/pages/mp-set/MpSetModel'),\n loading: Loading,\n});\nconst MpSetSecondHandUpc = Loadable({\n loader: () => import('@/pages/mp-set/MpSetSecondHandUpc'),\n loading: Loading,\n});\nconst MpSetUpc = Loadable({\n loader: () => import('@/pages/mp-set/MpSetUpc'),\n loading: Loading,\n});\nconst MpSetSecondHandPrice = Loadable({\n loader: () => import('@/pages/mp-set/MpSetSecondHandPrice'),\n loading: Loading,\n});\nconst MpSetSecondHandHuiShouPrice = Loadable({\n loader: () => import('@/pages/mp-set/MpSetSecondHandHuiShouPrice'),\n loading: Loading,\n});\nconst MpSetSecondHandConfig = Loadable({\n loader: () => import('@/pages/mp-set/MpSetSecondConfig'),\n loading: Loading,\n});\nconst NewSaleNewList = Loadable({\n loader: () => import('@/pages/new-sale/NewSaleNewList'),\n loading: Loading,\n});\nconst NewSaleOutbound = Loadable({\n loader: () => import('@/pages/new-sale/NewSaleOutbound'),\n loading: Loading,\n});\nconst NewSaleNewSale = Loadable({\n loader: () => import('@/pages/new-sale/NewSaleNewSale'),\n loading: Loading,\n});\nconst NewSaleNewSchedule = Loadable({\n loader: () => import('@/pages/new-sale/NewSaleNewSchedule'),\n loading: Loading,\n});\nconst NewSaleScheduleRegister = Loadable({\n loader: () => import('@/pages/new-sale/NewSaleScheduleRegister'),\n loading: Loading,\n});\nconst NewSaleNewCheck = Loadable({\n loader: () => import('@/pages/new-sale/NewSaleNewCheck'),\n loading: Loading,\n});\nconst NewSaleAbnormal = Loadable({\n loader: () => import('@/pages/new-sale/NewSaleAbnormal'),\n loading: Loading,\n});\nconst NewSaleStartTransfer = Loadable({\n loader: () => import('@/pages/new-sale/NewSaleStartTransfer'),\n loading: Loading,\n});\nconst NewSaleTransferExamine = Loadable({\n loader: () => import('@/pages/new-sale/NewSaleTransferExamine'),\n loading: Loading,\n});\nconst NewSaleTransferAbnormal = Loadable({\n loader: () => import('@/pages/new-sale/NewSaleTransferAbnormal'),\n loading: Loading,\n});\nconst NewSaleNewPhoneTransferAbnormal = Loadable({\n loader: () => import('@/pages/new-sale/NewSaleNewPhoneTransferAbnormal'),\n loading: Loading,\n});\nconst NewSaleReserveSet = Loadable({\n loader: () => import('@/pages/new-sale/NewSaleReserveSet'),\n loading: Loading,\n});\nconst PurchaseCheckGoodsImport = Loadable({\n loader: () => import('@/pages/purchase-check/PurchaseCheckGoodsImport'),\n loading: Loading,\n});\nconst PurchaseCheckGoodsCheck = Loadable({\n loader: () => import('@/pages/purchase-check/PurchaseCheckGoodsCheck'),\n loading: Loading,\n});\nconst PurchaseCheckDeliveryCheck = Loadable({\n loader: () => import('@/pages/purchase-check/PurchaseCheckDeliveryCheck'),\n loading: Loading,\n});\nconst PurchaseCheckReceiveCheck = Loadable({\n loader: () => import('@/pages/purchase-check/PurchaseCheckReceiveCheck'),\n loading: Loading,\n});\nconst PurchaseCheckReceiveRegister = Loadable({\n loader: () => import('@/pages/purchase-check/PurchaseCheckReceiveRegister'),\n loading: Loading,\n});\nconst PurchaseCheckPackingRegister = Loadable({\n loader: () => import('@/pages/purchase-check/PurchaseCheckPackingRegister'),\n loading: Loading,\n});\nconst PurchaseCheckEfficiencyStatistics = Loadable({\n loader: () => import('@/pages/purchase-check/PurchaseCheckEfficiencyStatistics'),\n loading: Loading,\n});\nconst QServiceAgreement = Loadable({\n loader: () => import('@/pages/q-service/QServiceAgreement'),\n loading: Loading,\n});\nconst QServiceNewList = Loadable({\n loader: () => import('@/pages/q-service/QServiceNewList'),\n loading: Loading,\n});\nconst QServiceCheck = Loadable({\n loader: () => import('@/pages/q-service/QServiceCheck'),\n loading: Loading,\n});\nconst QServiceDistribution = Loadable({\n loader: () => import('@/pages/q-service/QServiceDistribution'),\n loading: Loading,\n});\nconst QServiceReceive = Loadable({\n loader: () => import('@/pages/q-service/QServiceReceive'),\n loading: Loading,\n});\nconst QServiceItem = Loadable({\n loader: () => import('@/pages/q-service/QServiceItem'),\n loading: Loading,\n});\nconst QServicePackage = Loadable({\n loader: () => import('@/pages/q-service/QServicePackage'),\n loading: Loading,\n});\nconst TianQServiceAgreement = Loadable({\n loader: () => import('@/pages/tianq-service/QServiceAgreement'),\n loading: Loading,\n});\nconst TianQServiceNewList = Loadable({\n loader: () => import('@/pages/tianq-service/QServiceNewList'),\n loading: Loading,\n});\nconst TianQServiceCheck = Loadable({\n loader: () => import('@/pages/tianq-service/QServiceCheck'),\n loading: Loading,\n});\nconst TianQServiceDistribution = Loadable({\n loader: () => import('@/pages/tianq-service/QServiceDistribution'),\n loading: Loading,\n});\nconst TianQServiceReceive = Loadable({\n loader: () => import('@/pages/tianq-service/QServiceReceive'),\n loading: Loading,\n});\nconst ThreeQServiceNewList = Loadable({\n loader: () => import('@/pages/threeq-service/QServiceNewList'),\n loading: Loading,\n});\nconst ThreeQServiceCheck = Loadable({\n loader: () => import('@/pages/threeq-service/QServiceCheck'),\n loading: Loading,\n});\nconst ThreeQServiceDistribution = Loadable({\n loader: () => import('@/pages/threeq-service/QServiceDistribution'),\n loading: Loading,\n});\nconst ThreeQServiceReceive = Loadable({\n loader: () => import('@/pages/threeq-service/QServiceReceive'),\n loading: Loading,\n});\nconst TianQServiceImport = Loadable({\n loader: () => import('@/pages/tianq-service/QServiceImport'),\n loading: Loading,\n});\nconst ThreeQServiceImport = Loadable({\n loader: () => import('@/pages/threeq-service/QServiceImport'),\n loading: Loading,\n});\nconst QServiceImport = Loadable({\n loader: () => import('@/pages/q-service/QServiceImport'),\n loading: Loading,\n});\nconst TianQServiceItem = Loadable({\n loader: () => import('@/pages/tianq-service/QServiceItem'),\n loading: Loading,\n});\nconst TianQServicePackage = Loadable({\n loader: () => import('@/pages/tianq-service/QServicePackage'),\n loading: Loading,\n});\nconst RServiceNewList = Loadable({\n loader: () => import('@/pages/r-service/RServiceNewList'),\n loading: Loading,\n});\nconst RServiceCheck = Loadable({\n loader: () => import('@/pages/r-service/RServiceCheck'),\n loading: Loading,\n});\nconst RServiceDistribution = Loadable({\n loader: () => import('@/pages/r-service/RServiceDistribution'),\n loading: Loading,\n});\nconst RServiceReceive = Loadable({\n loader: () => import('@/pages/r-service/RServiceReceive'),\n loading: Loading,\n});\nconst SimServiceReceive = Loadable({\n loader: () => import('@/pages/sim-service/SimServiceReceive'),\n loading: Loading,\n});\nconst SimServiceDistribution = Loadable({\n loader: () => import('@/pages/sim-service/SimServiceDistribution'),\n loading: Loading,\n});\nconst SimServiceNewList = Loadable({\n loader: () => import('@/pages/sim-service/SimServiceNewList'),\n loading: Loading,\n});\nconst SimServiceCheck = Loadable({\n loader: () => import('@/pages/sim-service/SimServiceCheck'),\n loading: Loading,\n});\nconst SimServicePackage = Loadable({\n loader: () => import('@/pages/sim-service/SimServicePackage'),\n loading: Loading,\n});\nconst NewPhoneInventoryRecord = Loadable({\n loader: () => import('@/pages/operatingDataSearch/newPhoneInventoryRecord'),\n loading: Loading,\n});\nconst NewPhoneStatisticalReport = Loadable({\n loader: () => import('@/pages/statistical-report/NewPhoneStatisticalReport'),\n loading: Loading,\n});\nconst ProfitStatisticalReport = Loadable({\n loader: () => import('@/pages/statistical-report/ProfitStatisticalReport'),\n loading: Loading,\n});\nconst SecondPhoneStatisticalReport = Loadable({\n loader: () => import('@/pages/statistical-report/SecondPhoneStatisticalReport'),\n loading: Loading,\n});\nconst ModelSearch = Loadable({\n loader: () => import('@/pages/model-search'),\n loading: Loading,\n});\n\nexport const AdminRouterData: IRouterConfig[] = [\n {\n exact: true,\n path: 'login',\n component: Login,\n },\n {\n exact: true,\n path: 'inputDemo',\n component: InputDemo,\n },\n {\n exact: true,\n path: 'booking',\n // path: 'booking2022',\n component: Booking,\n },\n {\n exact: true,\n path: 'qrCodeLogistics',\n component: QrCodeLogistics,\n },\n {\n exact: true,\n path: 'searchWarehouse',\n component: SearchWarehouse,\n },\n {\n exact: true,\n path: 'dashboard',\n component: Dashboard,\n },\n {\n exact: true,\n path: 'maintenanceReceiveSending',\n component: MaintenanceReceiveSending,\n },\n {\n exact: true,\n path: 'goodsPriceLabelPrint',\n component: GoodsPriceLabelPrint,\n },\n {\n exact: true,\n path: 'goodsReceipted',\n component: GoodsReceipted,\n },\n {\n exact: true,\n path: 'oldPhonePhoto',\n component: OldPhonePhoto,\n },\n {\n exact: true,\n path: 'oldPhonePhoto/:id',\n component: OldPhonePhotoDetail,\n },\n {\n exact: true,\n path: 'goodsReceiptedDetail/:id',\n component: GoodsReceiptedDetail,\n },\n {\n exact: true,\n path: 'outBranchBooking/account',\n component: OutBranchBookingAccount,\n },\n {\n exact: true,\n path: 'outBranchBooking/secondHandList',\n component: OutBranchBookingSecondHandList,\n },\n {\n exact: true,\n path: 'userManage/account',\n component: UserManageAccount,\n },\n {\n exact: true,\n path: 'userManage/authority',\n component: UserManageAuthority,\n },\n {\n exact: true,\n path: 'userManage/personnel',\n component: UserManagePersonnel,\n },\n {\n exact: true,\n path: 'userManage/maintenance',\n component: UserManageMaintenance,\n },\n {\n exact: true,\n path: 'userManage/loginLog',\n component: userManageLoginLog,\n },\n {\n exact: true,\n path: 'userManage/menu',\n component: UserManageMenu,\n },\n {\n exact: true,\n path: 'userManage/access',\n component: UserManageAccess,\n },\n {\n exact: true,\n path: 'userManage/custom',\n component: UserManageCustom,\n },\n {\n exact: true,\n path: 'mpSet/price',\n component: MpSetPrice,\n },\n {\n exact: true,\n path: 'mpSet/modelRam',\n component: MpSetModelRam,\n },\n {\n exact: true,\n path: 'mpSet/model',\n component: MpSetModel,\n },\n {\n exact: true,\n path: 'mpSet/secondHandUpc',\n component: MpSetSecondHandUpc,\n },\n {\n exact: true,\n path: 'mpSet/upc',\n component: MpSetUpc,\n },\n {\n exact: true,\n path: 'mpSet/secondHandPrice',\n component: MpSetSecondHandPrice,\n },\n {\n exact: true,\n path: 'mpSet/secondHandConfig',\n component: MpSetSecondHandConfig,\n },\n {\n exact: true,\n path: 'mpSet/secondHandHuiShouPrice',\n component: MpSetSecondHandHuiShouPrice,\n },\n {\n exact: true,\n path: 'mpSet/secondHandConfig',\n component: MpSetSecondHandConfig,\n },\n {\n exact: true,\n path: 'configuration/guarantee',\n component: ConfigurationGuarantee,\n },\n {\n exact: true,\n path: 'configuration/commodityDiscount',\n component: ConfigurationCommodityDiscount,\n },\n {\n exact: true,\n path: 'configuration/commodityDiscountReason',\n component: ConfigurationCommodityDiscountReason,\n },\n {\n exact: true,\n path: 'configuration/subscribe',\n component: ConfigurationSubscribe,\n },\n {\n exact: true,\n path: 'configuration/printTemplate',\n component: ConfigurationPrintTemplate,\n },\n {\n exact: true,\n path: 'configuration/excelTemplate',\n component: ConfigurationExcelTemplate,\n },\n {\n exact: true,\n path: 'configuration/jipinManage',\n component: JipinManage,\n },\n {\n exact: true,\n path: 'configuration/yanzhengmaManage',\n component: YanzhengmaManage,\n },\n {\n exact: true,\n path: 'configuration/backConfig',\n component: ConfigurationBackConfig,\n },\n {\n exact: true,\n path: 'configuration/payWay',\n component: ConfigurationPayWay,\n },\n {\n exact: true,\n path: 'configuration/stagesWay',\n component: ConfigurationStagesWay,\n },\n {\n exact: true,\n path: 'configuration/repairState',\n component: ConfigurationRepairState,\n },\n {\n exact: true,\n path: 'configuration/notice',\n component: ConfigurationNotice,\n },\n {\n exact: true,\n path: 'configuration/bookingNotice',\n component: ConfigurationBookingNotice,\n },\n {\n exact: true,\n path: 'configuration/bookingVipNotice',\n component: ConfigurationBookingVipNotice,\n },\n {\n exact: true,\n path: 'configuration/retailSales',\n component: ConfigurationRetailSales,\n },\n {\n exact: true,\n path: 'configuration/weight',\n component: ConfigurationWeight,\n },\n {\n exact: true,\n path: 'configuration/supplier',\n component: ConfigurationSupplier,\n },\n {\n exact: true,\n path: 'configuration/regularCustomer',\n component: ConfigurationRegularCustomer,\n },\n {\n exact: true,\n path: 'configuration/checkTimeout',\n component: ConfigurationCheckTimeout,\n },\n {\n exact: true,\n path: 'configuration/poster',\n component: ConfigurationPoster,\n },\n {\n exact: true,\n path: 'mpSet/phoneModel',\n component: ConfigurationPhoneModel,\n },\n {\n exact: true,\n path: 'purchaseCheck/goodsImport',\n component: PurchaseCheckGoodsImport,\n },\n {\n exact: true,\n path: 'purchaseCheck/goodsCheck',\n component: PurchaseCheckGoodsCheck,\n },\n {\n exact: true,\n path: 'purchaseCheck/deliveryCheck',\n component: PurchaseCheckDeliveryCheck,\n },\n {\n exact: true,\n path: 'purchaseCheck/receiveCheck',\n component: PurchaseCheckReceiveCheck,\n },\n {\n exact: true,\n path: 'purchaseCheck/receiveRegister',\n component: PurchaseCheckReceiveRegister,\n },\n {\n exact: true,\n path: 'purchaseCheck/packingRegister',\n component: PurchaseCheckPackingRegister,\n },\n {\n exact: true,\n path: 'purchaseCheck/efficiencyStatistics',\n component: PurchaseCheckEfficiencyStatistics,\n },\n {\n exact: true,\n path: 'qService/newList',\n component: QServiceNewList,\n },\n {\n exact: true,\n path: 'qService/check',\n component: QServiceCheck,\n },\n {\n exact: true,\n path: 'qService/distribution',\n component: QServiceDistribution,\n },\n {\n exact: true,\n path: 'qService/receive',\n component: QServiceReceive,\n },\n {\n exact: true,\n path: 'qService/item',\n component: QServiceItem,\n },\n {\n exact: true,\n path: 'qService/package',\n component: QServicePackage,\n },\n {\n exact: true,\n path: 'qService/agreement',\n component: QServiceAgreement,\n },\n {\n exact: true,\n path: 'threeqService/newList',\n component: ThreeQServiceNewList,\n },\n {\n exact: true,\n path: 'threeqService/check',\n component: ThreeQServiceCheck,\n },\n {\n exact: true,\n path: 'threeqService/distribution',\n component: ThreeQServiceDistribution,\n },\n {\n exact: true,\n path: 'threeqService/receive',\n component: ThreeQServiceReceive,\n },\n {\n exact: true,\n path: 'tianqService/import',\n component: TianQServiceImport,\n },\n {\n exact: true,\n path: 'threeqService/import',\n component: ThreeQServiceImport,\n },\n {\n exact: true,\n path: 'qService/import',\n component: QServiceImport,\n },\n {\n exact: true,\n path: 'tianqService/newList',\n component: TianQServiceNewList,\n },\n {\n exact: true,\n path: 'tianqService/check',\n component: TianQServiceCheck,\n },\n {\n exact: true,\n path: 'tianqService/distribution',\n component: TianQServiceDistribution,\n },\n {\n exact: true,\n path: 'tianqService/receive',\n component: TianQServiceReceive,\n },\n {\n exact: true,\n path: 'tianqService/item',\n component: TianQServiceItem,\n },\n {\n exact: true,\n path: 'tianqService/package',\n component: TianQServicePackage,\n },\n {\n exact: true,\n path: 'tianqService/agreement',\n component: TianQServiceAgreement,\n },\n {\n exact: true,\n path: 'rService/newList',\n component: RServiceNewList,\n },\n {\n exact: true,\n path: 'rService/check',\n component: RServiceCheck,\n },\n {\n exact: true,\n path: 'rService/distribution',\n component: RServiceDistribution,\n },\n {\n exact: true,\n path: 'rService/receive',\n component: RServiceReceive,\n },\n {\n exact: true,\n path: 'simService/distribution',\n component: SimServiceDistribution,\n },\n {\n exact: true,\n path: 'simService/newList',\n component: SimServiceNewList,\n },\n {\n exact: true,\n path: 'simService/check',\n component: SimServiceCheck,\n },\n {\n exact: true,\n path: 'simService/package',\n component: SimServicePackage,\n },\n {\n exact: true,\n path: 'simService/receive',\n component: SimServiceReceive,\n },\n {\n exact: true,\n path: 'newSale/newList',\n component: NewSaleNewList,\n },\n {\n exact: true,\n path: 'newSale/outbound',\n component: NewSaleOutbound,\n },\n {\n exact: true,\n path: 'newSale/newSale',\n component: NewSaleNewSale,\n },\n {\n exact: true,\n path: 'newSale/newSchedule',\n component: NewSaleNewSchedule,\n },\n {\n exact: true,\n path: 'newSale/scheduleRegister',\n component: NewSaleScheduleRegister,\n },\n {\n exact: true,\n path: 'newSale/newCheck',\n component: NewSaleNewCheck,\n },\n {\n exact: true,\n path: 'newSale/abnormal',\n component: NewSaleAbnormal,\n },\n {\n exact: true,\n path: 'newSale/startTransfer',\n component: NewSaleStartTransfer,\n },\n {\n exact: true,\n path: 'newSale/transferExamine',\n component: NewSaleTransferExamine,\n },\n {\n exact: true,\n path: 'newSale/transferAbnormal',\n component: NewSaleTransferAbnormal,\n },\n {\n exact: true,\n path: 'newSale/newPhoneTransferAbnormal',\n component: NewSaleNewPhoneTransferAbnormal,\n },\n {\n exact: true,\n path: 'newSale/reserveSet',\n component: NewSaleReserveSet,\n },\n {\n exact: true,\n path: 'secondHand/newList',\n component: SecondHandNewList,\n },\n {\n exact: true,\n path: 'secondHand/newCheck',\n component: SecondHandNewCheck,\n },\n {\n exact: true,\n path: 'secondHand/toReviewNewCheck',\n component: SecondHandToReviewNewCheck,\n },\n {\n exact: true,\n path: 'secondHand/abnormal',\n component: SecondHandAbnormal,\n },\n {\n exact: true,\n path: 'secondHand/startTransfer',\n component: SecondHandStartTransfer,\n },\n {\n exact: true,\n path: 'secondHand/transferExamine',\n component: SecondHandTransferExamine,\n },\n {\n exact: true,\n path: 'secondHand/transferAbnormal',\n component: SecondHandTransferAbnormal,\n },\n {\n exact: true,\n path: 'secondHand/reserveSet',\n component: SecondHandReserveSet,\n },\n {\n exact: true,\n path: 'secondHand/appointment',\n component: SecondHandAppointment,\n },\n {\n exact: true,\n path: 'salesBilling/siteRepair',\n component: SalesBillingSiteRepair,\n },\n {\n exact: true,\n path: 'salesBilling/stay',\n component: SalesBillingStay,\n },\n {\n exact: true,\n path: 'salesBilling/recieving',\n component: SalesBillingRecieving,\n },\n {\n exact: true,\n path: 'salesBilling/newSale',\n component: SalesBillingNewSale,\n },\n {\n exact: true,\n path: 'salesBilling/secondHandSale',\n component: SalesBillingSecondHandSale,\n },\n {\n exact: true,\n path: 'salesBilling/envelope',\n component: SalesBillingEnvelope,\n },\n {\n exact: true,\n path: 'salesBilling/saleBills',\n component: SalesBillingSaleBills,\n },\n {\n exact: true,\n path: 'salesBilling/sim',\n component: SalesBillingSim,\n },\n {\n exact: true,\n path: 'salesBilling/scheduleBills',\n component: SalesBillingScheduleBills,\n },\n {\n exact: true,\n path: 'salesBilling/refund',\n component: SalesBillingRefund,\n },\n {\n exact: true,\n path: 'salesBilling/oldBilling',\n component: SalesBillingOldBilling,\n },\n {\n exact: true,\n path: 'maintenance/guestBusiness',\n component: MaintenanceGuestBusiness,\n },\n {\n exact: true,\n path: 'maintenance/stayPhoneEfficiencyStatistics',\n component: StayPhoneEfficiencyStatistics,\n },\n {\n exact: true,\n path: 'maintenance/toOriginal',\n component: MaintenanceToOriginal,\n },\n {\n exact: true,\n path: 'maintenance/storeBusiness',\n component: MaintenanceStoreBusiness,\n },\n {\n exact: true,\n path: 'maintenance/scrapApproval',\n component: MaintenanceScrapApproval,\n },\n {\n exact: true,\n path: 'sparePart/partsList',\n component: SparePartList,\n },\n {\n exact: true,\n path: 'sparePart/partsCheck',\n component: SparePartCheck,\n },\n {\n exact: true,\n path: 'sparePart/partsAbnormal',\n component: SparePartAbnormal,\n },\n {\n exact: true,\n path: 'mobile/signPage/:category/:id',\n component: SignPage,\n },\n {\n exact: true,\n path: 'mobile/simSignPage/:category/:id',\n component: SimSignPage,\n },\n {\n exact: true,\n path: 'mobile/photo/:category/:id',\n component: PhotoPage,\n },\n {\n exact: true,\n path: 'mobile/newPDFPrint/:category/:id',\n component: NewPDFPrint,\n },\n {\n exact: true,\n path: 'mobile/newPDFPrintV2/:category/:id',\n component: NewPDFPrintV2,\n },\n {\n exact: true,\n path: 'mobile/print/:category/:id',\n component: Print,\n },\n {\n exact: true,\n path: 'mobile/printMobile/:category/:id',\n component: PrintMobile,\n },\n {\n exact: true,\n path: 'operatingDataSearch/newPhoneInventoryRecord',\n component: NewPhoneInventoryRecord,\n },\n {\n exact: true,\n path: 'statisticalReport/newPhoneStatisticalReport',\n component: NewPhoneStatisticalReport,\n },\n {\n exact: true,\n path: 'statisticalReport/profitStatisticalReport',\n component: ProfitStatisticalReport,\n },\n {\n exact: true,\n path: 'statisticalReport/secondPhoneStatisticalReport',\n component: SecondPhoneStatisticalReport,\n },\n {\n exact: true,\n path: 'ecpay/info/:tradeNo',\n component: EcpayInfo,\n },\n {\n exact: true,\n path: 'modelSearch',\n component: ModelSearch,\n },\n {\n exact: true,\n path: '500',\n component: Error500,\n },\n].map((item: IRouterConfig) => ({ ...item, path: `/${ROUTER_PREFIX}/${item.path}` }));\n// export const AdminRouterData: IRouterConfig[] = [\n// {\n// exact: true,\n// path: '/bot-manage/:robotDefId/:botTabType/:curEnvironment',\n// component: BotDetail,\n// permissionKey: 'A',\n// },\n// {\n// exact: true,\n// path: '/scene-manage/:botSceneId/:tabType/edit/:id',\n// component: SceneRouteComp,\n// permissionKey: 'BOTLAB_1',\n// },\n// ].map((item: IRouterConfig) => ({ ...item, path: `/${ROUTER_PREFIX}${item.path}` }));\n","/**\n * @Author: haimian\n * @Description: 添加编辑角色\n * @Date: 2021-07-25\n */\nimport React, { FC, useState, useEffect } from 'react';\nimport { Modal, Form, Input, message, Tree } from 'antd';\nimport { RoleItem } from '@/service/interface/user';\nimport { useLanguage } from '@/hooks/useLanguage';\nimport { addRole, editRole, getAllMenuList, getRoleInfo } from '@/service/user';\nimport { modalFormLayout } from '@/layouts/style-config';\nimport { debounce } from 'lodash';\n\ninterface Props {\n visible: boolean;\n record: RoleItem;\n onCancel: () => void;\n loadData: () => void;\n}\n\nexport interface TreeItem {\n key: string;\n title: string;\n children: TreeItem[];\n menuType?: number;\n}\n\nconst UserManageAuthorityModal: FC = ({ visible, record, loadData, onCancel }) => {\n const [form] = Form.useForm();\n const [btnLoading, setBtnLoading] = useState(false);\n const [menuList, setMenuList] = useState([]);\n const [checkedKeys, setCheckedKeys] = useState([]);\n const lal = useLanguage();\n const {\n common: { enter, success, add, edit },\n userManage: { roleName, menuPermission, roleIntro },\n } = lal;\n\n useEffect(() => {\n fetchMenuList();\n }, []);\n\n useEffect(() => {\n if (record && JSON.stringify(record) !== '{}') {\n fetchRoleInfo(record.id);\n form.setFieldsValue({\n roleName: record.roleName,\n roleIntro: record.roleIntro,\n roleCode: record.roleCode,\n });\n } else {\n form.setFieldsValue({\n roleName: undefined,\n roleIntro: undefined,\n });\n }\n }, [record]);\n\n /** 获取所有 menu */\n const fetchMenuList = async () => {\n const res = await getAllMenuList();\n if (res) {\n setMenuList(dealMenuList(res));\n }\n };\n\n const dealMenuList = res => {\n if (res instanceof Array && !res.length) {\n return [];\n }\n return (res || []).map(item => {\n return {\n title: lal.route[item.menuName],\n key: item.id,\n children: dealMenuList(item.menuList || []),\n };\n });\n };\n\n const handleCheck = (checkedKeysValue: React.Key[]) => {\n setCheckedKeys(checkedKeysValue);\n };\n\n /** 获取当前用户信息 */\n const fetchRoleInfo = async roleId => {\n const res = await getRoleInfo(roleId);\n if (res) {\n setCheckedKeys((res.menuIdList || []).map(Number));\n }\n };\n\n const onOk = () => {\n form.validateFields().then(async values => {\n setBtnLoading(true);\n const { roleName, roleIntro, roleCode } = values;\n let res;\n if (record && JSON.stringify(record) !== '{}') {\n res = await editRole({\n ...record,\n roleName,\n roleIntro,\n roleCode,\n menuIdList: checkedKeys.map(String),\n });\n } else {\n res = await addRole({\n roleName,\n roleIntro,\n roleCode,\n menuIdList: checkedKeys.map(String),\n });\n }\n setBtnLoading(false);\n if (res) {\n loadData();\n message.success(\n !record || JSON.stringify(record) === '{}' ? `${add}${success}` : `${edit}${success}`,\n );\n onCancel();\n }\n });\n };\n\n return (\n \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default UserManageAuthorityModal;\n","import urlJoin from 'url-join';\nimport axios from 'axios';\nimport { rsort } from 'semver';\nimport { useEffect, useState } from 'react';\nimport { useUniqueAsync } from 'khooks-lib';\nimport { ASSETS_PREFIX } from '@/h5/constants/assets.const';\n\nexport const ENTRANCE_ROOT = urlJoin(ASSETS_PREFIX, 'app-release');\n\nexport const getAppRootPath = (appName: string) => urlJoin(ENTRANCE_ROOT, appName);\n\n/**\n * 將應用放到 public/static/app-release 目錄下,目錄名稱為應用名稱\n * 應用目錄下有個 release.json ,類型如下\n * 應用用版本號 命名 + 後綴,如:0.1.0.apk\n * */\nexport type IAppConfig = {\n /** 文件後綴 */\n ext: string;\n /** 版本列表 */\n versionList: string[];\n /** 當前版本號 */\n currentVersion: string;\n};\n\nexport type IVersionInfo = {\n version: string;\n url: string;\n};\n\nexport function useAppVersions(appName: string) {\n if (!appName) {\n throw new Error('appName is required!');\n }\n const [latestVersion, setLatestVersion] = useState();\n const [currentVersion, setCurrentVersion] = useState();\n\n const { asyncFn: getVersionList, response: versionList = [], loading } = useUniqueAsync(\n async (): Promise => {\n const result: IVersionInfo[] = [];\n\n const appRoot = getAppRootPath(appName);\n\n const res = await axios.get(urlJoin(appRoot, 'release.json') + `?${Date.now()}`);\n const data = res.data as IAppConfig;\n const targetVersionList = rsort(data.versionList.filter(it => it !== data.currentVersion));\n setLatestVersion(data.currentVersion);\n setCurrentVersion(data.currentVersion);\n\n // 最新版放上方\n result.push({\n version: data.currentVersion,\n url: window.location.origin + urlJoin(appRoot, data.currentVersion) + data.ext,\n });\n\n targetVersionList.forEach(version => {\n result.push({\n version,\n url: window.location.origin + urlJoin(appRoot, version) + data.ext,\n });\n });\n\n return result;\n },\n );\n\n useEffect(() => {\n void getVersionList();\n }, []);\n\n return {\n latest: latestVersion,\n versionList,\n loading,\n currentVersion,\n setCurrentVersion,\n };\n}\n","import styled from 'styled-components';\nimport { flexCrossAxisCenter, flexMainAxisCenter, flexVertical } from '@/styles/flex-layout';\n\nexport const AppDisplayWrapper = styled.div`\n ${flexVertical};\n ${flexCrossAxisCenter};\n ${flexMainAxisCenter};\n`;\n\nexport const QrcodeWrapper = styled.div`\n width: 200px;\n height: 200px;\n position: relative;\n border: 1px solid #000000;\n margin-bottom: 16px;\n`;\n\nexport const Qrcode = styled.div`\n width: calc(100% - 20px);\n height: calc(100% - 20px);\n position: absolute;\n top: 10px;\n left: 10px;\n`;\n","// AppDisplay\nimport React, { useCallback, useEffect, useRef } from 'react';\nimport { DownloadOutlined } from '@ant-design/icons';\nimport { nanoid } from 'nanoid';\nimport QRCode from 'qrcode';\nimport { Spin, Select, Descriptions, Button } from 'antd';\nimport { useAppVersions } from './useAppVersions';\nimport { AppDisplayWrapper, Qrcode, QrcodeWrapper } from './styles';\nimport { downloadUrl } from '@/utils/common';\n\nexport type AppDisplayProps = {\n appName: string;\n};\n\n/**\n * @author kinghoo\n * @description 應用下載信息展示\n * @version 0.1.0\n * @create 2025-03-19, 周三, 0:24\n */\nconst AppDisplay = (props: AppDisplayProps) => {\n const $id = useRef(`c_${nanoid()}`);\n const { appName } = props;\n const { latest, loading, versionList, setCurrentVersion, currentVersion } = useAppVersions(\n appName,\n );\n\n const removeOriginCanvas = useCallback(() => {\n const wrapper = document.getElementById($id.current);\n if (!wrapper) return;\n const canvasList = wrapper.querySelectorAll('canvas');\n if (!canvasList.length) return;\n Array.prototype.forEach.call(canvasList, canvas => {\n canvas.remove();\n });\n }, []);\n\n useEffect(() => {\n removeOriginCanvas();\n const currentInfo = versionList.find(item => item.version === currentVersion);\n if (!currentInfo) return;\n\n QRCode.toCanvas(currentInfo.url, {\n errorCorrectionLevel: 'H', //容错率L(低)H(高)\n margin: 0, //二维码内边距,默认为4。单位px\n height: 180, //二维码高度\n width: 180, //二维码宽度\n scal: 177,\n color: {\n dark: '#000', // 二维码背景颜色\n },\n rendererOpts: {\n quality: 0.9,\n },\n }).then(canvas => {\n const wrapper = document.getElementById($id.current);\n if (wrapper) {\n wrapper.append(canvas);\n }\n });\n }, [JSON.stringify({ currentVersion, versionList })]);\n\n return (\n \n {loading ? (\n \n ) : (\n <>\n

    應用 - {appName}

    \n \n \n {\n setCurrentVersion(val);\n }}\n style={{ width: '100%' }}\n options={versionList.map(item => ({\n label: `${item.version}${item.version === latest ? ` - 最新版` : ''}`,\n value: item.version,\n }))}\n value={currentVersion}\n />\n \n \n\n \n \n \n\n }\n onClick={() => {\n const currentItem = versionList.find(item => item.version === currentVersion);\n if (!currentItem) return;\n downloadUrl(currentItem?.url ?? '', `${appName}@v${currentItem?.version}.apk`);\n }}\n >\n 下載 {appName}@{currentVersion}\n \n \n )}\n
    \n );\n};\n\nexport default AppDisplay;\n","// DownloadModal\nimport React from 'react';\n// import { Divider } from 'antd';\nimport comp2modal from '@/utils/comp2modal';\nimport AppDisplay from './AppDisplay';\n\nexport type DownloadModalProps = {\n // 组件props\n};\n\n/**\n * @description 下載彈窗\n */\nconst DownloadModal = (props: DownloadModalProps) => {\n const isTest = 'development' === process.env.REACT_APP_API_ENV;\n return (\n <>\n \n {/**/}\n {/**/}\n \n );\n};\n\nexport default comp2modal(DownloadModal);\n","// AppDownloadEntrance\nimport React from 'react';\nimport { Button } from 'antd';\nimport { useButtonVOList } from '@/hooks/useButtonVOList';\nimport { CloudDownloadOutlined } from '@ant-design/icons';\nimport modal from './DownloadModal';\nimport { ISH5 } from '@/utils/common';\n\n/**\n * @description app下載入口\n */\nconst AppDownloadEntrance = () => {\n const buttonVOList = useButtonVOList();\n const hasAccess = buttonVOList.includes('enable-app-download');\n\n const handleShowAppDownloadModal = () => {\n modal({\n modalConfig: {\n title: 'APP下載',\n footer: null,\n width: ISH5 ? '100%' : 600,\n },\n });\n };\n\n return hasAccess ? (\n \n ) : null;\n};\n\nexport default AppDownloadEntrance;\n","import { getToken } from './cookies';\nimport Axios, { AxiosRequestConfig, AxiosResponse } from 'axios';\nimport { stringify } from 'qs';\nimport { ROUTER_PREFIX } from '@/config/router-config';\nimport { ISH5 } from './common';\nimport { AgentType } from '@/service/interface/user.d';\n\nexport interface AjaxInitOption {\n headers: Record;\n errCallBack: (msg: string) => void;\n expectCodeList: number[];\n enablePushState?: boolean;\n // 防止重复提交\n antiImpact?: boolean;\n}\n\nexport interface AxiosRes extends AxiosResponse {\n resultMsg?: string | null;\n}\n\nexport interface AjaxConfig extends AxiosRequestConfig {\n antiImpact?: boolean;\n timeStamp: string;\n}\n\nexport interface ExpectAxioCodeRes {\n expectAxioCode?: number;\n resultMsg?: string | null;\n}\n\n/** ajaxInit 仅执行一次 */\nlet isInit = false;\n\nexport const SUCCESS_CODE = 200;\nexport const SUCCESS_CODE_STRING = '200';\nexport const BACK_LOGIN_CODE = [400, 1011];\nexport const NET_ERROR_MSG = '服务器异常';\nlet EXPECT_CODE_LIST: number[] = [];\nlet ERR_CALL_BACK: (msg: string) => void;\nlet ENABLE_PUSH_STATE: boolean | undefined = false;\n\nconst RequestTimeStampSet = {};\n\nexport const request = Axios.create();\n\nfunction errorCheck(rtn: any, cb?: any) {\n if (BACK_LOGIN_CODE.includes(+rtn.code)) {\n window.location.href = `/${ROUTER_PREFIX}/login`;\n }\n}\n\nexport function ajaxInit({\n errCallBack,\n expectCodeList,\n headers,\n enablePushState,\n antiImpact,\n}: AjaxInitOption) {\n EXPECT_CODE_LIST = expectCodeList;\n ERR_CALL_BACK = errCallBack;\n ENABLE_PUSH_STATE = enablePushState;\n if (isInit) {\n return;\n }\n request.interceptors.request.use(config => {\n const timeStamp = new Date().getTime();\n const { antiImpact: ApiAntiImpact, method, url } = config as AjaxConfig;\n const antiImpactVar =\n (antiImpact === true && ApiAntiImpact !== false) || ApiAntiImpact === true;\n if (antiImpactVar && method && url) {\n RequestTimeStampSet[method + url] = timeStamp;\n }\n return {\n ...config,\n headers: {\n ...config.headers,\n ...headers,\n 'X-Access-Token': getToken(),\n token: getToken(),\n agentType: ISH5 ? AgentType.H5 : AgentType.PC,\n },\n antiImpact: antiImpactVar,\n timeStamp,\n };\n });\n request.interceptors.response.use(\n res => {\n return res;\n },\n err => {\n console.warn(NET_ERROR_MSG, err);\n errCallBack(NET_ERROR_MSG);\n return false;\n },\n );\n isInit = true;\n}\n\nfunction handleAjaxSuccessful(res: AxiosRes) {\n if (!res) {\n return false;\n }\n const { timeStamp, antiImpact, method, url } = res.config as AjaxConfig;\n if (antiImpact && method && url && RequestTimeStampSet[method + url] !== timeStamp) {\n return false;\n }\n // 防止 res.data 为 undefined\n if (!res.data) {\n return false;\n }\n if (res.data.code === SUCCESS_CODE || res.data.code === SUCCESS_CODE_STRING) {\n return res.data.result ? res.data.result : true;\n } else if (EXPECT_CODE_LIST.indexOf(res.data.code) > -1) {\n return {\n ...res.data.result,\n errResponse: res,\n resultMsg: res.data.message,\n expectAxioCode: res.data.code,\n };\n } else {\n console.error('接口报错信息内容:', JSON.stringify(res.data));\n errorCheck(res.data);\n ERR_CALL_BACK(res.data.message);\n return false;\n }\n}\n\n// tslint:disable-next-line:no-any\nexport async function ajaxGet(url: string, data?: any, config?: AjaxConfig) {\n const res = await request.get(url, {\n params: data,\n ...(config as AxiosRequestConfig),\n });\n const outRes: (T & ExpectAxioCodeRes) | false = handleAjaxSuccessful(res);\n return outRes;\n}\n\n// tslint:disable-next-line:no-any\nexport async function ajaxPost(url: string, data: any, config?: AjaxConfig) {\n const res = await request.post(url, data, config);\n const outRes: (T & ExpectAxioCodeRes) | false = handleAjaxSuccessful(res);\n return outRes;\n}\n\n// tslint:disable-next-line:no-any\nexport async function ajaxDelete(url: string, data: any, config?: AjaxConfig) {\n const res = await request.delete(url, {\n params: data,\n ...(config as AxiosRequestConfig),\n });\n const outRes: (T & ExpectAxioCodeRes) | false = handleAjaxSuccessful(res);\n return outRes;\n}\n\n// tslint:disable-next-line:no-any\nexport async function ajaxPut(url: string, data: any, config?: AjaxConfig) {\n const res = await request.put(url, data, config);\n const outRes: (T & ExpectAxioCodeRes) | false = handleAjaxSuccessful(res);\n return outRes;\n}\n\n// tslint:disable-next-line:no-any\nexport async function ajaxForm(url: string, data: any, config?: AjaxConfig) {\n const fd = new FormData();\n const keys = Object.keys(data);\n for (const key of keys) {\n fd.append(key, data[key]);\n }\n const res = await request.post(url, fd, {\n headers: { 'Content-Type': 'multipart/form-data' },\n ...(config as AxiosRequestConfig),\n });\n const outRes: (T & ExpectAxioCodeRes) | false = handleAjaxSuccessful(res);\n return outRes;\n}\n\nexport async function ajaxFormImg(url: string, data: any, config?: AjaxConfig) {\n const fd = new FormData();\n const keys = Object.keys(data);\n for (const key of keys) {\n fd.append(key, data[key], 'image.png');\n }\n const res = await request.post(url, fd, {\n headers: { 'Content-Type': 'multipart/form-data' },\n ...(config as AxiosRequestConfig),\n });\n const outRes: (T & ExpectAxioCodeRes) | false = handleAjaxSuccessful(res);\n return outRes;\n}\n\n// tslint:disable-next-line:no-any\nexport async function ajaxFormUrlencoded(url: string, data: any, config?: AjaxConfig) {\n const options = {\n headers: { 'content-type': 'application/x-www-form-urlencoded' },\n ...config,\n };\n const res = await request.post(url, stringify(data), options);\n const outRes: (T & ExpectAxioCodeRes) | false = handleAjaxSuccessful(res);\n return outRes;\n}\n","import { useContext } from 'react';\nimport { GlobalContext } from '@/context';\n\nfunction useLanguage() {\n const { languageLetter } = useContext(GlobalContext);\n return languageLetter;\n}\n\nexport { useLanguage };\n","import { ImportStatus } from './service/interface/user.d';\n/**\n * @Author: haimian\n * @Description: 声明 context\n * @Date: 2021-07-22\n */\nimport { createContext } from 'react';\nimport { Locale } from 'antd/lib/locale-provider';\nimport { UserInfo } from './service/interface/user';\nimport { CurrentAxisItem } from './service/interface/purchase-check.d';\n\ninterface IGlobalContext {\n userInfo: UserInfo;\n token: string | undefined;\n importStatus: ImportStatus;\n changeImportStatus: (val: ImportStatus) => void;\n changeLocale: (val: Locale) => void;\n languageLetter: any;\n fetchUserInfo: () => void;\n handlegetCurrentAxis: () => void;\n currentAxis: CurrentAxisItem[];\n}\n\nexport const GlobalContext = createContext({\n userInfo: {} as UserInfo,\n importStatus: ImportStatus.DONE,\n fetchUserInfo: () => {},\n token: '',\n changeLocale: () => {},\n changeImportStatus: () => {},\n languageLetter: {},\n handlegetCurrentAxis: () => {},\n currentAxis: [],\n});\n\nGlobalContext.displayName = 'GlobalContext';\n","import { ajaxGet, ajaxPost } from '@/utils/ajax';\nimport {\n AddBookingParams,\n AndorcancelParams,\n BookingListItem,\n BookingTransferListItem,\n CaptchaItem,\n CheckPay,\n EditBookingParams,\n InfoItem,\n PrintInfo,\n RefundParams,\n} from './interface/booking.d';\nimport { IPaginationParams, IPaginationRes } from './interface/commom';\n\n/** 預約 */\nexport const addBooking = (params: AddBookingParams) =>\n ajaxPost('/q3c-api/booking/booking/add', params);\n\nexport const verifySentVerificationCode = ({\n phone,\n verificationCode,\n verificationCodeBusinessEnum,\n}) =>\n ajaxGet(\n `/q3c-api/verificationCodeSms/verifySentVerificationCode?phone=${phone}&verificationCode=${verificationCode}&verificationCodeBusinessEnum=${verificationCodeBusinessEnum}&verificationCodeErrorCountFlag=true`,\n );\n\n/** cancel預約 */\nexport const cancelBooking = (phoneReserveId: number) =>\n ajaxPost(\n `/q3c-api/booking/booking/customer/cancel?phoneReserveId=${phoneReserveId}`,\n undefined,\n );\n\nexport const getBookingConfigInfo = (configCode: string, configType: string) =>\n ajaxPost<{ configValue: string }>(\n `/q3c-api/usr/config/getInfo?configCode=${configCode}&configType=${configType}`,\n undefined,\n );\n\nexport const bookingAddQuickly = params =>\n ajaxPost(`/q3c-api/booking/booking/addQuickly`, params);\n\nexport const bookingBatchAddQuickly = params =>\n ajaxPost(`/q3c-api/booking/booking/batchAddQuickly`, params);\n\n/** 分配記錄 */\nexport const getPayWayList = (params: any) =>\n ajaxPost>('/q3c-api/usr/pay/way/list', params);\n\nexport const updateByTypeAndCode = (params: any) =>\n ajaxPost('/q3c-api/usr/config/updateByTypeAndCode', params);\n\n/** 分配記錄 */\nexport const editPayWay = params => ajaxPost('/q3c-api/usr/pay/way/edit', params);\n\n/** 預約列表 */\nexport const getBookingList = (\n params: { name: string; phone: string; verifyCode: string } & IPaginationParams,\n) => ajaxPost('/q3c-api/booking/booking/vcode/list', params);\n\n/** 资料回填 */\nexport const addPayNo = (params: { payNo: string; id: number }) =>\n ajaxPost('/q3c-api/booking/booking/payNo', params);\n\n/** 獲取認證碼 */\nexport const getCaptcha = () =>\n ajaxPost('/q3c-api/booking/booking/captcha', undefined);\n\nexport const checkCaptcha = ({ verifyCode, verifyCodeName }) =>\n ajaxGet(\n `/q3c-api/booking/booking/verifyCode?verifyCode=${verifyCode}&verifyCodeName=${verifyCodeName}`,\n );\n\nexport const bookingSendVerificationCode = params =>\n ajaxPost('/q3c-api/booking/booking/sendVerificationCode', params);\n\nexport const getCompanyName = (unifyNumber: string) =>\n ajaxPost(\n `/q3c-api/ec/invoice/getCompanyByUnifiedBusinessNo?unifyNumber=${unifyNumber}`,\n undefined,\n );\n\n/** 审核 */\nexport const checkPay = (params: CheckPay) =>\n ajaxPost('/q3c-api/booking/booking/check/pay', params);\n\n/** 退回未审核 */\nexport const unpay = (params: { id: number }) =>\n ajaxPost('/q3c-api/booking/booking/check/unpay', params);\n\nexport const checkBalance = params => ajaxPost('/q3c-api/booking/booking/check/balance', params);\n\n/** 插隊 */\nexport const sortFirst = id =>\n ajaxPost(`/q3c-api/booking/booking/sort/first?phoneReserveId=${id}`, undefined);\n\n/** 垫底 */\nexport const sortLast = id =>\n ajaxPost(`/q3c-api/booking/booking/sort/last?phoneReserveId=${id}`, undefined);\n\n/** 編輯 */\nexport const editBooking = (params: EditBookingParams) =>\n ajaxPost('/q3c-api/booking/booking/edit', params);\n\n/** 退訂金 */\nexport const refundBooking = (params: RefundParams) =>\n ajaxPost('/q3c-api/booking/booking/refund', params);\n\n/** 查看詳情 */\nexport const getInfoByUpc = id =>\n ajaxPost(`/q3c-api/booking/booking/upc/distribution?upcCode=${id}`, undefined);\n\n/** 单条确定 */\nexport const commitDistribution = (id: number) =>\n ajaxPost(`/q3c-api/booking/booking/commit/distribution?phoneReserveId=${id}`, undefined);\n\nexport const commitPrint = (id: number, snCode: string) =>\n ajaxPost(`/q3c-api/booking/booking/commit/print?phoneReserveId=${id}&snCode=${snCode}`, undefined);\n\n/** 取消单条确定 */\nexport const cancelCommitDistribution = (id: number) =>\n ajaxPost(`/q3c-api/booking/booking/cancel/distribution?phoneReserveId=${id}`, undefined);\n\n/** 自動配貨保存 */\nexport const andorcancel = (params: AndorcancelParams) =>\n ajaxPost('/q3c-api/booking/transfer/andorcancel', params);\n\n/** 分配記錄 */\nexport const getBookingTransferList = (params: IPaginationParams) =>\n ajaxPost>('/q3c-api/booking/transfer/list', params);\n\n/** 打印 */\nexport const getPrintInfo = (id: number) =>\n ajaxPost(`/q3c-api/booking/transfer/label?reserveTransferId=${id}`, undefined);\n\n/** 刪除異常訂單 */\nexport const handleDeleteNewSaleTransferAbnormal = (id: number) =>\n ajaxPost(`/q3c-api/transfer/detail/delete?id=${id}`, undefined);\n","import Cookies from 'js-cookie';\n\n// user token cookie\nconst tokenKey = 'vue_typescript_admin_access_token';\nexport const getToken = () => Cookies.get(tokenKey);\nexport const setToken = (token: string) => Cookies.set(tokenKey, token);\nexport const removeToken = () => Cookies.remove(tokenKey);\n","export const font12 = {\n fontSize: 12,\n lineHeight: '20px',\n};\n\nexport const font14 = {\n fontSize: 14,\n lineHeight: '22px',\n};\n\nexport const font16 = {\n fontSize: 16,\n lineHeight: '22px',\n};\n\nexport const font20 = {\n fontSize: 20,\n lineHeight: '28px',\n};\n\nexport const font26 = {\n fontSize: 26,\n lineHeight: '34px',\n};\n\n/** 轻字重:font-weight: 400 */\nexport const fontRegular = 400;\n/** 标准字重:font-weight: 500 */\nexport const fontMedium = 500;\n/** 重字重:font-weight: 600 */\nexport const fontSemiBold = 600;\n","export const gap4 = 4;\nexport const gap8 = 8;\nexport const gap10 = 10;\nexport const gap16 = 16;\nexport const gap20 = 20;\nexport const gap24 = 24;\n","import * as colors from './colors';\nimport * as fonts from './fonts';\nimport * as gaps from './gaps';\n\nexport { colors, fonts, gaps };\n\nexport default {\n colors,\n fonts,\n gaps,\n};\n","import styled from 'styled-components';\n\nexport const HeaderWrapper = styled.div`\n z-index: 99;\n .ant-layout-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: 50px;\n padding: 0;\n background-color: #ffffff;\n box-shadow: 0px 3px 5px 0px rgba(49, 55, 78, 0.04);\n > img {\n height: 31px;\n margin-left: 16px;\n }\n > div {\n display: flex;\n align-items: center;\n cursor: pointer;\n .ant-badge {\n width: 30px;\n font-size: 20px;\n &:hover {\n color: #2f82f8;\n }\n }\n .user-name {\n margin-right: 8px;\n font-weight: 400;\n font-size: 14px;\n line-height: 30px;\n cursor: pointer;\n &:hover {\n color: #2f82f8;\n }\n }\n .countdown {\n margin-right: 8px;\n font-weight: 400;\n font-size: 14px;\n line-height: 30px;\n }\n .user-avater {\n font-size: 30px;\n }\n }\n .header-line {\n width: 1px;\n height: 30px;\n margin-right: 10px;\n border-right: 1px solid #e8e8e8;\n }\n }\n`;\n","/**\n * @Author: haimian\n * @Description: 修改密码\n * @Date: 2021-07-22\n */\nimport React, { FC, useContext } from 'react';\nimport { Modal, Form, Input, message } from 'antd';\nimport { changePwd, logout } from '@/service/user';\nimport { GlobalContext } from '@/context';\nimport { ISH5 } from '@/utils/common';\nimport { AgentType } from '@/service/interface/user.d';\nimport { removeToken } from '@/utils/cookies';\nimport { useHistory } from 'react-router-dom';\nimport { ROUTER_PREFIX } from '@/config/router-config';\n\ninterface Props {\n visible: boolean;\n onCancel: () => void;\n extra?: string | React.ReactElement;\n}\n\nconst ChangePasswordModal: FC = ({ visible, extra, onCancel }) => {\n const history = useHistory();\n const { languageLetter, userInfo, token } = useContext(GlobalContext);\n const { account, id } = userInfo;\n\n const [form] = Form.useForm();\n\n const handleChangePwd = async params => {\n const res = await changePwd(params);\n if (res) {\n message.success('修改成功');\n onCancel();\n handleLogOut();\n }\n };\n\n const handleLogOut = async () => {\n await logout({\n agentType: ISH5 ? AgentType.H5 : AgentType.PC,\n });\n removeToken();\n history.push(`/${ROUTER_PREFIX}/login`);\n };\n\n return (\n {\n form.validateFields().then(values => {\n handleChangePwd({\n ...values,\n account,\n id,\n token,\n });\n });\n }}\n >\n {extra || ''}\n
    \n \n \n \n \n \n );\n};\n\nexport default ChangePasswordModal;\n","import React, { FC, useState, useEffect } from 'react';\nimport { Modal, Form, Input, Row, Col, message } from 'antd';\nimport { debounce } from 'lodash';\nimport { useLanguage } from '@/hooks/useLanguage';\nimport { editUser } from '@/service/user';\nimport MyUpload from '@/components/my-upload';\nimport { useUserInfo } from '@/hooks/useUserInfo';\nimport { NewImageType } from '@/service/interface/commom.d';\nimport { cutPrefixImgUrl, dealSimpleMinioImgUrl } from '@/utils/common';\n\ninterface Props {\n visible: boolean;\n onCancel: () => void;\n}\ninterface FileItem {\n uid: string;\n name: string;\n status: string;\n url: string;\n}\n\nconst ChangeInfoModal: FC = ({ visible, onCancel }) => {\n const [form] = Form.useForm();\n const [btnLoading, setBtnLoading] = useState(false);\n const [fileList, setFileList] = useState([]);\n const [imageUrl, setImageUrl] = useState('');\n const userInfo = useUserInfo();\n const lal = useLanguage();\n const {\n common: { enter },\n userManage: { nickName },\n } = lal;\n\n useEffect(() => {\n if (userInfo) {\n if (userInfo.imageUrl) {\n setImageUrl(dealSimpleMinioImgUrl(userInfo.imageUrl));\n setFileList([\n {\n uid: '-1',\n name: 'img.png',\n status: 'done',\n url: dealSimpleMinioImgUrl(userInfo.imageUrl),\n },\n ]);\n }\n form.setFieldsValue({\n nickName: userInfo.nickName,\n });\n }\n }, [userInfo]);\n\n const reset = () => {\n form.resetFields();\n setImageUrl('');\n setFileList([]);\n };\n\n const onOk = async () => {\n form.validateFields().then(async values => {\n setBtnLoading(true);\n const res = await editUser({\n ...userInfo,\n ...values,\n imageUrl: cutPrefixImgUrl(imageUrl),\n id: userInfo.id,\n });\n setBtnLoading(false);\n if (res) {\n onCancel();\n message.success('修改成功');\n setTimeout(() => {\n window.location.reload();\n }, 200);\n }\n });\n };\n\n const handleSetImageUrl = val => {\n setImageUrl(val);\n };\n\n const handleSetFileList = val => {\n setFileList(val);\n };\n\n return (\n {\n reset();\n onCancel();\n }}\n visible={visible}\n confirmLoading={btnLoading}\n width={550}\n onOk={debounce(onOk, 200)}\n maskClosable={false}\n >\n
    \n \n
    \n \n \n \n \n \n 0 ? fileList : undefined}\n handleSetImageUrl={handleSetImageUrl}\n handleSetFileList={handleSetFileList}\n imageType={NewImageType['100']}\n />\n \n \n );\n};\n\nexport default ChangeInfoModal;\n","/**\n * @Author: haimian\n * @Description: 修改密码\n * @Date: 2021-07-22\n */\nimport React, { FC, useContext } from 'react';\nimport { Modal, Form, message, Select } from 'antd';\nimport { changeGroup, changePwd } from '@/service/user';\nimport { GlobalContext } from '@/context';\n\ninterface Props {\n visible: boolean;\n onCancel: () => void;\n}\n\nconst ChangeGroupModal: FC = ({ visible, onCancel }) => {\n const { userInfo } = useContext(GlobalContext);\n const { groupVOList, groupId, groupName, id } = userInfo;\n\n const [form] = Form.useForm();\n\n const handleChangePwd = async params => {\n const res = await changeGroup(params);\n if (res) {\n message.success('操作成功');\n onCancel();\n window.location.reload();\n }\n };\n\n return (\n {\n form.validateFields().then(values => {\n handleChangePwd({\n id,\n groupId: values.groupId,\n groupName: groupVOList.filter(item => item.groupId === values.groupId)[0].groupName,\n groupVOList: [\n ...groupVOList.filter(item => item.groupId !== values.groupId),\n { groupName, groupId },\n ],\n });\n });\n }}\n >\n
    \n {groupName}\n \n \n \n \n \n );\n};\n\nexport default ChangeGroupModal;\n","/**\n * @Author: haimian\n * @Description: Header 组件\n * @Date: 2021-07-22\n */\nimport React, { useState, useEffect, useRef, useContext } from 'react';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport {\n Layout,\n Button,\n Menu,\n Dropdown,\n Avatar,\n message,\n Form,\n Popover,\n Progress,\n Modal,\n Row,\n Select,\n Col,\n} from 'antd';\nimport { CaretDownOutlined } from '@ant-design/icons';\nimport { changeAxisType, startBtachPick } from '@/service/purchase-check';\nimport enUS from 'antd/lib/locale/en_US';\nimport zhCN from 'antd/lib/locale/zh_CN';\nimport zhTW from 'antd/lib/locale/zh_TW';\nimport { GlobalContext } from '@/context';\nimport {\n logout,\n changeRefreshTime,\n changeLanguage,\n goPreWebsite,\n getImportInfo,\n getErpMenuListByToken,\n} from '@/service/user';\nimport { removeToken } from '@/utils/cookies';\nimport { HeaderWrapper } from '../../layouts/layoutStyleConfig';\nimport ChangePasswordModal from './ChangePasswordModal';\nimport {\n LanguageType,\n RefreshTimeType,\n languageMap,\n Language,\n AgentType,\n BizType,\n ImportInfoItem,\n ImportStatus,\n USERAGENTTYPE,\n userAgentMap,\n} from '@/service/interface/user.d';\nimport { ROUTER_PREFIX } from '@/config/router-config';\nimport { dealTime, ISH5 } from '@/utils/common';\nimport ColorSpan from '../color-span';\nimport ChangeInfoModal from './ChangeInfoModal';\nimport { AxisType } from '@/service/interface/purchase-check.d';\nimport AddTime from '../add-time';\nimport { storage } from '@/utils/local-storage';\nimport ChangeGroupModal from './ChangeGroupModal';\nimport AppDownloadEntrance from '@/components/AppDownloadEntrance';\n\nconst { Header } = Layout;\nlet isMove = false;\n\nconst tableArr = [\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'F',\n 'G',\n 'H',\n 'K',\n 'R',\n 'S',\n 'T',\n 'W',\n 'X',\n 'Y',\n 'Z',\n 'AA',\n 'AB',\n];\n\nconst PageHeader = ({ children }) => {\n const currentAxisTimeRef = useRef(null as any);\n const [btnLoading, setBtnLoading] = useState(false);\n const { pathname } = useLocation();\n const [visible, setVisible] = useState(false); // 修改密码\n const [baohuoVisible, setBaohuoVisible] = useState(false);\n const [groupVisible, setGroupVisible] = useState(false); // 切換分組\n const [infoVisible, setInfoVisible] = useState(false); // 修改头像\n const [timeMsg, setTimeMsg] = useState('--:--'); // 展示定时器\n const [importInfo, setImportInfo] = useState({} as ImportInfoItem);\n const [otherForm] = Form.useForm();\n const {\n userInfo,\n changeLocale,\n languageLetter,\n fetchUserInfo,\n changeImportStatus,\n handlegetCurrentAxis,\n currentAxis,\n } = useContext(GlobalContext);\n const { languageType, refreshMin, groupId } = userInfo;\n const history = useHistory();\n const timeRef = useRef();\n const elseTimeRef = useRef();\n const importTimeRef = useRef();\n\n const {\n navbar: { fiveM, thirtyM, oneHour, never, goPre, logOut, refresh },\n common: { editSuccessfully, changePwd, changeInfo, last },\n } = languageLetter;\n\n const RefreshTimeTypeMap: Record = {\n [RefreshTimeType.FIVE]: fiveM,\n [RefreshTimeType.THIRTY]: thirtyM,\n [RefreshTimeType.HOUR]: oneHour,\n [RefreshTimeType.NEVER]: never,\n };\n\n const [userAgent, setUserAgent] = useState(!ISH5 ? USERAGENTTYPE.PC : USERAGENTTYPE.H5);\n\n const timeConfig = [\n {\n val: RefreshTimeType.FIVE,\n title: fiveM,\n key: 'FIVE',\n },\n {\n val: RefreshTimeType.THIRTY,\n title: thirtyM,\n key: 'THIRTY',\n },\n {\n val: RefreshTimeType.HOUR,\n title: oneHour,\n key: 'HOUR',\n },\n {\n val: RefreshTimeType.NEVER,\n title: never,\n key: 'NEVER',\n },\n ];\n\n useEffect(() => {\n if (changeLocale) {\n if (languageType === Language.ZHTW) {\n changeLocale(zhTW);\n } else if (languageType === Language.ZHCN) {\n changeLocale(zhCN);\n } else {\n changeLocale(zhTW);\n }\n }\n window.onmousemove = () => {\n isMove = true;\n clearTimeout(elseTimeRef.current);\n elseTimeRef.current = setTimeout(function() {\n isMove = false;\n }, 2000);\n };\n fetchImportInfo();\n fetchImportInfoInterval();\n if (groupId === 8) {\n handlegetCurrentAxis();\n if (currentAxisTimeRef.current) {\n clearInterval(currentAxisTimeRef.current);\n }\n currentAxisTimeRef.current = setInterval(() => {\n handlegetCurrentAxis();\n }, 1000 * 60);\n }\n }, []);\n\n useEffect(() => {\n countdown();\n }, [refreshMin]);\n\n // 退出登录\n const handleLogOut = async () => {\n await logout({\n agentType: ISH5 ? AgentType.H5 : AgentType.PC,\n });\n removeToken();\n history.push(`/${ROUTER_PREFIX}/login`);\n };\n\n // 修改個人信息\n const handleChangeImg = () => {\n setInfoVisible(true);\n };\n\n // 切換分組\n const handleChangeGroup = () => {\n setGroupVisible(true);\n };\n\n // 修改密码\n const handleChangePwd = () => {\n setVisible(true);\n };\n\n // 修改密码\n const onCancel = () => {\n setVisible(false);\n setInfoVisible(false);\n setGroupVisible(false);\n };\n\n // 修改语言\n const handleChangeLanguage = async (locale, type) => {\n const res = await changeLanguage({\n languageType: type,\n });\n if (res) {\n changeLocale(locale);\n message.success(editSuccessfully);\n fetchUserInfo();\n }\n };\n\n const handleChangeUserAgent = (val: USERAGENTTYPE) => {\n storage.setItem('my-user-agent', val + '');\n setUserAgent(val);\n window.location.href = `/${ROUTER_PREFIX}/dashboard`;\n };\n\n // 修改刷新时间\n const handleChangeRefresh = async (val, title) => {\n const res = await changeRefreshTime({\n refreshMin: val,\n });\n if (res) {\n message.success(editSuccessfully);\n fetchUserInfo();\n }\n };\n\n // 定时刷新 倒计时\n const countdown = () => {\n if (timeRef.current) {\n clearInterval(timeRef.current);\n setTimeMsg('--:--');\n }\n if (!!refreshMin) {\n let maxtime = refreshMin * 60; // 一个小时,按秒计算,自己调整!\n timeRef.current = setInterval(() => {\n if (maxtime >= 0) {\n if (!isMove) {\n const minutes = Math.floor(maxtime / 60);\n const seconds = Math.floor(maxtime % 60);\n const msg = minutes + ':' + (seconds === 0 ? '00' : seconds);\n setTimeMsg(msg);\n --maxtime;\n }\n } else {\n clearInterval(timeRef.current);\n window.location.reload();\n }\n }, 1000);\n }\n };\n\n const menu = (\n \n \n 切換分組\n \n \n {changeInfo}\n \n \n {changePwd}\n \n \n {logOut}\n \n \n );\n\n const timeMenu = () => (\n \n {timeConfig.map(({ key, title, val }) => {\n return (\n {\n handleChangeRefresh(val, title);\n }}\n >\n {title}\n \n );\n })}\n \n );\n const userAgentMenu = (\n \n {\n handleChangeUserAgent(USERAGENTTYPE.PC);\n }}\n >\n PC端\n \n {\n handleChangeUserAgent(USERAGENTTYPE.H5);\n }}\n >\n 行動端\n \n \n );\n\n const languageMenu = (\n \n {\n handleChangeLanguage(zhTW, LanguageType.zhTW);\n }}\n >\n {languageMap[Language.ZHTW]}\n \n {\n handleChangeLanguage(zhCN, LanguageType.zhCN);\n }}\n >\n {languageMap[Language.ZHCN]}\n \n \n );\n\n const handleGoERP = async () => {\n const res = await getErpMenuListByToken();\n if (res instanceof Array && res.length > 0) {\n window.open('/erp/dashboard');\n } else {\n window.Sound.play();\n message.error('無權限訪問');\n }\n };\n\n const handleGoPre = async () => {\n const res = await goPreWebsite();\n if (res) {\n window.open(res as string);\n }\n };\n\n const fetchImportInfo = async () => {\n if (ISH5) {\n return;\n }\n const res = await getImportInfo(BizType.FITTINGS);\n if (res) {\n setImportInfo(res);\n changeImportStatus(res.status);\n }\n };\n\n const fetchImportInfoInterval = () => {\n if (ISH5) {\n return;\n }\n if (importTimeRef.current) {\n clearInterval(importTimeRef.current);\n }\n importTimeRef.current = setInterval(() => {\n fetchImportInfo();\n }, 60000);\n };\n\n // const AxisTypeMap: Record = {\n // [AxisType.OwnPick]: '揀門市的貨',\n // [AxisType.Play]: '打單',\n // [AxisType.Pick]: '揀貨',\n // [AxisType.Pack]: '包貨',\n // [AxisType.MakeOut]: '寄貨',\n // };\n\n const AxisTypeMap: Record = {\n [AxisType.xiapi]: '揀蝦皮貨',\n [AxisType.OwnPick]: '強制登錄開始揀貨',\n [AxisType.Play]: '印單',\n [AxisType.Pick]: '揀門市貨',\n [AxisType.Pack]: '包貨',\n [AxisType.MakeOut]: '理貨',\n [AxisType.Rest]: '吃飯&休息',\n };\n\n const onOk = () => {\n otherForm.validateFields().then(async values => {\n setBtnLoading(true);\n const res = await startBtachPick({\n packageUserName: userInfo?.realName,\n packageTable: values.packageTable,\n });\n setBtnLoading(false);\n if (res) {\n message.success('操作成功');\n handlegetCurrentAxis();\n setBaohuoVisible(false);\n }\n });\n };\n\n const renderContent = str => {\n return (\n
    \n
    \n \n 您目前正在\n \n {(currentAxis || [])[0] ? AxisTypeMap[[...currentAxis].reverse()[0].axisType] : '--'}\n \n \n ,持續\n {(currentAxis || [])[0] ? (\n \n ) : (\n '--'\n )}\n \n \n
    \n
    請問您是否要切換為{str}?
    \n
    \n );\n };\n\n return (\n \n
    \n {children}\n
    \n \n {groupId === 8 && (\n {\n if (visible) {\n handlegetCurrentAxis();\n }\n }}\n content={\n
    \n
    \n 點選切換工作狀態:\n
    \n \n {\n Modal.confirm({\n title: '是否確認開始揀蝦皮貨?',\n content: renderContent('揀蝦皮貨'),\n onOk: async () => {\n const res = await changeAxisType(AxisType.xiapi);\n if (res) {\n message.success('操作成功');\n handlegetCurrentAxis();\n }\n },\n });\n }}\n >\n 揀蝦皮貨\n \n {\n Modal.confirm({\n title: '是否確認開始揀門市貨?',\n content: renderContent('揀門市貨'),\n onOk: async () => {\n const res = await changeAxisType(AxisType.Pick);\n if (res) {\n message.success('操作成功');\n handlegetCurrentAxis();\n }\n },\n });\n }}\n >\n 揀門市貨\n \n {\n Modal.confirm({\n title: '是否確認開始印單?',\n content: renderContent('印單'),\n onOk: async () => {\n const res = await changeAxisType(AxisType.Play);\n if (res) {\n message.success('操作成功');\n handlegetCurrentAxis();\n }\n },\n });\n }}\n >\n 印單\n \n
    \n \n {\n Modal.confirm({\n title: '是否確認開始包貨?',\n content: renderContent('包貨'),\n onOk: async () => {\n setBaohuoVisible(true);\n },\n });\n }}\n >\n 包貨\n \n {\n Modal.confirm({\n title: '是否確認開始理貨?',\n content: renderContent('理貨'),\n onOk: async () => {\n const res = await changeAxisType(AxisType.MakeOut);\n if (res) {\n message.success('操作成功');\n handlegetCurrentAxis();\n }\n },\n });\n }}\n >\n 理貨\n \n {\n Modal.confirm({\n title: '是否確認開始吃飯&休息?',\n content: renderContent('吃飯&休息'),\n onOk: async () => {\n const res = await changeAxisType(AxisType.Rest);\n if (res) {\n message.success('操作成功');\n handlegetCurrentAxis();\n }\n },\n });\n }}\n >\n 吃飯&休息\n \n
    \n
      \n {[...(currentAxis || [])]\n .reverse()\n .map(({ axisType, axisTime, nextAxisTime }) => {\n return (\n
    • \n
      \n {AxisTypeMap[axisType]}:\n
      \n
      開始時間:{axisTime}
      \n
      結束時間:{nextAxisTime || '--'}
      \n
      \n 持續時間:\n {axisTime && nextAxisTime ? (\n dealTime(axisTime, nextAxisTime)\n ) : (\n \n )}\n
      \n
    • \n );\n })}\n
    \n \n }\n trigger=\"hover\"\n >\n \n 我在\n \n {(currentAxis || [])[0]\n ? AxisTypeMap[[...currentAxis].reverse()[0].axisType]\n : '--'}\n \n \n ,持續\n {(currentAxis || [])[0] ? (\n \n ) : (\n '--'\n )}\n \n \n \n )}\n \n {importInfo.status === ImportStatus.DONE ? (\n 已完成\n ) : (\n
    \n
    匯入中:{importInfo?.fileName || '--'}
    \n
    \n \n
    \n {importInfo.realDealCount}/{importInfo.totalCount}\n
    \n
    \n
    \n )}\n \n }\n trigger=\"hover\"\n >\n \n \n \n 進入ERP\n \n \n {goPre}\n \n \n \n {refresh}:{RefreshTimeTypeMap[refreshMin]}\n \n \n \n {!!refreshMin && (\n \n {last} {timeMsg}\n \n )}\n \n \n {userAgentMap[userAgent]}\n \n \n \n \n \n {languageMap[languageType]}\n \n \n \n \n \n \n {userInfo.realName}\n \n \n \n \n
    \n {visible && }\n {infoVisible && }\n {groupVisible && }\n {\n setBaohuoVisible(false);\n }}\n visible={baohuoVisible}\n confirmLoading={btnLoading}\n width={500}\n onOk={onOk}\n >\n
    \n \n
    \n \n \n \n \n \n \n \n \n );\n};\n\nexport default PageHeader;\n","import { ROUTER_PREFIX } from '@/config/router-config';\nimport {\n TeamOutlined,\n ContactsOutlined,\n PayCircleOutlined,\n ControlOutlined,\n DashboardOutlined,\n SyncOutlined,\n SettingOutlined,\n MobileOutlined,\n AppstoreAddOutlined,\n BugOutlined,\n RocketOutlined,\n RobotOutlined,\n TransactionOutlined,\n TrademarkCircleOutlined,\n FileSearchOutlined,\n PieChartOutlined,\n StrikethroughOutlined,\n SearchOutlined,\n} from '@ant-design/icons';\n\nlet routerMenu = {\n goodsPriceLabelPrint: `/goodsPriceLabelPrint`,\n goodsReceipted: `/goodsReceipted`,\n oldPhonePhoto: `/oldPhonePhoto`,\n goodsReceiptedDetail: `/goodsReceiptedDetail`,\n // outBranchBooking: `/outBranchBooking/account`,\n userManage: `/userManage`,\n userManageAccount: '/userManage/account',\n outBranchBooking: `/outBranchBooking`,\n outBranchBookingAccount: '/outBranchBooking/account',\n outBranchBookingSecondHandList: '/outBranchBooking/secondHandList',\n userManageAuthority: '/userManage/authority',\n userManagePersonnel: '/userManage/personnel',\n userManageMaintenance: '/userManage/maintenance',\n userManageLoginLog: '/userManage/loginLog',\n userManageMenu: '/userManage/menu',\n userManageAccess: '/userManage/access',\n userManageCustom: '/userManage/custom',\n mpSet: '/mpSet',\n mpSetPrice: '/mpSet/price',\n mpSetModelRam: '/mpSet/modelRam',\n mpSetModel: '/mpSet/model',\n mpSetSecondHandUpc: '/mpSet/secondHandUpc',\n mpSetUpc: '/mpSet/upc',\n mpSetSecondHandPrice: '/mpSet/secondHandPrice',\n mpSetSecondHandConfig: '/mpSet/secondHandConfig',\n mpSetSecondHandHuiShouPrice: '/mpSet/secondHandHuiShouPrice',\n configuration: '/configuration',\n configurationGuarantee: '/configuration/guarantee',\n configurationCommodityDiscount: '/configuration/commodityDiscount',\n configurationCommodityDiscountReason: '/configuration/commodityDiscountReason',\n configurationSubscribe: '/configuration/subscribe',\n configurationPrintTemplate: '/configuration/printTemplate',\n configurationExcelTemplate: '/configuration/excelTemplate',\n jipinManage: '/configuration/jipinManage',\n yanzhengmaManage: '/configuration/yanzhengmaManage',\n configurationBackConfig: '/configuration/backConfig',\n configurationPayWay: '/configuration/payWay',\n configurationStagesWay: '/configuration/stagesWay',\n configurationRepairState: '/configuration/repairState',\n configurationNotice: '/configuration/notice',\n configurationBookingNotice: '/configuration/bookingNotice',\n configurationBookingVipNotice: '/configuration/bookingVipNotice',\n configurationRetailSales: '/configuration/retailSales',\n configurationWeight: '/configuration/weight',\n configurationSupplier: '/configuration/supplier',\n configurationRegularCustomer: '/configuration/regularCustomer',\n configurationCheckTimeout: '/configuration/checkTimeout',\n configurationPoster: '/configuration/poster',\n configurationPhoneModel: '/mpSet/phoneModel',\n purchaseCheck: '/purchaseCheck',\n purchaseCheckGoodsImport: '/purchaseCheck/goodsImport',\n purchaseCheckGoodsCheck: '/purchaseCheck/goodsCheck',\n purchaseCheckGoodsCheckHistory: '/purchaseCheck/goodsCheckHistory',\n purchaseCheckDeliveryCheck: '/purchaseCheck/deliveryCheck',\n purchaseCheckReceiveCheck: '/purchaseCheck/receiveCheck',\n purchaseCheckReceiveRegister: '/purchaseCheck/receiveRegister',\n purchaseCheckPackingRegister: '/purchaseCheck/packingRegister',\n purchaseCheckEfficiencyStatistics: '/purchaseCheck/efficiencyStatistics',\n procurementManage: '/procurementManage',\n procurementManageApplyGoods: '/procurementManage/applyGoods',\n newSale: '/newSale',\n newSaleNewList: '/newSale/newList',\n newSaleOutbound: '/newSale/outbound',\n newSaleNewSale: '/newSale/newSale',\n newSaleNewSchedule: '/newSale/newSchedule',\n newSaleScheduleRegister: '/newSale/scheduleRegister',\n newSaleNewCheck: '/newSale/newCheck',\n newSaleAbnormal: '/newSale/abnormal',\n newSaleStartTransfer: '/newSale/startTransfer',\n newSaleTransferExamine: '/newSale/transferExamine',\n newSaleTransferAbnormal: '/newSale/transferAbnormal',\n newSaleNewPhoneTransferAbnormal: '/newSale/newPhoneTransferAbnormal',\n newSaleReserveSet: '/newSale/reserveSet',\n secondHand: '/secondHand',\n secondHandNewList: '/secondHand/newList',\n secondHandConfigAppointment: '/secondHand/appointment',\n secondHandNewCheck: '/secondHand/newCheck',\n secondHandToReviewNewCheck: '/secondHand/toReviewNewCheck',\n secondHandAbnormal: '/secondHand/abnormal',\n secondHandStartTransfer: '/secondHand/startTransfer',\n secondHandTransferExamine: '/secondHand/transferExamine',\n secondHandTransferAbnormal: '/secondHand/transferAbnormal',\n secondHandReserveSet: '/secondHand/reserveSet',\n salesBilling: '/salesBilling',\n salesBillingSiteRepair: '/salesBilling/siteRepair',\n salesBillingStay: '/salesBilling/stay',\n salesBillingRecieving: '/salesBilling/recieving',\n salesBillingNewSale: '/salesBilling/newSale',\n salesBillingSecondHandSale: '/salesBilling/secondHandSale',\n salesBillingEnvelope: '/salesBilling/envelope',\n salesBillingSaleBills: '/salesBilling/saleBills',\n salesBillingScheduleBills: '/salesBilling/scheduleBills',\n salesBillingRefund: '/salesBilling/refund',\n salesBillingSim: '/salesBilling/sim',\n salesBillingOldBilling: '/salesBilling/oldBilling',\n mobile: '/mobile',\n signPage: '/mobile/signPage',\n print: '/mobile/print',\n printMobile: '/mobile/printMobile',\n maintenanceReceiveSending: '/maintenanceReceiveSending',\n maintenance: '/maintenance',\n maintenanceGuestBusiness: '/maintenance/guestBusiness',\n stayPhoneEfficiencyStatistics: '/maintenance/stayPhoneEfficiencyStatistics',\n maintenanceToOriginal: '/maintenance/toOriginal',\n maintenanceStoreBusiness: '/maintenance/storeBusiness',\n maintenanceScrapApproval: '/maintenance/scrapApproval',\n sparePart: '/sparePart',\n sparePartList: '/sparePart/partsList',\n sparePartCheck: '/sparePart/partsCheck',\n sparePartAbnormal: '/sparePart/partsAbnormal',\n operatingDataSearch: '/operatingDataSearch',\n newPhoneInventoryRecord: '/operatingDataSearch/newPhoneInventoryRecord',\n statisticalReport: '/statisticalReport',\n newPhoneStatisticalReport: '/statisticalReport/newPhoneStatisticalReport',\n profitStatisticalReport: '/statisticalReport/profitStatisticalReport',\n secondPhoneStatisticalReport: '/statisticalReport/secondPhoneStatisticalReport',\n qService: '/qService',\n qServiceNewList: '/qService/newList',\n qServiceCheck: '/qService/check',\n qServiceDistribution: '/qService/distribution',\n qServiceReceive: '/qService/receive',\n qServiceItem: '/qService/item',\n qServicePackage: '/qService/package',\n qServiceAgreement: '/qService/agreement',\n tianqService: '/tianqService',\n tianqServiceNewList: '/tianqService/newList',\n tianqServiceCheck: '/tianqService/check',\n tianqServiceDistribution: '/tianqService/distribution',\n tianqServiceReceive: '/tianqService/receive',\n tianqServiceItem: '/tianqService/item',\n tianqServicePackage: '/tianqService/package',\n tianqServiceAgreement: '/tianqService/agreement',\n rService: '/rService',\n rServiceNewList: '/rService/newList',\n rServiceCheck: '/rService/check',\n rServiceDistribution: '/rService/distribution',\n rServiceReceive: '/rService/receive',\n simService: '/simService',\n simServiceDistribution: '/simService/distribution',\n simServiceNewList: '/simService/newList',\n simServiceReceive: '/simService/receive',\n simServiceCheck: '/simService/check',\n simServicePackage: '/simService/package',\n threeqService: '/threeqService',\n threeqServiceNewList: '/threeqService/newList',\n threeqServiceCheck: '/threeqService/check',\n threeqServiceDistribution: '/threeqService/distribution',\n threeqServiceReceive: '/threeqService/receive',\n tianqServiceImport: '/tianqService/import',\n threeqServiceImport: '/threeqService/import',\n qServiceImport: '/qService/import',\n modelSearch: '/modelSearch',\n};\n\nconst menuIcon = {\n dashboard: ,\n maintenanceReceiveSending: ,\n userManage: ,\n goodsPriceLabelPrint: ,\n goodsReceipted: ,\n oldPhonePhoto: ,\n goodsReceiptedDetail: ,\n outBranchBooking: ,\n mpSet: ,\n sparePart: ,\n mobile: ,\n salesBilling: ,\n secondHand: ,\n newSale: ,\n maintenance: ,\n operatingDataSearch: ,\n statisticalReport: ,\n purchaseCheck: ,\n configuration: ,\n qService: ,\n tianqService: ,\n threeqService: ,\n rService: ,\n simService: ,\n modelSearch: ,\n};\n\nconst newRouterMenu = {};\nObject.entries(routerMenu).forEach(([key, value]) => {\n newRouterMenu[key] = `/${ROUTER_PREFIX}${value}`;\n});\n\n// @ts-ignore\nrouterMenu = newRouterMenu;\n\nexport { routerMenu, menuIcon };\n","/**\n * @Author: haimian\n * @Description: 侧边导航栏\n * @Date: 2021-07-22\n */\nimport React, { useEffect, useState, useContext } from 'react';\nimport { Menu, Layout } from 'antd';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport { getMenuListByToken } from '@/service/user';\nimport { MenuItem } from '@/service/interface/user';\nimport { GlobalContext } from '@/context';\nimport { routerMenu, menuIcon } from './router-menu';\nimport { ROUTER_PREFIX } from '@/config/router-config';\nimport { ISH5 } from '@/utils/common';\n\nconst { SubMenu } = Menu;\nconst { Sider } = Layout;\n\ninterface IProps {\n collapsed: boolean;\n}\n\nexport interface ISubRoute {\n title: string;\n key: string;\n menuName: string;\n permissionKey?: string;\n match?: RegExp;\n}\n\nexport interface IParentRoute {\n title: string;\n key: string;\n menuName: string;\n children: ISubRoute[];\n}\n\nconst NavSidebar = ({ collapsed }: IProps) => {\n const history = useHistory();\n const { pathname } = useLocation();\n const [menuDataSource, setMenuDataSource] = useState([] as MenuItem[]);\n const [rootSubmenuKeys, setRootSubmenuKeys] = useState([]);\n const [dealMenuDataSource, setDealMenuDataSource] = useState([] as IParentRoute[]);\n const [openKeys, setOpenKeys] = useState([\n `/${ROUTER_PREFIX}/${pathname.split('/')[2]}`,\n ]);\n const { languageLetter } = useContext(GlobalContext);\n\n useEffect(() => {\n fetchMenu();\n }, []);\n\n /** 手动路由跳转后 */\n useEffect(() => {\n setOpenKeys([`/${ROUTER_PREFIX}/${pathname.split('/')[2]}`]);\n }, [pathname]);\n\n const fetchMenu = async () => {\n const res = await getMenuListByToken();\n if (res) {\n const curRes = res.filter(item => item.perms !== 'mobile-config');\n setMenuDataSource(curRes);\n setRootSubmenuKeys(curRes.map(({ menuName }) => `/${ROUTER_PREFIX}/${menuName}`));\n }\n };\n\n useEffect(() => {\n setDealMenuDataSource([\n {\n key: `/${ROUTER_PREFIX}/dashboard`,\n menuName: 'dashboard',\n title: languageLetter.route.dashboard,\n children: [],\n },\n ...handleDealMenu(menuDataSource),\n ]);\n }, [menuDataSource, languageLetter]);\n\n // 处理 menu 数据\n const handleDealMenu = res => {\n if (!res.length) {\n return [];\n }\n return res\n .map(({ menuName, menuList, sort }) => ({\n title: languageLetter.route[menuName],\n key: routerMenu[menuName],\n menuName,\n children: menuList ? handleDealMenu(menuList) : [],\n sort,\n // match: new RegExp(`(/botlab/bot)`),\n }))\n .sort((a, b) => a.sort - b.sort);\n };\n\n const handleItemClick = item => {\n const nextKey = item.key;\n if (nextKey) {\n history.push(nextKey);\n }\n };\n\n const renderMenu = () => {\n return dealMenuDataSource.map(({ children, menuName, title, key }) => {\n if (children instanceof Array && children.length > 0) {\n return (\n \n {children.map(({ title, key: curKey }) => (\n \n {title}\n \n ))}\n \n );\n }\n return (\n \n {title}\n \n );\n });\n };\n\n const onOpenChange = keys => {\n const latestOpenKey = keys.find(key => openKeys.indexOf(key) === -1);\n if (rootSubmenuKeys.indexOf(latestOpenKey) === -1) {\n setOpenKeys(keys);\n } else {\n setOpenKeys(latestOpenKey ? [latestOpenKey] : []);\n }\n };\n\n return (\n \n \n {collapsed ? (\n \"header-logo\"\n ) : (\n
    \n \"header-logo\"\n Q哥|汎雲有限公司| Qfanyun inc.\n
    \n )}\n \n
    \n \n {renderMenu()}\n \n
    \n \n );\n};\n\nexport default NavSidebar;\n","import React, { useState } from 'react';\nimport { Layout } from 'antd';\nimport { MenuUnfoldOutlined, MenuFoldOutlined } from '@ant-design/icons';\nimport { storage, STORAGE_KEYS } from '@/utils/local-storage';\nimport PageHeader from '../components/header';\nimport NavSidebar from '../components/nav-sidebar';\nimport { ISH5 } from '@/utils/common';\nimport { APP_CONTENT_ID } from '@/config/constant';\n\nconst { Content } = Layout;\n\ninterface IMainLayoutProps {\n routes: React.ReactElement[] | null;\n}\n\nexport const MainLayout = (props: IMainLayoutProps) => {\n const { routes } = props;\n const [collapsed, setCollapsed] = useState(\n /^true$/i.test(storage.getItem(STORAGE_KEYS.Q3_EXPAND) || '') || false,\n );\n\n const toggle = () => {\n setCollapsed(!collapsed);\n storage.setItem(STORAGE_KEYS.Q3_EXPAND, !collapsed + '');\n };\n\n return (\n \n \n \n \n {React.createElement(collapsed ? MenuUnfoldOutlined : MenuFoldOutlined, {\n className: 'trigger',\n onClick: toggle,\n })}\n \n \n {routes}\n \n \n \n );\n};\n","import zh from './zh';\nimport zhTw from './zhTw';\nimport english from './english';\n\nconst LANGUAGE_LETTER = {\n 'zh-cn': zh,\n 'zh-tw': zhTw,\n en: english,\n};\n\nexport default LANGUAGE_LETTER;\n","const zh = {\n // 菜单\n route: {\n dashboard: '首页',\n goodsPriceLabelPrint: '货品价格标签列印',\n goodsReceipted: '仓库货物签收',\n outBranchBooking: '外部門市代售',\n\n userManage: '账号人事管理',\n operatingDataSearch: '运营资料查询',\n statisticalReport: '统计报表',\n newPhoneStatisticalReport: '新机统计报表',\n profitStatisticalReport: '利润统计报表',\n secondPhoneStatisticalReport: '二手机统计报表',\n newPhoneInventoryRecord: '新机库存记录',\n userManageAccount: '账户管理',\n userManageAuthority: '角色管理',\n userManagePersonnel: '地区分组管理',\n userManageMaintenance: '维修分组管理',\n userManageLoginLog: '登录日志',\n userManageMenu: '菜单管理',\n userManageAccess: '权限管理',\n userManageCustom: '自定义配置',\n qService: 'Q卡管理',\n tianqService: '甜Q卡管理',\n threeqService: '3Q卡管理',\n simService: 'Sim卡管理',\n qServiceNewList: '全门市Q卡',\n tianqServiceNewList: '全门市甜Q卡',\n threeqServiceNewList: '全门市3Q卡',\n qServiceCheck: 'Q卡盘点',\n tianqServiceCheck: '甜Q卡盘点',\n threeqServiceCheck: '3Q卡盘点',\n simServiceCheck: 'Sim卡盘点',\n qServiceDistribution: 'Q卡配货',\n simServiceNewList: '全门市Sim卡',\n tianqServiceDistribution: '甜Q卡配货',\n threeqServiceDistribution: '3Q卡配货',\n simServiceDistribution: 'Sim卡配货',\n outBranchBookingAccount: '賬號配置',\n outBranchBookingSecondHandList: 'Q哥門市二手機',\n qServiceReceive: 'Q卡收货',\n tianqServiceReceive: '甜Q卡收货',\n threeqServiceReceive: '3Q卡收货',\n tianqServiceImport: '甜Q卡汇入',\n threeqServiceImport: '3Q卡汇入',\n qServiceImport: 'Q卡汇入',\n simServiceReceive: 'Sim卡收货',\n qServiceItem: 'Q卡项目维护',\n tianqServiceItem: '甜Q卡项目维护',\n qServicePackage: 'Q卡套餐维护',\n tianqServicePackage: '甜Q卡套餐维护',\n simServicePackage: 'Sim卡套餐维护',\n qServiceAgreement: 'Q卡协议书管理',\n tianqServiceAgreement: '甜Q卡协议书管理',\n\n rService: 'R卡管理',\n rServiceNewList: '全门市R卡',\n rServiceCheck: 'R卡盘点',\n rServiceDistribution: 'R卡配货',\n rServiceReceive: 'R卡收货',\n\n mpSet: '机型&价格设定',\n mpSetPrice: '新机价格设定',\n mpSetModelRam: '机型内存设定',\n mpSetModel: '机型设定',\n mpSetSecondHandUpc: '二手UPC设定',\n mpSetUpc: 'UPC设定',\n mpSetSecondHandPrice: '二手机出售价格',\n mpSetSecondHandHuiShouPrice: '二手机回收价格',\n\n configuration: '杂项设定',\n configurationGuarantee: '保修时长设定',\n configurationCommodityDiscount: '全门市折扣',\n configurationCommodityDiscountReason: '折扣原因',\n configurationSubscribe: '预约开关设定',\n configurationPrintTemplate: '打印模版设定',\n configurationExcelTemplate: 'excel模版设定',\n jipinManage: '极品人员管理',\n yanzhengmaManage: '認證碼管理',\n configurationBackConfig: '后台配置项',\n configurationPayWay: '付款方式设定',\n configurationStagesWay: '分期方式设定',\n configurationRepairState: '维修状态设定',\n configurationNotice: '首页通知设定',\n configurationBookingNotice: '新机預約通知',\n configurationBookingVipNotice: '新机預約Vip通知',\n configurationRetailSales: '门市设定',\n ConfigurationWeight: '门市权重',\n configurationSupplier: '供货商设定',\n configurationRegularCustomer: '常客设定',\n configurationWeight: '门市权重',\n configurationCheckTimeout: '盘点超时时间',\n configurationPoster: '底单&助填维护',\n configurationQserviceItem: 'Q卡项目维护',\n configurationQservicePackage: 'Q卡套餐维护',\n configurationPhoneModel: '机型类型设定',\n mpSetSecondHandConfig: '二手机页面配置',\n secondHandConfigAppointment: 'Q小二回收管理',\n purchaseCheck: '配件进货盘点',\n purchaseCheckGoodsImport: '商品库列表',\n purchaseCheckGoodsCheck: '門市庫存盤點',\n purchaseCheckGoodsCheckHistory: '歷史盤點記錄',\n purchaseCheckDeliveryCheck: '仓库发货盘点',\n purchaseCheckReceiveCheck: '仓库进货盘点',\n purchaseCheckReceiveRegister: '拣货登记',\n purchaseCheckPackingRegister: '包货登记',\n purchaseCheckEfficiencyStatistics: '拣货包货效率统计',\n\n procurementManage: '採購管理',\n procurementManageApplyGoods: '叫貨',\n procurementManageApplyGoodsCostCoefficient: '叫貨成本係數',\n\n newSale: '新机销售管理',\n newSaleNewList: '全门市新机列表',\n newSaleOutbound: '批量出库',\n newSaleNewSale: '扫码卖机',\n newSaleNewSchedule: '新机預約',\n newSaleNewCheck: '新机盘点',\n newSaleAbnormal: '盘点异常',\n newSaleStartTransfer: '发起调货',\n newSaleTransferExamine: '调货流程',\n newSaleTransferAbnormal: '调货异常',\n newSaleNewPhoneTransferAbnormal: '新机預約异常',\n newSaleReserveSet: '门市安全储量设定',\n newSaleScheduleRegister: '客订列表',\n\n secondHand: '二手销售管理',\n secondHandNewList: '全门市二手机列表',\n secondHandNewCheck: '二手盘点',\n secondHandToReviewNewCheck: '二手未審核盘点',\n secondHandAbnormal: '盘点异常',\n secondHandStartTransfer: '发起调货',\n secondHandTransferExamine: '调货流程',\n secondHandTransferAbnormal: '调货异常',\n secondHandReserveSet: '门市安全储量设定',\n secondHandSchedule: '客订列表',\n\n salesBilling: '销售开单管理',\n salesBillingSiteRepair: '现场维修',\n salesBillingStay: '留机',\n salesBillingRecieving: '收机',\n salesBillingNewSale: '新机卖机',\n salesBillingSecondHandSale: '二手卖机',\n salesBillingEnvelope: '包膜',\n salesBillingSaleBills: '通用卖机单',\n salesBillingScheduleBills: '通用預約单',\n salesBillingRefund: '退款登记',\n salesBillingSim: 'sim卡',\n salesBillingOldBilling: '开单旧数据',\n\n maintenance: '维修部管理',\n maintenanceReceiveSending: '维修收寄',\n maintenanceGuestBusiness: '客人业务',\n maintenanceToOriginal: '代送原厂',\n stayPhoneEfficiencyStatistics: '留机效率统计',\n maintenanceStoreBusiness: '店内业务',\n maintenanceScrapApproval: '报废审批',\n\n sparePart: '备件管理',\n sparePartList: '备件列表',\n sparePartCheck: '备件盘点',\n sparePartAbnormal: '异常汇总',\n modelSearch: '手机验机查询(收费)',\n\n mobile: '移动端',\n signPage: '资料建档',\n print: '打印',\n printMobile: '打印',\n },\n // 移动端\n mobile: {\n signTile: '客户签名',\n signTips: '注意事项',\n signTips1: '本公司个品牌新机来源皆为原厂及代理商台湾公司货,请安心购买。',\n signTips2: '为苹果原厂授权经销商,保固依原厂为主。',\n signTips3: 'Apple系列为于现场拆封者,新品不良仅能以原厂规范更换良品,无法更换到全新品。',\n signTips4: '此凭证为原厂保固依据,请妥善保存,遗失恕不补发。',\n signTips5: '本公司保险相关服务有神扬保代代理、和泰产物保险公司提供。',\n signTips6: '本公司仅代为销售,投保及保险理赔相关规范,应依照该商品承保规定为准。',\n signTips7: '注意事项请详读,同意无异议请在此签名',\n },\n // 导航\n navbar: {\n logOut: '退出登录',\n dashboard: '首页',\n refresh: '自动刷新',\n goPre: '返回旧版',\n fiveM: '5分钟',\n thirtyM: '30分钟',\n oneHour: '一小时',\n never: '从不',\n },\n // 登录页\n login: {\n title: '系统登录',\n logIn: '登录',\n username: '账号',\n password: '密码',\n requirePassword: '请输入密码',\n requireUsername: '请输入账号',\n },\n // 组件\n components: {\n changeLanguageTips: '切换语言成功',\n },\n // 401 404\n error: {\n back: '回首页',\n message401_1: '你没有权限访问该页面',\n message401_2: '如有不满请联系你领导',\n message404_1: '这张页面找不到啦',\n message404_2: '请检查您的访问路径是否正确,或联系开发运维人员处理',\n },\n // 通用\n common: {\n title: 'Q哥|汎雲有限公司| Qfanyun inc.',\n search: '查询',\n add: '添加',\n edit: '编辑',\n delete: '删除',\n export: '导出',\n import: '导入',\n changePwd: '修改密码',\n changeInfo: '修改信息',\n changePwdSuc: '修改密码成功,请重新登录',\n loading: '加载中',\n select: '请选择',\n cancel: '取消',\n save: '保存',\n required: '必填',\n success: '成功',\n error: '失败',\n yes: '是',\n no: '否',\n have: '有',\n none: '无',\n submit: '提交',\n detail: '详情',\n download: '所有数据下载',\n tips: '提示',\n rewrite: '重写',\n confirm: '确认',\n tempSave: '暂存',\n empty: '未查询到相关数据',\n chosen: '请先选择要提交的数据',\n adopt: '通过',\n last: '剩余',\n enter: '请输入',\n editSuccessfully: '修改成功',\n sureDelete: '是否确认删除?',\n sureCancel: '是否确定取消?',\n surePass: '是否确认通过?',\n uploadImg: '支持png、jpg格式,不得超过 5MB',\n uploadPdf: '支持txt格式,不得超过 5MB',\n uploadImgFirst: '请先上传图片',\n allRoute: '所有路由',\n sureConfirm: '是否确认操作?',\n },\n // 表格通用\n table: {\n order: '序号',\n operate: '操作',\n },\n // 文件导入\n file: {\n tips: '将文件拖到此处,或点击上传',\n tips1: '请先',\n download: '下载模板',\n tips2: ',根据模板填写后上传。',\n },\n // 账号人事管理\n userManage: {\n account: '账户名称',\n accountStatus: '账户状态',\n normal: '正常',\n stopUsing: '停用',\n startUsing: '启用',\n locking: '锁定',\n unlocking: '解锁',\n locked: '被锁',\n password: '密码',\n phone: '手机号',\n email: '邮箱',\n realName: '真实姓名',\n nickName: '昵称',\n role: '角色',\n roleName: '角色名称',\n roleIntro: '角色简介',\n gmtCreate: '账户建立时间',\n group: '地区分组',\n remark: '备注',\n menuPermission: '菜单权限',\n configName: '配置名称',\n configValue: '配置项值',\n ifOpen: '是否启用',\n sort: '排序',\n accountValidate: '用户至少需要绑定一个角色',\n phoneValidate: '手机号格式不正确',\n pwdLengthValidate: '密码至少8个字符',\n pwdValidate: '密码必须包含大小写字母和数字',\n roleValidate: '角色至少绑定一个权限',\n menuName: '名称',\n perms: '权限值',\n type: '类型',\n interface: '接口',\n interfaceName: '接口名称',\n interfaceHref: '接口路径',\n permissionName: '权限名称',\n sortValidate: '排序必须为数字',\n catalog: '目录',\n menu: '菜单',\n button: '按钮',\n },\n // 机型价格设定\n mpSet: {\n brand: '品牌',\n type: '类型',\n model: '型号',\n color: '颜色',\n attributesName: '配置名称',\n chooseType: '选择机型',\n modelName: '模型名称',\n capacity: '容量',\n nowPrice: '目前价格',\n newPrice: '新价格设定',\n priceChange: '价格变化',\n upc: 'UPC条码',\n IMEI: 'IMEI数量',\n sn_code: 'sn序列号',\n recentUpdate: '最近修改时间',\n noCapacity: '无容量',\n ifOpenSaleNew: '是否开启年度新机销售',\n ifOpenSaleOld: '是否开启年度二手机销售',\n upcRules: '新机UPC格式为12位纯数字',\n percentOne: '1级价格',\n percentTwo: '2级价格',\n percentThree: '3级价格',\n percentFour: '4级价格',\n percentFive: '5级价格',\n percentFivePointFive: '5.5级价格',\n skuName: '商品信息',\n choosePhoneType: '选择品牌',\n chooseModal: '选择型号',\n chooseVersion: '选择版本',\n mainImgUpload: '图片上传',\n },\n // 杂项设定\n configuration: {\n warrantyName: '保固名称',\n warrantyDays: '保固天数',\n note: '备注',\n printNote: '印单备注',\n payName: '付款方式名称',\n stagesName: '分期名称',\n name: '门市名称',\n bcode: '门市编码',\n phone: '联络电话',\n address: '门市地址',\n supplierName: '供货商名称',\n unit: '单位:小时',\n newMobile: '新机盘点时间',\n oldMobile: '二手机盘点时间',\n dismantle: '备件盘点时间',\n orderRepair: '维修盘点时间',\n orderTransfer: '维修记录',\n xcwx: '现场维修',\n rlsj: '容量升级',\n lj: '留机',\n sj: '收机',\n mj: '卖机',\n bm: '包膜',\n esmj: '二手卖机',\n statusName: '状态',\n posterCategory: '广告场景',\n posterContext: '广告内容',\n rate: '费率',\n },\n // 配件进货盘点\n purchaseCheck: {\n onGoing: '进行中',\n completed: '已完成',\n deliveryStore: '发货门市',\n receiveStore: '收货门市',\n createDate: '创建日期',\n orderNo: '单号',\n totalNum: '原始数量',\n toAmountWarehouse: '实发数量',\n toAmountStore: '实收数量',\n remarks: '整单备注',\n corresponding: '是否对应',\n goodsNo: '商品编号',\n goodsName: '商品名称',\n goodsStyle: '样式',\n goodsSize: '尺寸',\n upc: '条码',\n deliveryNum: '实发数量',\n wantNum: '原始数量',\n getNum: '实收数量',\n difference: '差额',\n productCode: '品项条码',\n salePrice: '售价',\n specsRemark: '规格备注',\n recentImportTime: '上次导入时间',\n },\n // 新机销售管理\n newSale: {\n checking: '待盘点',\n checked: '已盘点',\n booked: '已預約',\n canceled: '已取消',\n completed: '已完成',\n bookStatus: '預約状态',\n number: '数量',\n store: '门市',\n newStatistics: '新机统计',\n addPreSale: '预售机添加',\n sale: '卖机',\n reserveStatus: '預約状态',\n message: '預約讯息',\n note: '备注',\n supplier: '供货商',\n salePrice: '售出价',\n createTime: '建立日期',\n inventoryTime: '最后盘点日期',\n status: '状态',\n imei: 'IMEI',\n sn: 'snCode',\n upc: 'UPC',\n upcImei: 'UPC/IMEI扫码',\n price: '进价',\n inventoryUser: '最后盘点人',\n inventoryStatus: '盘点状态',\n scan: '扫码盘点',\n saleDown: '已售出',\n saleIng: '未售出',\n waitExam: '待审核',\n auditPass: '审核通过',\n auditFail: '审核不通过',\n all: '全部',\n startTransfer: '发起调货',\n transferStatus: '调货状态',\n skuInfo: '商品信息',\n examineOperate: '审核',\n deliveryOperate: '扫码发货',\n receiveOperate: '确认收货',\n name: '姓名',\n machineAssign: '机器分配',\n reserveStatistics: '預約统计',\n reserveName: '登记人',\n reserveDate: '登记日期',\n pickUpStore: '取件门市',\n telephone: '电话',\n deposit: '订金',\n balance: '尾款',\n houseNumber: '门号',\n shellMembrane: '壳膜',\n insurance: '保险',\n availableNum: '可售数量',\n reserveNum: '已客订数量',\n startDate: '发起日期',\n startUser: '发起人',\n handleUserGroup: '门市处理人员分组',\n handleUser: '门市处理人员',\n handleDate: '门市处理时间',\n snCode: 'snCode',\n outCanSale: '调出门市可售库存',\n outSafe: '调出门市安全库存',\n inCanSale: '调入门市可售库存',\n inSafe: '调入门市安全库存',\n transferProposal: '调货建议',\n transferApply: '调货申请',\n distribution: '总仓配货',\n editNote: '修改备注',\n allowTransfer: '允许调货',\n cancelTransfer: '取消调货',\n expectedDate: '预计到达日期',\n arriveDate: '到达日期',\n skuName: '机器型号',\n affirmReservePrice: '是否收取訂金',\n serviceCommission: '客服记奖',\n distributed: '已分配',\n distributing: '未分配',\n cancelReserve: '取消預約',\n overSoldNum: '超卖客订数量',\n frozenNum: '冻结数量',\n frozenTime: '冻结时间',\n addTime: '加时',\n sureAddTime: '是否确认加时?',\n unFrozen: '解冻',\n transferNum: '调货数量',\n total: '总量',\n overSold: '是否超卖',\n overSolded: '超卖',\n toOverSolded: '转超卖',\n noOverSolded: '非超卖',\n oversoldtolock: '转非超卖',\n transferNo: '调货单号',\n auditTime: '审核时间',\n auditName: '审核人',\n transferNum1: '计划发货数量',\n realTransferNum: '实际发货数量',\n receiveNum: '收货数量',\n receiveTime: '收货时间',\n receiveName: '收货人',\n originalNum: '原始数量',\n realityNum: '实际数量',\n canNotExceed: '不可超过',\n reDraw: '重画',\n notZero: '售价不得为0',\n },\n // 二手销售管理\n secondHand: {\n basicInformation: '基本信息',\n transferConfirmation: '调货确认',\n sendConfirmation: '发出确认',\n cancel: '作废',\n done: '完成',\n randomNum: '随机码',\n secondHandStatistics: '二手机统计',\n minReserves: '最低储量',\n nowReserves: '目前储量',\n transferUser: '调货发起人',\n transferDate: '调货日期',\n transferOut: '调出门市',\n transferIn: '调入门市',\n machineType: '机型',\n spotGoods: '现货',\n reserved: '已客订',\n saled: '已售卖',\n waitTransfer: '等待调拨发货',\n onOrder: '在途',\n frozen: '冻结',\n choosePrint: '选择打印机',\n labelPrinting: '标签打印',\n printing: '打印',\n dateTime: '时间',\n abnormalCondition: '异常状况',\n payWay: '付款方式',\n fixGroup: '维修地区分组',\n fixUser: '维修人员',\n QNo: 'Q卡卡号',\n recommendNo: '推荐卡卡号',\n imgUpload: '图片上传',\n fileUpload: '上传',\n imeiNo: 'IMEI/序号',\n oldNewDegree: '新旧程度',\n haveBoxed: '有无盒装',\n haveParts: '是否有配件',\n batteryDegree: '电池健康度',\n skuDesc: '商品描述',\n customerOrder: '客订',\n customerTel: '客订用户联系方式',\n customerName: '客订用户名字',\n backDesc: '背面描述',\n backUrl: '背面图片',\n frontDesc: '正面描述',\n frontUrl: '正面图片',\n isShellBend: '壳弯曲',\n isShellDamaged: '壳伤',\n isShellWater: '泡水清渍',\n isTellInfo: '已告知资料损失及关闭[寻找我的iPhone]',\n conditionLevel: '成色等级',\n levelOne: '一星',\n levelTwo: '二星',\n levelThree: '三星',\n levelFour: '四星',\n levelFive: '五星',\n levelFivePonitFive: '五点五星',\n },\n // 销售开单管理\n salesBilling: {\n selected: '已选择',\n partsList: '备件列表',\n customerSurname: '顾客姓氏',\n byDate: '起止日期',\n startDate: '开始时间',\n endDate: '结束时间',\n sign: '签名',\n noSign: '未签名',\n signed: '已签名',\n partsNum: '零组件及数量',\n price: '价格',\n repairStatus: '维修备注',\n repairStat: '维修主状态',\n repairSubStatus: '维修子状态',\n abnormal: '异常',\n deliveryStatus: '交机情况',\n delivering: '未交机',\n delivered: '已交机',\n orderTakingGroup: '接单人组',\n orderTakingUser: '接单人',\n openStatus: '开关状态',\n open: '开',\n close: '关',\n processing: '处理中',\n processed: '已处理',\n toBeTested: '待检测',\n quotedPrice: '已报价待决定',\n waitingMaterial: '缺料等料中',\n repairing: '主机板外寄维修中',\n toBeTaken: '客人放弃维修待取',\n fixDate: '维修时间',\n replaceBoardNo: '更换主板号',\n repairPrice: '维修报价',\n storeContactTime: '门市联络时间',\n deliveryDate: '交机时间',\n repairRemark: '维修用备注',\n testReport: '验机报告',\n recievingGroup: '收机地区分组',\n recievingUser: '收机人',\n new: '全新',\n secondHand: '二手',\n disposal: '处理方式',\n arrange: '整理贩售',\n spare: '回维修部备用',\n headquarters: '送总部维修时间',\n backDepartment: '回维修部时间',\n secondLevelGroup: '二级确认地区分组',\n secondLevelUser: '二级确认人员',\n boxPacked: '盒装',\n numberFit: '序号和机身是否相同',\n unLocked: '解锁',\n machineStatus: '机况',\n billNo: '发票号码',\n buyInsurance: '购买保险',\n noInsurance: '不购买',\n insure: '手机投保',\n oneYear: '一年期',\n secondYear: '二年期',\n ac: 'AC+',\n insureLevel: '保费等级',\n handlingGroup: '经办组',\n handlingUser: '经办人',\n scheduleDate: '预约购买日期',\n scheduleOrderNo: '预约订单号',\n registerGroup: '登记组',\n registerUser: '登记人',\n formDate: '填单日期',\n male: '先生',\n female: '小姐',\n amount: '金额',\n operateGroup: '操作组',\n operateUser: '操作人',\n payee: '领款人',\n idCard: '身份证号码',\n permanentAdd: '户籍地址',\n category: '数据类别',\n nextStep: '下一步',\n prevStep: '上一步',\n diagnosticItems: '诊断项目',\n good: '良好',\n screenDisplayTouch: '屏幕显示触控',\n LCDcoating: '荧屏镀膜',\n LOGOlamp: 'LOGO灯',\n camera: '摄像头',\n mic: '麦克风',\n keyboard: '键盘',\n keybacklight: '按键背光',\n clickpanel: '触控板',\n chargingjack: '充电孔',\n USBport: 'USB孔',\n headphonejack: '耳机孔',\n otherjacks: '其他孔位',\n wifibt: 'WIFI/蓝牙',\n speaker: '喇叭',\n vibrator: '振动器',\n battery: '电池',\n volumeKeys: '音量键',\n frontLensModule: '前镜头模组',\n wifiBluetooth: 'WIFI/蓝牙',\n backShot: '后镜头',\n geolocation: '定位功能',\n tailRowModule: '尾排模组',\n rearLensGlassCover: '后镜头玻璃盖',\n bootModule: '开机模组',\n gyroSensor: '陀螺仪感应器',\n homeKey: 'HOME键',\n mainboardCapacity: '主机板容量',\n receiver: '听筒',\n mainboardLeakage: '主机板漏电',\n horn: '喇叭',\n signal: '讯号',\n appearance: '确认外观有无瑕疵',\n back: '背面',\n front: '正面',\n onNew: '一键上新机',\n onSecondHand: '一键上二手机',\n toRepair: '发维修部',\n birthday: '出生日期',\n customer: '客户姓名',\n customerAddress: '联络地址',\n customerEmail: 'Email',\n gender: '性别',\n phone: '客户电话',\n sparePart: '备件',\n logisticsStatus: '物流状态',\n printRemark: '印单备注',\n storeRemark: '门市备注',\n priceTake: '接机价格',\n priceFinal: '最终价格',\n firstConnectName: '第一次联络人',\n firstConnectTime: '第一次联络时间',\n secondConnectName: '第二次联络人',\n secondConnectTime: '第二次联络时间',\n thirdConnectName: '第三次联络人',\n thirdConnectTime: '第三次联络时间',\n expectBranches: '期待门市',\n deliverPrimary: '是否送原厂',\n consumeMaterial: '无条码零件',\n consumeMaterialPrice: '零件价格',\n maintenanceContent: '维修部填写内容',\n },\n // 维修部管理\n maintenance: {\n toBeDelivered: '待发货',\n delivered: '已发货',\n toBeReceived: '待收货',\n received: '已收货',\n businessType: '业务类型',\n orderNo: '单号',\n oppositeStore: '对方门市',\n model: '机型',\n snCode: 'snCode',\n pickUpProblem: '接机问题',\n lastProcessingTime: '最后处理时间',\n sendTime: '发出时间',\n signingTime: '签收时间',\n passedTime: '已过时间',\n handler: '处理人',\n remark: '备注',\n currentState: '当前状态',\n totalDuration: '总历时',\n time: '时间',\n create: '建立',\n handleStore: '处理门市',\n handleRecord: '处理记录',\n sendOut: '发货',\n confirmReceive: '收货',\n scanSend: '扫码发货',\n scanReceive: '扫码收货',\n recall: '撤回',\n todo: '待处理',\n handled: '已处理',\n abnormal: '异常',\n handle: '处理',\n handleWay: '处理方式',\n hasPaid: '是否支付',\n paidPrice: '支付金额',\n orderDismantleTypeList: '拆出的备件',\n },\n // 备件管理\n sparePart: {\n mainboard: '主板',\n screen: '屏幕',\n cameraLens: '镜头',\n other: '其它',\n noUse: '未使用',\n used: '已使用',\n dismantleCode: '备件编码',\n lastCheckTime: '最后盘点时间',\n lastCheckPerson: '最后盘点人',\n checkStatus: '盘点状态',\n check: '盘点',\n },\n};\n\nexport default zh;\n","const zhTw = {\n // 菜单\n route: {\n dashboard: '首頁',\n goodsPriceLabelPrint: '貨品價格標籤列印',\n goodsReceipted: '倉庫貨物簽收',\n\n root001: '門市開單系統',\n root002: 'ERP庫存系統',\n userManage: '賬號人事管理',\n operatingDataSearch: '運營資料查詢',\n statisticalReport: '統計報表',\n newPhoneInventoryRecord: '新機庫存記錄',\n newPhoneStatisticalReport: '新機統計報表',\n profitStatisticalReport: '利潤統計報表',\n secondPhoneStatisticalReport: '二手機統計報表',\n userManageAccount: '帳戶管理',\n userManageAuthority: '權限分組管理',\n userManagePersonnel: '地區分組設定',\n userManageMaintenance: '維修分組設定',\n userManageLoginLog: '登錄日誌',\n userManageMenu: '菜單管理',\n userManageAccess: '權限管理',\n userManageCustom: '自定義配置',\n qService: 'Q卡管理',\n tianqService: '甜Q卡管理',\n threeqService: '3Q卡管理',\n simService: 'Sim卡管理',\n qServiceNewList: '全門市Q卡',\n tianqServiceNewList: '全門市甜Q卡',\n threeqServiceNewList: '全門市3Q卡',\n qServiceCheck: 'Q卡盤點',\n tianqServiceCheck: '甜Q卡盤點',\n threeqServiceCheck: '3Q卡盤點',\n simServiceCheck: 'Sim卡盤點',\n qServiceDistribution: 'Q卡配貨',\n tianqServiceDistribution: '甜Q卡配貨',\n threeqServiceDistribution: '3Q卡配貨',\n simServiceDistribution: 'Sim卡配貨',\n simServiceNewList: '全門市Sim卡',\n outBranchBookingAccount: '賬號配置',\n outBranchBookingSecondHandList: 'Q哥門市二手機',\n qServiceReceive: 'Q卡收貨',\n tianqServiceReceive: '甜Q卡收貨',\n threeqServiceReceive: '3Q卡收貨',\n tianqServiceImport: '甜Q卡匯入',\n threeqServiceImport: '3Q卡匯入',\n qServiceImport: 'Q卡匯入',\n simServiceReceive: 'Sim卡收貨',\n qServiceItem: 'Q卡項目維護',\n tianqServiceItem: '甜Q卡項目維護',\n qServicePackage: 'Q卡套餐維護',\n tianqServicePackage: '甜Q卡套餐維護',\n simServicePackage: 'Sim卡套餐維護',\n qServiceAgreement: 'Q卡協議書管理',\n tianqServiceAgreement: '甜Q卡協議書管理',\n\n rService: 'R卡管理',\n rServiceNewList: '全門市R卡',\n rServiceCheck: 'R卡盤點',\n rServiceDistribution: 'R卡配貨',\n rServiceReceive: 'R卡收貨',\n\n mpSet: '機型&價格設定',\n mpSetPrice: '新機價格設定',\n mpSetModelRam: '機型容量設定',\n mpSetModel: '機型設定',\n mpSetSecondHandUpc: '二手UPC設定',\n mpSetUpc: 'UPC設定',\n mpSetSecondHandConfig: '二手機頁面配置',\n mpSetSecondHandPrice: '二手機出售價格',\n mpSetSecondHandHuiShouPrice: '二手機回收價格',\n\n secondHandConfigAppointment: 'Q小二回收管理',\n configuration: '雜項設定',\n outBranchBooking: '外部門市代售',\n configurationGuarantee: '保固時長設定',\n configurationCommodityDiscount: '全門市折扣',\n configurationCommodityDiscountReason: '折扣原因',\n configurationSubscribe: '預約開關設定',\n configurationPrintTemplate: '列印模版設定',\n configurationExcelTemplate: 'excel模版設定',\n jipinManage: '極品人員管理',\n yanzhengmaManage: '認證碼管理',\n configurationBackConfig: '後台配置項',\n configurationPayWay: '付款方式設定',\n configurationStagesWay: '分期方式設定',\n configurationRepairState: '維修狀態設定',\n configurationNotice: '首頁通知設定',\n configurationBookingNotice: '新機預約通知',\n configurationBookingVipNotice: '新機預約Vip通知',\n configurationRetailSales: '門市設定',\n configurationWeight: '門市權重',\n configurationSupplier: '供貨商設定',\n configurationRegularCustomer: '常客設定',\n configurationCheckTimeout: '盤點超時時間',\n configurationPoster: '底單&助填維護',\n configurationQserviceItem: 'Q卡項目維護',\n configurationQservicePackage: 'Q卡套餐維護',\n configurationPhoneModel: '機型類型設定',\n\n purchaseCheck: '庫存管理',\n purchaseCheckGoodsImport: '商品列表',\n purchaseCheckGoodsCheck: '門市庫存盤點',\n purchaseCheckGoodsCheckHistory: '歷史盤點記錄',\n purchaseCheckGoodsDeliver: '調貨列表',\n purchaseCheckGoodsPlace: '商品產地',\n purchaseCheckInventoryChangesSearch: '庫存變動查詢',\n purchaseCheckMallbicList: 'mallbic倉庫列表',\n purchaseCheckMallbicListSetting: '門市對應設定',\n purchaseCheckDeliveryCheck: '倉庫發貨盤點',\n purchaseCheckReceiveCheck: '門市進貨盤點',\n purchaseCheckReceiveRegister: '揀貨登記',\n purchaseCheckPackingRegister: '包貨登記',\n purchaseCheckEfficiencyStatistics: '揀貨包貨效率統計',\n\n procurementManage: '採購管理',\n procurementManageApplyGoods: '叫貨',\n memberManage: '會員管理',\n memberManageList: '會員列表',\n shopManageCardList: '卡券管理',\n logisticsUserManageAccount: '物流業者管理',\n\n procurementManageApplyGoodsCostCoefficient: '叫貨成本係數',\n procurementManageSalePriceCoefficient: '銷售價格係數',\n shopManage: '店鋪管理',\n\n newSale: '新機銷售管理',\n newSaleNewList: '全門市新機列表',\n newSaleOutbound: '批量出庫',\n newSaleNewSale: '掃碼賣機',\n newSaleNewSchedule: '新機預約',\n newSaleNewCheck: '新機盤點',\n newSaleAbnormal: '異常機器匯總',\n newSaleStartTransfer: '發起調貨',\n newSaleTransferExamine: '調貨流程',\n newSaleTransferAbnormal: '調貨異常',\n newSaleNewPhoneTransferAbnormal: '新机預約異常',\n newSaleReserveSet: '門市安全儲量設定',\n newSaleScheduleRegister: '客訂列表',\n\n secondHand: '二手銷售管理',\n secondHandNewList: '全門市二手機列表',\n secondHandNewCheck: '二手盤點',\n secondHandToReviewNewCheck: '二手未審核盤點',\n secondHandAbnormal: '盤點異常',\n secondHandStartTransfer: '發起調貨',\n secondHandTransferExamine: '調貨流程',\n secondHandTransferAbnormal: '調貨異常',\n secondHandReserveSet: '門市安全儲量設定',\n secondHandSchedule: '客訂列表',\n\n salesBilling: '銷售開單管理',\n salesBillingSiteRepair: '現場維修',\n salesBillingStay: '留機',\n salesBillingRecieving: '收機',\n salesBillingNewSale: '新機賣機',\n salesBillingSecondHandSale: '二手賣機',\n salesBillingEnvelope: '包膜',\n salesBillingSaleBills: '通用賣機單',\n salesBillingScheduleBills: '通用預約單',\n salesBillingRefund: '退款登記',\n salesBillingSim: 'sim卡',\n salesBillingOldBilling: '開單舊數據',\n\n maintenance: '維修部管理',\n maintenanceReceiveSending: '維修收寄',\n maintenanceGuestBusiness: '客人業務',\n maintenanceToOriginal: '代送原廠',\n stayPhoneEfficiencyStatistics: '留機效率統計',\n maintenanceStoreBusiness: '店內業務',\n maintenanceScrapApproval: '報廢審批',\n\n sparePart: '備件管理',\n sparePartList: '備件列表',\n sparePartCheck: '備件盤點',\n sparePartAbnormal: '異常匯總',\n modelSearch: '手機驗機查詢(收費)',\n\n mobile: '行動端',\n signPage: '資料建檔',\n print: '列印',\n printMobile: '列印',\n },\n // 行動端\n mobile: {\n signTile: '客人簽名',\n signTips: '注意事項',\n signTips1: '本公司各品牌新機來源皆為原廠及代理商台灣公司貨,請安心購買。',\n signTips2: '本公司為蘋果原廠授權經銷商,保固依原廠為主。',\n signTips3: 'Apple系列為與現場拆封者,新品不良僅能以原廠規範更換良品,無法更換到全新品。',\n signTips4: '此憑證為原廠保固依據,請妥善保存,遺失恕不補發。',\n signTips5: '本公司保險相關服務由神揚保代代理、和泰產物保險公司提供。',\n signTips6: '本公司僅代為銷售,投保及保險理賠相關規範,應依照該商品承保規定爲準。',\n signTips7: '注意事項請詳讀,同意無異議請在此簽名',\n },\n // 导航\n navbar: {\n logOut: '退出登录',\n dashboard: '首頁',\n refresh: '自動刷新',\n goPre: '返回舊版',\n fiveM: '5分鐘',\n thirtyM: '30分鐘',\n oneHour: '一小時',\n never: '從不',\n },\n // 登录页\n login: {\n title: '系統登錄',\n logIn: '登錄',\n username: '賬號',\n password: '密碼',\n requirePassword: '請輸入密碼',\n requireUsername: '請輸入賬號',\n },\n // 组件\n components: {\n changeLanguageTips: '切換語言成功',\n },\n // 401 404\n error: {\n back: '回首頁',\n message401_1: '你沒有權限訪問該頁面',\n message401_2: '如有不滿請聯絡你的上級',\n message404_1: '這張頁面找不到啦',\n message404_2: '請檢查您的訪問路徑是否正確,或聯繫開發運維人員處理',\n },\n // 一般\n common: {\n title: 'Q哥|汎雲有限公司| Qfanyun inc.',\n search: '查詢',\n add: '添加',\n edit: '編輯',\n delete: '刪除',\n export: '匯出',\n import: '匯入',\n changePwd: '修改密碼',\n changeInfo: '修改信息',\n changePwdSuc: '修改密碼成功,請重新登錄',\n loading: '加載中',\n select: '請選擇',\n cancel: '取消',\n save: '保存',\n required: '必填',\n success: '成功',\n error: '失敗',\n yes: '是',\n no: '否',\n have: '有',\n none: '無',\n submit: '提交',\n detail: '詳情',\n download: '下載',\n tips: '提示',\n rewrite: '重寫',\n confirm: '確認',\n tempSave: '暫存',\n empty: '未查詢到相關資料',\n chosen: '請先選擇要提交的資料',\n adopt: '通過',\n last: '剩餘',\n enter: '請輸入',\n editSuccessfully: '修改成功',\n sureDelete: '是否確認刪除?',\n sureCancel: '是否確認取消?',\n surePass: '是否確認通過?',\n uploadImg: '圖片大小不得超過 5MB',\n uploadPdf: '支援txt格式,不得超過 5MB',\n uploadImgFirst: '請先上傳圖片',\n allRoute: '所有路由',\n sureConfirm: '是否確認操作?',\n },\n // 表格通用\n table: {\n order: '序號',\n operate: '操作',\n },\n // 文件导入\n file: {\n tips: '將文件拖到此處,或點擊上傳',\n tips1: '請先',\n download: '下載模板',\n tips2: ',根據模板填寫後上傳。',\n },\n // 账号人事管理\n userManage: {\n account: '賬戶名稱',\n accountStatus: '帳戶狀體',\n normal: '正常',\n stopUsing: '停用',\n startUsing: '啟用',\n locking: '鎖定',\n unlocking: '解鎖',\n locked: '鎖定',\n password: '密碼',\n phone: '手機號',\n email: '郵箱',\n realName: '真實姓名',\n nickName: '暱稱',\n role: '角色',\n roleName: '角色名稱',\n roleIntro: '角色簡介',\n gmtCreate: '賬戶開立時間',\n group: '地區分組',\n remark: '備註',\n menuPermission: '菜單權限',\n configName: '配置名稱',\n configValue: '配置項值',\n ifOpen: '是否啟用',\n sort: '排序',\n accountValidate: '用戶至少需要綁定一個角色',\n phoneValidate: '手機號格式不正確',\n pwdLengthValidate: '密碼至少8個字符',\n pwdValidate: '密碼必須包含大小寫字母和數字',\n roleValidate: '角色至少綁定一個權限',\n menuName: '名稱',\n perms: '權限值',\n type: '類型',\n interface: '接口',\n interfaceName: '接口名稱',\n interfaceHref: '接口路徑',\n permissionName: '權限名稱',\n sortValidate: '排序必須為數字',\n catalog: '目錄',\n menu: '菜單',\n button: '按鈕',\n },\n // 机型价格设定\n mpSet: {\n brand: '品牌',\n type: '類型',\n model: '型號',\n color: '顏色',\n attributesName: '配置名稱',\n chooseType: '選擇機型',\n modelName: '模型名稱',\n capacity: '容量',\n nowPrice: '目前價格',\n newPrice: '新價格設定',\n priceChange: '價格變化',\n upc: 'UPC條碼',\n IMEI: 'IMEI數量',\n recentUpdate: '最近修改時間',\n noCapacity: '無容量',\n ifOpenSaleNew: '是否開啟年度新機銷售',\n ifOpenSaleOld: '是否開啟年度二手機銷售',\n upcRules: '新機UPC格式為12位純數字',\n percentOne: '1级价格',\n percentTwo: '2级价格',\n percentThree: '3级价格',\n percentFour: '4级价格',\n percentFive: '5级价格',\n percentFivePointFive: '5.5级价格',\n skuName: '品牌/类型/型号/颜色/容量',\n choosePhoneType: '選擇品牌',\n chooseModal: '選擇型號',\n chooseVersion: '選擇版本',\n mainImgUpload: '圖片上傳',\n },\n // 杂项设定\n configuration: {\n warrantyName: '保固名稱',\n warrantyDays: '保固天數',\n note: '備註',\n printNote: '印單備註',\n payName: '付款方式名稱',\n stagesName: '分期名稱',\n name: '門市名稱',\n bcode: '門市編碼',\n phone: '聯絡電話',\n address: '門市地址',\n supplierName: '供貨商名稱',\n unit: '單位:小時',\n newMobile: '新機盤點時間',\n oldMobile: '二手機盤點時間',\n dismantle: '備件盤點時間',\n orderRepair: '維修盤點時間',\n orderTransfer: '維修記錄',\n xcwx: '現場維修',\n rlsj: '容量升級',\n lj: '留機',\n sj: '收機',\n mj: '賣機',\n bm: '包膜',\n esmj: '二手賣機',\n statusName: '狀態',\n posterCategory: '廣告場景',\n posterContext: '廣告內容',\n rate: '費率',\n },\n // 配件进货盘点\n purchaseCheck: {\n onGoing: '進行中',\n completed: '已完成',\n deliveryStore: '發貨門市',\n receiveStore: '收貨門市',\n createDate: '創建日期',\n orderNo: '單號',\n totalNum: '原始數量',\n toAmountWarehouse: '實發數量',\n toAmountStore: '實收數量',\n remarks: '整單備註',\n corresponding: '是否對應',\n goodsNo: '商品編號',\n goodsName: '商品名稱',\n goodsStyle: '樣式',\n goodsSize: '尺寸',\n upc: '條碼',\n deliveryNum: '實發數量',\n wantNum: '原始數量',\n getNum: '實收數量',\n difference: '差額',\n productCode: '品項條碼',\n salePrice: '售價',\n specsRemark: '規格備註',\n recentImportTime: '上次匯入時間',\n },\n // 新机销售管理\n newSale: {\n checking: '待盤點',\n checked: '已盤點',\n booked: '已預約',\n canceled: '已取消',\n completed: '已完成',\n bookStatus: '預約狀態',\n number: '數量',\n store: '門市',\n newStatistics: '新機統計',\n addPreSale: '預售機添加',\n sale: '賣機',\n reserveStatus: '預約狀態',\n message: '預約訊息',\n note: '備註',\n supplier: '供貨商',\n salePrice: '售出價',\n createTime: '建立日期',\n inventoryTime: '最後盤點日期',\n status: '狀態',\n imei: 'IMEI',\n sn: 'SN序號',\n upc: 'UPC',\n upcImei: 'UPC/SN掃碼',\n price: '進價',\n inventoryUser: '最後盤點人',\n inventoryStatus: '盤點狀態',\n scan: '掃碼盤點',\n saleDown: '已售出',\n saleIng: '未售出',\n waitExam: '待審核',\n auditPass: '審核通過',\n auditFail: '審核不通過',\n all: '全部',\n startTransfer: '發起調貨',\n transferStatus: '調貨狀態',\n skuInfo: '商品訊息',\n examineOperate: '審核',\n deliveryOperate: '發貨',\n receiveOperate: '收貨',\n name: '姓名',\n machineAssign: '機器分配',\n reserveStatistics: '預約統計',\n reserveName: '登記人',\n reserveDate: '登記日期',\n pickUpStore: '取件門市',\n telephone: '電話',\n deposit: '訂金',\n balance: '尾款',\n houseNumber: '門號',\n shellMembrane: '殼膜',\n insurance: '保險',\n availableNum: '可售數量',\n reserveNum: '已客訂數量',\n startDate: '發起日期',\n startUser: '發起人',\n handleUserGroup: '門市處理人員分組',\n handleUser: '門市處理人員',\n handleDate: '門市處理時間',\n snCode: 'SN序號',\n outCanSale: '調出門市可售庫存',\n outSafe: '調出門市安全庫存',\n inCanSale: '調入門市可售庫存',\n inSafe: '調入門市安全庫存',\n transferProposal: '調貨建議',\n transferApply: '調貨申請',\n distribution: '總倉配貨',\n editNote: '修改備註',\n allowTransfer: '允許調貨',\n cancelTransfer: '取消調貨',\n expectedDate: '預計到達日期',\n arriveDate: '到達日期',\n skuName: '機器型號',\n affirmReservePrice: '是否收取定金',\n serviceCommission: '客服记奖',\n distributed: '已分配',\n distributing: '未分配',\n cancelReserve: '取消預約',\n overSoldNum: '超賣客訂數量',\n frozenNum: '凍結數量',\n frozenTime: '凍結時間',\n addTime: '加時',\n sureAddTime: '是否確認加時?',\n unFrozen: '解凍',\n transferNum: '調貨數量',\n total: '總量',\n overSold: '是否超賣',\n overSolded: '超卖',\n toOverSolded: '轉超卖',\n noOverSolded: '非超卖',\n oversoldtolock: '轉非超賣',\n transferNo: '調貨單號',\n auditTime: '審核時間',\n auditName: '審核人',\n transferNum1: '計劃發貨數量',\n realTransferNum: '實際發貨數量',\n receiveNum: '收貨數量',\n receiveTime: '收貨時間',\n receiveName: '收貨人',\n originalNum: '原始數量',\n realityNum: '實際數量',\n canNotExceed: '不可超過',\n reDraw: '重畫',\n notZero: '售價不得為0',\n },\n // 二手销售管理\n secondHand: {\n basicInformation: '基本信息',\n transferConfirmation: '調貨確認',\n sendConfirmation: '發出確認',\n cancel: '作廢',\n done: '完成',\n randomNum: '隨機碼',\n secondHandStatistics: '二手機統計',\n minReserves: '最低儲量',\n nowReserves: '目前儲量',\n transferUser: '調貨發起人',\n transferDate: '調貨日期',\n transferOut: '調出門市',\n transferIn: '調入門市',\n machineType: '機型',\n spotGoods: '現貨',\n reserved: '已客訂',\n saled: '已售賣',\n waitTransfer: '等待調撥發貨',\n onOrder: '在途',\n frozen: '凍結',\n choosePrint: '選擇印表機',\n labelPrinting: '標籤列印',\n printing: '列印',\n dateTime: '時間',\n abnormalCondition: '異常狀況',\n payWay: '付款方式',\n fixGroup: '維修地區分組',\n fixUser: '維修人員',\n QNo: 'Q卡卡號',\n recommendNo: '推薦卡卡號',\n imgUpload: '圖片上傳',\n fileUpload: '上傳',\n imeiNo: 'IMEI/序號',\n oldNewDegree: '新舊程度',\n haveBoxed: '有無盒裝',\n haveParts: '是否有配件',\n batteryDegree: '電池健康度',\n skuDesc: '商品描述',\n customerOrder: '客訂',\n customerTel: '客訂用戶聯繫方式',\n customerName: '客訂用戶名字',\n backDesc: '背面描述',\n backUrl: '背面圖片',\n frontDesc: '正面描述',\n frontUrl: '正面圖片',\n isShellBend: '殼彎曲',\n isShellDamaged: '殼傷',\n isShellWater: '泡水清漬',\n isTellInfo: '已告知資料損失及關閉[尋找我的iPhone]',\n conditionLevel: '成色等級',\n levelOne: '一星',\n levelTwo: '二星',\n levelThree: '三星',\n levelFour: '四星',\n levelFive: '五星',\n levelFivePonitFive: '五点五星',\n },\n // 销售开单管理\n salesBilling: {\n selected: '已選擇',\n partsList: '備件列表',\n customerSurname: '顧客姓氏',\n byDate: '起止日期',\n startDate: '開始時間',\n endDate: '結束時間',\n sign: '簽名',\n noSign: '未簽名',\n signed: '已簽名',\n partsNum: '零組件及數量',\n price: '價格',\n repairStatus: '維修備註',\n repairStat: '維修主狀態',\n repairSubStatus: '維修子狀態',\n abnormal: '異常',\n deliveryStatus: '交機情況',\n delivering: '未交機',\n delivered: '已交機',\n orderTakingGroup: '接單人組',\n orderTakingUser: '接單人',\n openStatus: '開關狀態',\n open: '開',\n close: '關',\n processing: '處理中',\n processed: '已處理',\n toBeTested: '待檢測',\n quotedPrice: '已報價待決定',\n waitingMaterial: '缺料等料中',\n repairing: '主機板外寄維修中',\n toBeTaken: '客人放棄維修待取',\n fixDate: '維修時間',\n replaceBoardNo: '更換主板號',\n repairPrice: '維修報價',\n storeContactTime: '門市聯絡時間',\n deliveryDate: '交機時間',\n repairRemark: '維修用備註',\n testReport: '驗機報告',\n recievingGroup: '收機地區分組',\n recievingUser: '收機人',\n new: '全新',\n secondHand: '二手',\n disposal: '處理方式',\n arrange: '整理販售',\n spare: '回維修部備用',\n headquarters: '送總部維修時間',\n backDepartment: '回維修部時間',\n secondLevelGroup: '二級確認地區分組',\n secondLevelUser: '二級確認人員',\n boxPacked: '盒裝',\n numberFit: '序號和機身是否相同',\n unLocked: '解鎖',\n machineStatus: '機況',\n billNo: '發票號碼',\n buyInsurance: '購買保險',\n noInsurance: '不購買',\n insure: '手機投保',\n oneYear: '一年期',\n secondYear: '二年期',\n ac: 'AC+',\n insureLevel: '保費等級',\n handlingGroup: '經辦組',\n handlingUser: '經辦人',\n scheduleDate: '預約購買日期',\n scheduleOrderNo: '預約訂單號',\n registerGroup: '登記組',\n registerUser: '登記人',\n formDate: '填單日期',\n male: '先生',\n female: '小姐',\n amount: '金額',\n operateGroup: '操作組',\n operateUser: '操作人',\n payee: '領款人',\n idCard: '身份證號碼',\n permanentAdd: '戶籍地址',\n category: '數據類別',\n nextStep: '下一步',\n prevStep: '上一步',\n diagnosticItems: '診斷項目',\n good: '良好',\n screenDisplayTouch: '屏幕顯示觸控',\n LCDcoating: '熒屏鍍膜',\n LOGOlamp: 'LOGO燈',\n camera: '攝像頭',\n mic: '麥克風',\n keyboard: '鍵盤',\n keybacklight: '按鍵背光',\n clickpanel: '觸控板',\n chargingjack: '充電孔',\n USBport: 'USB孔',\n headphonejack: '耳機孔',\n otherjacks: '其他孔位',\n wifibt: 'WIFI/藍牙',\n speaker: '喇叭',\n vibrator: '振動器',\n battery: '電池',\n volumeKeys: '音量鍵',\n frontLensModule: '前鏡頭模組',\n wifiBluetooth: 'WIFI/藍牙',\n backShot: '後鏡頭',\n geolocation: '定位功能',\n tailRowModule: '尾排模組',\n rearLensGlassCover: '後鏡頭玻璃蓋',\n bootModule: '開機模組',\n gyroSensor: '陀螺儀感應器',\n homeKey: 'HOME鍵',\n mainboardCapacity: '主機板容量',\n receiver: '聽筒',\n mainboardLeakage: '主機板漏電',\n horn: '喇叭',\n signal: '訊號',\n appearance: '確認外觀有無瑕疵',\n back: '背面',\n front: '正面',\n onNew: '一鍵上新機',\n onSecondHand: '一鍵上二手機',\n toRepair: '發維修部',\n birthday: '出生日期',\n customer: '客戶姓名',\n customerAddress: '聯絡地址',\n customerEmail: 'Email',\n gender: '性別',\n phone: '客戶電話',\n sparePart: '備件',\n logisticsStatus: '物流狀態',\n printRemark: '印單備註',\n storeRemark: '門市備註',\n priceTake: '接機價格',\n priceFinal: '最終價格',\n firstConnectName: '第一次聯絡人',\n firstConnectTime: '第一次聯絡時間',\n secondConnectName: '第二次聯絡人',\n secondConnectTime: '第二次聯絡時間',\n thirdConnectName: '第三次聯絡人',\n thirdConnectTime: '第三次聯絡時間',\n expectBranches: '期待門市',\n deliverPrimary: '代送原廠',\n consumeMaterial: '無條碼零件',\n consumeMaterialPrice: '零件價格',\n maintenanceContent: '維修部填寫內容',\n },\n // 维修部管理\n maintenance: {\n toBeDelivered: '待發貨',\n delivered: '已發貨',\n toBeReceived: '待收貨',\n received: '已收貨',\n businessType: '業務類型',\n orderNo: '單號',\n oppositeStore: '對方門市',\n model: '機型',\n snCode: 'SN序號',\n pickUpProblem: '接機問題',\n lastProcessingTime: '最後處理時間',\n sendTime: '發出時間',\n signingTime: '簽收時間',\n passedTime: '已過時間',\n handler: '處理人',\n remark: '備註',\n currentState: '當前狀態',\n totalDuration: '總歷時',\n time: '時間',\n create: '建立',\n handleStore: '處理門市',\n handleRecord: '處理記錄',\n sendOut: '發貨',\n confirmReceive: '收貨',\n scanSend: '掃碼發貨',\n scanReceive: '掃碼收貨',\n recall: '撤回',\n todo: '待處理',\n handled: '已處理',\n abnormal: '異常',\n handle: '處理',\n handleWay: '處理方式',\n hasPaid: '是否支付',\n paidPrice: '支付金額',\n orderDismantleTypeList: '拆出的備件',\n },\n // 备件管理\n sparePart: {\n mainboard: '主板',\n screen: '屏幕',\n cameraLens: '鏡頭',\n other: '其它',\n noUse: '未使用',\n used: '已使用',\n dismantleCode: '備件編碼',\n lastCheckTime: '最後盤點時間',\n lastCheckPerson: '最後盤點人',\n checkStatus: '盤點狀態',\n check: '盤點',\n },\n};\n\nexport default zhTw;\n","const english = {\n // 菜单\n route: {\n dashboard: 'Dashboard',\n goodsPriceLabelPrint: 'Goods Price Label Print',\n goodsReceipted: 'Goods Receipted',\n outBranchBooking: ' Out Branch Booking',\n\n userManage: 'User Manage',\n operatingDataSearch: 'operatingDataSearch',\n statisticalReport: 'statisticalReport',\n userManageAccount: 'Account',\n userManageAuthority: 'Authority',\n userManagePersonnel: 'Personnel',\n userManageMaintenance: 'Maintenance',\n userManageLoginLog: 'LoginLog',\n userManageMenu: 'Menu',\n userManageAccess: 'Access',\n userManageCustom: 'Custom',\n\n mpSet: 'Model&Price Set',\n mpSetPrice: 'Price',\n mpSetModelRam: 'Model RAM',\n mpSetModel: 'Model',\n mpSetSecondHandUpc: 'Second Hand UPC',\n mpSetUpc: 'UPC',\n mpSetSecondHandPrice: 'Second Hand Sale Price',\n mpSetSecondHandHuiShouPrice: 'Second Hand HuiShou Price',\n qService: 'Q Card',\n simService: 'Sim',\n qServiceNewList: 'Q Card new list',\n qServiceCheck: 'Q Card Check',\n simServiceCheck: 'Sim Card Check',\n qServiceDistribution: 'Q Card Distribution',\n simServiceDistribution: 'Sim Card Distribution',\n simServiceNewList: 'Sim Card NewList',\n outBranchBookingAccount: 'outBranchBookingAccount',\n qServiceReceive: 'Q Card receiving',\n simServiceReceive: 'Sim Card receiving',\n qServiceItem: 'Q Card Service Item',\n qServicePackage: 'Q Card Service Package',\n simServicePackage: 'Sim Card Service Package',\n qServiceAgreement: 'Q Card Agreement',\n\n rService: 'R Card',\n rServiceNewList: 'R Card new list',\n rServiceCheck: 'R Card Check',\n rServiceDistribution: 'R Card Distribution',\n rServiceReceive: 'R Card receiving',\n\n configuration: 'Configuration',\n configurationGuarantee: 'Guarantee',\n configurationCommodityDiscount: 'CommodityDiscount',\n configurationCommodityDiscountReason: 'CommodityDiscountReason',\n configurationPayWay: 'Pay Way',\n configurationStagesWay: 'Stages Way',\n configurationRepairState: 'Repair State',\n configurationNotice: 'Dashboard Notice',\n configurationBookingNotice: 'Dashboard Booking Notice',\n configurationRetailSales: 'Retail Sales',\n configurationWeight: 'Retail Weight',\n configurationSupplier: 'Supplier',\n configurationPoster: 'Poster',\n configurationQserviceItem: 'Q Card Service Item',\n configurationQservicePackage: 'Q Card Service Package',\n configurationPhoneModel: 'Phone Model',\n\n purchaseCheck: 'Purchase Check',\n purchaseCheckGoodsImport: 'Goods List',\n purchaseCheckDeliveryCheck: 'Delivery Check',\n purchaseCheckReceiveCheck: 'Receive Check',\n purchaseCheckReceiveRegister: 'Receive Register',\n purchaseCheckPackingRegister: 'Packing Register',\n purchaseCheckEfficiencyStatistics: 'Efficiency Statistics',\n\n newSale: 'New Sale',\n newSaleNewList: 'New List',\n newSaleNewSale: 'New Sale',\n newSaleNewSchedule: 'New Schedule',\n newSaleNewCheck: 'New Check',\n newSaleAbnormal: 'Abnormal',\n newSaleStartTransfer: 'Start Transfer',\n newSaleTransferExamine: 'Transfer Examine',\n newSaleTransferAbnormal: 'Transfer Abnormal',\n newSaleNewPhoneTransferAbnormal: 'NewPhone Transfer Abnormal',\n newSaleReserveSet: 'Reserve Set',\n newSaleScheduleRegister: 'Schedule List',\n\n secondHand: 'Second Hand',\n secondHandNewList: 'Second Hand List',\n secondHandNewCheck: 'Second Hand NewCheck',\n secondHandToReviewNewCheck: 'Second Hand ToReview NewCheck',\n secondHandAbnormal: 'Abnormal',\n secondHandStartTransfer: 'Start Transfer',\n secondHandTransferExamine: 'Transfer Examine',\n secondHandTransferAbnormal: 'Transfer Abnormal',\n secondHandReserveSet: 'Reserve Set',\n secondHandSchedule: 'Schedule List',\n\n salesBilling: 'Sales Billing',\n salesBillingSiteRepair: 'Site Repair',\n salesBillingStay: 'Stay',\n salesBillingRecieving: 'Recieving',\n salesBillingNewSale: 'New Sale',\n salesBillingSecondHandSale: 'Second Hand Sale',\n salesBillingEnvelope: 'Envelope',\n salesBillingSaleBills: 'Sale Bills',\n salesBillingScheduleBills: 'Schedule Bills',\n salesBillingRefund: 'Refund',\n salesBillingSim: 'sim',\n salesBillingOldBilling: 'Old Billing',\n\n maintenance: 'Maintenance',\n maintenanceReceiveSending: 'Receive Sending',\n maintenanceGuestBusiness: 'Guest Business',\n maintenanceToOriginal: 'To Original',\n stayPhoneEfficiencyStatistics: 'stayPhoneEfficiencyStatistics',\n maintenanceStoreBusiness: 'Store Business',\n maintenanceScrapApproval: 'Scrap Approval',\n\n sparePart: 'Spare Part',\n sparePartList: 'Part List',\n sparePartCheck: 'Part Check',\n sparePartAbnormal: 'Part Abnormal',\n\n mobile: 'Mobile',\n signPage: 'Sign Page',\n print: 'Print',\n printMobile: 'Print',\n },\n // 导航\n navbar: {\n logOut: 'Log Out',\n dashboard: 'Dashboard',\n refresh: 'Refresh',\n goPre: 'Old version',\n fiveM: '5 min',\n thirtyM: '30 min',\n oneHour: 'an hour',\n never: 'never',\n },\n // 登录页\n login: {\n title: 'Login Form',\n logIn: 'Login',\n username: 'Username',\n password: 'Password',\n requirePassword: 'Please enter password',\n requireUsername: 'Please enter account',\n },\n // 组件\n components: {\n changeLanguageTips: 'Change Language Success',\n },\n // 401 404\n error: {\n back: 'Back',\n message401_1: 'You do not have access to this page',\n message401_2: 'If you are dissatisfied, please contact your leader',\n message404_1: 'This page can not be found',\n message404_2:\n 'Please check whether your access path is correct, or contact the development and operation personnel',\n },\n // 通用\n common: {\n title: 'Qfanyun inc.',\n search: 'Search',\n add: 'Add',\n edit: 'Edit',\n delete: 'Delete',\n export: 'Export',\n import: 'Import',\n changePwd: 'Change Password',\n changeInfo: 'Change Info',\n changePwdSuc: 'Change Password Success, Please Login Again',\n loading: 'Loading',\n select: 'Please Select',\n cancel: 'Cancel',\n save: 'Save',\n required: 'Required',\n success: 'Success',\n error: 'Error',\n yes: 'Yes',\n no: 'No',\n have: 'Have',\n none: 'None',\n submit: 'Submit',\n detail: 'Detail',\n download: 'Download',\n tips: 'Tips',\n rewrite: 'Rewrite',\n confirm: 'Confirm',\n tempSave: 'Temp Save',\n empty: 'Empty',\n chosen: 'Please Choose The Data',\n adopt: 'Adopt',\n last: 'Last',\n enter: 'Please enter',\n editSuccessfully: 'modify successfully',\n sureDelete: 'Whether or not to delete',\n sureCancel: 'Whether or not to cancel',\n surePass: 'Whether or not to pass',\n uploadImg: 'support png、jpg limit:5MB',\n uploadPdf: 'support txt limit:5MB',\n uploadImgFirst: 'Please upload pictures first',\n allRoute: 'all routes',\n sureConfirm: 'sure confirm',\n },\n // 表格通用\n table: {\n order: 'Sort',\n operate: 'Operate',\n },\n // 文件导入\n file: {\n tips: 'Drag Your File Hear Or Click',\n tips1: 'Please',\n download: 'Download the template',\n tips2: ',Fill In And Upload According To The Template.',\n },\n // 账号人事管理\n userManage: {\n account: 'Account',\n accountStatus: 'Account Status',\n normal: 'Normal',\n stopUsing: 'Stop Using',\n startUsing: 'Start Using',\n locking: 'Locking',\n unlocking: 'Unlocking',\n locked: 'Locked',\n password: 'Password',\n phone: 'Phone',\n email: 'Email',\n realName: 'Real Name',\n nickName: 'Nick Name',\n role: 'Role',\n roleName: 'Role Name',\n roleIntro: 'Role Intro',\n gmtCreate: 'Gmt Create',\n group: 'Group',\n remark: 'Remark',\n menuPermission: 'Menu Permission',\n configName: 'Config Name',\n configValue: 'Config Value',\n ifOpen: 'If Open',\n sort: 'Sort',\n accountValidate: 'Users need to bind at least one role',\n phoneValidate: 'Incorrect format of mobile phone number',\n pwdLengthValidate: 'The password must be at least 8 characters',\n pwdValidate: 'The password must contain Upper and lower case letters and numbers',\n roleValidate: 'The role is bound with at least one permission',\n menuName: 'Menu Name',\n perms: 'Perms',\n type: 'Type',\n interface: 'Interface',\n interfaceName: 'Interface Name',\n interfaceHref: 'Interface Href',\n permissionName: 'Permission Name',\n sortValidate: 'Sort must be numeric',\n catalog: 'Catalog',\n menu: 'Menu',\n button: 'Button',\n },\n // 机型价格设定\n mpSet: {\n brand: 'Brand',\n type: 'Type',\n model: 'Model',\n color: 'Color',\n attributesName: 'Attributes Name',\n chooseType: 'Choose Type',\n modelName: 'Model Name',\n capacity: 'Capacity',\n nowPrice: 'Now Price',\n newPrice: 'New Price',\n priceChange: 'Price Change',\n upc: 'UPC',\n IMEI: 'IMEI Number',\n recentUpdate: 'Recent Update',\n noCapacity: 'No Capacity',\n ifOpenSaleNew: 'If Open Sale New',\n ifOpenSaleOld: 'If Open Sale Old',\n upcRules: 'The UPC Format Of The New Machine Is 12 Digits',\n percentOne: '1LevelPrice',\n percentTwo: '2LevelPrice',\n percentThree: '3LevelPrice',\n percentFour: '4LevelPrice',\n percentFive: '5LevelPrice',\n percentFivePointFive: '5.5LevelPrice',\n skuName: 'brand/type/model/color/capcity',\n choosePhoneType: 'Choose brand',\n chooseModal: 'Choose models',\n chooseVersion: 'Choose version',\n mainImgUpload: 'Image upload',\n },\n // 杂项设定\n configuration: {\n warrantyName: 'Warranty Name',\n warrantyDays: 'Warranty Days',\n note: 'Note',\n printNote: 'Print Note',\n payName: 'Pay Name',\n stagesName: 'Stages Name',\n name: 'Name',\n bcode: 'Bcode',\n phone: 'Phone',\n address: 'Address',\n supplierName: 'SupplierName',\n unit: 'unit:hour',\n newMobile: 'New Mobile',\n oldMobile: 'Old Mobile',\n dismantle: 'Dismantle',\n orderRepair: 'Order Repair',\n orderTransfer: 'Order Transfer',\n xcwx: 'Site Maintenance',\n rlsj: 'Capacity Upgrade',\n lj: 'Stay Machine',\n sj: 'Receiving Machine',\n mj: 'Sale Machine',\n bm: 'Envelope',\n esmj: 'SecondHand Sale',\n statusName: 'Status Name',\n posterCategory: 'Poster Category',\n posterContext: 'Poster Context',\n rate: 'Rate',\n },\n // 配件进货盘点\n purchaseCheck: {\n onGoing: 'On Going',\n completed: 'Completed',\n deliveryStore: 'Delivery Store',\n receiveStore: 'Receive Store',\n createDate: 'Create Date',\n orderNo: 'Order No',\n totalNum: 'Total Num',\n toAmountWarehouse: 'To Amount Warehouse',\n toAmountStore: 'To Amount Store',\n remarks: 'Remarks',\n corresponding: 'Corresponding',\n goodsNo: 'Goods No',\n goodsName: 'Goods Name',\n goodsStyle: 'Goods Style',\n goodsSize: 'Goods Size',\n upc: 'upc',\n deliveryNum: 'Delivery Num',\n wantNum: 'Want Num',\n getNum: 'Get Num',\n difference: 'Difference',\n productCode: 'Product Code',\n salePrice: 'Sale Price',\n specsRemark: 'Specs Remark',\n recentImportTime: 'Recent Import Time',\n },\n // 新机销售管理\n newSale: {\n checking: 'Waiting for inventory',\n checked: 'Stocktaking',\n booked: 'booked',\n canceled: 'canceled',\n completed: 'completed',\n bookStatus: 'Book status',\n number: 'number',\n store: 'Store',\n newStatistics: 'New Statistics',\n addPreSale: 'Add Pre Sale',\n sale: 'Sale',\n reserveStatus: 'Reserve Status',\n message: 'Message',\n note: 'Note',\n supplier: 'Supplier',\n salePrice: 'Sale Price',\n createTime: 'Create Time',\n inventoryTime: 'Inventory Time',\n status: 'Status',\n imei: 'IMEI',\n sn: 'snCode',\n upc: 'UPC',\n upcImei: 'UPC/IMEI Scan Code',\n price: 'Purchase Price',\n inventoryUser: 'Inventory User',\n inventoryStatus: 'Inventory Status',\n scan: 'Scan Inventory',\n saleDown: 'Sale Down',\n saleIng: 'Sale Ing',\n waitExam: 'Wait Exam',\n auditPass: 'Exam pass',\n auditFail: 'Exam fail',\n all: 'All',\n startTransfer: 'Start Transfer',\n transferStatus: 'Transfer Status',\n skuInfo: 'Sku Info',\n examineOperate: 'Examine Operate',\n deliveryOperate: 'Delivery Operate',\n receiveOperate: 'Receive Operate',\n name: 'Name',\n machineAssign: 'Machine Assign',\n reserveStatistics: 'Reserve Statistics',\n reserveName: 'Reserve Name',\n reserveDate: 'Reserve Date',\n pickUpStore: 'PickUp Store',\n telephone: 'Telephone',\n deposit: 'Deposit',\n balance: 'Balance',\n houseNumber: 'House Number',\n shellMembrane: 'Shell Membrane',\n insurance: 'Insurance',\n availableNum: 'Available Num',\n reserveNum: 'Reserve Num',\n startDate: 'Start Date',\n startUser: 'Start User',\n handleUserGroup: 'Handle User Group',\n handleUser: 'Handle User',\n handleDate: 'Handle Date',\n snCode: 'snCode',\n outCanSale: 'Out Can Sale',\n outSafe: 'Out Safe',\n inCanSale: 'In Can Sale',\n inSafe: 'In Safe',\n transferProposal: 'Transfer Proposal',\n transferApply: 'Transfer Apply',\n distribution: 'Distribution',\n editNote: 'Edit Note',\n allowTransfer: 'Allow Transfer',\n cancelTransfer: 'Cancel Transfer',\n expectedDate: 'Expected Date',\n arriveDate: 'Arrive Date',\n skuName: 'Sku Name',\n affirmReservePrice: 'Affirm Reserve Price',\n serviceCommission: 'Service Commission',\n distributed: 'Distributed',\n distributing: 'Distributing',\n cancelReserve: 'Cancel Reserve',\n overSoldNum: 'Over Sold Num',\n frozenNum: 'Frozen Num',\n frozenTime: 'Frozen Time',\n addTime: 'Add Time',\n sureAddTime: 'Confirm the overtime?',\n unFrozen: 'UnFrozen',\n transferNum: 'Transfer Num',\n total: 'Total Num',\n overSold: 'Over Sold',\n overSolded: 'Over Sold',\n noOverSolded: 'Not Over Sold',\n oversoldtolock: 'Over Sold To Lock',\n transferNo: 'Transfer No',\n auditTime: 'Audit Time',\n auditName: 'Audit Name',\n transferNum1: 'Transfer Num',\n realTransferNum: 'Real Transfer Num',\n receiveNum: 'Receive Num',\n receiveTime: 'Receive Time',\n receiveName: 'Receive Name',\n originalNum: 'Original Num',\n realityNum: 'Reality Num',\n canNotExceed: 'Can Not Exceed',\n reDraw: 'Redraw',\n notZero: 'Price can not be zero',\n },\n // 二手销售管理\n secondHand: {\n basicInformation: 'Basic information',\n transferConfirmation: 'Transfer Confirmation',\n sendConfirmation: 'Send Confirmation',\n cancel: 'cancel',\n done: 'done',\n randomNum: 'Random Num',\n secondHandStatistics: 'SecondHand Statistics',\n minReserves: 'Min Reserves',\n nowReserves: 'Now Reserves',\n transferUser: 'Transfer User',\n transferDate: 'Transfer Date',\n transferOut: 'Transfer Out',\n transferIn: 'Transfer In',\n machineType: 'Machine Type',\n spotGoods: 'Spot Goods',\n reserved: 'Reserved',\n saled: 'Saled',\n waitTransfer: 'Wait Transfer',\n onOrder: 'On Order',\n frozen: 'Frozen',\n choosePrint: 'Choose Print',\n labelPrinting: 'Label Printing',\n printing: 'Printing',\n dateTime: 'Date Time',\n abnormalCondition: 'Abnormal Condition',\n payWay: 'Pay Way',\n fixGroup: 'Fix Group',\n fixUser: 'FixUser',\n QNo: 'Q No',\n recommendNo: 'Recommend No',\n imgUpload: 'Img Upload',\n fileUpload: 'upload',\n imeiNo: 'IMEI/no',\n oldNewDegree: 'Old New Degree',\n haveBoxed: 'Have Boxed',\n haveParts: 'Have Parts',\n batteryDegree: 'Battery Degree',\n skuDesc: 'Sku Desc',\n customerOrder: 'Customer Order',\n customerTel: 'Customer Tel',\n customerName: 'Customer Name',\n backDesc: 'Back Desc',\n backUrl: 'BackUrl',\n frontDesc: 'Front Desc',\n frontUrl: 'Front Url',\n isShellBend: 'Is Shell Bend',\n isShellDamaged: 'Is Shell Damaged',\n isShellWater: 'Is Shell Water',\n isTellInfo: 'Tell Info',\n conditionLevel: 'Condition Level',\n levelOne: 'Level One',\n levelTwo: 'Level Two',\n levelThree: 'Level Three',\n levelFour: 'Level Four',\n levelFive: 'Level Five',\n levelFivePonitFive: 'level Five Ponit Five',\n },\n // 销售开单管理\n salesBilling: {\n selected: 'selected',\n partsList: 'Parts List',\n customerSurname: 'Customer Surname',\n byDate: 'By Date',\n startDate: 'Start Date',\n endDate: 'End Date',\n sign: 'Sign',\n noSign: 'No Sign',\n signed: 'Signed',\n partsNum: 'Parts Num',\n price: 'Price',\n repairStatus: 'Repair Remark',\n repairStat: 'Repair Status',\n repairSubStatus: 'Repair SubStatus',\n abnormal: 'Abnormal',\n deliveryStatus: 'Delivery Status',\n delivering: 'Delivering',\n delivered: 'Delivered',\n orderTakingGroup: 'Order Taking Group',\n orderTakingUser: 'Order Taking User',\n openStatus: 'Open Status',\n open: 'Open',\n close: 'Close',\n processing: 'Processing',\n processed: 'Processed',\n toBeTested: 'To Be Tested',\n quotedPrice: 'Quoted Price',\n waitingMaterial: 'Waiting Material',\n repairing: 'Repairing',\n toBeTaken: 'To Be Taken',\n fixDate: 'Fix Date',\n replaceBoardNo: 'Replace Board No',\n repairPrice: 'Repair Price',\n storeContactTime: 'Store Contact Time',\n deliveryDate: 'Delivery Date',\n repairRemark: 'Repair Remark',\n testReport: 'Test Report',\n recievingGroup: 'Recieving Group',\n recievingUser: 'Recieving User',\n new: 'New',\n secondHand: 'Second Hand',\n disposal: 'Disposal',\n arrange: 'Arrange',\n spare: 'Spare',\n headquarters: 'Head Quarters',\n backDepartment: 'Back Department',\n secondLevelGroup: 'Second Level Group',\n secondLevelUser: 'Second Level User',\n boxPacked: 'Box Packed',\n numberFit: 'Number Fit',\n unLocked: 'UnLocked',\n machineStatus: 'MachineStatus',\n billNo: 'Bill No',\n buyInsurance: 'Buy Insurance',\n noInsurance: 'No Insurance',\n insure: 'Insure',\n oneYear: 'One Year',\n secondYear: 'Second Year',\n ac: 'AC+',\n insureLevel: 'Insure Level',\n handlingGroup: 'Handling Group',\n handlingUser: 'Handling User',\n scheduleDate: 'Schedule Date',\n scheduleOrderNo: 'Schedule Order No',\n registerGroup: 'Register Group',\n registerUser: 'Register User',\n formDate: 'Form Date',\n male: 'Male',\n female: 'Female',\n amount: 'Amount',\n operateGroup: 'Operate Group',\n operateUser: 'Operate User',\n payee: 'Payee',\n idCard: 'IdCard',\n permanentAdd: 'Permanent Add',\n category: 'Category',\n nextStep: 'Next Step',\n prevStep: 'Prev Step',\n diagnosticItems: 'Diagnostic Items',\n good: 'Good',\n screenDisplayTouch: 'Screen Display Touch',\n LCDcoating: 'LCD Coating',\n LOGOlamp: 'LOGO Lamp',\n camera: 'camera',\n mic: 'mic',\n keyboard: 'keyboard',\n keybacklight: 'keyboard backlight',\n clickpanel: 'clickpanel',\n chargingjack: 'chargingjack',\n USBport: 'USB port',\n headphonejack: 'headphonejack',\n otherjacks: 'otherjacks',\n wifibt: 'WIFI/Bluetooth',\n speaker: 'horn',\n vibrator: 'Vibrator',\n battery: 'Battery',\n volumeKeys: 'Volume Keys',\n frontLensModule: 'Front Lens Module',\n wifiBluetooth: 'WIFI/Bluetooth',\n backShot: 'Back Shot',\n geolocation: 'Geolocation',\n tailRowModule: 'Tail Row Module',\n rearLensGlassCover: 'Rear Lens Glass Cover',\n bootModule: 'Boot Module',\n gyroSensor: 'Gyro Sensor',\n homeKey: 'Home Key',\n mainboardCapacity: 'Mainboard Capacity',\n receiver: 'Receiver',\n mainboardLeakage: 'Mainboard Leakage',\n horn: 'Horn',\n signal: 'Signal',\n appearance: 'Confirm Whether The Appearance Is Defective',\n back: 'Back',\n front: 'Front',\n onNew: 'One Click On The New Machine',\n onSecondHand: 'One Click On The Second Hand',\n toRepair: 'Keep In Repair',\n birthday: 'Birthday',\n customer: 'Customer',\n customerAddress: 'Customer Address',\n customerEmail: 'Email',\n gender: 'Gender',\n phone: 'Phone',\n sparePart: 'Spare Part',\n logisticsStatus: 'Logistics Status',\n printRemark: 'Print Remark',\n storeRemark: 'Store Remark',\n priceTake: 'Price Take',\n priceFinal: 'Price Final',\n firstConnectName: 'First Connect Name',\n firstConnectTime: 'First Connect Time',\n secondConnectName: 'Second Connect Time',\n secondConnectTime: 'Second Connect Time',\n thirdConnectName: 'Third Connect Time',\n thirdConnectTime: 'Third Connect Time',\n expectBranches: 'Expect Branches',\n deliverPrimary: 'Deliver Primary',\n consumeMaterial: 'Consume Material',\n consumeMaterialPrice: 'Consume Material Price',\n maintenanceContent: 'Maintenance Content',\n },\n // 维修部管理\n maintenance: {\n toBeDelivered: 'To Be Delivered',\n delivered: 'Delivered',\n toBeReceived: 'To Be Received',\n received: 'Received',\n businessType: 'Business Type',\n orderNo: 'Order No',\n oppositeStore: 'Opposite Store',\n model: 'Model',\n snCode: 'snCode',\n pickUpProblem: 'PickUp Problem',\n lastProcessingTime: 'Last Processing Time',\n sendTime: 'Send Time',\n signingTime: 'Signing Time',\n passedTime: 'Passed Time',\n handler: 'Handler',\n remark: 'Remark',\n currentState: 'Current State',\n totalDuration: 'Total Duration',\n time: 'Time',\n create: 'Create',\n handleStore: 'Handle Store',\n handleRecord: 'Handle Record',\n sendOut: 'Send Out',\n confirmReceive: 'Confirm Receive',\n scanSend: 'Scan Send',\n scanReceive: 'Scan Receive',\n recall: 'Recall',\n todo: 'Todo',\n handled: 'Handled',\n abnormal: 'Abnormal',\n handle: 'Handle',\n handleWay: 'Handle Way',\n hasPaid: 'Has Paid',\n paidPrice: 'Paid Price',\n orderDismantleTypeList: 'Order Dismantle Type List',\n },\n // 备件管理\n sparePart: {\n mainboard: 'Mainboard',\n screen: 'Screen',\n cameraLens: 'Camera Lens',\n other: 'Other',\n noUse: 'No Use',\n used: 'Used',\n dismantleCode: 'Dismantle Code',\n lastCheckTime: 'Final count time',\n lastCheckPerson: 'Final count Person',\n checkStatus: 'Count status',\n check: 'Count',\n },\n};\n\nexport default english;\n","/**\n * @Author: haimian\n * @Description: 路由权限、鉴权\n * @Date: 2021-07-16\n */\nimport React, { useState, useEffect, ReactElement } from 'react';\nimport { Route, Redirect, useHistory } from 'react-router-dom';\nimport { Spin, ConfigProvider } from 'antd';\n// import enUS from 'antd/lib/locale/en_US';\n// import zhCN from 'antd/lib/locale/zh_CN';\nimport zhTW from 'antd/lib/locale/zh_TW';\nimport moment from 'moment';\nimport 'moment/locale/zh-cn';\nimport { getUserInfo, logout } from '@/service/user';\nimport { MainLayout } from './MainLayout';\nimport { IRouterConfig, AdminRouterData, ROUTER_PREFIX } from '../config/router-config';\nimport { getToken, removeToken } from '@/utils/cookies';\nimport { AgentType, ImportStatus, UserInfo } from '@/service/interface/user.d';\nimport { GlobalContext } from '@/context';\nimport { MyEmpty } from '@/components/empty';\nimport LANGUAGE_LETTER from '@/config/language-letter';\nimport { CurrentAxisItem } from '@/service/interface/purchase-check.d';\nimport { getCurrentAxis } from '@/service/purchase-check';\nimport ChangePasswordModal from '@/components/header/ChangePasswordModal';\nimport { ISH5 } from '@/utils/common';\n\nmoment.locale('zh-tw');\n// moment.locale('zh-cn');\n\nconst getRouteNodes = (\n routes: IRouterConfig[],\n permissionKeyList: string[] | undefined,\n): ReactElement[] => {\n if (permissionKeyList && permissionKeyList.length > 0) {\n let isNeedAddRedirectRoute = false;\n const curRoutes = routes.reduce((pre, next) => {\n const route = !next.permissionKey || permissionKeyList.find(r => r === next.permissionKey);\n if (route) {\n if (!isNeedAddRedirectRoute && next.permissionKey) {\n isNeedAddRedirectRoute = true;\n pre.push(\n \n \n ,\n );\n }\n pre.push(\n ,\n );\n }\n return pre;\n }, []);\n return curRoutes;\n }\n return [];\n};\n\n// 只用于用户校验,菜单鉴权,跳转登录页/错误页面或者返回mainlayout\nconst SecurityLayout: React.FC = () => {\n const history = useHistory();\n const [locale, setLocale] = useState(zhTW);\n const [visible, setVisible] = useState(false);\n const [importStatus, setImportStatus] = useState(ImportStatus.DONE);\n const [userInfo, setUserInfo] = useState({} as UserInfo);\n const [languageLetter, setLanguageLetter] = useState(LANGUAGE_LETTER['zh-cn']);\n const [isFetchingUserInfo, setIsFetchingUserInfo] = useState(true);\n const [routeChildren, setRouteChildren] = useState(null);\n const [currentAxis, setCurrentAxis] = useState([]);\n\n // 获取账户信息\n const fetchUserInfo = async () => {\n const token = getToken();\n const res = await getUserInfo({ token });\n if (res) {\n setUserInfo({ ...res });\n if (res.needChangePassword) {\n setVisible(true);\n }\n }\n setIsFetchingUserInfo(false);\n };\n\n const changeLocale = localeValue => {\n setLocale(localeValue);\n moment.locale(localeValue.locale);\n setLanguageLetter(LANGUAGE_LETTER[localeValue.locale]);\n };\n\n useEffect(() => {\n fetchUserInfo();\n setRouteChildren(getRouteNodes(AdminRouterData, ['']));\n }, []);\n\n const handlegetCurrentAxis = async () => {\n const res = await getCurrentAxis();\n if (res) {\n setCurrentAxis(res);\n }\n };\n\n if (isFetchingUserInfo) {\n return (\n \n \n \n );\n }\n\n if (!userInfo || JSON.stringify(userInfo) === '{}') {\n return ;\n }\n\n const changeImportStatus = status => {\n setImportStatus(status);\n };\n\n const onCancel = () => {\n setVisible(false);\n handleLogOut();\n };\n\n const handleLogOut = async () => {\n await logout({\n agentType: ISH5 ? AgentType.H5 : AgentType.PC,\n });\n removeToken();\n history.push(`/${ROUTER_PREFIX}/login`);\n };\n\n // 如果拿到已经登录的用户权限\n return (\n \n \n {visible && (\n \n 系統檢測到您未修改初始密碼,請修改初始密碼,否則無法登錄!\n \n }\n />\n )}\n \n \n \n );\n};\nexport default SecurityLayout;\n","// ForgotPass\n// @description 找回密碼相關接口\nimport { ajaxPost, ajaxGet, ajaxFormImg } from '@/utils/ajax';\n\n/** 根据账号获取部分不重要的信息 */\nexport const getUnimportantInfoByAccount = async (params: { account: string }) => {\n return await ajaxGet('/q3c-api/usr/user/find/getUnimportantInfoByAccount', params);\n};\n\n/** 检查账号和手机号是否匹配 */\nexport const checkAccountAndPhone = async (params: { account: string; phone: string }) => {\n return await ajaxPost('/q3c-api/usr/user/find/checkAccountAndPhone', params);\n};\n\n/** 發送驗證碼 */\nexport const sendVerificationCode = async (params: { account: string }) =>\n await ajaxGet('/q3c-api/usr/user/find/sendVerificationCode', params);\n\n/** 獲取驗證碼剩餘時間 */\nexport const getToResendVerificationCodeTime = async (params: { account: string }) =>\n ajaxGet('/q3c-api/usr/user/find/getToResendVerificationCodeTime', params);\n\n/** 驗證驗證碼 */\nexport const verifySentVerificationCode = async (params: {\n account: string;\n verificationCode: string;\n}) => ajaxGet('/q3c-api/usr/user/find/verifySentVerificationCode', params);\n\n/** 解鎖賬號 */\nexport const unlockAccount = async (params: { account: string; token: string }) =>\n await ajaxPost('/q3c-api/usr/user/find/unlockAccount', params);\n\n/** 找回密码 */\nexport const retrievePassword = async (params: {\n account: string;\n token: string;\n password: string;\n}) => ajaxPost('/q3c-api/usr/user/find/retrievePassword', params);\n","// Info\nimport React, { forwardRef, useCallback, useImperativeHandle, useRef, useState } from 'react';\nimport { Modal, Spin, Typography, Tag } from 'antd';\nimport { useUniqueAsync } from 'khooks-lib';\nimport { getUnimportantInfoByAccount } from '@/service/forgot-pass';\n\nconst { Paragraph, Text } = Typography;\n\nexport type InfoRef = {\n show: (record: Record) => void;\n};\nexport type InfoProps = {\n onNext?: (record: Record) => void;\n};\n\n/**\n * @description 信息展示\n */\nconst Info = forwardRef((props, ref) => {\n const [visible, setVisible] = useState(false);\n const $onNext = useRef(props.onNext);\n $onNext.current = props.onNext;\n\n const { loading, asyncFn: getInfo, response: info, $response: $info } = useUniqueAsync(\n async (params: Record) => {\n const res = await getUnimportantInfoByAccount(params as any);\n if (!res) return undefined;\n return {\n ...res,\n ...params,\n } as Record;\n },\n );\n\n const hideModal = useCallback(() => {\n setVisible(false);\n }, []);\n\n const handleOk = useCallback(() => {\n hideModal();\n $onNext.current?.({ ...$info.current });\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n show: info => {\n void getInfo(info as any);\n setVisible(true);\n },\n }),\n [],\n );\n\n return (\n \n \n \n \n 賬號:\n {info?.account}\n \n \n 所有人:\n {info?.realName}\n \n \n
    \n 注意:您本年度剩餘自動傳送次數是\n {info?.selfServiceSendMessagesRemainingTimes}次\n
    \n
    \n
    \n
    \n \n );\n});\n\nexport default Info;\n","// Sms\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport { Modal, Form, Button, Typography, Input, Divider, message } from 'antd';\nimport { useUniqueAsync } from 'khooks-lib';\nimport {\n getToResendVerificationCodeTime,\n sendVerificationCode,\n verifySentVerificationCode,\n} from '@/service/forgot-pass';\nimport { isNil } from 'lodash';\nimport isNumber from 'lodash/isNumber';\n\nconst { Paragraph, Text } = Typography;\n\nexport type SmsRef = {\n show: (record: Record) => void;\n};\nexport type SmsProps = {\n onNext?: (record: Record) => void;\n};\n\n/**\n * @description 信息展示\n */\nconst Sms = forwardRef((props, ref) => {\n const [visible, setVisible] = useState(false);\n const [form] = Form.useForm();\n const $timer = useRef();\n const [remainTime, setRemainTime] = useState();\n const $onNext = useRef(props.onNext);\n $onNext.current = props.onNext;\n\n const { asyncFn: setInfo, response: info, $response: $info } = useUniqueAsync(\n async (info: Record) => {\n return info;\n },\n );\n\n // 清除倒計時\n const clearTick = useCallback(() => {\n $timer.current && clearTimeout($timer.current);\n }, []);\n\n const hideModal = useCallback(() => {\n setVisible(false);\n }, []);\n\n const createTick = useCallback((time: number) => {\n clearTick();\n if (time <= 0) {\n setRemainTime(undefined);\n return;\n }\n setRemainTime(time);\n $timer.current = setTimeout(() => {\n createTick(time - 1);\n }, 1000);\n }, []);\n\n const { loading: checkRemainLoading, asyncFn: checkRemain } = useUniqueAsync(async () => {\n const remainTime = await getToResendVerificationCodeTime({\n account: $info.current?.account,\n });\n const hasRemain = isNumber(remainTime) && !Number.isNaN(remainTime) && remainTime > 0;\n if (hasRemain) {\n // 啟動定時器\n createTick(remainTime as any);\n }\n return hasRemain;\n });\n\n const { loading: smsLoading, asyncFn: sendSms } = useUniqueAsync(async () => {\n const hasRemain = await checkRemain();\n if (hasRemain) return;\n const hasSend = await sendVerificationCode({\n account: $info.current?.account,\n });\n if (!hasSend) return;\n await checkRemain();\n });\n\n const { loading: validating, asyncFn: validateCode } = useUniqueAsync(async () => {\n const formData = await form.validateFields();\n const res: any = await verifySentVerificationCode({\n ...formData,\n account: $info.current?.account,\n });\n if (res?.rightFlag) {\n hideModal();\n $onNext.current?.({\n ...$info.current,\n token: res.token,\n });\n } else {\n message.error('驗證失敗,請重試或重傳驗證碼!');\n }\n });\n\n useImperativeHandle(\n ref,\n () => ({\n show: info => {\n setInfo(info || {}).then(() => {\n void sendSms();\n setVisible(true);\n });\n },\n }),\n [],\n );\n\n useEffect(() => {\n if (!visible) {\n setRemainTime(undefined);\n void setInfo({});\n clearTick();\n }\n }, [visible]);\n\n const loading = smsLoading || checkRemainLoading || validating;\n return (\n \n \n \n \n \n }\n onCancel={hideModal}\n >\n \n \n 賬號:\n {info?.account}\n \n \n 所有人:\n {info?.realName}\n \n \n \n
    \n \n \n \n \n \n );\n});\n\nexport default Sms;\n","// Unlock\nimport React, { forwardRef, useCallback, useImperativeHandle, useRef, useState } from 'react';\nimport { Modal, Typography, message } from 'antd';\nimport { useUniqueAsync } from 'khooks-lib';\nimport { unlockAccount } from '@/service/forgot-pass';\n\nconst { Paragraph, Text } = Typography;\n\nexport type UnlockRef = {\n show: (record: Record) => void;\n};\nexport type UnlockProps = {\n onNext?: (record: Record) => void;\n};\n\n/**\n * @description 信息展示\n */\nconst Unlock = forwardRef((props, ref) => {\n const [visible, setVisible] = useState(false);\n\n const $onNext = useRef(props.onNext);\n $onNext.current = props.onNext;\n\n const hideModal = useCallback(() => {\n setVisible(false);\n }, []);\n\n const { asyncFn: setInfo, response: info, $response: $info } = useUniqueAsync(\n async (info: Record) => {\n return info;\n },\n );\n\n const { loading: unlockLoading, asyncFn: handleUnlock } = useUniqueAsync(async () => {\n const res = await unlockAccount({\n account: $info.current?.account,\n token: $info.current?.token,\n });\n if (!res) return;\n message.success('解鎖賬號成功!', 1.5, () => {\n hideModal();\n $onNext.current?.({ ...$info.current });\n });\n });\n\n useImperativeHandle(\n ref,\n () => ({\n show: info => {\n setInfo(info).then(() => {\n setVisible(true);\n });\n },\n }),\n [],\n );\n\n const loading = unlockLoading;\n\n return (\n \n \n \n 賬號:\n {info?.account}\n \n \n 所有人:\n {info?.realName}\n \n \n \n );\n});\n\nexport default Unlock;\n","// ResetPass\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport { Modal, Form, Typography, Input, Divider, message } from 'antd';\nimport { useUniqueAsync } from 'khooks-lib';\nimport { retrievePassword } from '@/service/forgot-pass';\n\nconst { Paragraph, Text } = Typography;\n\nexport type ResetPassRef = {\n show: (record: Record) => void;\n};\nexport type ResetPassProps = {\n onNext?: (record: Record) => void;\n};\n\n/**\n * @description 信息展示\n */\nconst ResetPass = forwardRef((props, ref) => {\n const [visible, setVisible] = useState(false);\n const [form] = Form.useForm();\n const $onNext = useRef(props.onNext);\n $onNext.current = props.onNext;\n\n const hideModal = useCallback(() => {\n setVisible(false);\n }, []);\n const { asyncFn: setInfo, response: info, $response: $info } = useUniqueAsync(\n async (info: Record) => {\n return info;\n },\n );\n\n const { loading: submitLoading, asyncFn: handleSubmit } = useUniqueAsync(async () => {\n const formData = await form.validateFields();\n const success = await retrievePassword({\n account: $info.current?.account,\n token: $info.current?.token,\n password: formData.password,\n });\n if (!success) return;\n message.success('重置密碼成功!', 1.5, () => {\n hideModal();\n $onNext.current?.({ ...$info.current });\n });\n });\n\n useImperativeHandle(\n ref,\n () => ({\n show: info => {\n setInfo(info).then(() => {\n setVisible(true);\n });\n },\n }),\n [],\n );\n\n const loading = submitLoading;\n return (\n \n \n \n 賬號:\n {info?.account}\n \n \n 所有人:\n {info?.realName}\n \n \n \n
    \n {\n const pass: string = (value || '').trim();\n if (pass.length < 8) {\n return Promise.reject(new Error('密碼長度不能小於8位!'));\n }\n const isPattern = /[a-z]/.test(pass) && /[A-Z]/.test(pass);\n if (!isPattern) {\n return Promise.reject(new Error('密碼必須包含大小寫字母!'));\n }\n\n return Promise.resolve();\n },\n },\n ]}\n >\n \n \n \n \n );\n});\n\nexport default ResetPass;\n","// OperateChoose\nimport React, { forwardRef, useCallback, useImperativeHandle, useRef, useState } from 'react';\nimport { Alert, Button, Divider, Modal, Typography } from 'antd';\nimport { useUniqueAsync } from 'khooks-lib';\n\nconst { Paragraph, Text } = Typography;\n\nexport type OperateChooseRef = {\n show: (record: Record) => void;\n};\nexport type OperateChooseProps = {\n onNext?: (type: string, record: Record) => void;\n};\n\n/**\n * @description 信息展示\n */\nconst OperateChoose = forwardRef((props, ref) => {\n const [visible, setVisible] = useState(false);\n const $onNext = useRef(props.onNext);\n $onNext.current = props.onNext;\n const hideModal = useCallback(() => {\n setVisible(false);\n }, []);\n\n const { asyncFn: setInfo, response: info, $response: $info } = useUniqueAsync(\n async (info: Record) => {\n return info;\n },\n );\n\n const handleNext = useCallback(\n (type: string) => () => {\n hideModal();\n $onNext.current?.(type, { ...$info.current });\n },\n [],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n show: info => {\n setInfo(info).then(() => {\n setVisible(true);\n });\n },\n }),\n [],\n );\n\n return (\n \n \n \n \n \n }\n onCancel={hideModal}\n >\n \n \n 賬號:\n {info?.account}\n \n \n 所有人:\n {info?.realName}\n \n \n \n \n \n );\n});\n\nexport default OperateChoose;\n","// ForgotPass\nimport React, { useRef } from 'react';\nimport { Button, Form, Input } from 'antd';\nimport { parse } from 'qs';\nimport { useHistory } from 'react-router';\nimport { useUniqueAsync } from 'khooks-lib';\nimport {\n FormTitle,\n ImgContainer,\n LoginFormContainer,\n LoginWrapper,\n PageWrapper,\n} from '@/pages/login/style';\nimport Info, { InfoRef } from './components/info';\nimport Sms, { SmsRef } from './components/sms';\nimport Unlock, { UnlockRef } from './components/unlock';\nimport ResetPass, { ResetPassRef } from './components/reset-pass';\nimport OperateChoose, { OperateChooseRef } from './components/operate-choose';\nimport { checkAccountAndPhone } from '@/service/forgot-pass';\n\n/**\n * @description 忘记密码\n */\nconst ForgotPass = () => {\n const history = useHistory();\n const [form] = Form.useForm();\n const $info = useRef(null);\n const $sms = useRef(null);\n const $operate = useRef(null);\n const $unlock = useRef(null);\n const $resetPass = useRef(null);\n\n const queryMap = parse(window.location.search.replace(/^\\?/, ''));\n\n const handleComplete = () => {\n const callbackUrl = queryMap.callback;\n if (!callbackUrl) {\n history.goBack();\n } else {\n window.location.href = callbackUrl as any;\n }\n };\n\n const { loading, asyncFn: handleSubmit } = useUniqueAsync(async () => {\n const formData = await form.validateFields();\n const success = await checkAccountAndPhone(formData);\n\n if (success) {\n $info.current?.show(formData);\n }\n });\n return (\n \n \n \n \n 忘記密碼 / 解鎖賬號\n
    \n \n \n \n \n \n \n \n \n 提交\n \n \n \n
    \n
    \n {\n $sms.current?.show(info);\n }}\n />\n {\n $operate.current?.show(info);\n }}\n />\n {\n switch (type) {\n case 'reset':\n $resetPass.current?.show(record);\n break;\n case 'unlock':\n $unlock.current?.show(record);\n break;\n default:\n }\n }}\n />\n \n \n
    \n );\n};\n\nexport default ForgotPass;\n","// AppDataContext\n// @description 应用相关数据处理\n// @author kinghoo\n// @create 2024-01-30, 周二, 23:51\n\nimport { storeCreator } from 'khooks-lib';\n\nconst initialData = {};\n\nconst { storeInstance, STORE_CONTEXT, useStoreContext, Provider } = storeCreator(initialData);\n\nexport {\n storeInstance as appContextInstance,\n STORE_CONTEXT as APP_CONTEXT,\n useStoreContext as useAppContext,\n Provider as AppProvider,\n};\n","// AppLogical\nimport React from 'react';\nimport useInit from './hooks/use-init';\n\nexport type AppLogicalProps = {\n // 组件props\n};\n\n/**\n * @author kinghoo\n * @description 应用纯初始化逻辑,因为context的局限性,所以初始化逻辑放这里\n * @version 0.1.0\n * @create 2024-01-30, 周二, 23:53\n */\nconst AppLogical: React.FC = props => {\n useInit();\n return null;\n};\n\nexport default AppLogical;\n","import { useAppContext } from '../context/app.data.context';\n\n/** 应用初始化 */\nexport default function useInit() {\n const {} = useAppContext();\n}\n","import { ROUTER_PREFIX } from '@/config/router-config';\n\nexport const H5_ROUTE_NAME = 'h5-part';\n\nexport const H5_ROUTE_BASE = `/${ROUTER_PREFIX}/${H5_ROUTE_NAME}`;\n","import styled from 'styled-components';\n\nexport const PageContainer = styled.div`\n width: 100vw;\n height: 100vh;\n overflow-x: hidden;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n background-color: #efefef;\n padding-bottom: 32px;\n`;\n\nexport const PageCard = styled.div`\n background-color: #fff;\n padding: 16px;\n`;\n","import styled from 'styled-components';\nimport { Swiper, SwiperSlide } from 'swiper/react';\n\nexport const Container = styled.div`\n width: 100%;\n position: relative;\n`;\n\nexport const SwiperContainer = styled(Swiper)`\n width: 100%;\n background-color: #f1f1f1;\n position: relative;\n z-index: 1;\n`;\n\nexport const SwiperImage = styled.div`\n width: 100vw;\n height: 0;\n padding-top: 84.33%;\n top: 0;\n left: 0;\n background-repeat: no-repeat;\n background-position: center center;\n background-size: cover;\n`;\n\nexport const PaginationContainer = styled.div`\n position: absolute;\n font-size: 12px;\n bottom: 16px;\n right: 16px;\n z-index: 2;\n color: #999999;\n background-color: #f1f1f1;\n height: 18px;\n padding: 0 9px;\n border-radius: 8px;\n display: flex;\n justify-content: center;\n align-items: center;\n line-height: 1;\n box-shadow: 0 0 4px rgba(0, 0, 0, 0.1);\n`;\n","// DataContext\n// @description 数据相关\n// @author kinghoo\n// @create 2024-01-30, 周二, 23:46\n\nimport { storeCreator } from 'khooks-lib';\nimport { IPageData } from '../interface/data.interface';\n\nconst initialData = {} as Partial;\n\nconst { useStoreContext, useInitStore, STORE_CONTEXT, storeInstance, Provider } = storeCreator(\n initialData,\n);\nexport {\n useStoreContext as useDataContext,\n STORE_CONTEXT as DATA_CONTEXT,\n storeInstance as dataContextInstance,\n Provider as DataContextProvider,\n};\n","// Carousel\nimport React, { useState } from 'react';\nimport { Swiper, SwiperSlide } from 'swiper/react';\nimport { Container, PaginationContainer, SwiperContainer, SwiperImage } from './elements';\nimport { useDataContext } from '@/h5/pages/detail/context/data.context';\nimport 'swiper/swiper-bundle.css';\n\nexport type CarouselProps = {\n // 组件props\n};\n\n/**\n * @author kinghoo\n * @description 顶部轮播组件\n * @version 0.1.0\n * @create 2024-02-1, 周四, 22:49\n */\nconst Carousel: React.FC = props => {\n const {\n state: { carousels: carouseList = [] },\n } = useDataContext();\n\n const [currentIndex, setCurrent] = useState(0);\n\n return (\n \n {\n setCurrent(swiper.realIndex);\n }}\n onSwiper={swiper => {\n setCurrent(swiper.realIndex);\n }}\n >\n {carouseList.map((url, index) => {\n return (\n \n \n \n );\n })}\n \n \n {currentIndex + 1} / {carouseList?.length || 0}\n \n \n );\n};\n\nexport default React.memo(Carousel);\n","import styled from 'styled-components';\n\nexport const Title = styled.h1`\n font-size: 20px;\n font-weight: bold;\n line-height: 22px;\n color: black;\n`;\n\nexport const InfoContainer = styled.div`\n margin-top: 20px;\n\n .info-row {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 16px;\n\n .static-item {\n flex-grow: 0;\n flex-shrink: 0;\n min-width: 0;\n min-height: 0;\n }\n\n .flex-item {\n flex-grow: 1;\n flex-shrink: 1;\n min-width: 0;\n min-height: 0;\n }\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n`;\n\nexport const PriceText = styled.span`\n font-size: 18px;\n color: #004e8d;\n font-weight: 500;\n margin-right: 8px;\n`;\n\nexport const OriginText = styled.span`\n font-size: 12px;\n color: #828282;\n margin-right: 8px;\n text-decoration: line-through;\n`;\n\nexport const HeartIcon = styled.span`\n width: 24px;\n height: 24px;\n background-size: contain;\n background-repeat: no-repeat;\n background-position: center;\n`;\n\nexport const Tag = styled.span`\n display: inline-block;\n font-size: 14px;\n height: 28px;\n line-height: 28px;\n color: white;\n padding: 0 8px;\n background-color: #004e8d;\n\n &.secondary {\n background-color: #009bd1;\n }\n`;\n","// MetaData\nimport React, { useCallback } from 'react';\nimport { PageCard } from '@/h5/pages/detail/ui.elements';\nimport { OriginText, HeartIcon, InfoContainer, PriceText, Tag, Title } from './elements';\nimport { useDataContext, dataContextInstance } from '@/h5/pages/detail/context/data.context';\nimport { ASSETS_PREFIX } from '@/h5/constants/assets.const';\n\nexport type MetaDataProps = {\n // 组件props\n};\n\n/**\n * @author kinghoo\n * @description 基礎信息展示\n * @version 0.1.0\n * @create 2024-02-5, 周一, 23:7\n */\nconst MetaData: React.FC = props => {\n const {\n state: { goodsName, price, discount, maxOut, originPrice, hasCollect },\n setData,\n } = useDataContext();\n\n const handleToggleCollect = useCallback(() => {\n setData('hasCollect', !dataContextInstance.state.hasCollect);\n }, []);\n\n return (\n \n {goodsName}\n \n
    \n {price}\n {originPrice}\n
    \n \n
    \n
    \n {discount || maxOut ? (\n
    \n {discount ? {discount} : null}\n {maxOut ? {maxOut} : null}\n
    \n ) : null}\n
    \n \n \n );\n};\n\nexport default React.memo(MetaData);\n","import styled from 'styled-components';\nimport { ASSETS_PREFIX } from '@/h5/constants/assets.const';\n\nexport const SkuInfoRow = styled.div`\n display: flex;\n flex-direction: row;\n border-bottom: 1px solid #efefef;\n padding: 16px 0;\n margin-bottom: 16px;\n\n &.is-last {\n //margin-bottom: 0;\n //border-bottom: none;\n }\n`;\n\nexport const SkuInfoItem = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n`;\n\nexport const SkuInfoTitle = styled.div`\n font-size: 14px;\n color: black;\n margin-bottom: 8px;\n text-align: center;\n`;\n\nexport const SkuInfoText = styled.div`\n font-size: 12px;\n color: #999999;\n text-align: center;\n`;\n\nexport const RemainCount = styled.div`\n font-size: 12px;\n color: #e84784;\n`;\n\nexport const GuaranteeContainer = styled.div`\n display: flex;\n flex-direction: row;\n padding: 10px 20px;\n align-items: center;\n background-color: #f0f5f8;\n border-radius: 8px;\n margin-bottom: 12px;\n\n &:last-child {\n margin-bottom: 0;\n }\n`;\n\nexport const GuaranteeIcon = styled.span`\n flex-shrink: 0;\n flex-grow: 0;\n min-width: 0;\n min-height: 0;\n margin-right: 8px;\n width: 20px;\n height: 20px;\n margin-right: 8px;\n background-size: contain;\n background-position: center;\n background-repeat: no-repeat;\n background-image: url(\"${ASSETS_PREFIX}h5/icon-guarantee.png\");\n`;\n\nexport const GuaranteeText = styled.div`\n flex-shrink: 1;\n flex-grow: 1;\n min-width: 0;\n min-height: 0;\n color: #004e8d;\n font-size: 12px;\n`;\n","// SkuInfo\nimport React from 'react';\nimport classnames from 'classnames';\nimport { PageCard } from '@/h5/pages/detail/ui.elements';\nimport { useDataContext } from '@/h5/pages/detail/context/data.context';\nimport {\n GuaranteeContainer,\n GuaranteeIcon,\n GuaranteeText,\n RemainCount,\n SkuInfoItem,\n SkuInfoRow,\n SkuInfoText,\n SkuInfoTitle,\n} from './elements';\n\nexport type SkuInfoProps = {\n // 组件props\n};\n\n/**\n * @author kinghoo\n * @description sku信息\n * @version 0.1.0\n * @create 2024-02-5, 周一, 23:44\n */\nconst SkuInfo: React.FC = props => {\n const {\n state: { sku },\n } = useDataContext();\n return (\n \n {sku?.infos?.map?.((row, rowIndex) => {\n const maxItemWidth = `${(1 / row.length) * 100}%`;\n return (\n \n {row.map((item, itemIndex) => {\n return (\n \n {item.title}\n {item.text}\n \n );\n })}\n \n );\n })}\n 庫存剩餘 {sku?.remainCount || 0} 件\n
    \n {sku?.customerRight?.map?.((text, index) => {\n return (\n \n \n {text}\n \n );\n })}\n
    \n
    \n );\n};\n\nexport default React.memo(SkuInfo);\n","import styled from 'styled-components';\n\nexport const FreightRow = styled.div`\n margin-bottom: 16px;\n display: flex;\n flex-direction: row;\n font-size: 14px;\n\n &:last-child {\n margin-bottom: 0;\n }\n`;\n\nexport const Title = styled.span`\n flex-shrink: 0;\n flex-grow: 0;\n min-width: 0;\n min-height: 0;\n margin-right: 16px;\n font-weight: bold;\n color: black;\n`;\n\nexport const Text = styled.span`\n flex-shrink: 1;\n flex-grow: 1;\n min-width: 0;\n min-height: 0;\n color: #4f4f4f;\n`;\n","// FreightInfo\nimport React from 'react';\nimport { PageCard } from '@/h5/pages/detail/ui.elements';\nimport { useDataContext } from '@/h5/pages/detail/context/data.context';\nimport { FreightRow, Text, Title } from '@/h5/pages/detail/components/freight-info/elements';\n\nexport type FreightInfoProps = {\n // 组件props\n};\n\n/**\n * @author kinghoo\n * @description 運費信息\n * @version 0.1.0\n * @create 2024-02-6, 周二, 0:29\n */\nconst FreightInfo: React.FC = props => {\n const {\n state: { freightInfo },\n } = useDataContext();\n return (\n \n {freightInfo?.map?.((item, index) => {\n return (\n \n {item.title}\n {item.text}\n \n );\n })}\n \n );\n};\n\nexport default React.memo(FreightInfo);\n","import styled from 'styled-components';\n\nexport const RichTextContainer = styled.div`\n width: 100%;\n\n &,\n & * {\n color: #4f4f4f;\n font-size: 14px;\n line-height: 19.6px;\n }\n\n pre {\n white-space: break-spaces;\n }\n\n img {\n width: 100% !important;\n max-width: 100% !important;\n height: auto !important;\n }\n\n p,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n h7,\n h8,\n h9 {\n margin-top: 12px;\n margin-bottom: 12px;\n\n &:first-child {\n margin-top: 0;\n }\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n h7,\n h8,\n h9 {\n color: black;\n }\n`;\n","// RichTextDisplay\nimport React from 'react';\nimport isString from 'lodash/isString';\nimport { RichTextContainer } from './elments';\n\nexport type RichTextDisplayProps = {\n children?: string;\n};\n\n/**\n * @author kinghoo\n * @description 富文本展示\n * @version 0.1.0\n * @create 2024-02-6, 周二, 23:57\n */\nconst RichTextDisplay = (props: RichTextDisplayProps) => {\n if (!props.children || !isString(props.children)) return null;\n return ;\n};\n\nexport default RichTextDisplay;\n","// GoodsDetail\nimport React from 'react';\nimport { useDataContext } from '@/h5/pages/detail/context/data.context';\nimport RichTextDisplay from '@/h5/components/rich-text-display';\nimport { PageCard } from '@/h5/pages/detail/ui.elements';\n\nexport type GoodsDetailProps = {\n // 组件props\n};\n\n/**\n * @author kinghoo\n * @description 商品詳情\n * @version 0.1.0\n * @create 2024-02-7, 周三, 0:10\n */\nconst GoodsDetail: React.FC = props => {\n const {\n state: { goodsDetail },\n } = useDataContext();\n return (\n \n {goodsDetail}\n \n );\n};\n\nexport default React.memo(GoodsDetail);\n","import styled from 'styled-components';\n\nexport const HeaderContainer = styled.div`\n display: flex;\n flex-direction: row;\n overflow: hidden;\n margin-bottom: 16px;\n align-items: flex-end;\n`;\n\nexport const HeaderTitle = styled.div`\n color: black;\n font-size: 20px;\n line-height: 22px;\n font-weight: bold;\n flex-shrink: 1;\n flex-grow: 1;\n min-width: 0;\n min-height: 0;\n`;\n\nexport const HeaderLink = styled.span`\n flex-shrink: 0;\n flex-grow: 0;\n min-width: 0;\n min-height: 0;\n font-size: 12px;\n color: #009bd1;\n`;\n","// Header\nimport React from 'react';\nimport { HeaderContainer, HeaderTitle, HeaderLink } from './elements';\n\nexport type HeaderProps = {\n title: string;\n linkText?: string;\n onLinkClick?: () => {};\n style?: React.CSSProperties;\n};\n\n/**\n * @author kinghoo\n * @description 標題組件\n * @version 0.1.0\n * @create 2024-02-7, 周三, 0:51\n */\nconst Header: React.FC = props => {\n const { linkText, onLinkClick, title, style } = props;\n return (\n \n {title}\n {linkText ? {linkText} : null}\n \n );\n};\n\nexport default Header;\n","// AttentionInfo\nimport React from 'react';\nimport { useDataContext } from '@/h5/pages/detail/context/data.context';\nimport { PageCard } from '@/h5/pages/detail/ui.elements';\nimport RichTextDisplay from '@/h5/components/rich-text-display';\nimport Header from '@/h5/components/header';\n\nexport type AttentionInfoProps = {\n // 组件props\n};\n\n/**\n * @author kinghoo\n * @description 注意事項\n * @version 0.1.0\n * @create 2024-02-7, 周三, 0:17\n */\nconst AttentionInfo: React.FC = props => {\n const {\n state: { attentionDetail },\n } = useDataContext();\n return (\n \n
    \n {attentionDetail}\n \n );\n};\n\nexport default React.memo(AttentionInfo);\n","import styled from 'styled-components';\nimport { Swiper } from 'swiper/react';\n\nexport const SwiperContainer = styled(Swiper)`\n width: 100%;\n padding: 16px 0;\n`;\n","import styled from 'styled-components';\n\nexport const CardContainer = styled.div`\n width: 155px;\n height: 212px;\n border-radius: 8px;\n display: flex;\n flex-direction: column;\n box-shadow: 0 0 4px 1px rgba(0, 0, 0, 0.1);\n`;\n\nexport const CardImage = styled.div`\n height: 101px;\n border-radius: 8px 8px 0 0;\n overflow: hidden;\n background-repeat: no-repeat;\n background-size: cover;\n background-position: center;\n flex-shrink: 0;\n flex-grow: 0;\n`;\n\nexport const CardContent = styled.div`\n flex-shrink: 1;\n flex-grow: 1;\n min-width: 0;\n min-height: 0;\n padding: 6px 10px;\n display: flex;\n flex-direction: column;\n`;\n\nexport const CardContentTitleArea = styled.div`\n flex-shrink: 1;\n flex-grow: 1;\n min-width: 0;\n min-height: 0;\n display: flex;\n flex-direction: column;\n`;\n\nexport const CardGoodsName = styled.span`\n font-size: 14px;\n line-height: 20px;\n color: black;\n font-weight: bold;\n -webkit-line-clamp: 2;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n overflow: hidden;\n`;\n\nexport const CardGoodsDesc = styled.span`\n font-size: 12px;\n line-height: 14px;\n color: #828282;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n margin-top: 6px;\n`;\n\nexport const CardContentSubInfo = styled.div`\n flex-shrink: 0;\n flex-grow: 0;\n min-width: 0;\n min-height: 0;\n height: 17px;\n display: flex;\n flex-direction: row;\n align-items: center;\n\n .static-item {\n flex-grow: 0;\n flex-shrink: 0;\n min-width: 0;\n min-height: 0;\n }\n\n .flex-item {\n flex-grow: 1;\n flex-shrink: 1;\n min-width: 0;\n min-height: 0;\n overflow: hidden;\n }\n`;\n\nexport const PriceText = styled.span`\n font-size: 14px;\n color: #004e8d;\n font-weight: 500;\n margin-right: 4px;\n`;\n\nexport const OriginText = styled.span`\n font-size: 12px;\n color: #828282;\n text-decoration: line-through;\n`;\n\nexport const HeartIcon = styled.span`\n width: 16px;\n height: 16px;\n background-size: contain;\n background-repeat: no-repeat;\n background-position: center;\n`;\n","// GoodsCard\nimport React, { useCallback, useRef } from 'react';\nimport isEmpty from 'lodash/isEmpty';\nimport { GoodsCardItem } from '@/h5/interface/goods.interface';\nimport {\n CardContainer,\n CardContent,\n CardContentSubInfo,\n CardContentTitleArea,\n CardGoodsDesc,\n CardGoodsName,\n CardImage,\n HeartIcon,\n OriginText,\n PriceText,\n} from './elements';\nimport { ASSETS_PREFIX } from '@/h5/constants/assets.const';\n\nexport type GoodsCardProps = {\n dataSource: GoodsCardItem;\n /** 點擊回調 */\n onClick?: (record: GoodsCardItem) => void;\n /** 點擊收藏回調 */\n onCollect?: (record: GoodsCardItem) => void;\n};\n\n/**\n * @author kinghoo\n * @description 商品卡片\n * @version 0.1.0\n * @create 2024-02-7, 周三, 20:44\n */\nconst GoodsCard: React.FC = props => {\n const { dataSource, onCollect, onClick } = props;\n const $dataSource = useRef(dataSource);\n $dataSource.current = dataSource;\n\n const $onClick = useRef(onClick);\n $onClick.current = onClick;\n\n const handleClick = useCallback(() => {\n $onClick.current?.($dataSource.current);\n }, []);\n\n if (isEmpty(dataSource)) return null;\n return (\n \n \n \n \n {dataSource.title}\n {dataSource.desc}\n \n \n
    \n {dataSource.price}\n {dataSource.originPrice}\n
    \n {\n e.preventDefault();\n e.stopPropagation();\n onCollect?.(dataSource);\n }}\n style={{\n backgroundImage: `url(${ASSETS_PREFIX}h5/${\n dataSource.isCollect ? 'heart-solid' : 'heart-hollow'\n }.png)`,\n }}\n />\n
    \n
    \n
    \n );\n};\n\nexport default GoodsCard;\n","// SimilarGoods\nimport React from 'react';\nimport { SwiperSlide } from 'swiper/react';\nimport { PageCard } from '@/h5/pages/detail/ui.elements';\nimport { useDataContext } from '@/h5/pages/detail/context/data.context';\nimport { SwiperContainer } from './elements';\nimport GoodsCard from '@/h5/components/goods-card';\nimport Header from '@/h5/components/header';\nimport 'swiper/swiper-bundle.css';\n\nexport type SimilarGoodsProps = {\n // 组件props\n};\n\n/**\n * @author kinghoo\n * @description 相似商品\n * @version 0.1.0\n * @create 2024-02-7, 周三, 0:31\n */\nconst SimilarGoods: React.FC = props => {\n const {\n state: { similarGoods },\n } = useDataContext();\n if (!similarGoods?.length) return null;\n return (\n \n
    \n \n {similarGoods.map((item, index) => {\n return (\n \n {}} />\n \n );\n })}\n \n \n );\n};\n\nexport default React.memo(SimilarGoods);\n","import styled from 'styled-components';\n\nexport const Header = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\n\nexport const Input = styled.input`\n padding: 10px 16px;\n height: 40px;\n border-radius: 20px;\n flex-shrink: 1;\n flex-grow: 1;\n min-width: 0;\n border: none !important;\n outline: none !important;\n background-color: #efefef;\n margin-right: 12px;\n`;\n\nexport const Button = styled.div`\n height: 36px;\n display: flex;\n flex-direction: row;\n align-items: center;\n font-size: 14px;\n font-weight: bold;\n color: white;\n border-radius: 18px;\n padding: 0 16px;\n background-color: #004e8d;\n`;\n\nexport const Content = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: 32px;\n`;\n\nexport const Title = styled.span`\n font-size: 16px;\n line-height: 22px;\n color: black;\n font-weight: bold;\n`;\n\nexport const ListContainer = styled.div`\n margin-top: 16px;\n`;\n\nexport const ListItem = styled.div`\n padding: 10px 0;\n margin-bottom: 10px;\n border-bottom: 1px solid #e0e0e0;\n display: flex;\n flex-direction: column;\n`;\n\nexport const ListTop = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\n\nexport const ListUserName = styled.div`\n flex-shrink: 1;\n flex-grow: 1;\n min-width: 0;\n min-height: 0;\n margin-right: 12px;\n font-size: 14px;\n line-height: 19.6px;\n color: black;\n font-weight: bold;\n`;\n\nexport const ListTime = styled.div`\n flex-shrink: 0;\n flex-grow: 0;\n min-width: 0;\n min-height: 0;\n color: #828282;\n font-size: 12px;\n line-height: 14px;\n`;\n\nexport const ListContent = styled.div`\n font-weight: 500;\n font-size: 14px;\n line-height: 19.6px;\n color: black;\n margin-top: 8px;\n`;\n","// Comments\nimport React from 'react';\nimport { PageCard } from '@/h5/pages/detail/ui.elements';\nimport {\n Button,\n Content,\n Header,\n Input,\n ListContainer,\n ListContent,\n ListItem,\n ListTime,\n ListTop,\n ListUserName,\n Title,\n} from './elements';\nimport { useDataContext } from '@/h5/pages/detail/context/data.context';\n\nexport type CommentsProps = {\n // 组件props\n};\n\n/**\n * @author kinghoo\n * @description 評論\n * @version 0.1.0\n * @create 2024-02-7, 周三, 0:32\n */\nconst Comments: React.FC = props => {\n const {\n state: { comments = [] },\n } = useDataContext();\n\n // TODO:翻頁後續由antd完成\n\n return (\n \n
    \n \n \n
    \n \n {comments.length}則留言\n \n {comments.map((comment, index) => {\n return (\n \n \n {comment.user}\n {comment.time}\n \n {comment.comment}\n \n );\n })}\n \n \n
    \n );\n};\n\nexport default React.memo(Comments);\n","/** 單項標識 */\nexport const ITEM_SYMBOL = Symbol('scroll-tab-item');\n\n/** 子容器向父容器通信 */\nexport const EVENT_CHANNEL = 'new-q3c-front__h5__scroll-tab-communicate';\n\n/** 父容器向子容器通信 */\nexport const EVENT_CHANNEL2CHILD = 'new-q3c-front__h5__scroll-tab-communicate__2-children';\n\nexport const TAB_HEIGHT = 50;\n","import EventEmitter from 'eventemitter3';\n\nexport const emitter = new EventEmitter();\n","import styled from 'styled-components';\nimport { TAB_HEIGHT } from './consts';\n\nexport const TabContainer = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n width: 100%;\n z-index: 9999;\n height: ${TAB_HEIGHT}px;\n background-color: white;\n padding: 8px 16px;\n box-shadow: 0 0 8px rgba(0, 0, 0, 0.1);\n opacity: 0;\n pointer-events: none;\n transition: all ease 0.3s;\n overflow-y: hidden;\n overflow-x: auto;\n white-space: nowrap;\n\n &.active {\n opacity: 1;\n pointer-events: all;\n }\n\n &::-webkit-scrollbar {\n display: none;\n }\n`;\n\nexport const TabItem = styled.div`\n height: ${TAB_HEIGHT - 16}px;\n padding: 0 12px;\n display: inline-flex;\n flex-direction: row;\n align-items: flex-start;\n font-size: 16px;\n line-height: 22px;\n color: black;\n margin-right: 8px;\n\n &:last-child {\n margin-right: 0;\n }\n\n &.active {\n color: #004e8d;\n border-bottom: 4px solid #004e8d;\n }\n`;\n\nexport const EmptyAnchor = styled.div`\n display: block;\n width: 100%;\n height: 0;\n margin: 0;\n padding: 0;\n`;\n","// ScrollTabItem\nimport React, { useCallback, useEffect, useRef } from 'react';\nimport { nanoid } from 'nanoid';\nimport throttle from 'lodash/throttle';\nimport { EVENT_CHANNEL, EVENT_CHANNEL2CHILD, ITEM_SYMBOL, TAB_HEIGHT } from './consts';\nimport { emitter } from '@/h5/utils/emitter';\nimport { EmptyAnchor } from './elements';\n\nexport type ScrollTabItemProps = {\n /** tab標題,[初始化確定不可更改] */\n tabName?: string;\n};\n\n/**\n * @author kinghoo\n * @description 分割項\n * @version 0.1.0\n * @create 2024-02-7, 周三, 22:40\n */\nconst _ScrollTabItem: React.FC = props => {\n const { tabName } = props;\n const $id = useRef('scroll-' + nanoid());\n const $containerSelector = useRef();\n const $anchor = useRef(null);\n const $hasSetContainerSelector = useRef(false);\n\n const $isHolding = useRef(false);\n\n const $handlerEl = useRef();\n\n const scrollHandler = useCallback(\n throttle((e: Event) => {\n if (!$anchor.current || $isHolding.current) return;\n\n const bodyEl = document.documentElement || document.body;\n const isBody = bodyEl === $handlerEl.current;\n const top = isBody ? $anchor.current.getBoundingClientRect().top : $anchor.current.offsetTop;\n\n const currentIsActive = ($handlerEl.current?.scrollTop || 0) >= top - TAB_HEIGHT;\n emitter.emit(EVENT_CHANNEL, {\n type: 'active',\n payload: {\n id: $id.current,\n value: currentIsActive,\n },\n });\n }, 60),\n [],\n );\n\n const registerScrollHandler = useCallback(() => {\n if (!$handlerEl.current) return;\n $handlerEl.current?.addEventListener('scroll', scrollHandler);\n console.log('log[事件註冊成功 ]--->', {\n tabName,\n id: $id.current,\n });\n }, []);\n\n const unRegisterScrollHandler = useCallback(() => {\n if (!$handlerEl.current) return;\n $handlerEl.current?.removeEventListener('scroll', scrollHandler);\n }, []);\n\n const handleEmit = useCallback(({ payload, type }: { type: string; payload: any }) => {\n switch (type) {\n case 'init': {\n if ($hasSetContainerSelector.current) return;\n $containerSelector.current = payload?.value;\n $hasSetContainerSelector.current = true;\n const bodyEl = document.documentElement || document.body;\n $handlerEl.current = $containerSelector.current\n ? document.querySelector($containerSelector.current) || bodyEl\n : bodyEl;\n registerScrollHandler();\n break;\n }\n case 'active': {\n if (payload?.id !== $id.current || !$anchor.current) {\n return;\n }\n $isHolding.current = true;\n const bodyEl = document.documentElement || document.body;\n const parentEl = $containerSelector.current\n ? document.querySelector($containerSelector.current) || bodyEl\n : bodyEl;\n const isBody = bodyEl === parentEl;\n const top = isBody\n ? $anchor.current.getBoundingClientRect().top\n : $anchor.current.offsetTop;\n\n const $parent = $(parentEl);\n $parent.animate(\n {\n scrollTop: top - TAB_HEIGHT,\n },\n 500,\n () => {\n setTimeout(() => {\n $isHolding.current = false;\n }, 200);\n },\n );\n break;\n }\n case 'holding': {\n if ($isHolding.current) return;\n $isHolding.current = true;\n setTimeout(() => {\n $isHolding.current = false;\n }, 700);\n break;\n }\n default:\n }\n }, []);\n\n useEffect(() => {\n emitter.on(EVENT_CHANNEL2CHILD, handleEmit);\n emitter.emit(EVENT_CHANNEL, {\n type: 'init',\n payload: {\n id: $id.current,\n value: tabName,\n },\n });\n return () => {\n emitter.off(EVENT_CHANNEL2CHILD, handleEmit);\n unRegisterScrollHandler();\n };\n }, []);\n return (\n <>\n \n {props.children}\n \n );\n};\n\ntype IInternalScrollTabItem = typeof _ScrollTabItem;\n\ninterface IScrollTabItem extends IInternalScrollTabItem {\n __scrollType: Symbol;\n}\n\nconst ScrollTabItem = _ScrollTabItem as IScrollTabItem;\n\nScrollTabItem.__scrollType = ITEM_SYMBOL;\n\nexport default ScrollTabItem;\n","// Tab\nimport React, { useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport throttle from 'lodash/throttle';\nimport classnames from 'classnames';\nimport { TabContainer, TabItem } from './elements';\n\nexport type TabRef = {\n /** 外部主動設置tab */\n setActiveTab: (tab: any) => void;\n};\n\nexport type TabProps = {\n dataSource: def.common.IOption[];\n /** 滾動容器,[初始化確定不可更改] */\n containerSelector?: string;\n /** tab變更 */\n onTabChange?: (tab: any) => void;\n /** 開始展示tab的高度 */\n scrollHeight: number;\n};\n\n/**\n * @author kinghoo\n * @description tab內容\n * @version 0.1.0\n * @create 2024-02-8, 周四, 20:50\n */\nconst Tab = React.forwardRef((props, ref) => {\n const { dataSource, containerSelector, onTabChange, scrollHeight } = props;\n\n const $scrollHeight = useRef(scrollHeight);\n $scrollHeight.current = scrollHeight;\n\n const [isActive, setIsActive] = useState(false);\n const [activeTab, setActiveTab] = useState(dataSource?.[0]?.value);\n\n const $isActive = useRef(isActive);\n $isActive.current = isActive;\n\n const $activeTab = useRef(activeTab);\n $activeTab.current = activeTab;\n\n const $onTabChange = useRef(onTabChange);\n $onTabChange.current = onTabChange;\n\n const handleClick = useCallback((id: any) => {\n if ($activeTab.current === id) return;\n setActiveTab(id);\n $onTabChange.current?.(id);\n }, []);\n\n const handleParentScroll = useCallback(\n throttle((e: Event) => {\n const scrollTop = (e.target as any)?.scrollTop;\n const nextState = scrollTop > $scrollHeight.current ? true : false;\n if ($isActive.current !== nextState) {\n setIsActive(nextState);\n }\n }, 200),\n [],\n );\n\n useImperativeHandle(\n ref,\n () => {\n return {\n setActiveTab: tab => {\n if (tab === $activeTab.current) return;\n setActiveTab(tab);\n },\n };\n },\n [],\n );\n\n useEffect(() => {\n setActiveTab(dataSource?.[0]?.value);\n }, [dataSource]);\n\n useEffect(() => {\n const bodyEl = document.documentElement || document.body;\n const parentEl = containerSelector\n ? document.querySelector(containerSelector) || bodyEl\n : bodyEl;\n parentEl.addEventListener('scroll', handleParentScroll);\n return () => {\n parentEl.removeEventListener('scroll', handleParentScroll);\n };\n }, []);\n\n return (\n \n {dataSource?.map?.(item => {\n return (\n {\n handleClick(item.value);\n }}\n >\n {item.label}\n \n );\n })}\n \n );\n});\n\nexport default Tab;\n","// ScrollTab\nimport React, { useCallback, useLayoutEffect, useRef, useState } from 'react';\nimport { EVENT_CHANNEL, EVENT_CHANNEL2CHILD } from './consts';\nimport { emitter } from '@/h5/utils/emitter';\nimport ScrollTabItem from './scroll-tab-item';\nimport Tab, { TabRef } from './tab';\n\nexport { ScrollTabItem };\n\nexport type ScrollTabProps = {\n /** 滾動容器,[初始化確定不可更改] */\n containerSelector?: string;\n /** 開始展示tab的高度 */\n scrollHeight?: number;\n};\n\n/**\n * @author kinghoo\n * @description 滾動tab\n * @warning 單個頁面不允許使用多個scrollTab容器,否則肯定會出問題!!!\n * @version 0.1.0\n * @create 2024-02-7, 周三, 0:22\n */\nconst _ScrollTab: React.FC = props => {\n const { containerSelector, scrollHeight = 200 } = props;\n const [tabs, setTabs] = useState([]);\n const $tabs = useRef(tabs);\n $tabs.current = tabs;\n\n const $activeCache = useRef>({});\n\n const $tab = useRef(null);\n\n const handleItemActive = useCallback((tab: any) => {\n if (!tab) return;\n emitter.emit(EVENT_CHANNEL2CHILD, {\n type: 'active',\n payload: {\n id: tab,\n value: containerSelector,\n },\n });\n emitter.emit(EVENT_CHANNEL2CHILD, {\n type: 'holding',\n });\n }, []);\n\n const handleSetTab = useCallback(() => {\n let lastActiveId: any;\n const tabIds = $tabs.current.map(item => item.value);\n for (const tabId of tabIds) {\n if ($activeCache.current[tabId]) {\n lastActiveId = tabId;\n }\n }\n\n if (lastActiveId) {\n $tab.current?.setActiveTab?.(lastActiveId);\n }\n }, []);\n\n const handleEmit = useCallback(({ payload, type }: { type: string; payload: any }) => {\n switch (type) {\n case 'init': {\n setTabs(prev => [\n ...prev,\n {\n label: payload?.value,\n value: payload?.id,\n },\n ]);\n\n // 通知子容器 父容器selector\n emitter.emit(EVENT_CHANNEL2CHILD, {\n type: 'init',\n payload: {\n id: payload?.id,\n value: containerSelector,\n },\n });\n break;\n }\n case 'active': {\n $activeCache.current[payload.id] = payload.value;\n handleSetTab();\n break;\n }\n default:\n }\n }, []);\n useLayoutEffect(() => {\n emitter.on(EVENT_CHANNEL, handleEmit);\n return () => {\n emitter.off(EVENT_CHANNEL, handleEmit);\n };\n }, []);\n return (\n <>\n \n {props.children}\n \n );\n};\n\ntype IInternalScrollTab = typeof _ScrollTab;\n\ninterface IScrollTab extends IInternalScrollTab {\n ScrollTabItem: typeof ScrollTabItem;\n}\n\nconst ScrollTab = _ScrollTab as IScrollTab;\n\nScrollTab.ScrollTabItem = ScrollTabItem;\n\nexport default ScrollTab;\n","// Content\nimport React from 'react';\nimport { PageContainer } from './ui.elements';\nimport Carousel from './components/carousel';\nimport MetaData from './components/meta-data';\nimport SkuInfo from './components/sku-info';\nimport FreightInfo from './components/freight-info';\nimport GoodsDetail from './components/goods-detail';\nimport AttentionInfo from './components/attention-info';\nimport SimilarGoods from './components/similar-goods';\nimport Comments from './components/comments';\nimport ScrollTab from '@/h5/components/scroll-tab';\n\n/**\n * @author kinghoo\n * @description 视图内容\n * @version 0.1.0\n * @create 2024-01-30, 周二, 23:28\n */\nconst Content = props => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default React.memo(Content);\n","// Logical\nimport React from 'react';\nimport useDemo from './hooks/use-demo';\n\n/**\n * @author kinghoo\n * @description 纯逻辑:初始化相关hooks挂载\n * @version 0.1.0\n * @create 2024-01-30, 周二, 23:29\n */\nconst Logical = props => {\n useDemo();\n return null;\n};\n\nexport default Logical;\n","// UseDemo\n// @description demo数据\n// @author kinghoo\n// @create 2024-01-30, 周二, 23:22\n\nimport { useEffect, useCallback } from 'react';\nimport { useDataContext } from '../context/data.context';\nimport { ASSETS_PREFIX } from '@/h5/constants/assets.const';\n\n/** demo数据生成 */\nexport default function useDemo() {\n const { setDataObject } = useDataContext();\n\n const getDemoData = useCallback(() => {\n setDataObject({\n carousels: [\n `${ASSETS_PREFIX}goods-demo/banner.png`,\n `${ASSETS_PREFIX}goods-demo/iphone.png`,\n `${ASSETS_PREFIX}goods-demo/new-phone.png`,\n `${ASSETS_PREFIX}goods-demo/repair.png`,\n ],\n goodsName:\n 'UAG 耐衝擊保護殼 手機殼 保護殼 防摔殼 素面 iPhone14 14 Pro Max 14 Pro 14 Plus 13 13 Pro Max 13 Pro 【S21】',\n price: 'NT$180',\n originPrice: 'NT$200',\n discount: '9折',\n maxOut: '滿$599免運',\n sku: {\n remainCount: 2,\n customerRight: ['七天鑑賞期內退貨免運費', '享原廠1年保固'],\n infos: [\n [\n {\n title: '尺寸',\n text: '15',\n },\n {\n title: '顏色',\n text: '綠色',\n },\n {\n title: '數量',\n text: '15',\n },\n ],\n [\n {\n title: '防水等級',\n text: 'IP68',\n },\n {\n title: '顏色',\n text: '綠色',\n },\n {\n title: '數量',\n text: '15',\n },\n ],\n ],\n },\n freightInfo: [\n {\n title: '超商取貨',\n text: '運費NT$60',\n },\n {\n title: '宅配到府',\n text: '單筆滿NT$599免運(大型商品除外)',\n },\n {\n title: '門市取貨',\n text: '免運費',\n },\n ],\n goodsDetail: `\n

    螢幕外觀破損,但圖像顯示正常、觸控也正常,這屬於外屏損壞,如圖像顯示異常或出現灰角、老化、不能觸控、溢漏等問題,則是內屏損壞。

    \n \n \n

    螢幕外觀破損,但圖像顯示正常、觸控也正常,這屬於外屏損壞,如圖像顯示異常或出現灰角、老化、不能觸控、溢漏等問題,則是內屏損壞。

    \n

    螢幕外觀破損,但圖像顯示正常、觸控也正常,這屬於外屏損壞,如圖像顯示異常或出現灰角、老化、不能觸控、溢漏等問題,則是內屏損壞。

    \n

    螢幕外觀破損,但圖像顯示正常、觸控也正常,這屬於外屏損壞,如圖像顯示異常或出現灰角、老化、不能觸控、溢漏等問題,則是內屏損壞。

    \n `,\n attentionDetail: `\n

    螢幕外觀破損,但圖像顯示正常、觸控也正常,這屬於外屏損壞,如圖像顯示異常或出現灰角、老化、不能觸控、溢漏等問題,則是內屏損壞。

    \n

    螢幕外觀破損,但圖像顯示正常、觸控也正常,這屬於外屏損壞,如圖像顯示異常或出現灰角、老化、不能觸控、溢漏等問題,則是內屏損壞。

    \n

    螢幕外觀破損,但圖像顯示正常、觸控也正常,這屬於外屏損壞,如圖像顯示異常或出現灰角、老化、不能觸控、溢漏等問題,則是內屏損壞。

    \n `,\n similarGoods: [\n {\n id: 1,\n pic: `${ASSETS_PREFIX}goods-demo/new-phone.png`,\n title:\n 'UAG 耐衝擊保護殼 手機殼 保護殼 防摔殼 素面 iPhone14 14 Pro Max 14 Pro 14 Plus 13 13 Pro Max 13 Pro 【S21】',\n desc:\n 'UAG 耐衝擊保護殼 手機殼 保護殼 防摔殼 素面 iPhone14 14 Pro Max 14 Pro 14 Plus 13 13 Pro Max 13 Pro 【S21】',\n isCollect: true,\n price: 'NT$180',\n originPrice: 'NT$200',\n },\n {\n id: 2,\n pic: `${ASSETS_PREFIX}goods-demo/new-phone.png`,\n title:\n 'UAG 耐衝擊保護殼 手機殼 保護殼 防摔殼 素面 iPhone14 14 Pro Max 14 Pro 14 Plus 13 13 Pro Max 13 Pro 【S21】',\n desc:\n 'UAG 耐衝擊保護殼 手機殼 保護殼 防摔殼 素面 iPhone14 14 Pro Max 14 Pro 14 Plus 13 13 Pro Max 13 Pro 【S21】',\n isCollect: false,\n price: 'NT$180',\n originPrice: 'NT$200',\n },\n {\n id: 3,\n pic: `${ASSETS_PREFIX}goods-demo/new-phone.png`,\n title:\n 'UAG 耐衝擊保護殼 手機殼 保護殼 防摔殼 素面 iPhone14 14 Pro Max 14 Pro 14 Plus 13 13 Pro Max 13 Pro 【S21】',\n desc:\n 'UAG 耐衝擊保護殼 手機殼 保護殼 防摔殼 素面 iPhone14 14 Pro Max 14 Pro 14 Plus 13 13 Pro Max 13 Pro 【S21】',\n isCollect: false,\n price: 'NT$180',\n originPrice: 'NT$200',\n },\n {\n id: 4,\n pic: `${ASSETS_PREFIX}goods-demo/new-phone.png`,\n title:\n 'UAG 耐衝擊保護殼 手機殼 保護殼 防摔殼 素面 iPhone14 14 Pro Max 14 Pro 14 Plus 13 13 Pro Max 13 Pro 【S21】',\n desc:\n 'UAG 耐衝擊保護殼 手機殼 保護殼 防摔殼 素面 iPhone14 14 Pro Max 14 Pro 14 Plus 13 13 Pro Max 13 Pro 【S21】',\n isCollect: false,\n price: 'NT$180',\n originPrice: 'NT$200',\n },\n {\n id: 5,\n pic: `${ASSETS_PREFIX}goods-demo/new-phone.png`,\n title:\n 'UAG 耐衝擊保護殼 手機殼 保護殼 防摔殼 素面 iPhone14 14 Pro Max 14 Pro 14 Plus 13 13 Pro Max 13 Pro 【S21】',\n desc:\n 'UAG 耐衝擊保護殼 手機殼 保護殼 防摔殼 素面 iPhone14 14 Pro Max 14 Pro 14 Plus 13 13 Pro Max 13 Pro 【S21】',\n isCollect: false,\n price: 'NT$180',\n originPrice: 'NT$200',\n },\n {\n id: 6,\n pic: `${ASSETS_PREFIX}goods-demo/new-phone.png`,\n title:\n 'UAG 耐衝擊保護殼 手機殼 保護殼 防摔殼 素面 iPhone14 14 Pro Max 14 Pro 14 Plus 13 13 Pro Max 13 Pro 【S21】',\n desc:\n 'UAG 耐衝擊保護殼 手機殼 保護殼 防摔殼 素面 iPhone14 14 Pro Max 14 Pro 14 Plus 13 13 Pro Max 13 Pro 【S21】',\n isCollect: false,\n price: 'NT$180',\n originPrice: 'NT$200',\n },\n {\n id: 7,\n pic: `${ASSETS_PREFIX}goods-demo/new-phone.png`,\n title:\n 'UAG 耐衝擊保護殼 手機殼 保護殼 防摔殼 素面 iPhone14 14 Pro Max 14 Pro 14 Plus 13 13 Pro Max 13 Pro 【S21】',\n desc:\n 'UAG 耐衝擊保護殼 手機殼 保護殼 防摔殼 素面 iPhone14 14 Pro Max 14 Pro 14 Plus 13 13 Pro Max 13 Pro 【S21】',\n isCollect: false,\n price: 'NT$180',\n originPrice: 'NT$200',\n },\n ],\n comments: [\n {\n comment: '真棒👍🏻!',\n time: '2023-03-08',\n user: '李*',\n },\n {\n comment: '真棒👍🏻!',\n time: '2023-03-08',\n user: '李*',\n },\n {\n comment: '真棒👍🏻!',\n time: '2023-03-08',\n user: '李*',\n },\n {\n comment: '真棒👍🏻!',\n time: '2023-03-08',\n user: '李*',\n },\n {\n comment: '真棒👍🏻!',\n time: '2023-03-08',\n user: '李*',\n },\n {\n comment: '真棒👍🏻!',\n time: '2023-03-08',\n user: '李*',\n },\n ],\n });\n }, []);\n\n useEffect(() => {\n getDemoData();\n }, []);\n}\n","// Detail\nimport React from 'react';\nimport Content from './ui';\nimport Logical from './logical';\nimport { DataContextProvider } from './context/data.context';\n\nexport type DetailProps = {\n // 组件props\n};\n\n/**\n * @author kinghoo\n * @description 商品详情页\n * @version 0.1.0\n * @create 2024-01-29, 周一, 22:17\n */\nconst Detail: React.FC = props => {\n return (\n \n \n \n \n );\n};\n\nexport default Detail;\n","import { storeCreator } from 'khooks-lib';\nimport { ASSETS_PREFIX } from '@/h5/constants/assets.const';\nimport {\n GoodsCardItem,\n IFunctionalItem,\n IGoodDescList,\n IGoodInfos,\n} from '@/h5/interface/goods.interface';\nimport { detailMock } from '@/h5/pages/second-hand/detail/mock/detail.mock';\nimport { deliverMock } from '@/h5/pages/second-hand/detail/mock/deliver.mock';\nimport { attentionMock } from '@/h5/pages/second-hand/detail/mock/attention.mock';\n\nconst initialStore = {\n /** 轮播图片列表 */\n carousels: [`${ASSETS_PREFIX}h5/empty-img.png`],\n /** 是否收藏 */\n hasCollect: false,\n /** 商品名稱 */\n goodsName: '' as string,\n /** SKU 信息 */\n sku: [\n // { title: '隨機碼', text: '623602' },\n // { title: '庫存門市', text: '雲林虎尾(全台可取機)' },\n // { title: '機型', text: 'iPhone 15 Plus' },\n // { title: '容量', text: '128G' },\n // { title: '顏色', text: '藍色' },\n // { title: '電池健康度', text: '99%' },\n // { title: '保固', text: '原廠保固範圍(開通超過1個月)' },\n // { title: '外觀', text: '外觀漂亮、無刮痕,盒裝配件完整' },\n // { title: '功能', text: '正常' },\n ] as IGoodInfos,\n /** meta信息 */\n meta: {\n /** 取货描述 */\n pickInfo: '',\n /** 价格 */\n price: '',\n /** 库存剩余 */\n remainCount: undefined as number | undefined,\n /** 用户权利 */\n customerRight: ['二手機保固三個月', '100%通過全功能檢驗'] as Array,\n },\n /** 相似商品 */\n similarGoods: [] as Array,\n /** 商品詳情 */\n goodsDetail: '',\n /** 送貨與付款方式 */\n deliverInfo: deliverMock,\n /** 注意事項 */\n attention: attentionMock,\n /** 检测报告 */\n detection: {\n rate: '',\n appearance: '些微使用痕跡',\n warranty: '原廠保固範圍',\n liberal: '開通超過1個月',\n /** 匯總消息 */\n summary: {\n /** 機器型號 */\n model: '',\n /** 信息 */\n info: [\n // { title: '購買管道', text: '通訊行' },\n // { title: '拆修痕跡', text: '無拆修痕跡' },\n // { title: '原廠保固範圍', text: '超過1個月' },\n // { title: '電池健康度', text: '93%' },\n // { title: '充電循環次數', text: '222' },\n // { title: 'IMEI', text: '356***449' },\n ] as IGoodInfos,\n /** 檢測員 */\n detector: ['張', '蕭'],\n },\n /** 內容物 */\n materials: [\n { text: '手機', value: { text: '1', color: 'blue' } },\n { text: '原廠包裝盒', value: { text: '1', color: 'blue' } },\n { text: 'Q哥二手機保固書', value: { text: '1', color: 'blue' } },\n ] as IGoodDescList,\n /** 外观检测 */\n appearanceInfo: {\n info: [\n { text: '機身彎曲', value: { text: '無', color: 'blue' } },\n { text: '機身凹陷', value: { text: '無', color: 'blue' } },\n { text: '機身划痕', value: { text: '些微使用痕跡', color: 'warn' } },\n { text: '螢幕划痕', value: { text: '明顯使用痕跡', color: 'error' } },\n { text: '拆修痕跡', value: { text: '無', color: 'blue' } },\n ] as IGoodDescList,\n pics: [\n `${ASSETS_PREFIX}seconds-demo/banner-1.png`,\n `${ASSETS_PREFIX}seconds-demo/banner-2.png`,\n `${ASSETS_PREFIX}seconds-demo/banner-3.png`,\n `${ASSETS_PREFIX}seconds-demo/banner-4.png`,\n `${ASSETS_PREFIX}seconds-demo/banner-4.png`,\n `${ASSETS_PREFIX}seconds-demo/banner-4.png`,\n ] as string[],\n summary: '外殼外觀輕微划痕、輕微磨損,外觀有自然使用痕跡,不影響正常功能,可放心購買。',\n },\n /** 功能檢測 */\n functionalCheck: [\n // { text: '螢幕顯示觸控正常', type: 'normal' },\n // { text: '振動器正常', type: 'normal' },\n // { text: '電池健康度93%', type: 'normal' },\n // { text: '音量鍵 ( 靜音 / + / - )正常', type: 'normal' },\n // { text: '前鏡頭模組正常', type: 'normal' },\n // { text: 'WiFi / 藍芽正常', type: 'normal' },\n // { text: '後鏡頭正常', type: 'normal' },\n // { text: '定位功能正常', type: 'normal' },\n // { text: '充電孔 / 耳機正常', type: 'normal' },\n // { text: '後鏡頭玻璃蓋正常', type: 'normal' },\n // { text: '開機模組正常', type: 'normal' },\n // { text: '陀螺儀 / 指南針正常', type: 'normal' },\n // { text: '指紋 / 臉部辨識正常', type: 'normal' },\n // { text: '主機板無漏電', type: 'normal' },\n // { text: '聽筒正常', type: 'normal' },\n // { text: '訊號通話輕微異常', type: 'warn' },\n // { text: '喇叭正常', type: 'normal' },\n // { text: 'NFC損壞', type: 'danger' },\n // { text: 'Apple ID鎖正常', type: 'normal' },\n ] as IFunctionalItem[],\n },\n};\n\nconst { storeInstance, Provider, useStoreContext } = storeCreator(initialStore);\n\nexport {\n storeInstance as $pageDataStore,\n Provider as PageDataProvider,\n useStoreContext as usePageData,\n};\n","export const deliverMock = `\n

    送貨方式

    \n

    二手機僅限實體門市付款取貨,全台門市皆可取機,下單後請等候電話通知取機。

    \n

    \n

    付款方式

    \n

    可使用現金、信用卡支付(高於現金價2%)。

    \n

    信用卡可分3、6、12、18、24期。

    \n`;\n","export const attentionMock = `\n
    \n1.中古機/福利機並非全新商品,請勿以全新商品做為標準,且無法参加任何原廠活動,EX:登入禮、早鳥禮...等等。商品經過檢測及修復的程序,其中可能包含進行維修或更換零組件等調整。\n2.中古機/福利機部分出廠後不可逆之功能,如防水、防塵勢必有所減損,故無法提供防水防塵機能保證,展示下架福利機, 可能會有部分螢幕老化、泛黃、烙印、暗/亮點、等不影響功能使用。\n3.實際出貨包裝配備可能與全新手機有些許不同,皆屬正常並不影響功能使用。\n4.超過本公司所提供之保固期限或有人為損壞情況(如:屏幕破裂、摔機、泡水...等),若有故障問題送修,則酌收檢測費300元。\n5.商品在多平台曝光,下單後有可能因在其他賣場售出,則須更改商品或顏色之情形。\n6.全新手機保固一年、從購買當天開始計算,購買後若有故障問題,則由本公司代送原廠維修中心或原廠授權維修中心,依照原廠維修中心所判定的保固方式為主。\n7.全新手機若經拆封或包裝有破損、撞傷之情形,則無法全額退費。\n
    \n`;\n","import styled from 'styled-components';\n\nexport const PageContainer = styled.div`\n width: 100vw;\n height: 100vh;\n overflow-x: hidden;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n background-color: #f1f1f1;\n padding-bottom: 32px;\n\n &::-webkit-scrollbar {\n display: none;\n }\n\n .flex-row {\n display: flex;\n flex-direction: row;\n align-items: center;\n }\n\n .flex-column {\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n\n .flex-static {\n flex-grow: 0;\n flex-shrink: 0;\n }\n\n .flex-reactive {\n flex-grow: 1;\n flex-shrink: 1;\n min-width: 0;\n min-height: 0;\n }\n\n .contain-bg {\n background-repeat: no-repeat;\n background-position: center;\n background-size: contain;\n }\n\n .cover-bg {\n background-repeat: no-repeat;\n background-position: center;\n background-size: cover;\n }\n`;\n\nexport const PageCard = styled.div`\n background-color: #fff;\n padding: 12px;\n`;\n","import styled from 'styled-components';\nimport { Swiper, SwiperSlide } from 'swiper/react';\n\nexport const Container = styled.div`\n width: 100%;\n position: relative;\n`;\n\nexport const SwiperContainer = styled(Swiper)`\n width: 100%;\n background-color: #f1f1f1;\n position: relative;\n z-index: 1;\n`;\n\nexport const SwiperImage = styled.div`\n width: 100%;\n height: 0;\n padding-top: 100%;\n top: 0;\n left: 0;\n background-repeat: no-repeat;\n background-position: center center;\n background-size: contain;\n`;\n\nexport const PaginationContainer = styled.div`\n position: absolute;\n font-size: 12px;\n bottom: 16px;\n right: 16px;\n z-index: 2;\n color: #999999;\n background-color: #f1f1f1;\n height: 18px;\n padding: 0 9px;\n border-radius: 8px;\n display: flex;\n justify-content: center;\n align-items: center;\n line-height: 1;\n box-shadow: 0 0 4px rgba(0, 0, 0, 0.1);\n`;\n\nexport const NavContainer = styled.div`\n width: 100%;\n display: block;\n white-space: nowrap;\n overflow: auto;\n margin-top: 12px;\n\n &::-webkit-scrollbar {\n display: none;\n }\n`;\n\nexport const NavItem = styled.div`\n display: inline-block;\n width: 72px;\n height: 72px;\n background-repeat: no-repeat;\n background-position: center center;\n background-size: contain;\n border: 2px solid #f1f1f1;\n margin-right: 8px;\n\n &.current-active {\n border-color: #004e8d;\n }\n\n &:last-child {\n margin-right: 0;\n }\n`;\n","// Carousel\nimport React, { useRef, useState } from 'react';\nimport { SwiperSlide, Swiper } from 'swiper/react';\nimport SwiperCore, { Autoplay } from 'swiper';\nimport classnames from 'classnames';\nimport {\n Container,\n NavContainer,\n NavItem,\n PaginationContainer,\n SwiperContainer,\n SwiperImage,\n} from './elements';\nimport { usePageData } from '../../context/page-data.context';\nimport { PageCard } from '../../elements';\nimport useNavScroll from './use-nav-scroll';\nimport 'swiper/swiper-bundle.css';\n\nSwiperCore.use([Autoplay]);\n\nexport type CarouselProps = {\n // 组件props\n};\n\n/**\n * @author kinghoo\n * @description 顶部轮播组件\n * @version 0.1.0\n * @create 2024-02-1, 周四, 22:49\n */\nconst Carousel: React.FC = props => {\n const {\n state: { carousels: carouseList = [] },\n } = usePageData();\n\n const $swiper = useRef();\n\n const [currentIndex, setCurrent] = useState(0);\n const $clickRef = useRef(false);\n\n const { $scrollContainer } = useNavScroll({\n dataLen: carouseList.length,\n currentIndex,\n $clickRef,\n });\n\n return (\n \n \n 1}\n spaceBetween={5}\n autoplay={{\n delay: 5000,\n disableOnInteraction: false,\n }}\n onSlideChange={swiper => {\n setCurrent(swiper.realIndex);\n }}\n onSwiper={swiper => {\n $swiper.current = swiper;\n setCurrent(swiper.realIndex);\n }}\n >\n {carouseList.map((url, index) => {\n return (\n \n \n \n );\n })}\n \n \n {currentIndex + 1} / {carouseList?.length || 0}\n \n \n {carouseList?.length > 1 ? (\n \n {carouseList.map((url, index) => {\n return (\n {\n if (index == currentIndex) {\n return;\n }\n $clickRef.current = true;\n $swiper.current?.slideToLoop(index);\n }}\n key={`${index}_${url}`}\n style={{\n backgroundImage: `url(${url})`,\n }}\n />\n );\n })}\n \n ) : null}\n \n );\n};\n\nexport default React.memo(Carousel);\n","import { useState, useEffect, useRef, useCallback } from 'react';\n\ntype IConfig = {\n dataLen: number;\n currentIndex: number;\n $clickRef: React.MutableRefObject;\n};\n\n/** 处理导航图片滚动 */\nexport default function useNavScroll(config: IConfig) {\n const { dataLen, $clickRef, currentIndex } = config;\n const $currentIndex = useRef(currentIndex);\n $currentIndex.current = currentIndex;\n const $dataLen = useRef(dataLen);\n $dataLen.current = dataLen;\n\n const $scrollContainer = useRef(null);\n\n // 根据index自动滚动\n const handleScroll = useCallback(() => {\n if (!$dataLen.current || !$scrollContainer.current) return;\n const currentItem = $scrollContainer.current.querySelector(\n `.data-item-${$currentIndex.current}`,\n ) as HTMLDivElement;\n if (!currentItem) return;\n const left = currentItem.offsetLeft - 12;\n $($scrollContainer.current).animate({\n scrollLeft: left,\n });\n }, []);\n\n useEffect(() => {\n // index切换开始处理滚动\n if ($clickRef.current) {\n $clickRef.current = false;\n return;\n }\n\n handleScroll();\n }, [currentIndex]);\n\n return {\n $scrollContainer,\n };\n}\n","// MainInfo\nimport React from 'react';\nimport styled from 'styled-components';\nimport { usePageData } from '../../context/page-data.context';\nimport { PageCard } from '../../elements';\n\nconst GoodsTitle = styled.div`\n font-size: 20px;\n line-height: 28px;\n font-weight: 700;\n color: black;\n`;\n\nconst SkuContainer = styled.div`\n margin-top: 24px;\n font-size: 14px;\n line-height: 1;\n color: #4f4f4f;\n\n .sku-row {\n align-items: flex-start;\n margin-bottom: 8px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n .sku-title {\n margin-right: 8px;\n }\n`;\n\nexport type MainInfoProps = {\n // 组件props\n};\n\n/**\n * @author kinghoo\n * @description 商品主要信息\n * @version 0.1.0\n * @create 2024-03-9, 周六, 22:8\n */\nconst MainInfo = (props: React.PropsWithChildren) => {\n const {\n state: { goodsName, sku = [] },\n } = usePageData();\n\n return (\n \n {goodsName}\n \n {sku.map((item, index) => {\n return (\n
    \n
    {item.title}:
    \n
    {item.text}
    \n
    \n );\n })}\n
    \n \n );\n};\n\nexport default MainInfo;\n","// MetaInfo\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport styled from 'styled-components';\nimport classnames from 'classnames';\nimport { PlusCircleFilled, MinusCircleFilled } from '@ant-design/icons';\nimport { usePageData } from '../../context/page-data.context';\nimport { PageCard } from '../../elements';\nimport Button from '@/h5/components/button';\nimport { ASSETS_PREFIX } from '@/h5/constants/assets.const';\n\nconst Title = styled.div`\n height: 24px;\n border-left: 4px solid #e84784;\n display: flex;\n flex-direction: row;\n align-items: center;\n padding-left: 8px;\n color: #282828;\n font-size: 14px;\n`;\n\nconst Price = styled.div`\n color: #004e8d;\n font-size: 18px;\n line-height: 25px;\n margin-top: 16px;\n`;\n\nconst CountSelectContainer = styled.div`\n margin-top: 16px;\n`;\nconst CountSelectTitle = styled.div`\n color: #828282;\n font-size: 12px;\n line-height: 17px;\n`;\n\nconst CountSelect = styled.div`\n margin-top: 6px;\n border: 1px solid #bdbdbd;\n border-radius: 4px;\n padding: 12px;\n\n .opt-icon {\n color: #009bd1;\n font-size: 28px;\n\n &-disable {\n color: #bdbdbd;\n pointer-events: none;\n }\n }\n\n .count-text {\n color: black;\n font-size: 16px;\n text-align: center;\n }\n`;\n\nconst CountTip = styled.div`\n margin-top: 16px;\n font-size: 14px;\n color: #e84784;\n line-height: 20px;\n`;\n\nexport const GuaranteeContainer = styled.div`\n display: flex;\n flex-direction: row;\n padding: 10px 20px;\n align-items: center;\n background-color: #f0f5f8;\n border-radius: 8px;\n margin-bottom: 12px;\n\n &:last-child {\n margin-bottom: 0;\n }\n`;\n\nexport const GuaranteeIcon = styled.span`\n flex-shrink: 0;\n flex-grow: 0;\n min-width: 0;\n min-height: 0;\n margin-right: 8px;\n width: 20px;\n height: 20px;\n margin-right: 8px;\n background-size: contain;\n background-position: center;\n background-repeat: no-repeat;\n background-image: url(\"${ASSETS_PREFIX}h5/icon-guarantee.png\");\n`;\n\nexport const GuaranteeText = styled.div`\n flex-shrink: 1;\n flex-grow: 1;\n min-width: 0;\n min-height: 0;\n color: #004e8d;\n font-size: 12px;\n`;\n\n/**\n * @author kinghoo\n * @description 基础信息&购买功能\n * @version 0.1.0\n * @create 2024-03-9, 周六, 22:31\n */\nconst MetaInfo = () => {\n const {\n state: { meta },\n } = usePageData();\n\n const [count, setCount] = useState(0);\n const $count = useRef(count);\n $count.current = count;\n const $remainCount = useRef(meta.remainCount);\n $remainCount.current = meta.remainCount;\n\n const handleCount = useCallback((type: 'increase' | 'decrease' = 'increase') => {\n return () => {\n switch (type) {\n case 'decrease': {\n if ($count.current <= 0) return;\n setCount(prev => prev - 1);\n break;\n }\n case 'increase': {\n if ($count.current >= ($remainCount.current || 0)) return;\n setCount(prev => prev + 1);\n break;\n }\n default:\n }\n };\n }, []);\n\n useEffect(() => {\n if (meta.remainCount) {\n setCount(1);\n } else {\n setCount(0);\n }\n }, [meta.remainCount]);\n\n const isMinusDisable = count <= 0 || !meta.remainCount;\n const isPlusDisable = count >= (meta.remainCount || 0);\n\n return (\n \n {meta.pickInfo}\n {meta.price}\n {/**/}\n {/* 数量*/}\n {/* */}\n {/* */}\n {/* {count}*/}\n {/* */}\n {/* */}\n {/* 庫存只剩下{meta?.remainCount || 0}件*/}\n {/**/}\n {/*
    */}\n {/* */}\n {/* */}\n {/*
    */}\n
    \n {meta.customerRight.map((text, index) => {\n return (\n \n \n {text}\n \n );\n })}\n
    \n
    \n );\n};\n\nexport default MetaInfo;\n","// GoodsDetail\nimport React, { useCallback, useEffect, useRef } from 'react';\nimport debounce from 'lodash/debounce';\nimport RichTextDisplay from '@/h5/components/rich-text-display';\nimport { usePageData } from '../../context/page-data.context';\nimport { PageCard } from '../../elements';\nimport Header from '@/h5/components/header';\n\nexport type GoodsDetailProps = {\n onTopChange?: (top: number) => void;\n};\n\n/**\n * @author kinghoo\n * @description 商品詳情\n * @version 0.1.0\n * @create 2024-03-10, 周日, 0:37\n */\nconst GoodsDetail = (props: GoodsDetailProps) => {\n const $onTopChange = useRef(props.onTopChange);\n $onTopChange.current = props.onTopChange;\n const {\n state: { goodsDetail },\n } = usePageData();\n\n const $container = useRef(null);\n\n const handleCalculateHeight = useCallback(\n debounce(() => {\n if (!$container.current) return;\n const top = $container.current.offsetTop;\n $onTopChange.current?.(top);\n }),\n [],\n );\n\n useEffect(() => {\n handleCalculateHeight();\n });\n\n return (\n \n
    \n {goodsDetail}\n \n );\n};\n\nexport default GoodsDetail;\n","// CardItem\nimport React from 'react';\nimport styled from 'styled-components';\n\nconst CardItemContainer = styled.div`\n padding: 12px 0;\n position: relative;\n\n &::after {\n position: absolute;\n right: 22px;\n bottom: 0;\n left: 22px;\n border-top: 1px solid #e0e0e0;\n content: '';\n }\n`;\n\nexport type CardItemProps = {\n style?: React.CSSProperties;\n};\n\n/**\n * @author kinghoo\n * @description 卡片项\n * @version 0.1.0\n * @create 2024-03-10, 周日, 13:34\n */\nconst CardItem = (props: React.PropsWithChildren) => {\n return {props.children};\n};\n\nexport default CardItem;\n","// SummaryInfo\nimport React from 'react';\nimport styled from 'styled-components';\nimport CardItem from './card-item';\nimport { usePageData } from '@/h5/pages/second-hand/detail/context/page-data.context';\nimport { ASSETS_PREFIX } from '@/h5/constants/assets.const';\n\nconst Container = styled.div`\n padding: 0 32px;\n`;\n\nconst Title = styled.div`\n font-size: 14px;\n color: black;\n font-weight: 700;\n`;\n\nconst InfoContainer = styled.div`\n padding-top: 4px;\n display: flex;\n flex-wrap: wrap;\n`;\n\nconst InfoBlock = styled.div`\n flex: 0 0 calc((100% - 28px) / 3);\n margin-top: 12px;\n display: inline-block;\n padding: 14px 6px 4px;\n background-color: #f4fafd;\n border-radius: 4px;\n margin-right: 14px;\n\n &:nth-child(3n) {\n margin-right: 0;\n }\n`;\nconst InfoValue = styled.div`\n font-size: 14px;\n font-weight: 700;\n line-height: 19.6px;\n color: #4f4f4f;\n`;\nconst InfoTitle = styled.div`\n color: #828282;\n font-size: 12px;\n line-height: 14px;\n margin-top: 8px;\n`;\n\nconst GuardTitle = styled.div`\n color: #4f4f4f;\n font-size: 14px;\n font-weight: 700;\n line-height: 19.6px;\n padding-right: 12px;\n`;\nconst GuardDetectorCard = styled.div`\n display: inline-flex;\n height: 32px;\n border-radius: 16px;\n background-color: #f3f6f9;\n font-size: 12px;\n color: #000000;\n align-items: center;\n padding: 0 16px;\n margin-right: 8px;\n margin-top: 8px;\n\n &:last-child {\n margin-right: 0;\n }\n`;\n\n/**\n * @author kinghoo\n * @description 匯總信息\n * @version 0.1.0\n * @create 2024-03-10, 周日, 13:40\n */\nconst SummaryInfo = () => {\n const {\n state: {\n detection: { summary },\n },\n } = usePageData();\n return (\n \n \n 機器型號: {summary.model}\n \n {summary.info.map((info, index) => {\n return (\n \n {info.text}\n {info.title}\n \n );\n })}\n \n
    \n 檢測員\n
    \n {summary.detector.map((item, index) => {\n return (\n \n 檢測員{index + 1}:{item}\n \n );\n })}\n
    \n \n
    \n
    \n
    \n );\n};\n\nexport default SummaryInfo;\n","// Accordion\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport classnames from 'classnames';\nimport { DownCircleFilled } from '@ant-design/icons';\nimport styled from 'styled-components';\n\nconst Container = styled.div`\n .accordion-icon {\n color: #009bd1;\n font-size: 20px;\n transition: transform 0.3s ease;\n\n &-open {\n transform: rotate(180deg);\n }\n }\n`;\nconst Header = styled.div`\n padding: 20px 22px;\n`;\nconst HeaderTitle = styled.div`\n color: #4f4f4f;\n font-size: 14px;\n line-height: 19.6px;\n font-weight: 700;\n padding-right: 12px;\n`;\nconst HeaderSubTitle = styled.div`\n color: #bdbdbd;\n font-size: 12px;\n line-height: 16.8px;\n font-weight: 700;\n padding-right: 12px;\n`;\nconst Body = styled.div`\n padding: 20px 22px;\n background-color: #f1f1f1;\n`;\n\nexport type AccordionProps = {\n title?: string;\n subTitle?: string;\n contentStyle?: React.CSSProperties;\n style?: React.CSSProperties;\n headerStyle?: React.CSSProperties;\n isDefaultOpen?: boolean;\n};\n\n/**\n * @author kinghoo\n * @description 手風琴組件\n * @version 0.1.0\n * @create 2024-03-10, 周日, 14:30\n */\nconst Accordion = (props: React.PropsWithChildren) => {\n const { contentStyle, headerStyle, style, subTitle, title, children, isDefaultOpen } = props;\n const [open, setOpen] = useState(!!isDefaultOpen);\n const $open = useRef(open);\n $open.current = open;\n\n const $content = useRef(null);\n\n const doAnimate = useCallback(() => {\n if (!$content.current) return;\n\n $($content.current)\n .stop(true, false)\n [$open.current ? 'slideDown' : 'slideUp'](500);\n }, []);\n\n const toggleOpen = useCallback(() => {\n $open.current = !$open.current;\n setOpen($open.current);\n doAnimate();\n }, []);\n\n useEffect(() => {\n if (isDefaultOpen) {\n doAnimate();\n }\n }, []);\n\n return (\n \n
    \n {title || ' '}\n {subTitle || ' '}\n
    \n \n
    \n
    \n \n {children}\n \n
    \n );\n};\n\nexport default Accordion;\n","// LineList\nimport React from 'react';\nimport styled from 'styled-components';\nimport { IGoodDescList } from '@/h5/interface/goods.interface';\n\nconst Container = styled.div``;\nconst LineRow = styled.div`\n margin-bottom: 16px;\n\n &:last-child {\n margin-bottom: 0;\n }\n`;\nconst LineText = styled.div`\n font-size: 14px;\n color: #4f4f4f;\n line-height: 19.6px;\n padding-right: 16px;\n font-weight: 500;\n`;\n\nconst Line = styled.div`\n height: 1px;\n background-color: #e0e0e0;\n`;\n\nconst LineValue = styled.div`\n font-size: 14px;\n line-height: 19.6px;\n font-weight: 500;\n padding-left: 16px;\n`;\n\n/** 如果存在枚舉就是用,否則使用自定義color */\nconst COLOR_MAP = {\n blue: '#009BD1',\n warn: '#F3BB1C',\n error: '#b13634',\n};\nexport type LineListProps = {\n /** 数据源 */\n dataSource?: IGoodDescList;\n style?: React.CSSProperties;\n};\n\n/**\n * @author kinghoo\n * @description 线条列表\n * @version 0.1.0\n * @create 2024-03-10, 周日, 15:1\n */\nconst LineList = (props: React.PropsWithChildren) => {\n const { dataSource = [] } = props;\n return (\n \n {dataSource.map((item, index) => {\n return (\n \n {item.text}\n \n \n {item.value.text}\n \n \n );\n })}\n \n );\n};\n\nexport default LineList;\n","// FunctionalList\nimport React from 'react';\nimport { CheckCircleFilled, WarningFilled, CloseCircleFilled } from '@ant-design/icons';\nimport styled from 'styled-components';\nimport { IFunctionalItem } from '@/h5/interface/goods.interface';\n\nconst Container = styled.div`\n .tip-icon {\n margin-right: 8px;\n font-size: 16px;\n }\n`;\n\nconst Item = styled.div`\n display: inline-flex !important;\n width: calc((100% - 20px) / 2);\n margin-right: 16px;\n margin-bottom: 16px;\n\n &:nth-child(2n) {\n margin-right: 0;\n }\n`;\n\nconst Text = styled.div`\n font-size: 12px;\n line-height: 16.8px;\n font-weight: 500;\n color: #4f4f4f;\n`;\n\nconst ICON_MAP = {\n normal: ,\n warn: ,\n danger: ,\n};\n\nexport type FunctionalListProps = {\n dataSource?: IFunctionalItem[];\n style?: React.CSSProperties;\n};\n\n/**\n * @author kinghoo\n * @description 功能列表\n * @version 0.1.0\n * @create 2024-03-10, 周日, 16:29\n */\nconst FunctionalList = (props: React.PropsWithChildren) => {\n return (\n \n {props.dataSource?.map?.((item, index) => {\n return (\n \n {ICON_MAP[item.type] || ''}\n {item.text}\n \n );\n })}\n \n );\n};\n\nexport default FunctionalList;\n","// PicInfoCard\nimport React from 'react';\nimport styled from 'styled-components';\n\nconst Container = styled.div`\n padding: 24px 22px 0;\n`;\n\nconst CardItem = styled.div`\n margin-bottom: 16px;\n border-radius: 4px;\n overflow: hidden;\n box-shadow: 0 0 8px #004e8d1a;\n\n &:last-child {\n margin-bottom: 0;\n }\n`;\n\nconst CardContent = styled.div`\n padding: 16px 24px;\n\n .pic-info-title {\n color: #009bd1;\n font-weight: 700;\n font-size: 16px;\n line-height: 22px;\n }\n\n .pic-info-desc-content {\n margin-top: 12px;\n\n .pic-info-desc {\n margin-top: 4px;\n color: #4f4f4f;\n font-weight: 500;\n font-size: 14px;\n line-height: 20px;\n\n &::before {\n flex-grow: 0;\n flex-shrink: 0;\n width: 8px;\n height: 8px;\n margin-right: 8px;\n background-color: #009bd1;\n border-radius: 50%;\n content: '';\n }\n\n &:first-child {\n margin-top: 0;\n }\n }\n }\n`;\n\nexport type PicInfoCardProps = {\n style?: React.CSSProperties;\n dataSource?: Array<{\n pic: string;\n title: string;\n desc: string[];\n }>;\n};\n\n/**\n * @author kinghoo\n * @description 圖文卡片\n * @version 0.1.0\n * @create 2024-03-10, 周日, 16:55\n */\nconst PicInfoCard = (props: React.PropsWithChildren) => {\n const { dataSource = [] } = props;\n return (\n \n {dataSource.map((item, index) => {\n return (\n \n \n \n
    {item.title}
    \n {item?.desc?.length ? (\n
    \n {item.desc.map((desc, index) => {\n return (\n
    \n {desc}\n
    \n );\n })}\n
    \n ) : null}\n
    \n
    \n );\n })}\n
    \n );\n};\n\nexport default PicInfoCard;\n","// GuaranteeBanner\nimport React from 'react';\nimport styled from 'styled-components';\nimport { ASSETS_PREFIX } from '@/h5/constants/assets.const';\n\nconst Container = styled.div`\n margin-top: 20px;\n padding: 18px 0;\n background-color: #004579;\n color: white;\n justify-content: center;\n`;\n\nconst Icon = styled.div`\n width: 56px;\n height: 64px;\n background-image: url(\"${ASSETS_PREFIX}h5/icon-guard.png\");\n margin-right: 18px;\n`;\n\nconst ContentTop = styled.div`\n font-size: 16px;\n font-weight: 700;\n line-height: 1;\n`;\nconst MainText = styled.div`\n font-size: 28px;\n font-weight: 900;\n margin-top: 8px;\n line-height: 1;\n`;\nconst ContentBottom = styled.div`\n font-size: 12px;\n margin-top: 8px;\n line-height: 1;\n`;\n\nexport type GuaranteeBannerProps = {\n // 组件props\n};\n\n/**\n * @author kinghoo\n * @description 保障banner\n * @version 0.1.0\n * @create 2024-03-10, 周日, 20:42\n */\nconst GuaranteeBanner = (props: React.PropsWithChildren) => {\n return (\n \n
    \n \n
    \n High Quality Service\n Q哥維修保固3個月\n 有問題會門市立即幫您處理 | 完整的售後服務\n
    \n
    \n
    \n );\n};\n\nexport default GuaranteeBanner;\n","// GuaranteeList\nimport React from 'react';\nimport styled from 'styled-components';\n\nconst Container = styled.div`\n margin-top: 24px;\n padding: 0 22px;\n`;\n\nconst ListItem = styled.div`\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n color: #4f4f4f;\n margin-top: 8px;\n\n span {\n color: #009bd1;\n }\n\n &::before {\n flex-grow: 0;\n flex-shrink: 0;\n width: 8px;\n height: 8px;\n margin-right: 8px;\n background-color: #009bd1;\n border-radius: 50%;\n content: '';\n }\n\n &:first-child {\n margin-top: 0;\n }\n`;\n\nexport type GuaranteeListProps = {};\n\n/**\n * @author kinghoo\n * @description 保障列表\n * @version 0.1.0\n * @create 2024-03-10, 周日, 21:3\n */\nconst GuaranteeList = (props: React.PropsWithChildren) => {\n return (\n \n \n
    \n 售後保固\n 「3個月」\n ,任何問題都可以\n 「回門市處理」。\n
    \n
    \n \n
    \n 所有二手機都\n 「經過檢驗」\n ,阻絕違法手機來源。\n
    \n
    \n \n
    \n 購買二手機享\n 「周邊配件9折」\n 優惠。\n
    \n
    \n \n
    \n 「會員點數加碼」\n 回饋。\n
    \n
    \n
    \n );\n};\n\nexport default GuaranteeList;\n","// Guarantee\nimport React from 'react';\nimport styled from 'styled-components';\nimport { ASSETS_PREFIX } from '@/h5/constants/assets.const';\nimport PicInfoCard from './pic-info-card';\nimport GuaranteeBanner from './guarantee-banner';\nimport GuaranteeList from './guarantee-list';\n\nconst PLAT_GUARANTEE = [\n {\n pic: `${ASSETS_PREFIX}h5/img-check.png`,\n title: '零件、系統檢查',\n desc: ['瑕疵小零件換新', '全機系統檢查認證'],\n },\n {\n pic: `${ASSETS_PREFIX}h5/img-verify.png`,\n title: '續航力認證',\n desc: ['電池健康度檢查', '容量低於90%就換新'],\n },\n {\n pic: `${ASSETS_PREFIX}h5/img-clean.png`,\n title: '全機深度清潔',\n desc: ['完整消毒、全機清潔', '還給手機原本的質感'],\n },\n];\n\nconst Container = styled.div`\n padding-top: 24px;\n`;\nconst Header = styled.div`\n align-items: center;\n\n .catchword {\n margin-top: 28px;\n color: #004e8d;\n font-weight: 900;\n font-size: 32px;\n line-height: 35.2px;\n }\n`;\n\nexport type GuaranteeProps = {\n // 组件props\n};\n\n/**\n * @author kinghoo\n * @description 保障信息\n * @version 0.1.0\n * @create 2024-03-10, 周日, 16:46\n */\nconst Guarantee = (props: React.PropsWithChildren) => {\n return (\n \n
    \n \n
    100%通過檢驗
    \n
    \n \n \n \n
    \n );\n};\n\nexport default Guarantee;\n","// Card\nimport React from 'react';\nimport styled from 'styled-components';\nimport { usePageData } from '../../../context/page-data.context';\nimport { ASSETS_PREFIX } from '@/h5/constants/assets.const';\nimport SummaryInfo from './summary-info';\nimport Accordion from './accordion';\nimport CardItem from './card-item';\nimport LineList from './line-list';\nimport TagCard from './tag-card';\nimport PicList from './pic-list';\nimport FunctionalList from './functional-list';\nimport Guarantee from './guarantee';\n\nconst CardContainer = styled.div`\n margin: 0 -12px;\n`;\nconst CardHeader = styled.div`\n width: 100%;\n height: 0;\n padding-top: 58.99%;\n background-image: url(\"${ASSETS_PREFIX}h5/detection-card-title.png\");\n background-size: contain;\n background-repeat: no-repeat;\n background-position: center top;\n position: relative;\n\n .info-card {\n position: absolute;\n padding: 10px;\n background-color: #E2E2E2;\n border-radius: 8px;\n top: 63.896%;\n left: 10%;\n right: 10%;\n\n .info-card-title {\n font-size: 16px;\n font-weight: bold;\n color: black;\n line-height: 1;\n }\n\n .info-card-badge {\n padding: 4px 10px;\n border-radius: 8px;\n background-color: #5B5B5B;\n color: white;\n font-size: 12px;\n font-weight: bold;\n line-height: 1;\n margin-right: 12px;\n font-weight: bold;\n }\n\n .info-card-liberal {\n color: #5B5B5B;\n font-size: 12px;\n font-weight: bold;\n line-height: 1;\n }\n }\n`;\n\nconst CardFooter = styled.div`\n width: 100%;\n height: 0;\n padding-top: 19.6%;\n background-image: url(\"${ASSETS_PREFIX}h5/detection-card-footer.png\");\n background-size: contain;\n background-repeat: no-repeat;\n background-position: center top;\n`;\n\nexport type CardProps = {\n // 组件props\n};\n\n/**\n * @author kinghoo\n * @description 卡片容器\n * @version 0.1.0\n * @create 2024-03-10, 周日, 1:31\n */\nconst Card = (props: React.PropsWithChildren) => {\n const {\n state: { detection },\n } = usePageData();\n return (\n \n \n
    \n
    \n 外觀{detection.appearance}\n
    \n
    \n {detection.warranty}\n {detection.liberal}\n
    \n
    \n
    \n \n \n \n \n \n {/**/}\n {/* */}\n {/* */}\n {/* {detection.appearanceInfo.summary}*/}\n {/**/}\n \n \n \n \n \n \n
    \n );\n};\n\nexport default Card;\n","// DetectionReport\nimport React from 'react';\nimport { PageCard } from '../../elements';\nimport Header from '@/h5/components/header';\nimport Card from './components/card';\n\n/**\n * @author kinghoo\n * @description 檢測報告\n * @version 0.1.0\n * @create 2024-03-10, 周日, 0:49\n */\nconst DetectionReport = () => {\n return (\n \n
    \n \n \n );\n};\n\nexport default DetectionReport;\n","// DeliverWay\nimport React from 'react';\nimport RichTextDisplay from '@/h5/components/rich-text-display';\nimport { usePageData } from '../../context/page-data.context';\nimport { PageCard } from '../../elements';\nimport Header from '@/h5/components/header';\n\n/**\n * @author kinghoo\n * @description 送货方式\n * @version 0.1.0\n * @create 2024-03-10, 周日, 0:52\n */\nconst DeliverWay = () => {\n const {\n state: { deliverInfo },\n } = usePageData();\n return (\n \n
    \n {deliverInfo}\n \n );\n};\n\nexport default DeliverWay;\n","// AttentionInfo\nimport React from 'react';\nimport { usePageData } from '../../context/page-data.context';\nimport { PageCard } from '../../elements';\nimport Header from '@/h5/components/header';\nimport RichTextDisplay from '@/h5/components/rich-text-display';\n\n/**\n * @author kinghoo\n * @description 注意事项\n * @version 0.1.0\n * @create 2024-03-10, 周日, 0:51\n */\nconst AttentionInfo = () => {\n const {\n state: { attention },\n } = usePageData();\n return (\n \n
    \n {attention}\n \n );\n};\n\nexport default AttentionInfo;\n","/** 自定义api url 解析 */\nexport function customUrlParser(url: string) {\n const valueParts = `${url || ''}`.trim().split(/\\s/);\n\n return {\n method: valueParts.length > 1 ? valueParts[0].toUpperCase() : 'GET',\n url: valueParts.pop() || '',\n };\n}\n","// JsonHelper\n// @description json解析相关方法\n\n/** 将json处理成字符串\n * @param {input} 需要处理的json对象\n * @param {number} spacer 美化json的缩进\n * */\nexport function jsonToString(input: any, spacer?: number): string {\n try {\n const result = JSON.stringify(input, null, spacer);\n return result;\n } catch (e) {\n return '';\n }\n}\n\n/** 处理json字符串为json\n * @param {string} input 需要处理的json字符串\n * @param {any} defaultValue 默认值\n * */\nexport function toJson(input: any, defaultValue?: any): any {\n try {\n return JSON.parse(input) || defaultValue;\n } catch (e) {\n return defaultValue;\n }\n}\n","import { AES, enc as ENC } from 'crypto-js';\nimport { jsonToString, toJson } from './json.helper';\n\nexport const secretKey = '|:q3c-front-h5-app:|';\n\n/** 加密内容 */\nexport function crypto(json: any = {}, defaultValue: any = '') {\n try {\n const content = jsonToString(json);\n return AES.encrypt(content, secretKey).toString();\n } catch (e) {\n return defaultValue;\n }\n}\n\n/** 解密内容 */\nexport function deCrypto(enc: string | null | undefined = '', defaultValue: any = {}) {\n try {\n const bytes = AES.decrypt(enc || '', secretKey);\n const dec = bytes.toString(ENC.Utf8);\n return toJson(dec, defaultValue);\n } catch (e) {\n return defaultValue;\n }\n}\n","// Storage\n// @description storage 存取对象\n\nimport get from 'lodash/get';\nimport set from 'lodash/set';\nimport { crypto, deCrypto } from '@/h5/helpers/crypto.helper';\n\nconst COMMON_STORAGE_KEY = `|:q3c-front-app:|`;\n\nconst storage = {\n /** 从storage中获取数据(key尽量简单) */\n get(key?: string): any {\n const storageEncodeVal = localStorage.getItem(COMMON_STORAGE_KEY);\n\n const obj = deCrypto(storageEncodeVal, {});\n\n if (!key) {\n return obj;\n }\n return get(obj, key);\n },\n // NOTE: 如果是将值设置为undefined,将会清除该key,这是 JSON stringify 的特性\n /** 设置值进入storage中(key尽量简单) */\n set(key: string, value: any) {\n const originObj = storage.get();\n\n set(originObj, key, value);\n // const storeStr = jsonToString(originObj);\n const encodeStr = crypto(originObj) || '';\n localStorage.setItem(COMMON_STORAGE_KEY, encodeStr);\n },\n /** 清除某一项 */\n removeItem(key: string) {\n const originObj = storage.get();\n\n set(originObj, key, undefined);\n const encodeStr = crypto(originObj) || '';\n localStorage.setItem(COMMON_STORAGE_KEY, encodeStr);\n },\n /** 清除所有数据 */\n clear() {\n localStorage.removeItem(COMMON_STORAGE_KEY);\n },\n};\n\nexport default storage;\n","export const AGENT_TYPE = 2;\n\nexport const STORAGE_KEYS = {\n /** 缓存token */\n token: 'TOKEN',\n /** 缓存用户信息 */\n userInfo: 'USER_INFO',\n};\n\nexport const DEFAULT_PAGE = 1;\n\nexport const DEFAULT_PAGE_SIZE = 15;\n","import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';\nimport { Toast } from 'antd-mobile';\nimport cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport storage from '@/h5/utils/storage';\nimport { customUrlParser } from '@/h5/helpers/custom-url.helper';\nimport { AGENT_TYPE, STORAGE_KEYS } from '@/h5/consts';\nimport { BACK_LOGIN_CODE, NET_ERROR_MSG, SUCCESS_CODE } from '@/utils/ajax';\n\n// NOTE: post请求query会合并到url中,get请求,params和query会合并后存入url中\n\nexport async function requester(\n url: string,\n data: def.common.IRecord = {},\n params: def.common.IRecord = {},\n showToast = true,\n): Promise {\n const urlInfo = customUrlParser(url);\n const method = urlInfo.method;\n let $url = urlInfo.url;\n const requestConfig: AxiosRequestConfig = {\n url: $url,\n method: method as any,\n params:\n method === 'GET'\n ? {\n ...data,\n ...params,\n }\n : params,\n data: method === 'GET' ? undefined : data,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Access-Token': `${storage.get(STORAGE_KEYS.token)}`,\n token: `${storage.get(STORAGE_KEYS.token)}`,\n agentType: AGENT_TYPE,\n },\n };\n let res: AxiosResponse;\n try {\n res = await axios(requestConfig);\n } catch (e) {\n showToast && Toast.show(NET_ERROR_MSG);\n return false;\n }\n if (!res.data) return false;\n const code = get(res, ['data', 'code']);\n if (`${SUCCESS_CODE}` === `${code}`) {\n return res.data.result || true;\n } else {\n if (BACK_LOGIN_CODE.includes(+code)) {\n // 未登录\n storage.removeItem(STORAGE_KEYS.userInfo);\n storage.removeItem(STORAGE_KEYS.token);\n }\n showToast && Toast.show(res.data.message || NET_ERROR_MSG);\n return false;\n }\n}\n\nexport function combinedAPI(\n apiList: T,\n): def.tool.IObjectStringValueTransform {\n const copy: any = cloneDeep(apiList);\n Object.entries(apiList).forEach(([key, value]) => {\n if (typeof value === 'string') {\n copy[key] = (data?: def.common.IRecord, params?: def.common.IRecord, showToast = true) => {\n return requester(value, data, params, showToast);\n };\n }\n if (value && typeof value === 'object') {\n copy[key] = combinedAPI(value);\n }\n });\n\n return copy;\n}\n","import { apiJoinHelper } from '@/h5/helpers/api.join.helper';\nimport { combinedAPI } from './requester';\n\n/** api列表 */\nexport const API_LIST = apiJoinHelper({\n phone: {\n /** 獲取二手機詳情 */\n oldPhone: 'get /q3c-api/phone/oldphone/getWebMobileOldPhone',\n },\n});\n\nexport const API = combinedAPI(API_LIST);\n","import cloneDeep from 'lodash/cloneDeep';\nimport urlJoin from 'url-join';\nimport { customUrlParser } from './custom-url.helper';\n\n/** 合并host、prefix、处理前置的method,生成新的url列表 */\nexport function apiJoinHelper(apiObj: T, ...preFixes: string[]): T {\n const copy: any = cloneDeep(apiObj);\n Object.entries(copy).forEach(([key, value]) => {\n if (typeof value === 'string') {\n const method = customUrlParser(value).method;\n const path = customUrlParser(value).url;\n const url = urlJoin(...preFixes, path);\n copy[key] = `${method} ${url}`;\n }\n if (value && typeof value === 'object') {\n copy[key] = apiJoinHelper(value, ...preFixes);\n }\n });\n return copy;\n}\n","// Content\nimport React, { useState } from 'react';\nimport { PageContainer } from './elements';\nimport Carousel from './components/carousel';\nimport Share from './components/share';\nimport MainInfo from './components/main-info';\nimport MetaInfo from './components/meta-info';\nimport SimilarGoods from './components/similar-goods';\nimport GoodsDetail from './components/goods-detail';\nimport DetectionReport from './components/detection-report';\nimport DeliverWay from './components/deliver-ways';\nimport AttentionInfo from './components/attention-info';\nimport ScrollTab from '@/h5/components/scroll-tab';\nimport useData from './hooks/use-data';\n\nexport type ContentProps = {\n // 组件props\n};\n\n/**\n * @author kinghoo\n * @description 二手機詳情頁面內容\n * @version 0.1.0\n * @create 2024-03-6, 周三, 23:46\n */\nconst Content = (props: React.PropsWithChildren) => {\n const [topHeight, setTopHeight] = useState(1000);\n\n useData();\n\n return (\n \n \n \n {/**/}\n \n \n {/**/}\n\n \n {\n setTopHeight(top - 50);\n }}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default Content;\n","import { useLayoutEffect } from 'react';\nimport { useUniqueAsync } from 'khooks-lib';\nimport { usePageData, $pageDataStore } from '../context/page-data.context';\nimport { API } from '@/h5/service';\nimport { ASSETS_PREFIX } from '@/h5/constants/assets.const';\nimport { IGoodInfos } from '@/h5/interface/goods.interface';\nimport useConditionLevel from '@/hooks/useConditionLevel';\nimport { detailParser } from '../parser/detail.parser';\n\n/** 数据获取与组装 */\nexport default function useData() {\n const { setDataObject } = usePageData();\n // 暫時固定,不考慮閉包問題\n const conditionLevelList = useConditionLevel();\n\n const { asyncFn: getPageData } = useUniqueAsync(async () => {\n const res = await API.phone.oldPhone({\n id: window.location.search.split('?').pop(),\n });\n if (!res) return;\n\n console.log('log[ res]--->', res);\n const sku: IGoodInfos = [\n {\n title: '機型',\n text: `${res.levelOneName || ''} ${res.levelTwoName || ''} ${res.levelThreeName || ''}`,\n },\n ];\n if (res.levelFourName) {\n sku.push({\n title: '顏色',\n text: res.levelFourName,\n });\n }\n if (res.levelFiveName) {\n sku.push({\n title: '容量',\n text: res.levelFiveName,\n });\n }\n if (res.batteryDegree) {\n sku.push({\n title: '電池健康度',\n text: `${res.batteryDegree}%`,\n });\n }\n\n let nameArr: string[] = [res?.skuName];\n const appearanceArr: string[] = [];\n let levelConditionStr = '';\n if (res.conditionLevel) {\n const condition = conditionLevelList.find(item => item.value == res.conditionLevel);\n if (condition) {\n appearanceArr.push('外觀' + condition.label);\n nameArr.push(`【${condition.label}⭐】`);\n levelConditionStr = condition.label;\n }\n }\n if (res.haveBoxed) {\n appearanceArr.push('盒裝');\n }\n if (res.haveParts) {\n appearanceArr.push('配件齊全');\n }\n if (appearanceArr.length) {\n sku.push({\n title: '外觀',\n text: appearanceArr.join('、'),\n });\n }\n sku.push({\n title: '功能',\n text: '正常',\n });\n\n if (res.skuDesc) {\n sku.push({\n title: '商品描述',\n text: res.skuDesc,\n });\n }\n\n nameArr = nameArr.concat(['中古機', '二手機', '福利機']);\n const meta = {\n pickInfo: '僅接受門市付款自取',\n price: res.price,\n customerRight: ['二手機保固三個月', '100%通過全功能檢驗'] as Array,\n remainCount: undefined,\n };\n\n setDataObject({\n carousels: res?.imageUrl ? [res?.imageUrl] : [`${ASSETS_PREFIX}h5/empty-img.png`],\n goodsName: nameArr.join('/'),\n sku,\n meta,\n goodsDetail: detailParser({\n ...res,\n levelConditionStr,\n }),\n detection: {\n ...$pageDataStore.state.detection,\n appearance: levelConditionStr,\n summary: {\n ...$pageDataStore.state.detection.summary,\n model: res.skuName,\n info: [\n { title: '購買管道', text: '通訊行' },\n { title: '原廠保固範圍', text: '超過1個月' },\n { title: '配件', text: res.haveParts ? '齊全' : '缺失' },\n { title: '電池健康度', text: `${res.batteryDegree}%` },\n { title: '顏色', text: res.levelFourName },\n { title: '容量', text: res.levelFiveName },\n ],\n },\n materials: [\n { text: '手機', value: { text: '1', color: 'blue' } },\n {\n text: '原廠包裝盒',\n value: { text: res.haveBoxed ? '1' : '0', color: res.haveBoxed ? 'blue' : 'error' },\n },\n { text: 'Q哥二手機保固書', value: { text: '1', color: 'blue' } },\n ],\n functionalCheck:\n res.projectDiagnoseVOList?.map?.(item => {\n const wellFlag = !!item?.detail?.wellFlag;\n const message = item?.detail?.abnormalReason;\n return {\n text: wellFlag ? `${item.name} 正常` : `${item.name} ${message || '異常'}`,\n type: wellFlag ? 'normal' : 'warn',\n };\n }) || [],\n },\n });\n });\n\n useLayoutEffect(() => {\n void getPageData();\n }, []);\n}\n","import { ASSETS_PREFIX } from '@/h5/constants/assets.const';\n\nexport function detailParser(record: Record) {\n return `\n
    ✨✨✨歡迎光臨Q哥二手機館✨✨✨\n您現在選擇的二手機等級是:⭐${record.levelConditionStr}⭐\n✅原廠保固\n✅開通超過1個月\n✅外觀些微使用痕跡\n🧡顏色需求請私訊聊聊確認🧡\n\n❗️下標前請注意❗️\n👉 二手機庫存流量較大,下單前請私訊客服確認現貨\n👉 如有任何問題歡迎洽詢,【客服專線】0966-000-199【線上客服】10:00~18:00\n======================\n❗️ 想買二手機的你,是不是有些顧慮呢?\n⭐️ 我們審核二手機堅持3不4要 ⭐️\n\n⛔️ 泡水機、拼裝機、失竊機、贓機都不收\n⛔️ 擋掉不合格的收機來源,我們的二手機品質絕對值得安心!\n⛔️ 手機檢測過後才出貨,不合格絕對不賣\n\n✅ Q哥專業保固三個月\n✅ 隨商品附上驗機檢驗報告\n✅ 每支手機深度清潔、消毒\n✅ 電池電量充足,健康度不低於90%\n======================\n【何謂福利機】\n已拆封或門市展示用之商品,非全新品,Q哥工程師經全面清潔、測試後確保可正常使用,外觀上難免會有些微刮傷,不影響其正常運作及效能,可安心使用。\n\n商品內容: 手機X1\n12以下附充電線X1+充電頭X1(充電頭款式、顏色隨機出貨)\n12以上附PD充電線X1\n\n【Q哥】支援配件加購,讓你用最優惠的價格買齊需要的配件🧡\n🔆刷卡分期🔆 可選擇分 3期 0 利率\n🔆更多優惠🔆 實體門市可搭配舊機折抵、門號搭配,讓您以更實惠的價格買到新機!\n\n❗️保固方式:涵蓋硬體本身的問題,但不包括外觀、螢幕、電池、外殼等因自然耗損或人為損害而引起的問題。配件則不在保固範圍內。\n❗退貨方式:若您欲進行退換貨流程,請務必確保您的Apple ID/Google帳號已登出,且螢幕鎖定和啟用鎖定已解除。若未符合此要求,將無法辦理退換貨申請。\n❗退換貨的商品應保持完好,包括但不限於外觀無刮傷、配件或贈品齊全、外盒無損壞等。機身螺絲處的保固貼紙必須保持完整。此外,請確保您備妥發票正本和保固卡。請注意,耳機屬於衛生用品,若已拆封使用,可能需支付整新費用。\n\n🚩線上與線下實體門市皆同步販售商品,門市另有專屬優惠活動。\n🚩每一件商品皆有同仁多道程序用心檢核,確認商品品質、數量...等細節,核對無誤才出貨。
    \n \n
    #二手機 #中古機 #福利機 #${record.levelTwoName} #二手\n#公務機 #外送機 #${record.levelOneName} #智慧手機 #Q哥
    \n`;\n}\n","// SecondHandDetail\nimport React from 'react';\nimport { PageDataProvider } from './context/page-data.context';\nimport Content from './content';\n\nexport type SecondHandDetailProps = {\n // 组件props\n};\n\n/**\n * @author kinghoo\n * @description 二手機詳情頁\n * @version 0.1.0\n * @create 2024-03-6, 周三, 23:41\n */\nconst SecondHandDetail = (props: React.PropsWithChildren) => {\n return (\n \n \n \n );\n};\n\nexport default SecondHandDetail;\n","// AppRoutes\nimport React from 'react';\nimport { Route } from 'react-router-dom';\nimport { H5_ROUTE_BASE } from './constants/route.const';\nimport Detail from './pages/detail';\nimport SecondHandDetail from './pages/second-hand/detail';\n\nexport type AppRoutesProps = {\n // 组件props\n};\n\n/**\n * @author kinghoo\n * @description 應用路由配置\n * @version 0.1.0\n * @create 2024-01-30, 周二, 23:56\n */\nconst AppRoutes: React.FC = props => {\n return (\n \n {/*詳情頁*/}\n \n {/*二手機詳情頁*/}\n \n \n );\n};\n\nexport default React.memo(AppRoutes);\n","// H5Index\nimport React from 'react';\nimport { AppProvider } from './context/app.data.context';\nimport AppLogical from './app.logical';\nimport AppRoutes from './app.routes';\n\nexport type H5IndexProps = {\n // 组件props\n};\n\n/**\n * @author kinghoo\n * @description h5端入口路由\n * @version 0.1.0\n * @create 2024-01-29, 周一, 22:14\n */\nconst H5Index: React.FC = props => {\n return (\n \n \n \n \n );\n};\n\nexport default H5Index;\n","/**\n * @Author: haimian\n * @Description: 路由入口\n * @Date: 2021-07-16\n */\nimport React from 'react';\nimport { Router, Route, Switch } from 'react-router-dom';\nimport { createBrowserHistory } from 'history';\nimport SecurityLayout from '@/layouts/SecurityLayout';\nimport Login from '@/pages/login';\nimport ForgotPass from '@/pages/forgot-pass';\nimport Booking from '@/pages/booking';\nimport EcpayInfo from '@/pages/ecpay-info';\nimport SearchWarehouse from '@/pages/search-warehouse';\nimport { ROUTER_PREFIX } from './config/router-config';\nimport QrCodeLogistics from './pages/qr-code-logistics';\nimport H5Index from '@/h5';\nimport { H5_ROUTE_BASE } from '@/h5/constants/route.const';\n\nexport const history = createBrowserHistory();\n\nconsole.info(process.env.REACT_APP_API_ENV, 'process.env.REACT_APP_API_ENV');\nexport const LayoutRoute: React.FC = () => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default LayoutRoute;\n","import { createGlobalStyle } from 'styled-components';\n\nexport const GlobalStyle = createGlobalStyle`\n body {\n height: 100%;\n width: 100%;\n margin: 0;\n padding: 0;\n }\n #root {\n height: 100%;\n }\n p {\n margin: 0;\n }\n\n ul {\n list-style: none;\n padding: 0;\n }\n\n .ant-tabs {\n height: 100%;\n }\n\n .ant-tabs-content {\n height: 100%;\n div:focus {\n outline: none !important;\n }\n }\n\n .byicon {\n display: inline-block;\n color: inherit;\n font-style: normal;\n line-height: 0;\n text-align: center;\n text-transform: none;\n vertical-align: -0.125em;\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n }\n .ant-typography p, div.ant-typography {\n margin-bottom: 0px!important;\n }\n`;\n","/**\n * @Author: haimian\n * @Description: app 组件入口文件\n * @Date: 2021-07-22\n */\nimport React, { useEffect } from 'react';\nimport { ThemeProvider } from 'styled-components';\nimport { message } from 'antd';\nimport Theme from '@/config/style-to-json';\nimport Routers from './router';\nimport { GlobalStyle } from './config/global-style-config';\nimport { H5_ROUTE_NAME } from '@/h5/constants/route.const';\nimport { soundCreator } from '@/utils/sound-creator';\nimport './global/index.d';\nimport moment from 'moment';\nimport * as antd from 'antd';\nimport './App.css';\n\nfunction App() {\n useEffect(() => {\n // alert(navigator.userAgent);\n initErr();\n message.config({\n duration: 2,\n maxCount: 2,\n top: 50,\n });\n // some browsers does not support Object.entries\n if (!Object.entries) {\n Object.entries = function(obj: any) {\n var ownProps = Object.keys(obj),\n i = ownProps.length,\n resArray = new Array(i); // preallocate the Array\n while (i--) resArray[i] = [ownProps[i], obj[ownProps[i]]];\n return resArray;\n };\n }\n // 注册 LODOP\n if (window.getCLodop) {\n window.LODOP = window.getCLodop();\n window.LODOP.SET_LICENSES(\n '',\n '00BA01243641FB426577823C83A6B8C37DC',\n '23580B189D96F33252722697A57AC00506B',\n '',\n );\n }\n const pathname = window.location.pathname;\n const pathParts = pathname.split('/').filter(i => !!i);\n if (pathParts?.[1] !== H5_ROUTE_NAME) {\n initWav();\n }\n }, []);\n\n const initWav = () => {\n const sounds = soundCreator({\n Sound: `${process.env.PUBLIC_URL}/audio_702.wav`,\n errorSound: `${process.env.PUBLIC_URL}/audio_error.mp3`,\n notExistSound: `${process.env.PUBLIC_URL}/audio_notexist.mp3`,\n repeatSound: `${process.env.PUBLIC_URL}/audio_duplicate.mp3`,\n overSound: `${process.env.PUBLIC_URL}/audio_overscan.mp3`,\n completeSound: `${process.env.PUBLIC_URL}/audio_9586.mp3`,\n startSound: `${process.env.PUBLIC_URL}/audio_start.mp3`,\n });\n\n window.Sound = sounds.Sound;\n window.errorSound = sounds.errorSound;\n window.notExistSound = sounds.notExistSound;\n window.repeatSound = sounds.repeatSound;\n window.completeSound = sounds.completeSound;\n window.overSound = sounds.overSound;\n window.startSound = sounds.startSound;\n window.moment = moment;\n // @ts-ignore\n window.antd = antd;\n };\n\n const initErr = () => {\n /**\n * @param {String} message 错误信息\n * @param {String} source 出错文件\n * @param {Number} lineno 行号\n * @param {Number} colno 列号\n * @param {Object} error Error对象(对象)\n */\n window.onerror = function(message, source, lineno, colno, error) {\n // console.log('捕获到异常:', { message, source, lineno, colno, error });\n };\n };\n\n return (\n \n \n \n \n );\n}\n\nexport default App;\n","import Pizzicato from 'pizzicato';\n\ntype ISoundConfig = Record;\n\ntype ISoundFn = Record<\n KEY,\n {\n /** 播放當前聲音 */\n play: () => void;\n /** 停止播放當前聲音 */\n stop: () => void;\n }\n>;\n\nexport function soundCreator(config: T = {} as any): ISoundFn {\n const result = ({} as unknown) as ISoundFn;\n const sounds: Pizzicato.Sound[] = [];\n Object.entries(config).forEach(([fieldName, value]) => {\n const sound = new Pizzicato.Sound(value);\n\n sounds.push(sound);\n (result as any)[fieldName] = {\n play: () => {\n for (const s of sounds) {\n try {\n s.stop();\n } catch (e) {\n console.warn('log[停止播放聲音錯誤 e]--->', e);\n }\n }\n try {\n sound.play();\n } catch (e) {\n console.warn('log[播放聲音錯誤 e]--->', e);\n }\n },\n stop: () => {\n try {\n sound.stop();\n } catch (e) {\n console.warn('log[停止播放聲音錯誤 e]--->', e);\n }\n },\n };\n });\n return result;\n}\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n/**\n * @Author: haimian\n * @Description: 项目入口文件\n * @Date: 2021-07-22\n */\nimport { message } from 'antd';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\nimport { ajaxInit } from '@/utils/ajax';\n\nmessage.config({\n maxCount: 1,\n});\n\najaxInit({\n errCallBack: message.error,\n expectCodeList: [],\n headers: {},\n});\n\nReactDOM.render(\n // \n ,\n // ,\n document.getElementById('root'),\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals(console.log);\n","export enum BookingPayWay {\n ECPAY,\n CASH,\n}\n\nexport interface AddBookingParams {\n name: string; // 名字\n phone: string; // 手機號\n email: string;\n levelOne: number; // 品牌默认写死 是17(apple)\n levelTwo: number; // 默认写死是 18 (iPhone)\n levelThree: number;\n levelFour: number;\n levelFive: number;\n skuId: number; // skuId\n branches: number; // 門市ID\n branchesName: string; // 門市\n reservePrice: number; // 訂金\n payWay: BookingPayWay; // 支付方式 0-ecpay 1-門市現場支付\n needInsurance: boolean; // 是否購買新機保險\n needAdress: boolean; // 是否有門號需求\n needDepreciatione: boolean; // 是否有舊機折抵需求\n machineTypeId: number; // 机型类别\n}\n\nexport interface EditBookingParams {\n id: number;\n skuId?: number;\n vipCustomer: boolean;\n selfCustomer: boolean;\n branches?: number;\n branchesName?: string;\n remark?: string;\n}\n\nexport enum PayStatus {\n PAYING, // 待支付\n PAYED, // 已付款\n}\n\nexport enum ReviewStatus {\n Reviewing = 1,\n Reviewed = 2,\n Cancel = 3,\n}\n\nexport interface BookingListItem {\n id: number;\n branches: number;\n isReserve?: number;\n available?: number;\n phoneOrderPayVO: any;\n isReserve: number;\n invoiceNo: string;\n invoiceStatus: number;\n invoiceReason: string;\n levelFive: number;\n status: number;\n levelThree: number;\n levelFour: number;\n remark: string;\n paymentTypeName: string;\n changeBranch: boolean;\n reserveNo: string;\n skuName: string;\n name: string;\n phone: string;\n skuId: number;\n gmtCreate: string;\n reservePrice: number;\n payStatus: PayStatus;\n bookId: number;\n payNo: string;\n payWay: BookingPayWay; // 支付方式 0-ecpay 1-門市現場支付\n checkAccount: string;\n branchesName: string;\n checkBranchesName: string;\n selfCustomer: boolean;\n vipCustomer: boolean;\n refund: boolean;\n skuPrice: number;\n balanceStatus: number;\n balancePrice: number;\n balanceBranchesName: string;\n balanceAccount: string;\n}\n\nexport interface CaptchaItem {\n verifyCode: string;\n verifyCodeName: string;\n}\n\nexport interface CheckPay {\n checkAccount?: string;\n checkChange: boolean;\n checkGroupId: number;\n checkGroupName: string;\n id: number;\n}\n\nexport enum RefundPayWay {\n ECPAY,\n CASH,\n}\n\nexport interface RefundParams {\n id: number;\n refundBranches: number;\n refundBranchesName: string;\n refundGroupName: string;\n refundGroupId: number;\n refundPayWay: RefundPayWay;\n refundRemark: string;\n refundTime: string;\n}\n\nexport interface InfoItem {\n id: number;\n skuName: string;\n branches: number;\n branchesName: string;\n skuId: number;\n}\n\nexport interface ScanItem {\n reserveId: number;\n skuId: number;\n reserveNo: string;\n skuName?: string;\n snCode?: string;\n upc?: string;\n supplierName?: string;\n price?: number;\n branchesName?: string;\n branches?: number;\n remark?: string;\n supplierId?: number;\n}\n\nexport enum OperatorType {\n SUBMIT = 1,\n CANCEL = 2,\n}\n\nexport interface AndorcancelParams {\n operatorType: OperatorType;\n detailVOList: ScanItem[];\n}\n\nexport interface BookingTransferListItem {\n id: number;\n transferNo: number;\n gmtCreate: string;\n detailVOList: ScanItem[];\n}\n\nexport interface PrintInfo {\n branchesName: string;\n num: number;\n realTransferNo: string;\n transferNo: string;\n index: number;\n skuName: string;\n}\n\nexport interface CreatePaymentRes {\n bankCode: string;\n expireDate: string;\n vaccount: string;\n}\n\nexport interface IEcpayInfo {\n merchantTradeNo: string;\n orderNo: string;\n tradeNo: string;\n tradeStatus: string;\n paymentDate: string;\n tradeAmt: string;\n tradeDate: string;\n price: string;\n chargeFee: string;\n paymentType: string;\n atmBankCode: string;\n atmBankName: string;\n unifyNumber: number;\n needUnifyNumber: boolean;\n invoiceVO: any;\n atmAccNo: string;\n atmExpireTime: string;\n atmExpireDate: string;\n atmVirtualAccount: string;\n cardAuthCode: string;\n cardGwsr: string;\n cardProcessDate: string;\n cardEci: string;\n card6No: string;\n skuName: string;\n card4No: string;\n}\n\nexport interface IClusterNodeList {\n /** 集群名稱 */\n clusterName: string;\n /** 節點數量 */\n nodeCount: number;\n /** 是否開啟簡訊警告 */\n sendSmsEnableFlag: boolean;\n /** 節點列表 */\n nodeVOList: Array<{\n id: number;\n name: string;\n cpuUsageRate: string;\n diskUsageRate: string;\n memoryUsageRate: string;\n onlineFlag: boolean;\n runTime: string;\n }>;\n}\n","import styled from 'styled-components';\nimport { Form } from 'antd';\n\nexport const FilterFlexWrapper = styled.div`\n display: flex;\n background-color: #fff;\n .ant-form {\n .ant-form-item {\n /* 为了换行的时候各个输入框有上下的边距 */\n margin-bottom: 16px;\n }\n }\n`;\n\nexport const FilterNormalItem = styled(Form.Item)`\n width: 160px;\n`;\n\nexport const FilterNormalPlusItem = styled(Form.Item)`\n width: 170px;\n`;\n\nexport const FilterLargeItem = styled(Form.Item)`\n width: 240px;\n`;\n\nexport const FilterLargePlusItem = styled(Form.Item)`\n width: 500px;\n`;\n\nexport const modalFormLayout = {\n labelCol: { span: 6 },\n wrapperCol: { span: 18 },\n};\n\nexport const SelectedWrapper = styled.div`\n margin-bottom: 16px;\n color: #000;\n opacity: 0.45;\n`;\n"],"sourceRoot":""}