update 资料中心

This commit is contained in:
赵霄
2023-10-31 15:47:40 +08:00
parent 9ac308e17e
commit b8c3bcd3de
6 changed files with 149 additions and 76 deletions
+9 -6
View File
@@ -82,15 +82,17 @@ const getDynamicMessageById = (params) => getAction('/laws/standard/lawsNewsFeed
const shareDynamicMessageById = (params) => postAction('/personal/lawsStandardSharing/dynamicMessages/add', params)
// 资料中心-新增
const addProfileCenter = (params) => postAction('', params)
const addProfileCenter = (params) => postAction('/laws/dataCenter/lawsDataCenterFile/add', params)
// 资料中心-编辑
const editProfileCenter = (params) => postAction('', params)
// 资料中心-新增树节点
const addProfileCenterTree = (params) => postAction('', params)
const editProfileCenter = (params) => postAction('/laws/dataCenter/lawsDataCenterFile/edit', params)
// 资料中心-新增同级
const addProfileCenterTree = (params) => postAction('/laws/dataCenter/lawsDataCenterFolder/addBrother', params)
// 资料中心-新增子文件夹
const addChildrenFolder = (params) => postAction('/laws/dataCenter/lawsDataCenterFolder/addChild', params)
// 资料中心-编辑树节点
const editProfileCenterTree = (params) => postAction('', params)
const editProfileCenterTree = (params) => postAction('/laws/dataCenter/lawsDataCenterFolder/edit', params)
// 资料中心-删除树节点
const deleteProfileCenterTree = (params) => postAction('', params)
const deleteProfileCenterTree = (params) => postAction('/laws/dataCenter/lawsDataCenterFolder/delete', params)
// 资料中心-获取树节点树
const getProfileCenterTree = (params) => getAction('/laws/dataCenter/lawsDataCenterFolder/getTreeList', params)
@@ -144,6 +146,7 @@ export {
addProfileCenter,
editProfileCenter,
addProfileCenterTree,
addChildrenFolder,
editProfileCenterTree,
deleteProfileCenterTree,
getProfileCenterTree
+1
View File
@@ -165,6 +165,7 @@ module.exports = {
submitAddAdd: '提交并新增',
pleaseSelectOneStandard: '请选择至少一条标准',
selectAtLeastOne: '选中至少一条列表数据',
pleaseSelectTime: '请选择时间',
// 树右键
treeRight: {
addFolder: 'Create New Folder',
+1
View File
@@ -168,6 +168,7 @@ module.exports = {
submitAddAdd: '提交并新增',
pleaseSelectOneStandard: '请选择至少一条标准',
selectAtLeastOne: '选中至少一条列表数据',
pleaseSelectTime: '请选择时间',
// 树右键
treeRight: {
addFolder: '新增文件夹',
@@ -10,29 +10,40 @@
<a-tree :show-line="true" :show-icon="true" :tree-data="treeData" :selected-keys="selectedTreeKeys">
<template #title="record">
<div class="tree-operate-node"
@mouseenter="handleTreeMouseover(record.key)"
@mouseleave="handleTreeMouseout(record.key)"
@mouseenter="handleTreeMouseover(record.id)"
@mouseleave="handleTreeMouseout(record.id)"
@click="handleSelectTreeNode(record)">
<a-icon class="parent-node-icon" type="folder" v-if="record.dataRef.children && record.dataRef.children.length > 0" />
<a-icon class="parent-node-icon"
type="folder"
v-if="record.dataRef.children && record.dataRef.children.length > 0" />
<a-tooltip>
<template #title>
{{ record.title }}
{{ record.folderName }}
</template>
<span class="tree-node-custom-title">{{ record.title }}</span>
<span class="tree-node-custom-title">{{ record.folderName }}</span>
</a-tooltip>
<div class="tree-operate-node-btn-box" :class="{'tree-operate-node-btn-box-hide': record.key !== mouseInNodeKey}">
<!-- 新增-->
<div class="tree-operate-node-btn-box" :class="{'tree-operate-node-btn-box-hide': record.id !== mouseInNodeKey}">
<!--新增同级-->
<a-button icon="plus"
class="tree-operate-node-btn"
@click.stop="handleAddTreeNode(record)" />
<!-- 编辑根节点不能编辑-->
@click.stop="handleAddPeerFolder(record)"
v-has="'profileCenter:addPeer'" />
<!--新增子级-->
<a-button class="tree-operate-node-btn"
@click.stop="handleEditTreeNode(record)">
@click.stop="handleAddChildrenFolder(record)"
v-has="'profileCenter:addChildren'">
<i class="iconfont icon-wenjian-tianjia" />
</a-button>
<!--编辑根节点不能编辑-->
<a-button class="tree-operate-node-btn"
@click.stop="handleEditTreeNode(record)"
v-has="'profileCenter:editFolder'">
<i class="iconfont icon-bianji" />
</a-button>
<!-- 删除根节点不能删除-->
<!--删除根节点不能删除-->
<a-button class="tree-operate-node-btn"
@click.stop="handleDelTreeNode(record)">
@click.stop="handleDelTreeNode(record)"
v-has="'profileCenter:deleteFolder'">
<i class="iconfont icon-shanchu_" />
</a-button>
</div>
@@ -50,13 +61,13 @@
<!--文件名称-->
<a-col :md="6" :sm="12">
<a-form-item :label="$t('fileName')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-input :placeholder="$t('pleaseEnter') + $t('fileName')" v-model="queryParam.projectName"></j-input>
<j-input :placeholder="$t('pleaseEnter') + $t('fileName')" v-model="queryParam.fileName"></j-input>
</a-form-item>
</a-col>
<!--上传人-->
<a-col :md="6" :sm="12">
<a-form-item :label="$t('uploadedBy')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-input :placeholder="$t('pleaseEnter') + $t('uploadedBy')" v-model="queryParam.projectName"></j-input>
<a-input :placeholder="$t('pleaseEnter') + $t('uploadedBy')" v-model="queryParam.uploader"></a-input>
</a-form-item>
</a-col>
@@ -64,9 +75,12 @@
<a-col :md="6" :sm="12">
<a-form-item :label="$t('uploadTime')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-range-picker
:placeholder="[$t('pleaseSelectTime'), $t('pleaseSelectTime')]"
style="width: 100%"
showTime
value-format="YYYY-MM-DD HH:mm:ss"
format="YYYY-MM-DD HH:mm:ss"
v-model="queryParam.planApprovalDate">
v-model="queryParam.uploadTime">
</a-range-picker>
</a-form-item>
</a-col>
@@ -74,7 +88,11 @@
<a-col :md="6" :sm="8">
<div 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" v-has="'split:sarFileSplitInfo:search'">
<a-button type="primary"
@click="searchQuery"
icon="search"
style="margin-left: 8px"
v-has="'profileCenter:table'">
{{ $t('query') }}
</a-button>
</div>
@@ -85,9 +103,11 @@
<div class="table-operator">
<!-- 新增-->
<a-button icon="plus" type="primary" @click="handleAdd">{{ $t('newlyAdded') }}</a-button>
<a-button icon="plus" type="primary" @click="handleAdd" v-has="'profileCenter:table'">{{ $t('newlyAdded') }}</a-button>
<!-- 批量删除-->
<a-button type="primary" icon="delete" ghost @click="batchDel">{{ $t('batchDelete') }}</a-button>
<a-button type="primary" icon="delete" ghost @click="batchDel" v-has="'profileCenter:table'">
{{ $t('batchDelete') }}
</a-button>
</div>
<div>
<j-table
@@ -100,7 +120,8 @@
:scroll="{x: '100%'}"
:loading="loading"
:operation-list="operationList"
@change="handleTableChange">
@change="handleTableChange"
@operationClick="operationClick">
</j-table>
</div>
@@ -109,7 +130,7 @@
<!--表格数据新增编辑-->
<profile-center-modal ref="modalForm" @ok="modalFormOk" />
<!--树节点新增编辑-->
<profile-center-tree-modal ref="treeModal" @ok="modalFormOk"/>
<profile-center-tree-modal ref="treeModal" @ok="modalFormOk" />
</a-card>
</template>
@@ -119,6 +140,8 @@ import { JeroListMixin } from '../../../mixins/JeroListMixin.js'
import { deleteProfileCenterTree, getProfileCenterTree } from '../../../api/standardRegulationLibraryApi.js'
import ProfileCenterModal from './modules/ProfileCenterModal.vue'
import ProfileCenterTreeModal from './modules/ProfileCenterTreeModal.vue'
import { filterObj } from '../../../utils/util'
import { downloadFile } from '../../../api/manage'
export default {
name: 'ProfileCenterList',
@@ -132,25 +155,25 @@ export default {
columns: [
// 文件名称
{
dataIndex: 'standardNumber',
dataIndex: 'fileName',
title: this.$t('fileName'),
width: 150
},
// 文件说明
{
dataIndex: 'standardName',
dataIndex: 'fileDescription',
title: this.$t('fileDeclaration'),
width: 150
},
// 上传人
{
dataIndex: 'fileType',
dataIndex: 'uploader',
title: this.$t('uploadedBy'),
width: 150
},
// 上传时间
{
dataIndex: 'fileName',
dataIndex: 'createTime',
title: this.$t('uploadTime'),
width: 150
},
@@ -167,30 +190,33 @@ export default {
{
text: this.$t('download'),
clickEvent: 'handleDownload',
has: ''
has: 'profileCenter:table'
},
// 编辑
{
text: this.$t('edit'),
clickEvent: 'handleEdit',
has: ''
has: 'profileCenter:table'
},
// 删除
{
text: this.$t('delete'),
clickEvent: 'handleDelete',
has: ''
has: 'profileCenter:table'
}
],
url: {
list: '',
delete: '',
deleteBatch: ''
list: '/laws/dataCenter/lawsDataCenterFile/page',
delete: '/laws/dataCenter/lawsDataCenterFile/delete',
deleteBatch: '/laws/dataCenter/lawsDataCenterFile/deleteBatch'
},
selectedTreeKeys: [], // 选中的树节点key
treeLoading: false
}
},
created () {
this.initTreeData()
},
methods: {
/**
* 获取树数据
@@ -198,10 +224,10 @@ export default {
initTreeData () {
this.treeLoading = true
const params = {
nodeName: this.treeInput
folderName: this.treeInput
}
if (!params.nodeName) {
delete params.nodeName
if (!params.folderName) {
delete params.folderName
}
getProfileCenterTree(params).then(res => {
this.treeData = []
@@ -256,11 +282,19 @@ export default {
this.onClearSelected()
},
/**
* 新增节点
* 新增同级节点
* @param dataRef
*/
handleAddTreeNode ({ dataRef }) {
this.$refs.treeModal.add({ parentId: dataRef.id, parentCode: dataRef.nodeCode })
handleAddPeerFolder ({ dataRef }) {
console.log(dataRef)
this.$refs.treeModal.add({ parentId: dataRef.parentId }, true)
},
/**
* 新增子节点
* @param dataRef
*/
handleAddChildrenFolder ({ dataRef }) {
this.$refs.treeModal.add({ parentId: dataRef.id }, false)
},
/**
* 编辑树节点
@@ -296,6 +330,27 @@ export default {
this.queryParam = {}
this.selectedTreeKeys = []
this.loadData(1)
},
getQueryParams () {
// 获取查询条件
const sqp = {}
if (this.superQueryParams) {
sqp.superQueryParams = encodeURI(this.superQueryParams)
sqp.superQueryMatchType = this.superQueryMatchType
}
const param = Object.assign(sqp, this.queryParam, this.isorter, this.filters)
param.field = this.getQueryField()
param.pageNo = this.ipagination.current
param.pageSize = this.ipagination.pageSize
Object.keys(param).forEach(val => {
if (param[val] instanceof Array) {
param[val] = param[val].join(',')
}
})
return filterObj(param)
},
handleDownload ({ id, fileName }) {
downloadFile(`/laws/dataCenter/lawsDataCenterFile/download?id=${id}`, fileName)
}
}
}
@@ -11,12 +11,12 @@
<a-form :form="form">
<!--文件名称-->
<a-form-item :label="$t('fileName')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :placeholder="$t('pleaseEnter') + $t('fileName')"
@change="event => event.target.value = event.target.value.trim()"
:maxLength="50"
v-decorator="['title', validatorRules.title]" />
</a-form-item>
<!--<a-form-item :label="$t('fileName')" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
<!-- <a-input :placeholder="$t('pleaseEnter') + $t('fileName')"-->
<!-- @change="event => event.target.value = event.target.value.trim()"-->
<!-- :maxLength="50"-->
<!-- v-decorator="['fileName', validatorRules.fileName]" />-->
<!--</a-form-item>-->
<!--所属类型-->
<!--<a-form-item :label="$t('standardRegulationLibrary.profileCenter.typeOfOwnership')" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
<!-- <a-tree-select v-decorator="['title', validatorRules.title]"-->
@@ -28,11 +28,11 @@
<!--</a-form-item>-->
<!--上传资料-->
<a-form-item :label="$t('standardRegulationLibrary.profileCenter.uploadData')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-upload v-decorator="['title', validatorRules.title]" return-id />
<j-upload v-decorator="['fileId', validatorRules.fileId]" return-id :disabled="!!modal.id"/>
</a-form-item>
<!--推送范围-->
<a-form-item :label="$t('standardRegulationLibrary.dynamicMessage.pushRange')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<user-selection v-decorator="['title', validatorRules.title]"
<user-selection v-decorator="['pushRangeIds', validatorRules.pushRangeIds]" :name-str="modal.pushRangeIds_dictText"
:placeholder="$t('pleaseSelect')+$t('standardRegulationLibrary.dynamicMessage.pushRange')" />
</a-form-item>
<!--文件说明-->
@@ -41,7 +41,7 @@
:placeholder="$t('pleaseEnter') + $t('fileDeclaration')"
@change="event => event.target.value = event.target.value.trim()"
:maxLength="500"
v-decorator="['title', validatorRules.title]" />
v-decorator="['fileDescription', validatorRules.fileDescription]" />
</a-form-item>
</a-form>
@@ -72,28 +72,18 @@ export default {
sm: { span: 20 }
},
validatorRules: {
// 文件名称
title: {
rules: [{ required: true, message: this.$t('pleaseEnter') + this.$t('fileName') }],
validateTrigger: 'blur'
},
// 所属类型
project: {
rules: [{ required: false, message: this.$t('pleaseSelect') + this.$t('standardRegulationLibrary.profileCenter.typeOfOwnership') }],
validateTrigger: 'change'
},
// 上传资料
standardNumber: {
fileId: {
rules: [{ required: true, message: this.$t('uploadFile.pleaseUpload') + this.$t('uploadFile.file') }],
validateTrigger: 'change'
},
// 推送范围
problemOccurrenceTime: {
pushRangeIds: {
rules: [{ required: false, message: this.$t('pleaseSelect') + this.$t('standardRegulationLibrary.dynamicMessage.pushRange') }],
validateTrigger: 'change'
},
// 文件说明
respondent: {
fileDescription: {
rules: [{ required: false, message: this.$t('pleaseEnter') + this.$t('fileDeclaration') }],
validateTrigger: 'blur'
}
@@ -106,8 +96,11 @@ export default {
this.visible = true
},
edit (record) {
this.modal = Object.assign({}, record)
this.visible = true
this.modal = Object.assign({}, record)
this.$nextTick(() => {
this.form.setFieldsValue(this.modal)
})
},
handleOk () {
this.form.validateFields((errors, values) => {
@@ -15,17 +15,17 @@
<a-input :placeholder="$t('pleaseEnter') + $t('treeRight.folderName')"
@change="event => event.target.value = event.target.value.trim()"
:maxLength="50"
v-decorator="['nodeName', validatorRules.nodeName]" />
v-decorator="['folderName', validatorRules.folderName]" />
</a-form-item>
<!--管理权限-->
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('treeRight.administrativePrivileges')">
<user-selection :placeholder="$t('pleaseSelect') + $t('treeRight.administrativePrivileges')"
v-decorator="['nodeName', validatorRules.nodeName]" />
v-decorator="['authManageIds', validatorRules.authManageIds]" />
</a-form-item>
<!--查看权限-->
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('treeRight.checkPermissions')">
<user-selection :placeholder="$t('pleaseSelect') + $t('treeRight.administrativePrivileges')"
v-decorator="['nodeName', validatorRules.nodeName]" />
<user-selection :placeholder="$t('pleaseSelect') + $t('treeRight.checkPermissions')"
v-decorator="['authViewIds', validatorRules.authViewIds]" />
</a-form-item>
<!--文件夹顺序-->
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('treeRight.folderOrder')">
@@ -33,7 +33,7 @@
@change="event => event.target.value = event.target.value.trim()"
:maxLength="50"
type="number"
v-decorator="['nodeName', validatorRules.nodeName]" />
v-decorator="['sort', validatorRules.sort]" />
</a-form-item>
</a-form>
@@ -41,7 +41,7 @@
</template>
<script>
import { addProfileCenterTree, editProfileCenterTree } from '../../../../api/standardRegulationLibraryApi.js'
import { addProfileCenterTree, editProfileCenterTree, addChildrenFolder } from '../../../../api/standardRegulationLibraryApi.js'
import UserSelection from '../../../../components/selection/UserSelection'
export default {
@@ -65,15 +65,33 @@ export default {
},
validatorRules: {
// 节点名称
nodeName: {
rules: [{ required: true, message: this.$t('pleaseEnter') + this.$t('standardRegulationLibrary.nodeName') }],
folderName: {
rules: [{ required: true, message: this.$t('pleaseEnter') + this.$t('treeRight.folderName') }],
validateTrigger: 'blur'
},
// 管理权限
authManageIds: {
rules: [{ required: false, message: this.$t('pleaseSelect') + this.$t('treeRight.administrativePrivileges') }],
validateTrigger: 'change'
},
// 查看权限
authViewIds:{
rules: [{ required: false, message: this.$t('pleaseSelect') + this.$t('treeRight.checkPermissions') }],
validateTrigger: 'change'
},
// 顺序
sort: {
rules: [{ required: true, message: this.$t('pleaseEnter') + this.$t('treeRight.folderOrder') }],
validateTrigger: 'blur'
}
}
},
peerOrNot: false // 是否同级
}
},
methods: {
add (parentInfo) {
add (parentInfo, peerOrNot) {
this.peerOrNot = peerOrNot
console.log(this.peerOrNot)
this.edit(parentInfo)
},
edit (record) {
@@ -96,8 +114,10 @@ export default {
let submitFunc
if (this.model.id) {
submitFunc = editProfileCenterTree
} else {
} else if (this.peerOrNot){
submitFunc = addProfileCenterTree
} else {
submitFunc = addChildrenFolder
}
submitFunc(formData).then(res => {
if (res.success) {