zoukankan      html  css  js  c++  java
  • vue使用Element UI案例(商品列表)

    Goods.vue

    <template>
      <div id="goods">
        <el-button type="text" @click="dialogVisible = true">添加商品</el-button>
        <el-dialog
          title="添加商品"
          :visible.sync="dialogVisible"
          width="30%"
          :before-close="handleClose">
          <div class="demo-input-suffix">
            商品名称:
            <el-input
              placeholder="请输入内容"
              v-model="goods_name">
            </el-input>
          </div>
          <div class="demo-input-suffix">
            商品数量:
            <el-input
              placeholder="请输入内容"
              v-model="goods_num">
            </el-input>
          </div>
          <div class="demo-input-suffix">
            商品价格:
            <el-input
              placeholder="请输入内容"
              v-model="goods_price">
            </el-input>
          </div>
          <span slot="footer" class="dialog-footer">
            <el-button @click="cancel()">取 消</el-button>
            <el-button type="primary" @click="save()">确 定</el-button>
          </span>
        </el-dialog>
        <el-table
          :data="goods_list"
          border
    
          style=" 100%">
          <el-table-column
            type="index"
            >
          </el-table-column>
          <el-table-column
            prop="name"
            label="商品名称"
            width="180">
          </el-table-column>
    
          <el-table-column
            prop="price"
            label="商品数量"
            width="180">
            <template slot-scope="scope">
              <el-input-number v-model="scope.row.num" @change="issub(scope.$index)" size="mini" :min="0"></el-input-number>
            </template>
          </el-table-column>
    
          <el-table-column
            prop="price"
            label="价格"
            width="180">
          </el-table-column>
          <el-table-column
            label="操作"
            width="100">
            <template slot-scope="scope">
              <el-button @click="update(scope)" type="text" size="small">编辑</el-button>
              <el-button type="text" size="small" @click="del(scope.$index)">删除</el-button>
            </template>
          </el-table-column>
        </el-table>
        <el-input v-model="total" style=" 600px">
          <template slot="prepend">合价:</template>
          <template slot="append"></template>
        </el-input>
    
      </div>
    </template>
    <script>
      export default {
        name: "Goods",
        filters: {
          format(money) {
            return "" + money.toFixed(2);
          }
        },
        data() {
          return {
            dialogVisible: false,
            active: "zero_num",
            goods_name: "",
            goods_num: "",
            goods_price: "",
            goods_index: -1, // 当前本次操作的商品信息[-1表示新增,大于等于0表示编辑]
            goods_list: [
              {"name": "python入门", "num": 27, "price": 150},
              {"name": "python进阶", "num": 21, "price": 100},
              {"name": "python高级", "num": 17, "price": 75},
              {"name": "python研究", "num": 37, "price": 60},
              {"name": "python放弃", "num": 57, "price": 110},
            ]
          }
        },
        methods: {
          handleClose(done) {
            this.$confirm('确认关闭?')
              .then(_ => {
                done();
              })
              .catch(_ => {
              });
          },
          issub(index) {
            if (this.goods_list[index].num === 0) {
              this.del(index)
            }
          },
          save() {
            // 保存数据[添加数据]
            if (this.goods_index == -1) {
              this.goods_list.push({
                "name": this.goods_name,
                "num": parseInt(this.goods_num),
                "price": parseFloat(this.goods_price),
              });
            } else {
              this.goods_list[this.goods_index].name = this.goods_name;
              this.goods_list[this.goods_index].num = parseInt(this.goods_num);
              this.goods_list[this.goods_index].price = parseFloat(this.goods_price);
            }
            this.cancel();
          },
          cancel() {
            this.dialogVisible = false;
            this.goods_index = -1;
            this.goods_name = "";
            this.goods_num = "";
            this.goods_price = "";
          },
          del(index) {
            // 删除数据
            this.goods_list.splice(index, 1);
          },
          update(index) {
            // 显示当前编辑的商品信息
            this.dialogVisible = true;
            console.log(index);
            this.goods_index = index.$index;
            this.goods_name = index.row.name;
            this.goods_num = index.row.num;
            this.goods_price = index.row.price;
            // 当用户点击保存时,修改对应数据
          },
        },
        computed: {
          total(){
            let ret = 0;
            this.goods_list.forEach(function (value, index) {
              // console.log(value,index);
              let sum_price = parseFloat(value.price) * parseFloat(value.num);
              ret = ret + sum_price
            });
            return ret
          }
        }
      }
    </script>
    
    <style scoped>
      #goods table {
        width: 600px;
        border: 1px solid #000;
        border-collapse: collapse;
      }
    
      #goods td, #goods th {
        border: 1px solid #000;
      }
    
      #goods .box {
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        margin: auto;
        background-color: #eee;
        width: 280px;
        height: 160px;
        padding: 40px 80px;
      }
    </style>
  • 相关阅读:
    在数据库中加字段方法
    【原创】AE套用模板教程
    mysql 在windows server下发生系统错误 1067, 进程意外终止的解决方法
    对unidbgrid的单元格操作
    unigui与uniurlframe的互动
    推荐ajaxfilemanager for tiny_mce 比较完善的tiny_mce编辑器的图片上传及图片管理插件PHP版 支持中文
    html编辑器的调用
    mysqldump导出格式
    Gmail,QMail,163邮箱的 IMAP/SMTP/POP3 地址
    Delphi程序的自动升级功能的实现(AutoUpdate使用指南)
  • 原文地址:https://www.cnblogs.com/baicai37/p/13185035.html
Copyright © 2011-2022 走看看