[add] 文档对比迁移
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 3.5 KiB |
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
const system = require('./system/en.js')
|
const system = require('./system/en.js')
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
@@ -91,6 +90,28 @@ module.exports = {
|
|||||||
operationFailed: 'Operation Failed',
|
operationFailed: 'Operation Failed',
|
||||||
nodeQuickLookup: 'Node Quick Find',
|
nodeQuickLookup: 'Node Quick Find',
|
||||||
pleaseEnterOrSelect: 'Please Enter Or Select',
|
pleaseEnterOrSelect: 'Please Enter Or Select',
|
||||||
|
view: 'View',
|
||||||
|
selectOne: 'Please select a data',
|
||||||
|
essentialInformation: 'General Information',
|
||||||
|
download: 'Download',
|
||||||
|
fileName: 'File Name',
|
||||||
|
newNode: 'New node',
|
||||||
|
modifyNode: 'Modify Node',
|
||||||
|
deleteNode: 'Delete Node',
|
||||||
|
moveUp: 'Move Up',
|
||||||
|
moveDown: 'Move Down',
|
||||||
|
copy: 'Copy',
|
||||||
|
confirmReplication: 'Confirm to copy?',
|
||||||
|
confirmDeleteNodes: 'If there are child nodes under this node, they will be deleted synchronously. Are you sure to delete this data?',
|
||||||
|
pleaseSelectData: 'Please Select Data',
|
||||||
|
leastTwo: 'Please Select at Least two pieces of data',
|
||||||
|
number: 'No.',
|
||||||
|
title: 'Title',
|
||||||
|
release: 'Release',
|
||||||
|
withdraw: 'Withdraw',
|
||||||
|
confirmRelease: 'Confirm Release?',
|
||||||
|
confirmWithdraw: 'Confirm to Withdraw?',
|
||||||
|
doNotHavePermissionDeleteData: 'Do not have permission to delete this data',
|
||||||
// 页面头部
|
// 页面头部
|
||||||
header: {
|
header: {
|
||||||
userMenuSearchMenu: 'Search menu',
|
userMenuSearchMenu: 'Search menu',
|
||||||
@@ -314,7 +335,81 @@ module.exports = {
|
|||||||
detailsPhasedImplementation: 'Phased Implementation',
|
detailsPhasedImplementation: 'Phased Implementation',
|
||||||
statuteNumberClause: 'Statute number/clause',
|
statuteNumberClause: 'Statute number/clause',
|
||||||
implementationDateTwo: 'Implementation Date',
|
implementationDateTwo: 'Implementation Date',
|
||||||
typeofImplementation: 'Type of implementation'
|
typeofImplementation: 'Type of implementation',
|
||||||
|
updateLog: 'Change Log',
|
||||||
|
problemKnowledgeBase: 'Knowledge Sharing',
|
||||||
|
collection: 'Invoice Collection',
|
||||||
|
textInformation: 'Document Files',
|
||||||
|
standardBreakdown: 'Standard Breakdown',
|
||||||
|
standardOne: 'Standard',
|
||||||
|
viewFileOne: 'View File',
|
||||||
|
dataLoading: 'Data loading...',
|
||||||
|
standardName: 'Standard Name',
|
||||||
|
modificationContent: 'Modification Content',
|
||||||
|
modificationTime: 'Modification Time',
|
||||||
|
personnel: 'Personnel',
|
||||||
|
documentLibraryDetails: 'Document Library Details',
|
||||||
|
confirmCollection: 'Confirm Collection?',
|
||||||
|
cancelConfirmCollection: 'Are you sure you want to cancel the collection?'
|
||||||
|
},
|
||||||
|
// 文档工具
|
||||||
|
docTool: {
|
||||||
|
// 文档拆分
|
||||||
|
split: {
|
||||||
|
splitText: 'Split Library File',
|
||||||
|
importResults: 'Import Split Results',
|
||||||
|
backDocument: 'Back To Document Library',
|
||||||
|
selectFileType: 'Please select a file type',
|
||||||
|
onlyWord: 'Only word files can be imported',
|
||||||
|
fileType: 'File Type',
|
||||||
|
kmvssTable: 'KMVSS Table',
|
||||||
|
kmvssArticle: 'KMVSS Article',
|
||||||
|
cfr: 'CFR',
|
||||||
|
unece: 'UNECE',
|
||||||
|
jpnAttachment: 'JPN Attachment',
|
||||||
|
jpnArticle: 'JPN Article',
|
||||||
|
gb: 'GB',
|
||||||
|
gbt: 'GB/T',
|
||||||
|
gso: 'GSO',
|
||||||
|
mergerClause: 'Merge Item',
|
||||||
|
batchSetting: 'Batch Set',
|
||||||
|
clauseContent: 'Item Content',
|
||||||
|
clauseNo: 'Item No.',
|
||||||
|
clauseName: 'Item Name',
|
||||||
|
selectDirectoryTerms: 'Please Select the directory location to add terms',
|
||||||
|
documentSplitTemplate: 'Document Split Template',
|
||||||
|
mergeTerms: 'Determine Merger Terms',
|
||||||
|
pleaseUploadSplitFile: 'Please Upload Split File'
|
||||||
|
},
|
||||||
|
comparison: {
|
||||||
|
releaseSituation: 'Release situation',
|
||||||
|
comparisonResults: 'Comparison results',
|
||||||
|
initiateComparison: 'Initiate Comparison',
|
||||||
|
textStatus: 'Text Status',
|
||||||
|
selectedStandard: 'Selected Standard',
|
||||||
|
noComparisonDocumentSelected: 'No comparison document selected',
|
||||||
|
remarkInfo: 'Remarks Info',
|
||||||
|
initiateDocumentComparison: 'Initiate Document Comparison',
|
||||||
|
documentComparison: 'Doc Comparison',
|
||||||
|
viewTheComparisonResults: 'View Results',
|
||||||
|
addFullTextComment: 'Full Text Comment',
|
||||||
|
turnOffAutomaticMatching: 'Turn Off Auto Match',
|
||||||
|
turnOnAutoMatch: 'Turn On Auto Match',
|
||||||
|
comparisonOfArticles: 'Comparison Of Articles',
|
||||||
|
consistentAssessment: 'Consistent',
|
||||||
|
fullTextComments: 'Full Text Comment',
|
||||||
|
pleaseSelectTheDataCompared: 'Please select the data to be compared',
|
||||||
|
viewVarianceAssessment: 'View Variance',
|
||||||
|
viewConsistentAssessment: 'View Consistent',
|
||||||
|
viewAll: 'View All',
|
||||||
|
exportComparisonReport: 'Export Comparison Report',
|
||||||
|
comment: 'Comments',
|
||||||
|
comparisonDifferenceComment: 'Comparison Difference Comment',
|
||||||
|
comparativeComments: 'Comparative Comments',
|
||||||
|
publishComment: 'Comment',
|
||||||
|
noComment: 'No Comments',
|
||||||
|
replyToComments: 'Reply To Comments'
|
||||||
|
}
|
||||||
},
|
},
|
||||||
// 标准选择器
|
// 标准选择器
|
||||||
standardSelect: {
|
standardSelect: {
|
||||||
|
|||||||
@@ -92,6 +92,26 @@ module.exports = {
|
|||||||
pleaseEnterOrSelect: '请输入或选择',
|
pleaseEnterOrSelect: '请输入或选择',
|
||||||
view: '查看',
|
view: '查看',
|
||||||
selectOne: '请选择一条数据',
|
selectOne: '请选择一条数据',
|
||||||
|
essentialInformation: '基本信息',
|
||||||
|
download: '下载',
|
||||||
|
fileName: '文件名称',
|
||||||
|
newNode: '新增节点',
|
||||||
|
modifyNode: '修改节点',
|
||||||
|
deleteNode: '删除节点',
|
||||||
|
moveUp: '上移',
|
||||||
|
moveDown: '下移',
|
||||||
|
copy: '复制',
|
||||||
|
confirmReplication: '确认复制?',
|
||||||
|
confirmDeleteNodes: '该节点下若有子节点将同步删除,确认删除该条数据?',
|
||||||
|
pleaseSelectData: '请选择数据',
|
||||||
|
leastTwo: '请选择至少两条数据',
|
||||||
|
number: '编号',
|
||||||
|
title: '标题',
|
||||||
|
release: '发布',
|
||||||
|
withdraw: '撤回',
|
||||||
|
confirmRelease: '确认发布?',
|
||||||
|
confirmWithdraw: '确认撤回?',
|
||||||
|
doNotHavePermissionDeleteData: '没有权限删除此数据',
|
||||||
// 页面头部
|
// 页面头部
|
||||||
header: {
|
header: {
|
||||||
userMenuSearchMenu: '搜索菜单',
|
userMenuSearchMenu: '搜索菜单',
|
||||||
@@ -315,7 +335,22 @@ module.exports = {
|
|||||||
detailsPhasedImplementation: '分阶段实施详情',
|
detailsPhasedImplementation: '分阶段实施详情',
|
||||||
statuteNumberClause: '法规编号/条款',
|
statuteNumberClause: '法规编号/条款',
|
||||||
implementationDateTwo: '实施日期',
|
implementationDateTwo: '实施日期',
|
||||||
typeofImplementation: '实施类型'
|
typeofImplementation: '实施类型',
|
||||||
|
updateLog: '更新log',
|
||||||
|
problemKnowledgeBase: '知识分享',
|
||||||
|
collection: '收藏',
|
||||||
|
textInformation: '文本信息',
|
||||||
|
standardBreakdown: '标准分解单',
|
||||||
|
standardOne: '标准',
|
||||||
|
viewFileOne: '查看文件',
|
||||||
|
dataLoading: '数据加载中...',
|
||||||
|
standardName: '标准名称',
|
||||||
|
modificationContent: '修改内容',
|
||||||
|
modificationTime: '修改时间',
|
||||||
|
personnel: '人员',
|
||||||
|
documentLibraryDetails: '文档库详情',
|
||||||
|
confirmCollection: '确定收藏?',
|
||||||
|
cancelConfirmCollection: '确定取消收藏?'
|
||||||
},
|
},
|
||||||
// 文档工具
|
// 文档工具
|
||||||
docTool: {
|
docTool: {
|
||||||
@@ -335,7 +370,45 @@ module.exports = {
|
|||||||
jpnArticle: 'JPN Article',
|
jpnArticle: 'JPN Article',
|
||||||
gb: 'GB',
|
gb: 'GB',
|
||||||
gbt: 'GB/T',
|
gbt: 'GB/T',
|
||||||
gso: 'GSO'
|
gso: 'GSO',
|
||||||
|
mergerClause: '合并条款',
|
||||||
|
batchSetting: '批量设置',
|
||||||
|
clauseContent: '条款内容',
|
||||||
|
clauseNo: '条款号',
|
||||||
|
clauseName: '条款名称',
|
||||||
|
selectDirectoryTerms: '请选择添加条款的目录位置',
|
||||||
|
documentSplitTemplate: '文档拆分模板',
|
||||||
|
mergeTerms: '确定合并条款',
|
||||||
|
pleaseUploadSplitFile: '请上传拆分文件'
|
||||||
|
},
|
||||||
|
comparison: {
|
||||||
|
releaseSituation: '发布情况',
|
||||||
|
comparisonResults: '对比结果',
|
||||||
|
initiateComparison: '发起对比',
|
||||||
|
textStatus: '文本状态',
|
||||||
|
selectedStandard: '所选标准',
|
||||||
|
noComparisonDocumentSelected: '未选择对比文档',
|
||||||
|
remarkInfo: '备注信息',
|
||||||
|
initiateDocumentComparison: '发起文档对比',
|
||||||
|
documentComparison: '文档对比',
|
||||||
|
viewTheComparisonResults: '查看对比结果',
|
||||||
|
addFullTextComment: '添加全文评论',
|
||||||
|
turnOffAutomaticMatching: '关闭自动匹配',
|
||||||
|
turnOnAutoMatch: '打开自动匹配',
|
||||||
|
comparisonOfArticles: '条款对比评论',
|
||||||
|
consistentAssessment: '一致',
|
||||||
|
fullTextComments: '全文评论',
|
||||||
|
pleaseSelectTheDataCompared: '请选择需要对比的数据',
|
||||||
|
viewVarianceAssessment: '查看差异项',
|
||||||
|
viewConsistentAssessment: '查看一致项',
|
||||||
|
viewAll: '查看全部',
|
||||||
|
exportComparisonReport: '导出对比报告',
|
||||||
|
comment: '评论',
|
||||||
|
comparisonDifferenceComment: '对比差异评论',
|
||||||
|
comparativeComments: '对比评论',
|
||||||
|
publishComment: '发表评论',
|
||||||
|
noComment: '暂无评论',
|
||||||
|
replyToComments: '回复评论'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 标准选择器
|
// 标准选择器
|
||||||
|
|||||||
@@ -4,165 +4,146 @@
|
|||||||
<a-col :md="(24 / (minLength + 1))" :sm="(24 / minLength)" v-for="(item,index) in searchList" :key="index" style="line-height: 48px">
|
<a-col :md="(24 / (minLength + 1))" :sm="(24 / minLength)" v-for="(item,index) in searchList" :key="index" style="line-height: 48px">
|
||||||
<template v-if="index < minLength">
|
<template v-if="index < minLength">
|
||||||
<!-- 树形选择器 -->
|
<!-- 树形选择器 -->
|
||||||
<div class="box-title-text" v-if="item.field_show_type === FieldType.TREE.value">
|
<template v-if="item.field_show_type === FieldType.TREE.value">
|
||||||
<div class="title-text" :title="item.db_field_txt">
|
<a-form-item :label="item.db_field_txt" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<span>{{item.db_field_txt}}</span>
|
<a-tree-select
|
||||||
</div>
|
tree-node-filter-prop="title"
|
||||||
<a-tree-select
|
v-model="queryParam[item.db_field_name]"
|
||||||
tree-node-filter-prop="title"
|
:maxTagCount="1"
|
||||||
class="box-input"
|
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||||
v-model="queryParam[item.db_field_name]"
|
:tree-data="item.tree"
|
||||||
:maxTagCount="1"
|
tree-checkable
|
||||||
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
:placeholder="$t('pleaseSelect')+item.db_field_txt"
|
||||||
:tree-data="item.tree"
|
/>
|
||||||
tree-checkable
|
</a-form-item>
|
||||||
:placeholder="$t('pleaseSelect')+item.db_field_txt"
|
</template>
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<!-- 输入框 -->
|
<!-- 输入框 -->
|
||||||
<div class="box-title-text"
|
<template
|
||||||
v-else-if="[FieldType.TEXT_STRING.value, FieldType.TEXT.value,FieldType.PERSON.value,
|
v-else-if="[FieldType.TEXT_STRING.value, FieldType.TEXT.value,FieldType.PERSON.value,
|
||||||
FieldType.STANDARD.value, FieldType.TEXT_LINK.value].includes(item.field_show_type)">
|
FieldType.STANDARD.value, FieldType.TEXT_LINK.value].includes(item.field_show_type)">
|
||||||
<div class="title-text" :title="item.db_field_txt">
|
<a-form-item :label="item.db_field_txt" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<span>{{item.db_field_txt}}</span>
|
<a-input :placeholder="$t('pleaseEnter')+item.db_field_txt"
|
||||||
</div>
|
v-model="queryParam[item.db_field_name]"></a-input>
|
||||||
<a-input class="box-input" :placeholder="$t('pleaseEnter')+item.db_field_txt"
|
</a-form-item>
|
||||||
v-model="queryParam[item.db_field_name]"></a-input>
|
</template>
|
||||||
</div>
|
|
||||||
<!-- 数字输入框 -->
|
<!-- 数字输入框 -->
|
||||||
<div class="box-title-text" v-else-if="item.field_show_type === FieldType.TEXT_NUMBER.value">
|
<template v-else-if="item.field_show_type === FieldType.TEXT_NUMBER.value">
|
||||||
<div class="title-text" :title="item.db_field_txt">
|
<a-form-item :label="item.db_field_txt" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<span>{{item.db_field_txt}}</span>
|
<a-input-number :placeholder="$t('pleaseEnter')+item.db_field_txt"
|
||||||
</div>
|
v-model="queryParam[item.db_field_name]" :min="1" :max="99999999"/>
|
||||||
<a-input-number class="box-input" :placeholder="$t('pleaseEnter')+item.db_field_txt"
|
</a-form-item>
|
||||||
v-model="queryParam[item.db_field_name]" :min="1" :max="99999999"/>
|
</template>
|
||||||
</div>
|
|
||||||
<!-- 字典多选框 -->
|
<!-- 字典多选框 -->
|
||||||
<div class="box-title-text" v-else-if="item.field_show_type === FieldType.PULL_MORE.value">
|
<template v-else-if="item.field_show_type === FieldType.PULL_MORE.value">
|
||||||
<div class="title-text" :title="item.db_field_txt">
|
<a-form-item :label="item.db_field_txt" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<span>{{item.db_field_txt}}</span>
|
<j-multi-select-tag v-model="queryParam[item.db_field_name]"
|
||||||
</div>
|
:placeholder="$t('pleaseSelect')+item.db_field_txt" :type="'select'"
|
||||||
<j-multi-select-tag class="box-input" v-model="queryParam[item.db_field_name]"
|
:triggerChange="false" :dictCode="item.dict_field"/>
|
||||||
:placeholder="$t('pleaseSelect')+item.db_field_txt" :type="'select'"
|
</a-form-item>
|
||||||
:triggerChange="false" :dictCode="item.dict_field"/>
|
</template>
|
||||||
</div>
|
|
||||||
<!-- 日期区间 -->
|
<!-- 日期区间 -->
|
||||||
<div class="box-title-text" v-else-if="[FieldType.DATE_SINGLE.value, FieldType.DATE_MORE.value].includes(item.field_show_type)">
|
<tempalet v-else-if="[FieldType.DATE_SINGLE.value, FieldType.DATE_MORE.value].includes(item.field_show_type)">
|
||||||
<div class="title-text" :title="item.db_field_txt">
|
<a-form-item :label="item.db_field_txt" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<span>{{item.db_field_txt}}</span>
|
<a-range-picker v-model="queryParam[item.db_field_name]"
|
||||||
</div>
|
:placeholder="$t('pleaseSelect')+item.db_field_txt"
|
||||||
<a-range-picker class="box-input" v-model="queryParam[item.db_field_name]"
|
format="YYYY-MM-DD" value-format="YYYY-MM-DD"
|
||||||
:placeholder="$t('pleaseSelect')+item.db_field_txt"
|
@change="onChange(item.db_field_name)"></a-range-picker>
|
||||||
format="YYYY-MM-DD" value-format="YYYY-MM-DD"
|
</a-form-item>
|
||||||
@change="onChange(item.db_field_name)"></a-range-picker>
|
</tempalet>
|
||||||
</div>
|
|
||||||
<!-- 字典单选框 -->
|
<!-- 字典单选框 -->
|
||||||
<div class="box-title-text" v-else-if="item.field_show_type === FieldType.PULL_SINGLE.value">
|
<template v-else-if="item.field_show_type === FieldType.PULL_SINGLE.value">
|
||||||
<div class="title-text" :title="item.db_field_txt">
|
<a-form-item :label="item.db_field_txt" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<span>{{item.db_field_txt}}</span>
|
<j-dict-select-tag v-model="queryParam[item.db_field_name]"
|
||||||
</div>
|
:placeholder="$t('pleaseSelect')+item.db_field_txt"
|
||||||
<j-dict-select-tag class="box-input" v-model="queryParam[item.db_field_name]"
|
:type="'select'"
|
||||||
:placeholder="$t('pleaseSelect')+item.db_field_txt"
|
:triggerChange="false" :dictCode="item.dict_field"/>
|
||||||
:type="'select'"
|
</a-form-item>
|
||||||
:triggerChange="false" :dictCode="item.dict_field"/>
|
</template>
|
||||||
</div>
|
|
||||||
<!-- 单选框 -->
|
<!-- 单选框 -->
|
||||||
<!-- <div class="box-title-text" v-else-if="item.field_show_type === '12'">-->
|
<!-- <template v-else-if="item.field_show_type === '12'">-->
|
||||||
<!-- <div class="title-text" :title="item.db_field_txt">-->
|
<!-- <a-form-item :label="item.db_field_txt" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
|
||||||
<!-- <span>{{item.db_field_txt}}</span>-->
|
<!-- <a-select :placeholder="$t('pleaseSelect')+item.db_field_txt"-->
|
||||||
<!-- </div>-->
|
<!-- :getPopupContainer="triggerNode=> triggerNode.parentNode"-->
|
||||||
<!-- <a-select :placeholder="$t('pleaseSelect')+item.db_field_txt"-->
|
<!-- allowClear-->
|
||||||
<!-- class="box-input"-->
|
<!-- v-model="queryParam[item.db_field_name]">-->
|
||||||
<!-- :getPopupContainer="triggerNode=> triggerNode.parentNode"-->
|
<!-- <a-select-option v-for="(item, key) in item.option"-->
|
||||||
<!-- allowClear-->
|
<!-- :key="key"-->
|
||||||
<!-- v-model="queryParam[item.db_field_name]">-->
|
<!-- :value="item.value">-->
|
||||||
<!-- <a-select-option v-for="(item, key) in item.option"-->
|
<!-- <span style="display: inline-block;width: 100%" :title=" item.name">-->
|
||||||
<!-- :key="key"-->
|
<!-- {{ item.name }}-->
|
||||||
<!-- :value="item.value">-->
|
<!-- </span>-->
|
||||||
<!-- <span style="display: inline-block;width: 100%" :title=" item.name">-->
|
<!-- </a-select-option>-->
|
||||||
<!-- {{ item.name }}-->
|
<!-- </a-select>-->
|
||||||
<!-- </span>-->
|
<!-- </a-form-item>-->
|
||||||
<!-- </a-select-option>-->
|
<!-- </template>-->
|
||||||
<!-- </a-select>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-if="index >= minLength && toggleSearchStatus">
|
<template v-if="index >= minLength && toggleSearchStatus">
|
||||||
<div class="box-title-text" v-if="item.field_show_type === FieldType.TREE.value">
|
<template v-if="item.field_show_type === FieldType.TREE.value">
|
||||||
<div class="title-text" :title="item.db_field_txt">
|
<a-form-item :label="item.db_field_txt" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<span>{{item.db_field_txt}}</span>
|
<a-tree-select
|
||||||
</div>
|
tree-node-filter-prop="title"
|
||||||
<a-tree-select
|
v-model="queryParam[item.db_field_name]"
|
||||||
tree-node-filter-prop="title"
|
:maxTagCount="1"
|
||||||
class="box-input"
|
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||||
v-model="queryParam[item.db_field_name]"
|
:tree-data="item.tree"
|
||||||
:maxTagCount="1"
|
tree-checkable
|
||||||
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
:placeholder="$t('pleaseSelect')+item.db_field_txt"
|
||||||
:tree-data="item.tree"
|
/>
|
||||||
tree-checkable
|
</a-form-item>
|
||||||
:placeholder="$t('pleaseSelect')+item.db_field_txt"
|
</template>
|
||||||
/>
|
<template v-else-if="[FieldType.TEXT_STRING.value, FieldType.TEXT.value,FieldType.PERSON.value,
|
||||||
</div>
|
|
||||||
<div class="box-title-text" v-else-if="[FieldType.TEXT_STRING.value, FieldType.TEXT.value,FieldType.PERSON.value,
|
|
||||||
FieldType.STANDARD.value, FieldType.TEXT_LINK.value].includes(item.field_show_type)">
|
FieldType.STANDARD.value, FieldType.TEXT_LINK.value].includes(item.field_show_type)">
|
||||||
<div class="title-text" :title="item.db_field_txt">
|
<a-form-item :label="item.db_field_txt" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<span>{{item.db_field_txt}}</span>
|
<a-input :placeholder="$t('pleaseEnter')+item.db_field_txt"
|
||||||
</div>
|
v-model="queryParam[item.db_field_name]"></a-input>
|
||||||
<a-input class="box-input" :placeholder="$t('pleaseEnter')+item.db_field_txt"
|
</a-form-item>
|
||||||
v-model="queryParam[item.db_field_name]"></a-input>
|
</template>
|
||||||
</div>
|
<template v-else-if="item.field_show_type === FieldType.TEXT_NUMBER.value">
|
||||||
<div class="box-title-text" v-else-if="item.field_show_type === FieldType.TEXT_NUMBER.value">
|
<a-form-item :label="item.db_field_txt" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<div class="title-text" :title="item.db_field_txt">
|
<a-input-number :placeholder="$t('pleaseEnter')+item.db_field_txt"
|
||||||
<span>{{item.db_field_txt}}</span>
|
v-model="queryParam[item.db_field_name]" :min="1" :max="99999999"/>
|
||||||
</div>
|
</a-form-item>
|
||||||
<a-input-number class="box-input" :placeholder="$t('pleaseEnter')+item.db_field_txt"
|
</template>
|
||||||
v-model="queryParam[item.db_field_name]" :min="1" :max="99999999"/>
|
<template v-else-if="item.field_show_type === FieldType.PULL_MORE.value">
|
||||||
</div>
|
<a-form-item :label="item.db_field_txt" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<div class="box-title-text" v-else-if="item.field_show_type === FieldType.PULL_MORE.value">
|
<j-multi-select-tag v-model="queryParam[item.db_field_name]"
|
||||||
<div class="title-text" :title="item.db_field_txt">
|
:placeholder="$t('pleaseSelect')+item.db_field_txt" :type="'select'"
|
||||||
<span>{{item.db_field_txt}}</span>
|
:triggerChange="false" :dictCode="item.dict_field"/>
|
||||||
</div>
|
</a-form-item>
|
||||||
<j-multi-select-tag class="box-input" v-model="queryParam[item.db_field_name]"
|
</template>
|
||||||
:placeholder="$t('pleaseSelect')+item.db_field_txt" :type="'select'"
|
<template v-else-if="[FieldType.DATE_SINGLE.value, FieldType.DATE_MORE.value].includes(item.field_show_type)">
|
||||||
:triggerChange="false" :dictCode="item.dict_field"/>
|
<a-form-item :label="item.db_field_txt" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
</div>
|
<a-range-picker v-model="queryParam[item.db_field_name]"
|
||||||
<div class="box-title-text" v-else-if="[FieldType.DATE_SINGLE.value, FieldType.DATE_MORE.value].includes(item.field_show_type)">
|
format="YYYY-MM-DD" value-format="YYYY-MM-DD"
|
||||||
<div class="title-text" :title="item.db_field_txt">
|
@change="onChange(item.db_field_name)"></a-range-picker>
|
||||||
<span>{{item.db_field_txt}}</span>
|
</a-form-item>
|
||||||
</div>
|
</template>
|
||||||
<a-range-picker class="box-input" v-model="queryParam[item.db_field_name]"
|
<template v-else-if="item.field_show_type === FieldType.PULL_SINGLE.value">
|
||||||
format="YYYY-MM-DD" value-format="YYYY-MM-DD"
|
<a-form-item :label="item.db_field_txt" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
@change="onChange(item.db_field_name)"></a-range-picker>
|
<j-dict-select-tag v-model="queryParam[item.db_field_name]"
|
||||||
</div>
|
:placeholder="$t('pleaseSelect')+item.db_field_txt"
|
||||||
<div class="box-title-text" v-else-if="item.field_show_type === FieldType.PULL_SINGLE.value">
|
:type="'select'"
|
||||||
<div class="title-text" :title="item.db_field_txt">
|
:triggerChange="false" :dictCode="item.dict_field"/>
|
||||||
<span>{{item.db_field_txt}}</span>
|
</a-form-item>
|
||||||
</div>
|
</template>
|
||||||
<j-dict-select-tag class="box-input" v-model="queryParam[item.db_field_name]"
|
<!-- <template v-else-if="item.field_show_type === '12'">-->
|
||||||
:placeholder="$t('pleaseSelect')+item.db_field_txt"
|
<!-- <a-form-item :label="item.db_field_txt" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
|
||||||
:type="'select'"
|
<!-- <a-select :placeholder="$t('pleaseSelect')+item.db_field_txt"-->
|
||||||
:triggerChange="false" :dictCode="item.dict_field"/>
|
<!-- :getPopupContainer="triggerNode=> triggerNode.parentNode"-->
|
||||||
</div>
|
<!-- allowClear-->
|
||||||
<!-- <div class="box-title-text" v-else-if="item.field_show_type === '12'">-->
|
<!-- v-model="queryParam[item.db_field_name]">-->
|
||||||
<!-- <div class="title-text" :title="item.db_field_txt">-->
|
<!-- <a-select-option v-for="(item, key) in item.option"-->
|
||||||
<!-- <span>{{item.db_field_txt}}</span>-->
|
<!-- :key="key"-->
|
||||||
<!-- </div>-->
|
<!-- :value="item.value">-->
|
||||||
<!-- <a-select :placeholder="$t('pleaseSelect')+item.db_field_txt"-->
|
<!-- <span style="display: inline-block;width: 100%" :title=" item.name">-->
|
||||||
<!-- class="box-input"-->
|
<!-- {{ item.name }}-->
|
||||||
<!-- :getPopupContainer="triggerNode=> triggerNode.parentNode"-->
|
<!-- </span>-->
|
||||||
<!-- allowClear-->
|
<!-- </a-select-option>-->
|
||||||
<!-- v-model="queryParam[item.db_field_name]">-->
|
<!-- </a-select>-->
|
||||||
<!-- <a-select-option v-for="(item, key) in item.option"-->
|
<!-- </a-form-item>-->
|
||||||
<!-- :key="key"-->
|
<!-- </template>-->
|
||||||
<!-- :value="item.value">-->
|
|
||||||
<!-- <span style="display: inline-block;width: 100%" :title=" item.name">-->
|
|
||||||
<!-- {{ item.name }}-->
|
|
||||||
<!-- </span>-->
|
|
||||||
<!-- </a-select-option>-->
|
|
||||||
<!-- </a-select>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
</a-col>
|
</a-col>
|
||||||
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
|
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
|
||||||
<a-col :md="6" :sm="24">
|
<a-col :md="6" :sm="24">
|
||||||
@@ -170,8 +151,8 @@
|
|||||||
{{ !toggleSearchStatus ? $t('open') : $t('putAway') }}
|
{{ !toggleSearchStatus ? $t('open') : $t('putAway') }}
|
||||||
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
|
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
|
||||||
</a>
|
</a>
|
||||||
<a-button class="box-button" style="margin-left: 8px" @click="searchReset">{{$t('reset')}}</a-button>
|
<a-button style="margin-left: 8px" @click="searchReset">{{$t('reset')}}</a-button>
|
||||||
<a-button class="box-button" style="margin-left: 8px" type="primary" @click="searchQuery">{{$t('query')}}</a-button>
|
<a-button style="margin-left: 8px" type="primary" @click="searchQuery">{{$t('query')}}</a-button>
|
||||||
</a-col>
|
</a-col>
|
||||||
</span>
|
</span>
|
||||||
</a-row>
|
</a-row>
|
||||||
@@ -215,7 +196,13 @@ export default {
|
|||||||
FieldType,
|
FieldType,
|
||||||
queryParam: {},
|
queryParam: {},
|
||||||
toggleSearchStatus: false,
|
toggleSearchStatus: false,
|
||||||
searchList: []
|
searchList: [],
|
||||||
|
labelCol: {
|
||||||
|
span: 6
|
||||||
|
},
|
||||||
|
wrapperCol: {
|
||||||
|
span: 14
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted () {
|
mounted () {
|
||||||
@@ -331,70 +318,4 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="less">
|
<style scoped lang="less">
|
||||||
.box-title-text {
|
|
||||||
line-height: 1.4;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
.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: calc(100% - 116px);
|
|
||||||
height: 38px;
|
|
||||||
margin-top: 2px;
|
|
||||||
/deep/ .ant-select-selection--single {
|
|
||||||
height: 38px;
|
|
||||||
}
|
|
||||||
/deep/ .ant-select-selection--multiple {
|
|
||||||
height: 38px;
|
|
||||||
.ant-select-selection__rendered > ul > li {
|
|
||||||
margin-top: 6px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/deep/ .ant-select-selection__rendered {
|
|
||||||
line-height: 38px;
|
|
||||||
height: 38px;
|
|
||||||
}
|
|
||||||
/deep/ .ant-calendar-picker {
|
|
||||||
line-height: 38px;
|
|
||||||
height: 38px;
|
|
||||||
}
|
|
||||||
/deep/ .ant-calendar-picker-input {
|
|
||||||
height: 38px;
|
|
||||||
}
|
|
||||||
/deep/ .ant-input-number-input-wrap {
|
|
||||||
line-height: 38px;
|
|
||||||
height: 38px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.box-button {
|
|
||||||
height: 38px;
|
|
||||||
/*margin-top: 2px;*/
|
|
||||||
}
|
|
||||||
|
|
||||||
/deep/ .ant-select-tree {
|
|
||||||
width: auto;
|
|
||||||
height: 300px;
|
|
||||||
overflow: auto;
|
|
||||||
position: absolute;
|
|
||||||
/*background: #fff;*/
|
|
||||||
}
|
|
||||||
|
|
||||||
/deep/ .ant-select-tree-dropdown {
|
|
||||||
min-height: 320px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -117,8 +117,8 @@ export default {
|
|||||||
tokenHeader: { 'X-Access-Token': Vue.ls.get(ACCESS_TOKEN) },
|
tokenHeader: { 'X-Access-Token': Vue.ls.get(ACCESS_TOKEN) },
|
||||||
// url传参严格按照当前命名
|
// url传参严格按照当前命名
|
||||||
url: {
|
url: {
|
||||||
tableHeader: 'document/bussDocumentLibraryEO/getHeader', // 表格头部字段
|
tableHeader: '/document/bussDocumentLibraryEO/getHeader', // 表格头部字段
|
||||||
getSearchList: 'document/bussDocumentLibraryEO/queryCondition', // 搜索字段
|
getSearchList: '/document/bussDocumentLibraryEO/queryCondition', // 搜索字段
|
||||||
tableList: 'document/bussDocumentLibraryEO/queryPageInfo', // 表格数据
|
tableList: 'document/bussDocumentLibraryEO/queryPageInfo', // 表格数据
|
||||||
getAddForm: 'document/bussDocumentLibraryEO/getAddForm', // 表单的字段
|
getAddForm: 'document/bussDocumentLibraryEO/getAddForm', // 表单的字段
|
||||||
addInfo: 'document/bussDocumentLibraryEO/addInfo', // 新增
|
addInfo: 'document/bussDocumentLibraryEO/addInfo', // 新增
|
||||||
|
|||||||
@@ -12,21 +12,21 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="doc-detail-right">
|
<div class="doc-detail-right">
|
||||||
<!-- v-has="'bussLog:page'"-->
|
<!-- v-has="'bussLog:page'"-->
|
||||||
<div @click="updateLog" class="operator-text-text" :title="$t('updateLog')">
|
<div @click="updateLog" class="operator-text-text" :title="$t('docLibrary.updateLog')">
|
||||||
<a-icon type="reload"/>
|
<a-icon type="reload"/>
|
||||||
{{$t('updateLog')}}
|
{{$t('docLibrary.updateLog')}}
|
||||||
</div>
|
</div>
|
||||||
<!-- v-has="'bussLog:database'"-->
|
<!-- v-has="'bussLog:database'"-->
|
||||||
<div @click="knowledgeDatabaseClick" class="operator-text-text"
|
<div @click="knowledgeDatabaseClick" class="operator-text-text"
|
||||||
:title="$t('problemKnowledgeBase')">
|
:title="$t('docLibrary.problemKnowledgeBase')">
|
||||||
<a-icon type="folder"/>
|
<a-icon type="folder"/>
|
||||||
{{ $t('problemKnowledgeBase') }}
|
{{ $t('docLibrary.problemKnowledgeBase') }}
|
||||||
</div>
|
</div>
|
||||||
<!-- v-has="'document:addCollect'"-->
|
<!-- v-has="'document:addCollect'"-->
|
||||||
<div @click="collectionClick({'collectFlag':collectFlag,'id':documentId})" class="operator-text-text"
|
<div @click="collectionClick({'collectFlag':collectFlag,'id':documentId})" class="operator-text-text"
|
||||||
:title="$t('collection')">
|
:title="$t('docLibrary.collection')">
|
||||||
<a-icon class="icon" type="star"/>
|
<a-icon class="icon" type="star"/>
|
||||||
{{ collectFlag == '1' ? $t('cancelCollection') : $t('collection') }}
|
{{ collectFlag == '1' ? $t('docLibrary.cancelCollection') : $t('docLibrary.collection') }}
|
||||||
</div>
|
</div>
|
||||||
<!-- v-has="'document:pullMessage'"-->
|
<!-- v-has="'document:pullMessage'"-->
|
||||||
<div @click="shareClick" class="operator-text-text"
|
<div @click="shareClick" class="operator-text-text"
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
<a-button type="primary" class="button-text"
|
<a-button type="primary" class="button-text"
|
||||||
v-if="ol.value && ol.value.length > 0"
|
v-if="ol.value && ol.value.length > 0"
|
||||||
@click="clickButtonToUpload(ol.value)">
|
@click="clickButtonToUpload(ol.value)">
|
||||||
{{$t('viewUploadedFiles')}}
|
{{$t('uploadFile.viewUploadedFiles')}}
|
||||||
</a-button>
|
</a-button>
|
||||||
<span v-else>--</span>
|
<span v-else>--</span>
|
||||||
</span>
|
</span>
|
||||||
@@ -71,14 +71,14 @@
|
|||||||
v-if="ol.list && ol.list.length > 0">
|
v-if="ol.list && ol.list.length > 0">
|
||||||
{{valItem.title}}
|
{{valItem.title}}
|
||||||
</span>
|
</span>
|
||||||
<span v-else>--</span>
|
<span :key="index" v-else>--</span>
|
||||||
</template>
|
</template>
|
||||||
</span>
|
</span>
|
||||||
<span class="text-field-right" v-else :title="ol.value">{{ol.value ? ol.value : '--'}}</span>
|
<span class="text-field-right" v-else :title="ol.value">{{ol.value ? ol.value : '--'}}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="text-information" v-else-if="val === $t('textInformation')">
|
<div class="text-information" v-else-if="val === $t('docLibrary.textInformation')">
|
||||||
<div class="text-information-box" v-for="(ol,index1) in item[val]" :key="index1">
|
<div class="text-information-box" v-for="(ol,index1) in item[val]" :key="index1">
|
||||||
<div class="text-information-box-title fixed-position">
|
<div class="text-information-box-title fixed-position">
|
||||||
{{ol.db_field_txt}}
|
{{ol.db_field_txt}}
|
||||||
@@ -96,7 +96,7 @@
|
|||||||
<a-icon class="left-conte-td-information-icon"
|
<a-icon class="left-conte-td-information-icon"
|
||||||
@click="breakdown(valItem)"
|
@click="breakdown(valItem)"
|
||||||
v-if="valItem.splitFlag === 1"
|
v-if="valItem.splitFlag === 1"
|
||||||
:title="$t('StandardBreakdown')"
|
:title="$t('docLibrary.standardBreakdown')"
|
||||||
type="profile"/>
|
type="profile"/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -115,7 +115,7 @@
|
|||||||
<a-button type="primary" class="button-text"
|
<a-button type="primary" class="button-text"
|
||||||
v-if="ol.value && ol.value.length > 0"
|
v-if="ol.value && ol.value.length > 0"
|
||||||
@click="clickButtonToUpload(ol.value)">
|
@click="clickButtonToUpload(ol.value)">
|
||||||
{{$t('viewUploadedFiles')}}
|
{{$t('uploadFile.viewUploadedFiles')}}
|
||||||
</a-button>
|
</a-button>
|
||||||
<span v-else>--</span>
|
<span v-else>--</span>
|
||||||
</span>
|
</span>
|
||||||
@@ -140,7 +140,7 @@
|
|||||||
<div class="content-box">
|
<div class="content-box">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="header-text fixed-position">
|
<div class="header-text fixed-position">
|
||||||
{{$t('DetailsPhasedImplementation')}}
|
{{$t('docLibrary.detailsPhasedImplementation')}}
|
||||||
</div>
|
</div>
|
||||||
<a-table
|
<a-table
|
||||||
:scroll="{x: '100%'}"
|
:scroll="{x: '100%'}"
|
||||||
@@ -155,7 +155,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<a-modal
|
<a-modal
|
||||||
:title="$t('UpdateLog')"
|
:title="$t('docLibrary.updateLog')"
|
||||||
:width="900"
|
:width="900"
|
||||||
:visible="visible"
|
:visible="visible"
|
||||||
:confirm-loading="confirmLoading"
|
:confirm-loading="confirmLoading"
|
||||||
@@ -183,7 +183,7 @@
|
|||||||
</a-table>
|
</a-table>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
<a-modal
|
<a-modal
|
||||||
:title="$t('standardOne')"
|
:title="$t('docLibrary.standardOne')"
|
||||||
:width="600"
|
:width="600"
|
||||||
:visible="visibleRelated"
|
:visible="visibleRelated"
|
||||||
:maskClosable="false"
|
:maskClosable="false"
|
||||||
@@ -206,7 +206,7 @@
|
|||||||
</a-table>
|
</a-table>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
<a-modal
|
<a-modal
|
||||||
:title="$t('viewFileOne')"
|
:title="$t('docLibrary.viewFileOne')"
|
||||||
:width="600"
|
:width="600"
|
||||||
:visible="visibleFile"
|
:visible="visibleFile"
|
||||||
:maskClosable="false"
|
:maskClosable="false"
|
||||||
@@ -230,18 +230,17 @@
|
|||||||
:disabled="record.fileSuffix === '.pdf' || record.fileSuffix === '.docx' || record.fileSuffix === '.doc'
|
:disabled="record.fileSuffix === '.pdf' || record.fileSuffix === '.docx' || record.fileSuffix === '.doc'
|
||||||
|| record.fileSuffix === '.jpg' || record.fileSuffix === '.png' || record.fileSuffix === '.gif'
|
|| record.fileSuffix === '.jpg' || record.fileSuffix === '.png' || record.fileSuffix === '.gif'
|
||||||
|| record.fileSuffix === '.jpeg' || record.fileSuffix === '.xlsx' || record.fileSuffix === '.xls' ? false : true">
|
|| record.fileSuffix === '.jpeg' || record.fileSuffix === '.xlsx' || record.fileSuffix === '.xls' ? false : true">
|
||||||
{{$t('See')}}
|
{{$t('view')}}
|
||||||
</a>
|
</a>
|
||||||
<a class="text" @click="download(record)">
|
<a class="text" @click="download(record)">
|
||||||
{{$t('download')}}
|
{{$t('download')}}
|
||||||
</a>
|
</a>
|
||||||
<a class="text" @click="breakdown(record)" v-if="record.splitFlag === 1">
|
<a class="text" @click="breakdown(record)" v-if="record.splitFlag === 1">
|
||||||
{{$t('StandardBreakdown')}}
|
{{$t('docLibrary.standardBreakdown')}}
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</a-table>
|
</a-table>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
<JLoading :loading="loading">{{$t('dataLoading')}}</JLoading>
|
|
||||||
<uploadFile ref="uploadFile" :isUploadFile="true" :disabled="true"></uploadFile>
|
<uploadFile ref="uploadFile" :isUploadFile="true" :disabled="true"></uploadFile>
|
||||||
<libraryPush
|
<libraryPush
|
||||||
:url="url"
|
:url="url"
|
||||||
@@ -255,6 +254,8 @@ import { ResizeHeader, ResizeColumnProvide } from '@/mixins/header'
|
|||||||
import UploadFile from '@/components/UploadFile'
|
import UploadFile from '@/components/UploadFile'
|
||||||
import LibraryPush from './LibraryPush'
|
import LibraryPush from './LibraryPush'
|
||||||
import { mapGetters } from 'vuex'
|
import { mapGetters } from 'vuex'
|
||||||
|
import { downloadFile, getAction } from '@/api/manage'
|
||||||
|
import { Base64 } from 'js-base64'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'LibraryDetail',
|
name: 'LibraryDetail',
|
||||||
@@ -275,7 +276,7 @@ export default {
|
|||||||
loading: false,
|
loading: false,
|
||||||
columnsRelated: [
|
columnsRelated: [
|
||||||
{
|
{
|
||||||
title: this.$t('standardName'),
|
title: this.$t('docLibrary.standardName'),
|
||||||
dataIndex: 'title',
|
dataIndex: 'title',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
@@ -312,21 +313,21 @@ export default {
|
|||||||
documentId: this.$route.query.documentId === undefined ? this.$route.query.id : this.$route.query.documentId,
|
documentId: this.$route.query.documentId === undefined ? this.$route.query.id : this.$route.query.documentId,
|
||||||
columnsGrading: [
|
columnsGrading: [
|
||||||
{
|
{
|
||||||
title: this.$t('Statutenumberclause'),
|
title: this.$t('docLibrary.statuteNumberClause'),
|
||||||
dataIndex: 'standNumberOrClause',
|
dataIndex: 'standNumberOrClause',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
width: '25%'
|
width: '25%'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Typeofimplementation'),
|
title: this.$t('docLibrary.typeofImplementation'),
|
||||||
dataIndex: 'implementationTypeText',
|
dataIndex: 'implementationTypeText',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
width: '15%'
|
width: '15%'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('implementationDateTwo'),
|
title: this.$t('docLibrary.implementationDateTwo'),
|
||||||
dataIndex: 'implementationDate',
|
dataIndex: 'implementationDate',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
@@ -341,7 +342,7 @@ export default {
|
|||||||
],
|
],
|
||||||
columns: [
|
columns: [
|
||||||
{
|
{
|
||||||
title: this.$t('ModificationContent'),
|
title: this.$t('docLibrary.modificationContent'),
|
||||||
dataIndex: 'content',
|
dataIndex: 'content',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
@@ -349,14 +350,14 @@ export default {
|
|||||||
width: 484
|
width: 484
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('ModificationTime'),
|
title: this.$t('docLibrary.modificationTime'),
|
||||||
dataIndex: 'createTime',
|
dataIndex: 'createTime',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
width: 180
|
width: 180
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('personnel'),
|
title: this.$t('docLibrary.personnel'),
|
||||||
dataIndex: 'createBy',
|
dataIndex: 'createBy',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
@@ -368,7 +369,7 @@ export default {
|
|||||||
},
|
},
|
||||||
created () {
|
created () {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
document.title = this.$t('documentLibraryDetails')
|
document.title = this.$t('docLibrary.documentLibraryDetails')
|
||||||
|
|
||||||
this.getTitle(() => {
|
this.getTitle(() => {
|
||||||
this.getInfoById()
|
this.getInfoById()
|
||||||
@@ -396,7 +397,7 @@ export default {
|
|||||||
},
|
},
|
||||||
collectionClick (val) {
|
collectionClick (val) {
|
||||||
this.$confirm({
|
this.$confirm({
|
||||||
content: val.collectFlag === 0 || !val.collectFlag ? this.$t('ConfirmCollection') : this.$t('cancelConfirmCollection'),
|
content: val.collectFlag === 0 || !val.collectFlag ? this.$t('docLibrary.confirmCollection') : this.$t('docLibrary.cancelConfirmCollection'),
|
||||||
onOk: () => {
|
onOk: () => {
|
||||||
let url = ''
|
let url = ''
|
||||||
if (val.collectFlag === 0 || !val.collectFlag) {
|
if (val.collectFlag === 0 || !val.collectFlag) {
|
||||||
@@ -406,7 +407,7 @@ export default {
|
|||||||
}
|
}
|
||||||
getAction(url, { id: val.id }).then((res) => {
|
getAction(url, { id: val.id }).then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
this.$message.success(this.$t('OperationSuccessful'))
|
this.$message.success(this.$t('operationSuccessful'))
|
||||||
this.getWdkCollectAndSubscribeInfoByUser()
|
this.getWdkCollectAndSubscribeInfoByUser()
|
||||||
} else {
|
} else {
|
||||||
this.$message.warning(this.$t('operationFailed'))
|
this.$message.warning(this.$t('operationFailed'))
|
||||||
|
|||||||
@@ -0,0 +1,398 @@
|
|||||||
|
<template>
|
||||||
|
<a-card :bordered="false">
|
||||||
|
<div class="table-page-search-wrapper">
|
||||||
|
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :md="6" :sm="8">
|
||||||
|
<a-form-item :label="$t('number')" :labelCol="{span: 6}" :wrapperCol="{span: 14}">
|
||||||
|
<a-input :placeholder="$t('pleaseEnter') + $t('number')"
|
||||||
|
v-model="queryParam.serialNumber"></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :md="6" :sm="8">
|
||||||
|
<a-form-item :label="$t('title')" :labelCol="{span: 6}" :wrapperCol="{span: 14}">
|
||||||
|
<a-input :placeholder="$t('pleaseEnter') + $t('title')"
|
||||||
|
v-model="queryParam.title"></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :md="6" :sm="8">
|
||||||
|
<a-form-item :label="$t('docTool.comparison.releaseSituation')" :labelCol="{span: 6}" :wrapperCol="{span: 14}">
|
||||||
|
<j-dict-select-tag v-model="queryParam.releaseState"
|
||||||
|
:placeholder="$t('pleaseSelect')+$t('docTool.comparison.releaseSituation')"
|
||||||
|
type="select"
|
||||||
|
:triggerChange="false" dictCode="release_condition"/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
|
||||||
|
<a-col :md="6" :sm="24">
|
||||||
|
<a-button style="margin-left: 8px" @click="searchReset">{{$t('reset')}}</a-button>
|
||||||
|
<a-button style="margin-left: 8px" type="primary" @click="searchQuery">{{$t('query')}}</a-button>
|
||||||
|
</a-col>
|
||||||
|
</span>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</div>
|
||||||
|
<div class="table-operator">
|
||||||
|
<!-- v-has="'documentComparison:Initiate'"-->
|
||||||
|
<div @click="initiatingProcessClick" class="operator-text">
|
||||||
|
<a-icon type="block"/>
|
||||||
|
{{$t('docTool.comparison.initiateComparison')}}
|
||||||
|
</div>
|
||||||
|
<!-- v-has="'documentComparison:batchDelete'"-->
|
||||||
|
<div @click="batchDelete" class="operator-text">
|
||||||
|
<a-icon type="delete"/>
|
||||||
|
{{$t('batchDelete')}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a-table
|
||||||
|
ref="table"
|
||||||
|
size="middle"
|
||||||
|
:components="drag(columns,'columns')"
|
||||||
|
:loading="loading"
|
||||||
|
:pagination="ipagination"
|
||||||
|
:scroll="{x: '100%',y:'calc(100vh - 280px)'}"
|
||||||
|
rowKey="id"
|
||||||
|
:data-source="dataSource"
|
||||||
|
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
|
||||||
|
:columns="columns"
|
||||||
|
@change="tableOnChange"
|
||||||
|
>
|
||||||
|
<span slot="operation" slot-scope="text,record">
|
||||||
|
<a class="text-operation" @click="comparisonResultsClick(record)">{{$t('docTool.comparison.comparisonResults')}}</a>
|
||||||
|
<a class="text-operation"
|
||||||
|
v-if="record.createBy === userInfoQuery.username || administrators"
|
||||||
|
@click="subscribe(record)">
|
||||||
|
{{!record.releaseState || record.releaseState === 'draft' ? $t('release') :$t('withdraw')}}
|
||||||
|
</a>
|
||||||
|
<a class="text-operation"
|
||||||
|
v-if="(record.createBy === userInfoQuery.username || administrators) && record.releaseState === 'draft'"
|
||||||
|
@click="edit(record)">{{$t('edit')}}</a>
|
||||||
|
<a class="text-operation"
|
||||||
|
v-if="(record.createBy === userInfoQuery.username || administrators) && record.releaseState === 'draft'"
|
||||||
|
@click="deleteData(record)">{{$t('delete')}}</a>
|
||||||
|
</span>
|
||||||
|
<span slot="serialNumberRight" :title="text" slot-scope="text,record">
|
||||||
|
<a @click="serialNumberRightClick(record)">{{text}}</a>
|
||||||
|
</span>
|
||||||
|
<span slot="serialNumberLeft" :title="text" slot-scope="text,record">
|
||||||
|
<a @click="serialNumberLeftClick(record)">{{text}}</a>
|
||||||
|
</span>
|
||||||
|
</a-table>
|
||||||
|
</div>
|
||||||
|
</a-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getAction, postAction, deleteAction } from '@/api/manage'
|
||||||
|
import { ResizeHeader, ResizeColumnProvide } from '@/mixins/header'
|
||||||
|
import { mapGetters } from 'vuex'
|
||||||
|
import JDictSelectTag from '../../components/dict/JDictSelectTag'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'DocumentComparison',
|
||||||
|
mixins: [ResizeHeader, ResizeColumnProvide],
|
||||||
|
components: { JDictSelectTag },
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
// url传参严格按照当前命名
|
||||||
|
url: {
|
||||||
|
list: '/compare/sarFileCompareInfo/page',
|
||||||
|
deleteBatch: '/compare/sarFileCompareInfo/deleteBatch'
|
||||||
|
},
|
||||||
|
loading: false,
|
||||||
|
dataSource: [],
|
||||||
|
selectedRowKeys: [],
|
||||||
|
selectedRows: [],
|
||||||
|
downLoadFileUrl: window._CONFIG.domianPreviewURL + '/sys/common/download',
|
||||||
|
downLoadImgUrl: window._CONFIG.domianWebImgURL + '/sys/common/download',
|
||||||
|
/* 分页参数 */
|
||||||
|
ipagination: {
|
||||||
|
current: 1,
|
||||||
|
pageSize: 50,
|
||||||
|
pageSizeOptions: ['10', '50', '100', '150', '200'],
|
||||||
|
showTotal: (total, range) => {
|
||||||
|
return range[0] + '-' + range[1] + ' ' + this.$t('total') + ' ' + total + ' ' + this.$t('strip')
|
||||||
|
},
|
||||||
|
showQuickJumper: true,
|
||||||
|
showSizeChanger: true,
|
||||||
|
total: 0
|
||||||
|
},
|
||||||
|
queryParam: {},
|
||||||
|
userInfoQuery: {},
|
||||||
|
administrators: false,
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
title: this.$t('number') + ' 1',
|
||||||
|
align: 'left',
|
||||||
|
dataIndex: 'serialNumberLeft',
|
||||||
|
width: 170,
|
||||||
|
ellipsis: true,
|
||||||
|
scopedSlots: { customRender: 'serialNumberLeft' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('title') + ' 1',
|
||||||
|
align: 'left',
|
||||||
|
dataIndex: 'titleLeft',
|
||||||
|
width: 170,
|
||||||
|
ellipsis: true,
|
||||||
|
scopedSlots: { customRender: 'serialNumberLeft' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('docTool.comparison.textStatus') + ' 1',
|
||||||
|
align: 'left',
|
||||||
|
width: 200,
|
||||||
|
ellipsis: true,
|
||||||
|
dataIndex: 'fileTypeLeft'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('number') + ' 2',
|
||||||
|
align: 'left',
|
||||||
|
dataIndex: 'serialNumberRight',
|
||||||
|
ellipsis: true,
|
||||||
|
scopedSlots: { customRender: 'serialNumberRight' },
|
||||||
|
width: 170
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('title') + ' 2',
|
||||||
|
align: 'left',
|
||||||
|
dataIndex: 'titleRight',
|
||||||
|
scopedSlots: { customRender: 'serialNumberRight' },
|
||||||
|
ellipsis: true,
|
||||||
|
width: 170
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('docTool.comparison.textStatus') + ' 2',
|
||||||
|
align: 'left',
|
||||||
|
width: 200,
|
||||||
|
ellipsis: true,
|
||||||
|
dataIndex: 'fileTypeRight'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('docTool.comparison.releaseSituation'),
|
||||||
|
align: 'left',
|
||||||
|
width: 170,
|
||||||
|
ellipsis: true,
|
||||||
|
dataIndex: 'releaseStateTitle'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('creator'),
|
||||||
|
align: 'left',
|
||||||
|
width: 170,
|
||||||
|
ellipsis: true,
|
||||||
|
dataIndex: 'createBy'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('remarks'),
|
||||||
|
align: 'left',
|
||||||
|
ellipsis: true,
|
||||||
|
width: 270,
|
||||||
|
dataIndex: 'remark'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('operation'),
|
||||||
|
align: 'left',
|
||||||
|
fixed: 'right',
|
||||||
|
width: 310,
|
||||||
|
scopedSlots: { customRender: 'operation' }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted () {
|
||||||
|
if (this.$route.query.serialNumber) {
|
||||||
|
this.queryParam.serialNumber = this.$route.query.serialNumber
|
||||||
|
this.queryParam = { ...this.queryParam }
|
||||||
|
}
|
||||||
|
this.userInfoQuery = this.userInfo()
|
||||||
|
this.administrators = false
|
||||||
|
if (this.userInfoQuery.userRoleList && this.userInfoQuery.userRoleList.length > 0) {
|
||||||
|
this.userInfoQuery.userRoleList.forEach(res => {
|
||||||
|
if (res.roleCode === 'admin') {
|
||||||
|
this.administrators = true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
...mapGetters(['userInfo']),
|
||||||
|
searchQuery () {
|
||||||
|
this.ipagination.current = 1
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
searchReset () {
|
||||||
|
this.queryParam = {}
|
||||||
|
this.ipagination.current = 1
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
tableOnChange (pagination) {
|
||||||
|
this.ipagination = pagination
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
getList () {
|
||||||
|
const queryParam = JSON.parse(JSON.stringify(this.queryParam))
|
||||||
|
Object.keys(queryParam).forEach(val => {
|
||||||
|
if (queryParam[val] instanceof Array) {
|
||||||
|
queryParam[val] = queryParam[val].join(',')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const query = {
|
||||||
|
pageNo: this.ipagination.current,
|
||||||
|
pageSize: this.ipagination.pageSize,
|
||||||
|
...queryParam
|
||||||
|
}
|
||||||
|
this.loading = true
|
||||||
|
getAction(this.url.list, query).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
if (res.result.current > 1 && res.result.records.length === 0) {
|
||||||
|
this.ipagination.current = 1
|
||||||
|
this.getList()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.dataSource = res.result.records || []
|
||||||
|
this.ipagination.total = res.result.total
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
batchDelete () {
|
||||||
|
if (this.selectedRowKeys.length > 0) {
|
||||||
|
this.$confirm({
|
||||||
|
content: this.$t('confirmBatchDeletion'),
|
||||||
|
onOk: () => {
|
||||||
|
const idList = []
|
||||||
|
const selectedRowKeysRecord = JSON.parse(JSON.stringify(this.selectedRowKeysRecord))
|
||||||
|
for (let i = 0; i < selectedRowKeysRecord.length; i++) {
|
||||||
|
if (selectedRowKeysRecord[i].createBy === this.userInfoQuery.username &&
|
||||||
|
selectedRowKeysRecord[i].releaseState === 'draft') {
|
||||||
|
idList.push(selectedRowKeysRecord[i].id)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (idList.length > 0) {
|
||||||
|
deleteAction(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('doNotHavePermissionDeleteData'))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.$message.warning(this.$t('selectLeastOne'))
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onSelectChange (value, record) {
|
||||||
|
this.selectedRowKeys = value
|
||||||
|
this.selectedRows = record
|
||||||
|
},
|
||||||
|
// 对比结果按钮点击
|
||||||
|
comparisonResultsClick (item) {
|
||||||
|
if (item.createBy === this.userInfoQuery.username && item.releaseState === 'draft') {
|
||||||
|
item.isDisplay = 2
|
||||||
|
} else {
|
||||||
|
item.isDisplay = 1
|
||||||
|
}
|
||||||
|
const newUrl = this.$router.resolve({
|
||||||
|
path: '/comparisonResults',
|
||||||
|
query: {
|
||||||
|
id: item.id,
|
||||||
|
isDisplay: item.isDisplay
|
||||||
|
}
|
||||||
|
})
|
||||||
|
window.open(newUrl.href, '_blank')
|
||||||
|
},
|
||||||
|
// 撤回按钮点击
|
||||||
|
subscribe (record) {
|
||||||
|
this.$confirm({
|
||||||
|
content: record.releaseState === 'draft' ? this.$t('confirmRelease') : this.$t('confirmWithdraw'),
|
||||||
|
onOk: () => {
|
||||||
|
let releaseState = ''
|
||||||
|
if (record.releaseState === 'draft') {
|
||||||
|
releaseState = 'draft'
|
||||||
|
} else {
|
||||||
|
releaseState = 'published'
|
||||||
|
}
|
||||||
|
const query = {
|
||||||
|
releaseState: releaseState,
|
||||||
|
id: record.id
|
||||||
|
}
|
||||||
|
postAction('/compare/sarFileCompareInfo/changeState', query).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.$message.success(this.$t('operationSuccessful'))
|
||||||
|
this.getList()
|
||||||
|
} else {
|
||||||
|
this.$message.warning(this.$t('operationFailed'))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
edit (row) {
|
||||||
|
const newUrl = this.$router.resolve({
|
||||||
|
path: '/documentDataComparison',
|
||||||
|
query: {
|
||||||
|
id: row.id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
window.open(newUrl.href, '_blank')
|
||||||
|
},
|
||||||
|
// 发起对比按钮点击
|
||||||
|
initiatingProcessClick () {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/initiateDocumentComparison'
|
||||||
|
})
|
||||||
|
// let newUrl = this.$router.resolve({
|
||||||
|
// path: '/initiateDocumentComparison'
|
||||||
|
// })
|
||||||
|
// window.open(newUrl.href, '_blank')
|
||||||
|
},
|
||||||
|
deleteData (val) {
|
||||||
|
this.$confirm({
|
||||||
|
content: this.$t('confirmDeletion'),
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 编号2和标题2列的点击事件
|
||||||
|
serialNumberRightClick (row) {
|
||||||
|
const newUrl = this.$router.resolve({
|
||||||
|
path: '/documentManage/library/detail',
|
||||||
|
query: {
|
||||||
|
id: row.fileKeyRight
|
||||||
|
}
|
||||||
|
})
|
||||||
|
window.open(newUrl.href, '_blank')
|
||||||
|
},
|
||||||
|
// 编号1列和标题1列的点击事件
|
||||||
|
serialNumberLeftClick (row) {
|
||||||
|
const newUrl = this.$router.resolve({
|
||||||
|
path: '/documentManage/library/detail',
|
||||||
|
query: {
|
||||||
|
id: row.fileKeyLeft
|
||||||
|
}
|
||||||
|
})
|
||||||
|
window.open(newUrl.href, '_blank')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
@import'~@assets/less/common.less';
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,405 @@
|
|||||||
|
<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('docTool.comparison.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('docTool.comparison.publishComment')" type="primary">
|
||||||
|
{{$t('docTool.comparison.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/image/daiban.png" class="img" alt="">
|
||||||
|
</div>
|
||||||
|
<div class="box-text">
|
||||||
|
<span class="box-text-name">{{item.name}}</span>
|
||||||
|
<span class="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.resComVoList && item.resComVoList.length > 0">
|
||||||
|
<div class="box-content-inside" v-for="(val,indexOne) in item.resComVoList" :key="indexOne">
|
||||||
|
<div class="img-box">
|
||||||
|
<img src="../../../assets/image/daiban.png" class="img" alt="">
|
||||||
|
</div>
|
||||||
|
<div class="box-text">
|
||||||
|
<span class="box-text-name">{{val.name}}</span>
|
||||||
|
<span class="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('docTool.comparison.noComment')}}</div>
|
||||||
|
</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('docTool.comparison.replyToComments')" class="item-model" :prop="'replyContent'">
|
||||||
|
<a-textarea
|
||||||
|
:placeholder="$t('pleaseEnter')+title"
|
||||||
|
:disabled="false"
|
||||||
|
:maxLength="500"
|
||||||
|
v-model.trim="formInline.replyContent" :rows="4"/>
|
||||||
|
</a-form-model-item>
|
||||||
|
<a-form-model-item v-else-if="title === $t('docTool.comparison.publishComment')" class="item-model" :prop="'commentContent'">
|
||||||
|
<a-textarea
|
||||||
|
:placeholder="$t('pleaseEnter')+title"
|
||||||
|
:disabled="false"
|
||||||
|
:maxLength="500"
|
||||||
|
v-model.trim="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('docTool.comparison.comment'),
|
||||||
|
confirmLoading: false,
|
||||||
|
visibleComment: false,
|
||||||
|
url: {
|
||||||
|
list: '/compare/sarFileCompareResComment/queryListByInfoId',
|
||||||
|
add: '/compare/sarFileCompareResComment/add',
|
||||||
|
edit: '/compare/sarFileCompareResComment/edit'
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
commentContent: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: this.$t('docTool.comparison.publishComment') + this.$t('cannotEmpty'),
|
||||||
|
trigger: 'blur'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
replyContent: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: this.$t('docTool.comparison.replyToComments') + this.$t('cannotEmpty'),
|
||||||
|
trigger: 'blur'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleCancel () {
|
||||||
|
this.visible = false
|
||||||
|
},
|
||||||
|
getData () {
|
||||||
|
this.visible = true
|
||||||
|
this.commentContent = ''
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
handleSubmit () {
|
||||||
|
this.title = this.$t('docTool.comparison.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, {
|
||||||
|
id: this.$route.query.id,
|
||||||
|
str: this.commentContent
|
||||||
|
}).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.dataList = res.result || []
|
||||||
|
} else {
|
||||||
|
this.dataList = []
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleOkComment () {
|
||||||
|
this.$refs.ruleForm.validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
let url = ''
|
||||||
|
let query = {}
|
||||||
|
let Action
|
||||||
|
if (this.title === this.$t('docTool.comparison.publishComment')) {
|
||||||
|
url = this.url.add
|
||||||
|
Action = postAction
|
||||||
|
query = {
|
||||||
|
comment: this.formInline.commentContent,
|
||||||
|
infoId: this.$route.query.id
|
||||||
|
}
|
||||||
|
} else if (this.title === this.$t('docTool.comparison.replyToComments')) {
|
||||||
|
Action = postAction
|
||||||
|
url = this.url.add
|
||||||
|
query = {
|
||||||
|
comment: this.formInline.replyContent,
|
||||||
|
parentId: this.formInline.projectCommentId,
|
||||||
|
infoId: this.$route.query.id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.confirmLoading = true
|
||||||
|
Action(url, query).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.$message.success(this.$t('operationSuccessful'))
|
||||||
|
this.visibleComment = false
|
||||||
|
this.getList()
|
||||||
|
} else {
|
||||||
|
this.$message.warning(this.$t('operationFailed'))
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.confirmLoading = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleCancelComment () {
|
||||||
|
this.visibleComment = false
|
||||||
|
},
|
||||||
|
messageClick (row) {
|
||||||
|
this.formInline = {}
|
||||||
|
this.formInline.projectCommentId = row.id
|
||||||
|
this.title = this.$t('docTool.comparison.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;
|
||||||
|
word-break: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.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;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-model {
|
||||||
|
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% - 183px);
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-text {
|
||||||
|
width: 88px;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 0 8px;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .button-text span {
|
||||||
|
width: 64px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
margin-top: 4px;
|
||||||
|
}
|
||||||
|
.box-input-search {
|
||||||
|
/deep/ .ant-input-search-icon {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,832 @@
|
|||||||
|
<template>
|
||||||
|
<a-spin :spinning="loading">
|
||||||
|
<div class="doc-detail-wrap">
|
||||||
|
<div class="doc-detail-header">
|
||||||
|
<div class="doc-detail-title">
|
||||||
|
<span style="line-height: 66px;display: inline-block;float: left" @click="goBack">
|
||||||
|
<a-icon type="arrow-left" style="margin-right: 6px;"/>
|
||||||
|
</span>
|
||||||
|
<span> {{$t('docTool.comparison.comparisonResults')}}</span>
|
||||||
|
</div>
|
||||||
|
<div class="doc-detail-right">
|
||||||
|
<div @click="viewVarianceAssessmentClick"
|
||||||
|
class="operator-text-text"
|
||||||
|
:class="{'operator-text-text-text': isVarianceOne}"
|
||||||
|
:title="$t('docTool.comparison.viewVarianceAssessment')">
|
||||||
|
<a-icon type="eye"/>
|
||||||
|
{{$t('docTool.comparison.viewVarianceAssessment')}}
|
||||||
|
</div>
|
||||||
|
<div @click="viewConsistentAssessmentClick" class="operator-text-text"
|
||||||
|
:class="{'operator-text-text-text': isVarianceTwo}"
|
||||||
|
:title="$t('docTool.comparison.viewConsistentAssessment')">
|
||||||
|
<a-icon type="eye"/>
|
||||||
|
{{$t('docTool.comparison.viewConsistentAssessment')}}
|
||||||
|
</div>
|
||||||
|
<div @click="viewAllClick" class="operator-text-text"
|
||||||
|
:class="{'operator-text-text-text': isVarianceThe}"
|
||||||
|
:title="$t('docTool.comparison.viewAll')">
|
||||||
|
<a-icon type="eye"/>
|
||||||
|
{{$t('docTool.comparison.viewAll')}}
|
||||||
|
</div>
|
||||||
|
<div @click="exportComparisonReportClick" class="operator-text-text"
|
||||||
|
:title="$t('docTool.comparison.exportComparisonReport')">
|
||||||
|
<a-icon type="export" :rotate="-90"/>
|
||||||
|
{{$t('docTool.comparison.exportComparisonReport')}}
|
||||||
|
</div>
|
||||||
|
<div @click="commentClick" class="operator-text-text"
|
||||||
|
:title="$t('docTool.comparison.comment')">
|
||||||
|
<a-icon type="message"/>
|
||||||
|
{{$t('docTool.comparison.comment')}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="">
|
||||||
|
<div class="detail-content">
|
||||||
|
<div class="detail-content-header" style="margin-bottom: 20px">
|
||||||
|
<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"
|
||||||
|
:title="resultData.serialNumberLeft + resultData.fileNameLeft"
|
||||||
|
:class="{'detail-content-header-content-left-active': isDisplay}">
|
||||||
|
{{$t('docTool.comparison.selectedStandard')}}:{{resultData.serialNumberLeft}}
|
||||||
|
<span style="cursor: pointer"
|
||||||
|
@click="fileClick(resultData.fileNameLeft,resultData.fileIdLeft)">{{resultData.fileNameLeft}}</span>
|
||||||
|
</div>
|
||||||
|
<div class="detail-content-header-content-content"
|
||||||
|
:title="resultData.serialNumberRight + resultData.fileNameRight"
|
||||||
|
:class="{'detail-content-header-content-left-active':isDisplay}">
|
||||||
|
{{$t('docTool.comparison.selectedStandard')}}:{{resultData.serialNumberRight}}
|
||||||
|
<span style="cursor: pointer"
|
||||||
|
@click="fileClick(resultData.fileNameRight,resultData.fileIdRight)">{{resultData.fileNameRight}}</span>
|
||||||
|
</div>
|
||||||
|
<div class="detail-content-header-content-rightOne"
|
||||||
|
:class="{'detail-content-header-content-rightOne-active':isDisplay}"
|
||||||
|
:title="$t('docTool.comparison.comparisonDifferenceComment')">
|
||||||
|
{{$t('docTool.comparison.comparisonDifferenceComment')}}
|
||||||
|
</div>
|
||||||
|
<div class="detail-content-header-content-right" v-if="!isDisplay">
|
||||||
|
{{$t('operation')}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<a-checkbox-group @change="checkboxChange" v-model="checkboxList"
|
||||||
|
style="width: 100%;height: calc(100vh - 300px)">
|
||||||
|
<div class="detail-content-content" v-for="(item,index) in resultData.resList" :key="index">
|
||||||
|
<a-checkbox :value="item.id" class="detail-checkbox"></a-checkbox>
|
||||||
|
<div class="detail-content-content-text"
|
||||||
|
:class="{'detail-content-content-text-color':checkboxList.join(',').includes(item.id)}">
|
||||||
|
<div class="detail-content-content-text-left"
|
||||||
|
:class="{'detail-content-content-text-dis':isDisplay}">
|
||||||
|
<div class="detail-content-left">
|
||||||
|
<div class="detail-content-left-top">
|
||||||
|
<span>{{item.itemsNumLeft}}</span>
|
||||||
|
<span style="margin-left: 10px">{{item.itemsNameLeft}}</span>
|
||||||
|
</div>
|
||||||
|
<div class="detail-content-left-button" v-html="item.itemsTextLeft"></div>
|
||||||
|
</div>
|
||||||
|
<div class="detail-content-right">
|
||||||
|
<div class="detail-content-left-top">
|
||||||
|
<span>{{item.itemsNumRight}}</span>
|
||||||
|
<span style="margin-left: 10px">{{item.itemsNameRight}}</span>
|
||||||
|
</div>
|
||||||
|
<div class="detail-content-left-button" v-html="item.itemsTextRight"></div>
|
||||||
|
</div>
|
||||||
|
<div class="detail-content-right-one">
|
||||||
|
<div class="detail-content-left-button">
|
||||||
|
{{item.comment}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- <div class="detail-content-bottom"-->
|
||||||
|
<!-- :class="{'detail-content-bottom-color':checkboxList.join(',').includes(item.id)}">-->
|
||||||
|
<!-- <div class="detail-content-bottom-left"-->
|
||||||
|
<!-- :class="{'detail-content-bottom-left-text':language == 'en-us' ? true:false}"-->
|
||||||
|
<!-- :title="$t('docTool.comparison.comparisonDifferenceComment')">-->
|
||||||
|
<!-- <a-icon type="message"/>-->
|
||||||
|
<!-- {{$t('docTool.comparison.comparisonDifferenceComment')}}:-->
|
||||||
|
<!-- </div>-->
|
||||||
|
<!-- <div class="detail-content-bottom-right"-->
|
||||||
|
<!-- :class="{'detail-content-bottom-right-text':language == 'en-us' ? true:false}">-->
|
||||||
|
<!-- {{item.comment}}-->
|
||||||
|
<!-- </div>-->
|
||||||
|
<!-- </div>-->
|
||||||
|
</div>
|
||||||
|
<div class="detail-content-content-text-right" v-if="!isDisplay">
|
||||||
|
<span class="text-button-one">
|
||||||
|
<a class="text-button" @click="comparaEdit(item)">{{$t('edit')}}</a>
|
||||||
|
<a class="text-button" @click="comparaDelete(item)">{{$t('delete')}}</a>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a-checkbox-group>
|
||||||
|
<div class="detail-content-content">
|
||||||
|
<a-checkbox @change="fullCheckboxChange" v-model="fullCheckbox" class="detail-checkbox">
|
||||||
|
</a-checkbox>
|
||||||
|
<div class="detail-content-content-text" :class="{'detail-content-content-text-color':fullCheckbox}">
|
||||||
|
<div class="detail-content-content-text-left"
|
||||||
|
:class="{'detail-content-content-text-dis':isDisplay}">
|
||||||
|
<div class="detail-content-content-text-left-text" :title="resultData.comments">
|
||||||
|
<span>{{$t('docTool.comparison.fullTextComments')}}:</span> {{resultData.comments}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="detail-content-content-text-right" v-if="!isDisplay">
|
||||||
|
<span class="text-button-one">
|
||||||
|
<a class="text-button" @click="fullTextEdit">{{$t('edit')}}</a>
|
||||||
|
<!-- <a class="text-button">{{$t('delete')}}</a>-->
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</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" :loading="confirmLoading" @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('docTool.comparison.fullTextComments')">
|
||||||
|
<div class="title-text-remarks" :title="$t('docTool.comparison.fullTextComments')">
|
||||||
|
<span>{{$t('docTool.comparison.fullTextComments')}}</span>
|
||||||
|
</div>
|
||||||
|
<a-form-model-item class="item-model" style="width: calc(100% - 113px)" prop="comment">
|
||||||
|
<a-textarea :placeholder="$t('pleaseEnter') + $t('docTool.comparison.fullTextComments')"
|
||||||
|
v-model.trim="formInlineText.comment"
|
||||||
|
:maxLength="500"
|
||||||
|
:rows="4"/>
|
||||||
|
</a-form-model-item>
|
||||||
|
</div>
|
||||||
|
<div class="box-title-text-remarks" v-if="title === $t('docTool.comparison.comparativeComments')">
|
||||||
|
<div class="title-text-remarks" :title="$t('docTool.comparison.comparativeComments')">
|
||||||
|
<span>{{$t('docTool.comparison.comparativeComments')}}</span>
|
||||||
|
</div>
|
||||||
|
<a-form-model-item class="item-model" style="width: calc(100% - 113px)" prop="comment">
|
||||||
|
<a-textarea :placeholder="$t('pleaseEnter')+$t('docTool.comparison.comparativeComments')"
|
||||||
|
v-model.trim="formInlineText.comment"
|
||||||
|
:maxLength="500"
|
||||||
|
:rows="4"/>
|
||||||
|
</a-form-model-item>
|
||||||
|
</div>
|
||||||
|
</a-form-model>
|
||||||
|
</a-modal>
|
||||||
|
<commentList ref="commentListRef"/>
|
||||||
|
<div id="images">
|
||||||
|
<div class="image" v-viewer="{movable: false}">
|
||||||
|
<img v-show="image" :src="imageUrl">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a-spin>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getAction, downloadFile, deleteAction, putAction, getFileAccessHttpUrl } from '@/api/manage'
|
||||||
|
import { previewPdf } from '@/utils/previewPdf'
|
||||||
|
import { Base64 } from 'js-base64'
|
||||||
|
import { mapGetters } from 'vuex'
|
||||||
|
import CommentList from './CommentList'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'ComparisonResults',
|
||||||
|
components: { CommentList },
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
loading: false,
|
||||||
|
checkboxList: [],
|
||||||
|
isVarianceOne: false,
|
||||||
|
isVarianceTwo: false,
|
||||||
|
isVarianceThe: false,
|
||||||
|
confirmLoading: false,
|
||||||
|
downLoadFileUrl: window._CONFIG.domianPreviewURL + '/sys/common/download',
|
||||||
|
downLoadImgUrl: window._CONFIG.domianWebImgURL + '/sys/common/download',
|
||||||
|
visible: false,
|
||||||
|
formInlineText: {},
|
||||||
|
rulesText: {},
|
||||||
|
title: '',
|
||||||
|
indeterminate: false,
|
||||||
|
checkAll: false,
|
||||||
|
isDisplay: false,
|
||||||
|
fullCheckbox: false,
|
||||||
|
resultData: {},
|
||||||
|
comment: '',
|
||||||
|
language: '',
|
||||||
|
url: {
|
||||||
|
exportData: '/compare/sarFileCompareItemComment/exportResXls'
|
||||||
|
},
|
||||||
|
image: false,
|
||||||
|
imageUrl: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted () {
|
||||||
|
if (this.$route.query.isDisplay === 2) {
|
||||||
|
this.isDisplay = false
|
||||||
|
} else {
|
||||||
|
this.isDisplay = true
|
||||||
|
}
|
||||||
|
document.title = this.$t('docTool.comparison.documentComparison') + ' - ' + this.$t('docTool.comparison.comparisonResults')
|
||||||
|
this.language = localStorage.getItem('language') || ''
|
||||||
|
this.getData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
...mapGetters(['userInfo']),
|
||||||
|
goBack () {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/documentComparison'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 评论按钮点击
|
||||||
|
commentClick () {
|
||||||
|
this.$refs.commentListRef.getData()
|
||||||
|
},
|
||||||
|
// 导出对比报告按钮点击
|
||||||
|
exportComparisonReportClick () {
|
||||||
|
const checkboxList = JSON.parse(JSON.stringify(this.checkboxList))
|
||||||
|
const fullCheckbox = this.fullCheckbox
|
||||||
|
const query = {
|
||||||
|
selectIds: checkboxList.join(','),
|
||||||
|
includeComments: fullCheckbox,
|
||||||
|
infoId: this.$route.query.id,
|
||||||
|
comment: this.comment
|
||||||
|
}
|
||||||
|
downloadFile(this.url.exportData, this.resultData.serialNumberLeft + ' - ' + this.resultData.serialNumberRight + this.$t('docTool.comparison.comparisonResults') + '.xls', query, this.deselect)
|
||||||
|
},
|
||||||
|
deselect () {
|
||||||
|
this.checkboxList = []
|
||||||
|
this.fullCheckbox = false
|
||||||
|
this.indeterminate = false
|
||||||
|
this.checkAll = false
|
||||||
|
},
|
||||||
|
// 查看一致性按钮点击
|
||||||
|
viewConsistentAssessmentClick () {
|
||||||
|
this.comment = '一致'
|
||||||
|
this.isVarianceTwo = true
|
||||||
|
this.isVarianceOne = false
|
||||||
|
this.isVarianceThe = false
|
||||||
|
this.getData()
|
||||||
|
},
|
||||||
|
// 查看差异项按钮点击
|
||||||
|
viewVarianceAssessmentClick () {
|
||||||
|
this.isVarianceOne = true
|
||||||
|
this.isVarianceTwo = false
|
||||||
|
this.isVarianceThe = false
|
||||||
|
this.comment = '差异'
|
||||||
|
this.getData()
|
||||||
|
},
|
||||||
|
// 查看全部按钮点击
|
||||||
|
viewAllClick () {
|
||||||
|
this.comment = ''
|
||||||
|
this.isVarianceThe = true
|
||||||
|
this.isVarianceOne = false
|
||||||
|
this.isVarianceTwo = false
|
||||||
|
this.getData()
|
||||||
|
},
|
||||||
|
// 点击文件名
|
||||||
|
fileClick (name, id) {
|
||||||
|
const fileName = name
|
||||||
|
const index1 = fileName.lastIndexOf('.')
|
||||||
|
const index2 = fileName.length
|
||||||
|
const fileSuffix = fileName.substring(index1, index2)
|
||||||
|
if (fileSuffix === '.pdf') {
|
||||||
|
// window.open('/pdf/web/viewer.html?file=' + encodeURIComponent('/jero-boot/sys/common/pdf/viewFile?id=' + id + '&userName=' + this.userInfo().username))
|
||||||
|
const url = previewPdf(id)
|
||||||
|
window.open(url)
|
||||||
|
} else if (fileSuffix === '.docx' || fileSuffix === '.doc') {
|
||||||
|
const url = window._CONFIG.onlinePreviewDomainURL + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + id + fileSuffix)
|
||||||
|
window.open(url, '_blank')
|
||||||
|
} else if (fileSuffix === '.xlsx' || fileSuffix === '.xls') {
|
||||||
|
const url = window._CONFIG.onlinePreviewDomainURL + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + id + fileSuffix)
|
||||||
|
window.open(url, '_blank')
|
||||||
|
} else if (fileSuffix === '.png' || fileSuffix === '.jpeg' || fileSuffix === '.gif' || fileSuffix === '.jpg') {
|
||||||
|
// const url = window._CONFIG.onlinePreviewDomainURL + '?url=' + Base64.encode(this.downLoadImgUrl + '/' + id + fileSuffix)
|
||||||
|
// window.open(url, '_blank')
|
||||||
|
this.image = true
|
||||||
|
this.imageUrl = getFileAccessHttpUrl(id)
|
||||||
|
// 获取viewer实例
|
||||||
|
const viewer = this.$el.querySelector('.image').$viewer
|
||||||
|
// 调用show方法进行显示预览图
|
||||||
|
viewer.show()
|
||||||
|
} else {
|
||||||
|
downloadFile('/sys/common/downLoadFile', name, { id: id })
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 获取对比结果详情
|
||||||
|
getData () {
|
||||||
|
const query = {
|
||||||
|
id: this.$route.query.id,
|
||||||
|
infoId: this.$route.query.id,
|
||||||
|
comment: this.comment
|
||||||
|
}
|
||||||
|
this.loading = true
|
||||||
|
getAction('/compare/sarFileCompareItemComment/queryCompareResult', query).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.resultData = res.result || {}
|
||||||
|
} else {
|
||||||
|
this.resultData = {}
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 复选框组改变
|
||||||
|
checkboxChange (checkedList) {
|
||||||
|
this.indeterminate = (!!checkedList.length && checkedList.length < this.resultData.resList.length) || (this.fullCheckbox && this.checkboxList.length < this.resultData.resList.length) || (!this.fullCheckbox && !!checkedList.length)
|
||||||
|
this.checkAll = checkedList.length === this.resultData.resList.length && this.fullCheckbox
|
||||||
|
},
|
||||||
|
// 全文评论复选框改变
|
||||||
|
fullCheckboxChange (event) {
|
||||||
|
this.indeterminate = (!!this.checkboxList.length && this.checkboxList.length < this.resultData.resList.length) || (event.target.checked && this.checkboxList.length < this.resultData.resList.length) || (!this.fullCheckbox && !!this.checkboxList.length)
|
||||||
|
this.checkAll = this.checkboxList.length === this.resultData.resList.length && event.target.checked
|
||||||
|
},
|
||||||
|
// 全选复选框改变
|
||||||
|
onChange (event) {
|
||||||
|
this.checkAll = event.target.checked
|
||||||
|
if (event.target.checked) {
|
||||||
|
this.resultData.resList.forEach(res => {
|
||||||
|
this.checkboxList.push(res.id)
|
||||||
|
})
|
||||||
|
this.fullCheckbox = true
|
||||||
|
this.indeterminate = false
|
||||||
|
} else {
|
||||||
|
this.checkboxList = []
|
||||||
|
this.fullCheckbox = false
|
||||||
|
}
|
||||||
|
if (this.checkboxList.length === 0 && !this.fullCheckbox) {
|
||||||
|
this.checkAll = false
|
||||||
|
this.indeterminate = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 发表评论弹框的提交按钮点击
|
||||||
|
fullTextCommentsSubmit () {
|
||||||
|
this.$refs.ruleFormText.validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
if (this.title === this.$t('docTool.comparison.fullTextComments')) {
|
||||||
|
this.fullTextComments()
|
||||||
|
} else {
|
||||||
|
this.comparaComments()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 全文评论提交
|
||||||
|
fullTextComments () {
|
||||||
|
this.confirmLoading = true
|
||||||
|
const query = {
|
||||||
|
id: this.$route.query.id,
|
||||||
|
comments: this.formInlineText.comment
|
||||||
|
}
|
||||||
|
putAction('/compare/sarFileCompareInfo/editComments', query).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.$message.success(this.$t('operationSuccessful'))
|
||||||
|
this.visible = false
|
||||||
|
this.getData()
|
||||||
|
} else {
|
||||||
|
this.$message.warning(this.$t('operationFailed'))
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.confirmLoading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 发表评论提交
|
||||||
|
comparaComments () {
|
||||||
|
this.confirmLoading = true
|
||||||
|
const query = {
|
||||||
|
infoId: this.$route.query.id,
|
||||||
|
id: this.formInlineText.id,
|
||||||
|
comment: this.formInlineText.comment
|
||||||
|
}
|
||||||
|
putAction('/compare/sarFileCompareItemComment/edit', query).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.$message.success(this.$t('operationSuccessful'))
|
||||||
|
this.visible = false
|
||||||
|
this.getData()
|
||||||
|
} else {
|
||||||
|
this.$message.warning(this.$t('operationFailed'))
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.confirmLoading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 全文评论编辑点击
|
||||||
|
fullTextEdit (item) {
|
||||||
|
this.visible = true
|
||||||
|
this.title = this.$t('docTool.comparison.fullTextComments')
|
||||||
|
this.formInlineText.comment = this.resultData.comments || ''
|
||||||
|
this.formInlineText = { ...this.formInlineText }
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.ruleFormText.clearValidate()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 对比结果编辑按钮点击
|
||||||
|
comparaEdit (item) {
|
||||||
|
this.visible = true
|
||||||
|
this.title = this.$t('docTool.comparison.comparativeComments')
|
||||||
|
this.formInlineText = JSON.parse(JSON.stringify(item))
|
||||||
|
this.formInlineText = { ...this.formInlineText }
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.ruleFormText.clearValidate()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 对比结果删除按钮点击
|
||||||
|
comparaDelete (val) {
|
||||||
|
this.$confirm({
|
||||||
|
content: this.$t('confirmDeletion'),
|
||||||
|
onOk: () => {
|
||||||
|
deleteAction('/compare/sarFileCompareItemComment/delete', { id: val.id }).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.$message.success(this.$t('operationSuccessful'))
|
||||||
|
this.getData()
|
||||||
|
} else {
|
||||||
|
this.$message.warning(this.$t('operationFailed'))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
.doc-detail-wrap {
|
||||||
|
.doc-detail-header {
|
||||||
|
width: 100%;
|
||||||
|
z-index: 1000;
|
||||||
|
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;
|
||||||
|
background: #fff;
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
|
||||||
|
.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: 600px;
|
||||||
|
line-height: 68px;
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
.operator-text-text {
|
||||||
|
cursor: pointer;
|
||||||
|
margin-right: 53px;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #040B29;
|
||||||
|
display: inline-block;
|
||||||
|
width: 33.3%;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.operator-text-text-text {
|
||||||
|
color: #00B3BE !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content {
|
||||||
|
padding: 24px 32px 0 32px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
background: #fff;
|
||||||
|
margin-top: 68px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-header {
|
||||||
|
width: 100%;
|
||||||
|
height: 56px;
|
||||||
|
line-height: 56px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-header-content {
|
||||||
|
width: calc(100% - 56px);
|
||||||
|
margin-left: 20px;
|
||||||
|
display: inline-block;
|
||||||
|
height: 56px;
|
||||||
|
font-size: 14px;
|
||||||
|
font-family: Blue Sky Noto;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #040B29;
|
||||||
|
|
||||||
|
.detail-content-header-content-left {
|
||||||
|
width: calc(50% - 194px);
|
||||||
|
height: 56px;
|
||||||
|
display: inline-block;
|
||||||
|
background: rgba(4, 11, 41, 0.0300);
|
||||||
|
border-radius: 4px 0px 0px 4px;
|
||||||
|
border-right: 1px #EFF1F3 solid;
|
||||||
|
padding-left: 24px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-header-content-content {
|
||||||
|
width: calc(50% - 194px);
|
||||||
|
display: inline-block;
|
||||||
|
height: 56px;
|
||||||
|
background: rgba(4, 11, 41, 0.0300);
|
||||||
|
border-radius: 4px 0px 0px 4px;
|
||||||
|
border-right: 1px #EFF1F3 solid;
|
||||||
|
padding-left: 24px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-header-content-rightOne {
|
||||||
|
width: 260px;
|
||||||
|
display: inline-block;
|
||||||
|
height: 56px;
|
||||||
|
background: rgba(4, 11, 41, 0.0300);
|
||||||
|
border-radius: 4px 0px 0px 4px;
|
||||||
|
padding-left: 24px;
|
||||||
|
border-right: 1px #EFF1F3 solid;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-header-content-rightOne-active {
|
||||||
|
border-right: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-header-content-right {
|
||||||
|
width: 128px;
|
||||||
|
display: inline-block;
|
||||||
|
height: 56px;
|
||||||
|
background: rgba(4, 11, 41, 0.0300);
|
||||||
|
border-radius: 4px 0px 0px 4px;
|
||||||
|
padding-left: 24px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-header-content-left {
|
||||||
|
width: calc(50% - 194px);
|
||||||
|
height: 56px;
|
||||||
|
display: inline-block;
|
||||||
|
background: rgba(4, 11, 41, 0.0300);
|
||||||
|
border-radius: 4px 0px 0px 4px;
|
||||||
|
border-right: 1px #EFF1F3 solid;
|
||||||
|
padding-left: 24px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-header-content-content {
|
||||||
|
width: calc(50% - 194px);
|
||||||
|
display: inline-block;
|
||||||
|
height: 56px;
|
||||||
|
background: rgba(4, 11, 41, 0.0300);
|
||||||
|
border-radius: 4px 0px 0px 4px;
|
||||||
|
border-right: 1px #EFF1F3 solid;
|
||||||
|
padding-left: 24px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-header-content-rightOne {
|
||||||
|
width: 260px;
|
||||||
|
display: inline-block;
|
||||||
|
height: 56px;
|
||||||
|
background: rgba(4, 11, 41, 0.0300);
|
||||||
|
border-radius: 4px 0px 0px 4px;
|
||||||
|
padding-left: 24px;
|
||||||
|
border-right: 1px #EFF1F3 solid;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-header-content-rightOne-active {
|
||||||
|
border-right: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-header-content-right {
|
||||||
|
width: 128px;
|
||||||
|
display: inline-block;
|
||||||
|
height: 56px;
|
||||||
|
background: rgba(4, 11, 41, 0.0300);
|
||||||
|
border-radius: 4px 0px 0px 4px;
|
||||||
|
padding-left: 24px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-content {
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
position: relative;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-checkbox {
|
||||||
|
margin-left: 28px;
|
||||||
|
float: left;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-content-text {
|
||||||
|
width: calc(100% - 56px);
|
||||||
|
margin-left: 56px;
|
||||||
|
border: 1px solid #EFF1F3;
|
||||||
|
border-radius: 4px;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
.detail-content-content-text-left {
|
||||||
|
width: calc(100% - 128px);
|
||||||
|
float: left;
|
||||||
|
border-right: 1px solid #EFF1F3;
|
||||||
|
padding: 24px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-content-text-right {
|
||||||
|
width: 128px;
|
||||||
|
float: left;
|
||||||
|
height: auto;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
.text-button-one {
|
||||||
|
display: inline-block;
|
||||||
|
width: 128px;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-button {
|
||||||
|
margin-right: 8px;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-content-text-color {
|
||||||
|
border: 1px solid #00B3BE;
|
||||||
|
background: rgba(0, 179, 190, 0.0300);
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-left {
|
||||||
|
width: calc(50% - 130px);
|
||||||
|
display: inline-block;
|
||||||
|
float: left;
|
||||||
|
padding-right: 24px;
|
||||||
|
border-right: 1px #EFF1F3 solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-right {
|
||||||
|
width: calc(50% - 104px);
|
||||||
|
display: inline-block;
|
||||||
|
float: left;
|
||||||
|
padding-left: 24px;
|
||||||
|
padding-right: 24px;
|
||||||
|
border-right: 1px #EFF1F3 solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-right-one {
|
||||||
|
width: 234px;
|
||||||
|
display: inline-block;
|
||||||
|
float: left;
|
||||||
|
padding-left: 24px;
|
||||||
|
/*border-right: 1px #EFF1F3 solid;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-left-top {
|
||||||
|
font-size: 16px;
|
||||||
|
font-family: Blue Sky Noto;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #040B29;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-left-button {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #040B29;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-bottom {
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 14px;
|
||||||
|
padding: 24px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
background: rgba(4, 11, 41, 0.0300);
|
||||||
|
border-radius: 4px;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-bottom-color {
|
||||||
|
background: rgba(0, 179, 190, 0.0300);
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-bottom-left {
|
||||||
|
width: 115px;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #040B29;
|
||||||
|
float: left;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-bottom-right {
|
||||||
|
width: calc(50% - 115px);
|
||||||
|
float: left;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #040B29;
|
||||||
|
word-break: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-content-text-left-text {
|
||||||
|
width: 100%;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #040B29;
|
||||||
|
overflow: hidden;
|
||||||
|
display: -webkit-box;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
/*! autoprefixer: off */
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
-webkit-line-clamp: 3;
|
||||||
|
/*! autoprefixer: on;*/
|
||||||
|
word-break: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-content-text-dis {
|
||||||
|
width: 100% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-header-content-left-active {
|
||||||
|
width: calc(50% - 130px) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-bottom-left-text {
|
||||||
|
width: 256px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-bottom-right-text {
|
||||||
|
width: calc(50% - 256px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.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;
|
||||||
|
}
|
||||||
|
|
||||||
|
.operator-text-text-text {
|
||||||
|
color: #00B3BE !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,612 @@
|
|||||||
|
<template>
|
||||||
|
<a-spin :spinning="loading">
|
||||||
|
<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" @click="goBack">
|
||||||
|
<a-icon type="arrow-left" style="margin-right: 6px;"/>
|
||||||
|
</span>
|
||||||
|
<span> {{$t('docTool.comparison.documentComparison')}}</span>
|
||||||
|
</div>
|
||||||
|
<div class="doc-detail-right">
|
||||||
|
<div @click="viewTheComparisonResultsClick" class="operator-text-text"
|
||||||
|
:title="$t('docTool.comparison.viewTheComparisonResults')">
|
||||||
|
<a-icon type="eye"/>
|
||||||
|
{{$t('docTool.comparison.viewTheComparisonResults')}}
|
||||||
|
</div>
|
||||||
|
<div @click="addFullTextCommentClick" class="operator-text-text"
|
||||||
|
:title="$t('docTool.comparison.addFullTextComment')">
|
||||||
|
<a-icon type="message"/>
|
||||||
|
{{$t('docTool.comparison.addFullTextComment')}}
|
||||||
|
</div>
|
||||||
|
<div @click="turnOffAutomaticMatchingClick" class="operator-text-text"
|
||||||
|
:title="isMatching ? $t('docTool.comparison.turnOffAutomaticMatching'):$t('docTool.comparison.turnOnAutoMatch')">
|
||||||
|
<a-icon :type="isMatching?'close-circle':'check-circle'"/>
|
||||||
|
{{isMatching ? $t('docTool.comparison.turnOffAutomaticMatching'):$t('docTool.comparison.turnOnAutoMatch')}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="detail-content">
|
||||||
|
<div class="detail-content-cont">
|
||||||
|
<div class="detail-content-left">
|
||||||
|
<div class="detail-content-left-header"
|
||||||
|
:title="resultData.serialNumberLeft + resultData.fileNameLeft">
|
||||||
|
{{this.resultData.serialNumberLeft}}
|
||||||
|
{{this.resultData.fileNameLeft}}
|
||||||
|
</div>
|
||||||
|
<div class="detail-content-content-left">
|
||||||
|
<a-tree
|
||||||
|
class="draggable-tree"
|
||||||
|
@select="onSelectLeft"
|
||||||
|
:tree-data="resultData.menuLeft"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="detail-content-content-right-top">
|
||||||
|
<div class="detail-content-content-right">
|
||||||
|
<div class="detail-content-content-right-data" @click="detailLeft(index,item)"
|
||||||
|
v-for="(item,index) in resultData.textLeft" :key="index"
|
||||||
|
:class="{'detail-content-content-right-data-blue':item.reviewed === '1'}">
|
||||||
|
<div class="detail-content-content-right-data-text" style="margin-bottom: 10px;color: #040B29">
|
||||||
|
{{item.itemsNum + ' ' + item.itemsName}}
|
||||||
|
</div>
|
||||||
|
<div class="detail-content-content-right-data-text" v-html="item.itemsText"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="detail-content-right">
|
||||||
|
<div class="detail-content-left-header">
|
||||||
|
<span class="detail-content-left-header-text"
|
||||||
|
:title="resultData.serialNumberRight + resultData.fileNameRight">
|
||||||
|
{{this.resultData.serialNumberRight}}
|
||||||
|
{{this.resultData.fileNameRight}}
|
||||||
|
</span>
|
||||||
|
<!-- <span class="detail-content-left-header-text-right">-->
|
||||||
|
<!-- <span style="color: #9B9DA9">相似度:</span>-->
|
||||||
|
<!-- <span style="color: #E83030">98%</span>-->
|
||||||
|
<!-- </span>-->
|
||||||
|
</div>
|
||||||
|
<div class="detail-content-content-left">
|
||||||
|
<a-tree
|
||||||
|
class="draggable-tree"
|
||||||
|
@select="onSelectRight"
|
||||||
|
:tree-data="resultData.menuRight"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="detail-content-content-right-right-top">
|
||||||
|
<div class="detail-content-content-right-right">
|
||||||
|
<div class="detail-content-content-right-data-right" @click="detailRight(index,item)"
|
||||||
|
v-for="(item,index) in resultData.textRight" :key="index"
|
||||||
|
:class="{'detail-content-content-right-data-blue-right':item.reviewed === '1'}">
|
||||||
|
<div class="detail-content-content-right-data-text" style="margin-bottom: 10px;color: #040B29">
|
||||||
|
{{item.itemsNum + ' ' + item.itemsName}}
|
||||||
|
</div>
|
||||||
|
<div class="detail-content-content-right-data-text" v-html="item.itemsText">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<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('docTool.comparison.comparisonOfArticles')" style="width: 84px">
|
||||||
|
<span>{{$t('docTool.comparison.comparisonOfArticles')}}</span>
|
||||||
|
</div>
|
||||||
|
<a-form-model-item class="item-model" prop="comment">
|
||||||
|
<a-textarea :placeholder="$t('pleaseEnter')+$t('docTool.comparison.comparisonOfArticles')"
|
||||||
|
v-model="formInline.comment"
|
||||||
|
:maxLength="500"
|
||||||
|
:rows="3"/>
|
||||||
|
</a-form-model-item>
|
||||||
|
</div>
|
||||||
|
</a-form-model>
|
||||||
|
</div>
|
||||||
|
<div class="submit-button">
|
||||||
|
<a-button style="margin-right: 10px"
|
||||||
|
type="primary" @click="consistentAssessmentClick()">{{$t('docTool.comparison.consistentAssessment')}}
|
||||||
|
</a-button>
|
||||||
|
<a-button type="primary" @click="submit()">{{$t('preservation')}}</a-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<a-modal
|
||||||
|
:title="$t('docTool.comparison.fullTextComments')"
|
||||||
|
:width="600"
|
||||||
|
:visible="visible"
|
||||||
|
:confirm-loading="textDataLoading"
|
||||||
|
:maskClosable="false"
|
||||||
|
@cancel="visible = false"
|
||||||
|
>
|
||||||
|
<template slot="footer">
|
||||||
|
<a-button type="primary" :loading="textDataLoading" @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('docTool.comparison.fullTextComments')">
|
||||||
|
<span>{{$t('docTool.comparison.fullTextComments')}}</span>
|
||||||
|
</div>
|
||||||
|
<a-form-model-item class="item-model" style="width: calc(100% - 113px)" prop="comment">
|
||||||
|
<a-textarea :placeholder="$t('pleaseEnter')+' '+$t('docTool.comparison.fullTextComments')"
|
||||||
|
v-model.trim="formInlineText.comment"
|
||||||
|
:maxLength="500"
|
||||||
|
:rows="4"/>
|
||||||
|
</a-form-model-item>
|
||||||
|
</div>
|
||||||
|
</a-form-model>
|
||||||
|
</a-modal>
|
||||||
|
</a-spin>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { postAction, putAction, getAction } from '@/api/manage'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'DocumentDataComparison',
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
formInline: {},
|
||||||
|
formInlineText: {},
|
||||||
|
loadingText: false,
|
||||||
|
rules: {},
|
||||||
|
rulesText: {},
|
||||||
|
loading: false,
|
||||||
|
textDataLoading: false,
|
||||||
|
visible: false, // 全文评论弹框是否显示
|
||||||
|
resultData: {},
|
||||||
|
isMatching: true, // 自动匹配是否开启
|
||||||
|
dataLeft: {},
|
||||||
|
dataRight: {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted () {
|
||||||
|
this.getData()
|
||||||
|
document.title = this.$t('docTool.comparison.documentComparison') + ' - ' + this.$t('edit')
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
goBack () {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/documentTool/documentComparison'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 文档对比的一致按钮点击
|
||||||
|
consistentAssessmentClick () {
|
||||||
|
if (!this.dataLeft.id && !this.dataRight.id) {
|
||||||
|
this.$message.warning(this.$t('docTool.comparison.pleaseSelectTheDataCompared'))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const query = {
|
||||||
|
itemsIdLeft: this.dataLeft.id,
|
||||||
|
itemsIdRight: this.dataRight.id,
|
||||||
|
infoId: this.$route.query.id,
|
||||||
|
comment: '一致'
|
||||||
|
}
|
||||||
|
this.loading = true
|
||||||
|
postAction('/compare/sarFileCompareItemComment/add', query).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.$message.success(this.$t('operationSuccessful'))
|
||||||
|
this.formInline = {}
|
||||||
|
this.resultData.textRight.forEach(val => {
|
||||||
|
if (val.id === this.dataRight.id) {
|
||||||
|
val.reviewed = 1
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.resultData.textLeft.forEach(val => {
|
||||||
|
if (val.id === this.dataLeft.id) {
|
||||||
|
val.reviewed = 1
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.resultData = { ...this.resultData }
|
||||||
|
const detailLeftColor = document.getElementsByClassName('detail-content-content-right-data-color')
|
||||||
|
if (detailLeftColor && detailLeftColor.length > 0) {
|
||||||
|
detailLeftColor[0].classList.remove('detail-content-content-right-data-color')
|
||||||
|
}
|
||||||
|
const 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')
|
||||||
|
}
|
||||||
|
this.dataLeft = {}
|
||||||
|
this.dataRight = {}
|
||||||
|
} else {
|
||||||
|
this.$message.warning(this.$t('operationFailed'))
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 文档对比的保存按钮点击
|
||||||
|
submit () {
|
||||||
|
if (!this.dataLeft.id && !this.dataRight.id) {
|
||||||
|
this.$message.warning(this.$t('docTool.comparison.pleaseSelectTheDataCompared'))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.$refs.ruleForm.validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
const query = {
|
||||||
|
itemsIdLeft: this.dataLeft.id,
|
||||||
|
itemsIdRight: this.dataRight.id,
|
||||||
|
infoId: this.$route.query.id,
|
||||||
|
comment: this.formInline.comment
|
||||||
|
}
|
||||||
|
this.loading = true
|
||||||
|
postAction('/compare/sarFileCompareItemComment/add', query).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.$message.success(this.$t('operationSuccessful'))
|
||||||
|
this.formInline = {}
|
||||||
|
this.resultData.textRight.forEach(val => {
|
||||||
|
if (val.id === this.dataRight.id) {
|
||||||
|
val.reviewed = 1
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.resultData.textLeft.forEach(val => {
|
||||||
|
if (val.id === this.dataLeft.id) {
|
||||||
|
val.reviewed = 1
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.resultData = { ...this.resultData }
|
||||||
|
const detailLeftColor = document.getElementsByClassName('detail-content-content-right-data-color')
|
||||||
|
if (detailLeftColor && detailLeftColor.length > 0) {
|
||||||
|
detailLeftColor[0].classList.remove('detail-content-content-right-data-color')
|
||||||
|
}
|
||||||
|
const 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')
|
||||||
|
}
|
||||||
|
this.dataLeft = {}
|
||||||
|
this.dataRight = {}
|
||||||
|
// this.$router.push({
|
||||||
|
// path: '/documentComparison'
|
||||||
|
// })
|
||||||
|
} else {
|
||||||
|
this.$message.warning(this.$t('operationFailed'))
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 查看对比结果按钮点击
|
||||||
|
viewTheComparisonResultsClick () {
|
||||||
|
const newUrl = this.$router.resolve({
|
||||||
|
path: '/comparisonResults',
|
||||||
|
query: {
|
||||||
|
id: this.$route.query.id,
|
||||||
|
isDisplay: 2
|
||||||
|
}
|
||||||
|
})
|
||||||
|
window.open(newUrl.href, '_blank')
|
||||||
|
},
|
||||||
|
// 添加全文评论按钮点击
|
||||||
|
addFullTextCommentClick () {
|
||||||
|
this.visible = true
|
||||||
|
const query = {
|
||||||
|
id: this.$route.query.id
|
||||||
|
}
|
||||||
|
this.textDataLoading = true
|
||||||
|
postAction('/compare/sarFileCompareInfo/getComparisonDetail', query).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.formInlineText.comment = res.result.comments || ''
|
||||||
|
this.formInlineText = { ...this.formInlineText }
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.textDataLoading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 关闭自动匹配、开启自动匹配
|
||||||
|
turnOffAutomaticMatchingClick () {
|
||||||
|
this.isMatching = !this.isMatching
|
||||||
|
this.$message.success(this.$t('operationSuccessful'))
|
||||||
|
},
|
||||||
|
// 添加全文评论弹框的提交按钮
|
||||||
|
fullTextCommentsSubmit () {
|
||||||
|
this.$refs.ruleFormText.validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
const formInlineText = JSON.parse(JSON.stringify(this.formInlineText))
|
||||||
|
this.textDataLoading = true
|
||||||
|
const query = {
|
||||||
|
id: this.$route.query.id,
|
||||||
|
comments: formInlineText.comment
|
||||||
|
}
|
||||||
|
putAction('/compare/sarFileCompareInfo/editComments', query).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.$message.success(this.$t('operationSuccessful'))
|
||||||
|
this.visible = false
|
||||||
|
} else {
|
||||||
|
this.$message.warning(this.$t('operationFailed'))
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.textDataLoading = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 获取文件对比详情
|
||||||
|
getData () {
|
||||||
|
const query = {
|
||||||
|
id: this.$route.query.id
|
||||||
|
}
|
||||||
|
// this.loading = true
|
||||||
|
postAction('/compare/sarFileCompareInfo/getComparisonDetail', query).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.resultData = res.result || {}
|
||||||
|
this.formInlineText.comment = res.result.comments || ''
|
||||||
|
this.formInlineText = { ...this.formInlineText }
|
||||||
|
} else {
|
||||||
|
this.resultData = {}
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
// this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 点击左侧文档内容
|
||||||
|
detailLeft (num, item) {
|
||||||
|
const detailLeftColor = document.getElementsByClassName('detail-content-content-right-data-color')
|
||||||
|
if (detailLeftColor && detailLeftColor.length > 0) {
|
||||||
|
detailLeftColor[0].classList.remove('detail-content-content-right-data-color')
|
||||||
|
}
|
||||||
|
if (item.id === this.dataLeft.id && !this.isMatching) {
|
||||||
|
this.dataLeft = {}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const detailLeft = document.getElementsByClassName('detail-content-content-right-data')
|
||||||
|
if (detailLeft && detailLeft.length > 0) {
|
||||||
|
detailLeft[num].classList.add('detail-content-content-right-data-color')
|
||||||
|
}
|
||||||
|
this.dataLeft = item
|
||||||
|
this.dataLeft.numIndex = num
|
||||||
|
if (this.isMatching) {
|
||||||
|
const 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')
|
||||||
|
}
|
||||||
|
if (item.targetStand > -1) {
|
||||||
|
const detailContent = document.getElementsByClassName('detail-content-content-right-right-top')
|
||||||
|
const detailRight = document.getElementsByClassName('detail-content-content-right-data-right')
|
||||||
|
this.dataRight = this.resultData.textRight[item.targetStand]
|
||||||
|
if (detailRight && detailRight.length > 0) {
|
||||||
|
detailRight[item.targetStand].classList.add('detail-content-content-right-data-color-right')
|
||||||
|
detailContent[0].scrollTop = detailRight[item.targetStand].offsetTop - 150
|
||||||
|
}
|
||||||
|
this.dataRight.numIndex = item.targetStand
|
||||||
|
this.clauseComparison()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 点击右侧文档内容
|
||||||
|
detailRight (num, item) {
|
||||||
|
const 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')
|
||||||
|
}
|
||||||
|
if (item.id === this.dataRight.id && !this.isMatching) {
|
||||||
|
this.dataRight = {}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const 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')
|
||||||
|
}
|
||||||
|
this.dataRight = item
|
||||||
|
this.dataRight.numIndex = num
|
||||||
|
if (this.isMatching) {
|
||||||
|
const detailLeftColor = document.getElementsByClassName('detail-content-content-right-data-color')
|
||||||
|
if (detailLeftColor && detailLeftColor.length > 0) {
|
||||||
|
detailLeftColor[0].classList.remove('detail-content-content-right-data-color')
|
||||||
|
}
|
||||||
|
if (item.targetStand > -1) {
|
||||||
|
this.dataLeft = this.resultData.textLeft[item.targetStand]
|
||||||
|
this.dataLeft.numIndex = item.targetStand
|
||||||
|
const detailContent = document.getElementsByClassName('detail-content-content-right-top')
|
||||||
|
const detailLeft = document.getElementsByClassName('detail-content-content-right-data')
|
||||||
|
if (detailLeft && detailLeft.length > 0 && item.targetStand >= 0) {
|
||||||
|
detailLeft[item.targetStand].classList.add('detail-content-content-right-data-color')
|
||||||
|
detailContent[0].scrollTop = detailLeft[item.targetStand].offsetTop - 150
|
||||||
|
}
|
||||||
|
this.clauseComparison()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 自动匹配
|
||||||
|
clauseComparison () {
|
||||||
|
const query = {
|
||||||
|
leftId: this.dataLeft.id,
|
||||||
|
rightId: this.dataRight.id
|
||||||
|
}
|
||||||
|
this.loadingText = true
|
||||||
|
getAction('/compare/sarFileCompareItem/clauseComparison', query).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.loadingText = false
|
||||||
|
this.resultData.textLeft[this.dataLeft.numIndex].itemsText = res.result[0]
|
||||||
|
this.resultData.textRight[this.dataRight.numIndex].itemsText = res.result[1]
|
||||||
|
} else {
|
||||||
|
this.loadingText = false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 左侧树选择
|
||||||
|
onSelectLeft (selectedKeys, exports) {
|
||||||
|
const node = exports.node.$vnode.data.props.dataRef
|
||||||
|
const detailLeft = document.getElementsByClassName('detail-content-content-right-data')
|
||||||
|
const detailContent = document.getElementsByClassName('detail-content-content-right-top')
|
||||||
|
if (!node.parentId) {
|
||||||
|
detailContent[0].scrollTop = 0
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for (let i = 0; i < this.resultData.textLeft.length; i++) {
|
||||||
|
if (node.parentId && node.menuId === this.resultData.textLeft[i].menuId) {
|
||||||
|
detailContent[0].scrollTop = detailLeft[i].offsetTop - 150
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 右侧树选中
|
||||||
|
onSelectRight (selectedKeys, exports) {
|
||||||
|
const node = exports.node.$vnode.data.props.dataRef
|
||||||
|
const detailRight = document.getElementsByClassName('detail-content-content-right-data-right')
|
||||||
|
const detailContent = document.getElementsByClassName('detail-content-content-right-right-top')
|
||||||
|
if (!node.parentId) {
|
||||||
|
detailContent[0].scrollTop = 0
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for (let i = 0; i < this.resultData.textRight.length; i++) {
|
||||||
|
if (node.parentId && node.menuId === this.resultData.textRight[i].menuId) {
|
||||||
|
detailContent[0].scrollTop = detailRight[i].offsetTop - 150
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
.doc-detail-wrap {
|
||||||
|
.doc-detail-header {
|
||||||
|
width: 100%;
|
||||||
|
z-index: 1000;
|
||||||
|
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;
|
||||||
|
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: 600px;
|
||||||
|
line-height: 68px;
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
.operator-text-text {
|
||||||
|
cursor: pointer;
|
||||||
|
margin-right: 53px;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #040B29;
|
||||||
|
display: inline-block;
|
||||||
|
width: 33.3%;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content {
|
||||||
|
padding-top: 68px;
|
||||||
|
background: #fff;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
&-cont {
|
||||||
|
width: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
&-left {
|
||||||
|
width: 50%;
|
||||||
|
height: calc(100vh - 210px);
|
||||||
|
border-right: 2px #EFF1F3 solid;
|
||||||
|
padding: 24px 32px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-bottom: 2px #EFF1F3 solid;
|
||||||
|
}
|
||||||
|
&-right {
|
||||||
|
width: 50%;
|
||||||
|
height: calc(100vh - 210px);
|
||||||
|
padding: 24px 32px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-bottom: 2px #EFF1F3 solid;
|
||||||
|
}
|
||||||
|
&-left-header {
|
||||||
|
margin-bottom: 24px;
|
||||||
|
}
|
||||||
|
&-left-header-text {
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 16px;
|
||||||
|
font-family: Blue Sky Noto;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #040B29;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-content-left {
|
||||||
|
width: 180px;
|
||||||
|
height: 520px;
|
||||||
|
float: left;
|
||||||
|
overflow: auto;
|
||||||
|
/deep/ .ant-tree-node-content-wrapper {
|
||||||
|
display: inline-block !important;
|
||||||
|
color: #040B29 !important;
|
||||||
|
width: 130px;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.remarks {
|
||||||
|
margin-top: 20px;
|
||||||
|
width: 50%;
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0 32px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.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;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-model {
|
||||||
|
width: calc(100% - 232px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.submit-button {
|
||||||
|
width: 100%;
|
||||||
|
height: 60px;
|
||||||
|
text-align: right;
|
||||||
|
padding: 14px 32px 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-top: 2px #eff1f3 solid;
|
||||||
|
background: #ffffff;
|
||||||
|
position: fixed;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<a-drawer
|
<a-drawer
|
||||||
:title="$t('importResults')"
|
:title="$t('docTool.split.importResults')"
|
||||||
placement="right"
|
placement="right"
|
||||||
:visible="visible"
|
:visible="visible"
|
||||||
@close="onClose"
|
@close="onClose"
|
||||||
@@ -106,7 +106,7 @@ export default {
|
|||||||
},
|
},
|
||||||
// 模板下载
|
// 模板下载
|
||||||
downLoadTemplate () {
|
downLoadTemplate () {
|
||||||
const name = this.$t('documentSplitTemplate') + '.xlsx'
|
const name = this.$t('docTool.split.documentSplitTemplate') + '.xlsx'
|
||||||
downloadFile(this.url.downloadTemplate, name, {})
|
downloadFile(this.url.downloadTemplate, name, {})
|
||||||
},
|
},
|
||||||
// 保存
|
// 保存
|
||||||
@@ -117,7 +117,7 @@ export default {
|
|||||||
if (this.selectedRowKeys.length === 0) {
|
if (this.selectedRowKeys.length === 0) {
|
||||||
this.$message.warning(this.$t('pleaseSelectOne'))
|
this.$message.warning(this.$t('pleaseSelectOne'))
|
||||||
} else if (!this.form.file) {
|
} else if (!this.form.file) {
|
||||||
this.$message.warning(this.$t('pleaseUploadSplitFile'))
|
this.$message.warning(this.$t('docTool.split.pleaseUploadSplitFile'))
|
||||||
} else if (this.selectedRowKeys && this.selectedRowKeys.length === 1) {
|
} else if (this.selectedRowKeys && this.selectedRowKeys.length === 1) {
|
||||||
const row = this.selectedRows[0]
|
const row = this.selectedRows[0]
|
||||||
const params = {
|
const params = {
|
||||||
@@ -133,7 +133,7 @@ export default {
|
|||||||
this.loading = true
|
this.loading = true
|
||||||
httpAction(this.url.submit, params, 'post').then(res => {
|
httpAction(this.url.submit, params, 'post').then(res => {
|
||||||
if (res.data.success) {
|
if (res.data.success) {
|
||||||
this.$message.success(this.$t('OperationSuccessful'))
|
this.$message.success(this.$t('operationSuccessful'))
|
||||||
this.visible = false
|
this.visible = false
|
||||||
this.$emit('visible', false, 1)
|
this.$emit('visible', false, 1)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -0,0 +1,612 @@
|
|||||||
|
<template>
|
||||||
|
<div class="doc-detail-wrap">
|
||||||
|
<div class="doc-detail-header">
|
||||||
|
<div class="doc-detail-title">
|
||||||
|
<span style="line-height: 66px;display: inline-block;float: left" @click="goBack">
|
||||||
|
<a-icon type="arrow-left" style="margin-right: 6px;"/>
|
||||||
|
</span>
|
||||||
|
<span> {{$t('docTool.comparison.initiateComparison')}}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="detail-content">
|
||||||
|
<div style="width: 100%;height: auto;overflow: hidden">
|
||||||
|
<div class="detail-content-left">
|
||||||
|
<a-form layout="inline" @keyup.enter.native="searchQueryLeft">
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :md="8" :sm="8">
|
||||||
|
<a-form-item :label="$t('number')" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-input :placeholder="$t('pleaseEnter')+$t('number')"
|
||||||
|
v-model="queryParamLeft.serialNumber"></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :md="8" :sm="8">
|
||||||
|
<a-form-item :label="$t('title')" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-input :placeholder="$t('pleaseEnter')+$t('title')"
|
||||||
|
v-model="queryParamLeft.title"></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<span style="text-align:right;overflow: hidden;" class="table-page-search-submitButtons">
|
||||||
|
<a-col :md="8" :sm="24">
|
||||||
|
<a-button @click="searchResetLeft">{{$t('reset')}}</a-button>
|
||||||
|
<a-button style="margin-left: 8px" type="primary" @click="searchQueryLeft">{{$t('query')}}</a-button>
|
||||||
|
</a-col>
|
||||||
|
</span>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
<a-table
|
||||||
|
ref="table"
|
||||||
|
size="middle"
|
||||||
|
:components="drag(columns,'columns')"
|
||||||
|
:loading="loadingLeft"
|
||||||
|
:pagination="false"
|
||||||
|
:scroll="{x: '100%',y:340}"
|
||||||
|
rowKey="id"
|
||||||
|
:data-source="dataSourceLeft"
|
||||||
|
:row-selection="{ selectedRowKeys: selectedRowKeysLeft, onChange: onSelectChangeLeft, columnTitle:' ', type: 'radio'}"
|
||||||
|
:columns="columns"
|
||||||
|
@change="tableChangeLeft"
|
||||||
|
>
|
||||||
|
</a-table>
|
||||||
|
<div class="box-button-standard">
|
||||||
|
<span class="box-button-standard-left" :title="$t('docTool.comparison.selectedStandard')">
|
||||||
|
{{$t('docTool.comparison.selectedStandard')}}
|
||||||
|
</span>
|
||||||
|
<span class="box-button-standard-right"
|
||||||
|
@click="selectLeftClick(selectedRowsLeft[0])"
|
||||||
|
:title="selectedRowsLeft[0]?selectedRowsLeft[0].serialNumber+' '+selectedRowsLeft[0].fileName:$t('docTool.comparison.noComparisonDocumentSelected')"
|
||||||
|
:class="{'box-button-standard-right-color':selectedRowsLeft[0]}">
|
||||||
|
{{selectedRowsLeft[0]?selectedRowsLeft[0].serialNumber+' '+selectedRowsLeft[0].fileName:$t('docTool.comparison.noComparisonDocumentSelected')}}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="detail-content-right">
|
||||||
|
<a-form layout="inline" @keyup.enter.native="searchQueryRight">
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :md="8" :sm="8">
|
||||||
|
<a-form-item :label="$t('number')" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-input :placeholder="$t('pleaseEnter')+$t('number')"
|
||||||
|
v-model="queryParamRight.serialNumber"></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :md="8" :sm="8">
|
||||||
|
<a-form-item :label="$t('title')" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
|
<a-input :placeholder="$t('pleaseEnter')+$t('title')"
|
||||||
|
v-model="queryParamRight.title"></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<span style="text-align:right;overflow: hidden;" class="table-page-search-submitButtons">
|
||||||
|
<a-col :md="8" :sm="24">
|
||||||
|
<a-button @click="searchResetRight">{{$t('reset')}}</a-button>
|
||||||
|
<a-button style="margin-left: 8px" type="primary" @click="searchQueryRight">{{$t('query')}}</a-button>
|
||||||
|
</a-col>
|
||||||
|
</span>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
<a-table
|
||||||
|
ref="table"
|
||||||
|
size="middle"
|
||||||
|
:components="drag(columns,'columns')"
|
||||||
|
:loading="loadingRight"
|
||||||
|
:pagination="false"
|
||||||
|
:scroll="{x: '100%',y:340}"
|
||||||
|
rowKey="id"
|
||||||
|
:data-source="dataSourceRight"
|
||||||
|
:row-selection="{ selectedRowKeys: selectedRowKeysRight, onChange: onSelectChangeRight, columnTitle:' ', type: 'radio'}"
|
||||||
|
:columns="columns"
|
||||||
|
@change="tableChangeRight"
|
||||||
|
>
|
||||||
|
</a-table>
|
||||||
|
<div class="box-button-standard">
|
||||||
|
<span class="box-button-standard-left" :title="$t('docTool.comparison.selectedStandard')">
|
||||||
|
{{$t('docTool.comparison.selectedStandard')}}
|
||||||
|
</span>
|
||||||
|
<span class="box-button-standard-right"
|
||||||
|
@click="selectLeftClick(selectedRowsRight[0])"
|
||||||
|
:title="selectedRowsRight[0]?selectedRowsRight[0].serialNumber+' '+selectedRowsRight[0].fileName:$t('docTool.comparison.noComparisonDocumentSelected')"
|
||||||
|
:class="{'box-button-standard-right-color':selectedRowsRight[0]}">
|
||||||
|
{{selectedRowsRight[0]?selectedRowsRight[0].serialNumber+' '+selectedRowsRight[0].fileName:$t('docTool.comparison.noComparisonDocumentSelected')}}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<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('docTool.comparison.remarkInfo')">
|
||||||
|
<span>{{$t('docTool.comparison.remarkInfo')}}</span>
|
||||||
|
</div>
|
||||||
|
<a-form-model-item class="item-model" prop="remark">
|
||||||
|
<a-textarea :placeholder="$t('pleaseEnter')+$t('docTool.comparison.remarkInfo')"
|
||||||
|
:maxLength="300"
|
||||||
|
v-model="formInline.remark"
|
||||||
|
:rows="4"/>
|
||||||
|
</a-form-model-item>
|
||||||
|
</div>
|
||||||
|
</a-form-model>
|
||||||
|
</div>
|
||||||
|
<div class="submit-button">
|
||||||
|
<a-button class="box-button" type="primary" @click="submit">{{$t('docTool.comparison.initiateDocumentComparison')}}</a-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- <JLoading :loading="loading">{{$t('pleaseWaitWhileRunning')}}</JLoading>-->
|
||||||
|
<div id="images">
|
||||||
|
<div class="image" v-viewer="{movable: false}">
|
||||||
|
<img v-show="image" :src="imageUrl">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getAction, postAction, downloadFile, getFileAccessHttpUrl } from '@/api/manage'
|
||||||
|
import { previewPdf } from '@/utils/previewPdf'
|
||||||
|
import { Base64 } from 'js-base64'
|
||||||
|
import { mapGetters } from 'vuex'
|
||||||
|
import { ResizeHeader, ResizeColumnProvide } from '@/mixins/header'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'InitiateComparison',
|
||||||
|
mixins: [ResizeHeader, ResizeColumnProvide],
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
loading: false,
|
||||||
|
labelCol: {
|
||||||
|
span: 6
|
||||||
|
},
|
||||||
|
wrapperCol: {
|
||||||
|
span: 14
|
||||||
|
},
|
||||||
|
loadingLeft: false,
|
||||||
|
queryParamLeft: {},
|
||||||
|
ipaginationLeft: {
|
||||||
|
current: 1,
|
||||||
|
pageSize: 50,
|
||||||
|
pageSizeOptions: ['10', '50', '100', '150', '200'],
|
||||||
|
showTotal: (total, range) => {
|
||||||
|
return range[0] + '-' + range[1] + ' ' + this.$t('total') + ' ' + total + ' ' + this.$t('strip')
|
||||||
|
},
|
||||||
|
showQuickJumper: true,
|
||||||
|
showSizeChanger: true,
|
||||||
|
total: 0
|
||||||
|
},
|
||||||
|
selectedRowKeysLeft: [],
|
||||||
|
selectedRowsLeft: [],
|
||||||
|
dataSourceLeft: [],
|
||||||
|
loadingRight: false,
|
||||||
|
queryParamRight: {},
|
||||||
|
ipaginationRight: {
|
||||||
|
current: 1,
|
||||||
|
pageSize: 50,
|
||||||
|
pageSizeOptions: ['10', '50', '100', '150', '200'],
|
||||||
|
showTotal: (total, range) => {
|
||||||
|
return range[0] + '-' + range[1] + ' ' + this.$t('total') + ' ' + total + ' ' + this.$t('strip')
|
||||||
|
},
|
||||||
|
showQuickJumper: true,
|
||||||
|
showSizeChanger: true,
|
||||||
|
total: 0
|
||||||
|
},
|
||||||
|
selectedRowKeysRight: [],
|
||||||
|
dataSourceRight: [],
|
||||||
|
selectedRowsRight: [],
|
||||||
|
formInline: {},
|
||||||
|
downLoadFileUrl: window._CONFIG.domianPreviewURL + '/sys/common/download',
|
||||||
|
downLoadImgUrl: window._CONFIG.domianWebImgURL + '/sys/common/download',
|
||||||
|
rules: {
|
||||||
|
// remark: [
|
||||||
|
// {
|
||||||
|
// max: 300,
|
||||||
|
// message: this.$t('RemarkInfo') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
|
||||||
|
// trigger: 'blur'
|
||||||
|
// }
|
||||||
|
// ]
|
||||||
|
},
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
title: this.$t('number'),
|
||||||
|
align: 'left',
|
||||||
|
width: 70,
|
||||||
|
customRender: function (t, r, index) {
|
||||||
|
return parseInt(index) + 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('number'),
|
||||||
|
align: 'left',
|
||||||
|
ellipsis: true,
|
||||||
|
dataIndex: 'serialNumber',
|
||||||
|
width: 79
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('title'),
|
||||||
|
align: 'left',
|
||||||
|
ellipsis: true,
|
||||||
|
dataIndex: 'title',
|
||||||
|
width: 79
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('TextStatus'),
|
||||||
|
align: 'left',
|
||||||
|
ellipsis: true,
|
||||||
|
dataIndex: 'fileType',
|
||||||
|
width: 79
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('fileName'),
|
||||||
|
align: 'left',
|
||||||
|
ellipsis: true,
|
||||||
|
dataIndex: 'fileName',
|
||||||
|
width: 79
|
||||||
|
}
|
||||||
|
],
|
||||||
|
tablecolumns: [
|
||||||
|
{
|
||||||
|
title: this.$t('number'),
|
||||||
|
align: 'left',
|
||||||
|
width: 70,
|
||||||
|
customRender: function (t, r, index) {
|
||||||
|
return parseInt(index) + 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('number'),
|
||||||
|
align: 'left',
|
||||||
|
ellipsis: true,
|
||||||
|
dataIndex: 'serialNumber',
|
||||||
|
width: 79
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('title'),
|
||||||
|
align: 'left',
|
||||||
|
ellipsis: true,
|
||||||
|
dataIndex: 'title',
|
||||||
|
width: 79
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('TextStatus'),
|
||||||
|
align: 'left',
|
||||||
|
ellipsis: true,
|
||||||
|
dataIndex: 'fileType',
|
||||||
|
width: 79
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('fileName'),
|
||||||
|
align: 'left',
|
||||||
|
ellipsis: true,
|
||||||
|
dataIndex: 'fileName',
|
||||||
|
width: 79
|
||||||
|
}
|
||||||
|
],
|
||||||
|
url: {
|
||||||
|
list: '/split/sarFileSplitInfo/page',
|
||||||
|
add: '/compare/sarFileCompareInfo/fullTextComparison'
|
||||||
|
},
|
||||||
|
image: false,
|
||||||
|
imageUrl: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted () {
|
||||||
|
this.getListLeft()
|
||||||
|
this.getListRight()
|
||||||
|
document.title = this.$t('documentComparison') + ' - ' + this.$t('initiateComparison')
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
...mapGetters(['userInfo']),
|
||||||
|
goBack () {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/documentComparison'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
searchQueryLeft () {
|
||||||
|
this.ipaginationLeft.current = 1
|
||||||
|
this.getListLeft()
|
||||||
|
},
|
||||||
|
searchResetLeft () {
|
||||||
|
this.queryParamLeft = {}
|
||||||
|
this.ipaginationLeft.current = 1
|
||||||
|
this.getListLeft()
|
||||||
|
},
|
||||||
|
onSelectChangeLeft (value, record) {
|
||||||
|
this.selectedRowKeysLeft = value
|
||||||
|
// this.selectedRowsLeft = []
|
||||||
|
// if (this.selectedRowKeysLeft.length > 1) {
|
||||||
|
// this.selectedRowKeysLeft.shift()
|
||||||
|
// }
|
||||||
|
// const content = record.filter(res => {
|
||||||
|
// return res.id === this.selectedRowKeysLeft[0]
|
||||||
|
// })
|
||||||
|
this.selectedRowsLeft = record
|
||||||
|
},
|
||||||
|
tableChangeLeft (pagination) {
|
||||||
|
this.ipaginationLeft = pagination
|
||||||
|
this.getListLeft()
|
||||||
|
},
|
||||||
|
searchQueryRight () {
|
||||||
|
this.ipaginationRight.current = 1
|
||||||
|
this.getListRight()
|
||||||
|
},
|
||||||
|
searchResetRight () {
|
||||||
|
this.queryParamRight = {}
|
||||||
|
this.ipaginationRight.current = 1
|
||||||
|
this.getListRight()
|
||||||
|
},
|
||||||
|
onSelectChangeRight (value, record) {
|
||||||
|
this.selectedRowKeysRight = value
|
||||||
|
// this.selectedRowsRight = []
|
||||||
|
// if (this.selectedRowKeysRight.length > 1) {
|
||||||
|
// this.selectedRowKeysRight.shift()
|
||||||
|
// }
|
||||||
|
// const content = record.filter(res => {
|
||||||
|
// return res.id === this.selectedRowKeysRight[0]
|
||||||
|
// })
|
||||||
|
this.selectedRowsRight = record
|
||||||
|
},
|
||||||
|
tableChangeRight (pagination) {
|
||||||
|
this.ipaginationRight = pagination
|
||||||
|
this.getListRight()
|
||||||
|
},
|
||||||
|
submit () {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/documentDataComparison',
|
||||||
|
})
|
||||||
|
// if (!this.selectedRowsRight[0] || !this.selectedRowsLeft[0]) {
|
||||||
|
// this.$message.warning(this.$t('pleaseSelectTheDataCompared'))
|
||||||
|
// return
|
||||||
|
// }
|
||||||
|
// this.$refs.ruleForm.validate(valid => {
|
||||||
|
// if (valid) {
|
||||||
|
// this.loading = true
|
||||||
|
// const query = {
|
||||||
|
// leftStandard: this.selectedRowsLeft[0].id,
|
||||||
|
// rightStandard: this.selectedRowsRight[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'))
|
||||||
|
// this.$router.push({
|
||||||
|
// path: '/documentDataComparison',
|
||||||
|
// query: {
|
||||||
|
// id: res.result
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// } else {
|
||||||
|
// this.loading = false
|
||||||
|
// this.$message.warning(this.$t('operationFailed'))
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
},
|
||||||
|
getListLeft () {
|
||||||
|
const queryParam = JSON.parse(JSON.stringify(this.queryParamLeft))
|
||||||
|
Object.keys(queryParam).forEach(val => {
|
||||||
|
if (queryParam[val] instanceof Array) {
|
||||||
|
queryParam[val] = queryParam[val].join(',')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const query = {
|
||||||
|
pageNo: this.ipaginationLeft.current,
|
||||||
|
pageSize: this.ipaginationLeft.pageSize,
|
||||||
|
fileId: '1',
|
||||||
|
...queryParam
|
||||||
|
}
|
||||||
|
this.loadingLeft = true
|
||||||
|
getAction(this.url.list, query).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
if (res.result.current > 1 && res.result.records.length === 0) {
|
||||||
|
this.ipaginationLeft.current = 1
|
||||||
|
this.getListLeft()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.dataSourceLeft = res.result.records || []
|
||||||
|
this.ipaginationLeft.total = res.result.total
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.loadingLeft = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
selectLeftClick (fileQuery) {
|
||||||
|
if (fileQuery) {
|
||||||
|
const fileName = fileQuery.fileName
|
||||||
|
const index1 = fileName.lastIndexOf('.')
|
||||||
|
const index2 = fileName.length
|
||||||
|
const fileSuffix = fileName.substring(index1, index2)
|
||||||
|
if (fileSuffix === '.pdf') {
|
||||||
|
// window.open('/pdf/web/viewer.html?file=' + encodeURIComponent('/jero-boot/sys/common/pdf/viewFile?id=' + fileQuery.fileId + '&userName=' + this.userInfo().username))
|
||||||
|
const url = previewPdf(fileQuery.fileId)
|
||||||
|
window.open(url)
|
||||||
|
} else if (fileSuffix === '.docx' || fileSuffix === '.doc') {
|
||||||
|
const url = window._CONFIG.onlinePreviewDomainURL + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.fileId + fileSuffix)
|
||||||
|
window.open(url, '_blank')
|
||||||
|
} else if (fileSuffix === '.xlsx' || fileSuffix === '.xls') {
|
||||||
|
const url = window._CONFIG.onlinePreviewDomainURL + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.fileId + fileSuffix)
|
||||||
|
window.open(url, '_blank')
|
||||||
|
} else if (fileSuffix === '.png' || fileSuffix === '.jpeg' || fileSuffix === '.gif' || fileSuffix === '.jpg') {
|
||||||
|
// const url = window._CONFIG.onlinePreviewDomainURL + '?url=' + Base64.encode(this.downLoadImgUrl + '/' + fileQuery.fileId + fileSuffix)
|
||||||
|
// window.open(url, '_blank')
|
||||||
|
this.image = true
|
||||||
|
this.imageUrl = getFileAccessHttpUrl(fileQuery.fileId)
|
||||||
|
// 获取viewer实例
|
||||||
|
const viewer = this.$el.querySelector('.image').$viewer
|
||||||
|
// 调用show方法进行显示预览图
|
||||||
|
viewer.show()
|
||||||
|
} else {
|
||||||
|
downloadFile('/sys/common/downLoadFile', fileQuery.fileName, { id: fileQuery.fileId })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getListRight () {
|
||||||
|
const queryParam = JSON.parse(JSON.stringify(this.queryParamRight))
|
||||||
|
Object.keys(queryParam).forEach(val => {
|
||||||
|
if (queryParam[val] instanceof Array) {
|
||||||
|
queryParam[val] = queryParam[val].join(',')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const query = {
|
||||||
|
pageNo: this.ipaginationRight.current,
|
||||||
|
pageSize: this.ipaginationRight.pageSize,
|
||||||
|
fileId: '1',
|
||||||
|
...queryParam
|
||||||
|
}
|
||||||
|
this.loadingRight = true
|
||||||
|
getAction(this.url.list, query).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
if (res.result.current > 1 && res.result.records.length === 0) {
|
||||||
|
this.pageNoRight = 1
|
||||||
|
this.getListRight()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.dataSourceRight = res.result.records || []
|
||||||
|
this.ipaginationRight.total = res.result.total
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.loadingRight = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
@import'~@assets/less/common.less';
|
||||||
|
|
||||||
|
.doc-detail-wrap {
|
||||||
|
padding-bottom: 20px;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.doc-detail-header {
|
||||||
|
width: 100%;
|
||||||
|
z-index: 1000;
|
||||||
|
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;
|
||||||
|
background: #fff;
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
|
||||||
|
.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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content {
|
||||||
|
padding-top: 68px;
|
||||||
|
}
|
||||||
|
.detail-content-left {
|
||||||
|
width: 50%;
|
||||||
|
float: left;
|
||||||
|
border-right: 2px #EFF1F3 solid;
|
||||||
|
padding: 24px 32px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-bottom: 2px #EFF1F3 solid;
|
||||||
|
height: 610px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content-right {
|
||||||
|
width: 50%;
|
||||||
|
float: left;
|
||||||
|
padding: 24px 32px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-bottom: 2px #EFF1F3 solid;
|
||||||
|
height: 610px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-title-text-remarks {
|
||||||
|
line-height: 1.4;
|
||||||
|
display: flex;
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-button-standard {
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-button-standard-left {
|
||||||
|
width: 111px;
|
||||||
|
height: 46px;
|
||||||
|
padding: 0 6px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: inline-block;
|
||||||
|
border: 1px solid #CED0D8;
|
||||||
|
border-right: none;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 46px;
|
||||||
|
color: #040B29;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-button-standard-right {
|
||||||
|
width: calc(100% - 111px);
|
||||||
|
height: 46px;
|
||||||
|
padding: 0 4px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: inline-block;
|
||||||
|
border: 1px solid #CED0D8;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 46px;
|
||||||
|
color: #9B9DA9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.remarks {
|
||||||
|
margin-top: 20px;
|
||||||
|
width: 50%;
|
||||||
|
padding: 0 32px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin-bottom: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-model {
|
||||||
|
width: calc(100% - 232px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.submit-button {
|
||||||
|
width: 100%;
|
||||||
|
height: 60px;
|
||||||
|
text-align: right;
|
||||||
|
padding: 14px 32px 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-top: 2px #eff1f3 solid;
|
||||||
|
background: #ffffff;
|
||||||
|
position: fixed;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-button-standard-right-color {
|
||||||
|
color: #040B29;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
<div class="split-detail-wrap">
|
<div class="split-detail-wrap">
|
||||||
<div class="split-detail-left">
|
<div class="split-detail-left">
|
||||||
<div class="split-detail-left-tree">
|
<div class="split-detail-left-tree">
|
||||||
<a-input-search style="margin-bottom: 8px" :placeholder="$t('NodeQuickLookup')" @change="onLeftChange"
|
<a-input-search style="margin-bottom: 8px" :placeholder="$t('nodeQuickLookup')" @change="onLeftChange"
|
||||||
@search="onSearch" />
|
@search="onSearch" />
|
||||||
<a-tree
|
<a-tree
|
||||||
v-if="gData.length>0"
|
v-if="gData.length>0"
|
||||||
@@ -103,25 +103,25 @@
|
|||||||
v-if="$route.query.createBy === userData.username || administrators"
|
v-if="$route.query.createBy === userData.username || administrators"
|
||||||
v-has="'split:sarFileSplitItems:template'">
|
v-has="'split:sarFileSplitItems:template'">
|
||||||
<a-icon type="download" />
|
<a-icon type="download" />
|
||||||
{{ $t('TemplateDownload') }}
|
{{ $t('templateDownload') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="operator-text" @click="handleMergeManage"
|
<div class="operator-text" @click="handleMergeManage"
|
||||||
v-if="$route.query.createBy === userData.username || administrators"
|
v-if="$route.query.createBy === userData.username || administrators"
|
||||||
v-has="'split:sarFileSplitItems:merge'">
|
v-has="'split:sarFileSplitItems:merge'">
|
||||||
<a-icon type="snippets" />
|
<a-icon type="snippets" />
|
||||||
{{ $t('MergerClause') }}
|
{{ $t('docTool.split.mergerClause') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="operator-text" @click="handleManage"
|
<div class="operator-text" @click="handleManage"
|
||||||
v-if="$route.query.createBy === userData.username || administrators"
|
v-if="$route.query.createBy === userData.username || administrators"
|
||||||
v-has="'split:sarFileSplitItems:set'">
|
v-has="'split:sarFileSplitItems:set'">
|
||||||
<a-icon type="setting" />
|
<a-icon type="setting" />
|
||||||
{{ $t('BatchSetting') }}
|
{{ $t('docTool.split.batchSetting') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="operator-text" @click="handleBatCancel"
|
<div class="operator-text" @click="handleBatCancel"
|
||||||
v-if="$route.query.createBy === userData.username || administrators"
|
v-if="$route.query.createBy === userData.username || administrators"
|
||||||
v-has="'split:sarFileSplitItems:delete'">
|
v-has="'split:sarFileSplitItems:delete'">
|
||||||
<a-icon type="delete" />
|
<a-icon type="delete" />
|
||||||
{{ $t('BatchDelete') }}
|
{{ $t('batchDelete') }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="split-detail-table">
|
<div class="split-detail-table">
|
||||||
@@ -143,7 +143,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- 条款详情 -->
|
<!-- 条款详情 -->
|
||||||
<a-modal
|
<a-modal
|
||||||
:title="$t('clauseContent')"
|
:title="$t('docTool.split.clauseContent')"
|
||||||
:visible="contentVisible"
|
:visible="contentVisible"
|
||||||
:confirm-loading="confirmLoading"
|
:confirm-loading="confirmLoading"
|
||||||
:footer="false"
|
:footer="false"
|
||||||
@@ -169,16 +169,16 @@
|
|||||||
:label-col="labelCol"
|
:label-col="labelCol"
|
||||||
:wrapper-col="wrapperCol"
|
:wrapper-col="wrapperCol"
|
||||||
>
|
>
|
||||||
<a-form-model-item :label="$t('clauseNo')" prop="name">
|
<a-form-model-item :label="$t('docTool.split.clauseNo')" prop="name">
|
||||||
<a-input class="box-input" v-model="form.name" :placeholder="$t('PleaseEnter')+$t('clauseNo')" :maxLength="200" />
|
<a-input class="box-input" v-model="form.name" :placeholder="$t('PleaseEnter')+$t('clauseNo')" :maxLength="200" />
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
<a-form-model-item :label="$t('clauseName')" prop="itemName">
|
<a-form-model-item :label="$t('docTool.split.clauseName')" prop="itemName">
|
||||||
<a-input class="box-input" v-model="form.itemName" :placeholder="$t('PleaseEnter')+$t('clauseName')" :maxLength="200" />
|
<a-input class="box-input" v-model="form.itemName" :placeholder="$t('PleaseEnter')+$t('clauseName')" :maxLength="200" />
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
<a-form-model-item :label="$t('serialNumber')" prop="displaySeq">
|
<a-form-model-item :label="$t('serialNumber')" prop="displaySeq">
|
||||||
<a-input-number v-model="form.displaySeq" :min="1" :max="99999"
|
<a-input-number v-model="form.displaySeq" :min="1" :max="99999"
|
||||||
class="box-input"
|
class="box-input"
|
||||||
:placeholder="$t('PleaseEnter')+$t('serialNumber')"
|
:placeholder="$t('pleaseEnter')+$t('serialNumber')"
|
||||||
:formatter="limitNumber"
|
:formatter="limitNumber"
|
||||||
:parser="limitNumber" style="width: 100%" />
|
:parser="limitNumber" style="width: 100%" />
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
@@ -187,7 +187,7 @@
|
|||||||
<!-- 批量设置弹框 -->
|
<!-- 批量设置弹框 -->
|
||||||
<a-modal
|
<a-modal
|
||||||
class="show-setting"
|
class="show-setting"
|
||||||
:title="$t('batSetting')"
|
:title="$t('docTool.split.batchSetting')"
|
||||||
:visible="batSetVisible"
|
:visible="batSetVisible"
|
||||||
:confirm-loading="confirmLoading"
|
:confirm-loading="confirmLoading"
|
||||||
@ok="modalOk"
|
@ok="modalOk"
|
||||||
@@ -256,10 +256,10 @@ export default {
|
|||||||
// { required: true, message: this.$t('PleaseEnter') + this.$t('clauseNo'), trigger: 'blur' },
|
// { required: true, message: this.$t('PleaseEnter') + this.$t('clauseNo'), trigger: 'blur' },
|
||||||
],
|
],
|
||||||
itemName: [
|
itemName: [
|
||||||
{ required: true, message: this.$t('PleaseEnter') + this.$t('clauseName'), trigger: 'blur' }
|
{ required: true, message: this.$t('pleaseEnter') + this.$t('docTool.split.clauseName'), trigger: 'blur' }
|
||||||
],
|
],
|
||||||
displaySeq: [
|
displaySeq: [
|
||||||
{ required: true, message: this.$t('PleaseEnter') + this.$t('serialNumber'), trigger: 'blur' }
|
{ required: true, message: this.$t('pleaseEnter') + this.$t('serialNumber'), trigger: 'blur' }
|
||||||
// { min: 1, max: 99999, message: this.$t('cantExeed') + '99999' + this.$t('characters'), trigger: 'blur' },
|
// { min: 1, max: 99999, message: this.$t('cantExeed') + '99999' + this.$t('characters'), trigger: 'blur' },
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -493,12 +493,12 @@ export default {
|
|||||||
// 树形删除
|
// 树形删除
|
||||||
orgDelete () {
|
orgDelete () {
|
||||||
this.$confirm({
|
this.$confirm({
|
||||||
content: this.$t('deleteNodes'),
|
content: this.$t('confirmDeleteNodes'),
|
||||||
onOk:
|
onOk:
|
||||||
async () => {
|
async () => {
|
||||||
getAction(`split/sarFileSplitMenu/deleteMenu`, { id: this.nodeItem.id }).then(res => {
|
getAction(`split/sarFileSplitMenu/deleteMenu`, { id: this.nodeItem.id }).then(res => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
this.$message.success(this.$t('OperationSuccessful'))
|
this.$message.success(this.$t('operationSuccessful'))
|
||||||
this.loadMenuData()
|
this.loadMenuData()
|
||||||
const queryParam = {
|
const queryParam = {
|
||||||
menu_id: this.menuId,
|
menu_id: this.menuId,
|
||||||
@@ -525,7 +525,7 @@ export default {
|
|||||||
}
|
}
|
||||||
postAction(`split/sarFileSplitMenu/moveUpOrDown`, query).then(res => {
|
postAction(`split/sarFileSplitMenu/moveUpOrDown`, query).then(res => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
this.$message.success(this.$t('OperationSuccessful'))
|
this.$message.success(this.$t('operationSuccessful'))
|
||||||
this.loadMenuData()
|
this.loadMenuData()
|
||||||
const queryParam = {
|
const queryParam = {
|
||||||
menu_id: this.menuId,
|
menu_id: this.menuId,
|
||||||
@@ -550,7 +550,7 @@ export default {
|
|||||||
}
|
}
|
||||||
postAction(`split/sarFileSplitMenu/moveUpOrDown`, query).then(res => {
|
postAction(`split/sarFileSplitMenu/moveUpOrDown`, query).then(res => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
this.$message.success(this.$t('OperationSuccessful'))
|
this.$message.success(this.$t('operationSuccessful'))
|
||||||
this.loadMenuData()
|
this.loadMenuData()
|
||||||
const queryParam = {
|
const queryParam = {
|
||||||
menu_id: this.menuId,
|
menu_id: this.menuId,
|
||||||
@@ -592,7 +592,7 @@ export default {
|
|||||||
postAction(`split/sarFileSplitMenu/addMenu`, params).then(res => {
|
postAction(`split/sarFileSplitMenu/addMenu`, params).then(res => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
this.menuRightVisible = false
|
this.menuRightVisible = false
|
||||||
this.$message.success(this.$t('OperationSuccessful'))
|
this.$message.success(this.$t('operationSuccessful'))
|
||||||
// this.onExpand(expandId)
|
// this.onExpand(expandId)
|
||||||
this.form = {}
|
this.form = {}
|
||||||
this.expandedKeys.push(this.nodeItem.id)
|
this.expandedKeys.push(this.nodeItem.id)
|
||||||
@@ -623,7 +623,7 @@ export default {
|
|||||||
// console.log('parms',params)
|
// console.log('parms',params)
|
||||||
putAction(`split/sarFileSplitMenu/updateMenu`, params).then(res => {
|
putAction(`split/sarFileSplitMenu/updateMenu`, params).then(res => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
this.$message.success(this.$t('OperationSuccessful'))
|
this.$message.success(this.$t('operationSuccessful'))
|
||||||
this.onExpand(expandId)
|
this.onExpand(expandId)
|
||||||
this.form = {}
|
this.form = {}
|
||||||
this.loadMenuData()
|
this.loadMenuData()
|
||||||
@@ -654,7 +654,7 @@ export default {
|
|||||||
}
|
}
|
||||||
if (menuIds && menuIds.length > 0) {
|
if (menuIds && menuIds.length > 0) {
|
||||||
this.$confirm({
|
this.$confirm({
|
||||||
title: this.$t('ConfirmReplication'),
|
title: this.$t('confirmReplication'),
|
||||||
content: '',
|
content: '',
|
||||||
onOk:
|
onOk:
|
||||||
async () => {
|
async () => {
|
||||||
@@ -677,7 +677,7 @@ export default {
|
|||||||
})
|
})
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
if (res.data.success) {
|
if (res.data.success) {
|
||||||
this.$message.success(this.$t('OperationSuccessful'))
|
this.$message.success(this.$t('operationSuccessful'))
|
||||||
this.$emit('selectClear')
|
this.$emit('selectClear')
|
||||||
this.selectClear()
|
this.selectClear()
|
||||||
// this.loadData()
|
// this.loadData()
|
||||||
@@ -687,7 +687,7 @@ export default {
|
|||||||
info_id: this.infoId
|
info_id: this.infoId
|
||||||
|
|
||||||
}
|
}
|
||||||
eventBUs.$emit('searchGetData', JSON.parse(JSON.stringify(queryParam)))
|
this.$refs.splitDetailTable.$emit('searchGetData', JSON.parse(JSON.stringify(queryParam)))
|
||||||
// eventBUs.$emit('searchReset')
|
// eventBUs.$emit('searchReset')
|
||||||
} else {
|
} else {
|
||||||
this.$message.warning(this.$t('operationFailed'))
|
this.$message.warning(this.$t('operationFailed'))
|
||||||
@@ -698,7 +698,7 @@ export default {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
} else if (menuIds.length === 0) {
|
} else if (menuIds.length === 0) {
|
||||||
this.$message.warning(this.$t('PleaseSelectData'))
|
this.$message.warning(this.$t('pleaseSelectData'))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 新增
|
// 新增
|
||||||
@@ -713,7 +713,7 @@ export default {
|
|||||||
this.$refs.splitForm.formTitle = this.$t('add')
|
this.$refs.splitForm.formTitle = this.$t('add')
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
this.$message.warning(this.$t('selectDirectoryTerms'))
|
this.$message.warning(this.$t('docTool.split.selectDirectoryTerms'))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 关闭新增弹框
|
// 关闭新增弹框
|
||||||
@@ -723,7 +723,7 @@ export default {
|
|||||||
// 导入
|
// 导入
|
||||||
handleImportManage () {
|
handleImportManage () {
|
||||||
if (!this.menuId) {
|
if (!this.menuId) {
|
||||||
this.$message.warning(this.$t('selectDirectoryTerms'))
|
this.$message.warning(this.$t('docTool.split.selectDirectoryTerms'))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 上传成功
|
// 上传成功
|
||||||
@@ -779,7 +779,7 @@ export default {
|
|||||||
},
|
},
|
||||||
// 模板下载
|
// 模板下载
|
||||||
handleDownManage () {
|
handleDownManage () {
|
||||||
const name = this.$t('documentSplitTemplate') + '.xlsx'
|
const name = this.$t('docTool.split.documentSplitTemplate') + '.xlsx'
|
||||||
downloadFile('split/sarFileSplitItems/exportTemplate', name, {})
|
downloadFile('split/sarFileSplitItems/exportTemplate', name, {})
|
||||||
},
|
},
|
||||||
// 合并条款
|
// 合并条款
|
||||||
@@ -789,7 +789,7 @@ export default {
|
|||||||
} else {
|
} else {
|
||||||
const ids = this.selectedRowKeys.join(',')
|
const ids = this.selectedRowKeys.join(',')
|
||||||
this.$confirm({
|
this.$confirm({
|
||||||
title: this.$t('mergeTerms'),
|
title: this.$t('docTool.split.mergeTerms'),
|
||||||
content: '',
|
content: '',
|
||||||
onOk:
|
onOk:
|
||||||
async () => {
|
async () => {
|
||||||
@@ -805,7 +805,7 @@ export default {
|
|||||||
})
|
})
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
if (res.data.success) {
|
if (res.data.success) {
|
||||||
this.$message.success(this.$t('OperationSuccessful'))
|
this.$message.success(this.$t('operationSuccessful'))
|
||||||
this.selectClear()
|
this.selectClear()
|
||||||
this.loadMenuData()
|
this.loadMenuData()
|
||||||
const queryParam = {
|
const queryParam = {
|
||||||
@@ -858,7 +858,7 @@ export default {
|
|||||||
})
|
})
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
if (res.data.success) {
|
if (res.data.success) {
|
||||||
this.$message.success(this.$t('OperationSuccessful'))
|
this.$message.success(this.$t('operationSuccessful'))
|
||||||
this.batSetVisible = false
|
this.batSetVisible = false
|
||||||
this.selectClear()
|
this.selectClear()
|
||||||
const queryParam = {
|
const queryParam = {
|
||||||
@@ -878,7 +878,7 @@ export default {
|
|||||||
}
|
}
|
||||||
if (this.selecIds && this.selecIds.length > 0) {
|
if (this.selecIds && this.selecIds.length > 0) {
|
||||||
this.$confirm({
|
this.$confirm({
|
||||||
title: this.$t('ConfirmBatchDeletion'),
|
title: this.$t('confirmBatchDeletion'),
|
||||||
content: '',
|
content: '',
|
||||||
onOk:
|
onOk:
|
||||||
async () => {
|
async () => {
|
||||||
@@ -901,7 +901,7 @@ export default {
|
|||||||
})
|
})
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
if (res.data.success) {
|
if (res.data.success) {
|
||||||
this.$message.success(this.$t('OperationSuccessful'))
|
this.$message.success(this.$t('operationSuccessful'))
|
||||||
this.loadMenuData()
|
this.loadMenuData()
|
||||||
const queryParam = {
|
const queryParam = {
|
||||||
menu_id: this.menuId,
|
menu_id: this.menuId,
|
||||||
@@ -971,7 +971,7 @@ export default {
|
|||||||
})
|
})
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
if (res.data.success) {
|
if (res.data.success) {
|
||||||
this.$message.success(this.$t('OperationSuccessful'))
|
this.$message.success(this.$t('operationSuccessful'))
|
||||||
this.loadMenuData()
|
this.loadMenuData()
|
||||||
const queryParam = {
|
const queryParam = {
|
||||||
menu_id: this.menuId,
|
menu_id: this.menuId,
|
||||||
|
|||||||
Reference in New Issue
Block a user