资料目录管理;工作组成员维护

This commit is contained in:
zhaoxiao
2021-09-02 17:57:11 +08:00
parent d8b540041b
commit 365dc7f6bb
6 changed files with 255 additions and 163 deletions
@@ -9,52 +9,29 @@
</div>
<div class="data-directory-container">
<!-- 左侧区域-->
<div class="data-directory-container-left">
<!-- 查询区域-->
<div class="table-page-search-wrapper">
<a-input-search v-model="queryParam.name" @search="searchQuery" style="width:100%;margin-top: 10px" placeholder="请输入文件夹名称" allowClear/>
</div>
<!-- /查询区域-->
<a-tree
v-model="checkedKeys"
v-model="selectedRowKeys"
checkable
:expanded-keys="expandedKeys"
:auto-expand-parent="autoExpandParent"
:selected-keys="selectedKeys"
:tree-data="treeData"
:tree-data="dataSource"
:replaceFields="replaceFields"
@expand="onExpand"
@select="onSelect"
/>
</div>
<!-- /左侧区域-->
<div class="data-directory-container-divider"></div>
<!-- 右侧区域-->
<div class="data-directory-container-right">
<div class="part-title">
<div class="part-title-text">基本信息</div>
</div>
<a-form :form="form">
<a-form-item label="文件夹名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入文件夹名称"
v-decorator="['directoryName',validatorRules.directoryName]"
:maxLength='50'
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item>
<a-form-item label="上级名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入文件夹名称"
v-decorator="['directoryName',validatorRules.directoryName]"
:maxLength='50'
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item>
<a-form-item label="排序" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入文件夹名称"
v-decorator="['directoryName',validatorRules.directoryName]"
:maxLength='50'
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item>
<a-form-item label="备注" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-textarea
placeholder="请输入备注"
v-decorator="['remarks']"
:auto-size="{ minRows: 3, maxRows: 6 }"
:maxLength='200'
@change="e => {e.target.value = (e.target.value + '').trim()}"/>
</a-form-item>
</a-form>
<data-directory-module ref="dataDirectoryForm" @ok="dataDirectoryFormOk"></data-directory-module>
</div>
<!-- /右侧区域-->
</div>
</a-card>
</div>
@@ -64,96 +41,63 @@
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
import IconImg from '@/assets/imgs/icon/icon_committee.png'
import { JeroListMixin } from '@/mixins/JeroListMixin'
import DataDirectoryModule from './modules/DataDirectoryModule'
import { getAction } from '../../../api/manage'
export default {
name: 'DataDirectoryMaintenance',
components: { PageHeaderTitle },
components: { PageHeaderTitle, DataDirectoryModule },
mixins: [JeroListMixin],
data() {
return {
IconImg,
form: this.$form.createForm(this),
labelCol: {
xs: { span: 24 },
sm: { span: 4 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 18 }
},
validatorRules: {
directoryName: {
rules: [{ required: true, message: '请输入文件夹名称' }]
}
},
url: {
list: ''
list: '/payDataDirectory/payDataDirectory/queryByName',
queryById: '/payDataDirectory/payDataDirectory/getOne',
deleteBatch: '/payDataDirectory/payDataDirectory/deleteBatch'
},
treeData: [
{
title: '0-0',
key: '0-0',
children: [
{
title: '0-0-0',
key: '0-0-0',
children: [
{ title: '0-0-0-0', key: '0-0-0-0' },
{ title: '0-0-0-1', key: '0-0-0-1' },
{ title: '0-0-0-2', key: '0-0-0-2' }
]
},
{
title: '0-0-1',
key: '0-0-1',
children: [
{ title: '0-0-1-0', key: '0-0-1-0' },
{ title: '0-0-1-1', key: '0-0-1-1' },
{ title: '0-0-1-2', key: '0-0-1-2' }
]
},
{
title: '0-0-2',
key: '0-0-2'
}
]
},
{
title: '0-1',
key: '0-1',
children: [
{ title: '0-1-0-0', key: '0-1-0-0' },
{ title: '0-1-0-1', key: '0-1-0-1' },
{ title: '0-1-0-2', key: '0-1-0-2' }
]
},
{
title: '0-2',
key: '0-2'
}
],
expandedKeys: ['0-0-0', '0-0-1'],
autoExpandParent: true,
checkedKeys: ['0-0-0'],
selectedKeys: [],
checkedKeys: [],
columns: [], // 防止混入报错
replaceFields: {
children:'children',
title:'name',
key:'id'
}
}
},
methods: {
onExpand(expandedKeys) {
console.log('onExpand', expandedKeys);
console.log('onExpand', expandedKeys)
// if not set autoExpandParent to false, if children expanded, parent can not collapse.
// or, you can remove all expanded children keys.
this.expandedKeys = expandedKeys;
this.autoExpandParent = false;
this.expandedKeys = expandedKeys
this.autoExpandParent = false
},
onCheck(checkedKeys) {
console.log('onCheck', checkedKeys);
this.checkedKeys = checkedKeys;
console.log('onCheck', checkedKeys)
this.checkedKeys = checkedKeys
},
onSelect(selectedKeys, info) {
console.log('onSelect', info);
this.selectedKeys = selectedKeys;
/**
* 点击名称选中
* @param info
*/
onSelect(info) {
console.log('onSelect', info[0])
let param = {
id: info[0]
}
getAction(this.url.queryById, param).then(res => {
console.log(res)
this.$refs.dataDirectoryForm.edit(res.result)
})
},
handleAdd() {
this.$refs.dataDirectoryForm.add()
},
dataDirectoryFormOk() {
this.loadData()
}
}
}
</script>
@@ -161,36 +105,12 @@ export default {
<style scoped lang="less">
@import '~@assets/less/common.less';
.part-title {
padding: 10px 0;
font-size: 16px;
font-family: PingFang SC, PingFang SC-Bold;
font-weight: 700;
text-align: left;
color: #333333;
position: relative;
&-text {
padding-left: 20px;
}
&-text::before {
position: absolute;
content: "";
left: 0;
top: 50%;
transform: translateY(-50%);
width: 10px;
height: 10px;
background: #069f99;
}
}
.data-directory-container {
display: flex;
&-left {
width: 45%;
padding-right: 20px;
}
&-divider {
@@ -0,0 +1,144 @@
<template>
<div>
<div class="part-title">
<div class="part-title-text">基本信息</div>
</div>
<a-spin :spinning="confirmLoading">
<a-form :form="form">
<a-form-item label="文件夹名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入文件夹名称"
v-decorator="['name',validatorRules.name]"
:maxLength='50'
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item>
<a-form-item label="上级名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-select placeholder="请选择上级名称"
v-decorator="['parentId',validatorRules.parentId]"
:maxLength='50'>
<a-select-option v-for="item in directoryList" :key="item.id" :value="item.id">{{ item.name }}</a-select-option>
</a-select>
</a-form-item>
<a-form-item label="排序" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入排序"
v-decorator="['sort',validatorRules.sort]"
:maxLength='50'
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item>
<a-form-item label="备注" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-textarea
placeholder="请输入备注"
v-decorator="['remarks']"
:auto-size="{ minRows: 3, maxRows: 6 }"
:maxLength='200'
@change="e => {e.target.value = (e.target.value + '').trim()}"/>
</a-form-item>
<a-form-item class="table-operator">
<a-button type="primary" @click=handleOk>保存</a-button>
<a-button @click="handleCancle">取消</a-button>
</a-form-item>
</a-form>
</a-spin>
</div>
</template>
<script>
import pick from 'lodash.pick'
import { httpAction } from '../../../../api/manage'
export default {
name: 'DataDirectoryModule',
data() {
return {
form: this.$form.createForm(this),
model: {},
confirmLoading: false,
labelCol: {
xs: { span: 24 },
sm: { span: 4 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 18 }
},
validatorRules: {
name: {
rules: [{ required: true, message: '请输入文件夹名称' }],
validateTrigger: 'blur'
},
parentId: {
rules: [{ required: true, message: '请选择上级文件夹' }],
validateTrigger: 'blur'
}
},
url: {
add: '/payDataDirectory/payDataDirectory/add',
edit: '/payDataDirectory/payDataDirectory/edit'
},
directoryList: []
}
},
created() {
this.initDirectoryList()
},
methods: {
initDirectoryList() {
httpAction('/payDataDirectory/payDataDirectory/findall', {}, 'get').then(res => {
this.directoryList = res.result
let levelOne = {
id: 0,
name: '无父级'
}
this.directoryList.unshift(levelOne)
})
},
add() {
this.edit({})
},
edit(record) {
this.form.resetFields()
this.model = Object.assign({}, record)
this.$nextTick(() => {
this.form.setFieldsValue(pick(this.model, 'name', 'parentId', 'sort', 'remarks'))
})
},
handleOk() {
const that = this
// 触发表单验证
this.form.validateFields((err, values) => {
if (!err) {
let httpurl = ''
let method = 'post'
if (!this.model.id) {
httpurl += this.url.add
} else {
httpurl += this.url.edit
}
const formData = Object.assign(this.model, values)
formData.type = 1
console.log('表单提交数据', formData)
httpAction(httpurl, formData, method).then((res) => {
this.confirmLoading = true
if (res.success) {
that.$message.success(res.message)
that.$emit('ok')
that.close()
} else {
that.$message.warning(res.message)
}
}).finally(() => {
that.confirmLoading = false
this.initDirectoryList()
})
}
})
},
handleCancle() {
this.model = {}
}
}
}
</script>
<style scoped lang="less">
@import '~@assets/less/common.less';
</style>