update 国内标准树修改,文档拆分列表

This commit is contained in:
赵霄
2023-09-15 16:39:41 +08:00
parent 478fab29fe
commit 9a01fa7d97
7 changed files with 350 additions and 302 deletions
+8 -13
View File
@@ -1,21 +1,16 @@
// 本地工具-即文档功能对应的接口 // 本地工具-即文档功能对应的接口
import { getAction } from './manage' import { getAction, postAction } from './manage'
// 文档拆分-获取查询条件-todo 全部需要修改接口 // 文档拆分-发布
const getDocumentSplitSearchForm = (params) => getAction('/split/sarFileSplitInfo/queryCondition', params) const releaseSplitStandard = (params) => postAction('', params)
// 文档拆分-获取表单模型 // 文档拆分详情-表头
const getDocumentSplitFormModal = (params) => getAction('/laws/standard/domestic/getFormModel', params) const getDocSplitTableHeader = (params) => getAction('', params)
// 文档拆分-获取信息
const getDocumentSplitDocumentInfo = (params) => getAction('/laws/standard/domestic/getByIdAndModule', params)
// 文档拆分-获取表头信息
const getDocumentSplitTableHeader = (params) => getAction('/split/sarFileSplitInfo/getHeader', params)
export { export {
// 文档拆分 // 文档拆分
getDocumentSplitSearchForm, releaseSplitStandard,
getDocumentSplitFormModal,
getDocumentSplitDocumentInfo,
getDocumentSplitTableHeader
// 文档拆分-详情
getDocSplitTableHeader
} }
+46 -5
View File
@@ -424,10 +424,13 @@
} }
} }
/*树节点样式*/ .page-tree-box {
.ant-tree li .ant-tree-node-content-wrapper { height: 100%;
width: calc(100% - 24px); overflow: auto;
box-sizing: border-box; }
.page-tree-box-has-search {
height: calc(100% - 32px);
} }
/*展开收起按钮颜色*/ /*展开收起按钮颜色*/
@@ -482,13 +485,51 @@
opacity: 1; opacity: 1;
margin-left: -24px; margin-left: -24px;
padding-left: 29px; padding-left: 29px;
width: 100%;
} }
.ant-tree li .ant-tree-node-content-wrapper.ant-tree-node-selected { .ant-tree li .ant-tree-node-content-wrapper.ant-tree-node-selected {
background-color: #ffd9d1 !important; background-color: #ffd9d1 !important;
} }
.tree-operate-node {
display: flex;
width: 100%;
align-items: center;
&-btn-box {
display: inline-block;
.tree-operate-node-btn {
display: inline-block;
}
}
&-btn-box-hide {
opacity: 0;
pointer-events: none;
}
&-btn {
width: 24px;
height: 24px;
background: rgba(213, 44, 38, 0.08);
border-radius: 2px 2px 2px 2px;
border: none;
margin-left: 4px;
padding: 0;
/deep/ .anticon {
margin-top: 2px;
color: #D52C26;
}
i {
color: @primary-color;
height: 20px;
}
}
}
/*抽屉样式修改*/ /*抽屉样式修改*/
.custom-drawer-style { .custom-drawer-style {
height: 100%; height: 100%;
+10 -2
View File
@@ -117,6 +117,7 @@ module.exports = {
release: 'Release', release: 'Release',
withdraw: 'Withdraw', withdraw: 'Withdraw',
confirmRelease: 'Confirm Release?', confirmRelease: 'Confirm Release?',
confirmReleaseContent: 'Confirm to publish the data?',
confirmWithdraw: 'Confirm to Withdraw?', confirmWithdraw: 'Confirm to Withdraw?',
doNotHavePermissionDeleteData: 'Do not have permission to delete this data', doNotHavePermissionDeleteData: 'Do not have permission to delete this data',
noData: 'No Data', noData: 'No Data',
@@ -364,7 +365,15 @@ module.exports = {
split: { split: {
splitText: 'Split Library File', splitText: 'Split Library File',
importResults: 'Import Split Results', importResults: 'Import Split Results',
backDocument: 'Back To Document Library', splitState: 'Split state',
editor: 'Editor',
fileStatus: 'File status',
splitTime: 'Split time',
splitResult: 'Split result',
batchCopy: 'Batch copy',
batchEdit: 'Batch edit',
mergerClause: 'Merge Item',
selectFileType: 'Please select a file type', selectFileType: 'Please select a file type',
onlyWord: 'Only word files can be imported', onlyWord: 'Only word files can be imported',
fileType: 'File Type', fileType: 'File Type',
@@ -377,7 +386,6 @@ module.exports = {
gb: 'GB', gb: 'GB',
gbt: 'GB/T', gbt: 'GB/T',
gso: 'GSO', gso: 'GSO',
mergerClause: 'Merge Item',
batchSetting: 'Batch Set', batchSetting: 'Batch Set',
clauseContent: 'Item Content', clauseContent: 'Item Content',
clauseNo: 'Item No.', clauseNo: 'Item No.',
+10 -2
View File
@@ -117,6 +117,7 @@ module.exports = {
release: '发布', release: '发布',
withdraw: '撤回', withdraw: '撤回',
confirmRelease: '确认发布?', confirmRelease: '确认发布?',
confirmReleaseContent: '确认发布该条数据?',
confirmWithdraw: '确认撤回?', confirmWithdraw: '确认撤回?',
doNotHavePermissionDeleteData: '没有权限删除此数据', doNotHavePermissionDeleteData: '没有权限删除此数据',
noData: '暂无数据', noData: '暂无数据',
@@ -364,7 +365,15 @@ module.exports = {
split: { split: {
splitText: '拆分已入库文本', splitText: '拆分已入库文本',
importResults: '导入拆分结果', importResults: '导入拆分结果',
backDocument: '回传至文档库', splitState: '拆分状态',
editor: '编辑人',
fileStatus: '文件状态',
splitTime: '拆分时间',
splitResult: '拆分结果',
batchCopy: '批量复制',
batchEdit: '批量编辑',
mergerClause: '合并条款',
selectFileType: '请选择文件类型', selectFileType: '请选择文件类型',
onlyWord: '只能导入word文件', onlyWord: '只能导入word文件',
fileType: '文件类型', fileType: '文件类型',
@@ -377,7 +386,6 @@ module.exports = {
gb: 'GB', gb: 'GB',
gbt: 'GB/T', gbt: 'GB/T',
gso: 'GSO', gso: 'GSO',
mergerClause: '合并条款',
batchSetting: '批量设置', batchSetting: '批量设置',
clauseContent: '条款内容', clauseContent: '条款内容',
clauseNo: '条款号', clauseNo: '条款号',
+154 -121
View File
@@ -1,28 +1,56 @@
<template> <template>
<a-card :bordered="false"> <a-card :bordered="false">
<div class="table-page-search-wrapper"> <div class="table-page-search-wrapper">
<search flag="3" :url="url"/> <a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<!--标准号/标准名称-->
<a-col :md="6" :sm="12">
<a-form-item :label="$t('standardSelect.standardNumOrName')">
<j-input :placeholder="$t('pleaseEnter') + $t('projectLibrary.projectName')" v-model="queryParam.projectName"></j-input>
</a-form-item>
</a-col>
<!--拆分状态-->
<a-col :md="6" :sm="12">
<a-form-item :label="$t('docTool.split.splitState')">
<j-dict-select-tag
class="box-input"
v-model="queryParam.projectHealth"
:placeholder="$t('pleaseSelect') + $t('docTool.split.splitState')"
:type="'select'"
:triggerChange="false"
:dictCode="'project_health'" />
</a-form-item>
</a-col>
<!--编辑人-->
<a-col :md="6" :sm="12">
<a-form-item :label="$t('docTool.split.editor')">
<j-input :placeholder="$t('pleaseEnter') + $t('docTool.split.editor')" v-model="queryParam.projectName"></j-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchReset" icon="reload" ghost>{{ $t('reset') }}</a-button>
<a-button type="primary" @click="searchQuery" icon="search" style="margin-left: 8px">
{{ $t('query') }}
</a-button>
</span>
</a-col>
</a-row>
</a-form>
</div> </div>
<div class="table-operator"> <div class="table-operator">
<!-- --> <!--拆分已入库文本-->
<div class="operator-text" @click="handleModule" v-has="'split:sarFileSplitInfo:splitFile'"> <a-button icon="plus" type="primary" @click="handleModule" v-has="'split:sarFileSplitInfo:splitFile'">{{ $t('docTool.split.splitText') }}
<a-icon type="plus"/> </a-button>
{{ $t('docTool.split.splitText') }} <!--导入拆分结果-->
</div> <a-button icon="download" type="primary" ghost @click="handleExport" v-has="'split:sarFileSplitInfo:splitResult'">
<!-- -->
<div class="operator-text" @click="handleExport" v-has="'split:sarFileSplitInfo:splitResult'">
<a-icon type="import" :rotate="-90"/>
{{ $t('docTool.split.importResults') }} {{ $t('docTool.split.importResults') }}
</div> </a-button>
<!-- --> <!--批量删除-->
<div class="operator-text" @click="handleDel" v-has="'split:sarFileSplitInfo:deleteBatch'"> <a-button type="primary" icon="delete" ghost @click="batchDel" v-has="'split:sarFileSplitInfo:deleteBatch'">{{ $t('batchDelete') }}</a-button>
<a-icon type="delete"/>
{{ $t('batchDelete') }}
</div>
</div> </div>
<div class="splitting-table"> <div>
<j-table <j-table
v-if="columns && columns.length > 0"
:columns="columns" :columns="columns"
:dataSource="dataSource" :dataSource="dataSource"
:can-drag="true" :can-drag="true"
@@ -30,83 +58,141 @@
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:pagination="ipagination" :pagination="ipagination"
:scroll="{x: '100%'}" :scroll="{x: '100%'}"
@change="tableOnChange"> :loading="loading"
@change="handleTableChange">
<template v-slot:operation="{text, record}"> <template v-slot:operation="{text, record}">
<a v-for="(operation, index) in operationList.slice(0, operateMaxNum)" :key="index" @click="operationClick(operation,record)"> <a @click="operationClick(operationList[0],record)">{{ operationList[0].text }}</a>
{{ operation.text }} <a-divider type="vertical" />
</a>
<a-divider v-if="operationList.length >= operateMaxNum" type="vertical" />
<a-dropdown placement="bottomCenter"> <a-dropdown placement="bottomCenter">
<a-icon type="more" class="operate-icon-btn operate-icon-more" /> <a-icon type="more" class="operate-icon-btn operate-icon-more" />
<a-menu slot="overlay"> <a-menu slot="overlay">
<a-menu-item v-for="(operation, index) in operationList.slice(operateMaxNum)" :key="index"> <a-menu-item v-for="(operation, index) in operationList.slice(operateMaxNum)" :key="index">
<a @click="operationClick(operation,record)"> <a @click="operationClick(operation,record)">
{{ operation.text }} <div class="operate-btn">
<!-- 编辑图标-->
<i class="iconfont icon-bianji operate-btn-icon" v-if="operation.text === $t('edit')" />
<!-- 删除图标-->
<i class="iconfont icon-shanchu_ operate-btn-icon" v-if="operation.text === $t('delete')" />
{{ operation.text }}
</div>
</a> </a>
</a-menu-item> </a-menu-item>
</a-menu> </a-menu>
</a-dropdown> </a-dropdown>
</template> </template>
<!-- 详情-->
<template slot="detailClick" slot-scope="{text, record}">
<a-tooltip overlay-class-name="tooltip-style">
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
<a class="table-text textName" @click="detailClick(record)" v-if="text || text === 0">{{ text }}</a>
<div class="table-text" v-else>{{ global.emptyLine }}</div>
</a-tooltip>
</template>
</j-table> </j-table>
</div> </div>
<!--拆分已入库文本弹框-->
<split-text ref="splitText" @visible="splitTextVisible"></split-text> <split-text ref="splitText" @visible="splitTextVisible"></split-text>
<!--导入拆分结果弹框-->
<import-result ref="importResult" @visible="importResultVisible"></import-result> <import-result ref="importResult" @visible="importResultVisible"></import-result>
</a-card> </a-card>
</template> </template>
<script> <script>
import Search from '@/components/customField/Search' import '@assets/less/common.less'
import JTable from '@/components/jero/JTable' import JTable from '@/components/jero/JTable'
// 拆分已入库文本弹框 // 拆分已入库文本弹框
import SplitText from './modules/SplitText' import SplitText from './modules/SplitText'
// 导入拆分结果弹框 // 导入拆分结果弹框
import ImportResult from './modules/ImportResult' import ImportResult from './modules/ImportResult'
import { httpAction, getAction } from '@/api/manage' import { JeroListMixin } from '../../mixins/JeroListMixin.js'
import { ConfigurableTableMixin } from '@/mixins/ConfigurableTableMixin' import { releaseSplitStandard } from '../../api/documentToolApi.js'
import { getDocumentSplitSearchForm, getDocumentSplitTableHeader } from '../../api/documentToolApi'
export default { export default {
name: 'DocumentSplit', name: 'DocumentSplit',
components: { Search, JTable, SplitText, ImportResult }, components: { JTable, SplitText, ImportResult },
mixins: [ConfigurableTableMixin], mixins: [JeroListMixin],
data () { data () {
return { return {
selectedRowKeys: [],
operationList: [ operationList: [
// 发布
{
text: this.$t('release'),
clickEvent: 'handleRelease',
has: ''
},
// 查看 // 查看
{ {
text: this.$t('view'), text: this.$t('view'),
clickEvent: 'detailClick', clickEvent: 'handleDetail',
has: '' has: ''
}, },
// 回传至文档库 // 编辑
{ {
text: this.$t('docTool.split.backDocument'), text: this.$t('edit'),
clickEvent: 'backDocument', clickEvent: 'handleEdit',
has: '' has: ''
}, },
// 删除 // 删除
{ {
text: this.$t('delete'), text: this.$t('delete'),
clickEvent: 'deleteDetail', clickEvent: 'handleDelete',
has: '' has: ''
} }
], ],
getTableHeaderFunc: getDocumentSplitTableHeader, columns: [
getQueryConditionFunc: getDocumentSplitSearchForm, // 标准号
{
dataIndex: '1',
title: this.$t('standardSelect.standardNumber'),
width: 150
},
// 标准名称
{
dataIndex: '2',
title: this.$t('standardSelect.standardName'),
width: 150
},
// 文件状态
{
dataIndex: '3',
title: this.$t('docTool.split.fileStatus'),
width: 150
},
// 文件名称
{
dataIndex: '4',
title: this.$t('fileName'),
width: 150
},
// 拆分状态
{
dataIndex: '5',
title: this.$t('docTool.split.splitState'),
width: 150
},
// 编辑人
{
dataIndex: '6',
title: this.$t('docTool.split.editor'),
width: 150
},
// 拆分时间
{
dataIndex: '7',
title: this.$t('docTool.split.splitTime'),
width: 150
},
// 拆分结果
{
dataIndex: '91',
title: this.$t('docTool.split.splitResult'),
sorter: true,
width: 150
},
// 操作
{
title: this.$t('operation'),
fixed: 'right',
width: 150,
scopedSlots: { customRender: 'operation' }
}
],
url: { url: {
// tableHeader: '/split/sarFileSplitInfo/getHeader', // 表格头部字段
// searchList: '/split/sarFileSplitInfo/queryCondition', // 搜索字段
list: '/split/sarFileSplitInfo/page', // 表格数据 list: '/split/sarFileSplitInfo/page', // 表格数据
deleteBatch: '', // 批量删除 deleteBatch: '', // 批量删除
deleteUrl: '', deleteUrl: '',
@@ -114,9 +200,7 @@ export default {
}, },
dataSource: [ dataSource: [
{ id: 1 } { id: 1 }
], ]
showAction: true,
flag: '3'
} }
}, },
methods: { methods: {
@@ -128,87 +212,37 @@ export default {
handleExport () { handleExport () {
this.$refs.importResult.open() this.$refs.importResult.open()
}, },
// 批量删除 /**
handleDel () { * 发布
const params = { */
ids: this.selectedRowKeys.join(',') handleRelease ({ id }) {
}
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
this.$confirm({
title: this.$t('confirmDeletion'),
content: '',
onOk: () => {
httpAction(this.url.deleteBatch, params, 'post').then((res) => {
if (res.success) {
this.$message.success(this.$t('operationSuccessful'))
this.selectedRowKeys = []
this.$refs.tableData.$emit('searchGetData')
} else {
this.$message.warning(this.$t('operationFailed'))
}
})
}
})
} else {
this.$message.warning(this.$t('selectLeastOne'))
}
},
operationClick (operation, record) {
if (this[operation.clickEvent]) {
this[operation.clickEvent](record)
}
},
// 表格操作列的删除
deleteDetail (val) {
this.$confirm({ this.$confirm({
content: this.$t('confirmDeletion'), title: this.$t('confirmRelease'),
onOk: content: this.$t('confirmReleaseContent'),
async () => {
getAction(this.url.deleteUrl, { id: val.id }).then((res) => {
if (res.success) {
this.$message.success(this.$t('operationSuccessful'))
this.$refs.tableData.$emit('searchGetData')
} else {
this.$message.warning(this.$t('operationFailed'))
}
})
}
})
},
// 表格选中的回调
onSelectChange (selKeys) {
this.selectedRowKeys = selKeys
},
// 表格操作列-回传至文档库
backDocument (val) {
this.$confirm({
content: this.$t('backDocument'),
onOk: () => { onOk: () => {
const params = { this.loading = true
id: val.id, releaseSplitStandard({ id }).then(res => {
fileName: val.fileName, if (res.success) {
connectId: val.connectId this.$message.success(res.message)
} this.modalFormOk()
getAction(this.url.backDocument, params).then(res => {
if (res.data.success) {
this.$message.success(this.$t('operationSuccessful'))
this.$refs.tableData.$emit('searchGetData')
} else { } else {
this.$message.warning(res.data.message) this.$message.warn(res.message)
} }
}).finally(() => {
this.loading = false
}) })
} }
}) })
}, },
// 表格操作列的查看 // 表格操作列的查看
detailClick (val) { handleEdit (record) {
this.$router.push({ this.$router.push({
path: '/documentTool/split/detail', path: '/documentTool/DocumentSplitDetail',
query: { query: {
infoId: val.id, infoId: record.id,
infoNumber: val.serialNumber, infoNumber: record.serialNumber,
createBy: val.createBy createBy: record.createBy,
standardName: 'GB 7258-2020 机动车运行安全'
} }
}) })
}, },
@@ -227,5 +261,4 @@ export default {
</script> </script>
<style scoped> <style scoped>
@import '~@assets/less/common.less';
</style> </style>
@@ -1,8 +1,9 @@
<template> <template>
<a-card :bordered="false"> <internal-detail-page :title="pageTitle" :content-padding="0">
<div class="left-tree-div"> <div class="page-left-right-layout">
<div class="div-left"> <!--树部分-->
<div> <div class="page-left-box">
<a-spin :spinning="loading">
<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
@@ -19,7 +20,7 @@
<template #title="{ key: treeKey, title, record }"> <template #title="{ key: treeKey, title, record }">
<a-dropdown :trigger="['contextmenu']"> <a-dropdown :trigger="['contextmenu']">
<span v-if="title.indexOf(searchValue) >= -1 && title.length <= 18" :title="title" <span v-if="title.indexOf(searchValue) >= -1 && title.length <= 18" :title="title"
class="expand-title"> class="expand-title">
{{ title.substr(0, title.indexOf(searchValue)) }}<span style="color: #f50">{{ searchValue }}</span> {{ title.substr(0, title.indexOf(searchValue)) }}<span style="color: #f50">{{ searchValue }}</span>
{{ title.substr(title.indexOf(searchValue) + searchValue.length) }} {{ title.substr(title.indexOf(searchValue) + searchValue.length) }}
</span> </span>
@@ -31,9 +32,12 @@
<span <span
v-else-if="title.indexOf(searchValue) >= -1 && title.length > 18 && title.indexOf(searchValue)<=18" v-else-if="title.indexOf(searchValue) >= -1 && title.length > 18 && title.indexOf(searchValue)<=18"
:title="title"> :title="title">
{{ title.substr(0, title.indexOf(searchValue)) }}<span style="color: #f50"> {{ title.substr(0, title.indexOf(searchValue)) }}
<span style="color: #f50">
{{ title.indexOf(searchValue) + searchValue.length > 18 ? searchValue.substr(0, 18 - title.indexOf(searchValue)) : searchValue {{ title.indexOf(searchValue) + searchValue.length > 18 ? searchValue.substr(0, 18 - title.indexOf(searchValue)) : searchValue
}}</span>{{ title.indexOf(searchValue) + searchValue.length > 18 ? '...' : title.substr(title.indexOf(searchValue) + searchValue.length, 18 - title.indexOf(searchValue) - searchValue.length) + '...' }}
</span>
{{ title.indexOf(searchValue) + searchValue.length > 18 ? '...' : title.substr(title.indexOf(searchValue) + searchValue.length, 18 - title.indexOf(searchValue) - searchValue.length) + '...'
}} }}
</span> </span>
<span v-else :title="title"> <span v-else :title="title">
@@ -62,139 +66,122 @@
</a-dropdown> </a-dropdown>
</template> </template>
</a-tree> </a-tree>
</div> </a-spin>
</div> </div>
<div class="div-right"> <!--表格部分-->
<div class="div-right-wrapper"> <div class="page-right-box">
<div class="right-search-header table-page-search-wrapper"> <div class="table-operator">
<search :flag="'4'" :url="url" :infoId="$route.query.infoId" <!--导入-->
:menuId="menuId" @reset="searchReset" @search="searchQuery" /> <a-upload name="file"
</div> :showUploadList="false"
<div class="table-operator"> :multiple="false"
<div class="operator-text" @click="handleCopyManage"> :headers="tokenHeader"
<!-- v-if="$route.query.createBy === userData.username || administrators"--> :action="importExcelUrl"
<!-- v-has="'split:sarFileSplitItems:copy'"--> v-has="'domesticStandard:import'"
<a-icon type="copy" /> @change="handleImportExcel">
{{ $t('copy') }} <a-button type="primary" icon="download" ghost>{{ $t('import') }}</a-button>
</div> </a-upload>
<div class="operator-text" @click="handleAddManage"> <!--导出-->
<!-- v-if="$route.query.createBy === userData.username || administrators"--> <a-button icon="upload"
<!-- v-has="'split:sarFileSplitItems:add'"--> type="primary"
<a-icon type="plus" /> ghost
{{ $t('add') }} v-has="'domesticStandard:export'"
</div> @click="handleExportXls($t('standardRegulationLibrary.domesticStandard.exportFileName'))">
<div class="operator-text upload-split" {{ $t('export') }}
v-if="isCanOperate" </a-button>
@click="handleImportManage" v-has="'split:sarFileSplitItems:import'"> <!--批量删除-->
<a-icon type="import" :rotate="-90" v-if="uploadMenuId === undefined || uploadMenuId === ''" /> <a-button type="primary" icon="delete" ghost @click="batchDel" v-has="'domesticStandard:batchDel'">{{ $t('batchDelete') }}</a-button>
{{ (uploadMenuId === '' || uploadMenuId === undefined) ? $t('import') : '' }} <!--模板下载-->
<upload v-if="menuId" ref="uploadSplit" :infoId="infoId" :menuId="uploadMenuId" <a-button type="primary"
@uploadSuccess="uploadSuccess"></upload> icon="download"
</div> ghost
<div class="operator-text" @click="handleExportManage" v-has="'domesticStandard:downTemplate'"
v-has="'split:sarFileSplitItems:export'"> @click="downTemplate($t('standardRegulationLibrary.domesticStandard.templateName'))">
<a-icon type="export" :rotate="-90" /> {{ $t('templateDownload') }}
{{ $t('export') }} </a-button>
</div> <!--批量复制-->
<div class="operator-text" @click="handleDownManage" <a-button type="primary" ghost @click="handleCopyManage" v-has="'domesticStandard:batchDel'">{{ $t('docTool.split.batchCopy') }}</a-button>
v-if="isCanOperate" <!--批量编辑-->
v-has="'split:sarFileSplitItems:template'"> <a-button type="primary" ghost @click="handleManage">{{ $t('docTool.split.batchEdit') }}</a-button>
<a-icon type="download" /> <!--合并条款-->
{{ $t('templateDownload') }} <a-button type="primary" ghost @click="handleMergeManage">{{ $t('docTool.split.mergerClause') }}</a-button>
</div> </div>
<div class="operator-text" @click="handleMergeManage" <div>
v-if="isCanOperate" <j-table
v-has="'split:sarFileSplitItems:merge'"> v-if="columns && columns.length > 0"
<a-icon type="snippets" /> :columns="columns"
{{ $t('docTool.split.mergerClause') }} :dataSource="dataSource"
</div> :can-drag="true"
<div class="operator-text" @click="handleManage" rowKey="id"
v-if="isCanOperate" :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
v-has="'split:sarFileSplitItems:set'"> :pagination="ipagination"
<a-icon type="setting" /> :scroll="{x: '100%'}"
{{ $t('docTool.split.batchSetting') }} @change="tableOnChange">
</div>
<div class="operator-text" @click="handleBatCancel"
v-if="isCanOperate"
v-has="'split:sarFileSplitItems:delete'">
<a-icon type="delete" />
{{ $t('batchDelete') }}
</div>
</div>
<div class="split-detail-table">
<j-table
v-if="columns && columns.length > 0"
:columns="columns"
:dataSource="dataSource"
:can-drag="true"
rowKey="id"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:pagination="ipagination"
:scroll="{x: '100%'}"
@change="tableOnChange">
<template slot="operation" slot-scope="{text, record}"> <template slot="operation" slot-scope="{text, record}">
<a v-for="(operation, index) in operationList" :key="index" @click="operationClick(operation,record)"> <a v-for="(operation, index) in operationList" :key="index" @click="operationClick(operation,record)">
<!-- v-has="operation.has"--> <!-- v-has="operation.has"-->
<span class="text"> <span class="text">
{{ operation.text }} {{ operation.text }}
</span> </span>
</a> </a>
</template> </template>
<!-- 详情--> <!-- 详情-->
<template slot="detailClick" slot-scope="{text, record}"> <template slot="detailClick" slot-scope="{text, record}">
<a-tooltip overlay-class-name="tooltip-style"> <a-tooltip overlay-class-name="tooltip-style">
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template> <template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
<a class="table-text textName" @click="detailClick(record)" v-if="text || text === 0">{{ text }}</a> <a class="table-text textName" @click="detailClick(record)" v-if="text || text === 0">{{ text }}</a>
<div class="table-text" v-else>{{ global.emptyLine }}</div> <div class="table-text" v-else>{{ global.emptyLine }}</div>
</a-tooltip> </a-tooltip>
</template> </template>
<template slot="showContent" slot-scope="text, record"> <template slot="showContent" slot-scope="text, record">
<span class="content-show" @click="showContent(text,record)">{{record.iterms_conditions&&record.iterms_conditions!=='null'?record.iterms_conditions.replace(/<.*?>/ig, ' ') : ''}}</span> <span class="content-show"
</template> @click="showContent(text,record)">{{ record.iterms_conditions && record.iterms_conditions !== 'null' ? record.iterms_conditions.replace(/<.*?>/ig, ' ') : ''
}}</span>
</template>
</j-table> </j-table>
</div>
</div> </div>
</div> </div>
<!-- 条款详情 -->
<split-clause-detail ref="splitClauseDetail"></split-clause-detail>
<!-- 添加节点 -->
<split-detail-node-add ref="splitDetailNodeAdd" @ok="nodeAddOk" @update="nodeUpdateOk"></split-detail-node-add>
<!-- 批量设置弹框 -->
<split-detail-batch-setting ref="splitDetailBatchSetting" @ok="batchSettingOk"></split-detail-batch-setting>
<split-add-form ref="splitForm" :flag="'4'"
:url="url" :infoId="infoId" :menuId="menuId" :itemId="itemId" @closeVisible="closeVisible"
@sumber="sumber"></split-add-form>
</div> </div>
</a-card>
<!-- 条款详情 -->
<split-clause-detail ref="splitClauseDetail"></split-clause-detail>
<!-- 添加节点 -->
<split-detail-node-add ref="splitDetailNodeAdd" @ok="nodeAddOk" @update="nodeUpdateOk"></split-detail-node-add>
<!-- 批量设置弹框 -->
<split-detail-batch-setting ref="splitDetailBatchSetting" @ok="batchSettingOk"></split-detail-batch-setting>
<split-add-form ref="splitForm" :flag="'4'"
:url="url" :infoId="infoId" :menuId="menuId" :itemId="itemId" @closeVisible="closeVisible"
@sumber="sumber"></split-add-form>
</internal-detail-page>
</template> </template>
<script> <script>
import Search from '@/components/customField/Search' import InternalDetailPage from '../../components/InternalDetailPage.vue'
import JTable from '@/components/jero/JTable' import JTable from '../../components/jero/JTable.vue'
// 条款添加 // 条款添加
import SplitAddForm from './SplitAddForm' import SplitAddForm from './modules/SplitAddForm.vue'
// 条款内容弹框 // 条款内容弹框
import SplitClauseDetail from './SplitClauseDetail' import SplitClauseDetail from './modules/SplitClauseDetail.vue'
// 添加左侧树节点弹框 // 添加左侧树节点弹框
import SplitDetailNodeAdd from './SplitDetailNodeAdd' import SplitDetailNodeAdd from './modules/SplitDetailNodeAdd.vue'
// 批量设置弹框 // 批量设置弹框
import SplitDetailBatchSetting from './SplitDetailBatchSetting' import SplitDetailBatchSetting from './modules/SplitDetailBatchSetting.vue'
import Vue from 'vue' import Vue from 'vue'
import { ACCESS_TOKEN } from '@/store/mutation-types' import { ACCESS_TOKEN } from '../../store/mutation-types.js'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import { postAction, getAction, downloadFile } from '@/api/manage' import { postAction, getAction, downloadFile } from '../../api/manage.js'
import moment from 'moment' import moment from 'moment'
import { ConfigurableTableMixin } from '../../../mixins/ConfigurableTableMixin' import { ConfigurableTableMixin } from '../../mixins/ConfigurableTableMixin.js'
import {getDocSplitTableHeader} from '../../api/documentToolApi.js'
export default { export default {
name: 'SplitDetail', name: 'DocumentSplitDetail',
components: { components: {
Search, InternalDetailPage,
JTable, JTable,
SplitAddForm, SplitAddForm,
SplitClauseDetail, SplitClauseDetail,
@@ -265,6 +252,10 @@ export default {
menu_id: this.menuId, menu_id: this.menuId,
info_id: this.infoId info_id: this.infoId
} }
},
// 页面标题是标准名称
pageTitle () {
return this.$route.query.standardName
} }
}, },
mounted () { mounted () {
@@ -888,11 +879,11 @@ export default {
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
@import '~@assets/less/common.less'; @import '~../../assets/less/common.less';
@media screen and (min-width: 600px) and (max-width: 1600px) { .page-left-right-layout {
.operator-text { height: 100%;
margin-right: 20px !important; width: 100%;
} display: flex;
} }
</style> </style>
@@ -2,11 +2,11 @@
<a-card :bordered="false" class="page-left-right-layout"> <a-card :bordered="false" class="page-left-right-layout">
<!-- 树部分--> <!-- 树部分-->
<div class="page-left-box"> <div class="page-left-box">
<a-spin :spinning="treeLoading"> <!-- $t('standardRegulationLibrary.domesticStandard.treeSearchPlaceholder')-->
<!-- $t('standardRegulationLibrary.domesticStandard.treeSearchPlaceholder')--> <a-input-search v-model="treeInput"
<a-input-search v-model="treeInput" :placeholder="$t('standardRegulationLibrary.domesticStandard.treeSearchPlaceholder')"
:placeholder="$t('standardRegulationLibrary.domesticStandard.treeSearchPlaceholder')" @search="handleTreeSearch" />
@search="handleTreeSearch" /> <div class="page-tree-box page-tree-box-has-search">
<a-tree :show-line="true" :show-icon="true" :tree-data="treeData" :selected-keys="selectedTreeKeys"> <a-tree :show-line="true" :show-icon="true" :tree-data="treeData" :selected-keys="selectedTreeKeys">
<a-icon type="folder" slot="folder" class="tree-icon" /> <a-icon type="folder" slot="folder" class="tree-icon" />
<a-icon type="file" slot="file" class="tree-icon" /> <a-icon type="file" slot="file" class="tree-icon" />
@@ -22,7 +22,8 @@
</template> </template>
<span class="tree-node-custom-title">{{ record.title }}</span> <span class="tree-node-custom-title">{{ record.title }}</span>
</a-tooltip> </a-tooltip>
<template v-if="record.key === mouseInNodeKey"> <!---->
<div class="tree-operate-node-btn-box" :class="{'tree-operate-node-btn-box-hide': record.key !== mouseInNodeKey}">
<!-- 新增--> <!-- 新增-->
<a-button icon="plus" <a-button icon="plus"
class="tree-operate-node-btn" class="tree-operate-node-btn"
@@ -43,11 +44,11 @@
@click.stop="handleDelTreeNode(record)"> @click.stop="handleDelTreeNode(record)">
<i class="iconfont icon-shanchu_" /> <i class="iconfont icon-shanchu_" />
</a-button> </a-button>
</template> </div>
</div> </div>
</template> </template>
</a-tree> </a-tree>
</a-spin> </div>
</div> </div>
<!-- 表格部分--> <!-- 表格部分-->
<div class="page-right-box"> <div class="page-right-box">
@@ -539,35 +540,6 @@ export default {
color: #1D2129; color: #1D2129;
} }
.tree-operate-node {
display: flex;
width: 100%;
align-items: center;
&-btn {
width: 20px;
height: 20px;
background: rgba(213, 44, 38, 0.08);
border-radius: 2px 2px 2px 2px;
border: none;
display: flex;
align-items: center;
justify-content: center;
margin-left: 4px;
padding: 0;
/deep/ .anticon {
margin-top: 2px;
color: #D52C26;
}
i {
color: @primary-color;
height: 20px;
}
}
}
/deep/ .ant-tree li span.ant-tree-switcher.ant-tree-switcher-noop { /deep/ .ant-tree li span.ant-tree-switcher.ant-tree-switcher-noop {
display: none; display: none;
} }