lilei 7 mēneši atpakaļ
vecāks
revīzija
e7fec38a61

+ 6 - 4
src/views/salesManagement/salesQueryNew/comps/activeStatisticsList.vue

@@ -102,12 +102,14 @@ export default {
           console.log(row, isSelected, selectedRowKeys)
           // 当前勾选产品
           const endSelProduct = selectedRowKeys[selectedRowKeys.length - 1]
-          if (endSelProduct && !(endSelProduct.stackFlag == '1')) {
-            this.checkboxOption.selectedRowKeys = isSelected ? [endSelProduct] : []
-          } else {
-            // 累计多选
+          // 叠加多选
+          if (endSelProduct && row.stackFlag == '1') {
             this.checkboxOption.selectedRowKeys = selectedRowKeys
+          } else {
+            // 非叠加单选
+            this.checkboxOption.selectedRowKeys = isSelected ? [endSelProduct] : []
           }
+          console.log(this.checkboxOption.selectedRowKeys)
           // 查询此活动下的产品列表
           const salesPromoSn = this.activeList.filter(item => this.checkboxOption.selectedRowKeys.includes(item.id)).map(item => item.salesPromoSn)
           this.$emit('selected', isSelected ? salesPromoSn : null)

+ 104 - 3
src/views/salesManagement/salesQueryNew/discountSortModal.vue

@@ -1,8 +1,109 @@
 <template>
+  <a-modal
+    v-model="opened"
+    title="特价规则优先级"
+    centered
+    :maskClosable="false"
+    width="30%"
+    :footer="null"
+    @cancel="cancel"
+  >
+    <a-spin :spinning="spinning" tip="Loading...">
+      <div style="padding: 0 50px;">
+        <div style="padding:10px 0;text-align:left;color:red">
+          注:优先级默认是先直降再打折
+        </div>
+        <div style="padding:10px 0;">
+          <ul style="padding:0;margin:0;">
+            <li style="display:flex;justify-content: space-between;padding:5px 3px;border-bottom:1px solid #eee;">
+              <div style="width:50%;">
+                活动简称-规则简称
+              </div>
+              <div>优先级</div>
+              <div style="width:100px;text-align:center;">操作</div>
+            </li>
+            <li v-for="(item,rowIndex) in activeSortList" :key="item.id" style="display:flex;justify-content: space-between;padding:5px 3px;">
+              <div style="width:50%;">
+                {{ item.promotion.description }}-{{ item.promotionRule.description }}
+              </div>
+              <div> {{ item.sort }} </div>
+              <div style="display:flex;width:100px;justify-content:left;">
+                <span style="width:50px;color:#ed1c24;text-align:center;cursor:pointer;font-size:12px;" title="上移" @click="sortRow(item,rowIndex,1)">{{ rowIndex != 0 ? '⇡上移' : '' }}</span>
+                <span style="width:50px;color:#108ee9;text-align:center;cursor:pointer;font-size:12px;" title="下移" @click="sortRow(item,rowIndex,0)">{{ rowIndex != activeList.length - 1 ? '⇣下移' : '' }}</span>
+              </div>
+            </li>
+          </ul>
+        </div>
+      </div>
+      <div style="margin-top:36px;text-align:center;">
+        <a-button @click="cancel" style="margin-right: 15px" id="chooseCustom-btn-back">取消</a-button>
+        <a-button type="primary" :loading="confirmLoading" @click="handleSubmit" id="chooseCustom-btn-submit">确定</a-button>
+      </div>
+    </a-spin>
+  </a-modal>
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
+import { salesPromoSaveSort } from '@/api/salesNew'
+export default {
+  name: 'NewPromoModal',
+  mixins: [commonMixin],
+  props: {
+    show: [Boolean],
+    activeList: [Array],
+    salesBillSn: [String]
+  },
+  data () {
+    return {
+      opened: this.show,
+      spinning: false,
+      confirmLoading: false
+    }
+  },
+  computed: {
+    activeSortList () {
+      return this.activeList.sort((a, b) => {
+        return a.sort - b.sort
+      })
+    }
+  },
+  methods: {
+    //  保存
+    handleSubmit () {
+      const _this = this
+      _this.confirmLoading = true
+      const data = this.activeSortList.map(item => {
+        return {
+          id: item.id,
+          sort: item.sort
+        }
+      })
+      salesPromoSaveSort(data).then(res => {
+        if (res.status == 200) {
+          _this.$emit('ok')
+        }
+        _this.confirmLoading = false
+      })
+    },
+    // 排序
+    sortRow (item, rowIndex, type) {
+      const temp = this.activeList[type == 1 ? rowIndex - 1 : rowIndex + 1]
+      const tempSort = temp.sort
+      temp.sort = item.sort
+      item.sort = tempSort
+    },
+    // 取消
+    cancel () {
+      this.opened = false
+      this.$emit('cancel')
+      this.$emit('ok')
+    }
+  },
+  watch: {
+    show (newValue, oldValue) {
+      this.opened = newValue
+    }
+  }
+}
 </script>
-
-<style>
-</style>

+ 15 - 5
src/views/salesManagement/salesQueryNew/edit.vue

@@ -150,7 +150,7 @@
       @ok="showNewActiveOk"
     ></newPromoModal>
     <!-- 特价活动排序 -->
-    <discountSortModal :show="showDiscountSortModal" :acitveList="discountActiveList" @ok="showDiscountSortOk"></discountSortModal>
+    <discountSortModal :show="showDiscountSortModal" :activeList="discountActiveList" @ok="showDiscountSortOk"></discountSortModal>
   </div>
 </template>
 
@@ -297,22 +297,32 @@ export default {
       }
     },
     // 新活动弹框确认后
-    showNewActiveOk () {
+    showNewActiveOk (type) {
       this.showNewActiveModal = false
-      this.getOrderDetail(true)
       // 特价规则排序
-      this.getSalesPromoDiscountSort()
+      if (type == 1) {
+        this.getSalesPromoDiscountSort()
+      } else {
+        // 取消加入新活动
+        this.getOrderDetail(true)
+      }
     },
     // 特价规则排序
     getSalesPromoDiscountSort () {
       this.spinning = true
       salesPromoDiscountSort({ salesBillSn: this.$route.params.sn }).then(res => {
         if (res.status == 200) {
-
+          this.discountActiveList = res.data
+          this.showDiscountSortModal = true
         }
         this.spinning = false
       })
     },
+    // 特价规则排序完成或取消排序
+    showDiscountSortOk () {
+      this.showDiscountSortModal = false
+      this.getOrderDetail(true)
+    },
     // 打开选择产品弹框
     openProductModal (type, promo) {
       this.$refs.chooseProduct.pageInit(this.detailData, promo, type)

+ 2 - 1
src/views/salesManagement/salesQueryNew/newPromoModal.vue

@@ -59,7 +59,7 @@ export default {
           'promoSnList': _this.newPromoSnList
         }).then(res => {
           if (res.status == 200) {
-            _this.$emit('ok')
+            _this.$emit('ok', 1)
           }
           _this.confirmLoading = false
         })
@@ -72,6 +72,7 @@ export default {
     cancel () {
       this.opened = false
       this.$emit('cancel')
+      this.$emit('ok', 0)
     }
   },
   watch: {