diff --git a/.env.production b/.env.production index 9f83072..83c2f1f 100644 --- a/.env.production +++ b/.env.production @@ -1,5 +1,5 @@ NODE_ENV=production VUE_APP_TAG_FLAG=1 -VUE_APP_LOGIN_PAGE='https://iam.sinotruk.com:7012/idp/oauth2/authorize?redirect_uri=http://srms.sinotruk.com/dashboard/analysis&state=123&client_id=SRMS&response_type=code' +VUE_APP_LOGIN_PAGE='https://iamuat.mychery.com:5443/idp/oauth2/authorize?redirect_uri=http://10.2.16.8:3344/dashboard/analysis&state=123&client_id=CGRSM&response_type=code' VUE_APP_CURRENT_SYSTEM='IAM' -VUE_APP_LOGOUT_PAGE='https://iam.sinotruk.com:7012/idp/profile/OAUTH2/Redirect/GLO?redirctToUrl=http://srms.sinotruk.com/dashboard/analysis&redirectToLogin=true&entityId=SRMS' \ No newline at end of file +VUE_APP_LOGOUT_PAGE='https://iamuat.mychery.com:5443/idp/profile/OAUTH2/Redirect/GLO?redirctToUrl=http://10.2.16.8:3344/dashboard/analysis&redirectToLogin=true&entityId=CGRSM' \ No newline at end of file diff --git a/.env.rsm b/.env.rsm new file mode 100644 index 0000000..83c2f1f --- /dev/null +++ b/.env.rsm @@ -0,0 +1,5 @@ +NODE_ENV=production +VUE_APP_TAG_FLAG=1 +VUE_APP_LOGIN_PAGE='https://iamuat.mychery.com:5443/idp/oauth2/authorize?redirect_uri=http://10.2.16.8:3344/dashboard/analysis&state=123&client_id=CGRSM&response_type=code' +VUE_APP_CURRENT_SYSTEM='IAM' +VUE_APP_LOGOUT_PAGE='https://iamuat.mychery.com:5443/idp/profile/OAUTH2/Redirect/GLO?redirctToUrl=http://10.2.16.8:3344/dashboard/analysis&redirectToLogin=true&entityId=CGRSM' \ No newline at end of file diff --git a/.env.srms b/.env.srms deleted file mode 100644 index 210993f..0000000 --- a/.env.srms +++ /dev/null @@ -1,5 +0,0 @@ -NODE_ENV=production -VUE_APP_TAG_FLAG=1 -VUE_APP_LOGIN_PAGE='https://iam-uat-new.sinotruk.com/idp/oauth2/authorize?redirect_uri=http://srms-test.sinotruk.com/dashboard/analysis&state=123&client_id=SRMS&response_type=code' -VUE_APP_CURRENT_SYSTEM='IAM' -VUE_APP_LOGOUT_PAGE='https://iam-uat-new.sinotruk.com/idp/profile/OAUTH2/Redirect/GLO?redirctToUrl=http://srms-test.sinotruk.com/dashboard/analysis&redirectToLogin=true&entityId=SRMS' \ No newline at end of file diff --git a/public/index.html b/public/index.html index 15e5914..63f34da 100644 --- a/public/index.html +++ b/public/index.html @@ -5,7 +5,7 @@ - 奇瑞法规智库 + 奇瑞标准法规管理系统 diff --git a/public/ueditor/lang/en/en.js b/public/ueditor/lang/en/en.js index c9ef275..ac6ed08 100644 --- a/public/ueditor/lang/en/en.js +++ b/public/ueditor/lang/en/en.js @@ -74,7 +74,7 @@ UE.I18N['en'] = { 'jsonEncodeError': 'Server Return Format Error', 'loading':"loading...", 'loadError':"load error", - 'errorLoadConfig': 'Server config not loaded, upload can not work.', + 'errorLoadConfig': 'Cannot upload images by pasting or dragging.', }, 'simpleupload':{ 'exceedSizeError': 'File Size Exceed', diff --git a/public/ueditor/lang/zh-cn/zh-cn.js b/public/ueditor/lang/zh-cn/zh-cn.js index b71af48..79d60a8 100644 --- a/public/ueditor/lang/zh-cn/zh-cn.js +++ b/public/ueditor/lang/zh-cn/zh-cn.js @@ -74,7 +74,7 @@ UE.I18N['zh-cn'] = { 'jsonEncodeError': '服务器返回格式错误', 'loading':"正在上传...", 'loadError':"上传错误", - 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!' + 'errorLoadConfig': '不支持通过粘贴或拖拽上传图片!' }, 'simpleupload':{ 'exceedSizeError': '文件大小超出限制', diff --git a/src/MobileApp.vue b/src/MobileApp.vue new file mode 100644 index 0000000..3455e04 --- /dev/null +++ b/src/MobileApp.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/src/api/documentToolApi.js b/src/api/documentToolApi.js index e68c2b9..0fc8448 100644 --- a/src/api/documentToolApi.js +++ b/src/api/documentToolApi.js @@ -5,6 +5,8 @@ import { getAction, postAction, postForParams } from './manage' const releaseSplitStandard = (params) => postAction('/laws/DocumentTool/documentSplit/publish', params) // 文档拆分-更改权限 const changePermission = (params) => postAction('/laws/DocumentTool/documentSplit/updatePermissions ', params) +// 文档拆分-校验是否有更改权限 +const checkChangePermission = (params) => getAction('/laws/DocumentTool/documentSplit/updatePermissionsCheck', params) // 文档拆分-撤回 const withdraw = (params) => postAction('/laws/DocumentTool/documentSplit/revocation', params) // 文档拆分-查看 @@ -101,10 +103,14 @@ const editMaintainList = (params) => postAction('/customCompare/lawsCustomCompar // 自定义比对-对比分析结果保存 const editComparsionResult = (params) => postAction('/customCompare/lawsCustomCompareInfo/saveCellCompareResult', params) +// 涉及系统部件下拉 +const getInvolvedSystem = (params) => getAction('/laws/standard/partName/', params) + export { // 文档拆分 releaseSplitStandard, changePermission, + checkChangePermission, withdraw, previewDocSplit, importSplitResult, @@ -156,5 +162,7 @@ export { getTableData, getMaintainList, editMaintainList, - editComparsionResult + editComparsionResult, + + getInvolvedSystem } diff --git a/src/assets/icon/iconfont.css b/src/assets/icon/iconfont.css index ba36a55..1b8234d 100644 --- a/src/assets/icon/iconfont.css +++ b/src/assets/icon/iconfont.css @@ -1,8 +1,8 @@ @font-face { font-family: "iconfont"; /* Project id 4236293 */ - src: url('iconfont.woff2?t=1721283373084') format('woff2'), - url('iconfont.woff?t=1721283373084') format('woff'), - url('iconfont.ttf?t=1721283373084') format('truetype'); + src: url('iconfont.woff2?t=1723190928792') format('woff2'), + url('iconfont.woff?t=1723190928792') format('woff'), + url('iconfont.ttf?t=1723190928792') format('truetype'); } .iconfont { @@ -13,6 +13,18 @@ -moz-osx-font-smoothing: grayscale; } +.icon-xiaoxi-mian--:before { + content: "\e60e"; +} + +.icon-yun:before { + content: "\e6e2"; +} + +.icon-rizhi:before { + content: "\e64e"; +} + .icon-fill-message-square:before { content: "\e706"; } diff --git a/src/assets/icon/iconfont.js b/src/assets/icon/iconfont.js index 1eba8ca..acd486a 100644 --- a/src/assets/icon/iconfont.js +++ b/src/assets/icon/iconfont.js @@ -1 +1 @@ -window._iconfont_svg_string_4236293='',function(c){var l=(l=document.getElementsByTagName("script"))[l.length-1],a=l.getAttribute("data-injectcss"),l=l.getAttribute("data-disable-injectsvg");if(!l){var h,i,o,t,v,m=function(l,a){a.parentNode.insertBefore(l,a)};if(a&&!c.__iconfont__svg__cssinject__){c.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(l){console&&console.log(l)}}h=function(){var l,a=document.createElement("div");a.innerHTML=c._iconfont_svg_string_4236293,(a=a.getElementsByTagName("svg")[0])&&(a.setAttribute("aria-hidden","true"),a.style.position="absolute",a.style.width=0,a.style.height=0,a.style.overflow="hidden",a=a,(l=document.body).firstChild?m(a,l.firstChild):l.appendChild(a))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(h,0):(i=function(){document.removeEventListener("DOMContentLoaded",i,!1),h()},document.addEventListener("DOMContentLoaded",i,!1)):document.attachEvent&&(o=h,t=c.document,v=!1,s(),t.onreadystatechange=function(){"complete"==t.readyState&&(t.onreadystatechange=null,e())})}function e(){v||(v=!0,o())}function s(){try{t.documentElement.doScroll("left")}catch(l){return void setTimeout(s,50)}e()}}(window); +window._iconfont_svg_string_4236293='',function(c){var l=(l=document.getElementsByTagName("script"))[l.length-1],a=l.getAttribute("data-injectcss"),l=l.getAttribute("data-disable-injectsvg");if(!l){var h,i,o,t,v,m=function(l,a){a.parentNode.insertBefore(l,a)};if(a&&!c.__iconfont__svg__cssinject__){c.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(l){console&&console.log(l)}}h=function(){var l,a=document.createElement("div");a.innerHTML=c._iconfont_svg_string_4236293,(a=a.getElementsByTagName("svg")[0])&&(a.setAttribute("aria-hidden","true"),a.style.position="absolute",a.style.width=0,a.style.height=0,a.style.overflow="hidden",a=a,(l=document.body).firstChild?m(a,l.firstChild):l.appendChild(a))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(h,0):(i=function(){document.removeEventListener("DOMContentLoaded",i,!1),h()},document.addEventListener("DOMContentLoaded",i,!1)):document.attachEvent&&(o=h,t=c.document,v=!1,z(),t.onreadystatechange=function(){"complete"==t.readyState&&(t.onreadystatechange=null,s())})}function s(){v||(v=!0,o())}function z(){try{t.documentElement.doScroll("left")}catch(l){return void setTimeout(z,50)}s()}}(window); \ No newline at end of file diff --git a/src/assets/icon/iconfont.json b/src/assets/icon/iconfont.json index 05f8449..a78131e 100644 --- a/src/assets/icon/iconfont.json +++ b/src/assets/icon/iconfont.json @@ -5,6 +5,27 @@ "css_prefix_text": "icon-", "description": "", "glyphs": [ + { + "icon_id": "5158298", + "name": "message", + "font_class": "xiaoxi-mian--", + "unicode": "e60e", + "unicode_decimal": 58894 + }, + { + "icon_id": "8361930", + "name": "cloud", + "font_class": "yun", + "unicode": "e6e2", + "unicode_decimal": 59106 + }, + { + "icon_id": "8431682", + "name": "log", + "font_class": "rizhi", + "unicode": "e64e", + "unicode_decimal": 58958 + }, { "icon_id": "38297476", "name": "fill-message-square", diff --git a/src/assets/icon/iconfont.ttf b/src/assets/icon/iconfont.ttf index b6b0d90..ec050f1 100644 Binary files a/src/assets/icon/iconfont.ttf and b/src/assets/icon/iconfont.ttf differ diff --git a/src/assets/icon/iconfont.woff b/src/assets/icon/iconfont.woff index ab27026..8e91369 100644 Binary files a/src/assets/icon/iconfont.woff and b/src/assets/icon/iconfont.woff differ diff --git a/src/assets/icon/iconfont.woff2 b/src/assets/icon/iconfont.woff2 index 1bbfebd..2e6ee8b 100644 Binary files a/src/assets/icon/iconfont.woff2 and b/src/assets/icon/iconfont.woff2 differ diff --git a/src/assets/image/loginBg.png b/src/assets/image/loginBg.png new file mode 100644 index 0000000..2614fad Binary files /dev/null and b/src/assets/image/loginBg.png differ diff --git a/src/assets/image/loginLogo.png b/src/assets/image/loginLogo.png new file mode 100644 index 0000000..0d7d1d0 Binary files /dev/null and b/src/assets/image/loginLogo.png differ diff --git a/src/assets/image/notMobile.png b/src/assets/image/notMobile.png new file mode 100644 index 0000000..f32f119 Binary files /dev/null and b/src/assets/image/notMobile.png differ diff --git a/src/assets/less/common.less b/src/assets/less/common.less index f1c2f68..891ac08 100644 --- a/src/assets/less/common.less +++ b/src/assets/less/common.less @@ -116,6 +116,18 @@ color: #C30D23 !important; } } +.operate-del-btn[disabled] { + color: rgba(0, 0, 0, 0.25) !important; + .operate-btn-icon { + color: rgba(0, 0, 0, 0.25) !important; + } +} +.del-btn-disabled { + color: rgba(0, 0, 0, 0.25) !important; + .operate-btn-icon { + color: rgba(0, 0, 0, 0.25) !important; + } +} .action-span-cell > a:first-child { margin-left: 0; @@ -203,6 +215,11 @@ } } +.ant-drawer-content-wrapper .ant-form-item-label, +.j-modal-box .ant-form-item-label { + overflow: hidden; + text-overflow: ellipsis; +} .box-title-text { line-height: 1.4; display: flex; @@ -750,7 +767,8 @@ color: #86909C; display: flex; align-items: center; - justify-content: space-between; + justify-content: flex-start; + gap: 20px; margin-bottom: 16px; } @@ -988,4 +1006,16 @@ } /deep/ .ant-table-hide-scrollbar { scrollbar-color: unset; +} +// 日期选择框 右侧重叠的问题 +.ant-calendar-picker-input.ant-input { + padding-right: 30px; +} +/deep/.ant-select-dropdown-menu-item:hover:not(.ant-select-dropdown-menu-item-disabled) { + background-color: rgba(0, 100, 250, 0.08); +} + +:global(.tooltip-style .ant-tooltip-inner) { + max-height: 40vh; + overflow: auto; } \ No newline at end of file diff --git a/src/common/lang/businessSupport/en.js b/src/common/lang/businessSupport/en.js index 6a0fa03..9fc9aff 100644 --- a/src/common/lang/businessSupport/en.js +++ b/src/common/lang/businessSupport/en.js @@ -2,7 +2,7 @@ module.exports = { // 标准化活动 standardizationActivity: { nodeName: 'Node name', // 节点名称 - currentNode: 'Current node', + currentNode: 'Current Node', conferenceStatisticsList: 'Statistical List', pleaseSelectNode: 'Please select a node', parentNode: 'Superior Node', @@ -11,22 +11,22 @@ module.exports = { contactPersonContactInformation: 'Contact person contact information', unit: 'Unit', phone: 'Phone', - groupParticipation: 'Group participation situation', + groupParticipation: 'Group Participation Situation', paymentInfo: 'Payment Information', - attendanceRecord: 'Meeting records', - addContactInformation: 'Add contact information', - addParticipation: 'Add participation status', - addPaymentInfo: 'Add payment information', - addAttendanceRecord: 'Add attendance record', + attendanceRecord: 'Meeting Records', + addContactInformation: 'Add Contact Information', + addParticipation: 'Add Participation Status', + addPaymentInfo: 'Add Payment Information', + addAttendanceRecord: 'Add Attendance Record', order: 'Our company\'s ranking order in the working group', ourPersonnel: 'Our personnel', data: 'Information', cost: 'Cost', year: 'Year', - plan: 'Inside the plan', - paymentMethod: 'Payment method', - expenseReimbursement: 'Expense allocation', - meetingMaterial: 'Meeting materials', + plan: 'Inside The Plan', + paymentMethod: 'Payment Method', + expenseReimbursement: 'Expense Allocation', + meetingMaterial: 'Meeting Materials', pleaseEnterCorrectPhone: 'Please enter the phone number in the correct format', addUpToFourLevels: 'This node cannot add child nodes', pleaseUploadGroupInfo: 'Please upload information on the participation of the group', @@ -41,14 +41,14 @@ module.exports = { questionDesc: 'Problem Description', attach: 'Annex', quizTime: 'Question Time', - answer: 'answer', + answer: 'Answer', poster: 'Poster', - answerNum: 'replies', - top: '【top】', - cancelTop: 'untop', + answerNum: 'Replies', + top: '【Top】', + cancelTop: 'Cancel Top up', setTop: 'Set To Top', - answerQuestion: 'reply to a question', - word: 'word', + answerQuestion: 'Reply to a question', + word: 'Word', pleaseEnterAnswerDesc: 'Please enter the answer description', answerQuestionTitle: 'Question answering', questionDetail: 'Problem Details' @@ -57,9 +57,9 @@ module.exports = { // 征求意见 askForAdvice: { standardNameNumber: 'Regulation Name / Regulations No.', - consultationCycle: 'Consultation period', - processManuscript: 'Process manuscript', - uploadDate: 'Upload date', + consultationCycle: 'Consultation Period', + processManuscript: 'Process Manuscript', + uploadDate: 'Upload Date', detailsOfComments: 'Opinion Details' } } diff --git a/src/common/lang/dashboard/en.js b/src/common/lang/dashboard/en.js index 727e018..8d6f67a 100644 --- a/src/common/lang/dashboard/en.js +++ b/src/common/lang/dashboard/en.js @@ -2,7 +2,7 @@ module.exports = { // 一般检索 generalSearch: { - generalSearch: 'General search', + generalSearch: 'General Search', advancedSearch: 'Advanced Search', homePage: 'Home page', searchHistory: 'Search History', @@ -34,16 +34,16 @@ module.exports = { // 高级搜索 advancedSearch: { searchType: 'Search Type', - standardNum: 'Standard number', + standardNum: 'Standard Number', standardName: 'Regulation Name', releaseDate: 'Published Date', materialDate: 'Implementation Date', standardStatus: 'Regulation Status', newProduceMaterialDate: 'New Certified Vehicle Implementation Date', newAttestationMaterialDate: 'New Production Vehicle Implementation Date', - storageConditions: 'Storage conditions', - unfoldConditions: 'Unfold conditions', - retrieveCategories: 'Retrieve categories', + storageConditions: 'Storage Conditions', + unfoldConditions: 'Unfold Conditions', + retrieveCategories: 'Retrieve Categories', standardType: 'Regulation Type', all: 'All', foreignStandards: 'External Standard(s) and Regulation(s)', @@ -70,14 +70,14 @@ module.exports = { }, // 快捷入口 quickEnter: { - quickEnter: 'Quick entrance', - menuManage: 'Menu management', - custom: 'custom', + quickEnter: 'Quick Entrance', + menuManage: 'Menu Management', + custom: 'Custom', optionModules: 'Option Modules', personalDisplayModule: 'Personal Display Module', - itemUnit: 'term', - itemsUnit: 'term', - listEmpty: 'List is empty', + itemUnit: 'Term', + itemsUnit: 'Term', + listEmpty: 'List Is Empty', pleaseEnterSearchContent: 'Please enter search content', maxSelected: 'Select up to 14 modules', newFunction: 'New features' @@ -89,7 +89,7 @@ module.exports = { }, // 友情链接 friendLink: { - friendLink: 'Friendship link', + friendLink: 'Friendship Link', more: 'More' }, // 检索 @@ -100,11 +100,11 @@ module.exports = { }, // 列表部分 tableList: { - newWarehousingStandards: 'Latest warehousing standards', - marketUpdates: 'Market updates', - newWarehousingEnterpriseStandards: 'Latest inbound enterprise standards', + newWarehousingStandards: 'Latest Warehousing Standards', + marketUpdates: 'Market Updates', + newWarehousingEnterpriseStandards: 'Latest Inbound Enterprise Standards', newInterpretationStandards: 'Latest Interpretation Standards', - implementStandards: 'Implement standards', + implementStandards: 'Implement Standards', interpretationInfo: 'Interpreting Information', substituteStandardNumber: 'Replacing Regulations No.', source: 'Source' diff --git a/src/common/lang/en-us.js b/src/common/lang/en-us.js index 230d92c..f5819c1 100644 --- a/src/common/lang/en-us.js +++ b/src/common/lang/en-us.js @@ -83,7 +83,7 @@ module.exports = { expandAll: 'Expand All', mergeAll: 'Drop All', treeOperation: 'Tree Operation', - creator: 'Created by', + creator: 'Creator', sort: 'Order', address: 'Address', remarks: 'Comments', @@ -106,7 +106,7 @@ module.exports = { unwatermarkedDownload: 'Unwatermarked download', fileName: 'File Name', fileDeclaration: 'File Description', - newNode: 'New node', + newNode: 'New Node', modifyNode: 'Modify Node', deleteNode: 'Delete Node', moveUp: 'Move Up', @@ -125,10 +125,11 @@ module.exports = { confirmWithdraw: 'Confirm to Withdraw?', confirmWithdrawContent: 'Confirm the withdrawal of this data?', doNotHavePermissionDeleteData: 'Do not have permission to delete this data', + publishedAndCannotDeleted: 'Published and cannot be deleted', noData: 'No Data', dataLoading: 'Data loading...', confirmDelete: 'Confirm the listing title you want to delete?', - uploadedBy: 'Uploaded By', + uploadedBy: 'Uploader', uploadTime: 'Upload Time', uploadFileBtn: 'Upload File', tips: 'Tips', @@ -136,7 +137,7 @@ module.exports = { importTip: 'Importing, please wait', exportFile: 'Export file', exportWithFiles: 'Export files with files', - templateFile: 'Template file', + templateFile: 'Template File', fileUploadSuccess: 'File uploaded successfully', fileDownloadFail: 'File download failure', pleaseEnterTreeSystem: 'Please enter the tree system', @@ -155,7 +156,7 @@ module.exports = { processExplain: 'Process Description', entrust: 'Entrust', turnTo: 'Turn To', - agree: 'agree', + agree: 'Agree', reject: 'Reject', countersign: 'Countersign', basicInformation: 'Basic', @@ -171,12 +172,12 @@ module.exports = { mergeStandardInformation: 'Merge standard information', pleaseEnterPersonnelInfo: 'Please fill in the personnel information completely', pleaseEnterRemarks: 'Please fill in remarks', - lookDetail: 'View details', - batchReject: 'Batch rejection', + lookDetail: 'View Details', + batchReject: 'Batch Rejection', pleaseSelectDistributeData: 'Select the data you want to distribute', pleaseSelectDeleteData: 'Please select the data to be deleted', deadline: 'Deadline', - submitAddAdd: 'Submit and add', + submitAddAdd: 'Submit And Add', pleaseSelectOneStandard: 'Please select at least one criterion', selectAtLeastOne: 'Select at least one list data', pleaseSelectTime: 'Please select time', @@ -184,7 +185,7 @@ module.exports = { addATable: 'Please add a form', select: 'Select', attach: 'Annex', - checkedAll: 'select all', + checkedAll: 'Select All', pleaseCompleteTableInfo: 'Please complete the form information', node: 'Node', atLeastSelect: 'At least choose', @@ -211,7 +212,7 @@ module.exports = { listName: 'Regulation List Name', countryRegion: 'Country/Region', ccPerson: 'CC Personnel', - startDate: 'Start date', + startDate: 'Start Date', endDate: 'End Date', curBefore: 'Before this day', curAfter: 'After this day', @@ -225,28 +226,29 @@ module.exports = { generate: 'Generate', vehicleType: 'Vehicle Catagory', modelStatus: 'Developing Status', - clickToUpload: 'Click to upload', - designEngineer: 'Design engineer', - pleaseUpload: 'Please upload', + clickToUpload: 'Click To Upload', + designEngineer: 'Design Engineer', + pleaseUpload: 'Please Upload', supportingMaterial: 'Supporting Files', support: 'You can upload files in ', - formatUpload: ' formats. ', + formatUpload: ' Formats. ', theSizeIs: 'Not more than ', loginExpired: 'Login has expired', loginExpiredMessage: 'Sorry, the login has expired. Please log in again', logInAgain: 'Log in again', loggingBackIn: 'Login has expired, logging in again', fileUploadFailed: 'File upload failed', - prompted: 'prompted', - noAccess: 'no access', + prompted: 'Prompted', + noAccess: 'No Access', resourceNotFound: 'Sorry, the resource was not found!', networkTimeout: 'Network Timeout', unauthorized: 'Unauthorized, please log in again', tableDataDisabledClear: 'The table requires at least one piece of data', - autoTakeout: 'Automatic takeout', - goHandle: 'To deal with', - disableInput: 'Inhibit input', - fileUploadError: 'File upload error', + autoTakeout: 'Automatic Takeout', + goHandle: 'To Deal With', + disableInput: 'Inhibit Input', + fileUploadError: 'File Upload Error', + importMaxMsg: 'The maximum size for importing files is {size}MB', // 标准字段 standardField: { standardEnglishName: 'Regulation English Name', @@ -271,7 +273,7 @@ module.exports = { }, // 页面头部 header: { - userMenuSearchMenu: 'Search menu', + userMenuSearchMenu: 'Search Menu', welcome: 'Welcome', logOutOfUserMenu: 'Logout', personalCenter: 'Personal Center', @@ -283,9 +285,9 @@ module.exports = { notice: 'Notice', systemNotice: 'System Notifications', lookMore: 'View More', - generalMsg: 'General message', - importantMsg: 'Important news', - EmergencyMsg: 'Emergency messages', + generalMsg: 'General Message', + importantMsg: 'Important News', + EmergencyMsg: 'Emergency Messages', logOutTip: 'Do you really want to log out' }, // 用户管理 @@ -311,7 +313,7 @@ module.exports = { account: 'Account', userName: 'User Name', post: 'Post', - selectedAccount: 'Selected account?', + selectedAccount: 'Selected Account?', // 新增、编辑用户 loginPassword: 'Login Password', confirmPassword: 'Confirm Password', @@ -332,7 +334,7 @@ module.exports = { enterMailboxCorrect: 'Please enter a mailbox in the correct format', userExists: 'User name already exists', workNoExists: 'Job number already exists', - handStamp: 'Handwritten seal', + handStamp: 'Handwritten Seal', uploadHandStamp: 'Upload handwritten seal' }, // 高级查询 @@ -370,7 +372,7 @@ module.exports = { // 选择部门弹框 selectDepartment: { clickSelectDepartment: 'Please click Select Department', - selectDepartment: 'Select department', + selectDepartment: 'Select Department', enterDepartmentPressEnter: 'Please enter the department name and press Enter to search' }, // 用户回收站 @@ -406,8 +408,8 @@ module.exports = { // 新增,编辑角色 roleDescribe: 'RoleDescribe', lengthIsTwoToThirty: 'The length is 2 to 30 characters', - notExceed: 'not exceed', - charLength: 'characters in length', + notExceed: 'Not Exceed', + charLength: 'Characters in length', roleCodeNotChinese: 'The role code cannot enter Chinese characters!', // 角色权限配置 youHavePermissions: 'The permissions you have', @@ -497,6 +499,7 @@ module.exports = { docTool: { // 文档拆分 split: { + textSearch: 'Text Search', translation: 'Translation', splitText: 'Split Library File', importResults: 'Import Split Results', @@ -505,23 +508,23 @@ module.exports = { fileStatus: 'File Status', splitTime: 'Split Time', splitResult: 'Split Result', - batchCopy: 'Batch copy', - batchEdit: 'Batch edit', + batchCopy: 'Batch Copy', + batchEdit: 'Batch Edit', mergerClause: 'Merge Item', - dataType: 'Data type', + dataType: 'Data Type', split: 'Split', article: 'Article', - clauseLabel: 'Clause label', - splitResultFile: 'Split result file', + clauseLabel: 'Article label', + splitResultFile: 'Split Result File', splitImportResultTip: 'Upload the split result file in accordance with the relevant format requirements, please ', - clickToView: 'click to view', + clickToView: 'Click To View', gotIt: 'Got It', - formatRequirement: 'Format requirement', + formatRequirement: 'Format Requirement', formatRequirementContentOne: '1.The imported document is in zip format', - formatRequirementContentTwo: '2.The images are in jpg, jpeg, png, gif format', + formatRequirementContentTwo: '2.The images are in jpg, jpeg, png format', formatRequirementContentThree: '3.The image in the document is displayed in the form of a link in the exported excel, click the link to jump to the specified local file', formatRequirementContentFour: '4.The table in the document is displayed in the form of a link in the exported excel. Click the link to jump to the specified sheet page', - changePermissions: 'Change permissions', + changePermissions: 'Change Permissions', pleaseSelectUser: 'Please select a user', longTermEffectiveness: 'Long-term effectiveness', selectFileType: 'Please select a file type', @@ -537,7 +540,7 @@ module.exports = { gbt: 'GB/T', gso: 'GSO', batchSetting: 'Batch Set', - clauseContent: 'Item Content', + clauseContent: 'Article Content', clauseNo: 'Article No.', clauseName: 'Article Name', selectDirectoryTerms: 'Please Select the directory location to add terms', @@ -549,10 +552,10 @@ module.exports = { table: 'Table', addQuantity: 'Add Quantity', enterQuantity: 'Please enter quantity', - numberRows: 'Number of rows', - numberColumns: 'Number of columns', - maximumSelection: 'Maximum selection', - pieceOfData: 'Article data' + numberRows: 'Number Of Rows', + numberColumns: 'Number Of Columns', + maximumSelection: 'Maximum Selection', + pieceOfData: 'Article Data' }, // 文档比对 comparison: { @@ -566,7 +569,7 @@ module.exports = { newDocumentTextName: 'Current Document Name', newTextState: 'Current Document Status', releaseSituation: 'Published Status', - comparisonResults: 'Comparison results', + comparisonResults: 'Comparison Results', initiateComparison: 'Initiate Comparison', textStatus: 'Text Status', selectedStandard: 'Selected Standard', @@ -600,7 +603,7 @@ module.exports = { operator: 'Operator', whetherToMakePublic: 'Is it publicly available', referenceStandard: 'Involving Standards', - comparisonTime: 'Compare time', + comparisonTime: 'Compare Time', onlineComparison: 'Online Comparison', standardList: 'Standard List', comparisonMaintain: 'Comparative Maintenance', @@ -621,17 +624,17 @@ module.exports = { // OCR文本识别 ocrTextRecognition: { upload: 'Upload', - getFile: 'Get files', + getFile: 'Get Files', standardCategory: 'Regulation Category', standardNumber: 'Regulation No.', standardName: 'Regulation Name', textStatus: 'Text Status', - conversionResults: 'Conversion results', - conversionStatus: 'Transition state', - timeConsuming: 'Time consumption (seconds)', + conversionResults: 'Conversion Results', + conversionStatus: 'Transition State', + timeConsuming: 'Time Consumption (Seconds)', file: 'File', uploadPdf: 'Upload PDF', - manuallySearch: 'Manually search' + manuallySearch: 'Manually Search' } }, // 业务支持 @@ -646,9 +649,9 @@ module.exports = { // 我的消息 my: { myMessage: 'My Message', - title: 'title', - publisher: 'publisher', - readingStatus: 'readingStatus', + title: 'Title', + publisher: 'Publisher', + readingStatus: 'Reading Status', messageContent: 'Message Content', messageType: 'Message Type', allLabelsRead: 'All Mark as Read', @@ -673,7 +676,7 @@ module.exports = { }, // 市场法规清单选择器 marketRegulationsListSelect: { - marketRegulationsListSelection: 'Selection list' + marketRegulationsListSelection: 'Selection List' }, // 条款选择器 clauseSelect: { @@ -699,7 +702,7 @@ module.exports = { select: 'Select', selectUserOrOrgan: 'Select User/Organization', organization: 'Organization', - name: 'name', + name: 'Name', secondLevel: 'Second Level', threeLevel: 'Three Level' }, @@ -708,7 +711,7 @@ module.exports = { select: 'Select', selectUser: 'Select User', userList: 'Users List', - name: 'name', + name: 'Name', post: 'Post', selectedPersonnel: 'Selected personnel', workGroup: 'Internal working group' @@ -728,7 +731,7 @@ module.exports = { cannotPreview: 'This file type does not support preview, is preparing for you to download...', cannotUploadEmpty: 'Cannot upload empty files', maxSize: 'The file size is limited to 500M', - onlyUploadPic: 'Please upload pictures', + onlyUploadPic: 'Please Upload Pictures', pleaseUpload: 'Please Upload', theFollowingDocuments: 'M The following files', file: 'File', @@ -777,5 +780,27 @@ module.exports = { regulatoryComplianceAssessmentDatabase, onlineEditor: { missRequireField: 'Missing required fields' + }, + // 登录 + login: { + systemName: 'Chery Global Regulation And Standard Management System', + language: 'English', + userLogin: 'ACCOUNT LOGIN', + account: 'Account Number', + password: 'Password', + code: 'Verification Code', + login: 'Login', + showPassword: 'Show Password', + hidePassword: 'Hide Password', + loginFailMessage: 'Login Failed', + requestFailMessage: 'There was an error with the request, please try again later', + checkPhoneMessage: 'Your phone number format is incorrect', + checkCodeMessage: 'The verification code you entered is incorrect', + codeSendFail: 'Verification code sending failed', + welcome: 'Welcome', + welcomeBack: ',Welcome Back', + reLogin: 'Re Login', + phone: 'Mobile Phone Number', + codeSending: 'Verification code is being sent' } } diff --git a/src/common/lang/enterpriseStandardLibrary/en.js b/src/common/lang/enterpriseStandardLibrary/en.js index 493551b..42b1dd6 100644 --- a/src/common/lang/enterpriseStandardLibrary/en.js +++ b/src/common/lang/enterpriseStandardLibrary/en.js @@ -14,30 +14,30 @@ module.exports = { templateExport: 'Enterprise Standard Template', pleaseSelectLeastOneNode: 'Please select Level 2 and below system first', myCollectNotRemove: 'My collection system cannot be removed from the standard', - authorizationDepart: 'Authorized department', - authorizationUser: 'Authorized officer', - maturityDate: 'Authorization expiration date', - detailTitle: 'Enterprise Standards Details page', - evaluate: 'Evaluation of enterprise standard', - updateRecord: 'Update record', - submitQuestion: 'Submit a question', - standardResolutionSheet: 'Standard interpretation', - nodeName: 'Node name', - subjectToClause: 'Section clause', - standardContentOrRequirements: 'Standard content or requirements', - rectificationDepartment: 'Rectification department', - auditContent: 'Monitoring content', + authorizationDepart: 'Authorized Department', + authorizationUser: 'Authorized Officer', + maturityDate: 'Authorization Expiration Date', + detailTitle: 'Enterprise Standards Details Page', + evaluate: 'Evaluation Of Enterprise Standard', + updateRecord: 'Update Record', + submitQuestion: 'Submit A Question', + standardResolutionSheet: 'Standard Interpretation', + nodeName: 'Node Name', + subjectToClause: 'Article', + standardContentOrRequirements: 'Enterprise Standard Content', + rectificationDepartment: 'Rectification Dept.', + auditContent: 'Supervisory Contents', disabledBatchDel: 'If the selected data has no operation permission, select another data', pleaseSelectUserOrDepart: 'The authorized department and authorized person must select at least one', youNot: "You didn't", dataPremissReCheck: 'Data permission, please re-select', authorizationExpirationDate: 'Authorization expiration date', - cancelAuthor: 'deauthorize', - authorizationDate: 'Authorization date', - authorizationStandard: 'Authorized bid', + cancelAuthor: 'Deauthorize', + authorizationDate: 'Authorization Date', + authorizationStandard: 'Authorized Bid', confirmCancelAuthor: 'Confirm the deauthorization?', - viewAll: 'View all', - inputExample: 'Input example:', + viewAll: 'View All', + inputExample: 'Input Example:', nullAutoCreate: 'Do not fill automatically generated', cannotJumpAfterDeletion: 'After deletion, other places using the standard cannot jump, confirm deletion?' }, @@ -46,9 +46,9 @@ module.exports = { enterpriseStandardNum: 'Enterprise Standard No.', enterpriseStandardName: 'Enterprise Standard', publishDate: 'Published Date', - reviewDate: 'Review date', - initReview: 'Initiate a review', - reviewResult: 'Review results', + reviewDate: 'Review Date', + initReview: 'Initiate A Review', + reviewResult: 'Review Results', principalDrafter: 'Chief Drafter', mainDraftingUnit: 'Chief Drafting Unit' }, @@ -63,24 +63,24 @@ module.exports = { headOfMainDraftingUnit: 'Chief Drafting Unit Head', projectStatus: 'Project Status', changeState: 'Change Status', - pusherWorkNo: 'Promote artificial numbers', + pusherWorkNo: 'Promote Artificial Numbers', standardType: 'Regulation Type', - revisionType: 'Revision type', - planApprovalDate: 'Planned approval date', - createDate: 'Creation date', + revisionType: 'Revision Type', + planApprovalDate: 'Planned Approval Date', + createDate: 'Creation Date', exportFileName: 'Enterprise Standard Schedule', - authDepartment: 'Authorized department', - enterpriseStandardCode: 'Enterprise standard code', - suitUnit: 'Cooperate with units', - standardPusher: 'Standard promoter', - draftPlanFinishDate: 'Draft plan completion date', + authDepartment: 'Authorized Department', + enterpriseStandardCode: 'Enterprise Standard Code', + suitUnit: 'Cooperate With Units', + standardPusher: 'Standard Promoter', + draftPlanFinishDate: 'Draft Plan Completion Date', exposureDraftPlanFinishDate: 'Draft for Solicitation of Comments Plan Completion Date', - planSubmissionDate: 'Planned approval date', - draftFinishDate: 'Draft completion date', - submitDraftDate: 'Submission date of draft', - isAskForAdvice: 'Whether to solicit opinions', + planSubmissionDate: 'Planned Approval Date', + draftFinishDate: 'Draft Completion Date', + submitDraftDate: 'Submission Date Of Draft', + isAskForAdvice: 'Whether To Solicit Opinions', exposureDraftFinishDate: 'Date of completion of the draft for soliciting opinions', - reviewDate: 'Review date', + reviewDate: 'Review Date', submissionDate: 'Approval Date', releaseDate: 'Published Date', detailTitle: 'Enterprise Standard Plan Details Page', @@ -89,10 +89,10 @@ module.exports = { gradeClassification: 'Classification of Enterprise Standard Levels', projectType: 'Project Type', rangeOfApplication: 'Scope', - enterpriseStandardSystem: 'Enterprise standard system', - partName: 'Classification of components', + enterpriseStandardSystem: 'Enterprise Standard System', + partName: 'Classification Of Components', scopeOfApplication: 'Scope of application of the standard', - compilationIllustration: 'Compilation instructions', + compilationIllustration: 'Compilation Instructions', projectBackground: 'Background and Basis of Project Proposal', similarNaStandardsAnalysis: 'Analysis of similar international, national, and industry standards', similarEnStandardsAnalysis: 'Comparative analysis of similar standards in enterprises', diff --git a/src/common/lang/enterpriseStandardLibrary/zh.js b/src/common/lang/enterpriseStandardLibrary/zh.js index 0039e87..028114b 100644 --- a/src/common/lang/enterpriseStandardLibrary/zh.js +++ b/src/common/lang/enterpriseStandardLibrary/zh.js @@ -95,7 +95,7 @@ module.exports = { compilationIllustration: '编制说明', projectBackground: '立项背景、立项依据', similarNaStandardsAnalysis: '国际、国家及行业同类标准分析', - similarEnStandardsAnalysis: '企业同类标准对比分析', + similarEnStandardsAnalysis: '企业同类标准比对分析', standardLeadingNecessity: '立项标准的领先性与必要性', projectExpectedEffects: '立项目的及预期效果等' } diff --git a/src/common/lang/personalCenter/en.js b/src/common/lang/personalCenter/en.js index 46bec11..7604ee8 100644 --- a/src/common/lang/personalCenter/en.js +++ b/src/common/lang/personalCenter/en.js @@ -43,14 +43,14 @@ module.exports = { }, // 任务转交 taskCareOf: { - basicLibraryInfo: 'Basic library information', + basicLibraryInfo: 'Basic Library Information', processInfo: 'Process Information', user: 'User', type: 'Type', standardNum: 'Regulation No.', standardName: 'Regulation Name', role: 'Role', - transferUser: 'Transferred by', + transferUser: 'Transferred By', transfer: 'Transmit', nodeName: 'Node name' } diff --git a/src/common/lang/projectLibrary/en.js b/src/common/lang/projectLibrary/en.js index 1d4ca4f..3f2deba 100644 --- a/src/common/lang/projectLibrary/en.js +++ b/src/common/lang/projectLibrary/en.js @@ -1,37 +1,37 @@ module.exports = { - projectName: 'Project name', // 项目名称 - workOrderNumber: 'Work order number', // 工作令编号 - projectHealthStatus: 'Project health', // 项目健康度 + projectName: 'Project Name', // 项目名称 + workOrderNumber: 'Work order Number', // 工作令编号 + projectHealthStatus: 'Project Health', // 项目健康度 selectProject: 'Select Project', // 选择项目 - projectLevel: 'Project level', // 项目级别 + projectLevel: 'Project Level', // 项目级别 // 车型项目库 vehicleItemLibrary: { - vehicleItemLibrary: 'Vehicle item library', // 车型项目库 - PMSInfoSynchronization: 'PMS information synchronization', // PMS信息同步 - projectSource: 'Project source', // 项目来源 - projectLeader: 'Project leader', // 项目负责人, + vehicleItemLibrary: 'Vehicle Item Library', // 车型项目库 + PMSInfoSynchronization: 'PMS Information Synchronization', // PMS信息同步 + projectSource: 'Project Source', // 项目来源 + projectLeader: 'Project Leader', // 项目负责人, PMSDetails: 'PMS Details', // PMS详情 noMatchItemDetails: 'Details of non compliant items', - riskOverview: 'Risk overview', // 风险性总览 - conform: 'Conform to', // 符合 + riskOverview: 'Risk Overview', // 风险性总览 + conform: 'Conform To', // 符合 inconformity: 'Inconformity', // 不符合 - toBeVerified: 'To be verified', // 待验证 - uninvolved: 'Not involve', // 不涉及 + toBeVerified: 'To Be Verified', // 待验证 + uninvolved: 'Not Involve', // 不涉及 regulationsList: 'Regulation List', standardNumberStandardName: 'Regulation No. / Regulation Name', transfer: 'Transfer', standardNumber: 'Regulation No.', standardName: 'Regulation Name', - englishName: 'English name', + englishName: 'English Name', standardState: 'Regulation Status', applicableVehicleType: 'Vehicle Catagory', - productionDate: 'On the production date', - newModelImplementationDate: 'New model implementation date', - processState: 'Process state', + productionDate: 'On The Production Date', + newModelImplementationDate: 'New Model Implementation Date', + processState: 'Process State', evaluationResult: 'Evaluation Result', responsibleDepartment: 'Responsible Dept.', - evaluationResultHistory: 'Evaluation result history', + evaluationResultHistory: 'Evaluation Result History', evaluationProcessDetail: 'Evaluation Process Details', standardNumberClauseNumber: 'Regulation No. / Article No.', projectNumber: 'Project No.', @@ -39,27 +39,27 @@ module.exports = { dateOfEvaluation: 'Date of Assessment', nonConformanceTerm: 'Non-conformance', solutions: 'Countermeasures', - riskPoint: 'Risk points', - verificationScheme: 'Authentication scheme', + riskPoint: 'Risk Points', + verificationScheme: 'Authentication Scheme', estimateTheChangeCycle: 'Estimated Change Cycle', estimatedDateOfCompletionOfRectification: 'Expected completion date of rectification' }, noncoincidenceItem: { - noncoincidenceItem: 'Non compliant items', + noncoincidenceItem: 'Non Compliant Items', batchClose: 'Batch Close', actualRectificationCompletionDate: 'Actual completion date of rectification', - projectSelection: 'Project selection', - relevantProject: 'Related projects', - relatedProcess: 'Related processes', + projectSelection: 'Project Selection', + relevantProject: 'Related Projects', + relatedProcess: 'Related Processes', viewNonMatchItemEvaluationResult: 'View the rectification results of non compliant items', - involvedItem: 'Involving projects' + involvedItem: 'Involving Projects' }, specialProjectLibrary: { specialProjectLibrary: 'Special Project Library', - vehicleSeries: 'Model series', - complianceAssessmentResults: 'Compliance assessment results', - basisDescription: 'According to the description', - whetherToApproveAProjectOrNot: 'Is the project approved', + vehicleSeries: 'Model Series', + complianceAssessmentResults: 'Compliance Assessment Results', + basisDescription: 'According To The Description', + whetherToApproveAProjectOrNot: 'Is The Project Approved', vehicleModel: 'Vehicle Catagory', supportingMaterial: 'Supporting Files' } diff --git a/src/common/lang/regulatoryComplianceAssessmentDatabase/en.js b/src/common/lang/regulatoryComplianceAssessmentDatabase/en.js index 55ed690..b1bf488 100644 --- a/src/common/lang/regulatoryComplianceAssessmentDatabase/en.js +++ b/src/common/lang/regulatoryComplianceAssessmentDatabase/en.js @@ -17,7 +17,7 @@ module.exports = { rectificationCycle: 'Rectification Time', rectificationCost: 'Rectification Costs', sharedWithOtherProjects: 'Commonality', - costOfThisItemAfterSharing: 'Expenses after Sharing', + costOfThisItemAfterSharing: 'Expenses After Sharing', remarks: 'Note', supportingMaterial: 'Supporting Files' }, @@ -36,7 +36,7 @@ module.exports = { rectificationCycle: 'Rectification Time', rectificationCost: 'Rectification Costs', sharedWithOtherProjects: 'Commonality', - costOfThisItemAfterSharing: 'Expenses after Sharing', + costOfThisItemAfterSharing: 'Expenses After Sharing', isHaveClosed: 'Select the data whose rectification status is to be rectified and close it', exportName: 'Non-conformance term Library table' } diff --git a/src/common/lang/standardRegulationLibrary/en-us.js b/src/common/lang/standardRegulationLibrary/en-us.js index 1a2d478..8571bd3 100644 --- a/src/common/lang/standardRegulationLibrary/en-us.js +++ b/src/common/lang/standardRegulationLibrary/en-us.js @@ -1,29 +1,29 @@ module.exports = { - configStandard: 'Configuration standard', // 配置标准 - removeStandard: 'Removal criteria', // 移出标准 - nodeName: 'Node name', // 节点名称 - nodeOrder: 'Node ordering', // 节点排序 + configStandard: 'Configuration Standard', // 配置标准 + removeStandard: 'Removal Criteria', // 移出标准 + nodeName: 'Node Name', // 节点名称 + nodeOrder: 'Node Ordering', // 节点排序 configStandardNoTreeNode: 'Please select Level 2 and below system first', // 请先选择二级及以下体系 selectLeastOneTableData: 'Select at least one list data', // 选中至少一条列表数据 standardResolutionSheet: 'Standard interpretation', // 标准解读 - updateRecord: 'Update record', // 更新记录 - submitQuestion: 'Submit a question', // 提交问题 - standardCatalogue: 'Standard catalogue', // 标准目录 - clauseLabel: 'Clause label', // 条文标签 + updateRecord: 'Update Record', // 更新记录 + submitQuestion: 'Submit A Question', // 提交问题 + standardCatalogue: 'Standard Catalogue', // 标准目录 + clauseLabel: 'Article Label', // 条文标签 translation: 'Translation', clauseNumber: 'Article number', // 条文号 - clauseTitle: 'Title of article', // 条文标题 - regulatoryRequirementsType: 'Types of regulatory requirements', // 法规要求类型 - functionalClassification: 'Functional classification', // 功能分类 - functionalSpecialty: 'Functional specialty', // 功能专业 - blockCoding: 'Block coding', // 分组编码 - groupName: 'Group name', // 分组名称 + clauseTitle: 'Title of Article', // 条文标题 + regulatoryRequirementsType: 'Types of Regulatory Requirements', // 法规要求类型 + functionalClassification: 'Functional Classification', // 功能分类 + functionalSpecialty: 'Functional Specialty', // 功能专业 + blockCoding: 'Block Coding', // 分组编码 + groupName: 'Group Name', // 分组名称 newCertificationImplementationTime: 'New Production Vehicle Implementation Date', // 新认证实施时间 - certifiedImplementationTime: 'Certified implementation time', // 已认证实施时间 - newRegistrationImplementationTime: 'New registration implementation time', // 新注册实施时间 + certifiedImplementationTime: 'Certified Implementation Time', // 已认证实施时间 + newRegistrationImplementationTime: 'New Registration Implementation Time', // 新注册实施时间 applicableVehicleType: 'Vehicle Catagory', // 适用车型 dynamicType: 'Power Propulsion Type', // 动力类型 - inputExample: 'Input example:', // 输入示例 + inputExample: 'Input Example:', // 输入示例 applicableComponents: 'Applicable Components', involvingSystemsComponents: 'Related System(s)/Component(s)', applications: 'Vehicle Catagory', @@ -52,9 +52,9 @@ module.exports = { // 资料中心 profileCenter: { typeOfOwnership: 'Type of ownership', - uploadData: 'Upload data', - addAPeer: 'Add a peer', - newChild: 'New child', + uploadData: 'Upload Data', + addAPeer: 'Add A Peer', + newChild: 'New Child', pleaseSelectTheDirectoryOnTheLeft: 'Please select the directory on the left' }, // 市场法规清单 @@ -68,11 +68,11 @@ module.exports = { listVersion: 'Version', releaseTime: 'Published Date', listState: 'Status', - customName: 'Custom name', - securityClass: 'Confidential level', - listDeclaration: 'Manifest declaration', + customName: 'Custom Name', + securityClass: 'Confidential Level', + listDeclaration: 'Manifest Declaration', templateName: 'Market regulation list import template', - historicalVersion: 'Historical version', + historicalVersion: 'Historical Version', standardExist: 'The standard already exists', haveStandardExist: 'Some standards already exist', pleaseSelectAListPublish: 'Please select a list to publish', @@ -89,7 +89,7 @@ module.exports = { applicableVehicleType: 'Vehicle Catagory', authenticationObject: 'Certification Item', certifiedDeliverables: 'Verification', - type: 'Type', + type: 'Requirement Category', dynamicType: 'Power Propulsion Type', mainControlDepartment: 'Main Responsible Dept.', masterControlDepartmentProfessionalModule: 'Module of Main Responsible Dept. ', @@ -97,7 +97,8 @@ module.exports = { associateDepartmentSpecializedModules: 'Module of Related Dept. ', batchRestriction: 'Production Amount', automaticDrivingLevel: 'Automatic Driving Level', - requirementType: 'Optional/Compulsory' + requirementType: 'Optional/Compulsory', + remarks: 'Note' }, // 标准主计划 standardMasterPlan: { diff --git a/src/common/lang/standardRegulationLibrary/zh-cn.js b/src/common/lang/standardRegulationLibrary/zh-cn.js index 62b6cc2..120cfb8 100644 --- a/src/common/lang/standardRegulationLibrary/zh-cn.js +++ b/src/common/lang/standardRegulationLibrary/zh-cn.js @@ -97,7 +97,8 @@ module.exports = { associateDepartmentSpecializedModules: '关联部门专业模块', batchRestriction: '批量限制', automaticDrivingLevel: '自动驾驶等级', - requirementType: '要求类型' + requirementType: '要求类型', + remarks: '备注' }, // 标准主计划 standardMasterPlan: { diff --git a/src/common/lang/system/en.js b/src/common/lang/system/en.js index 5a9f412..c6f04c7 100644 --- a/src/common/lang/system/en.js +++ b/src/common/lang/system/en.js @@ -15,8 +15,8 @@ module.exports = { labelName: 'Tag Name', labelType: 'Tag Type', essentialInformation: 'Basis', - domesticLaws: 'Domestic regulations', - foreignStandards: 'Overseas standards', + domesticLaws: 'Domestic Regulations', + foreignStandards: 'Overseas Standards', foreignStandardRegulations: 'External Standards', enterpriseStandards: 'Enterprise Standards', clauseSplitting: 'Articles', @@ -51,10 +51,10 @@ module.exports = { name: 'Name', dataValue: 'Value', parentName: 'Parent Name', - select: 'select', + select: 'Select', tree: 'Tree', pleaseEnterYourEnglishName: 'Please input english name', - usableRange: 'Scope of use' + usableRange: 'Scope Of Use' }, // 内部工作组 internalWorkGroup: { @@ -63,8 +63,8 @@ module.exports = { workNo: 'Job Number', role: 'Role', post: 'Position', - templateName: 'Internal workgroup table template', - exportName: 'Internal workgroup table', + templateName: 'Internal Workgroup Table Template', + exportName: 'Internal Workgroup Table', nodeName: 'Branch Name', adminAuthority: 'Administration Privileges', workGroupName: 'Workgroup Name', @@ -93,35 +93,35 @@ module.exports = { contact: { departName: 'Department Name', standardizationEngineer: 'Standardization Engineer', - contactPerson: 'Contact person', + contactPerson: 'Contact Person', contactPersonSupervisorLevelLeader: 'Departmental liaison person, supervisor level leader' }, // 绑定零部件 bindingParts: { partNumber: 'Part Number', partName: 'Component Name', - bindingPersonnel: 'Binding personnel', - useBindingRelationship: 'Use binding relationships', + bindingPersonnel: 'Binding Personnel', + useBindingRelationship: 'Use Binding Relationships', clauseNumber: 'Article No.', - bindingTime: 'Binding time', + bindingTime: 'Binding Time', confirmUseBindRelationship: 'Confirm the use of binding relationship', isUseBindRelationship: 'Whether to use binding relationship?', - isBringIn: 'Whether to introduce', + isBringIn: 'Whether To Introduce', haveBind: 'Under the current component classification structure, there are already', isBringInRelation: 'Bind standard association relationships, do you want to introduce corresponding relationships?' }, // 分组管理 groupMange: { - groupName: 'Group name', - peopleNumber: 'Number of people', - groupMembers: 'Group members', + groupName: 'Group Name', + peopleNumber: 'Number Of People', + groupMembers: 'Group Members', userName: 'User Name' }, // 未发送成功的消息管理 notSentMessage: { - messageType: 'Message type', - pushContent: 'Push content', - pushAddress: 'Push address', + messageType: 'Message Type', + pushContent: 'Push Content', + pushAddress: 'Push Address', resend: 'Resend', areYouSureResend: 'Are you sure to resend it' } diff --git a/src/common/lang/workCenter/en.js b/src/common/lang/workCenter/en.js index 8feae4c..ce184c8 100644 --- a/src/common/lang/workCenter/en.js +++ b/src/common/lang/workCenter/en.js @@ -18,25 +18,27 @@ module.exports = { stageWeAreIn: 'Regulation Status', materialDate: 'Implementation Date', applicableMarket: 'Applicable Market', - ccPerson: 'Cc person', + competentDepartment: 'Competent department', + mainControlDepartment: 'Main control department', + ccPerson: 'CC Person', briefDescription: 'The statute requires a brief description' }, // 法规符合性排查流程 regulatoryComplianceCheckProcess: { - addStandard: 'Addition standard', - manualAddition: 'Manual addition', - vehicleTypeItem: 'Vehicle type item', + addStandard: 'Addition Standard', + manualAddition: 'Manual Addition', + vehicleTypeItem: 'Vehicle Type Item', applicableMarket: 'Applicable Market', isAlike: 'Differences', - resolutionAttachment: 'Resolution attachment', + resolutionAttachment: 'Resolution Attachment', decompositionSingleSource: 'Decomposition single source', pleaseAddStandard: 'Please add a new criterion first', - modelStatus: 'Model status', + modelStatus: 'Model Status', primaryInvestigator: 'Primary investigator', checkWhetherTheTaskIsDelivered: 'Check whether the task is delivered', - batchSelector: 'Batch selector', + batchSelector: 'Batch Selector', mainFinderImportTemplate: 'Compliance check process Import template', - countersigningOfficer: 'Countersigning officer', + countersigningOfficer: 'Countersigning Officer', auditor: 'Auditor', approvingOfficer: 'Approving officer', evaluationResult: 'Evaluation Result', @@ -45,27 +47,28 @@ module.exports = { rectificationCycle: 'Rectification Time', rectificationCost: 'Rectification Costs', sharedWithOtherProjects: 'Commonality', - costOfThisItemAfterSharing: 'Expenses after Sharing', + costOfThisItemAfterSharing: 'Expenses After Sharing', appraiser: 'Evaluator', salvageListTemplateDownload: 'Split single file template download', salvageListTemplateName: 'Decomposes a single file upload template', carTypeFileTemplateDownload: 'Model project file template download', carTypeFileTemplateName: 'Model project file upload template', pleaseGenerate: 'Please generate data', + pleaseAnewGenerate: 'Please re-generate the data', pleaseClickNext: 'Please click Next to display the information', pleaseSelectDesignEngineer: 'Please select Design Engineer', atLeastSelectOneDesignEngineer: 'Please select at least one design engineer' }, // 市场清单发布流程 marketListReleaseProcess: { - englishName: 'English name', + englishName: 'English Name', newProductionVehicleImplementationDate: 'New Certified Vehicle Implementation Date', newCertifiedVehicleImplementationDate: 'New Production Vehicle Implementation Date', applicableCountryRegion: 'Country/Region', applicableVehicleType: 'Vehicle Catagory', authenticationObject: 'Certification Item', certifiedDeliverables: 'Verification', - type: '类型', + type: 'Type', dynamicType: 'Power Propulsion Type', mainControlDepartment: 'Main Responsible Dept.', masterControlDepartmentProfessionalModule: 'Module of Main Responsible Dept. ', @@ -116,49 +119,49 @@ module.exports = { pFive: 'P5 Deliverables', notes: 'Note', configurationRequirements: 'Optional / Compulsory', - countersigningPerson: 'Countersigning personnel', + countersigningPerson: 'Countersigning Personnel', reviewersPerson: 'Reviewer', - approvedPerson: 'Approved personnel', - batchEdit: 'Bulk edit', + approvedPerson: 'Approved Personnel', + batchEdit: 'Bulk Edit', pleaseSelectInterpreter: 'Select at least one piece of data for each department involved to interpret', - pleaseSelectClause: 'Please select terms', + pleaseSelectClause: 'Please Select Terms', interpretationDistribution: 'Interpretation and Distribution', interpretationTable: 'Interpretation Table', - interpretationAttributes: 'Interpretation of attributes', + interpretationAttributes: 'Interpretation of Attributes', summarySingleChoiceTip: 'Need to summarize as single choice' }, // 流程配置 processConfig: { processType: 'Process Type', - editFlowchart: 'Edit flowchart', - editFlowNode: 'Edit process nodes', + editFlowchart: 'Edit Flowchart', + editFlowNode: 'Edit Process Nodes', deploy: 'Arrange' }, processDetail: { urgeHandle: 'Urge sb. to do STH.', - flowChart: 'Flow chart', - taskNode: 'Task node', - taskHandler: 'Task handler', - completionTime: 'Completion time', - timeConsuming: 'Time consuming', - approvalOpinion: 'Approval opinion', - opinionContent: 'Opinion content' + flowChart: 'Flow Chart', + taskNode: 'Task Node', + taskHandler: 'Task Handler', + completionTime: 'Completion Time', + timeConsuming: 'Time Consuming', + approvalOpinion: 'Approval Opinion', + opinionContent: 'Opinion Content' }, // 流程中心 processCenter: { todoProcess: 'To-do', doneProcess: 'Completed', sentProcess: 'Issued', - monitorProcess: 'Follow up', + monitorProcess: 'Follow Up', draft: 'Draft', - processNumber: 'Process number', - processType: 'Process type', - nodeName: 'Node name', + processNumber: 'Process Number', + processType: 'Process Type', + nodeName: 'Node Name', initiator: 'Initiator', - receivingTaskTime: 'Receiving task time', - currentProcessor: 'Current processor', - finishTime: 'Completion time', - processState: 'Process state', - processTime: 'Process Time (hours)' + receivingTaskTime: 'Receiving Task Time', + currentProcessor: 'Current Processor', + finishTime: 'Completion Time', + processState: 'Process State', + processTime: 'Process Time (Hours)' } } diff --git a/src/common/lang/workCenter/zh.js b/src/common/lang/workCenter/zh.js index a93dd60..5a02826 100644 --- a/src/common/lang/workCenter/zh.js +++ b/src/common/lang/workCenter/zh.js @@ -18,6 +18,8 @@ module.exports = { stageWeAreIn: '所处阶段', materialDate: '实施日期', applicableMarket: '适用市场', + competentDepartment: '主管部门', + mainControlDepartment: '主控部门', ccPerson: '抄送人员', briefDescription: '法规要求简要描述' }, @@ -52,6 +54,7 @@ module.exports = { carTypeFileTemplateDownload: '车型项目文件模板下载', carTypeFileTemplateName: '车型项目文件上传模板', pleaseGenerate: '请先生成数据', + pleaseAnewGenerate: '请重新生成数据', pleaseClickNext: '请点击下一步显示信息', pleaseSelectDesignEngineer: '请选择设计工程师', atLeastSelectOneDesignEngineer: '请至少选择一条数据的设计工程师' diff --git a/src/common/lang/zh-cn.js b/src/common/lang/zh-cn.js index e6339d9..cae9a82 100644 --- a/src/common/lang/zh-cn.js +++ b/src/common/lang/zh-cn.js @@ -125,6 +125,7 @@ module.exports = { confirmWithdraw: '确认撤回?', confirmWithdrawContent: '确认撤回该条数据?', doNotHavePermissionDeleteData: '没有权限删除此数据', + publishedAndCannotDeleted: '已发布不能删除', noData: '暂无数据', dataLoading: '数据加载中...', confirmDelete: '确定删除?', @@ -247,6 +248,7 @@ module.exports = { goHandle: '去处理', disableInput: '禁止输入', fileUploadError: '文件上传错误', + importMaxMsg: '导入文件最大{size}MB', // 标准字段 standardField: { standardEnglishName: '标准英文名称', @@ -497,6 +499,7 @@ module.exports = { docTool: { // 文档拆分 split: { + textSearch: '文本搜索', translation: '译文', splitText: '拆分已入库文本', importResults: '导入拆分结果', @@ -518,7 +521,7 @@ module.exports = { gotIt: '知道了', formatRequirement: '格式要求', formatRequirementContentOne: '1.导入的文档是zip格式', - formatRequirementContentTwo: '2.图片为jpg、jpeg、png、gif格式', + formatRequirementContentTwo: '2.图片为jpg、jpeg、png格式', formatRequirementContentThree: '3.文档中的图片,在导出excel中以链接的形式展示,点击链接跳转到本地指定的文件', formatRequirementContentFour: '4.文档中的表格,在导出excel中以链接的形式展示,点击链接跳转到指定的sheet页面', changePermissions: '更改权限', @@ -537,7 +540,7 @@ module.exports = { gbt: 'GB/T', gso: 'GSO', batchSetting: '批量设置', - clauseContent: '条文内容', + clauseContent: '条款内容', clauseNo: '条款号', clauseName: '条款名称', selectDirectoryTerms: '请选择添加条款的目录位置', @@ -566,29 +569,29 @@ module.exports = { newDocumentTextName: '新文档文本名称', newTextState: '新文本状态', releaseSituation: '发布情况', - comparisonResults: '对比结果', - initiateComparison: '发起对比', + comparisonResults: '比对结果', + initiateComparison: '发起比对', textStatus: '文本状态', selectedStandard: '所选标准', - noComparisonDocumentSelected: '未选择对比文档', + noComparisonDocumentSelected: '未选择比对文档', remarkInfo: '备注信息', - initiateDocumentComparison: '发起文档对比', - documentComparison: '文档对比', - viewTheComparisonResults: '查看对比结果', + initiateDocumentComparison: '发起文档比对', + documentComparison: '文档比对', + viewTheComparisonResults: '查看比对结果', addFullTextComment: '添加全文评论', turnOffAutomaticMatching: '关闭自动匹配', turnOnAutoMatch: '打开自动匹配', - comparisonOfArticles: '条款对比评论', + comparisonOfArticles: '条款比对评论', consistentAssessment: '一致', fullTextComments: '全文评论', - pleaseSelectTheDataCompared: '请选择需要对比的数据', + pleaseSelectTheDataCompared: '请选择需要比对的数据', viewVarianceAssessment: '查看差异项', viewConsistentAssessment: '查看一致项', viewAll: '查看全部', - exportComparisonReport: '导出对比报告', + exportComparisonReport: '导出比对报告', comment: '评论', - comparisonDifferenceComment: '对比差异评论', - comparativeComments: '对比评论', + comparisonDifferenceComment: '比对差异评论', + comparativeComments: '比对评论', publishComment: '发表评论', noComment: '暂无评论', replyToComments: '回复评论' @@ -601,11 +604,11 @@ module.exports = { whetherToMakePublic: '是否公开', referenceStandard: '涉及标准', comparisonTime: '比对时间', - onlineComparison: '在线对比', + onlineComparison: '在线比对', standardList: '标准列表', - comparisonMaintain: '对比维护', + comparisonMaintain: '比对维护', listDetails: '清单详情', - comparativeAnalysisResult: '对比分析结果', + comparativeAnalysisResult: '比对分析结果', exitEdit: '退出编辑', specialty: '特点', comparisonItem: '比对项', @@ -777,5 +780,27 @@ module.exports = { regulatoryComplianceAssessmentDatabase, onlineEditor: { missRequireField: '缺少必填字段' + }, + // 登录 + login: { + systemName: '奇瑞标准法规管理系统', + language: '中文', + userLogin: '账号登录', + account: '账号', + password: '密码', + code: '验证码', + login: '登录', + showPassword: '显示密码', + hidePassword: '隐藏密码', + loginFailMessage: '登录失败', + requestFailMessage: '请求出现错误,请稍后再试', + checkPhoneMessage: '您的手机号码格式不正确', + checkCodeMessage: '您输入的验证码不正确', + codeSendFail: '验证码发送失败', + welcome: '欢迎', + welcomeBack: ',欢迎回来', + reLogin: '重新登陆', + phone: '手机号', + codeSending: '验证码发送中' } } diff --git a/src/components/JDatePicker.vue b/src/components/JDatePicker.vue index 035f02f..12e74e1 100644 --- a/src/components/JDatePicker.vue +++ b/src/components/JDatePicker.vue @@ -44,6 +44,12 @@ export default { type: Array, required: false, default: () => [] + }, + // 是否返回区间,只选择一侧,另一侧会返回一个minDate或maxDate + returnInterval: { + type: Boolean, + required: false, + default: true } }, data () { @@ -112,7 +118,14 @@ export default { }, // 触发change事件 triggerChange () { - this.$emit('change', [this.startDate || minDate, this.endDate || maxDate]) + const startDate = this.startDate || minDate + const endDate = this.endDate || maxDate + // 是否一侧为空时,返回最大日期或最小日期 + if (this.returnInterval) { + this.$emit('change', [startDate, endDate]) + } else { + this.$emit('change', [this.startDate, this.endDate]) + } }, // 记录最后一次点击的日期 clickCalendarDate (val) { diff --git a/src/components/JExpandTable.vue b/src/components/JExpandTable.vue index 8d8e596..efb591b 100644 --- a/src/components/JExpandTable.vue +++ b/src/components/JExpandTable.vue @@ -4,7 +4,7 @@ v-on="$listeners" :row-key="rowKey" :bordered="bordered" - :scroll="{x: '100%'}" + :scroll="scroll" :row-class-name="lineCanExpand" :columns="columns" :expandedRowKeys.sync="expandedRowKeys" @@ -23,6 +23,13 @@
{{ text || text === 0 ? text : global.emptyLine }}
+ +
@@ -189,6 +196,13 @@ export default { name: 'JExpandTable', components: { JUpload }, props: { + scroll: { + type: Object, + required: false, + default: () => { + return { x: '100%' } + } + }, columns: { type: Array, default: () => { diff --git a/src/components/JMultipleDatePicker.vue b/src/components/JMultipleDatePicker.vue index 7a26c80..e6052f4 100644 --- a/src/components/JMultipleDatePicker.vue +++ b/src/components/JMultipleDatePicker.vue @@ -101,7 +101,8 @@ export default { const oldVal = this.checkedValue.join(',') if (newVal !== oldVal) { if (newVal) { - this.checkedValue = [...new Set(newVal.split(','))] + // 去重、去掉格式不对的 + this.checkedValue = [...new Set(newVal.split(','))].filter(dateStr => dateStr && /^\d{4}-\d{2}-\d{2}$/.test(dateStr)) } else { this.checkedValue = [] } diff --git a/src/components/ProcessDetailList.vue b/src/components/ProcessDetailList.vue index 99aaf96..34baf2a 100644 --- a/src/components/ProcessDetailList.vue +++ b/src/components/ProcessDetailList.vue @@ -250,7 +250,8 @@ export default { { dataIndex: 'finishFlag_dictText', title: this.$t('status'), - width: 100 + width: 100, + scopedSlots: { customRender: 'dictText' } } ], image: false, diff --git a/src/components/StandardResolutionSheet.vue b/src/components/StandardResolutionSheet.vue index 00b1303..5ad4ab8 100644 --- a/src/components/StandardResolutionSheet.vue +++ b/src/components/StandardResolutionSheet.vue @@ -4,18 +4,30 @@
- + - - + + - + + + @@ -85,7 +97,7 @@ :replaceFields="{children: 'children', key: 'id'}">
@@ -111,7 +123,7 @@
-
+
+ + diff --git a/src/components/selection/TreeDataSelection.vue b/src/components/selection/TreeDataSelection.vue new file mode 100644 index 0000000..bca415a --- /dev/null +++ b/src/components/selection/TreeDataSelection.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/src/components/selection/UserSelectModal.vue b/src/components/selection/UserSelectModal.vue index e4a6dc5..4645be7 100644 --- a/src/components/selection/UserSelectModal.vue +++ b/src/components/selection/UserSelectModal.vue @@ -138,7 +138,7 @@ export default { deep: true, handler (val) { console.log(this.currentQueryAllData) - const arrOne = this.currentQueryAllData.map(item => item.id) + const arrOne = this.currentQueryAllData const arrTwo = this.dataSourceRight.map(item => item.id) const temp = [] for (const item of arrTwo) { @@ -157,7 +157,7 @@ export default { deep: true, handler (val) { console.log(this.currentQueryAllData) - const arrOne = this.currentQueryAllData.map(item => item.id) + const arrOne = this.currentQueryAllData const arrTwo = this.dataSourceRight.map(item => item.id) const temp = [] for (const item of arrTwo) { @@ -240,7 +240,8 @@ export default { isCheckedAll: false, // 是否选中所有 url: { userList: '/sys/user/page', - userListByIds: '/sys/user/queryByIds' + userListByIds: '/sys/user/queryByIds', + queryList: '/sys/user/list' }, isClickedSearch: false, // 改完搜索条件是否点击过搜索 oldQueryParam: {}, // 上一次的搜索条件,用于从一个搜索条件改成另一个搜索条件,但是没有点搜索,这时候全选时传旧的搜索条件 @@ -298,7 +299,7 @@ export default { this.checkCurrentAll() } else { const field = 'id' - this.dataSourceRight = this.dataSourceRight.filter(item => !this.currentQueryAllData.some(i => i[field] === item[field])) + this.dataSourceRight = this.dataSourceRight.filter(item => !this.currentQueryAllData.some(i => i === item[field])) this.selectedRowKeys = JSON.parse(JSON.stringify(this.dataSourceRight)).map(item => item[field]) } }, @@ -340,14 +341,14 @@ export default { // 获取当前查询条件的所有数据 async getCurrentAllData () { const params = Object.assign({}, this.queryParam) - params.pageNo = 1 - params.pageSize = 100000000 + // params.pageNo = 1 + // params.pageSize = 100000000 params.field = 'id,avatar,username,realname,sex_dictText,phone,orgCodeTxt,roleTxt,status_dictText' params.column = 'createTime' params.order = 'desc' - await getAction(this.url.userList, params).then(res => { + await getAction(this.url.queryList, params).then(res => { if (res.success) { - this.currentQueryAllData = res.result.records || [] + this.currentQueryAllData = res.result || [] } }) }, @@ -544,4 +545,8 @@ export default { /deep/ .ant-form-item-label{ min-width: 70px !important; } + +/deep/ .ant-table-hide-scrollbar { + margin-right: -8px; +} diff --git a/src/components/splitUpload/SplitAddClauseUploadImage.vue b/src/components/splitUpload/SplitAddClauseUploadImage.vue index 9484dea..5d8a39b 100644 --- a/src/components/splitUpload/SplitAddClauseUploadImage.vue +++ b/src/components/splitUpload/SplitAddClauseUploadImage.vue @@ -60,7 +60,7 @@ export default { headers: '', previewImage: {}, uploadFileFlag: 0, - fileMaxSize: 500 + fileMaxSize: 20 } }, created () { @@ -103,7 +103,7 @@ export default { // const fileTypes = this.accept.split('/') const fileNowTypes = file.type.split('/') // 修改判断方法 限制jpg\jpeg\png\gif 可以上传 其他不能上传。 - fileFlag = (['PNG', 'JPEG', 'PNG', 'GIF'].includes(fileNowTypes[1].toUpperCase())) + fileFlag = (['PNG', 'JPEG', 'PNG'].includes(fileNowTypes[1].toUpperCase())) // console.log('filetype',fileFlag) if (!fileFlag) { this.$message.warning(this.$t('uploadFile.fileFormatIncorrect')) diff --git a/src/components/uEditor/UEditor.vue b/src/components/uEditor/UEditor.vue index 3315c12..adca935 100644 --- a/src/components/uEditor/UEditor.vue +++ b/src/components/uEditor/UEditor.vue @@ -62,6 +62,16 @@ export default { } }, mounted () { + // 首次加载完所有语言包后,浅拷贝存备份(没有找到正常切换语言的api,暂时先这么处理) + if (Object.keys(UE.I18N).length > 1) { + window.__COPY_UE_I18N__ = { ...UE.I18N } + } + // 更新语言包(将备份语言包浅拷贝回来,只保留需要的一个需要的语言包) + if (localStorage.getItem('language') === 'en-us') { + UE.I18N = { en: window.__COPY_UE_I18N__.en } + } else { + UE.I18N = { ['zh-cn']: window.__COPY_UE_I18N__['zh-cn'] } + } UEDITOR_CONFIG.UEDITOR_HOME_URL = '../../../public/ueditor/' // 初始化UE this.editor = UE.delEditor('editor') diff --git a/src/enums/commonEnums.js b/src/enums/commonEnums.js index 7e79ffc..d079f91 100644 --- a/src/enums/commonEnums.js +++ b/src/enums/commonEnums.js @@ -29,7 +29,8 @@ export const FieldType = { YEAR_PICKER: { text: '年份选择', value: '14' }, TREE_SINGLE: { text: '树形结构(单选)', value: '15' }, TREE_MODAL_SELECT: { text: '树形弹框', value: '16' }, - TREE_MODAL_SELECT_SEARCH_DIFF: { text: '树形弹框(带出子集和单线父级)', value: '17' } + TREE_MODAL_SELECT_SEARCH_DIFF: { text: '树形弹框(查询带出子集和单线父级)', value: '17' }, + TREE_MODAL_SELECT_SEARCH_CHILD: { text: '树形弹框(查询带出所有子级)', value: '18' } } export const TagsTypeEnums = new EsEnums({ @@ -84,13 +85,12 @@ export const IsTrial = { // 外来标准状态 export const StandardStatus = { - DRAFT: { text: '起草', value: '1' }, - SEEK_FOR_OPTIONS: { text: '征求意见', value: '2' }, - EXAMINE: { text: '审查', value: '2.1' }, + CURRENTLY_EFFECTIVE: { text: '现行', value: '1' }, + RELEASE: { text: '发布', value: '2' }, APPROVAL: { text: '报批', value: '3' }, - RELEASE: { text: '发布', value: '4' }, - BE_IMPLEMENTED_SOON: { text: '即将实施', value: '5' }, - CURRENTLY_EFFECTIVE: { text: '现行有效', value: '6' }, + EXAMINE: { text: '审查', value: '4' }, + SEEK_FOR_OPTIONS: { text: '征求意见', value: '5' }, + DRAFT: { text: '草案', value: '6' }, ABOLISH: { text: '废止', value: '7' } } @@ -190,7 +190,7 @@ export const StandardInterpretationNodes = new EsEnums({ initiated: { text: '法规工程师发起', value: 'regulatory_engineer_start', btn: ['save', 'submit'] }, controlDepartLiaisonDistribution: { text: '主控部门联络人分发', value: 'contact_person_distribute', btn: ['transfer', 'save', 'submit'] }, standardInterpreterDistribution: { text: '标准主解读人分发', value: 'master_interpret_distribute', btn: ['reject', 'transfer', 'save', 'submit'] }, - standardInterpreterReDistribution: { text: '标准主解读人分发', value: 'master_interpret_again_distribute', btn: ['reject', 'transfer', 'save', 'submit'] }, + standardInterpreterReDistribution: { text: '标准主解读人分发', value: 'master_interpret_again_distribute', btn: ['transfer', 'save', 'submit'] }, interpreterFillInfo: { text: '解读人填写信息', value: 'interpreting_people_fillout', btn: ['reject', 'transfer', 'save', 'submit'] }, mainInterpreterSingleLineReview: { text: '标准主解读人审核', value: 'master_interpret_approve', btn: ['reject', 'transfer', 'save', 'agree'] }, standardInterpreterSummary: { text: '标准主解读人汇总', value: 'master_interpret_summary', btn: ['transfer', 'save', 'submit'] }, @@ -253,6 +253,12 @@ export const OcrConvertStateEnums = { CONVERTED: { text: '转换完成', value: '2' } } +// 用户管理来源 +export const UserSource = { + IAM: { text: 'IAM', value: '2' }, + SYSTEMADD: { text: '系统新增', value: '1' } +} + /** * 展示区域管理 * TODO 标签管理要改了,这里也要同步一下 diff --git a/src/main.js b/src/main.js index 5009e3c..5ee5a6b 100644 --- a/src/main.js +++ b/src/main.js @@ -3,6 +3,7 @@ import Vue from 'vue' import App from './App.vue' +import MobileApp from './MobileApp' import Storage from 'vue-ls' import router from './router' import store from './store/' @@ -49,6 +50,7 @@ import JDictComponenets from '@comp/dict/index.js' import JTable from '@comp/jero/JTable.vue' import i18n from '@/common/lang' +import { isMobile } from '@/utils/util' // Vue.prototype.rules = rules Vue.config.productionTip = false @@ -74,6 +76,14 @@ SSO.init(() => { Vue.prototype.global = { emptyLine: '—' } +// 当前是中文 +Vue.prototype.isChinese = function () { + return this.$i18n.locale === 'zh-cn' +} +// 当前是英文 +Vue.prototype.isEnglish = function () { + return this.$i18n.locale === 'en-us' +} function main () { new Vue({ @@ -93,7 +103,7 @@ function main () { store.commit('SET_TOKEN', Vue.ls.get(ACCESS_TOKEN)) store.commit('SET_MULTI_PAGE', Vue.ls.get(DEFAULT_MULTI_PAGE, config.multipage)) }, - render: h => h(App), + render: h => h(isMobile() ? MobileApp : App), data: { Bus: new Vue() } diff --git a/src/mixins/ConfigurableTableMixin.js b/src/mixins/ConfigurableTableMixin.js index 7cd6da6..40ce5de 100644 --- a/src/mixins/ConfigurableTableMixin.js +++ b/src/mixins/ConfigurableTableMixin.js @@ -13,7 +13,19 @@ import { mapGetters } from 'vuex' let importModalLoading // 需要数据字段翻译的属性类型 -const NEED_DICT_FIELD_TYPE = [FieldType.USER_SINGLE.value, FieldType.ORGAN_SINGLE.value, FieldType.ORGAN_MORE.value, FieldType.FILE_UP.value, FieldType.OPTION_SINGLE.value, FieldType.OPTION_MORE.value, FieldType.TREE.value, FieldType.TREE_SINGLE.value, FieldType.TREE_MODAL_SELECT.value] +const NEED_DICT_FIELD_TYPE = [ + FieldType.USER_SINGLE.value, + FieldType.ORGAN_SINGLE.value, + FieldType.ORGAN_MORE.value, + FieldType.FILE_UP.value, + FieldType.OPTION_SINGLE.value, + FieldType.OPTION_MORE.value, + FieldType.TREE.value, + FieldType.TREE_SINGLE.value, + FieldType.TREE_MODAL_SELECT.value, + FieldType.TREE_MODAL_SELECT_SEARCH_DIFF.value, + FieldType.TREE_MODAL_SELECT_SEARCH_CHILD.value +] const ZH = 'zh-cn' @@ -162,9 +174,9 @@ export const ConfigurableTableMixin = { // 是否可排序 item.sorter = item.sortFlag === '1' item.width = 215 - item.title = this.$i18n.locale === ZH ? item.dbFieldTxt : item.dbFieldEnName + item.title = this.isChinese() ? item.dbFieldTxt : item.dbFieldEnName if (NEED_DICT_FIELD_TYPE.includes(item.fieldShowType)) { - item.dataIndex = item.dbFieldName + '_dictText' + item.dataIndex = this.isChinese() ? item.dbFieldName + '_dictText' : item.dbFieldName + '_dictTextEn' } else { item.dataIndex = item.dbFieldName } @@ -267,6 +279,12 @@ export const ConfigurableTableMixin = { }, /* 导入 */ handleImportExcel (info) { + // 限制导入大于 importMaxSize, 各个模块可以单独设置大小 + if (this.importMaxSize && info.file.size > 1024 * 1024 * this.importMaxSize) { + this.$message.error(this.$t('importMaxMsg', { size: this.importMaxSize })) + info.fileList.pop() + return + } // 限制导入大于500MB if (info.file.size > 1024 * 1024 * 500) { this.$message.error('导入文件最大500MB!') diff --git a/src/mixins/WorkCenterMixin.js b/src/mixins/WorkCenterMixin.js index 6b2896c..f78f5e3 100644 --- a/src/mixins/WorkCenterMixin.js +++ b/src/mixins/WorkCenterMixin.js @@ -1,6 +1,7 @@ import { getProcessNodeList, queryTaskNameByTaskId } from '../api/workCenter' import Vue from 'vue' import { USER_INFO } from '../store/mutation-types' +import { findFirstRoute } from '@/utils/util' export const WorkCenterMixin = { data () { @@ -89,7 +90,12 @@ export const WorkCenterMixin = { let timer = setTimeout(() => { clearTimeout(timer) timer = null - this.$router.go(-1) + // 有上个页面就返回,否则就返回第一个页面 + if (history.length > 1) { + this.$router.go(-1) + } else { + this.$router.replace({ path: findFirstRoute(this.$store.state.user.permissionList) }) + } }, 700) }, switchChange (value) { @@ -104,7 +110,7 @@ export const WorkCenterMixin = { */ beforeRouteEnter (to, from, next) { if (to.query.taskId) { - queryTaskNameByTaskId({taskId: to.query.taskId}).then(res => { + queryTaskNameByTaskId({ taskId: to.query.taskId }).then(res => { if (res.success) { to.query.taskName = res.result.taskName } diff --git a/src/permission.js b/src/permission.js index fcbead3..d551183 100644 --- a/src/permission.js +++ b/src/permission.js @@ -4,7 +4,7 @@ import store from './store' import NProgress from 'nprogress' // progress bar import 'nprogress/nprogress.css' // progress bar style import { ACCESS_TOKEN, OAUTH2_LOGIN_PAGE_PATH, UI_CACHE_DB_DICT_DATA, USER_INFO, USER_NAME } from '@/store/mutation-types' -import { generateIndexRouter, isOAuth2AppEnv, findFirstRoute, welcome } from '@/utils/util' +import { generateIndexRouter, isOAuth2AppEnv, findFirstRoute, welcome, isMobile } from '@/utils/util' import { getSSOUserInfo, getTodoSSOUserInfo } from './api/api' import { updatePageHeight } from './components/tools/setting' @@ -14,6 +14,14 @@ const whiteList = ['/user/login', '/user/register', '/user/register-result', '/u whiteList.push(OAUTH2_LOGIN_PAGE_PATH) router.beforeEach(async (to, from, next) => { + if (isMobile()) { + if (to.path !== '/') { + next({ path: '/' }) + } else { + next() + } + return + } // 单点登录-OA单点登录 if (to.query.ticket) { const { result, success, message } = await getTodoSSOUserInfo({ ticket: to.query.ticket }) @@ -37,7 +45,11 @@ router.beforeEach(async (to, from, next) => { } else if (to.query.code && to.query.state === 'feishu') { // 如果没有登录,state是飞书,并且有code,就请求飞书单点登录 await store.dispatch('FeiShuLogin', to.query.code).catch((e) => { - this.$message.warn(e.message) + // 从飞书跳转进来,正常提示,系统内跳转进来不提示(解决用了replace,但是go(-1)还会跳转回来) + if (from.path === '/') { + Vue.prototype.$message.warning(e.message, 3) + } + next({ path: '/user/login', replace: true }) }) } else if (to.query.code) { // 研发大前台单点登录 diff --git a/src/store/modules/user.js b/src/store/modules/user.js index cdc24bd..bf7194f 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -144,9 +144,9 @@ const user = { GetPermissionList ({ commit }) { return new Promise((resolve, reject) => { queryPermissionsByUser().then(response => { - const menuData = response.result.menu - const authData = response.result.auth - const allAuthData = response.result.allAuth + const menuData = (response.result || {}).menu || [] + const authData = (response.result || {}).auth || [] + const allAuthData = (response.result || {}).allAuth // Vue.ls.set(USER_AUTH,authData); sessionStorage.setItem(USER_AUTH, JSON.stringify(authData)) sessionStorage.setItem(SYS_BUTTON_AUTH, JSON.stringify(allAuthData)) diff --git a/src/utils/util.js b/src/utils/util.js index dae62d0..b522f9c 100644 --- a/src/utils/util.js +++ b/src/utils/util.js @@ -738,3 +738,51 @@ export function queryStandardInfoByStandardNumber (standardNumber) { }) }) } + +/** + * 查找树节点 + * @param tree {Array} - 树结构 + * @param findVal - 查找的值 + * @param valueField - 查找的属性名 + * @param childrenField - 子节点属性名 + * @return {null | Object} - 返回对应节点 + */ +export function findNodeByField (tree, findVal, valueField = 'id', childrenField = 'children') { + for (const node of tree) { + if (node[valueField] === findVal) { + return node + } + if (node[childrenField] && node[childrenField].length > 0) { + const result = findNodeByField(node[childrenField], findVal) + if (result) { + return result + } + } + } + return null +} + +// 判断当前是否移动端 +export function isMobile () { + const userAgentInfo = navigator.userAgent + + const mobileAgents = ['Android', 'iPhone', 'SymbianOS', 'Windows Phone', 'iPad', 'iPod'] + + let mobileFlag = false + + // 根据userAgent判断是否是手机 + for (let v = 0; v < mobileAgents.length; v++) { + if (userAgentInfo.indexOf(mobileAgents[v]) > 0) { + mobileFlag = true + break + } + } + const screenWidth = window.screen.width + const screenHeight = window.screen.height + + // 根据屏幕分辨率判断是否是手机 + if (screenWidth < 500 && screenHeight < 800) { + mobileFlag = true + } + return mobileFlag +} diff --git a/src/views/dashboard/Analysis.vue b/src/views/dashboard/Analysis.vue index 762288b..4bda887 100644 --- a/src/views/dashboard/Analysis.vue +++ b/src/views/dashboard/Analysis.vue @@ -3,26 +3,16 @@
- - - - - - - - - - - - - - - - - - - - + + + + + + + + + +
@@ -46,14 +36,45 @@ export default { @import '~@assets/less/common.less'; .all-wrapper { - padding: 20px 8px 0; -} -.flex-item { - margin: 10px; -} -.mb-20 { - margin-bottom: 20px; + padding: 8px 8px 0; + display: grid; + width: 100%; + height: calc(100vh - 60px - 8px - 20px); + grid-gap: 20px; + grid-template-columns: 0.4fr 0.6fr; + grid-template-rows: 56px 180px minmax(200px, auto) 180px; + grid-template-areas: 'Search Search' + 'QuickEntrance QuickEntrance' + 'Todo Table' + 'Link Table'; + + .home-search, + .home-quick-entrance, + .home-todo, + .home-link, + .home-table{ + height: 100%; + overflow: hidden; + border-radius: 8px; + } + .home-search { + grid-area: Search; + overflow: visible; + } + .home-quick-entrance { + grid-area: QuickEntrance; + } + .home-todo { + grid-area: Todo; + } + .home-link { + grid-area: Link; + } + .home-table { + grid-area: Table; + } } + /deep/ .top-wrapper { display: flex; align-items: center; @@ -89,6 +110,11 @@ export default { } // 1366屏幕 @media screen and (max-width: 1366px) { + .all-wrapper { + height: calc(100vh - 60px - 8px - 20px + 200px); + // 友情链接部分减少了12像素 + grid-template-rows: 56px 180px minmax(200px, auto) 168px; + } /deep/ .top-wrapper { .left-p { font-size: 16px; diff --git a/src/views/dashboard/modules/FriendLinkCard.vue b/src/views/dashboard/modules/FriendLinkCard.vue index 10264ad..18d03d3 100644 --- a/src/views/dashboard/modules/FriendLinkCard.vue +++ b/src/views/dashboard/modules/FriendLinkCard.vue @@ -1,5 +1,5 @@ diff --git a/src/views/dashboard/modules/QuickEnterCard.vue b/src/views/dashboard/modules/QuickEnterCard.vue index edc6b6b..ca49316 100644 --- a/src/views/dashboard/modules/QuickEnterCard.vue +++ b/src/views/dashboard/modules/QuickEnterCard.vue @@ -1,5 +1,5 @@ diff --git a/src/views/dashboard/modules/SearchAndWarningCard.vue b/src/views/dashboard/modules/SearchAndWarningCard.vue index 8fe1108..31c04d9 100644 --- a/src/views/dashboard/modules/SearchAndWarningCard.vue +++ b/src/views/dashboard/modules/SearchAndWarningCard.vue @@ -12,10 +12,11 @@ size="middle" :rowKey="(_, index) => index" class="table" - :scroll="{ x: '100%', y: '40vh' }" + :scroll="{ x: '100%', y: 'calc(100vh - 550px)' }" :columns="showColumns" :dataSource="dataSource" :pagination="ipagination" + :components="components" @change="handleTableChange" :loading="loading"> + + - diff --git a/src/views/system/DictList.vue b/src/views/system/DictList.vue index 5437976..73ef1d7 100644 --- a/src/views/system/DictList.vue +++ b/src/views/system/DictList.vue @@ -132,11 +132,11 @@ export default { title: this.$t('operation'), // dataIndex: 'action', align: 'center', - width: 100, + width: 150, scopedSlots: { customRender: 'action' } } ], - canOpeFlag: process.env.VUE_APP_TAG_FLAG === '0', // 是否可以操作编辑和删除,开发环境可以 + canOpeFlag: false, // process.env.VUE_APP_TAG_FLAG === '0', // 是否可以操作编辑和删除,开发环境可以 dict: '', labelCol: { xs: { span: 8 }, @@ -158,7 +158,8 @@ export default { // 字典配置 { text: this.$t('system.tag.dictionaryConfiguration'), - clickEvent: 'editDictItem' + clickEvent: 'editDictItem', + has: 'sys:dict:set' }, // 编辑 { diff --git a/src/views/system/RoleUserList.vue b/src/views/system/RoleUserList.vue index 7416bd0..6e1f3cb 100644 --- a/src/views/system/RoleUserList.vue +++ b/src/views/system/RoleUserList.vue @@ -247,7 +247,8 @@ export default { title: this.$t('status'), align: 'center', width: 80, - dataIndex: 'status_dictText' + dataIndex: 'status_dictText', + scopedSlots: { customRender: 'dictText' } }, { @@ -277,13 +278,13 @@ export default { { text: this.$t('roleManage.userBtn'), clickEvent: 'handleOpen', - has: '' + has: 'sys:role:user' }, // 授权 { text: this.$t('roleManage.toGrantAuthorization'), clickEvent: 'handlePerssion', - has: '' + has: 'sys:role:permission' }, // 编辑 { @@ -532,6 +533,7 @@ export default { }, searchReset2 () { this.queryParam2 = {} + this.onClearSelected2() this.loadData2(1) }, handleTableChange2 (pagination, filters, sorter) { diff --git a/src/views/system/UserAnnouncementList.vue b/src/views/system/UserAnnouncementList.vue index 29d01d2..6096e10 100644 --- a/src/views/system/UserAnnouncementList.vue +++ b/src/views/system/UserAnnouncementList.vue @@ -63,9 +63,9 @@ @@ -142,7 +142,7 @@ export default { align: 'center', dataIndex: 'msgCategory_dictText', width: 150, - scopedSlots: { customRender: 'text' } + scopedSlots: { customRender: 'dictText' } }, { title: this.$t('message.my.publisher'), diff --git a/src/views/system/UserList.vue b/src/views/system/UserList.vue index b778b08..ce8d987 100644 --- a/src/views/system/UserList.vue +++ b/src/views/system/UserList.vue @@ -172,6 +172,7 @@ import JTable from '@/components/jero/JTable' import JSearchSelectTag from '@/components/dict/JSearchSelectTag' import UploadHandStampModal from './modules/UploadHandStampModal' import { isHasPermission } from '../../utils/hasPermission' +import { UserSource } from '../../enums/commonEnums' export default { name: 'UserList', @@ -238,7 +239,8 @@ export default { align: 'center', width: 90, dataIndex: 'sex_dictText', - sorter: true + sorter: true, + scopedSlots: { customRender: 'dictText' } }, { title: this.$t('phoneNumber'), @@ -274,7 +276,8 @@ export default { title: this.$t('status'), align: 'center', width: 80, - dataIndex: 'status_dictText' + dataIndex: 'status_dictText', + scopedSlots: { customRender: 'dictText' } }, { title: this.$t('operation'), @@ -302,28 +305,37 @@ export default { { text: this.$t('edit'), clickEvent: 'handleEdit', - has: 'user:edit' + has: 'user:edit', + show: (record) => { + // IAM同步过来的不能编辑 + return record.source !== UserSource.IAM.value + } }, // 详情 { text: this.$t('details'), clickEvent: 'handleDetail', - has: '' + has: 'user:detail' }, // 密码 { text: this.$t('user.password'), clickEvent: 'handleChangePassword', - has: '', + has: 'user:password', show: (record) => { - return this.isDev + // IAM同步过来的不能编辑 + return record.source !== UserSource.IAM.value } }, // 删除 { text: this.$t('delete'), clickEvent: 'handleDelete', - has: 'sys:user:sel' + has: 'sys:user:sel', + show: (record) => { + // IAM同步过来的不能删除 + return record.source !== UserSource.IAM.value + } }, // 冻结 { @@ -331,7 +343,8 @@ export default { clickEvent: 'handleFrozen', has: 'user:edit', show: (record) => { - return this.isDev && (record.status + '') === '1' + // IAM同步过来的不能编辑 + return (record.status + '') === '1' && record.source !== UserSource.IAM.value } }, // 解冻 @@ -340,15 +353,16 @@ export default { clickEvent: 'handleFrozen', has: 'user:edit', show: (record) => { - return this.isDev && (record.status + '') === '2' + // IAM同步过来的不能编辑 + return (record.status + '') === '2' && record.source !== UserSource.IAM.value } - }, - // 上传手写章 - { - text: this.$t('user.uploadHandStamp'), - clickEvent: 'handleUploadHandStamp', - has: 'user:uploadHandStamp' } + // 上传手写章 + // { + // text: this.$t('user.uploadHandStamp'), + // clickEvent: 'handleUploadHandStamp', + // has: 'user:uploadHandStamp' + // } ] } }, @@ -442,10 +456,10 @@ export default { }) }, handleChangePassword (username) { - if (process.env.VUE_APP_CURRENT_SYSTEM === 'IAM') { - this.$message.warn('请前往IAM修改密码') - return - } + // if (process.env.VUE_APP_CURRENT_SYSTEM === 'IAM') { + // this.$message.warn('请前往IAM修改密码') + // return + // } this.$refs.passwordmodal.show(username) }, passwordModalOk () { diff --git a/src/views/system/firendshipLinkManage/FriendshipLinkList.vue b/src/views/system/firendshipLinkManage/FriendshipLinkList.vue index 0194d51..1d7364a 100644 --- a/src/views/system/firendshipLinkManage/FriendshipLinkList.vue +++ b/src/views/system/firendshipLinkManage/FriendshipLinkList.vue @@ -52,6 +52,14 @@
+ +