update 文档对比

This commit is contained in:
赵霄
2023-09-20 11:26:34 +08:00
parent fbe03c0564
commit 4601acb8b2
6 changed files with 72 additions and 67 deletions
+7 -1
View File
@@ -28,6 +28,10 @@ const deleteComparisonResult = (params) => postAction('/compare/sarFileCompareIt
const getComparisonResultDetail = (params) => getAction('/compare/sarFileCompareItemComment/queryCompareResult', params) const getComparisonResultDetail = (params) => getAction('/compare/sarFileCompareItemComment/queryCompareResult', params)
// 文档对比-编辑对比评论 // 文档对比-编辑对比评论
const editComparisonComment = (params) => postAction('/compare/sarFileCompareItemComment/edit', params) const editComparisonComment = (params) => postAction('/compare/sarFileCompareItemComment/edit', params)
// 文档对比-对比结果-评论-发表/回复评论
const addComment = (params) => postAction('/compare/sarFileCompareResComment/add', params)
// 文档对比-对比结果-评论-评论列表
const getCommentList = (params) => getAction('/compare/sarFileCompareResComment/queryListByInfoId', params)
export { export {
// 文档拆分 // 文档拆分
@@ -47,5 +51,7 @@ export {
addFullTextComment, addFullTextComment,
deleteComparisonResult, deleteComparisonResult,
getComparisonResultDetail, getComparisonResultDetail,
editComparisonComment editComparisonComment,
addComment,
getCommentList
} }
@@ -121,7 +121,8 @@
</div> </div>
</div> </div>
</div> </div>
<commentList ref="commentListRef" /> <!--评论-->
<comment-list ref="commentListRef" />
<!--编辑对比评论--> <!--编辑对比评论-->
<comparison-result-edit-modal ref="comparisonResultEditModal" @ok="getData" /> <comparison-result-edit-modal ref="comparisonResultEditModal" @ok="getData" />
<div id="images"> <div id="images">
@@ -137,7 +138,7 @@ import { getAction, downloadFile, getFileAccessHttpUrl } from '../../../api/mana
import { previewPdf } from '../../../utils/previewPdf.js' import { previewPdf } from '../../../utils/previewPdf.js'
import { Base64 } from 'js-base64' import { Base64 } from 'js-base64'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import CommentList from '../modules/CommentList.vue' import CommentList from './modules/CommentList.vue'
import ComparisonResultEditModal from './modules/ComparisonResultEditModal.vue' import ComparisonResultEditModal from './modules/ComparisonResultEditModal.vue'
import InternalDetailPage from '../../../components/InternalDetailPage.vue' import InternalDetailPage from '../../../components/InternalDetailPage.vue'
import { deleteComparisonResult, getComparisonResultDetail } from '../../../api/documentToolApi.js' import { deleteComparisonResult, getComparisonResultDetail } from '../../../api/documentToolApi.js'
@@ -27,7 +27,7 @@
</a-form-item> </a-form-item>
</a-col> </a-col>
<div style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons"> <div style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery">{{ $t('query') }}</a-button> <a-button type="primary" @click="searchQuery" v-has="'documentComparison:search'">{{ $t('query') }}</a-button>
<a-button style="margin-left: 8px" @click="searchReset">{{ $t('reset') }}</a-button> <a-button style="margin-left: 8px" @click="searchReset">{{ $t('reset') }}</a-button>
</div> </div>
</a-row> </a-row>
@@ -35,12 +35,11 @@
</div> </div>
<div class="table-operator"> <div class="table-operator">
<!--发起对比--> <!--发起对比-->
<!-- v-has="'documentComparison:Initiate'"--> <a-button icon="block" type="primary" ghost @click="initiatingProcessClick" v-has="'documentComparison:initiateComparison'">
<a-button icon="block" type="primary" ghost @click="initiatingProcessClick">{{ $t('docTool.comparison.initiateComparison') }} {{ $t('docTool.comparison.initiateComparison') }}
</a-button> </a-button>
<!--批量删除--> <!--批量删除-->
<!-- v-has="'documentComparison:batchDelete'"--> <a-button type="primary" icon="delete" ghost @click="batchDelete" v-has="'documentComparison:deleteBatch'">{{ $t('batchDelete') }}
<a-button type="primary" icon="delete" ghost @click="batchDelete" v-has="'split:sarFileSplitInfo:deleteBatch'">{{ $t('batchDelete') }}
</a-button> </a-button>
</div> </div>
<div> <div>
@@ -100,6 +99,7 @@ export default {
// url传参严格按照当前命名 // url传参严格按照当前命名
url: { url: {
list: '/compare/sarFileCompareInfo/page', list: '/compare/sarFileCompareInfo/page',
delete: '/compare/sarFileCompareInfo/delete',
deleteBatch: '/compare/sarFileCompareInfo/deleteBatch' deleteBatch: '/compare/sarFileCompareInfo/deleteBatch'
}, },
loading: false, loading: false,
@@ -179,13 +179,13 @@ export default {
{ {
text: this.$t('docTool.comparison.comparisonResults'), text: this.$t('docTool.comparison.comparisonResults'),
clickEvent: 'comparisonResultsClick', clickEvent: 'comparisonResultsClick',
has: 'domesticStandard:collection' has: 'documentComparison:comparisonResults'
}, },
// 发布 // 发布
{ {
text: this.$t('release'), text: this.$t('release'),
clickEvent: 'subscribe', clickEvent: 'subscribe',
has: 'domesticStandard:collection', has: 'documentComparison:publishWithdraw',
show: (record) => { show: (record) => {
return (record.createBy === this.userInfo.username || this.administrators) && (!record.releaseState || record.releaseState === 'draft') return (record.createBy === this.userInfo.username || this.administrators) && (!record.releaseState || record.releaseState === 'draft')
} }
@@ -194,7 +194,7 @@ export default {
{ {
text: this.$t('withdraw'), text: this.$t('withdraw'),
clickEvent: 'subscribe', clickEvent: 'subscribe',
has: 'domesticStandard:collection', has: 'documentComparison:publishWithdraw',
show: (record) => { show: (record) => {
return (record.createBy === this.userInfo.username || this.administrators) && !(!record.releaseState || record.releaseState === 'draft') return (record.createBy === this.userInfo.username || this.administrators) && !(!record.releaseState || record.releaseState === 'draft')
} }
@@ -203,7 +203,7 @@ export default {
{ {
text: this.$t('edit'), text: this.$t('edit'),
clickEvent: 'edit', clickEvent: 'edit',
has: 'domesticStandard:collection', has: 'documentComparison:edit',
show: (record) => { show: (record) => {
return (record.createBy === this.userInfo.username || this.administrators) && record.releaseState === 'draft' return (record.createBy === this.userInfo.username || this.administrators) && record.releaseState === 'draft'
} }
@@ -211,8 +211,8 @@ export default {
// 删除 // 删除
{ {
text: this.$t('delete'), text: this.$t('delete'),
clickEvent: 'comparisonResultsClick', clickEvent: 'handleDelete',
has: 'domesticStandard:collection', has: 'documentComparison:delete',
show: (record) => { show: (record) => {
return (record.createBy === this.userInfo.username || this.administrators) && record.releaseState === 'draft' return (record.createBy === this.userInfo.username || this.administrators) && record.releaseState === 'draft'
} }
@@ -1,7 +1,7 @@
<template> <template>
<div> <div>
<a-drawer <a-drawer
:title="$t('comment')" :title="$t('docTool.comparison.comment')"
:maskClosable="false" :maskClosable="false"
:width="482" :width="482"
placement="right" placement="right"
@@ -13,9 +13,10 @@
@search="allowClearChange" @search="allowClearChange"
:placeholder="$t('pleaseEnter')+$t('docTool.comparison.comment')" :placeholder="$t('pleaseEnter')+$t('docTool.comparison.comment')"
v-model="commentContent"></a-input-search> v-model="commentContent"></a-input-search>
<a-button @click="submitQuery" style="margin-right: 8px;" type="primary">{{$t('query')}}</a-button> <a-button @click="submitQuery" style="margin-right: 8px;" type="primary">{{ $t('query') }}</a-button>
<!--发表评论-->
<a-button @click="handleSubmit" :title="$t('docTool.comparison.publishComment')" type="primary"> <a-button @click="handleSubmit" :title="$t('docTool.comparison.publishComment')" type="primary">
{{$t('docTool.comparison.publishComment')}} {{ $t('docTool.comparison.publishComment') }}
</a-button> </a-button>
</div> </div>
<div class="comment-box" v-if="dataList && dataList.length > 0"> <div class="comment-box" v-if="dataList && dataList.length > 0">
@@ -23,48 +24,49 @@
<!-- <div class="title-text">{{$t('record')+(index + 1)}}</div>--> <!-- <div class="title-text">{{$t('record')+(index + 1)}}</div>-->
<div class="box-content"> <div class="box-content">
<div class="img-box"> <div class="img-box">
<img src="../../../assets/image/daiban.png" class="img" alt=""> <img src="../../../../assets/image/daiban.png" class="img" alt="">
</div> </div>
<div class="box-text"> <div class="box-text">
<span class="box-text-name">{{item.name}}</span> <span class="box-text-name">{{ item.name }}</span>
<span class="box-text-time">{{item.createTime}}</span> <span class="box-text-time">{{ item.createTime }}</span>
</div> </div>
<div class="box-text-text"> <div class="box-text-text">
{{item.content}} {{ item.content }}
</div> </div>
<div class="box-icon" @click="messageClick(item)"> <div class="box-icon" @click="messageClick(item)">
<a-icon type="message"/> <a-icon type="message" />
</div> </div>
</div> </div>
<div class="inside-box" v-if="item.resComVoList && item.resComVoList.length > 0"> <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="box-content-inside" v-for="(val,indexOne) in item.resComVoList" :key="indexOne">
<div class="img-box"> <div class="img-box">
<img src="../../../assets/image/daiban.png" class="img" alt=""> <img src="../../../../assets/image/daiban.png" class="img" alt="">
</div> </div>
<div class="box-text"> <div class="box-text">
<span class="box-text-name">{{val.name}}</span> <span class="box-text-name">{{ val.name }}</span>
<span class="box-text-time">{{val.createTime}}</span> <span class="box-text-time">{{ val.createTime }}</span>
</div> </div>
<div class="box-text-text"> <div class="box-text-text">
{{val.content}} {{ val.content }}
</div> </div>
<div class="box-icon" @click="messageClick(item)"> <div class="box-icon" @click="messageClick(item)">
<a-icon type="message"/> <a-icon type="message" />
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="comment-box-text" v-else>{{$t('docTool.comparison.noComment')}}</div> <div class="comment-box-text" v-else>{{ $t('docTool.comparison.noComment') }}</div>
</a-drawer> </a-drawer>
<comparison-add-reply-comment ref="comparisonAddReplyComment"></comparison-add-reply-comment> <!--发表评论-->
<comparison-add-reply-comment ref="comparisonAddReplyComment" @ok="getList" />
</div> </div>
</template> </template>
<script> <script>
import { getAction } from '@/api/manage' import { getCommentList } from '../../../../api/documentToolApi.js'
// //
import ComparisonAddReplyComment from './ComparisonAddReplyComment' import ComparisonAddReplyComment from './ComparisonAddReplyComment.vue'
export default { export default {
name: 'CommentList', name: 'CommentList',
@@ -74,12 +76,7 @@ export default {
visible: false, visible: false,
dataList: [], dataList: [],
commentContent: '', commentContent: '',
loading: false, loading: false
url: {
list: '/compare/sarFileCompareResComment/queryListByInfoId',
add: '/compare/sarFileCompareResComment/add',
edit: '/compare/sarFileCompareResComment/edit'
}
} }
}, },
methods: { methods: {
@@ -103,7 +100,7 @@ export default {
}, },
getList () { getList () {
this.loading = true this.loading = true
getAction(this.url.list, { getCommentList({
id: this.$route.query.id, id: this.$route.query.id,
str: this.commentContent str: this.commentContent
}).then((res) => { }).then((res) => {
@@ -298,6 +295,7 @@ export default {
white-space: nowrap; white-space: nowrap;
margin-top: 4px; margin-top: 4px;
} }
.box-input-search { .box-input-search {
/deep/ .ant-input-search-icon { /deep/ .ant-input-search-icon {
display: none; display: none;
@@ -14,7 +14,7 @@
<div class="box-title-text"> <div class="box-title-text">
<div class="title-text"> <div class="title-text">
<span class="required">*</span> <span class="required">*</span>
<span class="title-text-text" :title="title">{{title}}</span> <span class="title-text-text" :title="title">{{ title }}</span>
</div> </div>
<a-form-model-item v-if="title === $t('docTool.comparison.replyToComments')" class="item-model" :prop="'replyContent'"> <a-form-model-item v-if="title === $t('docTool.comparison.replyToComments')" class="item-model" :prop="'replyContent'">
<a-textarea <a-textarea
@@ -30,7 +30,7 @@
:disabled="false" :disabled="false"
:maxLength="500" :maxLength="500"
v-model.trim="formInline.commentContent" v-model.trim="formInline.commentContent"
:autoSize="{ minRows: 2, maxRows: 6 }"/> :autoSize="{ minRows: 2, maxRows: 6 }" />
</a-form-model-item> </a-form-model-item>
</div> </div>
</a-col> </a-col>
@@ -40,7 +40,7 @@
</template> </template>
<script> <script>
import { postAction } from '@/api/manage' import { addComment } from '../../../../api/documentToolApi.js'
export default { export default {
name: 'ComparisonAddReplyComment', name: 'ComparisonAddReplyComment',
@@ -76,19 +76,13 @@ export default {
handleOkComment () { handleOkComment () {
this.$refs.ruleForm.validate(valid => { this.$refs.ruleForm.validate(valid => {
if (valid) { if (valid) {
let url = ''
let query = {} let query = {}
let Action
if (this.title === this.$t('docTool.comparison.publishComment')) { if (this.title === this.$t('docTool.comparison.publishComment')) {
url = this.url.add
Action = postAction
query = { query = {
comment: this.formInline.commentContent, comment: this.formInline.commentContent,
infoId: this.$route.query.id infoId: this.$route.query.id
} }
} else if (this.title === this.$t('docTool.comparison.replyToComments')) { } else if (this.title === this.$t('docTool.comparison.replyToComments')) {
Action = postAction
url = this.url.add
query = { query = {
comment: this.formInline.replyContent, comment: this.formInline.replyContent,
parentId: this.formInline.projectCommentId, parentId: this.formInline.projectCommentId,
@@ -96,11 +90,11 @@ export default {
} }
} }
this.confirmLoading = true this.confirmLoading = true
Action(url, query).then((res) => { addComment(query).then((res) => {
if (res.success) { if (res.success) {
this.$message.success(this.$t('operationSuccessful')) this.$message.success(this.$t('operationSuccessful'))
this.visible = false this.visible = false
this.getList() this.$emit('ok')
} else { } else {
this.$message.warning(this.$t('operationFailed')) this.$message.warning(this.$t('operationFailed'))
} }
@@ -118,5 +112,5 @@ export default {
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
@import'~@assets/less/common.less'; @import '~../../../../assets/less/common.less';
</style> </style>
+23 -17
View File
@@ -18,7 +18,7 @@
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i>已选择&nbsp;<a style="font-weight: 600">{{ <i class="anticon anticon-info-circle ant-alert-icon"></i>已选择&nbsp;<a style="font-weight: 600">{{
selectedRowKeys.length }}</a>&nbsp;&nbsp; selectedRowKeys.length }}</a>&nbsp;&nbsp;
<a style="margin-left: 24px" @click="onClearSelected">清空</a> <a style="margin-left: 24px" @click="onClearSelected">清空</a>
</div> </div>
@@ -36,10 +36,10 @@
<span slot="action" slot-scope="text, record"> <span slot="action" slot-scope="text, record">
<a @click="handleEdit(record)">编辑</a> <a @click="handleEdit(record)">编辑</a>
<a-divider type="vertical"/> <a-divider type="vertical" />
<a-dropdown> <a-dropdown>
<a class="ant-dropdown-link"> <a class="ant-dropdown-link">
更多 <a-icon type="down"/> 更多 <a-icon type="down" />
</a> </a>
<a-menu slot="overlay"> <a-menu slot="overlay">
<a-menu-item> <a-menu-item>
@@ -61,13 +61,12 @@
</a-dropdown> </a-dropdown>
</span> </span>
<!-- 字符串超长截取省略号显示 --> <!-- 字符串超长截取省略号显示 -->
<span slot="url" slot-scope="text"> <template slot="text" slot-scope="text">
<j-ellipsis :value="text" :length="25"/> <a-tooltip overlay-class-name="tooltip-style">
</span> <template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
<!-- 字符串超长截取省略号显示--> <div class="table-text">{{ text || text === 0 ? text : global.emptyLine }}</div>
<span slot="component" slot-scope="text"> </a-tooltip>
<j-ellipsis :value="text"/> </template>
</span>
</a-table> </a-table>
</div> </div>
@@ -94,11 +93,13 @@ const columns = [
}, { }, {
title: '菜单英文名称', title: '菜单英文名称',
dataIndex: 'englishName', dataIndex: 'englishName',
key: 'englishName' key: 'englishName',
scopedSlots: { customRender: 'text' }
}, { }, {
title: '菜单类型', title: '菜单类型',
dataIndex: 'menuType', dataIndex: 'menuType',
key: 'menuType', key: 'menuType',
width: 90,
customRender: function (text) { customRender: function (text) {
if ((text + '') === '0') { if ((text + '') === '0') {
return '菜单' return '菜单'
@@ -109,7 +110,8 @@ const columns = [
} else { } else {
return text return text
} }
} },
scopedSlots: { customRender: 'text' }
}, /* { }, /* {
title: '权限编码', title: '权限编码',
dataIndex: 'perms', dataIndex: 'perms',
@@ -117,24 +119,28 @@ const columns = [
}, */{ }, */{
title: 'icon', title: 'icon',
dataIndex: 'icon', dataIndex: 'icon',
key: 'icon' key: 'icon',
width: 120,
scopedSlots: { customRender: 'text' }
}, },
{ {
title: '组件', title: '组件',
dataIndex: 'component', dataIndex: 'component',
key: 'component', key: 'component',
scopedSlots: { customRender: 'component' } scopedSlots: { customRender: 'text' }
}, },
{ {
title: '路径', title: '路径',
dataIndex: 'url', dataIndex: 'url',
key: 'url', key: 'url',
scopedSlots: { customRender: 'url' } scopedSlots: { customRender: 'text' }
}, },
{ {
title: '排序', title: '排序',
dataIndex: 'sortNo', dataIndex: 'sortNo',
key: 'sortNo' key: 'sortNo',
width: 60,
scopedSlots: { customRender: 'text' }
}, },
{ {
title: '操作', title: '操作',
@@ -195,5 +201,5 @@ export default {
} }
</script> </script>
<style scoped> <style scoped>
@import '~@assets/less/common.less'; @import '~@assets/less/common.less';
</style> </style>