{"version":3,"sources":["utils/enum/index.js","store/slice/transfer.js","views/Report/AppGatewayDailyColumn.js","views/Report/DeveloperDailyColumn.js","views/Report/TransferAppGatewayDailyColumn.js","views/Report/AppBalanceSummaryColumn.js","components/factory/NotifFactory.js","store/slice/appBalanceSummaryDaily.js","store/slice/appGatewayDaily.js","store/slice/developerDaily.js","store/slice/transferAppGatewayDaily.js","components/Spin.js","views/AppAcct/AppAccLogColumn.js","store/slice/appAcctLog.js","store/slice/order.js","store/slice/developerSubDaily.js","views/Order/Columns.js","views/Transfers/Columns.js","store/slice/appAcct.js","views/AppAcct/index.js","views/Order/index.js","views/Transfers/index.js","views/Order/Notification.js","views/Transfers/indexTemplate.js","components/Header.js","components/Sidebar.js","components/PageHeader.js","components/RouterTab.js","router/index.js","views/GlobalLayout.js","assets/GoogleAuthenticatorAppIcon.webp","components/OtpModal.js","views/Login.js","utils/ws.js","views/MainRoute.js","components/EditableConfirm.js","components/factory/InputFactory.js","components/SearchSelect.js","store/slice/layout.js","utils/history.js","views/AppAcct/AppAcctLog.js","views/Report/AppBalanceSummary.js","views/Report/AppGatewayDaily.js","views/Report/DeveloperDaily.js","views/Report/DeveloperSubDaily.js","views/Report/TransferAppGatewayDaily.js","utils/request.js","utils/hook.js","views sync /^/.//.*$","store/slice/auth.js","components/Tag.js","components/factory/FormFactory.js","components/ColumnsSelect.js","components/factory/TableFactory.js","store/index.js","App.js","reportWebVitals.js","index.js","utils/format.js","components/SumTable.js","store/slice/routerTab.js","components/JsonModal.js"],"names":["errorCodeMessage","200","201","202","204","400","401","403","404","405","406","410","422","429","500","502","503","504","formLayout","labelCol","span","wrapperCol","isActiveLang","val","isSuccessLang","OrderStatus","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","WXPayType","PayMethod","PayStatus","Currency","CurrencyFormat","key","unit","rate","tofix","IsBoolEnum","CryptoAcctLogsType","FeeType","Perms","title","children","transferStatus","18","19","20","AppAcctLogType","getTransfers","createAsyncThunk","a","params","request","url","method","res","postTransfer","formModel","data","exportTransfer","per_page","slice","createSlice","name","initialState","list","meta","currentRow","gateways","extraReducers","fulfilled","state","action","payload","status","metaToPagin","selectTransfer","transfer","moneyRender","render","record","priceFormat","currency","className","sorter","columns","dataIndex","dateFormat","sumColumns","statisticsColumns","filter","i","indexOf","excelPriceFormat","showUnit","exportColumnsRenderMap","created","is_online","total_amount","total_succeeded_amount","total_fee","gateway_balance","transfer_succeeded_gateway_fee","total_balance","total_block","transfer_amount","transfer_succeeded_amount","difference","order_fee","transfer_fee","profit_today","yesterday_balance","total_order_amount","total_order_fee","total_transfer_amount","total_transfer_fee","total_withdrawal","total_withdrawal_fee","current_day_total_profit","current_day_total_balance","balance","NotifFactory","type","message","notification","description","getAppBalanceSummaryDaily","getAppBalanceSummaryDailySum","exportAppBalanceSummaryDaily","sum","selectAppBalanceSummaryDaily","appBalanceSummaryDaily","getAppGatewayDaily","getAppGatewayDailySum","exportAppGatewayDaily","selectAppGatewayDaily","appGatewayDaily","getDeveloperDaily","getDeveloperDailySum","exportDeveloperDaily","selectDeveloperDaily","developerDaily","getTransferAppGatewayDaily","getTransferAppGatewayDailySum","exportTransferAppGatewayDaily","selectTransferAppGatewayDaily","transferAppGatewayDaily","SpinC","props","spinning","indicator","spinPropsAreEqual","prev","next","React","memo","listColumns","defaultColumns","b1","b2","amount","order_amount","content_type","fee","updated","getAppAcctLogs","exportAppAccLog","selectAppAcctLog","appAcctLog","getOrders","exportOrder","reducers","setOrders","selectOrder","actions","order","getDeveloperSubDaily","getDeveloperSubDailySum","selectDeveloperSubDaily","developerSubDaily","width","JSON","stringify","includes","pay_type","pay_method","payer_cred","pay_status","paid_at","approval_status","notify_status","notified_at","amount_paid","bonus","amount_rand","succeeded","paid","approved","is_crypto","settled","approved_at","canceled","expired","notified","canceled_at","expired_at","succeeded_at","extra","formatColumn","arr","detailColumnsCard","detailColumnsUSDT","getAppAccts","selectAppAcct","appAcct","searchFields","id__in","label","options","created__btw","AppAcct","useList","listLoading","loading","handleSearch","handleChangePage","handleChange","handleGetList","useState","setCurrentRow","jsonVisible","setJsonVisible","handleJsonClick","row","editLoading","setEditLoading","editVisible","setEditVisible","fields","inputType","required","Banks","handleEdit","app_id","app_acct_id","id","success","page","current","align","fixed","_","size","onClick","handleEditClick","direction","handleSubmit","allColumns","dataSource","onChangePage","onChange","onShowSizeChange","visible","onCancel","onOk","info","style","marginBottom","order_no__in","trans_no__in","userid__in","app_id__in","isBool","developer_id__in","initialValue","moment","startOf","endOf","paid_at__btw","Order","fieldsInitialValues","useMemo","searchFieldsInitialValuesFormat","useExportExcel","exportAction","exportLoading","handleExport","handleSelectedColumns","ListColumns","rangeLimitDays","warning","showExportBtn","setSelectedColumns","expandable","rowExpandable","expandedRowRender","payerCredExpandedRowRender","Transfer","OrderNotif","wsType","history","push","generatePath","failure_msg","Notification","app_user_id__in","objFormateToSearchFields","Header","Layout","HeaderView","user","useSelector","selectAuth","dispatch","useDispatch","useHistory","handleLogout","logout","visiblePass","setVisiblePass","resetPassLoading","setResetPassLoading","handelVisiblePass","v","handleUpdatePass","resetUserPsw","handleResetOtp","close","resetUserOtp","UserMenu","Item","Modal","confirm","icon","ExclamationCircleOutlined","content","okText","cancelText","overlay","trigger","username","DownOutlined","EditableConfirm","Sider","SubMenu","Menu","SidebarView","routes","pathname","useLocation","selectedKey","setSelectedKey","handleSetRouterTab","setRouterTabs","useEffect","to","getRouterDisplayName","breakpoint","collapsedWidth","process","theme","mode","selectedKeys","ContainerOutlined","UserOutlined","FileDoneOutlined","BarChartOutlined","PageHeaderC","route","getRouter","hidePageHeader","displayName","TabPane","Tabs","RouterTab","routerTabs","selectRouterTab","active","setActive","targetKey","removeRouterTab","tabs","parse","sessionStorage","tabsLength","length","activeKey","onEdit","hideAdd","map","path","tab","getRouterParam","closable","getComponent","require","default","e","console","log","component","exact","Content","Footer","GlobalLayout","handleWindowResize","setModalDiscSpan","target","innerWidth","window","addEventListener","removeEventListener","renderRoutes","Sidebar","PageHeader","textAlign","OtpModal","otpAuthUrl","secret","handleClose","verifyOtp","setVerifyOtp","setLoading","handleOtpVerify","verifyOpt","otp","error","StepTitle","step","subTitle","centered","footer","gutter","justify","md","xl","src","AppIconUrl","alt","Title","level","value","placeholder","maxWidth","marginTop","Typography","Login","isOtp","Form","useForm","form","userData","setUserData","handleUserData","localStorage","setItem","setUser","otpVisible","setOtpVisible","otpData","setOtpData","handleLogin","login","getFieldValue","getOptStatus","onFinish","rules","prefix","LockOutlined","valuePropName","noStyle","htmlType","block","otp_auth_url","pingTimer","socket","handlePinPerSecond","readyState","send","MainRoute","WebSocket","onopen","setInterval","onmessage","msg","onerror","err","onclose","clearInterval","Option","Select","Edit","handleOk","validateFields","then","resetFields","setFieldsValue","confirmLoading","destroyOnClose","defaultValKey","selector","searchKey","j","showSearch","filterOption","input","option","toString","toLowerCase","Object","keys","b","allowClear","RangePicker","DatePicker","InputFactory","rest","SelectC","Number","types","string","select","switch","checkbox","rangeDate","showTime","SearchSelect","onSelect","payloadPos","setList","searchText","setSearchText","setPage","handleInit","useCallback","handleSelect","find","onSearch","onPopupScroll","scrollHeight","clientHeight","scrollTop","pages","notFoundContent","modalDiscSpan","createBrowserHistory","app_name__k","funding_type","AppBalanceSummary","handleList","resList","ll","handleGetPageSearchCache","useSearchCache","getSum","handleExportData","labels","gateway_id__in","AppGatewayDaily","succeeded_rate","total_succeeded_times","total_times","toFixed","total_profit_amount","total_amount_gateway_fee","DeveloperDaily","transfer_succeeded_app_fee","columnSize","xs","sm","xxl","DeveloperSubDaily","TransferAppGatewayDaily","total_amount_app_fee","interceptor","store","axios","interceptors","use","config","withCredentials","baseURL","Promise","reject","response","originParams","isUseSearchCache","states","searchParams","setSearchParams","sortParams","setSortParams","pageSize","setPageSize","setCurrent","pagination","filters","o","field","handleAdd","addAction","handleDelete","deleteAction","useColumnsSelect","defaultFilter","getColumns","setFilter","handleSelectedColumnsChange","selectedColumns","cols","getCols","storageColumns","getItem","location","handleGetSearchCache","handleSetSearchCache","storageSearchCache","handleResetSearchCache","useRef","handleColumns","c","handleRows","dataList","rowList","forEach","el","rowItem","handleExportExcel","workbook","ExcelJs","Workbook","sheet","addWorksheet","rows","addTable","ref","xlsx","writeBuffer","link","document","createElement","blobData","Blob","download","href","URL","createObjectURL","click","exportData","tempArr","webpackContext","req","webpackContextResolve","__webpack_require__","Error","code","resolve","module","exports","removeItem","auth","TagC","falseColor","color","propsAreEqual","SearchFormFactory","otherBtn","initialValues","setInitialValues","handleReset","handleFields","getFieldsValue","undefined","searchFieldsFormat","handleSearchClick","handleExportClick","dateStr","init","searchFieldsFilterInitialValues","searchCache","split","temp","item","inputFactoryProps","optionLabel","CurrencyHelpTextFormItemFactory","min","max","setValue","helpText","validateStatus","help","getValueFromEvent","ColumnsSelect","setOptions","filterOptions","onBlur","minWidth","NormalTable","rowKey","scroll","x","summary","pageData","statistics","reduce","Summary","Row","index","Cell","handleRenderSummery","showSizeChanger","configureStore","reducer","layout","layoutReducer","routerTab","routerTabReducer","authReducer","orderReducer","transferReducer","appAcctReducer","appAcctLogReducer","developerDailyReducer","developerSubDailyReducer","appGatewayDailyReducer","appBalanceSummaryDailyReducer","transferAppGatewayDailyReducer","App","locale","zh_CN","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","getElementById","date","formatStr","_isValid","format","tofixVal","toLocaleString","maximumFractionDigits","limitDays","dateArr","dt1","Date","getTime","dt2","days","fieldVerifyHasVal","obj","k","f","_d","toISOString","rangeDateFormat","total","router","pathLength","SumTable","bordered","column","backgroundColor","nowTabs","JsonModal","dangerouslySetInnerHTML","__html","hljs","highlight","language"],"mappings":"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","file":"static/js/main.3c92184f.chunk.js","sourcesContent":["export const errorCodeMessage = {\n 200: \"服务器成功返回请求的数据。\",\n 201: \"新建或修改数据成功。\",\n 202: \"一个请求已经进入后台排队(异步任务)。\",\n 204: \"删除数据成功。\",\n 400: \"发出的请求有误。\", // 发出的请求有错误,服务器没有进行新建或修改数据的操作。\n 401: \"用户没有权限(令牌、用户名、密码错误)。\",\n 403: \"没有权限。\",\n 404: \"找不到对象。\",\n 405: \"方法不允许。\",\n 406: \"请求的格式不可得。\",\n 410: \"请求的资源被永久删除,且不会再得到的。\",\n 422: \"当创建一个对象时,发生一个验证错误。\",\n 429: \"请求太频繁了\",\n 500: \"服务器发生错误,请检查服务器。\",\n 502: \"网关错误。\",\n 503: \"服务不可用,服务器暂时过载或维护。\",\n 504: \"网关超时。\",\n};\nexport const formLayout = { labelCol: { span: 8 }, wrapperCol: { span: 16 } };\nexport const mode = {\n add: \"添加\",\n edit: \"编辑\",\n approve: \"审核\",\n deny: \"拒绝\",\n};\nexport const isActiveLang = val => {\n return val ? \"是\" : \"否\";\n};\n\nexport const isSuccessLang = val => {\n return val ? \"成功\" : \"失败\";\n};\n\nexport const OrderStatus = {\n 0: \"初始化\",\n 1: \"新订单\",\n 2: \"待处理\",\n 3: \"待付款\",\n 4: \"已支付\",\n 5: \"失败\",\n 6: \"过期\",\n 7: \"取消\",\n 8: \"待审核\",\n 9: \"审核通过\",\n 10: \"审核拒绝\",\n 11: \"待通知\",\n 12: \"通知中\",\n 13: \"通知成功\",\n 14: \"通知失败\",\n 15: \"成功\",\n 16: \"订单支付失败\",\n 17: \"订单检查中\",\n};\n\nexport const WXPayType = {\n 0: \"微信\",\n 1: \"支付宝\",\n 2: \"网银转账\",\n 3: \"银行卡转账\",\n 4: \"加密货币\",\n 6: \"QQ\",\n 7: \"数字人民币\",\n 8: \"云闪付\",\n 9: \"NoPay\",\n 10: \"银联存款\",\n 11: \"抖音存款\",\n};\n\nexport const PayMethod = {\n 0: \"redirect 跳转收银台\",\n 1: \"qrcode 二维码\",\n 2: \"转账 \",\n};\n\nexport const PayStatus = {\n 3: \"待付款\",\n 4: \"已支付\",\n};\nexport const Currency = {\n 0: \"RMB\",\n 1: \"USDT_ERC20\",\n 2: \"USDT_TRC20\",\n 3: \"USDT_OMNI\",\n 4: \"BTC\",\n 5: \"ETH\",\n};\nexport const AddrRedirect = {\n 0: \"\",\n 1: \"https://etherscan.io/address\",\n 2: \"https://tronscan.org/#/address\",\n 3: \"\",\n 4: \"\",\n 5: \"\",\n};\nexport const TransRedirect = {\n 0: \"\",\n 1: \"https://etherscan.io/tx\",\n 2: \"https://tronscan.org/#/transaction\",\n 3: \"\",\n 4: \"\",\n 5: \"\",\n};\nexport const CurrencyFormat = [\n { key: 0, unit: \"¥\", rate: 100, tofix: 2 },\n { key: 1, unit: \"$\", rate: 1000000, tofix: 6 },\n { key: 2, unit: \"$\", rate: 1000000, tofix: 6 },\n { key: 3, unit: \"$\", rate: 1000000, tofix: 6 },\n { key: 4, unit: \"\", rate: 0, tofix: 0 },\n { key: 5, unit: \"\", rate: 0, tofix: 0 },\n];\nexport const IsBoolEnum = {\n 1: \"是\",\n 0: \"否\",\n};\nexport const ApprovalStatus = {\n 8: \"待审核\",\n 9: \"审核通过\",\n 10: \"审核拒绝\",\n};\nexport const NotifyStatus = {\n 11: \"待通知\",\n 12: \"通知中\",\n 13: \"通知成功\",\n 14: \"通知失败\",\n};\n\nexport const Network = {\n 0: \"TRX 波场\",\n 1: \"ETH 以太坊\",\n 2: \"BTC\",\n};\n\nexport const DeveloperStatus = {\n 0: \"审核中\",\n 1: \"审核通过\",\n 2: \"拒绝\",\n};\n\nexport const AppStatus = {\n 0: \"开发中\",\n 1: \"上线\",\n};\n\nexport const CryptoAcctLogsType = {\n 0: \"存款\",\n 1: \"提款\",\n 2: \"活动赠送\",\n 3: \"扣罚\",\n 4: \"其它\",\n};\nexport const CryptoAcctLogsStatus = {\n 0: \"交易未确认\",\n 1: \"交易已确认\",\n 2: \"待绑定\",\n 3: \"已绑定订单\",\n};\n\nexport const ContentType = {\n 1: \"存款订单\",\n 2: \"提款订单\",\n 3: \"活动对象\",\n};\n\nexport const DirType = {\n 0: \"转入\",\n 1: \"转出\",\n};\n\nexport const FeeType = {\n 0: \"固定\",\n 1: \"百分比\",\n};\n\nexport const Perms = [\n {\n title: \"appacctlog管理\",\n key: \"appacctlog\",\n children: [\n {\n title: \"新增appacctlog\",\n key: \"appacctlog.Create\",\n },\n {\n title: \"查看appacctlog列表\",\n key: \"appacctlog.List\",\n },\n {\n title: \"编辑appacctlog\",\n key: \"appacctlog.Get\",\n },\n {\n title: \"删除appacctlog\",\n key: \"appacctlog.Delete\",\n },\n {\n title: \"更新appacctlog\",\n key: \"appacctlog.Update\",\n },\n ],\n },\n {\n title: \"收款帐户管理\",\n key: \"cryptoacct\",\n children: [\n {\n title: \"新增收款帐户\",\n key: \"cryptoacct.Create\",\n },\n {\n title: \"查看收款帐户列表\",\n key: \"cryptoacct.List\",\n },\n {\n title: \"编辑收款帐户\",\n key: \"cryptoacct.Get\",\n },\n {\n title: \"删除收款帐户\",\n key: \"cryptoacct.Delete\",\n },\n {\n title: \"更新收款帐户\",\n key: \"cryptoacct.Update\",\n },\n {\n title: \"停启用收款帐户\",\n key: \"cryptoacct.SetActive\",\n },\n ],\n },\n {\n title: \"订单管理\",\n key: \"order\",\n children: [\n {\n title: \"新增订单\",\n key: \"order.Create\",\n },\n {\n title: \"查看订单列表\",\n key: \"order.List\",\n },\n {\n title: \"编辑订单\",\n key: \"order.Get\",\n },\n {\n title: \"删除订单\",\n key: \"order.Delete\",\n },\n {\n title: \"更新订单\",\n key: \"order.Update\",\n },\n {\n title: \"取消订单\",\n key: \"order.Cancel\",\n },\n {\n title: \"审核订单\",\n key: \"order.Approve\",\n },\n {\n title: \"拒绝订单\",\n key: \"order.Deny\",\n },\n {\n title: \"通知订单\",\n key: \"order.Notify\",\n },\n {\n title: \"绑定订单\",\n key: \"order.Bind\",\n },\n ],\n },\n {\n title: \"角色管理\",\n key: \"role\",\n children: [\n {\n title: \"新增\",\n key: \"role.Create\",\n },\n {\n title: \"查看角色列表\",\n key: \"role.List\",\n },\n {\n title: \"编辑角色\",\n key: \"role.Get\",\n },\n {\n title: \"删除角色\",\n key: \"role.Delete\",\n },\n {\n title: \"更新角色\",\n key: \"role.Update\",\n },\n {\n title: \"UpdatePerms\",\n key: \"role.UpdatePerms\",\n },\n {\n title: \"UserList\",\n key: \"role.UserList\",\n },\n ],\n },\n {\n title: \"appacct管理\",\n key: \"appacct\",\n children: [\n {\n title: \"新增appacct\",\n key: \"appacct.Create\",\n },\n {\n title: \"查看appacct列表\",\n key: \"appacct.List\",\n },\n {\n title: \"编辑appacct\",\n key: \"appacct.Get\",\n },\n {\n title: \"删除appacct\",\n key: \"appacct.Delete\",\n },\n {\n title: \"更新appacct\",\n key: \"appacct.Update\",\n },\n ],\n },\n {\n title: \"审计日志管理\",\n key: \"audit\",\n children: [\n {\n title: \"新增审计日志\",\n key: \"audit.Create\",\n },\n {\n title: \"查看审计日志列表\",\n key: \"audit.List\",\n },\n {\n title: \"编辑审计日志\",\n key: \"audit.Get\",\n },\n {\n title: \"删除审计日志\",\n key: \"audit.Delete\",\n },\n {\n title: \"更新审计日志\",\n key: \"audit.Update\",\n },\n ],\n },\n {\n title: \"开发者管理\",\n key: \"developer\",\n children: [\n {\n title: \"新增开发者\",\n key: \"developer.Create\",\n },\n {\n title: \"查看开发者列表\",\n key: \"developer.List\",\n },\n {\n title: \"编辑开发者\",\n key: \"developer.Get\",\n },\n {\n title: \"删除开发者\",\n key: \"developer.Delete\",\n },\n {\n title: \"更新开发者\",\n key: \"developer.Update\",\n },\n ],\n },\n {\n title: \"银行卡帐户日志管理\",\n key: \"cardacctlog\",\n children: [\n {\n title: \"新增银行卡帐户日志\",\n key: \"cardacctlog.Create\",\n },\n {\n title: \"查看银行卡帐户日志列表\",\n key: \"cardacctlog.List\",\n },\n {\n title: \"编辑银行卡帐户日志\",\n key: \"cardacctlog.Get\",\n },\n {\n title: \"删除银行卡帐户日志\",\n key: \"cardacctlog.Delete\",\n },\n {\n title: \"更新银行卡帐户日志\",\n key: \"cardacctlog.Update\",\n },\n ],\n },\n {\n title: \"资金动帐纪录管理\",\n key: \"cryptoacctlog\",\n children: [\n {\n title: \"新增资金动帐纪录\",\n key: \"cryptoacctlog.Create\",\n },\n {\n title: \"查看资金动帐纪录列表\",\n key: \"cryptoacctlog.List\",\n },\n {\n title: \"编辑资金动帐纪录\",\n key: \"cryptoacctlog.Get\",\n },\n {\n title: \"删除资金动帐纪录\",\n key: \"cryptoacctlog.Delete\",\n },\n {\n title: \"更新资金动帐纪录\",\n key: \"cryptoacctlog.Update\",\n },\n ],\n },\n {\n title: \"代理管理\",\n key: \"agent\",\n children: [\n {\n title: \"新增代理\",\n key: \"agent.Create\",\n },\n {\n title: \"查看代理列表\",\n key: \"agent.List\",\n },\n {\n title: \"编辑代理\",\n key: \"agent.Get\",\n },\n {\n title: \"删除代理\",\n key: \"agent.Delete\",\n },\n {\n title: \"更新代理\",\n key: \"agent.Update\",\n },\n ],\n },\n {\n title: \"银行卡帐户管理\",\n key: \"cardacct\",\n children: [\n {\n title: \"新增银行卡帐户\",\n key: \"cardacct.Create\",\n },\n {\n title: \"查看银行卡帐户列表\",\n key: \"cardacct.List\",\n },\n {\n title: \"编辑银行卡帐户\",\n key: \"cardacct.Get\",\n },\n {\n title: \"删除银行卡帐户\",\n key: \"cardacct.Delete\",\n },\n {\n title: \"更新\",\n key: \"cardacct.Update\",\n },\n ],\n },\n {\n title: \"登入日志管理\",\n key: \"loginlog\",\n children: [\n {\n title: \"新增登入日志\",\n key: \"loginlog.Create\",\n },\n {\n title: \"查看登入日志列表\",\n key: \"loginlog.List\",\n },\n {\n title: \"编辑登入日志\",\n key: \"loginlog.Get\",\n },\n {\n title: \"删除登入日志\",\n key: \"loginlog.Delete\",\n },\n {\n title: \"更新登入日志\",\n key: \"loginlog.Update\",\n },\n ],\n },\n {\n title: \"银行卡管理\",\n key: \"card\",\n children: [\n {\n title: \"新增银行卡\",\n key: \"card.Create\",\n },\n {\n title: \"查看银行卡列表\",\n key: \"card.List\",\n },\n {\n title: \"编辑银行卡\",\n key: \"card.Get\",\n },\n {\n title: \"删除银行卡\",\n key: \"card.Delete\",\n },\n {\n title: \"更新银行卡\",\n key: \"card.Update\",\n },\n ],\n },\n {\n title: \"App管理\",\n key: \"app\",\n children: [\n {\n title: \"新增App\",\n key: \"app.Create\",\n },\n {\n title: \"查看App列表\",\n key: \"app.List\",\n },\n {\n title: \"编辑App\",\n key: \"app.Get\",\n },\n {\n title: \"删除App\",\n key: \"app.Delete\",\n },\n {\n title: \"更新App\",\n key: \"app.Update\",\n },\n ],\n },\n {\n title: \"商户管理\",\n key: \"gateway\",\n children: [\n {\n title: \"新增商户\",\n key: \"gateway.Create\",\n },\n {\n title: \"查看商户列表\",\n key: \"gateway.List\",\n },\n {\n title: \"编辑商户\",\n key: \"gateway.Get\",\n },\n {\n title: \"删除商户\",\n key: \"gateway.Delete\",\n },\n {\n title: \"更新商户\",\n key: \"gateway.Update\",\n },\n ],\n },\n {\n title: \"用户管理\",\n key: \"user\",\n children: [\n {\n title: \"新增用户\",\n key: \"user.Create\",\n },\n {\n title: \"查看用户列表\",\n key: \"user.List\",\n },\n {\n title: \"编辑用户\",\n key: \"user.Get\",\n },\n {\n title: \"删除用户\",\n key: \"user.Delete\",\n },\n {\n title: \"更新用户\",\n key: \"user.Update\",\n },\n ],\n },\n {\n title: \"加密钱包管理\",\n key: \"cryptowallet\",\n children: [\n {\n title: \"新增加密钱包\",\n key: \"cryptowallet.Create\",\n },\n {\n title: \"查看加密钱包列表\",\n key: \"cryptowallet.List\",\n },\n {\n title: \"编辑加密钱包\",\n key: \"cryptowallet.Get\",\n },\n {\n title: \"删除加密钱包\",\n key: \"cryptowallet.Delete\",\n },\n {\n title: \"更新加密钱包\",\n key: \"cryptowallet.Update\",\n },\n ],\n },\n];\n\nexport const transferStatus = {\n 0: \"初始化代付\",\n 1: \"下单失败\",\n 2: \"待认领\",\n 3: \"已认领待审核\",\n 4: \"代付审核中\",\n 5: \"代付已审核\",\n 6: \"代付审核拒绝\",\n 7: \"已经认领待出款\",\n 8: \"出款中\",\n 9: \"出款成功\",\n 10: \"出款失败\",\n 11: \"出款订单过期\",\n 12: \"出款订单取消\",\n 13: \"出款待回调\",\n 14: \"出款回调中\",\n 15: \"出款回调成功\",\n 16: \"出款回调失败\",\n 17: \"第三方代付失败\",\n 18: \"出款中\",\n 19: \"代理出款中\",\n 20: \"代理撤回\",\n};\n\nexport const CardStatus = {\n 0: \"审核中\",\n 1: \"启用中\",\n 2: \"冻结\",\n 3: \"已达到当日上限制\",\n};\n\nexport const CardDirection = { 0: \"收入\", 1: \"支出\" };\n\nexport const AmountType = {\n 0: \"任意金额\",\n 1: \"固定金额\",\n};\n\nexport const AppAcctLogType = {\n 0: \"用户存款\",\n 1: \"申请提款\",\n 2: \"提款成功\",\n 3: \"提款失败\",\n 4: \"代理支付手续费\",\n 5: \"代理支付手续费返還\",\n 6: \"代理代收分潤\",\n 7: \"代理代收分潤返還\",\n 8: \"分潤出帳\",\n 9: \"分潤入帳\",\n 10: \"訂單回收\",\n 11: \"分潤出帳返還\",\n 12: \"分潤入帳返還\",\n 13: \"修改圈存金额\",\n 14: \"划转入帐\",\n 15: \"划转出帐\",\n 16: \"其他\",\n 17: \"支付渠道手续费\",\n 18: \"支付渠道手续费返還\",\n};\n","import { createSlice, createAsyncThunk } from \"@reduxjs/toolkit\";\nimport request from \"@/utils/request\";\nimport { metaToPagin } from \"@/utils/format\";\n\nexport const getTransfers = createAsyncThunk(\n \"tranfser/getList\",\n async (params = {}) => {\n const res = await request({\n url: \"/api/developer/transfers\",\n method: \"get\",\n params,\n });\n return res;\n },\n);\n\nexport const postTransfer = async formModel => {\n const res = await request({\n url: `/api/developer/transfers`,\n method: \"post\",\n data: formModel,\n });\n return res;\n};\n\n// 匯出 excel\nexport const exportTransfer = async (params = {}) => {\n const res = await request({\n url: `/api/developer/transfers/export`,\n method: \"get\",\n params: { per_page: 9999, ...params },\n });\n return res;\n};\n\nexport const slice = createSlice({\n name: \"transfer\",\n initialState: {\n list: [],\n meta: {},\n currentRow: {},\n gateways: [],\n },\n extraReducers: {\n [getTransfers.fulfilled]: (state, action) => {\n const { status, data } = action.payload;\n if (status !== 200) return;\n state.list = data.data;\n state.meta = metaToPagin(data.meta);\n },\n },\n});\nexport const selectTransfer = state => state.transfer;\nexport default slice.reducer;\n","import { dateFormat, priceFormat } from \"@/utils/format\";\nimport { Currency, isActiveLang } from \"@/utils/enum\";\nimport Tag from \"@/components/Tag\";\n\nconst moneyRender = () => {\n return {\n render: (val, record) =>\n priceFormat({ val: val || 0, currency: record.currency }),\n className: \"text-nowrap\",\n sorter: true,\n };\n};\n\nexport const columns = [\n // { title: \"ID\", dataIndex: \"id\", sorter: true },\n {\n title: \"渠道ID\",\n dataIndex: \"gateway_id\",\n sorter: true,\n },\n { title: \"商户ID\", dataIndex: \"app_id\", sorter: true },\n { title: \"商户名称\", dataIndex: \"app_name\", sorter: true },\n {\n title: \"报表时间\",\n dataIndex: \"created\",\n className: \"text-nowrap\",\n render: val => dateFormat(val, \"YYYY-MM-DD\"),\n sorter: true,\n },\n {\n title: \"是否线上渠道\",\n dataIndex: \"is_online\",\n render: val => ,\n sorter: true,\n },\n {\n title: \"货币类型\",\n dataIndex: \"currency\",\n render: val => Currency[val] || \"\",\n className: \"text-nowrap\",\n },\n {\n title: \"累计订单次数\",\n dataIndex: \"total_times\",\n sorter: true,\n },\n {\n title: \"累计订单成功次数\",\n dataIndex: \"total_succeeded_times\",\n sorter: true,\n },\n {\n title: \"累计金额\",\n dataIndex: \"total_amount\",\n ...moneyRender(),\n },\n {\n title: \"累计成功金额\",\n dataIndex: \"total_succeeded_amount\",\n ...moneyRender(),\n },\n {\n title: \"成功率\",\n dataIndex: \"succeeded_rate\",\n sorter: true,\n },\n {\n title: \"累计手续费\",\n dataIndex: \"total_fee\",\n ...moneyRender(),\n },\n {\n title: \"渠道余额\",\n dataIndex: \"gateway_balance\",\n ...moneyRender(),\n },\n];\nexport const sumColumns = [\n {\n title: \"累计订单次数\",\n dataIndex: \"total_times\",\n },\n {\n title: \"累计订单成功次数\",\n dataIndex: \"total_succeeded_times\",\n },\n {\n title: \"累计成功金额\",\n dataIndex: \"total_succeeded_amount\",\n render: val => priceFormat({ val, currency: 0 }),\n },\n];\nexport const statisticsColumns = columns.filter(\n i => [\"total_times\", \"total_succeeded_times\"].indexOf(i.dataIndex) !== -1,\n);\n\nconst excelPriceFormat = (val, currency) =>\n priceFormat({ val, currency, showUnit: false });\n\nexport const exportColumnsRenderMap = {\n created: val => dateFormat(val, \"YYYY-MM-DD\"),\n is_online: val => isActiveLang(val),\n currency: val => Currency[val] || \"\",\n total_amount: (val, record) => excelPriceFormat(val, record.currency),\n total_succeeded_amount: (val, record) =>\n excelPriceFormat(val, record.currency),\n total_fee: (val, record) => excelPriceFormat(val, record.currency),\n gateway_balance: (val, record) => excelPriceFormat(val, record.currency),\n};\n","import { dateFormat, priceFormat } from \"@/utils/format\";\nimport { Currency, isActiveLang } from \"@/utils/enum\";\nimport Tag from \"@/components/Tag\";\n\nconst moneyRender = () => {\n return {\n render: (val, record) =>\n priceFormat({ val: val || 0, currency: record.currency }),\n className: \"text-nowrap\",\n sorter: true,\n };\n};\n\nexport const columns = [\n { title: \"ID\", dataIndex: \"id\", sorter: true },\n { title: \"商户ID\", dataIndex: \"app_id\", sorter: true },\n { title: \"商户名称\", dataIndex: \"app_name\", sorter: true },\n {\n title: \"报表时间\",\n dataIndex: \"created\",\n className: \"text-nowrap\",\n render: val => dateFormat(val, \"YYYY-MM-DD\"),\n sorter: true,\n },\n {\n title: \"是否线上渠道\",\n dataIndex: \"is_online\",\n render: val => ,\n sorter: true,\n },\n {\n title: \"货币类型\",\n dataIndex: \"currency\",\n render: val => Currency[val] || \"\",\n className: \"text-nowrap\",\n },\n {\n title: \"帐户余额\",\n dataIndex: \"total_balance\",\n ...moneyRender(),\n },\n {\n title: \"圈存余额\",\n dataIndex: \"total_block\",\n ...moneyRender(),\n },\n {\n title: \"累计订单次数\",\n dataIndex: \"total_times\",\n sorter: true,\n },\n {\n title: \"累计成功次数\",\n dataIndex: \"total_succeeded_times\",\n sorter: true,\n },\n {\n title: \"累计金额\",\n dataIndex: \"total_amount\",\n ...moneyRender(),\n },\n {\n title: \"累计成功金额\",\n dataIndex: \"total_succeeded_amount\",\n ...moneyRender(),\n },\n {\n title: \"提交代付笔数\",\n dataIndex: \"transfer_times\",\n sorter: true,\n },\n {\n title: \"成功代付笔数\",\n dataIndex: \"transfer_succeeded_times\",\n sorter: true,\n },\n {\n title: \"提交代付金额\",\n dataIndex: \"transfer_amount\",\n ...moneyRender(),\n },\n {\n title: \"成功代付金额\",\n dataIndex: \"transfer_succeeded_amount\",\n ...moneyRender(),\n },\n {\n title: \"存提差\",\n dataIndex: \"difference\",\n render: (val, record) => priceFormat({ val, currency: record.currency }),\n className: \"text-nowrap\",\n sorter: true,\n },\n {\n title: \"代收手续费\",\n dataIndex: \"order_fee\",\n render: (val, record) => priceFormat({ val, currency: record.currency }),\n className: \"text-nowrap\",\n sorter: true,\n },\n {\n title: \"代付手续费\",\n dataIndex: \"transfer_fee\",\n render: (val, record) => priceFormat({ val, currency: record.currency }),\n className: \"text-nowrap\",\n sorter: true,\n },\n {\n title: \"今天盈利\",\n dataIndex: \"profit_today\",\n render: (val, record) => priceFormat({ val, currency: record.currency }),\n className: \"text-nowrap\",\n sorter: true,\n },\n];\nexport const sumColumns = [\n {\n title: \"订单成功次数\",\n dataIndex: \"order_succeeded_times\",\n },\n {\n title: \"订单成功金额\",\n dataIndex: \"order_succeeded_amount\",\n render: val => priceFormat({ val, currency: 0 }),\n },\n {\n title: \"累计代理代付次数\",\n dataIndex: \"total_trans_times\",\n },\n {\n title: \"累计代理代付金額\",\n dataIndex: \"total_trans_amount\",\n render: val => priceFormat({ val, currency: 0 }),\n },\n {\n title: \"代付成功次数\",\n dataIndex: \"transfer_succeeded_times\",\n },\n {\n title: \"代付成功金额\",\n dataIndex: \"transfer_succeeded_amount\",\n render: val => priceFormat({ val, currency: 0 }),\n },\n // transfer_succeeded_app_fee + transfer_succeeded_gateway_fee\n {\n title: \"累計代付手續費\",\n dataIndex: \"transfer_succeeded_app_fee\",\n render: (val, record) => {\n return priceFormat({\n val: val + record.transfer_succeeded_gateway_fee,\n currency: 0,\n });\n },\n },\n];\nexport const statisticsColumns = columns.filter(\n i =>\n [\n \"total_times\",\n \"total_succeeded_times\",\n \"total_trans_times\",\n \"transfer_succeeded_times\",\n ].indexOf(i.dataIndex) !== -1,\n);\n\nconst excelPriceFormat = (val, currency) =>\n priceFormat({ val, currency, showUnit: false });\n\nexport const exportColumnsRenderMap = {\n created: val => dateFormat(val),\n is_online: val => isActiveLang(val),\n currency: val => Currency[val] || \"\",\n total_balance: (val, record) => excelPriceFormat(val, record.currency),\n total_block: (val, record) => excelPriceFormat(val, record.currency),\n total_amount: (val, record) => excelPriceFormat(val, record.currency),\n total_succeeded_amount: (val, record) =>\n excelPriceFormat(val, record.currency),\n transfer_amount: (val, record) => excelPriceFormat(val, record.currency),\n transfer_succeeded_amount: (val, record) =>\n excelPriceFormat(val, record.currency),\n difference: (val, record) => excelPriceFormat(val, record.currency),\n order_fee: (val, record) => excelPriceFormat(val, record.currency),\n transfer_fee: (val, record) => excelPriceFormat(val, record.currency),\n profit_today: (val, record) => excelPriceFormat(val, record.currency),\n};\n","import { dateFormat, priceFormat } from \"@/utils/format\";\nimport { Currency, isActiveLang } from \"@/utils/enum\";\n// import Tag from \"@/components/Tag\";\n\nconst moneyRender = () => {\n return {\n render: (val, record) =>\n priceFormat({ val: val || 0, currency: record.currency }),\n className: \"text-nowrap\",\n sorter: true,\n };\n};\n\n// export const handleFailedCount = (val, record) =>\n// record.total_times - record.total_succeeded_times;\n\n// export const handleSucceededRate = (val, record) =>\n// `${((record.total_succeeded_times / record.total_times) * 100).toFixed(2)}%`;\n\nexport const columns = [\n // { title: \"ID\", dataIndex: \"id\", sorter: true },\n {\n title: \"渠道ID\",\n dataIndex: \"gateway_id\",\n sorter: true,\n },\n { title: \"商户ID\", dataIndex: \"app_id\", sorter: true },\n { title: \"商户名称\", dataIndex: \"app_name\", sorter: true },\n {\n title: \"报表时间\",\n dataIndex: \"created\",\n className: \"text-nowrap\",\n render: val => dateFormat(val, \"YYYY-MM-DD\"),\n sorter: true,\n },\n {\n title: \"货币类型\",\n dataIndex: \"currency\",\n render: val => Currency[val] || \"\",\n className: \"text-nowrap\",\n },\n {\n title: \"累计订单次数\",\n dataIndex: \"total_times\",\n sorter: true,\n },\n {\n title: \"累计订单成功次数\",\n dataIndex: \"total_succeeded_times\",\n sorter: true,\n },\n {\n title: \"累计金额\",\n dataIndex: \"total_amount\",\n ...moneyRender(),\n },\n {\n title: \"累计成功金额\",\n dataIndex: \"total_succeeded_amount\",\n ...moneyRender(),\n },\n // {\n // title: \"成功率\",\n // dataIndex: \"succeeded_rate\",\n // sorter: true,\n // },\n // total_amount_app_fee + total_amount_gateway_fee\n {\n title: \"累计手续费\",\n dataIndex: \"total_fee\",\n ...moneyRender(),\n },\n];\nexport const sumColumns = [\n {\n title: \"累计订单次数\",\n dataIndex: \"total_times\",\n },\n {\n title: \"累计订单成功次数\",\n dataIndex: \"total_succeeded_times\",\n },\n {\n title: \"累计成功金额\",\n dataIndex: \"total_succeeded_amount\",\n render: val => priceFormat({ val, currency: 0 }),\n },\n];\nexport const statisticsColumns = columns.filter(\n i => [\"total_times\", \"total_succeeded_times\"].indexOf(i.dataIndex) !== -1,\n);\n\nconst excelPriceFormat = (val, currency) =>\n priceFormat({ val, currency, showUnit: false });\n\nexport const exportColumnsRenderMap = {\n created: val => dateFormat(val, \"YYYY-MM-DD\"),\n is_online: val => isActiveLang(val),\n currency: val => Currency[val] || \"\",\n total_amount: (val, record) => excelPriceFormat(val, record.currency),\n total_succeeded_amount: (val, record) =>\n excelPriceFormat(val, record.currency),\n total_fee: (val, record) => excelPriceFormat(val, record.currency),\n};\n","import { dateFormat, priceFormat } from \"@/utils/format\";\nimport { Currency } from \"@/utils/enum\";\n\nconst moneyRender = () => {\n return {\n render: (val, record) =>\n priceFormat({ val: val || 0, currency: record.currency }),\n className: \"text-nowrap\",\n sorter: true,\n };\n};\n\nexport const columns = [\n { title: \"ID\", dataIndex: \"id\", sorter: true },\n { title: \"商户ID\", dataIndex: \"app_id\", sorter: true },\n { title: \"商户名称\", dataIndex: \"app_name\", sorter: true },\n {\n title: \"货币类型\",\n dataIndex: \"currency\",\n render: val => Currency[val] || \"\",\n className: \"text-nowrap\",\n },\n {\n title: \"报表时间\",\n dataIndex: \"created\",\n className: \"text-nowrap\",\n render: val => dateFormat(val, \"YYYY-MM-DD\"),\n sorter: true,\n },\n {\n title: \"昨天余额\",\n dataIndex: \"yesterday_balance\",\n ...moneyRender(),\n },\n {\n title: \"当天收款金额\",\n dataIndex: \"total_order_amount\",\n ...moneyRender(),\n },\n {\n title: \"当天收款手续费\",\n dataIndex: \"total_order_fee\",\n ...moneyRender(),\n },\n {\n title: \"当天出款金额\",\n dataIndex: \"total_transfer_amount\",\n ...moneyRender(),\n },\n {\n title: \"当天出款手续费\",\n dataIndex: \"total_transfer_fee\",\n ...moneyRender(),\n },\n {\n title: \"当天商户提现\",\n dataIndex: \"total_withdrawal\",\n ...moneyRender(),\n },\n {\n title: \"当天商户提现手续费\",\n dataIndex: \"total_withdrawal_fee\",\n ...moneyRender(),\n },\n {\n title: \"当天盈利\",\n dataIndex: \"current_day_total_profit\",\n ...moneyRender(),\n },\n {\n title: \"当前余额\",\n dataIndex: \"current_day_total_balance\",\n ...moneyRender(),\n },\n];\n\nexport const sumColumns = [\n {\n title: \"累计收款金额\",\n dataIndex: \"total_order_amount\",\n render: val => priceFormat({ val, currency: 0 }),\n },\n {\n title: \"累计收款手续费\",\n dataIndex: \"total_order_fee\",\n render: val => priceFormat({ val, currency: 0 }),\n },\n {\n title: \"累计出款金额\",\n dataIndex: \"total_transfer_amount\",\n render: val => priceFormat({ val, currency: 0 }),\n },\n {\n title: \"累计出款手续费\",\n dataIndex: \"total_transfer_fee\",\n render: val => priceFormat({ val, currency: 0 }),\n },\n {\n title: \"累计商户提现\",\n dataIndex: \"total_withdrawal\",\n render: val => priceFormat({ val, currency: 0 }),\n },\n {\n title: \"累计商户提现手续费\",\n dataIndex: \"total_withdrawal_fee\",\n render: val => priceFormat({ val, currency: 0 }),\n },\n {\n title: \"累计盈利\",\n dataIndex: \"total_profit\",\n render: val => priceFormat({ val, currency: 0 }),\n },\n];\n\nconst excelPriceFormat = (val, currency) =>\n priceFormat({ val, currency, showUnit: false });\n\nexport const exportColumnsRenderMap = {\n created: val => dateFormat(val, \"YYYY-MM-DD\"),\n currency: val => Currency[val] || \"\",\n yesterday_balance: (val, record) => excelPriceFormat(val, record.currency),\n total_order_amount: (val, record) => excelPriceFormat(val, record.currency),\n total_order_fee: (val, record) => excelPriceFormat(val, record.currency),\n total_transfer_amount: (val, record) =>\n excelPriceFormat(val, record.currency),\n total_transfer_fee: (val, record) => excelPriceFormat(val, record.currency),\n total_withdrawal: (val, record) => excelPriceFormat(val, record.currency),\n total_withdrawal_fee: (val, record) => excelPriceFormat(val, record.currency),\n current_day_total_profit: (val, record) =>\n excelPriceFormat(val, record.currency),\n current_day_total_balance: (val, record) =>\n excelPriceFormat(val, record.currency),\n balance: (val, record) => excelPriceFormat(val, record.currency),\n};\n","import { notification } from \"antd\";\n/**\n * fields\n * @param {string} type - [success, info, warning, error]\n * @param {string} title\n * @param {string} message\n */\nconst NotifFactory = ({ type = \"error\", title, message }) => {\n notification[type]({\n message: title,\n description: message,\n });\n};\n\nexport default NotifFactory;\n","import { createSlice, createAsyncThunk } from \"@reduxjs/toolkit\";\nimport request from \"@/utils/request\";\nimport { metaToPagin } from \"@/utils/format\";\n\nexport const getAppBalanceSummaryDaily = createAsyncThunk(\n \"report/getAppBalanceSummaryDaily\",\n async params => {\n const res = await request({\n url: \"/api/developer/report/app/balance-summary/daily\",\n method: \"get\",\n params,\n });\n return res;\n },\n);\n\nexport const getAppBalanceSummaryDailySum = createAsyncThunk(\n \"report/getAppBalanceSummaryDailySum\",\n async params => {\n const res = await request({\n url: \"/api/developer/report/app/balance-summary/daily/sum\",\n method: \"get\",\n params,\n });\n return res;\n },\n);\n\n// 匯出 excel\nexport const exportAppBalanceSummaryDaily = async (params = {}) => {\n const res = await request({\n url: `/api/developer/report/app/balance-summary/daily/export`,\n method: \"get\",\n params: { per_page: 9999, ...params },\n });\n return res;\n};\n\nexport const slice = createSlice({\n name: \"AppBalanceSummaryDaily\",\n initialState: {\n list: [],\n meta: {},\n sum: {},\n },\n extraReducers: {\n [getAppBalanceSummaryDaily.fulfilled]: (state, action) => {\n const { status, data } = action.payload;\n if (status !== 200) return;\n state.list = data.data || [];\n state.meta = metaToPagin(data.meta);\n },\n [getAppBalanceSummaryDailySum.fulfilled]: (state, action) => {\n const { status, data } = action.payload;\n if (status !== 200) return;\n state.sum = data;\n },\n },\n});\nexport const selectAppBalanceSummaryDaily = state =>\n state.appBalanceSummaryDaily;\nexport default slice.reducer;\n","import { createSlice, createAsyncThunk } from \"@reduxjs/toolkit\";\nimport request from \"@/utils/request\";\nimport { metaToPagin } from \"@/utils/format\";\n\nexport const getAppGatewayDaily = createAsyncThunk(\n \"report/getDaily\",\n async params => {\n const res = await request({\n url: \"/api/developer/report/app/gateway/daily\",\n method: \"get\",\n params,\n });\n return res;\n },\n);\nexport const getAppGatewayDailySum = createAsyncThunk(\n \"report/getDailySum\",\n async params => {\n const res = await request({\n url: \"/api/developer/report/app/gateway/daily/sum\",\n method: \"get\",\n params,\n });\n return res;\n },\n);\n\n// 匯出 excel\nexport const exportAppGatewayDaily = async (params = {}) => {\n const res = await request({\n url: `/api/developer/report/app/gateway/daily/export`,\n method: \"get\",\n params: { per_page: 9999, ...params },\n });\n return res;\n};\n\nexport const slice = createSlice({\n name: \"AppGatewayDaily\",\n initialState: {\n list: [],\n meta: {},\n sum: {},\n },\n extraReducers: {\n [getAppGatewayDaily.fulfilled]: (state, action) => {\n const { status, data } = action.payload;\n if (status !== 200) return;\n state.list = data.data;\n state.meta = metaToPagin(data.meta);\n },\n [getAppGatewayDailySum.fulfilled]: (state, action) => {\n const { status, data } = action.payload;\n if (status !== 200) return;\n state.sum = data;\n },\n },\n});\nexport const selectAppGatewayDaily = state => state.appGatewayDaily;\nexport default slice.reducer;\n","import { createSlice, createAsyncThunk } from \"@reduxjs/toolkit\";\nimport request from \"@/utils/request\";\nimport { metaToPagin } from \"@/utils/format\";\n\nexport const getDeveloperDaily = createAsyncThunk(\n \"report/getDeveloperDaily\",\n async params => {\n const res = await request({\n url: \"/api/developer/report/daily\",\n method: \"get\",\n params,\n });\n return res;\n },\n);\nexport const getDeveloperDailySum = createAsyncThunk(\n \"report/getDeveloperDailySum\",\n async params => {\n const res = await request({\n url: \"/api/developer/report/sum\",\n method: \"get\",\n params,\n });\n return res;\n },\n);\n\n// 匯出 excel\nexport const exportDeveloperDaily = async (params = {}) => {\n const res = await request({\n url: `/api/developer/report/daily/export`,\n method: \"get\",\n params: { per_page: 9999, ...params },\n });\n return res;\n};\n\nexport const slice = createSlice({\n name: \"developerDaily\",\n initialState: {\n list: [],\n meta: {},\n sum: {},\n },\n extraReducers: {\n [getDeveloperDaily.fulfilled]: (state, action) => {\n const { status, data } = action.payload;\n if (status !== 200) return;\n state.list = data.data;\n state.meta = metaToPagin(data.meta);\n },\n [getDeveloperDailySum.fulfilled]: (state, action) => {\n const { status, data } = action.payload;\n if (status !== 200) return;\n state.sum = data;\n },\n },\n});\nexport const selectDeveloperDaily = state => state.developerDaily;\nexport default slice.reducer;\n","import { createSlice, createAsyncThunk } from \"@reduxjs/toolkit\";\nimport request from \"@/utils/request\";\nimport { metaToPagin } from \"@/utils/format\";\n\nexport const getTransferAppGatewayDaily = createAsyncThunk(\n \"report/getTransferAppGatewayAppDaily\",\n async params => {\n const res = await request({\n url: \"/api/developer/report/transfer/app/gateway/daily\",\n method: \"get\",\n params,\n });\n return res;\n },\n);\nexport const getTransferAppGatewayDailySum = createAsyncThunk(\n \"report/getTransferAppGatewayAppDailySum\",\n async params => {\n const res = await request({\n url: \"/api/developer/report/transfer/app/gateway/daily/sum\",\n method: \"get\",\n params,\n });\n return res;\n },\n);\n\n// 匯出 excel\nexport const exportTransferAppGatewayDaily = async (params = {}) => {\n const res = await request({\n url: `/api/developer/report/transfer/app/gateway/daily/export`,\n method: \"get\",\n params: { per_page: 9999, ...params },\n });\n return res;\n};\n\nexport const slice = createSlice({\n name: \"TransferAppGatewayDaily\",\n initialState: {\n list: [],\n meta: {},\n sum: {},\n },\n extraReducers: {\n [getTransferAppGatewayDaily.fulfilled]: (state, action) => {\n const { status, data } = action.payload;\n if (status !== 200) return;\n state.list = data.data;\n state.meta = metaToPagin(data.meta);\n },\n [getTransferAppGatewayDailySum.fulfilled]: (state, action) => {\n const { status, data } = action.payload;\n if (status !== 200) return;\n state.sum = data;\n },\n },\n});\nexport const selectTransferAppGatewayDaily = state =>\n state.transferAppGatewayDaily;\nexport default slice.reducer;\n","import React from \"react\";\nimport { Spin } from \"antd\";\nimport { LoadingOutlined } from \"@ant-design/icons\";\n\nconst SpinC = props => {\n return (\n }>\n {props.children}\n \n );\n};\n\nfunction spinPropsAreEqual(prev, next) {\n return prev.spinning === next.spinning;\n}\nexport default React.memo(SpinC, spinPropsAreEqual);\n","import { dateFormat, priceFormat } from \"@/utils/format\";\nimport { CryptoAcctLogsType, AppAcctLogType, Currency } from \"@/utils/enum\";\n\nexport const listColumns = [\n { title: \"ID\", dataIndex: \"id\", sorter: true },\n { title: \"商户名称/APP名称\", dataIndex: \"app_name\", sorter: true },\n {\n title: \"交易类型\",\n dataIndex: \"type\",\n render: val => AppAcctLogType[val],\n sorter: true,\n },\n { title: \"订单号\", dataIndex: \"order_no\" },\n {\n title: \"变动前金额\",\n dataIndex: \"b1\",\n render: (val, record) => priceFormat({ val, currency: record.currency }),\n sorter: true,\n className: \"text-nowrap\",\n },\n {\n title: \"帐变后金额\",\n dataIndex: \"b2\",\n render: (val, record) => priceFormat({ val, currency: record.currency }),\n sorter: true,\n className: \"text-nowrap\",\n },\n {\n title: \"变动金额\",\n dataIndex: \"amount\",\n render: (val, record) => priceFormat({ val, currency: record.currency }),\n sorter: true,\n className: \"text-nowrap\",\n },\n { title: \"备注\", dataIndex: \"note\" },\n {\n title: \"创建日期\",\n dataIndex: \"created\",\n className: \"text-nowrap\",\n render: val => dateFormat(val),\n sorter: true,\n },\n {\n title: \"帐变金额\",\n dataIndex: \"order_amount\",\n render: (val, record) => priceFormat({ val, currency: record.currency }),\n sorter: true,\n className: \"text-nowrap\",\n },\n {\n title: \"币种\",\n dataIndex: \"currency\",\n render: val => Currency[val] || \"\",\n className: \"text-nowrap\",\n },\n { title: \"商户账户ID\", dataIndex: \"app_acct_id\", sorter: true },\n { title: \"商户用户ID\", dataIndex: \"app_user_id\", sorter: true },\n { title: \"第三方订单号\", dataIndex: \"trans_no\" },\n { title: \"客户端IP\", dataIndex: \"client_ip\" },\n { title: \"交易内容\", dataIndex: \"subject\" },\n { title: \"交易渠道,网关名称\", dataIndex: \"channel\" },\n {\n title: \"账变日志关联的对象类型\",\n dataIndex: \"content_type\",\n render: val => CryptoAcctLogsType[val],\n },\n { title: \"账变日志关联的对象ID\", dataIndex: \"content_id\" },\n { title: \"操作人ID\", dataIndex: \"op_user_id\" },\n { title: \"操作人\", dataIndex: \"op_username\" },\n {\n title: \"手续费\",\n dataIndex: \"fee\",\n render: (val, record) => priceFormat({ val, currency: record.currency }),\n sorter: true,\n className: \"text-nowrap\",\n },\n {\n title: \"更新日期\",\n dataIndex: \"updated\",\n className: \"text-nowrap\",\n render: val => dateFormat(val),\n sorter: true,\n },\n];\n\nexport const defaultColumns = [\n \"id\",\n \"app_name\",\n \"type\",\n \"order_no\",\n \"b1\",\n \"b2\",\n \"amount\",\n \"note\",\n \"created\",\n \"action\",\n];\n\nconst excelPriceFormat = (val, currency) =>\n priceFormat({ val, currency, showUnit: false });\n\nexport const exportColumnsRenderMap = {\n type: val => AppAcctLogType[val] || \"\",\n b1: (val, record) => excelPriceFormat(val, record.currency),\n b2: (val, record) => excelPriceFormat(val, record.currency),\n amount: (val, record) => excelPriceFormat(val, record.currency),\n order_amount: (val, record) => excelPriceFormat(val, record.currency),\n created: val => dateFormat(val),\n currency: val => Currency[val] || \"\",\n content_type: val => CryptoAcctLogsType[val] || \"\",\n fee: (val, record) => excelPriceFormat(val, record.currency),\n updated: val => dateFormat(val),\n};\n","import { createSlice, createAsyncThunk } from \"@reduxjs/toolkit\";\nimport request from \"@/utils/request\";\nimport { metaToPagin } from \"@/utils/format\";\n\nexport const getAppAcctLogs = createAsyncThunk(\n \"appAcctLog/getList\",\n async (params = {}) => {\n const res = await request({\n url: \"/api/developer/appacctlogs\",\n method: \"get\",\n params,\n });\n return res;\n },\n);\n\n// 匯出 excel\nexport const exportAppAccLog = async (params = {}) => {\n const res = await request({\n url: `/api/developer/appacctlogs/export`,\n method: \"get\",\n params: { per_page: 9999, ...params },\n });\n return res;\n};\n\nexport const slice = createSlice({\n name: \"appAcctLog\",\n initialState: {\n list: [],\n meta: {},\n currentRow: {},\n },\n extraReducers: {\n [getAppAcctLogs.fulfilled]: (state, action) => {\n const { status, data } = action.payload;\n if (status !== 200) return;\n state.list = data.data;\n state.meta = metaToPagin(data.meta);\n },\n },\n});\nexport const selectAppAcctLog = state => state.appAcctLog;\nexport default slice.reducer;\n","import { createSlice, createAsyncThunk } from \"@reduxjs/toolkit\";\nimport request from \"@/utils/request\";\nimport { metaToPagin } from \"@/utils/format\";\n\nexport const getOrders = createAsyncThunk(\n \"order/getList\",\n async (params = {}) => {\n const res = await request({\n url: \"/api/developer/orders\",\n method: \"get\",\n params,\n });\n return res;\n },\n);\n\n// 匯出 excel\nexport const exportOrder = async (params = {}) => {\n const res = await request({\n url: `/api/developer/orders/export`,\n method: \"get\",\n params: { per_page: 9999, ...params },\n });\n return res;\n};\n\nexport const slice = createSlice({\n name: \"order\",\n initialState: {\n list: [],\n meta: {},\n currentRow: {},\n },\n reducers: {\n setOrders: (state, action) => {\n state.list = action.payload;\n },\n },\n extraReducers: {\n [getOrders.fulfilled]: (state, action) => {\n const { status, data } = action.payload;\n if (status !== 200) return;\n state.list = data.data;\n state.meta = metaToPagin(data.meta);\n },\n },\n});\nexport const { setOrders } = slice.actions;\nexport const selectOrder = state => state.order;\nexport default slice.reducer;\n","import { createSlice, createAsyncThunk } from \"@reduxjs/toolkit\";\nimport request from \"@/utils/request\";\nimport { metaToPagin } from \"@/utils/format\";\n\nexport const getDeveloperSubDaily = createAsyncThunk(\n \"report/getDeveloperSubDaily\",\n async params => {\n const res = await request({\n url: \"/api/developer/sub/report/daily\",\n method: \"get\",\n params,\n });\n return res;\n },\n);\nexport const getDeveloperSubDailySum = createAsyncThunk(\n \"report/getDeveloperSubDailySum\",\n async params => {\n const res = await request({\n url: \"/api/developer/sub/report/sum\",\n method: \"get\",\n params,\n });\n return res;\n },\n);\n\nexport const slice = createSlice({\n name: \"developerSubDaily\",\n initialState: {\n list: [],\n meta: {},\n sum: {},\n },\n extraReducers: {\n [getDeveloperSubDaily.fulfilled]: (state, action) => {\n const { status, data } = action.payload;\n if (status !== 200) return;\n state.list = data.data;\n state.meta = metaToPagin(data.meta);\n },\n [getDeveloperSubDailySum.fulfilled]: (state, action) => {\n const { status, data } = action.payload;\n if (status !== 200) return;\n state.sum = data;\n },\n },\n});\nexport const selectDeveloperSubDaily = state => state.developerSubDaily;\nexport default slice.reducer;\n","import {\n OrderStatus,\n WXPayType,\n PayMethod,\n Currency,\n PayStatus,\n isSuccessLang,\n isActiveLang,\n} from \"@/utils/enum\";\nimport { priceFormat, dateFormat } from \"@/utils/format\";\nimport Tag from \"@/components/Tag\";\nconst columns = [\n { title: \"ID\", dataIndex: \"id\", sorter: true },\n { title: \"订单号\", dataIndex: \"order_no\" },\n { title: \"第三方订单号\", dataIndex: \"trans_no\" },\n { title: \"AppID\", dataIndex: \"app_id\", sorter: true },\n { title: \"商戶ID\", dataIndex: \"developer_id\", sorter: true },\n { title: \"会员ID\", dataIndex: \"userid\", sorter: true },\n { title: \"渠道ID\", dataIndex: \"gateway_id\", sorter: true },\n { title: \"会员姓名\", dataIndex: \"payer_name\", width: 100 },\n { title: \"帐户名称\", dataIndex: \"acct_name\" },\n {\n title: \"订单状态\",\n dataIndex: \"status\",\n render: val => OrderStatus[val] || \"\",\n width: 100,\n },\n {\n title: \"支付类别\",\n dataIndex: \"pay_type\",\n render: val => WXPayType[val] || \"\",\n width: 100,\n },\n {\n title: \"付款方式\",\n dataIndex: \"pay_method\",\n className: \"text-nowrap\",\n render: val => PayMethod[val] || \"\",\n },\n {\n title: \"付款人信息\",\n dataIndex: \"payer_cred\",\n width: 100,\n render: val => JSON.stringify(val),\n },\n { title: \"设备类型\", dataIndex: \"device_type\", width: 100 },\n {\n title: \"支付状态\",\n dataIndex: \"pay_status\",\n render: val => PayStatus[val] || \"\",\n width: 100,\n },\n {\n title: \"成功时间\",\n dataIndex: \"paid_at\",\n className: \"text-nowrap\",\n render: val => dateFormat(val),\n sorter: true,\n },\n {\n title: \"审核状态\",\n dataIndex: \"approval_status\",\n render: val => OrderStatus[val] || \"\",\n },\n {\n title: \"审核人员\",\n dataIndex: \"approvers\",\n },\n {\n title: \"通知状态\",\n dataIndex: \"notify_status\",\n render: val => OrderStatus[val] || \"\",\n },\n {\n title: \"通知时间\",\n dataIndex: \"notified_at\",\n className: \"text-nowrap\",\n render: val => dateFormat(val),\n sorter: true,\n },\n { title: \"IP\", dataIndex: \"client_ip\" },\n { title: \"错误代码\", dataIndex: \"failure_code\", width: 100 },\n { title: \"错误信息\", dataIndex: \"failure_msg\", width: 100 },\n {\n title: \"支付金额\",\n dataIndex: \"amount\",\n render: (val, record) => priceFormat({ val, currency: record.currency }),\n className: \"text-nowrap\",\n sorter: true,\n },\n {\n title: \"实际付款金额\",\n dataIndex: \"amount_paid\",\n render: (val, record) => priceFormat({ val, currency: record.currency }),\n className: \"text-nowrap\",\n sorter: true,\n },\n {\n title: \"赠送金额\",\n dataIndex: \"bonus\",\n render: (val, record) => priceFormat({ val, currency: record.currency }),\n className: \"text-nowrap\",\n sorter: true,\n },\n {\n title: \"随机金额\",\n dataIndex: \"amount_rand\",\n render: (val, record) => priceFormat({ val, currency: record.currency }),\n className: \"text-nowrap\",\n sorter: true,\n },\n {\n title: \"货币类型\",\n dataIndex: \"currency\",\n render: val => Currency[val] || \"\",\n className: \"text-nowrap\",\n },\n {\n title: \"是否成功\",\n dataIndex: \"succeeded\",\n render: (val, { status }) =>\n [4, 5, 6, 7, 9, 10, 13, 14, 15].includes(status) ? (\n {isSuccessLang(val)}\n ) : null,\n },\n {\n title: \"是否付款\",\n dataIndex: \"paid\",\n render: val => ,\n },\n {\n title: \"审核通过\",\n dataIndex: \"approved\",\n render: val => ,\n },\n {\n title: \"是否加密货币\",\n dataIndex: \"is_crypto\",\n render: val => ,\n },\n {\n title: \"是否在线订单\",\n dataIndex: \"is_online\",\n render: val => ,\n },\n {\n title: \"清算成功\",\n dataIndex: \"settled\",\n render: val => ,\n },\n {\n title: \"创建日期\",\n dataIndex: \"created\",\n render: val => dateFormat(val),\n className: \"text-nowrap\",\n sorter: true,\n },\n {\n title: \"更新日期\",\n dataIndex: \"updated\",\n render: val => dateFormat(val),\n className: \"text-nowrap\",\n sorter: true,\n },\n];\n\nconst excelPriceFormat = (val, currency) =>\n priceFormat({ val, currency, showUnit: false });\n\n// 定義需要 額外 Render 的欄位\nexport const exportColumnsRenderMap = {\n status: val => OrderStatus[val] || \"\",\n pay_type: val => WXPayType[val] || \"\",\n pay_method: val => PayMethod[val] || \"\",\n payer_cred: val => JSON.stringify(val),\n pay_status: val => PayStatus[val] || \"\",\n paid_at: val => dateFormat(val),\n approval_status: val => OrderStatus[val] || \"\",\n notify_status: val => OrderStatus[val] || \"\",\n notified_at: val => dateFormat(val),\n amount: (val, record) => excelPriceFormat(val, record.currency),\n amount_paid: (val, record) => excelPriceFormat(val, record.currency),\n bonus: (val, record) => excelPriceFormat(val, record.currency),\n amount_rand: (val, record) => excelPriceFormat(val, record.currency),\n currency: val => Currency[val] || \"\",\n succeeded: (val, { status }) =>\n [4, 5, 6, 7, 9, 10, 13, 14, 15].includes(status)\n ? isSuccessLang(val)\n : null,\n paid: val => isActiveLang(val),\n approved: val => isActiveLang(val),\n is_crypto: val => isActiveLang(val),\n is_online: val => isActiveLang(val),\n settled: val => isActiveLang(val),\n created: val => dateFormat(val),\n updated: val => dateFormat(val),\n};\n\nexport default columns;\n","import { dateFormat, priceFormat } from \"@/utils/format\";\nimport {\n Currency,\n transferStatus,\n isSuccessLang,\n isActiveLang,\n FeeType,\n} from \"@/utils/enum\";\nimport Tag from \"@/components/Tag\";\n\nexport const columns = [\n { title: \"ID\", dataIndex: \"id\", sorter: true },\n { title: \"开发者订单号\", dataIndex: \"order_no\" },\n { title: \"第三方订单号\", dataIndex: \"trans_no\" },\n { title: \"AppID\", dataIndex: \"app_id\", sorter: true },\n { title: \"App用户ID\", dataIndex: \"app_user_id\", sorter: true },\n { title: \"app管理-姓名\", dataIndex: \"app_name_cn\", sorter: true },\n { title: \"代理ID\", dataIndex: \"agent_id\" },\n { title: \"代理姓名\", dataIndex: \"agent_name\" },\n { title: \"渠道ID\", dataIndex: \"gateway_id\", sorter: true },\n {\n title: \"用户账户\",\n dataIndex: \"account\",\n },\n {\n title: \"银行卡开户行\",\n dataIndex: \"bank_name\",\n },\n {\n title: \"出款银行卡ID\",\n dataIndex: \"card_id\",\n },\n {\n title: \"出款钱包ID\",\n dataIndex: \"crypto_wallet_id\",\n },\n {\n title: \"真实姓名\",\n dataIndex: \"name\",\n },\n {\n title: \"出款金额\",\n dataIndex: \"amount\",\n render: (val, record) => priceFormat({ val, currency: record.currency }),\n sorter: true,\n className: \"text-nowrap\",\n },\n {\n title: \"实际出款金额\",\n dataIndex: \"amount_paid\",\n render: (val, record) => priceFormat({ val, currency: record.currency }),\n sorter: true,\n className: \"text-nowrap\",\n },\n {\n title: \"出款货币类型\",\n dataIndex: \"currency\",\n render: val => Currency[val] || \"\",\n sorter: true,\n className: \"text-nowrap\",\n },\n {\n title: \"商户手续费类型\",\n dataIndex: \"app_fee_rate\",\n render: val => FeeType[val] || \"\",\n sorter: true,\n className: \"text-nowrap\",\n },\n {\n title: \"商户实收手续费\",\n dataIndex: \"amount_app_fee\",\n render: (val, record) => priceFormat({ val, currency: record.currency }),\n sorter: true,\n className: \"text-nowrap\",\n },\n {\n title: \"出帐金额\",\n dataIndex: \"amount_app\",\n render: (val, record) => priceFormat({ val, currency: record.currency }),\n sorter: true,\n className: \"text-nowrap\",\n },\n {\n title: \"支付网关类名\",\n dataIndex: \"gateway\",\n sorter: true,\n },\n {\n title: \"是否通过审核\",\n dataIndex: \"approved\",\n render: val => ,\n },\n {\n title: \"审核状态\",\n dataIndex: \"approval_status\",\n render: val => transferStatus[val],\n },\n {\n title: \"审核人ID\",\n dataIndex: \"approver_id\",\n },\n {\n title: \"审核通过时间\",\n dataIndex: \"approved_at\",\n width: 120,\n render: val => dateFormat(val),\n sorter: true,\n },\n {\n title: \"审核备注\",\n dataIndex: \"comments\",\n },\n {\n title: \"创建时间\",\n dataIndex: \"created\",\n className: \"text-nowrap\",\n render: val => dateFormat(val),\n sorter: true,\n },\n {\n title: \"更新日期\",\n dataIndex: \"updated\",\n className: \"text-nowrap\",\n render: val => dateFormat(val),\n sorter: true,\n },\n {\n title: \"是否取消\",\n dataIndex: \"canceled\",\n render: val => ,\n },\n {\n title: \"取消时间\",\n dataIndex: \"canceled_at\",\n className: \"text-nowrap\",\n render: val => dateFormat(val),\n sorter: true,\n },\n {\n title: \"过期时间\",\n dataIndex: \"expired_at\",\n className: \"text-nowrap\",\n render: val => dateFormat(val),\n sorter: true,\n },\n {\n title: \"是否过期\",\n dataIndex: \"expired\",\n render: val => ,\n },\n\n {\n title: \"付款人ID\",\n dataIndex: \"paid_id\",\n sorter: true,\n },\n {\n title: \"是否已付款\",\n dataIndex: \"paid\",\n render: val => ,\n },\n {\n title: \"付款时间\",\n dataIndex: \"paid_at\",\n className: \"text-nowrap\",\n render: val => dateFormat(val),\n sorter: true,\n },\n {\n title: \"发起订单IP\",\n dataIndex: \"client_ip\",\n sorter: true,\n },\n {\n title: \"是否成功\",\n dataIndex: \"succeeded\",\n render: (val, { status }) =>\n [10, 13, 14, 15, 16, 17].includes(status) ? (\n {isSuccessLang(val)}\n ) : null,\n },\n {\n title: \"成功时间\",\n dataIndex: \"succeeded_at\",\n render: (val, { status, succeeded }) =>\n [10, 13, 14, 15, 16, 17].includes(status) && succeeded\n ? dateFormat(val)\n : null,\n },\n {\n title: \"失败状态码\",\n dataIndex: \"failure_code\",\n },\n {\n title: \"失败原因\",\n dataIndex: \"failure_msg\",\n },\n {\n title: \"是否回调\",\n dataIndex: \"notified\",\n render: val => ,\n },\n {\n title: \"回调时间\",\n dataIndex: \"notified_at\",\n className: \"text-nowrap\",\n render: val => dateFormat(val),\n sorter: true,\n },\n {\n title: \"回调url\",\n dataIndex: \"notify_url\",\n },\n {\n title: \"回调的状态\",\n dataIndex: \"notify_status\",\n render: val => transferStatus[val],\n },\n {\n title: \"订单状态\",\n dataIndex: \"status\",\n render: val => transferStatus[val],\n },\n {\n title: \"补充信息\",\n dataIndex: \"extra\",\n render: val => JSON.stringify(val),\n },\n {\n title: \"代付凭证\",\n dataIndex: \"credential\",\n },\n {\n title: \"已清算\",\n dataIndex: \"settled\",\n render: val => ,\n },\n\n {\n title: \"备注\",\n dataIndex: \"note\",\n sorter: true,\n },\n];\n\nconst excelPriceFormat = (val, currency) =>\n priceFormat({ val, currency, showUnit: false });\n\nexport const exportColumnsRenderMap = {\n amount: (val, record) => excelPriceFormat(val, record.currency),\n amount_paid: (val, record) => excelPriceFormat(val, record.currency),\n currency: val => Currency[val] || \"\",\n approved: val => isActiveLang(val),\n approval_status: val => transferStatus[val] || \"\",\n approved_at: val => dateFormat(val),\n canceled: val => isActiveLang(val),\n expired: val => isActiveLang(val),\n paid: val => isActiveLang(val),\n notified: val => isActiveLang(val),\n created: val => dateFormat(val),\n updated: val => dateFormat(val),\n canceled_at: val => dateFormat(val),\n expired_at: val => dateFormat(val),\n paid_at: val => dateFormat(val),\n succeeded: (val, { status }) =>\n [10, 13, 14, 15, 16, 17].includes(status) ? isSuccessLang(val) : null,\n succeeded_at: (val, { status, succeeded }) =>\n [10, 13, 14, 15, 16, 17].includes(status) && succeeded\n ? dateFormat(val)\n : null,\n notified_at: val => dateFormat(val),\n notify_status: val => transferStatus[val] || \"\",\n status: val => transferStatus[val] || \"\",\n extra: val => JSON.stringify(val),\n settled: val => isActiveLang(val),\n};\n\nconst detailColumnsCardArr = [\n \"account\",\n \"name\",\n \"bank_name\",\n \"amount\",\n \"amount_paid\",\n \"approver_id\",\n \"gateway_id\",\n \"updated\",\n \"comments\",\n];\nconst detailColumnsUSDTArr = [\n \"account\",\n \"currency\",\n \"bank_name\",\n \"amount\",\n \"amount_paid\",\n \"approver_id\",\n \"updated\",\n \"comments\",\n];\nconst formatColumn = arr => columns.filter(i => arr.indexOf(i.dataIndex) >= 0);\nexport const detailColumnsCard = formatColumn(detailColumnsCardArr);\nexport const detailColumnsUSDT = formatColumn(detailColumnsUSDTArr);\n","import { createSlice, createAsyncThunk } from \"@reduxjs/toolkit\";\nimport request from \"@/utils/request\";\nimport { metaToPagin } from \"@/utils/format\";\n\nexport const getAppAccts = createAsyncThunk(\n \"appAcct/getList\",\n async (params = {}) => {\n const res = await request({\n url: \"/api/developer/appaccts\",\n method: \"get\",\n params,\n });\n return res;\n },\n);\n\nexport const slice = createSlice({\n name: \"appAcct\",\n initialState: {\n list: [],\n meta: {},\n currentRow: {},\n },\n extraReducers: {\n [getAppAccts.fulfilled]: (state, action) => {\n const { status, data } = action.payload;\n if (status !== 200) return;\n state.list = data.data;\n state.meta = metaToPagin(data.meta);\n },\n },\n});\nexport const selectAppAcct = state => state.appAcct;\nexport default slice.reducer;\n","import { useState } from \"react\";\nimport { Button, Space, message, Alert } from \"antd\";\nimport { selectAppAcct, getAppAccts } from \"@/store/slice/appAcct\";\nimport { postTransfer } from \"@/store/slice/transfer\";\nimport { useList } from \"@/utils/hook\";\nimport { SearchFormFactory } from \"@/components/factory/FormFactory\";\nimport { NormalTable } from \"@/components/factory/TableFactory\";\nimport EditableConfirm from \"@/components/EditableConfirm\";\n\nimport { Currency } from \"@/utils/enum\";\nimport { dateFormat, priceFormat } from \"@/utils/format\";\nimport JsonModal from \"@/components/JsonModal\";\nimport Banks from \"@/utils/enum/bank\";\n\nconst searchFields = {\n id__in: { type: \"string\", label: \"ID\" },\n currency: { type: \"select\", label: \"货币类型\", options: Currency },\n created__btw: { type: \"rangeDate\", label: \"创建日期\" },\n};\nconst AppAcct = () => {\n const {\n res: { list, meta },\n loading: listLoading,\n handleSearch,\n handleChangePage,\n handleChange,\n handleGetList,\n } = useList(getAppAccts, selectAppAcct, {}, true);\n\n const [currentRow, setCurrentRow] = useState(null);\n const [jsonVisible, setJsonVisible] = useState(false);\n const handleJsonClick = async row => {\n setCurrentRow(row);\n setJsonVisible(true);\n };\n const [editLoading, setEditLoading] = useState(false);\n const [editVisible, setEditVisible] = useState(false);\n const fields = [\n {\n label: \"币种\",\n name: \"currency\",\n render: () => Currency[currentRow?.currency],\n },\n {\n label: \"金额\",\n name: \"amount\",\n inputType: \"price\",\n required: true,\n },\n {\n label: \"账户\",\n name: \"account\",\n inputType: \"string\",\n required: true,\n },\n {\n label: \"姓名\",\n name: \"name\",\n inputType: \"string\",\n required: true,\n },\n {\n label: \"银行名称\",\n name: \"bank_name\",\n inputType: \"select\",\n options: Banks,\n required: true,\n },\n {\n label: \"支行名称\",\n name: \"sub_bank\",\n inputType: \"string\",\n required: true,\n },\n {\n label: \"发起提款的商户ID\",\n name: \"app_id\",\n },\n ];\n const handleEditClick = record => {\n setCurrentRow(record);\n setEditVisible(true);\n };\n const handleEdit = async formModel => {\n setEditLoading(true);\n const { status } = await postTransfer({\n ...formModel,\n app_id: currentRow.app_id,\n app_acct_id: currentRow.id,\n });\n setEditLoading(false);\n if (status !== 200) return;\n setEditVisible(false);\n message.success(`已申请提款`);\n await handleGetList({ page: meta.current });\n };\n const columns = [\n { title: \"ID\", dataIndex: \"id\", sorter: true },\n { title: \"商户ID/AppID\", dataIndex: \"app_id\", sorter: true },\n { title: \"商户名称/App名称\", dataIndex: \"app_name\", sorter: true },\n {\n title: \"余额\",\n dataIndex: \"balance\",\n render: (val, record) => priceFormat({ val, currency: record.currency }),\n className: \"text-nowrap\",\n sorter: true,\n },\n {\n title: \"圈存金额\",\n dataIndex: \"block_amount\",\n render: (val, record) => priceFormat({ val, currency: record.currency }),\n className: \"text-nowrap\",\n sorter: true,\n },\n {\n title: \"币种\",\n dataIndex: \"currency\",\n render: val => Currency[val] || \"\",\n className: \"text-nowrap\",\n },\n {\n title: \"创建日期\",\n dataIndex: \"created\",\n render: val => dateFormat(val),\n className: \"text-nowrap\",\n sorter: true,\n },\n {\n title: \"更新日期\",\n dataIndex: \"updated\",\n render: val => dateFormat(val),\n className: \"text-nowrap\",\n sorter: true,\n },\n {\n title: \"动作\",\n dataIndex: \"action\",\n align: \"center\",\n fixed: \"right\",\n render: (_, record) => (\n \n handleJsonClick(record)}\n type=\"link\"\n className=\"p-0\"\n >\n json\n \n handleEditClick(record)}\n >\n 申请提款\n \n \n ),\n },\n ];\n const defaultColumns = [\n \"id\",\n \"app_id\",\n \"app_name\",\n \"balance\",\n \"block_amount\",\n \"currency\",\n \"created\",\n \"action\",\n ];\n return (\n \n \n \n setJsonVisible(false)}\n />\n setEditVisible(false)}\n loading={editLoading}\n onOk={handleEdit}\n info={\n \n }\n />\n \n );\n};\nexport default AppAcct;\n","import { useState, useMemo } from \"react\";\nimport { Button, Space, message } from \"antd\";\nimport moment from \"moment\";\nimport { selectOrder, getOrders, exportOrder } from \"@/store/slice/order\";\nimport { Currency, IsBoolEnum } from \"@/utils/enum\";\nimport { useList, useExportExcel } from \"@/utils/hook\";\nimport {\n rangeLimitDays,\n searchFieldsInitialValuesFormat,\n} from \"@/utils/format\";\nimport { SearchFormFactory } from \"@/components/factory/FormFactory\";\nimport { NormalTable } from \"@/components/factory/TableFactory\";\nimport JsonModal from \"@/components/JsonModal\";\nimport ListColumns, { exportColumnsRenderMap } from \"./Columns\";\n\nconst searchFields = {\n id__in: { type: \"string\", label: \"ID\" },\n order_no__in: { type: \"string\", label: \"订单号\" },\n trans_no__in: { type: \"string\", label: \"第三方订单号\" },\n currency: { type: \"select\", label: \"货币类型\", options: Currency },\n userid__in: { type: \"string\", label: \"会员ID\" },\n app_id__in: { type: \"string\", label: \"AppID\" },\n succeeded: {\n type: \"select\",\n label: \"是否成功\",\n options: IsBoolEnum,\n isBool: true,\n },\n approved: {\n type: \"select\",\n label: \"审核通过\",\n options: IsBoolEnum,\n isBool: true,\n },\n developer_id__in: { type: \"string\", label: \"商户ID\" },\n created__btw: {\n type: \"rangeDate\",\n label: \"创建日期\",\n initialValue: [moment().startOf(\"days\"), moment().endOf(\"day\")],\n },\n paid_at__btw: { type: \"rangeDate\", label: \"支付时间\" },\n};\n\nconst Order = () => {\n const fieldsInitialValues = useMemo(() => {\n return searchFieldsInitialValuesFormat(searchFields);\n }, []);\n\n const {\n res: { list, meta },\n loading: listLoading,\n handleSearch,\n handleChangePage,\n handleChange,\n } = useList(getOrders, selectOrder, { ...fieldsInitialValues }, true);\n\n const handleCustomSearch = formModel => {\n if (!formModel.created__btw && !formModel.paid_at__btw) {\n message.warning(\"「创建时间」与「支付时间」必填其中一项\");\n return;\n }\n if (formModel.created__btw) {\n if (!rangeLimitDays(62, formModel.created__btw)) {\n message.warning(\"「创建时间」不得超過62天\");\n return;\n }\n }\n if (formModel.paid_at__btw) {\n if (!rangeLimitDays(62, formModel.paid_at__btw)) {\n message.warning(\"「支付时间」不得超過62天\");\n return;\n }\n }\n handleSearch(formModel);\n };\n\n const [currentRow, setCurrentRow] = useState(null);\n const [jsonVisible, setJsonVisible] = useState(false);\n const handleJsonClick = async record => {\n setCurrentRow(record);\n setJsonVisible(true);\n };\n\n const {\n loading: exportLoading,\n handleExport,\n handleSelectedColumns,\n } = useExportExcel({\n exportColumnsRenderMap,\n exportAction: exportOrder,\n });\n\n const columns = [\n ...ListColumns,\n {\n title: \"动作\",\n dataIndex: \"action\",\n align: \"center\",\n fixed: \"right\",\n render: (_, record) => (\n \n handleJsonClick(record)}\n type=\"link\"\n className=\"p-0\"\n >\n json\n \n \n ),\n },\n ];\n const defaultColumns = [\n \"id\",\n \"order_no\",\n \"userid\",\n \"gateway_id\",\n \"name\",\n \"status\",\n \"device_type\",\n \"pay_status\",\n \"paid_at\",\n \"approval_status\",\n \"amount\",\n \"amount_paid\",\n \"succeeded\",\n \"created\",\n \"action\",\n ];\n\n const payerCredExpandedRowRender = record => {\n return
{record}
;\n };\n return (\n \n \n true,\n expandedRowRender: record =>\n payerCredExpandedRowRender(JSON.stringify(record.payer_cred)),\n }}\n onShowSizeChange={handleChangePage}\n />\n setJsonVisible(false)}\n loading={false}\n />\n \n );\n};\nexport default Order;\n","import TransferTypes from \"./indexTemplate\";\nconst Transfer = () => {\n return ;\n};\nexport default Transfer;\n","import Notification from \"@/components/factory/NotifFactory\";\nimport { Button } from \"antd\";\nimport { priceFormat } from \"@/utils/format\";\nimport { generatePath } from \"react-router-dom\";\nimport history from \"@/utils/history\";\n\nconst OrderNotif = res => {\n const { type, data } = res;\n\n const handleDetailClick = () => {\n history.push(generatePath(\"/OrderDetail/:id\", { id: data.id }));\n };\n\n const wsType = {\n \"order.pending\": {\n title: `您有一笔新的订单 ${data.id} 需要审核`,\n message: (\n <>\n
商户:{data.app_id}
\n
\n 金额:{priceFormat({ val: data.amount, currency: data.currency })}\n \n
\n \n ),\n },\n \"order.notify_failed\": {\n title: `订单 ${data.id} 通知失败`,\n message: `失败原因: ${data.failure_msg}`,\n },\n \"order.paid\": { title: `订单 ${data.id} 付款成功`, message: \"\" },\n };\n\n wsType[type] &&\n Notification({\n type: \"info\",\n title: wsType[type]?.title,\n message: wsType[type]?.message,\n });\n};\nexport default OrderNotif;\n","import { useState, useMemo } from \"react\";\nimport { Space, Button, message } from \"antd\";\nimport moment from \"moment\";\nimport {\n selectTransfer,\n getTransfers,\n exportTransfer,\n} from \"@/store/slice/transfer\";\nimport { SearchFormFactory } from \"@/components/factory/FormFactory\";\nimport { IsBoolEnum } from \"@/utils/enum\";\nimport { useList, useExportExcel } from \"@/utils/hook\";\nimport {\n rangeLimitDays,\n searchFieldsInitialValuesFormat,\n objFormateToSearchFields,\n} from \"@/utils/format\";\nimport JsonModal from \"@/components/JsonModal\";\nimport { NormalTable } from \"@/components/factory/TableFactory\";\nimport { columns as ListColumns, exportColumnsRenderMap } from \"./Columns\";\n\nconst Transfer = ({ params }) => {\n const searchFields = useMemo(\n () => ({\n id__in: { type: \"string\", label: \"ID\" },\n order_no__in: { type: \"string\", label: \"开发者订单号\" },\n trans_no__in: { type: \"string\", label: \"第三方订单号\" },\n app_id__in: { type: \"string\", label: \"商户ID\" },\n app_user_id__in: { type: \"string\", label: \"商户用户ID\" },\n succeeded: {\n type: \"select\",\n label: \"是否成功\",\n options: IsBoolEnum,\n isBool: true,\n },\n created__btw: {\n type: \"rangeDate\",\n label: \"创建时间\",\n initialValue: [moment().startOf(\"days\"), moment().endOf(\"day\")],\n },\n ...objFormateToSearchFields(params),\n }),\n [params],\n );\n const fieldsInitialValues = useMemo(() => {\n return searchFieldsInitialValuesFormat(searchFields);\n }, [searchFields]);\n\n const {\n loading: exportLoading,\n handleExport,\n handleSelectedColumns,\n } = useExportExcel({\n exportColumnsRenderMap,\n exportAction: exportTransfer,\n });\n\n const {\n res: { list, meta },\n loading: listLoading,\n handleSearch,\n handleChangePage,\n handleChange,\n } = useList(getTransfers, selectTransfer, { ...fieldsInitialValues }, true);\n\n const handleCustomSearch = formModel => {\n if (!formModel.created__btw) {\n message.warning(\"「创建时间」必填\");\n return;\n }\n if (!rangeLimitDays(62, formModel.created__btw)) {\n message.warning(\"「创建时间」不得超過62天\");\n return;\n }\n handleSearch(formModel);\n };\n\n const [jsonVisible, setJsonVisible] = useState(false);\n const [currentRow, setCurrentRow] = useState({});\n const handleJsonClick = record => {\n setCurrentRow(record);\n setJsonVisible(true);\n };\n const columns = [\n ...ListColumns,\n {\n title: \"动作\",\n dataIndex: \"action\",\n align: \"center\",\n fixed: \"right\",\n render: (_, record) => (\n \n handleJsonClick(record)}\n type=\"link\"\n className=\"p-0\"\n >\n json\n \n \n ),\n },\n ];\n const defaultColumns = [\n \"id\",\n \"order_no\",\n \"app_name_cn\",\n \"name\",\n \"amount\",\n \"amount_paid\",\n \"succeeded_at\",\n \"gateway\",\n \"created\",\n \"succeeded\",\n \"status\",\n \"action\",\n ];\n return (\n \n \n \n setJsonVisible(false)}\n loading={false}\n />\n \n );\n};\nexport default Transfer;\n","import React, { useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useHistory } from \"react-router-dom\";\nimport { Layout, Menu, Dropdown, Button, message, Modal } from \"antd\";\nimport { DownOutlined, ExclamationCircleOutlined } from \"@ant-design/icons\";\nimport {\n selectAuth,\n logout,\n resetUserPsw,\n resetUserOtp,\n} from \"@/store/slice/auth\";\nimport EditableConfirm from \"@/components/EditableConfirm\";\nconst { Header } = Layout;\n\nconst HeaderView = () => {\n const { user } = useSelector(selectAuth);\n\n const dispatch = useDispatch();\n const history = useHistory();\n const handleLogout = async () => {\n history.push(\"/Login\");\n await dispatch(logout());\n };\n\n const [visiblePass, setVisiblePass] = useState(false);\n const [resetPassLoading, setResetPassLoading] = useState(false);\n const handelVisiblePass = v => () => setVisiblePass(v);\n const handleUpdatePass = async formModel => {\n setResetPassLoading(true);\n const { status } = await resetUserPsw({ id: user.id, formModel });\n setResetPassLoading(false);\n if (status !== 200) return;\n setVisiblePass(false);\n message.success(\"更新成功\");\n };\n\n const handleResetOtp = async (close, id) => {\n const { status } = await resetUserOtp(id);\n close();\n if (status !== 200) return;\n message.success(\"重置成功!\");\n };\n const handleResetOtpClick = () => {\n Modal.confirm({\n title: \"重置OTP\",\n icon: ,\n content: `即将重置 ${user.name} OTP,是否继续?`,\n okText: \"确认\",\n cancelText: \"取消\",\n onOk: close => handleResetOtp(close, user.id),\n });\n };\n\n const UserMenu = (\n \n {/* 基本资料 */}\n \n 重置密码\n \n \n 重置OTP\n \n \n 登出\n \n \n );\n\n return (\n <>\n
\n \n \n \n
\n \n \n );\n};\nexport default HeaderView;\n","import { useEffect, useState } from \"react\";\nimport { Layout, Menu } from \"antd\";\nimport { Link, useLocation } from \"react-router-dom\";\nimport {\n ContainerOutlined,\n UserOutlined,\n FileDoneOutlined,\n BarChartOutlined,\n} from \"@ant-design/icons\";\nimport { getRouterDisplayName } from \"@/utils/format\";\nimport { useDispatch } from \"react-redux\";\n\nimport { setRouterTabs } from \"@/store/slice/routerTab\";\nconst { Sider } = Layout;\nconst { SubMenu } = Menu;\n\nconst SidebarView = ({ routes }) => {\n const { pathname } = useLocation();\n const dispatch = useDispatch();\n const [selectedKey, setSelectedKey] = useState(pathname);\n const handleSetRouterTab = key => {\n dispatch(setRouterTabs(key));\n };\n useEffect(() => {\n setSelectedKey(pathname);\n }, [pathname]);\n const Item = (key, icon = null) => (\n \n handleSetRouterTab(pathname)}>\n {getRouterDisplayName(key, routes)}\n \n \n );\n\n return (\n \n
\n
{process.env.REACT_APP_TITLE}
\n \n {Item(\"/\", )}\n {Item(\"/Transfers\", )}\n {Item(\"/AppAcct\", )}\n {Item(\"/AppAcctLog\", )}\n } title=\"报表\">\n {Item(\"/DeveloperDaily\")}\n {Item(\"/DeveloperSubDaily\")}\n {Item(\"/AppGatewayDaily\")}\n {Item(\"/TransferAppGatewayDaily\")}\n {Item(\"/AppBalanceSummary\")}\n \n \n
{process.env.REACT_APP_VERSION}
\n
\n
\n );\n};\nexport default SidebarView;\n","import { PageHeader } from \"antd\";\nimport { getRouter } from \"@/utils/format\";\nimport { useLocation } from \"react-router-dom\";\n\nconst PageHeaderC = ({ routes }) => {\n const { pathname } = useLocation();\n const route = getRouter(pathname, routes);\n return route?.hidePageHeader ? null : (\n \n );\n};\nexport default PageHeaderC;\n","import { useState, useEffect } from \"react\";\nimport { Tabs } from \"antd\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { selectRouterTab, removeRouterTab } from \"@/store/slice/routerTab\";\nimport {\n getRouter,\n getRouterDisplayName,\n getRouterParam,\n} from \"@/utils/format\";\nimport { useHistory, useLocation } from \"react-router-dom\";\nconst { TabPane } = Tabs;\nconst RouterTab = ({ routes }) => {\n const history = useHistory();\n const dispatch = useDispatch();\n const { pathname } = useLocation();\n const { routerTabs } = useSelector(selectRouterTab);\n const [active, setActive] = useState(getRouter(pathname, routes)?.name);\n useEffect(() => {\n setActive(pathname);\n }, [pathname]);\n const handleChange = activeKey => {\n setActive(activeKey);\n history.push(activeKey);\n };\n const handleEdit = async (targetKey, action) => {\n const isDelete = action === \"remove\";\n if (!isDelete) return;\n await dispatch(removeRouterTab(targetKey));\n const tabs = JSON.parse(sessionStorage.tabs).filter(i => i !== targetKey);\n const tabsLength = tabs.length;\n tabs.indexOf(pathname) <= -1 && history.push(tabs[tabsLength - 1]);\n };\n return (\n \n {routerTabs.map(path => (\n 1}\n />\n ))}\n \n );\n};\nexport default RouterTab;\n","const getComponent = name => {\n try {\n let cpn = require(`@/views/${name}`);\n return cpn.default();\n } catch (e) {\n console.log(e);\n }\n};\nconst routes = [\n {\n path: \"/\",\n name: \"Order\",\n component: () => getComponent(\"Order\"),\n exact: true,\n displayName: \"支付订单\",\n },\n // {\n // path: \"/OrderDetail/:id\",\n // name: \"OrderDetail\",\n // component: () => getComponent(\"Order/Detail\"),\n // displayName: \"订单明细\",\n // hidePageHeader: true,\n // },\n {\n path: \"/Transfers\",\n name: \"Transfers\",\n component: () => getComponent(\"Transfers\"),\n displayName: \"代付订单\",\n },\n {\n path: \"/AppAcct\",\n name: \"AppAcct\",\n component: () => getComponent(\"AppAcct\"),\n displayName: \"商户账户\",\n },\n {\n path: \"/AppAcctLog\",\n name: \"AppAcctLog\",\n component: () => getComponent(\"AppAcct/AppAcctLog\"),\n displayName: \"商户账变记录\",\n },\n {\n path: \"/developerDaily\",\n name: \"DeveloperDaily\",\n component: () => getComponent(\"Report/DeveloperDaily\"),\n displayName: \"每日报表\",\n },\n {\n path: \"/DeveloperSubDaily\",\n name: \"DeveloperSubDaily\",\n component: () => getComponent(\"Report/DeveloperSubDaily\"),\n displayName: \"子商户报表\",\n },\n {\n path: \"/AppGatewayDaily\",\n name: \"AppGatewayDaily\",\n component: () => getComponent(\"Report/AppGatewayDaily\"),\n displayName: \"支付商户渠道报表\",\n },\n {\n path: \"/TransferAppGatewayDaily\",\n name: \"TransferAppGatewayDaily\",\n component: () => getComponent(\"Report/TransferAppGatewayDaily\"),\n displayName: \"代付商户渠道报表\",\n },\n {\n path: \"/AppBalanceSummary\",\n name: \"AppBalanceSummary\",\n component: () => getComponent(\"Report/AppBalanceSummary\"),\n displayName: \"商户余额汇总报表\",\n },\n];\nexport default routes;\n","import React, { useEffect } from \"react\";\nimport { Switch, Route, Redirect, useLocation } from \"react-router-dom\";\nimport { Layout } from \"antd\";\nimport Header from \"@/components/Header\";\nimport Sidebar from \"@/components/Sidebar\";\nimport PageHeader from \"@/components/PageHeader\";\nimport RouterTab from \"@/components/RouterTab\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { selectAuth } from \"@/store/slice/auth\";\nimport { setModalDiscSpan } from \"@/store/slice/layout\";\nimport routes from \"@/router\";\nimport { setRouterTabs } from \"@/store/slice/routerTab\";\n\nconst { Content, Footer } = Layout;\n\nconst GlobalLayout = () => {\n const { pathname } = useLocation();\n const { user } = useSelector(selectAuth);\n const dispatch = useDispatch();\n useEffect(() => {\n dispatch(setRouterTabs(pathname));\n });\n\n useEffect(() => {\n const handleWindowResize = e => {\n dispatch(setModalDiscSpan(e.target.innerWidth));\n };\n window.addEventListener(\"resize\", handleWindowResize);\n return () => {\n window.removeEventListener(\"resize\", handleWindowResize);\n };\n });\n\n const renderRoutes = [...routes];\n return (\n \n {user !== null ? (\n \n \n \n
\n
\n \n
\n \n \n \n {renderRoutes.map(i => (\n }\n />\n ))}\n \n \n
©2021 Miyo
\n
\n
\n ) : (\n \n )}\n
\n );\n};\nexport default GlobalLayout;\n","export default __webpack_public_path__ + \"static/media/GoogleAuthenticatorAppIcon.b8d6e6ff.webp\";","import React, { useState } from \"react\";\nimport { Typography, Button, Input, Modal, Row, Col, message } from \"antd\";\nimport QRCode from \"qrcode-react\";\nimport { verifyOpt } from \"@/store/slice/auth\";\nimport AppIconUrl from \"@/assets/GoogleAuthenticatorAppIcon.webp\";\n\nfunction OtpModal({\n visible = false,\n otpAuthUrl = \"\",\n secret = \"\",\n handleClose = () => {},\n}) {\n const [verifyOtp, setVerifyOtp] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const handleOtpVerify = async () => {\n setLoading(true);\n const { status, data } = await verifyOpt({ otp: verifyOtp });\n setLoading(false);\n if (status !== 200) return;\n data ? message.success(\"验证成功\") : message.error(\"验证失败\");\n };\n\n const StepTitle = ({ step, title, subTitle }) => (\n
\n
{step}
\n {title}\n {subTitle}\n
\n );\n\n return (\n \n 进入后台\n \n }\n >\n
\n \n \n
\n \n
\n \"AppIconUrl\"\n
\n
\n \n \n
\n \n \n \n QR code\n \n \n \n Setup key\n
{secret}
\n \n
\n
\n \n \n
\n \n
\n setVerifyOtp(e.target.value)}\n style={{ maxWidth: \"200px\" }}\n />\n \n 测试\n \n
\n
\n \n
\n
\n \n );\n}\n\nexport default OtpModal;\n","import { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Route, Redirect } from \"react-router-dom\";\nimport { Typography, Button, Form, Input, Checkbox } from \"antd\";\nimport { UserOutlined, LockOutlined } from \"@ant-design/icons\";\nimport { login, selectAuth, getOptStatus, setUser } from \"@/store/slice/auth\";\nimport OtpModal from \"@/components/OtpModal\";\n\nconst { Title } = Typography;\nconst Login = () => {\n const { user, isOtp } = useSelector(selectAuth);\n const dispatch = useDispatch();\n const [form] = Form.useForm();\n\n const [userData, setUserData] = useState(null);\n const handleUserData = data => {\n localStorage.setItem(\"user\", JSON.stringify(data));\n dispatch(setUser(data));\n };\n\n const [otpVisible, setOtpVisible] = useState(false);\n const [otpData, setOtpData] = useState({});\n const [loading, setLoading] = useState(false);\n const handleLogin = async () => {\n setLoading(true);\n const { status, data } = await login({ ...form.getFieldValue() });\n setLoading(false);\n if (status !== 200) return;\n setUserData(data);\n\n // opt 未綁定\n if (data.next) {\n setOtpVisible(true);\n setOtpData(data.next?.otp);\n return;\n }\n handleUserData(data);\n };\n useEffect(() => {\n dispatch(getOptStatus());\n });\n\n return (\n \n {!user ? (\n <>\n
\n
\n \n {process.env.REACT_APP_TITLE}\n \n \n \n }\n placeholder=\"用戶名\"\n />\n \n \n }\n type=\"password\"\n placeholder=\"密碼\"\n />\n \n {isOtp && (\n \n }\n placeholder=\"二步验证码\"\n />\n \n )}\n \n \n 記住密碼\n \n \n 忘記密碼\n \n \n \n \n 登入\n \n \n \n
\n
\n handleUserData(userData)}\n />\n \n ) : (\n \n )}\n
\n );\n};\nexport default Login;\n","import OrderNotif from \"@/views/Order/Notification\";\n\nconst wsUrl = process.env.REACT_APP_WS_URL;\nexport var socket = null;\nconst handlePinPerSecond = () => {\n if (socket.readyState === 1) socket.send(JSON.stringify({ type: \"ping\" }));\n};\nexport let pingTimer;\nexport const connectSocket = () => {\n socket = new WebSocket(wsUrl);\n socket.onopen = function () {\n pingTimer = setInterval(handlePinPerSecond, 10000);\n };\n socket.onmessage = function (msg) {\n const res = JSON.parse(msg.data);\n res.type !== \"pong\" && OrderNotif(res);\n };\n socket.onerror = function (err) {\n console.log(\"error\", err);\n };\n socket.onclose = function () {\n clearInterval(pingTimer);\n };\n};\nexport const sendSocketMessage = msg => {\n if (1 === socket.readyState) socket.send(JSON.stringify(msg));\n};\n","import React, { useEffect } from \"react\";\nimport { Router, Switch, Route } from \"react-router-dom\";\nimport GlobalLayout from \"./GlobalLayout\";\nimport Login from \"./Login\";\nimport { useSelector } from \"react-redux\";\nimport { selectAuth } from \"@/store/slice/auth\";\nimport { connectSocket, pingTimer } from \"@/utils/ws\";\nimport history from \"@/utils/history\";\nconst MainRoute = () => {\n const { user } = useSelector(selectAuth);\n useEffect(() => {\n user !== null && connectSocket();\n user !== null || clearInterval(pingTimer);\n return () => {\n clearInterval(pingTimer);\n };\n }, [user]);\n return (\n \n \n \n \n \n \n \n \n );\n};\nexport default MainRoute;\n","import { useEffect } from \"react\";\nimport { Modal, Form, Input, Select } from \"antd\";\nimport { formLayout } from \"@/utils/enum\";\nimport Spin from \"@/components/Spin\";\nimport { CurrencyHelpTextFormItemFactory } from \"@/components/factory/FormFactory\";\nimport SearchSelect from \"@/components/SearchSelect\";\nconst { Option } = Select;\n\nconst Edit = ({\n visible,\n data,\n onCancel,\n onOk,\n loading,\n title,\n fields,\n info = null,\n}) => {\n const [form] = Form.useForm();\n const handleOk = async () => {\n form.validateFields().then(async formModel => {\n if (!formModel) return;\n await onOk({ ...formModel });\n form.resetFields();\n });\n };\n useEffect(() => {\n visible && form.setFieldsValue(data);\n });\n\n return (\n \n \n {info}\n
\n {data?.id && {data.id}}\n {fields.map(i => {\n return i.inputType ? (\n i.inputType === \"price\" ? (\n \n ) : (\n \n {i.inputType === \"searchSelect\" ? (\n `${j.id} ${j.name}`}\n />\n ) : i.inputType === \"select\" ? (\n i.name === \"bank_name\" ? (\n {\n return (\n option.children\n .toString()\n .toLowerCase()\n .indexOf(input.toLowerCase()) >= 0\n );\n }}\n >\n {Object.keys(i.options).map(b => (\n \n ))}\n \n ) : (\n \n )\n ) : (\n \n )}\n \n )\n ) : (\n \n {i.render ? i.render() : data?.[i.name]}\n \n );\n })}\n \n
\n \n );\n};\nexport default Edit;\n","import { Input, Select, Switch, Checkbox, DatePicker } from \"antd\";\nconst { Option } = Select;\nconst { RangePicker } = DatePicker;\n\nconst InputFactory = props => {\n const { type, options, isBool, ...rest } = props;\n const SelectC = () => {\n return (\n \n );\n };\n const types = {\n string: ,\n select: ,\n switch: ,\n checkbox: ,\n rangeDate: ,\n };\n return types[type] || types.string;\n};\nexport default InputFactory;\n","import { useState, useEffect, useCallback } from \"react\";\nimport { Select } from \"antd\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Spin from \"@/components/Spin\";\nconst { Option } = Select;\n\nconst SearchSelect = ({\n action,\n params,\n selector,\n searchKey,\n label,\n val,\n onSelect,\n payloadPos,\n ...rest\n}) => {\n const dispatch = useDispatch();\n const [list, setList] = useState([]);\n const [searchText, setSearchText] = useState([]);\n const { meta } = useSelector(selector);\n const [loading, setLoading] = useState(false);\n const [page, setPage] = useState(1);\n const handleSearch = async input => {\n setPage(1);\n setList([]);\n setSearchText(input);\n const { payload } = await dispatch(\n action({ [`${searchKey}__k`]: input, page, ...params }),\n );\n setList([...(payloadPos ? payload[payloadPos] : payload?.data?.data)]);\n };\n const handleInit = useCallback(async () => {\n setLoading(true);\n const { payload } = await dispatch(\n action({ [`${searchKey}__k`]: searchText, page, ...params }),\n );\n setList([...(payloadPos ? payload[payloadPos] : payload?.data?.data)]);\n setLoading(false);\n // eslint-disable-next-line\n }, [searchKey, page]);\n\n const handleScroll = e => {\n const isScrollBottom =\n e.target.scrollHeight - e.target.clientHeight === e.target.scrollTop;\n if (isScrollBottom) {\n meta.pages > page && setPage(page + 1);\n }\n };\n useEffect(() => {\n handleInit();\n }, [handleInit]);\n\n const handleSelect = val => {\n onSelect && onSelect(list.find(i => i.id === val));\n };\n return (\n : null}\n onSelect={val => handleSelect(val)}\n {...rest}\n >\n {list.map(i => (\n \n ))}\n \n );\n};\nexport default SearchSelect;\n","import { createSlice } from \"@reduxjs/toolkit\";\n\nexport const slice = createSlice({\n name: \"layout\",\n initialState: {\n modalDiscSpan: window.innerWidth > 998 ? 2 : 1,\n },\n reducers: {\n setModalDiscSpan: (state, action) => {\n state.modalDiscSpan = action.payload > 998 ? 2 : 1;\n },\n },\n});\nexport const { setModalDiscSpan } = slice.actions;\nexport const selectLayout = state => state.layout;\nexport default slice.reducer;\n","import { createBrowserHistory } from \"history\";\nexport default createBrowserHistory();\n","import { useState } from \"react\";\nimport { Button, Space } from \"antd\";\nimport {\n selectAppAcctLog,\n getAppAcctLogs,\n exportAppAccLog,\n} from \"@/store/slice/appAcctLog\";\nimport { useList, useExportExcel } from \"@/utils/hook\";\nimport { SearchFormFactory } from \"@/components/factory/FormFactory\";\nimport { NormalTable } from \"@/components/factory/TableFactory\";\nimport { Currency } from \"@/utils/enum\";\nimport JsonModal from \"@/components/JsonModal\";\nimport {\n listColumns,\n defaultColumns,\n exportColumnsRenderMap,\n} from \"./AppAccLogColumn\";\n\nconst searchFields = {\n id__in: { type: \"string\", label: \"ID\" },\n app_name__k: { type: \"string\", label: \"商戶名称\" },\n currency: { type: \"select\", label: \"货币类型\", options: Currency },\n created__btw: { type: \"rangeDate\", label: \"创建日期\" },\n funding_type: {\n type: \"select\",\n label: \"资金类型\",\n options: {\n '{\"type__ne\":13}': \"余额\",\n '{\"type__eq\":13}': \"圈存\",\n },\n },\n};\n\nconst AppAcct = () => {\n const {\n loading: exportLoading,\n handleExport,\n handleSelectedColumns,\n } = useExportExcel({\n exportColumnsRenderMap,\n exportAction: exportAppAccLog,\n });\n\n const {\n res: { list, meta },\n loading: listLoading,\n handleSearch,\n handleChangePage,\n handleChange,\n } = useList(getAppAcctLogs, selectAppAcctLog, {}, true);\n\n const [currentRow, setCurrentRow] = useState(null);\n const [jsonVisible, setJsonVisible] = useState(false);\n const handleJsonClick = async row => {\n setCurrentRow(row);\n setJsonVisible(true);\n };\n\n const handleSearchSubmit = params => {\n handleSearch(params);\n };\n\n const columns = [\n ...listColumns,\n {\n title: \"动作\",\n dataIndex: \"action\",\n align: \"center\",\n fixed: \"right\",\n render: (_, record) => (\n \n handleJsonClick(record)}\n type=\"link\"\n className=\"p-0\"\n >\n json\n \n \n ),\n },\n ];\n\n return (\n \n \n \n setJsonVisible(false)}\n />\n \n );\n};\nexport default AppAcct;\n","import { useEffect } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { Space } from \"antd\";\nimport {\n selectAppBalanceSummaryDaily,\n getAppBalanceSummaryDaily,\n getAppBalanceSummaryDailySum,\n exportAppBalanceSummaryDaily,\n} from \"@/store/slice/appBalanceSummaryDaily\";\nimport { useList, useExportExcel, useSearchCache } from \"@/utils/hook\";\nimport { Currency } from \"@/utils/enum\";\nimport { SearchFormFactory } from \"@/components/factory/FormFactory\";\nimport { NormalTable } from \"@/components/factory/TableFactory\";\nimport SumTable from \"@/components/SumTable\";\nimport {\n sumColumns,\n columns,\n exportColumnsRenderMap,\n} from \"./AppBalanceSummaryColumn\";\n\nconst searchFields = {\n id__in: { type: \"string\", label: \"ID\" },\n created__btw: { type: \"rangeDate\", label: \"报表时间\", showTime: false },\n currency: { type: \"select\", label: \"货币类型\", options: Currency },\n};\n\nconst AppBalanceSummary = () => {\n const {\n res: { list, meta, sum },\n loading: listLoading,\n handleSearch,\n handleChangePage,\n handleChange,\n } = useList(\n getAppBalanceSummaryDaily,\n selectAppBalanceSummaryDaily,\n {},\n true,\n );\n const handleList = resList =>\n resList.map(ll => {\n // 当天盈利 = 當天收款金额 - 出款金额 - 商户提现金额 - 减所有手续费\n const current_day_total_profit =\n ll.total_order_amount -\n ll.total_transfer_amount -\n ll.total_withdrawal -\n ll.total_order_fee -\n ll.total_transfer_fee -\n ll.total_withdrawal_fee;\n // 当前余额 = 昨天餘額 + 当天盈利\n const current_day_total_balance =\n ll.yesterday_balance + current_day_total_profit;\n return { ...ll, current_day_total_profit, current_day_total_balance };\n });\n const dispatch = useDispatch();\n const { handleGetPageSearchCache } = useSearchCache();\n const getSum = (params = {}) => {\n dispatch(\n getAppBalanceSummaryDailySum({\n ...handleGetPageSearchCache(),\n ...params,\n }),\n );\n };\n useEffect(() => {\n getSum();\n // eslint-disable-next-line\n }, []);\n\n const handleSearchClick = params => {\n handleSearch(params);\n getSum(params);\n };\n\n const {\n loading: exportLoading,\n handleExport,\n handleSelectedColumns,\n } = useExportExcel({\n exportColumnsRenderMap,\n exportAction: exportAppBalanceSummaryDaily,\n handleExportData: handleList,\n });\n\n return (\n \n \n \n i.dataIndex)}\n dataSource={handleList(list)}\n meta={meta}\n onChangePage={handleChangePage}\n onChange={handleChange}\n loading={listLoading}\n onShowSizeChange={handleChangePage}\n setSelectedColumns={handleSelectedColumns}\n />\n \n );\n};\nexport default AppBalanceSummary;\n","import { useEffect, useCallback } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { Space } from \"antd\";\nimport {\n selectAppGatewayDaily,\n getAppGatewayDaily,\n getAppGatewayDailySum,\n exportAppGatewayDaily,\n} from \"@/store/slice/appGatewayDaily\";\nimport { useList, useExportExcel, useSearchCache } from \"@/utils/hook\";\nimport { Currency, IsBoolEnum } from \"@/utils/enum\";\nimport { SearchFormFactory } from \"@/components/factory/FormFactory\";\nimport { NormalTable } from \"@/components/factory/TableFactory\";\nimport SumTable from \"@/components/SumTable\";\nimport {\n sumColumns,\n columns,\n statisticsColumns,\n exportColumnsRenderMap,\n} from \"./AppGatewayDailyColumn\";\n\nconst searchFields = {\n id__in: { type: \"string\", label: \"ID\" },\n app_id__in: { type: \"string\", label: \"商户ID\" },\n app_name__k: { type: \"string\", label: \"商戶名称\" },\n gateway_id__in: { type: \"string\", label: \"渠道ID\" },\n created__btw: { type: \"rangeDate\", label: \"报表时间\", showTime: false },\n currency: { type: \"select\", label: \"货币类型\", options: Currency },\n is_online: { type: \"select\", label: \"是否线上渠道\", options: IsBoolEnum },\n};\n\nconst AppGatewayDaily = () => {\n const {\n res: { list, meta, sum },\n loading: listLoading,\n handleSearch,\n handleChangePage,\n handleChange,\n } = useList(getAppGatewayDaily, selectAppGatewayDaily, {}, true);\n const handleList = useCallback(\n resList =>\n resList.map(ll => {\n // 成功率\n const succeeded_rate = `${(\n (ll.total_succeeded_times / ll.total_times) *\n 100\n ).toFixed(2)}%`;\n // 累计手续费\n const total_fee = ll.total_profit_amount + ll.total_amount_gateway_fee;\n // 渠道余额\n const gateway_balance = ll.total_succeeded_amount - total_fee;\n return { ...ll, succeeded_rate, total_fee, gateway_balance };\n }),\n [],\n );\n\n const dispatch = useDispatch();\n const { handleGetPageSearchCache } = useSearchCache();\n const getSum = (params = {}) => {\n dispatch(\n getAppGatewayDailySum({ ...handleGetPageSearchCache(), ...params }),\n );\n };\n useEffect(() => {\n getSum();\n // eslint-disable-next-line\n }, []);\n\n const handleSearchClick = params => {\n handleSearch(params);\n getSum(params);\n };\n\n const {\n loading: exportLoading,\n handleExport,\n handleSelectedColumns,\n } = useExportExcel({\n exportColumnsRenderMap,\n exportAction: exportAppGatewayDaily,\n handleExportData: handleList,\n });\n\n return (\n \n \n \n i.dataIndex)}\n dataSource={handleList(list)}\n meta={meta}\n onChangePage={handleChangePage}\n onChange={handleChange}\n loading={listLoading}\n onShowSizeChange={handleChangePage}\n statisticsColumns={statisticsColumns}\n setSelectedColumns={handleSelectedColumns}\n />\n \n );\n};\nexport default AppGatewayDaily;\n","import { useEffect, useCallback } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { Space } from \"antd\";\nimport {\n selectDeveloperDaily,\n getDeveloperDaily,\n getDeveloperDailySum,\n exportDeveloperDaily,\n} from \"@/store/slice/developerDaily\";\nimport { SearchFormFactory } from \"@/components/factory/FormFactory\";\nimport { useList, useExportExcel, useSearchCache } from \"@/utils/hook\";\nimport { Currency, IsBoolEnum } from \"@/utils/enum\";\nimport { NormalTable } from \"@/components/factory/TableFactory\";\nimport SumTable from \"@/components/SumTable\";\nimport {\n sumColumns,\n columns,\n statisticsColumns,\n exportColumnsRenderMap,\n} from \"./DeveloperDailyColumn\";\n\nconst searchFields = {\n id__in: { type: \"string\", label: \"ID\" },\n app_id__in: { type: \"string\", label: \"商户ID\" },\n app_name__k: { type: \"string\", label: \"商户名称\" },\n created__btw: { type: \"rangeDate\", label: \"报表时间\", showTime: false },\n currency: { type: \"select\", label: \"货币类型\", options: Currency },\n is_online: {\n type: \"select\",\n label: \"是否线上渠道\",\n options: IsBoolEnum,\n },\n};\n\nconst DeveloperDaily = () => {\n const {\n res: { list, meta, sum },\n loading: listLoading,\n handleSearch,\n handleChangePage,\n handleChange,\n } = useList(getDeveloperDaily, selectDeveloperDaily, {}, true);\n const handleList = useCallback(\n resList =>\n resList.map(ll => {\n // 存提差\n const difference =\n ll.total_succeeded_amount - ll.transfer_succeeded_amount;\n // 代收手续费\n const order_fee = ll.total_amount_gateway_fee + ll.total_profit_amount;\n // 代付手续费\n const transfer_fee =\n ll.transfer_succeeded_app_fee + ll.transfer_succeeded_gateway_fee;\n // 今天盈利\n const profit_today = difference - order_fee - transfer_fee;\n return { ...ll, difference, order_fee, transfer_fee, profit_today };\n }),\n [],\n );\n\n const dispatch = useDispatch();\n const { handleGetPageSearchCache } = useSearchCache();\n const getSum = (params = {}) => {\n dispatch(\n getDeveloperDailySum({ ...handleGetPageSearchCache(), ...params }),\n );\n };\n useEffect(() => {\n getSum();\n // eslint-disable-next-line\n }, []);\n\n const handleSearchClick = params => {\n handleSearch(params);\n getSum(params);\n };\n\n const {\n loading: exportLoading,\n handleExport,\n handleSelectedColumns,\n } = useExportExcel({\n exportColumnsRenderMap,\n exportAction: exportDeveloperDaily,\n handleExportData: handleList,\n });\n\n return (\n \n \n \n i.dataIndex)}\n dataSource={handleList(list)}\n meta={meta}\n onChangePage={handleChangePage}\n onChange={handleChange}\n loading={listLoading}\n onShowSizeChange={handleChangePage}\n statisticsColumns={statisticsColumns}\n setSelectedColumns={handleSelectedColumns}\n />\n \n );\n};\nexport default DeveloperDaily;\n","import { useEffect } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { Space } from \"antd\";\nimport {\n selectDeveloperSubDaily,\n getDeveloperSubDaily,\n getDeveloperSubDailySum,\n} from \"@/store/slice/developerSubDaily\";\nimport { SearchFormFactory } from \"@/components/factory/FormFactory\";\nimport { useList, useSearchCache } from \"@/utils/hook\";\nimport { dateFormat, priceFormat } from \"@/utils/format\";\nimport { Currency, IsBoolEnum } from \"@/utils/enum\";\nimport { NormalTable } from \"@/components/factory/TableFactory\";\nimport Tag from \"@/components/Tag\";\nimport SumTable from \"@/components/SumTable\";\n\nconst searchFields = {\n id__in: { type: \"string\", label: \"ID\" },\n app_id__in: { type: \"string\", label: \"商户ID\" },\n app_name__k: { type: \"string\", label: \"商户名称\" },\n created__btw: { type: \"rangeDate\", label: \"报表时间\", showTime: false },\n currency: { type: \"select\", label: \"货币类型\", options: Currency },\n is_online: {\n type: \"select\",\n label: \"是否线上渠道\",\n options: IsBoolEnum,\n },\n};\n\nconst DeveloperSubDaily = () => {\n const {\n res: { list, meta, sum },\n loading: listLoading,\n handleSearch,\n handleChangePage,\n handleChange,\n } = useList(getDeveloperSubDaily, selectDeveloperSubDaily, {}, true);\n\n const dispatch = useDispatch();\n const { handleGetPageSearchCache } = useSearchCache();\n const getSum = (params = {}) => {\n dispatch(\n getDeveloperSubDailySum({ ...handleGetPageSearchCache(), ...params }),\n );\n };\n useEffect(() => {\n getSum();\n // eslint-disable-next-line\n }, []);\n\n const handleSearchClick = params => {\n handleSearch(params);\n getSum(params);\n };\n\n const moneyRender = () => {\n return {\n render: (val, record) =>\n priceFormat({ val: val || 0, currency: record.currency }),\n className: \"text-nowrap\",\n sorter: true,\n };\n };\n\n const columns = [\n { title: \"ID\", dataIndex: \"id\", sorter: true },\n { title: \"商户ID\", dataIndex: \"app_id\", sorter: true },\n { title: \"商户名称\", dataIndex: \"app_name\", sorter: true },\n {\n title: \"报表时间\",\n dataIndex: \"created\",\n className: \"text-nowrap\",\n render: val => dateFormat(val, \"YYYY-MM-DD\"),\n sorter: true,\n },\n {\n title: \"是否线上渠道\",\n dataIndex: \"is_online\",\n render: val => ,\n sorter: true,\n },\n {\n title: \"货币类型\",\n dataIndex: \"currency\",\n render: val => Currency[val] || \"\",\n className: \"text-nowrap\",\n },\n {\n title: \"帐户余额\",\n dataIndex: \"total_balance\",\n ...moneyRender(),\n },\n {\n title: \"圈存余额\",\n dataIndex: \"total_block\",\n ...moneyRender(),\n },\n {\n title: \"累计订单次数\",\n dataIndex: \"total_times\",\n sorter: true,\n },\n {\n title: \"累计金额\",\n dataIndex: \"total_amount\",\n ...moneyRender(),\n },\n {\n title: \"累计赠金金额\",\n dataIndex: \"total_bonus\",\n ...moneyRender(),\n },\n {\n title: \"累计成功金额\",\n dataIndex: \"total_succeeded_amount\",\n ...moneyRender(),\n },\n {\n title: \"累计成功次数\",\n dataIndex: \"total_succeeded_times\",\n sorter: true,\n },\n // {\n // title: \"扣除通道费后金额汇总\",\n // dataIndex: \"total_amount_gateway\",\n // ...moneyRender(),\n // },\n // {\n // title: \"扣除商户费(商户+通道)后金额汇总\",\n // dataIndex: \"total_amount_app\",\n // ...moneyRender(),\n // },\n {\n title: \"累计盈利金额\",\n dataIndex: \"total_profit_amount\",\n ...moneyRender(),\n },\n {\n title: \"提交代付笔数\",\n dataIndex: \"transfer_times\",\n sorter: true,\n },\n {\n title: \"提交代付金额\",\n dataIndex: \"transfer_amount\",\n ...moneyRender(),\n },\n {\n title: \"提交代付人数\",\n dataIndex: \"transfer_users\",\n sorter: true,\n },\n {\n title: \"成功代付笔数\",\n dataIndex: \"transfer_succeeded_times\",\n sorter: true,\n },\n {\n title: \"成功代付金额\",\n dataIndex: \"transfer_succeeded_amount\",\n ...moneyRender(),\n },\n {\n title: \"成功代付人数\",\n dataIndex: \"transfer_succeeded_users\",\n sorter: true,\n },\n {\n title: \"提交存款人数\",\n dataIndex: \"order_users\",\n sorter: true,\n },\n {\n title: \"成功存款人数\",\n dataIndex: \"order_succeeded_users\",\n sorter: true,\n },\n {\n title: \"存提差\",\n dataIndex: \"total_succeeded_amount2\",\n render: (val, record) =>\n priceFormat({\n val: record.total_succeeded_amount - record.transfer_succeeded_amount,\n currency: record.currency,\n }),\n className: \"text-nowrap\",\n sorter: true,\n },\n {\n title: \"代付订单笔数\",\n dataIndex: \"total_trans_times\",\n sorter: true,\n },\n {\n title: \"代付订单金额\",\n dataIndex: \"total_trans_amount\",\n ...moneyRender(),\n },\n {\n title: \"代付订单支出手续费\",\n dataIndex: \"total_trans_fee\",\n ...moneyRender(),\n },\n {\n title: \"代付支出分润金额\",\n dataIndex: \"total_order_out_profit\",\n ...moneyRender(),\n },\n {\n title: \"代付收入分润金额\",\n dataIndex: \"total_order_profit\",\n ...moneyRender(),\n },\n {\n title: \"代付成功支付商户手续费\",\n dataIndex: \"transfer_succeeded_app_fee\",\n ...moneyRender(),\n },\n {\n title: \"代付成功支付渠道手续费\",\n dataIndex: \"transfer_succeeded_gateway_fee\",\n ...moneyRender(),\n },\n ];\n const sumColumns = [\n {\n title: \"订单成功次数\",\n dataIndex: \"order_succeeded_times\",\n },\n {\n title: \"订单成功金额\",\n dataIndex: \"order_succeeded_amount\",\n render: val => priceFormat({ val, currency: 0 }),\n },\n {\n title: \"累计代理代付次数\",\n dataIndex: \"total_trans_times\",\n },\n {\n title: \"累计代理代付金額\",\n dataIndex: \"total_trans_amount\",\n render: val => priceFormat({ val, currency: 0 }),\n },\n {\n title: \"代付成功次数\",\n dataIndex: \"transfer_succeeded_times\",\n },\n {\n title: \"代付成功金额\",\n dataIndex: \"transfer_succeeded_amount\",\n render: val => priceFormat({ val, currency: 0 }),\n },\n {\n title: \"代付成功支付商户手续费\",\n dataIndex: \"transfer_succeeded_app_fee\",\n render: val => priceFormat({ val, currency: 0 }),\n },\n {\n title: \"代付成功支付渠道手续费\",\n dataIndex: \"transfer_succeeded_gateway_fee\",\n render: val => priceFormat({ val, currency: 0 }),\n },\n {\n title: \"总代付支出分润金额\",\n dataIndex: \"total_order_profit\",\n render: val => priceFormat({ val, currency: 0 }),\n },\n {\n title: \"总代付支出分润金额\",\n dataIndex: \"total_order_out_profit\",\n render: val => priceFormat({ val, currency: 0 }),\n },\n {\n title: \"总代付支出手续费\",\n dataIndex: \"total_trans_fee\",\n render: val => priceFormat({ val, currency: 0 }),\n },\n ];\n const statisticsColumns = columns.filter(\n i =>\n [\n \"total_times\",\n \"total_succeeded_times\",\n \"transfer_times\",\n \"transfer_succeeded_times\",\n \"transfer_users\",\n \"transfer_succeeded_users\",\n \"order_users\",\n \"order_succeeded_users\",\n \"total_trans_times\",\n ].indexOf(i.dataIndex) !== -1,\n );\n return (\n \n \n \n i.dataIndex)}\n dataSource={list}\n meta={meta}\n onChangePage={handleChangePage}\n onChange={handleChange}\n loading={listLoading}\n onShowSizeChange={handleChangePage}\n statisticsColumns={statisticsColumns}\n />\n \n );\n};\nexport default DeveloperSubDaily;\n","import { useEffect, useCallback } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { Space } from \"antd\";\nimport {\n selectTransferAppGatewayDaily,\n getTransferAppGatewayDaily,\n getTransferAppGatewayDailySum,\n exportTransferAppGatewayDaily,\n} from \"@/store/slice/transferAppGatewayDaily\";\nimport { useList, useExportExcel, useSearchCache } from \"@/utils/hook\";\nimport { Currency } from \"@/utils/enum\";\nimport { SearchFormFactory } from \"@/components/factory/FormFactory\";\nimport { NormalTable } from \"@/components/factory/TableFactory\";\nimport SumTable from \"@/components/SumTable\";\nimport {\n sumColumns,\n columns,\n statisticsColumns,\n exportColumnsRenderMap,\n} from \"./TransferAppGatewayDailyColumn\";\n\nconst searchFields = {\n id__in: { type: \"string\", label: \"ID\" },\n app_id__in: { type: \"string\", label: \"商户ID\" },\n app_name__k: { type: \"string\", label: \"商戶名称\" },\n gateway_id__in: { type: \"string\", label: \"渠道ID\" },\n // gateway_name__k: { type: \"string\", label: \"渠道名称\" },\n created__btw: { type: \"rangeDate\", label: \"报表时间\", showTime: false },\n currency: { type: \"select\", label: \"货币类型\", options: Currency },\n};\n\nconst TransferAppGatewayDaily = () => {\n const {\n res: { list, meta, sum },\n loading: listLoading,\n handleSearch,\n handleChangePage,\n handleChange,\n } = useList(\n getTransferAppGatewayDaily,\n selectTransferAppGatewayDaily,\n {},\n true,\n );\n const handleList = useCallback(\n resList =>\n resList.map(ll => {\n // 成功率\n const succeeded_rate = `${(\n (ll.total_succeeded_times / ll.total_times) *\n 100\n ).toFixed(2)}%`;\n // 累计手续费\n const total_fee = ll.total_amount_app_fee + ll.total_amount_gateway_fee;\n return { ...ll, succeeded_rate, total_fee };\n }),\n [],\n );\n\n const dispatch = useDispatch();\n const { handleGetPageSearchCache } = useSearchCache();\n const getSum = (params = {}) => {\n dispatch(\n getTransferAppGatewayDailySum({\n ...handleGetPageSearchCache(),\n ...params,\n }),\n );\n };\n useEffect(() => {\n getSum();\n // eslint-disable-next-line\n }, []);\n\n const handleSearchClick = params => {\n handleSearch(params);\n getSum(params);\n };\n\n const {\n loading: exportLoading,\n handleExport,\n handleSelectedColumns,\n } = useExportExcel({\n exportColumnsRenderMap,\n exportAction: exportTransferAppGatewayDaily,\n handleExportData: handleList,\n });\n\n return (\n \n \n \n i.dataIndex)}\n dataSource={handleList(list)}\n meta={meta}\n onChangePage={handleChangePage}\n onChange={handleChange}\n loading={listLoading}\n onShowSizeChange={handleChangePage}\n statisticsColumns={statisticsColumns}\n setSelectedColumns={handleSelectedColumns}\n />\n \n );\n};\nexport default TransferAppGatewayDaily;\n","import axios from \"axios\";\nimport { errorCodeMessage } from \"@/utils/enum\";\nimport Notification from \"@/components/factory/NotifFactory\";\nimport { logout } from \"@/store/slice/auth\";\nexport const interceptor = store => {\n axios.interceptors.request.use(\n config => {\n config = {\n ...config,\n withCredentials: true,\n baseURL: process.env.REACT_APP_API_URL,\n };\n return config;\n },\n function (error) {\n return Promise.reject(error);\n },\n );\n\n axios.interceptors.response.use(\n response => {\n response = {\n ...response,\n };\n return response;\n },\n function (error) {\n const status = error.response.status;\n if (status === 500) {\n Notification({\n title: errorCodeMessage[status] ?? error.message,\n message:\n error.response?.data?.err ||\n JSON.stringify(error.response?.data || \"\"),\n });\n } else if (status === 403) {\n store.dispatch(logout());\n Notification({\n title: errorCodeMessage[status] ?? error.message,\n message: error.response?.data?.err,\n });\n } else if (status === 401) {\n store.dispatch(logout());\n Notification({\n title: errorCodeMessage[status] ?? error.message,\n message: error.response?.data?.err,\n });\n } else {\n Notification({\n title:\n error.response.data.message ??\n errorCodeMessage[status] ??\n error.message,\n message:\n error.response?.data?.err ||\n JSON.stringify(error.response?.data || \"\"),\n });\n }\n return Promise.reject(error);\n },\n );\n};\n/**\n *\n * @param {url, method, data, params} config\n * data --> post {}\n */\nconst request = async config => {\n const params = {\n url: config.url,\n method: config.method,\n ...(config.method === \"get\"\n ? { params: config.params }\n : { data: config.data }),\n };\n try {\n const { data, status } = await axios(params);\n return { data, status };\n } catch (error) {\n if (error.response) {\n console.log(\"response\", error.response);\n } else if (error.request) {\n console.log(\"request\", error.request);\n } else {\n console.log(\"Error message\", error.message);\n }\n return { status: error.response.status, data: error.response.data };\n }\n};\n\nexport default request;\n","import { useCallback, useState, useEffect, useMemo, useRef } from \"react\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { useLocation } from \"react-router-dom\";\nimport { message } from \"antd\";\nimport { getColumns } from \"@/utils/format\";\nimport ExcelJs from \"exceljs\";\n\nexport const useList = (\n action,\n selector,\n originParams = {},\n isUseSearchCache = false,\n) => {\n const dispatch = useDispatch();\n const states = useSelector(selector);\n const [searchParams, setSearchParams] = useState(null);\n const [sortParams, setSortParams] = useState(null);\n const [pageSize, setPageSize] = useState(states.meta?.pageSize);\n const [current, setCurrent] = useState(states.meta?.current);\n const [loading, setLoading] = useState(false);\n const { handleGetPageSearchCache } = useSearchCache();\n const handleGetList = useCallback(\n async (params = {}) => {\n setLoading(true);\n await dispatch(\n action({\n page: current,\n per_page: pageSize,\n ...originParams,\n ...(isUseSearchCache && handleGetPageSearchCache()),\n ...searchParams,\n ...sortParams,\n ...params,\n }),\n );\n setLoading(false);\n },\n // eslint-disable-next-line\n [dispatch, action, pageSize, current, searchParams, sortParams],\n );\n const handleSearch = formModel => {\n setSearchParams(formModel);\n setCurrent(1);\n };\n const handleChangePage = (page, pageSize) => {\n setCurrent(page);\n setPageSize(pageSize);\n };\n const handleChange = (pagination, filters, sorter) => {\n const order = sorter.order === \"ascend\" ? \"\" : \"-\";\n setSortParams(sorter.order ? { o: order + sorter.field } : null);\n };\n const handleAdd = async ({ action: addAction, ...params }) => {\n setLoading(true);\n const { status } = await addAction(params);\n status === 200 && message.success(\"新增成功!\");\n handleGetList();\n };\n const handleDelete = async ({ action: deleteAction, ...params }) => {\n setLoading(true);\n const { status } = await deleteAction(params);\n status === 200 && message.success(\"刪除成功!\");\n handleGetList();\n };\n\n useEffect(() => {\n handleGetList();\n }, [handleGetList]);\n return {\n res: { ...states },\n loading,\n handleSearch,\n handleGetList,\n handleChangePage,\n handleChange,\n handleAdd,\n handleDelete,\n setLoading,\n };\n};\n\nexport const useDetail = ({ action, id }, selector) => {\n const dispatch = useDispatch();\n const { currentRow } = useSelector(selector);\n const [loading, setLoading] = useState(false);\n const handleGetDetail = useCallback(async () => {\n setLoading(true);\n await dispatch(action(id));\n setLoading(false);\n }, [dispatch, action, id]);\n\n const handleEdit = async ({ action: editAction, id: editId, ...params }) => {\n setLoading(true);\n const { status, data } = await editAction({\n id: editId,\n formModel: params,\n });\n status === 200 && message.success(\"更新成功!\");\n setLoading(false);\n return { status, data };\n };\n useEffect(() => {\n id && handleGetDetail();\n }, [handleGetDetail, id]);\n return { currentRow, loading, setLoading, handleEdit };\n};\n\nconst getCols = (cols, filter) => {\n return cols.filter(i => filter.indexOf(i.dataIndex) > -1);\n};\n\nexport const useColumnsSelect = ({\n columns: defaultColumns,\n defaultColumns: defaultFilter,\n}) => {\n const [filter, setFilter] = useState(\n getColumns()?.length ? getColumns() : defaultFilter,\n );\n\n const handleSelectedColumnsChange = useCallback(({ columns }) => {\n setFilter(columns.map(i => i.dataIndex));\n }, []);\n\n const selectedColumns = useMemo(() => {\n return getCols(defaultColumns, filter);\n }, [defaultColumns, filter]);\n\n useEffect(() => {\n const storageColumns =\n JSON.parse(localStorage.getItem(\"columns\") || \"{}\") || {};\n localStorage.setItem(\n \"columns\",\n JSON.stringify({\n ...storageColumns,\n [window.location.pathname]: filter,\n }),\n );\n }, [filter]);\n\n return { selectedColumns, handleSelectedColumnsChange };\n};\n\nexport const useSearchCache = () => {\n const handleGetSearchCache = () =>\n JSON.parse(localStorage.getItem(\"searchCache\") || \"{}\") || {};\n const handleSetSearchCache = ({ pathname, formModel }) => {\n const storageSearchCache = handleGetSearchCache();\n localStorage.setItem(\n \"searchCache\",\n JSON.stringify({\n ...storageSearchCache,\n [pathname]: formModel,\n }),\n );\n };\n const handleResetSearchCache = ({ pathname }) => {\n const storageSearchCache = handleGetSearchCache();\n delete storageSearchCache[pathname];\n localStorage.setItem(\"searchCache\", JSON.stringify(storageSearchCache));\n };\n const { pathname } = useLocation();\n const handleGetPageSearchCache = () => handleGetSearchCache()[pathname] || {};\n return {\n handleGetSearchCache,\n handleGetPageSearchCache,\n handleSetSearchCache,\n handleResetSearchCache,\n };\n};\n\nexport const useExportExcel = ({\n exportColumnsRenderMap = {},\n exportAction = () => {},\n handleExportData = null,\n}) => {\n const selectedColumns = useRef([]);\n\n const handleSelectedColumns = columns => {\n let tempArr = [];\n columns.forEach(el => {\n if (el.dataIndex !== \"action\") {\n tempArr.push({\n ...el,\n render: exportColumnsRenderMap[el.dataIndex],\n });\n }\n });\n selectedColumns.current = tempArr;\n };\n const handleColumns = useCallback(() => {\n return selectedColumns.current.map(c => ({ name: c.title }));\n }, [selectedColumns]);\n\n const handleRows = useCallback(\n dataList => {\n let rowList = [];\n dataList.forEach(el => {\n let row = []; // [[\"小明\", \"20\", \"0987654321\"],[\"小美\", \"23\", \"0912345678\"]];\n for (let i = 0; i < selectedColumns.current.length; i++) {\n let rowItem = el[selectedColumns.current[i].dataIndex];\n if (\n typeof rowItem !== \"undefined\" &&\n selectedColumns.current[i].render\n ) {\n rowItem = selectedColumns.current[i].render(rowItem, el);\n }\n row.push(rowItem);\n }\n rowList.push(row);\n });\n return rowList;\n },\n [selectedColumns],\n );\n const handleExportExcel = useCallback(\n ({ data }) => {\n // 建立表格\n const workbook = new ExcelJs.Workbook();\n const sheet = workbook.addWorksheet(\"工作表\"); // 工作區域\n const columns = handleColumns();\n const rows = handleRows(data);\n sheet.addTable({\n name: \"table_name\", // 表格內看不到的,算是key值,讓你之後想要針對這個table去做額外設定的時候,可以指定到這個table\n ref: \"A1\", // 從A1開始\n columns,\n rows,\n });\n workbook.xlsx.writeBuffer().then(content => {\n const link = document.createElement(\"a\");\n const blobData = new Blob([content], {\n type: \"application/vnd.ms-excel;charset=utf-8;\",\n });\n link.download = \"試算表.xlsx\";\n link.href = URL.createObjectURL(blobData);\n link.click();\n });\n },\n [handleColumns, handleRows],\n );\n\n const [loading, setLoading] = useState(false);\n const handleExport = async params => {\n setLoading(true);\n const { status, data } = await exportAction(params);\n setLoading(false);\n if (status !== 200) return;\n const exportData = handleExportData ? handleExportData(data) : data;\n handleExportExcel({ data: exportData });\n };\n\n return { loading, handleExport, handleSelectedColumns };\n};\n","var map = {\n\t\"./AppAcct\": 165,\n\t\"./AppAcct/\": 165,\n\t\"./AppAcct/AppAccLogColumn\": 131,\n\t\"./AppAcct/AppAccLogColumn.js\": 131,\n\t\"./AppAcct/AppAcctLog\": 242,\n\t\"./AppAcct/AppAcctLog.js\": 242,\n\t\"./AppAcct/index\": 165,\n\t\"./AppAcct/index.js\": 165,\n\t\"./GlobalLayout\": 171,\n\t\"./GlobalLayout.js\": 171,\n\t\"./Login\": 172,\n\t\"./Login.js\": 172,\n\t\"./MainRoute\": 173,\n\t\"./MainRoute.js\": 173,\n\t\"./Order\": 167,\n\t\"./Order/\": 167,\n\t\"./Order/Columns\": 147,\n\t\"./Order/Columns.js\": 147,\n\t\"./Order/Notification\": 169,\n\t\"./Order/Notification.js\": 169,\n\t\"./Order/index\": 167,\n\t\"./Order/index.js\": 167,\n\t\"./Report/AppBalanceSummary\": 247,\n\t\"./Report/AppBalanceSummary.js\": 247,\n\t\"./Report/AppBalanceSummaryColumn\": 109,\n\t\"./Report/AppBalanceSummaryColumn.js\": 109,\n\t\"./Report/AppGatewayDaily\": 248,\n\t\"./Report/AppGatewayDaily.js\": 248,\n\t\"./Report/AppGatewayDailyColumn\": 102,\n\t\"./Report/AppGatewayDailyColumn.js\": 102,\n\t\"./Report/DeveloperDaily\": 249,\n\t\"./Report/DeveloperDaily.js\": 249,\n\t\"./Report/DeveloperDailyColumn\": 103,\n\t\"./Report/DeveloperDailyColumn.js\": 103,\n\t\"./Report/DeveloperSubDaily\": 250,\n\t\"./Report/DeveloperSubDaily.js\": 250,\n\t\"./Report/TransferAppGatewayDaily\": 251,\n\t\"./Report/TransferAppGatewayDaily.js\": 251,\n\t\"./Report/TransferAppGatewayDailyColumn\": 104,\n\t\"./Report/TransferAppGatewayDailyColumn.js\": 104,\n\t\"./Transfers\": 168,\n\t\"./Transfers/\": 168,\n\t\"./Transfers/Columns\": 148,\n\t\"./Transfers/Columns.js\": 148,\n\t\"./Transfers/index\": 168,\n\t\"./Transfers/index.js\": 168,\n\t\"./Transfers/indexTemplate\": 170,\n\t\"./Transfers/indexTemplate.js\": 170\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 376;","import { createSlice, createAsyncThunk } from \"@reduxjs/toolkit\";\nimport request from \"@/utils/request\";\n\nexport const login = async (data = {}) => {\n return await request({\n url: \"/auth/login/developer\",\n method: \"post\",\n data,\n });\n};\n\nexport const getOptStatus = createAsyncThunk(\"auth/optStatus\", async () => {\n const { status, data } = await request({\n url: \"/auth/developer/opt\",\n method: \"get\",\n });\n if (status !== 200) return;\n return data;\n});\n\nexport const resetUserPsw = async params => {\n const res = await request({\n url: `/api/developer/users/${params.id}/password`,\n method: \"post\",\n data: params.formModel,\n });\n return res;\n};\n\nexport const resetUserOtp = async id => {\n const res = await request({\n url: `/api/developer/users/${id}/otp_reset`,\n method: \"post\",\n data: {},\n });\n return res;\n};\n\nexport const verifyOpt = async data => {\n const res = await request({\n url: \"/auth/otp/verify\",\n method: \"post\",\n data,\n });\n return res;\n};\n\nexport const slice = createSlice({\n name: \"user\",\n initialState: {\n user: JSON.parse(localStorage.getItem(\"user\")) || null,\n isOtp: false,\n },\n reducers: {\n setUser: (state, action) => {\n state.user = action.payload;\n },\n logout: state => {\n state.user = null;\n localStorage.removeItem(\"user\");\n },\n },\n extraReducers: {\n [getOptStatus.fulfilled]: (state, action) => {\n state.isOtp = action.payload;\n },\n },\n});\nexport const { setUser, logout } = slice.actions;\nexport const selectAuth = state => state.auth;\nexport default slice.reducer;\n","import React from \"react\";\nimport { Tag } from \"antd\";\nimport { isActiveLang } from \"@/utils/enum\";\nconst TagC = ({ val, falseColor, children }) => {\n return (\n \n {children ?? isActiveLang(val)}\n \n );\n};\nfunction propsAreEqual(prev, next) {\n return prev.val === next.val;\n}\nexport default React.memo(TagC, propsAreEqual);\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { DownloadOutlined } from \"@ant-design/icons\";\nimport {\n Card,\n Form,\n Row,\n Col,\n Space,\n Button,\n InputNumber,\n message,\n} from \"antd\";\nimport InputFactory from \"./InputFactory\";\nimport SearchSelect from \"@/components/SearchSelect\";\nimport { formLayout } from \"@/utils/enum\";\nimport {\n searchFieldsFormat,\n priceFormat,\n rangeLimitDays,\n searchFieldsFilterInitialValues,\n} from \"@/utils/format\";\nimport { useSearchCache } from \"@/utils/hook\";\nimport { useLocation } from \"react-router-dom\";\nimport moment from \"moment\";\n\n/**\n * fields\n * @param {object} fields\n * @param {object} fields.name - field key\n * @param {string} fields.name.type - input type [string, select, switch, checkbox, rangeDate]\n * @param {string} fields.name.label - form label\n * @param {string} fields.name.options - when type === 'select', pass options.\n * @function handleSubmit - 送出表單\n */\nexport const SearchFormFactory = ({\n fields = {},\n showExportBtn = false,\n exportLoading = false,\n handleSubmit = () => {},\n handleExport = () => {},\n otherBtn = null,\n}) => {\n const [form] = Form.useForm();\n const [initialValues, setInitialValues] = useState({});\n\n const handleReset = async () => {\n await form.resetFields();\n await form.setFieldsValue(initialValues);\n handleResetSearchCache({ pathname });\n };\n const { pathname } = useLocation();\n const {\n handleGetPageSearchCache,\n handleSetSearchCache,\n handleResetSearchCache,\n } = useSearchCache();\n const handleFields = useCallback(() => {\n const formModel = form.getFieldsValue();\n Object.keys(formModel).forEach(i => {\n formModel[i] === undefined && delete formModel[i];\n });\n const params = searchFieldsFormat({ fields, formModel });\n handleSetSearchCache({ pathname, formModel: params });\n return params;\n }, [fields, form, handleSetSearchCache, pathname]);\n\n const handleSearchClick = useCallback(() => {\n const params = handleFields();\n handleSubmit(params);\n }, [handleSubmit, handleFields]);\n\n const handleExportClick = useCallback(() => {\n const params = handleFields();\n if (!params.created__btw && !params.paid_at__btw) {\n message.warning(\"请选择时间区间\");\n return;\n }\n // 下載天數不能超過 90 天\n const dateStr = params.created__btw || params.paid_at__btw;\n const isLimit = rangeLimitDays(90, dateStr);\n isLimit ? handleExport(params) : message.warning(\"下載量不得超過90天\");\n }, [handleExport, handleFields]);\n\n const init = async () => {\n const fieldsInitialValues = searchFieldsFilterInitialValues(fields);\n setInitialValues(fieldsInitialValues);\n let searchCache = handleGetPageSearchCache();\n if (Object.keys(searchCache).length) {\n Object.keys(searchCache).forEach(i => {\n if (i.indexOf(\"__btw\") !== -1) {\n searchCache[i] = searchCache[i].split(\"~\").map(j => moment(j));\n }\n if (fields[i]?.type === \"searchSelect\") {\n const temp = searchCache[i].split(\",\");\n searchCache[i] = temp.map(item => Number(item));\n }\n // 资金类型格式處理\n if ([\"type__ne\", \"type__eq\"].includes(i)) {\n searchCache[\"funding_type\"] = `{\"${i}\":${searchCache[i]}}`;\n }\n });\n }\n await form.setFieldsValue({ ...fieldsInitialValues, ...searchCache });\n };\n useEffect(() => {\n init();\n // eslint-disable-next-line\n }, [pathname]);\n const valuePropName = type =>\n type === \"checkbox\" || type === \"switch\" ? \"checked\" : \"value\";\n return (\n \n
\n \n {Object.keys(fields).map(i => {\n const inputFactoryProps = fields[i];\n const { optionLabel, ...rest } = inputFactoryProps;\n return (\n \n \n {inputFactoryProps.type === \"searchSelect\" ? (\n \n ) : (\n \n )}\n \n \n );\n })}\n \n \n \n \n {showExportBtn && (\n }\n onClick={handleExportClick}\n loading={exportLoading}\n >\n 汇出\n \n )}\n {otherBtn}\n \n \n \n \n \n \n \n \n \n
\n
\n );\n};\n\nexport const CurrencyHelpTextFormItemFactory = ({\n name,\n defaultValKey,\n label,\n row,\n min = 0,\n max = null,\n ...rest\n}) => {\n const [value, setValue] = useState(null);\n const helpText = useCallback(() => {\n return `数量:${priceFormat({\n val: value || row[defaultValKey] || row[name] || 0,\n currency: row.currency,\n })}`;\n // eslint-disable-next-line\n }, [row, value]);\n const handleOnChange = val => {\n setValue(val);\n return val;\n };\n return (\n \n \n \n );\n};\n","import { Select } from \"antd\";\nimport { useState } from \"react\";\nimport { useLocation } from \"react-router-dom\";\nconst { Option } = Select;\n\nconst ColumnsSelect = ({ columns, value, onChange }) => {\n const { pathname } = useLocation();\n\n const [options, setOptions] = useState(columns);\n const handleChange = value => {\n onChange({\n columns: columns.filter(i => value.indexOf(i.dataIndex) > -1),\n pathname,\n });\n };\n const handleSearch = value => {\n const filterOptions = columns.filter(\n i => i.title.includes(value) || i.dataIndex.includes(value),\n );\n setOptions(filterOptions);\n };\n return (\n <>\n 自订列表:\n i.dataIndex)}\n onChange={handleChange}\n onSearch={handleSearch}\n onBlur={() => setOptions(columns)}\n style={{ minWidth: 240 }}\n >\n {options.map(i => (\n \n ))}\n \n \n );\n};\n\nexport default ColumnsSelect;\n","import React, { useState, useEffect } from \"react\";\nimport { Table, Button, Form, Pagination, Space } from \"antd\";\nimport InputFactory from \"./InputFactory\";\nimport { useColumnsSelect } from \"@/utils/hook\";\nimport ColumnsSelect from \"@/components/ColumnsSelect\";\nconst valuePropName = type =>\n type === \"checkbox\" || type === \"switch\" ? \"checked\" : \"value\";\n\nconst EditableCell = ({\n editing,\n dataIndex,\n title,\n inputType,\n options,\n record,\n index,\n children,\n loading,\n render,\n editable,\n ...restProps\n}) => {\n return (\n \n {editing ? (\n \n \n \n ) : (\n children\n )}\n \n );\n};\n\n/**\n * fields\n * @param {Array} columns\n * @param {String} columns.title\n * @param {String} columns.dataIndex\n * @param {Boolean} columns.editable\n * @param {Node} columns.render\n * @param {String} columns.inputType - [string, select, switch]\n * @param {Object} columns.options - if inputType === 'select', using options\n */\nconst EditableTable = ({\n onRowEditSubmit,\n meta,\n onChangePage,\n onShowSizeChange,\n allColumns,\n defaultColumns,\n ...props\n}) => {\n const [form] = Form.useForm();\n const [currentEditRow, setCurrentEditRow] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const isEditing = record => record.id === currentEditRow.id;\n\n const handleEditClick = record => {\n form.setFieldsValue(record);\n setCurrentEditRow(record);\n };\n const handleSubmit = async () => {\n setLoading(true);\n const params = {\n ...currentEditRow,\n ...form.getFieldsValue(),\n };\n await onRowEditSubmit(params);\n setCurrentEditRow(\"\");\n setLoading(false);\n };\n const handleCancel = () => {\n form.resetFields();\n setCurrentEditRow(\"record\");\n };\n const { selectedColumns, handleSelectedColumnsChange } = useColumnsSelect({\n columns: allColumns,\n defaultColumns,\n });\n const editColumns = [\n ...selectedColumns.filter(i => i.dataIndex !== \"action\"),\n ...[\n {\n title: \"快速编辑\",\n dataIndex: \" edit\",\n render: (val, record) => {\n const editable = isEditing(record);\n return editable ? (\n <>\n \n 储存\n \n \n 取消\n \n \n ) : (\n handleEditClick(record)}\n >\n 编辑\n \n );\n },\n },\n ],\n ...selectedColumns.filter(i => i.dataIndex === \"action\"),\n ];\n const mergedColumns = editColumns.map(col => {\n if (!col.editable) {\n return col;\n }\n return {\n ...col,\n onCell: record => ({\n record,\n inputType: col.inputType,\n options: col.options,\n dataIndex: col.dataIndex,\n title: col.title,\n editing: isEditing(record),\n loading,\n }),\n };\n });\n const components = {\n body: {\n cell: EditableCell,\n },\n };\n\n return (\n \n \n
\n \n \n \n
\n );\n};\n\nconst NormalTable = ({\n rowKey = \"id\",\n onShowSizeChange,\n onChangePage,\n meta,\n allColumns,\n defaultColumns,\n statisticsColumns,\n setSelectedColumns = () => {},\n ...props\n}) => {\n const { selectedColumns, handleSelectedColumnsChange } = useColumnsSelect({\n columns: allColumns,\n defaultColumns,\n });\n useEffect(() => {\n setSelectedColumns(selectedColumns);\n }, [setSelectedColumns, selectedColumns]);\n\n const handleRenderSummery = pageData => {\n let statistics = statisticsColumns.reduce((a, v) => {\n return { ...a, [v.dataIndex]: 0 };\n }, {});\n pageData.forEach(i => {\n statisticsColumns.forEach(j => {\n statistics[j.dataIndex] += i[j.dataIndex];\n });\n });\n return (\n \n {selectedColumns.map((i, index) => {\n return (\n \n {index === 0\n ? \"总计\"\n : statistics[i.dataIndex] !== undefined\n ? statistics[i.dataIndex]\n : \"\"}\n \n );\n })}\n \n );\n };\n return (\n \n \n \n statisticsColumns && handleRenderSummery(pageData, statisticsColumns)\n }\n {...props}\n />\n {meta && (\n \n )}\n \n );\n};\nexport { EditableTable, NormalTable, EditableCell };\n","import { configureStore } from \"@reduxjs/toolkit\";\nimport layoutReducer from \"./slice/layout\";\nimport routerTabReducer from \"./slice/routerTab\";\nimport authReducer from \"./slice/auth\";\nimport orderReducer from \"./slice/order\";\nimport transferReducer from \"./slice/transfer\";\nimport appAcctReducer from \"./slice/appAcct\";\nimport appAcctLogReducer from \"./slice/appAcctLog\";\nimport developerDailyReducer from \"./slice/developerDaily\";\nimport developerSubDailyReducer from \"./slice/developerSubDaily\";\nimport appGatewayDailyReducer from \"./slice/appGatewayDaily\";\nimport appBalanceSummaryDailyReducer from \"./slice/appBalanceSummaryDaily\";\nimport transferAppGatewayDailyReducer from \"./slice/transferAppGatewayDaily\";\n\nexport default configureStore({\n reducer: {\n layout: layoutReducer,\n routerTab: routerTabReducer,\n auth: authReducer,\n order: orderReducer,\n transfer: transferReducer,\n appAcct: appAcctReducer,\n appAcctLog: appAcctLogReducer,\n developerDaily: developerDailyReducer,\n developerSubDaily: developerSubDailyReducer,\n appGatewayDaily: appGatewayDailyReducer,\n appBalanceSummaryDaily: appBalanceSummaryDailyReducer,\n transferAppGatewayDaily: transferAppGatewayDailyReducer,\n },\n});\n","import React from \"react\";\nimport { Provider } from \"react-redux\";\nimport { ConfigProvider } from \"antd\";\nimport zh_CN from \"antd/lib/locale/zh_CN\";\nimport MainRoute from \"@/views/MainRoute\";\nimport store from \"@/store\";\nimport \"@/less/main.less\";\nimport { interceptor } from \"@/utils/request\";\ninterceptor(store);\nfunction App() {\n return (\n \n \n \n \n \n );\n}\n\nexport default App;\n","const reportWebVitals = onPerfEntry => {\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\";\nimport App from \"./App\";\nimport reportWebVitals from \"./reportWebVitals\";\n\nReactDOM.render(, document.getElementById(\"root\"));\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();\n","import moment from \"moment\";\nimport { CurrencyFormat, Perms } from \"@/utils/enum\";\nimport Area from \"@/utils/enum/area\";\n\nexport const dateFormat = (date, formatStr = \"YYYY-MM-DD HH:mm:ss\") => {\n return date && moment(date)._isValid && typeof date === \"string\"\n ? moment(date).format(formatStr)\n : \"\";\n};\nexport const priceFormat = ({ val, currency, showUnit = true }) => {\n try {\n const { unit, rate, tofix } = CurrencyFormat.find(i => i.key === currency);\n const tofixVal = (val / rate).toLocaleString(\"en-US\", {\n maximumFractionDigits: tofix,\n });\n return showUnit ? `${unit} ${tofixVal}` : tofixVal;\n } catch (e) {\n return \"\";\n }\n};\n\nexport const rangeDateFormat = val => {\n if (!val) return;\n return `${val[0]._d.toISOString()}~${val[1]._d.toISOString()}`;\n};\n\nexport const rangeLimitDays = (limitDays = 0, dateStr = \"\") => {\n const dateArr = dateStr.split(\"~\");\n let dt1 = new Date(dateArr[0]).getTime();\n let dt2 = new Date(dateArr[1]).getTime();\n const days = (dt2 - dt1) / (1000 * 60 * 60 * 24);\n return days <= limitDays;\n};\n\nconst fieldVerifyHasVal = val => val !== undefined && val !== \"\";\n\nexport const objFormateToSearchFields = (obj = {}) => {\n let data = {};\n if (!obj) return data;\n Object.keys(obj).forEach(\n k => (data[k] = { type: \"hidden\", initialValue: obj[k] }),\n );\n return data;\n};\n\n/**\n * filter 所有 fields 的 initialValue\n * @param {*} fields\n * @returns {}\n */\nexport const searchFieldsFilterInitialValues = fields => {\n if (!Object.keys(fields).length) return {};\n let data = {};\n Object.keys(fields).forEach(f => {\n fields[f].initialValue && (data[f] = fields[f].initialValue);\n });\n return data;\n};\n\n/**\n * format 所有 fields for server\n * @param {*} param0\n * @returns {}\n */\nexport const searchFieldsFormat = ({ fields, formModel }) => {\n let params = {};\n Object.keys(fields).forEach(i => {\n if (fields[i].type === \"rangeDate\") {\n fieldVerifyHasVal(formModel[i]) &&\n (params[i] = rangeDateFormat(formModel[i]));\n } else if (fields[i].type === \"select\" && i === \"funding_type\") {\n fieldVerifyHasVal(formModel[i]) &&\n (params = { ...params, ...JSON.parse(formModel[i]) });\n } else {\n fieldVerifyHasVal(formModel[i]) && (params[i] = formModel[i]);\n }\n });\n return params;\n};\n\n/**\n * 處理 searchFields for server\n * @param {*} 頁面層定義的 searchFields\n * @returns {}\n */\nexport const searchFieldsInitialValuesFormat = (searchFields = {}) => {\n const formModel = searchFieldsFilterInitialValues(searchFields);\n return searchFieldsFormat({ fields: searchFields, formModel });\n};\n\nexport const metaToPagin = meta => {\n if (!meta) return {};\n return {\n pageSize: meta.per_page,\n current: meta.page,\n total: meta.total,\n pages: meta.pages,\n };\n};\n\nexport const treeToPermsFormat = selectedPerms => {\n let formModel = {};\n Perms.forEach(i => {\n i.children.forEach(j => {\n formModel[j.key] = selectedPerms.indexOf(j.key) >= 0;\n });\n });\n return formModel;\n};\nexport const getDefaultCheckKeys = perms => {\n if (perms === null) return [];\n try {\n let defaultCheckedKeys = [];\n Object.keys(perms).forEach(i => {\n perms[i] && defaultCheckedKeys.push(i);\n });\n return defaultCheckedKeys;\n } catch (e) {\n console.log(e);\n return [];\n }\n};\n\nexport const getRouterDisplayName = (path, router = []) =>\n router.find(i => i.path === path)?.displayName ||\n router.find(i => i.name === path.split(\"/\")[1])?.displayName;\n\nexport const getRouter = (path, router = []) =>\n router.find(i => i.path === path) ||\n router.find(i => i.name === path.split(\"/\")[1]);\n\nexport const getRouterParam = path => {\n const pathLength = path.split(\"/\").length;\n return pathLength > 2 ? ` - ${path.split(\"/\")[pathLength - 1]}` : \"\";\n};\n\nexport const permsToArrayFormat = perms => {\n const permsArr = [];\n perms &&\n Object.keys(perms).forEach(i => {\n if (i.split(\".\").length <= 1 || !perms[i]) return;\n let name;\n Perms.forEach(j => {\n j.children.forEach(k => {\n k.key === i && (name = k.title);\n });\n });\n permsArr.push({ key: i, name });\n });\n return permsArr;\n};\n\nexport const getColumns = () => {\n return JSON.parse(localStorage.getItem(\"columns\") || \"{}\")[\n window.location.pathname\n ];\n};\nexport const getCityArr = prov => {\n const cityItem = Object.entries(Area).filter(\n item => item[0].replace(\"省\", \"\") === prov.replace(\"省\", \"\"),\n );\n return prov && cityItem.length > 0 ? Object.keys(cityItem[0][1].items) : [];\n};\n","import { Descriptions } from \"antd\";\n\nconst SumTable = ({\n data = {},\n labels = [],\n columnSize = { xs: 2, sm: 4, md: 8 },\n}) => {\n return (\n \n {labels.map(i => {\n return (\n \n {i.render\n ? i.render(data[i.dataIndex] || 0, data)\n : data[i.dataIndex]}\n \n );\n })}\n \n );\n};\n\nexport default SumTable;\n","import { createSlice } from \"@reduxjs/toolkit\";\n\nexport const slice = createSlice({\n name: \"routerTab\",\n initialState: {\n routerTabs: JSON.parse(sessionStorage.getItem(\"tabs\")) || [],\n },\n reducers: {\n setRouterTabs: (state, action) => {\n const hasRouter = state.routerTabs.indexOf(action.payload) !== -1;\n if (hasRouter) return;\n state.routerTabs = [...state.routerTabs, action.payload];\n sessionStorage.setItem(\"tabs\", JSON.stringify(state.routerTabs));\n },\n removeRouterTab: (state, action) => {\n const nowTabs = state.routerTabs.filter(i => i !== action.payload);\n state.routerTabs = [...nowTabs];\n sessionStorage.setItem(\"tabs\", JSON.stringify(nowTabs));\n },\n },\n});\nexport const { setRouterTabs, removeRouterTab } = slice.actions;\nexport const selectRouterTab = state => state.routerTab;\nexport default slice.reducer;\n","import { Modal, Button } from \"antd\";\nimport hljs from \"highlight.js\";\nimport \"highlight.js/styles/base16/ros-pine-moon.css\";\nimport Spin from \"@/components/Spin\";\nconst JsonModal = ({ data, visible, onCancel, loading, ...rest }) => {\n return (\n \n 关闭\n ,\n ]}\n destroyOnClose={true}\n {...rest}\n >\n \n \n \n \n );\n};\nexport default JsonModal;\n"],"sourceRoot":""}