{"version":3,"sources":["api/account.js","api/dictionary.js","features/auth/authSlice.js","locales/zh-CN.js","locales/zh-CN/error.js","locales/zh-CN/menu.js","locales/zh-CN/pages.js","components/LayoutDefault.js","components/HttpError.js","components/RedirectDefault.js","app/routes.js","app/router.js","App.js","app/store.js","serviceWorker.js","index.js","locales/index.js","api/_http.js","utils/utils.js","utils/cookie.js","api/_auth.js","utils/md5.js","components/HttpError.module.less"],"names":["getLoginWithMenus","http","get","getTodo","query","params","getSelfTodo","changePassword","data","post","sendResetPasswordEmail","resetPassword","getByKey","getList","getParentList","create","update","del","delete","AUTH_STATUS","NOTLOGGEDIN","LOGGINGIN","SUCCEEDED","FAILED","initialState","status","token","user","menus","permissions","roles","error","errorcode","fetchToken","createAsyncThunk","async","userArgs","_ref","rejectWithValue","code","response","authorizeCode","redirect_uri","refresh_token","refreshToken","message","fetchUser","signOut","Promise","resolve","removeToken","authSlice","createSlice","name","extraReducers","pending","state","action","fulfilled","rejected","payload","selectStatus","auth","selectUser","selectUserId","id","selectName","selectPermission","selectMenus","selectIsEmployee","supplierCode","zhCN","material_no","material_desc","supplier","supplier_code","supplier_name","all","createdOn","itemsselected","remark","pur","LayoutDefault","children","menu","hideBodyWrapper","isEmployee","useSelector","_jsxs","className","_jsx","FormattedMessage","Navbar","currentMenu","Toolbar","SupplierToolbar","concat","process","_ref3","intl","useIntl","items","getNavItems","map","x","length","key","menuCode","label","formatMessage","defaultMessage","menuName","Link","to","url","Menu","selectedKeys","mode","dispatch","useDispatch","React","Fragment","Divider","type","UserOutlined","onClick","handleLogout","window","location","href","ENV_CFG","signout","ExportOutlined","history","useHistory","_ref4","push","Item","Dropdown","overlay","DownOutlined","style","marginLeft","fontSize","ErrorContent","home","layout","perms","styles","wrapper","title","desc","includes","link","Button","ghost","icon","HomeOutlined","HttpError","props","authstatus","RedirectDefault","getDefaultFromMenus","Redirect","routes","path","component","lazy","_ref2","anonymous","standardize","item","undefined","exact","AppRoute","route","useLocation","debugEnable","console","log","from","search","pathname","subroutes","Route","Fallback","Spin","tip","size","AppSwitch","Switch","render","then","res","_res$find","find","itemKey","itemValue","replace","AppRouter","Router","Suspense","fallback","locale","messages","antdLocale","antdZHCN","App","useEffect","document","dayjs","IntlProvider","ConfigProvider","componentSize","configureStore","reducer","authReducer","middleware","getDefaultMiddleware","logger","Boolean","hostname","match","ReactDOM","StrictMode","Provider","store","getElementById","navigator","serviceWorker","ready","registration","unregister","LOCALE_KEY","instance","axios","baseURL","api_root","timeout","headers","_window$localStorage","localStorage","getItem","docCookies","language","browserLanguage","toLowerCase","getLocale","interceptors","request","use","config","method","paramsSerializer","qs","stringify","arrayFormat","reject","isretry","JSON","parse","getRefreshToken","access_token","token_type","catch","e","setAuthorization","defaults","common","getAuthorization","downloadAuthFile","previewName","searchParams","URLSearchParams","Object","keys","forEach","append","Array","isArray","toString","form","createElement","target","encodeURIComponent","appendChild","getInput","body","submit","removeChild","value","input","sKey","decodeURIComponent","cookie","RegExp","setItem","sValue","vEnd","sPath","sDomain","bSecure","test","sExpires","constructor","Number","Infinity","String","Date","toUTCString","removeItem","this","hasItem","aKeys","split","nIdx","client_id","cookieKey","getToken","grant_type","timestamp","parseInt","getTime","client_secret","string","md5_RotateLeft","lValue","iShiftBits","md5_AddUnsigned","lX","lY","lX4","lY4","lX8","lY8","lResult","md5_FF","a","b","c","d","s","ac","y","z","md5_F","md5_GG","md5_G","md5_HH","md5_H","md5_II","md5_I","md5_WordToHex","lCount","WordToHexValue","WordToHexValue_temp","substr","k","AA","BB","CC","DD","utftext","n","charCodeAt","fromCharCode","md5_Utf8Encode","lWordCount","lMessageLength","lNumberOfWords_temp1","lNumberOfWords","lWordArray","lBytePosition","lByteCount","md5_ConvertToWordArray","md5","slice","_res$data","validatePassword","password","formdata","pwdts","Math","round","encryptor","JSEncrypt","setPublicKey","encrypt","valpwd","module","exports"],"mappings":"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","file":"static/js/main.cd89b434.chunk.js","sourcesContent":["/* eslint-disable */\r\n// This code was generated by genapi\r\n// Changes to this file will be lost if the code is regenerated\r\nimport http from './_http';\r\n\r\nexport function getLoginWithMenus() {\r\n return http.get('/api/Account/GetLoginWithMenus');\r\n}\r\n\r\nexport function getTodo(query) {\r\n return http.get('/api/Account/GetTodo', { params: query });\r\n}\r\n\r\nexport function getSelfTodo() {\r\n return http.get('/api/Account/GetSelfTodo');\r\n}\r\n\r\nexport function changePassword(data) {\r\n return http.post('/api/Account/ChangePassword', data);\r\n}\r\n\r\nexport function sendResetPasswordEmail(query) {\r\n return http.post('/api/Account/SendResetPasswordEmail', null, { params: query });\r\n}\r\n\r\nexport function resetPassword(data) {\r\n return http.post('/api/Account/ResetPassword', data);\r\n}\r\n\r\n","/* eslint-disable */\r\n// This code was generated by genapi\r\n// Changes to this file will be lost if the code is regenerated\r\nimport http from './_http';\r\n\r\nexport function getByKey(query) {\r\n return http.get('/api/Dictionary/GetByKey', { params: query });\r\n}\r\n\r\nexport function getList(query) {\r\n return http.get('/api/Dictionary/GetList', { params: query });\r\n}\r\n\r\nexport function getParentList() {\r\n return http.get('/api/Dictionary/GetParentList');\r\n}\r\n\r\nexport function create(data) {\r\n return http.post('/api/Dictionary/Create', data);\r\n}\r\n\r\nexport function update(data) {\r\n return http.post('/api/Dictionary/Update', data);\r\n}\r\n\r\nexport function del(query) {\r\n return http.delete('/api/Dictionary/Delete', { params: query });\r\n}\r\n\r\n","import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\r\nimport { getLoginWithMenus } from '@/api/account';\r\nimport { authorizeCode, refreshToken, removeToken } from '@/api/_auth';\r\n\r\n// constants\r\nexport const AUTH_STATUS = {\r\n NOTLOGGEDIN: 'notloggedin',\r\n LOGGINGIN: 'loggingin',\r\n SUCCEEDED: 'succeeded',\r\n FAILED: 'failed',\r\n};\r\n\r\nconst initialState = {\r\n status: AUTH_STATUS.NOTLOGGEDIN,\r\n token: false,\r\n user: {},\r\n menus: [],\r\n permissions: [],\r\n roles: [],\r\n error: '',\r\n errorcode: 0,\r\n};\r\n\r\n// async thunks\r\nexport const fetchToken = createAsyncThunk(\r\n 'auth/fetchToken',\r\n async (userArgs, { rejectWithValue }) => {\r\n try {\r\n let error = true;\r\n if (userArgs) {\r\n if (userArgs.code) {\r\n const response = await authorizeCode(\r\n userArgs.code,\r\n userArgs.redirect_uri\r\n );\r\n error = false;\r\n return response;\r\n } else if (userArgs.refresh_token) {\r\n const response = await refreshToken(userArgs.refresh_token);\r\n error = false;\r\n return response;\r\n }\r\n if (error) {\r\n return rejectWithValue({\r\n status: 400,\r\n message: 'userArgs is required',\r\n });\r\n }\r\n }\r\n } catch {\r\n return rejectWithValue();\r\n }\r\n }\r\n);\r\nexport const fetchUser = createAsyncThunk('auth/fetchUser', getLoginWithMenus);\r\n\r\nexport const signOut = createAsyncThunk('auth/signOut', async () => {\r\n return new Promise(resolve => {\r\n removeToken();\r\n resolve();\r\n });\r\n});\r\n\r\n// slice\r\nexport const authSlice = createSlice({\r\n name: 'auth',\r\n initialState,\r\n extraReducers: {\r\n [fetchToken.pending]: (state, action) => {\r\n state.status = AUTH_STATUS.LOGGINGIN;\r\n },\r\n [fetchToken.fulfilled]: (state, action) => {\r\n state.token = true;\r\n },\r\n [fetchToken.rejected]: (state, action) => {\r\n state.status = AUTH_STATUS.FAILED;\r\n },\r\n [fetchUser.fulfilled]: (state, action) => {\r\n const { menus, permissions, roles, ...user } = action.payload;\r\n state.user = user;\r\n state.menus = menus;\r\n state.permissions = permissions;\r\n state.roles = roles;\r\n state.status = AUTH_STATUS.SUCCEEDED;\r\n },\r\n [fetchUser.rejected]: (state, action) => {\r\n state.status = AUTH_STATUS.FAILED;\r\n },\r\n [signOut.fulfilled]: (state, action) => {\r\n state.status = AUTH_STATUS.NOTLOGGEDIN;\r\n state.token = false;\r\n state.user = {};\r\n state.menus = [];\r\n state.permissions = [];\r\n state.roles = [];\r\n },\r\n },\r\n});\r\n\r\n// reducer\r\nexport default authSlice.reducer;\r\n\r\n// selector\r\nexport const selectStatus = state => state.auth.status;\r\nexport const selectUser = state => state.auth.user || '';\r\nexport const selectUserId = state => state.auth.user.id;\r\nexport const selectName = state => state.auth.user.name || '';\r\nexport const selectPermission = state => state.auth.permissions;\r\nexport const selectMenus = state => state.auth.menus;\r\nexport const selectIsEmployee = state =>\r\n state.auth.user.id && !state.auth.user.supplierCode;\r\nexport const selectRoles = state => state.auth.roles;\r\n","import error from './zh-CN/error';\r\nimport menu from './zh-CN/menu';\r\nimport pages from './zh-CN/pages';\r\n\r\nconst zhCN = {\r\n material_no: '物料号',\r\n material_desc: '物料描述',\r\n supplier: '供应商',\r\n supplier_code: '供应商代码',\r\n supplier_name: '供应商名称',\r\n all: '所有',\r\n createdOn: '创建时间',\r\n itemsselected: '已选择{count}项',\r\n remark: '备注',\r\n pur: '采购员',\r\n 'common.loading': '加载中...',\r\n 'common.search': '查询',\r\n 'common.export': '导出',\r\n 'common.upload': '上传',\r\n 'common.download': '下载',\r\n 'common.clear': '清除',\r\n 'common.back': '返回',\r\n 'common.add': '添加',\r\n 'common.edit': '编辑',\r\n 'common.delete': '删除',\r\n 'common.save': '保存',\r\n 'common.cancel': '取消',\r\n 'common.fill': '填写',\r\n 'common.submit': '提交',\r\n 'common.confirm': '确认',\r\n 'common.reset': '重置',\r\n 'common.close': '关闭',\r\n 'common.actcfm': '确认要{action}{value}吗?',\r\n 'common.delcfm': '确认要删除{value}吗?',\r\n 'common.thisitem': '这条记录',\r\n 'common.selecteditems': '选中项',\r\n 'common.selectedrequired': '请至少选择一项',\r\n 'common.deleting': '正在删除...',\r\n 'common.submitting': '正在提交...',\r\n 'common.saving': '正在保存...',\r\n 'common.lock': '锁定',\r\n 'common.unlock': '解锁',\r\n 'common.view': '查看',\r\n 'common.approval': '审批',\r\n 'common.approve': '通过',\r\n 'common.reject': '退回',\r\n 'common.update': '修改',\r\n 'common.yes': '是',\r\n 'common.no': '否',\r\n 'common.unknown': '未知',\r\n 'common.nocontent': '无内容',\r\n 'common.loadmore': '加载更多',\r\n 'common.success': '成功',\r\n 'common.example': '例如:{value}',\r\n 'common.status': '状态',\r\n 'common.allstatus': '所有状态',\r\n 'common.normal': '正常',\r\n 'common.locked': '已锁定',\r\n 'common.deleted': '已删除',\r\n 'common.expand': '展开',\r\n 'common.collapse': '收起',\r\n 'layout.appname': '供应商管理系统',\r\n 'layout.lang': '多语言',\r\n 'layout.signout': '退出',\r\n 'log.add': '由{user}新增',\r\n 'log.edit': '由{user}修改',\r\n 'log.update': '由{user}修改',\r\n 'log.enable': '由{user}启用',\r\n 'log.disable': '由{user}禁用',\r\n 'log.submit': '由{user}提交',\r\n 'log.approve': '由{user}通过',\r\n 'log.reject': '由{user}退回',\r\n 'log.cancel': '由{user}取消',\r\n 'log.confirm': '由{user}确认',\r\n 'placeholder.select': '请选择...',\r\n 'placeholder.autocomplete': '请填写或选择...',\r\n ...error,\r\n ...menu,\r\n ...pages,\r\n};\r\nexport default zhCN;\r\n","const messages = {\r\n 'e.get': '获取{name}失败',\r\n 'e.getlist': '获取{name}列表失败',\r\n 'e.valfield': '验证{label}失败',\r\n 'e.exists': '{value}已存在',\r\n 'e.notexists': '{value}不存在',\r\n};\r\nexport default messages;\r\n","const messages = {\r\n 'menu.setting': '设置',\r\n 'menu.menu': '菜单',\r\n 'menu.role': '角色',\r\n 'menu.user': '用户',\r\n 'menu.dictionary': '系统字典',\r\n 'menu.emailtemplate': '邮件模板',\r\n 'menu.home': '主页',\r\n 'menu.techinfo': '技术信息查询',\r\n 'menu.drawing': '图纸查询',\r\n 'menu.bom': 'BOM查询',\r\n 'menu.masterdata': '主数据',\r\n 'menu.abbuser': 'ABB用户',\r\n 'menu.supplieruser': '供应商用户',\r\n 'menu.supplierbasic': '供应商基础信息',\r\n 'menu.suppliermaterial': '供应商物料',\r\n 'menu.ordermng': '订单管理',\r\n 'menu.inventorysurvey': '库存调查',\r\n 'menu.quality': '质量管理',\r\n 'menu.ncr': 'NCR处理',\r\n 'menu.polist': '订单执行',\r\n 'menu.poncr': 'NCR退货',\r\n 'menu.pot6': '发货时间申请',\r\n 'menu.podelivery': '送货单',\r\n 'menu.periodreport': '周期检验报告',\r\n 'menu.leavefactoryreport': '整机出厂测试报告',\r\n 'menu.materialgroup': '物料组',\r\n \"menu.supplierresource\":'供应商资源信息',\r\n \"menu.mold\":'模具管理',\r\n 'menu.moldunfilled': '待完善信息模具采购列表',\r\n 'menu.moldorder': '模具订单',\r\n 'menu.help': '帮助',\r\n};\r\nexport default messages;\r\n","const messages = {\r\n 'p.login.error': '登录失败,请尝试重新登录',\r\n 'p.login.subtitle': '上海ABB电机有限公司',\r\n 'p.login.email': '邮箱',\r\n 'p.login.password': '密码',\r\n 'p.login.forgetpwd': '忘记密码?',\r\n 'p.login.signin': '登录',\r\n 'p.login.or': '或',\r\n 'p.login.abbsignin': 'ABB邮箱登录',\r\n 'p.login.error1001': '请填写邮箱',\r\n 'p.login.error1002': '请填写密码',\r\n 'p.login.error1003': '邮箱或密码错误',\r\n 'p.login.error1004': '账户已被锁定',\r\n 'p.login.error1005': '供应商已被锁定',\r\n 'p.errorpage.403': '访问受限',\r\n 'p.errorpage.403.app': '您没有访问当前系统的权限,如需访问请联系管理员',\r\n 'p.errorpage.403.desc': '您没有访问当前页面的权限,如需访问请联系管理员',\r\n 'p.errorpage.404': '找不到页面',\r\n 'p.errorpage.404.desc': '您访问的页面不存在,请检查地址是否正确',\r\n 'p.errorpage.home': '返回首页',\r\n 'p.role.name': '角色',\r\n 'p.role.plural': '角色',\r\n 'p.user.name': '用户',\r\n 'p.user.plural': '用户',\r\n 'p.user.f.email': '邮箱',\r\n 'p.user.f.name': '姓名',\r\n 'p.user.f.roles': '角色',\r\n 'p.user.f.supplier': '供应商',\r\n 'p.user.f.reviewedtime': '复审时间',\r\n 'p.user.s.kw': '姓名,邮箱...',\r\n 'p.user.s.roleph': '所有角色',\r\n 'p.user.selectedtips': '已选择{value}项',\r\n 'p.user.review': '复审',\r\n 'p.dict.key': '键',\r\n 'p.dict.value': '值',\r\n 'p.dict.seq': '顺序',\r\n 'p.dict.parent': '分类',\r\n 'p.dict.allparent': '所有分类',\r\n 'p.dict.noparent': '字典分类',\r\n 'p.emailtpl.key': '编码',\r\n 'p.emailtpl.content': '模板',\r\n 'p.emailtpl.remark': '备注',\r\n 'p.supplier.s.kw': '代码或名称...',\r\n 'p.supplier.code': '供应商代码',\r\n 'p.supplier.name': '供应商名称',\r\n 'p.supplier.synctime': '同步时间',\r\n 'p.supplier.deliveryOffsetDays': '发货提前天数',\r\n 'p.supplier.configuration': '配置',\r\n 'p.supplier.email': '邮箱',\r\n 'p.supplier.userName': '姓名',\r\n 'p.supplier.import': '批量导入配置',\r\n 'p.supplier.export': '导出配置',\r\n 'p.supplier.downloadtpl': '下载配置模板',\r\n 'p.supplier.scm': 'SCM',\r\n 'p.supplier.sqe': 'SQE',\r\n 'p.supplier.pur': 'PUR',\r\n 'p.supplier.poT4Date': '交期开始同步日期',\r\n 'p.material.source': '来源',\r\n 'p.material.sourcedeleted': '来源状态',\r\n 'p.material.allsource': '所有来源',\r\n 'p.material.add': '添加供应商物料',\r\n 'p.material.import': '批量导入',\r\n 'p.material.downloadtpl': '下载模板',\r\n 'p.bom.version': '版本号',\r\n 'p.bom.refmaterial': '参考物料号',\r\n 'p.bom.refversion': '参考物料版本',\r\n 'p.bom.subcount': 'BOM子物料数量',\r\n 'p.bom.unit': '单位',\r\n 'p.bom.downloadpdf': '下载pdf',\r\n 'p.inventory.newsurvey': '发起库存调查',\r\n 'p.inventory.submitstatus': '提交状态',\r\n 'p.inventory.submitted': '已提交',\r\n 'p.inventory.unsubmitted': '未提交',\r\n 'p.inventory.createdby': '发起人',\r\n 'p.inventory.batchno': '调查编号',\r\n 'p.inventory.reason': '调查原因',\r\n 'p.inventory.WIP': '在制品数量',\r\n 'p.inventory.stock': '库存数量',\r\n 'p.inventory.createdtime': '发起时间',\r\n 'p.inventory.submittedtime': '提交时间',\r\n 'p.inventory.submittedby': '提交人',\r\n 'p.inventory.newsurveymattip': '换行输入多个物料号',\r\n 'p.inventory.newsurveysucc': '已发起库存调查',\r\n 'p.inventory.newsurveynouser': '部分供应商无SRM账户,请注意查收邮件',\r\n 'p.inventory.newsurveynosupplier': '以下物料无相关供应商,请检查',\r\n 'p.inventory.wipstockrequired': '请填写在制品数量和库存数量',\r\n 'p.inventory.wiprequired': '请填写在制品数量',\r\n 'p.inventory.stockrequired': '请填写库存数量',\r\n 'p.ncr.ncrno': 'NCR号',\r\n 'p.ncr.complaintqty': '异常数量',\r\n 'p.ncr.desc': '异常描述',\r\n 'p.ncr.location': '发现位置',\r\n 'p.ncr.task1': '处理方案',\r\n 'p.ncr.task1status': '处理方案状态',\r\n 'p.ncr.task2': '改善要求',\r\n 'p.ncr.task2status': '改善要求状态',\r\n 'p.ncr.ponumber': '订单号',\r\n 'p.ncr.detailtitle': 'NCR信息',\r\n 'p.ncr.polist': '关联PO',\r\n 'p.ncr.attachments': '附件',\r\n 'p.ncr.createdBy': '开具人',\r\n 'p.ncr.createdOn': 'NCR创建时间',\r\n 'p.ncr.task1_100': '进行中',\r\n 'p.ncr.task1_200': '已完成',\r\n 'p.ncr.task2_100': '待供应商上传报告',\r\n 'p.ncr.task2_101': '已退回',\r\n 'p.ncr.task2_150': '待SQE审批报告',\r\n 'p.ncr.task2_200': '已完成',\r\n 'p.ncr.log.submit': '由{user}上传报告',\r\n 'p.ncr.coding': '分类',\r\n 'p.ncr.task2Deadline': '报告上传期限',\r\n 'p.po.ponumber': 'PO订单号',\r\n 'p.po.poitem': '行号',\r\n 'p.po.quantity': '数量',\r\n 'p.po.t0': '订单需求时间',\r\n 'p.po.t4': '确认交付时间',\r\n 'p.po.t6': '允许发货时间',\r\n 'p.po.deliveryDate': '交付时间',\r\n 'p.po.status100': '待供应商确认交付时间',\r\n 'p.po.status101': '待ABB确认交付时间',\r\n 'p.po.status102': '待供应商确认交付时间',\r\n 'p.po.status150': '待供应商确认修改信息',\r\n 'p.po.status200': '待交付',\r\n 'p.po.status300': '已部分发货',\r\n 'p.po.status350': '已全部发货',\r\n 'p.po.status400': '已完成交收',\r\n 'p.po.status500': '已删除',\r\n 'p.po.deliver': '发货',\r\n 'p.po.deliveredQuantity': '已发货数量',\r\n 'p.po.receivedQuantity': '已收货数量',\r\n 'p.po.deliveryQuantity': '发货数量',\r\n 'p.po.receivingQuantity': '收货数量',\r\n 'p.po.packageNo': '箱号',\r\n 'p.po.remark': '备注',\r\n 'p.po.report': '报告',\r\n 'p.po.actionType': '确认类型',\r\n 'p.po.actionRemark': '确认交付时间',\r\n 'p.po.actionDate': '操作时间',\r\n 'p.po.actionUser': '操作人',\r\n 'p.po.batchUploadReport': '批量上传报告',\r\n 'p.po.tplDelivery': '模板批量发货',\r\n 'p.po.deliveryTpl': '批量发货模板',\r\n 'p.po.tplDeliveryUpload': '批量发货上传',\r\n 'p.po.reportupload': '报告',\r\n 'p.po.detail': '详情',\r\n 'p.po.detailtitle': 'PO信息',\r\n 'p.po.detailSerial': 'PO关联序列号',\r\n 'p.po.reportStatus': '报告状态',\r\n 'p.po.poMovementQuantity': '已开票数量',\r\n 'p.po.soNumber': 'SO订单号',\r\n 'p.po.soItem': 'SO行号',\r\n 'p.po.soProductionMemo': 'SO备注',\r\n 'p.po.materialType': '物料组编码',\r\n 'p.po.delivery': 'PO关联送货单',\r\n 'p.po.reqTrackingNumber': '优先级',\r\n 'p.po.delaycause': '延迟原因',\r\n 'p.po.poRemark': 'PO备注',\r\n 'p.po.log.delivery': '由{user}发货',\r\n 'p.po.log.uploadreport': '由{user}上传报告',\r\n 'p.po.log.T1': '由{user}提交T1',\r\n 'p.po.log.T2': '由{user}提交T2',\r\n 'p.po.log.T3': '由{user}提交T3',\r\n 'p.po.log.T4': '由{user}确认T4',\r\n 'p.po.log.T5': '由{user}确认T5',\r\n 'p.po.log.T6': '由{user}确认T6',\r\n 'p.po.log.ConfirmUpdate': '由{user}确认订单修改信息',\r\n 'p.poncr.status100': '确认交期中',\r\n 'p.poncr.status200': '待交付',\r\n 'p.poncr.status300': '已部分发货',\r\n 'p.poncr.status350': '已全部发货',\r\n 'p.poncr.status400': '已完成交收',\r\n 'p.poncr.ncrtype': 'NCR分类',\r\n 'p.poncr.ncrtype0': '不退库',\r\n 'p.poncr.ncrtype1': '退库',\r\n 'p.poncr.receive': '收货',\r\n 'p.poncr.deliveryDate': 'NCR交期',\r\n 'p.po.actualDeliveryDate': '实际发货时间',\r\n 'p.po.deliveryDateT5': '预计交货时间',\r\n 'p.po.t5': '确认预计交货时间',\r\n 'p.po.fileName': '文件名',\r\n 'p.po.message': '错误原因',\r\n 'p.po.machine': '整机报告',\r\n 'p.period.reportType': '类型',\r\n 'p.period.uploadFrequency': '上传频率',\r\n 'p.period.remark': '备注',\r\n 'p.period.createdOn': '上传时间',\r\n 'p.period.upload': '上传报告',\r\n 'p.period.download': '下载',\r\n 'p.period.report': '报告',\r\n 'p.podelivery.deliveryNo': '送货单号',\r\n 'p.podelivery.storageLocation': '库位',\r\n 'p.podelivery.isMachine': '是否整机',\r\n 'p.podelivery.print': '打印',\r\n 'p.podelivery.print2': '补打发货单',\r\n 'p.podelivery.modalTitle': '送货单',\r\n 'p.podelivery.isScrapped': '是否废弃',\r\n 'p.podelivery.printPackage': '打印箱单',\r\n 'p.pot6.sn': '申请单号',\r\n 'p.pot6.date': '申请发货时间',\r\n 'p.pot6.remark': '备注',\r\n 'p.pot6.applicant': '申请人',\r\n 'p.pot6.approver': '审批人',\r\n 'p.pot6.status-2': '已取消',\r\n 'p.pot6.status-1': '已退回',\r\n 'p.pot6.status0': '待审批',\r\n 'p.pot6.status1': '已通过',\r\n 'p.leavefactoryreport.SONumber': '销售订单号',\r\n 'p.leavefactoryreport.SOItem': '销售订单行项目',\r\n 'p.leavefactoryreport.CalculationData': '设计单号',\r\n 'p.leavefactoryreport.Type': '电机型号',\r\n 'p.leavefactoryreport.SerialNo': '序列号',\r\n 'p.leavefactoryreport.Connection': '电机接法',\r\n 'p.leavefactoryreport.R1': '直流电阻1(Ω)',\r\n 'p.leavefactoryreport.R2': '直流电阻2(Ω)',\r\n 'p.leavefactoryreport.R3': '直流电阻3(Ω)',\r\n 'p.leavefactoryreport.RAverage': '电阻平均(Ω)',\r\n 'p.leavefactoryreport.DZPHD': '电阻不平度(%)',\r\n 'p.leavefactoryreport.A_BC_JYDZ': '相间绝缘A(MΩ)',\r\n 'p.leavefactoryreport.B_C_JYDZ': '相间绝缘B(MΩ)',\r\n 'p.leavefactoryreport.C_JYDZ': '相间绝缘C(MΩ)',\r\n 'p.leavefactoryreport.D_D_JYDZ': '对地绝缘(MΩ)',\r\n 'p.leavefactoryreport.NYDY': '耐压(V)',\r\n 'p.leavefactoryreport.LockVoltage': '堵转(V)',\r\n 'p.leavefactoryreport.Ia_L': '堵转电流A(A)',\r\n 'p.leavefactoryreport.Ib_L': '堵转电流B(A)',\r\n 'p.leavefactoryreport.Ic_L': '堵转电流C(A)',\r\n 'p.leavefactoryreport.IAverage_L': '堵电平均(A)',\r\n 'p.leavefactoryreport.IP_L': '堵电不平度(%)',\r\n 'p.leavefactoryreport.P_L': '堵转(W)',\r\n 'p.leavefactoryreport.NoLoadVoltage': '空载(V)',\r\n 'p.leavefactoryreport.Ia_N': '空载电流A(A)',\r\n 'p.leavefactoryreport.Ib_N': '空载电流B(A)',\r\n 'p.leavefactoryreport.Ic_N': '空载电流C(A)',\r\n 'p.leavefactoryreport.IAverage_N': '空电平均(A)',\r\n 'p.leavefactoryreport.IP_N': '空电不平度(%)',\r\n 'p.leavefactoryreport.P_N': '空载功率(W)',\r\n 'p.leavefactoryreport.Noise': '噪声(DB)',\r\n 'p.leavefactoryreport.Vibration': '振动(mm/s)',\r\n 'p.leavefactoryreport.Result': '结果判定',\r\n 'p.leavefactoryreport.TestDate': '试验日期',\r\n 'p.leavefactoryreport.TestControler': '测试者姓名',\r\n 'p.materialgroup.groupcode': '物料组编码',\r\n 'p.materialgroup.groupname': '物料组名称',\r\n 'p.materialgroup.groupdes': '物料组描述',\r\n 'p.materialgroup.ismachine': '是否整机',\r\n 'p.mold.po': '350订单',\r\n 'p.mold.ponumber': '350订单号',\r\n 'p.mold.blankno': '零件号',\r\n 'p.mold.blanknotips': '模具号码或者代表性物料号码',\r\n 'p.mold.blankdesc': '毛坯描述',\r\n 'p.mold.owner': 'SCM',\r\n 'p.mold.category': '大类',\r\n 'p.mold.tech': '模具使用工艺',\r\n 'p.mold.platform': '产品平台',\r\n 'p.mold.baseno': '机座号',\r\n 'p.mold.name': '模具名称',\r\n 'p.mold.ownership': '模具所有权',\r\n 'p.mold.version': '版本号',\r\n 'p.mold.user': '模具使用商',\r\n 'p.mold.proddate': '模具生产日期',\r\n 'p.mold.life': '模具寿命',\r\n 'p.mold.quantity': '模具数量',\r\n 'p.mold.cavity': '一模几穴',\r\n 'p.mold.manufacturer': '模具生产商',\r\n 'p.mold.size': '模具型板/产品尺寸',\r\n 'p.mold.stock': '模具已生产数量',\r\n 'p.mold.other': '其他信息',\r\n 'p.mold.amount': '模具成本(不含税)',\r\n 'p.mold.drawing': '图纸',\r\n 'p.mold.status.-1': '已报废',\r\n 'p.mold.status.0': '待ABB完善信息',\r\n 'p.mold.status.1': '待供应商确认',\r\n 'p.mold.status.2': '待审批',\r\n 'p.mold.status.3': '已审批',\r\n 'p.mold.new': '新建行',\r\n 'p.mold.fillorder': '完善信息',\r\n 'p.mold.startflow': '发起流程',\r\n 'p.mold.confirmorder': '确认订单',\r\n 'p.mold.updatemold': '修模',\r\n 'p.mold.scrap': '报废',\r\n 'p.moldunfilled.edittitle': '完善模具信息',\r\n 'p.moldorder.edittitle': '确认模具订单',\r\n 'p.mold.log.fillorder': '由{user}完善信息',\r\n 'p.mold.log.startflow': '由{user}发起流程',\r\n 'p.mold.log.editmold': '由{user}修模',\r\n 'p.mold.log.starteditflow': '由{user}发起修模流程',\r\n 'p.mold.log.scrap': '由{user}报废',\r\n};\r\nexport default messages;\r\n","import React from 'react';\r\nimport { Menu, Divider, Dropdown } from 'antd';\r\nimport { UserOutlined, ExportOutlined, DownOutlined } from '@ant-design/icons';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport {\r\n selectIsEmployee,\r\n selectMenus,\r\n selectName,\r\n signOut,\r\n} from '../features/auth/authSlice';\r\nimport { Link, useHistory } from 'react-router-dom';\r\nimport './LayoutDefault.less';\r\nimport { FormattedMessage, useIntl } from 'react-intl';\r\n//import LanguageSetting from './LanguageSetting';\r\n\r\nfunction LayoutDefault({ children, menu, hideBodyWrapper }) {\r\n const isEmployee = useSelector(selectIsEmployee);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {isEmployee ? : }\r\n
\r\n
\r\n
\r\n
\r\n \r\n {children}\r\n
\r\n
\r\n
\r\n
\r\n © {process.env.REACT_APP_COPYRIGHT}\r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nexport default LayoutDefault;\r\n\r\nexport const LayoutNoBodyWrapper = ({ children, menu }) => (\r\n \r\n {children}\r\n \r\n);\r\n\r\n// child component\r\nfunction Navbar({ currentMenu }) {\r\n const intl = useIntl();\r\n // selector\r\n const menus = useSelector(selectMenus);\r\n function getNavItems(items) {\r\n return items.map(x => {\r\n if (x.children && x.children.length > 0) {\r\n return {\r\n key: x.menuCode,\r\n label: intl.formatMessage({\r\n id: `menu.${x.menuCode}`,\r\n defaultMessage: x.menuName,\r\n }),\r\n children: getNavItems(x.children),\r\n };\r\n } else {\r\n return {\r\n label: (\r\n \r\n \r\n \r\n ),\r\n key: x.menuCode,\r\n };\r\n }\r\n });\r\n }\r\n const items = getNavItems(menus);\r\n return ;\r\n}\r\n\r\nconst Toolbar = () => {\r\n const dispatch = useDispatch();\r\n const name = useSelector(selectName);\r\n const handleLogout = () => {\r\n dispatch(signOut());\r\n window.location.href = window.ENV_CFG.signout;\r\n };\r\n\r\n return (\r\n
\r\n {/*
\r\n \r\n
*/}\r\n {name && name.length > 0 && (\r\n \r\n \r\n
\r\n {name}\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nconst SupplierToolbar = () => {\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n const name = useSelector(selectName);\r\n const handleClick = ({ key }) => {\r\n switch (key) {\r\n case 'changepwd':\r\n history.push('/changepassword');\r\n break;\r\n case 'signout':\r\n dispatch(signOut());\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n const menu = (\r\n \r\n 修改密码\r\n 退出\r\n \r\n );\r\n return (\r\n
\r\n {/*
\r\n \r\n
*/}\r\n {name && name.length > 0 && (\r\n \r\n \r\n \r\n
\r\n {name}\r\n \r\n
\r\n
\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Button } from 'antd';\r\nimport { HomeOutlined } from '@ant-design/icons';\r\nimport { useIntl } from 'react-intl';\r\nimport { Link } from 'react-router-dom';\r\nimport styles from './HttpError.module.less';\r\nimport { useSelector } from 'react-redux';\r\nimport {\r\n AUTH_STATUS,\r\n selectStatus,\r\n selectPermission,\r\n} from '@/features/auth/authSlice';\r\n\r\nconst ErrorContent = ({ code, home, layout }) => {\r\n const intl = useIntl();\r\n const perms = useSelector(selectPermission);\r\n return (\r\n
\r\n
\r\n
\r\n {intl.formatMessage({ id: `p.errorpage.${code}` })}\r\n
\r\n
\r\n {code === 403 && perms.length === 0\r\n ? intl.formatMessage({ id: `p.errorpage.${code}.app` })\r\n : intl.formatMessage({ id: `p.errorpage.${code}.desc` })}\r\n
\r\n
\r\n {perms.includes('home') && (\r\n
\r\n \r\n \r\n \r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nconst HttpError = props => {\r\n const authstatus = useSelector(selectStatus);\r\n if (props.layout && authstatus === AUTH_STATUS.SUCCEEDED) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n};\r\nexport default HttpError;\r\n","import { useSelector } from 'react-redux';\r\nimport {\r\n selectMenus,\r\n selectStatus,\r\n AUTH_STATUS,\r\n} from '../features/auth/authSlice';\r\nimport { Redirect } from 'react-router-dom';\r\nimport HttpError from './HttpError';\r\nimport LayoutDefault from './LayoutDefault';\r\n\r\n/*\r\n如果未登录,跳转至登录页面\r\n如果已登录,跳转至第一个菜单\r\n如果已登录,无菜单,显示403错误\r\n*/\r\nconst RedirectDefault = () => {\r\n const status = useSelector(selectStatus);\r\n const menus = useSelector(selectMenus);\r\n let url;\r\n if (status === AUTH_STATUS.SUCCEEDED) {\r\n if (menus.length > 0) {\r\n url = getDefaultFromMenus(menus);\r\n } else {\r\n return ;\r\n }\r\n } else {\r\n url = '/signin';\r\n }\r\n return ;\r\n};\r\nexport default RedirectDefault;\r\n\r\nfunction getDefaultFromMenus(menus) {\r\n let url;\r\n for (let menu of menus) {\r\n if (menu.url) {\r\n url = menu.url;\r\n break;\r\n } else if (menu.children && menu.children.length > 0) {\r\n url = getDefaultFromMenus(menu.children);\r\n if (url) {\r\n break;\r\n }\r\n }\r\n }\r\n return url;\r\n}\r\n","import { lazy } from 'react';\r\n//import SideMenu from '../components/SideMenu';\r\nimport { LayoutNoBodyWrapper } from '../components/LayoutDefault';\r\n\r\n// auth: 验证权限\r\n// menu: 菜单,如果为空与auth一致\r\n// anonymous: 默认false\r\n// layout: 默认LayoutDefault\r\n// exact: 是否精确匹配\r\n// routes: 子路由\r\nconst routes = [\r\n {\r\n auth: 'home',\r\n path: '/home',\r\n component: lazy(() => import('../features/home/Home')),\r\n layout: LayoutNoBodyWrapper,\r\n },\r\n //#region tech\r\n {\r\n auth: 'drawing',\r\n path: '/techinfo/drawing',\r\n component: lazy(() => import('../features/tech/Drawing')),\r\n },\r\n {\r\n auth: 'bom',\r\n path: '/techinfo/bom',\r\n component: lazy(() => import('../features/tech/BOMList')),\r\n },\r\n //#endregion\r\n {\r\n auth: 'polist',\r\n path: '/po/list',\r\n component: lazy(() => import('../features/po/POList')),\r\n },\r\n {\r\n auth: 'polist',\r\n path: '/po/list/:id',\r\n component: lazy(() => import('../features/po/PODetail')),\r\n },\r\n {\r\n auth: 'poncr',\r\n path: '/po/ncr',\r\n component: lazy(() => import('../features/po/PONCR')),\r\n },\r\n {\r\n auth: 'podelivery',\r\n path: '/po/delivery',\r\n component: lazy(() => import('../features/po/PODelivery')),\r\n },\r\n {\r\n auth: 'pot6',\r\n path: '/po/t6request',\r\n component: lazy(() => import('../features/po/T6RequestList')),\r\n },\r\n {\r\n auth: 'pot6',\r\n path: '/po/t6request/:sn',\r\n component: lazy(() => import('../features/po/T6RequestDetail')),\r\n },\r\n {\r\n auth: 'inventorysurvey',\r\n path: '/inventorysurvey',\r\n component: lazy(() => import('../features/inventory/InventoryList')),\r\n },\r\n {\r\n auth: 'moldunfilled',\r\n path: '/mold/unfilled',\r\n component: lazy(()=>import('../features/mold/UnfilledList')),\r\n },\r\n {\r\n auth: 'mold:fillorder',\r\n menu: 'moldunfilled',\r\n path: '/mold/unfilled/:id',\r\n component: lazy(()=>import('../features/mold/UnfilledFormPage')),\r\n },\r\n {\r\n auth: 'moldorder',\r\n path: '/mold/order',\r\n component: lazy(()=>import('../features/mold/OrderList')),\r\n },\r\n {\r\n auth: 'mold',\r\n menu: 'moldorder',\r\n path: '/mold/order/:id',\r\n component: lazy(()=>import('../features/mold/OrderDetail')),\r\n },\r\n {\r\n auth: 'mold:confirmorder',\r\n menu: 'moldorder',\r\n path: '/mold/order/:id/confirm',\r\n component: lazy(()=>import('../features/mold/OrderConfirmPage')),\r\n },\r\n {\r\n auth: 'mold:update',\r\n menu: 'moldorder',\r\n path: '/mold/order/:id/edit',\r\n component: lazy(()=>import('../features/mold/OrderFormPage')),\r\n },\r\n {\r\n auth: 'ncr',\r\n path: '/quality/ncr',\r\n component: lazy(() => import('../features/quality/ncr/NCRList')),\r\n },\r\n {\r\n auth: 'ncr',\r\n path: '/quality/ncr/:ncrnumber',\r\n component: lazy(() => import('../features/quality/ncr/NCRDetail')),\r\n },\r\n {\r\n auth: 'periodreport',\r\n path: '/quality/period',\r\n component: lazy(() =>\r\n import('../features/quality/period/PeriodReportList')\r\n ),\r\n },\r\n {\r\n auth: 'leavefactoryreport',\r\n path: '/quality/leavefactoryreport',\r\n component: lazy(() =>\r\n import('../features/quality/leavefactoryreport/LeaveFactoryReportList')\r\n ),\r\n },\r\n //#region md\r\n {\r\n auth: 'supplierbasic',\r\n path: '/masterdata/supplierbasic',\r\n component: lazy(() => import('../features/md/supplier/SupplierBasicList')),\r\n },\r\n {\r\n auth: 'suppliermaterial',\r\n path: '/masterdata/suppliermaterial',\r\n component: lazy(() =>\r\n import('../features/md/supplier/SupplierMaterialList')\r\n ),\r\n },\r\n {\r\n auth: 'dictionary',\r\n path: '/masterdata/dictionary',\r\n component: lazy(() => import('../features/md/dictionary/DictionaryPage')),\r\n },\r\n {\r\n auth: 'materialgroup',\r\n path: '/masterdata/materialgroup',\r\n component: lazy(() =>\r\n import('../features/md/materialgroup/MaterialGroupList')\r\n ),\r\n },\r\n //#endregion\r\n //#region infra\r\n {\r\n auth: 'abbuser',\r\n path: '/user/abb',\r\n component: lazy(() => import('../features/setting/user/UserList')),\r\n },\r\n {\r\n auth: 'supplieruser',\r\n path: '/user/supplier',\r\n component: lazy(() => import('../features/setting/user/SupplierUserList')),\r\n },\r\n {\r\n auth: 'menu',\r\n path: '/setting/menu',\r\n component: lazy(() => import('../features/setting/menu/MenuList')),\r\n },\r\n {\r\n auth: 'role',\r\n path: '/setting/role',\r\n component: lazy(() => import('../features/setting/role/RoleList')),\r\n },\r\n {\r\n auth: 'emailtemplate',\r\n path: '/setting/emailtemplate',\r\n component: lazy(() =>\r\n import('../features/setting/emailtpl/EmailTemplateList')\r\n ),\r\n },\r\n //#endregion\r\n {\r\n path: '/signin',\r\n component: lazy(() => import('../features/auth/SignIn')),\r\n anonymous: true,\r\n layout: false,\r\n },\r\n {\r\n path: '/resetpassword',\r\n component: lazy(() => import('../features/auth/ResetPassword')),\r\n anonymous: true,\r\n layout: false,\r\n },\r\n {\r\n path: '/changepassword',\r\n component: lazy(() => import('../features/auth/ChangePassword')),\r\n },\r\n {\r\n path: '/signin-internal-use-only',\r\n component: lazy(() => import('../features/auth/SignInTest')),\r\n anonymous: true,\r\n layout: false,\r\n },\r\n];\r\n\r\nfunction standardize(items) {\r\n for (let item of items) {\r\n // menu\r\n if (item.auth && !item.menu) item.menu = item.auth;\r\n // anonymous\r\n item.anonymous = item.anonymous === true ? true : false;\r\n // exact\r\n if (item.exact === undefined)\r\n item.exact = !(item.routes && item.routes.length > 0);\r\n if (item.routes) standardize(item.routes);\r\n }\r\n}\r\n\r\nstandardize(routes);\r\n\r\nexport default routes;\r\n","import React, { Suspense } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport {\r\n HashRouter as Router,\r\n Switch,\r\n Route,\r\n Redirect,\r\n useLocation,\r\n} from 'react-router-dom';\r\nimport { Spin } from 'antd';\r\nimport LayoutDefault from '../components/LayoutDefault';\r\nimport RedirectDefault from '../components/RedirectDefault';\r\nimport HttpError from '../components/HttpError';\r\nimport routes from './routes';\r\nimport {\r\n AUTH_STATUS,\r\n selectPermission,\r\n selectStatus,\r\n} from '../features/auth/authSlice';\r\nimport { debugEnable } from '../utils/utils';\r\nimport { useIntl } from 'react-intl';\r\nimport { getByKey } from '@/api/dictionary';\r\n\r\nfunction AppRoute({ route }) {\r\n const status = useSelector(selectStatus);\r\n const perms = useSelector(selectPermission);\r\n const location = useLocation();\r\n if (debugEnable) console.log('[AppRoute]:', route);\r\n\r\n if (!route.anonymous) {\r\n if (status !== AUTH_STATUS.SUCCEEDED) {\r\n let from = location.search\r\n ? `${location.pathname}${location.search}`\r\n : location.pathname;\r\n return ;\r\n } else if (route.auth && !perms.includes(route.auth)) {\r\n return ;\r\n }\r\n }\r\n const subroutes = {};\r\n if (route.routes && route.routes.length > 0) {\r\n subroutes.routes = route.routes;\r\n subroutes.menu = route.menu;\r\n subroutes.path = route.path;\r\n }\r\n return (\r\n \r\n {route.layout === false ? (\r\n \r\n ) : route.layout ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nfunction Fallback() {\r\n const intl = useIntl();\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\n// function usePageViews() {\r\n// let location = useLocation();\r\n// React.useEffect(() => {\r\n// console.log('[usePageViews]: ', location.pathname, location);\r\n// }, [location]);\r\n// }\r\n\r\nfunction AppSwitch() {\r\n //usePageViews();\r\n return (\r\n \r\n {routes.map(route => (\r\n }\r\n />\r\n ))}\r\n {\r\n getByKey({ key: 'sysconfig' }).then(res => {\r\n var url = res.find(x => x.itemKey === 'help')?.itemValue;\r\n window.location.replace(url);\r\n });\r\n }}\r\n />\r\n \r\n }\r\n />\r\n \r\n );\r\n}\r\n\r\nexport default function AppRouter() {\r\n return (\r\n \r\n }>\r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { useEffect } from 'react';\r\nimport { IntlProvider } from 'react-intl';\r\n// antd & dayjs\r\nimport { ConfigProvider } from 'antd';\r\n//import antdENUS from 'antd/lib/locale/en_US';\r\nimport antdZHCN from 'antd/lib/locale/zh_CN';\r\nimport dayjs from 'dayjs';\r\nimport 'dayjs/locale/zh-cn';\r\n// app\r\n//import { getLocale } from './locales';\r\n//import enUS from './locales/en-US';\r\nimport zhCN from './locales/zh-CN';\r\nimport AppRouter from './app/router';\r\nimport './App.less';\r\n\r\nconst locale = 'zh-CN'; //getLocale();\r\nconst isZHCN = locale === 'zh-CN';\r\nconst messages = zhCN; //isZHCN ? zhCN : enUS;\r\nconst antdLocale = antdZHCN; //isZHCN ? antdZHCN : antdENUS;\r\n\r\nfunction App() {\r\n useEffect(() => {\r\n document.title = messages['layout.appname'];\r\n dayjs.locale(isZHCN ? 'zh-cn' : 'en');\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n","import { debugEnable } from '@/utils/utils';\r\nimport { configureStore } from '@reduxjs/toolkit';\r\nimport logger from 'redux-logger';\r\nimport authReducer from '../features/auth/authSlice';\r\n\r\nexport default configureStore({\r\n reducer: {\r\n auth: authReducer,\r\n },\r\n middleware: getDefaultMiddleware =>\r\n debugEnable\r\n ? getDefaultMiddleware().concat(logger)\r\n : getDefaultMiddleware(),\r\n});\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' },\r\n })\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './App';\r\nimport store from './app/store';\r\nimport { Provider } from 'react-redux';\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n","import docCookies from '@/utils/cookie';\r\n\r\nconst LOCALE_KEY = 'ABB_LANG';\r\n\r\nexport function getLocale() {\r\n let locale =\r\n window.localStorage?.getItem(LOCALE_KEY) || docCookies.getItem(LOCALE_KEY);\r\n if (!locale) {\r\n locale = (navigator.language || navigator.browserLanguage).toLowerCase();\r\n }\r\n return locale.includes('zh') ? 'zh-CN' : 'en-US';\r\n}\r\n\r\nexport function setLocale(locale) {\r\n window.localStorage?.setItem(LOCALE_KEY, locale);\r\n const endDate = new Date();\r\n endDate.setFullYear(endDate.getFullYear() + 1);\r\n docCookies.setItem(LOCALE_KEY, locale, endDate, '/');\r\n window.location.reload();\r\n}\r\n","import axios from 'axios';\r\nimport { debugEnable } from '@/utils/utils';\r\nimport { getLocale } from '@/locales';\r\nimport { getRefreshToken, refreshToken } from './_auth';\r\nimport qs from 'qs';\r\n\r\nconst instance = axios.create({\r\n baseURL: window.ENV_CFG.api_root,\r\n timeout: 60000,\r\n headers: { 'Accept-Language': getLocale() },\r\n});\r\n\r\n// Add a request interceptor\r\ninstance.interceptors.request.use(\r\n config => {\r\n if (config.method === 'get') {\r\n config.paramsSerializer = function (params) {\r\n return qs.stringify(params, { arrayFormat: 'repeat' });\r\n };\r\n }\r\n return config;\r\n },\r\n error => {\r\n // Do something with request error\r\n if (debugEnable) console.log('[http]request error:', error);\r\n return Promise.reject({ status: 400 });\r\n }\r\n);\r\n\r\n// Add a response interceptor\r\ninstance.interceptors.response.use(\r\n response => {\r\n // Any status code that lie within the range of 2xx cause this function to trigger\r\n // Do something with response data\r\n return response.data;\r\n },\r\n error => {\r\n // Any status codes that falls outside the range of 2xx cause this function to trigger\r\n // Do something with response error\r\n if (debugEnable)\r\n console.log('[http]response error:', error, error.response);\r\n\r\n if (error.response) {\r\n if (error.response.status === 401 && !error.response.config.isretry) {\r\n return refreshToken(getRefreshToken())\r\n .then(res => {\r\n if (res.access_token) {\r\n error.response.config.isretry = true;\r\n error.response.config.headers[\r\n 'Authorization'\r\n ] = `${res.token_type} ${res.access_token}`;\r\n return instance.request(error.response.config);\r\n } else {\r\n return Promise.reject({\r\n status: 401,\r\n data: 'refresh_token_error',\r\n });\r\n }\r\n })\r\n .catch(e => {\r\n return Promise.reject({\r\n status: 401,\r\n data: 'refresh_token_error',\r\n });\r\n });\r\n } else {\r\n const res = JSON.parse(JSON.stringify(error.response));\r\n return Promise.reject(res);\r\n }\r\n } else {\r\n return Promise.reject({ status: 0 });\r\n }\r\n }\r\n);\r\n\r\nconst http = {\r\n instance: instance,\r\n get(url, config) {\r\n return instance.get(url, config);\r\n },\r\n post(url, data, config) {\r\n return instance.post(url, data, config);\r\n },\r\n delete(url, config) {\r\n return instance.delete(url, config);\r\n },\r\n setAuthorization(token) {\r\n if (token?.token_type && token?.access_token) {\r\n instance.defaults.headers.common[\r\n 'Authorization'\r\n ] = `${token.token_type} ${token.access_token}`;\r\n } else {\r\n instance.defaults.headers.common['Authorization'] = token;\r\n }\r\n },\r\n getAuthorization() {\r\n return instance.defaults.headers.common['Authorization'];\r\n },\r\n};\r\n\r\nexport default http;\r\n\r\n// export const download = (url, query, data) => {\r\n// if (query) {\r\n// const searchParams = new URLSearchParams();\r\n// Object.keys(query).forEach(key => {\r\n// if (query[key] === null || query[key] === undefined) {\r\n// searchParams.append(key, '');\r\n// } else {\r\n// searchParams.append(key, query[key]);\r\n// }\r\n// });\r\n// url = url.includes('?')\r\n// ? `${url}&${searchParams.toString()}`\r\n// : `${url}?${searchParams.toString()}`;\r\n// }\r\n// const form = document.createElement('form');\r\n// form.target = '_blank';\r\n// form.action = `${window.ENV_CFG.api_root}/download`;\r\n// form.method = 'post';\r\n// form.appendChild(getInput('url', url));\r\n// form.appendChild(getInput('token', http.getAuthorization()));\r\n// form.appendChild(getInput('data', data ? JSON.stringify(data) : ''));\r\n// document.body.appendChild(form);\r\n// form.submit();\r\n// document.body.removeChild(form);\r\n// };\r\nexport const downloadAuthFile = ({ url, query, data, previewName }) => {\r\n if (query) {\r\n const searchParams = new URLSearchParams();\r\n Object.keys(query).forEach(key => {\r\n if (query[key] === null || query[key] === undefined) {\r\n searchParams.append(key, '');\r\n } else if (Array.isArray(query[key])) {\r\n query[key].forEach(x => {\r\n searchParams.append(key, x);\r\n });\r\n } else {\r\n searchParams.append(key, query[key]);\r\n }\r\n });\r\n url = url.includes('?')\r\n ? `${url}&${searchParams.toString()}`\r\n : `${url}?${searchParams.toString()}`;\r\n }\r\n const form = document.createElement('form');\r\n form.target = '_blank';\r\n form.action = previewName\r\n ? `${window.ENV_CFG.api_root}/download/preview/${encodeURIComponent(\r\n previewName\r\n )}`\r\n : `${window.ENV_CFG.api_root}/download`;\r\n form.method = 'post';\r\n form.appendChild(getInput('url', url));\r\n form.appendChild(getInput('token', http.getAuthorization()));\r\n form.appendChild(getInput('data', data ? JSON.stringify(data) : ''));\r\n document.body.appendChild(form);\r\n form.submit();\r\n document.body.removeChild(form);\r\n};\r\nconst getInput = (name, value) => {\r\n const input = document.createElement('input');\r\n input.type = 'hidden';\r\n input.name = name;\r\n input.value = value;\r\n return input;\r\n};\r\n\r\nexport const uploadRequest = options => {\r\n http.post(options.action, options.data, {\r\n headers: { 'content-type': 'multipart/form-data' },\r\n });\r\n};\r\n","export const debugEnable = process.env.NODE_ENV === 'development';\r\n\r\nexport function showTableTotal(total, range) {\r\n return `${range[0]}-${range[1]} of ${total} items`;\r\n}\r\n\r\nexport function stringSorter(a, b, index) {\r\n let stringA = a[index];\r\n let stringB = b[index];\r\n if (stringA && stringB) {\r\n stringA = stringA.toUpperCase();\r\n stringB = stringB.toUpperCase();\r\n }\r\n if (stringA < stringB) return -1;\r\n if (stringA > stringB) return 1;\r\n return 0;\r\n}\r\n\r\nexport function numberSorter(a, b, index) {\r\n return a[index] - b[index];\r\n}\r\n","/*\\\r\n|*|\r\n|*| :: cookies.js ::\r\n|*|\r\n|*| A complete cookies reader/writer framework with full unicode support.\r\n|*|\r\n|*| https://developer.mozilla.org/en-US/docs/DOM/document.cookie\r\n|*|\r\n|*| This framework is released under the GNU Public License, version 3 or later.\r\n|*| http://www.gnu.org/licenses/gpl-3.0-standalone.html\r\n|*|\r\n|*| Syntaxes:\r\n|*|\r\n|*| * docCookies.setItem(name, value[, end[, path[, domain[, secure]]]])\r\n|*| * docCookies.getItem(name)\r\n|*| * docCookies.removeItem(name[, path], domain)\r\n|*| * docCookies.hasItem(name)\r\n|*| * docCookies.keys()\r\n|*|\r\n\\*/\r\n\r\nconst docCookies = {\r\n getItem: function (sKey) {\r\n return (\r\n decodeURIComponent(\r\n document.cookie.replace(\r\n new RegExp(\r\n '(?:(?:^|.*;)\\\\s*' +\r\n encodeURIComponent(sKey).replace(/[-.+*]/g, '\\\\$&') +\r\n '\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$'\r\n ),\r\n '$1'\r\n )\r\n ) || null\r\n );\r\n },\r\n setItem: function (sKey, sValue, vEnd, sPath, sDomain, bSecure) {\r\n if (!sKey || /^(?:expires|max-age|path|domain|secure)$/i.test(sKey)) {\r\n return false;\r\n }\r\n var sExpires = '';\r\n if (vEnd) {\r\n switch (vEnd.constructor) {\r\n case Number:\r\n sExpires =\r\n vEnd === Infinity\r\n ? '; expires=Fri, 31 Dec 9999 23:59:59 GMT'\r\n : '; max-age=' + vEnd;\r\n break;\r\n case String:\r\n sExpires = '; expires=' + vEnd;\r\n break;\r\n case Date:\r\n sExpires = '; expires=' + vEnd.toUTCString();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n document.cookie =\r\n encodeURIComponent(sKey) +\r\n '=' +\r\n encodeURIComponent(sValue) +\r\n sExpires +\r\n (sDomain ? '; domain=' + sDomain : '') +\r\n (sPath ? '; path=' + sPath : '') +\r\n (bSecure ? '; secure' : '');\r\n return true;\r\n },\r\n removeItem: function (sKey, sPath, sDomain) {\r\n if (!sKey || !this.hasItem(sKey)) {\r\n return false;\r\n }\r\n document.cookie =\r\n encodeURIComponent(sKey) +\r\n '=; expires=Thu, 01 Jan 1970 00:00:00 GMT' +\r\n (sDomain ? '; domain=' + sDomain : '') +\r\n (sPath ? '; path=' + sPath : '');\r\n return true;\r\n },\r\n hasItem: function (sKey) {\r\n return new RegExp(\r\n '(?:^|;\\\\s*)' +\r\n encodeURIComponent(sKey).replace(/[-.+*]/g, '\\\\$&') +\r\n '\\\\s*\\\\='\r\n ).test(document.cookie);\r\n },\r\n keys: /* optional method: you can safely remove it! */ function () {\r\n var aKeys = document.cookie\r\n .replace(/((?:^|\\s*;)[^=]+)(?=;|$)|^\\s*|\\s*(?:=[^;]*)?(?:\\1|$)/g, '')\r\n .split(/\\s*(?:=[^;]*)?;\\s*/);\r\n for (var nIdx = 0; nIdx < aKeys.length; nIdx++) {\r\n aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]);\r\n }\r\n return aKeys;\r\n },\r\n};\r\nexport default docCookies;\r\n","import axios from 'axios';\r\nimport http from './_http';\r\nimport docCookies from '@/utils/cookie';\r\nimport { md5 } from '@/utils/md5';\r\nimport JSEncrypt from 'jsencrypt';\r\n\r\nconst client_id = 'web';\r\nconst cookieKey = process.env.REACT_APP_TOKEN;\r\n\r\nexport function removeToken() {\r\n http.setAuthorization('');\r\n docCookies.removeItem(cookieKey);\r\n}\r\n\r\nexport function getRefreshToken() {\r\n return docCookies.getItem(cookieKey);\r\n}\r\nfunction setRefreshToken(token) {\r\n docCookies.setItem(cookieKey, token);\r\n}\r\n\r\nexport function authorizeCode(code, redirect_uri) {\r\n const data = {\r\n grant_type: 'authorization_code',\r\n code,\r\n redirect_uri,\r\n };\r\n return getToken(data);\r\n}\r\nexport function refreshToken(refresh_token) {\r\n const data = {\r\n grant_type: 'refresh_token',\r\n refresh_token,\r\n };\r\n return getToken(data);\r\n}\r\n\r\nfunction getToken(data) {\r\n data.client_id = client_id;\r\n data.timestamp = parseInt(new Date().getTime() / 1000);\r\n data.client_secret = getSecret(data.timestamp);\r\n return axios\r\n .post(window.ENV_CFG.token, data)\r\n .then(res => {\r\n if (res.data?.access_token) {\r\n http.setAuthorization(res.data);\r\n setRefreshToken(res.data.refresh_token);\r\n return Promise.resolve(res.data);\r\n } else {\r\n return Promise.reject(res);\r\n }\r\n })\r\n .catch(e => {\r\n return Promise.reject(e);\r\n });\r\n}\r\n\r\nfunction getSecret(timestamp) {\r\n const hash = md5('irXvWZ5ff3qtElnz' + timestamp);\r\n return hash.slice(8, 16 + (timestamp % 16));\r\n}\r\n\r\nexport function getRSAKey() {\r\n return axios\r\n .get(window.ENV_CFG.api_root + '/Auth/GetRSAKey', {\r\n params: { client_id },\r\n })\r\n .then(res => {\r\n if (res && res.status === 200 && res.data) {\r\n return Promise.resolve(res);\r\n } else {\r\n return Promise.resolve({ status: 500 });\r\n }\r\n })\r\n .catch(e => Promise.reject(e));\r\n}\r\n\r\nexport function validatePassword(data) {\r\n const { password, ...formdata } = data;\r\n return getRSAKey()\r\n .then(res => {\r\n const pwdts = {\r\n password,\r\n timestamp: Math.round(new Date().getTime() / 1000),\r\n };\r\n const encryptor = new JSEncrypt();\r\n encryptor.setPublicKey(res.data);\r\n formdata.client_id = client_id;\r\n formdata.password = encryptor.encrypt(JSON.stringify(pwdts));\r\n return axios.post(window.ENV_CFG.valpwd, formdata);\r\n })\r\n .catch(e => Promise.reject(e));\r\n}\r\n","export function md5(string) {\r\n function md5_RotateLeft(lValue, iShiftBits) {\r\n return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));\r\n }\r\n function md5_AddUnsigned(lX, lY) {\r\n var lX4, lY4, lX8, lY8, lResult;\r\n lX8 = lX & 0x80000000;\r\n lY8 = lY & 0x80000000;\r\n lX4 = lX & 0x40000000;\r\n lY4 = lY & 0x40000000;\r\n lResult = (lX & 0x3fffffff) + (lY & 0x3fffffff);\r\n if (lX4 & lY4) {\r\n return lResult ^ 0x80000000 ^ lX8 ^ lY8;\r\n }\r\n if (lX4 | lY4) {\r\n if (lResult & 0x40000000) {\r\n return lResult ^ 0xc0000000 ^ lX8 ^ lY8;\r\n } else {\r\n return lResult ^ 0x40000000 ^ lX8 ^ lY8;\r\n }\r\n } else {\r\n return lResult ^ lX8 ^ lY8;\r\n }\r\n }\r\n function md5_F(x, y, z) {\r\n return (x & y) | (~x & z);\r\n }\r\n function md5_G(x, y, z) {\r\n return (x & z) | (y & ~z);\r\n }\r\n function md5_H(x, y, z) {\r\n return x ^ y ^ z;\r\n }\r\n function md5_I(x, y, z) {\r\n return y ^ (x | ~z);\r\n }\r\n function md5_FF(a, b, c, d, x, s, ac) {\r\n a = md5_AddUnsigned(\r\n a,\r\n md5_AddUnsigned(md5_AddUnsigned(md5_F(b, c, d), x), ac)\r\n );\r\n return md5_AddUnsigned(md5_RotateLeft(a, s), b);\r\n }\r\n function md5_GG(a, b, c, d, x, s, ac) {\r\n a = md5_AddUnsigned(\r\n a,\r\n md5_AddUnsigned(md5_AddUnsigned(md5_G(b, c, d), x), ac)\r\n );\r\n return md5_AddUnsigned(md5_RotateLeft(a, s), b);\r\n }\r\n function md5_HH(a, b, c, d, x, s, ac) {\r\n a = md5_AddUnsigned(\r\n a,\r\n md5_AddUnsigned(md5_AddUnsigned(md5_H(b, c, d), x), ac)\r\n );\r\n return md5_AddUnsigned(md5_RotateLeft(a, s), b);\r\n }\r\n function md5_II(a, b, c, d, x, s, ac) {\r\n a = md5_AddUnsigned(\r\n a,\r\n md5_AddUnsigned(md5_AddUnsigned(md5_I(b, c, d), x), ac)\r\n );\r\n return md5_AddUnsigned(md5_RotateLeft(a, s), b);\r\n }\r\n function md5_ConvertToWordArray(string) {\r\n var lWordCount;\r\n var lMessageLength = string.length;\r\n var lNumberOfWords_temp1 = lMessageLength + 8;\r\n var lNumberOfWords_temp2 =\r\n (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;\r\n var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;\r\n var lWordArray = Array(lNumberOfWords - 1);\r\n var lBytePosition = 0;\r\n var lByteCount = 0;\r\n while (lByteCount < lMessageLength) {\r\n lWordCount = (lByteCount - (lByteCount % 4)) / 4;\r\n lBytePosition = (lByteCount % 4) * 8;\r\n lWordArray[lWordCount] =\r\n lWordArray[lWordCount] |\r\n (string.charCodeAt(lByteCount) << lBytePosition);\r\n lByteCount++;\r\n }\r\n lWordCount = (lByteCount - (lByteCount % 4)) / 4;\r\n lBytePosition = (lByteCount % 4) * 8;\r\n lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);\r\n lWordArray[lNumberOfWords - 2] = lMessageLength << 3;\r\n lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;\r\n return lWordArray;\r\n }\r\n function md5_WordToHex(lValue) {\r\n var WordToHexValue = '',\r\n WordToHexValue_temp = '',\r\n lByte,\r\n lCount;\r\n for (lCount = 0; lCount <= 3; lCount++) {\r\n lByte = (lValue >>> (lCount * 8)) & 255;\r\n WordToHexValue_temp = '0' + lByte.toString(16);\r\n WordToHexValue =\r\n WordToHexValue +\r\n WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2);\r\n }\r\n return WordToHexValue;\r\n }\r\n function md5_Utf8Encode(string) {\r\n string = string.replace(/\\r\\n/g, '\\n');\r\n var utftext = '';\r\n for (var n = 0; n < string.length; n++) {\r\n var c = string.charCodeAt(n);\r\n if (c < 128) {\r\n utftext += String.fromCharCode(c);\r\n } else if (c > 127 && c < 2048) {\r\n utftext += String.fromCharCode((c >> 6) | 192);\r\n utftext += String.fromCharCode((c & 63) | 128);\r\n } else {\r\n utftext += String.fromCharCode((c >> 12) | 224);\r\n utftext += String.fromCharCode(((c >> 6) & 63) | 128);\r\n utftext += String.fromCharCode((c & 63) | 128);\r\n }\r\n }\r\n return utftext;\r\n }\r\n var x = [];\r\n var k, AA, BB, CC, DD, a, b, c, d;\r\n var S11 = 7,\r\n S12 = 12,\r\n S13 = 17,\r\n S14 = 22;\r\n var S21 = 5,\r\n S22 = 9,\r\n S23 = 14,\r\n S24 = 20;\r\n var S31 = 4,\r\n S32 = 11,\r\n S33 = 16,\r\n S34 = 23;\r\n var S41 = 6,\r\n S42 = 10,\r\n S43 = 15,\r\n S44 = 21;\r\n string = md5_Utf8Encode(string);\r\n x = md5_ConvertToWordArray(string);\r\n a = 0x67452301;\r\n b = 0xefcdab89;\r\n c = 0x98badcfe;\r\n d = 0x10325476;\r\n for (k = 0; k < x.length; k += 16) {\r\n AA = a;\r\n BB = b;\r\n CC = c;\r\n DD = d;\r\n a = md5_FF(a, b, c, d, x[k + 0], S11, 0xd76aa478);\r\n d = md5_FF(d, a, b, c, x[k + 1], S12, 0xe8c7b756);\r\n c = md5_FF(c, d, a, b, x[k + 2], S13, 0x242070db);\r\n b = md5_FF(b, c, d, a, x[k + 3], S14, 0xc1bdceee);\r\n a = md5_FF(a, b, c, d, x[k + 4], S11, 0xf57c0faf);\r\n d = md5_FF(d, a, b, c, x[k + 5], S12, 0x4787c62a);\r\n c = md5_FF(c, d, a, b, x[k + 6], S13, 0xa8304613);\r\n b = md5_FF(b, c, d, a, x[k + 7], S14, 0xfd469501);\r\n a = md5_FF(a, b, c, d, x[k + 8], S11, 0x698098d8);\r\n d = md5_FF(d, a, b, c, x[k + 9], S12, 0x8b44f7af);\r\n c = md5_FF(c, d, a, b, x[k + 10], S13, 0xffff5bb1);\r\n b = md5_FF(b, c, d, a, x[k + 11], S14, 0x895cd7be);\r\n a = md5_FF(a, b, c, d, x[k + 12], S11, 0x6b901122);\r\n d = md5_FF(d, a, b, c, x[k + 13], S12, 0xfd987193);\r\n c = md5_FF(c, d, a, b, x[k + 14], S13, 0xa679438e);\r\n b = md5_FF(b, c, d, a, x[k + 15], S14, 0x49b40821);\r\n a = md5_GG(a, b, c, d, x[k + 1], S21, 0xf61e2562);\r\n d = md5_GG(d, a, b, c, x[k + 6], S22, 0xc040b340);\r\n c = md5_GG(c, d, a, b, x[k + 11], S23, 0x265e5a51);\r\n b = md5_GG(b, c, d, a, x[k + 0], S24, 0xe9b6c7aa);\r\n a = md5_GG(a, b, c, d, x[k + 5], S21, 0xd62f105d);\r\n d = md5_GG(d, a, b, c, x[k + 10], S22, 0x2441453);\r\n c = md5_GG(c, d, a, b, x[k + 15], S23, 0xd8a1e681);\r\n b = md5_GG(b, c, d, a, x[k + 4], S24, 0xe7d3fbc8);\r\n a = md5_GG(a, b, c, d, x[k + 9], S21, 0x21e1cde6);\r\n d = md5_GG(d, a, b, c, x[k + 14], S22, 0xc33707d6);\r\n c = md5_GG(c, d, a, b, x[k + 3], S23, 0xf4d50d87);\r\n b = md5_GG(b, c, d, a, x[k + 8], S24, 0x455a14ed);\r\n a = md5_GG(a, b, c, d, x[k + 13], S21, 0xa9e3e905);\r\n d = md5_GG(d, a, b, c, x[k + 2], S22, 0xfcefa3f8);\r\n c = md5_GG(c, d, a, b, x[k + 7], S23, 0x676f02d9);\r\n b = md5_GG(b, c, d, a, x[k + 12], S24, 0x8d2a4c8a);\r\n a = md5_HH(a, b, c, d, x[k + 5], S31, 0xfffa3942);\r\n d = md5_HH(d, a, b, c, x[k + 8], S32, 0x8771f681);\r\n c = md5_HH(c, d, a, b, x[k + 11], S33, 0x6d9d6122);\r\n b = md5_HH(b, c, d, a, x[k + 14], S34, 0xfde5380c);\r\n a = md5_HH(a, b, c, d, x[k + 1], S31, 0xa4beea44);\r\n d = md5_HH(d, a, b, c, x[k + 4], S32, 0x4bdecfa9);\r\n c = md5_HH(c, d, a, b, x[k + 7], S33, 0xf6bb4b60);\r\n b = md5_HH(b, c, d, a, x[k + 10], S34, 0xbebfbc70);\r\n a = md5_HH(a, b, c, d, x[k + 13], S31, 0x289b7ec6);\r\n d = md5_HH(d, a, b, c, x[k + 0], S32, 0xeaa127fa);\r\n c = md5_HH(c, d, a, b, x[k + 3], S33, 0xd4ef3085);\r\n b = md5_HH(b, c, d, a, x[k + 6], S34, 0x4881d05);\r\n a = md5_HH(a, b, c, d, x[k + 9], S31, 0xd9d4d039);\r\n d = md5_HH(d, a, b, c, x[k + 12], S32, 0xe6db99e5);\r\n c = md5_HH(c, d, a, b, x[k + 15], S33, 0x1fa27cf8);\r\n b = md5_HH(b, c, d, a, x[k + 2], S34, 0xc4ac5665);\r\n a = md5_II(a, b, c, d, x[k + 0], S41, 0xf4292244);\r\n d = md5_II(d, a, b, c, x[k + 7], S42, 0x432aff97);\r\n c = md5_II(c, d, a, b, x[k + 14], S43, 0xab9423a7);\r\n b = md5_II(b, c, d, a, x[k + 5], S44, 0xfc93a039);\r\n a = md5_II(a, b, c, d, x[k + 12], S41, 0x655b59c3);\r\n d = md5_II(d, a, b, c, x[k + 3], S42, 0x8f0ccc92);\r\n c = md5_II(c, d, a, b, x[k + 10], S43, 0xffeff47d);\r\n b = md5_II(b, c, d, a, x[k + 1], S44, 0x85845dd1);\r\n a = md5_II(a, b, c, d, x[k + 8], S41, 0x6fa87e4f);\r\n d = md5_II(d, a, b, c, x[k + 15], S42, 0xfe2ce6e0);\r\n c = md5_II(c, d, a, b, x[k + 6], S43, 0xa3014314);\r\n b = md5_II(b, c, d, a, x[k + 13], S44, 0x4e0811a1);\r\n a = md5_II(a, b, c, d, x[k + 4], S41, 0xf7537e82);\r\n d = md5_II(d, a, b, c, x[k + 11], S42, 0xbd3af235);\r\n c = md5_II(c, d, a, b, x[k + 2], S43, 0x2ad7d2bb);\r\n b = md5_II(b, c, d, a, x[k + 9], S44, 0xeb86d391);\r\n a = md5_AddUnsigned(a, AA);\r\n b = md5_AddUnsigned(b, BB);\r\n c = md5_AddUnsigned(c, CC);\r\n d = md5_AddUnsigned(d, DD);\r\n }\r\n return (\r\n md5_WordToHex(a) +\r\n md5_WordToHex(b) +\r\n md5_WordToHex(c) +\r\n md5_WordToHex(d)\r\n ).toLowerCase();\r\n}\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"HttpError_wrapper__2AKTr\",\"code\":\"HttpError_code__P8xoC\",\"title\":\"HttpError_title__1yk2M\",\"desc\":\"HttpError_desc__3Dzjj\",\"link\":\"HttpError_link__CQnPM\",\"layout\":\"HttpError_layout__69Ahd\"};"],"sourceRoot":""}