Merge branch 'master' into 标准拆分译文变更
# Conflicts: # src/common/lang/en-us.js # src/common/lang/zh-cn.js # src/views/documentTool/documentSplit/modules/SplitAddForm.vue # src/views/workCenter/standardInterpretationProcess/modules/InterpretationClauseTable.vue
This commit is contained in:
+2
-2
@@ -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'
|
||||
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'
|
||||
@@ -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'
|
||||
@@ -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'
|
||||
Vendored
+1
-1
@@ -5,7 +5,7 @@
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<title>奇瑞法规智库</title>
|
||||
<title>奇瑞标准法规管理系统</title>
|
||||
<!--<link rel="icon" href="<%= BASE_URL %>logo.png"> -->
|
||||
<script src="<%= BASE_URL %>cdn/babel-polyfill/polyfill_7_2_5.js"></script>
|
||||
<script src="<%= BASE_URL %>api_address_config.js"></script>
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -74,7 +74,7 @@ UE.I18N['zh-cn'] = {
|
||||
'jsonEncodeError': '服务器返回格式错误',
|
||||
'loading':"正在上传...",
|
||||
'loadError':"上传错误",
|
||||
'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!'
|
||||
'errorLoadConfig': '不支持通过粘贴或拖拽上传图片!'
|
||||
},
|
||||
'simpleupload':{
|
||||
'exceedSizeError': '文件大小超出限制',
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
<template>
|
||||
<div class="mobile-empty">
|
||||
<div class="box"><img :src="require('@/assets/image/notMobile.png')" alt=''></div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'MobileApp.vue'
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.mobile-empty {
|
||||
position: relative;
|
||||
height: 100vh;
|
||||
overflow: hidden;
|
||||
|
||||
.box {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
height: 500px;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
|
||||
img {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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";
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -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",
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 1.9 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.3 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 61 KiB |
@@ -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;
|
||||
}
|
||||
@@ -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'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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'
|
||||
|
||||
+82
-57
@@ -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'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -95,7 +95,7 @@ module.exports = {
|
||||
compilationIllustration: '编制说明',
|
||||
projectBackground: '立项背景、立项依据',
|
||||
similarNaStandardsAnalysis: '国际、国家及行业同类标准分析',
|
||||
similarEnStandardsAnalysis: '企业同类标准对比分析',
|
||||
similarEnStandardsAnalysis: '企业同类标准比对分析',
|
||||
standardLeadingNecessity: '立项标准的领先性与必要性',
|
||||
projectExpectedEffects: '立项目的及预期效果等'
|
||||
}
|
||||
|
||||
@@ -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'
|
||||
}
|
||||
|
||||
@@ -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'
|
||||
}
|
||||
|
||||
@@ -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'
|
||||
}
|
||||
|
||||
@@ -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: {
|
||||
|
||||
@@ -97,7 +97,8 @@ module.exports = {
|
||||
associateDepartmentSpecializedModules: '关联部门专业模块',
|
||||
batchRestriction: '批量限制',
|
||||
automaticDrivingLevel: '自动驾驶等级',
|
||||
requirementType: '要求类型'
|
||||
requirementType: '要求类型',
|
||||
remarks: '备注'
|
||||
},
|
||||
// 标准主计划
|
||||
standardMasterPlan: {
|
||||
|
||||
@@ -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'
|
||||
}
|
||||
|
||||
@@ -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)'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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: '请至少选择一条数据的设计工程师'
|
||||
|
||||
+41
-16
@@ -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: '验证码发送中'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 @@
|
||||
<div class="table-text">{{ text || text === 0 ? text : global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
<!--增加数据字典双语翻译的插槽-->
|
||||
<template slot="dictText" slot-scope="text, record, index, column">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ (isChinese() ? text : record[column.key + 'En']) || (isChinese() ? text : record[column.key + 'En']) === 0 ? (isChinese() ? text : record[column.key + 'En']) : global.emptyLine }}</template>
|
||||
<div class="table-text">{{ (isChinese() ? text : record[column.key + 'En']) || (isChinese() ? text : record[column.key + 'En']) === 0 ? (isChinese() ? text : record[column.key + 'En']) : global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
<!-- 表格扩展插槽 -->
|
||||
<div slot="expandedRowRender" slot-scope="record, index" style="margin: 0">
|
||||
<!-- 如果表单会依赖某个字段变化就需要加判断,循环判断extraForm中的表单 -->
|
||||
@@ -189,6 +196,13 @@ export default {
|
||||
name: 'JExpandTable',
|
||||
components: { JUpload },
|
||||
props: {
|
||||
scroll: {
|
||||
type: Object,
|
||||
required: false,
|
||||
default: () => {
|
||||
return { x: '100%' }
|
||||
}
|
||||
},
|
||||
columns: {
|
||||
type: Array,
|
||||
default: () => {
|
||||
|
||||
@@ -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 = []
|
||||
}
|
||||
|
||||
@@ -250,7 +250,8 @@ export default {
|
||||
{
|
||||
dataIndex: 'finishFlag_dictText',
|
||||
title: this.$t('status'),
|
||||
width: 100
|
||||
width: 100,
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
}
|
||||
],
|
||||
image: false,
|
||||
|
||||
@@ -4,18 +4,30 @@
|
||||
<div class="table-page-search-wrapper">
|
||||
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||
<a-row :gutter="24" style="margin: 0;">
|
||||
<!--适用零部件-->
|
||||
<!--文本搜索-->
|
||||
<a-col :md="4" :sm="12">
|
||||
<a-form-item :label="$t('standardRegulationLibrary.applicableComponents')">
|
||||
<a-input :placeholder="$t('pleaseEnter') + $t('standardRegulationLibrary.applicableComponents')"
|
||||
v-model="queryParam.applicable_components"></a-input>
|
||||
<a-form-item :label="$t('docTool.split.textSearch')">
|
||||
<a-input :placeholder="$t('pleaseEnter') + $t('docTool.split.textSearch')"
|
||||
v-model="queryParam.item_content"></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<!--涉及系统/部件-->
|
||||
<a-col :md="4" :sm="12">
|
||||
<a-form-item :label="$t('standardRegulationLibrary.involvingSystemsComponents')">
|
||||
<a-input :placeholder="$t('pleaseEnter') + $t('standardRegulationLibrary.involvingSystemsComponents')"
|
||||
v-model="queryParam.keywords"></a-input>
|
||||
<!--<a-input :placeholder="$t('pleaseEnter') + $t('standardRegulationLibrary.involvingSystemsComponents')"-->
|
||||
<!-- v-model="queryParam.part_name"></a-input>-->
|
||||
<a-tree-select
|
||||
tree-node-filter-prop="title"
|
||||
v-model="queryParam.part_name"
|
||||
:maxTagCount="1"
|
||||
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||
:tree-data="systemPartList"
|
||||
:replaceFields="{key: 'id', value: 'id', title: 'name', children: 'childPartNameList'}"
|
||||
show-search
|
||||
allowClear
|
||||
:filterTreeNode="filterTreeOption"
|
||||
:placeholder="$t('pleaseEnter') + $t('standardRegulationLibrary.involvingSystemsComponents')"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<!--适用车型-->
|
||||
@@ -85,7 +97,7 @@
|
||||
:replaceFields="{children: 'children', key: 'id'}">
|
||||
<a-icon slot="switcherIcon" type="down" :style="{ fontSize: '12px', color: '#103770' }" />
|
||||
<template slot="title" slot-scope="{name, itemName}">
|
||||
<span :style="name && name.indexOf('.')===-1?'font-weight: 600;':''">{{ `${name} ${itemName || ''}` }}</span>
|
||||
<span :style="name && name.indexOf('.')===-1?'font-weight: 600;':''" :title="`${name} ${itemName || ''}`">{{ `${name} ${itemName || ''}` }}</span>
|
||||
</template>
|
||||
</a-tree>
|
||||
</div>
|
||||
@@ -111,7 +123,7 @@
|
||||
</a-button>
|
||||
</div>
|
||||
<!--条文内容-->
|
||||
<div class="standard-content">
|
||||
<div class="standard-content" ref="standardContent">
|
||||
<div class="clause-content-item"
|
||||
v-for="clause in clauseContentList"
|
||||
:key="clause.id"
|
||||
@@ -199,7 +211,12 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getDocSplitEditForm, getStandardInterpretation, previewDocSplit } from '@api/documentToolApi'
|
||||
import {
|
||||
getDocSplitEditForm,
|
||||
getInvolvedSystem,
|
||||
getStandardInterpretation,
|
||||
previewDocSplit
|
||||
} from '@api/documentToolApi'
|
||||
import { FieldType } from '@/enums/commonEnums'
|
||||
import VueDraggableResizable from 'vue-draggable-resizable'
|
||||
import { queryDepartTreeList } from '@api/api'
|
||||
@@ -221,7 +238,16 @@ export default {
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
labelCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 6 }
|
||||
},
|
||||
wrapperCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 16 }
|
||||
},
|
||||
queryParam: {},
|
||||
systemPartList: [], // 涉及系统部件下拉
|
||||
categoryTreeList: [], // 组织机构下拉框数据
|
||||
showClauseLabel: true, // 是否展示条文标签
|
||||
// 条文标签字段
|
||||
@@ -239,7 +265,18 @@ export default {
|
||||
translationContentList: [], // 译文内容的数据
|
||||
clauseLabelInfo: {}, // 条文标签数据
|
||||
clauseLabelHideField: ['item_content', 'item_title', 'translation'],
|
||||
needDictField: [FieldType.USER_SINGLE.value, FieldType.ORGAN_SINGLE.value, FieldType.STANDARD_MORE.value, FieldType.ORGAN_MORE.value, FieldType.OPTION_SINGLE.value, FieldType.OPTION_MORE.value, FieldType.TREE.value],
|
||||
needDictField: [
|
||||
FieldType.USER_SINGLE.value,
|
||||
FieldType.ORGAN_SINGLE.value,
|
||||
FieldType.ORGAN_MORE.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
|
||||
],
|
||||
queryParams: {},
|
||||
isDragging: false, // 是否拖拽中
|
||||
standardCatalogueRefX: 280, // 标准目录默认宽度
|
||||
@@ -250,6 +287,7 @@ export default {
|
||||
},
|
||||
mounted () {
|
||||
this.getSysCategoryTree()
|
||||
this.initInvolvedSystem()
|
||||
// 容器实际剩余宽度 = 右侧内容宽度 - 内容中的间距
|
||||
// const boxWidth = this.$refs.sheetBoxRef.getBoundingClientRect().width - this.$refs.clauseLabelChangeRef.getBoundingClientRect().width - (16 * 4)
|
||||
// this.sheetContainerRefX = boxWidth - this.standardCatalogueRefX - this.clauseLabelRefX
|
||||
@@ -260,7 +298,9 @@ export default {
|
||||
this.loading = true
|
||||
getStandardInterpretation({ standard_id: this.spiltInfo.standardId }).then(res => {
|
||||
if (res.success) {
|
||||
this.standardInterpret = res.result[0] || {}
|
||||
const list = res.result || []
|
||||
// 后端说id是随时间递增的,取最新数据也就是取id最大的数据
|
||||
this.standardInterpret = list.sort((a, b) => b.id - a.id)[0] || {}
|
||||
this.selectedTreeKeys = []
|
||||
this.hightMenuId = null
|
||||
this.clauseLabelInfo = this.standardInterpret
|
||||
@@ -275,6 +315,12 @@ export default {
|
||||
handleViewFile (ids) {
|
||||
this.$refs.uploadFile.open(ids)
|
||||
},
|
||||
// 获取涉及系统/部件
|
||||
initInvolvedSystem () {
|
||||
getInvolvedSystem().then(res => {
|
||||
this.systemPartList = res.result.records || res.result || []
|
||||
})
|
||||
},
|
||||
// 获取组织机构树
|
||||
getSysCategoryTree () {
|
||||
queryDepartTreeList().then((res) => {
|
||||
@@ -298,6 +344,12 @@ export default {
|
||||
this.queryParam = {}
|
||||
this.initDetailInfo()
|
||||
},
|
||||
// 清除选中状态
|
||||
clearSelect () {
|
||||
this.selectedTreeKeys = []
|
||||
this.hightMenuId = null
|
||||
this.clauseLabelInfo = {}
|
||||
},
|
||||
/**
|
||||
* 拖拽回调
|
||||
* @param min - 拖拽最小宽度
|
||||
@@ -349,10 +401,15 @@ export default {
|
||||
}
|
||||
previewDocSplit(params).then(res => {
|
||||
if (res.success) {
|
||||
// 清除选中状态
|
||||
this.clearSelect()
|
||||
const data = res.result || {}
|
||||
this.treeData = data.sarFileSplitMenuEO || []
|
||||
this.spiltInfo = data.documentSplitInfo || {}
|
||||
this.clauseContentList = data.documentSplitDetail || []
|
||||
this.$refs.standardContent.scrollTop = 0
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
@@ -782,4 +839,7 @@ export default {
|
||||
.disabledSelect {
|
||||
user-select: none;
|
||||
}
|
||||
.table-page-search-wrapper .ant-form-inline /deep/ .ant-form-item > .ant-form-item-label {
|
||||
min-width: auto;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
:disabledSourceSearch="!selectStandardCanUpdateTypeField.includes(item.dbFieldName)"
|
||||
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)"
|
||||
:exclude-standard-numbers="excludeStandardFields.includes(item.dbFieldName) ? excludeStandardNumbers : null"
|
||||
:is-value-have-name="selectStandardValueNeedNameField.includes(item.dbFieldName)"
|
||||
v-model="formInline[item.dbFieldName]" />
|
||||
<!-- 7, 多选组织机构 -->
|
||||
<j-select-depart v-else-if="item.fieldShowType === FieldType.ORGAN_MORE.value"
|
||||
@@ -113,6 +114,7 @@
|
||||
tree-checkable
|
||||
treeCheckStrictly
|
||||
dropdownMatchSelectWidth
|
||||
:replaceFields="notNeedEnTitleTreeField.includes(item.dbFieldName) ? null : {title: isChinese() ? 'title' : 'enTitle'}"
|
||||
:placeholder="$t('pleaseSelect')+item.dbFieldTxt" />
|
||||
<!-- 14, 年份选择 -->
|
||||
<j-date v-else-if="item.fieldShowType === FieldType.YEAR_PICKER.value"
|
||||
@@ -130,18 +132,27 @@
|
||||
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)"
|
||||
:tree-data="optionsData[item.dbFieldName]"
|
||||
:label-in-value="false"
|
||||
:replaceFields="notNeedEnTitleTreeField.includes(item.dbFieldName) ? null : {title: isChinese() ? 'title' : 'enTitle'}"
|
||||
:placeholder="$t('pleaseSelect')+item.dbFieldTxt" />
|
||||
<!--16、树形弹框选择-->
|
||||
<tree-selection v-else-if="item.fieldShowType === FieldType.TREE_MODAL_SELECT.value || item.fieldShowType === FieldType.TREE_MODAL_SELECT_SEARCH_DIFF.value"
|
||||
:placeholder="$t('pleaseSelect')+item.dbFieldTxt"
|
||||
v-model="formInline[item.dbFieldName]"
|
||||
@nameChange="treeSelectNameChange"
|
||||
:filedName="item.dbFieldName"
|
||||
type="checkbox"
|
||||
:options-href="item.fieldHref"
|
||||
:nameStr="formInline[item.dbFieldName + '_dictText']"
|
||||
:dict-id="item.dictId"
|
||||
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)" />
|
||||
<!-- <tree-selection v-else-if="item.fieldShowType === FieldType.TREE_MODAL_SELECT.value || item.fieldShowType === FieldType.TREE_MODAL_SELECT_SEARCH_DIFF.value"-->
|
||||
<!-- :placeholder="$t('pleaseSelect')+item.dbFieldTxt"-->
|
||||
<!-- v-model="formInline[item.dbFieldName]"-->
|
||||
<!-- @nameChange="treeSelectNameChange"-->
|
||||
<!-- :filedName="item.dbFieldName"-->
|
||||
<!-- type="checkbox"-->
|
||||
<!-- :options-href="item.fieldHref"-->
|
||||
<!-- :nameStr="formInline[item.dbFieldName + '_dictText']"-->
|
||||
<!-- :dict-id="item.dictId"-->
|
||||
<!-- :disabled="disabled || disabledFieldList.includes(item.dbFieldName)" />-->
|
||||
<tree-data-selection v-else-if="item.fieldShowType === FieldType.TREE_MODAL_SELECT.value || item.fieldShowType === FieldType.TREE_MODAL_SELECT_SEARCH_DIFF.value"
|
||||
:placeholder="$t('pleaseSelect')+item.dbFieldTxt"
|
||||
v-model="formInline[item.dbFieldName]"
|
||||
:fieldName="item.dbFieldName"
|
||||
:nameStr="formInline[item.dbFieldName + '_dictText']"
|
||||
@nameChange="treeDataSelectNameChange"
|
||||
:optionsHref="item.treeFirstHref"
|
||||
:dict-id="item.dictId"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</template>
|
||||
@@ -173,10 +184,12 @@ import TreeSelection from '../selection/TreeSelection'
|
||||
import STreeSelect from '../STreeSelect'
|
||||
import { isHasPermission } from '../../utils/hasPermission'
|
||||
import { mapGetters } from 'vuex'
|
||||
import TreeDataSelection from '../selection/TreeDataSelection'
|
||||
|
||||
export default {
|
||||
name: 'AddForm',
|
||||
components: {
|
||||
TreeDataSelection,
|
||||
UserSelection,
|
||||
JMultipleDatePicker,
|
||||
StandardSelection,
|
||||
@@ -295,6 +308,14 @@ export default {
|
||||
default: () => {
|
||||
return []
|
||||
}
|
||||
},
|
||||
// 选标准字段需要在value里面加标准名称的字段
|
||||
selectStandardValueNeedNameField: {
|
||||
type: Array,
|
||||
required: false,
|
||||
default: () => {
|
||||
return []
|
||||
}
|
||||
}
|
||||
},
|
||||
data () {
|
||||
@@ -320,7 +341,8 @@ export default {
|
||||
dictNotCodes: ['name_code'], // 用到字典的字段不传dictCode的字段
|
||||
filePerm: { // 上传文件根据权限控制只能查看,没有权限的除了系统管理员外不可见不可下载
|
||||
associated_file: 'enterpriseStandard:associatedFile:look' // 关联文件
|
||||
}
|
||||
},
|
||||
notNeedEnTitleTreeField: ['standard_system'] // 树形不需要enTitle判断的字段,暂时只有结构树不需要
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@@ -361,12 +383,8 @@ export default {
|
||||
},
|
||||
fileIsDownload () { // 文件是否可下载
|
||||
if (Object.keys(this.filePerm).includes(this.uploadName)) {
|
||||
// 系统管理员可下载
|
||||
if (this.isSystemAdmin) {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
// 需要特殊判断的字段不可下载
|
||||
return false
|
||||
} else {
|
||||
// 不是需要特殊判断的字段正常可下载
|
||||
return true
|
||||
@@ -577,6 +595,9 @@ export default {
|
||||
treeSelectNameChange (value, fieldName) {
|
||||
this.formInline[fieldName + '_dictText'] = value
|
||||
},
|
||||
treeDataSelectNameChange (value, fieldName) {
|
||||
this.formInline[fieldName + '_dictText'] = value
|
||||
},
|
||||
submit () {
|
||||
this.$refs.ruleForm.validate(valid => {
|
||||
if (valid) {
|
||||
@@ -628,13 +649,14 @@ export default {
|
||||
|
||||
.form-flex-item-half {
|
||||
width: calc((100% - 10px) / 2);
|
||||
margin: 0 2px;
|
||||
}
|
||||
.form-flex-item-half:nth-child(2n+1) {
|
||||
margin-right: 5px;
|
||||
}
|
||||
.form-flex-item-half:nth-child(2n) {
|
||||
margin-left: 5px;
|
||||
}
|
||||
//.form-flex-item-half:nth-child(2n+1) {
|
||||
// margin-right: 5px;
|
||||
//}
|
||||
//.form-flex-item-half:nth-child(2n) {
|
||||
// margin-left: 5px;
|
||||
//}
|
||||
|
||||
.form-flex-item-line {
|
||||
width: 100%;
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
show-search
|
||||
allowClear
|
||||
:filterTreeNode="filterTreeOption"
|
||||
:replaceFields="{title: isChinese() ? 'title' : 'enTitle'}"
|
||||
:placeholder="$t('pleaseSelect')+item.dbFieldTxt"
|
||||
/>
|
||||
</a-form-item>
|
||||
@@ -35,6 +36,7 @@
|
||||
show-search
|
||||
allowClear
|
||||
:filterTreeNode="filterTreeOption"
|
||||
:replaceFields="{title: isChinese() ? 'title' : 'enTitle'}"
|
||||
:placeholder="$t('pleaseSelect')+item.dbFieldTxt"
|
||||
/>
|
||||
</a-form-item>
|
||||
@@ -141,9 +143,28 @@
|
||||
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||
:tree-data="optionsData[item.dbFieldName]"
|
||||
:replaceFields="{key: 'id', value: 'id', title: 'name', children: 'childPartNameList'}"
|
||||
tree-checkable
|
||||
show-search
|
||||
allowClear
|
||||
dropdownMatchSelectWidth
|
||||
:filterTreeNode="filterTreeOption"
|
||||
:placeholder="$t('pleaseSelect')+item.dbFieldTxt"
|
||||
/>
|
||||
</a-form-item>
|
||||
</template>
|
||||
<!-- 树形弹框(带出所有子级) -->
|
||||
<template v-if="item.fieldShowType === FieldType.TREE_MODAL_SELECT_SEARCH_CHILD.value">
|
||||
<a-form-item :label="item.dbFieldTxt" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-tree-select
|
||||
tree-node-filter-prop="title"
|
||||
v-model="queryParam[item.dbFieldName]"
|
||||
:maxTagCount="1"
|
||||
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||
:tree-data="optionsData[item.dbFieldName]"
|
||||
tree-checkable
|
||||
treeCheckStrictly
|
||||
show-search
|
||||
allowClear
|
||||
dropdownMatchSelectWidth
|
||||
:filterTreeNode="filterTreeOption"
|
||||
:placeholder="$t('pleaseSelect')+item.dbFieldTxt"
|
||||
/>
|
||||
@@ -171,6 +192,7 @@
|
||||
show-search
|
||||
allowClear
|
||||
:filterTreeNode="filterTreeOption"
|
||||
:replaceFields="{title: isChinese() ? 'title' : 'enTitle'}"
|
||||
/>
|
||||
</a-form-item>
|
||||
</template>
|
||||
@@ -187,6 +209,7 @@
|
||||
show-search
|
||||
allowClear
|
||||
:filterTreeNode="filterTreeOption"
|
||||
:replaceFields="{title: isChinese() ? 'title' : 'enTitle'}"
|
||||
/>
|
||||
</a-form-item>
|
||||
</template>
|
||||
@@ -280,13 +303,31 @@
|
||||
<a-tree-select
|
||||
tree-node-filter-prop="title"
|
||||
v-model="queryParam[item.dbFieldName]"
|
||||
:maxTagCount="1"
|
||||
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||
:tree-data="optionsData[item.dbFieldName]"
|
||||
:replaceFields="{key: 'id', value: 'id', title: 'name', children: 'childPartNameList'}"
|
||||
tree-checkable
|
||||
show-search
|
||||
allowClear
|
||||
dropdownMatchSelectWidth
|
||||
:filterTreeNode="filterTreeOption"
|
||||
:placeholder="$t('pleaseSelect')+item.dbFieldTxt"
|
||||
/>
|
||||
</a-form-item>
|
||||
</template>
|
||||
<!-- 树形弹框(带出所有子级) -->
|
||||
<template v-if="item.fieldShowType === FieldType.TREE_MODAL_SELECT_SEARCH_CHILD.value">
|
||||
<a-form-item :label="item.dbFieldTxt" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-tree-select
|
||||
tree-node-filter-prop="title"
|
||||
v-model="queryParam[item.dbFieldName]"
|
||||
:maxTagCount="1"
|
||||
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||
:tree-data="optionsData[item.dbFieldName]"
|
||||
tree-checkable
|
||||
treeCheckStrictly
|
||||
show-search
|
||||
allowClear
|
||||
dropdownMatchSelectWidth
|
||||
:filterTreeNode="filterTreeOption"
|
||||
:placeholder="$t('pleaseSelect')+item.dbFieldTxt"
|
||||
/>
|
||||
@@ -432,6 +473,13 @@ export default {
|
||||
if (standardStateIndex !== -1) {
|
||||
this.searchList[standardStateIndex].fieldShowType = FieldType.OPTION_MORE.value
|
||||
}
|
||||
// 把标准名称放到第二个
|
||||
const standardNameIndex = this.searchList.findIndex(item => item.dbFieldName === 'standard_name')
|
||||
const standardName = this.searchList.find(item => item.dbFieldName === 'standard_name')
|
||||
if (standardNameIndex !== -1) {
|
||||
this.searchList.splice(standardNameIndex, 1)
|
||||
this.searchList.splice(1, 0, standardName)
|
||||
}
|
||||
this.getOptionsData() // 获取下拉数据
|
||||
console.log(this.searchList)
|
||||
}
|
||||
|
||||
@@ -101,7 +101,7 @@ export default {
|
||||
/* 分页参数 */
|
||||
ipagination: {
|
||||
current: 1,
|
||||
pageSize: 50,
|
||||
pageSize: 10,
|
||||
pageSizeOptions: ['10', '30', '50', '100', '150', '200'],
|
||||
showTotal: (total, range) => {
|
||||
return range[0] + '-' + range[1] + ' ' + this.$t('total') + ' ' + total + ' ' + this.$t('strip')
|
||||
|
||||
@@ -20,12 +20,13 @@
|
||||
v-bind="$attrs"
|
||||
show-search
|
||||
:filter-option="filterOption"
|
||||
@dropdownVisibleChange="dropdownVisibleChange"
|
||||
@change="handleInput"
|
||||
>
|
||||
<a-select-option :value="undefined">请选择</a-select-option>
|
||||
<a-select-option :value="undefined">{{ $t('pleaseSelect') }}</a-select-option>
|
||||
<a-select-option v-for="(item, key) in dictOptions" :key="key" :value="item.value" :disabled="item.disabled || false">
|
||||
<span style="display: inline-block;width: 100%" :title=" item.text || item.label ">
|
||||
{{ item.text || item.label }}
|
||||
<span :title=" $i18n.locale === EN ? item.enText : (item.text || item.label) ">
|
||||
{{ $i18n.locale === EN ? item.enText : (item.text || item.label) }}
|
||||
</span>
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
@@ -56,6 +57,7 @@ export default {
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
EN: 'en-us',
|
||||
dictOptions: [],
|
||||
tagType: ''
|
||||
}
|
||||
@@ -105,6 +107,7 @@ export default {
|
||||
// 优先从缓存中读取字典配置
|
||||
if (getDictItemsFromCache(this.dictCode)) {
|
||||
this.dictOptions = getDictItemsFromCache(this.dictCode)
|
||||
console.log('-----------缓存获取', this.dictCode, this.dictOptions)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -112,6 +115,7 @@ export default {
|
||||
ajaxGetDictItems(this.dictCode, null).then((res) => {
|
||||
if (res.success) {
|
||||
this.dictOptions = res.result
|
||||
console.log('-----------接口获取', this.dictCode, this.dictOptions)
|
||||
}
|
||||
})
|
||||
},
|
||||
@@ -123,9 +127,15 @@ export default {
|
||||
val = e
|
||||
}
|
||||
console.log(val)
|
||||
// 返回名字
|
||||
if (this.$listeners.nameChange) {
|
||||
this.$emit('nameChange', this.getDictLabelByValue(val))
|
||||
}
|
||||
// 返回选中字典对象
|
||||
if (this.$listeners.dictChange) {
|
||||
const dictItem = this.dictOptions.find(item => item.value === val)
|
||||
this.$emit('dictChange', JSON.parse(JSON.stringify(dictItem || null)))
|
||||
}
|
||||
this.$emit('change', val)
|
||||
// 解决数据规则,选择自定义SQL 规则值无法输入空格
|
||||
this.$emit('input', val)
|
||||
@@ -140,6 +150,9 @@ export default {
|
||||
},
|
||||
getCurrentDictOptions () {
|
||||
return this.dictOptions
|
||||
},
|
||||
dropdownVisibleChange (open) {
|
||||
this.$emit('dropdownVisibleChange', open)
|
||||
}
|
||||
},
|
||||
model: {
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
:class="(openSelectedAll && arrayValue[0] === selectedAllValue) ? 'multi-select-tag-check-all' : ''"
|
||||
v-bind="$attrs">
|
||||
<a-select-option :key="-1" :value="selectedAllValue" v-if="openSelectedAll && dictOptions.length > 0">{{ $t('checkedAll') }}</a-select-option>
|
||||
<a-select-option v-for="(item, key) in dictOptions" :key="key" :value="item.value">{{ item.text || item.label }}</a-select-option>
|
||||
<a-select-option v-for="(item, key) in dictOptions" :key="key" :value="item.value">{{ $i18n.locale === EN ? item.enText : (item.text || item.label) }}</a-select-option>
|
||||
</a-select>
|
||||
|
||||
</template>
|
||||
@@ -61,6 +61,7 @@ export default {
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
EN: 'en-us',
|
||||
// 全选的value
|
||||
selectedAllValue,
|
||||
dictOptions: [],
|
||||
@@ -140,20 +141,22 @@ export default {
|
||||
}
|
||||
}
|
||||
this.arrayValue = selectedValue
|
||||
let list = selectedValue
|
||||
// 开启全选时,不把全选的value进行返回
|
||||
if (this.openSelectedAll) {
|
||||
const list = selectedValue.filter(item => item !== selectedAllValue)
|
||||
if (this.$listeners.nameChange) {
|
||||
const labelList = list.map(val => this.getDictLabelByValue(val))
|
||||
this.$emit('nameChange', labelList.join(this.spliter))
|
||||
}
|
||||
this.$emit('change', list.join(this.spliter))
|
||||
} else {
|
||||
if (this.$listeners.nameChange) {
|
||||
this.$emit('nameChange', selectedValue.map(val => this.getDictLabelByValue(val)).join(this.spliter))
|
||||
}
|
||||
this.$emit('change', selectedValue.join(this.spliter))
|
||||
list = selectedValue.filter(item => item !== selectedAllValue)
|
||||
}
|
||||
// 返回名字
|
||||
if (this.$listeners.nameChange) {
|
||||
const labelList = list.map(val => this.getDictLabelByValue(val))
|
||||
this.$emit('nameChange', labelList.join(this.spliter))
|
||||
}
|
||||
// 返回选中字典对象列表
|
||||
if (this.$listeners.dictChange) {
|
||||
const dictList = list.map(val => this.dictOptions.find(item => item.value === val))
|
||||
this.$emit('dictChange', JSON.parse(JSON.stringify(dictList)))
|
||||
}
|
||||
this.$emit('change', list.join(this.spliter))
|
||||
},
|
||||
// 通过val获取字典项
|
||||
getDictLabelByValue (val) {
|
||||
|
||||
@@ -22,7 +22,13 @@
|
||||
<div class="table-text">{{ text || text === 0 ? text : global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
<!--增加数据字典双语翻译的插槽-->
|
||||
<template slot="dictText" slot-scope="text, record, index, column">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ (isChinese() ? text : record[column.key + 'En']) || (isChinese() ? text : record[column.key + 'En']) === 0 ? (isChinese() ? text : record[column.key + 'En']) : global.emptyLine }}</template>
|
||||
<div class="table-text">{{ (isChinese() ? text : record[column.key + 'En']) || (isChinese() ? text : record[column.key + 'En']) === 0 ? (isChinese() ? text : record[column.key + 'En']) : global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
<!-- 操作栏 -->
|
||||
<template slot="action" slot-scope="text, record, index">
|
||||
<slot name="action" v-bind="{text, record, index}">
|
||||
|
||||
@@ -375,7 +375,7 @@ export default {
|
||||
if (!info.file.status && this.uploadGoOn === false) {
|
||||
info.fileList.pop()
|
||||
}
|
||||
let fileList = info.fileList
|
||||
let fileList = info.fileList.filter(item => item.uploadGoOn)
|
||||
if (info.file.status === 'done') {
|
||||
if (this.number > 0) {
|
||||
fileList = fileList.slice(-this.number)
|
||||
|
||||
@@ -155,7 +155,7 @@ export default {
|
||||
methods: {
|
||||
// update-begin-author:sunjianlei date:20200120 for: 动态更改页面标题
|
||||
changeTitle (title) {
|
||||
const projectTitle = '奇瑞法规智库'
|
||||
const projectTitle = '奇瑞标准法规管理系统'
|
||||
// 首页特殊处理
|
||||
if (this.$route.path === indexKey) {
|
||||
document.title = projectTitle
|
||||
|
||||
@@ -13,7 +13,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="illustration" v-if="!mobile">
|
||||
<img src="@/assets/home.png" alt="">
|
||||
<div class="illustration-img"><img src="@/assets/image/loginLogo.png" alt=""></div>
|
||||
<p class="illustration-title">{{$t('login.systemName')}}</p>
|
||||
</div>
|
||||
<route-view></route-view>
|
||||
</div>
|
||||
@@ -124,15 +125,37 @@ function isMobile () {
|
||||
|
||||
.illustration{
|
||||
position: absolute;
|
||||
max-width: 50%;
|
||||
left: 12vw;
|
||||
top: 20vh;
|
||||
max-width: 40%;
|
||||
max-height: 100%;
|
||||
height: 100%;
|
||||
min-width: 400px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
img{
|
||||
max-width: 70%;
|
||||
|
||||
.illustration-img {
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.illustration-title {
|
||||
font-family: PingFang SC, PingFang SC, sans-serif;
|
||||
font-weight: 600;
|
||||
font-size: 40px;
|
||||
color: #333333;
|
||||
line-height: 1.2;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 1366px) {
|
||||
.illustration{
|
||||
top: 15vh;
|
||||
|
||||
.illustration-img {
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.illustration-title {
|
||||
font-size: 32px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<template>
|
||||
<a-layout-sider
|
||||
:collapsedWidth="64"
|
||||
:class="['sider', isDesktop() ? null : 'shadow', theme, fixSiderbar ? 'ant-fixed-sidemenu' : null ]"
|
||||
width="208px"
|
||||
:collapsible="collapsible"
|
||||
@@ -165,6 +166,17 @@ export default {
|
||||
<!-- update_begin author:sunjianlei date:20190530 for: 选中首页的时候不显示背景颜色 -->
|
||||
<style lang="less">
|
||||
.ant-menu.ant-menu-root {
|
||||
&:not(.ant-menu-horizontal) .ant-menu-item-selected {
|
||||
background-color: rgba(0, 100, 250, 0.08);
|
||||
}
|
||||
&.ant-menu-inline-collapsed {
|
||||
width: 64px;
|
||||
& > .ant-menu-item,
|
||||
& > .ant-menu-submenu > .ant-menu-submenu-title {
|
||||
padding: 0 24px !important;
|
||||
}
|
||||
}
|
||||
|
||||
& > .ant-menu-item:first-child {
|
||||
//background-color: transparent;
|
||||
|
||||
|
||||
@@ -285,9 +285,9 @@ body {
|
||||
}
|
||||
|
||||
.trigger {
|
||||
font-size: 22px;
|
||||
line-height: 42px;
|
||||
padding: 0 18px;
|
||||
font-size: 12px;
|
||||
//line-height: 42px;
|
||||
padding: 22px;
|
||||
cursor: pointer;
|
||||
transition: color 300ms, background 300ms;
|
||||
|
||||
@@ -343,7 +343,7 @@ body {
|
||||
}
|
||||
|
||||
&.ant-header-side-closed {
|
||||
width: calc(100% - 80px)
|
||||
width: calc(100% - 56px)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,6 +90,14 @@
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
<!--增加数据字典双语翻译的插槽-->
|
||||
<template slot="dictText" slot-scope="text, record, index, column">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ (isChinese() ? text : record[column.key + 'En']) || (isChinese() ? text : record[column.key + 'En']) === 0 ? (isChinese() ? text : record[column.key + 'En']) : global.emptyLine }}</template>
|
||||
<div class="table-text">{{ (isChinese() ? text : record[column.key + 'En']) || (isChinese() ? text : record[column.key + 'En']) === 0 ? (isChinese() ? text : record[column.key + 'En']) : global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
<!-- 清单编号/清单名称 -->
|
||||
<template v-slot:toDetail="text, record">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
@@ -198,7 +206,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'country_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 清单编号
|
||||
title: this.$t('standardRegulationLibrary.marketRegulationsList.listNumber'),
|
||||
@@ -219,7 +227,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'drivePosition_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 清单版本
|
||||
title: this.$t('standardRegulationLibrary.marketRegulationsList.listVersion'),
|
||||
@@ -247,7 +255,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'manifestStatus_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
}
|
||||
],
|
||||
dataList: []
|
||||
|
||||
@@ -11,8 +11,9 @@
|
||||
|
||||
<a-icon v-if="(nameStr || value) && !disabled" slot="suffix" class="close-icon" type="close-circle" theme="filled" @click="clearInput" />
|
||||
</a-input>
|
||||
<a-button v-if="!disabled" type="primary" class="button-box" @click="standardClick">
|
||||
{{ $t('standardSelect.standardSelection') }}
|
||||
<a-button v-if="!disabled" type="primary" class="button-box" :title="$t('standardSelect.standardSelection')" @click="standardClick">
|
||||
<span v-if="isSmall && $i18n.locale === EN" type="select">{{$t('standardSelect.standardSelection').charAt(0)}}</span>
|
||||
<span v-else>{{ $t('standardSelect.standardSelection') }}</span>
|
||||
</a-button>
|
||||
</div>
|
||||
<standard-selection-modal ref="standardSelectionModal"
|
||||
@@ -61,6 +62,18 @@ export default {
|
||||
default: null
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
const offsetWidth = document.getElementsByClassName('selection-wrapper')[0].offsetWidth
|
||||
if (offsetWidth >= 0 && offsetWidth <= 300) {
|
||||
this.isSmall = true
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
EN: 'en-us',
|
||||
isSmall: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 点击选择标准按钮
|
||||
standardClick () {
|
||||
@@ -134,4 +147,15 @@ export default {
|
||||
.close-icon:hover {
|
||||
color: rgba(0, 0, 0, 0.45);
|
||||
}
|
||||
|
||||
//.small-btn {
|
||||
// max-width: 60px;
|
||||
// span {
|
||||
// display: inline-block;
|
||||
// width: 40px;
|
||||
// overflow-x: hidden;
|
||||
// text-overflow: ellipsis;
|
||||
// white-space: nowrap;
|
||||
// }
|
||||
//}
|
||||
</style>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<div class="table-page-search-wrapper">
|
||||
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||
<a-row :gutter="24">
|
||||
<a-col :sm="6">
|
||||
<a-col :sm="6" v-show="!splitSearch">
|
||||
<a-form-item :label="$t('standardSelect.source')" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<j-dict-select-tag style="width: 100%" v-model="queryParam.source"
|
||||
:disabled="disabledSourceSearch"
|
||||
@@ -22,6 +22,24 @@
|
||||
@change="handleTypeChange" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<!--标准结构树-->
|
||||
<a-col :md="8" :sm="12" v-if="splitSearch">
|
||||
<a-form-item :label="$t('docTool.comparison.standardStructureTree')">
|
||||
<a-tree-select
|
||||
tree-node-filter-prop="title"
|
||||
v-model="queryParam.standardSystem"
|
||||
:maxTagCount="1"
|
||||
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||
:tree-data="standardStructureTree"
|
||||
tree-checkable
|
||||
show-search
|
||||
allowClear
|
||||
tree-check-strictly
|
||||
:filterTreeNode="filterTreeOption"
|
||||
:placeholder="$t('pleaseSelect') + $t('docTool.comparison.standardStructureTree')"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :sm="8">
|
||||
<a-form-item :label="$t('standardSelect.standardNumOrName')" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-input :placeholder="$t('pleaseEnter')+$t('standardSelect.standardNumOrName')"
|
||||
@@ -38,7 +56,7 @@
|
||||
</div>
|
||||
<a-table
|
||||
:columns="columns"
|
||||
:rowKey="record => {return record.standardNumber + '|' + record.standardName}"
|
||||
:rowKey="record => {return isValueHaveName ? record.standardNumber + '《' + record.standardName + '》' : record.standardNumber}"
|
||||
:scroll="{x: 900}"
|
||||
:data-source="dataList"
|
||||
:pagination="ipagination"
|
||||
@@ -64,8 +82,20 @@
|
||||
<!-- 标准状态 -->
|
||||
<template slot="standardState" slot-scope="text, record">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ record.source === '3' ? (record.esStandardState_dictText || global.emptyLine) : (record.standardState_dictText || global.emptyLine) }}</template>
|
||||
<div class="table-text">{{ record.source === '3' ? (record.esStandardState_dictText || global.emptyLine) : (record.standardState_dictText || global.emptyLine) }}</div>
|
||||
<template slot="title">
|
||||
{{
|
||||
record.source === '3' ?
|
||||
(isChinese() ? (record.esStandardState_dictText || global.emptyLine) : (record.esStandardState_dictTextEn || global.emptyLine)) :
|
||||
(isChinese() ? (record.standardState_dictText || global.emptyLine) : (record.standardState_dictTextEn || global.emptyLine))
|
||||
}}
|
||||
</template>
|
||||
<div class="table-text">
|
||||
{{
|
||||
record.source === '3' ?
|
||||
(isChinese() ? (record.esStandardState_dictText || global.emptyLine) : (record.esStandardState_dictTextEn || global.emptyLine)) :
|
||||
(isChinese() ? (record.standardState_dictText || global.emptyLine) : (record.standardState_dictTextEn || global.emptyLine))
|
||||
}}
|
||||
</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
@@ -83,6 +113,7 @@
|
||||
import { ajaxGetDictItems, getStandardList } from '@/api/api'
|
||||
import JDictSelectTag from '../dict/JDictSelectTag'
|
||||
import { StandardSource } from '../../enums/commonEnums'
|
||||
import { getForeignStandardTree } from '@api/standardRegulationLibraryApi'
|
||||
|
||||
export default {
|
||||
name: 'StandardSelectionModal',
|
||||
@@ -127,6 +158,18 @@ export default {
|
||||
default: () => {
|
||||
return {}
|
||||
}
|
||||
},
|
||||
// 是否拆分的搜索(来源换成外部标准结构树)
|
||||
splitSearch: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
},
|
||||
// 是否value要有标准名称
|
||||
isValueHaveName: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data () {
|
||||
@@ -189,7 +232,15 @@ export default {
|
||||
}
|
||||
],
|
||||
dataList: [],
|
||||
sourceOptions: []
|
||||
sourceOptions: [],
|
||||
// 标准结构树
|
||||
standardStructureTree: []
|
||||
}
|
||||
},
|
||||
created () {
|
||||
// 拆分的需要加载标准结构树
|
||||
if (this.splitSearch) {
|
||||
this.loadStandardStructureTree()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -210,6 +261,34 @@ export default {
|
||||
}
|
||||
})
|
||||
},
|
||||
// 加载标准结构树
|
||||
loadStandardStructureTree () {
|
||||
// option 不传显示我的收藏,1不显示我的收藏, 2只能选二级中国及中国下三级,和欧盟EU
|
||||
getForeignStandardTree({ option: 1 }).then(res => {
|
||||
if (res.success) {
|
||||
this.standardStructureTree = res.result || []
|
||||
}
|
||||
})
|
||||
},
|
||||
// tree-select搜索
|
||||
filterTreeOption (input, option) {
|
||||
const text = option.componentOptions.propsData.title || option.componentOptions.propsData.label
|
||||
return text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
||||
},
|
||||
// 获取树结构没有被禁用的value值
|
||||
getValuesWhereNotDisabled (tree = []) {
|
||||
const values = []
|
||||
function traverse (node) {
|
||||
if (!node.disabled) { // 只处理 disabled 不为 true 的节点
|
||||
values.push(node.value)
|
||||
}
|
||||
if (node.children && node.children.length > 0) {
|
||||
node.children.forEach(child => traverse(child))
|
||||
}
|
||||
}
|
||||
tree.forEach(node => traverse(node))
|
||||
return values
|
||||
},
|
||||
// 获取表格数据
|
||||
replacePage (arg) {
|
||||
if (arg === 1) {
|
||||
@@ -222,6 +301,10 @@ export default {
|
||||
pageSize: this.ipagination.pageSize,
|
||||
excludeStandardNumbers: this.excludeStandardNumbers
|
||||
}
|
||||
// 标准结构树
|
||||
if (Array.isArray(query.standardSystem)) {
|
||||
query.standardSystem = query.standardSystem.map(item => item.value).join(',')
|
||||
}
|
||||
// 清空在可选范围内进行查询
|
||||
if (!query.source && this.canSelectedSource.length < 3) {
|
||||
query.source = this.canSelectedSource.join(',')
|
||||
@@ -259,21 +342,43 @@ export default {
|
||||
if (this.type === 'checkbox') {
|
||||
if (selectedRowKeys.length > this.selectedRowList.length) {
|
||||
// 说明是增加了数据
|
||||
for (const rowIndex in selectedRows) {
|
||||
if (!this.selectedRowList.find(item => (item.standardNumber + '|' + item.standardName) === (selectedRows[rowIndex].standardNumber + '|' + selectedRows[rowIndex].standardName))) {
|
||||
// 不存在,追加
|
||||
this.selectedRowList.push(selectedRows[rowIndex])
|
||||
if (this.isValueHaveName) {
|
||||
// value里面要带标准名称
|
||||
for (const rowIndex in selectedRows) {
|
||||
if (!this.selectedRowList.find(item => (item.standardNumber + '《' + item.standardName + '》') === (selectedRows[rowIndex].standardNumber + '《' + selectedRows[rowIndex].standardName + '》'))) {
|
||||
// 不存在,追加
|
||||
this.selectedRowList.push(selectedRows[rowIndex])
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// value不带标准名称
|
||||
for (const rowIndex in selectedRows) {
|
||||
if (!this.selectedRowList.find(item => item.standardNumber === selectedRows[rowIndex].standardNumber)) {
|
||||
// 不存在,追加
|
||||
this.selectedRowList.push(selectedRows[rowIndex])
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// 说明是删除了数据
|
||||
if (selectedRowKeys && selectedRowKeys.length > 0) {
|
||||
// 没有选中数据,说明这一页没有选中数据了
|
||||
for (let i = 0; i < this.selectedRowList.length; i++) {
|
||||
if (!selectedRowKeys.find(item => item === this.selectedRowList[i].standardNumber + '|' + this.selectedRowList[i].standardName)) {
|
||||
// 表格选中中没有找到这一条数据,说明已经被删了
|
||||
this.selectedRowList.splice(i, 1)
|
||||
i--
|
||||
if (this.isValueHaveName) {
|
||||
// value里面要带标准名称
|
||||
for (let i = 0; i < this.selectedRowList.length; i++) {
|
||||
if (!selectedRowKeys.find(item => item === this.selectedRowList[i].standardNumber + '《' + this.selectedRowList[i].standardName + '》')) {
|
||||
// 表格选中中没有找到这一条数据,说明已经被删了
|
||||
this.selectedRowList.splice(i, 1)
|
||||
i--
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (let i = 0; i < this.selectedRowList.length; i++) {
|
||||
if (!selectedRowKeys.find(item => item === this.selectedRowList[i].standardNumber)) {
|
||||
// 表格选中中没有找到这一条数据,说明已经被删了
|
||||
this.selectedRowList.splice(i, 1)
|
||||
i--
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -0,0 +1,531 @@
|
||||
<template>
|
||||
<j-modal
|
||||
:title="$t('userSelect.select')"
|
||||
:width="width"
|
||||
:visible="visible"
|
||||
switchFullscreen
|
||||
:maskClosable="false"
|
||||
:confirmLoading="confirmLoading"
|
||||
@ok="handleOk"
|
||||
@cancel="handleCancel">
|
||||
|
||||
<div class="modal-content">
|
||||
<a-spin :spinning="topLoading">
|
||||
<a-input-search style="margin-bottom: 1px" :placeholder="$t('pleaseEnter') + $t('treeSelection.primaryNodeName')" @search="onSearch" />
|
||||
<a-tree
|
||||
ref="tree"
|
||||
:checkable="checkable"
|
||||
:checkStrictly="true"
|
||||
:replaceFields="replaceFields"
|
||||
:class="treeScreenClass"
|
||||
:treeData="treeData"
|
||||
:autoExpandParent="autoExpandParent"
|
||||
@check="onCheck"
|
||||
@select="onSelect"
|
||||
@expand="onExpand"
|
||||
@load="onLoad"
|
||||
:loadData="loadData"
|
||||
:expandedKeys="expandedKeys"
|
||||
:checkedKeys="checkedKeys"
|
||||
:loadedKeys="loadedKeys"
|
||||
:selectedKeys.sync="selectedKeys">
|
||||
|
||||
<template slot="title" slot-scope="{dataRef}">
|
||||
<span v-if="searchValue && dataRef[replaceFields.title].indexOf(searchValue) > -1">
|
||||
<span style="color: #f50">{{ dataRef[replaceFields.title] }}</span>
|
||||
</span>
|
||||
<span v-else>{{ dataRef[replaceFields.title] }}</span>
|
||||
</template>
|
||||
</a-tree>
|
||||
</a-spin>
|
||||
</div>
|
||||
|
||||
<p class="modal-content-title">{{ $t('treeSelection.selectedData') }}</p>
|
||||
<a-spin :spinning="bottomLoading">
|
||||
<div v-if="dataSourceRight && dataSourceRight.length > 0" class="name-content">
|
||||
<div v-for="(item, index) in dataSourceRight" :key="item[replaceFields.key]" class="name-div">
|
||||
{{ item[replaceFields.title] }}
|
||||
<a-icon type="close" @click="handleDelete(item, index)" />
|
||||
</div>
|
||||
</div>
|
||||
<a-empty v-else />
|
||||
</a-spin>
|
||||
|
||||
<!--底部父子关联操作和确认取消按钮-->
|
||||
<template slot="footer" v-if="treeOpera && checkable">
|
||||
<div class="drawer-bootom-button">
|
||||
<a-dropdown style="float: left" :trigger="['click']" placement="topCenter">
|
||||
<a-menu slot="overlay">
|
||||
<a-menu-item key="1" @click="switchCheckStrictly(2)">{{ $t('parentChildConnection') }}</a-menu-item>
|
||||
<a-menu-item key="2" @click="switchCheckStrictly(1)">{{ $t('cancelConnection') }}</a-menu-item>
|
||||
</a-menu>
|
||||
<a-button>
|
||||
{{ treeOperationText }} <a-icon type="up" />
|
||||
</a-button>
|
||||
</a-dropdown>
|
||||
<!-- <a-button style="float: left" @click="switchCheckStrictly(parentChildRelate ? 1 : 2)">{{ treeOperationText }}</a-button>-->
|
||||
<a-button @click="handleCancel" type="primary" style="margin-right: 0.8rem">{{ $t('close') }}</a-button>
|
||||
<a-button @click="handleOk" type="primary" >{{ $t('confirm') }}</a-button>
|
||||
</div>
|
||||
</template>
|
||||
</j-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction } from '../../api/manage'
|
||||
|
||||
export default {
|
||||
name: 'TreeDataSelectModal',
|
||||
props: {
|
||||
value: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: ''
|
||||
},
|
||||
checkable: { // 是否多选
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
},
|
||||
// 是否校验必选
|
||||
checkRequired: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
},
|
||||
// 获取数据的接口
|
||||
optionsHref: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: ''
|
||||
},
|
||||
// 标签库的限制,只能选第三级
|
||||
isTagLibraryRestriction: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
},
|
||||
dictId: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: ''
|
||||
},
|
||||
treeOpera: { // 是否可以切换父子关联
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: true
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
treeScreenClass () {
|
||||
return {
|
||||
'my-dept-select-tree': true,
|
||||
fullscreen: this.fullscreen
|
||||
}
|
||||
},
|
||||
treeOperationText () {
|
||||
return this.parentChildRelate ? this.$t('parentChildConnection') : this.$t('cancelConnection')
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
// 是否只能选第三级
|
||||
isTagLibraryRestriction (val) {
|
||||
if (val) {
|
||||
this.setOnlySelectThreeLevel(this.treeData)
|
||||
}
|
||||
},
|
||||
value (val) {
|
||||
if (val) {
|
||||
this.checkedKeys = val.split(',')
|
||||
}
|
||||
},
|
||||
optionsHref: {
|
||||
immediate: true,
|
||||
handler (val) {
|
||||
console.log('-------------optionsHref', val)
|
||||
if (val === '/laws/standard/partName/queryFirstList') {
|
||||
// 是涉及系统/部件
|
||||
this.replaceFields = { children: 'childPartNameList', title: 'name', key: 'code' }
|
||||
this.lazyLoadHref = '/laws/standard/partName/getChild'
|
||||
this.searchFieldName = 'nodeName'
|
||||
this.lazyLoadPidFieldName = 'parentCode'
|
||||
} else { // 标签库
|
||||
this.replaceFields = { children: 'childrenList', title: 'itemText', key: 'itemValue' }
|
||||
this.lazyLoadHref = '/laws/dictTree/getChild'
|
||||
this.searchFieldName = 'nodeName'
|
||||
this.lazyLoadPidFieldName = 'dictItemId'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
created () {
|
||||
// if (this.treeOpera) {
|
||||
// this.switchCheckStrictly(1)
|
||||
// }
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
width: 800,
|
||||
visible: false,
|
||||
confirmLoading: false,
|
||||
topLoading: false,
|
||||
bottomLoading: false,
|
||||
parentChildRelate: true, // 父子节点是否关联
|
||||
autoExpandParent: false, // 是否自动展开父节点
|
||||
treeData: [],
|
||||
expandedKeys: [],
|
||||
checkedKeys: [],
|
||||
checkedRows: [],
|
||||
selectedKeys: [],
|
||||
loadedKeys: [],
|
||||
searchValue: '', // 查询框内容
|
||||
replaceFields: {},
|
||||
dataSourceRight: [],
|
||||
lazyLoadHref: '', // 懒加载接口
|
||||
searchFieldName: '', // 查询传的字段名
|
||||
lazyLoadPidFieldName: '' // 懒加载传父级的字段名
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
show () {
|
||||
this.visible = true
|
||||
this.treeData = []
|
||||
this.checkedRows = []
|
||||
this.checkedKeys = []
|
||||
this.loadedKeys = []
|
||||
this.selectedKeys = []
|
||||
this.dataSourceRight = []
|
||||
this.searchValue = ''
|
||||
this.getTreeData()
|
||||
if (this.value) {
|
||||
if (this.checkable) {
|
||||
this.checkedKeys = this.value.split(',')
|
||||
} else {
|
||||
this.selectedKeys = this.value.split(',')
|
||||
}
|
||||
// 初始化选中数据列表
|
||||
this.getSelectedList(this.value)
|
||||
}
|
||||
this.$forceUpdate()
|
||||
},
|
||||
onCheck (checkedKeys, info) {
|
||||
console.log('----------onCheck', checkedKeys)
|
||||
console.log('----------info.checked', info.checked)
|
||||
console.log('----------info.node', info.node.dataRef)
|
||||
if (this.checkable) {
|
||||
// 是多选
|
||||
if (this.parentChildRelate) {
|
||||
// 是父子关联
|
||||
if (info.checked) {
|
||||
// 是选中数据了
|
||||
let childrenList = []
|
||||
if (info.node.dataRef[this.replaceFields.children]) {
|
||||
// 有子节点获取子节点数据
|
||||
childrenList = info.node.dataRef[this.replaceFields.children].map(item => item[this.replaceFields.key])
|
||||
}
|
||||
this.checkedKeys = [...this.checkedKeys, ...checkedKeys.checked, ...childrenList]
|
||||
} else {
|
||||
// 是取消选中了,把当前和子节点都取消选中
|
||||
let currAndChildNode = []
|
||||
if (info.node.dataRef[this.replaceFields.children]) {
|
||||
// 有子节点获取子节点数据
|
||||
const childrenNode = info.node.dataRef[this.replaceFields.children].map(item => item[this.replaceFields.key])
|
||||
currAndChildNode = [...childrenNode, info.node.dataRef[this.replaceFields.key]]
|
||||
} else {
|
||||
currAndChildNode = [info.node.dataRef[this.replaceFields.key]]
|
||||
}
|
||||
this.checkedKeys = this.checkedKeys.filter(item => !currAndChildNode.includes(item))
|
||||
}
|
||||
// 处理下方显示已选数据
|
||||
if (info.checked) {
|
||||
console.log('------------增加了数据')
|
||||
// 说明是增加了数据,把点击的数据和子数据追加进去
|
||||
for (const key of checkedKeys.checked) {
|
||||
// 当前选中没在选中列表中的加进去
|
||||
if (!this.dataSourceRight.find(item => item[this.replaceFields.key] === key)) {
|
||||
// 右侧不存在,追加到右侧表格
|
||||
this.dataSourceRight.push(info.node.dataRef)
|
||||
}
|
||||
}
|
||||
if (info.node.dataRef[this.replaceFields.children]) {
|
||||
// 有子集追加
|
||||
for (const keyItem of info.node.dataRef[this.replaceFields.children]) {
|
||||
// 当前选中的子集没在列表中的加进去
|
||||
if (!this.dataSourceRight.find(item => item[this.replaceFields.key] === keyItem[this.replaceFields.key])) {
|
||||
// 右侧不存在,追加到右侧表格
|
||||
this.dataSourceRight.push(keyItem)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('----------删除了数据')
|
||||
// 说明是删除了数据
|
||||
if (this.checkedKeys && this.checkedKeys.length > 0) {
|
||||
// 还有选中数据,从dataSourceRight里面找到点击的数据和他的子数据清空
|
||||
for (let i = 0; i < this.dataSourceRight.length; i++) {
|
||||
if (!this.checkedKeys.find(item => item === this.dataSourceRight[i][this.replaceFields.key])) {
|
||||
// 表格选中中没有找到这一条数据,说明已经被删了
|
||||
this.dataSourceRight.splice(i, 1)
|
||||
i--
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// 已经没有选中数据了,直接清空展示数据
|
||||
this.dataSourceRight = []
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// 不是父子关联
|
||||
console.log('-----------checkedKeys', this.checkedKeys, checkedKeys)
|
||||
if (info.checked) {
|
||||
// 是选中数据了
|
||||
this.checkedKeys = [...this.checkedKeys, ...checkedKeys.checked]
|
||||
} else {
|
||||
// 是取消选中了
|
||||
this.checkedKeys = this.checkedKeys.filter(item => item !== info.node.dataRef[this.replaceFields.key])
|
||||
}
|
||||
// 处理下方显示已选数据
|
||||
if (info.checked) {
|
||||
console.log('------------不父子关联增加了数据')
|
||||
// 说明是增加了数据,把点击的数据追加进去
|
||||
for (const key of checkedKeys.checked) {
|
||||
// 当前选中没在选中列表中的加进去
|
||||
if (!this.dataSourceRight.find(item => item[this.replaceFields.key] === key)) {
|
||||
// 右侧不存在,追加到右侧表格
|
||||
this.dataSourceRight.push(info.node.dataRef)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('----------不父子关联删除了数据')
|
||||
// 说明是删除了数据
|
||||
if (this.checkedKeys && this.checkedKeys.length > 0) {
|
||||
// 还有选中数据,从dataSourceRight里面找到点击的数据和他的子数据清空
|
||||
for (let i = 0; i < this.dataSourceRight.length; i++) {
|
||||
if (!this.checkedKeys.find(item => item === this.dataSourceRight[i][this.replaceFields.key])) {
|
||||
// 表格选中中没有找到这一条数据,说明已经被删了
|
||||
this.dataSourceRight.splice(i, 1)
|
||||
i--
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// 已经没有选中数据了,直接清空展示数据
|
||||
this.dataSourceRight = []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
onSelect (selectedKeys, info) {
|
||||
// 取消关联的情况下才走onSelect的逻辑
|
||||
if (!this.parentChildRelate) {
|
||||
if (selectedKeys && selectedKeys.length > 0) {
|
||||
// 说明是选中了数据
|
||||
this.selectedKeys = [...selectedKeys]
|
||||
this.dataSourceRight = [info.node.dataRef]
|
||||
} else {
|
||||
// 没有数据,直接清空
|
||||
this.selectedKeys = []
|
||||
this.dataSourceRight = []
|
||||
}
|
||||
}
|
||||
},
|
||||
onLoad (loadedKeys) {
|
||||
this.loadedKeys = loadedKeys
|
||||
},
|
||||
onExpand (expandedKeys) {
|
||||
console.log('========expandedKeys', expandedKeys)
|
||||
this.expandedKeys = expandedKeys
|
||||
},
|
||||
// 异步加载
|
||||
async loadData (node) {
|
||||
console.log('-------------loadData', node)
|
||||
if (node.dataRef.children) {
|
||||
return
|
||||
}
|
||||
this.topLoading = true
|
||||
const params = {}
|
||||
if (this.optionsHref !== '/laws/standard/partName/queryFirstList') {
|
||||
// 不是涉及系统部件
|
||||
params.dictId = this.dictId
|
||||
}
|
||||
// 查询条件的名称
|
||||
if (this.searchValue) {
|
||||
params[this.searchFieldName] = this.searchValue
|
||||
}
|
||||
// 父节点id
|
||||
if (this.optionsHref === '/laws/standard/partName/queryFirstList') {
|
||||
// 是涉及系统部件
|
||||
params[this.lazyLoadPidFieldName] = node.dataRef.code
|
||||
} else {
|
||||
params[this.lazyLoadPidFieldName] = node.dataRef.id
|
||||
}
|
||||
await getAction(this.lazyLoadHref, params).then(res => {
|
||||
if (res.success) {
|
||||
node.dataRef[this.replaceFields.children] = res.result.record || res.result
|
||||
}
|
||||
}).finally(() => {
|
||||
this.topLoading = false
|
||||
})
|
||||
},
|
||||
handleCancel () {
|
||||
this.visible = false
|
||||
},
|
||||
close () {
|
||||
this.visible = false
|
||||
this.checkedKeys = []
|
||||
this.expandedKeys = []
|
||||
this.loadedKeys = []
|
||||
this.dataSourceRight = []
|
||||
this.treeData = []
|
||||
this.searchValue = ''
|
||||
},
|
||||
onSearch (value) {
|
||||
this.searchValue = value
|
||||
// this.autoExpandParent = true
|
||||
this.getTreeData()
|
||||
this.expandedKeys = []
|
||||
this.loadedKeys = []
|
||||
this.$forceUpdate()
|
||||
},
|
||||
// 设置树只能选第三级
|
||||
setOnlySelectThreeLevel (treeData) {
|
||||
for (const item of treeData) {
|
||||
item.disabled = item.level + '' !== '3'
|
||||
item.disableCheckbox = item.level + '' !== '3'
|
||||
if (item.childPartNameList && item.childPartNameList.length > 0) {
|
||||
this.setOnlySelectThreeLevel(item.childPartNameList)
|
||||
}
|
||||
}
|
||||
},
|
||||
// 切换父子关联
|
||||
switchCheckStrictly (v) {
|
||||
if (v === 1) {
|
||||
// 取消父子关联
|
||||
this.parentChildRelate = false
|
||||
} else if (v === 2) {
|
||||
// 增加父子关联
|
||||
this.parentChildRelate = true
|
||||
}
|
||||
},
|
||||
getTreeData () {
|
||||
this.topLoading = true
|
||||
const params = {}
|
||||
if (this.optionsHref !== '/laws/standard/partName/queryFirstList') {
|
||||
// 不是涉及系统部件
|
||||
params.dictId = this.dictId
|
||||
}
|
||||
// 查询条件的名称
|
||||
if (this.searchValue) {
|
||||
params[this.searchFieldName] = this.searchValue
|
||||
}
|
||||
getAction(this.optionsHref, params).then(res => {
|
||||
if (res.success) {
|
||||
this.treeData = res.result.records || res.result
|
||||
}
|
||||
}).finally(() => {
|
||||
this.topLoading = false
|
||||
})
|
||||
},
|
||||
// 已选数据列表的删除
|
||||
handleDelete (record, index) {
|
||||
this.dataSourceRight.splice(index, 1)
|
||||
if (this.checkable) {
|
||||
// 多选从checkedKeys里面筛选出去
|
||||
this.checkedKeys = this.checkedKeys.filter(item => item !== record[this.replaceFields.key])
|
||||
} else {
|
||||
// 单选从selectedKeys里面筛选出去
|
||||
this.selectedKeys = this.selectedKeys.filter(item => item !== record[this.replaceFields.key])
|
||||
}
|
||||
},
|
||||
handleOk () {
|
||||
if (this.checkRequired && (!this.checkedKeys || this.checkedKeys.length === 0)) {
|
||||
this.$message.warning(this.$t('selectLeastOne'))
|
||||
return
|
||||
}
|
||||
this.$emit('nameChange', this.dataSourceRight.map(item => item[this.replaceFields.title]).join(','))
|
||||
this.$emit('change', this.dataSourceRight.map(item => item[this.replaceFields.key]).join(','))
|
||||
this.$emit('listChange', this.dataSourceRight)
|
||||
this.close()
|
||||
},
|
||||
getSelectedList (codes) {
|
||||
this.bottomLoading = true
|
||||
const params = {
|
||||
selectNodeCodes: codes,
|
||||
dictId: this.dictId
|
||||
}
|
||||
let url
|
||||
// 涉及系统/部件
|
||||
if (this.optionsHref === '/laws/standard/partName/queryFirstList') {
|
||||
url = '/laws/standard/partName/echo'
|
||||
} else { // 标签库
|
||||
url = '/laws/dictTree/echo'
|
||||
}
|
||||
if (!url) {
|
||||
return
|
||||
}
|
||||
postAction(url, params).then(res => {
|
||||
if (res.success) {
|
||||
this.dataSourceRight = JSON.parse(JSON.stringify(res.result))
|
||||
}
|
||||
}).finally(() => {
|
||||
this.bottomLoading = false
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
/deep/ .ant-modal-content {
|
||||
padding-bottom: 18px;
|
||||
}
|
||||
.my-dept-select-tree{
|
||||
height:350px;
|
||||
|
||||
&.fullscreen{
|
||||
height: calc(100vh - 250px);
|
||||
}
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
.modal-content-title {
|
||||
color: #1D2129;
|
||||
font-weight: 500;
|
||||
margin-right: 12px;
|
||||
margin-bottom: 0;
|
||||
margin-top: 16px;
|
||||
}
|
||||
|
||||
.drawer-bootom-button {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
border-top: 1px solid #e8e8e8;
|
||||
padding: 10px 16px;
|
||||
text-align: right;
|
||||
left: 0;
|
||||
background: #fff;
|
||||
border-radius: 0 0 2px 2px;
|
||||
}
|
||||
|
||||
.name-content {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
max-height: 200px;
|
||||
overflow-y: auto;
|
||||
.name-div {
|
||||
width: auto;
|
||||
padding: 5px 16px;
|
||||
margin-right: 12px;
|
||||
margin-top: 8px;
|
||||
background: rgba(0, 100, 250, 0.08);
|
||||
border-radius: 4px 4px 4px 4px;
|
||||
opacity: 1;
|
||||
color: @primary-color;
|
||||
white-space: nowrap;
|
||||
/deep/ .anticon {
|
||||
margin-left: 4px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,145 @@
|
||||
<template>
|
||||
<div class="components-input-demo-presuffix">
|
||||
<div class="user-organ-wrap">
|
||||
<a-input class="user-input" @click="openModal" :placeholder="placeholder" v-model="nameStr" :title="nameStr" readOnly>
|
||||
<a-icon v-if="nameStr" slot="suffix" type="close-circle" @click="handleEmpty" title="清空"/>
|
||||
</a-input>
|
||||
<a-button type="primary" class="button-box" @click="openModal" :disabled="disabled" v-if="showBtn && !disabled">
|
||||
{{ $t('select') }}
|
||||
</a-button>
|
||||
</div>
|
||||
|
||||
<tree-data-select-modal
|
||||
ref="selectModal"
|
||||
:checkable="checkable"
|
||||
:value="value"
|
||||
:dict-id="dictId"
|
||||
v-bind="$attrs"
|
||||
:options-href="optionsHref"
|
||||
@change="handleChange"
|
||||
@nameChange="nameChange"
|
||||
@listChange="listChange"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import TreeDataSelectModal from './TreeDataSelectModal'
|
||||
|
||||
export default {
|
||||
name: 'TreeDataSelection',
|
||||
components: { TreeDataSelectModal },
|
||||
props: {
|
||||
checkable: { // 是否多选
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: true
|
||||
},
|
||||
value: {
|
||||
type: String,
|
||||
required: false
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
},
|
||||
// 获取数据的接口
|
||||
optionsHref: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: ''
|
||||
},
|
||||
// 名称字符串
|
||||
nameStr: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: ''
|
||||
},
|
||||
fieldName: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: ''
|
||||
},
|
||||
dictId: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: ''
|
||||
},
|
||||
showBtn: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: true
|
||||
},
|
||||
placeholder: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
nameStr: {
|
||||
immediate: true,
|
||||
handler (val) {
|
||||
console.log('----------nameStr', val)
|
||||
}
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
visible: false,
|
||||
confirmLoading: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
openModal () {
|
||||
this.$refs.selectModal.show()
|
||||
},
|
||||
handleChange (value) {
|
||||
this.$emit('change', value, this.fieldName)
|
||||
},
|
||||
nameChange (value) {
|
||||
this.$emit('nameChange', value, this.fieldName)
|
||||
},
|
||||
listChange (value) {
|
||||
this.$emit('listChange', value, this.fieldName)
|
||||
},
|
||||
handleEmpty () {
|
||||
if (this.disabled) {
|
||||
return
|
||||
}
|
||||
this.handleChange('')
|
||||
this.nameChange('')
|
||||
this.listChange([])
|
||||
}
|
||||
},
|
||||
model: {
|
||||
prop: 'value',
|
||||
event: 'change'
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.user-organ-wrap {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
//height: 39.98px;
|
||||
|
||||
.user-input {
|
||||
resize: none;
|
||||
width: calc(100% - 70px);
|
||||
}
|
||||
|
||||
// 因为需要加title,所以不能把鼠标事件去掉
|
||||
/deep/ .ant-input-disabled {
|
||||
background: #fff;
|
||||
color: rgba(0, 0, 0, 0.65);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.button-box {
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -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;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -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'))
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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 标签管理要改了,这里也要同步一下
|
||||
|
||||
+11
-1
@@ -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()
|
||||
}
|
||||
|
||||
@@ -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!')
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
+14
-2
@@ -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) {
|
||||
// 研发大前台单点登录
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -3,26 +3,16 @@
|
||||
<!-- <first-stage-card></first-stage-card>-->
|
||||
<!-- </div>-->
|
||||
<div class="all-wrapper">
|
||||
<a-row :gutter="20">
|
||||
<a-col :span="24" class="mb-20">
|
||||
<!-- 检索 -->
|
||||
<retrieval-card></retrieval-card>
|
||||
</a-col>
|
||||
<a-col :span="24" class="mb-20">
|
||||
<!-- 快捷入口 -->
|
||||
<quick-enter-card></quick-enter-card>
|
||||
</a-col>
|
||||
<a-col :span="10" class="mb-20">
|
||||
<!-- 待办任务 -->
|
||||
<to-do-task-card class="mb-20"></to-do-task-card>
|
||||
<!-- 友情链接 -->
|
||||
<friend-link-card></friend-link-card>
|
||||
</a-col>
|
||||
<a-col :span="14" class="mb-20">
|
||||
<!-- 预警 -->
|
||||
<search-and-warning-card></search-and-warning-card>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<!-- 检索 -->
|
||||
<retrieval-card class="home-search"></retrieval-card>
|
||||
<!-- 快捷入口 -->
|
||||
<quick-enter-card class="home-quick-entrance"></quick-enter-card>
|
||||
<!-- 待办任务 -->
|
||||
<to-do-task-card class="home-todo"></to-do-task-card>
|
||||
<!-- 友情链接 -->
|
||||
<friend-link-card class="home-link"></friend-link-card>
|
||||
<!-- 列表 -->
|
||||
<search-and-warning-card class="home-table"></search-and-warning-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<a-card :bordered="false">
|
||||
<div class="friend-link-wrapper">
|
||||
<a-spin :spinning="loading">
|
||||
<div class="top-wrapper">
|
||||
<span class="left-p"><i class="iconfont icon-link left-icon"></i>{{$t('dashboard.friendLink.friendLink')}}</span>
|
||||
@@ -7,15 +7,15 @@
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="content-div" v-for="item in dataSource" :key="item.id" @click="clickLink(item)">
|
||||
<img class="icon-img" :src="getImg(item.logoUrl)" :alt="item.name">
|
||||
<a-tooltip placement="top">
|
||||
<img class="icon-img" :src="getImg(item.logoUrl)" :alt="item.name">
|
||||
<template slot="title">{{ item.name }}</template>
|
||||
<p>{{ item.name }}</p>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</a-spin>
|
||||
</a-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@@ -69,13 +69,19 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
|
||||
.friend-link-wrapper {
|
||||
padding: 24px;
|
||||
background-color: white;
|
||||
}
|
||||
@itemSize: 64px;
|
||||
.content-wrapper {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(6, 1fr);
|
||||
// 总宽度 - 子内容的宽度 = 剩余宽度 / 5 = 就是每个的右间距,最后一个元素不需要右间距
|
||||
grid-gap: calc((100% - (6 * @itemSize)) / 5);
|
||||
margin-top: 12px;
|
||||
}
|
||||
.content-div {
|
||||
.content-div > span {
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
display: flex;
|
||||
@@ -86,12 +92,12 @@ export default {
|
||||
|
||||
.icon-img {
|
||||
border-radius: 8px;
|
||||
width: 64px;
|
||||
height: 64px;
|
||||
width: @itemSize;
|
||||
height: @itemSize;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
p {
|
||||
width: 64px;
|
||||
width: @itemSize;
|
||||
height: 28px;
|
||||
line-height: 28px;
|
||||
margin: 0;
|
||||
@@ -102,4 +108,22 @@ export default {
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
|
||||
// 1366屏幕
|
||||
@media screen and (max-width: 1366px) {
|
||||
@itemSize: 52px;
|
||||
.content-wrapper {
|
||||
grid-gap: calc((100% - (6 * @itemSize)) / 5);
|
||||
}
|
||||
|
||||
.content-div > span {
|
||||
.icon-img {
|
||||
width: @itemSize;
|
||||
height: @itemSize;
|
||||
}
|
||||
p {
|
||||
width: @itemSize;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<a-card :bordered="false">
|
||||
<div class="quick-enter-wrapper">
|
||||
<a-spin :spinning="loading">
|
||||
<div class="top-wrapper">
|
||||
<p class="left-p"><i class="iconfont icon-rukou left-icon"></i>{{ this.$t('dashboard.quickEnter.quickEnter') }}</p>
|
||||
@@ -24,7 +24,7 @@
|
||||
</a-spin>
|
||||
<!-- 菜单管理 -->
|
||||
<menu-manage-modal ref="menuManageModal" @ok="loadData"/>
|
||||
</a-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@@ -89,14 +89,22 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.quick-enter-wrapper {
|
||||
background-color: white;
|
||||
padding: 24px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.content-wrapper {
|
||||
overflow: auto;
|
||||
@itemGap: 20px;
|
||||
display: grid;
|
||||
margin-top: 12px;
|
||||
grid-template-columns: repeat(auto-fill, calc(100% / 14));
|
||||
grid-template-columns: repeat(14, minmax(72px, 1fr));
|
||||
// 总宽度 - 子内容的宽度 = 剩余宽度 / 5 = 就是每个的右间距,最后一个元素不需要右间距
|
||||
grid-column-gap: calc((100% - (14 * 72px)) / 13);
|
||||
|
||||
& > .content-div > span,
|
||||
& > .plus-div > span {
|
||||
padding: 9px 16px 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
<template>
|
||||
<!-- 搜索区域 -->
|
||||
<div class="search-wrapper">
|
||||
<a-select class="resource-type-select" v-model="resourceType">
|
||||
<a-select class="resource-type-select" v-model="resourceType" size="large">
|
||||
<a-select-option value="all">{{ $t('dashboard.generalSearch.all')}}</a-select-option>
|
||||
<a-select-option v-for="item in resourceTypeOptions" :key="item.value" :value="item.value" :title="item.title">
|
||||
{{ item.title }}
|
||||
<a-select-option v-for="item in resourceTypeOptions" :key="item.value" :value="item.value" :title="isChinese() ? item.title : item.enText">
|
||||
{{ isChinese() ? item.title : item.enText }}
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
<a-input class="search-input" v-model="searchValue" :placeholder="$t('pleaseEnter')" @pressEnter="searchInputEnter">
|
||||
<a-input class="search-input" size="large" v-model="searchValue" :placeholder="$t('pleaseEnter')" @pressEnter="searchInputEnter">
|
||||
<a-icon slot="prefix" type="search" style="color: #0064FA;" />
|
||||
</a-input>
|
||||
<div class="btn-box">
|
||||
<a-button type="primary" icon="search" @click="toSearchWindow('title')">{{ $t('dashboard.retrieval.titleSearch') }}</a-button>
|
||||
<a-button type="primary" icon="search" @click="toSearchWindow('fullText')">{{ $t('dashboard.retrieval.fullSearch') }}</a-button>
|
||||
<a-button type="primary" class="btn-ghost" ghost @click="toAdvancedSearch"><img :src="require('@/assets/image/icon/super-search.png')" alt='' class="btn-icon">{{ $t('dashboard.retrieval.advancedSearch') }}</a-button>
|
||||
<a-button type="primary" size="large" icon="search" @click="toSearchWindow('title')">{{ $t('dashboard.retrieval.titleSearch') }}</a-button>
|
||||
<a-button type="primary" size="large" icon="search" @click="toSearchWindow('fullText')">{{ $t('dashboard.retrieval.fullSearch') }}</a-button>
|
||||
<a-button type="primary" size="large" class="btn-ghost" ghost @click="toAdvancedSearch"><img :src="require('@/assets/image/icon/super-search.png')" alt='' class="btn-icon">{{ $t('dashboard.retrieval.advancedSearch') }}</a-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -80,21 +80,21 @@ export default {
|
||||
<style lang="less" scoped>
|
||||
@height: 56px;
|
||||
.search-wrapper {
|
||||
width: 80%;
|
||||
margin: 0 auto;
|
||||
width: 80%;
|
||||
display: grid;
|
||||
grid-template-columns: 102px 1fr auto;
|
||||
grid-template-columns: 120px 1fr auto;
|
||||
grid-gap: 10px;
|
||||
|
||||
& > .resource-type-select {
|
||||
flex: 0 0 102px;
|
||||
height: 100%;
|
||||
color: @primary-color;
|
||||
|
||||
/deep/.ant-select-arrow svg {
|
||||
fill: @primary-color;
|
||||
}
|
||||
/deep/.ant-select-selection--single {
|
||||
height: @height;
|
||||
height: 100%;
|
||||
border-color: @primary-color;
|
||||
}
|
||||
/deep/.ant-select-arrow {
|
||||
@@ -108,7 +108,8 @@ export default {
|
||||
}
|
||||
|
||||
& > .search-input {
|
||||
flex: auto;
|
||||
height: 100%;
|
||||
font-size: 16px;
|
||||
//margin-left: 10px;
|
||||
/deep/.ant-input-prefix {
|
||||
left: 24px;
|
||||
@@ -116,14 +117,14 @@ export default {
|
||||
|
||||
/deep/.ant-input {
|
||||
padding-left: 40px;
|
||||
height: @height;
|
||||
height: 100%;
|
||||
border-color: @primary-color;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-box .ant-btn {
|
||||
flex: 138px;
|
||||
height: @height;
|
||||
min-width: 138px;
|
||||
height: 100%;
|
||||
|
||||
&:not(:first-child) {
|
||||
margin-left: 10px;
|
||||
@@ -133,10 +134,6 @@ export default {
|
||||
|
||||
.btn-icon {
|
||||
margin-right: 8px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1366px) {
|
||||
@height: 42px;
|
||||
vertical-align: sub;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -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">
|
||||
<template slot="text" slot-scope="text">
|
||||
@@ -32,6 +33,14 @@
|
||||
<div v-else class="table-text">{{ global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
<!-- 标准状态 -->
|
||||
<template v-slot:standardState="text, record">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
|
||||
<div v-if="text" class="status-style" :style="getStandardStateStyle(record)">{{ text }}</div>
|
||||
<div v-else class="table-text">{{ global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
<!-- 企标号、企标名称 -->
|
||||
<template v-slot:enStandard="text, record">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
@@ -61,7 +70,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { StandardSource } from '@/enums/commonEnums'
|
||||
import { EnterpriseStandardStatus, StandardSource, StandardStatus } from '@/enums/commonEnums'
|
||||
import { getMarketRegulationsList } from '../../../api/api'
|
||||
import {
|
||||
getHomeNewStandard,
|
||||
@@ -210,7 +219,7 @@ export default {
|
||||
align: 'left',
|
||||
dataIndex: 'standardState_dictText',
|
||||
width: 100,
|
||||
scopedSlots: { customRender: 'text' },
|
||||
scopedSlots: { customRender: 'standardState' },
|
||||
show: () => {
|
||||
return [
|
||||
this.tabList[0].key,
|
||||
@@ -222,7 +231,7 @@ export default {
|
||||
{ // 代替标准编号
|
||||
title: this.$t('dashboard.tableList.substituteStandardNumber'),
|
||||
align: 'left',
|
||||
dataIndex: 'substituteStandardNumber',
|
||||
dataIndex: 'replacedByStandardNumber',
|
||||
width: 100,
|
||||
scopedSlots: { customRender: 'text' },
|
||||
show: () => {
|
||||
@@ -308,6 +317,11 @@ export default {
|
||||
showSizeChanger: true,
|
||||
total: 0
|
||||
},
|
||||
components: {
|
||||
header: {
|
||||
cell: this.initHeader(this.columns)
|
||||
}
|
||||
},
|
||||
url: {
|
||||
list: '/laws/localTool/standardEarlyWarning/newModelImplementation'
|
||||
}
|
||||
@@ -319,6 +333,71 @@ export default {
|
||||
// this.loadData(1)
|
||||
},
|
||||
methods: {
|
||||
// 自定义渲染表头(表头换行影响高度)
|
||||
initHeader () {
|
||||
return (h, props, children, abc) => {
|
||||
// 获取列的key值和特性
|
||||
const { key, ...restProps } = props
|
||||
const col = this.columns.find(col => col.dataIndex === key)
|
||||
if (col) {
|
||||
return (
|
||||
<th {...restProps}>
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{col.title}</template>
|
||||
<div class="table-text">{col.title}</div>
|
||||
</a-tooltip>
|
||||
</th>
|
||||
)
|
||||
}
|
||||
return (
|
||||
<th {...restProps}>{children}</th>
|
||||
)
|
||||
}
|
||||
},
|
||||
// 获取标准状态
|
||||
getStandardStateStyle (row) {
|
||||
let color = ''
|
||||
switch (row.standardState + '') {
|
||||
// 草案
|
||||
case StandardStatus.DRAFT.value:
|
||||
color = '243, 129, 65'
|
||||
break
|
||||
// 征求意见
|
||||
case StandardStatus.SEEK_FOR_OPTIONS.value:
|
||||
color = '129, 206, 94'
|
||||
break
|
||||
// 审查
|
||||
case StandardStatus.EXAMINE.value:
|
||||
color = '255, 98, 98'
|
||||
break
|
||||
// 报批
|
||||
case StandardStatus.APPROVAL.value:
|
||||
color = '48, 175, 255'
|
||||
break
|
||||
// 发布
|
||||
case StandardStatus.RELEASE.value:
|
||||
color = '6, 176, 140'
|
||||
break
|
||||
// 现行有效(外部标准\企标)
|
||||
case StandardStatus.CURRENTLY_EFFECTIVE.value:
|
||||
case EnterpriseStandardStatus.CURRENTLY_EFFECTIVE.value:
|
||||
color = '137, 138, 233'
|
||||
break
|
||||
// 废止(外部标准\企标)
|
||||
case StandardStatus.ABOLISH.value:
|
||||
case EnterpriseStandardStatus.ABOLISH.value:
|
||||
color = '156, 177, 208'
|
||||
break
|
||||
}
|
||||
if (color) {
|
||||
return {
|
||||
backgroundColor: `rgba(${color}, 0.1)`,
|
||||
border: `1px solid rgba(${color}, 0.5)`,
|
||||
color: `rgba(${color}, 1)`
|
||||
}
|
||||
}
|
||||
return {}
|
||||
},
|
||||
/**
|
||||
* 查看标准分解单
|
||||
*/
|
||||
@@ -361,7 +440,7 @@ export default {
|
||||
this.dataSource = []
|
||||
this.warningTab = value
|
||||
this.showColumns = this.columns.filter(col => col.show ? col.show() : true).map(item => {
|
||||
return Object.assign({}, item, { show: undefined })
|
||||
return Object.assign({}, item, { show: undefined, ellipsis: true })
|
||||
})
|
||||
this.loadData(1)
|
||||
},
|
||||
@@ -471,7 +550,7 @@ export default {
|
||||
<style scoped lang="less">
|
||||
// 预警容器
|
||||
.warning-wrapper {
|
||||
height: calc(100vh - 406px);
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
// tab样式
|
||||
@@ -479,6 +558,7 @@ export default {
|
||||
|
||||
/deep/.ant-tabs-bar {
|
||||
margin-bottom: 0;
|
||||
border: none;
|
||||
}
|
||||
|
||||
/deep/&.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab {
|
||||
@@ -513,6 +593,7 @@ export default {
|
||||
}
|
||||
// 表格样式
|
||||
.table-warpper {
|
||||
border-radius: 8px;
|
||||
// 内容高度 = 该部分整体高度 - tab高度
|
||||
height: calc(100% - 44px);
|
||||
background-color: #fff;
|
||||
@@ -524,6 +605,11 @@ export default {
|
||||
|
||||
/deep/ .ant-table-thead > tr > th {
|
||||
background-color: #fff;
|
||||
font-weight: 400;
|
||||
font-family: PingFang SC, PingFang SC, sans-serif;
|
||||
color: #666666;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
/deep/ .ant-table-row .ant-table-row-cell-break-word {
|
||||
@@ -539,7 +625,21 @@ export default {
|
||||
}
|
||||
@media screen and (max-width: 1366px) {
|
||||
.warning-wrapper {
|
||||
height: calc(100vh - 226px);
|
||||
/deep/ .ant-table-body {
|
||||
max-height: calc(100vh - 345px) !important;
|
||||
}
|
||||
//height: calc(110vh - 550px) !important;
|
||||
}
|
||||
}
|
||||
// 标准状态样式
|
||||
.status-style {
|
||||
border-radius: 14px;
|
||||
height: 28px;
|
||||
line-height: 28px;
|
||||
padding: 0 12px;
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<a-card :bordered="false" class="todo-card">
|
||||
<div class="todo-wrapper">
|
||||
<a-spin :spinning="loading">
|
||||
<div class="top-wrapper">
|
||||
<p class="left-p"><i class="iconfont icon-calendar left-icon"></i>{{ $t('dashboard.todoTask.todoTask') }}</p>
|
||||
@@ -18,7 +18,7 @@
|
||||
</div>
|
||||
<a-list :data-source="[]" v-else></a-list>
|
||||
</a-spin>
|
||||
</a-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@@ -98,8 +98,10 @@ export default {
|
||||
|
||||
<style lang="less" scoped>
|
||||
@size: 48px;
|
||||
.todo-card {
|
||||
height: calc(100vh - 611px);
|
||||
.todo-wrapper {
|
||||
padding: 24px;
|
||||
background-color: white;
|
||||
|
||||
/deep/ .ant-spin-container,
|
||||
/deep/ .ant-spin-nested-loading,
|
||||
/deep/ .ant-card-body {
|
||||
@@ -108,7 +110,7 @@ export default {
|
||||
}
|
||||
.content-wrapper {
|
||||
height: calc(100% - 30px - 12px);
|
||||
margin-top: 10px;
|
||||
margin-top: 12px;
|
||||
overflow-y: auto;
|
||||
|
||||
.content-item {
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<a-divider>{{ $t('dashboard.advancedSearch.retrieveCategories') }}</a-divider>
|
||||
<div class="filter-area-div" ref="filterArea">
|
||||
<a-row :gutter="24" class="filter-row">
|
||||
<a-col :md="2" class="label-col"><span class="search_label">{{ $t('dashboard.advancedSearch.searchType') }}</span></a-col>
|
||||
<a-col :md="2" class="label-col" :title="$t('dashboard.advancedSearch.searchType')"><span class="search_label">{{ $t('dashboard.advancedSearch.searchType') }}</span></a-col>
|
||||
<a-col :md="18" class="option-col">
|
||||
<div v-for="item in standardTypeOptions" :key="item.value" class="option-div" :class="currStandardType === item.value ? 'option-curr' : ''" @click="standardTypeChange(item.value)">
|
||||
{{ item.label }}
|
||||
@@ -31,6 +31,7 @@
|
||||
<a-form-item :label="item.dbFieldTxt" :labelCol="labelCol" :wrapperCol="wrapperCol" :colon="false">
|
||||
<template v-if="item.fieldShowType === FieldType.TREE.value">
|
||||
<a-tree-select
|
||||
:replaceFields="getReplaceFields(item.dbFieldName)"
|
||||
tree-node-filter-prop="title"
|
||||
v-model="queryParam[item.dbFieldName]"
|
||||
:maxTagCount="1"
|
||||
@@ -44,6 +45,7 @@
|
||||
<!-- 树形选择器(单选) -->
|
||||
<template v-if="item.fieldShowType === FieldType.TREE_SINGLE.value">
|
||||
<a-tree-select
|
||||
:replaceFields="getReplaceFields(item.dbFieldName)"
|
||||
tree-node-filter-prop="title"
|
||||
v-model="queryParam[item.dbFieldName]"
|
||||
:maxTagCount="1"
|
||||
@@ -60,14 +62,11 @@
|
||||
<a-input :placeholder="$t('pleaseEnter')+item.dbFieldTxt"
|
||||
v-model="queryParam[item.dbFieldName]"></a-input>
|
||||
</template>
|
||||
<!-- 日期区间 -->
|
||||
<!-- 日期区间(条款选择的日期只要单侧) -->
|
||||
<template v-else-if="[FieldType.DATE_SINGLE.value, FieldType.DATE_MORE.value].includes(item.fieldShowType)">
|
||||
<j-range-picker v-model="queryParam[item.dbFieldName]"
|
||||
<j-date-picker v-model="queryParam[item.dbFieldName]"
|
||||
format="YYYY-MM-DD" value-format="YYYY-MM-DD"
|
||||
@change="onChange(item.dbFieldName)"></j-range-picker>
|
||||
<!--<a-range-picker v-model="queryParam[item.dbFieldName]"-->
|
||||
<!-- format="YYYY-MM-DD" value-format="YYYY-MM-DD"-->
|
||||
<!-- @change="onChange(item.dbFieldName)"></a-range-picker>-->
|
||||
@change="onChange(item.dbFieldName)"></j-date-picker>
|
||||
</template>
|
||||
<!-- 字典单选框 -->
|
||||
<template v-else-if="item.fieldShowType === FieldType.OPTION_SINGLE.value">
|
||||
@@ -133,6 +132,7 @@
|
||||
:tree-data="optionsData[item.dbFieldName]"
|
||||
:replaceFields="{key: 'id', value: 'id', title: 'name', children: 'childPartNameList'}"
|
||||
tree-checkable
|
||||
tree-check-strictly
|
||||
show-search
|
||||
allowClear
|
||||
:filterTreeNode="filterTreeOption"
|
||||
@@ -244,14 +244,20 @@ import Vue from 'vue'
|
||||
import { ACCESS_TOKEN } from '../../../store/mutation-types'
|
||||
import { previewPdf } from '../../../utils/previewPdf'
|
||||
import { kkFilePreview } from '../../../utils/kkFilePreview'
|
||||
import JRangePicker from '@comp/JDatePicker'
|
||||
import JDatePicker from '@comp/JDatePicker'
|
||||
|
||||
export default {
|
||||
name: 'AdvancedSearch',
|
||||
components: { JRangePicker, JTable },
|
||||
components: { JDatePicker, JTable },
|
||||
data () {
|
||||
return {
|
||||
FieldType,
|
||||
// 需要英文状态下翻译下拉的字段
|
||||
dictTextFieldList: [
|
||||
'professional_field', // 全部-专业领域
|
||||
'applicable_market', // 适用市场
|
||||
'domain_area' // 条款-专业领域
|
||||
],
|
||||
loading: false,
|
||||
toggleSearchStatus: true, // 检索条件的展开和收起,false收缩状态
|
||||
currStandardType: '1', // 1外部 3企标 4条款 5全部
|
||||
@@ -385,13 +391,13 @@ export default {
|
||||
dataIndex: 'item_content',
|
||||
scopedSlots: { customRender: 'item_content' }
|
||||
},
|
||||
{ // 适用零部件
|
||||
title: this.$t('dashboard.advancedSearch.applicableComponents'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'applicable_components',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
// { // 适用零部件
|
||||
// title: this.$t('dashboard.advancedSearch.applicableComponents'),
|
||||
// align: 'center',
|
||||
// width: 180,
|
||||
// dataIndex: 'applicable_components',
|
||||
// scopedSlots: { customRender: 'text' }
|
||||
// },
|
||||
{ // 新生产车实施日期
|
||||
title: this.$t('dashboard.advancedSearch.newProduceVehiclesImplementationDate'),
|
||||
align: 'center',
|
||||
@@ -417,7 +423,7 @@ export default {
|
||||
title: this.$t('dashboard.advancedSearch.keywords'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'keywords',
|
||||
dataIndex: 'part_name_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 责任部门
|
||||
@@ -550,6 +556,18 @@ export default {
|
||||
this.queryParam.standard_state = this.defaultStandardStatus
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 处理英文下树结构下拉的字段替换
|
||||
* @param field - 字段名
|
||||
*/
|
||||
getReplaceFields (field) {
|
||||
const obj = {}
|
||||
// 数据字典或标签内容管理英文是enTitle
|
||||
if (this.dictTextFieldList.includes(field)) {
|
||||
obj.title = this.isChinese() ? 'title' : 'enTitle'
|
||||
}
|
||||
return obj
|
||||
},
|
||||
// 导出
|
||||
handleExportXls (fileName, fileSuffix = '.xls') {
|
||||
if (!fileName || typeof fileName !== 'string') {
|
||||
@@ -615,16 +633,17 @@ export default {
|
||||
path = '/enterpriseStandardLibrary/enterpriseStandardDetail'
|
||||
} else if (this.currStandardType === '5') {
|
||||
// 全部的话,就判断是企标还是外部
|
||||
if (record.resource_type === StandardSource.FOREIGN.value) {
|
||||
if (record.resource_type + '' === StandardSource.FOREIGN.value) {
|
||||
path = '/standardRegulationLibrary/foreignStandardDetailPage'
|
||||
} else if (record.resource_type === StandardSource.ENTERPRISE.value) {
|
||||
} else if (record.resource_type + '' === StandardSource.ENTERPRISE.value) {
|
||||
path = '/enterpriseStandardLibrary/enterpriseStandardDetail'
|
||||
}
|
||||
}
|
||||
this.$openPageNewSheet({
|
||||
path: path,
|
||||
query: {
|
||||
id: record.id
|
||||
id: record.id,
|
||||
standardNumber: record.standard_number
|
||||
}
|
||||
})
|
||||
},
|
||||
@@ -963,6 +982,9 @@ export default {
|
||||
.label-col {
|
||||
text-align: left;
|
||||
color: #86909c;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.option-col {
|
||||
width: calc(100% - 200px);
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
<div class="label-col"><span class="search_label">{{ selectOptions[value].label }}</span></div>
|
||||
<div class="option-col">
|
||||
<div v-for="item in selectOptions[value].options" :key="item.itemValue" class="option-div" :class="selectOptions[value].current === item.itemValue ? 'option-curr' : ''" @click="selectOptionsChange(value, item.itemValue)">
|
||||
<span>{{ item.itemText }}<span v-if="item.statisticsCount || item.statisticsCount === 0">(<span class="option-span-num">{{ item.statisticsCount }}</span>)</span></span>
|
||||
<span>{{ isChinese() ? item.itemText : item.itemTextEnglish }}<span v-if="item.statisticsCount || item.statisticsCount === 0">(<span class="option-span-num">{{ item.statisticsCount }}</span>)</span></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -330,7 +330,11 @@ export default {
|
||||
if (res.result[item]) {
|
||||
// 通过key获取对应label
|
||||
const label = this.getLabelByKey(item)
|
||||
res.result[item].unshift({ itemText: this.$t('dashboard.generalSearch.all'), itemValue: 'all' })
|
||||
res.result[item].unshift({
|
||||
itemText: this.$t('dashboard.generalSearch.all'),
|
||||
itemTextEnglish: this.$t('dashboard.generalSearch.all'),
|
||||
itemValue: 'all'
|
||||
})
|
||||
this.selectOptions[item] = {
|
||||
options: res.result[item],
|
||||
label: label,
|
||||
@@ -908,7 +912,7 @@ export default {
|
||||
line-height: 28px;
|
||||
margin-right: 20px;
|
||||
max-height: calc(100% - 340px);
|
||||
max-width: 50%;
|
||||
max-width: 30%;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
|
||||
@@ -136,7 +136,8 @@ export default {
|
||||
{
|
||||
title: this.$t('docTool.comparison.oldTextState'),
|
||||
width: 150,
|
||||
dataIndex: 'fileTypeLeft_dictText'
|
||||
dataIndex: 'fileTypeLeft_dictText',
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
// 新文档文本号
|
||||
{
|
||||
@@ -156,13 +157,15 @@ export default {
|
||||
{
|
||||
title: this.$t('docTool.comparison.newTextState'),
|
||||
width: 150,
|
||||
dataIndex: 'fileTypeRight_dictText'
|
||||
dataIndex: 'fileTypeRight_dictText',
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
// 发布情况
|
||||
{
|
||||
title: this.$t('docTool.comparison.releaseSituation'),
|
||||
width: 150,
|
||||
dataIndex: 'releaseState_dictText'
|
||||
dataIndex: 'releaseState_dictText',
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
// 创建人
|
||||
{
|
||||
@@ -256,6 +259,11 @@ export default {
|
||||
onOk: () => {
|
||||
const idList = []
|
||||
const selectionRows = JSON.parse(JSON.stringify(this.selectionRows))
|
||||
// 发布状态不能删除
|
||||
if (selectionRows.some(item => item.releaseState !== 'draft')) {
|
||||
this.$message.warning(this.$t('publishedAndCannotDeleted'))
|
||||
return
|
||||
}
|
||||
for (let i = 0; i < selectionRows.length; i++) {
|
||||
if (selectionRows[i].createBy === this.userInfo.username &&
|
||||
selectionRows[i].releaseState === 'draft') {
|
||||
|
||||
@@ -166,7 +166,7 @@ export default {
|
||||
queryParamLeft: {},
|
||||
ipaginationLeft: {
|
||||
current: 1,
|
||||
pageSize: 50,
|
||||
pageSize: 10,
|
||||
pageSizeOptions: ['10', '50', '100', '150', '200'],
|
||||
showTotal: (total, range) => {
|
||||
return range[0] + '-' + range[1] + ' ' + this.$t('total') + ' ' + total + ' ' + this.$t('strip')
|
||||
@@ -182,7 +182,7 @@ export default {
|
||||
queryParamRight: {},
|
||||
ipaginationRight: {
|
||||
current: 1,
|
||||
pageSize: 50,
|
||||
pageSize: 10,
|
||||
pageSizeOptions: ['10', '50', '100', '150', '200'],
|
||||
showTotal: (total, range) => {
|
||||
return range[0] + '-' + range[1] + ' ' + this.$t('total') + ' ' + total + ' ' + this.$t('strip')
|
||||
@@ -230,7 +230,8 @@ export default {
|
||||
title: this.$t('docTool.comparison.textStatus'),
|
||||
ellipsis: true,
|
||||
dataIndex: 'fileType_dictText',
|
||||
width: 100
|
||||
width: 100,
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{
|
||||
title: this.$t('fileName'),
|
||||
@@ -263,7 +264,8 @@ export default {
|
||||
title: this.$t('docTool.comparison.textStatus'),
|
||||
ellipsis: true,
|
||||
dataIndex: 'fileType_dictText',
|
||||
width: 100
|
||||
width: 100,
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{
|
||||
title: this.$t('fileName'),
|
||||
|
||||
@@ -96,7 +96,7 @@ import '../../../assets/less/common.less'
|
||||
import JTable from '../../../components/jero/JTable.vue'
|
||||
import SplitText from './modules/SplitText.vue'
|
||||
import { JeroListMixin } from '@/mixins/JeroListMixin'
|
||||
import { releaseSplitStandard, changePermission, withdraw } from '@api/documentToolApi'
|
||||
import { releaseSplitStandard, changePermission, withdraw, checkChangePermission } from '@api/documentToolApi'
|
||||
import ImportSplitResultModal from './modules/ImportSplitResultModal.vue'
|
||||
import UserSelectModal from '../../../components/selection/UserSelectModal.vue'
|
||||
import { SplitStatus, StandardSource } from '@/enums/commonEnums'
|
||||
@@ -183,7 +183,8 @@ export default {
|
||||
{
|
||||
dataIndex: 'fileType_dictText',
|
||||
title: this.$t('docTool.split.fileStatus'),
|
||||
width: 150
|
||||
width: 150,
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
// 文件名称
|
||||
{
|
||||
@@ -195,7 +196,8 @@ export default {
|
||||
{
|
||||
dataIndex: 'splitStatus_dictText',
|
||||
title: this.$t('docTool.split.splitState'),
|
||||
width: 150
|
||||
width: 150,
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
// 编辑人
|
||||
{
|
||||
@@ -292,6 +294,7 @@ export default {
|
||||
query: {
|
||||
infoId: record.id,
|
||||
infoNumber: record.serialNumber,
|
||||
standardClass: record.standardClass,
|
||||
createBy: record.createBy,
|
||||
standardName: record.title
|
||||
}
|
||||
@@ -327,7 +330,14 @@ export default {
|
||||
this.$message.warning(this.$t('selectAtLeastOne'))
|
||||
return
|
||||
}
|
||||
this.$refs.userSelectModal.open()
|
||||
// 校验是否有权限更改
|
||||
checkChangePermission({ ids: this.selectedRowKeys.join(',') }).then(res => {
|
||||
if (res.success) {
|
||||
this.$refs.userSelectModal.open()
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
continueChangePermission (id) {
|
||||
this.loading = true
|
||||
|
||||
@@ -48,19 +48,19 @@
|
||||
<i class="iconfont icon-shanchu_" />
|
||||
</a-button>
|
||||
<!--节点上移,是否可以上移在树形数据中应该有字段标识-->
|
||||
<a-button icon="up"
|
||||
v-if="record.pid"
|
||||
class="tree-operate-node-btn"
|
||||
@click.stop="orgMoveUp(record)"
|
||||
v-has="'split:sarFileSplitMenu:moveUp'">
|
||||
</a-button>
|
||||
<!--<a-button icon="up"-->
|
||||
<!-- v-if="record.pid"-->
|
||||
<!-- class="tree-operate-node-btn"-->
|
||||
<!-- @click.stop="orgMoveUp(record)"-->
|
||||
<!-- v-has="'split:sarFileSplitMenu:moveUp'">-->
|
||||
<!--</a-button>-->
|
||||
<!--节点下移,是否可以下移在树形数据中应该有字段标识-->
|
||||
<a-button icon="down"
|
||||
v-if="record.pid"
|
||||
class="tree-operate-node-btn"
|
||||
@click.stop="orgmoveDown(record)"
|
||||
v-has="'split:sarFileSplitMenu:moveDown'">
|
||||
</a-button>
|
||||
<!--<a-button icon="down"-->
|
||||
<!-- v-if="record.pid"-->
|
||||
<!-- class="tree-operate-node-btn"-->
|
||||
<!-- @click.stop="orgmoveDown(record)"-->
|
||||
<!-- v-has="'split:sarFileSplitMenu:moveDown'">-->
|
||||
<!--</a-button>-->
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -243,6 +243,8 @@ export default {
|
||||
mixins: [ConfigurableTableMixin],
|
||||
data () {
|
||||
return {
|
||||
// 导入的最大大小
|
||||
importMaxSize: 20,
|
||||
StandardSource,
|
||||
data: [],
|
||||
loading: false, // 提交的加载
|
||||
@@ -373,7 +375,8 @@ export default {
|
||||
this.menuId = this.selectedKeys[0]
|
||||
this.uploadData = {
|
||||
menuId: this.menuId,
|
||||
infoId: this.infoId
|
||||
infoId: this.infoId,
|
||||
standardClass: this.$route.query.standardClass
|
||||
}
|
||||
this.filters.info_id = this.infoId
|
||||
this.filters.menu_id = this.menuId
|
||||
|
||||
@@ -17,9 +17,12 @@
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('standardSelect.standardNumber')">
|
||||
<standard-selection :placeholder="$t('pleaseSelect') + $t('standardSelect.standardNumber')"
|
||||
type="radio"
|
||||
splitSearch
|
||||
disabledSourceSearch
|
||||
@nameChange="handleStandardNumberChange"
|
||||
@listChange="handleStandardListChange"
|
||||
:select-only="true"
|
||||
:can-selected-source="[StandardSource.FOREIGN.value, StandardSource.ENTERPRISE.value]"
|
||||
:can-selected-source="[StandardSource.FOREIGN.value]"
|
||||
class="readonly-input"
|
||||
v-decorator="['serialNumber', validatorRules.serialNumber]" />
|
||||
</a-form-item>
|
||||
@@ -111,6 +114,7 @@ export default {
|
||||
validateTrigger: 'change'
|
||||
}
|
||||
},
|
||||
standardInfo: {}, // 选择的标准
|
||||
downTemplateUrl: '/laws/DocumentTool/documentSplit/downloadImportTemplate' // 模板下载
|
||||
}
|
||||
},
|
||||
@@ -122,8 +126,10 @@ export default {
|
||||
this.form.validateFields(async (errors, values) => {
|
||||
if (!errors) {
|
||||
this.confirmLoading = true
|
||||
const formData = values
|
||||
const formData = Object.assign({}, values)
|
||||
const fileInfo = await getFileInfo({ id: formData.splitFileId })
|
||||
formData.standardId = this.standardInfo.id
|
||||
formData.standardClass = this.standardInfo.standardClass
|
||||
if (fileInfo.success) {
|
||||
formData.fileName = fileInfo.result.fileName
|
||||
}
|
||||
@@ -196,6 +202,9 @@ export default {
|
||||
handleStandardNumberChange (name) {
|
||||
this.form.setFieldsValue({ title: name })
|
||||
},
|
||||
handleStandardListChange (list) {
|
||||
this.standardInfo = list[0] || {}
|
||||
},
|
||||
// 下载导入模板
|
||||
downTemplate (fileName, fileSuffix = '.xls') {
|
||||
if (!fileName || typeof fileName !== 'string') {
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
<!-- 12, 树选择 -->
|
||||
<s-tree-select
|
||||
v-else-if="item.fieldShowType === FieldType.TREE.value"
|
||||
:replaceFields="getReplaceFields(item.dbFieldName)"
|
||||
v-model="formInline[item.dbFieldName]"
|
||||
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)"
|
||||
:tree-data="optionsData[item.dbFieldName]"
|
||||
@@ -145,24 +146,33 @@
|
||||
<!-- 15, 树选择(单选) -->
|
||||
<s-tree-select v-else-if="item.fieldShowType === FieldType.TREE_SINGLE.value"
|
||||
v-model="formInline[item.dbFieldName]"
|
||||
:replaceFields="getReplaceFields(item.dbFieldName)"
|
||||
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)"
|
||||
:tree-data="optionsData[item.dbFieldName]"
|
||||
:label-in-value="false"
|
||||
@change="updateDom"
|
||||
:placeholder="$t('pleaseSelect')+item.dbFieldTxt + getPlaceholderSuffix(item)" />
|
||||
<!--16、树形弹框选择-->
|
||||
<tree-selection v-else-if="item.fieldShowType === FieldType.TREE_MODAL_SELECT.value"
|
||||
:placeholder="$t('pleaseSelect')+item.dbFieldTxt + getPlaceholderSuffix(item)"
|
||||
v-model="formInline[item.dbFieldName]"
|
||||
:filedName="item.dbFieldName"
|
||||
type="checkbox"
|
||||
:options-href="item.fieldHref"
|
||||
:nameStr="formInline[item.dbFieldName + '_dictText']"
|
||||
:dict-id="item.dictId"
|
||||
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)"
|
||||
:children-column-name="getTreeSelectionChildrenColumnName(item)"
|
||||
:is-tag-library-restriction="item.dbFieldName === 'property_tag'"
|
||||
:search-field-name="item.dbFieldName === 'property_tag' ? 'firstNodeName' : null" />
|
||||
<!--<tree-selection v-else-if="item.fieldShowType === FieldType.TREE_MODAL_SELECT.value || item.fieldShowType === FieldType.TREE_MODAL_SELECT_SEARCH_DIFF.value"-->
|
||||
<!-- :placeholder="$t('pleaseSelect')+item.dbFieldTxt + getPlaceholderSuffix(item)"-->
|
||||
<!-- v-model="formInline[item.dbFieldName]"-->
|
||||
<!-- :filedName="item.dbFieldName"-->
|
||||
<!-- type="checkbox"-->
|
||||
<!-- :options-href="item.fieldHref"-->
|
||||
<!-- :nameStr="formInline[item.dbFieldName + '_dictText']"-->
|
||||
<!-- :dict-id="item.dictId"-->
|
||||
<!-- :disabled="disabled || disabledFieldList.includes(item.dbFieldName)"-->
|
||||
<!-- :children-column-name="getTreeSelectionChildrenColumnName(item)"-->
|
||||
<!-- :is-tag-library-restriction="item.dbFieldName === 'property_tag'"-->
|
||||
<!-- :search-field-name="item.dbFieldName === 'property_tag' ? 'firstNodeName' : null" />-->
|
||||
<tree-data-selection v-else-if="item.fieldShowType === FieldType.TREE_MODAL_SELECT.value || item.fieldShowType === FieldType.TREE_MODAL_SELECT_SEARCH_DIFF.value"
|
||||
:placeholder="$t('pleaseSelect')+item.dbFieldTxt"
|
||||
v-model="formInline[item.dbFieldName]"
|
||||
:fieldName="item.dbFieldName"
|
||||
:nameStr="formInline[item.dbFieldName + '_dictText']"
|
||||
@nameChange="treeDataSelectNameChange"
|
||||
:optionsHref="item.treeFirstHref"
|
||||
:dict-id="item.dictId"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</template>
|
||||
@@ -177,7 +187,7 @@
|
||||
<a-button type="primary" icon="plus" ghost @click="handleAddClauseContent(-1)">{{ $t('newlyAdded') }}</a-button>
|
||||
</div>
|
||||
<template v-if="contentList && contentList.length > 0">
|
||||
<div class="clause-item" v-for="(clause, index) in contentList" :key="index + 'clause'">
|
||||
<div class="clause-item" v-for="(clause, index) in contentList" :key="clause.uuid || (index + 'clause')">
|
||||
<div class="clause-item-operate">
|
||||
<a-button @click="handleAddClauseContent(index)">{{ $t('newlyAdded') }}</a-button>
|
||||
<a-button v-if="clause.type === TypeOfClauseItem.TABLE.value" @click="splitEdit(index,clause)">
|
||||
@@ -273,12 +283,15 @@ import { getAction } from '../../../../api/manage'
|
||||
import { getFormDictTreeList } from '../../../../api/api'
|
||||
import STreeSelect from '../../../../components/STreeSelect'
|
||||
import TreeSelection from '../../../../components/selection/TreeSelection'
|
||||
import { randomUUID } from '@/utils/util'
|
||||
import TreeDataSelection from '@comp/selection/TreeDataSelection'
|
||||
import SplitAddClauseUploadImage from '@comp/splitUpload/SplitAddClauseUploadImage'
|
||||
|
||||
export default {
|
||||
name: 'SplitAddForm',
|
||||
components: {
|
||||
SplitAddClauseUploadImage,
|
||||
TreeDataSelection,
|
||||
TreeSelection,
|
||||
JMultipleDatePicker,
|
||||
SplitDetailAddTable,
|
||||
@@ -294,6 +307,12 @@ export default {
|
||||
hiddenFieldList: ['item_content', 'translation'], // 隐藏的字段
|
||||
radioDictSelect: [], // 使用radio样式的数据字典单选
|
||||
disabledFieldList: [], // 禁用的字段
|
||||
// 需要英文状态下翻译下拉的字段
|
||||
dictTextFieldList: [
|
||||
'professional_field', // 全部-专业领域
|
||||
'applicable_market', // 适用市场
|
||||
'domain_area' // 条款-专业领域
|
||||
],
|
||||
specialPlaceholder: {}, // 特殊的placeholder
|
||||
optionsData: {}, // 通过接口获取的下拉数据
|
||||
title: this.$t('newlyAdded'),
|
||||
@@ -343,6 +362,18 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 处理英文下树结构下拉的字段替换
|
||||
* @param field - 字段名
|
||||
*/
|
||||
getReplaceFields (field) {
|
||||
const obj = {}
|
||||
// 数据字典或标签内容管理英文是enTitle
|
||||
if (this.dictTextFieldList.includes(field)) {
|
||||
obj.title = this.isChinese() ? 'title' : 'enTitle'
|
||||
}
|
||||
return obj
|
||||
},
|
||||
/**
|
||||
* 新增
|
||||
*/
|
||||
@@ -533,35 +564,45 @@ export default {
|
||||
},
|
||||
// 增加条款内容成功
|
||||
handleAddOk (type, content) {
|
||||
const headerArr = this.contentList.splice(0, this.addIndex + 1)
|
||||
const footerArr = this.contentList.splice(-this.addIndex)
|
||||
const insertArr = []
|
||||
switch (type) {
|
||||
case TypeOfClauseItem.TEXT.value:
|
||||
for (let i = 0; i < content; i++) {
|
||||
insertArr.push({
|
||||
id: '',
|
||||
uuid: randomUUID(),
|
||||
type: TypeOfClauseItem.TEXT.value,
|
||||
[this.currentFieldObj.field]: ''
|
||||
})
|
||||
}
|
||||
break
|
||||
case TypeOfClauseItem.IMG.value:
|
||||
insertArr[0] = {
|
||||
id: '',
|
||||
type: TypeOfClauseItem.IMG.value,
|
||||
[this.currentFieldObj.field]: content.file.response.result.url,
|
||||
[this.currentFieldObj.tempUrlField]: window._CONFIG.domianURL + '/sys/split/file/getImage?fileName=' + content.file.response.result.fileName
|
||||
// 处理上传接口报错的情况
|
||||
if (content.imgs) {
|
||||
content.imgs.forEach(file => {
|
||||
insertArr.push({
|
||||
id: '',
|
||||
uuid: randomUUID(),
|
||||
type: TypeOfClauseItem.IMG.value,
|
||||
[this.currentFieldObj.field]: file.response.result.url,
|
||||
[this.currentFieldObj.tempUrlField]: window._CONFIG.domianURL + '/sys/split/file/getImage?fileName=' + file.response.result.fileName
|
||||
})
|
||||
})
|
||||
}
|
||||
break
|
||||
case TypeOfClauseItem.TABLE.value:
|
||||
insertArr[0] = {
|
||||
id: '',
|
||||
uuid: randomUUID(),
|
||||
type: 'TABLE',
|
||||
[this.currentFieldObj.field]: content[0]
|
||||
}
|
||||
}
|
||||
this.contentList = [...headerArr, ...insertArr, ...footerArr]
|
||||
if (this.addIndex !== -1) {
|
||||
this.contentList.splice(this.addIndex + 1, 0, ...insertArr)
|
||||
} else {
|
||||
this.contentList.push(...insertArr)
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 译文编辑
|
||||
@@ -770,6 +811,9 @@ export default {
|
||||
}
|
||||
return null
|
||||
},
|
||||
treeDataSelectNameChange (value, fieldName) {
|
||||
this.formInline[fieldName + '_dictText'] = value
|
||||
},
|
||||
/**
|
||||
* 如果字段中的usableRange只有一个值,那么就需要在placeholder中标识
|
||||
* @param field
|
||||
|
||||
@@ -128,7 +128,7 @@ export default {
|
||||
disabled: false,
|
||||
titleImg: this.$t('uploadPictures'),
|
||||
listType: 'picture',
|
||||
accept: '.png,.jpeg,.jpg,.gif',
|
||||
accept: '.png,.jpeg,.jpg',
|
||||
// 表格行列相关数据
|
||||
rowColForm: {},
|
||||
validatorRowColRules: {
|
||||
@@ -159,8 +159,11 @@ export default {
|
||||
},
|
||||
// 上传文件
|
||||
uploadSuccess (file, data, imgs) {
|
||||
this.$emit('ok', TypeOfClauseItem.IMG.value, { file, data, imgs })
|
||||
this.visible = false
|
||||
// 所有文件都上传完成再去关闭弹框
|
||||
if (Array.isArray(imgs) && imgs.every(item => item.status === 'done')) {
|
||||
this.$emit('ok', TypeOfClauseItem.IMG.value, { file, data, imgs })
|
||||
this.visible = false
|
||||
}
|
||||
// this.$emit('addImageOk', file, data, imgs)
|
||||
},
|
||||
// 确定增加的类型
|
||||
|
||||
@@ -146,7 +146,7 @@
|
||||
:label-in-value="false"
|
||||
:placeholder="$t('pleaseSelect')+item.dbFieldTxt + getPlaceholderSuffix(item)" />
|
||||
<!--16、树形弹框选择-->
|
||||
<tree-selection v-else-if="item.fieldShowType === FieldType.TREE_MODAL_SELECT.value"
|
||||
<tree-selection v-else-if="item.fieldShowType === FieldType.TREE_MODAL_SELECT.value || item.fieldShowType === FieldType.TREE_MODAL_SELECT_SEARCH_DIFF.value"
|
||||
:placeholder="$t('pleaseSelect')+item.dbFieldTxt + getPlaceholderSuffix(item)"
|
||||
v-model="formInline[item.dbFieldName]"
|
||||
:filedName="item.dbFieldName"
|
||||
|
||||
@@ -108,7 +108,8 @@ export default {
|
||||
{
|
||||
dataIndex: 'origin_dictText',
|
||||
title: this.$t('docTool.split.dataType'),
|
||||
width: 150
|
||||
width: 150,
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
// 标准号
|
||||
{
|
||||
@@ -126,7 +127,8 @@ export default {
|
||||
{
|
||||
dataIndex: 'standardFileType_dictText',
|
||||
title: this.$t('docTool.comparison.textStatus'),
|
||||
width: 150
|
||||
width: 150,
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
// 附件
|
||||
{
|
||||
@@ -151,6 +153,20 @@ export default {
|
||||
this.loadStandardStructureTree()
|
||||
},
|
||||
methods: {
|
||||
// 获取树结构没有被禁用的value值
|
||||
getValuesWhereNotDisabled (tree = []) {
|
||||
const values = []
|
||||
function traverse (node) {
|
||||
if (!node.disabled) { // 只处理 disabled 不为 true 的节点
|
||||
values.push(node.value)
|
||||
}
|
||||
if (node.children && node.children.length > 0) {
|
||||
node.children.forEach(child => traverse(child))
|
||||
}
|
||||
}
|
||||
tree.forEach(node => traverse(node))
|
||||
return values
|
||||
},
|
||||
getQueryParams () {
|
||||
// 获取查询条件
|
||||
const sqp = {}
|
||||
@@ -162,17 +178,18 @@ export default {
|
||||
param.field = this.getQueryField()
|
||||
param.pageNo = this.ipagination.current
|
||||
param.pageSize = this.ipagination.pageSize
|
||||
if (Array.isArray(param.standardSystem)) {
|
||||
if (Array.isArray(param.standardSystem) && param.standardSystem.length) {
|
||||
param.standardSystem = param.standardSystem.map(item => item.value).join(',')
|
||||
} else {
|
||||
param.standardSystem = this.getValuesWhereNotDisabled(this.standardStructureTree).join(',')
|
||||
}
|
||||
return filterObj(param)
|
||||
},
|
||||
// 加载标准结构树
|
||||
loadStandardStructureTree () {
|
||||
// option 不传显示我的收藏,1不显示我的收藏
|
||||
getForeignStandardTree({ option: 1 }).then(res => {
|
||||
// option 不传显示我的收藏,1不显示我的收藏, 2只能选二级中国及中国下三级,和欧盟EU
|
||||
getForeignStandardTree({ option: 2 }).then(res => {
|
||||
if (res.success) {
|
||||
console.log(res.result)
|
||||
this.standardStructureTree = res.result || []
|
||||
}
|
||||
})
|
||||
|
||||
@@ -132,14 +132,14 @@ export default {
|
||||
title: this.$t('docTool.ocrTextRecognition.textStatus'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'fileTypeDictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
dataIndex: 'fileType_dictText',
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 转换结果
|
||||
title: this.$t('docTool.ocrTextRecognition.conversionResults'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'resultContentDictText',
|
||||
dataIndex: this.isChinese() ? 'resultContent_dictText' : 'resultContent_dictTextEn',
|
||||
scopedSlots: { customRender: 'tag' }
|
||||
},
|
||||
{ // 消耗时间
|
||||
|
||||
@@ -88,7 +88,8 @@ export default {
|
||||
{
|
||||
dataIndex: 'origin_dictText',
|
||||
title: this.$t('docTool.split.dataType'),
|
||||
width: 150
|
||||
width: 150,
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
// 标准号
|
||||
{
|
||||
@@ -106,7 +107,8 @@ export default {
|
||||
{
|
||||
dataIndex: 'standardFileType_dictText',
|
||||
title: this.$t('docTool.comparison.textStatus'),
|
||||
width: 150
|
||||
width: 150,
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
// 附件
|
||||
{
|
||||
|
||||
@@ -526,12 +526,6 @@ export default {
|
||||
this.$message.warning(this.$t('selectARecord'))
|
||||
return
|
||||
}
|
||||
console.log(this.selectionRows)
|
||||
if (this.selectionRows.find(item => !item.editFlag)) {
|
||||
// 有没有查看权限的数据
|
||||
this.$message.warning(this.$t('enterpriseStandardLibrary.standard.disabledBatchDel'))
|
||||
return
|
||||
}
|
||||
const ids = this.selectedRowKeys.join(',')
|
||||
this.$confirm({
|
||||
title: this.$t('confirmBatchDeletion'),
|
||||
|
||||
@@ -47,6 +47,18 @@
|
||||
type="primary" ghost @click="viewAll(formItem.dbFieldName)">
|
||||
{{ $t('enterpriseStandardLibrary.standard.viewAll')}}
|
||||
</a-button>
|
||||
<!-- 是需要翻译的也需要双语翻译的,并且不在不需要双语翻译的字段里 -->
|
||||
<span v-else-if="needDictFieldList.includes(formItem.fieldShowType) && needEnNameFieldType.includes(formItem.fieldShowType) && !needEnNameTypeNotUseField.includes(formItem.dbFieldName)">
|
||||
{{
|
||||
detailData[(isChinese() ? formItem.dbFieldName + '_dictText' : formItem.dbFieldName + '_dictTextEn')] || global.emptyLine
|
||||
}}
|
||||
</span>
|
||||
<!-- 是需要翻译的但不需要双语翻译的,或者在需要双语翻译的类型里,但是不需要双语翻译的字段 -->
|
||||
<span v-else-if="needDictFieldList.includes(formItem.fieldShowType) && (!needEnNameFieldType.includes(formItem.fieldShowType) || needEnNameFieldType.includes(formItem.fieldShowType) && needEnNameTypeNotUseField.includes(formItem.dbFieldName))">
|
||||
{{
|
||||
detailData[formItem.dbFieldName + '_dictText'] || global.emptyLine
|
||||
}}
|
||||
</span>
|
||||
<span v-else-if="detailData[formItem.dbFieldName + '_dictText']">{{ detailData[formItem.dbFieldName + '_dictText'] }}</span>
|
||||
<!-- 标准适用范围,有标签需要编译 -->
|
||||
<span v-else-if="detailData[formItem.dbFieldName] && formItem.dbFieldName === 'standard_scope'" v-html="detailData[formItem.dbFieldName]"></span>
|
||||
@@ -89,7 +101,7 @@
|
||||
<!-- 稽查内容 -->
|
||||
<div class="detail-page-part">
|
||||
<div class="detail-page-part-title">
|
||||
<span>稽查内容</span>
|
||||
<span>{{ $t('enterpriseStandardLibrary.standard.auditContent') }}</span>
|
||||
</div>
|
||||
<div class="detail-page-part-table">
|
||||
<a-table
|
||||
@@ -190,7 +202,7 @@ export default {
|
||||
dataSource: [], // 稽查内容数据
|
||||
image: false,
|
||||
imageUrl: '',
|
||||
showViewAllField: ['auth_dept'], // 需要显示展示查看全部按钮的字段
|
||||
showViewAllField: ['part_name'], // 需要显示展示查看全部按钮的字段
|
||||
// 标准字段,需要跳转标准详情
|
||||
standardFields: ['substitute_standard_number', 'replaced_by_standard_number', 'reference_standard', 'referenced_standard'],
|
||||
// 参与只允许查看最新稿件排序的字段顺序(发布稿>征求意见稿)
|
||||
@@ -199,7 +211,13 @@ export default {
|
||||
manuScriptNewestFileField: '',
|
||||
filePerm: { // 上传文件根据权限控制只能查看,没有权限的除了系统管理员外不可见不可下载
|
||||
associated_file: 'enterpriseStandard:associatedFile:look' // 关联文件
|
||||
}
|
||||
},
|
||||
// 需要数据字段翻译的属性类型
|
||||
needDictFieldList: [FieldType.USER_SINGLE.value, FieldType.ORGAN_SINGLE.value, FieldType.ORGAN_MORE.value, FieldType.OPTION_SINGLE.value, FieldType.OPTION_MORE.value, FieldType.TREE.value, FieldType.TREE_SINGLE.value],
|
||||
// 需要双语切换翻译的属性类型
|
||||
needEnNameFieldType: [FieldType.OPTION_SINGLE.value, FieldType.OPTION_MORE.value, FieldType.TREE.value, FieldType.TREE_SINGLE.value],
|
||||
// 是双语切换翻译的属性,但是不翻译的字段
|
||||
needEnNameTypeNotUseField: ['standard_system']
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
@@ -218,12 +236,8 @@ export default {
|
||||
methods: {
|
||||
fileIsDownload (fieldName) { // 文件是否可下载
|
||||
if (Object.keys(this.filePerm).includes(fieldName)) {
|
||||
// 系统管理员可下载
|
||||
if (this.isSystemAdmin) {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
// 需要特殊判断的字段不可下载
|
||||
return false
|
||||
} else {
|
||||
// 不是需要特殊判断的字段正常可下载
|
||||
return true
|
||||
|
||||
@@ -51,6 +51,14 @@
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
<!--增加数据字典双语翻译的插槽-->
|
||||
<template slot="dictText" slot-scope="text, record, index, column">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ (isChinese() ? text : record[column.key + 'En']) || (isChinese() ? text : record[column.key + 'En']) === 0 ? (isChinese() ? text : record[column.key + 'En']) : global.emptyLine }}</template>
|
||||
<div class="table-text">{{ (isChinese() ? text : record[column.key + 'En']) || (isChinese() ? text : record[column.key + 'En']) === 0 ? (isChinese() ? text : record[column.key + 'En']) : global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
</a-table>
|
||||
</div>
|
||||
|
||||
@@ -125,10 +133,10 @@ export default {
|
||||
},
|
||||
{
|
||||
title: this.$t('standardSelect.textState'),
|
||||
dataIndex: 'standardState_dictText',
|
||||
dataIndex: 'esStandardState_dictText',
|
||||
align: 'center',
|
||||
width: 120,
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
}
|
||||
],
|
||||
dataList: [],
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<!-- 引用标准可以选国标和外标 -->
|
||||
<add-form ref="addForm"
|
||||
:flag="StandardSource.ENTERPRISE.value"
|
||||
:defaultValue="{year_number: new Date().getFullYear() + '', try_flag: '0'}"
|
||||
:defaultValue="{year_number: new Date().getFullYear() + ''}"
|
||||
:disabledFieldList="disabledFieldList"
|
||||
:selectStandardCanUpdateTypeField="['reference_standard']"
|
||||
:hiddenFieldList="hiddenFieldList"
|
||||
@@ -23,6 +23,7 @@
|
||||
:get-form-func="getFormFunc"
|
||||
:get-document-info-func="getDocumentInfoFunc"
|
||||
:exclude-standard-fields="['substitute_standard_number', 'reference_standard']"
|
||||
:selectStandardValueNeedNameField="['substitute_standard_number', 'reference_standard']"
|
||||
@submitFormData="submitFormData" />
|
||||
<div class="header-text-btn">
|
||||
<!-- 稽查内容 -->
|
||||
@@ -99,7 +100,7 @@ export default {
|
||||
StandardSource,
|
||||
visible: false,
|
||||
title: '',
|
||||
width: 800,
|
||||
width: '50%',
|
||||
// 存储表单的数据
|
||||
form: {},
|
||||
confirmLoading: false,
|
||||
@@ -251,4 +252,8 @@ export default {
|
||||
.check-content-table {
|
||||
padding-bottom: 40px;
|
||||
}
|
||||
|
||||
/deep/ .ant-drawer-content-wrapper {
|
||||
min-width: 800px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -94,20 +94,6 @@ export default {
|
||||
dataIndex: 'releaseDate',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
title: this.$t('personalCenter.collection.newCarTypeDate'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'newModelImplementationDate',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
title: this.$t('personalCenter.collection.productCarDate'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'onTheProductionDate',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
title: this.$t('personalCenter.collection.standardState'),
|
||||
align: 'center',
|
||||
|
||||
@@ -117,6 +117,17 @@
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
<!-- 条款内容 -->
|
||||
<template slot="item_content" slot-scope="{text, record}">
|
||||
<a class="link-a" v-if="text && !text.replace(/<.*?>/ig, '')" @click="showContent(text,record)">
|
||||
{{ $t('view') }}
|
||||
</a>
|
||||
<div class="table-text" v-else-if="text || text === 0" @click="showContent(text,record)">
|
||||
{{ text && text !== 'null' ? text.replace(/<.*?>/ig, ' ') : '' }}
|
||||
</div>
|
||||
<div class="table-text" v-else>{{ global.emptyLine }}</div>
|
||||
</template>
|
||||
|
||||
<!-- 附件 -->
|
||||
<template v-slot:file="{text, record}">
|
||||
<a v-if="text" class="link-a" @click="handleLookFile(record)">{{ $t('view') }}</a>
|
||||
@@ -133,6 +144,8 @@
|
||||
<nonmatch-item-look-modal ref="nonmatchItemLookModal"/>
|
||||
<!-- 文件查看弹框 -->
|
||||
<upload-file ref="uploadFile" disabled></upload-file>
|
||||
<!-- 条款内容 -->
|
||||
<split-clause-detail ref="splitClauseDetail" />
|
||||
</a-card>
|
||||
</template>
|
||||
|
||||
@@ -144,10 +157,11 @@ import NonmatchItemCloseModal from './modules/NonmatchItemCloseModal'
|
||||
import NonmatchItemLookModal from './modules/NonmatchItemLookModal'
|
||||
import { queryDepartTreeList } from '../../../api/api'
|
||||
import UploadFile from '@/components/UploadFile'
|
||||
import SplitClauseDetail from '../../documentTool/documentSplit/modules/SplitClauseDetail'
|
||||
|
||||
export default {
|
||||
name: 'NonmatchItemList',
|
||||
components: { JTable, NonmatchItemCloseModal, NonmatchItemLookModal, UploadFile },
|
||||
components: { JTable, NonmatchItemCloseModal, NonmatchItemLookModal, UploadFile, SplitClauseDetail },
|
||||
mixins: [JeroListMixin],
|
||||
data () {
|
||||
return {
|
||||
@@ -165,7 +179,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'modelStatus_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 标准编号
|
||||
title: this.$t('standardNumber'),
|
||||
@@ -194,7 +208,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'termContent',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'item_content' }
|
||||
},
|
||||
{ // 责任部门
|
||||
title: this.$t('regulatoryComplianceAssessmentDatabase.nonmatchItem.responsibleDepartment'),
|
||||
@@ -215,14 +229,14 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'problemType_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 整改状态
|
||||
title: this.$t('regulatoryComplianceAssessmentDatabase.nonmatchItem.rectificationState'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'rectifyStatus_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // PCR编号
|
||||
title: this.$t('regulatoryComplianceAssessmentDatabase.nonmatchItem.pcrNumber'),
|
||||
@@ -320,6 +334,10 @@ export default {
|
||||
}
|
||||
})
|
||||
},
|
||||
// 显示条款内容弹框
|
||||
showContent (val) {
|
||||
this.$refs.splitClauseDetail.open(val)
|
||||
},
|
||||
// 批量关闭
|
||||
batchClose () {
|
||||
if (this.selectedRowKeys.length <= 0) {
|
||||
|
||||
+26
-4
@@ -25,10 +25,22 @@
|
||||
<!-- 适用市场 -->
|
||||
<a-col :md="6" :sm="8">
|
||||
<a-form-item :label="$t('regulatoryComplianceAssessmentDatabase.assessmentLibrary.applicableMarket')">
|
||||
<j-multi-select-tag
|
||||
:placeholder="$t('pleaseSelect') + $t('regulatoryComplianceAssessmentDatabase.assessmentLibrary.applicableMarket')"
|
||||
<!-- <j-multi-select-tag-->
|
||||
<!-- :placeholder="$t('pleaseSelect') + $t('regulatoryComplianceAssessmentDatabase.assessmentLibrary.applicableMarket')"-->
|
||||
<!-- v-model="queryParam.applicableMarket"-->
|
||||
<!-- dict-code="market_state"></j-multi-select-tag>-->
|
||||
<a-tree-select
|
||||
tree-node-filter-prop="title"
|
||||
v-model="queryParam.applicableMarket"
|
||||
dict-code="market_state"></j-multi-select-tag>
|
||||
:maxTagCount="1"
|
||||
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||
:tree-data="countryOptions"
|
||||
:placeholder="$t('pleaseSelect')+$t('regulatoryComplianceAssessmentDatabase.assessmentLibrary.applicableMarket')"
|
||||
show-search
|
||||
allowClear
|
||||
:replaceFields="{title: isChinese() ? 'title' : 'enTitle'}"
|
||||
:filterTreeNode="filterTreeOption"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
|
||||
@@ -103,6 +115,7 @@
|
||||
import JTable from '@/components/jero/JTable'
|
||||
import { JeroListMixin } from '@/mixins/JeroListMixin'
|
||||
import AssessmentLookModal from './modules/AssessmentLookModal'
|
||||
import { getFormDictTreeList } from '../../../api/api'
|
||||
|
||||
export default {
|
||||
name: 'RegulatoryComplianceAssessmentList',
|
||||
@@ -110,6 +123,7 @@ export default {
|
||||
mixins: [JeroListMixin],
|
||||
data () {
|
||||
return {
|
||||
countryOptions: [], // 国家下拉选择
|
||||
columns: [
|
||||
{ // 标准编号
|
||||
title: this.$t('standardNumber'),
|
||||
@@ -130,7 +144,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'applicableMarket_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 评估日期
|
||||
title: this.$t('regulatoryComplianceAssessmentDatabase.assessmentLibrary.dateOfEvaluation'),
|
||||
@@ -164,6 +178,7 @@ export default {
|
||||
}
|
||||
},
|
||||
created () {
|
||||
this.getCountryOption()
|
||||
// 标准主计划跳转进来携带标准+适用市场
|
||||
this.$set(this.queryParam, 'applicableMarket', this.$route.query.applicableMarket)
|
||||
this.$set(this.queryParam, 'standardName', this.$route.query.standardName)
|
||||
@@ -171,6 +186,13 @@ export default {
|
||||
this.loadData()
|
||||
},
|
||||
methods: {
|
||||
getCountryOption () {
|
||||
getFormDictTreeList({ dictId: '1801130851452059649' }).then(res => {
|
||||
if (res.success) {
|
||||
this.countryOptions = res.result
|
||||
}
|
||||
})
|
||||
},
|
||||
toDetail (record) {
|
||||
const path = '/standardRegulationLibrary/foreignStandardDetailPage'
|
||||
this.$openPageNewSheet({
|
||||
|
||||
+45
-6
@@ -6,7 +6,9 @@
|
||||
:closable="true"
|
||||
switchFullscreen
|
||||
:footer="false"
|
||||
:class="isFullScreen ? 'full-screen-modal' : ''"
|
||||
@cancel="handleCancel"
|
||||
@update:fullscreen="updataFullScreen"
|
||||
:visible="visible">
|
||||
|
||||
<div class="table-page-search-wrapper">
|
||||
@@ -80,9 +82,28 @@
|
||||
:dataSource="dataSource"
|
||||
:pagination="ipagination"
|
||||
:loading="loading"
|
||||
:scroll="{x: '100%', y: 'calc(100vh - 500px)'}"
|
||||
:scroll="{x: '100%', y: isFullScreen ? 'calc(100vh - 330px)' : 'calc(100vh - 500px)'}"
|
||||
@change="handleTableChange">
|
||||
|
||||
<!--增加数据字典双语翻译的插槽-->
|
||||
<template slot="dictText" slot-scope="text, record, index, column">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ (isChinese() ? text : record[column.key + 'En']) || (isChinese() ? text : record[column.key + 'En']) === 0 ? (isChinese() ? text : record[column.key + 'En']) : global.emptyLine }}</template>
|
||||
<div class="table-text">{{ (isChinese() ? text : record[column.key + 'En']) || (isChinese() ? text : record[column.key + 'En']) === 0 ? (isChinese() ? text : record[column.key + 'En']) : global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
<!-- 条款内容 -->
|
||||
<template slot="item_content" slot-scope="text, record">
|
||||
<a class="link-a" v-if="text && !text.replace(/<.*?>/ig, '')" @click="showContent(text,record)">
|
||||
{{ $t('view') }}
|
||||
</a>
|
||||
<div class="table-text" v-else-if="text || text === 0" @click="showContent(text,record)">
|
||||
{{ text && text !== 'null' ? text.replace(/<.*?>/ig, ' ') : '' }}
|
||||
</div>
|
||||
<div class="table-text" v-else>{{ global.emptyLine }}</div>
|
||||
</template>
|
||||
|
||||
<template slot="text" slot-scope="text">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
|
||||
@@ -99,6 +120,8 @@
|
||||
|
||||
<!-- 文件列表查看 -->
|
||||
<upload-file ref="uploadFile" disabled></upload-file>
|
||||
<!-- 条款内容 -->
|
||||
<split-clause-detail ref="splitClauseDetail" />
|
||||
|
||||
</j-modal>
|
||||
</template>
|
||||
@@ -107,10 +130,11 @@
|
||||
import { JeroListMixin } from '@/mixins/JeroListMixin'
|
||||
import { queryDepartTreeList } from '../../../../api/api'
|
||||
import UploadFile from '@/components/UploadFile'
|
||||
import SplitClauseDetail from '../../../documentTool/documentSplit/modules/SplitClauseDetail'
|
||||
|
||||
export default {
|
||||
name: 'AssessmentLookModal',
|
||||
components: { UploadFile },
|
||||
components: { UploadFile, SplitClauseDetail },
|
||||
mixins: [JeroListMixin],
|
||||
data () {
|
||||
return {
|
||||
@@ -140,7 +164,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'termContent',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'item_content' }
|
||||
},
|
||||
{ // 车型
|
||||
title: this.$t('regulatoryComplianceAssessmentDatabase.assessmentLibrary.vehicleType'),
|
||||
@@ -154,7 +178,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'modelStatus_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 责任部门
|
||||
title: this.$t('regulatoryComplianceAssessmentDatabase.assessmentLibrary.responsibleDepartment'),
|
||||
@@ -175,7 +199,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'result_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 不满足要求的现状
|
||||
title: this.$t('regulatoryComplianceAssessmentDatabase.assessmentLibrary.theStatusNotMeetRequirements'),
|
||||
@@ -239,7 +263,8 @@ export default {
|
||||
},
|
||||
disableMixinCreated: true,
|
||||
image: false,
|
||||
imageUrl: ''
|
||||
imageUrl: '',
|
||||
isFullScreen: false
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
@@ -261,6 +286,14 @@ export default {
|
||||
}
|
||||
})
|
||||
},
|
||||
// 全屏切换
|
||||
updataFullScreen (value) {
|
||||
this.isFullScreen = value
|
||||
},
|
||||
// 显示条款内容弹框
|
||||
showContent (val) {
|
||||
this.$refs.splitClauseDetail.open(val)
|
||||
},
|
||||
filterTreeOption (input, option) {
|
||||
const text = option.componentOptions.propsData.title || option.componentOptions.propsData.label
|
||||
return text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
||||
@@ -294,4 +327,10 @@ export default {
|
||||
/deep/ .ant-form-item-label {
|
||||
min-width: 70px !important;
|
||||
}
|
||||
|
||||
.full-screen-modal {
|
||||
/deep/ .ant-modal-body {
|
||||
height: calc(100% - 55px) !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -106,19 +106,19 @@ export default {
|
||||
form: this.$form.createForm(this),
|
||||
labelCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 4 }
|
||||
sm: { span: 6 }
|
||||
},
|
||||
wrapperCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 18 }
|
||||
sm: { span: 16 }
|
||||
},
|
||||
lineLabelCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 2 }
|
||||
sm: { span: 3 }
|
||||
},
|
||||
lineWrapperCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 21 }
|
||||
sm: { span: 20 }
|
||||
},
|
||||
ueContent: '',
|
||||
// UE编辑器配置
|
||||
@@ -369,5 +369,13 @@ export default {
|
||||
box-sizing: border-box;
|
||||
overflow: auto;
|
||||
padding: 32px 0;
|
||||
|
||||
/deep/ .ant-form-item-label {
|
||||
margin-right: 10px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
word-break: break-all;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -121,7 +121,8 @@ export default {
|
||||
{
|
||||
dataIndex: 'dynamicClassification_dictText',
|
||||
title: this.$t('standardRegulationLibrary.dynamicMessage.dynamicCataloging'),
|
||||
width: 150
|
||||
width: 150,
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
// 来源
|
||||
{
|
||||
@@ -139,7 +140,8 @@ export default {
|
||||
{
|
||||
dataIndex: 'releaseStatus_dictText',
|
||||
title: this.$t('standardRegulationLibrary.dynamicMessage.releaseStatus'),
|
||||
width: 150
|
||||
width: 150,
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
// 发布时间
|
||||
{
|
||||
|
||||
@@ -536,6 +536,8 @@ export default {
|
||||
this.ipagination.current -= 1
|
||||
}
|
||||
this.loadData()
|
||||
// 清空列表选中
|
||||
this.onClearSelected()
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
}
|
||||
@@ -563,6 +565,7 @@ export default {
|
||||
this.searchParams = Object.assign({}, params)
|
||||
this.selectedRowKeys = []
|
||||
this.selectedTreeKeys = []
|
||||
this.selectedTreeNodeCodes = []
|
||||
delete this.filters.nodeCode
|
||||
this.getTableHeader()
|
||||
this.loadData()
|
||||
|
||||
+24
-8
@@ -9,7 +9,7 @@
|
||||
<!-- 过程稿件显示展开收起 -->
|
||||
<div v-if="part === DisplayAreaManagement.PROCESS_DOCUMENTATION.text || part === DisplayAreaManagement.PROCESS_DOCUMENTATION.textEn" class="retractable-btn" @click="handleChangeRetractable(index)">
|
||||
<i class="iconfont " :class="retractableFlag[index] ? 'icon-nav-top' : 'icon-nav-bottom'" />
|
||||
{{ retractableFlag[index] ? '收起' : '展开' }}
|
||||
{{ retractableFlag[index] ? $t('putAway') : $t('open') }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail-page-part-form" v-if="part !== DisplayAreaManagement.PROCESS_DOCUMENTATION.text && part !== DisplayAreaManagement.PROCESS_DOCUMENTATION.textEn">
|
||||
@@ -54,21 +54,33 @@
|
||||
<span v-else>{{ global.emptyLine }}</span>
|
||||
</div>
|
||||
<!-- 需要显示查看全部按钮 -->
|
||||
<a v-else-if="showViewAllField.includes(formItem.dbFieldName) &&
|
||||
<a-button v-else-if="showViewAllField.includes(formItem.dbFieldName) &&
|
||||
(detailData[formItem.dbFieldName + '_dictText'] || detailData[formItem.dbFieldName])"
|
||||
@click="viewAll(formItem.dbFieldName)">
|
||||
type="primary" ghost @click="viewAll(formItem.dbFieldName)">
|
||||
{{ $t('enterpriseStandardLibrary.standard.viewAll')}}
|
||||
</a>
|
||||
</a-button>
|
||||
<!-- 是需要翻译的也需要双语翻译的,并且不在不需要双语翻译的字段里 -->
|
||||
<span v-else-if="needDictFieldList.includes(formItem.fieldShowType) && needEnNameFieldType.includes(formItem.fieldShowType) && !needEnNameTypeNotUseField.includes(formItem.dbFieldName)">
|
||||
{{
|
||||
detailData[(isChinese() ? formItem.dbFieldName + '_dictText' : formItem.dbFieldName + '_dictTextEn')] || global.emptyLine
|
||||
}}
|
||||
</span>
|
||||
<!-- 是需要翻译的但不需要双语翻译的,或者在需要双语翻译的类型里,但是不需要双语翻译的字段 -->
|
||||
<span v-else-if="needDictFieldList.includes(formItem.fieldShowType) && (!needEnNameFieldType.includes(formItem.fieldShowType) || needEnNameFieldType.includes(formItem.fieldShowType) && needEnNameTypeNotUseField.includes(formItem.dbFieldName))">
|
||||
{{
|
||||
detailData[formItem.dbFieldName + '_dictText'] || global.emptyLine
|
||||
}}
|
||||
</span>
|
||||
<span v-else>
|
||||
{{
|
||||
detailData[needDictFieldList.includes(formItem.fieldShowType) ? formItem.dbFieldName + '_dictText' : formItem.dbFieldName] || global.emptyLine
|
||||
detailData[formItem.dbFieldName] || global.emptyLine
|
||||
}}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 过程稿件特殊处理-->
|
||||
<div class="detail-page-process-manuscript" v-if="part === DisplayAreaManagement.PROCESS_DOCUMENTATION.text || part === DisplayAreaManagement.PROCESS_DOCUMENTATION.textEn" v-show="retractableFlag[index]">
|
||||
<div class="detail-page-process-manuscript-item" v-for="formItem in form[part]" :key="formItem.id">
|
||||
<div class="detail-page-process-manuscript" v-if="part === DisplayAreaManagement.PROCESS_DOCUMENTATION.text || part === DisplayAreaManagement.PROCESS_DOCUMENTATION.textEn">
|
||||
<div class="detail-page-process-manuscript-item" v-for="formItem in (retractableFlag[index] ? form[part] : [form[part][0]])" :key="formItem.id">
|
||||
<div class="detail-page-process-manuscript-title">
|
||||
<span>{{ formItem.dbFieldTxt }}</span>
|
||||
<!-- 标准解读-->
|
||||
@@ -180,6 +192,10 @@ export default {
|
||||
retractableFlag: {}, // 面板展开收起的标识
|
||||
// 业务基本信息有几个部分
|
||||
formPartList: [],
|
||||
// 需要双语切换翻译的属性类型
|
||||
needEnNameFieldType: [FieldType.OPTION_SINGLE.value, FieldType.OPTION_MORE.value, FieldType.TREE.value, FieldType.TREE_SINGLE.value],
|
||||
// 是双语切换翻译的属性,但是不翻译的字段
|
||||
needEnNameTypeNotUseField: ['standard_system']
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
@@ -310,7 +326,7 @@ export default {
|
||||
},
|
||||
// 查看全部
|
||||
viewAll (fieldName) {
|
||||
const data = this.detailData[fieldName + '_dictText'] || this.detailData[fieldName]
|
||||
const data = this.isChinese() ? this.detailData[fieldName + '_dictText'] : this.detailData[fieldName + '_dictTextEn'] || this.detailData[fieldName]
|
||||
this.$refs.textContentModal.open(data)
|
||||
},
|
||||
handlePreview (file, formItem) {
|
||||
|
||||
+2
-1
@@ -22,6 +22,7 @@
|
||||
:open-selected-all-field-list="openSelectedAllFieldList"
|
||||
:exclude-standard-fields="excludeStandardFields"
|
||||
:flag-by-field="{associated_enterprise_standard: StandardSource.ENTERPRISE.value, associated_standard: StandardSource.FOREIGN.value}"
|
||||
:selectStandardValueNeedNameField="['substitute_standard_number', 'reference_standard']"
|
||||
@submitFormData="submitFormData" />
|
||||
</a-spin>
|
||||
</div>
|
||||
@@ -118,7 +119,7 @@ export default {
|
||||
}
|
||||
submitFunc(formInline).then((res) => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
this.$message.success(this.$t('operationSuccessful'))
|
||||
this.$emit('ok')
|
||||
this.close()
|
||||
} else {
|
||||
|
||||
+10
-2
@@ -48,6 +48,14 @@
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
<!--增加数据字典双语翻译的插槽-->
|
||||
<template slot="dictText" slot-scope="text, record, index, column">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ (isChinese() ? text : record[column.key + 'En']) || (isChinese() ? text : record[column.key + 'En']) === 0 ? (isChinese() ? text : record[column.key + 'En']) : global.emptyLine }}</template>
|
||||
<div class="table-text">{{ (isChinese() ? text : record[column.key + 'En']) || (isChinese() ? text : record[column.key + 'En']) === 0 ? (isChinese() ? text : record[column.key + 'En']) : global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
<template slot="text" slot-scope="text">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
|
||||
@@ -143,7 +151,7 @@ export default {
|
||||
dataIndex: 'standardState_dictText',
|
||||
align: 'center',
|
||||
width: 120,
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
}
|
||||
],
|
||||
dataList: [],
|
||||
@@ -219,7 +227,7 @@ export default {
|
||||
*/
|
||||
toDetailPage ({ id }) {
|
||||
this.$openPageNewSheet({
|
||||
path: '/standardRegulationLibrary/ForeignStandardDetail',
|
||||
path: '/standardRegulationLibrary/foreignStandardDetailPage',
|
||||
query: {
|
||||
id
|
||||
}
|
||||
|
||||
+14
-14
@@ -10,7 +10,7 @@
|
||||
<!-- 国家/地区 -->
|
||||
<a-col :span="12">
|
||||
<label>{{ $t('standardRegulationLibrary.marketRegulationsList.countryRegion') }}</label>
|
||||
<span>{{ model.country_dictText || global.emptyLine }}</span>
|
||||
<span>{{ (isChinese() ? model.country_dictText : model.country_dictTextEn) || global.emptyLine }}</span>
|
||||
</a-col>
|
||||
<!-- 清单编号 -->
|
||||
<a-col :span="12">
|
||||
@@ -25,12 +25,12 @@
|
||||
<!-- 驾驶位置 -->
|
||||
<a-col :span="12">
|
||||
<label>{{ $t('standardRegulationLibrary.marketRegulationsList.drivingPosition') }}</label>
|
||||
<span>{{ model.drivePosition_dictText || global.emptyLine }}</span>
|
||||
<span>{{ (isChinese() ? model.drivePosition_dictText : model.drivePosition_dictTextEn) || global.emptyLine }}</span>
|
||||
</a-col>
|
||||
<!-- 密级 -->
|
||||
<a-col :span="12">
|
||||
<label>{{ $t('standardRegulationLibrary.marketRegulationsList.securityClass') }}</label>
|
||||
<span>{{ model.securityLevel_dictText || global.emptyLine }}</span>
|
||||
<span>{{ (isChinese() ? model.securityLevel_dictText : model.securityLevel_dictTextEn) || global.emptyLine }}</span>
|
||||
</a-col>
|
||||
<!-- 清单说明 -->
|
||||
<a-col :span="12">
|
||||
@@ -247,21 +247,21 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'country_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 适用车型
|
||||
title: this.$t('standardRegulationLibrary.marketListField.applicableVehicleType'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'applicableVehicle_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 认证对象
|
||||
title: this.$t('standardRegulationLibrary.marketListField.authenticationObject'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'authenticationObject_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 认证交付物
|
||||
title: this.$t('standardRegulationLibrary.marketListField.certifiedDeliverables'),
|
||||
@@ -275,14 +275,14 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'type_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 动力类型
|
||||
title: this.$t('standardRegulationLibrary.marketListField.dynamicType'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'dynamicType_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 主控部门
|
||||
title: this.$t('standardRegulationLibrary.marketListField.mainControlDepartment'),
|
||||
@@ -296,7 +296,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'mainDeptProfMode_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 关联部门
|
||||
title: this.$t('standardRegulationLibrary.marketListField.relatedDepartment'),
|
||||
@@ -310,31 +310,31 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'associateDeptProfMode_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 批量限制
|
||||
title: this.$t('standardRegulationLibrary.marketListField.batchRestriction'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'batchLimit_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 自动驾驶等级
|
||||
title: this.$t('standardRegulationLibrary.marketListField.automaticDrivingLevel'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'autopilotLevel_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 要求类型
|
||||
title: this.$t('standardRegulationLibrary.marketListField.requirementType'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'requireType_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 备注
|
||||
title: this.$t('remarks'),
|
||||
title: this.$t('standardRegulationLibrary.marketListField.remarks'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'remark',
|
||||
|
||||
+12
-11
@@ -19,6 +19,7 @@
|
||||
:tree-data="countryOptions"
|
||||
tree-checkable
|
||||
treeCheckStrictly
|
||||
:replaceFields="{title: isChinese() ? 'title' : 'enTitle'}"
|
||||
@change="countryChange"
|
||||
:placeholder="$t('pleaseSelect')+$t('standardRegulationLibrary.marketRegulationsList.countryRegion')" />
|
||||
</a-form-item>
|
||||
@@ -365,21 +366,21 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'country_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 适用车型
|
||||
title: this.$t('standardRegulationLibrary.marketListField.applicableVehicleType'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'applicableVehicle_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 认证对象
|
||||
title: this.$t('standardRegulationLibrary.marketListField.authenticationObject'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'authenticationObject_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 认证交付物
|
||||
title: this.$t('standardRegulationLibrary.marketListField.certifiedDeliverables'),
|
||||
@@ -393,14 +394,14 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'type_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 动力类型
|
||||
title: this.$t('standardRegulationLibrary.marketListField.dynamicType'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'dynamicType_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 主控部门
|
||||
title: this.$t('standardRegulationLibrary.marketListField.mainControlDepartment'),
|
||||
@@ -414,7 +415,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'mainDeptProfMode_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 关联部门
|
||||
title: this.$t('standardRegulationLibrary.marketListField.relatedDepartment'),
|
||||
@@ -428,31 +429,31 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'associateDeptProfMode_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 批量限制
|
||||
title: this.$t('standardRegulationLibrary.marketListField.batchRestriction'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'batchLimit_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 自动驾驶等级
|
||||
title: this.$t('standardRegulationLibrary.marketListField.automaticDrivingLevel'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'autopilotLevel_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 要求类型
|
||||
title: this.$t('standardRegulationLibrary.marketListField.requirementType'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'requireType_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 备注
|
||||
title: this.$t('remarks'),
|
||||
title: this.$t('standardRegulationLibrary.marketListField.remarks'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'remark',
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
:placeholder="$t('pleaseSelect')+$t('standardRegulationLibrary.marketRegulationsList.countryRegion')"
|
||||
show-search
|
||||
allowClear
|
||||
:replaceFields="{title: isChinese() ? 'title' : 'enTitle'}"
|
||||
:filterTreeNode="filterTreeOption"
|
||||
/>
|
||||
</a-form-item>
|
||||
@@ -152,7 +153,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'country_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 清单编号
|
||||
title: this.$t('standardRegulationLibrary.marketRegulationsList.listNumber'),
|
||||
@@ -173,7 +174,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'drivePosition_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 清单版本
|
||||
title: this.$t('standardRegulationLibrary.marketRegulationsList.listVersion'),
|
||||
@@ -201,7 +202,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'manifestStatus_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{
|
||||
title: this.$t('operation'),
|
||||
|
||||
+4
-3
@@ -66,6 +66,7 @@
|
||||
:tree-data="countryOptions"
|
||||
tree-checkable
|
||||
treeCheckStrictly
|
||||
:replaceFields="{title: isChinese() ? 'title' : 'enTitle'}"
|
||||
:placeholder="$t('pleaseSelect')+$t('standardRegulationLibrary.marketListField.applicableCountryRegion')" />
|
||||
</a-form-item>
|
||||
<!-- 认证对象 -->
|
||||
@@ -136,8 +137,8 @@
|
||||
v-decorator.trim="[ 'requireType', validatorRules.requireType ]" />
|
||||
</a-form-item>
|
||||
<!-- 备注 -->
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('remarks')">
|
||||
<a-input :placeholder="$t('pleaseEnter') + $t('remarks')"
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('standardRegulationLibrary.marketListField.remarks')">
|
||||
<a-input :placeholder="$t('pleaseEnter') + $t('standardRegulationLibrary.marketListField.remarks')"
|
||||
:maxLength="50"
|
||||
v-decorator.trim="[ 'remark', validatorRules.remark ]" />
|
||||
</a-form-item>
|
||||
@@ -303,7 +304,7 @@ export default {
|
||||
this.form.setFieldsValue(pick(this.model, 'standardNumber', 'standardName', 'standardEnglishName',
|
||||
'type', 'newProductImplDate', 'newAuthImplDate', 'registrationDate', 'country',
|
||||
'authenticationObject', 'certifyTheDeliverables', 'mainDept', 'mainDeptProfMode', 'associateDept',
|
||||
'associateDeptProfMode', 'applicableVehicle', 'dynamicType', 'batchLimit', 'autopilotLevel', 'requireType'))
|
||||
'associateDeptProfMode', 'applicableVehicle', 'dynamicType', 'batchLimit', 'autopilotLevel', 'requireType', 'remark'))
|
||||
})
|
||||
},
|
||||
getCountryOption () {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user