合并分支 'dev_third_stage' 到 'master'
Dev third stage 查看合并请求 laws-nio/laws-weilai!120
This commit is contained in:
@@ -43,6 +43,7 @@
|
||||
"vue-ls": "^3.2.0",
|
||||
"vue-photo-preview": "^1.1.3",
|
||||
"vue-print-nb-jeecg": "^1.0.9",
|
||||
"vue-quill-editor": "^3.0.6",
|
||||
"vue-router": "^3.0.1",
|
||||
"vue-splitpane": "^1.0.4",
|
||||
"vuedraggable": "^2.20.0",
|
||||
|
||||
@@ -788,7 +788,7 @@ module.exports = {
|
||||
copyParamDetailList: 'Copy Parameter List',
|
||||
collectionCompletionTime: 'Collection Completion Time',
|
||||
parameterTemplateName: 'Parameter Template Name',
|
||||
onlyThree: 'Only letters, numbers, dashes (-), and decimal points (.) can be entered. , left slash, space six kinds of content ',
|
||||
onlyThree: 'enter only letters, numbers, hyphens (-), left slashes, and Spaces',
|
||||
templateName: 'Template Name',
|
||||
pleaseSelectData: 'Please Select Data',
|
||||
templateCopy: 'Template Copy',
|
||||
@@ -1192,5 +1192,45 @@ module.exports = {
|
||||
Fileuploaded:'File uploaded, please wait',
|
||||
uploadedbyyourself:'You can only delete files and data uploaded by yourself',
|
||||
Fileuploaded:'File uploading, please wait',
|
||||
doNotHavePermissionDeleteData:'Do not have permission to delete this data,'
|
||||
doNotHavePermissionDeleteData:'Do not have permission to delete this data,',
|
||||
Parametercollection:'Parameter Collection',
|
||||
Collectlist:'Colle Ctlist',
|
||||
Statisticalmodels:'Statisti Calmodels',
|
||||
Inthecollection:'In the collection',
|
||||
Notatthe:'Not at the',
|
||||
Thepercentage:'The Percentage',
|
||||
problemKnowledgeBase:'Problem Knowledge Base',
|
||||
recentHotSpots:'Recent Hot Spots',
|
||||
disseminationMaterials:'Dissemination Materials',
|
||||
informationSafety:'Information Safety',
|
||||
blueBook:'Blue Book',
|
||||
invoiceCollection:'Invoice Collection',
|
||||
productHighlights:'Product Highlights',
|
||||
financialReimbursement:'Financial Reimbursement',
|
||||
classificationMaintenance:'Classification Maintenance',
|
||||
managePublishing:'Manage Publishing',
|
||||
displayPermission:'Display permission',
|
||||
authorizedUser:'Authorized user',
|
||||
problemClassification:'Problem classification',
|
||||
market:'market',
|
||||
documentNumber:'Document Number',
|
||||
documentTitle:'Document Title',
|
||||
bringInDocumentInformation:'Bring in document information',
|
||||
thereWhichCannotDeleted:'There are sub headings under this title, which cannot be deleted',
|
||||
sdt:'sdt',
|
||||
dre:'dre',
|
||||
applicableInstructionsMarketList:'Applicable instructions of market list',
|
||||
pleaseSelectTheDataCompared:'Please select the data to be compared',
|
||||
problemLabel:'Problem label',
|
||||
personCharge:'Person in charge',
|
||||
addLabel:'Add Label',
|
||||
editLabel:'Edit Label',
|
||||
applicableMarket:'Applicable market',
|
||||
templateMaintenance:'Template maintenance',
|
||||
associatedWebsite:'Associated website',
|
||||
dropDownOptions:'Drop down options',
|
||||
dropDownOptionMaintenance:'Drop down option maintenance',
|
||||
displayInformation:'Display information',
|
||||
addComparison:'Add comparison',
|
||||
showOrNot:'Show or not',
|
||||
}
|
||||
+144
-104
@@ -730,7 +730,7 @@ module.exports = {
|
||||
confirmationOfRegulationsList: '法规清单确认',
|
||||
regulatoryTaskConfirmation: '法规任务确认',
|
||||
certificationStart: '认证试验结束',
|
||||
preHomoCompletion:'摸底试验结束',
|
||||
preHomoCompletion: '摸底试验结束',
|
||||
certificationEnd: '认证批准',
|
||||
directoryName: '目录名称',
|
||||
batch: '批次',
|
||||
@@ -804,7 +804,7 @@ module.exports = {
|
||||
copyParamDetailList: '复制参数清单',
|
||||
collectionCompletionTime: '收集完成时间',
|
||||
parameterTemplateName: '参数模板名称',
|
||||
onlyThree: '只能输入字母,数字,横杠(-),小数点(.),左斜杠,空格六种内容',
|
||||
onlyThree: '只能输入字母,数字,横杠(-),左斜杠,空格五种内容',
|
||||
templateName: '模板名称',
|
||||
pleaseSelectData: '请选择数据',
|
||||
templateCopy: '模板复制',
|
||||
@@ -1094,107 +1094,6 @@ module.exports = {
|
||||
Copyparameterlist: '复制参数清单',
|
||||
Templatenamelist: '模板名称-参数项收集清单',
|
||||
newNiONumber: 'NIO编号',
|
||||
English:'英文',
|
||||
requiredParametersEmpty:'必填参数不能为空',
|
||||
theResponsiblePersonAndDeadlineClank:'的责任人、截止时间不能为空',
|
||||
bringInTheProjectInterface:'带入工程接口人',
|
||||
theCurrentListSaved:'当前列表数据已全部提交,无法进行暂存',
|
||||
defaultTemplate:'默认模板',
|
||||
newRequestCommentListTemplate:'新征求意见清单模板',
|
||||
NewReleasedStandardTemplate:'新发布标准模板',
|
||||
pleaseSelectStandard:'请选择标准',
|
||||
theResponsiblePersonEmpty:'的责任人不能为空',
|
||||
theDeadlineEmpty:'的截止时间不能为空',
|
||||
theDeliveryTypeCannotBeEmpty:'的交付物类型不能为空',
|
||||
For:'针对于',
|
||||
markedRejection:'标注的驳回意见',
|
||||
RegulationListConfirmationTask:'清单确认任务',
|
||||
RegulationListConfirmationNotification:'清单确认通知',
|
||||
RegulationTaskConfirmation:'任务确认任务',
|
||||
DesignComplianceTask:'设计符合性任务',
|
||||
PreHomoTask:'Pre-Homo任务',
|
||||
ValidationTask:'验证符合性任务',
|
||||
DesignComplianceNotification:'设计符合性通知',
|
||||
PreHomoNotification:'Pre-Homo通知',
|
||||
ValidationComplianceNotification:'验证符合性通知',
|
||||
RegulationTaskConfirmationNotification:'任务确认通知',
|
||||
evaluationMethod:'评估方式',
|
||||
uploadRelevantMaterials:'相关资料上传',
|
||||
RelevantMaterials:'相关资料',
|
||||
processBackground:'流程背景',
|
||||
selectedStandard:'所选标准',
|
||||
standardDecompositionDocument:'带入标准分解单',
|
||||
pleaseSelectStandardFirst:'请先选择标准',
|
||||
evaluatorFeedback:'评估人反馈',
|
||||
nameTechnicalDocument:'技术文件名称',
|
||||
chapter:'章节',
|
||||
problemDescription:'问题说明',
|
||||
filingExternalOpinions:'对外意见归档',
|
||||
initiateProcessForCurrentStandard:'针对当前标准发起流程',
|
||||
engineerFeedbackResults:'工程师反馈结果',
|
||||
fileExport:'文件导出',
|
||||
feedbackTime:'反馈时间',
|
||||
regulatoryTechnologyAssessmentProcess:'法规技术评估流程',
|
||||
feedbackEvaluation:'反馈评估',
|
||||
clauseEvaluation:'条款评估',
|
||||
standardDocuments:'标准文件',
|
||||
pleaseCompleteTheEvaluationMethodorEvaluator:'请补全列表中评估方式或评估人',
|
||||
reviewComments:'审核意见',
|
||||
PleaseCompleteList:'请补全列表中符合性结果',
|
||||
sponsorFeedback:'发起人反馈',
|
||||
processNumber:'流程编号',
|
||||
processName:'流程名称',
|
||||
feedbackResults:'反馈结果',
|
||||
theDoesNotSupportPreview:'当前文件格式不支持预览',
|
||||
releaseSituation:'发布情况',
|
||||
comparisonResults:'对比结果',
|
||||
Published:'已发布',
|
||||
initiateComparison:'发起对比',
|
||||
translationLanguage:'翻译语言',
|
||||
translationResults:'翻译结果',
|
||||
conversionTime:'转换时间',
|
||||
category:'类别',
|
||||
RegulatoryProcessEvaluationResults :'法规流程评估结果',
|
||||
ViewConformanceResults:'查看符合性结果',
|
||||
CommentsCollectionResultsForReference:'意见收集结果参考',
|
||||
TechnicalEvaluationResultsForReference:'技术评估结果参考',
|
||||
ComplianceConfirmationRecord:'符合性确认记录',
|
||||
complianceConfirmation:'符合性确认',
|
||||
Deriveconformanceresults:'导出符合性结果',
|
||||
Regulatorycompliancekanban:'法规符合性看板',
|
||||
noComparisonDocumentSelected:'未选择对比文档',
|
||||
RemarkInfo:'备注信息',
|
||||
initiateDocumentComparison:'发起文档对比',
|
||||
comparativeComments:'对比评论',
|
||||
viewTheComparisonResults:'查看对比结果',
|
||||
addFullTextComment:'添加全文评论',
|
||||
turnOffAutomaticMatching:'关闭自动匹配',
|
||||
exportComparisonReport:'导出对比报告',
|
||||
comparisonDifferenceComment:'对比差异评论',
|
||||
fullTextComments:'全文评论',
|
||||
fileDeclaration:'文件说明',
|
||||
FileForDetails:'文件详情',
|
||||
Converting:'转换中',
|
||||
convertNetwork:'转换完成',
|
||||
convertFailed:'转换失败',
|
||||
standardData:'标准数据',
|
||||
Theorganization:'组织机构',
|
||||
Addingfolder:'新增文件夹',
|
||||
Addingsubfolders:'新增子文件夹',
|
||||
Editfolder:'编辑文件夹',
|
||||
Deletefolders:'删除文件夹',
|
||||
Foldername:'文件夹名称',
|
||||
Folderpermissions:'文件夹权限',
|
||||
Folderorder:'文件夹顺序',
|
||||
Downloadprivileges:'下载权限',
|
||||
Openpersonnel:'开放人员',
|
||||
originalText:'原文',
|
||||
translatedText:'译文',
|
||||
Administrativeprivileges:'管理权限',
|
||||
Checkthepermissions:'查看权限',
|
||||
onlyFilesUploaded:'只能上传.docx、.doc文件',
|
||||
uploadedbyyourself:'只能删除自己上传的文件数据',
|
||||
Fileuploaded:'文件上传中,请稍后',
|
||||
English: '英文',
|
||||
requiredParametersEmpty: '必填参数不能为空',
|
||||
theResponsiblePersonAndDeadlineClank: '的责任人、截止时间不能为空',
|
||||
@@ -1295,5 +1194,146 @@ module.exports = {
|
||||
Checkthepermissions: '查看权限',
|
||||
onlyFilesUploaded: '只能上传.docx、.doc文件',
|
||||
uploadedbyyourself: '只能删除自己上传的文件数据',
|
||||
doNotHavePermissionDeleteData: '没有权限删除此数据'
|
||||
Fileuploaded: '文件上传中,请稍后',
|
||||
English: '英文',
|
||||
requiredParametersEmpty: '必填参数不能为空',
|
||||
theResponsiblePersonAndDeadlineClank: '的责任人、截止时间不能为空',
|
||||
bringInTheProjectInterface: '带入工程接口人',
|
||||
theCurrentListSaved: '当前列表数据已全部提交,无法进行暂存',
|
||||
defaultTemplate: '默认模板',
|
||||
newRequestCommentListTemplate: '新征求意见清单模板',
|
||||
NewReleasedStandardTemplate: '新发布标准模板',
|
||||
pleaseSelectStandard: '请选择标准',
|
||||
theResponsiblePersonEmpty: '的责任人不能为空',
|
||||
theDeadlineEmpty: '的截止时间不能为空',
|
||||
theDeliveryTypeCannotBeEmpty: '的交付物类型不能为空',
|
||||
For: '针对于',
|
||||
markedRejection: '标注的驳回意见',
|
||||
RegulationListConfirmationTask: '清单确认任务',
|
||||
RegulationListConfirmationNotification: '清单确认通知',
|
||||
RegulationTaskConfirmation: '任务确认任务',
|
||||
DesignComplianceTask: '设计符合性任务',
|
||||
PreHomoTask: 'Pre-Homo任务',
|
||||
ValidationTask: '验证符合性任务',
|
||||
DesignComplianceNotification: '设计符合性通知',
|
||||
PreHomoNotification: 'Pre-Homo通知',
|
||||
ValidationComplianceNotification: '验证符合性通知',
|
||||
RegulationTaskConfirmationNotification: '任务确认通知',
|
||||
evaluationMethod: '评估方式',
|
||||
uploadRelevantMaterials: '相关资料上传',
|
||||
RelevantMaterials: '相关资料',
|
||||
processBackground: '流程背景',
|
||||
selectedStandard: '所选标准',
|
||||
standardDecompositionDocument: '带入标准分解单',
|
||||
pleaseSelectStandardFirst: '请先选择标准',
|
||||
evaluatorFeedback: '评估人反馈',
|
||||
nameTechnicalDocument: '技术文件名称',
|
||||
chapter: '章节',
|
||||
problemDescription: '问题说明',
|
||||
filingExternalOpinions: '对外意见归档',
|
||||
initiateProcessForCurrentStandard: '针对当前标准发起流程',
|
||||
engineerFeedbackResults: '工程师反馈结果',
|
||||
fileExport: '文件导出',
|
||||
feedbackTime: '反馈时间',
|
||||
regulatoryTechnologyAssessmentProcess: '法规技术评估流程',
|
||||
feedbackEvaluation: '反馈评估',
|
||||
clauseEvaluation: '条款评估',
|
||||
standardDocuments: '标准文件',
|
||||
pleaseCompleteTheEvaluationMethodorEvaluator: '请补全列表中评估方式或评估人',
|
||||
reviewComments: '审核意见',
|
||||
PleaseCompleteList: '请补全列表中符合性结果',
|
||||
sponsorFeedback: '发起人反馈',
|
||||
processNumber: '流程编号',
|
||||
processName: '流程名称',
|
||||
feedbackResults: '反馈结果',
|
||||
theDoesNotSupportPreview: '当前文件格式不支持预览',
|
||||
releaseSituation: '发布情况',
|
||||
comparisonResults: '对比结果',
|
||||
Published: '已发布',
|
||||
initiateComparison: '发起对比',
|
||||
translationLanguage: '翻译语言',
|
||||
translationResults: '翻译结果',
|
||||
conversionTime: '转换时间',
|
||||
category: '类别',
|
||||
RegulatoryProcessEvaluationResults: '法规流程评估结果',
|
||||
ViewConformanceResults: '查看符合性结果',
|
||||
CommentsCollectionResultsForReference: '意见收集结果参考',
|
||||
TechnicalEvaluationResultsForReference: '技术评估结果参考',
|
||||
ComplianceConfirmationRecord: '符合性确认记录',
|
||||
complianceConfirmation: '符合性确认',
|
||||
Deriveconformanceresults: '导出符合性结果',
|
||||
Regulatorycompliancekanban: '法规符合性看板',
|
||||
noComparisonDocumentSelected: '未选择对比文档',
|
||||
RemarkInfo: '备注信息',
|
||||
initiateDocumentComparison: '发起文档对比',
|
||||
comparativeComments: '对比评论',
|
||||
viewTheComparisonResults: '查看对比结果',
|
||||
addFullTextComment: '添加全文评论',
|
||||
turnOffAutomaticMatching: '关闭自动匹配',
|
||||
exportComparisonReport: '导出对比报告',
|
||||
comparisonDifferenceComment: '对比差异评论',
|
||||
fullTextComments: '全文评论',
|
||||
fileDeclaration: '文件说明',
|
||||
FileForDetails: '文件详情',
|
||||
Converting: '转换中',
|
||||
convertNetwork: '转换完成',
|
||||
convertFailed: '转换失败',
|
||||
standardData: '标准数据',
|
||||
Theorganization: '组织机构',
|
||||
Addingfolder: '新增文件夹',
|
||||
Addingsubfolders: '新增子文件夹',
|
||||
Editfolder: '编辑文件夹',
|
||||
Deletefolders: '删除文件夹',
|
||||
Foldername: '文件夹名称',
|
||||
Folderpermissions: '文件夹权限',
|
||||
Folderorder: '文件夹顺序',
|
||||
Downloadprivileges: '下载权限',
|
||||
Openpersonnel: '开放人员',
|
||||
originalText: '原文',
|
||||
translatedText: '译文',
|
||||
Administrativeprivileges: '管理权限',
|
||||
Checkthepermissions: '查看权限',
|
||||
onlyFilesUploaded: '只能上传.docx、.doc文件',
|
||||
uploadedbyyourself: '只能删除自己上传的文件数据',
|
||||
doNotHavePermissionDeleteData: '没有权限删除此数据',
|
||||
Parametercollection: '参数收集',
|
||||
Collectlist: '收集清单',
|
||||
Statisticalmodels: '统计模式',
|
||||
Inthecollection: '收集中',
|
||||
Notatthe: '未开始',
|
||||
Thepercentage: '百分比',
|
||||
problemKnowledgeBase:'问题知识库',
|
||||
recentHotSpots:'近期热点',
|
||||
disseminationMaterials:'传播物料',
|
||||
informationSafety:'信息安全',
|
||||
blueBook:'蓝皮书',
|
||||
invoiceCollection:'发票合集',
|
||||
productHighlights:'产品亮点',
|
||||
financialReimbursement:'财务报销',
|
||||
classificationMaintenance:'分类维护',
|
||||
managePublishing:'管理发布',
|
||||
displayPermission:'展示权限',
|
||||
authorizedUser:'权限用户',
|
||||
problemClassification:'问题分类',
|
||||
market:'市场',
|
||||
documentNumber:'文档编号',
|
||||
documentTitle:'文档标题',
|
||||
bringInDocumentInformation:'带入文档信息',
|
||||
thereWhichCannotDeleted:'该标题下存在子标题无法进行删除',
|
||||
sdt:'工程接口人',
|
||||
dre:'填写人',
|
||||
applicableInstructionsMarketList:'市场清单适用说明',
|
||||
pleaseSelectTheDataCompared:'请选择需要对比的数据',
|
||||
problemLabel:'问题标签',
|
||||
personCharge:'负责人',
|
||||
addLabel:'新增标签',
|
||||
editLabel:'编辑标签',
|
||||
applicableMarket:'适用市场',
|
||||
templateMaintenance:'模板维护',
|
||||
associatedWebsite:'关联网址',
|
||||
dropDownOptions:'下拉选项',
|
||||
dropDownOptionMaintenance:'下拉选项维护',
|
||||
displayInformation:'展示信息',
|
||||
addComparison:'添加对比',
|
||||
showOrNot:'是否展示',
|
||||
}
|
||||
@@ -0,0 +1,795 @@
|
||||
<template>
|
||||
<div style="height: 100%">
|
||||
<div class='box'>
|
||||
<!-- 纯文本-->
|
||||
<div v-if='detailDate.controlType === "1"' class='add_flex'>
|
||||
<div v-for='(item,index) in detailDate.list' :key='index' class='add-width'>
|
||||
<div v-if='item.type==="text"'>
|
||||
<!-- 文本校验 分情况-->
|
||||
<!-- 1 无-->
|
||||
<!-- 2 中文-->
|
||||
<!-- 3 正整数-->
|
||||
<!-- 4 政府点数-->
|
||||
<!-- 5 证书或小数-->
|
||||
<!-- 6 一位小数-->
|
||||
<!-- 7 两位小数-->
|
||||
<!-- 8 三位小数-->
|
||||
<!-- 9 四为小数-->
|
||||
<!-- 无 -->
|
||||
<div v-if="item.controlVerify == '1'">
|
||||
<a-input class="box-input inputWid"
|
||||
:maxLength="1000"
|
||||
:placeholder="$t('pleaseEnter')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 中文-->
|
||||
<div v-else-if="item.controlVerify == '2'">
|
||||
<a-input class="box-input inputWid"
|
||||
:placeholder="$t('pleaseEnter')+$t('chinese')"
|
||||
@input="onInput"
|
||||
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 正整数 -->
|
||||
<div v-else-if="item.controlVerify == '3'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:precision="0"
|
||||
:placeholder="$t('enterPositiveInteger')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 正浮点书 -->
|
||||
<div v-else-if="item.controlVerify == '4'">
|
||||
<a-input class="box-input inputWid"
|
||||
onkeyup="(this.v=function(){this.value=this.value.replace(/[^\d\.]/g,'');}).call(this)"
|
||||
:placeholder="$t('pleaseEnter')+$t('Positivefloatingpointnumber')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 整数或小数 -->
|
||||
<div v-else-if="item.controlVerify == '5'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:placeholder="$t('pleaseEnter')+$t('integerOrDecimal')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 一位小数 -->
|
||||
<div v-else-if="item.controlVerify == '6'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:precision="1"
|
||||
:placeholder="$t('pleaseEnter')+$t('OneDecimalPlace')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 两位小数-->
|
||||
<div v-else-if="item.controlVerify == '7'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:precision="2"
|
||||
:placeholder="$t('pleaseEnter')+$t('TwoDecimalplaces')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 三位小数-->
|
||||
<div v-else-if="item.controlVerify == '8'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:precision="3"
|
||||
:placeholder="$t('pleaseEnter')+$t('Threedecimalplaces')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 四位小数-->
|
||||
<div v-else-if="item.controlVerify == '9'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:precision="4"
|
||||
:placeholder="$t('pleaseEnter')+$t('FourDecimalplaces')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 默认值-->
|
||||
<div v-if='detailDate.controlType === "11"' class='add_flex'>
|
||||
<div v-for='(item,index) in detailDate.list' :key='index' class='add-width'>
|
||||
<div v-if='item.type==="text"'>
|
||||
<!-- 文本校验 分情况-->
|
||||
<!-- 1 无-->
|
||||
<!-- 2 中文-->
|
||||
<!-- 3 正整数-->
|
||||
<!-- 4 政府点数-->
|
||||
<!-- 5 证书或小数-->
|
||||
<!-- 6 一位小数-->
|
||||
<!-- 7 两位小数-->
|
||||
<!-- 8 三位小数-->
|
||||
<!-- 9 四为小数-->
|
||||
<!-- 无 -->
|
||||
<div>
|
||||
<a-input class="box-input inputWid"
|
||||
:maxLength="1000"
|
||||
:placeholder="$t('pleaseEnter')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 纯下拉单选-->
|
||||
<div v-else-if='detailDate.controlType === "2"' class='add_flex'>
|
||||
<div v-for='(item,index) in detailDate.list' :key='index' class='add-width'>
|
||||
<div v-if='item.type === "pull"'>
|
||||
<a-select v-model="item.dataValue"
|
||||
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||
class='selectWid'
|
||||
allowClear>
|
||||
<a-select-option v-for="(item, key) in item.controlValue" :key="key" :value="item.value">
|
||||
<span style="display: inline-block;width: 100%" :title=" item.label ">
|
||||
{{ item.label }}
|
||||
</span>
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 纯下拉多选-->
|
||||
<div v-else-if='detailDate.controlType === "3"' class='add_flex'>
|
||||
<div v-for='(item,index) in detailDate.list' :key='index' style='flex: 1' class='add-width'>
|
||||
<div v-if='item.type==="pull_more"'>
|
||||
<a-select v-model="item.dataValue"
|
||||
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||
mode="multiple" class='selectWid'
|
||||
allowClear>
|
||||
<a-select-option v-for="(item, key) in item.controlValue" :key="key" :value="item.value">
|
||||
<span style="display: inline-block;width: 100%" :title=" item.label ">
|
||||
{{ item.label }}
|
||||
</span>
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 纯附件-->
|
||||
<div v-else-if='detailDate.controlType === "4"' class='add_flex'>
|
||||
<div v-for='(item,index) in detailDate.list' :key='index' style='flex: 1' class='add-width'>
|
||||
<div v-if='item.type==="file"'>
|
||||
<a-button type="primary" class="button-text inputWid"
|
||||
@click="clickButtonToUpload(item)">
|
||||
{{ (item.dataValue === 'null' || item.dataValue === '' ||
|
||||
item.dataValue == null) ? $t('clickUpload') : $t('viewUploadedFiles')}}
|
||||
</a-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 文本+下拉单选-->
|
||||
<div v-else-if='detailDate.controlType === "5"' class='add_flex'>
|
||||
<div v-for='(item,index) in detailDate.list' :key='index' class='add-width'>
|
||||
<div v-if='item.type==="pull"'>
|
||||
<a-select v-model="item.dataValue"
|
||||
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||
class='selectWid'
|
||||
allowClear>
|
||||
<a-select-option v-for="(itemin, key) in item.controlValue" :key="key" :value="itemin.value">
|
||||
<span style="display: inline-block;width: 100%" :title=" itemin.label ">
|
||||
{{ itemin.label }}
|
||||
</span>
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
<div v-else-if='item.type==="text"'>
|
||||
<!-- 文本校验 分情况-->
|
||||
<!-- 1 无-->
|
||||
<!-- 2 中文-->
|
||||
<!-- 3 正整数-->
|
||||
<!-- 4 政府点数-->
|
||||
<!-- 5 证书或小数-->
|
||||
<!-- 6 一位小数-->
|
||||
<!-- 7 两位小数-->
|
||||
<!-- 8 三位小数-->
|
||||
<!-- 9 四为小数-->
|
||||
<!-- 无 -->
|
||||
<div v-if="item.controlVerify == '1'">
|
||||
<a-input class="box-input inputWid"
|
||||
:maxLength="1000"
|
||||
:placeholder="$t('pleaseEnter')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 中文-->
|
||||
<div v-else-if="item.controlVerify == '2'">
|
||||
<a-input class="box-input inputWid"
|
||||
:maxLength="1000"
|
||||
:placeholder="$t('pleaseEnter')+$t('chinese')"
|
||||
@input="onInput"
|
||||
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 正整数 -->
|
||||
<div v-else-if="item.controlVerify == '3'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:precision="0"
|
||||
:placeholder="$t('enterPositiveInteger')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 正浮点书 -->
|
||||
<div v-else-if="item.controlVerify == '4'">
|
||||
<a-input class="box-input inputWid"
|
||||
onkeyup="(this.v=function(){this.value=this.value.replace(/[^\d\.]/g,'');}).call(this)"
|
||||
:placeholder="$t('pleaseEnter')+$t('Positivefloatingpointnumber')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 整数或小数 -->
|
||||
<div v-else-if="item.controlVerify == '5'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:placeholder="$t('pleaseEnter')+$t('integerOrDecimal')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 一位小数 -->
|
||||
<div v-else-if="item.controlVerify == '6'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:precision="1"
|
||||
:placeholder="$t('pleaseEnter')+$t('OneDecimalPlace')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 两位小数-->
|
||||
<div v-else-if="item.controlVerify == '7'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:precision="2"
|
||||
:placeholder="$t('pleaseEnter')+$t('TwoDecimalplaces')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 三位小数-->
|
||||
<div v-else-if="item.controlVerify == '8'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:precision="3"
|
||||
:placeholder="$t('pleaseEnter')+$t('Threedecimalplaces')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 四位小数-->
|
||||
<div v-else-if="item.controlVerify == '9'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:precision="4"
|
||||
:placeholder="$t('pleaseEnter')+$t('FourDecimalplaces')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 文本+下拉多选-->
|
||||
<div v-else-if='detailDate.controlType === "6"' class='add_flex'>
|
||||
<div v-for='(item,index) in detailDate.list' :key='index' class='add-width'>
|
||||
<div v-if='item.type==="text"'>
|
||||
<!-- 文本校验 分情况-->
|
||||
<!-- 1 无-->
|
||||
<!-- 2 中文-->
|
||||
<!-- 3 正整数-->
|
||||
<!-- 4 政府点数-->
|
||||
<!-- 5 证书或小数-->
|
||||
<!-- 6 一位小数-->
|
||||
<!-- 7 两位小数-->
|
||||
<!-- 8 三位小数-->
|
||||
<!-- 9 四为小数-->
|
||||
<!-- 无 -->
|
||||
<div v-if="item.controlVerify == '1'">
|
||||
<a-input class="box-input inputWid"
|
||||
:maxLength="1000"
|
||||
:placeholder="$t('pleaseEnter')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 中文-->
|
||||
<div v-else-if="item.controlVerify == '2'">
|
||||
<a-input class="box-input inputWid"
|
||||
:maxLength="1000"
|
||||
@input="onInput"
|
||||
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"
|
||||
:placeholder="$t('pleaseEnter')+$t('chinese')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 正整数 -->
|
||||
<div v-else-if="item.controlVerify == '3'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:precision="0"
|
||||
:placeholder="$t('enterPositiveInteger')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 正浮点书 -->
|
||||
<div v-else-if="item.controlVerify == '4'">
|
||||
<a-input class="box-input inputWid"
|
||||
onkeyup="(this.v=function(){this.value=this.value.replace(/[^\d\.]/g,'');}).call(this)"
|
||||
:placeholder="$t('pleaseEnter')+$t('Positivefloatingpointnumber')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 整数或小数 -->
|
||||
<div v-else-if="item.controlVerify == '5'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:placeholder="$t('pleaseEnter')+$t('integerOrDecimal')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 一位小数 -->
|
||||
<div v-else-if="item.controlVerify == '6'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:precision="1"
|
||||
:placeholder="$t('pleaseEnter')+$t('OneDecimalPlace')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 两位小数-->
|
||||
<div v-else-if="item.controlVerify == '7'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:precision="2"
|
||||
:placeholder="$t('pleaseEnter')+$t('TwoDecimalplaces')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 三位小数-->
|
||||
<div v-else-if="item.controlVerify == '8'">
|
||||
<a-input-number class="box-input inputWid"
|
||||
:max="99999"
|
||||
:precision="3"
|
||||
:placeholder="$t('pleaseEnter')+$t('Threedecimalplaces')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 四位小数-->
|
||||
<div v-else-if="item.controlVerify == '9'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:precision="4"
|
||||
:placeholder="$t('pleaseEnter')+$t('FourDecimalplaces')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if='item.type==="pull_more"'>
|
||||
<a-select v-model="item.dataValue"
|
||||
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||
mode="multiple" class='selectWid'
|
||||
allowClear>
|
||||
<a-select-option v-for="(item, key) in item.controlValue" :key="key" :value="item.value">
|
||||
<span style="display: inline-block;width: 100%" :title=" item.label ">
|
||||
{{ item.label }}
|
||||
</span>
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 文本+附件-->
|
||||
<div v-else-if='detailDate.controlType === "7"' class='add_flex'>
|
||||
<div v-for='(item,index) in detailDate.list' :key='index' class='add-width'>
|
||||
<div v-if='item.type==="text"'>
|
||||
<!-- 文本校验 分情况-->
|
||||
<!-- 1 无-->
|
||||
<!-- 2 中文-->
|
||||
<!-- 3 正整数-->
|
||||
<!-- 4 政府点数-->
|
||||
<!-- 5 证书或小数-->
|
||||
<!-- 6 一位小数-->
|
||||
<!-- 7 两位小数-->
|
||||
<!-- 8 三位小数-->
|
||||
<!-- 9 四为小数-->
|
||||
<!-- 无 -->
|
||||
<div v-if="item.controlVerify == '1'">
|
||||
<a-input class="box-input inputWid"
|
||||
:maxLength="1000"
|
||||
:placeholder="$t('pleaseEnter')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 中文-->
|
||||
<div v-else-if="item.controlVerify == '2'">
|
||||
<a-input class="box-input inputWid"
|
||||
:maxLength="1000"
|
||||
@input="onInput"
|
||||
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"
|
||||
:placeholder="$t('pleaseEnter')+$t('chinese')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 正整数 -->
|
||||
<div v-else-if="item.controlVerify == '3'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:precision="0"
|
||||
:placeholder="$t('enterPositiveInteger')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 正浮点书 -->
|
||||
<div v-else-if="item.controlVerify == '4'">
|
||||
<a-input class="box-input inputWid"
|
||||
onkeyup="(this.v=function(){this.value=this.value.replace(/[^\d\.]/g,'');}).call(this)"
|
||||
:placeholder="$t('pleaseEnter')+$t('Positivefloatingpointnumber')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 整数或小数 -->
|
||||
<div v-else-if="item.controlVerify == '5'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:placeholder="$t('pleaseEnter')+$t('integerOrDecimal')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 一位小数 -->
|
||||
<div v-else-if="item.controlVerify == '6'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:precision="1"
|
||||
:placeholder="$t('pleaseEnter')+$t('OneDecimalPlace')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 两位小数-->
|
||||
<div v-else-if="item.controlVerify == '7'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:precision="2"
|
||||
:placeholder="$t('pleaseEnter')+$t('TwoDecimalplaces')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 三位小数-->
|
||||
<div v-else-if="item.controlVerify == '8'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:precision="3"
|
||||
:placeholder="$t('pleaseEnter')+$t('Threedecimalplaces')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 四位小数-->
|
||||
<div v-else-if="item.controlVerify == '9'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:precision="4"
|
||||
:placeholder="$t('pleaseEnter')+$t('FourDecimalplaces')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if='item.type==="file"'>
|
||||
<a-button type="primary" class="button-text inputWid"
|
||||
@click="clickButtonToUpload(item)">
|
||||
{{ (item.dataValue === 'null' || item.dataValue === '' ||
|
||||
item.dataValue == null) ? $t('clickUpload') : $t('viewUploadedFiles')}}
|
||||
</a-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 下拉单选+附件-->
|
||||
<div v-else-if='detailDate.controlType === "8"' class='add_flex'>
|
||||
<div v-for='(item,index) in detailDate.list' :key='index' class='add-width'>
|
||||
<div v-if='item.type==="pull"'>
|
||||
<a-select v-model="item.dataValue"
|
||||
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||
class='selectWid'
|
||||
allowClear>
|
||||
<a-select-option v-for="(itemin, key) in item.controlValue" :key="key" :value="itemin.value">
|
||||
<span style="display: inline-block;width: 100%" :title=" itemin.label ">
|
||||
{{ itemin.label }}
|
||||
</span>
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
<div v-else-if='item.type==="file"'>
|
||||
<a-button type="primary" class="button-text inputWid"
|
||||
@click="clickButtonToUpload(item)">
|
||||
{{ (item.dataValue === 'null' || item.dataValue === '' ||
|
||||
item.dataValue == null) ? $t('clickUpload') : $t('viewUploadedFiles')}}
|
||||
</a-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 下拉多选+附件-->
|
||||
<div v-else-if='detailDate.controlType === "9"' class='add_flex'>
|
||||
<div v-for='(item,index) in detailDate.list' :key='index' class='add-width'>
|
||||
<div v-if='item.type==="pull_more"'>
|
||||
<a-select v-model="item.dataValue"
|
||||
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||
mode="multiple" class='selectWid'
|
||||
allowClear>
|
||||
<a-select-option v-for="(item, key) in item.controlValue" :key="key" :value="item.value">
|
||||
<span style="display: inline-block;width: 100%" :title=" item.label ">
|
||||
{{ item.label }}
|
||||
</span>
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
<div v-else-if='item.type==="file"'>
|
||||
<a-button type="primary" class="button-text inputWid"
|
||||
@click="clickButtonToUpload(item)">
|
||||
{{ (item.dataValue === 'null' || item.dataValue === '' ||
|
||||
item.dataValue == null) ? $t('clickUpload') : $t('viewUploadedFiles')}}
|
||||
</a-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 文本+下拉单选+附件-->
|
||||
<div v-else-if='detailDate.controlType === "10"' class='add_flex'>
|
||||
<div v-for='(item,index) in detailDate.list' :key='index' class='add-width'>
|
||||
<div v-if='item.type==="pull"'>
|
||||
<a-select v-model="item.dataValue"
|
||||
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||
class='selectWid'
|
||||
allowClear>
|
||||
<a-select-option v-for="(itemin, key) in item.controlValue" :key="key" :value="itemin.value">
|
||||
<span style="display: inline-block;width: 100%" class="itemOption" :title=" itemin.label ">
|
||||
{{ itemin.label }}
|
||||
</span>
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
<div v-if='item.type==="text"'>
|
||||
<!-- 文本校验 分情况-->
|
||||
<!-- 1 无-->
|
||||
<!-- 2 中文-->
|
||||
<!-- 3 正整数-->
|
||||
<!-- 4 政府点数-->
|
||||
<!-- 5 证书或小数-->
|
||||
<!-- 6 一位小数-->
|
||||
<!-- 7 两位小数-->
|
||||
<!-- 8 三位小数-->
|
||||
<!-- 9 四为小数-->
|
||||
<!-- 无 -->
|
||||
<div v-if="item.controlVerify == '1'">
|
||||
<a-input class="box-input inputWid"
|
||||
:maxLength="1000"
|
||||
:placeholder="$t('pleaseEnter')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 中文-->
|
||||
<div v-else-if="item.controlVerify == '2'">
|
||||
<a-input class="box-input inputWid"
|
||||
:maxLength="1000"
|
||||
:placeholder="$t('pleaseEnter')+$t('chinese')"
|
||||
@input="onInput"
|
||||
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 正整数 -->
|
||||
<div v-else-if="item.controlVerify == '3'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:precision="0"
|
||||
:placeholder="$t('enterPositiveInteger')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 正浮点书 -->
|
||||
<div v-else-if="item.controlVerify == '4'">
|
||||
<a-input class="box-input inputWid"
|
||||
onkeyup="(this.v=function(){this.value=this.value.replace(/[^\d\.]/g,'');}).call(this)"
|
||||
:placeholder="$t('pleaseEnter')+$t('Positivefloatingpointnumber')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 整数或小数 -->
|
||||
<div v-else-if="item.controlVerify == '5'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:placeholder="$t('pleaseEnter')+$t('integerOrDecimal')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 一位小数 -->
|
||||
<div v-else-if="item.controlVerify == '6'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:precision="1"
|
||||
:placeholder="$t('pleaseEnter')+$t('OneDecimalPlace')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 两位小数-->
|
||||
<div v-else-if="item.controlVerify == '7'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:precision="2"
|
||||
:placeholder="$t('pleaseEnter')+$t('TwoDecimalplaces')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 三位小数-->
|
||||
<div v-else-if="item.controlVerify == '8'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:precision="3"
|
||||
:placeholder="$t('pleaseEnter')+$t('Threedecimalplaces')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
<!-- 四位小数-->
|
||||
<div v-else-if="item.controlVerify == '9'">
|
||||
<a-input-number class="box-input inputWid add--number"
|
||||
:max="99999"
|
||||
:precision="4"
|
||||
:placeholder="$t('pleaseEnter')+$t('FourDecimalplaces')"
|
||||
v-model="item.dataValue"/>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if='item.type==="file"'>
|
||||
<a-button type="primary" class="button-text inputWid"
|
||||
@click="clickButtonToUpload(item)">
|
||||
{{ (item.dataValue === 'null' || item.dataValue === '' ||
|
||||
item.dataValue == null) ? $t('clickUpload') : $t('viewUploadedFiles')}}
|
||||
</a-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<uploadFileChangeDown ref="uploadFile" @uploadSuccess="uploadSuccess"
|
||||
:detailDate='detailDate'></uploadFileChangeDown>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, deleteAction, downloadFile } from '@/api/manage'
|
||||
import uploadFileChangeDown from '@/components/uploadFileChangeDown/file'
|
||||
|
||||
export default {
|
||||
name: 'index',
|
||||
props: {
|
||||
detailDate: {
|
||||
type: Object,
|
||||
default: {},
|
||||
require: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isLock: '0',
|
||||
formInline: {},
|
||||
visible: false,
|
||||
detailDatetransformation: []
|
||||
}
|
||||
},
|
||||
components: {
|
||||
uploadFileChangeDown
|
||||
},
|
||||
mounted() {
|
||||
this.detailDate.list.forEach((item) => {
|
||||
if (item.type === 'pull_more') {
|
||||
console.log(item.dataValue)
|
||||
}
|
||||
// this.detailDatetransformation.push(item)
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
onInput(r) {
|
||||
let value = r.target.value
|
||||
r.target.value = value.replace(/[^\u4e00-\u9fa5]/g, '')
|
||||
this.detailDate.list.forEach((item) => {
|
||||
if (item.controlVerify == '2') {
|
||||
item.dataValue = r.target.value
|
||||
}
|
||||
})
|
||||
},
|
||||
uploadSuccess(data) {
|
||||
let attIdList = []
|
||||
if (data && data.length > 0) {
|
||||
data.map(item => {
|
||||
attIdList.push(item.id || data.name)
|
||||
})
|
||||
/** 赋值给当前对应的表单文件 */
|
||||
// this.formInline[this.uploadName] = attIdList.join(',')
|
||||
// this.formInline = { ...this.formInline }
|
||||
// console.log('form',this.formInline)
|
||||
} else {
|
||||
// this.formInline[this.uploadName]=''
|
||||
// this.formInline = { ...this.formInline }
|
||||
// console.log('form',this.formInline)
|
||||
|
||||
}
|
||||
this.detailDate.list.forEach((item, index) => {
|
||||
if (item.type === 'file') {
|
||||
item.dataValue = attIdList.join(',')
|
||||
}
|
||||
})
|
||||
},
|
||||
clickButtonToUpload(item) {
|
||||
// if (item.isLock == '1') {
|
||||
// this.$refs.uploadFile.disabled = true
|
||||
// } else {
|
||||
// this.$refs.uploadFile.disabled = false
|
||||
// }
|
||||
this.$refs.uploadFile.visible = true
|
||||
getAction('sys/common/getFileInfos', { id: item.dataValue }).then((res) => {
|
||||
if (res.success) {
|
||||
this.$refs.uploadFile.perentHandleFunc(res.result)
|
||||
} else {
|
||||
this.$refs.uploadFile.perentHandleFunc()
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
detailDate(newold, oldold) {
|
||||
console.log(newold, oldold, 'll')
|
||||
},
|
||||
formInline: {
|
||||
handler(newOld, oldval) {
|
||||
console.log(newOld, oldval, 'll')
|
||||
},
|
||||
deep: true
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.table .ant-table-column-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/*.ant-table td {*/
|
||||
/* white-space: nowrap;*/
|
||||
/*}*/
|
||||
.selectWid .ant-select-selection--multiple {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.selectWid .ant-select-selection--multiple::-webkit-scrollbar {
|
||||
display: none; /* Chrome Safari */
|
||||
}
|
||||
|
||||
.selectWid .ant-select-selection {
|
||||
height: 38px !important;
|
||||
line-height: 38px !important;
|
||||
}
|
||||
|
||||
.selectWid .ant-select-selection__rendered {
|
||||
line-height: 36px !important;
|
||||
}
|
||||
</style>
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
width: 100%;
|
||||
height: calc(100% - 100px);
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.text {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.page {
|
||||
text-align: right;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.add_flex {
|
||||
/*display: flex;*/
|
||||
}
|
||||
|
||||
/deep/ .box {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.add_flex_item {
|
||||
width: 30%;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.selectWid {
|
||||
min-width: 150px;
|
||||
}
|
||||
|
||||
.inputWid {
|
||||
min-width: 150px;
|
||||
height: 38px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.add-width {
|
||||
width: calc(33.3% - 5px);
|
||||
margin-right: 5px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.add--number {
|
||||
width: 101%;
|
||||
}
|
||||
|
||||
.ant-input-disabled {
|
||||
color: rgba(0, 0, 0, 0.65);
|
||||
}
|
||||
|
||||
.ant-select-disabled {
|
||||
color: rgba(0, 0, 0, 0.65);
|
||||
}
|
||||
|
||||
.itemOption {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
-o-text-overflow: ellipsis;
|
||||
}
|
||||
</style>
|
||||
@@ -1,54 +0,0 @@
|
||||
<template>
|
||||
<div :class="[prefixCls]">
|
||||
<slot name="subtitle">
|
||||
<div :class="[`${prefixCls}-subtitle`]">{{ typeof subTitle === 'string' ? subTitle : subTitle() }}</div>
|
||||
</slot>
|
||||
<div class="number-info-value">
|
||||
<span>{{ total }}</span>
|
||||
<span class="sub-total">
|
||||
{{ subTotal }}
|
||||
<icon :type="`caret-${status}`" />
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Icon from 'ant-design-vue/es/icon'
|
||||
|
||||
export default {
|
||||
name: 'NumberInfo',
|
||||
props: {
|
||||
prefixCls: {
|
||||
type: String,
|
||||
default: 'ant-pro-number-info'
|
||||
},
|
||||
total: {
|
||||
type: Number,
|
||||
required: true
|
||||
},
|
||||
subTotal: {
|
||||
type: Number,
|
||||
required: true
|
||||
},
|
||||
subTitle: {
|
||||
type: [String, Function],
|
||||
default: ''
|
||||
},
|
||||
status: {
|
||||
type: String,
|
||||
default: 'up'
|
||||
}
|
||||
},
|
||||
components: {
|
||||
Icon
|
||||
},
|
||||
data () {
|
||||
return {}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import "index";
|
||||
</style>
|
||||
@@ -1,3 +0,0 @@
|
||||
import NumberInfo from './NumberInfo'
|
||||
|
||||
export default NumberInfo
|
||||
@@ -1,55 +0,0 @@
|
||||
@import "../index";
|
||||
|
||||
@numberInfo-prefix-cls: ~"@{ant-pro-prefix}-number-info";
|
||||
|
||||
.@{numberInfo-prefix-cls} {
|
||||
|
||||
.ant-pro-number-info-subtitle {
|
||||
color: @text-color-secondary;
|
||||
font-size: @font-size-base;
|
||||
height: 22px;
|
||||
line-height: 22px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
word-break: break-all;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.number-info-value {
|
||||
margin-top: 4px;
|
||||
font-size: 0;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
word-break: break-all;
|
||||
white-space: nowrap;
|
||||
|
||||
& > span {
|
||||
color: @heading-color;
|
||||
display: inline-block;
|
||||
line-height: 32px;
|
||||
height: 32px;
|
||||
font-size: 24px;
|
||||
margin-right: 32px;
|
||||
}
|
||||
|
||||
.sub-total {
|
||||
color: @text-color-secondary;
|
||||
font-size: @font-size-lg;
|
||||
vertical-align: top;
|
||||
margin-right: 0;
|
||||
i {
|
||||
font-size: 12px;
|
||||
transform: scale(0.82);
|
||||
margin-left: 4px;
|
||||
}
|
||||
:global {
|
||||
.anticon-caret-up {
|
||||
color: @red-6;
|
||||
}
|
||||
.anticon-caret-down {
|
||||
color: @green-6;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,36 +1,36 @@
|
||||
<template>
|
||||
<div class='diolag-area'>
|
||||
<a-spin :spinning='spinLoading'>
|
||||
<a-form-model
|
||||
class='tag-module'
|
||||
ref='ruleForm'
|
||||
:model='formData'
|
||||
:rules='rules'
|
||||
:label-col='labelCol'
|
||||
:wrapper-col='wrapperCol'
|
||||
>
|
||||
<a-row :gutter='24'>
|
||||
<a-col :span='9'>
|
||||
<a-form-model-item :label="$t('entryName')" prop='projectName'>
|
||||
<a-input
|
||||
:placeholder="$t('PleaseEnter')+$t('entryName')"
|
||||
v-model='formData.projectName' />
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col :span='9'>
|
||||
<a-form-model-item :label="$t('ListTitle')" prop='ListTitle'>
|
||||
<a-input
|
||||
:placeholder="$t('PleaseEnter')+$t('ListTitle')"
|
||||
v-model='formData.title' />
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col :span='6' style='margin-top: 4px;'>
|
||||
<a-button class='box-button' type='primary' @click='searchQuery'>{{ $t('query') }}</a-button>
|
||||
<a-button class='box-button' style='margin-left: 8px' @click='searchReset'>{{ $t('reset') }}</a-button>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form-model>
|
||||
</a-spin>
|
||||
<!-- <a-spin :spinning='spinLoading'>-->
|
||||
<!-- <a-form-model-->
|
||||
<!-- class='tag-module'-->
|
||||
<!-- ref='ruleForm'-->
|
||||
<!-- :model='formData'-->
|
||||
<!-- :rules='rules'-->
|
||||
<!-- :label-col='labelCol'-->
|
||||
<!-- :wrapper-col='wrapperCol'-->
|
||||
<!-- >-->
|
||||
<!-- <a-row :gutter='24'>-->
|
||||
<!-- <a-col :span='9'>-->
|
||||
<!-- <a-form-model-item :label="$t('entryName')" prop='projectName'>-->
|
||||
<!-- <a-input-->
|
||||
<!-- :placeholder="$t('PleaseEnter')+$t('entryName')"-->
|
||||
<!-- v-model='formData.projectName' />-->
|
||||
<!-- </a-form-model-item>-->
|
||||
<!-- </a-col>-->
|
||||
<!-- <a-col :span='9'>-->
|
||||
<!-- <a-form-model-item :label="$t('ListTitle')" prop='ListTitle'>-->
|
||||
<!-- <a-input-->
|
||||
<!-- :placeholder="$t('PleaseEnter')+$t('ListTitle')"-->
|
||||
<!-- v-model='formData.title' />-->
|
||||
<!-- </a-form-model-item>-->
|
||||
<!-- </a-col>-->
|
||||
<!-- <a-col :span='6' style='margin-top: 4px;'>-->
|
||||
<!-- <a-button class='box-button' type='primary' @click='searchQuery'>{{ $t('query') }}</a-button>-->
|
||||
<!-- <a-button class='box-button' style='margin-left: 8px' @click='searchReset'>{{ $t('reset') }}</a-button>-->
|
||||
<!-- </a-col>-->
|
||||
<!-- </a-row>-->
|
||||
<!-- </a-form-model>-->
|
||||
<!-- </a-spin>-->
|
||||
<a-table
|
||||
class='table-area'
|
||||
ref='table'
|
||||
@@ -85,19 +85,19 @@ export default {
|
||||
loading: false,
|
||||
editId: '',
|
||||
columns: [
|
||||
{
|
||||
title: this.$t('entryName'),
|
||||
dataIndex: 'projectName',
|
||||
key: 'showArea',
|
||||
align: 'center',
|
||||
ellipsis: true
|
||||
},
|
||||
{
|
||||
title: this.$t('ListTitle'),
|
||||
align: 'center',
|
||||
dataIndex: 'title',
|
||||
ellipsis: true
|
||||
},
|
||||
// {
|
||||
// title: this.$t('entryName'),
|
||||
// dataIndex: 'projectName',
|
||||
// key: 'showArea',
|
||||
// align: 'center',
|
||||
// ellipsis: true
|
||||
// },
|
||||
// {
|
||||
// title: this.$t('ListTitle'),
|
||||
// align: 'center',
|
||||
// dataIndex: 'title',
|
||||
// ellipsis: true
|
||||
// },
|
||||
{
|
||||
title: this.$t('Exporttype'),
|
||||
align: 'center',
|
||||
|
||||
@@ -92,6 +92,11 @@
|
||||
this.$route.path == '/virtualListDetails' ||
|
||||
this.$route.path == '/taskListProcess' ||
|
||||
this.$route.path == '/ProjectDetails' ||
|
||||
this.$route.path == '/countryCardRelease' ||
|
||||
this.$route.path == '/countryCardView' ||
|
||||
this.$route.path == '/problemKnowledgeBaseAdd' ||
|
||||
this.$route.path == '/problemKnowledgeBaseRelease' ||
|
||||
this.$route.path == '/problemKnowledgeBaseView' ||
|
||||
this.$route.path == '/regulatoryInitiatingProcess' ||
|
||||
this.$route.path == '/regulatoryProcessReview' ||
|
||||
this.$route.path == '/handshakeProcess' ||
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
<script>
|
||||
import eventBUs from '../../common/event'
|
||||
import { getAction, postAction } from '@/api/manage'
|
||||
import CollectionType from '@/components/CollectionType'
|
||||
import CollectionType from '@/components/CollectionTypeDisabled'
|
||||
import { ACCESS_TOKEN } from '@/store/mutation-types'
|
||||
import axios from 'axios'
|
||||
import Vue from 'vue'
|
||||
|
||||
@@ -357,6 +357,31 @@ export const constantRouterMap = [
|
||||
name: 'evaluationResultsClause',
|
||||
component: () => import(/* webpackChunkName: "user" */ '@/views/businessSupport/technologyAssessment/components/evaluationResultsClause')
|
||||
},
|
||||
{
|
||||
path: '/problemKnowledgeBaseAdd',
|
||||
name: 'problemKnowledgeBaseAdd',
|
||||
component: () => import(/* webpackChunkName: "user" */ '@/views/businessSupport/problemKnowledgeBase/components/problemKnowledgeBaseAdd')
|
||||
},
|
||||
{
|
||||
path: '/problemKnowledgeBaseRelease',
|
||||
name: 'problemKnowledgeBaseRelease',
|
||||
component: () => import(/* webpackChunkName: "user" */ '@/views/businessSupport/problemKnowledgeBase/components/problemKnowledgeBaseRelease')
|
||||
},
|
||||
{
|
||||
path: '/countryCardView',
|
||||
name: 'countryCardView',
|
||||
component: () => import(/* webpackChunkName: "user" */ '@/views/businessSupport/problemKnowledgeBase/components/countryCardView')
|
||||
},
|
||||
{
|
||||
path: '/countryCardRelease',
|
||||
name: 'countryCardRelease',
|
||||
component: () => import(/* webpackChunkName: "user" */ '@/views/businessSupport/problemKnowledgeBase/components/countryCardRelease')
|
||||
},
|
||||
{
|
||||
path: '/problemKnowledgeBaseView',
|
||||
name: 'problemKnowledgeBaseView',
|
||||
component: () => import(/* webpackChunkName: "user" */ '@/views/businessSupport/problemKnowledgeBase/components/problemKnowledgeBaseView')
|
||||
},
|
||||
// {
|
||||
// path: '/ParameterItemCollection',
|
||||
// name: 'ParameterItemCollection',
|
||||
|
||||
@@ -95,17 +95,6 @@
|
||||
fourth incident in September, according to the safety recall report. After meeting with US regulators in October, the firm decided to issue a voluntary recall.
|
||||
</ellipsis>
|
||||
</a-card>
|
||||
|
||||
<h2># NumberInfo 组件 </h2>
|
||||
|
||||
<a-divider> NumberInfo </a-divider>
|
||||
<a-card>
|
||||
<number-info
|
||||
:sub-title="() => { return 'Visits this week' }"
|
||||
:total="12321"
|
||||
status="up"
|
||||
:sub-total="17.1"></number-info>
|
||||
</a-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -116,14 +105,12 @@
|
||||
import AvatarList from '@/components/AvatarList'
|
||||
import CountDown from '@/components/CountDown/CountDown'
|
||||
import Ellipsis from '@/components/Ellipsis'
|
||||
import NumberInfo from '@/components/NumberInfo'
|
||||
|
||||
const AvatarListItem = AvatarList.AvatarItem
|
||||
|
||||
export default {
|
||||
name: 'Home',
|
||||
components: {
|
||||
NumberInfo,
|
||||
Ellipsis,
|
||||
CountDown,
|
||||
Trend,
|
||||
|
||||
+172
@@ -0,0 +1,172 @@
|
||||
<template>
|
||||
<a-modal
|
||||
:title="title"
|
||||
:width="700"
|
||||
:visible="visible"
|
||||
:confirm-loading="confirmLoading"
|
||||
:maskClosable="false"
|
||||
@ok="handleOk"
|
||||
@cancel="handleCancel"
|
||||
>
|
||||
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="24">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="Required">*</span>
|
||||
<span class="title-text-text"
|
||||
:title="$t('problemLabel')">{{$t('problemLabel')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="problemLabel">
|
||||
<a-input class="box-input"
|
||||
v-model="formInline.problemLabel"
|
||||
:placeholder="$t('PleaseEnter')+$t('problemLabel')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="24">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="Required">*</span>
|
||||
<span class="title-text-text" :title="$t('personCharge')">{{$t('personCharge')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="personChargeName">
|
||||
<PersonnelSelection
|
||||
:query="{db_field_name:'personCharge',db_field_txt:$t('personCharge')}"
|
||||
:personneQuery="formInline"
|
||||
@change="PersonnelSelectionChange"
|
||||
v-model="formInline.personChargeName"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form-model>
|
||||
</a-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import PersonnelSelection from '@/components/PersonnelSelection/index'
|
||||
import { getAction, postAction, downloadFile } from '@/api/manage'
|
||||
export default {
|
||||
name: 'classificationMaintenanceAdd',
|
||||
components: {
|
||||
PersonnelSelection
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
visible: false,
|
||||
confirmLoading: false,
|
||||
formInline: {},
|
||||
rules: {
|
||||
personChargeName: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('personCharge') + this.$t('cannotEmpty'),
|
||||
trigger: 'change'
|
||||
},
|
||||
{
|
||||
max: 100,
|
||||
message: this.$t('personCharge') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
|
||||
trigger: 'change'
|
||||
}
|
||||
],
|
||||
problemLabel: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('problemLabel') + this.$t('cannotEmpty'),
|
||||
trigger: 'blur'
|
||||
},
|
||||
{
|
||||
max: 100,
|
||||
message: this.$t('problemLabel') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
]
|
||||
},
|
||||
title: ''
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
add() {
|
||||
this.visible = true
|
||||
this.title = this.$t('addLabel')
|
||||
this.$nextTick(() => {
|
||||
this.formInline = {}
|
||||
this.$refs.ruleForm.clearValidate()
|
||||
})
|
||||
},
|
||||
edit(data) {
|
||||
this.visible = true
|
||||
this.title = this.$t('editLabel')
|
||||
this.$nextTick(() => {
|
||||
this.formInline = data
|
||||
this.$refs.ruleForm.clearValidate()
|
||||
})
|
||||
},
|
||||
PersonnelSelectionChange(value, id) {
|
||||
this.formInline[value] = id
|
||||
this.formInline = { ...this.formInline }
|
||||
},
|
||||
handleOk() {
|
||||
this.$refs.ruleForm.validate(valid => {
|
||||
if (valid) {
|
||||
|
||||
}
|
||||
})
|
||||
},
|
||||
handleCancel() {
|
||||
this.visible = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.box-title-text {
|
||||
line-height: 1.4;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.title-text {
|
||||
width: 84px;
|
||||
text-align: right;
|
||||
display: inline-block;
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
margin-right: 16px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
height: 42px;
|
||||
line-height: 42px;
|
||||
}
|
||||
|
||||
.box-input {
|
||||
display: inline-block;
|
||||
height: 38px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.itemModel {
|
||||
width: calc(100% - 130px);
|
||||
display: inline-block;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
.title-text-text {
|
||||
margin-top: 9px;
|
||||
}
|
||||
|
||||
.formAdd {
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.Required {
|
||||
color: red;
|
||||
margin-right: 4px;
|
||||
}
|
||||
</style>
|
||||
+206
@@ -0,0 +1,206 @@
|
||||
<template>
|
||||
<div>
|
||||
<a-drawer
|
||||
:title="$t('classificationMaintenance')"
|
||||
:maskClosable="false"
|
||||
:width="1000"
|
||||
placement="right"
|
||||
:closable="true"
|
||||
@close="handleCancel"
|
||||
:visible="visible"
|
||||
style="height: 100%;overflow: auto;padding-bottom: 53px;">
|
||||
<div style="margin-bottom: 60px">
|
||||
<div class="box-title">
|
||||
<div @click="addLabelClick" class="operator-text">
|
||||
<a-icon type="plus"/>
|
||||
{{$t('addLabel')}}
|
||||
</div>
|
||||
</div>
|
||||
<a-table
|
||||
:columns="columns"
|
||||
:scroll="{x: '100%',y:'calc(100vh - 300px)'}"
|
||||
:data-source="dataList"
|
||||
:pagination="false"
|
||||
:loading="loading">
|
||||
<span slot="operation" slot-scope="text,record">
|
||||
<a style="margin-right: 8px" @click="edit(record)">{{$t('edit')}}</a>
|
||||
<a @click="deleteData">{{$t('delete')}}</a>
|
||||
</span>
|
||||
</a-table>
|
||||
<div class="page" v-if="dataList.length > 0">
|
||||
<a-pagination
|
||||
:show-total="total => $t('total')+`${total}`+$t('strip')"
|
||||
show-quick-jumper
|
||||
show-size-changer
|
||||
:page-size.sync="pageSize"
|
||||
:total="total"
|
||||
:current="pageNo"
|
||||
@change="onChange"
|
||||
@showSizeChange="SizeChange"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button @click="handleCancel" type="danger">{{$t('cancel')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
<classificationMaintenanceAdd ref="classificationMaintenanceAddRef"
|
||||
@classificationMaintenanceAddForm="classificationMaintenanceAddForm"/>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, deleteAction } from '@/api/manage'
|
||||
import classificationMaintenanceAdd from './classificationMaintenanceAdd'
|
||||
|
||||
export default {
|
||||
name: 'classificationMaintenanceModel',
|
||||
components: {
|
||||
classificationMaintenanceAdd
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
url: {
|
||||
list: '',
|
||||
deleteOne: ''
|
||||
},
|
||||
visible: false,
|
||||
selectedRowKeys: [],
|
||||
dataList: [{}],
|
||||
loading: false,
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
total: 0,
|
||||
columns: [
|
||||
{
|
||||
title: this.$t('number'),
|
||||
align: 'center',
|
||||
width: 70,
|
||||
customRender: function(t, r, index) {
|
||||
return parseInt(index) + 1
|
||||
}
|
||||
},
|
||||
{
|
||||
title: this.$t('problemLabel'),
|
||||
dataIndex: 'title',
|
||||
align: 'center',
|
||||
ellipsis: true
|
||||
},
|
||||
{
|
||||
title: this.$t('personCharge'),
|
||||
dataIndex: 'region',
|
||||
align: 'center',
|
||||
ellipsis: true
|
||||
},
|
||||
{
|
||||
title: this.$t('operation'),
|
||||
align: 'center',
|
||||
fixed: 'right',
|
||||
width: 180,
|
||||
scopedSlots: { customRender: 'operation' }
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
getData() {
|
||||
this.visible = true
|
||||
},
|
||||
handleCancel() {
|
||||
this.visible = false
|
||||
},
|
||||
onChange(page, pageSize) {
|
||||
this.pageNo = page
|
||||
this.replacePage()
|
||||
},
|
||||
addLabelClick() {
|
||||
this.$refs.classificationMaintenanceAddRef.add()
|
||||
},
|
||||
edit(val) {
|
||||
this.$refs.classificationMaintenanceAddRef.edit(JSON.parse(JSON.stringify(val)))
|
||||
},
|
||||
deleteData(val) {
|
||||
let _this = this
|
||||
this.$confirm({
|
||||
content: _this.$t('ConfirmDelete'),
|
||||
onOk() {
|
||||
deleteAction(_this.url.deleteOne, { id: val.id }).then((res) => {
|
||||
if (res.success) {
|
||||
_this.$message.success(_this.$t('OperationSuccessful'))
|
||||
_this.getList()
|
||||
} else {
|
||||
_this.$message.warning(_this.$t('operationFailed'))
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
classificationMaintenanceAddForm() {
|
||||
this.pageNo = 1
|
||||
this.replacePage()
|
||||
},
|
||||
SizeChange(page, pageSize) {
|
||||
this.pageNo = 1
|
||||
this.pageSize = pageSize
|
||||
this.replacePage()
|
||||
},
|
||||
replacePage() {
|
||||
let query = {
|
||||
pageNo: this.pageNo,
|
||||
pageSize: this.pageSize
|
||||
}
|
||||
this.loading = true
|
||||
postAction(this.url.list, query).then((res) => {
|
||||
if (res.success) {
|
||||
this.dataList = res.result.records || []
|
||||
this.total = res.result.total
|
||||
this.loading = false
|
||||
} else {
|
||||
this.dataList = []
|
||||
this.total = 0
|
||||
this.loading = false
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.page {
|
||||
text-align: right;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.drawer-bootom-button {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
z-index: 100;
|
||||
border-top: 1px solid #e8e8e8;
|
||||
padding: 10px 16px;
|
||||
text-align: right;
|
||||
left: 0;
|
||||
background: #fff;
|
||||
border-radius: 0 0 2px 2px;
|
||||
}
|
||||
|
||||
.box-title {
|
||||
width: 100%;
|
||||
text-align: right;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.operator-text {
|
||||
cursor: pointer;
|
||||
margin-right: 13px;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
display: inline-block;
|
||||
}
|
||||
</style>
|
||||
+243
@@ -0,0 +1,243 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="table-page-search-wrapper">
|
||||
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||
<a-row :gutter="24">
|
||||
<a-col :md="6" :sm="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" :title="$t('applicableMarket')">
|
||||
<span>{{$t('applicableMarket')}}</span>
|
||||
</div>
|
||||
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('applicableMarket')"
|
||||
v-model="queryParam.applicableMarket"></a-input>
|
||||
</div>
|
||||
</a-col>
|
||||
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
|
||||
<a-col :md="6" :sm="24">
|
||||
<a-button class="box-button" type="primary" @click="searchQuery">{{$t('query')}}</a-button>
|
||||
<a-button class="box-button" style="margin-left: 8px" @click="searchReset">{{$t('reset')}}</a-button>
|
||||
</a-col>
|
||||
</span>
|
||||
</a-row>
|
||||
</a-form>
|
||||
</div>
|
||||
<div class="box-content-right">
|
||||
<div @click="managePublishingClick" class="operator-text">
|
||||
<a-icon type="carry-out"/>
|
||||
{{$t('managePublishing')}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-box">
|
||||
<div class="content-box-box" @click="contentClick()">
|
||||
<img src="../../../../assets/mobileHome.png" class="content-box-box-img" alt="">
|
||||
<span class="content-box-box-text">
|
||||
中国
|
||||
</span>
|
||||
</div>
|
||||
<div class="content-box-box">
|
||||
<img src="../../../../assets/mobileHome.png" class="content-box-box-img" alt="">
|
||||
<span class="content-box-box-text">
|
||||
中国
|
||||
</span>
|
||||
</div>
|
||||
<div class="content-box-box">
|
||||
<img src="../../../../assets/mobileHome.png" class="content-box-box-img" alt="">
|
||||
<span class="content-box-box-text">
|
||||
中国
|
||||
</span>
|
||||
</div>
|
||||
<div class="content-box-box">
|
||||
<img src="../../../../assets/mobileHome.png" class="content-box-box-img" alt="">
|
||||
<span class="content-box-box-text">
|
||||
中国
|
||||
</span>
|
||||
</div>
|
||||
<div class="content-box-box">
|
||||
<img src="../../../../assets/mobileHome.png" class="content-box-box-img" alt="">
|
||||
<span class="content-box-box-text">
|
||||
中国
|
||||
</span>
|
||||
</div>
|
||||
<div class="content-box-box">
|
||||
<img src="../../../../assets/mobileHome.png" class="content-box-box-img" alt="">
|
||||
<span class="content-box-box-text">
|
||||
中国
|
||||
</span>
|
||||
</div>
|
||||
<div class="page">
|
||||
<a-pagination
|
||||
:show-total="total => $t('total')+` ${total} `+$t('strip')"
|
||||
show-quick-jumper
|
||||
show-size-changer
|
||||
:page-size.sync="pageSize"
|
||||
:total="total"
|
||||
:current="pageNo"
|
||||
@change="pageOnChange"
|
||||
@showSizeChange="SizeChange"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, downloadFile } from '@/api/manage'
|
||||
|
||||
export default {
|
||||
name: 'countryCardList',
|
||||
data() {
|
||||
return {
|
||||
queryParam: {},
|
||||
conList: [],
|
||||
pageSize: 10,
|
||||
total: 0,
|
||||
pageNo: 1
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
searchQuery() {
|
||||
|
||||
},
|
||||
searchReset() {
|
||||
|
||||
},
|
||||
pageOnChange(page, pageSize) {
|
||||
this.pageNo = page
|
||||
this.getList()
|
||||
},
|
||||
SizeChange(page, pageSize) {
|
||||
this.pageNo = 1
|
||||
this.pageSize = pageSize
|
||||
this.getList()
|
||||
},
|
||||
getList() {
|
||||
let query = {
|
||||
pageNo: this.pageNo,
|
||||
pageSize: this.pageSize
|
||||
}
|
||||
postAction(this.url.getInfoList, query).then((res) => {
|
||||
if (res.success) {
|
||||
this.conList = res.result.records
|
||||
this.total = res.result.total
|
||||
} else {
|
||||
this.conList = []
|
||||
}
|
||||
})
|
||||
},
|
||||
managePublishingClick() {
|
||||
let newUrl = this.$router.resolve({
|
||||
path: '/countryCardRelease',
|
||||
query: {}
|
||||
})
|
||||
window.open(newUrl.href, '_blank')
|
||||
},
|
||||
contentClick() {
|
||||
let newUrl = this.$router.resolve({
|
||||
path: '/countryCardView',
|
||||
query: {}
|
||||
})
|
||||
window.open(newUrl.href, '_blank')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
@import '~@assets/less/common.less';
|
||||
|
||||
.page {
|
||||
text-align: right;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.box-title-text {
|
||||
line-height: 1.4;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.title-text {
|
||||
width: 20%;
|
||||
min-width: 110px;
|
||||
color: #000F16;
|
||||
display: inline-block;
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
margin-right: 16px;
|
||||
margin-top: 3px;
|
||||
text-align: right;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.box-input {
|
||||
display: inline-block;
|
||||
width: 70%;
|
||||
height: 38px;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
.box-button {
|
||||
height: 38px;
|
||||
/*margin-top: 2px;*/
|
||||
}
|
||||
|
||||
.content-box {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.content-box-box {
|
||||
width: calc(33.3% - 20px);
|
||||
height: 160px;
|
||||
border: 1px #d9d9d9 solid;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
float: left;
|
||||
margin-right: 30px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.content-box-box:nth-child(3n+3) {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.content-box-box-img {
|
||||
width: 70%;
|
||||
height: 100%;
|
||||
border-right: 1px #d9d9d9 solid;
|
||||
}
|
||||
|
||||
.content-box-box-text {
|
||||
display: inline-block;
|
||||
width: 30%;
|
||||
text-align: center;
|
||||
font-size: 18px;
|
||||
font-weight: 500;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
.box-content-right {
|
||||
width: 100%;
|
||||
text-align: right;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.operator-text {
|
||||
cursor: pointer;
|
||||
margin-right: 53px;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.operator-text:last-child {
|
||||
margin-right: 13px;
|
||||
}
|
||||
|
||||
</style>
|
||||
+380
@@ -0,0 +1,380 @@
|
||||
<template>
|
||||
<div class="doc-detail">
|
||||
<div class="doc-detail-wrap">
|
||||
<div class="doc-detail-header" style="position: fixed;top: 0">
|
||||
<div class="doc-detail-title">
|
||||
<span style="line-height: 66px;display: inline-block;float: left">
|
||||
<a-icon type="arrow-left" style="margin-right: 6px;"/>
|
||||
</span>
|
||||
{{$t('managePublishing')}}
|
||||
</div>
|
||||
</div>
|
||||
<div style="padding-top: 68px;background: #fff">
|
||||
<div class="detail-content" style="padding: 24px">
|
||||
<div class="table-page-search-wrapper">
|
||||
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||
<a-row :gutter="24">
|
||||
<a-col :md="6" :sm="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" :title="$t('applicableMarket')">
|
||||
<span>{{$t('applicableMarket')}}</span>
|
||||
</div>
|
||||
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('applicableMarket')"
|
||||
v-model="queryParam.applicableMarket"></a-input>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :md="6" :sm="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" :title="$t('releaseStatus')">
|
||||
<span>{{$t('releaseStatus')}}</span>
|
||||
</div>
|
||||
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('releaseStatus')"
|
||||
v-model="queryParam.releaseStatus"></a-input>
|
||||
</div>
|
||||
</a-col>
|
||||
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
|
||||
<a-col :md="6" :sm="24">
|
||||
<a-button class="box-button" type="primary" @click="searchQuery">{{$t('query')}}</a-button>
|
||||
<a-button class="box-button" style="margin-left: 8px" @click="searchReset">{{$t('reset')}}</a-button>
|
||||
</a-col>
|
||||
</span>
|
||||
</a-row>
|
||||
</a-form>
|
||||
</div>
|
||||
<div class="box-content-right">
|
||||
<div @click="BatchDeleteClick" class="operator-text">
|
||||
<a-icon type="delete"/>
|
||||
{{$t('BatchDelete')}}
|
||||
</div>
|
||||
<div @click="templateMaintenanceClick" class="operator-text">
|
||||
<a-icon type="carry-out"/>
|
||||
{{$t('templateMaintenance')}}
|
||||
</div>
|
||||
<div @click="newlyAddedClick" class="operator-text">
|
||||
<a-icon type="plus"/>
|
||||
{{$t('newlyAdded')}}
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<a-table
|
||||
ref="table"
|
||||
size="middle"
|
||||
:loading="loading"
|
||||
:pagination="false"
|
||||
:scroll="{x: '100%'}"
|
||||
rowKey="id"
|
||||
:data-source="dataSource"
|
||||
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
|
||||
:columns="columns"
|
||||
>
|
||||
<span slot="operation" slot-scope="text,record">
|
||||
<a class="text-operation" @click="viewClick(record)">{{$t('view')}}</a>
|
||||
<a class="text-operation"
|
||||
@click="subscribe(record)">
|
||||
{{!record.releaseCondition || record.releaseCondition == 'draft' ? $t('release') :$t('withdraw')}}
|
||||
</a>
|
||||
<a class="text-operation"
|
||||
@click="edit(record)">{{$t('edit')}}</a>
|
||||
<a class="text-operation"
|
||||
@click="deleteData(record)">{{$t('delete')}}</a>
|
||||
</span>
|
||||
</a-table>
|
||||
<div class="page" v-if="dataSource && dataSource.length > 0">
|
||||
<a-pagination
|
||||
:show-total="total => $t('total')+` ${total} `+$t('strip')"
|
||||
show-quick-jumper
|
||||
show-size-changer
|
||||
:page-size.sync="pageSize"
|
||||
:total="total"
|
||||
:current="pageNo"
|
||||
@change="pageOnChange"
|
||||
@showSizeChange="SizeChange"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<countryCardReleaseModel ref="countryCardReleaseModelRef"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, deleteAction, downloadFile } from '@/api/manage'
|
||||
import countryCardReleaseModel from './countryCardReleaseModel'
|
||||
|
||||
export default {
|
||||
name: 'countryCardRelease',
|
||||
components: {
|
||||
countryCardReleaseModel
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
queryParam: {},
|
||||
loading: false,
|
||||
dataSource: [{}],
|
||||
total: 0,
|
||||
pageSize: 10,
|
||||
pageNo: 1,
|
||||
url: {
|
||||
list: '',
|
||||
deleteBatch: ''
|
||||
},
|
||||
selectedRowKeys: [],
|
||||
columns: [
|
||||
{
|
||||
title: this.$t('applicableMarket'),
|
||||
align: 'center',
|
||||
dataIndex: 'applicableMarket',
|
||||
ellipsis: true
|
||||
},
|
||||
{
|
||||
title: this.$t('releaseStatus'),
|
||||
align: 'center',
|
||||
dataIndex: 'releaseStatus',
|
||||
ellipsis: true
|
||||
},
|
||||
{
|
||||
title: this.$t('operation'),
|
||||
align: 'center',
|
||||
fixed: 'right',
|
||||
width: 260,
|
||||
scopedSlots: { customRender: 'operation' }
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.title = 'Country Card-' + this.$t('managePublishing')
|
||||
},
|
||||
methods: {
|
||||
searchQuery() {
|
||||
this.pageNo = 1
|
||||
this.getList()
|
||||
},
|
||||
searchReset() {
|
||||
this.queryParam = {}
|
||||
this.pageNo = 1
|
||||
this.getList()
|
||||
},
|
||||
pageOnChange(page) {
|
||||
this.pageNo = page
|
||||
this.getList()
|
||||
},
|
||||
SizeChange(pageSize) {
|
||||
this.pageNo = 1
|
||||
this.pageSize = pageSize
|
||||
this.getList()
|
||||
},
|
||||
getList() {
|
||||
let queryParam = JSON.parse(JSON.stringify(this.queryParam))
|
||||
Object.keys(queryParam).forEach(val => {
|
||||
if (queryParam[val] instanceof Array) {
|
||||
queryParam[val] = queryParam[val].join(',')
|
||||
}
|
||||
})
|
||||
let query = {
|
||||
pageNo: this.pageNo,
|
||||
pageSize: this.pageSize,
|
||||
...queryParam
|
||||
}
|
||||
this.loading = true
|
||||
getAction(this.url.list, query).then((res) => {
|
||||
if (res.success) {
|
||||
this.dataSource = res.result.records || []
|
||||
this.total = res.result.total
|
||||
this.loading = false
|
||||
} else {
|
||||
this.loading = false
|
||||
}
|
||||
})
|
||||
},
|
||||
onSelectChange(value) {
|
||||
this.selectedRowKeys = value
|
||||
},
|
||||
newlyAddedClick() {
|
||||
|
||||
},
|
||||
templateMaintenanceClick() {
|
||||
this.$refs.countryCardReleaseModelRef.getData()
|
||||
},
|
||||
BatchDeleteClick() {
|
||||
if (this.selectedRowKeys.length > 0) {
|
||||
let _this = this
|
||||
this.$confirm({
|
||||
content: _this.$t('ConfirmBatchDeletion'),
|
||||
onOk() {
|
||||
let idList = JSON.parse(JSON.stringify(_this.selectedRowKeys))
|
||||
getAction(_this.url.deleteBatch, { ids: idList.join(',') }).then((res) => {
|
||||
if (res.success) {
|
||||
_this.$message.success(_this.$t('OperationSuccessful'))
|
||||
_this.selectedRowKeys = []
|
||||
_this.getList()
|
||||
} else {
|
||||
_this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$message.warning(this.$t('selectLeastOne'))
|
||||
}
|
||||
},
|
||||
edit() {
|
||||
|
||||
},
|
||||
subscribe() {
|
||||
|
||||
},
|
||||
viewClick() {
|
||||
let newUrl = this.$router.resolve({
|
||||
path: '/countryCardView',
|
||||
query: {}
|
||||
})
|
||||
window.open(newUrl.href, '_blank')
|
||||
},
|
||||
deleteData(val) {
|
||||
let _this = this
|
||||
this.$confirm({
|
||||
content: _this.$t('ConfirmDelete'),
|
||||
onOk() {
|
||||
deleteAction(_this.url.deleteBatch, { ids: val.id }).then((res) => {
|
||||
if (res.success) {
|
||||
_this.$message.success(_this.$t('OperationSuccessful'))
|
||||
_this.getList()
|
||||
} else {
|
||||
_this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
@import '~@assets/less/common.less';
|
||||
|
||||
.doc-detail {
|
||||
background: #fff;
|
||||
height: 100%;
|
||||
|
||||
.doc-detail-wrap {
|
||||
.doc-detail-header {
|
||||
width: 100%;
|
||||
height: 68px;
|
||||
line-height: 68px;
|
||||
padding: 0 0 0 32px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
border-bottom: 2px #eff1f3 solid;
|
||||
z-index: 1000;
|
||||
background: #fff;
|
||||
|
||||
.doc-detail-title {
|
||||
display: inline-block;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
font-size: 20px;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
line-height: 68px;
|
||||
}
|
||||
|
||||
.doc-detail-right {
|
||||
width: 800px;
|
||||
line-height: 68px;
|
||||
display: flex;
|
||||
|
||||
.doc-detail-btn {
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.content-box {
|
||||
padding: 0 32px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.header-text {
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
height: 80px;
|
||||
color: #000F16;
|
||||
line-height: 80px;
|
||||
}
|
||||
|
||||
.processBackground-text {
|
||||
font-size: 16px;
|
||||
color: #000F16;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.page {
|
||||
text-align: right;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.box-title-text {
|
||||
line-height: 1.4;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.title-text {
|
||||
width: 20%;
|
||||
min-width: 110px;
|
||||
color: #000F16;
|
||||
display: inline-block;
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
margin-right: 16px;
|
||||
margin-top: 3px;
|
||||
text-align: right;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.box-input {
|
||||
display: inline-block;
|
||||
width: 70%;
|
||||
height: 38px;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
.box-button {
|
||||
height: 38px;
|
||||
/*margin-top: 2px;*/
|
||||
}
|
||||
|
||||
.box-content-right {
|
||||
width: 100%;
|
||||
text-align: right;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.operator-text {
|
||||
cursor: pointer;
|
||||
margin-right: 53px;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.operator-text:last-child {
|
||||
margin-right: 13px;
|
||||
}
|
||||
|
||||
.text-operation {
|
||||
margin-right: 8px;
|
||||
}
|
||||
</style>
|
||||
+210
@@ -0,0 +1,210 @@
|
||||
<template>
|
||||
<div>
|
||||
<a-drawer
|
||||
:title="$t('templateMaintenance')"
|
||||
:maskClosable="false"
|
||||
:width="1000"
|
||||
placement="right"
|
||||
:closable="true"
|
||||
@close="handleCancel"
|
||||
:visible="visible"
|
||||
style="height: 100%;overflow: auto;padding-bottom: 53px;">
|
||||
<div style="margin-bottom: 60px">
|
||||
<div class="box-title">
|
||||
<div @click="addLabelClick" class="operator-text">
|
||||
<a-icon type="plus"/>
|
||||
{{$t('newlyAdded')}}
|
||||
</div>
|
||||
</div>
|
||||
<a-table
|
||||
:columns="columns"
|
||||
:scroll="{x: '100%',y:'calc(100vh - 300px)'}"
|
||||
:data-source="dataList"
|
||||
:pagination="false"
|
||||
:loading="loading">
|
||||
<span slot="operation" slot-scope="text,record">
|
||||
<a style="margin-right: 8px" @click="edit(record)">{{$t('edit')}}</a>
|
||||
<a @click="deleteData">{{$t('delete')}}</a>
|
||||
</span>
|
||||
</a-table>
|
||||
<div class="page" v-if="dataList.length > 0">
|
||||
<a-pagination
|
||||
:show-total="total => $t('total')+`${total}`+$t('strip')"
|
||||
show-quick-jumper
|
||||
show-size-changer
|
||||
:page-size.sync="pageSize"
|
||||
:total="total"
|
||||
:current="pageNo"
|
||||
@change="onChange"
|
||||
@showSizeChange="SizeChange"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button @click="handleCancel" type="danger">{{$t('cancel')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
<countryCardReleaseModelAdd ref="countryCardReleaseModelAddRef"
|
||||
@countryCardReleaseModelAddForm="countryCardReleaseModelAddForm"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, downloadFile,deleteAction } from '@/api/manage'
|
||||
import countryCardReleaseModelAdd from './countryCardReleaseModelAdd'
|
||||
|
||||
export default {
|
||||
name: 'countryCardReleaseModel',
|
||||
components: {
|
||||
countryCardReleaseModelAdd
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
url: {
|
||||
list: '',
|
||||
deleteOne: ''
|
||||
},
|
||||
visible: false,
|
||||
selectedRowKeys: [],
|
||||
dataList: [{}],
|
||||
loading: false,
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
total: 0,
|
||||
columns: [
|
||||
{
|
||||
title: this.$t('LabelName'),
|
||||
dataIndex: 'LabelName',
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
width: 200
|
||||
},
|
||||
{
|
||||
title: this.$t('LabelType'),
|
||||
dataIndex: 'LabelType',
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
width: 200
|
||||
},
|
||||
{
|
||||
title: this.$t('DisplayOrder'),
|
||||
dataIndex: 'DisplayOrder',
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
width: 160
|
||||
},
|
||||
{
|
||||
title: this.$t('operation'),
|
||||
align: 'center',
|
||||
fixed: 'right',
|
||||
width: 180,
|
||||
scopedSlots: { customRender: 'operation' }
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
getData() {
|
||||
this.visible = true
|
||||
},
|
||||
handleCancel() {
|
||||
this.visible = false
|
||||
},
|
||||
onChange(page, pageSize) {
|
||||
this.pageNo = page
|
||||
this.replacePage()
|
||||
},
|
||||
countryCardReleaseModelAddForm() {
|
||||
this.pageNo = 1
|
||||
this.replacePage()
|
||||
},
|
||||
addLabelClick() {
|
||||
this.$refs.countryCardReleaseModelAddRef.add()
|
||||
},
|
||||
edit(val) {
|
||||
this.$refs.countryCardReleaseModelAddRef.edit(JSON.parse(JSON.stringify(val)))
|
||||
},
|
||||
deleteData(val) {
|
||||
let _this = this
|
||||
this.$confirm({
|
||||
content: _this.$t('ConfirmDelete'),
|
||||
onOk() {
|
||||
deleteAction(_this.url.deleteOne, { id: val.id }).then((res) => {
|
||||
if (res.success) {
|
||||
_this.$message.success(_this.$t('OperationSuccessful'))
|
||||
_this.getList()
|
||||
} else {
|
||||
_this.$message.warning(_this.$t('operationFailed'))
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
classificationMaintenanceAddForm() {
|
||||
this.pageNo = 1
|
||||
this.replacePage()
|
||||
},
|
||||
SizeChange(page, pageSize) {
|
||||
this.pageNo = 1
|
||||
this.pageSize = pageSize
|
||||
this.replacePage()
|
||||
},
|
||||
replacePage() {
|
||||
let query = {
|
||||
pageNo: this.pageNo,
|
||||
pageSize: this.pageSize
|
||||
}
|
||||
this.loading = true
|
||||
postAction(this.url.list, query).then((res) => {
|
||||
if (res.success) {
|
||||
this.dataList = res.result.records || []
|
||||
this.total = res.result.total
|
||||
this.loading = false
|
||||
} else {
|
||||
this.dataList = []
|
||||
this.total = 0
|
||||
this.loading = false
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.page {
|
||||
text-align: right;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.drawer-bootom-button {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
z-index: 100;
|
||||
border-top: 1px solid #e8e8e8;
|
||||
padding: 10px 16px;
|
||||
text-align: right;
|
||||
left: 0;
|
||||
background: #fff;
|
||||
border-radius: 0 0 2px 2px;
|
||||
}
|
||||
|
||||
.box-title {
|
||||
width: 100%;
|
||||
text-align: right;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.operator-text {
|
||||
cursor: pointer;
|
||||
margin-right: 13px;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
display: inline-block;
|
||||
}
|
||||
</style>
|
||||
+256
@@ -0,0 +1,256 @@
|
||||
<template>
|
||||
<a-modal
|
||||
:title="title"
|
||||
:width="700"
|
||||
:visible="visible"
|
||||
:confirm-loading="confirmLoading"
|
||||
:maskClosable="false"
|
||||
@ok="handleOk"
|
||||
@cancel="handleCancel"
|
||||
>
|
||||
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="24">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="Required">*</span>
|
||||
<span class="title-text-text"
|
||||
:title="$t('LabelName')">{{$t('LabelName')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="LabelName">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.LabelName"
|
||||
:placeholder="$t('PleaseEnter')+$t('LabelName')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="24">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="Required">*</span>
|
||||
<span class="title-text-text"
|
||||
:title="$t('LabelType')">{{$t('LabelType')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="LabelType">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.LabelType"
|
||||
:placeholder="$t('PleaseEnter')+$t('LabelType')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="24">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="Required">*</span>
|
||||
<span class="title-text-text"
|
||||
:title="$t('dropDownOptions')">{{$t('dropDownOptions')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="dropDownOptions">
|
||||
<a-button class="submit" @click="dropDownOptionsClick" type="primary">
|
||||
{{$t('dropDownOptionMaintenance')}}
|
||||
</a-button>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="24">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="Required">*</span>
|
||||
<span class="title-text-text"
|
||||
:title="$t('DisplayOrder')">{{$t('DisplayOrder')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="DisplayOrder">
|
||||
<a-input-number class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.DisplayOrder"
|
||||
:placeholder="$t('PleaseEnter')+$t('DisplayOrder')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="24">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text"
|
||||
:title="$t('associatedWebsite')">{{$t('associatedWebsite')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="associatedWebsite">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.associatedWebsite"
|
||||
:placeholder="$t('PleaseEnter')+$t('associatedWebsite')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="24">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text"
|
||||
:title="$t('describe')">{{$t('describe')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="describe">
|
||||
<a-textarea
|
||||
:placeholder="$t('PleaseEnter')+$t('describe')"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.describe" :rows="4"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form-model>
|
||||
</a-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, downloadFile } from '@/api/manage'
|
||||
|
||||
export default {
|
||||
name: 'countryCardReleaseModelAdd',
|
||||
data() {
|
||||
return {
|
||||
visible: false,
|
||||
disabled: false,
|
||||
confirmLoading: false,
|
||||
formInline: {},
|
||||
rules: {
|
||||
LabelName: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('personCharge') + this.$t('cannotEmpty'),
|
||||
trigger: 'blur'
|
||||
},
|
||||
{
|
||||
max: 100,
|
||||
message: this.$t('personCharge') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
],
|
||||
LabelType: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('problemLabel') + this.$t('cannotEmpty'),
|
||||
trigger: 'change'
|
||||
}
|
||||
],
|
||||
DisplayOrder: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('DisplayOrder') + this.$t('cannotEmpty'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
],
|
||||
associatedWebsite: [
|
||||
{
|
||||
max: 100,
|
||||
message: this.$t('associatedWebsite') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
],
|
||||
describe: [
|
||||
{
|
||||
max: 300,
|
||||
message: this.$t('describe') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
]
|
||||
},
|
||||
title: ''
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
add() {
|
||||
this.visible = true
|
||||
this.title = this.$t('addLabel')
|
||||
this.$nextTick(() => {
|
||||
this.formInline = {}
|
||||
this.$refs.ruleForm.clearValidate()
|
||||
})
|
||||
},
|
||||
edit(data) {
|
||||
this.visible = true
|
||||
this.title = this.$t('editLabel')
|
||||
this.$nextTick(() => {
|
||||
this.formInline = data
|
||||
this.$refs.ruleForm.clearValidate()
|
||||
})
|
||||
},
|
||||
PersonnelSelectionChange(value, id) {
|
||||
this.formInline[value] = id
|
||||
this.formInline = { ...this.formInline }
|
||||
},
|
||||
handleOk() {
|
||||
this.$refs.ruleForm.validate(valid => {
|
||||
if (valid) {
|
||||
|
||||
}
|
||||
})
|
||||
},
|
||||
handleCancel() {
|
||||
this.visible = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.box-title-text {
|
||||
line-height: 1.4;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.title-text {
|
||||
width: 84px;
|
||||
text-align: right;
|
||||
display: inline-block;
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
margin-right: 16px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
height: 42px;
|
||||
line-height: 42px;
|
||||
}
|
||||
|
||||
.box-input {
|
||||
display: inline-block;
|
||||
height: 38px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.itemModel {
|
||||
width: calc(100% - 130px);
|
||||
display: inline-block;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
.title-text-text {
|
||||
margin-top: 9px;
|
||||
}
|
||||
|
||||
.formAdd {
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.Required {
|
||||
color: red;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.submit {
|
||||
height: 38px;
|
||||
}
|
||||
</style>
|
||||
+263
@@ -0,0 +1,263 @@
|
||||
<template>
|
||||
<div class="doc-detail">
|
||||
<div class="doc-detail-wrap">
|
||||
<div class="doc-detail-header" style="position: fixed;top: 0">
|
||||
<div class="doc-detail-title">
|
||||
<span style="line-height: 66px;display: inline-block;float: left">
|
||||
<a-icon type="arrow-left" style="margin-right: 6px;"/>
|
||||
</span>
|
||||
{{$t('See')}}
|
||||
</div>
|
||||
</div>
|
||||
<div style="padding-top: 68px;background: #fff">
|
||||
<div class="detail-content" style="padding: 24px;white-space: nowrap">
|
||||
<div class="box-content-right">
|
||||
<div @click="displayInformationClick" class="operator-text">
|
||||
<a-icon type="eye"/>
|
||||
{{$t('displayInformation')}}
|
||||
</div>
|
||||
<div @click="newlyAddedClick" class="operator-text">
|
||||
<a-icon type="plus"/>
|
||||
{{$t('addComparison')}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-box">
|
||||
<div class="content-box-left">
|
||||
<div class="content-box-left-text">
|
||||
hadhasdasdhadashdjk
|
||||
</div>
|
||||
<div class="content-box-left-text">
|
||||
hadhasdasdhadashdjk
|
||||
</div>
|
||||
<div class="content-box-left-text">
|
||||
hadhasdasdhadashdjk
|
||||
</div>
|
||||
<div class="content-box-left-text">
|
||||
hadhasdasdhadashdjk
|
||||
</div>
|
||||
<div class="content-box-left-text">
|
||||
hadhasdasdhadashdjk
|
||||
</div>
|
||||
<div class="content-box-left-text">
|
||||
hadhasdasdhadashdjk
|
||||
</div>
|
||||
<div class="content-box-left-text">
|
||||
hadhasdasdhadashdjk
|
||||
</div>
|
||||
<div class="content-box-left-text">
|
||||
hadhasdasdhadashdjk
|
||||
</div>
|
||||
<div class="content-box-left-text">
|
||||
hadhasdasdhadashdjk
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-box-right" v-for="item1 in 9">
|
||||
<div class="content-box-box-top">
|
||||
<img src="../../../../assets/mobileHome.png" class="content-box-box-img" alt="">
|
||||
<span class="content-box-box-text">
|
||||
中国
|
||||
</span>
|
||||
</div>
|
||||
<div class="content-box-box" v-for="item in 9">
|
||||
<img src="../../../../assets/mobileHome.png" class="content-box-box-img" alt="">
|
||||
<span class="content-box-box-text">
|
||||
中国
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<displayInformationModel ref="displayInformationModelRef"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, downloadFile } from '@/api/manage'
|
||||
import displayInformationModel from './displayInformationModel'
|
||||
|
||||
export default {
|
||||
name: 'countryCardView',
|
||||
components: {
|
||||
displayInformationModel
|
||||
},
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
displayInformationClick() {
|
||||
this.$refs.displayInformationModelRef.getData()
|
||||
},
|
||||
newlyAddedClick() {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
@import '~@assets/less/common.less';
|
||||
|
||||
.doc-detail {
|
||||
background: #fff;
|
||||
height: 100%;
|
||||
|
||||
.doc-detail-wrap {
|
||||
.doc-detail-header {
|
||||
width: 100%;
|
||||
height: 68px;
|
||||
line-height: 68px;
|
||||
padding: 0 0 0 32px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
border-bottom: 2px #eff1f3 solid;
|
||||
z-index: 1000;
|
||||
background: #fff;
|
||||
|
||||
.doc-detail-title {
|
||||
display: inline-block;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
font-size: 20px;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
line-height: 68px;
|
||||
}
|
||||
|
||||
.doc-detail-right {
|
||||
width: 800px;
|
||||
line-height: 68px;
|
||||
display: flex;
|
||||
|
||||
.doc-detail-btn {
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.header-text {
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
height: 80px;
|
||||
color: #000F16;
|
||||
line-height: 80px;
|
||||
}
|
||||
|
||||
.processBackground-text {
|
||||
font-size: 16px;
|
||||
color: #000F16;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.box-content-right {
|
||||
width: 100%;
|
||||
text-align: right;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.operator-text {
|
||||
cursor: pointer;
|
||||
margin-right: 53px;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.operator-text:last-child {
|
||||
margin-right: 13px;
|
||||
}
|
||||
|
||||
.content-box {
|
||||
overflow: auto;
|
||||
white-space: nowrap;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.content-box-left {
|
||||
width: 200px;
|
||||
background: #fff;
|
||||
z-index: 111;
|
||||
display: inline-block;
|
||||
position: sticky;
|
||||
left: 0;
|
||||
border-top: 1px #d9d9d9 solid;
|
||||
border-left: 1px #d9d9d9 solid;
|
||||
border-bottom: 1px #d9d9d9 solid;
|
||||
border-right: 1px #d9d9d9 solid;
|
||||
}
|
||||
|
||||
.content-box-left-text {
|
||||
font-size: 16px;
|
||||
color: #040B29;
|
||||
font-weight: 400;
|
||||
text-align: center;
|
||||
border-bottom: 1px #d9d9d9 solid;
|
||||
height: 80px;
|
||||
line-height: 80px;
|
||||
}
|
||||
|
||||
.content-box-left-text:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.content-box-box-top {
|
||||
width: 340px;
|
||||
height: 160px;
|
||||
display: inline-block;
|
||||
cursor: pointer;
|
||||
border-left: 1px #d9d9d9 solid;
|
||||
border-top: 1px #d9d9d9 solid;
|
||||
border-right: 1px #d9d9d9 solid;
|
||||
border-bottom: 1px #d9d9d9 solid;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 111;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.content-box-right {
|
||||
width: 339px;
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
border-top: 1px #d9d9d9 solid;
|
||||
border-right: 1px #d9d9d9 solid;
|
||||
border-bottom: 1px #d9d9d9 solid;
|
||||
}
|
||||
|
||||
.content-box-right:last-child {
|
||||
border-right: 1px #d9d9d9 solid;
|
||||
}
|
||||
|
||||
.content-box-box-img {
|
||||
width: 70%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.content-box-box-text {
|
||||
display: inline-block;
|
||||
width: 30%;
|
||||
text-align: center;
|
||||
font-size: 18px;
|
||||
font-weight: 500;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
.content-box-box {
|
||||
width: 100%;
|
||||
height: 80px;
|
||||
border-bottom: 1px #d9d9d9 solid;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.content-box-box:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
+156
@@ -0,0 +1,156 @@
|
||||
<template>
|
||||
<div>
|
||||
<a-drawer
|
||||
:title="$t('displayInformation')"
|
||||
:maskClosable="false"
|
||||
:width="800"
|
||||
placement="right"
|
||||
:closable="true"
|
||||
@close="handleCancel"
|
||||
:visible="visible"
|
||||
style="height: 100%;overflow: auto;padding-bottom: 53px;">
|
||||
<div style="margin-bottom: 60px">
|
||||
<a-table
|
||||
:columns="columns"
|
||||
:scroll="{x: '100%',y:'calc(100vh - 300px)'}"
|
||||
:data-source="dataList"
|
||||
:pagination="false"
|
||||
:loading="loading">
|
||||
<span slot="showOrNot" slot-scope="text,record">
|
||||
<a-checkbox :value="text"></a-checkbox>
|
||||
</span>
|
||||
</a-table>
|
||||
<div class="page" v-if="dataList.length > 0">
|
||||
<a-pagination
|
||||
:show-total="total => $t('total')+`${total}`+$t('strip')"
|
||||
show-quick-jumper
|
||||
show-size-changer
|
||||
:page-size.sync="pageSize"
|
||||
:total="total"
|
||||
:current="pageNo"
|
||||
@change="onChange"
|
||||
@showSizeChange="SizeChange"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, deleteAction } from '@/api/manage'
|
||||
|
||||
export default {
|
||||
name: 'displayInformationModel',
|
||||
data() {
|
||||
return {
|
||||
url: {
|
||||
list: '',
|
||||
deleteOne: ''
|
||||
},
|
||||
visible: false,
|
||||
selectedRowKeys: [],
|
||||
dataList: [{}],
|
||||
loading: false,
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
confirmLoading:false,
|
||||
total: 0,
|
||||
columns: [
|
||||
{
|
||||
title: this.$t('LabelName'),
|
||||
dataIndex: 'LabelName',
|
||||
align: 'center',
|
||||
ellipsis: true
|
||||
},
|
||||
{
|
||||
title: this.$t('showOrNot'),
|
||||
dataIndex: 'showOrNot',
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
scopedSlots: { customRender: 'showOrNot' }
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
getData() {
|
||||
this.visible = true
|
||||
},
|
||||
handleCancel() {
|
||||
this.visible = false
|
||||
},
|
||||
handleSubmit(){
|
||||
|
||||
},
|
||||
onChange(page, pageSize) {
|
||||
this.pageNo = page
|
||||
this.replacePage()
|
||||
},
|
||||
SizeChange(page, pageSize) {
|
||||
this.pageNo = 1
|
||||
this.pageSize = pageSize
|
||||
this.replacePage()
|
||||
},
|
||||
replacePage() {
|
||||
let query = {
|
||||
pageNo: this.pageNo,
|
||||
pageSize: this.pageSize
|
||||
}
|
||||
this.loading = true
|
||||
postAction(this.url.list, query).then((res) => {
|
||||
if (res.success) {
|
||||
this.dataList = res.result.records || []
|
||||
this.total = res.result.total
|
||||
this.loading = false
|
||||
} else {
|
||||
this.dataList = []
|
||||
this.total = 0
|
||||
this.loading = false
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.page {
|
||||
text-align: right;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.drawer-bootom-button {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
z-index: 100;
|
||||
border-top: 1px solid #e8e8e8;
|
||||
padding: 10px 16px;
|
||||
text-align: right;
|
||||
left: 0;
|
||||
background: #fff;
|
||||
border-radius: 0 0 2px 2px;
|
||||
}
|
||||
|
||||
.box-title {
|
||||
width: 100%;
|
||||
text-align: right;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.operator-text {
|
||||
cursor: pointer;
|
||||
margin-right: 13px;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
display: inline-block;
|
||||
}
|
||||
</style>
|
||||
+384
@@ -0,0 +1,384 @@
|
||||
<template>
|
||||
<div class="doc-detail">
|
||||
<div class="doc-detail-wrap">
|
||||
<div class="doc-detail-header" style="position: fixed;top: 0">
|
||||
<div class="doc-detail-title">
|
||||
<span style="line-height: 66px;display: inline-block;float: left">
|
||||
<a-icon type="arrow-left" style="margin-right: 6px;"/>
|
||||
</span>
|
||||
{{$t('newlyAdded')}}
|
||||
</div>
|
||||
</div>
|
||||
<div style="padding-top: 68px;background: #fff">
|
||||
<div class="detail-content" style="padding: 24px">
|
||||
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="Required">*</span>
|
||||
<span class="title-text-text" :title="$t('displayPermission')">{{$t('displayPermission')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="projectNameId">
|
||||
<a-select :placeholder="$t('PleaseSelect')+$t('displayPermission')"
|
||||
@change="projectNameChange"
|
||||
v-model="formInline.projectNameId">
|
||||
<a-select-option v-for="(item, key) in projectNameList"
|
||||
:key="key"
|
||||
:value="item.id">
|
||||
<span style="display: inline-block;width: 100%" :title=" item.projectName ">
|
||||
{{ item.projectName}}
|
||||
</span>
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :span="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="Required">*</span>
|
||||
<span class="title-text-text" :title="$t('authorizedUser')">{{$t('authorizedUser')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="yearNameId">
|
||||
<PersonnelSelection :query="{db_field_name:'studioEngineer',db_field_txt:$t('authorizedUser')}"
|
||||
:isSingleChoice="true"
|
||||
:personneQuery="formInline"
|
||||
@change="PersonnelSelectionChange"
|
||||
v-model="formInline.studioEngineerName"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="Required">*</span>
|
||||
<span class="title-text-text" :title="$t('title')">{{$t('title')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel-multi" prop="title">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.title"
|
||||
:placeholder="$t('PleaseEnter')+$t('title')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :span="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="Required">*</span>
|
||||
<span class="title-text-text"
|
||||
:title="$t('problemClassification')">{{$t('problemClassification')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="projectStatus">
|
||||
<j-dict-select-tag class="box-input" v-model="formInline.projectStatus"
|
||||
:disabled="disabled"
|
||||
@input="handleInput('projectStatus')"
|
||||
:placeholder="$t('PleaseSelect')+$t('problemClassification')"
|
||||
:type="'select'"
|
||||
:triggerChange="false" :dictCode="'project_status'"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :span="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="Required">*</span>
|
||||
<span class="title-text-text" :title="$t('market')">{{$t('market')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="projectStatus">
|
||||
<j-dict-select-tag class="box-input" v-model="formInline.projectStatus"
|
||||
:disabled="disabled"
|
||||
@input="handleInput('projectStatus')"
|
||||
:placeholder="$t('PleaseSelect')+$t('market')"
|
||||
:type="'select'"
|
||||
:triggerChange="false" :dictCode="'project_status'"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" :title="$t('standardNo')">{{$t('standardNo')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="vehiclePlatform">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.vehiclePlatform"
|
||||
:placeholder="$t('PleaseEnter')+$t('standardNo')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :span="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text"></span>
|
||||
</div>
|
||||
<a-button class="box-button" type="primary" @click="bringInDocumentInformationClick">
|
||||
{{$t('bringInDocumentInformation')}}
|
||||
</a-button>
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="24" style="height: 380px">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text">{{$t('content')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="vehiclePlatform">
|
||||
<quill-editor
|
||||
style="height: 300px"
|
||||
:content="formInline.content"
|
||||
:options="editorOption"
|
||||
@change="onEditorChange($event)"
|
||||
/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text"
|
||||
:title="$t('enclosure')">{{$t('enclosure')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="prehomoDeliverableTemplate">
|
||||
<a-button type="primary" class="button-text"
|
||||
@click="clickButtonToUpload('enclosure')">
|
||||
{{ (formInline.enclosure === 'null' || formInline.enclosure === ''
|
||||
||
|
||||
formInline.enclosure == null) ? $t('clickUpload') : $t('viewUploadedFiles')
|
||||
}}
|
||||
</a-button>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form-model>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<uploadFile ref="uploadFile" @uploadSuccess="uploadSuccess"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import PersonnelSelection from '@/components/PersonnelSelection/index'
|
||||
import uploadFile from '@/components/uploadFile/file'
|
||||
import { getAction, postAction, putAction } from '@/api/manage'
|
||||
import 'quill/dist/quill.core.css'
|
||||
import 'quill/dist/quill.snow.css'
|
||||
import 'quill/dist/quill.bubble.css'
|
||||
import { quillEditor } from 'vue-quill-editor'
|
||||
|
||||
export default {
|
||||
name: 'problemKnowledgeBaseAdd',
|
||||
components: {
|
||||
PersonnelSelection,
|
||||
uploadFile,
|
||||
quillEditor
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
formInline: {},
|
||||
rules: {},
|
||||
disabled: false,
|
||||
projectNameList: [],
|
||||
content: '<h2>I am Example</h2>',
|
||||
editorOption: {
|
||||
// Some Quill options...
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
editor() {
|
||||
return this.$refs.myQuillEditor.quill
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.title = this.$t('problemKnowledgeBase') + this.$t('newlyAdded')
|
||||
},
|
||||
methods: {
|
||||
onEditorBlur(quill) {
|
||||
console.log('editor blur!', quill)
|
||||
},
|
||||
onEditorFocus(quill) {
|
||||
console.log('editor focus!', quill)
|
||||
},
|
||||
onEditorReady(quill) {
|
||||
console.log('editor ready!', quill)
|
||||
},
|
||||
onEditorChange({ quill, html, text }) {
|
||||
console.log('editor change!', quill, html, text)
|
||||
this.content = html
|
||||
},
|
||||
PersonnelSelectionChange(value, id) {
|
||||
this.formInline[value] = id
|
||||
this.formInline = { ...this.formInline }
|
||||
},
|
||||
handleInput(value) {
|
||||
this.$nextTick(() => {
|
||||
this.formInline = { ...this.formInline }
|
||||
this.$refs.ruleForm.validateField([value])
|
||||
})
|
||||
},
|
||||
bringInDocumentInformationClick() {
|
||||
|
||||
},
|
||||
clickButtonToUpload(item) {
|
||||
this.$refs.uploadFile.perentHandleFunc()
|
||||
this.$refs.uploadFile.visible = true
|
||||
this.uploadName = item
|
||||
getAction('sys/common/getFileInfos', { id: this.formInline[item] }).then((res) => {
|
||||
if (res.success) {
|
||||
this.$refs.uploadFile.perentHandleFunc(res.result)
|
||||
} else {
|
||||
this.$refs.uploadFile.perentHandleFunc()
|
||||
}
|
||||
})
|
||||
},
|
||||
/** 上传文件的回调 */
|
||||
uploadSuccess(data) {
|
||||
let attIdList = []
|
||||
if (data && data.length > 0) {
|
||||
data.map(item => {
|
||||
attIdList.push(item.id || data.name)
|
||||
})
|
||||
}
|
||||
/** 赋值给当前对应的表单文件 */
|
||||
this.formInline[this.uploadName] = attIdList.join(',')
|
||||
this.formInline = { ...this.formInline }
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
@import '~@assets/less/common.less';
|
||||
|
||||
.doc-detail {
|
||||
background: #fff;
|
||||
height: 100%;
|
||||
|
||||
.doc-detail-wrap {
|
||||
.doc-detail-header {
|
||||
width: 100%;
|
||||
height: 68px;
|
||||
line-height: 68px;
|
||||
padding: 0 0 0 32px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
border-bottom: 2px #eff1f3 solid;
|
||||
z-index: 1000;
|
||||
background: #fff;
|
||||
|
||||
.doc-detail-title {
|
||||
display: inline-block;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
font-size: 20px;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
line-height: 68px;
|
||||
}
|
||||
|
||||
.doc-detail-right {
|
||||
width: 800px;
|
||||
line-height: 68px;
|
||||
display: flex;
|
||||
|
||||
.doc-detail-btn {
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.content-box {
|
||||
padding: 0 32px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.header-text {
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
height: 80px;
|
||||
color: #000F16;
|
||||
line-height: 80px;
|
||||
}
|
||||
|
||||
.processBackground-text {
|
||||
font-size: 16px;
|
||||
color: #000F16;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.box-title-text {
|
||||
line-height: 1.4;
|
||||
display: flex;
|
||||
/*align-items: center;*/
|
||||
}
|
||||
|
||||
.title-text {
|
||||
width: 114px;
|
||||
text-align: right;
|
||||
display: inline-block;
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
margin-right: 16px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
height: 42px;
|
||||
line-height: 48px;
|
||||
}
|
||||
|
||||
.box-input {
|
||||
display: inline-block;
|
||||
height: 38px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.itemModel {
|
||||
width: calc(100% - 130px);
|
||||
display: inline-block;
|
||||
margin-top: 2px;
|
||||
height: 40px;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.Required {
|
||||
color: red;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.title-text-text {
|
||||
margin-top: 9px;
|
||||
}
|
||||
|
||||
|
||||
.formAdd {
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.button-text {
|
||||
height: 38px;
|
||||
width: calc(100% - 100px);
|
||||
line-height: 38px;
|
||||
background: #fff;
|
||||
border: 1px #00B3BE solid;
|
||||
color: #00B3BE;
|
||||
}
|
||||
|
||||
.box-button {
|
||||
height: 38px;
|
||||
}
|
||||
</style>
|
||||
+316
@@ -0,0 +1,316 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="search-detail-wrap">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" :title="$t('searchContent')">
|
||||
<span>{{$t('searchContent')}}</span>
|
||||
</div>
|
||||
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('searchContent')"
|
||||
v-model="searchContent"></a-input>
|
||||
<a-button class="box-button" type="primary" @click="onSearch">{{$t('query')}}</a-button>
|
||||
<a-button class="box-button" style="margin-left: 8px" @click="ResetSearch">{{$t('reset')}}</a-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-content">
|
||||
<div class="box-content-left">
|
||||
<span class="box-content-left-text">{{$t('recentHotSpots')}}</span>
|
||||
<span class="box-content-left-text">{{$t('disseminationMaterials')}}</span>
|
||||
<span class="box-content-left-text">{{$t('informationSafety')}}</span>
|
||||
<span class="box-content-left-text">{{$t('blueBook')}}</span>
|
||||
<span class="box-content-left-text">{{$t('invoiceCollection')}}</span>
|
||||
<span class="box-content-left-text">{{$t('productHighlights')}}</span>
|
||||
<span class="box-content-left-text">{{$t('financialReimbursement')}}</span>
|
||||
</div>
|
||||
<div class="box-content-right">
|
||||
<div @click="classificationClick" class="operator-text" v-has="'virtual:set:creater'">
|
||||
<a-icon type="setting"/>
|
||||
{{$t('classificationMaintenance')}}
|
||||
</div>
|
||||
<div @click="managePublishingClick" class="operator-text" v-has="'virtual:set:creater'">
|
||||
<a-icon type="carry-out"/>
|
||||
{{$t('managePublishing')}}
|
||||
</div>
|
||||
<div @click="newlyAddedClick" class="operator-text" v-has="'virtual:set:creater'">
|
||||
<a-icon type="plus"/>
|
||||
{{$t('newlyAdded')}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="conList.length > 0" style="margin-top: 58px;height: calc(100vh - 260px);overflow:auto;">
|
||||
<li v-for="(item,index) in conList" :key="item.id">
|
||||
<div style="margin-bottom: 10px;position: relative">
|
||||
<!-- <a-checkbox :value="item.id" class="checkbox-left"></a-checkbox>-->
|
||||
<div class="text-text-right"
|
||||
:class="{ 'null-input':item.checked }">
|
||||
<div class="text-header" @click="titleClick(item)">
|
||||
<a-tooltip placement="topLeft" :mouseEnterDelay="0.5">
|
||||
<template slot="title">
|
||||
<span v-html="item.title"></span>
|
||||
</template>
|
||||
<span class="text-header-text" style="cursor: pointer" v-html="item.title"></span>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
<a-tooltip placement="topLeft" :mouseEnterDelay="0.5">
|
||||
<template slot="title">
|
||||
<span v-html="item.content"></span>
|
||||
</template>
|
||||
<div class="text-content" v-html="item.content">
|
||||
</div>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
<div class="noData" v-else>
|
||||
暂无数据
|
||||
</div>
|
||||
<div class="page" v-if="conList.length > 0">
|
||||
<a-pagination
|
||||
:show-total="total => $t('total')+` ${total} `+$t('strip')"
|
||||
show-quick-jumper
|
||||
show-size-changer
|
||||
:page-size.sync="pageSize"
|
||||
:total="total"
|
||||
:current="pageNo"
|
||||
@change="pageOnChange"
|
||||
@showSizeChange="SizeChange"
|
||||
/>
|
||||
</div>
|
||||
<classificationMaintenanceModel ref="classificationMaintenanceModelRef"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, downloadFile } from '@/api/manage'
|
||||
import classificationMaintenanceModel from './classificationMaintenanceModel'
|
||||
|
||||
export default {
|
||||
name: 'problemKnowledgeBaseList',
|
||||
components: {
|
||||
classificationMaintenanceModel
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
searchContent: '',
|
||||
checkboxText: [],
|
||||
conList: [],
|
||||
total: 0,
|
||||
pageSize: 10,
|
||||
downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download',
|
||||
pageNo: 1,
|
||||
url: {
|
||||
getInfoList: 'search/document/getFullTextInfoList'
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
onSearch() {
|
||||
|
||||
},
|
||||
ResetSearch() {
|
||||
|
||||
},
|
||||
classificationClick() {
|
||||
this.$refs.classificationMaintenanceModelRef.getData()
|
||||
},
|
||||
managePublishingClick() {
|
||||
let newUrl = this.$router.resolve({
|
||||
path: '/problemKnowledgeBaseRelease',
|
||||
query: {}
|
||||
})
|
||||
window.open(newUrl.href, '_blank')
|
||||
},
|
||||
newlyAddedClick() {
|
||||
let newUrl = this.$router.resolve({
|
||||
path: '/problemKnowledgeBaseAdd',
|
||||
query: {}
|
||||
})
|
||||
window.open(newUrl.href, '_blank')
|
||||
},
|
||||
pageOnChange(page, pageSize) {
|
||||
this.pageNo = page
|
||||
this.getList()
|
||||
},
|
||||
SizeChange(page, pageSize) {
|
||||
this.pageNo = 1
|
||||
this.pageSize = pageSize
|
||||
this.getList()
|
||||
},
|
||||
getList() {
|
||||
let query = {
|
||||
pageNo: this.pageNo,
|
||||
pageSize: this.pageSize
|
||||
}
|
||||
postAction(this.url.getInfoList, query).then((res) => {
|
||||
if (res.success) {
|
||||
this.conList = res.result.records
|
||||
this.total = res.result.total
|
||||
} else {
|
||||
this.conList = []
|
||||
}
|
||||
})
|
||||
},
|
||||
titleClick(item) {
|
||||
let newUrl = this.$router.resolve({
|
||||
path: '/problemKnowledgeBaseView',
|
||||
query: {}
|
||||
})
|
||||
window.open(newUrl.href, '_blank')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.search-detail-wrap {
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.box-title-text {
|
||||
line-height: 1.4;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 10px;
|
||||
text-align: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.title-text {
|
||||
width: 110px;
|
||||
color: #000F16;
|
||||
display: inline-block;
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
margin-right: 16px;
|
||||
margin-top: 3px;
|
||||
text-align: right;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.box-input {
|
||||
/*min-width: 200px;*/
|
||||
display: inline-block;
|
||||
width: 50%;
|
||||
height: 38px;
|
||||
margin-top: 2px;
|
||||
margin-right: 16px;
|
||||
}
|
||||
|
||||
.box-button {
|
||||
height: 38px;
|
||||
}
|
||||
|
||||
.box-content-left {
|
||||
width: 60%;
|
||||
float: left;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.box-content-right {
|
||||
width: 40%;
|
||||
float: left;
|
||||
display: inline-block;
|
||||
text-align: right;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.operator-text {
|
||||
cursor: pointer;
|
||||
margin-right: 53px;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.operator-text:last-child {
|
||||
margin-right: 13px;
|
||||
}
|
||||
|
||||
.box-content-left-text {
|
||||
margin-right: 30px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.box {
|
||||
padding: 0 0 0 18px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.checkbox-left {
|
||||
float: left;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
|
||||
.text-text-right {
|
||||
padding: 19px 0;
|
||||
box-sizing: border-box;
|
||||
/*margin-left: 38px;*/
|
||||
}
|
||||
|
||||
.null-input {
|
||||
background-color: #F2F4F8;
|
||||
}
|
||||
|
||||
.search-text-title {
|
||||
margin-bottom: 22px;
|
||||
}
|
||||
|
||||
.text-header {
|
||||
margin-bottom: 11px;
|
||||
|
||||
.text-header-text {
|
||||
margin-right: 52px;
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
color: #040B29;
|
||||
display: inline-block;
|
||||
max-width: calc(100% - 180px);
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/*span {*/
|
||||
/* margin-right: 52px;*/
|
||||
/* font-size: 16px;*/
|
||||
/* font-weight: bold;*/
|
||||
/* color: #040B29;*/
|
||||
/* display: inline-block;*/
|
||||
/* max-width: 500px;*/
|
||||
/* text-overflow: ellipsis;*/
|
||||
/* white-space: nowrap;*/
|
||||
/* overflow: hidden;*/
|
||||
/*}*/
|
||||
}
|
||||
|
||||
.text-content {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.page {
|
||||
text-align: right;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.noData {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
line-height: 10;
|
||||
}
|
||||
</style>
|
||||
+294
@@ -0,0 +1,294 @@
|
||||
<template>
|
||||
<div class="doc-detail">
|
||||
<div class="doc-detail-wrap">
|
||||
<div class="doc-detail-header" style="position: fixed;top: 0">
|
||||
<div class="doc-detail-title">
|
||||
<span style="line-height: 66px;display: inline-block;float: left">
|
||||
<a-icon type="arrow-left" style="margin-right: 6px;"/>
|
||||
</span>
|
||||
{{$t('managePublishing')}}
|
||||
</div>
|
||||
</div>
|
||||
<div style="padding-top: 68px;background: #fff">
|
||||
<div class="detail-content" style="padding: 30px">
|
||||
<div v-if="conList.length > 0" style="height: calc(100vh - 180px);overflow:auto;">
|
||||
<div v-for="(item,index) in conList" :key="item.id">
|
||||
<div style="margin-bottom: 10px;position: relative;overflow: hidden">
|
||||
<!-- <a-checkbox :value="item.id" class="checkbox-left"></a-checkbox>-->
|
||||
<div class="text-text-right"
|
||||
:class="{ 'null-input':item.checked }">
|
||||
<div class="text-header" @click="titleClick(item)">
|
||||
<a-tooltip placement="topLeft" :mouseEnterDelay="0.5">
|
||||
<template slot="title">
|
||||
<span v-html="item.title"></span>
|
||||
</template>
|
||||
<span class="text-header-text" style="cursor: pointer" v-html="item.title"></span>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
<a-tooltip placement="topLeft" :mouseEnterDelay="0.5">
|
||||
<template slot="title">
|
||||
<span v-html="item.content"></span>
|
||||
</template>
|
||||
<div class="text-content" v-html="item.content">
|
||||
</div>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
<div class="text-text-right-text">
|
||||
<a style="margin-right: 10px" @click="edit(item)">{{$t('edit')}}</a>
|
||||
<a @click="deleteData(item)">{{$t('delete')}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="noData" v-else>
|
||||
暂无数据
|
||||
</div>
|
||||
<div class="page" v-if="conList.length > 0">
|
||||
<a-pagination
|
||||
:show-total="total => $t('total')+` ${total} `+$t('strip')"
|
||||
show-quick-jumper
|
||||
show-size-changer
|
||||
:page-size.sync="pageSize"
|
||||
:total="total"
|
||||
:current="pageNo"
|
||||
@change="pageOnChange"
|
||||
@showSizeChange="SizeChange"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, putAction } from '@/api/manage'
|
||||
|
||||
export default {
|
||||
name: 'problemKnowledgeBaseRelease',
|
||||
data() {
|
||||
return {
|
||||
checkboxText: [],
|
||||
conList: [],
|
||||
total: 0,
|
||||
pageSize: 10,
|
||||
downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download',
|
||||
pageNo: 1,
|
||||
url: {
|
||||
getInfoList: 'search/document/getFullTextInfoList',
|
||||
deleteBatch: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
pageOnChange(page, pageSize) {
|
||||
this.pageNo = page
|
||||
this.getList()
|
||||
},
|
||||
SizeChange(page, pageSize) {
|
||||
this.pageNo = 1
|
||||
this.pageSize = pageSize
|
||||
this.getList()
|
||||
},
|
||||
getList() {
|
||||
let query = {
|
||||
pageNo: this.pageNo,
|
||||
pageSize: this.pageSize
|
||||
}
|
||||
postAction(this.url.getInfoList, query).then((res) => {
|
||||
if (res.success) {
|
||||
this.conList = res.result.records
|
||||
this.total = res.result.total
|
||||
} else {
|
||||
this.conList = []
|
||||
}
|
||||
})
|
||||
},
|
||||
titleClick(item) {
|
||||
let newUrl = this.$router.resolve({
|
||||
path: '/docManage/library/detail',
|
||||
query: {
|
||||
id: item.id.slice(0, 32),
|
||||
title: item.title,
|
||||
serial_number: item.serial_number
|
||||
}
|
||||
})
|
||||
window.open(newUrl.href, '_blank')
|
||||
},
|
||||
edit(val) {
|
||||
this.$router.push({
|
||||
path: '/problemKnowledgeBaseAdd',
|
||||
query: {
|
||||
id: val.id
|
||||
}
|
||||
})
|
||||
},
|
||||
deleteData(val) {
|
||||
let _this = this
|
||||
this.$confirm({
|
||||
content: _this.$t('ConfirmDelete'),
|
||||
onOk() {
|
||||
getAction(_this.url.deleteBatch, { ids: val.id }).then((res) => {
|
||||
if (res.success) {
|
||||
_this.$message.success(_this.$t('OperationSuccessful'))
|
||||
_this.getList()
|
||||
} else {
|
||||
_this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
@import '~@assets/less/common.less';
|
||||
|
||||
.doc-detail {
|
||||
background: #fff;
|
||||
height: 100%;
|
||||
|
||||
.doc-detail-wrap {
|
||||
.doc-detail-header {
|
||||
width: 100%;
|
||||
height: 68px;
|
||||
line-height: 68px;
|
||||
padding: 0 0 0 32px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
border-bottom: 2px #eff1f3 solid;
|
||||
z-index: 1000;
|
||||
background: #fff;
|
||||
|
||||
.doc-detail-title {
|
||||
display: inline-block;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
font-size: 20px;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
line-height: 68px;
|
||||
}
|
||||
|
||||
.doc-detail-right {
|
||||
width: 800px;
|
||||
line-height: 68px;
|
||||
display: flex;
|
||||
|
||||
.doc-detail-btn {
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.content-box {
|
||||
padding: 0 32px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.header-text {
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
height: 80px;
|
||||
color: #000F16;
|
||||
line-height: 80px;
|
||||
}
|
||||
|
||||
.processBackground-text {
|
||||
font-size: 16px;
|
||||
color: #000F16;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.box {
|
||||
padding: 0 0 0 18px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.checkbox-left {
|
||||
float: left;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
|
||||
.text-text-right {
|
||||
padding: 19px 0;
|
||||
width: calc(100% - 180px);
|
||||
box-sizing: border-box;
|
||||
/*margin-left: 38px;*/
|
||||
}
|
||||
|
||||
.text-text-right-text {
|
||||
width: 180px;
|
||||
height: 100%;
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 50%;
|
||||
transform: translate-Y(-50%);
|
||||
}
|
||||
|
||||
.null-input {
|
||||
background-color: #F2F4F8;
|
||||
}
|
||||
|
||||
.search-text-title {
|
||||
margin-bottom: 22px;
|
||||
}
|
||||
|
||||
.text-header {
|
||||
margin-bottom: 11px;
|
||||
|
||||
.text-header-text {
|
||||
margin-right: 52px;
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
color: #040B29;
|
||||
display: inline-block;
|
||||
max-width: calc(100% - 180px);
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/*span {*/
|
||||
/* margin-right: 52px;*/
|
||||
/* font-size: 16px;*/
|
||||
/* font-weight: bold;*/
|
||||
/* color: #040B29;*/
|
||||
/* display: inline-block;*/
|
||||
/* max-width: 500px;*/
|
||||
/* text-overflow: ellipsis;*/
|
||||
/* white-space: nowrap;*/
|
||||
/* overflow: hidden;*/
|
||||
/*}*/
|
||||
}
|
||||
|
||||
.text-content {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.page {
|
||||
text-align: right;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.noData {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
line-height: 10;
|
||||
}
|
||||
</style>
|
||||
+350
@@ -0,0 +1,350 @@
|
||||
<template>
|
||||
<div class="doc-detail">
|
||||
<div class="doc-detail-wrap">
|
||||
<div class="doc-detail-header" style="position: fixed;top: 0">
|
||||
<div class="doc-detail-title">
|
||||
<span style="line-height: 66px;display: inline-block;float: left">
|
||||
<a-icon type="arrow-left" style="margin-right: 6px;"/>
|
||||
</span>
|
||||
{{$t('applicableInstructionsMarketList')}}
|
||||
</div>
|
||||
</div>
|
||||
<div style="padding-top: 68px;background: #fff">
|
||||
<div class="detail-content" style="padding: 24px">
|
||||
<div class="content-text">
|
||||
<div class="text-field" v-for="(item,index) in standardContentList" :key="index">
|
||||
<span class="text-field-left" :title="item.title">{{item.title}}</span>
|
||||
<span class="text-field-right text-field-right-url"
|
||||
@click="clickButtonToUpload(queryForm[item.value])"
|
||||
v-if="item.type == 2 && queryForm[item.value]"
|
||||
>{{ $t('viewFile') }}</span>
|
||||
|
||||
<span class="text-field-right"
|
||||
:title="queryForm[item.value]" v-else>
|
||||
{{queryForm[item.value]}}fdgdgdfg
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
sfdsfdsf的防控流感的飞机过来看的结果东法兰克感觉地方给了地方国家的分开两个就地方孤苦伶仃附件给领导反馈
|
||||
独守空房了就收到付款了的角色发看来都是风景但是考虑附件第三方库老师积分迪斯科浪费绝对是分类的课时费
|
||||
是反抗拉萨的飞机罗斯福就点十六分就但是发
|
||||
迪斯科浪费电视机分厘卡的设计分类的水库附近的说服力但是积分的历史房价多少发了多少给京东方管理看豆腐干豆腐干看
|
||||
a fjsd fklsdjfk s是否考虑技术的反抗类毒素就发的撒开了房间但是发离开打扫房间是开了房间都是老师JFK了的身份圣诞快乐就是的反抗类毒素解放迪斯科浪费是
|
||||
考虑到房价打开拉萨附近分离技术的领导是否打开拉萨范德萨发了开始就发的考虑是否就但是考虑发及代理商开发就十分大师傅看
|
||||
</div>
|
||||
<div class="content-icon">
|
||||
<span class="content-icon-text">
|
||||
<a-icon class="icon" type="eye"/>
|
||||
<span>123456</span>
|
||||
</span>
|
||||
<span class="content-icon-text">
|
||||
<a-icon class="icon" type="like"/>
|
||||
<span>123456</span>
|
||||
</span>
|
||||
<span class="content-icon-text">
|
||||
<a-icon class="icon" type="star"/>
|
||||
<span>123456</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="box-text">
|
||||
<div class="header-text">
|
||||
{{$t('comment')}}
|
||||
</div>
|
||||
</div>
|
||||
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="24">
|
||||
<div class="box-title-text">
|
||||
<a-form-model-item class="itemModel" prop="approvalOpinion">
|
||||
<a-textarea :placeholder="$t('pleaseEnter')+$t('comment')"
|
||||
v-model="formInline.approvalOpinion"
|
||||
:rows="4"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form-model>
|
||||
<div class="content-button">
|
||||
<a-button class="header-btn submit" @click="release" type="primary">{{$t('release')}}</a-button>
|
||||
</div>
|
||||
<div>
|
||||
<div class="box-text">
|
||||
<div class="header-text">
|
||||
<span style="margin-right: 20px">张三</span>
|
||||
2022-12-12 10:10:12
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
sfdsfdsf的防控流感的飞机过来看的结果东法兰克感觉地方给了地方国家的分开两个就地方孤苦伶仃附件给领导反馈
|
||||
独守空房了就收到付款了的角色发看来都是风景但是考虑附件第三方库老师积分迪斯科浪费绝对是分类的课时费
|
||||
是反抗拉萨的飞机罗斯福就点十六分就但是发
|
||||
迪斯科浪费电视机分厘卡的设计分类的水库附近的说服力但是积分的历史房价多少发了多少给京东方管理看豆腐干豆腐干看
|
||||
a fjsd fklsdjfk s是否考虑技术的反抗类毒素就发的撒开了房间但是发离开打扫房间是开了房间都是老师JFK了的身份圣诞快乐就是的反抗类毒素解放迪斯科浪费是
|
||||
考虑到房价打开拉萨附近分离技术的领导是否打开拉萨范德萨发了开始就发的考虑是否就但是考虑发及代理商开发就十分大师傅看
|
||||
</div>
|
||||
<div class="box-text">
|
||||
<div class="header-text">
|
||||
<span style="margin-right: 20px">张三</span>
|
||||
2022-12-12 10:10:12
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
sfdsfdsf的防控流感的飞机过来看的结果东法兰克感觉地方给了地方国家的分开两个就地方孤苦伶仃附件给领导反馈
|
||||
独守空房了就收到付款了的角色发看来都是风景但是考虑附件第三方库老师积分迪斯科浪费绝对是分类的课时费
|
||||
是反抗拉萨的飞机罗斯福就点十六分就但是发
|
||||
迪斯科浪费电视机分厘卡的设计分类的水库附近的说服力但是积分的历史房价多少发了多少给京东方管理看豆腐干豆腐干看
|
||||
a fjsd fklsdjfk s是否考虑技术的反抗类毒素就发的撒开了房间但是发离开打扫房间是开了房间都是老师JFK了的身份圣诞快乐就是的反抗类毒素解放迪斯科浪费是
|
||||
考虑到房价打开拉萨附近分离技术的领导是否打开拉萨范德萨发了开始就发的考虑是否就但是考虑发及代理商开发就十分大师傅看
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<viewFileModel ref="viewFileModelRef"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import viewFileModel from '@/components/viewFileModel/index'
|
||||
import { getAction, postAction, downloadFile } from '@/api/manage'
|
||||
|
||||
export default {
|
||||
name: 'problemKnowledgeBaseView',
|
||||
components: {
|
||||
viewFileModel
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
standardContentList: [
|
||||
{
|
||||
title: this.$t('problemClassification'),
|
||||
value: ''
|
||||
},
|
||||
{
|
||||
title: this.$t('market'),
|
||||
value: ''
|
||||
},
|
||||
{
|
||||
title: this.$t('standardNo'),
|
||||
value: ''
|
||||
},
|
||||
{
|
||||
title: this.$t('standardName'),
|
||||
value: ''
|
||||
},
|
||||
{
|
||||
title: this.$t('enclosure'),
|
||||
type: 2,
|
||||
value: ''
|
||||
}
|
||||
],
|
||||
queryForm: {},
|
||||
formInline: {},
|
||||
rules: {}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.title = this.$t('applicableInstructionsMarketList')
|
||||
},
|
||||
methods: {
|
||||
clickButtonToUpload(item) {
|
||||
this.$refs.viewFileModelRef.clickButtonToUpload(item)
|
||||
},
|
||||
release() {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
@import '~@assets/less/common.less';
|
||||
|
||||
.doc-detail {
|
||||
background: #fff;
|
||||
height: 100%;
|
||||
|
||||
.doc-detail-wrap {
|
||||
.doc-detail-header {
|
||||
width: 100%;
|
||||
height: 68px;
|
||||
line-height: 68px;
|
||||
padding: 0 0 0 32px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
border-bottom: 2px #eff1f3 solid;
|
||||
z-index: 1000;
|
||||
background: #fff;
|
||||
|
||||
.doc-detail-title {
|
||||
display: inline-block;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
font-size: 20px;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
line-height: 68px;
|
||||
}
|
||||
|
||||
.doc-detail-right {
|
||||
width: 800px;
|
||||
line-height: 68px;
|
||||
display: flex;
|
||||
|
||||
.doc-detail-btn {
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.content-box {
|
||||
padding: 0 32px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.header-text {
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
height: 80px;
|
||||
color: #000F16;
|
||||
line-height: 80px;
|
||||
}
|
||||
|
||||
.processBackground-text {
|
||||
font-size: 16px;
|
||||
color: #000F16;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.box-text {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
height: 60px;
|
||||
line-height: 40px;
|
||||
|
||||
.header-text {
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
color: #000F16;
|
||||
}
|
||||
}
|
||||
|
||||
.content-text {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
|
||||
.text-field {
|
||||
width: 33%;
|
||||
margin-bottom: 8px;
|
||||
|
||||
.text-field-left {
|
||||
width: 124px;
|
||||
display: inline-block;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #6F7385;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
margin-right: 24px;
|
||||
}
|
||||
|
||||
.text-field-right {
|
||||
width: calc(100% - 200px);
|
||||
display: inline-block;
|
||||
font-size: 16px;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
color: #040B29;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.text-field-right-url {
|
||||
color: #00B3BE !important;
|
||||
cursor: pointer;
|
||||
margin-top: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.content {
|
||||
font-size: 16px;
|
||||
color: #040B29;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.content-icon {
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
font-size: 16px;
|
||||
color: #040B29;
|
||||
font-weight: 400;
|
||||
text-align: right;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.content-icon-text {
|
||||
display: inline-block;
|
||||
padding: 0 20px;
|
||||
cursor: pointer;
|
||||
line-height: 40px;
|
||||
}
|
||||
|
||||
.content-icon-text .icon {
|
||||
font-size: 24px;
|
||||
color: #3b4249 !important;
|
||||
}
|
||||
|
||||
.content-icon-text span {
|
||||
display: inline-block;
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
.box-title-text {
|
||||
line-height: 1.4;
|
||||
display: flex;
|
||||
/*align-items: center;*/
|
||||
}
|
||||
|
||||
.title-text {
|
||||
width: 88px;
|
||||
text-align: right;
|
||||
display: inline-block;
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
margin-right: 16px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
height: 42px;
|
||||
line-height: 48px;
|
||||
color: #000F16;
|
||||
}
|
||||
|
||||
.box-input {
|
||||
display: inline-block;
|
||||
height: 38px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.itemModel {
|
||||
width: 100%;
|
||||
display: inline-block;
|
||||
margin-top: 2px;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.content-button {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.header-btn {
|
||||
height: 38px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,40 @@
|
||||
<template>
|
||||
<a-card :bordered="false">
|
||||
<a-tabs v-model="tabModel" @change="callback">
|
||||
<a-tab-pane :key="$t('problemKnowledgeBase')" :tab="$t('problemKnowledgeBase')">
|
||||
<problemKnowledgeBaseList v-if="tabModel == $t('problemKnowledgeBase')" ref="problemKnowledgeBaseListRef"/>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="Country Card" tab="Country Card">
|
||||
<countryCardList v-if="tabModel == 'Country Card'" ref="countryCardListRef"/>
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
</a-card>
|
||||
</template>
|
||||
<script>
|
||||
import problemKnowledgeBaseList from './components/problemKnowledgeBaseList'
|
||||
import countryCardList from './components/countryCardList'
|
||||
|
||||
export default {
|
||||
name: 'index',
|
||||
components: {
|
||||
problemKnowledgeBaseList,
|
||||
countryCardList
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tabModel: this.$t('problemKnowledgeBase')
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
callback(key) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
+14
-7
@@ -10,7 +10,7 @@
|
||||
<a-form-model-item class="itemModel" prop="titleCn">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.titleCn"
|
||||
v-model.trim="formInline.titleCn"
|
||||
:placeholder="$t('PleaseEnter')+$t('title')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -24,7 +24,7 @@
|
||||
<a-form-model-item class="itemModel" prop="titleEn">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.titleEn"
|
||||
v-model.trim="formInline.titleEn"
|
||||
:placeholder="$t('PleaseEnter')+$t('englishTitle')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -128,7 +128,7 @@
|
||||
<a-form-model-item class="itemModel" prop="implementCar">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.implementCar"
|
||||
v-model.trim="formInline.implementCar"
|
||||
:placeholder="$t('PleaseEnter')+$t('implementationModel')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -158,7 +158,7 @@
|
||||
<a-form-model-item class="itemModel" prop="newCarImplementTime">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.newCarImplementTime"
|
||||
v-model.trim="formInline.newCarImplementTime"
|
||||
:placeholder="$t('PleaseEnter')+$t('ImplementationDate')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -172,7 +172,7 @@
|
||||
<a-form-model-item class="itemModel" prop="productionCarImplementTime">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.productionCarImplementTime"
|
||||
v-model.trim="formInline.productionCarImplementTime"
|
||||
:placeholder="$t('PleaseEnter')+$t('vehicleInProductionDate')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -267,7 +267,7 @@
|
||||
<a-form-model-item class="itemModel" prop="link">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.link"
|
||||
v-model.trim="formInline.link"
|
||||
:placeholder="$t('PleaseEnter')+$t('link')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -379,6 +379,8 @@
|
||||
this.formInline = JSON.parse(JSON.stringify(this.formInlineQuery))
|
||||
if (this.formInline.technologyTerritory) {
|
||||
this.formInline.technologyTerritory = this.formInline.technologyTerritory.split(',')
|
||||
} else {
|
||||
this.formInline.technologyTerritory = []
|
||||
}
|
||||
this.formInline = { ...this.formInline }
|
||||
} else {
|
||||
@@ -396,6 +398,11 @@
|
||||
this.formInline.titleCn = value.serial_number + ' ' + value.title
|
||||
this.formInline.titleEn = value.serial_number + ' ' + value.title_en
|
||||
this.formInline.technologyTerritory = value.technology_territory_dict
|
||||
if (this.formInline.technologyTerritory) {
|
||||
this.formInline.technologyTerritory = this.formInline.technologyTerritory.split(',')
|
||||
} else {
|
||||
this.formInline.technologyTerritory = []
|
||||
}
|
||||
this.formInline.applyCar = value.shi4_yong4_che1_xing2_dict
|
||||
this.formInline.applyScope = value.shi4_yong4_fan4_wei2_dict
|
||||
this.formInline.state = value.state_dict
|
||||
@@ -406,7 +413,7 @@
|
||||
var pos = curPath.indexOf(pathname)
|
||||
var localhostPath = curPath.substring(0, pos)
|
||||
this.formInline.link = localhostPath + '/docManage/library/detail?id=' + value.id
|
||||
this.formInline = {...this.formInline}
|
||||
this.formInline = { ...this.formInline }
|
||||
},
|
||||
getSysCategoryTree() {
|
||||
getAction('/sys/category/getSysCategoryTree', {}).then((res) => {
|
||||
|
||||
@@ -192,6 +192,10 @@
|
||||
})
|
||||
},
|
||||
deleteLib(val) {
|
||||
if (val.children && val.children.length > 0) {
|
||||
this.$message.warning(this.$t('thereWhichCannotDeleted'))
|
||||
return
|
||||
}
|
||||
let _this = this
|
||||
this.$confirm({
|
||||
content: _this.$t('ConfirmDelete'),
|
||||
|
||||
+39
-7
@@ -14,12 +14,13 @@
|
||||
<a-col :span="12">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text"
|
||||
:title="$t('chineseTitle')">{{$t('chineseTitle')}}</span>
|
||||
<span class="Required">*</span>
|
||||
<span class="title-text-text"
|
||||
:title="$t('chineseTitle')">{{$t('chineseTitle')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="chineseTitle">
|
||||
<a-form-model-item class="itemModel" prop="titleCn">
|
||||
<a-input class="box-input"
|
||||
v-model="formInline.titleCn"
|
||||
v-model.trim="formInline.titleCn"
|
||||
:placeholder="$t('PleaseEnter')+$t('chineseTitle')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -27,11 +28,12 @@
|
||||
<a-col :span="12">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="Required">*</span>
|
||||
<span class="title-text-text" :title="$t('englishTitle')">{{$t('englishTitle')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="englishTitle">
|
||||
<a-form-model-item class="itemModel" prop="titleEn">
|
||||
<a-input class="box-input"
|
||||
v-model="formInline.titleEn"
|
||||
v-model.trim="formInline.titleEn"
|
||||
:placeholder="$t('PleaseEnter')+$t('englishTitle')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -77,7 +79,32 @@
|
||||
visible: false,
|
||||
confirmLoading: false,
|
||||
formInline: {},
|
||||
rules: {},
|
||||
rules: {
|
||||
titleCn: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('chineseTitle') + this.$t('cannotEmpty'),
|
||||
trigger: 'blur'
|
||||
},
|
||||
{
|
||||
max: 100,
|
||||
message: this.$t('chineseTitle') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
],
|
||||
titleEn: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('englishTitle') + this.$t('cannotEmpty'),
|
||||
trigger: 'blur'
|
||||
},
|
||||
{
|
||||
max: 100,
|
||||
message: this.$t('englishTitle') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
]
|
||||
},
|
||||
ParentList: [],
|
||||
title: '',
|
||||
url: {
|
||||
@@ -240,4 +267,9 @@
|
||||
.formAdd {
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.Required {
|
||||
color: red;
|
||||
margin-right: 4px;
|
||||
}
|
||||
</style>
|
||||
+33
-25
@@ -1,15 +1,15 @@
|
||||
<template>
|
||||
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
|
||||
<div v-for="(item,index) in dataList" :key="index">
|
||||
<div v-for="(item,index) in formInline.dataList" :key="index">
|
||||
<div class="feedbackPoint">
|
||||
{{'NO.'+(index+1)}}
|
||||
<a-icon class="icon-size"
|
||||
@click="addData"
|
||||
v-if="(dataList.length-1) == index && !disabled"
|
||||
v-if="(formInline.dataList.length-1) == index && !disabled"
|
||||
type="plus-circle"/>
|
||||
<a-icon class="icon-size"
|
||||
@click="deleteData"
|
||||
v-if="dataList.length > 1 && (dataList.length - 1) == index && !disabled"
|
||||
v-if="formInline.dataList.length > 1 && (formInline.dataList.length - 1) == index && !disabled"
|
||||
type="minus-circle"/>
|
||||
</div>
|
||||
<a-row :gutter="24">
|
||||
@@ -18,10 +18,13 @@
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" :title="$t('standardNo')">{{$t('standardNo')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="standardNo">
|
||||
<a-form-model-item class="itemModel"
|
||||
:prop="'dataList.'+index+'.standardNumber'"
|
||||
:rules="[{max: 100,message: $t('standardNo') + $t('cannotExceed') + 100 + $t('Characters'),trigger: 'blur'
|
||||
}]">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="item.standardNumber"
|
||||
v-model.trim="item.standardNumber"
|
||||
:placeholder="$t('PleaseEnter')+$t('standardNo')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -32,10 +35,13 @@
|
||||
<span class="title-text-text"
|
||||
:title="$t('standardNameCn')">{{$t('standardNameCn')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="standardNameCn">
|
||||
<a-form-model-item class="itemModel"
|
||||
:prop="'dataList.'+index+'.standardNameCn'"
|
||||
:rules="[{max: 100,message: $t('standardNameCn') + $t('cannotExceed') + 100 + $t('Characters'),trigger: 'blur'
|
||||
}]">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="item.standardNameCn"
|
||||
v-model.trim="item.standardNameCn"
|
||||
:placeholder="$t('PleaseEnter')+$t('standardNameCn')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -47,10 +53,13 @@
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" :title="$t('standardNameEn')">{{$t('standardNameEn')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel">
|
||||
<a-form-model-item class="itemModel"
|
||||
:prop="'dataList.'+index+'.standardNameEn'"
|
||||
:rules="[{max: 100,message: $t('standardNameEn') + $t('cannotExceed') + 100 + $t('Characters'),trigger: 'blur'
|
||||
}]">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="item.standardNameEn"
|
||||
v-model.trim="item.standardNameEn"
|
||||
:placeholder="$t('PleaseEnter')+$t('standardNameEn')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -101,13 +110,12 @@
|
||||
|
||||
export default {
|
||||
name: 'releaseStandard',
|
||||
props:['formInlineQuery','disabled'],
|
||||
props: ['formInlineQuery', 'disabled'],
|
||||
data() {
|
||||
return {
|
||||
rules: {},
|
||||
formInline: {},
|
||||
CategoryTreeList: [],
|
||||
dataList: []
|
||||
CategoryTreeList: []
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
@@ -115,19 +123,19 @@
|
||||
if (this.formInlineQuery.id) {
|
||||
this.formInline = JSON.parse(JSON.stringify(this.formInlineQuery))
|
||||
this.formInline = { ...this.formInline }
|
||||
this.dataList = this.formInline.newStandardTemplateEOList
|
||||
this.dataList = [...this.dataList]
|
||||
this.formInline.dataList = this.formInline.newStandardTemplateEOList
|
||||
this.formInline = { ...this.formInline }
|
||||
} else {
|
||||
this.dataList = [
|
||||
this.formInline.dataList = [
|
||||
{
|
||||
standardNumber: '',
|
||||
standardNameCn: '',
|
||||
standardNameEn: '',
|
||||
issueTime: '',
|
||||
implementTime:'',
|
||||
implementTime: ''
|
||||
}
|
||||
]
|
||||
this.dataList = [...this.dataList]
|
||||
this.formInline = { ...this.formInline }
|
||||
}
|
||||
})
|
||||
},
|
||||
@@ -139,28 +147,28 @@
|
||||
})
|
||||
},
|
||||
addData() {
|
||||
this.dataList.push({
|
||||
this.formInline.dataList.push({
|
||||
standardNumber: '',
|
||||
standardNameCn: '',
|
||||
standardNameEn: '',
|
||||
issueTime: '',
|
||||
implementTime:'',
|
||||
implementTime: ''
|
||||
})
|
||||
this.dataList = [...this.dataList]
|
||||
this.formInline = { ...this.formInline }
|
||||
},
|
||||
deleteData() {
|
||||
this.dataList.pop()
|
||||
this.dataList = [...this.dataList]
|
||||
this.formInline.dataList.pop()
|
||||
this.formInline = { ...this.formInline }
|
||||
},
|
||||
dateChange(item,index) {
|
||||
this.dataList[index][item] = this.dataList[index][item] ? moment(this.dataList[index][item]).format('YYYY-MM-DD') : ''
|
||||
dateChange(item, index) {
|
||||
this.formInline.dataList[index][item] = this.formInline.dataList[index][item] ? moment(this.formInline.dataList[index][item]).format('YYYY-MM-DD') : ''
|
||||
},
|
||||
getData(callback) {
|
||||
this.$refs.ruleForm.validate(valid => {
|
||||
if (valid) {
|
||||
let query = {
|
||||
id: this.formInline.id,
|
||||
newStandardTemplateEOList: this.dataList
|
||||
newStandardTemplateEOList: this.formInline.dataList
|
||||
}
|
||||
callback && callback(query)
|
||||
}
|
||||
|
||||
+30
-22
@@ -1,15 +1,15 @@
|
||||
<template>
|
||||
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
|
||||
<div v-for="(item,index) in dataList" :key="index">
|
||||
<div v-for="(item,index) in formInline.dataList" :key="index">
|
||||
<div class="feedbackPoint">
|
||||
{{'NO.'+(index+1)}}
|
||||
<a-icon class="icon-size"
|
||||
@click="addData"
|
||||
v-if="(dataList.length-1) == index && !disabled"
|
||||
v-if="(formInline.dataList.length-1) == index && !disabled"
|
||||
type="plus-circle"/>
|
||||
<a-icon class="icon-size"
|
||||
@click="deleteData"
|
||||
v-if="dataList.length > 1 && (dataList.length - 1) == index && !disabled"
|
||||
v-if="formInline.dataList.length > 1 && (formInline.dataList.length - 1) == index && !disabled"
|
||||
type="minus-circle"/>
|
||||
</div>
|
||||
<a-row :gutter="24">
|
||||
@@ -18,10 +18,13 @@
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" :title="$t('planNoChinese')">{{$t('planNoChinese')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="planNoChinese">
|
||||
<a-form-model-item class="itemModel"
|
||||
:prop="'dataList.'+index+'.planNumberCn'"
|
||||
:rules="[{max: 100,message: $t('planNoChinese') + $t('cannotExceed') + 100 + $t('Characters'),trigger: 'blur'
|
||||
}]">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="item.planNumberCn"
|
||||
v-model.trim="item.planNumberCn"
|
||||
:placeholder="$t('PleaseEnter')+$t('planNoChinese')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -32,10 +35,13 @@
|
||||
<span class="title-text-text"
|
||||
:title="$t('standardNameCn')">{{$t('standardNameCn')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="standardNameCn">
|
||||
<a-form-model-item class="itemModel"
|
||||
:prop="'dataList.'+index+'.standardNameCn'"
|
||||
:rules="[{max: 100,message: $t('standardNameCn') + $t('cannotExceed') + 100 + $t('Characters'),trigger: 'blur'
|
||||
}]">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="item.standardNameCn"
|
||||
v-model.trim="item.standardNameCn"
|
||||
:placeholder="$t('PleaseEnter')+$t('standardNameCn')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -47,10 +53,13 @@
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" :title="$t('standardNameEn')">{{$t('standardNameEn')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel">
|
||||
<a-form-model-item class="itemModel"
|
||||
:prop="'dataList.'+index+'.standardNameEn'"
|
||||
:rules="[{max: 100,message: $t('standardNameEn') + $t('cannotExceed') + 100 + $t('Characters'),trigger: 'blur'
|
||||
}]">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="item.standardNameEn"
|
||||
v-model.trim="item.standardNameEn"
|
||||
:placeholder="$t('PleaseEnter')+$t('standardNameEn')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -82,13 +91,12 @@
|
||||
|
||||
export default {
|
||||
name: 'solicitOpinions',
|
||||
props: ['formInlineQuery','disabled'],
|
||||
props: ['formInlineQuery', 'disabled'],
|
||||
data() {
|
||||
return {
|
||||
rules: {},
|
||||
formInline: {},
|
||||
CategoryTreeList: [],
|
||||
dataList: []
|
||||
CategoryTreeList: []
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
@@ -96,10 +104,10 @@
|
||||
if (this.formInlineQuery.id) {
|
||||
this.formInline = JSON.parse(JSON.stringify(this.formInlineQuery))
|
||||
this.formInline = { ...this.formInline }
|
||||
this.dataList = this.formInline.newOpinionTemplateEOList
|
||||
this.dataList = [...this.dataList]
|
||||
this.formInline.dataList = this.formInline.newOpinionTemplateEOList
|
||||
this.formInline = { ...this.formInline }
|
||||
} else {
|
||||
this.dataList = [
|
||||
this.formInline.dataList = [
|
||||
{
|
||||
planNumberCn: '',
|
||||
standardNameCn: '',
|
||||
@@ -107,7 +115,7 @@
|
||||
expirationDate: ''
|
||||
}
|
||||
]
|
||||
this.dataList = [...this.dataList]
|
||||
this.formInline = { ...this.formInline }
|
||||
}
|
||||
})
|
||||
},
|
||||
@@ -119,27 +127,27 @@
|
||||
})
|
||||
},
|
||||
addData() {
|
||||
this.dataList.push({
|
||||
this.formInline.dataList.push({
|
||||
planNumberCn: '',
|
||||
standardNameCn: '',
|
||||
standardNameEn: '',
|
||||
expirationDate: ''
|
||||
})
|
||||
this.dataList = [...this.dataList]
|
||||
this.formInline = { ...this.formInline }
|
||||
},
|
||||
deleteData() {
|
||||
this.dataList.pop()
|
||||
this.dataList = [...this.dataList]
|
||||
this.formInline.dataList.pop()
|
||||
this.formInline = { ...this.formInline }
|
||||
},
|
||||
dateChange(item, index) {
|
||||
this.dataList[index][item] = this.dataList[index][item] ? moment(this.dataList[index][item]).format('YYYY-MM-DD') : ''
|
||||
this.formInline.dataList[index][item] = this.formInline.dataList[index][item] ? moment(this.formInline.dataList[index][item]).format('YYYY-MM-DD') : ''
|
||||
},
|
||||
getData(callback) {
|
||||
this.$refs.ruleForm.validate(valid => {
|
||||
if (valid) {
|
||||
let query = {
|
||||
id: this.formInline.id,
|
||||
newOpinionTemplateEOList: this.dataList
|
||||
newOpinionTemplateEOList: this.formInline.dataList
|
||||
}
|
||||
callback && callback(query)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,393 @@
|
||||
<template>
|
||||
<div>
|
||||
<a-drawer
|
||||
:title="$t('comment')"
|
||||
:maskClosable="false"
|
||||
:width="482"
|
||||
placement="right"
|
||||
:closable="true"
|
||||
@close="handleCancel"
|
||||
:visible="visible">
|
||||
<div class="button-box">
|
||||
<a-input-search class="box-input box-input-search" allowClear
|
||||
@search="allowClearChange"
|
||||
:placeholder="$t('PleaseEnter')+$t('comment')"
|
||||
v-model="commentContent"></a-input-search>
|
||||
<a-button @click="submitQuery" style="margin-right: 8px;" type="primary">{{$t('query')}}</a-button>
|
||||
<a-button @click="handleSubmit" class="button-text" :title="$t('publishComment')" type="primary">
|
||||
{{$t('publishComment')}}
|
||||
</a-button>
|
||||
</div>
|
||||
<div class="comment-box" v-if="dataList && dataList.length > 0">
|
||||
<div class="comment-box-top-box" v-for="(item,index) in dataList" :key="index">
|
||||
<!-- <div class="title-text">{{$t('record')+(index + 1)}}</div>-->
|
||||
<div class="box-content">
|
||||
<div class="img-box">
|
||||
<img src="../../../../assets/daiban.png" class="img" alt="">
|
||||
</div>
|
||||
<div class="box-text">
|
||||
<span class="box-text-name">{{item.name}}</span>
|
||||
<span calss="box-text-time">{{item.createTime}}</span>
|
||||
</div>
|
||||
<div class="box-text-text">
|
||||
{{item.content}}
|
||||
</div>
|
||||
<div class="box-icon" @click="messageClick(item)">
|
||||
<a-icon type="message"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="inside-box" v-if="item.projectCommentVOList && item.projectCommentVOList.length > 0">
|
||||
<div class="box-content-inside" v-for="(val,indexOne) in item.projectCommentVOList" :key="indexOne">
|
||||
<div class="img-box">
|
||||
<img src="../../../../assets/daiban.png" class="img" alt="">
|
||||
</div>
|
||||
<div class="box-text">
|
||||
<span class="box-text-name">{{val.name}}</span>
|
||||
<span calss="box-text-time">{{val.createTime}}</span>
|
||||
</div>
|
||||
<div class="box-text-text">
|
||||
{{val.content}}
|
||||
</div>
|
||||
<div class="box-icon" @click="messageClick(item)">
|
||||
<a-icon type="message"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comment-box-text" v-else>{{$t('noComment')}}</div>
|
||||
<JLoading :loading="loading">{{$t('dataLoading')}}</JLoading>
|
||||
</a-drawer>
|
||||
<a-modal
|
||||
:title="title"
|
||||
:width="500"
|
||||
:visible="visibleComment"
|
||||
:confirm-loading="confirmLoading"
|
||||
:maskClosable="false"
|
||||
@ok="handleOkComment"
|
||||
@cancel="handleCancelComment"
|
||||
>
|
||||
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="24">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="Required">*</span>
|
||||
<span class="title-text-text" :title="title">{{title}}</span>
|
||||
</div>
|
||||
<a-form-model-item v-if="title == $t('replyToComments')" class="itemModel" :prop="'replyContent'">
|
||||
<a-textarea
|
||||
:placeholder="$t('PleaseEnter')+title"
|
||||
:disabled="false"
|
||||
v-model="formInline.replyContent" :rows="4"/>
|
||||
</a-form-model-item>
|
||||
<a-form-model-item v-else-if="title == $t('publishComment')" class="itemModel" :prop="'commentContent'">
|
||||
<a-textarea
|
||||
:placeholder="$t('PleaseEnter')+title"
|
||||
:disabled="false"
|
||||
v-model="formInline.commentContent" :rows="4"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form-model>
|
||||
</a-modal>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction } from '@/api/manage'
|
||||
|
||||
export default {
|
||||
name: 'commentList',
|
||||
data() {
|
||||
return {
|
||||
visible: false,
|
||||
dataList: [],
|
||||
formInline: {},
|
||||
commentContent: '',
|
||||
loading: false,
|
||||
title: this.$t('comment'),
|
||||
confirmLoading: false,
|
||||
visibleComment: false,
|
||||
url: {
|
||||
list: '/project/projectCommentEO/list',
|
||||
add: '/project/projectCommentEO/add',
|
||||
edit: '/project/projectReplyEO/add'
|
||||
},
|
||||
rules: {
|
||||
commentContent: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('publishComment') + this.$t('cannotEmpty'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
],
|
||||
replyContent: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('replyToComments') + this.$t('cannotEmpty'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
handleCancel() {
|
||||
this.visible = false
|
||||
},
|
||||
getData() {
|
||||
this.visible = true
|
||||
this.getList()
|
||||
},
|
||||
handleSubmit() {
|
||||
this.title = this.$t('publishComment')
|
||||
this.formInline = {}
|
||||
this.visibleComment = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.ruleForm.clearValidate()
|
||||
})
|
||||
},
|
||||
allowClearChange() {
|
||||
this.getList()
|
||||
},
|
||||
submitQuery() {
|
||||
this.getList()
|
||||
},
|
||||
getList() {
|
||||
this.loading = true
|
||||
getAction(this.url.list, {
|
||||
projectLibraryId: this.$route.query.id,
|
||||
commentContent: this.commentContent
|
||||
}).then((res) => {
|
||||
if (res.success) {
|
||||
this.loading = false
|
||||
this.dataList = res.result || []
|
||||
} else {
|
||||
this.loading = false
|
||||
this.dataList = []
|
||||
}
|
||||
})
|
||||
},
|
||||
handleOkComment() {
|
||||
this.$refs.ruleForm.validate(valid => {
|
||||
if (valid) {
|
||||
let url = ''
|
||||
let query = {}
|
||||
if (this.title == this.$t('publishComment')) {
|
||||
url = this.url.add
|
||||
query = {
|
||||
commentContent: this.formInline.commentContent,
|
||||
projectLibraryId: this.$route.query.id
|
||||
}
|
||||
} else if (this.title == this.$t('replyToComments')) {
|
||||
url = this.url.edit
|
||||
query = {
|
||||
replyContent: this.formInline.replyContent,
|
||||
projectCommentId: this.formInline.projectCommentId
|
||||
}
|
||||
}
|
||||
this.confirmLoading = true
|
||||
postAction(url, query).then((res) => {
|
||||
if (res.success) {
|
||||
this.$message.success(this.$t('OperationSuccessful'))
|
||||
this.visibleComment = false
|
||||
this.confirmLoading = false
|
||||
this.getList()
|
||||
} else {
|
||||
this.confirmLoading = false
|
||||
this.$message.success(this.$t('operationFailed'))
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
handleCancelComment() {
|
||||
this.visibleComment = false
|
||||
},
|
||||
messageClick(row) {
|
||||
this.formInline = {}
|
||||
this.formInline.projectCommentId = row.id
|
||||
this.title = this.$t('replyToComments')
|
||||
this.visibleComment = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.ruleForm.clearValidate()
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.comment-box {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
height: calc(100% - 140px);
|
||||
width: 100%;
|
||||
overflow: auto;
|
||||
padding: 0 24px 24px 24px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.comment-box-top-box {
|
||||
padding: 30px 24px 24px 24px;
|
||||
box-sizing: border-box;
|
||||
border: 1px solid #F1F2F4;
|
||||
border-radius: 4px;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.img-box {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
display: inline-block;
|
||||
margin-right: 8px;
|
||||
position: absolute;
|
||||
|
||||
.img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.box-text {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
margin-left: 40px;
|
||||
|
||||
.box-text-name {
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
color: #040B29;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.box-text-time {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #6F7385;
|
||||
}
|
||||
}
|
||||
|
||||
.box-text-text {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
display: inline-block;
|
||||
margin-top: 22px;
|
||||
margin-left: 40px;
|
||||
}
|
||||
|
||||
.title-text {
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
.box-content {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.box-content-inside {
|
||||
position: relative;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.box-icon {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.inside-box {
|
||||
background: #F6F7FA;
|
||||
border-radius: 4px;
|
||||
margin-left: 40px;
|
||||
width: calc(100% - 40px);
|
||||
padding: 18px;
|
||||
box-sizing: border-box;
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.button-box {
|
||||
text-align: right;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.drawer-bootom-button {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
z-index: 100;
|
||||
border-top: 1px solid #e8e8e8;
|
||||
padding: 10px 16px;
|
||||
text-align: right;
|
||||
left: 0;
|
||||
background: #fff;
|
||||
border-radius: 0 0 2px 2px;
|
||||
}
|
||||
|
||||
.box-title-text {
|
||||
line-height: 1.4;
|
||||
display: flex;
|
||||
/*align-items: center;*/
|
||||
}
|
||||
|
||||
.title-text {
|
||||
width: 74px;
|
||||
text-align: right;
|
||||
display: inline-block;
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
margin-right: 16px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
height: 42px;
|
||||
line-height: 48px;
|
||||
}
|
||||
|
||||
.itemModel {
|
||||
width: calc(100% - 64px);
|
||||
display: inline-block;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
.Required {
|
||||
color: red;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.title-text-text {
|
||||
margin-top: 9px;
|
||||
}
|
||||
|
||||
.comment-box-text {
|
||||
text-align: center;
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.box-input {
|
||||
width: calc(100% - 168px);
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.button-text {
|
||||
width: 73px;
|
||||
overflow: hidden;
|
||||
padding: 0 8px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
.box-input-search .ant-input-suffix .ant-input-search-icon{
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
+183
-51
@@ -11,7 +11,7 @@
|
||||
<div class="doc-detail-right">
|
||||
<div @click="exportComparisonReportClick" class="operator-text-text"
|
||||
:title="$t('exportComparisonReport')">
|
||||
<a-icon type="export" />
|
||||
<a-icon type="export"/>
|
||||
{{$t('exportComparisonReport')}}
|
||||
</div>
|
||||
<div @click="commentClick" class="operator-text-text"
|
||||
@@ -24,7 +24,8 @@
|
||||
<div style="padding-top: 68px;background: #fff">
|
||||
<div class="detail-content">
|
||||
<div class="detail-content-header" style="margin-bottom: 20px">
|
||||
<a-checkbox @change="onChange" style="margin-left: 20px;float: left"></a-checkbox>
|
||||
<a-checkbox @change="onChange" :indeterminate="indeterminate" :checked="checkAll"
|
||||
style="margin-left: 20px;float: left"></a-checkbox>
|
||||
<div class="detail-content-header-content">
|
||||
<div class="detail-content-header-content-left">
|
||||
所选标准:GB 23456-2020 机动车标准 FMVSS 114 中文.word
|
||||
@@ -37,10 +38,53 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a-checkbox-group @change="onChange" style="width: 100%;overflow: overlay;height: calc(100vh - 300px)">
|
||||
<a-checkbox-group @change="checkboxChange" v-model="checkboxList"
|
||||
style="width: 100%;overflow: overlay;height: calc(100vh - 300px)">
|
||||
<div class="detail-content-content">
|
||||
<a-checkbox value="A" class="detail-checkbox">
|
||||
</a-checkbox>
|
||||
<div class="detail-content-content-text">
|
||||
<div class="detail-content-content-text-left">
|
||||
<div class="detail-content-left">
|
||||
<div class="detail-content-left-top">
|
||||
<span>第10条</span>
|
||||
<span style="margin-left: 10px">光反射器</span>
|
||||
</div>
|
||||
<div class="detail-content-left-button">
|
||||
12. 附加光反射器,可以是贴纸,具有以下规格: a) 正面左右两侧呈白色或淡黄色; b) 背面左右两侧呈红色; c) 防护板
|
||||
sdf kdsf kljsfkldsfdsfdsf
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail-content-right">
|
||||
<div class="detail-content-left-top">
|
||||
<span>第10条</span>
|
||||
<span style="margin-left: 10px">光反射器</span>
|
||||
</div>
|
||||
<div class="detail-content-left-button">
|
||||
12. 附加光反射器,可以是贴纸,具有以下规格: a) 正面左右两侧呈白色或淡黄色; b) 背面左右两侧呈红色; c) 防护板收到反是馈就但是罚款决定书发的科技示范
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail-content-bottom">
|
||||
<div class="detail-content-bottom-left" :title="$t('comparisonDifferenceComment')">
|
||||
<a-icon type="message"/>
|
||||
{{$t('comparisonDifferenceComment')}}:
|
||||
</div>
|
||||
<div class="detail-content-bottom-right">
|
||||
差异是各单位在结构上的差别程度成员在时间横轴上的位置的差别程经理与其他的差别程度 横轴上的位置的差别程经理与其他的差别程度差异
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail-content-content-text-right">
|
||||
<span class="text-button-one">
|
||||
<a class="text-button" @click="comparaEdit">{{$t('edit')}}</a>
|
||||
<a class="text-button" @click="comparaDelete">{{$t('delete')}}</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail-content-content">
|
||||
<a-checkbox value="B" class="detail-checkbox">
|
||||
</a-checkbox>
|
||||
<div class="detail-content-content-text">
|
||||
<div class="detail-content-content-text-left">
|
||||
<div class="detail-content-left">
|
||||
@@ -81,49 +125,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail-content-content">
|
||||
<a-checkbox value="A" class="detail-checkbox">
|
||||
</a-checkbox>
|
||||
<div class="detail-content-content-text">
|
||||
<div class="detail-content-content-text-left">
|
||||
<div class="detail-content-left">
|
||||
<div class="detail-content-left-top">
|
||||
<span>第10条</span>
|
||||
<span style="margin-left: 10px">光反射器</span>
|
||||
</div>
|
||||
<div class="detail-content-left-button">
|
||||
12. 附加光反射器,可以是贴纸,具有以下规格: a) 正面左右两侧呈白色或淡黄色; b) 背面左右两侧呈红色; c) 防护板
|
||||
sdf kdsf kljsfkldsfdsfdsf
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail-content-right">
|
||||
<div class="detail-content-left-top">
|
||||
<span>第10条</span>
|
||||
<span style="margin-left: 10px">光反射器</span>
|
||||
</div>
|
||||
<div class="detail-content-left-button">
|
||||
12. 附加光反射器,可以是贴纸,具有以下规格: a) 正面左右两侧呈白色或淡黄色; b) 背面左右两侧呈红色; c) 防护板收到反是馈就但是罚款决定书发的科技示范
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail-content-bottom">
|
||||
<div class="detail-content-bottom-left" :title="$t('comparisonDifferenceComment')">
|
||||
<a-icon type="message"/>
|
||||
{{$t('comparisonDifferenceComment')}}:
|
||||
</div>
|
||||
<div class="detail-content-bottom-right">
|
||||
差异是各单位在结构上的差别程度成员在时间横轴上的位置的差别程经理与其他的差别程度 横轴上的位置的差别程经理与其他的差别程度差异
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail-content-content-text-right">
|
||||
<span class="text-button-one">
|
||||
<a class="text-button">{{$t('edit')}}</a>
|
||||
<a class="text-button">{{$t('delete')}}</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail-content-content">
|
||||
<a-checkbox value="A" class="detail-checkbox">
|
||||
<a-checkbox value="C" class="detail-checkbox">
|
||||
</a-checkbox>
|
||||
<div class="detail-content-content-text">
|
||||
<div class="detail-content-content-text-left">
|
||||
@@ -166,7 +168,7 @@
|
||||
</div>
|
||||
</a-checkbox-group>
|
||||
<div class="detail-content-content">
|
||||
<a-checkbox value="A" class="detail-checkbox">
|
||||
<a-checkbox value="D" class="detail-checkbox">
|
||||
</a-checkbox>
|
||||
<div class="detail-content-content-text">
|
||||
<div class="detail-content-content-text-left">
|
||||
@@ -190,8 +192,8 @@
|
||||
</div>
|
||||
<div class="detail-content-content-text-right">
|
||||
<span class="text-button-one">
|
||||
<a class="text-button">{{$t('edit')}}</a>
|
||||
<a class="text-button">{{$t('delete')}}</a>
|
||||
<a class="text-button" @click="fullTextEdit">{{$t('edit')}}</a>
|
||||
<!-- <a class="text-button">{{$t('delete')}}</a>-->
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -199,16 +201,70 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a-modal
|
||||
:title="title"
|
||||
:width="600"
|
||||
:visible="visible"
|
||||
:confirm-loading="confirmLoading"
|
||||
:maskClosable="false"
|
||||
@cancel="visible = false"
|
||||
>
|
||||
<template slot="footer">
|
||||
<a-button key="back" @click="visible = false">
|
||||
{{$t('cancel')}}
|
||||
</a-button>
|
||||
<a-button type="primary" @click="fullTextCommentsSubmit">
|
||||
{{$t('submit')}}
|
||||
</a-button>
|
||||
</template>
|
||||
<a-form-model :model="formInlineText" class="formAdd" :rules="rulesText" ref="ruleFormText">
|
||||
<div class="box-title-text-Remarks" v-if="title == $t('fullTextComments')">
|
||||
<div class="title-text-Remarks" :title="$t('fullTextComments')">
|
||||
<span>{{$t('fullTextComments')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" style="width: calc(100% - 113px)" prop="dreUserIdName">
|
||||
<a-textarea :placeholder="$t('pleaseEnter')+$t('fullTextComments')"
|
||||
v-model="formInlineText.fullTextComments"
|
||||
:rows="4"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
<div class="box-title-text-Remarks" v-if="title == $t('comparativeComments')">
|
||||
<div class="title-text-Remarks" :title="$t('comparativeComments')">
|
||||
<span>{{$t('comparativeComments')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" style="width: calc(100% - 113px)" prop="dreUserIdName">
|
||||
<a-textarea :placeholder="$t('pleaseEnter')+$t('comparativeComments')"
|
||||
v-model="formInlineText.comparativeComments"
|
||||
:rows="4"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-form-model>
|
||||
</a-modal>
|
||||
<JLoading :loading="loading">{{$t('dataLoading')}}</JLoading>
|
||||
<commentList ref="commentListRef"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, downloadFile, deleteAction } from '@/api/manage'
|
||||
import commentList from './commentList'
|
||||
|
||||
export default {
|
||||
name: 'comparisonResults',
|
||||
components: {
|
||||
commentList
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loading: false
|
||||
loading: false,
|
||||
checkboxList: [],
|
||||
confirmLoading: false,
|
||||
visible: false,
|
||||
formInlineText: {},
|
||||
rulesText: {},
|
||||
title: '',
|
||||
indeterminate: false,
|
||||
checkAll: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -218,10 +274,65 @@
|
||||
})
|
||||
},
|
||||
commentClick() {
|
||||
|
||||
this.$refs.commentListRef.getData()
|
||||
},
|
||||
exportComparisonReportClick() {
|
||||
|
||||
},
|
||||
checkboxChange(checkedList) {
|
||||
this.indeterminate = !!checkedList.length && checkedList.length < this.checkboxList.length
|
||||
this.checkAll = checkedList.length === this.checkboxList.length
|
||||
},
|
||||
onChange(event) {
|
||||
this.checkAll = event.target.checked
|
||||
if (event.target.checked) {
|
||||
this.checkboxList = ['A', 'B', 'C', 'D']
|
||||
} else {
|
||||
this.checkboxList = []
|
||||
}
|
||||
if (this.checkboxList.length == 0) {
|
||||
this.checkAll = false
|
||||
this.indeterminate = false
|
||||
}
|
||||
},
|
||||
fullTextCommentsSubmit() {
|
||||
this.$refs.ruleForm.validate(valid => {
|
||||
if (valid) {
|
||||
|
||||
}
|
||||
})
|
||||
},
|
||||
fullTextEdit() {
|
||||
this.visible = true
|
||||
this.title = this.$t('fullTextComments')
|
||||
this.formInlineText = {}
|
||||
this.$nextTick(() => {
|
||||
this.$refs.ruleFormText.clearValidate()
|
||||
})
|
||||
},
|
||||
comparaEdit() {
|
||||
this.visible = true
|
||||
this.title = this.$t('comparativeComments')
|
||||
this.formInlineText = {}
|
||||
this.$nextTick(() => {
|
||||
this.$refs.ruleFormText.clearValidate()
|
||||
})
|
||||
},
|
||||
comparaDelete(val) {
|
||||
let _this = this
|
||||
this.$confirm({
|
||||
content: _this.$t('ConfirmDelete'),
|
||||
onOk() {
|
||||
deleteAction(_this.url.deleteOne, { id: val.id }).then((res) => {
|
||||
if (res.success) {
|
||||
_this.$message.success(_this.$t('OperationSuccessful'))
|
||||
_this.getList()
|
||||
} else {
|
||||
_this.$message.warning(_this.$t('operationFailed'))
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -461,4 +572,25 @@
|
||||
text-justify: inter-ideograph;
|
||||
word-break: break-all
|
||||
}
|
||||
|
||||
.box-title-text-Remarks {
|
||||
line-height: 1.4;
|
||||
display: flex;
|
||||
/*align-items: center;*/
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.title-text-Remarks {
|
||||
width: 68px;
|
||||
color: #000F16;
|
||||
display: inline-block;
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
margin-right: 16px;
|
||||
margin-top: 6px;
|
||||
text-align: right;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
</style>
|
||||
+100
-8
@@ -27,7 +27,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div style="padding-top: 68px;background: #fff">
|
||||
<div class="detail-content">
|
||||
<div class="detail-content" style="padding-bottom: 20px">
|
||||
<div style="width: 100%;height: auto;overflow: hidden">
|
||||
<div class="detail-content-left">
|
||||
<div class="detail-content-left-header">
|
||||
@@ -40,7 +40,8 @@
|
||||
/>
|
||||
</div>
|
||||
<div class="detail-content-content-right">
|
||||
<div class="detail-content-content-right-data">
|
||||
<div class="detail-content-content-right-data" @click="detailLeft(0)"
|
||||
:class="{'detail-content-content-right-data-blue':false}">
|
||||
<div class="detail-content-content-right-data-text">
|
||||
1、范围
|
||||
</div>
|
||||
@@ -49,7 +50,8 @@
|
||||
本标准适用于M、N类汽车使用的LED前照灯、或主要由LED光源或LED模块形成远光或近光的LED前照灯。
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail-content-content-right-data">
|
||||
<div class="detail-content-content-right-data" @click="detailLeft(1)"
|
||||
:class="{'detail-content-content-right-data-blue':true}">
|
||||
<div class="detail-content-content-right-data-text">
|
||||
1、范围
|
||||
</div>
|
||||
@@ -77,7 +79,8 @@
|
||||
/>
|
||||
</div>
|
||||
<div class="detail-content-content-right">
|
||||
<div class="detail-content-content-right-data">
|
||||
<div class="detail-content-content-right-data-right" @click="detailRight(0)"
|
||||
:class="{'detail-content-content-right-data-blue-right':true}">
|
||||
<div class="detail-content-content-right-data-text">
|
||||
1、范围
|
||||
</div>
|
||||
@@ -86,7 +89,7 @@
|
||||
本标准适用于M、N类汽车使用的LED前照灯、或主要由LED光源或LED模块形成远光或近光的LED前照灯。
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail-content-content-right-data">
|
||||
<div class="detail-content-content-right-data-right" @click="detailRight(1)">
|
||||
<div class="detail-content-content-right-data-text">
|
||||
1、范围
|
||||
</div>
|
||||
@@ -95,7 +98,7 @@
|
||||
本标准适用于M、N类汽车使用的LED前照灯、或主要由LED光源或LED模块形成远光或近光的LED前照灯。
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail-content-content-right-data">
|
||||
<div class="detail-content-content-right-data-right" @click="detailRight(2)">
|
||||
<div class="detail-content-content-right-data-text">
|
||||
1、范围
|
||||
</div>
|
||||
@@ -104,7 +107,7 @@
|
||||
本标准适用于M、N类汽车使用的LED前照灯、或主要由LED光源或LED模块形成远光或近光的LED前照灯。
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail-content-content-right-data">
|
||||
<div class="detail-content-content-right-data-right" @click="detailRight(3)">
|
||||
<div class="detail-content-content-right-data-text">
|
||||
1、范围
|
||||
</div>
|
||||
@@ -136,6 +139,36 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a-modal
|
||||
:title="$t('fullTextComments')"
|
||||
:width="600"
|
||||
:visible="visible"
|
||||
:confirm-loading="confirmLoading"
|
||||
:maskClosable="false"
|
||||
@cancel="visible = false"
|
||||
>
|
||||
<template slot="footer">
|
||||
<a-button type="primary" @click="fullTextCommentsEdit">
|
||||
{{$t('edit')}}
|
||||
</a-button>
|
||||
<a-button type="primary" @click="fullTextCommentsSubmit">
|
||||
{{$t('submit')}}
|
||||
</a-button>
|
||||
</template>
|
||||
<a-form-model :model="formInlineText" class="formAdd" :rules="rulesText" ref="ruleFormText">
|
||||
<div class="box-title-text-Remarks">
|
||||
<div class="title-text-Remarks" :title="$t('fullTextComments')">
|
||||
<span>{{$t('fullTextComments')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" style="width: calc(100% - 113px)" prop="dreUserIdName">
|
||||
<a-textarea :placeholder="$t('pleaseEnter')+$t('fullTextComments')"
|
||||
v-model="formInlineText.fullTextComments"
|
||||
:disabled="fullTextDisabled"
|
||||
:rows="4"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-form-model>
|
||||
</a-modal>
|
||||
<JLoading :loading="loading">{{$t('dataLoading')}}</JLoading>
|
||||
</div>
|
||||
</template>
|
||||
@@ -146,8 +179,13 @@
|
||||
data() {
|
||||
return {
|
||||
formInline: {},
|
||||
formInlineText: {},
|
||||
rules: {},
|
||||
rulesText: {},
|
||||
loading: false,
|
||||
visible: false,
|
||||
confirmLoading: false,
|
||||
fullTextDisabled: false,
|
||||
gData: [
|
||||
{
|
||||
title: '0-0sdf dsfdsfdsfdsfds',
|
||||
@@ -182,10 +220,37 @@
|
||||
window.open(newUrl.href, '_blank')
|
||||
},
|
||||
addFullTextCommentClick() {
|
||||
|
||||
this.visible = true
|
||||
this.fullTextDisabled = true
|
||||
},
|
||||
turnOffAutomaticMatchingClick() {
|
||||
|
||||
},
|
||||
fullTextCommentsEdit() {
|
||||
this.fullTextDisabled = false
|
||||
},
|
||||
fullTextCommentsSubmit() {
|
||||
|
||||
},
|
||||
detailLeft(num) {
|
||||
let detailLeftColor = document.getElementsByClassName('detail-content-content-right-data-color')
|
||||
if (detailLeftColor && detailLeftColor.length > 0) {
|
||||
detailLeftColor[0].classList.remove('detail-content-content-right-data-color')
|
||||
}
|
||||
let detailLeft = document.getElementsByClassName('detail-content-content-right-data')
|
||||
if (detailLeft && detailLeft.length > 0) {
|
||||
detailLeft[num].classList.add('detail-content-content-right-data-color')
|
||||
}
|
||||
},
|
||||
detailRight(num) {
|
||||
let detailRightColor = document.getElementsByClassName('detail-content-content-right-data-color-right')
|
||||
if (detailRightColor && detailRightColor.length > 0) {
|
||||
detailRightColor[0].classList.remove('detail-content-content-right-data-color-right')
|
||||
}
|
||||
let detailRight = document.getElementsByClassName('detail-content-content-right-data-right')
|
||||
if (detailRight && detailRight.length > 0) {
|
||||
detailRight[num].classList.add('detail-content-content-right-data-color-right')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -332,6 +397,16 @@
|
||||
border: 1px solid #EFF1F3;
|
||||
border-radius: 4px;
|
||||
margin-bottom: 22px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.detail-content-content-right-data-right {
|
||||
padding: 22px 24px;
|
||||
box-sizing: border-box;
|
||||
border: 1px solid #EFF1F3;
|
||||
border-radius: 4px;
|
||||
margin-bottom: 22px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.detail-content-content-right-data:last-child {
|
||||
@@ -387,4 +462,21 @@
|
||||
overflow: hidden;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.detail-content-content-right-data-blue {
|
||||
border: 1px #21c9cc solid;
|
||||
}
|
||||
|
||||
.detail-content-content-right-data-blue-right {
|
||||
border: 1px #21c9cc solid;
|
||||
}
|
||||
|
||||
.detail-content-content-right-data-color {
|
||||
border: 1px red solid;
|
||||
}
|
||||
|
||||
.detail-content-content-right-data-color-right {
|
||||
border: 1px red solid;
|
||||
}
|
||||
|
||||
</style>
|
||||
+148
-35
@@ -47,10 +47,10 @@
|
||||
size="middle"
|
||||
:loading="loadingLeft"
|
||||
:pagination="false"
|
||||
:scroll="{x: '100%',y:400}"
|
||||
:scroll="{x: '100%',y:340}"
|
||||
rowKey="id"
|
||||
:data-source="dataSourceLeft"
|
||||
:row-selection="{ selectedRowKeys: selectedRowKeysLeft, onChange: onSelectChangeLeft }"
|
||||
:row-selection="{ selectedRowKeys: selectedRowKeysLeft, onChange: onSelectChangeLeft,columnTitle:' ' }"
|
||||
:columns="columns"
|
||||
>
|
||||
</a-table>
|
||||
@@ -70,9 +70,10 @@
|
||||
<span class="box-button-standard-left">
|
||||
{{$t('selectedStandard')}}
|
||||
</span>
|
||||
<span class="box-button-standard-right">
|
||||
{{$t('noComparisonDocumentSelected')}}
|
||||
</span>
|
||||
<span class="box-button-standard-right"
|
||||
:class="{'box-button-standard-right-color':selectedRowKeysLeftRecord[0]}">
|
||||
{{selectedRowKeysLeftRecord[0]?selectedRowKeysLeftRecord[0].serialNumber+' '+selectedRowKeysLeftRecord[0].fileName:$t('noComparisonDocumentSelected')}}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail-content-right">
|
||||
@@ -110,10 +111,10 @@
|
||||
size="middle"
|
||||
:loading="loadingRight"
|
||||
:pagination="false"
|
||||
:scroll="{x: '100%',y:400}"
|
||||
:scroll="{x: '100%',y:340}"
|
||||
rowKey="id"
|
||||
:data-source="dataSourceRight"
|
||||
:row-selection="{ selectedRowKeys: selectedRowKeysRight, onChange: onSelectChangeRight }"
|
||||
:row-selection="{ selectedRowKeys: selectedRowKeysRight, onChange: onSelectChangeRight,columnTitle:' ' }"
|
||||
:columns="columns"
|
||||
>
|
||||
</a-table>
|
||||
@@ -133,8 +134,9 @@
|
||||
<span class="box-button-standard-left">
|
||||
{{$t('selectedStandard')}}
|
||||
</span>
|
||||
<span class="box-button-standard-right">
|
||||
{{$t('noComparisonDocumentSelected')}}
|
||||
<span class="box-button-standard-right"
|
||||
:class="{'box-button-standard-right-color':selectedRowKeysRightRecord[0]}">
|
||||
{{selectedRowKeysRightRecord[0]?selectedRowKeysRightRecord[0].serialNumber+' '+selectedRowKeysRightRecord[0].fileName:$t('noComparisonDocumentSelected')}}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -142,12 +144,12 @@
|
||||
<div class="Remarks">
|
||||
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
|
||||
<div class="box-title-text-Remarks">
|
||||
<div class="title-text-Remarks" :title="$t('standard')">
|
||||
<div class="title-text-Remarks" :title="$t('RemarkInfo')">
|
||||
<span>{{$t('RemarkInfo')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="dreUserIdName">
|
||||
<a-form-model-item class="itemModel" prop="remark">
|
||||
<a-textarea :placeholder="$t('pleaseEnter')+$t('RemarkInfo')"
|
||||
v-model="formInline.RemarkInfo"
|
||||
v-model="formInline.remark"
|
||||
:rows="4"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -159,11 +161,13 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<JLoading :loading="loading">{{$t('dataLoading')}}</JLoading>
|
||||
<JLoading :loading="loading">{{$t('pleaseWaitWhileRunning')}}</JLoading>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, deleteAction } from '@/api/manage'
|
||||
|
||||
export default {
|
||||
name: 'initiateDocumentComparison',
|
||||
data() {
|
||||
@@ -179,10 +183,20 @@
|
||||
pageSizeRight: 10,
|
||||
selectedRowKeysRight: [],
|
||||
dataSourceRight: [],
|
||||
selectedRowKeysLeftRecord: [],
|
||||
selectedRowKeysRightRecord: [],
|
||||
totalRight: 0,
|
||||
pageNoRight: 1,
|
||||
formInline: {},
|
||||
rules: {},
|
||||
rules: {
|
||||
remark: [
|
||||
{
|
||||
max: 300,
|
||||
message: this.$t('RemarkInfo') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
]
|
||||
},
|
||||
columns: [
|
||||
{
|
||||
title: this.$t('number'),
|
||||
@@ -196,7 +210,7 @@
|
||||
title: this.$t('standard'),
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
dataIndex: 'standard'
|
||||
dataIndex: 'serialNumber'
|
||||
},
|
||||
{
|
||||
title: this.$t('title'),
|
||||
@@ -208,26 +222,26 @@
|
||||
title: this.$t('TextStatus'),
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
dataIndex: 'TextStatus'
|
||||
dataIndex: 'fileType'
|
||||
},
|
||||
{
|
||||
title: this.$t('fileName'),
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
dataIndex: 'fileName'
|
||||
},
|
||||
{
|
||||
title: this.$t('textInformation'),
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
dataIndex: 'textInformation'
|
||||
}
|
||||
],
|
||||
dataSourceLeft: [],
|
||||
selectedRowKeysLeft: []
|
||||
selectedRowKeysLeft: [],
|
||||
url: {
|
||||
list: '/split/sarFileSplitInfo/page',
|
||||
add: '/compare/sarFileCompareInfo/fullTextComparison'
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getListLeft()
|
||||
this.getListRight()
|
||||
},
|
||||
methods: {
|
||||
Fallback() {
|
||||
@@ -236,43 +250,134 @@
|
||||
})
|
||||
},
|
||||
searchQueryLeft() {
|
||||
|
||||
this.pageNoLeft = 1
|
||||
this.getListLeft()
|
||||
},
|
||||
searchResetLeft() {
|
||||
|
||||
this.queryParamLeft = {}
|
||||
this.pageNoLeft = 1
|
||||
this.getListLeft()
|
||||
},
|
||||
onSelectChangeLeft(value) {
|
||||
onSelectChangeLeft(value, record) {
|
||||
this.selectedRowKeysLeft = value
|
||||
this.selectedRowKeysLeftRecord = []
|
||||
if (this.selectedRowKeysLeft.length > 1) {
|
||||
this.selectedRowKeysLeft.shift()
|
||||
}
|
||||
let content = record.filter(res => {
|
||||
return res.id == this.selectedRowKeysLeft[0]
|
||||
})
|
||||
this.selectedRowKeysLeftRecord = content
|
||||
},
|
||||
pageOnChangeLeft(page) {
|
||||
this.pageNoLeft = page
|
||||
this.getList()
|
||||
this.getListLeft()
|
||||
},
|
||||
SizeChangeLeft(pageSize) {
|
||||
SizeChangeLeft(page, pageSize) {
|
||||
this.pageNoLeft = 1
|
||||
this.pageSizeLeft = pageSize
|
||||
this.getList()
|
||||
this.getListLeft()
|
||||
},
|
||||
searchQueryRight() {
|
||||
|
||||
this.pageNoRight = 1
|
||||
this.getListRight()
|
||||
},
|
||||
searchResetRight() {
|
||||
|
||||
this.queryParamRight = {}
|
||||
this.pageNoRight = 1
|
||||
this.getListRight()
|
||||
},
|
||||
onSelectChangeRight(value) {
|
||||
onSelectChangeRight(value, record) {
|
||||
this.selectedRowKeysRight = value
|
||||
this.selectedRowKeysRightRecord = []
|
||||
if (this.selectedRowKeysRight.length > 1) {
|
||||
this.selectedRowKeysRight.shift()
|
||||
}
|
||||
let content = record.filter(res => {
|
||||
return res.id == this.selectedRowKeysRight[0]
|
||||
})
|
||||
this.selectedRowKeysRightRecord = content
|
||||
},
|
||||
pageOnChangeRight(page) {
|
||||
this.pageNoRight = page
|
||||
this.getList()
|
||||
this.getListRight()
|
||||
},
|
||||
SizeChangeRight(pageSize) {
|
||||
SizeChangeRight(page, pageSize) {
|
||||
this.pageNoRight = 1
|
||||
this.pageSizeRight = pageSize
|
||||
this.getList()
|
||||
this.getListRight()
|
||||
},
|
||||
submit() {
|
||||
if (!this.selectedRowKeysRightRecord[0] || !this.selectedRowKeysLeftRecord[0]) {
|
||||
this.$message.warning(this.$t('pleaseSelectTheDataCompared'))
|
||||
return
|
||||
}
|
||||
this.$refs.ruleForm.validate(valid => {
|
||||
if (valid) {
|
||||
this.loading = true
|
||||
let query = {
|
||||
leftStandard: this.selectedRowKeysLeftRecord[0].id,
|
||||
rightStandard: this.selectedRowKeysRightRecord[0].id,
|
||||
remark: this.formInline.remark
|
||||
}
|
||||
postAction(this.url.add, query).then((res) => {
|
||||
if (res.success) {
|
||||
this.loading = false
|
||||
this.$message.success(this.$t('OperationSuccessful'))
|
||||
|
||||
} else {
|
||||
this.loading = false
|
||||
this.$message.warning(this.$t('operationFailed'))
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
getListLeft() {
|
||||
let queryParam = JSON.parse(JSON.stringify(this.queryParamLeft))
|
||||
Object.keys(queryParam).forEach(val => {
|
||||
if (queryParam[val] instanceof Array) {
|
||||
queryParam[val] = queryParam[val].join(',')
|
||||
}
|
||||
})
|
||||
let query = {
|
||||
pageNo: this.pageNoLeft,
|
||||
pageSize: this.pageSizeLeft,
|
||||
...queryParam
|
||||
}
|
||||
this.loadingLeft = true
|
||||
getAction(this.url.list, query).then((res) => {
|
||||
if (res.success) {
|
||||
this.dataSourceLeft = res.result.records || []
|
||||
this.totalLeft = res.result.total
|
||||
this.loadingLeft = false
|
||||
} else {
|
||||
this.loadingLeft = false
|
||||
}
|
||||
})
|
||||
},
|
||||
getListRight() {
|
||||
let queryParam = JSON.parse(JSON.stringify(this.queryParamRight))
|
||||
Object.keys(queryParam).forEach(val => {
|
||||
if (queryParam[val] instanceof Array) {
|
||||
queryParam[val] = queryParam[val].join(',')
|
||||
}
|
||||
})
|
||||
let query = {
|
||||
pageNo: this.pageNoRight,
|
||||
pageSize: this.pageSizeRight,
|
||||
...queryParam
|
||||
}
|
||||
this.loadingRight = true
|
||||
getAction(this.url.list, query).then((res) => {
|
||||
if (res.success) {
|
||||
this.dataSourceRight = res.result.records || []
|
||||
this.totalRight = res.result.total
|
||||
this.loadingRight = false
|
||||
} else {
|
||||
this.loadingRight = false
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -286,6 +391,8 @@
|
||||
height: 100%;
|
||||
|
||||
.doc-detail-wrap {
|
||||
padding-bottom: 20px;
|
||||
|
||||
.doc-detail-header {
|
||||
width: 100%;
|
||||
z-index: 1000;
|
||||
@@ -319,6 +426,7 @@
|
||||
padding: 24px 32px;
|
||||
box-sizing: border-box;
|
||||
border-bottom: 2px #EFF1F3 solid;
|
||||
height:610px;
|
||||
}
|
||||
|
||||
.detail-content-right {
|
||||
@@ -327,6 +435,7 @@
|
||||
padding: 24px 32px;
|
||||
box-sizing: border-box;
|
||||
border-bottom: 2px #EFF1F3 solid;
|
||||
height: 610px;
|
||||
}
|
||||
|
||||
.page {
|
||||
@@ -442,4 +551,8 @@
|
||||
padding: 0 32px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.box-button-standard-right-color {
|
||||
color: #040B29;
|
||||
}
|
||||
</style>
|
||||
@@ -26,19 +26,10 @@
|
||||
<div class="title-text" :title="$t('releaseSituation')">
|
||||
<span>{{$t('releaseSituation')}}</span>
|
||||
</div>
|
||||
<a-select :placeholder="$t('PleaseSelect')+$t('releaseSituation')"
|
||||
class="box-input"
|
||||
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||
allowClear
|
||||
v-model="queryParam.flowStatus">
|
||||
<a-select-option v-for="(item, key) in gatherResultList"
|
||||
:key="key"
|
||||
:value="item.value">
|
||||
<span style="display: inline-block;width: 100%" :title=" item.name">
|
||||
{{ item.name }}
|
||||
</span>
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
<j-dict-select-tag class="box-input" v-model="queryParam.releaseCondition"
|
||||
:placeholder="$t('PleaseSelect')+$t('releaseSituation')"
|
||||
:type="'select'"
|
||||
:triggerChange="false" dictCode="release_condition"/>
|
||||
</div>
|
||||
</a-col>
|
||||
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
|
||||
@@ -96,7 +87,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction } from '@/api/manage'
|
||||
import { getAction, postAction, deleteAction } from '@/api/manage'
|
||||
|
||||
export default {
|
||||
name: 'index',
|
||||
@@ -105,8 +96,8 @@
|
||||
return {
|
||||
//url传参严格按照当前命名
|
||||
url: {
|
||||
list: '',
|
||||
deleteBatch: ''
|
||||
list: '/compare/sarFileCompareInfo/page',
|
||||
deleteBatch: '/compare/sarFileCompareInfo/deleteBatch'
|
||||
},
|
||||
loading: false,
|
||||
dataSource: [{}],
|
||||
@@ -129,67 +120,67 @@
|
||||
{
|
||||
title: this.$t('standard') + 1,
|
||||
align: 'center',
|
||||
dataIndex: 'serialNumber',
|
||||
dataIndex: 'serialNumberLeft',
|
||||
width: 170
|
||||
},
|
||||
{
|
||||
title: this.$t('title') + 1,
|
||||
align: 'center',
|
||||
dataIndex: 'title',
|
||||
dataIndex: 'titleLeft',
|
||||
width: 170
|
||||
},
|
||||
{
|
||||
title: this.$t('TextStatus'),
|
||||
align: 'center',
|
||||
width: 170,
|
||||
width: 200,
|
||||
ellipsis: true,
|
||||
dataIndex: 'TextStatus'
|
||||
dataIndex: 'fileTypeLeft'
|
||||
},
|
||||
{
|
||||
title: this.$t('fileName'),
|
||||
align: 'center',
|
||||
width: 170,
|
||||
width: 270,
|
||||
ellipsis: true,
|
||||
dataIndex: 'fileName'
|
||||
dataIndex: 'fileNameLeft'
|
||||
},
|
||||
{
|
||||
title: this.$t('standard') + 2,
|
||||
align: 'center',
|
||||
dataIndex: 'serialNumberTwo',
|
||||
dataIndex: 'serialNumberRight',
|
||||
width: 170
|
||||
},
|
||||
{
|
||||
title: this.$t('title') + 2,
|
||||
align: 'center',
|
||||
dataIndex: 'titleTwo',
|
||||
dataIndex: 'titleRight',
|
||||
width: 170
|
||||
},
|
||||
{
|
||||
title: this.$t('TextStatus'),
|
||||
align: 'center',
|
||||
width: 170,
|
||||
width: 200,
|
||||
ellipsis: true,
|
||||
dataIndex: 'TextStatusTwo'
|
||||
dataIndex: 'fileTypeRight'
|
||||
},
|
||||
{
|
||||
title: this.$t('fileName'),
|
||||
align: 'center',
|
||||
width: 170,
|
||||
width: 270,
|
||||
ellipsis: true,
|
||||
dataIndex: 'fileNameTwo'
|
||||
dataIndex: 'fileNameRight'
|
||||
},
|
||||
{
|
||||
title: this.$t('releaseSituation'),
|
||||
align: 'center',
|
||||
width: 170,
|
||||
ellipsis: true,
|
||||
dataIndex: 'releaseSituation'
|
||||
dataIndex: 'releaseState'
|
||||
},
|
||||
{
|
||||
title: this.$t('remarks'),
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
width: 170,
|
||||
width: 270,
|
||||
dataIndex: 'remark'
|
||||
},
|
||||
{
|
||||
@@ -203,7 +194,7 @@
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
// this.getList()
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
searchQuery() {
|
||||
@@ -257,13 +248,13 @@
|
||||
window.open(newUrl.href, '_blank')
|
||||
},
|
||||
subscribe() {
|
||||
|
||||
},
|
||||
edit() {
|
||||
let newUrl = this.$router.resolve({
|
||||
path: '/documentDataComparison'
|
||||
})
|
||||
window.open(newUrl.href, '_blank')
|
||||
},
|
||||
edit() {
|
||||
|
||||
},
|
||||
initiatingProcessClick() {
|
||||
let newUrl = this.$router.resolve({
|
||||
@@ -276,7 +267,7 @@
|
||||
this.$confirm({
|
||||
content: _this.$t('ConfirmDelete'),
|
||||
onOk() {
|
||||
getAction(_this.url.deleteBatch, { ids: val.id }).then((res) => {
|
||||
deleteAction(_this.url.deleteBatch, { ids: val.id }).then((res) => {
|
||||
if (res.success) {
|
||||
_this.$message.success(_this.$t('OperationSuccessful'))
|
||||
_this.getList()
|
||||
|
||||
@@ -187,7 +187,7 @@
|
||||
:wrapper-col="wrapperCol"
|
||||
>
|
||||
<a-form-model-item :label="$t('Foldername')" prop="folderName">
|
||||
<a-input class="box-input add-input" v-model="form.folderName" :placeholder="$t('PleaseEnter')+$t('Foldername')"/>
|
||||
<a-input class="box-input add-input" v-model.trim="form.folderName" :placeholder="$t('PleaseEnter')+$t('Foldername')"/>
|
||||
</a-form-model-item>
|
||||
<a-form-model-item :label="$t('Administrativeprivileges')" prop="authManageIdsName">
|
||||
<PersonnelSelection class="box-input add-input"
|
||||
@@ -205,7 +205,7 @@
|
||||
v-model="form.authViewIdsName"/>
|
||||
</a-form-model-item>
|
||||
<a-form-model-item :label="$t('Folderorder')" prop="orderId">
|
||||
<a-input-number v-model="form.orderId" :min="1" :max="99999" class="box-input add-input"
|
||||
<a-input-number v-model="form.orderId" :min="1" :max="9999" class="box-input add-input"
|
||||
:placeholder="$t('PleaseEnter')+$t('Folderorder')" :formatter="limitNumber"
|
||||
:parser="limitNumber" />
|
||||
<!-- <a-input-number v-model="rowCount" :min="1" :placeholder="$t('pleaseEnter')+$t('numberRows')" :formatter="limitNumber" :parser="limitNumber" />-->
|
||||
@@ -286,12 +286,12 @@ export default {
|
||||
{ required: true, message: this.$t('PleaseEnter') + this.$t('Foldername'), trigger: 'blur' },
|
||||
{ min: 1, max: 50, message: this.$t('cantExeed') + '50' + this.$t('characters'), trigger: 'blur' }
|
||||
],
|
||||
authManageIdsName: [
|
||||
{ required: true, message: this.$t('PleaseSelect') + this.$t('Administrativeprivileges'), trigger: 'change' },
|
||||
],
|
||||
authViewIdsName: [
|
||||
{ required: true, message: this.$t('PleaseSelect') + this.$t('Checkthepermissions'), trigger: 'change' },
|
||||
],
|
||||
// authManageIdsName: [
|
||||
// { required: true, message: this.$t('PleaseSelect') + this.$t('Administrativeprivileges'), trigger: 'change' },
|
||||
// ],
|
||||
// authViewIdsName: [
|
||||
// { required: true, message: this.$t('PleaseSelect') + this.$t('Checkthepermissions'), trigger: 'change' },
|
||||
// ],
|
||||
orderId: [
|
||||
{ required: true, message: this.$t('PleaseEnter') + this.$t('Folderorder'), trigger: 'blur' }
|
||||
// { min: 1, max: 99999, message: this.$t('cantExeed') + '99999' + this.$t('characters'), trigger: 'blur' },
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
:title="$t('WhetherMergeParameters')">{{$t('WhetherMergeParameters')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="combineFlag">
|
||||
<a-radio-group style="margin-top: 2px" @change="flagChange" class="box-input" v-model="formInline.combineFlag">
|
||||
<a-radio-group style="margin-top: 2px" @change="flagChange" defaultValue='1' class="box-input" v-model="formInline.combineFlag">
|
||||
<a-radio value="1">
|
||||
{{$t('nonjoinder')}}
|
||||
</a-radio>
|
||||
@@ -82,11 +82,11 @@
|
||||
<a-col :span="24">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="Required" v-if='required'>*</span>
|
||||
<span class="Required" v-if='!required'>*</span>
|
||||
<span class="title-text-text"
|
||||
:title="$t('MergeSeparator')">{{$t('MergeSeparator')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" :prop="required?'separator':''">
|
||||
<a-form-model-item class="itemModel" :prop="!required?'separator':''">
|
||||
<!-- :disabled="disabled"-->
|
||||
<a-input class="box-input"
|
||||
v-model="formInline.separator"
|
||||
@@ -132,6 +132,11 @@ export default {
|
||||
rules: {
|
||||
separator:[
|
||||
{ required: true, message: this.$t('PleaseEnter')+this.$t('MergeSeparator'), trigger: 'change' },
|
||||
{
|
||||
pattern: /[`~!@$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@¥%……&*()——\-+={}|《》?:“”【】、;‘',。、]/,
|
||||
message: this.$t('punctuationmark'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
],
|
||||
certCategory:[
|
||||
{ required: true, message: this.$t('PleaseEnter')+this.$t('certificationCategory'), trigger: 'change' },
|
||||
@@ -188,9 +193,9 @@ export default {
|
||||
flagChange(value){
|
||||
console.log(value.target.value)
|
||||
if(value.target.value == 2){
|
||||
this.required = true
|
||||
}else{
|
||||
this.required = false
|
||||
}else{
|
||||
this.required = true
|
||||
}
|
||||
},
|
||||
getNameList() {
|
||||
@@ -242,13 +247,20 @@ export default {
|
||||
getAction('sys/dict/getDictItems/cert_category', { }).then((res) => {
|
||||
if (res.success) {
|
||||
let tt = ''
|
||||
let tten = ''
|
||||
res.result.forEach((item) => {
|
||||
if(item.value == value){
|
||||
tt=item.title
|
||||
tten=item.textEn
|
||||
}
|
||||
})
|
||||
this.contentListStart = tt
|
||||
console.log(this.contentListStart)
|
||||
let long = localStorage.getItem('language')
|
||||
this.cut = ''
|
||||
if (long && long === 'zh-cn') {
|
||||
this.contentListStart = tt
|
||||
} else if (long && long === 'en-us') {
|
||||
this.contentListStart = tten
|
||||
}
|
||||
}
|
||||
})
|
||||
console.log(value)
|
||||
@@ -268,8 +280,14 @@ export default {
|
||||
query.certCategoryName = this.contentListStart
|
||||
}
|
||||
query.paramsManifestId = this.$route.query.id
|
||||
let long = localStorage.getItem('language')
|
||||
if (long && long === 'zh-cn') {
|
||||
query.exportName = '常规导出'
|
||||
} else if (long && long === 'en-us') {
|
||||
query.exportName = 'normal'
|
||||
}
|
||||
this.confirmLoading = true
|
||||
downloadFile('report/detail/exportNormal', this.$t('GeneralExportInformation')+'.zip', query)
|
||||
downloadFile('report/detail/exportNormal', query.exportName+'.zip', query)
|
||||
this.confirmLoading = false
|
||||
}
|
||||
})
|
||||
|
||||
@@ -243,8 +243,14 @@ export default {
|
||||
// query.certCategoryName = this.contentListStart
|
||||
// }
|
||||
query.paramsManifestId = this.$route.query.id
|
||||
let long = localStorage.getItem('language')
|
||||
if (long && long === 'zh-cn') {
|
||||
query.exportName = '自定义导出'
|
||||
} else if (long && long === 'en-us') {
|
||||
query.exportName = 'custom'
|
||||
}
|
||||
this.confirmLoading = true
|
||||
downloadFile('report/detail/exportCustom', this.$t('CustomizeExportInformation')+'.zip', query)
|
||||
downloadFile('report/detail/exportCustom', query.exportName+'.zip', query)
|
||||
this.confirmLoading = false
|
||||
}
|
||||
})
|
||||
|
||||
@@ -15,11 +15,11 @@
|
||||
<a-row :gutter="24" style='margin-left: -90px;'>
|
||||
<a-col :md="6" :sm="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" :title="$t('certificationCategory')">
|
||||
<span>{{$t('certificationCategory')}}</span>
|
||||
<div class="title-text" :title="$t('NcertificationCategory')">
|
||||
<span>{{$t('NcertificationCategory')}}</span>
|
||||
</div>
|
||||
<j-multi-select-tag class="box-input" v-model="formInline.certCategory"
|
||||
:placeholder="$t('PleaseSelect')+$t('certificationCategory')"
|
||||
:placeholder="$t('PleaseSelect')+$t('NcertificationCategory')"
|
||||
:type="'select'"
|
||||
:triggerChange="false" :dictCode="'cert_category'"/>
|
||||
</div>
|
||||
@@ -35,20 +35,20 @@
|
||||
</a-col>
|
||||
<a-col :md="6" :sm="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" :title="$t('ParameterName')">
|
||||
<span>{{$t('ParameterName')}}</span>
|
||||
<div class="title-text" :title="$t('NParameterName')">
|
||||
<span>{{$t('NParameterName')}}</span>
|
||||
</div>
|
||||
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('ParameterName')"
|
||||
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('NParameterName')"
|
||||
v-model="formInline.paramsName"></a-input>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :md="6" :sm="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" :title="$t('completedBy')">
|
||||
<span>{{$t('completedBy')}}</span>
|
||||
<div class="title-text" :title="$t('dre')">
|
||||
<span>{{$t('dre')}}</span>
|
||||
</div>
|
||||
<PersonnelSelection
|
||||
:query="{db_field_name:'completedBy',db_field_txt:$t('completedBy')}"
|
||||
:query="{db_field_name:'completedBy',db_field_txt:$t('dre')}"
|
||||
:isInput="true"
|
||||
class="box-input"
|
||||
:personneQuery="formInline"
|
||||
@@ -58,11 +58,11 @@
|
||||
</a-col>
|
||||
<a-col :md="6" :sm="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" :title="$t('engineeringInterfacePerson')">
|
||||
<span>{{$t('engineeringInterfacePerson')}}</span>
|
||||
<div class="title-text" :title="$t('sdt')">
|
||||
<span>{{$t('sdt')}}</span>
|
||||
</div>
|
||||
<PersonnelSelection
|
||||
:query="{db_field_name:'engineeringInterfacePerson',db_field_txt:$t('engineeringInterfacePerson')}"
|
||||
:query="{db_field_name:'engineeringInterfacePerson',db_field_txt:$t('sdt')}"
|
||||
:isInput="true"
|
||||
class="box-input"
|
||||
:personneQuery="formInline"
|
||||
@@ -81,12 +81,17 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-operator">
|
||||
<!-- 保存-->
|
||||
<div @click="handlePreservation" class="operator-text" v-has="'report:detail:export:save'">
|
||||
<a-icon type="check-circle"/>
|
||||
{{$t('preservation')}}
|
||||
</div>
|
||||
<div @click="ConventionalExport" class="operator-text" v-has="'report:detail:export:normal'">
|
||||
<!-- <a-icon type="plus"/>-->
|
||||
<a-icon type="download"/>
|
||||
{{$t('ConventionalExport')}}
|
||||
</div>
|
||||
<div @click="CustomExport" class="operator-text" v-has="'report:detail:export:custom'">
|
||||
<!-- <a-icon type="delete"/>-->
|
||||
<a-icon type="download"/>
|
||||
{{$t('CustomExport')}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -134,6 +139,7 @@
|
||||
<!-- </div>-->
|
||||
<conventionalModel :url="url" ref="conventionalModel"/>
|
||||
<customelModel :url="url" ref="customelModel"/>
|
||||
<JLoading :loading="textLoading">{{this.$t('pleaseWaitWhileRunning')}}</JLoading>
|
||||
</a-card>
|
||||
</template>
|
||||
|
||||
@@ -159,6 +165,7 @@ export default {
|
||||
columns:[],
|
||||
selectedRowKeys: [],
|
||||
formInline: {},
|
||||
textLoading:false,
|
||||
url: {
|
||||
tableHeader: 'report/detail/getHeader',
|
||||
tableList: 'report/detail/list',
|
||||
@@ -286,6 +293,59 @@ export default {
|
||||
this.formInline[value] = id
|
||||
this.formInline = { ...this.formInline }
|
||||
},
|
||||
// 保存
|
||||
handlePreservation(num) {
|
||||
let _this = this
|
||||
let postDate = []
|
||||
let data = JSON.parse(JSON.stringify(this.dataSource))
|
||||
let selectedRowKeysValue = []
|
||||
data.forEach(res => {
|
||||
selectedRowKeysValue.push(res)
|
||||
})
|
||||
console.log(selectedRowKeysValue)
|
||||
for (let i = 0; i < selectedRowKeysValue.length; i++) {
|
||||
let postDateobj = {}
|
||||
let itemIn = Object.keys(selectedRowKeysValue[i])
|
||||
console.log(itemIn)
|
||||
for (let j = 0; j < itemIn.length; j++) {
|
||||
if (itemIn[j] !== 'sdt' && selectedRowKeysValue[i][itemIn[j]].list) {
|
||||
if (selectedRowKeysValue[i][itemIn[j]] instanceof Object && !(selectedRowKeysValue[i][itemIn[j]] instanceof Array)) {
|
||||
postDateobj[itemIn[j]] = selectedRowKeysValue[i][itemIn[j]]
|
||||
for (let k = 0; k < selectedRowKeysValue[i][itemIn[j]].list.length; k++) {
|
||||
console.log(selectedRowKeysValue[i][itemIn[j]].list[k].dataValue)
|
||||
if (selectedRowKeysValue[i][itemIn[j]].list[k].type == 'pull_more' && selectedRowKeysValue[i][itemIn[j]].list[k].dataValue !== null && selectedRowKeysValue[i][itemIn[j]].list[k].dataValue instanceof Array) {
|
||||
selectedRowKeysValue[i][itemIn[j]].list[k].dataValue = selectedRowKeysValue[i][itemIn[j]].list[k].dataValue.join(',')
|
||||
}
|
||||
if (selectedRowKeysValue[i][itemIn[j]].list[k].type == 'text' && selectedRowKeysValue[i][itemIn[j]].list[k].dataValue !== null) {
|
||||
selectedRowKeysValue[i][itemIn[j]].list[k].dataValue = selectedRowKeysValue[i][itemIn[j]].list[k].dataValue.toString()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
postDateobj.id = selectedRowKeysValue[i].id
|
||||
postDate.push(postDateobj)
|
||||
}
|
||||
let configDataList = { configDataList: postDate }
|
||||
if (selectedRowKeysValue && selectedRowKeysValue.length > 0) {
|
||||
this.textLoading = true
|
||||
let query = {
|
||||
...configDataList,
|
||||
paramsManifestId: this.$route.query.id
|
||||
}
|
||||
postAction('/report/detail/save', query).then((res) => {
|
||||
if (res.success) {
|
||||
_this.$message.success(_this.$t('OperationSuccessful'))
|
||||
this.$refs.CollectionTabel.getTableList()
|
||||
this.textLoading = false
|
||||
} else {
|
||||
_this.$message.warning(_this.$t('operationFailed'))
|
||||
this.textLoading = false
|
||||
}
|
||||
})
|
||||
} else {
|
||||
}
|
||||
},
|
||||
getTableList() {
|
||||
// console.log('this.searchParmestable',this.searchParmes)
|
||||
let pageNo = JSON.parse(JSON.stringify(this.pageNo))
|
||||
@@ -319,70 +379,6 @@ export default {
|
||||
getDataSource(data) {
|
||||
this.dataSource = data
|
||||
},
|
||||
handlePreservation(num) {
|
||||
let _this = this
|
||||
let postDate = []
|
||||
let data = JSON.parse(JSON.stringify(this.dataSource))
|
||||
let selectedRowKeysValue = []
|
||||
data.forEach(res => {
|
||||
if (res.state == 'Wait Fill' || res.state == '待填写') {
|
||||
selectedRowKeysValue.push(res)
|
||||
}
|
||||
})
|
||||
for (let i = 0; i < selectedRowKeysValue.length; i++) {
|
||||
let postDateobj = {}
|
||||
let itemIn = Object.keys(selectedRowKeysValue[i])
|
||||
for (let j = 0; j < itemIn.length; j++) {
|
||||
if (itemIn[j] !== 'sdt') {
|
||||
if (selectedRowKeysValue[i][itemIn[j]] instanceof Object && !(selectedRowKeysValue[i][itemIn[j]] instanceof Array)) {
|
||||
postDateobj[itemIn[j]] = selectedRowKeysValue[i][itemIn[j]]
|
||||
for (let k = 0; k < selectedRowKeysValue[i][itemIn[j]].list.length; k++) {
|
||||
if (selectedRowKeysValue[i][itemIn[j]].list[k].type == 'pull_more') {
|
||||
selectedRowKeysValue[i][itemIn[j]].list[k].dataValue = selectedRowKeysValue[i][itemIn[j]].list[k].dataValue.join(',')
|
||||
}
|
||||
if (selectedRowKeysValue[i][itemIn[j]].list[k].type == 'text' && selectedRowKeysValue[i][itemIn[j]].list[k].dataValue !== null) {
|
||||
selectedRowKeysValue[i][itemIn[j]].list[k].dataValue = selectedRowKeysValue[i][itemIn[j]].list[k].dataValue.toString()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
postDateobj.id = selectedRowKeysValue[i].id
|
||||
postDate.push(postDateobj)
|
||||
}
|
||||
let configDataList = { configDataList: postDate }
|
||||
if (selectedRowKeysValue && selectedRowKeysValue.length > 0) {
|
||||
if (num && num == 1) {
|
||||
this.textLoading = true
|
||||
}
|
||||
let query = {
|
||||
...configDataList,
|
||||
paramsManifestId: this.paramsManifest.id
|
||||
}
|
||||
postAction('/params/collectManifest/save', query).then((res) => {
|
||||
if (res.success) {
|
||||
if (num && num == 1) {
|
||||
_this.$message.success(_this.$t('OperationSuccessful'))
|
||||
this.textLoading = false
|
||||
}
|
||||
setTimeout(() => {
|
||||
if (this.currentPersonRole == 'dre') {
|
||||
this.handlePreservation()
|
||||
}
|
||||
}, 10000)
|
||||
} else {
|
||||
if (num && num == 1) {
|
||||
_this.$message.warning(_this.$t('operationFailed'))
|
||||
this.textLoading = false
|
||||
}
|
||||
}
|
||||
})
|
||||
} else {
|
||||
if (num && num == 1) {
|
||||
this.$message.warning(this.$t('theCurrentListSaved'))
|
||||
}
|
||||
}
|
||||
},
|
||||
LoginUserType(val, currentPersonRole, userType) {
|
||||
this.RoleType = []
|
||||
if (this.currentPersonRole == '') {
|
||||
|
||||
@@ -211,11 +211,11 @@ export default {
|
||||
Action(url, query).then((res) => {
|
||||
if (res.success) {
|
||||
this.confirmLoading = false
|
||||
this.$message.success(this.$t('OperationSuccessful'))
|
||||
this.$message.success(res.message)
|
||||
this.visible = false
|
||||
this.$emit('addModelList')
|
||||
} else {
|
||||
this.$message.warning(this.$t('operationFailed'))
|
||||
this.$message.warning(res.message)
|
||||
this.confirmLoading = false
|
||||
}
|
||||
})
|
||||
|
||||
@@ -376,7 +376,7 @@ export default {
|
||||
{ required: true, message: this.$t('PleaseEnter')+this.$t('NiONumber'), trigger: 'blur' },
|
||||
{ min:1, max: 15, message: this.$t('cantExeed')+'15'+this.$t('characters'), trigger: 'blur' },
|
||||
{
|
||||
pattern: /^[0-9a-zA-Z-/. ]{1,}$/,
|
||||
pattern: /^[0-9a-zA-Z-/ ]{1,}$/,
|
||||
message: this.$t('onlyThree'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
|
||||
@@ -0,0 +1,377 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="table-page-search-wrapper">
|
||||
<a-form layout="inline">
|
||||
<a-row :gutter="24">
|
||||
<a-col :md="6" :sm="10">
|
||||
<a-form-item :label="$t('Collectlist')">
|
||||
<a-select v-model="queryParam.ctype" @change="getonChange">
|
||||
<a-select-option v-for="d in options" :key="d.value" :value="d.value" >{{ d.label }}</a-select-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :md="6" :sm="14">
|
||||
<a-form-model-item :label="$t('Statisticalmodels')" prop="value" class="process-form-item">
|
||||
<a-radio-group v-model="queryParam.value" @change="onChange" style='width: 253px'>
|
||||
<a-radio :value="1">
|
||||
{{$t('Thepercentage')}}
|
||||
</a-radio>
|
||||
<a-radio :value="2">
|
||||
{{$t('Quantity')}}
|
||||
</a-radio>
|
||||
</a-radio-group>
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
|
||||
</a-row>
|
||||
</a-form>
|
||||
</div>
|
||||
<div class="box-content">
|
||||
<div class="box-content-left">
|
||||
<div id="main-left"></div>
|
||||
</div>
|
||||
</div>
|
||||
<responsibilityList @responsibility="responsibility" ref="responsibilityListRef"/>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import * as echarts from 'echarts'
|
||||
import { getAction, postAction, deleteAction, downloadFile } from '@/api/manage'
|
||||
import responsibilityList from './responsibilityList'
|
||||
import "echarts/lib/component/dataZoom"
|
||||
|
||||
export default {
|
||||
name: 'DeliverableStatusEchart',
|
||||
components: {
|
||||
responsibilityList
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
queryParam:{
|
||||
value:1,
|
||||
ctype:''
|
||||
},
|
||||
options:[],
|
||||
collecting:[],
|
||||
notStart:[],
|
||||
submit:[],
|
||||
syncReport:[],
|
||||
collectingdata:[],
|
||||
notStartdata:[],
|
||||
submitdata:[],
|
||||
syncReportdata:[],
|
||||
dutyTerritory:[],
|
||||
collectingpercentage:[],
|
||||
collectingquantity:[],
|
||||
notStartpercentage:[],
|
||||
notStartquantity:[],
|
||||
submitpercentage:[],
|
||||
submitquantity:[],
|
||||
syncReportpercentage:[],
|
||||
syncReportquantity:[],
|
||||
url: {
|
||||
getProjectDetailsStatistics: '/project/projectLibraryBase/getProjectDetailsStatisticsCollectManifestData'
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getoptions()
|
||||
|
||||
},
|
||||
methods: {
|
||||
getData(item) {
|
||||
getAction(this.url.getProjectDetailsStatistics, { paramsManifestId: item }).then((res) => {
|
||||
if (res.success) {
|
||||
if (res.result) {
|
||||
this.collecting = res.result.collecting ? res.result.collecting : []
|
||||
this.notStart = res.result.notStart ? res.result.notStart: []
|
||||
this.submit = res.result.submit ? res.result.submit : []
|
||||
this.syncReport = res.result.syncReport ? res.result.syncReport : []
|
||||
this.dutyTerritory = res.result.dutyTerritory ? res.result.dutyTerritory : []
|
||||
this.getEcharts()
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
},
|
||||
getoptions(){
|
||||
getAction('project/projectLibraryBase/getProjectDetailsStatisticsCollectManifestLabel', {id:this.$route.query.id}).then((res) => {
|
||||
if (res.success) {
|
||||
this.options = res.result
|
||||
this.queryParam.ctype = this.options[0].value
|
||||
this.getData(this.queryParam.ctype)
|
||||
} else {
|
||||
}
|
||||
})
|
||||
},
|
||||
getonChange(value){
|
||||
this.collectingpercentage = []
|
||||
this.collectingquantity = []
|
||||
this.notStartpercentage = []
|
||||
this.notStartquantity = []
|
||||
this.submitpercentage = []
|
||||
this.submitquantity = []
|
||||
this.syncReportpercentage = []
|
||||
this.syncReportquantity = []
|
||||
this.getData(value)
|
||||
},
|
||||
onChange(value){
|
||||
this.collectingpercentage = []
|
||||
this.collectingquantity = []
|
||||
this.notStartpercentage = []
|
||||
this.notStartquantity = []
|
||||
this.submitpercentage = []
|
||||
this.submitquantity = []
|
||||
this.syncReportpercentage = []
|
||||
this.syncReportquantity = []
|
||||
this.getEcharts()
|
||||
|
||||
},
|
||||
getEcharts(chart, title, color, data, num) {
|
||||
this.collecting.forEach((item,index) => {
|
||||
this.collectingpercentage.push(item.percentage)
|
||||
this.collectingquantity.push(item.quantity)
|
||||
})
|
||||
this.notStart.forEach((item,index) => {
|
||||
this.notStartpercentage.push(item.percentage)
|
||||
this.notStartquantity.push(item.quantity)
|
||||
})
|
||||
this.submit.forEach((item,index) => {
|
||||
this.submitpercentage.push(item.percentage)
|
||||
this.submitquantity.push(item.quantity)
|
||||
})
|
||||
this.syncReport.forEach((item,index) => {
|
||||
this.syncReportpercentage.push(item.percentage)
|
||||
this.syncReportquantity.push(item.quantity)
|
||||
})
|
||||
if(this.queryParam.value == 1){
|
||||
this.collectingdata = this.collectingpercentage
|
||||
this.notStartdata = this.notStartpercentage
|
||||
this.submitdata = this.submitpercentage
|
||||
this.syncReportdata = this.syncReportpercentage
|
||||
}else if(this.queryParam.value == 2){
|
||||
this.collectingdata = this.collectingquantity
|
||||
this.notStartdata = this.notStartquantity
|
||||
this.submitdata = this.submitquantity
|
||||
this.syncReportdata = this.syncReportquantity
|
||||
}
|
||||
var chartDom = document.getElementById('main-left');
|
||||
var myChart = echarts.init(chartDom);
|
||||
var option;
|
||||
var option1;
|
||||
|
||||
let xAxisData = [];
|
||||
// let data1 = [];
|
||||
// let data2 = [];
|
||||
// let data3 = [];
|
||||
// let data4 = [];
|
||||
xAxisData = this.dutyTerritory
|
||||
// data1.push(+(Math.random() * 2).toFixed(2));
|
||||
// data2.push(+(Math.random() * 100).toFixed(2));
|
||||
// data3.push(+(Math.random() + 0.3).toFixed(2));
|
||||
// data4.push(+Math.random().toFixed(2));
|
||||
|
||||
let yAxis=[];
|
||||
let tooltip= {};
|
||||
let _this = this
|
||||
if(this.queryParam.value === 1){
|
||||
yAxis = [
|
||||
{
|
||||
type: 'value',
|
||||
axisLabel: {
|
||||
show: true,
|
||||
interval: 'auto',
|
||||
formatter: '{value} %'
|
||||
},
|
||||
},
|
||||
]
|
||||
}else{
|
||||
yAxis=[
|
||||
{
|
||||
type: 'value',
|
||||
},
|
||||
];
|
||||
}
|
||||
option = {
|
||||
legend: {
|
||||
data: [this.$t('Notatthe'), this.$t('Inthecollection'), this.$t('Submitted'), this.$t('SynchronizedLibrary')],
|
||||
left: '10%'
|
||||
},
|
||||
toolbox: {
|
||||
// feature: {
|
||||
// magicType: {
|
||||
// type: ['stack']
|
||||
// },
|
||||
// dataView: {}
|
||||
// }
|
||||
},
|
||||
tooltip: {
|
||||
trigger:'axis',
|
||||
// axisPointer: { // 坐标轴指示器,坐标轴触发有效
|
||||
// type: 'line'// 默认为直线,可选为:'line' | 'shadow'
|
||||
// },
|
||||
formatter: function (params) {
|
||||
var html = params[0].name + "<br>";
|
||||
for (var i = 0; i < params.length; i++) {
|
||||
html += params[i].marker + params[i].seriesName + ":" + params[i].value;
|
||||
if (_this.queryParam.value == 1) {
|
||||
html += "%" + "<br>";
|
||||
}else{
|
||||
html +="<br>";
|
||||
}
|
||||
}
|
||||
return html;
|
||||
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
data: xAxisData,
|
||||
// name: 'X Axis',
|
||||
axisLabel: {
|
||||
interval: 0,
|
||||
rotate:25,
|
||||
// formatter: function(value) {
|
||||
// return value.split("").join("\n");
|
||||
// }
|
||||
},
|
||||
// axisLine: { onZero: true },
|
||||
// splitLine: { show: false },
|
||||
// splitArea: { show: false }
|
||||
},
|
||||
yAxis: yAxis,
|
||||
grid: {
|
||||
left: '10%',
|
||||
bottom: '15%'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: this.$t('Notatthe'),
|
||||
type: 'bar',
|
||||
stack: 'one',
|
||||
barWidth: 40,
|
||||
barGap: '-100%',
|
||||
itemStyle: {
|
||||
color: "#707486",
|
||||
},
|
||||
data: this.notStartdata
|
||||
},
|
||||
{
|
||||
name: this.$t('Inthecollection'),
|
||||
type: 'bar',
|
||||
stack: 'one',
|
||||
barWidth: 40,
|
||||
barGap: '-100%',
|
||||
itemStyle: {
|
||||
color: "#00B3BE",
|
||||
},
|
||||
data: this.collectingdata
|
||||
},
|
||||
{
|
||||
name: this.$t('Submitted'),
|
||||
type: 'bar',
|
||||
stack: 'one',
|
||||
barWidth: 40,
|
||||
barGap: '-100%',
|
||||
itemStyle: {
|
||||
color: "#26BD4B",
|
||||
},
|
||||
data: this.submitdata
|
||||
},
|
||||
{
|
||||
name: this.$t('SynchronizedLibrary'),
|
||||
type: 'bar',
|
||||
stack: 'one',
|
||||
barWidth: 40,
|
||||
barGap: '-100%',
|
||||
itemStyle: {
|
||||
color: "#E83030",
|
||||
},
|
||||
data: this.syncReportdata
|
||||
}
|
||||
],
|
||||
dataZoom:[
|
||||
|
||||
{
|
||||
type: 'slider',//给x轴设置滚动条
|
||||
show: true, //flase直接隐藏图形
|
||||
xAxisIndex: [0],
|
||||
bottom: 0,
|
||||
height: 20,
|
||||
showDetail: false,
|
||||
startValue: 0,//滚动条的起始位置
|
||||
endValue: 9 //滚动条的截止位置(按比例分割你的柱状图x轴长度)
|
||||
}
|
||||
|
||||
],
|
||||
};
|
||||
option && myChart.setOption(option, true);
|
||||
|
||||
},
|
||||
mainLeftEcharts(data, color) {
|
||||
this.getEcharts('main-left', this.$t('Parametercollection'), color, data, 1)
|
||||
},
|
||||
responsibility(item) {
|
||||
this.$emit('currentStatus', item)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.box-content {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 20px;
|
||||
|
||||
.box-content-left {
|
||||
width: calc(100% - 12px);
|
||||
height: 600px;
|
||||
border: 2px #eff1f3 solid;
|
||||
|
||||
#main-left {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 24px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
#main-left-content {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 24px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
#main-bottom {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 24px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
}
|
||||
|
||||
.box-content-right {
|
||||
width: calc(50% - 12px);
|
||||
height: 398px;
|
||||
border: 2px #eff1f3 solid;
|
||||
|
||||
#main-right {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 24px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
#main-right-content {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 24px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -125,6 +125,9 @@
|
||||
<a-tab-pane :key="$t('CertificationProgress')" :tab="$t('CertificationProgress')">
|
||||
<certificationProgressEchart @currentStatus="currentStatus" v-if="activeKey == $t('CertificationProgress')"/>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane :key="$t('Parametercollection')" :tab="$t('Parametercollection')">
|
||||
<ParameterCollectionEchart @currentStatus="currentStatus" v-if="activeKey == $t('Parametercollection')"/>
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
<listOfRelevantPersonnel ref="listOfRelevantPersonnelRef"/>
|
||||
<addModel :url="url" ref="addModelRef" @addModelList="addModelList"/>
|
||||
@@ -140,6 +143,7 @@
|
||||
import settingList from './settingList'
|
||||
import currentStatusOfTheProjectEcharts from './currentStatusOfTheProjectEcharts'
|
||||
import deliverableStatusEchart from './deliverableStatusEchart'
|
||||
import ParameterCollectionEchart from './ParameterCollectionEchart'
|
||||
import certificationProgressEchart from './certificationProgressEchart'
|
||||
import { mapGetters } from 'vuex'
|
||||
|
||||
@@ -147,6 +151,7 @@
|
||||
name: 'ProjectDetails',
|
||||
components: {
|
||||
listOfRelevantPersonnel,
|
||||
ParameterCollectionEchart,
|
||||
addModel,
|
||||
settingList,
|
||||
currentStatusOfTheProjectEcharts,
|
||||
|
||||
Reference in New Issue
Block a user