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

dict

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