xuhuajiao
2 years ago
8 changed files with 729 additions and 41 deletions
-
1src/assets/styles/mixin.scss
-
41src/assets/styles/yxk-admin.scss
-
30src/views/system/archivesCategory/baseInfo/index.vue
-
119src/views/system/metadata/baseInfo/index.vue
-
19src/views/system/metadata/data.json
-
141src/views/system/metadata/dataList/index.vue
-
184src/views/system/metadata/form.vue
-
235src/views/system/metadata/index.vue
@ -0,0 +1,119 @@ |
|||||
|
<template> |
||||
|
<div class="system-base-info" style="display:flex; justify-content: flex-start;"> |
||||
|
<div class="base-info-left"> |
||||
|
<div class="info-item"> |
||||
|
<span>名称:</span> |
||||
|
<p>{{ selectedTreeItem.label }}</p> |
||||
|
</div> |
||||
|
<div class="info-item"> |
||||
|
<span>参照标准号:</span> |
||||
|
<p>GB/T39362-2020</p> |
||||
|
</div> |
||||
|
<div class="info-item"> |
||||
|
<span>参照标准名:</span> |
||||
|
<p>党政机关电子公文归档规范</p> |
||||
|
</div> |
||||
|
<div class="info-item"> |
||||
|
<span>参照标准类型:</span> |
||||
|
<p>党政机关电子公文归档规范</p> |
||||
|
</div> |
||||
|
<div class="info-item"> |
||||
|
<span>标准范围说明:</span> |
||||
|
<p>本标准适用于各级党政机关电子公文系统产生的电子 公文的归档和处理。其他机关和企业事业单位的电子 公文的归档和处理可参照执行。</p> |
||||
|
</div> |
||||
|
<div class="info-item"> |
||||
|
<span>默认方案:</span> |
||||
|
<el-switch v-model="defaultSetting" class="isDefault" disabled /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
// import { getNoFormatField } from '@/api/category/fileNoFormat' |
||||
|
export default { |
||||
|
name: 'BaseInfo', |
||||
|
props: { |
||||
|
selectedTreeItem: { |
||||
|
type: Object, |
||||
|
default: function() { |
||||
|
return { |
||||
|
label: '', |
||||
|
isType: '' |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
defaultSetting: false |
||||
|
} |
||||
|
}, |
||||
|
watch: { |
||||
|
selectedTreeItem: function(newValue, oldValue) { |
||||
|
if (newValue && newValue.id) { |
||||
|
this.initData() |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
created() { |
||||
|
console.log(this.selectedTreeItem) |
||||
|
if (this.selectedTreeItem && this.selectedTreeItem.id) { |
||||
|
this.initData() |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
initData() { |
||||
|
// getNoFormatField({ categoryId: this.selectedCategory.id }).then((res) => { |
||||
|
// this.fileNoFormatStr = '' |
||||
|
// res.forEach((item) => { |
||||
|
// this.fileNoFormatStr += item.fieldCnName + item.connector |
||||
|
// }) |
||||
|
// }) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
@mixin baseInfo-font-style{ |
||||
|
[data-theme="dark"] & { |
||||
|
color: #fff; |
||||
|
} |
||||
|
[data-theme="light"] & { |
||||
|
color: #0C0E1E; |
||||
|
} |
||||
|
} |
||||
|
.system-base-info { |
||||
|
.info-item { |
||||
|
span { |
||||
|
width: 100px; |
||||
|
} |
||||
|
p{ |
||||
|
@include baseInfo-font-style; |
||||
|
} |
||||
|
.isDefault{ |
||||
|
margin: 8px 0 0 10px; |
||||
|
::v-deep .el-switch__core{ |
||||
|
width: 28px !important; |
||||
|
height: 16px; |
||||
|
&::after{ |
||||
|
width: 12px; |
||||
|
height: 12px; |
||||
|
margin-left: 0; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
::v-deep .el-switch.is-checked .el-switch__core::after{ |
||||
|
margin-left: -13px !important; |
||||
|
} |
||||
|
::v-deep .el-switch.is-checked.is-disabled .el-switch__core{ |
||||
|
border-color: #0348f3 !important; |
||||
|
background-color: #0348f3 !important; |
||||
|
} |
||||
|
|
||||
|
</style> |
@ -0,0 +1,19 @@ |
|||||
|
[ |
||||
|
{ |
||||
|
"id": 1, |
||||
|
"label": "元数据方案", |
||||
|
"isType": 1, |
||||
|
"children": [ |
||||
|
{ |
||||
|
"id": 2, |
||||
|
"isType": 2, |
||||
|
"label": "精简方案" |
||||
|
}, |
||||
|
{ |
||||
|
"id": 3, |
||||
|
"isType": 2, |
||||
|
"label": "完全方案" |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
] |
@ -0,0 +1,141 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
<div class="head-container"> |
||||
|
<el-button size="mini" @click="crud.toAdd"> |
||||
|
<i class="iconfont icon-xinzeng" :disabled="crud.selections.length === 0" /> |
||||
|
新增 |
||||
|
</el-button> |
||||
|
<el-button size="mini" :disabled="crud.selections.length !== 1" @click="crud.toEdit(crud.selections)"> |
||||
|
<i class="iconfont icon-bianji" /> |
||||
|
编辑 |
||||
|
</el-button> |
||||
|
<el-button slot="reference" size="mini" :loading="crud.delAllLoading" :disabled="crud.selections.length === 0" @click="toDelete(crud.selections)"> |
||||
|
<i class="iconfont icon-shanchu" /> |
||||
|
删除 |
||||
|
</el-button> |
||||
|
</div> |
||||
|
<!--表单组件--> |
||||
|
<el-dialog append-to-body :close-on-click-modal="false" :before-close="crud.cancelCU" :visible="crud.status.cu > 0" :title="crud.status.title"> |
||||
|
<div class="setting-dialog"> |
||||
|
<el-form ref="form" inline :model="form" :rules="rules" size="small" label-width="100px"> |
||||
|
<el-form-item label="编号" prop="number"> |
||||
|
<el-input v-model="form.number" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="元数据元素" prop="meteItem"> |
||||
|
<el-input v-model="form.metaItem" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="顶级元数据" prop="isTop"> |
||||
|
<el-radio-group v-model="form.isTop"> |
||||
|
<el-radio label="1">是</el-radio> |
||||
|
<el-radio label="0">否</el-radio> |
||||
|
</el-radio-group> |
||||
|
</el-form-item> |
||||
|
<el-form-item v-if="form.isTop === '0'" label="父级" prop="parent"> |
||||
|
<el-select v-model="form.parent" style="width: 225px;"> |
||||
|
<el-option v-for="item in selectOptions" :key="item.value" :label="item.label" :value="item.label" /> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<div slot="footer" class="dialog-footer"> |
||||
|
<el-button type="text" @click="crud.cancelCU">取消</el-button> |
||||
|
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">确定</el-button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
<div> |
||||
|
<el-table |
||||
|
ref="table" |
||||
|
v-loading="crud.loading" |
||||
|
:data="crud.data" |
||||
|
highlight-current-row |
||||
|
row-key="id" |
||||
|
@select="crud.selectChange" |
||||
|
@select-all="crud.selectAllChange" |
||||
|
@selection-change="crud.selectionChangeHandler" |
||||
|
> |
||||
|
<el-table-column type="selection" width="55" /> |
||||
|
<el-table-column type="index" label="序号" /> |
||||
|
<el-table-column prop="number" label="编号" /> |
||||
|
<el-table-column :show-overflow-tooltip="true" prop="metaItem" label="元数据元素" /> |
||||
|
</el-table> |
||||
|
<!--分页组件--> |
||||
|
<pagination /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import CRUD, { presenter, header, form } from '@crud/crud' |
||||
|
import pagination from '@crud/Pagination' |
||||
|
|
||||
|
const defaultForm = { id: null, number: null, meteItem: null, isTop: null, parent: null } |
||||
|
|
||||
|
export default { |
||||
|
name: 'MetaDataList', |
||||
|
components: { pagination }, |
||||
|
cruds() { |
||||
|
return CRUD({ title: '元数据', url: 'api/users' }) |
||||
|
}, |
||||
|
mixins: [ |
||||
|
presenter(), |
||||
|
header(), |
||||
|
form(function() { |
||||
|
return Object.assign({ dicPid: this.dicPid }, defaultForm) |
||||
|
}) |
||||
|
], |
||||
|
data() { |
||||
|
return { |
||||
|
selectOptions: [ |
||||
|
{ |
||||
|
id: 1, |
||||
|
value: 'M1 公文标识', |
||||
|
label: 'M1 公文标识' |
||||
|
}, |
||||
|
{ |
||||
|
id: 2, |
||||
|
value: 'M2 文种', |
||||
|
label: 'M2 文种' |
||||
|
} |
||||
|
], |
||||
|
rules: { |
||||
|
number: [ |
||||
|
{ required: true, message: '编号不可为空', trigger: 'blur' } |
||||
|
], |
||||
|
meteItem: [ |
||||
|
{ required: true, message: '元数据元素不可为空', trigger: 'blur' } |
||||
|
], |
||||
|
isTop: [ |
||||
|
{ required: true, message: '请选择是否为顶级节点', trigger: 'change' } |
||||
|
], |
||||
|
parent: [ |
||||
|
{ required: true, message: '请选择父级元数据', trigger: 'change' } |
||||
|
] |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
[CRUD.HOOK.beforeRefresh]() { |
||||
|
}, |
||||
|
[CRUD.HOOK.afterRefresh]() { |
||||
|
}, |
||||
|
toDelete(datas) { |
||||
|
this.$confirm('此操作将删除当前所选元数据' + '<span>你是否还要继续?</span>', '提示', { |
||||
|
confirmButtonText: '继续', |
||||
|
cancelButtonText: '取消', |
||||
|
type: 'warning', |
||||
|
dangerouslyUseHTMLString: true |
||||
|
}).then(() => { |
||||
|
this.crud.delAllLoading = true |
||||
|
this.crud.doDelete(datas) |
||||
|
}).catch(() => { |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
::v-deep .el-dialog{ |
||||
|
padding: 0 16px; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,184 @@ |
|||||
|
<template> |
||||
|
<!--表单组件--> |
||||
|
<el-dialog append-to-body :close-on-click-modal="false" :before-close="crud.cancelCU" :visible="crud.status.cu > 0" :title="crud.status.title"> |
||||
|
<div class="setting-dialog"> |
||||
|
<el-form ref="form" inline :model="form" :rules="rules" size="small" label-width="100px"> |
||||
|
<el-form-item label="" prop="filterItem"> |
||||
|
<el-input v-model="form.name" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="参照标准类型" prop="filterItem"> |
||||
|
<el-select v-model="form.filterItem" style="width: 225px;"> |
||||
|
<el-option v-for="item in selectOptions" :key="item.value" :label="item.label" :value="item.label" /> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="参照标准号" prop="filterItem"> |
||||
|
<el-input v-model="form.name" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="参照标准名" prop="filterItem"> |
||||
|
<el-input v-model="form.name" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="标准范围说明" prop="filterItem"> |
||||
|
<el-input v-model="form.description" rows="5" type="textarea" style="width: 594px;" /> |
||||
|
</el-form-item> |
||||
|
<el-row> |
||||
|
<el-form-item label="默认方案" prop="filterItem"> |
||||
|
<el-radio-group v-model="form.isTop"> |
||||
|
<el-radio label="1">是</el-radio> |
||||
|
<el-radio label="0">否</el-radio> |
||||
|
</el-radio-group> |
||||
|
</el-form-item> |
||||
|
</el-row> |
||||
|
</el-form> |
||||
|
<div slot="footer" class="dialog-footer"> |
||||
|
<el-button type="text" @click="crud.cancelCU">取消</el-button> |
||||
|
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">确认</el-button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { getCategoryTree } from '@/api/category/category' |
||||
|
import { form } from '@crud/crud' |
||||
|
import CRUD from '@crud/crud' |
||||
|
|
||||
|
const defaultForm = { id: null, parentName: null, cnName: null, code: null, packing: '1', isType: null, makeType: 'piece', remark: null, templateId: null } |
||||
|
export default { |
||||
|
mixins: [ |
||||
|
form(function() { |
||||
|
return Object.assign({ pid: this.pid }, defaultForm) |
||||
|
}) |
||||
|
], |
||||
|
props: { |
||||
|
selectedCategory: { |
||||
|
type: Object, |
||||
|
default: function() { |
||||
|
return {} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
pid: null, |
||||
|
isAdd: false, |
||||
|
rules: { |
||||
|
parentLevel: [ |
||||
|
{ required: true, message: '所属父级不可为空', trigger: 'blur' } |
||||
|
], |
||||
|
cnName: [ |
||||
|
{ required: true, message: '名称不可为空', trigger: 'blur' } |
||||
|
], |
||||
|
isType: [ |
||||
|
{ required: true, message: '节点类型不可为空', trigger: 'change' } |
||||
|
], |
||||
|
code: [ |
||||
|
{ required: true, message: '编码不可为空', trigger: 'blur' } |
||||
|
], |
||||
|
packing: [ |
||||
|
{ required: true, message: '请选择是否装盒', trigger: 'change' } |
||||
|
], |
||||
|
makeType: [ |
||||
|
{ required: true, message: '请选择装盒类型', trigger: 'change' } |
||||
|
] |
||||
|
}, |
||||
|
selectOptions: [ |
||||
|
{ |
||||
|
value: '1', |
||||
|
label: '门类' |
||||
|
}, |
||||
|
{ |
||||
|
value: '2', |
||||
|
label: '文件夹' |
||||
|
} |
||||
|
], |
||||
|
templateTree: [], |
||||
|
selectedTemplateNode: {} |
||||
|
} |
||||
|
}, |
||||
|
created() { |
||||
|
this.getSelectOptions() |
||||
|
}, |
||||
|
methods: { |
||||
|
// 新建时,判断当前节点类型,“门类类型” option区分可选 |
||||
|
beforeToAdd() { |
||||
|
this.form.isType = null |
||||
|
if (this.selectedCategory.isType === 1) { |
||||
|
this.selectOptions.forEach(item => { |
||||
|
if (item.value === 4) { |
||||
|
item.typeState = true |
||||
|
} else { |
||||
|
item.typeState = false |
||||
|
} |
||||
|
}) |
||||
|
} else if (this.selectedCategory.isType === 2) { |
||||
|
this.selectOptions.forEach(item => { |
||||
|
if (item.value !== 3) { |
||||
|
item.typeState = true |
||||
|
} else { |
||||
|
item.typeState = false |
||||
|
} |
||||
|
}) |
||||
|
this.form.isType = 3 |
||||
|
} else if (this.selectedCategory.isType === 3) { |
||||
|
this.selectOptions.forEach(item => { |
||||
|
if (item.value !== 4) { |
||||
|
item.typeState = true |
||||
|
} else { |
||||
|
item.typeState = false |
||||
|
} |
||||
|
}) |
||||
|
this.form.isType = 4 |
||||
|
} |
||||
|
}, |
||||
|
[CRUD.HOOK.beforeSubmit]() { |
||||
|
if (this.form.templateId) { |
||||
|
this.form.children = [this.selectedTemplateNode] |
||||
|
} else { |
||||
|
this.form.children = null |
||||
|
} |
||||
|
}, |
||||
|
updateTemplateValue(node, instanceId) { |
||||
|
this.selectedTemplateNode = node |
||||
|
}, |
||||
|
changeType() { |
||||
|
this.isAdd = this.form.isType === '1' |
||||
|
// if (this.form.isType === 6) { |
||||
|
// // this.crudDict.getDicts() |
||||
|
// this.getTemplateTree() |
||||
|
// } else { |
||||
|
// this.form.dicExplain = null |
||||
|
// } |
||||
|
}, |
||||
|
getTemplateTree() { |
||||
|
getCategoryTree().then(res => { |
||||
|
this.templateTree = res |
||||
|
}) |
||||
|
}, |
||||
|
getSelectOptions() { |
||||
|
// getCategoryType().then(res => { |
||||
|
// for (const key in res) { |
||||
|
// this.selectOptions.push({ |
||||
|
// value: Number(key), |
||||
|
// label: res[key], |
||||
|
// typeState: false |
||||
|
// }) |
||||
|
// } |
||||
|
// }) |
||||
|
}, |
||||
|
normalizer(node) { |
||||
|
if (node.children && !node.children.length) { |
||||
|
delete node.children |
||||
|
} |
||||
|
return { |
||||
|
id: node.id, |
||||
|
label: node.cnName, |
||||
|
children: node.children, |
||||
|
isDisabled: node.isType !== 2 && node.isType !== 3 && node.isType !== 5 |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
</style> |
@ -0,0 +1,235 @@ |
|||||
|
<template> |
||||
|
<div class="app-container category-container"> |
||||
|
<!-- 门类列表 --> |
||||
|
<div class="container-main"> |
||||
|
<div class="elect-cont-left"> |
||||
|
<div class="head-container"> |
||||
|
<crudOperation :permission="permission"> |
||||
|
<template v-slot:left> |
||||
|
<el-button v-permission="permission.add" size="mini" :disabled="selectedTreeItem.isType === 2 " @click="crud.toAdd"> |
||||
|
<i class="iconfont icon-xinzeng" /> |
||||
|
新增 |
||||
|
</el-button> |
||||
|
<el-button v-permission="permission.edit" size="mini" :disabled="selectedTreeItem.isType === 1" @click="crud.toEdit(crud.selections[0])"> |
||||
|
<i class="iconfont icon-bianji" /> |
||||
|
编辑 |
||||
|
</el-button> |
||||
|
</template> |
||||
|
<template v-slot:right> |
||||
|
<el-button v-permission="permission.del" size="mini" :loading="crud.delAllLoading" :disabled="selectedTreeItem.isType === 1" @click="toDelete(crud.selections)"> |
||||
|
<i class="iconfont icon-shanchu" /> |
||||
|
删除 |
||||
|
</el-button> |
||||
|
</template> |
||||
|
</crudOperation> |
||||
|
</div> |
||||
|
<div class="container-left"> |
||||
|
<span class="right-top-line" /> |
||||
|
<span class="left-bottom-line" /> |
||||
|
<!--门类树状结构--> |
||||
|
<div class="tree-scroll"> |
||||
|
<el-tree ref="tree" v-loading="crud.loading" :data="treeList" :props="defaultProps" node-key="id" :expand-on-click-node="false" highlight-current :default-expanded-keys="[1]" :default-checked-keys="[1]" @node-click="handleNodeClick"> |
||||
|
<span slot-scope="{ node, data }" class="custom-tree-node"> |
||||
|
<span v-if="data.isType===1 " class="iconFolder"> |
||||
|
{{ data.label }} |
||||
|
</span> |
||||
|
<span v-if="data.isType===2 " class="iconFile"> |
||||
|
{{ data.label }} |
||||
|
</span> |
||||
|
</span> |
||||
|
</el-tree> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- 门类管理tab --> |
||||
|
<div class="elect-cont-right"> |
||||
|
<div class="container-right tab-content"> |
||||
|
<span class="right-top-line" /> |
||||
|
<span class="left-bottom-line" /> |
||||
|
<ul class="tab-nav"> |
||||
|
<li :class="{'active-tab-nav': activeIndex == 0}" @click="changeActiveTab(0)">基本信息<i /></li> |
||||
|
<li v-if="selectedTreeItem.isType && selectedTreeItem.isType === 2" :class="{'active-tab-nav': activeIndex == 1}" @click="changeActiveTab(1)">档案元数据<i /></li> |
||||
|
<!-- 最右侧装饰img --> |
||||
|
<span class="tab-right-img" /> |
||||
|
</ul> |
||||
|
<!-- :selected-category="selectedTreeItem" --> |
||||
|
<component :is="comName" :selected-tree-item="selectedTreeItem" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<el-dialog class="tip-dialog" title="提示" :visible.sync="deleteVisible" :before-close="handleClose"> |
||||
|
<div class="setting-dialog"> |
||||
|
<div class="tip-content"> |
||||
|
<p class="tipMsg">此操作将删除当前所选方案</p> |
||||
|
<span>你是否还要继续?</span> |
||||
|
</div> |
||||
|
<div slot="footer" class="dialog-footer"> |
||||
|
<el-button type="text" @click="deleteVisible = false">取消</el-button> |
||||
|
<el-button type="primary" @click.native="handleConfirm">确定</el-button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import crudCategory from '@/api/category/category' |
||||
|
import CRUD, { presenter, header } from '@crud/crud' |
||||
|
import baseInfo from './baseInfo/index' |
||||
|
import arcTableList from './dataList/index' |
||||
|
import crudOperation from '@crud/CRUD.operation' |
||||
|
import dataJson from './data.json' |
||||
|
|
||||
|
export default { |
||||
|
name: 'MetaData', |
||||
|
components: { crudOperation, baseInfo, arcTableList }, |
||||
|
cruds() { |
||||
|
return [ |
||||
|
CRUD({ |
||||
|
title: '元数据', url: 'api/archives-type/menu', |
||||
|
crudMethod: { ...crudCategory }, |
||||
|
optShow: { |
||||
|
add: false, |
||||
|
edit: false, |
||||
|
del: false, |
||||
|
download: false, |
||||
|
group: false |
||||
|
} |
||||
|
}) |
||||
|
] |
||||
|
}, |
||||
|
mixins: [presenter(), header()], |
||||
|
data() { |
||||
|
return { |
||||
|
permission: { |
||||
|
add: ['admin', 'category:add'], |
||||
|
edit: ['admin', 'category:edit'], |
||||
|
del: ['admin', 'category:del'], |
||||
|
sort: ['admin', 'category:sort'] |
||||
|
}, |
||||
|
defaultProps: { |
||||
|
children: 'children', |
||||
|
label: 'label' |
||||
|
}, |
||||
|
treeList: [], |
||||
|
deleteVisible: false, |
||||
|
selectedTreeItem: {}, |
||||
|
deleteData: {}, |
||||
|
activeIndex: 0, |
||||
|
brotherNodeNum: 0 |
||||
|
} |
||||
|
}, |
||||
|
computed: { |
||||
|
comName: function() { |
||||
|
if (this.activeIndex === 0) { |
||||
|
return 'baseInfo' |
||||
|
} else if (this.activeIndex === 1) { |
||||
|
return 'arcTableList' |
||||
|
} |
||||
|
return 'baseInfo' |
||||
|
} |
||||
|
}, |
||||
|
created() { |
||||
|
this.treeList = dataJson |
||||
|
}, |
||||
|
methods: { |
||||
|
// 展开选中的父级 |
||||
|
expandParents(node) { |
||||
|
node.expanded = true |
||||
|
if (node.parent) { |
||||
|
this.expandParents(node.parent) |
||||
|
} |
||||
|
}, |
||||
|
[CRUD.HOOK.afterRefresh]() { |
||||
|
let currentKey |
||||
|
if (localStorage.getItem('currentMetaDataKey')) { |
||||
|
currentKey = JSON.parse(localStorage.getItem('currentMetaDataKey')) |
||||
|
} else { |
||||
|
currentKey = this.treeList[0] |
||||
|
} |
||||
|
// 设置某个节点的当前选中状态 |
||||
|
this.$refs.tree.setCurrentKey(currentKey.id) |
||||
|
this.$nextTick(() => { |
||||
|
// 设置某个节点的父级展开 |
||||
|
const selectedKey = this.$refs.tree.getCurrentNode() |
||||
|
if (this.$refs.tree.getNode(selectedKey) && this.$refs.tree.getNode(selectedKey).parent) { |
||||
|
this.expandParents(this.$refs.tree.getNode(selectedKey).parent) |
||||
|
} |
||||
|
// 选中节点的门类详情 |
||||
|
this.handleNodeClick(selectedKey) |
||||
|
}) |
||||
|
}, |
||||
|
// 选中门类后,设置门类详情数据 |
||||
|
handleNodeClick(val) { |
||||
|
if (val) { |
||||
|
if (val.isType === 1) { |
||||
|
this.addBtnShow = true |
||||
|
} |
||||
|
this.selectedTreeItem = val |
||||
|
this.changeActiveTab(0) |
||||
|
} |
||||
|
}, |
||||
|
toDelete(data) { |
||||
|
this.deleteData = data |
||||
|
this.deleteVisible = true |
||||
|
}, |
||||
|
handleConfirm() { |
||||
|
this.deleteVisible = false |
||||
|
}, |
||||
|
handleClose(done) { |
||||
|
this.deleteData = {} |
||||
|
done() |
||||
|
}, |
||||
|
changeActiveTab(data) { |
||||
|
this.activeIndex = data |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
@mixin metadata-right-hide{ |
||||
|
[data-theme="dark"] & { |
||||
|
width: calc(100vw - 398px); |
||||
|
} |
||||
|
[data-theme="light"] & { |
||||
|
width: calc(100vw - 400px); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@mixin metadata-right-open{ |
||||
|
[data-theme="dark"] & { |
||||
|
width: calc(100vw - 600px); |
||||
|
} |
||||
|
[data-theme="light"] & { |
||||
|
width: calc(100vw - 600px); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.category-container{ |
||||
|
.elect-cont-left{ |
||||
|
width: 284px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.hideSidebar{ |
||||
|
// siderbar-收起 54 + 间距 60 + treeLeft 284 |
||||
|
.category-container{ |
||||
|
.elect-cont-right{ |
||||
|
@include metadata-right-hide; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.openSidebar{ |
||||
|
// siderbar-展开 256 + 间距 60 + treeLeft 284 |
||||
|
.category-container{ |
||||
|
.elect-cont-right{ |
||||
|
@include metadata-right-open; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.tree-scroll{ |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
</style> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue