[update] 表格拖拽换j-table

This commit is contained in:
lideqin
2023-08-23 15:44:51 +08:00
parent 8e7345928e
commit 029c89e13f
17 changed files with 479 additions and 428 deletions
+4 -2
View File
@@ -56,7 +56,8 @@ export const ConfigurableTableMixin = {
fixed: 'right', fixed: 'right',
scopedSlots: { customRender: 'operation' } scopedSlots: { customRender: 'operation' }
}, },
type: '' // 这个字段不知道什么含义 type: '', // 这个字段不知道什么含义
filters: {} // 固定的搜索条件
} }
}, },
mounted () { mounted () {
@@ -117,7 +118,7 @@ export const ConfigurableTableMixin = {
customRender: 'detailClick' customRender: 'detailClick'
} }
} else if (item.urlClick === 'true') { } else if (item.urlClick === 'true') {
this.columns[index].scopedSlots = { item.scopedSlots = {
customRender: 'urlClick' customRender: 'urlClick'
} }
} }
@@ -159,6 +160,7 @@ export const ConfigurableTableMixin = {
const pageNo = this.ipagination.current const pageNo = this.ipagination.current
const pageSize = this.ipagination.pageSize const pageSize = this.ipagination.pageSize
const params = { const params = {
...this.filters,
...this.searchParams, ...this.searchParams,
orderBy: this.orderBy, orderBy: this.orderBy,
orderByField: this.orderByField, orderByField: this.orderByField,
+7 -7
View File
@@ -25,7 +25,7 @@ export const JeroListMixin = {
pageSize: 10, pageSize: 10,
pageSizeOptions: ['10', '20', '30'], pageSizeOptions: ['10', '20', '30'],
showTotal: (total, range) => { showTotal: (total, range) => {
return range[0] + '-' + range[1] + ' 共' + total + '条' return range[0] + '-' + range[1] + ' ' + this.$t('total') + total + this.$t('strip')
}, },
showQuickJumper: true, showQuickJumper: true,
showSizeChanger: true, showSizeChanger: true,
@@ -165,7 +165,7 @@ export const JeroListMixin = {
return return
} }
if (this.selectedRowKeys.length <= 0) { if (this.selectedRowKeys.length <= 0) {
this.$message.warning('请选择一条记录!') this.$message.warning(this.$t('selectARecord'))
} else { } else {
let ids = '' let ids = ''
for (let a = 0; a < this.selectedRowKeys.length; a++) { for (let a = 0; a < this.selectedRowKeys.length; a++) {
@@ -173,8 +173,8 @@ export const JeroListMixin = {
} }
const that = this const that = this
this.$confirm({ this.$confirm({
title: '确认删除', title: this.$t('confirmBatchDeletion'),
content: '是否删除选中数据?', content: this.$t('deleteAData'),
onOk: function () { onOk: function () {
that.loading = true that.loading = true
postAction(that.url.deleteBatch, { ids: ids }).then((res) => { postAction(that.url.deleteBatch, { ids: ids }).then((res) => {
@@ -201,8 +201,8 @@ export const JeroListMixin = {
} }
const that = this const that = this
this.$confirm({ this.$confirm({
title: '确认删除', title: this.$t('confirmDeletion'),
content: '确定要删除此条数据吗?', content: this.$t('areYouSure'),
onOk: function () { onOk: function () {
postAction(that.url.delete, { id: id }).then((res) => { postAction(that.url.delete, { id: id }).then((res) => {
if (res.success) { if (res.success) {
@@ -264,7 +264,7 @@ export const JeroListMixin = {
}, },
handleDetail: function (record) { handleDetail: function (record) {
this.$refs.modalForm.edit(record) this.$refs.modalForm.edit(record)
this.$refs.modalForm.title = '详情' this.$refs.modalForm.title = this.$t('details')
this.$refs.modalForm.disableSubmit = true this.$refs.modalForm.disableSubmit = true
}, },
/* 导出 */ /* 导出 */
+23 -26
View File
@@ -111,10 +111,10 @@
</div> </div>
</div> </div>
<div> <div>
<a-table <j-table
ref="table" ref="table"
size="middle" size="middle"
:components="drag(columns,'columns')" :can-drag="true"
:loading="loading" :loading="loading"
:pagination="ipagination" :pagination="ipagination"
rowKey="id" rowKey="id"
@@ -124,24 +124,24 @@
:columns="columns" :columns="columns"
@change="handleTableChange" @change="handleTableChange"
> >
<span slot="projectName" slot-scope="text" :title="text"> <template v-slot:projectName="{text}" :title="text">
{{ text }} {{ text }}
</span> </template>
<span slot="fileName" slot-scope="text" :title="text"> <template v-slot:fileName="{text}" :title="text">
{{ text }} {{ text }}
</span> </template>
<span slot="operation" slot-scope="text,record"> <template v-slot:operation="{text, record}">
<a class="text-operation" <a class="text-operation"
v-has="'externalReport:download'" v-has="'externalReport:download'"
@click="download(record)">{{$t('download')}}</a> @click="download(record)">{{$t('download')}}</a>
<a class="text-operation" <a class="text-operation"
v-has="'externalReport:edit'" v-has="'externalReport:edit'"
@click="handleEdit(record)" v-if='authmanage'>{{$t('edit')}}</a> @click="handleEdit(record)" v-if='authmanage'>{{$t('edit')}}</a>
<a class="text-operation" <a class="text-operation"
v-has="'externalReport:delete'" v-has="'externalReport:delete'"
@click="batchDel(record)" v-if='authmanage'>{{$t('delete')}}</a> @click="batchDel(record)" v-if='authmanage'>{{$t('delete')}}</a>
</span> </template>
</a-table> </j-table>
</div> </div>
<!-- 上传文件--> <!-- 上传文件-->
<addModel ref="addModelRef" @addModelList="addModelList"/> <addModel ref="addModelRef" @addModelList="addModelList"/>
@@ -154,21 +154,22 @@
</template> </template>
<script> <script>
import JTable from '@/components/jero/JTable'
// 上传文件弹框 // 上传文件弹框
import AddModel from './modules/AddModel' import AddModel from './modules/AddModel'
// 添加节点弹框 // 添加节点弹框
import AddNodeModal from './modules/AddNodeModal' import AddNodeModal from './modules/AddNodeModal'
import { getAction, postAction, downloadFile, deleteAction } from '@/api/manage' import { getAction, postAction, downloadFile, deleteAction } from '@/api/manage'
import { ResizeHeader, ResizeColumnProvide } from '@/mixins/header'
import { JeroListMixin } from '@/mixins/JeroListMixin' import { JeroListMixin } from '@/mixins/JeroListMixin'
export default { export default {
name: 'DataCenter', name: 'DataCenter',
components: { components: {
JTable,
AddModel, AddModel,
AddNodeModal AddNodeModal
}, },
mixins: [ResizeHeader, ResizeColumnProvide, JeroListMixin], mixins: [JeroListMixin],
data () { data () {
return { return {
labelCol: { span: 6 }, labelCol: { span: 6 },
@@ -462,10 +463,6 @@ export default {
this.queryParam = {} this.queryParam = {}
this.loadData() this.loadData()
}, },
// 查看
handlelist () {
this.$refs.handleModelRef.addModel()
},
// 编辑 // 编辑
handleEdit (item) { handleEdit (item) {
this.$refs.addModelRef.editModel(JSON.parse(JSON.stringify(item))) this.$refs.addModelRef.editModel(JSON.parse(JSON.stringify(item)))
+8 -2
View File
@@ -48,7 +48,7 @@
:scroll="{x: '100%'}" :scroll="{x: '100%'}"
@change="tableOnChange"> @change="tableOnChange">
<tempalte 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 v-if="operation.text === $t('docLibrary.cancelCollection')" class="text"> <span v-if="operation.text === $t('docLibrary.cancelCollection')" class="text">
@@ -65,7 +65,7 @@
{{ operation.text }} {{ operation.text }}
</span> </span>
</a> </a>
</tempalte> </template>
<!-- 详情--> <!-- 详情-->
<template slot="detailClick" slot-scope="{text, record}"> <template slot="detailClick" slot-scope="{text, record}">
@@ -82,6 +82,7 @@
ref="addFormRef" ref="addFormRef"
:url="url" :url="url"
:flag="'1'" :flag="'1'"
@ok="libraryAddFormOk"
/> />
<libraryPush <libraryPush
:url="url" :url="url"
@@ -227,6 +228,7 @@ export default {
this.$message.warning(this.$t('selectLeastOne')) this.$message.warning(this.$t('selectLeastOne'))
} }
}, },
// 表格的操作按钮点击
operationClick (operation, record) { operationClick (operation, record) {
if (this[operation.clickEvent]) { if (this[operation.clickEvent]) {
this[operation.clickEvent](record) this[operation.clickEvent](record)
@@ -497,6 +499,10 @@ export default {
this.spinning = false this.spinning = false
} }
} }
},
// 新增和编辑表单成功提交的回调
libraryAddFormOk () {
this.loadData()
} }
} }
} }
@@ -196,9 +196,9 @@ export default {
this.confirmLoading = false this.confirmLoading = false
this.$message.success(this.$t('operationSuccessful')) this.$message.success(this.$t('operationSuccessful'))
if (this.formInline.id) { if (this.formInline.id) {
this.$emit('searchGetData') this.$emit('ok')
} else { } else {
this.$emit('searchGetData') this.$emit('ok')
} }
} else { } else {
this.confirmLoading = false this.confirmLoading = false
+28 -69
View File
@@ -45,20 +45,20 @@
</div> </div>
</div> </div>
<div> <div>
<a-table <j-table
ref="table" ref="table"
size="middle" size="middle"
:components="drag(columns,'columns')" :columns="columns"
:data-source="dataSource"
rowKey="id"
:can-drag="true"
:loading="loading" :loading="loading"
:pagination="ipagination" :pagination="ipagination"
:scroll="{x: '100%',y:'calc(100vh - 280px)'}" :scroll="{x: '100%',y:'calc(100vh - 280px)'}"
rowKey="id"
:data-source="dataSource"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:columns="columns" @change="handleTableChange"
@change="tableOnChange"
> >
<span slot="operation" slot-scope="text,record"> <template v-slot:operation="{text,record}">
<a class="text-operation" @click="comparisonResultsClick(record)">{{$t('docTool.comparison.comparisonResults')}}</a> <a class="text-operation" @click="comparisonResultsClick(record)">{{$t('docTool.comparison.comparisonResults')}}</a>
<a class="text-operation" <a class="text-operation"
v-if="record.createBy === userInfoQuery.username || administrators" v-if="record.createBy === userInfoQuery.username || administrators"
@@ -71,28 +71,29 @@
<a class="text-operation" <a class="text-operation"
v-if="(record.createBy === userInfoQuery.username || administrators) && record.releaseState === 'draft'" v-if="(record.createBy === userInfoQuery.username || administrators) && record.releaseState === 'draft'"
@click="deleteData(record)">{{$t('delete')}}</a> @click="deleteData(record)">{{$t('delete')}}</a>
</span> </template>
<span slot="serialNumberRight" :title="text" slot-scope="text,record"> <template v-slot:serialNumberRight="{text,record}">
<a @click="serialNumberRightClick(record)">{{text}}</a> <a @click="serialNumberRightClick(record)" :title="text">{{text}}</a>
</span> </template>
<span slot="serialNumberLeft" :title="text" slot-scope="text,record"> <template v-slot:serialNumberLeft="{text,record}">
<a @click="serialNumberLeftClick(record)">{{text}}</a> <a @click="serialNumberLeftClick(record)" :title="text">{{text}}</a>
</span> </template>
</a-table> </j-table>
</div> </div>
</a-card> </a-card>
</template> </template>
<script> <script>
import { getAction, postAction, deleteAction } from '@/api/manage' import { postAction, deleteAction } from '@/api/manage'
import { ResizeHeader, ResizeColumnProvide } from '@/mixins/header'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import JDictSelectTag from '../../components/dict/JDictSelectTag' import JDictSelectTag from '@/components/dict/JDictSelectTag'
import JTable from '@/components/jero/JTable'
import { JeroListMixin } from '../../mixins/JeroListMixin'
export default { export default {
name: 'DocumentComparison', name: 'DocumentComparison',
mixins: [ResizeHeader, ResizeColumnProvide], components: { JDictSelectTag, JTable },
components: { JDictSelectTag }, mixins: [JeroListMixin],
data () { data () {
return { return {
// url传参严格按照当前命名 // url传参严格按照当前命名
@@ -103,7 +104,7 @@ export default {
loading: false, loading: false,
dataSource: [], dataSource: [],
selectedRowKeys: [], selectedRowKeys: [],
selectedRows: [], selectionRows: [],
downLoadFileUrl: window._CONFIG.domianPreviewURL + '/sys/common/download', downLoadFileUrl: window._CONFIG.domianPreviewURL + '/sys/common/download',
downLoadImgUrl: window._CONFIG.domianWebImgURL + '/sys/common/download', downLoadImgUrl: window._CONFIG.domianWebImgURL + '/sys/common/download',
/* 分页参数 */ /* 分页参数 */
@@ -213,50 +214,12 @@ export default {
} }
}) })
} }
this.getList() this.loadData(1)
}, },
methods: { methods: {
...mapGetters(['userInfo']), ...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 () { getList () {
this.dataSource = [{ id: 1, serialNumberLeft: '11' }] this.dataSource = [{ id: 1, serialNumberLeft: '11' }]
// 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 () { batchDelete () {
if (this.selectedRowKeys.length > 0) { if (this.selectedRowKeys.length > 0) {
@@ -264,11 +227,11 @@ export default {
content: this.$t('confirmBatchDeletion'), content: this.$t('confirmBatchDeletion'),
onOk: () => { onOk: () => {
const idList = [] const idList = []
const selectedRows = JSON.parse(JSON.stringify(this.selectedRows)) const selectionRows = JSON.parse(JSON.stringify(this.selectionRows))
for (let i = 0; i < selectedRows.length; i++) { for (let i = 0; i < selectionRows.length; i++) {
if (selectedRows[i].createBy === this.userInfoQuery.username && if (selectionRows[i].createBy === this.userInfoQuery.username &&
selectedRows[i].releaseState === 'draft') { selectionRows[i].releaseState === 'draft') {
idList.push(selectedRows[i].id) idList.push(selectionRows[i].id)
} }
} }
if (idList.length > 0) { if (idList.length > 0) {
@@ -290,10 +253,6 @@ export default {
this.$message.warning(this.$t('selectLeastOne')) this.$message.warning(this.$t('selectLeastOne'))
} }
}, },
onSelectChange (value, record) {
this.selectedRowKeys = value
this.selectedRows = record
},
// 对比结果按钮点击 // 对比结果按钮点击
comparisonResultsClick (item) { comparisonResultsClick (item) {
if (item.createBy === this.userInfoQuery.username && item.releaseState === 'draft') { if (item.createBy === this.userInfoQuery.username && item.releaseState === 'draft') {
+55 -16
View File
@@ -21,17 +21,47 @@
</div> </div>
</div> </div>
<div class="splitting-table"> <div class="splitting-table">
<table-data <j-table
:url="url" v-if="columns && columns.length > 0"
:flag="'3'" :columns="columns"
:operationList="operationList" :dataSource="dataSource"
showAction :can-drag="true"
ref="tableData" rowKey="id"
@onSelectChange="onSelectChange" :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
@backDocument="backDocument" :pagination="ipagination"
@deleteDetail="deleteDetail" :scroll="{x: '100%'}"
@detailClick="detailClick" @change="tableOnChange">
></table-data>
<template slot="operation" slot-scope="{text, record}">
<a v-for="(operation, index) in operationList" :key="index" @click="operationClick(operation,record)">
<!-- v-has="operation.has"-->
<span class="text">
{{ operation.text }}
</span>
</a>
</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>
<!-- <table-data-->
<!-- :url="url"-->
<!-- :flag="'3'"-->
<!-- :operationList="operationList"-->
<!-- showAction-->
<!-- ref="tableData"-->
<!-- @onSelectChange="onSelectChange"-->
<!-- @backDocument="backDocument"-->
<!-- @deleteDetail="deleteDetail"-->
<!-- @detailClick="detailClick"-->
<!-- ></table-data>-->
</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>
@@ -40,16 +70,18 @@
<script> <script>
import Search from '@/components/customField/Search' import Search from '@/components/customField/Search'
import TableData from '@/components/customField/TableData' 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 { httpAction, getAction } from '@/api/manage'
import { ConfigurableTableMixin } from '@/mixins/ConfigurableTableMixin'
export default { export default {
name: 'DocumentSplit', name: 'DocumentSplit',
components: { Search, TableData, SplitText, ImportResult }, components: { Search, JTable, SplitText, ImportResult },
mixins: [ConfigurableTableMixin],
data () { data () {
return { return {
selectedRowKeys: [], selectedRowKeys: [],
@@ -73,11 +105,13 @@ export default {
url: { url: {
tableHeader: 'split/sarFileSplitInfo/getHeader', // 表格头部字段 tableHeader: 'split/sarFileSplitInfo/getHeader', // 表格头部字段
searchList: 'split/sarFileSplitInfo/queryCondition', // 搜索字段 searchList: 'split/sarFileSplitInfo/queryCondition', // 搜索字段
tableList: 'split/sarFileSplitInfo/page', // 表格数据 list: 'split/sarFileSplitInfo/page', // 表格数据
deleteBatch: '', // 批量删除 deleteBatch: '', // 批量删除
deleteUrl: '', deleteUrl: '',
backDocument: '' // 回传至文档库 backDocument: '' // 回传至文档库
} },
showAction: true,
flag: '3'
} }
}, },
methods: { methods: {
@@ -114,6 +148,11 @@ export default {
this.$message.warning(this.$t('selectLeastOne')) this.$message.warning(this.$t('selectLeastOne'))
} }
}, },
operationClick (operation, record) {
if (this[operation.clickEvent]) {
this[operation.clickEvent](record)
}
},
// 表格操作列的删除 // 表格操作列的删除
deleteDetail (val) { deleteDetail (val) {
this.$confirm({ this.$confirm({
@@ -0,0 +1,127 @@
<template>
<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" v-if="title === $t('docTool.comparison.fullTextComments')">
<div class="title-text" :title="$t('docTool.comparison.fullTextComments')">
<span class="title-text-text">{{$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" v-if="title === $t('docTool.comparison.comparativeComments')">
<div class="title-text" :title="$t('docTool.comparison.comparativeComments')">
<span class="title-text-text">{{$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>
</template>
<script>
import { putAction } from '@/api/manage'
export default {
name: 'ComparisonResultEditModal',
data () {
return {
title: '',
visible: false,
confirmLoading: false,
formInlineText: {},
rulesText: {}
}
},
methods: {
open (form) {
this.initData()
this.visible = true
this.formInlineText = Object.assign({}, form)
},
initData () {
this.$nextTick(() => {
this.$refs.ruleFormText.clearValidate()
})
},
// 发表评论弹框的提交按钮点击
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.$emit('ok')
} 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.$emit('ok')
} else {
this.$message.warning(this.$t('operationFailed'))
}
}).finally(() => {
this.confirmLoading = false
})
}
}
}
</script>
<style scoped lang="less">
@import'~@assets/less/common.less';
</style>
@@ -141,48 +141,8 @@
</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"/> <commentList ref="commentListRef"/>
<comparison-result-edit-modal ref="comparisonResultEditModal" @ok="getData"></comparison-result-edit-modal>
<div id="images"> <div id="images">
<div class="image" v-viewer="{movable: false}"> <div class="image" v-viewer="{movable: false}">
<img v-show="image" :src="imageUrl"> <img v-show="image" :src="imageUrl">
@@ -192,15 +152,16 @@
</template> </template>
<script> <script>
import { getAction, downloadFile, deleteAction, putAction, getFileAccessHttpUrl } from '@/api/manage' import { getAction, downloadFile, deleteAction, getFileAccessHttpUrl } from '@/api/manage'
import { previewPdf } from '@/utils/previewPdf' import { previewPdf } from '@/utils/previewPdf'
import { Base64 } from 'js-base64' import { Base64 } from 'js-base64'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import CommentList from './CommentList' import CommentList from './CommentList'
import ComparisonResultEditModal from './ComparisonResultEditModal'
export default { export default {
name: 'ComparisonResults', name: 'ComparisonResults',
components: { CommentList }, components: { CommentList, ComparisonResultEditModal },
data () { data () {
return { return {
loading: false, loading: false,
@@ -208,13 +169,8 @@ export default {
isVarianceOne: false, isVarianceOne: false,
isVarianceTwo: false, isVarianceTwo: false,
isVarianceThe: false, isVarianceThe: false,
confirmLoading: false,
downLoadFileUrl: window._CONFIG.domianPreviewURL + '/sys/common/download', downLoadFileUrl: window._CONFIG.domianPreviewURL + '/sys/common/download',
downLoadImgUrl: window._CONFIG.domianWebImgURL + '/sys/common/download', downLoadImgUrl: window._CONFIG.domianWebImgURL + '/sys/common/download',
visible: false,
formInlineText: {},
rulesText: {},
title: '',
indeterminate: false, indeterminate: false,
checkAll: false, checkAll: false,
isDisplay: false, isDisplay: false,
@@ -367,76 +323,15 @@ export default {
this.indeterminate = 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) { fullTextEdit (item) {
this.visible = true this.$refs.comparisonResultEditModal.title = this.$t('docTool.comparison.fullTextComments')
this.title = this.$t('docTool.comparison.fullTextComments') this.$refs.comparisonResultEditModal.open({ comment: this.resultData.comments || '' })
this.formInlineText.comment = this.resultData.comments || ''
this.formInlineText = { ...this.formInlineText }
this.$nextTick(() => {
this.$refs.ruleFormText.clearValidate()
})
}, },
// 对比结果编辑按钮点击 // 对比结果编辑按钮点击
comparaEdit (item) { comparaEdit (item) {
this.visible = true this.$refs.comparisonResultEditModal.title = this.$t('docTool.comparison.comparativeComments')
this.title = this.$t('docTool.comparison.comparativeComments') this.$refs.comparisonResultEditModal.open(item)
this.formInlineText = JSON.parse(JSON.stringify(item))
this.formInlineText = { ...this.formInlineText }
this.$nextTick(() => {
this.$refs.ruleFormText.clearValidate()
})
}, },
// 对比结果删除按钮点击 // 对比结果删除按钮点击
comparaDelete (val) { comparaDelete (val) {
@@ -33,10 +33,10 @@
</span> </span>
</a-row> </a-row>
</a-form> </a-form>
<a-table <j-table
ref="table" ref="table"
size="middle" size="middle"
:components="drag(columns,'columns')" :can-drag="true"
:loading="loadingLeft" :loading="loadingLeft"
:pagination="false" :pagination="false"
:scroll="{x: '100%',y:340}" :scroll="{x: '100%',y:340}"
@@ -46,7 +46,7 @@
:columns="columns" :columns="columns"
@change="tableChangeLeft" @change="tableChangeLeft"
> >
</a-table> </j-table>
<div class="box-button-standard"> <div class="box-button-standard">
<span class="box-button-standard-left" :title="$t('docTool.comparison.selectedStandard')"> <span class="box-button-standard-left" :title="$t('docTool.comparison.selectedStandard')">
{{$t('docTool.comparison.selectedStandard')}} {{$t('docTool.comparison.selectedStandard')}}
@@ -82,20 +82,20 @@
</span> </span>
</a-row> </a-row>
</a-form> </a-form>
<a-table <j-table
ref="table" ref="table"
size="middle" size="middle"
:components="drag(columns,'columns')" :can-drag="true"
:loading="loadingRight" :loading="loadingRight"
:pagination="false" :pagination="false"
:scroll="{x: '100%',y:340}" :scroll="{x: '100%',y:340}"
rowKey="id" rowKey="id"
:data-source="dataSourceRight" :data-source="dataSourceRight"
:row-selection="{ selectedRowKeys: selectedRowKeysRight, onChange: onSelectChangeRight, columnTitle:' ', type: 'radio'}" :row-selection="{ selectedRowKeys: selectedRowKeysRight, onChange: onSelectChangeRight, columnTitle:' ', type: 'radio'}"
:columns="columns" :columns="tableColumns"
@change="tableChangeRight" @change="tableChangeRight"
> >
</a-table> </j-table>
<div class="box-button-standard"> <div class="box-button-standard">
<span class="box-button-standard-left" :title="$t('docTool.comparison.selectedStandard')"> <span class="box-button-standard-left" :title="$t('docTool.comparison.selectedStandard')">
{{$t('docTool.comparison.selectedStandard')}} {{$t('docTool.comparison.selectedStandard')}}
@@ -139,15 +139,15 @@
</template> </template>
<script> <script>
import { getAction, postAction, downloadFile, getFileAccessHttpUrl } from '@/api/manage' import JTable from '@/components/jero/JTable'
import { getAction, downloadFile, getFileAccessHttpUrl } from '@/api/manage'
import { previewPdf } from '@/utils/previewPdf' import { previewPdf } from '@/utils/previewPdf'
import { Base64 } from 'js-base64' import { Base64 } from 'js-base64'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import { ResizeHeader, ResizeColumnProvide } from '@/mixins/header'
export default { export default {
name: 'InitiateComparison', name: 'InitiateComparison',
mixins: [ResizeHeader, ResizeColumnProvide], components: { JTable },
data () { data () {
return { return {
loading: false, loading: false,
@@ -225,7 +225,7 @@ export default {
width: 79 width: 79
}, },
{ {
title: this.$t('TextStatus'), title: this.$t('docTool.comparison.textStatus'),
align: 'left', align: 'left',
ellipsis: true, ellipsis: true,
dataIndex: 'fileType', dataIndex: 'fileType',
@@ -239,7 +239,7 @@ export default {
width: 79 width: 79
} }
], ],
tablecolumns: [ tableColumns: [
{ {
title: this.$t('number'), title: this.$t('number'),
align: 'left', align: 'left',
@@ -263,7 +263,7 @@ export default {
width: 79 width: 79
}, },
{ {
title: this.$t('TextStatus'), title: this.$t('docTool.comparison.textStatus'),
align: 'left', align: 'left',
ellipsis: true, ellipsis: true,
dataIndex: 'fileType', dataIndex: 'fileType',
+12 -26
View File
@@ -26,7 +26,7 @@
<a-input class="box-input" <a-input class="box-input"
:disabled="disabled" :disabled="disabled"
v-model="formInline[item.db_field_name]" v-model="formInline[item.db_field_name]"
:placeholder="$t('PleaseEnter')+item.db_field_txt"/> :placeholder="$t('pleaseEnter')+item.db_field_txt"/>
</a-form-model-item> </a-form-model-item>
</div> </div>
<div class="box-title-text" v-else-if="item.field_show_type === '2'"> <div class="box-title-text" v-else-if="item.field_show_type === '2'">
@@ -36,7 +36,7 @@
</div> </div>
<a-form-model-item class="item-model" :prop="item.db_field_name"> <a-form-model-item class="item-model" :prop="item.db_field_name">
<a-input-number class="box-input" <a-input-number class="box-input"
:placeholder="$t('PleaseEnter')+item.db_field_txt" :placeholder="$t('pleaseEnter')+item.db_field_txt"
:disabled="disabled" :disabled="disabled"
:min="0" :min="0"
v-model="formInline[item.db_field_name]" :max="99999999"/> v-model="formInline[item.db_field_name]" :max="99999999"/>
@@ -52,7 +52,7 @@
<j-dict-select-tag class="box-input" v-model="formInline[item.db_field_name]" <j-dict-select-tag class="box-input" v-model="formInline[item.db_field_name]"
:disabled="disabled" :disabled="disabled"
@input="handleInput(item.db_field_name)" @input="handleInput(item.db_field_name)"
:placeholder="$t('PleaseSelect')+item.db_field_txt" :placeholder="$t('pleaseSelect')+item.db_field_txt"
:type="'select'" :type="'select'"
:triggerChange="false" :dictCode="item.dict_field"/> :triggerChange="false" :dictCode="item.dict_field"/>
</a-form-model-item> </a-form-model-item>
@@ -65,7 +65,7 @@
<a-form-model-item class="item-model-multi" :prop="item.db_field_name"> <a-form-model-item class="item-model-multi" :prop="item.db_field_name">
<j-multi-select-tag class="box-input" v-model="formInline[item.db_field_name]" <j-multi-select-tag class="box-input" v-model="formInline[item.db_field_name]"
:disabled="disabled" :disabled="disabled"
:placeholder="$t('PleaseSelect')+item.db_field_txt" :placeholder="$t('pleaseSelect')+item.db_field_txt"
:type="'select'" :type="'select'"
:triggerChange="false" :dictCode="item.dict_field"/> :triggerChange="false" :dictCode="item.dict_field"/>
</a-form-model-item> </a-form-model-item>
@@ -117,7 +117,7 @@
</div> </div>
<a-form-model-item class="item-model" :prop="item.db_field_name"> <a-form-model-item class="item-model" :prop="item.db_field_name">
<a-textarea <a-textarea
:placeholder="$t('PleaseEnter')+item.db_field_txt" :placeholder="$t('pleaseEnter')+item.db_field_txt"
:disabled="disabled" :disabled="disabled"
v-model="formInline[item.db_field_name]" :rows="4"/> v-model="formInline[item.db_field_name]" :rows="4"/>
</a-form-model-item> </a-form-model-item>
@@ -144,7 +144,7 @@
:disabled="disabled" :disabled="disabled"
class="box-input" class="box-input"
@input="handleInput(item.db_field_name)" @input="handleInput(item.db_field_name)"
:placeholder="$t('PleaseSelect')+item.db_field_txt" :placeholder="$t('pleaseSelect')+item.db_field_txt"
:type="'radio'" :triggerChange="false" :dictCode="item.dict_field"/> :type="'radio'" :triggerChange="false" :dictCode="item.dict_field"/>
</a-form-model-item> </a-form-model-item>
</div> </div>
@@ -162,7 +162,7 @@
style="width: 100%" style="width: 100%"
:tree-data="item.tree" :tree-data="item.tree"
tree-checkable tree-checkable
:placeholder="$t('PleaseSelect')+item.db_field_txt" :placeholder="$t('pleaseSelect')+item.db_field_txt"
@change="changeTree" @change="changeTree"
/> />
@@ -176,7 +176,7 @@
<a-form-model-item class="item-model-multi" :prop="item.db_field_name"> <a-form-model-item class="item-model-multi" :prop="item.db_field_name">
<j-multi-select-tag class="box-input" v-model="formInline[item.db_field_name]" <j-multi-select-tag class="box-input" v-model="formInline[item.db_field_name]"
:disabled="disabled" :disabled="disabled"
:placeholder="$t('PleaseSelect')+item.db_field_txt" :placeholder="$t('pleaseSelect')+item.db_field_txt"
:type="'checkbox'" :type="'checkbox'"
:triggerChange="false" :dictCode="item.dict_field"/> :triggerChange="false" :dictCode="item.dict_field"/>
</a-form-model-item> </a-form-model-item>
@@ -253,14 +253,10 @@ export default {
return { return {
formTitle: '', formTitle: '',
title: this.$t('newClause'), title: this.$t('newClause'),
titlePreImg: '',
contentList: [], contentList: [],
confirmLoading: false,
visible: false, visible: false,
addIndex: '', addIndex: '',
disabled: false, disabled: false,
splitVisible: false,
itemSrc: '', // 预览图片
formInline: {}, formInline: {},
isFormInline: false, isFormInline: false,
dataList: [], dataList: [],
@@ -272,7 +268,6 @@ export default {
token: Vue.ls.get(ACCESS_TOKEN), token: Vue.ls.get(ACCESS_TOKEN),
submitFlag: false, submitFlag: false,
deleteIds: [], deleteIds: [],
numberFlag: false,
itemVal: {}, itemVal: {},
contentTrees: '', contentTrees: '',
isTableEdit: false isTableEdit: false
@@ -399,15 +394,10 @@ export default {
.then((res) => { .then((res) => {
if (res.data.success) { if (res.data.success) {
this.loading = false this.loading = false
this.$message.success(this.$t('OperationSuccessful')) this.$message.success(this.$t('operationSuccessful'))
this.visible = false this.visible = false
// this.$emit('closeVisible',false) // this.$emit('closeVisible',false)
const queryParam = { this.$emit('sumber')
menu_id: this.menuId,
info_id: this.infoId
}
this.$emit('sumber', queryParam)
} else { } else {
this.$message.warning(this.$t('operationFailed')) this.$message.warning(this.$t('operationFailed'))
} }
@@ -505,10 +495,6 @@ export default {
this.formInline[this.uploadName] = attIdList.join(',') this.formInline[this.uploadName] = attIdList.join(',')
this.formInline = { ...this.formInline } this.formInline = { ...this.formInline }
}, },
// 关闭上传
closeHandle () {
this.splitVisible = false
},
handleInput (value) { handleInput (value) {
this.$nextTick(() => { this.$nextTick(() => {
this.formInline = { ...this.formInline } this.formInline = { ...this.formInline }
@@ -571,11 +557,11 @@ export default {
this.$set(this, 'rules', rules) this.$set(this, 'rules', rules)
// console.log('rules',this.rules) // console.log('rules',this.rules)
this.isFormInline = true this.isFormInline = true
this.confirmLoading = false this.loading = false
// console.log('this.column',this.column) // console.log('this.column',this.column)
}, },
getForm (callBack) { getForm (callBack) {
this.confirmLoading = true this.loading = true
const params = { const params = {
flag: this.flag, flag: this.flag,
type: this.type type: this.type
+126 -117
View File
@@ -68,7 +68,7 @@
<div class="div-right-wrapper"> <div class="div-right-wrapper">
<div class="right-search-header table-page-search-wrapper"> <div class="right-search-header table-page-search-wrapper">
<search :flag="'4'" :url="url" :infoId="$route.query.infoId" <search :flag="'4'" :url="url" :infoId="$route.query.infoId"
:menuId="menuId" @resetSearch="resetSearch" @queryParams="queryParamsValues" /> :menuId="menuId" @reset="searchReset" @search="searchQuery" />
</div> </div>
<div class="table-operator"> <div class="table-operator">
<div class="operator-text" @click="handleCopyManage"> <div class="operator-text" @click="handleCopyManage">
@@ -84,7 +84,7 @@
{{ $t('add') }} {{ $t('add') }}
</div> </div>
<div class="operator-text upload-split" <div class="operator-text upload-split"
v-if="$route.query.createBy === userData.username || administrators" v-if="isCanOperate"
@click="handleImportManage" v-has="'split:sarFileSplitItems:import'"> @click="handleImportManage" v-has="'split:sarFileSplitItems:import'">
<a-icon type="import" :rotate="-90" v-if="uploadMenuId === undefined || uploadMenuId === ''" /> <a-icon type="import" :rotate="-90" v-if="uploadMenuId === undefined || uploadMenuId === ''" />
{{ (uploadMenuId === '' || uploadMenuId === undefined) ? $t('import') : '' }} {{ (uploadMenuId === '' || uploadMenuId === undefined) ? $t('import') : '' }}
@@ -97,44 +97,65 @@
{{ $t('export') }} {{ $t('export') }}
</div> </div>
<div class="operator-text" @click="handleDownManage" <div class="operator-text" @click="handleDownManage"
v-if="$route.query.createBy === userData.username || administrators" v-if="isCanOperate"
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="isCanOperate"
v-has="'split:sarFileSplitItems:merge'"> v-has="'split:sarFileSplitItems:merge'">
<a-icon type="snippets" /> <a-icon type="snippets" />
{{ $t('docTool.split.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="isCanOperate"
v-has="'split:sarFileSplitItems:set'"> v-has="'split:sarFileSplitItems:set'">
<a-icon type="setting" /> <a-icon type="setting" />
{{ $t('docTool.split.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="isCanOperate"
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">
<table-data <j-table
ref="splitDetailTable" v-if="columns && columns.length > 0"
:url="url" :columns="columns"
:flag="'4'" :dataSource="dataSource"
:operationList="operationList" :can-drag="true"
:infoId="$route.query.infoId" rowKey="id"
:menuId="menuId" :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:showAction="$route.query.createBy === userData.username || administrators ? true :false" :pagination="ipagination"
@onSelectChange="onSelectChange" :scroll="{x: '100%'}"
@deleteClick="deleteClick" @change="tableOnChange">
@editClick="editClick"
@showContent="showContent" <template slot="operation" slot-scope="{text, record}">
></table-data> <a v-for="(operation, index) in operationList" :key="index" @click="operationClick(operation,record)">
<!-- v-has="operation.has"-->
<span class="text">
{{ operation.text }}
</span>
</a>
</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>
<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>
</template>
</j-table>
</div> </div>
</div> </div>
</div> </div>
@@ -154,7 +175,7 @@
<script> <script>
import Search from '@/components/customField/Search' import Search from '@/components/customField/Search'
import TableData from '@/components/customField/TableData' import JTable from '@/components/jero/JTable'
// 条款添加 // 条款添加
import SplitAddForm from './SplitAddForm' import SplitAddForm from './SplitAddForm'
// 条款内容弹框 // 条款内容弹框
@@ -168,17 +189,19 @@ import { ACCESS_TOKEN } from '@/store/mutation-types'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import { postAction, getAction, downloadFile } from '@/api/manage' import { postAction, getAction, downloadFile } from '@/api/manage'
import moment from 'moment' import moment from 'moment'
import { ConfigurableTableMixin } from '../../../mixins/ConfigurableTableMixin'
export default { export default {
name: 'SplitDetail', name: 'SplitDetail',
components: { components: {
Search, Search,
TableData, JTable,
SplitAddForm, SplitAddForm,
SplitClauseDetail, SplitClauseDetail,
SplitDetailNodeAdd, SplitDetailNodeAdd,
SplitDetailBatchSetting SplitDetailBatchSetting
}, },
mixins: [ConfigurableTableMixin],
data () { data () {
return { return {
userData: {}, userData: {},
@@ -215,8 +238,8 @@ export default {
], ],
url: { url: {
tableHeader: 'split/sarFileSplitItems/getHeader', // 表格头部字段 tableHeader: 'split/sarFileSplitItems/getHeader', // 表格头部字段
searchList: 'split/sarFileSplitItems/queryCondition', // 搜索字段 getSearchList: 'split/sarFileSplitItems/queryCondition', // 搜索字段
tableList: 'split/sarFileSplitItems/getSplitItemsByPage', // 表格数据 list: 'split/sarFileSplitItems/getSplitItemsByPage', // 表格数据
getAddForm: 'split/sarFileSplitItems/getForm', // 表单的字段 getAddForm: 'split/sarFileSplitItems/getForm', // 表单的字段
getDocumentInfo: 'split/sarFileSplitItems/getSplitItemsById', getDocumentInfo: 'split/sarFileSplitItems/getSplitItemsById',
importZipUrl: '/split/sarFileSplitItems/importSplitItems' // 导入 importZipUrl: '/split/sarFileSplitItems/importSplitItems' // 导入
@@ -228,7 +251,20 @@ export default {
moveUpFlag: false, moveUpFlag: false,
fullWidth: '', fullWidth: '',
parameter: {}, parameter: {},
administrators: false administrators: false,
showAction: this.isCanOperate,
flag: '4' // 查询要用到
}
},
computed: {
isCanOperate () {
return !!(this.$route.query.createBy === this.userData.username || this.administrators)
},
filters () {
return {
menu_id: this.menuId,
info_id: this.infoId
}
} }
}, },
mounted () { mounted () {
@@ -383,13 +419,9 @@ export default {
this.menuId = selectedKeys[0] this.menuId = selectedKeys[0]
this.uploadMenuId = selectedKeys[0] this.uploadMenuId = selectedKeys[0]
this.selectedKeys = selectedKeys this.selectedKeys = selectedKeys
const queryParam = {
menu_id: this.menuId,
info_id: this.infoId
}
this.parameter.info_id = this.infoId this.parameter.info_id = this.infoId
this.parameter.menu_id = this.menuId this.parameter.menu_id = this.menuId
this.$refs.splitDetailTable.$emit('searchQuery', JSON.parse(JSON.stringify(queryParam))) this.loadData()
}, },
// 树形新增 // 树形新增
orgAdd () { orgAdd () {
@@ -403,11 +435,7 @@ export default {
nodeAddOk () { nodeAddOk () {
this.expandedKeys.push(this.nodeItem.id) this.expandedKeys.push(this.nodeItem.id)
this.loadMenuData() this.loadMenuData()
const queryParam = { this.loadData()
menu_id: this.menuId,
info_id: this.infoId
}
this.$refs.splitDetailTable.$emit('searchQuery', JSON.parse(JSON.stringify(queryParam)))
}, },
// 修改节点完成后的回调 // 修改节点完成后的回调
nodeUpdateOk (expandId) { nodeUpdateOk (expandId) {
@@ -424,11 +452,7 @@ export default {
if (res.success) { if (res.success) {
this.$message.success(this.$t('operationSuccessful')) this.$message.success(this.$t('operationSuccessful'))
this.loadMenuData() this.loadMenuData()
const queryParam = { this.loadData()
menu_id: this.menuId,
info_id: this.infoId
}
this.$refs.splitDetailTable.$emit('searchQuery', JSON.parse(JSON.stringify(queryParam)))
} else { } else {
this.$message.warning(this.$t('operationFailed')) this.$message.warning(this.$t('operationFailed'))
} }
@@ -451,11 +475,7 @@ export default {
if (res.success) { if (res.success) {
this.$message.success(this.$t('operationSuccessful')) this.$message.success(this.$t('operationSuccessful'))
this.loadMenuData() this.loadMenuData()
const queryParam = { this.loadData()
menu_id: this.menuId,
info_id: this.infoId
}
this.$refs.splitDetailTable.$emit('searchQuery', JSON.parse(JSON.stringify(queryParam)))
} else { } else {
this.$message.warning(this.$t('operationFailed')) this.$message.warning(this.$t('operationFailed'))
} }
@@ -476,12 +496,7 @@ export default {
if (res.success) { if (res.success) {
this.$message.success(this.$t('operationSuccessful')) this.$message.success(this.$t('operationSuccessful'))
this.loadMenuData() this.loadMenuData()
const queryParam = { this.loadData()
menu_id: this.menuId,
info_id: this.infoId
}
this.$refs.splitDetailTable.$emit('searchQuery', JSON.parse(JSON.stringify(queryParam)))
} else { } else {
this.$message.warning(this.$t('operationFailed')) this.$message.warning(this.$t('operationFailed'))
} }
@@ -490,6 +505,56 @@ export default {
onContextMenuClick (treeKey, menuKey) { onContextMenuClick (treeKey, menuKey) {
// console.log(`treeKey: ${treeKey}, menuKey: ${menuKey}`); // console.log(`treeKey: ${treeKey}, menuKey: ${menuKey}`);
}, },
// 表格操作列按钮的点击
operationClick (operation, record) {
if (this[operation.clickEvent]) {
this[operation.clickEvent](record)
}
},
/**
* 处理表头数据
* @param columns
* @returns {*[]}
*/
dealColumns (columns) {
const tempColumns = []
columns.forEach(item => {
// 可点击项加入插槽
if (item.click === 'true') {
item.scopedSlots = {
customRender: 'detailClick'
}
} else if (item.urlClick === 'true') {
item.scopedSlots = {
customRender: 'urlClick'
}
} else if (item.db_field_name === 'iterms_conditions') {
// 拆分文档详情页的条款内容点击可预览
item.scopedSlots = {
customRender: 'showContent'
}
}
// 是否可排序
item.sorter = item.sort === 'true'
item.width = 215
item.title = item.db_field_txt
item.dataIndex = item.db_field_name
item.align = 'left'
tempColumns.push(item)
})
if (this.showAction && this.operateColumn) {
let width = 0
if (this.operationList.length > 0) {
for (let i = 0; i < this.operationList.length; i++) {
width += this.getTextWith(this.operationList[i].text)
}
}
const operateColumn = JSON.parse(JSON.stringify(this.operateColumn))
operateColumn.width = width
tempColumns.push(operateColumn)
}
return tempColumns
},
// 清空按钮 // 清空按钮
resetSearch () { resetSearch () {
this.menuId = '' this.menuId = ''
@@ -520,13 +585,8 @@ export default {
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.loadData()
this.loadMenuData() this.loadMenuData()
const queryParam = { this.loadData()
menu_id: this.menuId,
info_id: this.infoId
}
this.$refs.splitDetailTable.$emit('searchGetData', JSON.parse(JSON.stringify(queryParam)))
} else { } else {
this.$message.warning(this.$t('operationFailed')) this.$message.warning(this.$t('operationFailed'))
} }
@@ -569,13 +629,8 @@ export default {
// 上传成功 // 上传成功
uploadSuccess (data, status) { uploadSuccess (data, status) {
if (status === 'success') { if (status === 'success') {
const queryParam = {
menu_id: this.menuId,
info_id: this.infoId
}
this.loadMenuData() this.loadMenuData()
this.$refs.splitDetailTable.$emit('searchGetData', JSON.parse(JSON.stringify(queryParam))) this.loadData()
} }
const attIdList = [] const attIdList = []
if (data && data.length > 0) { if (data && data.length > 0) {
@@ -612,10 +667,8 @@ export default {
downloadFile('split/sarFileSplitItems/exportSplitInfoZip', name, query, this.selectClear) downloadFile('split/sarFileSplitItems/exportSplitInfoZip', name, query, this.selectClear)
}, },
selectClear () { selectClear () {
this.$refs.splitDetailTabel.selectedRowKeys = []
this.selectedRowKeys = [] this.selectedRowKeys = []
this.selectedRows = [] this.selectedRows = []
this.selecIds = []
}, },
// 模板下载 // 模板下载
handleDownManage () { handleDownManage () {
@@ -637,11 +690,7 @@ export default {
this.$message.success(this.$t('operationSuccessful')) this.$message.success(this.$t('operationSuccessful'))
this.selectClear() this.selectClear()
this.loadMenuData() this.loadMenuData()
const queryParam = { this.loadData()
menu_id: this.menuId,
info_id: this.infoId
}
this.$refs.splitDetailTable.$emit('searchGetData', JSON.parse(JSON.stringify(queryParam)))
this.selectedRowKeys = [] this.selectedRowKeys = []
} else { } else {
this.$message.warning(this.$t('operationFailed')) this.$message.warning(this.$t('operationFailed'))
@@ -663,18 +712,14 @@ export default {
// 批量设置完成的回调 // 批量设置完成的回调
batchSettingOk () { batchSettingOk () {
this.selectClear() this.selectClear()
const queryParam = { this.loadData()
menu_id: this.menuId,
info_id: this.infoId
}
this.$refs.splitDetailTable.$emit('searchGetData', JSON.parse(JSON.stringify(queryParam)))
}, },
// 批量删除 // 批量删除
handleBatCancel () { handleBatCancel () {
const params = { const params = {
ids: this.selecIds.join(',') ids: this.selectedRowKeys.join(',')
} }
if (this.selecIds && this.selecIds.length > 0) { if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
this.$confirm({ this.$confirm({
title: this.$t('confirmBatchDeletion'), title: this.$t('confirmBatchDeletion'),
content: '', content: '',
@@ -683,13 +728,12 @@ export default {
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 = { this.filter = {
menu_id: this.menuId, menu_id: this.menuId,
info_id: this.infoId info_id: this.infoId
} }
this.$refs.splitDetailTable.$emit('searchGetData', JSON.parse(JSON.stringify(queryParam))) this.loadData()
this.selectClear() this.selectClear()
// eventBUs.$emit('searchReset')
} else { } else {
this.$message.warning(res.data.message) this.$message.warning(res.data.message)
} }
@@ -712,8 +756,8 @@ export default {
}) })
}, },
// 保存成功 // 保存成功
sumber (queryParam) { sumber () {
this.$refs.splitDetailTable.$emit('searchGetData', JSON.parse(JSON.stringify(queryParam))) this.loadData()
this.loadMenuData() this.loadMenuData()
}, },
// 删除 // 删除
@@ -729,12 +773,7 @@ export default {
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 = { this.loadData()
menu_id: this.menuId,
info_id: this.infoId
}
this.$refs.splitDetailTable.$emit('searchGetData', JSON.parse(JSON.stringify(queryParam)))
} else { } else {
this.$message.warning(this.$t('operationFailed')) this.$message.warning(this.$t('operationFailed'))
} }
@@ -851,36 +890,6 @@ export default {
<style scoped lang="less"> <style scoped lang="less">
@import '~@assets/less/common.less'; @import '~@assets/less/common.less';
/deep/ .ant-table-body {
overflow: hidden !important;
}
.add-menus {
.ant-modal-wrap {
.ant-modal-footer {
text-align: center;
}
}
}
.show-setting {
.ant-modal {
min-width: 700px;
}
.ant-select-dropdown--multiple {
max-height: 39vh !important;
}
.ant-modal-body {
overflow-y: visible !important;
}
.ant-modal-footer {
text-align: center;
}
}
@media screen and (min-width: 600px) and (max-width: 1600px) { @media screen and (min-width: 600px) and (max-width: 1600px) {
.operator-text { .operator-text {
margin-right: 20px !important; margin-right: 20px !important;
@@ -80,6 +80,22 @@ export default {
} }
</script> </script>
<style scoped> <style scoped lang="less">
.show-setting {
.ant-modal {
min-width: 700px;
}
.ant-select-dropdown--multiple {
max-height: 39vh !important;
}
.ant-modal-body {
overflow-y: visible !important;
}
.ant-modal-footer {
text-align: center;
}
}
</style> </style>
@@ -154,6 +154,12 @@ export default {
} }
</script> </script>
<style scoped> <style scoped lang="less">
.add-menus {
.ant-modal-wrap {
.ant-modal-footer {
text-align: center;
}
}
}
</style> </style>
+20 -13
View File
@@ -7,7 +7,7 @@
width="1100" width="1100"
> >
<div class="table-page-search-wrapper"> <div class="table-page-search-wrapper">
<search :url="url" flag="condition" :minLength="2"></search> <search :url="url" flag="condition" :minLength="2" @search="searchQuery" @reset="searchReset"></search>
</div> </div>
<div class="operator-select"> <div class="operator-select">
<a-row :gutter="24"> <a-row :gutter="24">
@@ -50,14 +50,17 @@
</a-col> </a-col>
</a-row> </a-row>
</div> </div>
<table-data <j-table
flag="header" v-if="columns && columns.length > 0"
selectionType="radio" :columns="columns"
:url="url" :dataSource="dataSource"
:type="type" :can-drag="true"
:operationList="operationList" rowKey="id"
@onSelectChange="onSelectChange" :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type: 'radio' }"
/> :pagination="ipagination"
:scroll="{x: '100%'}"
@change="tableOnChange">
</j-table>
<div class="drawer-bootom-button"> <div class="drawer-bootom-button">
<a-button @click="cancelSplit" style='margin-right: 15px'>{{$t('cancel')}}</a-button> <a-button @click="cancelSplit" style='margin-right: 15px'>{{$t('cancel')}}</a-button>
<a-button type="primary" :loading="loading" @click="submitSplit">{{$t('submit')}}</a-button> <a-button type="primary" :loading="loading" @click="submitSplit">{{$t('submit')}}</a-button>
@@ -67,12 +70,14 @@
<script> <script>
import Search from '@/components/customField/Search' import Search from '@/components/customField/Search'
import TableData from '@/components/customField/TableData' import JTable from '@/components/jero/JTable'
import { httpAction } from '@/api/manage' import { httpAction } from '@/api/manage'
import { ConfigurableTableMixin } from '../../../mixins/ConfigurableTableMixin'
export default { export default {
name: 'SplitText', name: 'SplitText',
components: { Search, TableData }, components: { Search, JTable },
mixins: [ConfigurableTableMixin],
data () { data () {
return { return {
visible: false, visible: false,
@@ -81,13 +86,15 @@ export default {
selectedRowKeys: [], selectedRowKeys: [],
selectedRows: [], selectedRows: [],
url: { url: {
tableHeader: 'document/bussDocumentLibraryEO/getHeaderOrConditionForSplitResult', // 表格头部字段 // tableHeader: 'document/bussDocumentLibraryEO/getHeaderOrConditionForSplitResult', // 表格头部字段
searchList: 'document/bussDocumentLibraryEO/getHeaderOrConditionForSplitResult', // 搜索字段 searchList: 'document/bussDocumentLibraryEO/getHeaderOrConditionForSplitResult', // 搜索字段
tableList: 'split/sarFileSplitInfo/splitFilePageInfo', // 表格数据 tableList: 'split/sarFileSplitInfo/splitFilePageInfo', // 表格数据
addSplit: '' addSplit: ''
}, },
type: 'pdfdoc', type: 'pdfdoc',
operationList: [] operationList: [],
showAction: false,
flag: 'header'
} }
}, },
methods: { methods: {
+11 -10
View File
@@ -27,8 +27,8 @@
</div> </div>
</div> </div>
<a-table <j-table
:components="drag(columns,'columns')" :can-drag="true"
ref="table" ref="table"
rowKey="id" rowKey="id"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
@@ -38,23 +38,24 @@
:pagination="ipagination" :pagination="ipagination"
:loading="loading" :loading="loading"
@change="handleTableChange"> @change="handleTableChange">
<span slot="msgContent" slot-scope="text,scope"> <template v-slot:msgContent="{text, scope}">
<a :style="{'color':scope.readFlag == 0 ? 'red':'#00A0E9'}" :title="text" @click="msgContentClick(scope)"> <a :style="{'color':scope.readFlag == 0 ? 'red':'#00A0E9'}" :title="text" @click="msgContentClick(scope)">
{{text}} {{text}}
</a> </a>
</span> </template>
</a-table> </j-table>
</a-card> </a-card>
</template> </template>
<script> <script>
import JTable from '@/components/jero/JTable'
import { getAction } from '@/api/manage' import { getAction } from '@/api/manage'
import { JeroListMixin } from '@/mixins/JeroListMixin' import { JeroListMixin } from '@/mixins/JeroListMixin'
import { ResizeHeader, ResizeColumnProvide } from '@/mixins/header'
export default { export default {
name: 'DocumentDynamics', name: 'DocumentDynamics',
mixins: [JeroListMixin, ResizeHeader, ResizeColumnProvide], components: { JTable },
mixins: [JeroListMixin],
data () { data () {
return { return {
queryParam: {}, queryParam: {},
@@ -44,12 +44,12 @@
{{ $t('personalCenter.collection.batchCancel') }} {{ $t('personalCenter.collection.batchCancel') }}
</div> </div>
</div> </div>
<a-table <j-table
ref="table" ref="table"
:bordered="true" :bordered="true"
size="middle" size="middle"
rowKey="id" rowKey="id"
:components="drag(columns,'columns')" :can-drag="true"
:columns="columns" :columns="columns"
:dataSource="dataSource" :dataSource="dataSource"
:pagination="ipagination" :pagination="ipagination"
@@ -57,35 +57,36 @@
:scroll="{x: '100%'}" :scroll="{x: '100%'}"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
@change="handleTableChange"> @change="handleTableChange">
<template slot="text" slot-scope="text"> <template v-slot:text="{text}">
<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>
<div class="table-text">{{ text || text === 0 ? text : global.emptyLine }}</div> <div class="table-text">{{ text || text === 0 ? text : global.emptyLine }}</div>
</a-tooltip> </a-tooltip>
</template> </template>
<template slot="serialNumber" slot-scope="text, record"> <template v-slot:serialNumber="{text, record}">
<a class="table-del" @click="onDetail(record)">{{text}}</a> <a class="table-del" @click="onDetail(record)">{{text}}</a>
</template> </template>
<div slot="action" slot-scope="text, record"> <template v-slot:action="{text, record}">
<!--取消收藏--> <!--取消收藏-->
<a class="table-del" @click="onCancel(record)">{{$t('personalCenter.collection.cancelCollection')}}</a> <a class="table-del" @click="onCancel(record)">{{$t('personalCenter.collection.cancelCollection')}}</a>
</div> </template>
</a-table> </j-table>
</div> </div>
</template> </template>
<script> <script>
import JTable from '@/components/jero/JTable'
import '@assets/less/common.less' import '@assets/less/common.less'
import { ResizeColumnProvide, ResizeHeader } from '../../../../mixins/header'
import { SimpleListMixin } from '../../../../mixins/SimpleListMixin' import { SimpleListMixin } from '../../../../mixins/SimpleListMixin'
import { deleteAction, postAction } from '../../../../api/manage' import { deleteAction, postAction } from '../../../../api/manage'
import JDictSelectTag from '../../../../components/dict/JDictSelectTag' import JDictSelectTag from '../../../../components/dict/JDictSelectTag'
export default { export default {
name: 'CollectionDocumentLibraryList', name: 'CollectionDocumentLibraryList',
mixins: [SimpleListMixin, ResizeHeader, ResizeColumnProvide], mixins: [SimpleListMixin],
components: { components: {
JTable,
JDictSelectTag JDictSelectTag
}, },
data () { data () {