导航栏管理

dev
truthhun 11 months ago
parent 64b92da918
commit 073f1495cb

@ -123,9 +123,22 @@ func (s *NavigationAPIService) ListNavigation(ctx context.Context, req *pb.ListN
Size: int(req.Size_),
WithCount: true,
SelectFields: req.Field,
Sort: strings.Split(req.Order, ","),
}
if req.Order != "" {
opt.Sort = strings.Split(req.Order, ",")
}
if req.Wd != "" {
opt.QueryLike = map[string][]interface{}{
"title": {req.Wd},
"description": {req.Wd},
"href": {req.Wd},
}
}
s.logger.Debug("ListNavigation", zap.Any("opt", opt), zap.Any("req", req))
navs, total, err := s.dbModel.GetNavigationList(opt)
if err != nil {
s.logger.Error("GetNavigationList", zap.Error(err))

@ -47,6 +47,10 @@ func (m *DBModel) UpdateNavigation(navigation *Navigation, updateFields ...strin
db = db.Select(m.GetTableFields(tableName))
}
if navigation.Id == navigation.ParentId {
navigation.ParentId = 0
}
err = db.Where("id = ?", navigation.Id).Updates(navigation).Error
if err != nil {
m.logger.Error("UpdateNavigation", zap.Error(err))
@ -104,6 +108,9 @@ func (m *DBModel) GetNavigationList(opt *OptionGetNavigationList) (navigationLis
db = db.Select(opt.SelectFields)
}
if len(opt.Sort) == 0 {
opt.Sort = []string{"sort desc"}
}
db = m.generateQuerySort(db, tableName, opt.Sort)
db = db.Offset((opt.Page - 1) * opt.Size).Limit(opt.Size)

@ -6,6 +6,21 @@
label-width="80px"
:model="navigation"
>
<el-form-item label="上级导航">
<el-cascader
v-model="navigation.parent_id"
:options="trees"
:filterable="true"
:props="{
checkStrictly: true,
expandTrigger: 'hover',
label: 'title',
value: 'id',
}"
clearable
placeholder="请选择上级分类"
></el-cascader>
</el-form-item>
<el-form-item
label="名称"
prop="title"
@ -60,6 +75,38 @@
></el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="颜色">
<el-color-picker
v-model="navigation.color"
show-alpha
clearable
placeholder="请选择颜色"
></el-color-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="打开方式">
<!-- target -->
<el-select
v-model="navigation.target"
placeholder="请选择打开方式"
clearable
>
<el-option
v-for="item in [
{ label: '', value: '_self' },
{ label: '', value: '_blank' },
]"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select> </el-form-item
></el-col>
</el-row>
<el-form-item label="描述">
<el-input
v-model="navigation.description"
@ -92,6 +139,12 @@ export default {
return {}
},
},
trees: {
type: Array,
default: () => {
return []
},
},
},
data() {
return {
@ -118,6 +171,11 @@ export default {
}
this.loading = true
const navigation = { ...this.navigation }
if (navigation.parent_id && navigation.parent_id.length > 0) {
navigation.parent_id =
navigation.parent_id[navigation.parent_id.length - 1]
}
if (this.navigation.id > 0) {
const res = await updateNavigation(navigation)
if (res.status === 200) {

@ -52,6 +52,7 @@
<FormNavigation
ref="navigationForm"
:init-navigation="navigation"
:trees="navigations"
@success="formNavigationSuccess"
/>
</el-dialog>
@ -230,17 +231,6 @@ export default {
name: 'wd',
placeholder: '',
},
{
type: 'select',
label: '',
name: 'enable',
placeholder: '',
multiple: true,
options: [
{ label: '', value: 1 },
{ label: '', value: 0 },
],
},
]
},
initTableListFields() {
@ -249,7 +239,7 @@ export default {
{
prop: 'title_html',
label: '',
minWidth: 150,
minWidth: 200,
fixed: 'left',
type: 'html',
},
@ -259,9 +249,10 @@ export default {
width: 80,
type: 'bool',
},
{ prop: 'href', label: '', minWidth: 250 },
{ prop: 'href', label: '', minWidth: 200 },
{ prop: 'target', label: '', width: 80 },
{ prop: 'sort', label: '', width: 80, type: 'number' },
{ prop: 'description', label: '', minWidth: 250 },
{ prop: 'description', label: '', minWidth: 200 },
{ prop: 'created_at', label: '', width: 160, type: 'datetime' },
{ prop: 'updated_at', label: '', width: 160, type: 'datetime' },
]

Loading…
Cancel
Save