1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<template>
  <div>
 
 
    <!-- 商品表格 -->
    <el-table :data="modifiedProducts" border style="width: 100%">
 
      <el-table-column label="商品">
        <template slot-scope="{row}">
          <div class="product-cell">
            <el-image :src="row.image" fit="cover" style="width: 50px; height: 50px; margin-right: 10px"></el-image>
            <span>{{ row.product_name }}</span>
          </div>
        </template>
      </el-table-column>
 
      <el-table-column label="规格" width="120">
        <template slot-scope="{row}">
          <div class="product-cell">
            <span>{{ row.product_sku_name }}</span>
          </div>
        </template>
      </el-table-column>
 
      <el-table-column label="当前价格" width="100">
        <template slot-scope="{row}">
          ¥{{ row.product_price }}
        </template>
      </el-table-column>
      <el-table-column label="活动价格" width="180">
        <template slot-scope="{row}">
          <el-input-number v-model="row.product_new_price" :min="0" :precision="2" @change="handleConfirm"
            controls-position="right" style="width: 150px"></el-input-number>
        </template>
      </el-table-column>
      <el-table-column label="操作" width="60">
        <template slot-scope="{row}">
          <el-button type="text" size="small" @click="handleDelPrice(row)">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>
 
<script>
export default {
  name: 'SimpleProductPriceModal',
  props: {
    title: {
      type: String,
      default: '商品价格设置'
    },
    products: {
      type: Array,
      default: () => []
    }
  },
  data() {
    return {
      batchPrice: null,
      selectedProducts: [],
      modifiedProducts: []
    }
  },
  watch: {
    products(newVal) {
 
      this.initProducts()
 
    },
  },
  created() {
    this.initProducts()
  },
  methods: {
    initProducts() {
      this.modifiedProducts = this.products.map(product => ({
        ...product,
        product_new_price: product.product_new_price ? product.product_new_price : product.product_price
      }))
      this.batchPrice = null
    },
    handleDelPrice(row) {
      const itemToRemove = this.modifiedProducts.find(item => item.product_id === row.product_id);
      if (itemToRemove) {
        const index = this.modifiedProducts.indexOf(itemToRemove);
        this.modifiedProducts.splice(index, 1);
        this.handleConfirm();
      }
    },
    handleConfirm(row) {
      const changedProducts = this.modifiedProducts;
      console.log('输出修改的', row, changedProducts);
      this.$emit('confirm', changedProducts)
    }
  }
}
</script>
 
<style scoped>
.batch-actions {
  margin-bottom: 15px;
}
 
.product-cell {
  display: flex;
  align-items: center;
}
 
.dialog-footer {
  text-align: right;
}
</style>