<template>
|
<el-container v-loading="createViewLoading">
|
<el-aside>
|
<basic-container>
|
<div ref="TreeBox" style="height: calc(100vh - 154px);!important;">
|
|
<!-- 左侧树 -->
|
<div style="height: calc(100vh - 190px);">
|
<avue-tree ref="tree" v-loading="treeLoading" :data="treeData" :option="treeOption" @node-click="nodeClick">
|
<span slot-scope="{ node, data }" class="el-tree-node__label">
|
<span style="font-size: 15px">
|
<i class="el-icon-s-promotion"></i>
|
{{ (node || {}).label }}
|
</span>
|
</span>
|
</avue-tree>
|
</div>
|
</div>
|
</basic-container>
|
</el-aside>
|
<el-main>
|
<basic-container>
|
<div>
|
<el-button icon="el-icon-plus" plain size="small" type="primary" @click="addClickHandler">创建</el-button>
|
<el-button icon="el-icon-edit" plain size="small" type="primary" @click="editClickHandler">修改</el-button>
|
<el-button icon="el-icon-delete" plain size="small" type="danger" @click="deleteClickHandler">删除</el-button>
|
<el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">导出</el-button>
|
<el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadClickHandler">导入</el-button>
|
<el-button icon="el-icon-circle-plus-outline" plain size="small" type="primary" @click="createViewClickHandler">创建视图</el-button>
|
<el-button icon="el-icon-circle-plus-outline" plain size="small" type="primary" @click="indexClickHandler">创建索引</el-button>
|
<el-button icon="el-icon-menu" plain size="small" type="primary" @click="checkClickHandler">一致性检查</el-button>
|
<el-button icon="el-icon-delete" plain size="small" type="danger" @click="checkClickHandler">删除数据</el-button>
|
<el-button plain size="small" type="danger" @click="checkClickHandler">删除全部类型</el-button>
|
<el-button plain size="small" type="primary" @click="checkViewClickHandler">查看使用范围</el-button>
|
</div>
|
<div style="display: flex;justify-content: center; height: 230px;margin-top: 10px;">
|
<div class="descBox" style="max-height: 100px">
|
<el-descriptions :column="1" border class="margin-top" size="medium" title="属性信息">
|
<el-descriptions-item :contentStyle="descriptionOption.contentStyle"
|
:labelStyle="descriptionOption.labelStyle">
|
<template slot="label">
|
名称
|
</template>
|
<el-tag v-if="nodeRow.id">{{ nodeRow.id }}</el-tag>
|
</el-descriptions-item>
|
<el-descriptions-item :contentStyle="descriptionOption.contentStyle"
|
:labelStyle="descriptionOption.labelStyle">
|
<template slot="label">
|
标签
|
</template>
|
<el-tag v-if="nodeRow.name">{{ nodeRow.name }}</el-tag>
|
</el-descriptions-item>
|
<el-descriptions-item :contentStyle="descriptionOption.contentStyle"
|
:labelStyle="descriptionOption.labelStyle">
|
<template slot="label">
|
实现类
|
</template>
|
<el-tooltip v-if="nodeRow.implClass" :content="nodeRow.implClass" class="item" effect="dark"
|
placement="top-start">
|
<el-tag style="max-width: 250px;overflow: hidden">{{ nodeRow.implClass }}
|
</el-tag>
|
</el-tooltip>
|
</el-descriptions-item>
|
<el-descriptions-item :contentStyle="descriptionOption.contentStyle"
|
:labelStyle="descriptionOption.labelStyle">
|
<template slot="label">
|
描述
|
</template>
|
<span v-if="nodeRow.description">{{ nodeRow.description }}</span>
|
</el-descriptions-item>
|
</el-descriptions>
|
</div>
|
<div class="descBox">
|
<el-descriptions :column="1" border class="margin-top" size="medium" title="版本规则">
|
<el-descriptions-item :contentStyle="descriptionOption.contentStyle"
|
:labelStyle="descriptionOption.labelStyle">
|
<template slot="label">
|
版本规则
|
</template>
|
<el-tag v-if="nodeRow.revLevel"
|
:type="nodeRow.revLevel === '0' ? 'warning' : nodeRow.revLevel === '1' ? '' : 'success'">
|
{{
|
nodeRow.revLevel === '0'
|
? '不可修订'
|
: nodeRow.revLevel === '1'
|
? '采用一级版本管理'
|
: '采用二级版本管理'
|
}}
|
</el-tag>
|
</el-descriptions-item>
|
<el-descriptions-item v-if="nodeRow.revLevel !== '0'" :contentStyle="descriptionOption.contentStyle"
|
:labelStyle="descriptionOption.labelStyle">
|
<template slot="label">
|
版本号规则
|
</template>
|
<el-tag v-if="nodeRow.revisionRuleId">{{ nodeRow.revisionRuleId }}</el-tag>
|
</el-descriptions-item>
|
<el-descriptions-item v-if="nodeRow.revLevel !== '0'" :contentStyle="descriptionOption.contentStyle"
|
:labelStyle="descriptionOption.labelStyle">
|
<template slot="label">
|
分隔符
|
</template>
|
<el-tag v-if="nodeRow.delimiter">{{ nodeRow.delimiter }}</el-tag>
|
</el-descriptions-item>
|
<el-descriptions-item v-if="nodeRow.revLevel !== '0' && nodeRow.revLevel !== '1'"
|
:contentStyle="descriptionOption.contentStyle"
|
:labelStyle="descriptionOption.labelStyle">
|
<template slot="label">
|
版次号规则
|
</template>
|
<el-tag v-if="nodeRow.revisionRuleId"
|
:type="nodeRow.revisionRuleId === '0' ? 'warning' : nodeRow.revisionRuleId === '1' ? '' : 'success'">
|
{{
|
nodeRow.versionRule === '0'
|
? '1.2.3...'
|
: nodeRow.versionRule === '1'
|
? 'a.b.c...'
|
: '0.1.2...'
|
}}
|
</el-tag>
|
</el-descriptions-item>
|
|
</el-descriptions>
|
</div>
|
<div class="descBox">
|
<el-descriptions :column="1" border class="margin-top" size="medium" title="生命周期">
|
<el-descriptions-item :contentStyle="descriptionOption.contentStyle"
|
:labelStyle="descriptionOption.labelStyle">
|
<template slot="label">
|
生命周期
|
</template>
|
<el-tag v-if="nodeRow.lifeCycleId">{{ nodeRow.lifeCycleId }}</el-tag>
|
</el-descriptions-item>
|
</el-descriptions>
|
</div>
|
</div>
|
<div style="margin-top: 30px">
|
<h3>属性列表</h3>
|
<avue-crud
|
:data="attrData"
|
:option="attrOption">
|
</avue-crud>
|
</div>
|
</basic-container>
|
</el-main>
|
|
<!-- 新增 && 编辑 -->
|
<el-dialog
|
v-dialogDrag
|
:title="title === 'add' ? '创建' : '修改'"
|
:visible.sync="visible"
|
append-to-body="true"
|
class="avue-dialog"
|
width="75%"
|
@close="addDialogClose">
|
<el-form ref="form" :model="form" :rules="rules" label-width="95px">
|
<div class="dialogForm">
|
<div class="leftForm">
|
<el-form-item label="类型名称:" prop="id">
|
<el-input v-model="form.id" :readOnly="title === 'edit'"></el-input>
|
</el-form-item>
|
<el-form-item label="标签:">
|
<el-input v-model="form.name"></el-input>
|
</el-form-item>
|
<el-form-item label="继承自:">
|
<div style="display: flex;gap: 5px;align-items: center">
|
<el-input v-model="form.fName" :readOnly="true"></el-input>
|
<el-button :disabled="title === 'add'" plain size="small" style="margin-left: 5px;height: 30px"
|
type="success"
|
@click="inheritClickHandler">选择
|
</el-button>
|
</div>
|
</el-form-item>
|
<el-form-item label="实现类:">
|
<el-input v-model="form.implClass"></el-input>
|
</el-form-item>
|
<el-form-item label="描述">
|
<el-input v-model="form.description" :rows="2" type="textarea"></el-input>
|
</el-form-item>
|
</div>
|
<div class="centerForm">
|
<el-form-item label="版本规则:" label-width="110px" prop="revLevel">
|
<el-select v-model="form.revLevel" @change="revLevelChange">
|
<el-option label="不可修订" value="0"></el-option>
|
<el-option label="采用一级版本管理" value="1"></el-option>
|
<el-option label="采用二级版本管理" value="2"></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item v-if="form.revLevel !== '0'" label="版本号规则:" label-width="110px" prop="revisionRuleId">
|
<div style="display: flex;gap: 5px;align-items: center">
|
<el-input v-model="form.revisionRuleId" :readOnly="true"></el-input>
|
<el-button :disabled="form.inputRevisionFlag" plain size="small" style="margin-left: 5px;height: 30px"
|
type="success"
|
@click="versionAddHandler">添加
|
</el-button>
|
<el-switch
|
v-model="form.inputRevisionFlag"
|
active-text="手工输入"
|
style="width: 300px"
|
@change="form.revisionRuleId = ''">
|
</el-switch>
|
</div>
|
</el-form-item>
|
<el-form-item v-if="form.revLevel !== '0'" label="分隔符:" label-width="110px" prop="delimiter">
|
<el-select v-model="form.delimiter" clearable>
|
<el-option label="." value="."></el-option>
|
<el-option label="-" value="-"></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item v-if="form.revLevel !== '0' && form.revLevel !== '1'" label="版次号规则:" label-width="110px"
|
prop="versionRule">
|
<el-select v-model="form.versionRule" clearable>
|
<el-option label="1.2.3..." value="0"></el-option>
|
<el-option label="a.b.c..." value="1"></el-option>
|
<el-option label="0.1.2..." value="2"></el-option>
|
</el-select>
|
</el-form-item>
|
</div>
|
<div class="rightForm">
|
<el-form-item label="生命周期:" label-width="138px" prop="lifeCycleId">
|
<div style="display: flex;gap: 5px;align-items: center">
|
<el-input v-model="form.lifeCycleId" :readOnly="true"></el-input>
|
<el-button plain size="small" style="margin-left: 5px;height: 30px" type="success"
|
@click="lifeAddHandler('input')">添加
|
</el-button>
|
</div>
|
</el-form-item>
|
|
<el-form-item label="备选生命周期列表:" label-width="138px">
|
<div style="display: flex; align-items: center">
|
<div style="height: 200px; width: 280px; border: 1px solid #bdbbbb;overflow-y: auto">
|
<!-- 内容 -->
|
<el-table
|
:data="dialogLifeTable"
|
:show-header="false"
|
style="width: 100%">
|
<el-table-column
|
align="center"
|
prop="id">
|
</el-table-column>
|
<el-table-column
|
fixed="right"
|
label="操作"
|
width="60">
|
<template slot-scope="scope">
|
<el-button
|
size="small"
|
style="color:#F56C6C;"
|
type="text"
|
@click.native.prevent="dialogDeleteLifeTable(scope.$index)">
|
移除
|
</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
</div>
|
<el-button plain size="mini" style="margin-left: 5px" type="success"
|
@click="lifeAddHandler('table')">添加
|
</el-button>
|
|
</div>
|
</el-form-item>
|
</div>
|
</div>
|
</el-form>
|
<div class="bottomForm">
|
<h3>属性池列表</h3>
|
<avue-crud
|
:data="dialogAttrData"
|
:option="dialogAttrOption"
|
@row-del="dialogBottomAttrDel">
|
<template slot="menuLeft">
|
<el-button icon="el-icon-plus" size="small" type="primary" @click="addDialogClickHandler">创建</el-button>
|
</template>
|
</avue-crud>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="addDialogClose">取 消</el-button>
|
<el-button type="primary" @click="addDialogSavaHandler">确 定</el-button>
|
</span>
|
</el-dialog>
|
|
<!-- 属性池添加 -->
|
<el-dialog
|
v-dialogDrag
|
:visible.sync="attrPollDialogVisible"
|
append-to-body="true"
|
class="avue-dialog"
|
title="属性池"
|
width="60%"
|
@close="dialogAttrClose"
|
>
|
<avue-crud
|
:key="dialogAttrReload"
|
ref="dialogAttrCrud"
|
:data="dialogAttrSaveData"
|
:option="dialogAttrSaveOption"
|
:page.sync="attrPage"
|
:table-loading="dialogAttrLoading"
|
@selection-change="dialogAttrSelectChange"
|
@row-click="dialogAttrRowClickHandler"
|
@size-change="attrSizeChange"
|
@current-change="attrCurrentChange"
|
@search-change="attrHandleSearch"
|
@search-reset="attrHandleReset"
|
>
|
</avue-crud>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="dialogAttrClose">取 消</el-button>
|
<el-button type="primary" @click="dialogAttrAddClickHandler">确 定</el-button>
|
</span>
|
</el-dialog>
|
|
<!-- 版本号规则选择 -->
|
<el-dialog
|
v-dialogDrag
|
:visible.sync="dialogVersionVisible"
|
append-to-body="true"
|
class="avue-dialog"
|
title="版本号规则"
|
width="60%"
|
>
|
|
<avue-crud
|
:key="dialogVersionKey"
|
ref="dialogAttrCrud"
|
:data="dialogVersionData"
|
:option="dialogVersionOption"
|
:table-loading="dialogVersionLoading"
|
@row-click="dialogVersionRowClick"
|
@search-change="versionHandleSearch"
|
@search-reset="versionHandleReset"
|
>
|
</avue-crud>
|
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="dialogVersionVisible = false">取 消</el-button>
|
<el-button type="primary" @click="dialogVersionAddClickHandler">确 定</el-button>
|
</span>
|
|
</el-dialog>
|
|
<!-- 生命周期 -->
|
<el-dialog
|
v-dialogDrag
|
:visible.sync="dialogLfeVisible"
|
append-to-body="true"
|
class="avue-dialog"
|
title="生命周期模板"
|
width="60%"
|
>
|
<avue-crud
|
:key="dialogLifeKey"
|
ref="dialogAttrCrud"
|
:data="dialogLifeData"
|
:option="dialogLifeOption"
|
:table-loading="dialogLifeLoading"
|
@row-click="dialogLifeRowClick"
|
@search-change="lifeHandleSearch"
|
@search-reset="lifeHandleReset"
|
>
|
</avue-crud>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="dialogLfeVisible = false">取 消</el-button>
|
<el-button type="primary" @click="dialogLifeAddClickHandler">确 定</el-button>
|
</span>
|
|
</el-dialog>
|
|
<!-- 继承自 -->
|
<el-dialog
|
v-dialogDrag
|
:visible.sync="dialogInheritVisible"
|
append-to-body="true"
|
class="avue-dialog"
|
title="继承业务类型"
|
width="30%"
|
@close="inheritClose"
|
>
|
<avue-tree ref="inheritTree" v-model="treeForm" :data="inheritTreeData" :option="inheritTreeOption"
|
@node-click="inheritNodeClick">
|
<span slot-scope="{ node, data }" class="el-tree-node__label">
|
<span style="font-size: 15px">
|
<i class="el-icon-s-promotion"></i>
|
{{ (node || {}).label }}
|
</span>
|
</span>
|
</avue-tree>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="inheritClose">取 消</el-button>
|
<el-button type="primary" @click="inheritSaveClickHandler">确 定</el-button>
|
</span>
|
</el-dialog>
|
|
<!-- 导入 -->
|
<upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" :tipList="tipList" title="导入"
|
@updata="getTreeList"></upload-file>
|
|
<!-- 查看使用范围 -->
|
<el-dialog
|
v-dialogDrag
|
:visible.sync="checkViewVisible"
|
append-to-body="true"
|
class="avue-dialog"
|
title="查看使用范围"
|
width="60%"
|
>
|
<avue-crud
|
ref="checkViewCrud"
|
:data="checkViewData"
|
:option="checkViewOption"
|
:table-loading="checkViewLoading"
|
@search-change="checkHandleSearch"
|
@search-reset="checkHandleReset"
|
>
|
</avue-crud>
|
</el-dialog>
|
|
<!-- 一致性检查 -->
|
<el-dialog
|
v-dialogDrag
|
:visible.sync="conCheckVisible"
|
append-to-body="true"
|
class="avue-dialog"
|
title="一致性检查"
|
width="60%"
|
>
|
<avue-crud
|
:data="conCheckData"
|
:option="conCheckOption"
|
:table-loading="conCheckLoading">
|
</avue-crud>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="conCheckVisible = false">取 消</el-button>
|
<el-button type="primary" @click="repairClickHandler">修 复</el-button>
|
</span>
|
</el-dialog>
|
|
<!-- 查看索引 -->
|
<el-dialog
|
v-dialogDrag
|
:visible.sync="indexVisible"
|
append-to-body="true"
|
class="avue-dialog"
|
title="索引信息"
|
width="60%"
|
@close="indexDialogClose"
|
>
|
<div v-loading="indexLoading" style="display: flex;height: 500px;width: 100%">
|
<basic-container>
|
<div style="height: 390px">
|
<el-button plain size="mini" style="margin-bottom: 5px" type="danger"
|
@click="deleteIndexLeftTreeClickHandler">删除索引
|
</el-button>
|
<avue-tree
|
:data="indexLeftData"
|
:option="indexLeftOption"
|
@node-click="indexLeftNodeClick"></avue-tree>
|
</div>
|
</basic-container>
|
<div style="padding: 20px;width: 75%">
|
<div>
|
<el-form ref="form" :model="indexForm" label-width="90px" size="mini">
|
<el-form-item label="索引名称:">
|
<el-input v-model="indexForm.name" :readOnly="indexFormRead"></el-input>
|
</el-form-item>
|
<el-form-item label="描述:">
|
<el-input v-model="indexForm.desc"></el-input>
|
</el-form-item>
|
</el-form>
|
<div style="display: flex;justify-content: center">
|
<el-button plain size="mini" type="success" @click="rightIndexAddClick">增加</el-button>
|
<el-button plain size="mini" type="danger">删除</el-button>
|
</div>
|
</div>
|
<avue-crud
|
:data="indexData"
|
:option="indexOption"></avue-crud>
|
</div>
|
</div>
|
<el-dialog
|
v-dialogDrag
|
:visible.sync="indexAttrVisible"
|
append-to-body="true"
|
class="avue-dialog"
|
title="属性信息"
|
width="60%"
|
>
|
<avue-crud
|
:data="indexAttrData"
|
:option="indexAttrOption"
|
@row-click="indexAttrRowClick"></avue-crud>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="indexAttrVisible = false">取 消</el-button>
|
<el-button type="primary" @click="indexAttrClickAddHandler">确 定</el-button>
|
</span>
|
</el-dialog>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="indexDialogClose">取 消</el-button>
|
<el-button type="primary" @click="indexClickAddHandler">保 存</el-button>
|
</span>
|
</el-dialog>
|
|
</el-container>
|
</template>
|
|
<script>
|
import basicOption from '@/util/basic-option'
|
import {
|
getBizTypes,
|
addLifeCycle,
|
updateLifeCycle,
|
deleteBtmType,
|
createView,
|
expData,
|
getUsedBtmLinkList,
|
checkBtmConsistency,
|
executeRepair,
|
getIndexByCondition,
|
delIndex,
|
getAllAttributesByBtmId,
|
addIndex
|
} from "@/api/modeling/businessType/api"
|
import {gridAttribute} from "@/api/modeling/attributePool/api";
|
import func from "@/util/func";
|
import {getUsedVersionRuleList, getVersionRuleAllList} from "@/api/modeling/version/api";
|
import {gridLifeCycle} from "@/api/modeling/lifeCycle/api";
|
|
export default {
|
name: "index",
|
data() {
|
return {
|
indexLoading: false,
|
indexFormRead: false,
|
indexAttrRow: {},
|
indexAttrOption: {
|
...basicOption,
|
height: 380,
|
highlightCurrentRow: true,
|
addBtn: false,
|
refreshBtn: false,
|
editBtn: false,
|
delBtn: false,
|
selection: false,
|
menu: false,
|
column: [
|
{
|
label: '属性信息',
|
prop: 'id',
|
sortable: true,
|
},
|
]
|
},
|
indexAttrData: [],
|
indexData: [],
|
indexAttrVisible: false,
|
indexLeftNodeRow: {},
|
indexForm: {
|
name: '',
|
desc: ''
|
},
|
indexLeftData: [],
|
indexLeftOption: {
|
height: 'auto',
|
menu: false,
|
addBtn: false,
|
props: {
|
label: 'name',
|
value: 'id',
|
children: 'children',
|
},
|
},
|
indexOption: {
|
...basicOption,
|
height: 280,
|
addBtn: false,
|
refreshBtn: false,
|
editBtn: false,
|
delBtn: false,
|
selection: false,
|
menu: false,
|
column: [
|
{
|
label: '业务类型名称',
|
prop: 'typeName',
|
sortable: true,
|
},
|
{
|
label: '索引名称',
|
prop: 'indexName',
|
sortable: true,
|
},
|
{
|
label: '属性名称',
|
prop: 'attrNames',
|
sortable: true,
|
},
|
{
|
label: '描述',
|
prop: 'desc',
|
sortable: true,
|
},
|
]
|
},
|
indexVisible: false,
|
conDefaultCheckData: [], // 保留上个接口返回的数据
|
conCheckLoading: false,
|
conCheckOption: {
|
...basicOption,
|
menu: false,
|
addBtn: false,
|
index: false,
|
selection: false,
|
refreshBtn: false,
|
column: [
|
{
|
label: '类型名',
|
prop: 'id',
|
},
|
{
|
label: '操作',
|
prop: 'methods',
|
},
|
{
|
label: '状态',
|
prop: 'status',
|
}
|
]
|
},
|
conCheckData: [],
|
conCheckVisible: false,
|
checkViewVisible: false,
|
checkViewData: [],
|
checkViewDataSearch: [],
|
checkViewLoading: false,
|
checkViewOption: {
|
...basicOption,
|
addBtn: false,
|
menu: false,
|
searchMenuSpan: 8,
|
refreshBtn: false,
|
selection: false,
|
column: [
|
{
|
label: '名称',
|
prop: 'name',
|
sortable: true,
|
},
|
{
|
label: '来源',
|
prop: 'source',
|
sortable: true,
|
search: true
|
},
|
{
|
label: '说明',
|
prop: 'description',
|
}
|
]
|
},
|
tipList: [
|
"导入业务名称不可为空且链接类型名称只能为英文字母",
|
"导入的文件包括属性、业务类型、生命周期等文件",
|
"上传的文件为压缩文件,且压缩格式仅能为zip格式"
|
],
|
upFileType: ['zip'],
|
fileUrl: 'api/linkTypeController/impData',
|
createViewLoading: false, // 创建视图
|
versionAddFlag: false,
|
treeForm: {},
|
inheritNodeRow: {},
|
inheritTreeOption: {
|
height: 'auto',
|
defaultExpandAll: false,
|
menu: false,
|
addBtn: false,
|
props: {
|
label: 'id',
|
value: 'id',
|
children: 'children'
|
}
|
},
|
inheritTreeData: [],
|
dialogInheritVisible: false,
|
dialogLifeDefalutData: [], // 查询重置默认数据
|
lifeType: '',
|
dialogLifeTable: [],
|
dialogLifeSaveRow: {},
|
dialogLifeKey: Math.random(),
|
dialogLifeData: [],
|
dialogLifeOption: {
|
...basicOption,
|
addBtn: false,
|
selection: false,
|
refreshBtn: false,
|
menu: false,
|
height: 450,
|
searchMenuSpan: 8,
|
highlightCurrentRow: true,
|
column: [
|
{
|
label: '生命周期模板名',
|
prop: 'id',
|
searchLabelWidth: 120,
|
search: true
|
}
|
]
|
},
|
dialogLifeLoading: false,
|
dialogLfeVisible: false,
|
dialogVersionDefalutData: [], // 查询重置默认数据
|
dialogSwitchValue: false,
|
dialogVersionSaveRow: {},
|
dialogVersionVisible: false,
|
dialogVersionKey: Math.random(),
|
dialogVersionData: [],
|
dialogVersionOption: {
|
...basicOption,
|
addBtn: false,
|
selection: false,
|
refreshBtn: false,
|
menu: false,
|
height: 450,
|
searchMenuSpan: 8,
|
highlightCurrentRow: true,
|
// calcHeight: 100,
|
column: [
|
{
|
label: '版本号规则',
|
prop: 'id',
|
searchLabelWidth: 110,
|
search: true
|
}
|
]
|
},
|
dialogVersionLoading: false,
|
dialogAttrSelectList: [],
|
searchAttrParams: {},
|
dialogAttrLoading: false,
|
dialogAttrReload: Math.random(),
|
attrPage: {
|
currentPage: 1,
|
pageSize: 30,
|
total: 0,
|
pageSizes: [30, 50, 100, 200],
|
},
|
dialogAttrSaveOption: {
|
...basicOption,
|
addBtn: false,
|
menu: false,
|
refreshBtn: false,
|
index: false,
|
highlightCurrentRow: true,
|
height: 450,
|
searchMenuSpan: 8,
|
column: [
|
{
|
label: '属性名',
|
prop: 'id',
|
sortable: true,
|
search: true,
|
},
|
{
|
label: '属性类型',
|
prop: 'attributeDataType',
|
sortable: true,
|
},
|
{
|
label: '初始值',
|
prop: 'defaultValue',
|
sortable: true,
|
},
|
{
|
label: '说明',
|
prop: 'description',
|
sortable: true,
|
overHidden: true
|
}
|
]
|
},
|
dialogAttrSaveData: [],
|
attrPollDialogVisible: false,
|
rules: {
|
id: [
|
{required: true, message: '请输类型名称', trigger: 'blur'},
|
{validator: this.validateEnglishOnly, trigger: 'blur'}
|
],
|
revLevel: [
|
{required: true, message: '请选择版本规则', trigger: 'blur'},
|
],
|
lifeCycleId: [
|
{required: true, message: '请选择生命周期', trigger: 'blur'},
|
]
|
},
|
dialogAttrData: [],
|
dialogAttrOption: {
|
...basicOption,
|
editBtn: false,
|
refreshBtn: false,
|
selection: false,
|
height: 210,
|
addBtn: false,
|
// index:false,
|
column: [
|
{
|
label: '属性名',
|
prop: 'id',
|
sortable: true,
|
},
|
{
|
|
prop: 'btmTypeId',
|
label: '业务类型',
|
sortable: true
|
},
|
{
|
label: '属性类型',
|
prop: 'attributeDataType',
|
sortable: true,
|
},
|
{
|
label: '初始值',
|
prop: 'defaultValue',
|
sortable: true,
|
},
|
{
|
label: '说明',
|
prop: 'description',
|
overHidden: true
|
}
|
]
|
},
|
title: '',
|
visible: false,
|
attrData: [],
|
attrOption: {
|
...basicOption,
|
calcHeight: -40,
|
addBtn: false,
|
menu: false,
|
index: false,
|
selection: false,
|
refreshBtn: false,
|
column: [
|
{
|
prop: 'id',
|
label: '属性名',
|
sortable: true
|
},
|
{
|
prop: 'btmTypeId',
|
label: '业务类型',
|
sortable: true
|
},
|
{
|
prop: 'attributeDataType',
|
label: '属性类型',
|
sortable: true
|
},
|
{
|
prop: 'defaultValue',
|
label: '默认值',
|
sortable: true
|
},
|
{
|
prop: 'description',
|
label: '说明',
|
overHidden: true
|
}
|
]
|
},
|
form: {
|
id: '', // 类型名称
|
name: '', // 标签
|
fName: '', // 继承自
|
implClass: '', // 实现类
|
description: '', // 描述
|
revLevel: '', // 版本规则
|
revisionRuleId: '',// 版本号规则
|
inputRevisionFlag: false, // 手工输入,
|
delimiter: '', // 分隔符
|
versionRule: '0', // 版次号规则
|
lifeCycleId: '', // 生命周期
|
subLifeCycleId: '', // 生命周期备选列表,
|
apNameArray: "", // 属性池列表’,‘分隔
|
},
|
nodeRow: {},
|
treeOption: {
|
height: 'auto',
|
defaultExpandedKeys: ['topNode'],
|
menu: false,
|
addBtn: false,
|
props: {
|
label: 'TreeName',
|
value: 'id',
|
children: 'children',
|
name: 'name'
|
}
|
},
|
treeData: [
|
{
|
TreeName: '业务类型树',
|
id: 'topNode',
|
children: []
|
}
|
],
|
descriptionOption: {
|
labelStyle: 'text-align:center;width:100px;',
|
contentStyle: 'max-width:200px;text-align:center;word-break;break-all;'
|
},
|
icons: {
|
id: 'el-icon-finished',
|
name: 'el-icon-tickets',
|
desc: 'el-icon-chat-line-square'
|
},
|
treeLoading: false
|
}
|
},
|
created() {
|
this.getTreeList();
|
},
|
mounted() {
|
},
|
methods: {
|
//树表查询
|
getTreeList() {
|
this.treeLoading = true;
|
getBizTypes().then(res => {
|
const data = res.data.data.map(item => {
|
this.processChildren(item); // 处理每个节点
|
item.attributes.TreeName = item.attributes.id;
|
return item.attributes; // 返回处理后的 attributes
|
});
|
this.treeData[0].children = data;
|
this.inheritTreeData = data;
|
this.treeLoading = false;
|
});
|
},
|
|
// 处理树形结构
|
processChildren(item) {
|
if (item.children && item.children.length > 0) {
|
item.attributes.children = item.children.map(child => {
|
child.attributes.TreeName = child.attributes.id;
|
this.processChildren(child); // 递归处理每个子节点
|
return child.attributes; // 只返回子节点的 attributes
|
});
|
}
|
},
|
|
// 树点击
|
nodeClick(row) {
|
this.attrData = row.attributes ? JSON.parse(row.attributes) : [];
|
this.nodeRow = row;
|
},
|
|
// 创建按钮
|
addClickHandler() {
|
if (func.isEmptyObject(this.nodeRow)) {
|
this.$message.error('请选择要添加的节点');
|
return;
|
}
|
this.title = 'add';
|
this.form.fName = this.nodeRow.id === 'topNode' ? "" : this.nodeRow.id;
|
console.log(this.nodeRow);
|
this.form.inputRevisionFlag = JSON.parse(this.form.inputRevisionFlag); // 字符串false转换为布尔值
|
this.visible = true;
|
},
|
|
// 关闭继承对话框
|
inheritClose() {
|
this.dialogInheritVisible = false;
|
this.$refs.inheritTree.setCurrentKey(null); // 取消当前选中的节点
|
},
|
|
// 继承按钮
|
inheritClickHandler() {
|
this.dialogInheritVisible = true;
|
},
|
|
// 继承树行点击
|
inheritNodeClick(row) {
|
this.inheritNodeRow = row;
|
},
|
|
// 继承树保存
|
inheritSaveClickHandler() {
|
this.form.fName = this.inheritNodeRow.id;
|
this.dialogInheritVisible = false;
|
},
|
|
// 对话框 属性池列表增加按钮
|
addDialogClickHandler() {
|
this.dialogAttrLoading = true;
|
this.attrPollDialogVisible = true;
|
this.dialogAttrReload = Math.random(); // 强制刷新表格 解决表格错行
|
this.getAttrDialogDta();
|
},
|
|
// 查询属性池列表数据
|
getAttrDialogDta() {
|
gridAttribute(this.attrPage.currentPage, this.attrPage.pageSize, this.searchAttrParams).then(res => {
|
const data = res.data.data;
|
this.dialogAttrSaveData = data;
|
this.attrPage.total = res.data.total;
|
this.dialogAttrLoading = false;
|
}).catch(err => {
|
this.$message.error(err);
|
});
|
},
|
|
// 新增属性池列表关闭对话框
|
dialogAttrClose() {
|
this.attrPollDialogVisible = false;
|
this.searchAttrParams = {};
|
},
|
|
// 添加属性池表格选择框
|
dialogAttrSelectChange(row) {
|
this.dialogAttrSelectList = row;
|
},
|
|
// 添加属性池 行点击
|
dialogAttrRowClickHandler(row) {
|
|
func.rowClickHandler(
|
row,
|
this.$refs.dialogAttrCrud,
|
this.attrLastIndex,
|
(newIndex) => {
|
this.attrLastIndex = newIndex;
|
},
|
() => {
|
this.selectList = [];
|
}
|
);
|
},
|
|
//添加属性池 条数
|
attrSizeChange(val) {
|
this.attrPage.pageSize = val;
|
this.getAttrDialogDta()
|
},
|
|
//添加属性池 页码
|
attrCurrentChange(val) {
|
this.attrPage.currentPage = val;
|
this.getAttrDialogDta();
|
},
|
|
//添加属性池 搜索
|
attrHandleSearch(params, done) {
|
if (func.isEmptyObject(params)) {
|
this.searchAttrParams = {};
|
} else {
|
this.searchAttrParams = {
|
"conditionMap[id]": "*" + params.id + "*"
|
};
|
}
|
|
this.getAttrDialogDta();
|
done();
|
},
|
|
//添加属性池 清空搜索
|
attrHandleReset() {
|
this.searchAttrParams = {};
|
this.getAttrDialogDta();
|
},
|
|
// 添加属性池 保存
|
dialogAttrAddClickHandler() {
|
let hasDuplicate = false;
|
|
// 先创建一个临时数组来存储不重复的项
|
const newItems = [];
|
|
this.dialogAttrSelectList.forEach(item => {
|
const exists = this.dialogAttrData.some(existingItem => existingItem.id === item.id);
|
|
if (exists) {
|
hasDuplicate = true;
|
return;
|
}
|
|
// 如果没有重复项,则将该项添加到临时数组中
|
newItems.push({
|
id: item.id,
|
attributeDataType: item.attributeDataType,
|
defaultValue: item.defaultValue,
|
description: item.description
|
});
|
});
|
|
if (hasDuplicate) {
|
this.$message.error('请检查是否有添加重复项!');
|
} else {
|
// 如果没有重复项,将新项添加到 dialogAttrData
|
this.dialogAttrData.push(...newItems);
|
this.attrPollDialogVisible = false;
|
}
|
},
|
|
// 属性池删除
|
dialogBottomAttrDel(form, index) {
|
this.dialogAttrData.splice(index, 1);
|
},
|
|
// 版本规则管理添加
|
versionAddHandler() {
|
this.dialogVersionVisible = true;
|
this.dialogVersionKey = Math.random(); // 打开时刷新表格避免表格错行
|
this.dialogVersionLoading = true;
|
getVersionRuleAllList().then(res => {
|
const data = res.data.data.map(item => {
|
return {
|
id: item.id
|
}
|
});
|
this.dialogVersionData = data;
|
this.dialogVersionDefalutData = data;
|
this.dialogVersionLoading = false;
|
}).catch(err => {
|
this.$message.error(err)
|
});
|
},
|
|
// 版本规则行点击
|
dialogVersionRowClick(row) {
|
this.dialogVersionSaveRow = row;
|
},
|
|
// 版本规则搜索
|
versionHandleSearch(params, done) {
|
const {id} = params;
|
|
if (!params.id) {
|
this.dialogVersionData = this.dialogVersionDefalutData;
|
return done();
|
}
|
;
|
|
this.dialogVersionData = this.dialogVersionDefalutData.filter(item => {
|
return item.id && item.id.includes(id);
|
});
|
|
done();
|
|
},
|
|
// 版本管理置空
|
versionHandleReset() {
|
this.dialogVersionData = this.dialogVersionDefalutData;
|
},
|
|
// 版本号规则保存
|
dialogVersionAddClickHandler() {
|
if (func.isEmptyObject(this.dialogVersionSaveRow)) {
|
this.$message.error('请至少选择一条数据');
|
return;
|
}
|
this.form.revisionRuleId = this.dialogVersionSaveRow.id;
|
this.dialogVersionVisible = false;
|
},
|
|
// 生命周期新增
|
lifeAddHandler(val) {
|
this.dialogLfeVisible = true;
|
this.dialogLifeKey = Math.random(); // 打开时刷新表格避免表格错行
|
this.dialogLifeLoading = true;
|
this.lifeType = val;
|
gridLifeCycle().then(res => {
|
const data = res.data.data.map(item => {
|
return {
|
id: item.id
|
}
|
});
|
this.dialogLifeData = data;
|
this.dialogLifeDefalutData = data;
|
this.dialogLifeLoading = false
|
}).catch(err => {
|
this.$message.error(err)
|
});
|
},
|
|
// 生命周期行点击
|
dialogLifeRowClick(row) {
|
this.dialogLifeSaveRow = row;
|
},
|
|
// 生命周期保存
|
dialogLifeAddClickHandler() {
|
if (func.isEmptyObject(this.dialogLifeSaveRow)) {
|
this.$message.error('请至少选择一条数据');
|
return;
|
}
|
if (this.lifeType === 'input') {
|
this.form.lifeCycleId = this.dialogLifeSaveRow.id;
|
} else {
|
const flag = this.dialogLifeTable.some(item => item.id === this.dialogLifeSaveRow.id);
|
|
if (flag) {
|
this.$message.error('已存在相同的数据,请添加其他数据');
|
return;
|
}
|
this.dialogLifeTable.push(this.dialogLifeSaveRow);
|
}
|
this.dialogLfeVisible = false;
|
},
|
|
// 生命周期备选列表移除
|
dialogDeleteLifeTable(index) {
|
this.dialogLifeTable.splice(index, 1)
|
},
|
|
// 生命周期搜索
|
lifeHandleSearch(params, done) {
|
const {id} = params;
|
|
if (!params.id) {
|
this.dialogLifeData = this.dialogLifeDefalutData;
|
return done();
|
}
|
;
|
|
this.dialogLifeData = this.dialogLifeDefalutData.filter(item => {
|
return item.id && item.id.includes(id);
|
});
|
|
done();
|
|
},
|
|
// 生命周期重置
|
lifeHandleReset() {
|
this.dialogLifeData = this.dialogLifeDefalutData;
|
},
|
|
// 只能输入英文正则校验
|
validateEnglishOnly(rule, value, callback) {
|
if (!value) {
|
return callback(new Error('请输入类型名称'));
|
}
|
if (!/^[A-Za-z]+$/.test(value)) {
|
return callback(new Error('只能输入英文字母'));
|
}
|
callback(); // 验证通过
|
},
|
|
// 清空表单
|
resetForm() {
|
const form = {
|
id: '', // 类型名称
|
name: '', // 标签
|
fName: '', // 继承自
|
implClass: '', // 实现类
|
description: '', // 描述
|
revLevel: '', // 版本规则
|
revisionRuleId: '',// 版本号规则
|
inputRevisionFlag: 'false', // 手工输入
|
delimiter: '', // 分隔符
|
versionRule: '0', // 版次号规则
|
lifeCycleId: '', // 生命周期
|
subLifeCycleId: '', // 生命周期备选列表,
|
apNameArray: "", // 属性池列表’,‘分隔
|
};
|
this.dialogLifeTable = []; // 将生命周期表格置空
|
this.dialogAttrData = []; // 将属性池表格置空
|
this.form = {...form};
|
this.$refs.form.clearValidate();
|
},
|
|
// 新增编辑对话框取消
|
addDialogClose() {
|
this.resetForm();
|
this.visible = false;
|
},
|
|
// 版本规则切换 置空其他条件
|
revLevelChange() {
|
this.form.versionRule = "";
|
this.form.inputRevisionFlag = false;
|
this.form.delimiter = "";
|
this.form.versionRule = "0";
|
this.form.revisionRuleId = "";
|
},
|
|
// 新增编辑保存
|
addDialogSavaHandler() {
|
if (this.form.revLevel !== '0' &&!this.form.inputRevisionFlag && (!this.form.revisionRuleId || this.form.revisionRuleId === "")) {
|
this.$message.error('请检查版本号规则不能为空');
|
return;
|
}
|
this.form.subLifeCycleId = this.dialogLifeTable ? this.dialogLifeTable.map(item => item.id).join(',') : "";
|
this.form.apNameArray = this.dialogAttrData ? this.dialogAttrData.map(item => item.id).join(',') : "";
|
this.$refs.form.validate((valid) => {
|
const saveFunction = this.title === 'add' ? addLifeCycle : updateLifeCycle;
|
if (valid) {
|
if (this.form.revLevel === 0) {
|
this.form.versionRule = "";
|
}
|
saveFunction(this.form).then(res => {
|
if (res.data.code === 200) {
|
this.$message.success(res.data.obj);
|
this.getTreeList();
|
this.resetForm();
|
this.visible = false;
|
}
|
})
|
} else {
|
return false;
|
}
|
});
|
},
|
|
// 编辑按钮点击事件
|
editClickHandler() {
|
/**
|
* id 名称
|
* name 标签
|
* implClass 实现类
|
* fName 继承自
|
* description 描述
|
* revLevel 版本规则
|
* revisionRuleId 版本号规则
|
* inputRevisionFlag 手工输入
|
* delimiter 分隔符
|
* versionRule 版次号规则
|
* lifeCycleId 生命周期
|
* lifeCycleIds 生命周期列表
|
* attributes 属性池列表
|
*/
|
if (func.isEmptyObject(this.nodeRow)) {
|
this.$message.error('请至少选择一条数据');
|
return;
|
}
|
if (this.nodeRow.id === 'topNode') {
|
this.$message.error('请选择子节点进行修改')
|
return;
|
}
|
this.form = {...this.nodeRow};
|
this.form.inputRevisionFlag = JSON.parse(this.form.inputRevisionFlag); // 字符串false转换为布尔值
|
// this.form.fName = this.nodeRow.id === 'topNode' ? "" : this.nodeRow.id;
|
this.dialogLifeTable = (this.nodeRow.lifeCycleIds && this.nodeRow.lifeCycleIds.trim())
|
? this.nodeRow.lifeCycleIds.split(',').map(item => ({id: item.trim()}))
|
: [];
|
this.dialogAttrData = this.nodeRow.attributes ? JSON.parse(this.nodeRow.attributes) : [];
|
this.title = 'edit';
|
this.visible = true;
|
console.log(this.form);
|
},
|
|
// 删除按钮
|
deleteClickHandler() {
|
if (func.isEmptyObject(this.nodeRow)) {
|
this.$message.error('请至少选择一条数据');
|
return;
|
}
|
;
|
this.$confirm('您确定要删除所选择的数据吗?', '提示', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
type: 'warning'
|
}).then(() => {
|
const {id, oid, ts} = this.nodeRow;
|
const obj = {id, oid, ts};
|
deleteBtmType(obj).then(res => {
|
if (res.data.code === 200) {
|
this.$message.success(res.data.obj);
|
this.getTreeList();
|
}
|
})
|
}).catch(() => {
|
this.$message({
|
type: 'info',
|
message: '已取消删除'
|
});
|
});
|
},
|
|
// 创建视图
|
createViewClickHandler() {
|
this.createViewLoading = true;
|
createView().then(res => {
|
if (res.data.code === 200) {
|
this.createViewLoading = false;
|
this.$message.success(res.data.obj);
|
}
|
}).catch(err => {
|
this.createViewLoading = false;
|
})
|
},
|
|
// 导出
|
exportClickHandler() {
|
if (func.isEmptyObject(this.nodeRow)) {
|
this.$message.error('请至少选择一条数据');
|
return;
|
}
|
let name = this.nodeRow.id;
|
expData({name: name}).then(res => {
|
func.downloadFileByBlobHandler(res);
|
this.$message.success('导出成功');
|
}).catch(err => {
|
this.$message.error(err);
|
});
|
},
|
|
// 导入
|
upLoadClickHandler() {
|
this.$refs.upload.visible = true;
|
},
|
|
// 查看使用范围按钮
|
checkViewClickHandler() {
|
if (func.isEmptyObject(this.nodeRow)) {
|
this.$message.error('请至少选择一条数据!');
|
return;
|
}
|
getUsedBtmLinkList({btmName: this.nodeRow.id}).then(res => {
|
if (res.data.code === 200) {
|
this.checkViewVisible = true;
|
const data = res.data.data.map(item => {
|
return {
|
name: this.nodeRow.id,
|
source: item
|
}
|
});
|
this.checkViewData = data;
|
this.checkViewDataSearch = data;
|
}
|
})
|
},
|
|
// 查看使用范围查询
|
checkHandleSearch(params, done) {
|
const {source} = params;
|
|
if (!params.source) {
|
this.checkViewData = this.checkViewDataSearch;
|
return done();
|
}
|
;
|
|
this.checkViewData = this.checkViewDataSearch.filter(item => {
|
return item.source && item.source.includes(source);
|
});
|
|
done();
|
|
},
|
|
// 查看使用范围重置
|
checkHandleReset() {
|
this.checkViewData = this.checkViewDataSearch;
|
},
|
|
// 一致性检查按钮点击
|
checkClickHandler() {
|
this.createViewLoading = true;
|
checkBtmConsistency().then(res => {
|
this.createViewLoading = false;
|
if (res && res.data && res.data.data) {
|
this.conCheckVisible = true;
|
this.conCheckLoading = true;
|
if (res.data.code === 200) {
|
const data = res.data.data[0];
|
this.conDefaultCheckData = data; // 保留一份原始数据
|
this.conCheckLoading = false;
|
const outputData = [];
|
Object.entries(data).forEach(([id, methods]) => {
|
let action;
|
|
switch (methods) {
|
case '_CREATE':
|
action = '创建表';
|
break;
|
case '_ADD':
|
action = '增加列';
|
break;
|
case '_DROP':
|
action = '移除列';
|
break;
|
default:
|
action = '未知';
|
}
|
outputData.push({
|
id: id,
|
methods: action,
|
status: '未修复'
|
})
|
})
|
this.conCheckData = outputData;
|
}
|
} else {
|
this.$message.success(res.data.msg);
|
}
|
})
|
},
|
|
// 修复一致性检查
|
repairClickHandler() {
|
const params = this.conDefaultCheckData;
|
executeRepair(params).then(res => {
|
if (res.data.obj) {
|
this.$message.success('修复成功');
|
this.conCheckData = [];
|
} else {
|
this.$message.error('修复失败,请重新尝试!');
|
}
|
this.conCheckVisible = false;
|
})
|
},
|
|
// 创建索引按钮点击
|
indexClickHandler() {
|
if (func.isEmptyObject(this.nodeRow)) {
|
this.$message.error('请至少选择一条数据');
|
return;
|
}
|
this.getLeftIndex();
|
this.indexVisible = true;
|
},
|
|
// 左侧树更新
|
getLeftIndex() {
|
const params = {
|
"conditionMap[typename]": this.nodeRow.id
|
}
|
getIndexByCondition(params).then(res => {
|
if (res.data.code === 200) {
|
const data = res.data.data.map(item => {
|
return {
|
indexName: item.indexName,
|
name: `${item.indexName} ${item.attrNames}`,
|
id: item.oid
|
}
|
})
|
this.indexLeftData = data;
|
}
|
})
|
},
|
|
// 索引左侧树点击
|
indexLeftNodeClick(row) {
|
this.indexLeftNodeRow = row;
|
},
|
|
// 删除左侧树索引
|
deleteIndexLeftTreeClickHandler() {
|
if (func.isEmptyObject(this.indexLeftNodeRow)) {
|
this.$message.error('请选择一条数据进行删除');
|
return;
|
}
|
const params = {
|
btmName: this.nodeRow.id,
|
indexName: this.indexLeftNodeRow.indexName
|
};
|
delIndex(params).then(res => {
|
if (res.data.code === 200) {
|
this.$message.success('删除索引成功');
|
this.getLeftIndex();
|
}
|
})
|
},
|
|
//右侧表格添加属性
|
indexAttrClickAddHandler() {
|
if (func.isEmptyObject(this.indexAttrRow)) {
|
this.$message.error('请至少选择一条数据');
|
return;
|
}
|
this.indexData.push(
|
{
|
typeName: this.nodeRow.id,
|
attrNames: this.indexAttrRow.id,
|
indexName: this.indexForm.name,
|
desc: this.indexForm.desc
|
}
|
)
|
this.indexFormRead = true;
|
this.indexAttrVisible = false;
|
},
|
|
// 右侧属性表格行点击
|
indexAttrRowClick(row) {
|
this.indexAttrRow = row;
|
},
|
|
// 右侧表格增加
|
rightIndexAddClick() {
|
if (!this.indexForm.name) {
|
this.$message.error('请输入索引名称');
|
return;
|
}
|
|
// 检查是否为英文字符
|
const englishRegex = /^[A-Za-z]+$/;
|
if (!englishRegex.test(this.indexForm.name)) {
|
this.$message.error('索引名称只能包含英文字符');
|
return;
|
}
|
this.indexLoading = true;
|
getAllAttributesByBtmId({btmId: this.nodeRow.id}).then(res => {
|
if (res.data.code === 200) {
|
const data = res.data.data.map(item => {
|
return {
|
id: item.id
|
}
|
})
|
this.indexAttrData = data;
|
}
|
this.indexLoading = false;
|
this.indexAttrVisible = true;
|
})
|
},
|
|
// 创建保存索引
|
indexClickAddHandler() {
|
const params = {
|
typeName: this.nodeRow.id,
|
attrNames: this.indexData.map(item => item.attrNames).join(','),
|
indexName: this.indexForm.name,
|
}
|
addIndex([params]).then(res => {
|
console.log(res)
|
this.$message.success('创建成功');
|
this.indexDialogClose();
|
}).catch(err => {
|
this.indexDialogClose();
|
})
|
},
|
|
// 索引对话框取消
|
indexDialogClose() {
|
this.indexFormRead = false;
|
this.indexForm = {};
|
this.indexData = [];
|
this.indexVisible = false;
|
}
|
}
|
}
|
</script>
|
|
<style lang="scss" scoped>
|
::v-deep {
|
.avue-dialog .el-dialog__body {
|
padding: 20px 20px 0px 20px; // 上右下左
|
margin-bottom: 10px !important;
|
}
|
|
.el-scrollbar__wrap {
|
overflow: auto !important;
|
}
|
|
.el-form-item .el-select {
|
width: 100%;
|
}
|
|
.headerCon {
|
.el-button {
|
width: 82px;
|
}
|
}
|
}
|
|
.headerCon {
|
display: flex;
|
flex-wrap: wrap;
|
margin-bottom: 5px;
|
|
.el-button + .el-button {
|
margin-left: 5px;
|
}
|
|
.el-button {
|
margin-top: 5px;
|
}
|
}
|
|
.headerCon > .el-button:nth-child(4) {
|
margin-left: 0;
|
}
|
|
.headerCon > .el-button:nth-child(7) {
|
margin-left: 0;
|
}
|
|
.headerCon > .el-button:nth-child(10) {
|
margin-left: 0;
|
}
|
|
.descBox {
|
width: 32%;
|
margin-left: 20px;
|
}
|
|
.dialogForm {
|
display: flex;
|
justify-content: space-around;
|
}
|
|
.dialogForm > div {
|
width: 29%;
|
border: 1px solid #eee;
|
padding: 25px 20px 5px 10px; /* 上 右 下 左 */
|
box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2); /* 添加阴影效果 */
|
}
|
|
|
</style>
|