2021 Vue全家桶开发电商管理系统(Element-UI)07 参数管理

参数管理

1 参数管理概念

image-20210113211620308

2 基本UI布局

3 获取商品分类列表数据并渲染至级联选择框

获取数据略,级联选择框与06类似。

4 Tab标签页的使用

image-20210113215134858

<!-- 标签页 -->
<el-tabs v-model="activeName" @tab-click="handleTabClick">
    <el-tab-pane label="动态属性" name="first">动态属性</el-tab-pane>
    <el-tab-pane label="静态属性" name="second">静态属性</el-tab-pane>
</el-tabs>

data:

// 被激活的页签名称
activeName: "first"

禁用按钮

image-20210113220051120

使用计算属性,当selectKeys长度>0时,btn disabled false。

5 分类参数

5.1 获取参数列表数据

async getParams() {
    const { data: res } = await this.$http.get(
        `categories/${
        this.selectCateKeys[this.selectCateKeys.length - 1]
        }/attributes`,
        {
            params: {
                sel: this.activeName
            }
        }
    );
    console.log(res);
    if (res.meta.status !== 200) {
        return this.$message.error("获取分类参数失败");
    }
    this.paramsList = res.data;
}

5.2 获取到的参数数据挂载到不同数据源上

对获取到的数据进行判断,分别存入不同的数据中

//动态
if (res.data.attr_sel === "many") this.manyTableData = res.data;
//静态
else this.onlyTableData = res.data;

使用Table表格渲染数据,略

5.3 渲染参数下的可选性。

image-20210114173511344

获取参数数据时,将attr_vals从字符串转数组。

注意:需要对其是否为空进行判断,如果空直接返回空数组。不然会导致空字符串转化成【“”】的结果

//将attr_val从字符串变为数组
res.data.forEach(item => {
    item.attr_vals = item.attr_vals ? item.attr_vals.split(",") : [];
});
 <!-- 展开行 -->
<el-table-column type="expand">
    <template v-slot="scope">
        <el-tag v-for="(item,i) in scope.row.attr_vals" :key="i" closable>{{item}}</el-tag>
    </template>
</el-table-column>

5.4 可选性的添加按钮

使用Tag里面的动态编辑标签

image-20210114180232250

完成以上功能后,发现多个参数的输入框联动改变,原因在于共用一个inputvalue

image-20210114180508076

改进

在获取参数列表书,给其添加inputValue属性

//将attr_val从字符串变为数组
res.data.forEach(item => {
    //控制文本框的显示与隐藏
    item.inputVisible = false;
    item.inputValue = "";
    item.attr_vals = item.attr_vals ? item.attr_vals.split(",") : [];
});

让文本框获得焦点

showInput(row) {
    row.inputVisible = true;
    this.$nextTick(_ => {
        this.$refs.saveTagInput.$refs.input.focus();
    });
}

w) {
row.inputVisible = true;
this.KaTeX parse error: Expected '}', got 'EOF' at end of input: …{ this.refs.saveTagInput.$refs.input.focus();
});
}


this.$nextTick当页面元素被重新渲染时,执行回调函数的代码。 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值