<template>
|
<el-container>
|
<el-main>
|
<basic-container>
|
<avue-crud v-model="form" ref="crud" :option="option" :data="data" @on-load="onLoad" :page.sync="page"
|
@refresh-change="refreshChange" @row-click="rowClick">
|
<template slot="radio" slot-scope="{row}">
|
<el-radio v-model="selectRow" :label="row.$index">
|
</el-radio>
|
</template>
|
<template slot="menu" slot-scope="{row,index}">
|
<el-button icon="el-icon-edit" size="small" type="text" @click="updateSave(row,index)">编辑</el-button>
|
<el-button icon="el-icon-delete" size="small" type="text" @click="deleteSave(row,index)">删除</el-button>
|
</template>
|
<template slot="menuLeft">
|
<el-button size="small" type="primary" icon="el-icon-plus" @click="addSave">新 增
|
</el-button>
|
<el-button size="small" plain type="primary" icon="el-icon-zoom-in" @click="applyRangeOpen">查看使用范围
|
</el-button>
|
<el-input placeholder="按属性编号查询" v-model="searchId" clearable prefix-icon="el-icon-search" class="attrSearch"
|
size="small" @change="doSearch" type="text"></el-input>
|
<el-button size="small" plain type="primary" icon="el-icon-search" @click="doSearch"> 搜索</el-button>
|
</template>
|
<template slot="typeValue" slot-scope="{row}">
|
<el-tag>{{ row.typeValue }}</el-tag>
|
</template>
|
</avue-crud>
|
<!-- <el-dialog :visible.sync="applyRange.display" append-to-body :title="applyRange.title" width="600px"
|
@close="applyRangeClose">
|
<avue-crud v-model="applyRange.model" :option="applyRange.option" :data="applyRange.data" class="applyRangeTable"
|
></avue-crud>
|
</el-dialog> -->
|
<Versionpackage :rangeData="applyRangeData" ref="applyRange"></Versionpackage>
|
</basic-container>
|
</el-main>
|
<el-aside>
|
<basic-container class="itemForm">
|
<el-descriptions class="margin-top" :column="1" size="medium" border title="属性项">
|
<el-descriptions-item>
|
<template slot="label">
|
属性编号
|
</template>
|
{{ itemForm.itemData.id }}
|
</el-descriptions-item>
|
<el-descriptions-item>
|
<template slot="label">
|
属性名称
|
</template>
|
{{ itemForm.itemData.name }}
|
</el-descriptions-item>
|
<el-descriptions-item>
|
<template slot="label">
|
属性类型
|
</template>
|
{{ itemForm.itemData.typeValue }}
|
</el-descriptions-item>
|
<!-- <el-descriptions-item>
|
<template slot="label">
|
标签
|
</template>
|
{{ itemForm.itemData.hashtag }}
|
</el-descriptions-item>-->
|
<el-descriptions-item>
|
<template slot="label">
|
默认值
|
</template>
|
{{ itemForm.itemData.defaultValue }}
|
</el-descriptions-item>
|
<el-descriptions-item>
|
<template slot="label">
|
允许为空
|
</template>
|
{{ 'true' == itemForm.itemData.nullable ? '是' : '否'}}
|
</el-descriptions-item>
|
<el-descriptions-item>
|
<template slot="label">
|
长度
|
</template>
|
{{ itemForm.itemData.maxLength }}
|
</el-descriptions-item>
|
<el-descriptions-item>
|
<template slot="label">
|
描述
|
</template>
|
{{ itemForm.itemData.description }}
|
</el-descriptions-item>
|
</el-descriptions>
|
<div style="height:15px"></div>
|
<el-descriptions class="margin-top" :column="1" size="medium" border title="属性配置"></el-descriptions>
|
<el-tabs v-model="itemForm.activeName" @tab-click="handleClick" stretch="true" style="height:235px">
|
<el-tab-pane label="参照" name="referTab">
|
<el-descriptions class="margin-top" :column="1" size="medium" border>
|
<el-descriptions-item>
|
<template slot="label">
|
使用参照
|
</template>
|
{{ itemForm.itemData.referTypeValue ? '是' : '否' }}
|
</el-descriptions-item>
|
<el-descriptions-item>
|
<template slot="label">
|
参照类型
|
</template>
|
{{ itemForm.itemData.referTypeValue }}
|
</el-descriptions-item>
|
<el-descriptions-item>
|
<template slot="label">
|
参照名称
|
</template>
|
{{ itemForm.itemData.referToName }}
|
</el-descriptions-item>
|
</el-descriptions>
|
</el-tab-pane>
|
<el-tab-pane label="枚举" name="enumTab">
|
<el-descriptions class="margin-top" :column="1" :size="small" border>
|
<el-descriptions-item>
|
<template slot="label">
|
使用枚举
|
</template>
|
{{ itemForm.itemData.usingDict ? '是' : '否' }}
|
</el-descriptions-item>
|
<el-descriptions-item>
|
<template slot="label">
|
枚举类型
|
</template>
|
{{ itemForm.itemData.dictValue }}
|
</el-descriptions-item>
|
</el-descriptions>
|
</el-tab-pane>
|
</el-tabs>
|
</basic-container>
|
</el-aside>
|
<originalAdd ref="originalAdd" @refreshTable="refreshChange" :attribute="editAttribute"></originalAdd>
|
</el-container>
|
</template>
|
|
<script>
|
import {
|
getList,
|
remove,
|
add,
|
update, getPage, getApplyRange
|
} from "@/api/omd/OmdAttribute";
|
import Versionpackage from "./Versionpackage.vue";
|
import {getDictionary} from "@/api/omd/enum";
|
|
export default {
|
name: "original",
|
data() {
|
return {
|
page: {
|
pageSize: 10,
|
currentPage: 1,
|
total: 100
|
},
|
selectRow: "",
|
data: [],
|
form: {},
|
attribute: {
|
nullable: true
|
},
|
editAttribute: {},
|
applyRangeData: [],
|
option: {
|
height: "550px",
|
headerAlign: "center",
|
border: true,
|
index: true,
|
rowKey: "id",
|
tabs: true,
|
stripe: true,
|
indexFixed: false,
|
menuWidth: 150,
|
highlightCurrentRow: true,
|
addBtn: false,
|
editBtn: false,
|
delBtn: false,
|
columnBtn:false,
|
column: [{
|
label: "选择",
|
prop: "radio",
|
width: 60,
|
hide: false,
|
display: false
|
}, {
|
label: "属性编号",
|
prop: "id",
|
align: "left",
|
display: false,
|
width: 200,
|
required: true
|
}, {
|
label: "属性名称",
|
prop: "name",
|
align: "left",
|
display: false
|
},/* {
|
label: "标签",
|
prop: "hashtag",
|
// hide: true,
|
display: false
|
},*/ {
|
label: "是否使用枚举",
|
prop: "usingDict",
|
type: "switch",
|
hide: true,
|
labelWidth: 132,
|
display: false,
|
dicData: [{
|
label: "是",
|
value: "true"
|
}, {
|
label: "否",
|
value: "false"
|
}]
|
}, {
|
label: "属性类型",
|
prop: "typeValue",
|
display: false,
|
// hide: true
|
}, {
|
label: "默认值",
|
prop: "defaultValue",
|
display: false
|
}, {
|
label: "允许为空",
|
prop: "nullable",
|
type: "switch",
|
display: false,
|
hide: true,
|
labelWidth: 132,
|
dicData: [{
|
label: "否",
|
value: "false"
|
}, {
|
label: "是",
|
value: "true"
|
}]
|
}, {
|
label: "长度",
|
prop: "maxLength",
|
hide: true,
|
display: false
|
}, {
|
label: "描述",
|
prop: "description",
|
type: "textarea",
|
display: false
|
},
|
]
|
},
|
itemForm: {
|
itemData: {},
|
activeName: "referTab",
|
enumInitFlag:false,
|
referInitFlag: false,
|
form: {}
|
},
|
searchId: '',
|
};
|
},
|
created() {
|
},
|
methods: {
|
refreshChange() {
|
this.onLoad(this.pageParent, this.query);
|
},
|
addSave() {
|
this.$refs.originalAdd.showSubmitDialog = true;
|
const newAttr = {};
|
newAttr.nullable = true;
|
this.$refs.originalAdd.attribute = newAttr;
|
},
|
updateSave(row,index) {
|
this.selectRow = index;
|
var json = JSON.stringify(row);
|
this.editAttribute = JSON.parse(json);
|
this.editAttribute.nullable = row.nullable == 'true' ? true : false;
|
this.$refs.originalAdd.attribute = this.editAttribute;
|
this.$refs.originalAdd.showSubmitDialog = true;
|
this.checkUsingReferDict(row);
|
this.$refs.originalAdd.activeName = this.itemForm.activeName;
|
this.$refs.originalAdd.enumInitFlag = this.itemForm.enumInitFlag;
|
this.$refs.originalAdd.referInitFlag = this.itemForm.referInitFlag;
|
// this.refreshChange()
|
},
|
deleteSave(row,index) {
|
this.$confirm("删除元数据将无法被恢复, 是否继续?", "提示", {
|
iconClass: 'el-icon-question',
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
showClose: true,
|
type: "warning"
|
}).then(() => {
|
remove(row.oid).then(res => {
|
this.$message.success("删除成功");
|
this.refreshChange();
|
});
|
});
|
},
|
onLoad(page, params = {}) {
|
this.loading = true;
|
getPage(this.page.currentPage, this.page.pageSize, Object.assign(params, this.query)).then(res => {
|
const data = res.data.data;
|
this.page.total = data.total;
|
this.data = data.records;
|
this.loading = false;
|
this.data = res.data.data.records;
|
this.itemData = this.data[0];
|
});
|
},
|
rowClick(row) {
|
this.itemForm.itemData = row;
|
this.selectRow = row.$index;
|
this.attribute = row;
|
this.checkUsingReferDict(row);
|
},
|
checkUsingReferDict(row){
|
if (row.referToId !== null && row.referToId !== ""){
|
this.itemForm.activeName = 'referTab';
|
this.itemForm.referInitFlag = true;
|
this.itemForm.enumInitFlag = false;
|
}else if (row.usingDict === 'true'){
|
this.itemForm.activeName = 'enumTab';
|
this.itemForm.referInitFlag = false;
|
this.itemForm.enumInitFlag = true;
|
getDictionary({code: row.dictCode}).then(res => {
|
this.editAttribute.dictValue = res.data.data[0].label;
|
this.itemForm.itemData.dictValue = this.editAttribute.dictValue;
|
this.$refs.originalAdd.dictEnums = res.data.data;
|
})
|
}else {
|
this.itemForm.activeName = 'referTab';
|
this.itemForm.referInitFlag = true;
|
this.itemForm.enumInitFlag = false;
|
}
|
},
|
selectBtmType() {
|
this.referType.display = true;
|
this.referType.title = "请选择" + this.referType.value;
|
},
|
applyRangeOpen() {
|
if (!this.selectRow && this.selectRow != 0) {
|
this.$message({
|
type: "warning",
|
message: "请先选择属性"
|
});
|
}
|
var oid = this.data[this.selectRow].oid;
|
getApplyRange(oid).then(res => {
|
this.applyRangeData = res.data.data;
|
this.$refs.applyRange.rangeData = this.applyRangeData;
|
this.$refs.applyRange.showDialog = true;
|
|
});
|
},
|
doSearch(){
|
var params = {"id_like":this.searchId};
|
this.onLoad(this.page,params);
|
}
|
},
|
components: { Versionpackage }
|
}
|
</script>
|
|
<style lang="scss">
|
.applyRangeTable>.el-card:nth-of-type(2)>.el-card__body>.avue-crud__menu {
|
display: none !important;
|
}
|
.attrSearch {
|
width:201px;
|
}
|
.attrSearch > .el-input__inner {
|
width: 200px;
|
}
|
</style>
|