{"version":3,"sources":["locales/index.js","utils/reducer.js","components/HttpError.module.less","utils/handleError.js","components/PagedTable.js","api/account.js","api/syncdatalog.js","features/home/ExcelImportRes.js","components/PageHeader.js","locales/en-US/error.js","locales/en-US/menu.js","locales/en-US/pages.js","locales/en-US.js","locales/zh-CN/error.js","locales/zh-CN/menu.js","locales/zh-CN/pages.js","locales/zh-CN.js","components/LanguageSetting.js","api/importrecord.js","components/ExcelImportNotice.js","components/LayoutDefault.js","components/HttpError.js","components/RedirectDefault.js","components/LayoutPlain.js","app/routes.js","app/router.js","App.js","app/store.js","serviceWorker.js","index.js","features/auth/authSlice.js","utils/utils.js","utils/constants.js","api/http.js","api/auth.js","utils/cookie.js"],"names":["LOCALE_KEY","getLocale","locale","window","localStorage","getItem","docCookies","navigator","language","browserLanguage","toLowerCase","includes","setLocale","setItem","endDate","Date","setFullYear","getFullYear","location","reload","useCustomReducer","reducer","initialState","useReducer","state","dispatch","debugEnable","next","action","console","log","addLog","addThunk","createAsyncAction","type","asyncAction","pending","fulfilled","rejected","actionCreator","arg","then","res","payload","catch","error","createAction","module","exports","handleError","e","msg","callback","alert","status","data","title","list","pagination","defaultCurrent","defaultPageSize","pageSize","current","total","showTotal","showTableTotal","REQUEST_STATUS","IDLE","createNextState","draft","PENDING","SUCCEEDED","items","FAILED","errormsg","PagedTable","columns","params","request","props","cloneDeep","getInitialState","fetchData","useCallback","query","page","size","useEffect","loading","dataSource","onChange","filters","sorter","extra","React","memo","getLoginInfo","http","get","getSyncDataByRecordID","ExcelImportRes","editVisible","recordID","handleItemSave","handleEditCancel","intl","useIntl","Form","useForm","form","useState","setParams","setFieldsValue","submit","formatMessage","id","dataIndex","render","item","result","description","visible","onOk","onCancel","style","minWidth","layout","className","onFinish","values","Item","name","placeholder","width","allowClear","htmlType","SearchOutlined","onClick","exportParams","getFieldsValue","undefined","saleOrder","dataTable","map","push","options","fileName","date","nowDate","getMonth","getDate","DateFormStr","moment","unix","datas","sheetData","sheetName","sheetFilter","sheetHeader","columnWidths","ExportJsonExcel","saveExcel","ExceptionOutlined","rowKey","PageHeader","messages","enUS","menu","pages","zhCN","LanguageSetting","key","overlay","arrow","GlobalOutlined","DownOutlined","marginLeft","fontSize","color","getAll","ExcelImportNotice","setVisible","tableSource","setTableSource","setEditVisible","setRecordID","deleteClick","delete","message","success","importTime","substring","replace","text","value","email","okText","cancelText","placement","onConfirm","MessageOutlined","onClose","scroll","y","Math","random","LayoutDefault","children","year","Navbar","currentMenu","Toolbar","SubMenu","Menu","menus","useSelector","selectMenus","selectedKeys","mode","getNavItems","x","length","menuCode","defaultMessage","menuName","test","url","target","href","rel","to","useDispatch","selectName","Fragment","UserOutlined","signOut","ENV_CFG","signout","ExportOutlined","ErrorContent","code","home","styles","wrapper","link","ghost","icon","HomeOutlined","HttpError","authstatus","selectStatus","AUTH_STATUS","RedirectDefault","getDefaultFromMenus","LayoutPlain","routes","auth","path","component","lazy","anonymous","standardize","exact","AppRoute","route","perms","selectPermission","useLocation","from","search","pathname","subroutes","Fallback","tip","AppSwitch","AppRouter","fallback","isZHCN","antdLocale","antdZHCN","antdENUS","App","document","dayjs","componentSize","configureStore","authReducer","middleware","getDefaultMiddleware","concat","logger","Boolean","hostname","match","ReactDOM","StrictMode","store","getElementById","serviceWorker","ready","registration","unregister","NOTLOGGEDIN","LOGGINGIN","token","user","permissions","errorcode","fetchToken","createAsyncThunk","userArgs","a","rejectWithValue","authorizeCode","redirect_uri","response","refresh_token","refreshToken","fetchUser","removeRefreshToken","authSlice","createSlice","extraReducers","process","range","COMMON_TYPES","GETLIST","GET","ADD","EDIT","VIEW","DELETE","DISCARD","TABLECHANGE","instance","axios","create","baseURL","api_root","timeout","headers","interceptors","use","config","Promise","reject","isretry","JSON","parse","stringify","getRefreshToken","access_token","token_type","post","setAuthorization","defaults","common","cookieKey","removeItem","setDevTooken","getToken","grant_type","client_id","client_secret","resolve","sKey","decodeURIComponent","cookie","RegExp","encodeURIComponent","sValue","vEnd","sPath","sDomain","bSecure","sExpires","constructor","Number","Infinity","String","toUTCString","this","hasItem","keys","aKeys","split","nIdx"],"mappings":"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","file":"static/js/main.e4920c4a.chunk.js","sourcesContent":["import docCookies from '@/utils/cookie';\r\n\r\nconst LOCALE_KEY = 'ABB_PDPOTS_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 { useReducer } from 'react';\r\nimport { debugEnable } from '../utils/utils';\r\n\r\nfunction addLog(dispatch) {\r\n const next = dispatch;\r\n return action => {\r\n console.log('[useCustomReducer]dispatching', action);\r\n let result = next(action);\r\n return result;\r\n };\r\n}\r\nfunction addThunk(dispatch) {\r\n const next = dispatch;\r\n return action => {\r\n if (typeof action === 'function') {\r\n action(dispatch);\r\n } else {\r\n return next(action);\r\n }\r\n };\r\n}\r\n\r\n// 重写reducer,使dispatch支持function(类redux-thunk)\r\nexport function useCustomReducer(reducer, initialState) {\r\n let [state, dispatch] = useReducer(reducer, initialState);\r\n // log\r\n if (debugEnable) dispatch = addLog(dispatch);\r\n // thunk\r\n dispatch = addThunk(dispatch);\r\n\r\n return [state, dispatch];\r\n}\r\n\r\n// 实现异步actionCreator, 类redux toolkit中的createAsyncThunk\r\nexport function createAsyncAction(type, asyncAction) {\r\n const pending = `${type}/pending`;\r\n const fulfilled = `${type}/fulfilled`;\r\n const rejected = `${type}/rejected`;\r\n\r\n const actionCreator = arg => {\r\n return dispatch => {\r\n dispatch({ type: pending });\r\n asyncAction(arg)\r\n .then(res => dispatch({ type: fulfilled, payload: res }))\r\n .catch(error => dispatch({ type: rejected, payload: error }));\r\n };\r\n };\r\n actionCreator.pending = pending;\r\n actionCreator.fulfilled = fulfilled;\r\n actionCreator.rejected = rejected;\r\n return actionCreator;\r\n}\r\n\r\nexport function createAction(type, payload) {\r\n return { type, payload };\r\n}\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"HttpError_wrapper__2hLDR\",\"code\":\"HttpError_code__3v0d0\",\"title\":\"HttpError_title__3BPnj\",\"link\":\"HttpError_link__1LC-k\"};","import { debugEnable } from '../utils/utils';\r\n\r\nexport function handleError(e, msg, callback) {\r\n if (debugEnable) console.log('[handleError]:', e, msg);\r\n if (!callback) {\r\n callback = alert;\r\n }\r\n if (e) {\r\n if (e.status === 400 && e.data?.title) {\r\n callback(e.data?.title);\r\n return;\r\n }\r\n if (e.status === 401) {\r\n callback('登录信息已过期,请重新登录');\r\n return;\r\n }\r\n }\r\n callback(msg || 'Error');\r\n}\r\n","import React, { useCallback, useEffect, useReducer } from 'react';\r\nimport { Table } from 'antd';\r\nimport { handleError } from '@/utils/handleError';\r\nimport { REQUEST_STATUS } from '@/utils/constants';\r\nimport { createNextState } from '@reduxjs/toolkit';\r\nimport { createAction } from '@/utils/reducer';\r\nimport { showTableTotal } from '@/utils/utils';\r\nimport cloneDeep from 'lodash/cloneDeep';\r\n\r\nconst initialState = {\r\n status: '',\r\n list: [],\r\n pagination: {\r\n defaultCurrent: 1,\r\n defaultPageSize: 20,\r\n pageSize: 20,\r\n current: 1,\r\n total: 0,\r\n showTotal: showTableTotal, //(total, range) => `${range[0]}-${range[1]} of ${total} items`,\r\n },\r\n};\r\n\r\nconst getInitialState = pageSize => {\r\n const state = cloneDeep(initialState);\r\n state.pagination.defaultPageSize = pageSize;\r\n state.pagination.pageSize = pageSize;\r\n return state;\r\n};\r\n\r\nconst reducer = (state, action) => {\r\n switch (action.type) {\r\n case REQUEST_STATUS.IDLE:\r\n return createNextState(state, draft => {\r\n draft.status = action.type;\r\n draft.pagination.current = 1;\r\n });\r\n case REQUEST_STATUS.PENDING:\r\n return createNextState(state, draft => {\r\n draft.status = action.type;\r\n });\r\n case REQUEST_STATUS.SUCCEEDED:\r\n return createNextState(state, draft => {\r\n draft.status = action.type;\r\n draft.list = action.payload.res.items;\r\n draft.pagination.total = action.payload.res.total;\r\n draft.pagination.current = action.payload.pagination.current;\r\n draft.pagination.pageSize = action.payload.pagination.pageSize;\r\n });\r\n case REQUEST_STATUS.FAILED:\r\n handleError(action.payload.e, action.payload.errormsg);\r\n return createNextState(state, draft => {\r\n draft.status = action.type;\r\n });\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nconst PagedTable = ({\r\n columns,\r\n params,\r\n request,\r\n errormsg,\r\n pageSize,\r\n ...props\r\n}) => {\r\n //---------------------- state\r\n const [state, dispatch] = useReducer(\r\n reducer,\r\n pageSize ? getInitialState(pageSize) : initialState\r\n );\r\n\r\n //---------------------- effects\r\n const fetchData = useCallback(\r\n (query, pagination) => {\r\n dispatch(createAction(REQUEST_STATUS.PENDING));\r\n request({\r\n page: pagination.current,\r\n size: pagination.pageSize,\r\n ...query,\r\n })\r\n .then(res => {\r\n dispatch(createAction(REQUEST_STATUS.SUCCEEDED, { res, pagination }));\r\n })\r\n .catch(e => {\r\n dispatch(createAction(REQUEST_STATUS.FAILED, { e, errormsg }));\r\n });\r\n },\r\n [request, errormsg]\r\n );\r\n\r\n // 每次渲染时判断是否重新获取数据\r\n useEffect(() => {\r\n if (state.status === REQUEST_STATUS.IDLE && fetchData) {\r\n dispatch(createAction(REQUEST_STATUS.PENDING));\r\n fetchData(params, state.pagination);\r\n }\r\n });\r\n\r\n // 查询参数变化时重新获取数据\r\n useEffect(() => {\r\n dispatch(createAction(REQUEST_STATUS.IDLE));\r\n }, [params]);\r\n\r\n //---------------------- events\r\n // (pagination, filters, sorter, extra)=>{}\r\n const handleTableChange = (pagination, filters, sorter, extra) => {\r\n if (pagination.pageSize !== state.pagination.pageSize) {\r\n pagination.current = 1;\r\n }\r\n fetchData(params, pagination);\r\n };\r\n\r\n //---------------------- view\r\n return (\r\n \r\n );\r\n};\r\nexport default React.memo(PagedTable);\r\n","import http from './http';\r\n\r\nexport function getLoginInfo() {\r\n return http.get('/Account/GetLoginWithMenus');\r\n}\r\n","import http from './http';\r\n\r\nexport function getSyncDataByRecordID(query) {\r\n return http.get('/ProjectSyncDataLog/GetSyncDataByRecordID', query);\r\n}\r\nexport function getSyncDataByRecordIdExport(query) {\r\n return http.get('/ProjectSyncDataLog/GetSyncDataByRecordIdExport', query);\r\n}","import React, { useState, useEffect } from 'react';\r\nimport { Space, Button, Popconfirm, Form, Input, Select, message, Modal } from 'antd';\r\nimport { SearchOutlined, ExceptionOutlined } from '@ant-design/icons';\r\nimport { FormattedMessage, useIntl } from 'react-intl';\r\nimport { handleError } from '@/utils/handleError';\r\nimport PageHeader from '@/components/PageHeader';\r\nimport PagedTable from '@/components/PagedTable';\r\nimport moment from 'moment';\r\nimport { getSyncDataByRecordID, getSyncDataByRecordIdExport } from '@/api/syncdatalog';\r\n\r\n// excel\r\nimport * as XLSX from 'xlsx';\r\nimport ExportJsonExcel from 'js-export-excel';\r\n\r\nconst ExcelImportRes = ({\r\n editVisible,\r\n recordID,\r\n handleItemSave,\r\n handleEditCancel\r\n}) => {\r\n const intl = useIntl();\r\n //---------------------- state\r\n // search form\r\n const [form] = Form.useForm();\r\n // search form values. query params.\r\n const [params, setParams] = useState();\r\n //---------------------- effects\r\n // Query data after entering this page. 进入此页面后查询数据\r\n useEffect(() => {\r\n form.setFieldsValue({\r\n recordID: recordID\r\n });\r\n form.submit();\r\n }, [form]);\r\n //---------------------- events\r\n // search\r\n const handleSearch = values => {\r\n setParams(values);\r\n };\r\n //DateForm\r\n let DateFormStr = date => {\r\n let nowDate = new Date(date);\r\n return (nowDate =\r\n `${nowDate.getFullYear()}` +\r\n '-' +\r\n `${nowDate.getMonth() + 1 >= 10\r\n ? nowDate.getMonth() + 1\r\n : '0' + (nowDate.getMonth() + 1)\r\n }` +\r\n '-' +\r\n `${nowDate.getDate() >= 10 ? nowDate.getDate() : '0' + nowDate.getDate()\r\n }`);\r\n };\r\n const handleExport = () => {\r\n let exportParams = form.getFieldsValue();\r\n if (exportParams != null && exportParams.saleOrder == undefined) {\r\n exportParams.saleOrder = '';\r\n }\r\n getSyncDataByRecordIdExport(exportParams).then(res => {\r\n let dataTable = [];\r\n res.map(item => {\r\n dataTable.push(item);\r\n });\r\n let options = {};\r\n options.fileName = `ImportResult_${DateFormStr(new Date())}_${moment(\r\n new Date()\r\n ).unix()}`;\r\n options.datas = [\r\n {\r\n sheetData: dataTable,\r\n sheetName: 'sheet1',\r\n sheetFilter: [\r\n 'saleOrder',\r\n 'result',\r\n 'description',\r\n ],\r\n sheetHeader: [\r\n 'saleOrder',\r\n 'result',\r\n 'description',\r\n ],\r\n columnWidths: [10, 10, 30, ],\r\n },\r\n ];\r\n let toExcel = new ExportJsonExcel(options);\r\n toExcel.saveExcel();\r\n });\r\n };\r\n //---------------------- view\r\n const columns = [\r\n {\r\n title: intl.formatMessage({ id: 'p.excelimportres.columns.saleorder' }),\r\n dataIndex: 'saleOrder',\r\n },\r\n {\r\n title: intl.formatMessage({ id: 'p.excelimportres.columns.status' }),\r\n dataIndex: 'result',\r\n },\r\n {\r\n title: intl.formatMessage({ id: 'p.excelimportres.columns.synchronousmessages' }),\r\n render: (item) => { return item.result == \"Fail\" ? item.description : item.result; },\r\n },\r\n ];\r\n\r\n return (\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\n \r\n \r\n \r\n \r\n {params && (\r\n \r\n )}\r\n \r\n );\r\n}\r\nexport default ExcelImportRes;","import React from 'react';\r\nimport './PageHeader.less';\r\n\r\nconst PageHeader = ({ title }) => {\r\n return (\r\n
\r\n
{title}
\r\n
\r\n );\r\n};\r\nexport default PageHeader;\r\n","const messages = {\r\n 'e.get': 'Failed to get {name}',\r\n 'e.getlist': 'Failed to get {name}',\r\n 'e.valfield': 'Failed to validate the {label}',\r\n 'e.exists': '{value} already exists.',\r\n 'e.notexists': '{value} does not exists.',\r\n};\r\nexport default messages;\r\n","const messages = {\r\n 'menu.setting': 'Settings',\r\n 'menu.menu': 'Menus',\r\n 'menu.role': 'Roles',\r\n 'menu.message': 'Mail Messages',\r\n 'menu.appconfig': 'Configurations',\r\n 'menu.user': 'Users',\r\n 'menu.home': 'Home',\r\n 'menu.report': 'Report',\r\n 'menu.excelimportres': 'Excel Import Result',\r\n 'menu.checkitems': 'Check Items',\r\n 'menu.masterdata': 'Master Data',\r\n 'menu.othermasterdata': 'Other Master Data',\r\n 'menu.stepandmrp': 'Step And MRP',\r\n 'menu.mailmodel': 'Mail Model',\r\n 'menu.promanagerbackup': 'Project Manager Backup',\r\n};\r\nexport default messages;\r\n","const messages = {\r\n 'p.login.error':\r\n \"Something went wrong and we can't sign you in right now. Please try again.\",\r\n 'p.login.welcome': 'Welcome to',\r\n 'p.login.employee': 'ABB Employee',\r\n 'p.login.employeetip': 'Sign in with ABB email',\r\n 'p.login.customer': 'ABB Customer',\r\n 'p.login.customertip': 'Query my orders',\r\n 'p.errorpage.403': 'FORBIDDEN',\r\n 'p.errorpage.404': 'PAGE NOT FOUND',\r\n 'p.errorpage.home': 'BACK TO HOME PAGE',\r\n 'p.role.name': 'role',\r\n 'p.role.plural': 'roles',\r\n 'p.user.name': 'user',\r\n 'p.user.plural': 'users',\r\n 'p.user.f.email': 'Email',\r\n 'p.user.f.name': 'Name',\r\n 'p.user.f.roles': 'Roles',\r\n 'p.user.s.kw': 'name, email...',\r\n 'p.user.s.roleph': 'All roles',\r\n 'p.orderpoint.pdpstart': 'Production Start',\r\n 'p.orderpoint.pdpfinish': 'Production Completed',\r\n 'p.orderpoint.pdpbilling': 'PDP Custom Clearance',\r\n 'p.orderpoint.blwarehouse': 'BL in-Warehouse',\r\n 'p.orderpoint.bldeparture': 'BL Delivery(Departure)',\r\n 'p.orderpoint.blarrival': 'BL Delivery(Arrival)',\r\n 'p.contact.pointph': 'All points',\r\n 'p.contact.emailph': 'email...',\r\n 'p.contact.f.ContactPoint': 'Contact Point',\r\n 'p.contact.f.PlantCode': 'Plant',\r\n 'p.contact.f.CompanyCode': 'Company',\r\n 'p.contact.f.PhaseOwnerEmail': 'Phase Owner Email',\r\n 'p.contact.f.PhaseOwnerName': 'Phase Owner Display Name',\r\n 'p.contact.f.Escalation1': '1st Escalation Owner',\r\n 'p.so.s.customerph': 'Customer Name...',\r\n 'p.so.s.projectph': 'Project Number...',\r\n 'p.so.s.robotph': 'Robot Type...',\r\n 'p.so.noorder': 'No Order',\r\n 'p.so.nobtorder': 'No bt orders',\r\n 'p.so.selectorder': 'PLEASE SELECT AN ORDER',\r\n 'p.so.sotitle': 'Contract Details',\r\n 'p.so.dntitle': 'Delivery Information',\r\n 'p.so.createdate': 'Created Date',\r\n 'p.so.releasedate': 'Release Date',\r\n 'p.so.sales': 'Sales',\r\n 'p.so.pm': 'PM',\r\n 'p.so.plandeparture': 'Planned Departure',\r\n 'p.so.actualdeparture': 'Actual Departure',\r\n 'p.so.planarrival': 'Planned Arrival',\r\n 'p.so.actualarrival': 'Actual Arrival',\r\n 'p.so.question': 'Question',\r\n 'p.so.f.RobotType': 'Robot Type',\r\n 'p.so.f.Quantity': 'Quantity',\r\n 'p.so.f.SalesUnit': 'Unit',\r\n 'p.dn.tobedelivered': 'To be delivered',\r\n 'p.dn.ondelivery': 'On delivery',\r\n 'p.dn.delivered': 'Delivered',\r\n 'p.dn.plandeparture': 'Planned Departure',\r\n 'p.dn.actualdeparture': 'Actual Departure',\r\n 'p.dn.planarrival': 'Planned Arrival',\r\n 'p.dn.actualarrival': 'Actual Arrival',\r\n 'p.dn.ActualGIDate': 'SAP Actual GI date',\r\n 'p.dn.tip': '系统仅显示6个月内的物流信息',\r\n 'p.dn.shipmentno': 'Shipement No.',\r\n 'p.bt.notstart': 'Not Started',\r\n 'p.bt.inprod': 'In Production',\r\n 'p.bt.delivered': 'Delivered',\r\n 'p.bt.ontime': 'On Time',\r\n 'p.bt.timegap': 'Time Gap',\r\n 'p.bt.delay': 'Delay',\r\n 'p.bt.plandate': 'Planned Date',\r\n 'p.bt.actualdate': 'Actual Date',\r\n 'p.commun.f.ProjectNumber': 'Project',\r\n 'p.commun.f.QuestionType': 'Order Point',\r\n 'p.commun.f.dnorder': 'Related Order',\r\n 'p.commun.f.RobotType': 'Robot Type',\r\n 'p.commun.f.PlannedDate': 'Planned Date',\r\n 'p.commun.f.ActualDate': 'Actual Date',\r\n 'p.commun.f.PhaseOwner': 'Send to',\r\n 'p.commun.f.QuestionContent': 'Question',\r\n 'p.commun.f.RequestUserName': 'Requested by',\r\n 'p.commun.f.RequestOn': 'Requested on',\r\n 'p.commun.f.ClosedUserName': 'Closed by',\r\n 'p.commun.f.ClosedOn': 'Closed on',\r\n 'p.commun.f.Answered': 'Answered',\r\n 'p.commun.dnhelp':\r\n 'Please enter project number when inquiring delivery questions',\r\n 'p.commun.btlabel': 'BT Order',\r\n 'p.commun.dnlabel': 'Delivery',\r\n 'p.commun.pendinglabel': 'Pending',\r\n 'p.commun.closedlabel': 'Closed',\r\n 'p.commun.questiontitle': 'Question',\r\n 'p.commun.answertitle': 'Answer',\r\n 'p.commun.addaction': 'Add Action',\r\n 'p.commun.closed': 'Closed',\r\n 'p.commun.closecfm': 'Are you sure to close this action?',\r\n 'p.answer.f.DelayReason': 'Delay Reason',\r\n 'p.answer.f.Description': 'Description',\r\n 'p.answer.f.UpdatePlanDate': 'Update Plan Date',\r\n 'p.answer.f.Actions': 'Actions',\r\n 'p.answer.f.ActionContent': 'Action',\r\n 'p.answer.f.ActionOwner': 'Action Owner',\r\n 'p.answer.f.TargetDate': 'Target Date',\r\n 'p.answer.f.ClosedTime': 'Closed On',\r\n 'p.customerorder.pagetitle': 'Orders',\r\n 'p.customerorder.s.customer': 'Customer Code',\r\n 'p.customerorder.s.project': 'Project Number',\r\n 'p.customerorder.searchtip':\r\n 'Please enter the customer code and project number to search ',\r\n 'p.customerorder.noorder': 'NO ORDER FOUND',\r\n 'p.role.code': 'Code',\r\n 'p.role.name': 'Name',\r\n 'p.role.remark': 'Remark',\r\n 'p.menu.addmenu': 'Add Menu',\r\n 'p.menu.addsubmenu': 'Add Sub Menu',\r\n 'p.menu.delete.msg': 'Are you sure to delete this menu?',\r\n 'p.menu.addfield': 'Add field',\r\n 'p.menu.code': 'Code',\r\n 'p.menu.name': 'Name',\r\n 'p.menu.title': 'Title',\r\n 'p.menu.url': 'Url',\r\n 'p.menu.order': 'Order',\r\n 'p.menu.visible': 'Visible',\r\n 'p.menu.enable': 'Enable',\r\n 'p.menu.description': 'Description',\r\n 'p.checklist.s.kw': 'Chinese Description,English Description...',\r\n 'p.checkitems.addmenu': 'Add a check item category',\r\n 'p.checkitems.addsubmenu': 'Add check item data',\r\n 'p.checkitems.name': 'Name',\r\n 'p.checkitems.enName': 'En Name',\r\n 'p.checkitems.checktype': 'Check Item Type',\r\n 'p.checkitems.addsubmenu.msg': 'Please select a item first.',\r\n 'p.checkitems.addsubmenu.second.msg': 'There is only a second-order relationship.',\r\n 'p.masterdata.addmenu': 'Add Master Data Category',\r\n 'p.masterdata.addsubmenu': 'Adding Master Data',\r\n 'p.delete.msg': 'Are you sure to delete?',\r\n 'p.home.mytask.title': 'My to-do list',\r\n 'p.home.excelimport.res.title': 'Project import result',\r\n 'p.home.excelimport.table.name': 'File Name',\r\n 'p.home.excelimport.table.time': 'CreatedDate',\r\n 'p.home.excelimport.table.result': 'Result',\r\n 'p.home.excelimport.table.action': 'Action',\r\n 'p.home.mytask.form.handoverstartdate': 'Handover Start Date',\r\n 'p.home.mytask.form.handoverenddate': 'Handover End Date',\r\n 'p.home.mytask.form.customercompany': 'Customer Name',\r\n 'p.home.mytask.form.projectname': 'Project Name',\r\n 'p.home.mytask.form.saleorder': 'SO',\r\n 'p.home.mytask.form.designnum': 'Design Num',\r\n 'p.home.mytask.form.commitmentstartdate': 'Confirmed EXW Date Start',\r\n 'p.home.mytask.form.commitmentenddate': 'Confirmed EXW Date End',\r\n 'p.home.mytask.form.actualstartdate': 'Actual EXW Date Start',\r\n 'p.home.mytask.form.actualenddate': 'Actual EXW Date End',\r\n 'p.home.mytask.form.invoicestartdate': 'Billing Start Date',\r\n 'p.home.mytask.form.invoiceenddate': 'Billing End Date',\r\n 'p.home.mytask.form.finishstartdate': 'Finish Start Date',\r\n 'p.home.mytask.form.finishenddate': 'Finish End Date',\r\n 'p.home.mytask.form.projectmanager': 'Project Manager',\r\n 'p.home.mytask.form.projectstate': 'State',\r\n 'p.home.mytask.form.excelimport': 'Excel Import',\r\n 'p.home.mytask.modal.excelbutton': 'Please Select Excel File',\r\n 'p.home.mytask.menu.excelmodel': 'Download Template',\r\n 'p.home.mytask.menu.excelimport': 'Excel Import',\r\n 'p.excelimportres.form.keyword': 'Sale Order',\r\n 'p.addproject.title': 'Add Project',\r\n 'p.addproject.edit.title': 'Edit Project',\r\n 'p.addproject.btn.add': 'Search Project',\r\n 'p.addproject.tabs.title.commommsg': 'Common Info',\r\n 'p.addproject.tabs.title.itemmsg': 'Item Info',\r\n 'p.home.mytask.form.btn.updateitemstate': 'Batch set Item status',\r\n 'p.home.mytask.columns.saleorder': 'SO',\r\n 'p.home.mytask.columns.projectname': 'Project Name',\r\n 'p.home.mytask.columns.handovertime': 'Project Handover Date',\r\n 'p.home.mytask.columns.customercompanyname': 'Customer Name',\r\n 'p.home.mytask.columns.promiseddeliverytime': 'Confirmed EXW Date',\r\n 'p.home.mytask.columns.sale': 'Sale',\r\n 'p.report.columns.saleorder': 'SO',\r\n 'p.report.columns.projectmanager': 'Project Manager',\r\n 'p.report.columns.sale': 'Sale',\r\n 'p.report.columns.projectname': 'Project Name',\r\n 'p.report.columns.handovertime': 'Project Handover Date',\r\n 'p.report.columns.customercompanyname': 'Customer Name',\r\n 'p.report.columns.promiseddeliverytime': 'Confirmed EXW Date',\r\n 'p.report.columns.actualshipmentdate': 'Actual EXW Date',\r\n 'p.report.columns.invoicedate': 'Billing Date',\r\n 'p.report.columns.factory': 'Plant',\r\n 'p.report.columns.profitcenter': 'PC',\r\n 'p.report.columns.guaranteeperiod': 'Warranty',\r\n 'p.excelimportres.columns.saleorder': 'SO',\r\n 'p.excelimportres.columns.status': 'Status',\r\n 'p.excelimportres.columns.synchronousmessages': 'Synchronous Messages',\r\n // -------------------------------------------------------\r\n 'p.addproject.checkItemsColumns.checkItemType': 'Check Items Type',\r\n 'p.addproject.checkItemsColumns.name': 'Check Items',\r\n 'p.addproject.checkItemsColumns.status': 'Status',\r\n 'p.addproject.checkItemsColumns.remark': 'Remark',\r\n 'p.addproject.checkItemsColumns.status.placeholder': 'Please select status.',\r\n 'p.addproject.checkItemsColumns.remark.placeholder': 'Please enter remarks',\r\n 'p.addproject.itemsColumns.commitmentDate': 'Confirmed EXW Date',\r\n 'p.addproject.itemsColumns.deliveryDate': 'Confirmed Contractual Delivery Date',\r\n 'p.addproject.itemsColumns.invoiceDate': 'Billing Date',\r\n 'p.addproject.itemsColumns.customerCode': 'Customer Code',\r\n 'p.addproject.itemsColumns.projectStatus': 'Project Status',\r\n 'p.addproject.testColumns.testType': 'Test Type',\r\n 'p.addproject.testColumns.testDate': 'Test Date',\r\n 'p.addproject.testColumns.remark': 'Remark',\r\n 'p.addproject.testColumns.testDate.placeholder': 'Please select a test date',\r\n 'p.addproject.testColumns.remark.placeholder': 'Please enter remarks',\r\n 'p.addproject.supplyColumns.arriveData': 'Arrive Date',\r\n 'p.addproject.supplyColumns.isRrive': 'Arrive or not',\r\n 'p.addproject.supplyColumns.remark': 'Remark',\r\n 'p.addproject.commommsg.basicinformation': 'Basic Information',\r\n 'p.addproject.commommsg.saleorder': 'SO',\r\n 'p.addproject.commommsg.projectname': 'Project Name',\r\n 'p.addproject.commommsg.designnum': 'Design Num',\r\n 'p.addproject.commommsg.handovertime': 'Project Handover Date',\r\n 'p.addproject.commommsg.logisticsterms': 'Incotems',\r\n 'p.addproject.commommsg.customerinformation': 'Customer Information',\r\n 'p.addproject.commommsg.customercompanyname': 'Customer Name',\r\n 'p.addproject.commommsg.customercontact': 'Customer Contact',\r\n 'p.addproject.commommsg.customercontact.placeholder': 'Please enter customer contact',\r\n 'p.addproject.commommsg.projectrelatedperson': 'Project stakeholders',\r\n 'p.addproject.commommsg.projectmanager': 'Project Manager',\r\n 'p.addproject.commommsg.sale': 'Sale',\r\n 'p.addproject.commommsg.electricalengineer': 'Electrical Engineer',\r\n 'p.addproject.commommsg.electricalengineer.placeholder': 'Please contact electrical engineers',\r\n 'p.addproject.commommsg.mechanicalengineer': 'Mechanical Engineer',\r\n 'p.addproject.commommsg.mechanicalengineer.placeholder': 'Please enter mechanical engineers',\r\n 'p.addproject.commommsg.checkitems': 'Check Items',\r\n 'p.addproject.commommsg.btn.settingcheckitems': 'Setting Check Items',\r\n 'p.addproject.commommsg.btn.classificationsociety': 'Marine',\r\n 'p.addproject.commommsg.btn.classificationsociety.placeholder': 'Please select Marine',\r\n 'p.addproject.itemmsg.btn.updateitemstate': 'Batch set Item status',\r\n 'p.addproject.modal.eidtitems.title': 'Edit Item',\r\n 'p.addproject.modal.eidtitems.iteminfo': 'Item Info',\r\n 'p.addproject.modal.eidtitems.promiseddeliverytime': 'Confirmed EXW Date',\r\n 'p.addproject.modal.eidtitems.deliveryDate': 'Confirmed Contractual Delivery Date',\r\n 'p.addproject.modal.eidtitems.voltage': 'Voltage',\r\n 'p.addproject.modal.eidtitems.actualshipmentdate': 'Actual EXW Date',\r\n 'p.addproject.modal.eidtitems.invoicedate': 'Billing Date',\r\n 'p.addproject.modal.eidtitems.guaranteeperiod': 'Warranty',\r\n 'p.addproject.modal.eidtitems.power': 'Power',\r\n 'p.addproject.modal.eidtitems.seriesnumber': 'SN',\r\n 'p.addproject.modal.eidtitems.purchaseordernum': 'PO',\r\n 'p.addproject.modal.eidtitems.logisticsterms': 'Incotems',\r\n 'p.addproject.modal.eidtitems.designfreezingpoint': 'FP (Manual Input)',\r\n 'p.addproject.modal.eidtitems.designfreezingpoint.placeholder': 'Please enter the FP (Manual Input)',\r\n 'p.addproject.modal.eidtitems.certificate': 'Certification',\r\n 'p.addproject.modal.eidtitems.certificate.placeholder': 'Please select Certification',\r\n 'p.addproject.modal.eidtitems.color': 'Motor Color',\r\n 'p.addproject.modal.eidtitems.color.placeholder': 'Please enter Motor Color',\r\n 'p.addproject.modal.eidtitems.packingrequirement': 'Packing',\r\n 'p.addproject.modal.eidtitems.packingrequirement.placeholder': 'Please select Packing',\r\n 'p.addproject.modal.eidtitems.projectfilepath': 'Project File Path',\r\n 'p.addproject.modal.eidtitems.addfilepath': 'Add File Path',\r\n 'p.addproject.modal.eidtitems.IprocessECN/ECRurl': 'iProcess ECN/ECR Url',\r\n 'p.addproject.modal.eidtitems.checkitem.name': 'Check Items',\r\n 'p.addproject.modal.eidtitems.settingcheckitems': 'Setting Check Items',\r\n 'p.addproject.modal.eidtitems.starconnectiontype': 'Star Connection Type',\r\n 'p.addproject.modal.eidtitems.starconnectiontype.placeholder': 'Select a star connection type',\r\n 'p.addproject.modal.eidtitems.witnesstestinformation': 'Witness Test Information',\r\n 'p.addproject.modal.eidtitems.customersupplyinformation': 'Customer Provided Information',\r\n 'p.addproject.modal.eidtitems.addcustomersupplies': 'Add Customer Provided Parts',\r\n 'p.addproject.modal.eidtitems.po.placeholder': 'Please enter the PO ',\r\n 'p.addproject.modal.eidtitems.arriveDate': 'Arrive Date',\r\n 'p.addproject.modal.eidtitems.arriveDate.placeholder': 'Please select the arrive date',\r\n 'p.addproject.modal.eidtitems.isArrive': 'Arrive or not',\r\n 'p.addproject.modal.eidtitems.isArrive.placeholder': 'Please select whether the arrive or not',\r\n 'p.addproject.modal.eidtitems.remark.placeholder': 'Please enter remarks',\r\n //-------------------------------------------------------------------\r\n 'p.stepandmrp.addstep': 'Add Step',\r\n 'p.stepandmrp.addmrp': 'Add MRP',\r\n 'p.checkitems.addstep.msg': 'Please select step.',\r\n 'p.checkitems.addmrp.second.msg': 'MRP can only be added based on step.',\r\n 'p.mytask.tabs.title.associatedSoPro': 'Associated SO Projects',\r\n 'p.mytask.tabs.title.noAssociatedSoPro': 'Non-Associated SO Projects',\r\n 'p.home.mytask.form.itemnum': 'Item',\r\n 'p.home.mytask.form.reservationnum': 'Reservation Num',\r\n 'p.addproject.modal.eidtitems.itemnum.placeholder': 'Please input the Item Num',\r\n 'p.addproject.modal.eidtitems.remark.placeholder': 'Please input the Remark',\r\n 'p.addproject.modal.eidtitems.productionplan': 'Production Plan',\r\n 'p.addproject.planColumns.planStep': 'Production steps',\r\n 'p.addproject.planColumns.planStartTime': 'Plan Start Time',\r\n 'p.addproject.planColumns.planEndTime': 'Plan End Time',\r\n 'p.addproject.planColumns.actualStartTime': 'Actual Start Time',\r\n 'p.addproject.planColumns.actualEndTime': 'Actual End Time',\r\n 'p.home.mytask.form.filedesc': 'Flie Describe',\r\n 'p.home.mytask.form.filepath': 'Flie Path',\r\n 'p.home.mytask.form.networth': 'Net Value',\r\n 'p.home.mytask.form.currency': 'Currency',\r\n 'p.home.mytask.form.number': 'QTY',\r\n 'p.home.mytask.form.Pre-deliverydate': 'Pre-delivery Date',\r\n 'p.addproject.modal.eidtitems.TVNum': 'Machine Type',\r\n 'p.addproject.modal.eidtitems.TVNum.place': 'Please input the Machine Type',\r\n 'p.home.mytask.form.currency.place': 'Please select the currency',\r\n 'p.home.mytask.form.Pre-deliverydate.place': 'Please select the Pre-deliverydate',\r\n 'p.home.mytask.form.projectstate.place': 'Please select the State',\r\n 'p.addproject.modal.eidtitems.addWitnessTest': 'Add Witness Test',\r\n 'p.addproject.testColumns.isCompleted': 'Is test Completed',\r\n 'p.home.mytask.form.contractNumber': 'Contract Number',\r\n 'p.addproject.commommsg.projectname.Request': 'Project name is request.',\r\n 'p.addproject.commommsg.reservationNum.Request': 'reservation number is request.',\r\n 'p.addproject.commommsg.projectManager.Request': 'project manager is request.',\r\n 'p.addproject.commommsg.itemNum.Request': 'Item Num is request.',\r\n 'p.addproject.commommsg.projectState.Request': 'State is request.',\r\n 'p.mailmodel.name': 'Name',\r\n 'p.mailmodel.title': 'Title',\r\n 'p.mailmodel.modelContext': 'Mail Model',\r\n 'p.addproject.info.checkitem.msg': 'The status of the project check item is required',\r\n 'p.addproject.item.checkitem.msg': 'The status of item check item is required',\r\n 'p.addproject.modal.eidtitems.createdBy': 'Created By',\r\n 'p.addproject.modal.eidtitems.createdTime': 'Created Time',\r\n 'p.addproject.testColumns.isSo': 'Associate sales order',\r\n 'p.addproject.testColumns.IsMarine': 'Is Marine',\r\n 'p.addproject.itemsColumns.abacuscode': 'ABACUS Code',\r\n 'p.addproject.modal.eidtitems.payment': 'Payment',\r\n 'p.home.mytask.form.industry': 'Industry',\r\n 'p.home.mytask.form.application': 'Application',\r\n 'p.report.columns.netRenminbi': 'ORDER REV(CNY)',\r\n 'report.waring.column.isnull': 'Please set the display field',\r\n 'p.addproject.commommsg.items.Request': 'Please add Item data',\r\n 'p.addproject.modal.delete.title': 'Delete',\r\n 'p.addproject.modal.deleteInfo': 'Delete Project',\r\n 'p.addproject.modal.deleteItem': 'Only Delete Project Item',\r\n 'p.addproject.modal.delete.message': 'Deleted data cannot be recovered, please confirm the operation !',\r\n 'p.addproject.modal.itemnum.message': \"Item num does not match !\",\r\n 'p.addproject.uploadTitle': 'Upload File',\r\n 'p.addproject.Customerdrawings': 'Customer Drawings',\r\n 'p.addproject.certificate': 'Certification',\r\n 'p.addproject.QualityDocumentation': 'Quality Documents',\r\n 'p.addproject.other': 'Others',\r\n 'p.filedmodelform.title': 'Display Setting List',\r\n 'p.filedmodelform.name': 'Name',\r\n 'p.filedmodelform.isDefault': 'Is Default Display',\r\n 'p.filedmodelform.operation': 'Operation',\r\n 'p.ReportFieldForm.title': 'Please select display fields',\r\n 'p.report.columns.item': 'Item',\r\n 'p.report.columns.default.show.fiels': 'Display fields by default',\r\n 'p.addproject.modal.eidtitems.uploadfile': 'Upload File',\r\n 'p.addproject.modal.eidtitems.addprojectfilepath': 'View Project File ',\r\n 'p.projectfilepathdetail.title': 'Project File Path',\r\n 'p.report.columns.customerContact': 'Contract Number',\r\n 'p.backup.form.status': 'Status',\r\n 'p.backup.form.startdate': 'Effective Start Date',\r\n 'p.backup.form.enddate': 'Effective End Date',\r\n 'p.backup.form.effectivedate': 'Effective Date',\r\n 'p.backup.form.backuppmname':'Backup Project Manager',\r\n 'p.home.mytask.form.sapUpdateTime': 'SAP Update Time',\r\n};\r\nexport default messages;\r\n","import error from './en-US/error';\r\nimport menu from './en-US/menu';\r\nimport pages from './en-US/pages';\r\n\r\nconst enUS = {\r\n 'common.loading': 'Loading...',\r\n 'common.search': 'Search',\r\n 'common.clear': 'Clear',\r\n 'common.add': 'Add',\r\n 'common.import': 'Import',\r\n 'common.edit': 'Edit',\r\n 'common.permissions': 'Permissions',\r\n 'common.delete': 'Delete',\r\n 'common.back': 'Back',\r\n 'common.save': 'Save',\r\n 'common.cancel': 'Cancel',\r\n 'common.submit': 'Submit',\r\n 'common.reset': 'Reset',\r\n 'common.close': 'Close',\r\n 'common.delcfm': 'Are you sure to delete {value}?',\r\n 'common.thisitem': 'this item',\r\n 'common.deleting': 'Deleting...',\r\n 'common.yes': 'Yes',\r\n 'common.no': 'No',\r\n 'common.unknown': 'Unknown',\r\n 'common.nocontent': 'No Content',\r\n 'common.loadmore': 'Load More',\r\n 'common.success': 'Success',\r\n 'common.example': 'e.g. {value}',\r\n 'layout.appname': 'Project Execution Management',\r\n 'layout.lang': 'Languages',\r\n 'layout.signout': 'Sign Out',\r\n 'common.exportexcel': 'Export Excel',\r\n 'common.copy.item': 'Copy Item Message',\r\n 'common.see': 'Detail',\r\n 'common.SetDisplayField': 'Set Display Field',\r\n 'common.Sure': 'Confirm',\r\n ...error,\r\n ...menu,\r\n ...pages,\r\n};\r\nexport default enUS;\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.message': '邮件',\r\n 'menu.appconfig': '配置',\r\n 'menu.user': '用户',\r\n 'menu.home': '主页',\r\n 'menu.report': '报表',\r\n 'menu.excelimportres': 'Excel导入结果',\r\n 'menu.checkitems': '检查项',\r\n 'menu.masterdata': '基础数据',\r\n 'menu.othermasterdata': '其他基础数据',\r\n 'menu.stepandmrp': '步骤和MRP',\r\n 'menu.mailmodel': '邮件模板',\r\n 'menu.promanagerbackup': '项目经理备份',\r\n};\r\nexport default messages;\r\n","const messages = {\r\n 'p.login.error': '登录失败,请重新登陆',\r\n 'p.login.welcome': '欢迎使用',\r\n 'p.login.employee': 'ABB 员工',\r\n 'p.login.employeetip': '使用ABB邮箱登录',\r\n 'p.login.customer': 'ABB 客户',\r\n 'p.login.customertip': '查询我的订单',\r\n 'p.errorpage.403': '访问受限',\r\n 'p.errorpage.404': '页面不存在',\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.s.kw': '姓名,邮箱...',\r\n 'p.user.s.roleph': '所有角色',\r\n 'p.orderpoint.pdpstart': 'PDP生产开始',\r\n 'p.orderpoint.pdpfinish': 'PDP生产完成',\r\n 'p.orderpoint.pdpbilling': 'PDP成品报关',\r\n 'p.orderpoint.blwarehouse': 'BL成品入库',\r\n 'p.orderpoint.bldeparture': 'BL成品运输(出发)',\r\n 'p.orderpoint.blarrival': 'BL成品运输(到达)',\r\n 'p.contact.pointph': '所有节点',\r\n 'p.contact.emailph': '邮箱...',\r\n 'p.contact.f.ContactPoint': '订单节点',\r\n 'p.contact.f.PlantCode': '工厂',\r\n 'p.contact.f.CompanyCode': '公司',\r\n 'p.contact.f.PhaseOwnerEmail': '节点联系人',\r\n 'p.contact.f.PhaseOwnerName': '联系人名称',\r\n 'p.contact.f.Escalation1': '1st Escalation Owner',\r\n 'p.so.s.customerph': '客户名称...',\r\n 'p.so.s.projectph': '项目编号...',\r\n 'p.so.s.robotph': '机器人型号...',\r\n 'p.so.noorder': '没有订单',\r\n 'p.so.nobtorder': '没有BT订单',\r\n 'p.so.selectorder': '请选择订单',\r\n 'p.so.sotitle': '合同详细数据',\r\n 'p.so.dntitle': '物流信息',\r\n 'p.so.createdate': '创建日期',\r\n 'p.so.releasedate': '发布日期',\r\n 'p.so.sales': '销售',\r\n 'p.so.pm': '项目经理',\r\n 'p.so.plandeparture': '计划出发',\r\n 'p.so.actualdeparture': '实际出发',\r\n 'p.so.planarrival': '计划到达',\r\n 'p.so.actualarrival': '实际到达',\r\n 'p.so.question': '提问',\r\n 'p.so.f.RobotType': '机器人型号',\r\n 'p.so.f.Quantity': '数量',\r\n 'p.so.f.SalesUnit': '单位',\r\n 'p.dn.tobedelivered': '待发货',\r\n 'p.dn.ondelivery': '运输中',\r\n 'p.dn.delivered': '已签收',\r\n 'p.dn.plandeparture': '计划出发',\r\n 'p.dn.actualdeparture': '实际出发',\r\n 'p.dn.planarrival': '计划到达',\r\n 'p.dn.actualarrival': '实际到达',\r\n 'p.dn.ActualGIDate': 'SAP发货时间',\r\n 'p.dn.tip': '系统仅显示6个月内的物流信息',\r\n 'p.dn.shipmentno': '物流单号',\r\n 'p.bt.notstart': '未开始',\r\n 'p.bt.inprod': '生产中',\r\n 'p.bt.delivered': '已交付',\r\n 'p.bt.ontime': 'On Time',\r\n 'p.bt.timegap': 'Time Gap',\r\n 'p.bt.delay': 'Delay',\r\n 'p.bt.plandate': '计划日期',\r\n 'p.bt.actualdate': '实际日期',\r\n 'p.commun.f.ProjectNumber': '项目',\r\n 'p.commun.f.QuestionType': '订单节点',\r\n 'p.commun.f.dnorder': '相关订单',\r\n 'p.commun.f.RobotType': '机器人型号',\r\n 'p.commun.f.PlannedDate': '计划日期',\r\n 'p.commun.f.ActualDate': '实际日期',\r\n 'p.commun.f.PhaseOwner': '联系人',\r\n 'p.commun.f.QuestionContent': '问题',\r\n 'p.commun.f.RequestUserName': '提问人',\r\n 'p.commun.f.RequestOn': '提问时间',\r\n 'p.commun.f.ClosedUserName': '关闭人',\r\n 'p.commun.f.ClosedOn': '关闭时间',\r\n 'p.commun.f.Answered': '答复状态',\r\n 'p.commun.dnhelp': '查询物流相关问题时请输入项目编号',\r\n 'p.commun.btlabel': 'BT订单',\r\n 'p.commun.dnlabel': '物流',\r\n 'p.commun.pendinglabel': '处理中',\r\n 'p.commun.closedlabel': '已关闭',\r\n 'p.commun.questiontitle': '问题',\r\n 'p.commun.answertitle': '答复',\r\n 'p.commun.addaction': 'Add Action',\r\n 'p.commun.closed': '已关闭',\r\n 'p.commun.closecfm': 'Are you sure to close this action?',\r\n 'p.answer.f.DelayReason': 'Delay Reason',\r\n 'p.answer.f.Description': 'Description',\r\n 'p.answer.f.UpdatePlanDate': 'Update Plan Date',\r\n 'p.answer.f.Actions': 'Actions',\r\n 'p.answer.f.ActionContent': 'Action',\r\n 'p.answer.f.ActionOwner': 'Owner',\r\n 'p.answer.f.TargetDate': 'Target Date',\r\n 'p.answer.f.ClosedTime': 'Closed On',\r\n 'p.customerorder.pagetitle': '订单查询',\r\n 'p.customerorder.s.customer': '客户代码',\r\n 'p.customerorder.s.project': '项目编号',\r\n 'p.customerorder.searchtip': '请输入客户代码和项目编号进行查询',\r\n 'p.customerorder.noorder': '找不到订单',\r\n 'p.role.code': '编码',\r\n 'p.role.name': '名称',\r\n 'p.role.remark': '备注',\r\n 'p.menu.addmenu': '添加菜单',\r\n 'p.menu.addsubmenu': '添加子菜单',\r\n 'p.menu.delete.msg': '是否确定删除该菜单?',\r\n 'p.menu.addfield': '添加字段',\r\n 'p.menu.code': '编码',\r\n 'p.menu.name': '名称',\r\n 'p.menu.title': '标题',\r\n 'p.menu.url': '链接',\r\n 'p.menu.order': '排序',\r\n 'p.menu.visible': '是否可见',\r\n 'p.menu.enable': '是否可用',\r\n 'p.menu.description': '描述',\r\n 'p.checklist.s.kw': '中文描述,英文描述...',\r\n 'p.checkitems.addmenu': '添加检查项类别',\r\n 'p.checkitems.addsubmenu': '添加检查项数据',\r\n 'p.checkitems.name': '中文名称',\r\n 'p.checkitems.enName': '英文名称',\r\n 'p.checkitems.checktype': '检查项类型',\r\n 'p.checkitems.addsubmenu.msg': '请选择父级项',\r\n 'p.checkitems.addsubmenu.second.msg': '最多只能添加二级子项.',\r\n 'p.masterdata.addmenu': '添加基础数据类别',\r\n 'p.masterdata.addsubmenu': '添加基础数据',\r\n 'p.delete.msg': '是否确定删除?',\r\n 'p.home.mytask.title': '我的待办项目',\r\n 'p.home.excelimport.res.title': '项目导入结果',\r\n 'p.home.excelimport.table.name': '文件名',\r\n 'p.home.excelimport.table.time': '创建时间',\r\n 'p.home.excelimport.table.result': '结果',\r\n 'p.home.excelimport.table.action': '操作',\r\n 'p.home.mytask.form.handoverstartdate': '交接开始日期',\r\n 'p.home.mytask.form.handoverenddate': '交接结束日期',\r\n 'p.home.mytask.form.customercompany': '客户公司名称',\r\n 'p.home.mytask.form.projectname': '项目名称',\r\n 'p.home.mytask.form.saleorder': '销售订单',\r\n 'p.home.mytask.form.designnum': '设计号',\r\n 'p.home.mytask.form.commitmentstartdate': '工厂承诺日期起',\r\n 'p.home.mytask.form.commitmentenddate': '工厂承诺日期止',\r\n 'p.home.mytask.form.actualstartdate': '工厂实际日期起',\r\n 'p.home.mytask.form.actualenddate': '工厂实际日期止',\r\n 'p.home.mytask.form.invoicestartdate': '开票日期起',\r\n 'p.home.mytask.form.invoiceenddate': '开票日期止',\r\n 'p.home.mytask.form.finishstartdate': '完工日期起',\r\n 'p.home.mytask.form.finishenddate': '完工日期止',\r\n 'p.home.mytask.form.projectmanager': '项目经理',\r\n 'p.home.mytask.form.projectstate': '状态',\r\n 'p.home.mytask.form.excelimport': 'Excel导入',\r\n 'p.home.mytask.modal.excelbutton': '请选择Excel文件',\r\n 'p.home.mytask.menu.excelmodel': 'Excel模板下载',\r\n 'p.home.mytask.menu.excelimport': 'Excel批量导入',\r\n 'p.excelimportres.form.keyword': '销售订单号',\r\n 'p.addproject.title': '添加项目',\r\n 'p.addproject.edit.title': '编辑项目',\r\n 'p.addproject.btn.add': '获取项目',\r\n 'p.addproject.tabs.title.commommsg': '通用信息',\r\n 'p.addproject.tabs.title.itemmsg': 'Item信息',\r\n 'p.home.mytask.form.btn.updateitemstate': '批量设置Item状态',\r\n 'p.home.mytask.columns.saleorder': '销售订单',\r\n 'p.home.mytask.columns.projectname': '项目名称',\r\n 'p.home.mytask.columns.handovertime': '项目交接时间',\r\n 'p.home.mytask.columns.customercompanyname': '客户公司名称',\r\n 'p.home.mytask.columns.promiseddeliverytime': '工厂的承诺出货日期',\r\n 'p.home.mytask.columns.sale': '销售',\r\n 'p.report.columns.saleorder': '销售订单',\r\n 'p.report.columns.projectmanager': '项目经理',\r\n 'p.report.columns.sale': '销售',\r\n 'p.report.columns.projectname': '项目名称',\r\n 'p.report.columns.handovertime': '项目交接时间',\r\n 'p.report.columns.customercompanyname': '客户公司名称',\r\n 'p.report.columns.promiseddeliverytime': '工厂承诺的出货日期',\r\n 'p.report.columns.actualshipmentdate': '实际工厂出货日期',\r\n 'p.report.columns.invoicedate': '开票日期',\r\n 'p.report.columns.factory': '工厂',\r\n 'p.report.columns.profitcenter': '利润中心',\r\n 'p.report.columns.guaranteeperiod': '质保期',\r\n 'p.excelimportres.columns.saleorder': '销售订单',\r\n 'p.excelimportres.columns.status': '同步状态',\r\n 'p.excelimportres.columns.synchronousmessages': '同步消息',\r\n // -------------------------------------------------------\r\n 'p.addproject.checkItemsColumns.checkItemType': '所属类别',\r\n 'p.addproject.checkItemsColumns.name': '检查项',\r\n 'p.addproject.checkItemsColumns.status': '状态',\r\n 'p.addproject.checkItemsColumns.remark': '备注',\r\n 'p.addproject.checkItemsColumns.status.placeholder': '请选择状态',\r\n 'p.addproject.checkItemsColumns.remark.placeholder': '请输入备注',\r\n 'p.addproject.itemsColumns.commitmentDate': '工厂承诺的出货日期',\r\n 'p.addproject.itemsColumns.deliveryDate': '物流条款的交货日期',\r\n 'p.addproject.itemsColumns.invoiceDate': '开票日期',\r\n 'p.addproject.itemsColumns.customerCode': '客户代码',\r\n 'p.addproject.itemsColumns.projectStatus': '项目状态',\r\n 'p.addproject.testColumns.testType': '测试类型',\r\n 'p.addproject.testColumns.testDate': '测试日期',\r\n 'p.addproject.testColumns.remark': '备注',\r\n 'p.addproject.testColumns.testDate.placeholder': '请选择测试日期',\r\n 'p.addproject.testColumns.remark.placeholder': '请输入备注',\r\n 'p.addproject.supplyColumns.arriveData': '到货日期',\r\n 'p.addproject.supplyColumns.isRrive': '是否到货',\r\n 'p.addproject.supplyColumns.remark': '备注',\r\n 'p.addproject.commommsg.basicinformation': '基础信息',\r\n 'p.addproject.commommsg.saleorder': '销售订单',\r\n 'p.addproject.commommsg.projectname': '项目名称',\r\n 'p.addproject.commommsg.designnum': '设计号',\r\n 'p.addproject.commommsg.handovertime': '项目交接时间',\r\n 'p.addproject.commommsg.logisticsterms': '物流条款',\r\n 'p.addproject.commommsg.customerinformation': '客户信息',\r\n 'p.addproject.commommsg.customercompanyname': '客户公司名称',\r\n 'p.addproject.commommsg.customercontact': '客户联系人',\r\n 'p.addproject.commommsg.customercontact.placeholder': '请输入客户联系人',\r\n 'p.addproject.commommsg.projectrelatedperson': '项目相关人',\r\n 'p.addproject.commommsg.projectmanager': '项目经理',\r\n 'p.addproject.commommsg.sale': '销售',\r\n 'p.addproject.commommsg.electricalengineer': '电气工程师',\r\n 'p.addproject.commommsg.electricalengineer.placeholder': '请输入电气工程师',\r\n 'p.addproject.commommsg.mechanicalengineer': '机械工程师',\r\n 'p.addproject.commommsg.mechanicalengineer.placeholder': '请输入机械工程师',\r\n 'p.addproject.commommsg.checkitems': '检查项',\r\n 'p.addproject.commommsg.btn.settingcheckitems': '设置检查项',\r\n 'p.addproject.commommsg.btn.classificationsociety': '船级社',\r\n 'p.addproject.commommsg.btn.classificationsociety.placeholder': '请选择船级社',\r\n 'p.addproject.itemmsg.btn.updateitemstate': '批量设置Item状态',\r\n 'p.addproject.modal.eidtitems.title': '编辑Item',\r\n 'p.addproject.modal.eidtitems.iteminfo': 'Item信息',\r\n 'p.addproject.modal.eidtitems.promiseddeliverytime': '工厂承诺的出货日期',\r\n 'p.addproject.modal.eidtitems.deliveryDate': '物流条款的交货日期',\r\n 'p.addproject.modal.eidtitems.voltage': '电压',\r\n 'p.addproject.modal.eidtitems.actualshipmentdate': '实际工厂出货日期',\r\n 'p.addproject.modal.eidtitems.invoicedate': '开票日期',\r\n 'p.addproject.modal.eidtitems.guaranteeperiod': '质保',\r\n 'p.addproject.modal.eidtitems.power': '功率',\r\n 'p.addproject.modal.eidtitems.seriesnumber': '序列号',\r\n 'p.addproject.modal.eidtitems.purchaseordernum': '采购订单号',\r\n 'p.addproject.modal.eidtitems.logisticsterms': '物流条款',\r\n 'p.addproject.modal.eidtitems.designfreezingpoint': '设计冻结点',\r\n 'p.addproject.modal.eidtitems.designfreezingpoint.placeholder': '请输入设计冻结点',\r\n 'p.addproject.modal.eidtitems.certificate': '证书',\r\n 'p.addproject.modal.eidtitems.certificate.placeholder': '请选择证书',\r\n 'p.addproject.modal.eidtitems.color': '颜色',\r\n 'p.addproject.modal.eidtitems.color.placeholder': '请输入颜色',\r\n 'p.addproject.modal.eidtitems.packingrequirement': '包装要求',\r\n 'p.addproject.modal.eidtitems.packingrequirement.placeholder': '请选择包装要求',\r\n 'p.addproject.modal.eidtitems.projectfilepath': '项目文件路径',\r\n 'p.addproject.modal.eidtitems.addfilepath': '添加路径',\r\n 'p.addproject.modal.eidtitems.IprocessECN/ECRurl': 'iProcess ECN/ECR 链接',\r\n 'p.addproject.modal.eidtitems.checkitem.name': '检查项',\r\n 'p.addproject.modal.eidtitems.settingcheckitems': '设置检查项',\r\n 'p.addproject.modal.eidtitems.starconnectiontype': '星接类型',\r\n 'p.addproject.modal.eidtitems.starconnectiontype.placeholder': '请选择星接类型',\r\n 'p.addproject.modal.eidtitems.witnesstestinformation': '见证测试信息',\r\n 'p.addproject.modal.eidtitems.customersupplyinformation': '客供件信息',\r\n 'p.addproject.modal.eidtitems.addcustomersupplies': '添加客供件',\r\n 'p.addproject.modal.eidtitems.po.placeholder': '请输入PO',\r\n 'p.addproject.modal.eidtitems.arriveDate': '到货日期',\r\n 'p.addproject.modal.eidtitems.arriveDate.placeholder': '请选择到货日期',\r\n 'p.addproject.modal.eidtitems.isArrive': '是否到货',\r\n 'p.addproject.modal.eidtitems.isArrive.placeholder': '请选择是否到货',\r\n 'p.addproject.modal.eidtitems.remark.placeholder': '请输入备注',\r\n //-------------------------------------------------------------------\r\n 'p.stepandmrp.addstep': '添加步骤',\r\n 'p.stepandmrp.addmrp': '添加MRP',\r\n 'p.checkitems.addstep.msg': '请选择步骤',\r\n 'p.checkitems.addmrp.second.msg': '只能基于步骤添加MRP.',\r\n 'p.mytask.tabs.title.associatedSoPro': '已关联SO项目',\r\n 'p.mytask.tabs.title.noAssociatedSoPro': '未关联SO项目',\r\n 'p.home.mytask.form.itemnum': 'Item 号',\r\n 'p.home.mytask.form.reservationnum': 'Reservation 号',\r\n 'p.addproject.modal.eidtitems.itemnum.placeholder': '请输入Item Num',\r\n 'p.addproject.modal.eidtitems.remark.placeholder': '请输入备注',\r\n 'p.addproject.modal.eidtitems.productionplan': '生产计划',\r\n 'p.addproject.planColumns.planStep': '生产步骤',\r\n 'p.addproject.planColumns.planStartTime': '计划开始时间',\r\n 'p.addproject.planColumns.planEndTime': '计划结束时间',\r\n 'p.addproject.planColumns.actualStartTime': '实际开始时间',\r\n 'p.addproject.planColumns.actualEndTime': '实际结束时间',\r\n 'p.home.mytask.form.filedesc': '文件描述',\r\n 'p.home.mytask.form.filepath': '文件地址',\r\n 'p.home.mytask.form.networth': '净值',\r\n 'p.home.mytask.form.currency': '币种',\r\n 'p.home.mytask.form.number': '数量',\r\n 'p.home.mytask.form.Pre-deliverydate': '预交付日期',\r\n 'p.addproject.modal.eidtitems.TVNum': '电机型号',\r\n 'p.addproject.modal.eidtitems.TVNum.place': '请输入电机型号',\r\n 'p.home.mytask.form.currency.place': '请选择币种',\r\n 'p.home.mytask.form.Pre-deliverydate.place': '请选择预交付日期',\r\n 'p.home.mytask.form.projectstate.place': '请选择状态',\r\n 'p.addproject.modal.eidtitems.addWitnessTest': '添加见证测试',\r\n 'p.addproject.testColumns.isCompleted': '否完成测试',\r\n 'p.home.mytask.form.contractNumber': '合同号',\r\n 'p.addproject.commommsg.projectname.Request': '项目名称是必填项.',\r\n 'p.addproject.commommsg.reservationNum.Request': 'Reservation 号是必填项.',\r\n 'p.addproject.commommsg.projectManager.Request': '项目经理是必填项.',\r\n 'p.addproject.commommsg.itemNum.Request': 'Item Num是必填项.',\r\n 'p.addproject.commommsg.projectState.Request': '状态是必填项.',\r\n 'p.mailmodel.name': '名称',\r\n 'p.mailmodel.title': '标题',\r\n 'p.mailmodel.modelContext': '邮件模板',\r\n 'p.addproject.info.checkitem.msg': '项目检查项的状态为必填项',\r\n 'p.addproject.item.checkitem.msg': 'Item检查项的状态为必填项',\r\n 'p.addproject.modal.eidtitems.createdBy': '创建者',\r\n 'p.addproject.modal.eidtitems.createdTime': '创建时间',\r\n 'p.addproject.testColumns.isSo': '是否关联SO',\r\n 'p.addproject.testColumns.IsMarine': '是否有船级社',\r\n 'p.addproject.itemsColumns.abacuscode': 'ABACUS代码',\r\n 'p.addproject.modal.eidtitems.payment': '付款条件',\r\n 'p.home.mytask.form.industry': '行业',\r\n 'p.home.mytask.form.application': '应用',\r\n 'p.report.columns.netRenminbi': 'ORDER REV(CNY)',\r\n 'report.waring.column.isnull': '请设置要显示的字段',\r\n 'p.addproject.commommsg.items.Request': '请添加Item数据',\r\n 'p.addproject.modal.delete.title': '删除',\r\n 'p.addproject.modal.deleteInfo': '删除项目',\r\n 'p.addproject.modal.deleteItem': '仅删除Item',\r\n 'p.addproject.modal.delete.message': '删除数据后将不能恢复,请确认操作 !',\r\n 'p.addproject.modal.itemnum.message': \"Item Num不匹配!\",\r\n 'p.addproject.uploadTitle': '上传文件',\r\n 'p.addproject.Customerdrawings': '客户图纸',\r\n 'p.addproject.certificate': '证书',\r\n 'p.addproject.QualityDocumentation': '质量文档',\r\n 'p.addproject.other': '其他',\r\n 'p.filedmodelform.title': '报表自定义显示',\r\n 'p.filedmodelform.name': '名称',\r\n 'p.filedmodelform.isDefault': '是否默认',\r\n 'p.filedmodelform.operation': '操作',\r\n 'p.ReportFieldForm.title': '请选择项目列表中需要显示的字段',\r\n 'p.report.columns.item': '条目',\r\n 'p.report.columns.default.show.fiels': '默认显示字段',\r\n 'p.addproject.modal.eidtitems.uploadfile': '上传文件',\r\n 'p.addproject.modal.eidtitems.addprojectfilepath': '查看项目文件',\r\n 'p.projectfilepathdetail.title': '项目文件路径',\r\n 'p.report.columns.customerContact': '合同号',\r\n 'p.backup.form.status': '状态',\r\n 'p.backup.form.startdate': '开始时间',\r\n 'p.backup.form.enddate': '结束时间',\r\n 'p.backup.form.effectivedate': '生效时间',\r\n 'p.backup.form.backuppmname': '备份项目经理',\r\n 'p.home.mytask.form.sapUpdateTime': 'SAP同步时间',\r\n};\r\nexport default messages;\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 'common.loading': '加载中...',\r\n 'common.search': '查询',\r\n 'common.clear': '清除',\r\n 'common.add': '添加',\r\n 'common.import': '导入',\r\n 'common.edit': '编辑',\r\n 'common.permissions': '权限',\r\n 'common.delete': '删除',\r\n 'common.back': '返回',\r\n 'common.save': '保存',\r\n 'common.cancel': '取消',\r\n 'common.submit': '提交',\r\n 'common.reset': '重置',\r\n 'common.close': '关闭',\r\n 'common.delcfm': '确认要删除{value}吗?',\r\n 'common.thisitem': '这条记录',\r\n 'common.deleting': '正在删除...',\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 'layout.appname': 'Project Execution Management',\r\n 'layout.lang': '多语言',\r\n 'layout.signout': '退出',\r\n 'common.exportexcel': '导出 Excel',\r\n 'common.copy.item': '复制Item信息',\r\n 'common.see': '查看',\r\n 'common.SetDisplayField': '设置显示字段',\r\n 'common.Sure': '确定',\r\n ...error,\r\n ...menu,\r\n ...pages,\r\n};\r\nexport default zhCN;\r\n","import React from 'react';\r\nimport { Dropdown, Menu } from 'antd';\r\nimport { GlobalOutlined, DownOutlined } from '@ant-design/icons';\r\nimport { setLocale } from '@/locales';\r\nimport { useIntl } from 'react-intl';\r\n\r\nconst LanguageSetting = props => {\r\n const intl = useIntl();\r\n const menu = (\r\n setLocale(key)}>\r\n English\r\n 中文\r\n \r\n );\r\n return (\r\n \r\n \r\n \r\n {intl.formatMessage({ id: 'layout.lang' })}\r\n \r\n \r\n \r\n );\r\n};\r\nexport default LanguageSetting;\r\n","import http from './http';\r\n\r\nexport function getAll() {\r\n return http.get('/ProjectImportRecord/GetAll');\r\n}\r\n\r\nexport function del(query) {\r\n return http.delete('/ProjectImportRecord/Delete', query);\r\n}","import React, { useState, useEffect } from 'react';\r\nimport { Button, Drawer, Space, Table, message, Popconfirm } from 'antd';\r\nimport { MessageOutlined, GlobalOutlined } from '@ant-design/icons';\r\nimport { useIntl, FormattedMessage } from 'react-intl';\r\nimport styles from './ExcelImportNotice.less';\r\nimport { getAll, del } from '@/api/importrecord';\r\nimport ExcelImportRes from '../features/home/ExcelImportRes';\r\n\r\nconst ExcelImportNotice = () => {\r\n const intl = useIntl();\r\n const [visible, setVisible] = useState(false);\r\n const [tableSource, setTableSource] = useState([]);\r\n const [editVisible, setEditVisible] = useState(false);\r\n const [recordID, setRecordID] = useState(null);\r\n\r\n useEffect(() => {\r\n if (visible) {\r\n getAll().then(res => {\r\n setTableSource(res);\r\n });\r\n }\r\n }, [visible]);\r\n\r\n const showDrawer = () => {\r\n setVisible(true);\r\n };\r\n const onClose = () => {\r\n setVisible(false);\r\n };\r\n\r\n const showDetailClick = id => {\r\n setRecordID(id);\r\n setEditVisible(true);\r\n };\r\n const handleItemSave = () => {\r\n setEditVisible(false);\r\n };\r\n const handleEditCancel = () => {\r\n setEditVisible(false);\r\n };\r\n const deleteClick = id => {\r\n del({ id }).then(() => {\r\n message.success('Success');\r\n getAll().then(res => {\r\n setTableSource(res);\r\n });\r\n });\r\n };\r\n\r\n const columns = [\r\n {\r\n title: intl.formatMessage({ id: 'p.home.excelimport.table.name' }),\r\n dataIndex: 'fileName',\r\n key: 'fileName',\r\n },\r\n {\r\n title: intl.formatMessage({ id: 'p.home.excelimport.table.time' }),\r\n dataIndex: 'importTime',\r\n key: 'importTime',\r\n render: importTime => {\r\n return importTime != null\r\n ? importTime.substring(0, 19).replace('T', ' ')\r\n : '';\r\n },\r\n },\r\n {\r\n title: intl.formatMessage({ id: 'p.home.excelimport.table.result' }),\r\n dataIndex: 'result',\r\n key: 'result',\r\n },\r\n {\r\n render: (text, item) => (\r\n \r\n \r\n deleteClick(item.id)}\r\n >\r\n \r\n \r\n \r\n ),\r\n },\r\n ];\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\nexport default ExcelImportNotice;\r\n","import React from 'react';\r\nimport { Menu, Divider } from 'antd';\r\nimport { UserOutlined, ExportOutlined } from '@ant-design/icons';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { selectMenus, selectName, signOut } from '../features/auth/authSlice';\r\nimport { Link } from 'react-router-dom';\r\nimport './LayoutDefault.less';\r\nimport { FormattedMessage, useIntl } from 'react-intl';\r\nimport LanguageSetting from './LanguageSetting';\r\nimport ExcelImportNotice from './ExcelImportNotice';\r\n\r\nfunction LayoutDefault({ children, menu }) {\r\n let year = new Date().getFullYear();\r\n return (\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\n
\r\n
{children}
\r\n
\r\n
\r\n
© {year} ABB
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default LayoutDefault;\r\n\r\n// child component\r\nfunction Navbar({ currentMenu }) {\r\n // component\r\n const { SubMenu } = Menu;\r\n // selector\r\n const menus = useSelector(selectMenus);\r\n const intl = useIntl();\r\n\r\n function getNavItems(items) {\r\n return items.map(x =>\r\n x.children && x.children.length > 0 ? (\r\n \r\n {getNavItems(x.children)}\r\n \r\n ) : (\r\n \r\n {/^((https|http|ftp|rtsp|mms)?:\\/\\/)[^\\s]+/.test(x.url) ? (\r\n \r\n {x.menuName}\r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n )\r\n );\r\n }\r\n\r\n return (\r\n \r\n {getNavItems(menus)}\r\n \r\n );\r\n}\r\n\r\nfunction 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 \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","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 { AUTH_STATUS, selectStatus } from '@/features/auth/authSlice';\r\n\r\nconst ErrorContent = ({ code, home }) => {\r\n const intl = useIntl();\r\n return (\r\n
\r\n
\r\n
{code}
\r\n
\r\n {intl.formatMessage({ id: `p.errorpage.${code}` })}\r\n
\r\n
\r\n {home !== false && (\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\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 React from 'react';\r\nimport './LayoutPlain.less';\r\nimport { FormattedMessage } from 'react-intl';\r\n\r\nfunction LayoutPlain({ children }) {\r\n let year = new Date().getFullYear();\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
{children}
\r\n
\r\n
\r\n
© {year} ABB
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default LayoutPlain;\r\n","import { lazy } from 'react';\r\n//import SideMenu from '../components/SideMenu';\r\nimport LayoutPlain from '../components/LayoutPlain';\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/mytask',\r\n component: lazy(() => import('../features/home/Mytask')),\r\n },\r\n {\r\n auth: 'home',\r\n path: '/home/excelimportres',\r\n component: lazy(() => import('../features/home/ExcelImportRes')),\r\n },\r\n {\r\n auth: 'report',\r\n path: '/home/addproject/:addtype/:id/:itemid',\r\n component: lazy(() => import('../features/home/AddProject')),\r\n },\r\n {\r\n auth: 'report',\r\n path: '/home/projectfilepathdetail/:id',\r\n component: lazy(() => import('../features/home/ProjectFilePathDetail')),\r\n },\r\n {\r\n auth: 'report',\r\n path: '/report/reportlist',\r\n component: lazy(() => import('../features/report/Reportlist')),\r\n },\r\n {\r\n auth: 'checkitems',\r\n path: '/masterdata/checkitems',\r\n component: lazy(() => import('../features/masterdata/checkitems/CheckList')),\r\n },\r\n {\r\n auth: 'othermasterdata',\r\n path: '/masterdata/othermasterdata',\r\n component: lazy(() => import('../features/masterdata/othermasterdata/MasterDataList')),\r\n },\r\n {\r\n auth: 'user',\r\n path: '/setting/user',\r\n component: lazy(() => import('../features/setting/user/UserList')),\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:'stepandmrp',\r\n path:'/setting/stepandmrp',\r\n component: lazy(() => import('../features/setting/stepAndMrp/Index')),\r\n },\r\n {\r\n auth:'mailmodel',\r\n path:'/setting/mailmodel',\r\n component: lazy(() => import('../features/setting/mailModel/Index')),\r\n },\r\n {\r\n auth: 'promanagerbackup',\r\n path: '/setting/promanagerbackup',\r\n component: lazy(() => import('../features/setting/promanagerbackup/BackupList')),\r\n },\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 {\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\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 }\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\nimport 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\nimport { getLocale } from './locales';\r\nimport 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 = getLocale();\r\nconst isZHCN = locale === 'zh-CN';\r\nconst messages = isZHCN ? zhCN : enUS;\r\nconst antdLocale = 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\nimport { setDevTooken } from '@/api/auth';\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// Local Dev Cookie Setting\r\n// Dev,QA 和 PRD 环境请删除 下列的配置\r\n// https://dev.cloudapps02.abb.com.cn/9aag034262\r\nlet mod = process.env.NODE_ENV;\r\nif (mod === \"development\") {\r\n const cookieVal = `XjTA3LqrZQpeTzQ8pNKGy0JHQqBZPFC2k4ijnF5SFMUTzsAgbM1p9VlkTjc2dhrIfRzTFhk9w3kC6oMd80eZHt0DB9czNnIX1YCLox3chwzXew48mqiuIXCGPTypWFFZ2sLmA0szfSaREmfvWeJqQ9RDveTkqiyoZP8nRq5MuzFJgy1DwTFjuIzrU6Hv2ggOfqPxJ8v84grkcILFgrkx0M6`;\r\n setDevTooken(cookieVal);\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 { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\r\nimport { getLoginInfo } from '@/api/account';\r\nimport { authorizeCode, refreshToken, removeRefreshToken } 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 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', getLoginInfo);\r\nexport const signOut = createAsyncThunk('auth/signOut', async () => {\r\n removeRefreshToken();\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, ...user } = action.payload;\r\n state.user = user;\r\n state.menus = menus;\r\n state.permissions = permissions;\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 // },\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\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\nexport const REQUEST_STATUS = {\r\n IDLE: 'idle',\r\n PENDING: 'pending',\r\n SUCCEEDED: 'succeeded',\r\n FAILED: 'failed',\r\n};\r\n\r\n// 通用action类型\r\n// 其他自定义类型的值应使用小写(如'add_submenu'),避免与common types中的值重复\r\nexport const COMMON_TYPES = {\r\n GETLIST: 'GETLIST',\r\n GET: 'GETITEM',\r\n ADD: 'ADD',\r\n EDIT: 'EDIT',\r\n VIEW: 'VIEW',\r\n DELETE: 'DELETE',\r\n DISCARD: 'DISCARD',\r\n TABLECHANGE: 'TABLECHANGE',\r\n};\r\n\r\nexport const REGX_GUID = /^[A-Fa-f0-9]{8}(-[A-Fa-f0-9]{4}){3}-[A-Fa-f0-9]{12}$/;\r\n","import axios from 'axios';\r\nimport { debugEnable } from '@/utils/utils';\r\nimport { getLocale } from '@/locales';\r\nimport { getRefreshToken, refreshToken } from './auth';\r\n\r\nconst instance = axios.create({\r\n baseURL: window.ENV_CFG.api_root + '/api',\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 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 axios.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, params) {\r\n return instance.get(url, { params });\r\n },\r\n post(url, data, config) {\r\n return instance.post(url, data, config);\r\n },\r\n delete(url, params) {\r\n return instance.delete(url, { params });\r\n },\r\n setAuthorization(token) {\r\n instance.defaults.headers.common[\r\n 'Authorization'\r\n ] = `${token.token_type} ${token.access_token}`;\r\n },\r\n};\r\n\r\nexport default http;\r\n","import axios from 'axios';\r\nimport http from './http';\r\nimport docCookies from '@/utils/cookie';\r\n\r\nconst cookieKey = '.auth.token';\r\nexport function removeRefreshToken() {\r\n return docCookies.removeItem(cookieKey);\r\n}\r\n\r\nexport function getRefreshToken() {\r\n return docCookies.getItem(cookieKey);\r\n}\r\n// Dev Cookie Setting\r\nexport function setDevTooken(token) {\r\n docCookies.setItem(cookieKey, token);\r\n}\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 = 'web';\r\n data.client_secret = 'test';\r\n return new Promise((resolve, reject) => {\r\n 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 resolve(res.data);\r\n } else {\r\n reject(res);\r\n }\r\n })\r\n .catch(e => {\r\n reject(e);\r\n });\r\n });\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"],"sourceRoot":""}