1、属性分组功能CRUD基本实现

2、遇到的问题 -> elementUI级联选择框回显格式 [1,2,3]
3、JsonConfig类配置过滤器微调
pull/254/head
xjs 4 years ago
parent b5eb19d4ee
commit b3feae4fa2

@ -51,8 +51,6 @@ export default {
}, },
paths(v){ paths(v){
this.$emit("update:catelogPath",v); this.$emit("update:catelogPath",v);
//使pubsub-js
// this.PubSub.publish("catPath",v);
} }
}, },
// //

@ -1,5 +1,6 @@
<template> <template>
<el-dialog <el-dialog
width="600px"
:title="!dataForm.id ? '新增' : '修改'" :title="!dataForm.id ? '新增' : '修改'"
:close-on-click-modal="false" :close-on-click-modal="false"
:visible.sync="visible" :visible.sync="visible"
@ -10,20 +11,39 @@
:rules="dataRule" :rules="dataRule"
ref="dataForm" ref="dataForm"
@keyup.enter.native="dataFormSubmit()" @keyup.enter.native="dataFormSubmit()"
label-width="120px" label-width="90px"
> >
<el-form-item label="组名" prop="attrGroupName"> <el-form-item label="组名" prop="attrGroupName">
<el-input v-model="dataForm.attrGroupName" placeholder="组名"></el-input> <el-input v-model="dataForm.attrGroupName" placeholder="组名"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="排序" prop="sort"> <el-form-item label="排序" prop="sort">
<el-input v-model="dataForm.sort" placeholder="排序"></el-input> <el-input-number v-model.number="dataForm.sort" :min="1" :max="9999" label="排序"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="描述" prop="descript"> <el-form-item label="描述" prop="descript">
<el-input v-model="dataForm.descript" placeholder="描述"></el-input> <el-input type="textarea" :rows="2" v-model="dataForm.descript" placeholder="描述"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="组图标" prop="icon"> <el-form-item label="组图标" prop="icon">
<el-input v-model="dataForm.icon" placeholder="组图标"></el-input> <el-popover
placement="bottom-start"
width="460"
trigger="click"
@show="$refs['iconSelect'].reset()"
>
<IconSelect ref="iconSelect" @selected="selected"/>
<el-input slot="reference" :value="dataForm.icon" placeholder="点击选择图标" readonly>
<svg-icon
v-if="dataForm.icon"
slot="prefix"
:icon-class="dataForm.icon"
class="el-input__icon"
style="height: 32px;width: 16px;"
/>
<i v-else slot="prefix" class="el-icon-search el-input__icon"/>
</el-input>
</el-popover>
</el-form-item> </el-form-item>
<el-form-item label="所属分类" prop="catelogId"> <el-form-item label="所属分类" prop="catelogId">
<category-cascader :catelogPath.sync="catelogPath"></category-cascader> <category-cascader :catelogPath.sync="catelogPath"></category-cascader>
</el-form-item> </el-form-item>
@ -37,32 +57,27 @@
<script> <script>
import CategoryCascader from '../../../components/mall/category-cascader' import CategoryCascader from '../../../components/mall/category-cascader'
import {getMenus} from "@/api/mall/product/category";
import {addAttrGroup, getAttrGroup} from "@/api/mall/product/attr-group"; import {addAttrGroup, getAttrGroup} from "@/api/mall/product/attr-group";
import IconSelect from "@/components/IconSelect";
export default { export default {
name: "attrgroup-add-or-update", name: "attrgroup-add-or-update",
components: {CategoryCascader}, components: {CategoryCascader,IconSelect},
data() { data() {
return { return {
props: {
value: "catId",
label: "name",
children: "children"
},
visible: false, visible: false,
categorys: [],
catelogPath: [], catelogPath: [],
dataForm: { dataForm: {
attrGroupId: 0, attrGroupId: 0,
attrGroupName: "", attrGroupName: "",
sort: "", sort: "",
descript: "", descript: "",
icon: "", icon: "",
catelogId: 0 catelogId: 0,
}, },
dataRule: { dataRule: {
attrGroupName: [ attrGroupName: [
@ -85,6 +100,10 @@ export default {
this.catelogPath = []; this.catelogPath = [];
}, },
//
selected(name) {
this.dataForm.icon = name;
},
init(id) { init(id) {
this.dataForm.attrGroupId = id; this.dataForm.attrGroupId = id;

@ -33,7 +33,7 @@
<el-input v-model="dataForm.firstLetter" placeholder="检索首字母" style="width: 200px"></el-input> <el-input v-model="dataForm.firstLetter" placeholder="检索首字母" style="width: 200px"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="排序" prop="sort"> <el-form-item label="排序" prop="sort">
<el-input-number v-model.number="dataForm.sort" :min="1" :max="9999" label="描述文字"></el-input-number> <el-input-number v-model.number="dataForm.sort" :min="1" :max="9999" label="排序"></el-input-number>
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">

@ -62,7 +62,7 @@
@show="$refs['iconSelect'].reset()" @show="$refs['iconSelect'].reset()"
> >
<IconSelect ref="iconSelect" @selected="selected"/> <IconSelect ref="iconSelect" @selected="selected"/>
<el-input slot="reference" v-model="category.icon" placeholder="点击选择图标" readonly> <el-input slot="reference" :value="category.icon" placeholder="点击选择图标" readonly>
<svg-icon <svg-icon
v-if="category.icon" v-if="category.icon"
slot="prefix" slot="prefix"
@ -111,7 +111,7 @@ export default {
showStatus: 1, showStatus: 1,
sort: 0, sort: 0,
productUnit: "", productUnit: "",
icon: "", icon: null,
catId: null catId: null
}, },
dialogVisible: false, dialogVisible: false,

@ -62,9 +62,6 @@ public class JsonConfig {
//忽略某些空值 //忽略某些空值
PropertyFilter filter = (source, key, value) -> { PropertyFilter filter = (source, key, value) -> {
if (value == null) {
return false;
}
if(value instanceof List && ((List) value).size() == 0){ if(value instanceof List && ((List) value).size() == 0){
return false; return false;
} }

@ -9,8 +9,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
@ -48,7 +49,9 @@ public class AttrGroupController {
AttrGroupEntity attrGroup = attrGroupService.getById(attrGroupId); AttrGroupEntity attrGroup = attrGroupService.getById(attrGroupId);
Long[] path=categoryService.finCatelogPath(attrGroup.getCatelogId()); Long[] path=categoryService.finCatelogPath(attrGroup.getCatelogId());
attrGroup.setCatelogPath(path); List<String> collect = Arrays.stream(path).map(String::valueOf).collect(Collectors.toList());
attrGroup.setCatelogPath(collect);
return R.ok().put("attrGroup", attrGroup); return R.ok().put("attrGroup", attrGroup);
} }

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
/** /**
* *
@ -49,6 +50,6 @@ public class AttrGroupEntity implements Serializable {
* id * id
*/ */
@TableField(exist = false) @TableField(exist = false)
private Long[] catelogPath; private List<String> catelogPath;
} }

Loading…
Cancel
Save