Commit 411e5037 authored by 李鹏 's avatar 李鹏

dict

parent ec327f7b
......@@ -14,11 +14,11 @@
<div class="type_station bg-scroll">
<div
class="type-box"
:class="{ 'current-type': nodeClassifyId == item.classify_id }"
:class="{ 'current-type': nodeClassifyId == item.class_id }"
@click="nodeClick(item)"
v-for="(item, index) in typeList"
:key="'type' + index + 200">
{{ item.classify_name }}
{{ item.class_name }}
</div>
</div>
</div>
......@@ -32,7 +32,7 @@
<!-- <bg-icon style="font-size: 12px; color: #fff; margin-right: 8px" icon="#bg-ic-add"></bg-icon> -->
返回上级
</el-button>
<el-button type="primary" @click="register">
<el-button v-if="nodeClassifyId !== 2" type="primary" @click="register">
<bg-icon style="font-size: 12px; color: #fff; margin-right: 8px" icon="#bg-ic-add"></bg-icon>
新增
</el-button>
......@@ -42,7 +42,7 @@
<div class="left-filter filter_list">
<div class="filter_item">
<span class="filter_title">状态</span>
<el-select v-model="filter.state" placeholder="请选择" style="width: 300px">
<el-select v-model="filter.status" placeholder="请选择" style="width: 300px">
<el-option
v-for="(item, index) in stateOptions"
:key="'pushOptions' + index"
......@@ -69,27 +69,24 @@
{{ row.name }}
</span>
</template>
<template v-slot:updated_time="{ row }">
{{ row.updated_time.split("+")[0].replace("T", " ").replace("Z", " ") }}
</template>
<template v-slot:state="{ row }">
<template v-slot:status="{ row }">
<bg-switch
@click="changeUseRow(row)"
:labels="['否', '是']"
:values="[0, 1]"
v-model="row.state"></bg-switch>
:values="[2, 1]"
v-model="row.status"></bg-switch>
</template>
<template v-slot:action="{ row }">
<!-- 除技术类型之外的字典可以删除 -->
<bg-table-btns2 :limit="3" v-if="nodeClassifyId !== '263758a4-0349-4d49-a816-e8ff8d33a8bb'">
<bg-table-btn @click="edit_row(row)" :disabled="row.state == 1">编辑</bg-table-btn>
<bg-table-btn @click="delete_row(row)" :disabled="row.state == 1">删除</bg-table-btn>
<bg-table-btns2 :limit="3" v-if="nodeClassifyId !== 2">
<bg-table-btn @click="edit_row(row)" :disabled="row.status == 1">编辑</bg-table-btn>
<bg-table-btn @click="delete_row(row)" :disabled="row.status == 1">删除</bg-table-btn>
<bg-table-btn @click="moveRow(row, 1)" :disabled="!row.canMoveUp">上移</bg-table-btn>
<bg-table-btn @click="moveRow(row, 2)" :disabled="!row.canMoveDown">下移</bg-table-btn>
</bg-table-btns2>
<!-- 技术类型字典不可删除 -->
<bg-table-btns2 :limit="3" v-else>
<bg-table-btn @click="edit_row(row)" :disabled="row.state == 1">编辑</bg-table-btn>
<bg-table-btn @click="edit_row(row)" :disabled="row.status == 1">编辑</bg-table-btn>
<bg-table-btn @click="moveRow(row, 1)" :disabled="!row.canMoveUp">上移</bg-table-btn>
<bg-table-btn @click="moveRow(row, 2)" :disabled="!row.canMoveDown">下移</bg-table-btn>
</bg-table-btns2>
......@@ -111,23 +108,32 @@
<el-dialog class="dialog_box" :title="addType == 1 ? '新增' : '编辑'" v-model="addDialog" width="758px">
<el-form ref="bgForm" :model="formData" :rules="rules" label-width="80px" class="bg_form">
<el-form-item label="名称" prop="name">
<el-input
v-model.trim="formData.name"
show-word-limit
:maxlength="
nodeClassifyId == 'eb9c7d70-c123-42b7-8e61-dde1b022b669'
? 6
: nodeClassifyId == 'efd9ec3b-7f18-49e2-9d88-bcca022243bb'
? 4
: nodeClassifyId == '949a1138-4995-464e-97a9-424d097eb271'
? 2
: 20
"
placeholder="请输入名称"></el-input>
<el-input v-model.trim="formData.name" show-word-limit maxlength="6" placeholder="请输入名称"></el-input>
</el-form-item>
<el-form-item
v-if="nodeClassifyId === 3"
label="单位"
prop="unit"
:rules="[{ required: true, message: '请输入单位', trigger: 'blur' }]">
<el-input v-model.trim="formData.unit" show-word-limit maxlength="4" placeholder="请输入单位"></el-input>
</el-form-item>
<el-form-item
v-if="nodeClassifyId === 3"
label="值域上限"
prop="max_val"
:rules="[{ validator: validateNumber, trigger: 'blur' }]">
<el-input v-model.trim="formData.max_val" placeholder="请输入正整数"></el-input>
</el-form-item>
<el-form-item label="描述" prop="describe">
<el-form-item
v-if="nodeClassifyId === 3"
label="值域下限"
prop="min_val"
:rules="[{ validator: validateNumber, trigger: 'blur' }]">
<el-input v-model.trim="formData.min_val" placeholder="请输入正整数"></el-input>
</el-form-item>
<el-form-item label="描述" prop="description">
<el-input
v-model="formData.describe"
v-model="formData.description"
type="textarea"
:autosize="{ minRows: 5 }"
show-word-limit
......@@ -135,12 +141,12 @@
resize="vertical"
placeholder="请输入描述"></el-input>
</el-form-item>
<el-form-item label="是否启用" prop="state" style="margin-bottom: 0px">
<el-form-item label="是否启用" prop="status" style="margin-bottom: 0px">
<el-switch
class="bg-switch-ele"
v-model="formData.state"
v-model="formData.status"
:active-value="1"
:inactive-value="0"
:inactive-value="2"
inline-prompt
active-text="是"
inactive-text="否" />
......@@ -183,6 +189,14 @@ import { Search } from "@element-plus/icons-vue";
import bgBreadcrumb from "@/components/bg-breadcrumb.vue";
const bgForm = ref(null);
const validateNumber = (rule, value, callback) => {
if (value !== "" && /^(?:[1-9]\d*)$/.test(value) == false) {
callback(new Error("请输入正整数"));
} else {
callback();
}
};
const headers = computed(() => {
let _headers = [
{
......@@ -191,17 +205,17 @@ const headers = computed(() => {
},
{
label: "描述",
prop: "describe",
prop: "description",
minWidth: 360,
},
{
label: "更新时间",
prop: "updated_time",
prop: "updated_at",
width: 220,
},
{
label: "是否启用",
prop: "state",
prop: "status",
},
{
label: "操作",
......@@ -211,18 +225,25 @@ const headers = computed(() => {
},
];
if (state.nodeClassifyId === "59315100-5c2a-4381-83fe-32934605f0a9") {
_headers.splice(1, 0, {
label: "版本数",
prop: "total_children",
});
if (state.nodeClassifyId === 3) {
_headers.splice(
1,
0,
{
label: "单位",
prop: "unit",
},
{
label: "值域上限",
prop: "max_val",
},
{
label: "值域下限",
prop: "min_val",
}
if (state.nodeClassifyId === "b3a083ee-a8c1-8ca4-f9a1-ea01692a0f1a") {
_headers.splice(1, 0, {
label: "服务名称",
prop: "service_name",
});
);
}
return _headers;
});
const state = reactive({
......@@ -230,15 +251,14 @@ const state = reactive({
typeList: [], // 分类数据
typeKeyword: "", // 分类删选关键词
nodeClassifyId: null, // 当前选中分类的uuid 用于新增字典
nodeId: null, // 当前选中分类的id 用于请求列表
timer: null, // 定时器
tableRows: [], // 表格数据
tableTotal: 0, // 表格数据条数
filter: {
state: "",
status: "",
search: "",
page: 1,
limit: 10,
page_size: 10,
}, // 表格筛选项
stateOptions: [
{
......@@ -260,17 +280,19 @@ const state = reactive({
addDialog: false,
formData: {
name: "",
describe: "",
state: 1,
p_dict_id: "",
description: "",
status: 1,
unit: "",
max_val: "",
min_val: "",
},
rules: {
name: [{ required: true, message: "请输入名称", trigger: "blur" }],
describe: [
description: [
{ required: true, message: "请输入描述", trigger: "blur" },
{ max: 200, message: "描述最大为200字", trigger: "blur" },
],
state: [{ required: true, message: "请选择是否启用", trigger: "change" }],
status: [{ required: true, message: "请选择是否启用", trigger: "change" }],
},
fatherRow: null,
});
......@@ -289,15 +311,14 @@ const backDict = () => {
changePage(1);
};
const nodeClick = (item) => {
state.nodeId = item.id;
dictLevel.value = 1;
state.fatherRow = null;
state.nodeClassifyId = item.classify_id;
state.nodeClassifyId = item.class_id;
state.filter = {
state: "",
status: "",
search: "",
page: 1,
limit: 10,
page_size: 10,
};
changePage(1);
}; // 切换字典分类
......@@ -313,18 +334,15 @@ const searchType = () => {
const getTypeList = () => {
let params = {
name: state.typeKeyword,
class_name: state.typeKeyword,
};
axios
.get(`/apaas/system/v5/dictionary/classify/list`, { params })
.get(`/v1/api/dict/classList`, { params })
.then((res) => {
if (res.data.code == 200) {
state.typeList = res.data.data || [];
state.nodeClassifyId = state.typeList[0].classify_id || null;
state.nodeId = state.typeList[0].id || null;
if (state.nodeId) {
state.nodeClassifyId = state.typeList[0].class_id || null;
getTableRows();
}
} else {
ElMessage.error(res.data.data);
}
......@@ -345,19 +363,18 @@ const filterAction = () => {
const filterClear = () => {
state.filter = {
state: "",
status: "",
search: "",
limit: 10,
page_size: 10,
page: 1,
};
changePage(1);
}; // 重置筛选项
const getTableRows = () => {
let params = { ...state.filter };
params.id = state.nodeId;
let params = { ...state.filter, class: state.nodeClassifyId };
axios
.get(`/apaas/system/v5/dictionary/list`, {
.get(`/v1/api/dict`, {
params,
})
.then((res) => {
......@@ -388,13 +405,13 @@ const getTableRows = () => {
}; // 获取表格数据
const changeUseRow = (row) => {
axios.put(`/apaas/system/v5/dictionary/state?id=${row.id}&state=${row.state}`).then((res) => {
axios.put(`/v1/api/dict/status?id=${row.id}&status=${row.status}`).then((res) => {
if (res.data.code == 200) {
ElMessage.success(res.data.msg);
changePage(1);
} else {
ElMessage.error(res.data.data);
row.state = row.state == 0 ? 1 : 0;
row.status = row.status == 2 ? 1 : 2;
}
});
}; // 启用禁用
......@@ -405,16 +422,18 @@ const changePage = (page) => {
}; // 改变页码
const changeSize = (size) => {
state.filter.limit = size;
state.filter.page_size = size;
changePage(1);
}; // 改变每页条数
const register = () => {
state.formData = {
name: "",
describe: "",
state: 1,
p_dict_id: state.fatherRow ? state.fatherRow.dict_id : "",
description: "",
status: 1,
unit: "",
max_val: "",
min_val: "",
};
if (state.bgForm) {
nextTick().then(() => {
......@@ -430,24 +449,24 @@ const register = () => {
}; // 新增字典按钮
const edit_row = (row) => {
axios
.get(`/apaas/system/v5/dictionary/${row.id}`)
.then((res) => {
if (res.data.code == 200) {
state.actionRow = res.data.data;
state.actionRow = row;
if (row.class === 3) {
state.formData = {
name: state.actionRow.name,
describe: state.actionRow.describe,
state: state.actionRow.state,
p_dict_id: state.actionRow.p_dict_id,
name: row.name,
unit: row.unit,
max_val: row.max_val,
min_val: row.min_val,
description: row.description,
status: row.status,
};
} else {
ElMessage.error(res.data.data);
state.formData = {
name: row.name,
description: row.description,
status: row.status,
};
}
})
.catch((err) => {
console.log(err);
});
if (state.bgForm) {
nextTick().then(() => {
state.bgForm.validate((valid) => {
......@@ -467,10 +486,15 @@ const addConfirm = () => {
if (state.addType == 1) {
// 新增
let params = {
classify_id: state.nodeClassifyId,
class: state.nodeClassifyId,
...state.formData,
};
axios.post(`/apaas/system/v5/dictionary/add`, params).then((res) => {
if (state.nodeClassifyId !== 3) {
delete params.min_val;
delete params.max_val;
delete params.unit;
}
axios.post(`/v1/api/dict`, params).then((res) => {
if (res.data.code == 200) {
ElMessage.success(res.data.msg);
state.addDialog = false;
......@@ -483,9 +507,15 @@ const addConfirm = () => {
// 编辑
let params = {
id: state.actionRow.id,
class: state.actionRow.class,
...state.formData,
};
axios.put(`/apaas/system/v5/dictionary/update`, params).then((res) => {
if (state.actionRow.class !== 3) {
delete params.min_val;
delete params.max_val;
delete params.unit;
}
axios.put(`/v1/api/dict`, params).then((res) => {
if (res.data.code == 200) {
ElMessage.success(res.data.msg);
state.addDialog = false;
......@@ -505,7 +535,7 @@ const delete_row = (row) => {
}; // 删除按钮
const deleteData = () => {
axios.delete(`/apaas/system/v5/dictionary/${state.actionRow.id}`).then((res) => {
axios.delete(`/v1/api/dict?id=${state.actionRow.id}`).then((res) => {
if (res.data.code == 200) {
ElMessage.success(res.data.msg);
state.dialogDelete = false;
......@@ -542,7 +572,7 @@ const moveRow = (row, type) => {
},
];
axios
.put(`/apaas/system/v5/dictionary/sort`, [...params])
.put(`/v1/api/dict/sort`, [...params])
.then((res) => {
if (res.data.code == 200) {
ElMessage.success(res.data.msg);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment