update 文档拆分

This commit is contained in:
赵霄
2023-10-12 17:42:03 +08:00
parent 505c07fd88
commit 999ca5f719
15 changed files with 388 additions and 62 deletions
+8 -1
View File
@@ -2,7 +2,12 @@
import { getAction, postAction } from './manage' import { getAction, postAction } from './manage'
// 文档拆分-发布 // 文档拆分-发布
const releaseSplitStandard = (params) => postAction('', params) const releaseSplitStandard = (params) => postAction('/split/sarFileSplitInfo/publish', params)
// 文档拆分-更改权限
const changePermission = (params) => postAction('/split/sarFileSplitInfo/updatePermissions', params)
// 文档拆分-撤回
const withdraw = (params) => postAction('', params)
// 文档拆分-拆分已入库文本-拆分 // 文档拆分-拆分已入库文本-拆分
const addDocSplit = (params) => postAction('/split/sarFileSplitInfo/add', params) const addDocSplit = (params) => postAction('/split/sarFileSplitInfo/add', params)
// 文档拆分编辑-表头 // 文档拆分编辑-表头
@@ -66,6 +71,8 @@ const getCommentList = (params) => getAction('/compare/sarFileCompareResComment/
export { export {
// 文档拆分 // 文档拆分
releaseSplitStandard, releaseSplitStandard,
changePermission,
withdraw,
// 文档拆分-详情 // 文档拆分-详情
getDocSplitTableHeader, getDocSplitTableHeader,
+3
View File
@@ -121,6 +121,7 @@ module.exports = {
confirmRelease: 'Confirm Release?', confirmRelease: 'Confirm Release?',
confirmReleaseContent: 'Confirm to publish the data?', confirmReleaseContent: 'Confirm to publish the data?',
confirmWithdraw: 'Confirm to Withdraw?', confirmWithdraw: 'Confirm to Withdraw?',
confirmWithdrawContent: 'Confirm the withdrawal of this data?',
doNotHavePermissionDeleteData: 'Do not have permission to delete this data', doNotHavePermissionDeleteData: 'Do not have permission to delete this data',
noData: 'No Data', noData: 'No Data',
dataLoading: 'Data loading...', dataLoading: 'Data loading...',
@@ -406,6 +407,8 @@ module.exports = {
formatRequirementContentTwo: '2.The images are in jpg, jpeg, png, gif format', formatRequirementContentTwo: '2.The images are in jpg, jpeg, png, gif format',
formatRequirementContentThree: '3.The image in the document is displayed in the form of a link in the exported excel, click the link to jump to the specified local file', formatRequirementContentThree: '3.The image in the document is displayed in the form of a link in the exported excel, click the link to jump to the specified local file',
formatRequirementContentFour: '4.The table in the document is displayed in the form of a link in the exported excel. Click the link to jump to the specified sheet page', formatRequirementContentFour: '4.The table in the document is displayed in the form of a link in the exported excel. Click the link to jump to the specified sheet page',
changePermissions: 'Change permissions',
pleaseSelectUser: 'Please select a user',
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',
+6
View File
@@ -102,5 +102,11 @@ module.exports = {
timeConsuming: '耗时', timeConsuming: '耗时',
approvalOpinion: '审批意见', approvalOpinion: '审批意见',
opinionContent: '意见内容' opinionContent: '意见内容'
},
// 标准征求意见
standardConsultationProcess: {
standardText: '标准文本',
selectText: '选择文本',
selectionStandardFile: '选择标准文件'
} }
} }
+6
View File
@@ -123,5 +123,11 @@ module.exports = {
finishTime: '完成时间', finishTime: '完成时间',
processState: '流程状态', processState: '流程状态',
processTime: '流程耗时(小时)' processTime: '流程耗时(小时)'
},
// 标准征求意见
standardConsultationProcess: {
standardText: '标准文本',
selectText: '选择文本',
selectionStandardFile: '选择标准文件'
} }
} }
+3
View File
@@ -121,6 +121,7 @@ module.exports = {
confirmRelease: '确认发布?', confirmRelease: '确认发布?',
confirmReleaseContent: '确认发布该条数据?', confirmReleaseContent: '确认发布该条数据?',
confirmWithdraw: '确认撤回?', confirmWithdraw: '确认撤回?',
confirmWithdrawContent: '确认撤回该条数据?',
doNotHavePermissionDeleteData: '没有权限删除此数据', doNotHavePermissionDeleteData: '没有权限删除此数据',
noData: '暂无数据', noData: '暂无数据',
dataLoading: '数据加载中...', dataLoading: '数据加载中...',
@@ -409,6 +410,8 @@ module.exports = {
formatRequirementContentTwo: '2.图片为jpg、jpeg、png、gif格式', formatRequirementContentTwo: '2.图片为jpg、jpeg、png、gif格式',
formatRequirementContentThree: '3.文档中的图片,在导出excel中以链接的形式展示,点击链接跳转到本地指定的文件', formatRequirementContentThree: '3.文档中的图片,在导出excel中以链接的形式展示,点击链接跳转到本地指定的文件',
formatRequirementContentFour: '4.文档中的表格,在导出excel中以链接的形式展示,点击链接跳转到指定的sheet页面', formatRequirementContentFour: '4.文档中的表格,在导出excel中以链接的形式展示,点击链接跳转到指定的sheet页面',
changePermissions: '更改权限',
pleaseSelectUser: '请选择一个用户',
selectFileType: '请选择文件类型', selectFileType: '请选择文件类型',
onlyWord: '只能导入word文件', onlyWord: '只能导入word文件',
@@ -100,6 +100,12 @@ export default {
default: () => { default: () => {
return '' return ''
} }
},
// 是否校验必选
checkRequired: {
type: Boolean,
required: false,
default: false
} }
}, },
watch: { watch: {
@@ -297,6 +303,10 @@ export default {
this.selectedRowKeys = this.selectedRowKeys.filter(item => item !== record.id) this.selectedRowKeys = this.selectedRowKeys.filter(item => item !== record.id)
}, },
handleOk () { handleOk () {
if (this.checkRequired && (!this.selectedRowKeys || this.selectedRowKeys.length === 0)) {
this.$message.warning(this.$t('docTool.split.pleaseSelectUser'))
return
}
this.$emit('change', this.selectedRowKeys.join(',')) this.$emit('change', this.selectedRowKeys.join(','))
this.$emit('nameChange', this.dataSourceRight.map(item => item.realname + '(' + item.username + ')').join(',')) this.$emit('nameChange', this.dataSourceRight.map(item => item.realname + '(' + item.username + ')').join(','))
this.close() this.close()
+6
View File
@@ -75,3 +75,9 @@ export const OperationType = {
ENTRY: { text: '标准法规入库', value: '1' }, ENTRY: { text: '标准法规入库', value: '1' },
CHANGE: { text: '标准法规变更', value: '2' } CHANGE: { text: '标准法规变更', value: '2' }
} }
// 文档拆分-拆分状态
export const SplitStatus = {
EDITING: { text: '编辑中', value: '1' },
RELEASED: { text: '已发布', value: '2' }
}
+6 -1
View File
@@ -56,7 +56,8 @@ export const ConfigurableTableMixin = {
needFilterTableBtn: true, // 是否需要过滤没有权限的按钮 needFilterTableBtn: true, // 是否需要过滤没有权限的按钮
tokenHeader: { 'X-Access-Token': Vue.ls.get(ACCESS_TOKEN) }, tokenHeader: { 'X-Access-Token': Vue.ls.get(ACCESS_TOKEN) },
getTableHeaderFunc: null, // 获取表头的方法 getTableHeaderFunc: null, // 获取表头的方法
tableSlotField: [] // 表格需要使用插槽的字段,dbFieldName tableSlotField: [], // 表格需要使用插槽的字段,dbFieldName
disabledMixinsCreate: false
} }
}, },
computed: { computed: {
@@ -65,6 +66,9 @@ export const ConfigurableTableMixin = {
} }
}, },
mounted () { mounted () {
if (this.disabledMixinsCreate) {
return
}
this.getTableHeader() this.getTableHeader()
this.loadData() this.loadData()
// 过滤没有权限的按钮 // 过滤没有权限的按钮
@@ -174,6 +178,7 @@ export const ConfigurableTableMixin = {
const param = Object.assign({}, this.searchParams, this.isorter, this.filters) const param = Object.assign({}, this.searchParams, this.isorter, this.filters)
param.pageNo = this.ipagination.current param.pageNo = this.ipagination.current
param.pageSize = this.ipagination.pageSize param.pageSize = this.ipagination.pageSize
console.log(param)
return filterObj(param) return filterObj(param)
}, },
loadData (arg) { loadData (arg) {
@@ -42,12 +42,14 @@
<!--拆分已入库文本--> <!--拆分已入库文本-->
<a-button icon="plus" type="primary" @click="handleModule" v-has="'split:sarFileSplitInfo:splitFile'">{{ $t('docTool.split.splitText') }} <a-button icon="plus" type="primary" @click="handleModule" v-has="'split:sarFileSplitInfo:splitFile'">{{ $t('docTool.split.splitText') }}
</a-button> </a-button>
<!--导入拆分结果--> <!--TODO 导入拆分结果-->
<a-button icon="download" type="primary" ghost @click="handleExport" v-has="'split:sarFileSplitInfo:splitResult'"> <a-button icon="download" type="primary" ghost @click="handleExport" v-has="'split:sarFileSplitInfo:splitResult'">
{{ $t('docTool.split.importResults') }} {{ $t('docTool.split.importResults') }}
</a-button> </a-button>
<!--批量删除--> <!--批量删除-->
<a-button type="primary" icon="delete" ghost @click="batchDel" v-has="'split:sarFileSplitInfo:deleteBatch'">{{ $t('batchDelete') }}</a-button> <a-button type="primary" icon="delete" ghost @click="batchDel" v-has="'split:sarFileSplitInfo:deleteBatch'">{{ $t('batchDelete') }}</a-button>
<!--更改权限-->
<a-button type="primary" icon="sync" ghost @click="handleChangePermission">{{ $t('docTool.split.changePermissions') }}</a-button>
</div> </div>
<div> <div>
<j-table <j-table
@@ -59,28 +61,9 @@
:pagination="ipagination" :pagination="ipagination"
:scroll="{x: '100%'}" :scroll="{x: '100%'}"
:loading="loading" :loading="loading"
@change="handleTableChange"> :operation-list="operationList"
@change="handleTableChange"
<template v-slot:operation="{text, record}"> @operationClick="operationClick">
<a @click="operationClick(operationList[0],record)">{{ operationList[0].text }}</a>
<a-divider type="vertical" />
<a-dropdown placement="bottomCenter">
<a-icon type="more" class="operate-icon-btn operate-icon-more" />
<a-menu slot="overlay">
<a-menu-item v-for="(operation, index) in operationList.slice(operateMaxNum)" :key="index">
<a @click="operationClick(operation,record)">
<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-menu-item>
</a-menu>
</a-dropdown>
</template>
</j-table> </j-table>
</div> </div>
@@ -89,6 +72,8 @@
<split-text ref="splitText" @ok="modalFormOk" /> <split-text ref="splitText" @ok="modalFormOk" />
<!--导入拆分结果--> <!--导入拆分结果-->
<import-split-result-modal ref="importResultModal" @ok="modalFormOk" /> <import-split-result-modal ref="importResultModal" @ok="modalFormOk" />
<!--更改权限-->
<user-select-modal ref="userSelectModal" check-required @change="continueChangePermission" />
</a-card> </a-card>
</template> </template>
@@ -97,21 +82,39 @@ import '../../../assets/less/common.less'
import JTable from '../../../components/jero/JTable.vue' import JTable from '../../../components/jero/JTable.vue'
import SplitText from './modules/SplitText.vue' import SplitText from './modules/SplitText.vue'
import { JeroListMixin } from '../../../mixins/JeroListMixin.js' import { JeroListMixin } from '../../../mixins/JeroListMixin.js'
import { releaseSplitStandard } from '../../../api/documentToolApi.js' import { releaseSplitStandard, changePermission, withdraw } from '../../../api/documentToolApi.js'
import ImportSplitResultModal from './modules/ImportSplitResultModal.vue' import ImportSplitResultModal from './modules/ImportSplitResultModal.vue'
import UserSelectModal from '../../../components/selection/UserSelectModal.vue'
import { SplitStatus } from '../../../enums/commonEnums.js'
import { mapState } from 'vuex'
export default { export default {
name: 'DocumentSplit', name: 'DocumentSplit',
components: { JTable, SplitText, ImportSplitResultModal }, components: { JTable, SplitText, ImportSplitResultModal, UserSelectModal },
mixins: [JeroListMixin], mixins: [JeroListMixin],
data () { data () {
return { return {
userInfo: this.$store.getters.userInfo,
operationList: [ operationList: [
// 发布 // 发布
{ {
text: this.$t('release'), text: this.$t('release'),
clickEvent: 'handleRelease', clickEvent: 'handleRelease',
has: 'split:sarFileSplitInfo:release' has: 'split:sarFileSplitInfo:release',
show: (record) => {
// 创建人(更改权限更改的是这个字段)是当前登录人,且状态为编辑中可以发布
return record.createBy === this.userInfo.username && record.splitStatus === SplitStatus.EDITING.value
}
},
// 撤回
{
text: this.$t('withdraw'),
clickEvent: 'handleWithdraw',
has: 'split:sarFileSplitInfo:release',
show: (record) => {
// 创建人(更改权限更改的是这个字段)是当前登录人,且状态为已发布可以撤回
return record.createBy === this.userInfo.username && record.splitStatus === SplitStatus.RELEASED.value
}
}, },
// 查看 // 查看
{ {
@@ -123,25 +126,33 @@ export default {
{ {
text: this.$t('edit'), text: this.$t('edit'),
clickEvent: 'handleEdit', clickEvent: 'handleEdit',
has: 'split:sarFileSplitItems:edit' has: 'split:sarFileSplitItems:edit',
show: (record) => {
// 创建人(更改权限更改的是这个字段)是当前登录人,且状态为编辑中可以编辑
return record.createBy === this.userInfo.username && record.splitStatus === SplitStatus.EDITING.value
}
}, },
// 删除 // 删除
{ {
text: this.$t('delete'), text: this.$t('delete'),
clickEvent: 'handleDelete', clickEvent: 'handleDelete',
has: 'split:sarFileSplitInfo:delete' has: 'split:sarFileSplitInfo:delete',
show: (record) => {
// 创建人(更改权限更改的是这个字段)是当前登录人,且状态为编辑中可以删除
return record.createBy === this.userInfo.username && record.splitStatus === SplitStatus.EDITING.value
}
} }
], ],
columns: [ columns: [
// 标准号 // 标准号
{ {
dataIndex: 'standardNumber', dataIndex: 'serialNumber',
title: this.$t('standardSelect.standardNumber'), title: this.$t('standardSelect.standardNumber'),
width: 150 width: 150
}, },
// 标准名称 // 标准名称
{ {
dataIndex: 'standardName', dataIndex: 'title',
title: this.$t('standardSelect.standardName'), title: this.$t('standardSelect.standardName'),
width: 150 width: 150
}, },
@@ -155,17 +166,17 @@ export default {
{ {
dataIndex: 'fileName', dataIndex: 'fileName',
title: this.$t('fileName'), title: this.$t('fileName'),
width: 150 width: 180
}, },
// 拆分状态 // 拆分状态
{ {
dataIndex: '5', dataIndex: 'splitStatus_dictText',
title: this.$t('docTool.split.splitState'), title: this.$t('docTool.split.splitState'),
width: 150 width: 150
}, },
// 编辑人 // 编辑人
{ {
dataIndex: '6', dataIndex: 'author',
title: this.$t('docTool.split.editor'), title: this.$t('docTool.split.editor'),
width: 150 width: 150
}, },
@@ -187,18 +198,15 @@ export default {
title: this.$t('operation'), title: this.$t('operation'),
fixed: 'right', fixed: 'right',
width: 150, width: 150,
scopedSlots: { customRender: 'operation' } scopedSlots: { customRender: 'action' }
} }
], ],
url: { url: {
list: '/split/sarFileSplitInfo/page', // 表格数据 list: '/split/sarFileSplitInfo/page', // 表格数据
deleteBatch: '', // 批量删除 deleteBatch: '/split/sarFileSplitInfo/deleteBatch', // 批量删除
deleteUrl: '', deleteUrl: '/split/sarFileSplitInfo/delete',
backDocument: '' // 回传至文档库 backDocument: '' // 回传至文档库
}, }
dataSource: [
{ id: 1 }
]
} }
}, },
methods: { methods: {
@@ -232,6 +240,29 @@ export default {
} }
}) })
}, },
/**
* TODO 撤回
* @param id
*/
handleWithdraw ({ id }) {
this.$confirm({
title: this.$t('confirmWithdraw'),
content: this.$t('confirmWithdrawContent'),
onOk: () => {
this.loading = true
withdraw({ id }).then(res => {
if (res.success) {
this.$message.success(res.message)
this.modalFormOk()
} else {
this.$message.warn(res.message)
}
}).finally(() => {
this.loading = false
})
}
})
},
// 编辑 // 编辑
handleEdit (record) { handleEdit (record) {
this.$router.push({ this.$router.push({
@@ -262,6 +293,33 @@ export default {
if (num === 1) { if (num === 1) {
this.$refs.tableData.$emit('searchGetData') this.$refs.tableData.$emit('searchGetData')
} }
},
/**
* 更改权限
*/
handleChangePermission () {
if (!this.selectedRowKeys || this.selectedRowKeys.length === 0) {
this.$message.warning(this.$t('selectARecord'))
return
}
this.$refs.userSelectModal.open()
},
continueChangePermission (id) {
this.loading = true
const params = {
ids: this.selectedRowKeys.join(','),
createBy: id
}
changePermission(params).then(res => {
if (res.success) {
this.$message.success(res.message)
this.modalFormOk()
} else {
this.$message.warning(res.message)
}
}).finally(() => {
this.loading = false
})
} }
} }
} }
@@ -158,10 +158,11 @@
</a-tooltip> </a-tooltip>
</template> </template>
<template slot="showContent" slot-scope="text, record"> <!--条文内容-->
<span class="content-show" <template slot="Item_content" slot-scope="{text, record}">
@click="showContent(text,record)">{{ record.iterms_conditions && record.iterms_conditions !== 'null' ? record.iterms_conditions.replace(/<.*?>/ig, ' ') : '' <div class="table-text" @click="showContent(text,record)">
}}</span> {{ text && text !== 'null' ? text.replace(/<.*?>/ig, ' ') : '' }}
</div>
</template> </template>
</j-table> </j-table>
@@ -205,6 +206,7 @@ import {
getClauseTreeData getClauseTreeData
} from '../../../api/documentToolApi.js' } from '../../../api/documentToolApi.js'
import Search from '../../../components/customField/Search.vue' import Search from '../../../components/customField/Search.vue'
import { isHasPermission } from '../../../utils/hasPermission.js'
export default { export default {
name: 'DocumentSplitDetail', name: 'DocumentSplitDetail',
@@ -236,9 +238,9 @@ export default {
fullWidth: '', fullWidth: '',
parameter: {}, parameter: {},
administrators: false, administrators: false,
showAction: this.isCanOperate, showAction: false,
flag: '4', // 查询要用到 flag: '4', // 查询要用到
operateSlotName: 'action',
getQueryConditionFunc: getDocSplitSearch, getQueryConditionFunc: getDocSplitSearch,
getTableHeaderFunc: getDocSplitTableHeader, getTableHeaderFunc: getDocSplitTableHeader,
treeData: [], treeData: [],
@@ -247,15 +249,23 @@ export default {
mouseInNodeKey: null, // 鼠标悬浮的节点key值 mouseInNodeKey: null, // 鼠标悬浮的节点key值
// 操作栏 // 操作栏
operationList: [ operationList: [
// 编辑
{ {
text: this.$t('edit'), text: this.$t('edit'),
clickEvent: 'handleEdit', clickEvent: 'handleEdit'
has: 'split:sarFileSplitItems:update' // has: 'split:sarFileSplitItems:update'
}, },
// 复制
{
text: this.$t('copy'),
clickEvent: 'handleEdit'
// has: 'split:sarFileSplitItems:update'
},
// 删除
{ {
text: this.$t('delete'), text: this.$t('delete'),
clickEvent: 'handleDelete', clickEvent: 'handleDelete'
has: 'split:sarFileSplitItems:delete' // has: 'split:sarFileSplitItems:delete'
} }
], ],
url: { url: {
@@ -265,26 +275,32 @@ export default {
delete: '/split/sarFileSplitItems/batchDeleteItems', // 删除 delete: '/split/sarFileSplitItems/batchDeleteItems', // 删除
deleteBatch: '/split/sarFileSplitItems/batchDeleteItems', // 批量删除 deleteBatch: '/split/sarFileSplitItems/batchDeleteItems', // 批量删除
downTemplateUrl: '/split/sarFileSplitItems/exportTemplate' // 模板下载 downTemplateUrl: '/split/sarFileSplitItems/exportTemplate' // 模板下载
} },
disabledMixinsCreate: true,
tableSlotField: ['Item_content']
} }
}, },
computed: { computed: {
isCanOperate () {
return !!(this.$route.query.createBy === this.userInfo.username || this.administrators)
},
// 页面标题是标准名称 // 页面标题是标准名称
pageTitle () { pageTitle () {
return this.$route.query.standardName return this.$route.query.standardName
}, },
...mapGetters(['userInfo']) ...mapGetters(['userInfo'])
}, },
created () { mounted () {
this.operateColumn.scopedSlots.customRender = 'action'
this.showAction = this.$route.query.createBy === this.userInfo.username || this.administrators
this.infoId = this.$route.query.infoId
this.filters = { this.filters = {
menu_id: this.menuId, menu_id: this.menuId,
info_id: this.infoId info_id: this.infoId
} }
}, this.getTableHeader()
mounted () { this.loadData()
// 过滤没有权限的按钮
if (this.needFilterTableBtn) {
this.operationList = this.operationList.filter(item => !item.has || isHasPermission(item.has))
}
this.administrators = false this.administrators = false
if (this.userInfo.userRoleList && this.userInfo.userRoleList.length > 0) { if (this.userInfo.userRoleList && this.userInfo.userRoleList.length > 0) {
this.userInfo.userRoleList.forEach(res => { this.userInfo.userRoleList.forEach(res => {
@@ -340,7 +356,6 @@ export default {
getClauseTreeData(params).then(res => { getClauseTreeData(params).then(res => {
if (res.success) { if (res.success) {
this.treeData = res.result || [] this.treeData = res.result || []
console.log(this.treeData)
} }
}).finally(() => { }).finally(() => {
this.loading = false this.loading = false
@@ -2,6 +2,7 @@
<j-modal <j-modal
:title="$t('docTool.split.clauseContent')" :title="$t('docTool.split.clauseContent')"
:visible="contentVisible" :visible="contentVisible"
:width="1000"
:confirm-loading="confirmLoading" :confirm-loading="confirmLoading"
:footer="false" :footer="false"
switchFullscreen switchFullscreen
@@ -164,7 +164,12 @@ export default {
const nameSuffix = name[name.length - 1] const nameSuffix = name[name.length - 1]
if (nameSuffix.toLowerCase() === 'doc' || nameSuffix.toLowerCase() === 'docx') { if (nameSuffix.toLowerCase() === 'doc' || nameSuffix.toLowerCase() === 'docx') {
const params = { const params = {
fileId: file.id fileId: file.id,
standardId: file.standardId,
serialNumber: file.standardNumber,
title: file.standardName,
fileType: file.standardFileType,
fileName: file.fileName
} }
this.loading = true this.loading = true
addDocSplit(params).then(res => { addDocSplit(params).then(res => {
+1 -1
View File
@@ -25,7 +25,7 @@ export default {
}, },
{ // 标准征求意见流程 { // 标准征求意见流程
title: this.$t('workCenter.newProcess.annotateTheConsultationProcess'), title: this.$t('workCenter.newProcess.annotateTheConsultationProcess'),
path: '' path: '/workCenter/StandardConsultationProcess'
}, },
{ // 项目合规评估流程 { // 项目合规评估流程
title: this.$t('workCenter.newProcess.projectComplianceAssessmentProcess'), title: this.$t('workCenter.newProcess.projectComplianceAssessmentProcess'),
@@ -0,0 +1,171 @@
<template>
<internal-detail-page :content-padding="0" :title="pageTitle">
<!-- 标题右侧tab -->
<template v-slot:titleRightCustom>
<div class="table-operator-tab">
<!--基础信息-->
<a class="switch-item" :class="switchValue === 'base' ? 'table-operator-tab-active' : ''"
@click="switchChange('base')">{{ $t('workCenter.basicInformation') }}
</a>
<!--人员信息-->
<a class="switch-item" :class="switchValue === 'user' ? 'table-operator-tab-active' : ''"
@click="switchChange('user')">{{ $t('workCenter.personalInformation') }}
</a>
</div>
</template>
<!--基本信息-->
<div class="detail-page-scroll-content" v-show="switchValue === 'base'">
<!--流程信息-->
<div class="process-part-title">{{ $t('processInformation') }}</div>
<a-form :form="processInfoForm">
<a-row>
<a-col :span="12">
<!--流程名称-->
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('processName')">
<a-input :placeholder="$t('pleaseEnter') + $t('processName')"
@change="event => event.target.value = event.target.value.trim()"
:maxLength="50"
disabled
v-decorator="['nodeName']" />
</a-form-item>
</a-col>
<a-col :span="12">
<!--截止日期-->
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('expirationDate')">
<a-date-picker class="box-input"
:placeholder="$t('pleaseSelect') + $t('expirationDate')"
:getCalendarContainer="(trigger) => trigger.parentNode"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%" />
</a-form-item>
</a-col>
</a-row>
<!--流程说明-->
<a-form-item :labelCol="longLabelCol" :wrapperCol="longWrapperCol" :label="$t('processExplain')">
<a-input :placeholder="$t('pleaseEnter') + $t('processExplain')"
@change="event => event.target.value = event.target.value.trim()"
:maxLength="500"
type="textarea"
v-decorator="['nodeName']" />
</a-form-item>
</a-form>
<!--业务基本信息-->
<div class="process-part-title">{{ $t('basicServiceInformation') }}</div>
<a-form :form="basicServiceInfoForm">
<a-row>
<a-col :span="12">
<!--标准编号-->
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('standardNumber')">
<standard-selection v-decorator="['nodeName']" :placeholder="$t('pleaseSelect') + $t('standardNumber')" />
</a-form-item>
</a-col>
<a-col :span="12">
<!--标准名称-->
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('standardName')">
<a-input :placeholder="$t('pleaseEnter') + $t('standardName')"
@change="event => event.target.value = event.target.value.trim()"
:maxLength="50"
disabled
v-decorator="['nodeName']" />
</a-form-item>
</a-col>
<a-col :span="12">
<!--标准文本-->
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('workCenter.standardConsultationProcess.standardText')">
<div class="box-title-text">
<a-input class="box-input"
v-decorator="['nodeName']"
readonly
:placeholder="$t('pleaseSelect') + $t('workCenter.standardConsultationProcess.standardText')" />
<a-button type="primary" class="button-box" @click="chooseStandardText">
{{ this.$t('workCenter.standardConsultationProcess.selectText') }}
</a-button>
</div>
</a-form-item>
</a-col>
</a-row>
</a-form>
</div>
<div class="detail-page-bottom-operate-box">
<!--转办 审批节点存在-->
<a-button type="primary" :loading="loading" ghost icon="arrow-up" @click="handleTurnTo">{{ $t('turnTo') }}</a-button>
<!--保存 发起节点、审批节点都存在-->
<a-button type="primary" :loading="loading" ghost @click="handleSave"><i class="iconfont icon-save" />{{ $t('preservation') }}</a-button>
<!--提交 发起节点存在-->
<a-button type="primary" :loading="loading" @click="handleSubmit" icon="upload">{{ $t('submit') }}</a-button>
<!--同意 审批节点存在-->
<a-button type="primary" :loading="loading" icon="check-circle" @click="handleSubmit">{{ $t('agree') }}</a-button>
<!--驳回 审批节点存在-->
<a-button type="primary" :loading="loading" icon="close-circle" @click="handleSubmit">{{ $t('reject') }}</a-button>
</div>
</internal-detail-page>
</template>
<script>
import InternalDetailPage from '../../../components/InternalDetailPage.vue'
import StandardSelection from '../../../components/selection/StandardSelection.vue'
export default {
name: 'StandardConsultationProcess',
components: { InternalDetailPage, StandardSelection },
data () {
return {
switchValue: 'base',
labelCol: {
xs: { span: 24 },
sm: { span: 4 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 20 }
},
longLabelCol: {
xs: { span: 24 },
sm: { span: 2 }
},
longWrapperCol: {
xs: { span: 24 },
sm: { span: 22 }
},
// 流程信息表单
processInfoForm: this.$form.createForm(this),
// 业务基本信息表单
basicServiceInfoForm: this.$form.createForm(this)
}
},
computed: {
pageTitle () {
return `${this.$t('flowCenter')}${this.$route.meta.title}(法规工程师发起)`
}
},
methods: {
switchChange (value) {
this.switchValue = value
},
chooseStandardText () {
}
}
}
</script>
<style scoped lang="less">
.box-title-text {
height: 40px;
line-height: 40px;
display: flex;
align-items: center;
.box-input {
width: 100%;
}
.button-box {
margin-left: 10px;
}
}
</style>
@@ -0,0 +1,30 @@
<template>
<j-modal
:title="title"
:maskClosable="false"
:width="width"
:visible="visible"
:confirm-loading="confirmLoading"
switchFullscreen
@ok="handleOk"
@cancel="handleCancel">
</j-modal>
</template>
<script>
export default {
name: 'SelectStandardFileModal',
data () {
return {
title: this.$t('workCenter.standardConsultationProcess.selectionStandardFile'),
width: false,
visible: false,
confirmLoading: false
}
}
}
</script>
<style scoped lang="less">
</style>