1、属性分组功能CRUD基本实现
2、遇到的问题 -> elementUI级联选择框回显格式 [1,2,3] 3、JsonConfig类配置过滤器微调
This commit is contained in:
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,10 +6,11 @@ import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 属性分组
|
* 属性分组
|
||||||
*
|
*
|
||||||
* @author xiejs
|
* @author xiejs
|
||||||
* @email 1294405880@qq.com
|
* @email 1294405880@qq.com
|
||||||
* @date 2022-03-15 10:16:53
|
* @date 2022-03-15 10:16:53
|
||||||
|
|
@ -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…
Reference in New Issue