三组件
parent
1aa705c8c5
commit
c4c732f66b
|
@ -8,7 +8,6 @@
|
||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>已选属性组</span>
|
<span>已选属性组</span>
|
||||||
<span>已选属性组ids ::{{this.checkedAttributeGroupIds}}</span>
|
<span>已选属性组ids ::{{this.checkedAttributeGroupIds}}</span>
|
||||||
<span>属性组::{{this.checkedAttributeGroupList}} </span>
|
|
||||||
</div>
|
</div>
|
||||||
<el-row :gutter="20" style="height: 100px">
|
<el-row :gutter="20" style="height: 100px">
|
||||||
<el-col :span="3" v-for="(attributeGroup,index) in checkedAttributeGroupList">
|
<el-col :span="3" v-for="(attributeGroup,index) in checkedAttributeGroupList">
|
||||||
|
@ -29,15 +28,15 @@
|
||||||
</div>
|
</div>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="3"
|
<el-col :span="3"
|
||||||
v-for="attribute in attributeList">
|
v-for="group in groupList">
|
||||||
<el-checkbox
|
<el-checkbox
|
||||||
v-model="checkedAttributeGroupIds"
|
v-model="checkedAttributeGroupIds"
|
||||||
:value="attribute.id"
|
:value="group.id"
|
||||||
:key="attribute.id"
|
:key="group.id"
|
||||||
:label="attribute.id"
|
:label="group.id"
|
||||||
@change="handleCheckedAttributeChange(attribute)"
|
@change="handleCheckedAttributeChange(group)"
|
||||||
border>
|
border>
|
||||||
{{attribute.name}}
|
{{group.name}}
|
||||||
</el-checkbox>
|
</el-checkbox>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
@ -57,7 +56,7 @@ export default {
|
||||||
type: Array,
|
type: Array,
|
||||||
default: []
|
default: []
|
||||||
},
|
},
|
||||||
checkedAttribute:{
|
checkedAttributeGroup:{
|
||||||
type: Array,
|
type: Array,
|
||||||
default: null
|
default: null
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,149 @@
|
||||||
|
<template>
|
||||||
|
<el-row>
|
||||||
|
<el-card class="box-card" >
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<span>品牌关联关系</span>
|
||||||
|
</div>
|
||||||
|
<el-card class="box-card" >
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<span>已选品牌</span>
|
||||||
|
<span>已选品牌ids ::{{this.checkedBrandIds}}</span>
|
||||||
|
</div>
|
||||||
|
<el-row :gutter="20" style="height: 100px">
|
||||||
|
<el-col :span="3" v-for="(brand,index) in checkedBrandList">
|
||||||
|
<el-tag
|
||||||
|
style="margin: 0 10px"
|
||||||
|
:key="brand.name"
|
||||||
|
closable
|
||||||
|
@close="removeCheck(index)">
|
||||||
|
{{brand.name}}
|
||||||
|
</el-tag>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-card >
|
||||||
|
<el-divider></el-divider>
|
||||||
|
<el-card class="box-card">
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<span>可选品牌</span>
|
||||||
|
</div>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="3"
|
||||||
|
v-for="brand in brandList">
|
||||||
|
<el-checkbox
|
||||||
|
v-model="checkedBrandIds"
|
||||||
|
:value="brand.id"
|
||||||
|
:key="brand.id"
|
||||||
|
:label="brand.id"
|
||||||
|
@change="handleCheckedBrandChange(brand)"
|
||||||
|
border>
|
||||||
|
{{brand.name}}
|
||||||
|
</el-checkbox>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-card>
|
||||||
|
</el-card>
|
||||||
|
</el-row>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
|
||||||
|
import {listBrand} from "@/api/product/brand";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name:"BrandElement",
|
||||||
|
// 接参
|
||||||
|
props: {
|
||||||
|
value: {
|
||||||
|
type: Array,
|
||||||
|
default: []
|
||||||
|
},
|
||||||
|
checkBrand:{
|
||||||
|
type: Array,
|
||||||
|
default: null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
// 数据
|
||||||
|
return{
|
||||||
|
//已选品牌ids
|
||||||
|
checkedBrandIds: [],
|
||||||
|
//已选品牌数组
|
||||||
|
checkedBrandList: [],
|
||||||
|
//品牌品牌表
|
||||||
|
brandList: [],
|
||||||
|
// 总条数
|
||||||
|
total: 0,
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 挂载方法
|
||||||
|
created() {
|
||||||
|
this.getBrand()
|
||||||
|
},
|
||||||
|
watch:{
|
||||||
|
value: {
|
||||||
|
handler(val) {
|
||||||
|
console.log("进入初始化value::"+val.toString())
|
||||||
|
if (val.toString() !== this.checkedBrandIds.toString()){
|
||||||
|
this.checkedBrandIds = val
|
||||||
|
this.checkedBrandList = []
|
||||||
|
}
|
||||||
|
console.log("选中的ids::"+this.checkedBrandIds)
|
||||||
|
},
|
||||||
|
immediate: true
|
||||||
|
},
|
||||||
|
checkBrand:{
|
||||||
|
handler(val) {
|
||||||
|
console.log("进入初始化checkedBrand::"+val.toString())
|
||||||
|
if (val !==undefined && val.length>0){
|
||||||
|
this.checkedBrandList = val
|
||||||
|
this.checkedBrandIds = this.checkedBrandList.map(checked => checked.id)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
immediate: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 方法
|
||||||
|
methods: {
|
||||||
|
/** 品牌复选框选择事件 */
|
||||||
|
handleCheckedBrandChange(brand){
|
||||||
|
let isChecked = this.checkedBrandIds.indexOf(brand.id) > -1;
|
||||||
|
if (isChecked){
|
||||||
|
this.checkedBrandList.push(brand)
|
||||||
|
}else {
|
||||||
|
//删除品牌
|
||||||
|
this.checkedBrandList.splice(
|
||||||
|
this.checkedBrandList.indexOf(brand),1
|
||||||
|
)
|
||||||
|
}
|
||||||
|
this.$emit("input",this.checkedBrandIds)
|
||||||
|
console.log(this.checkedBrandList)
|
||||||
|
// this.checkedBrandList.splice(this.checkedBrandIds.indexOf(brand.id),1)
|
||||||
|
},
|
||||||
|
//关闭标签
|
||||||
|
removeCheck(index) {
|
||||||
|
console.log(index)
|
||||||
|
this.checkedBrandList.splice(index,1);
|
||||||
|
this.checkedBrandIds.splice(index,1)
|
||||||
|
},
|
||||||
|
// 取消按钮
|
||||||
|
cancel() {
|
||||||
|
this.open = false;
|
||||||
|
this.reset();
|
||||||
|
},
|
||||||
|
/** 查询品牌列表 */
|
||||||
|
getBrand(){
|
||||||
|
listBrand(this.queryParams).then(response => {
|
||||||
|
console.log('品牌集合')
|
||||||
|
console.log(response)
|
||||||
|
this.brandList = response.data.rows;
|
||||||
|
this.total = response.data.total;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
|
@ -41,6 +41,8 @@ import DictData from '@/components/DictData'
|
||||||
import AttributeGroupElement from '@/components/CheckedAttribute'
|
import AttributeGroupElement from '@/components/CheckedAttribute'
|
||||||
//属性组件
|
//属性组件
|
||||||
import AttributeElement from '@/components/CheckAttributes'
|
import AttributeElement from '@/components/CheckAttributes'
|
||||||
|
//品牌组件
|
||||||
|
import BrandElement from '@/components/CheckBrank'
|
||||||
|
|
||||||
// 全局方法挂载
|
// 全局方法挂载
|
||||||
Vue.prototype.getDicts = getDicts
|
Vue.prototype.getDicts = getDicts
|
||||||
|
@ -64,6 +66,7 @@ Vue.component('ImagePreview', ImagePreview)
|
||||||
//自定义组件全局挂载
|
//自定义组件全局挂载
|
||||||
Vue.component('AttributeGroupElement', AttributeGroupElement)
|
Vue.component('AttributeGroupElement', AttributeGroupElement)
|
||||||
Vue.component('AttributeElement', AttributeElement)
|
Vue.component('AttributeElement', AttributeElement)
|
||||||
|
Vue.component('BrandElement', BrandElement)
|
||||||
|
|
||||||
Vue.use(directive)
|
Vue.use(directive)
|
||||||
Vue.use(plugins)
|
Vue.use(plugins)
|
||||||
|
|
|
@ -135,12 +135,14 @@
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-tabs v-model="activeName" @tab-click="handleClick">
|
<el-tabs v-model="activeName" @tab-click="handleClick">
|
||||||
<el-tab-pane label="属性" name="first">
|
<el-tab-pane label="属性" name="first">
|
||||||
<AttributeGroupElement v-model="form.checkedAttributeIds"></AttributeGroupElement>
|
<AttributeGroupElement v-model="form.checkedAttributeIds" :checked-attribute="this.checkedAttribute"></AttributeGroupElement>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="属性组" name="second">
|
<el-tab-pane label="属性组" name="second">
|
||||||
<AttributeElement v-model="form.checkedAttributeIds"></AttributeElement>
|
<AttributeElement v-model="form.checkedAttributeGroupIds" :checked-attribute-group="this.checkedAttributeGroup"></AttributeElement>
|
||||||
|
</el-tab-pane>
|
||||||
|
<el-tab-pane label="品牌" name="third">
|
||||||
|
<BrandElement v-model="form.checkedBrandIds" :check-brand="this.checkedBrand"></BrandElement>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="品牌" name="third">角色管理</el-tab-pane>
|
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
|
|
||||||
</el-form>
|
</el-form>
|
||||||
|
@ -156,17 +158,24 @@
|
||||||
import { listCategory_info, getCategory_info, delCategory_info, addCategory_info, updateCategory_info } from "@/api/product/category_info";
|
import { listCategory_info, getCategory_info, delCategory_info, addCategory_info, updateCategory_info } from "@/api/product/category_info";
|
||||||
import Treeselect from "@riophae/vue-treeselect";
|
import Treeselect from "@riophae/vue-treeselect";
|
||||||
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
||||||
|
import Brand from "@/views/product/brand/index.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Category_info",
|
name: "Category_info",
|
||||||
dicts: ['sys_yes_no'],
|
dicts: ['sys_yes_no'],
|
||||||
components: {
|
components: {
|
||||||
|
Brand,
|
||||||
Treeselect
|
Treeselect
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
activeName: 'first',
|
activeName: 'first',
|
||||||
|
// 组件绑定的品牌
|
||||||
|
checkedBrand: [],
|
||||||
|
// 组件绑定的属性组
|
||||||
|
checkedAttributeGroup: [],
|
||||||
|
// 组件绑定的属性
|
||||||
|
checkedAttribute: [],
|
||||||
// 遮罩层
|
// 遮罩层
|
||||||
loading: true,
|
loading: true,
|
||||||
// 显示搜索条件
|
// 显示搜索条件
|
||||||
|
@ -271,8 +280,11 @@ export default {
|
||||||
createTime: null,
|
createTime: null,
|
||||||
updateBy: null,
|
updateBy: null,
|
||||||
updateTime: null,
|
updateTime: null,
|
||||||
|
checkedAttributeList: [],
|
||||||
checkedAttributeIds: [],
|
checkedAttributeIds: [],
|
||||||
checkedAttributeGroupList: [],
|
checkedAttributeGroupList: [],
|
||||||
|
checkedAttributeGroupIds: [],
|
||||||
|
checkedBrandIds: [],
|
||||||
checkedBrandList: []
|
checkedBrandList: []
|
||||||
};
|
};
|
||||||
this.resetForm("form");
|
this.resetForm("form");
|
||||||
|
|
Loading…
Reference in New Issue