Pārlūkot izejas kodu

fix: 销售政策、价格销售类型

zh 2 gadi atpakaļ
vecāks
revīzija
ba93cec9a8

+ 20 - 18
src/views/basic_data/priceSalesType.vue

@@ -11,16 +11,6 @@
   >
     <el-dialog title="价格类型" :visible.sync="visible" width="40%" :append-to-body="true" @close="handleClose">
       <el-form ref="formData" :model="formData" :rules="formRules" label-width="120px" :inline="false" size="mini" :disabled="disabled">
-        <el-form-item label="价格类型" prop="priceTypeId">
-          <el-select v-model="formData.priceTypeId" placeholder="请选择价格类型" clearable filterable>
-            <el-option
-              v-for="item in priceTypeList"
-              :key="item.priceTypeId"
-              :label="item.priceTypeName"
-              :value="item.priceTypeId"
-            />
-          </el-select>
-        </el-form-item>
         <el-form-item label="销售类型名称" prop="saleId">
           <el-select v-model="formData.saleId" placeholder="请选择销售类型名称" clearable filterable @change="handleChange">
             <el-option
@@ -34,18 +24,18 @@
         <el-form-item label="销售类型编码" prop="saleCode">
           <el-input v-model="formData.saleCode" disabled placeholder="请选择销售类型生成" />
         </el-form-item>
-        <el-form-item label="钱包" prop="walletId">
-          <el-select v-model="formData.walletId" placeholder="请选择钱包名称" clearable filterable @change="handleWalletChange">
+        <el-form-item label="价格类型" prop="priceTypeId">
+          <el-select v-model="formData.priceTypeId" placeholder="请选择价格类型" clearable filterable>
             <el-option
-              v-for="item in walletList"
-              :key="item.id"
-              :label="item.name"
-              :value="item.id"
+              v-for="item in priceTypeList"
+              :key="item.priceTypeId"
+              :label="item.priceTypeName"
+              :value="item.priceTypeId"
             />
           </el-select>
         </el-form-item>
         <el-form-item label="返利钱包" prop="walletId2">
-          <el-select v-model="formData.walletId2" placeholder="请选择返利钱包名称" clearable filterable @change="handleWalletChange2">
+          <el-select v-model="formData.walletId2" placeholder="请选择返利钱包名称" clearable filterable>
             <el-option
               v-for="item in rebateWalletList"
               :key="item.walletRebateId"
@@ -54,6 +44,17 @@
             />
           </el-select>
         </el-form-item>
+        <el-form-item label="钱包" prop="walletId">
+          <el-select v-model="formData.walletId" placeholder="请选择钱包名称" clearable filterable>
+            <el-option
+              v-for="item in walletList"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id"
+            />
+          </el-select>
+        </el-form-item>
+
         <el-form-item label="状态" prop="status">
           <el-switch v-model="formData.status" :active-value="true" :inactive-value="false" />
         </el-form-item>
@@ -325,7 +326,8 @@ export default {
           const params = {
             ...this.formData
           }
-
+          params.walletName2 = this.rebateWalletList.find(k => k.walletRebateId === this.formData.walletId2).name
+          params.walletName = this.walletList.find(k => k.id === this.formData.walletId).name
           if (!this.edit) {
             params.priceSaleTypeRelaId = ''
             addPriceSalesRela(params).then(res => {

+ 82 - 26
src/views/sales_policy/components/AddPolicy.vue

@@ -270,7 +270,7 @@
                   @focus="handlePriceType(scope.row)"
                 >
                   <el-option
-                    v-for="item in priceList"
+                    v-for="item in priceList2"
                     :key="item.priceTypeId"
                     :label="item.priceTypeName"
                     :value="item.priceTypeId"
@@ -306,7 +306,7 @@
                 </template>
                 <template v-else>
                   <el-select
-                    v-if="!priceList.length"
+                    v-if="!priceList2.length"
                     v-model="scope.row.rebateWalletIds"
                     size="mini"
                     multiple
@@ -351,7 +351,7 @@
                 </template>
                 <template v-else>
                   <el-select
-                    v-if="!priceList.length"
+                    v-if="!priceList2.length"
                     v-model="scope.row.walletIds"
                     size="mini"
                     multiple
@@ -445,15 +445,6 @@
               <el-button type="primary" size="mini" @click="handleNewInfo">添加</el-button>
               <el-button v-loading="fullscreenLoading" type="primary" size="mini" @click="handleSave">保存</el-button>
             </div>
-            <!--            <el-pagination-->
-            <!--              :current-page="dcurrentPage"-->
-            <!--              :page-sizes="pageSizeArr"-->
-            <!--              :page-size="size"-->
-            <!--              layout="total, sizes, prev, pager, next, jumper"-->
-            <!--              :total="listTotal"-->
-            <!--              @size-change="handleSizeChange2"-->
-            <!--              @current-change="handleCurrentChange2"-->
-            <!--            />-->
           </div>
 
           <el-row>
@@ -622,7 +613,8 @@ export default {
       dpageSize: 10,
       dcurrentPage: 1,
       fullscreenLoading: false,
-      priceList: []
+      priceList: [],
+      priceList2: []
     }
   },
   computed: {
@@ -651,25 +643,33 @@ export default {
     },
     handleEdit(row) {
       row.fang = !row.fang
-      this.$nextTick(() => {
-        this.$refs.plTable.doLayout()
-      })
+      !row.fang && this.handleWallet(row)
+      // this.$nextTick(() => {
+      //   this.$refs.plTable.doLayout()
+      // })
     },
     setText(e, index, row, name) {
       if (e) {
         if (name === 'priceType') {
+          this.NoRebateWalletList2 = []
+          this.rebateList2 = []
+          this.priceList.forEach(k => {
+            if (k.priceTypeId === e) {
+              this.NoRebateWalletList2.push(
+                {
+                  id: k.walletId,
+                  name: k.walletName
+                }
+              )
+              this.rebateList2.push({
+                walletRebateId: k.walletId2,
+                name: k.walletName2
+              })
+            }
+          })
           const item = this.priceList.find(k => k.priceTypeId === e)
-          this.NoRebateWalletList2 = [{
-            id: item.walletId,
-            name: item.walletName
-          }]
-          this.rebateList2 = [{
-            walletRebateId: item.walletId2,
-            name: item.walletName2
-          }]
           this.dataList[index][name] = item.priceTypeName
           this.$set(row, 'walletIds', [])
-
           if (item.walletId) {
             this.$set(row, 'walletIds', [...row.walletIds, item.walletId])
           }
@@ -1035,6 +1035,7 @@ export default {
           materialNumber: '',
           policyId: this.comCode,
           price: '',
+          fang: false,
           remark: '',
           saleTypeCode: '',
           saleTypeId: '',
@@ -1116,7 +1117,7 @@ export default {
       this.$emit('upDataIsFlag')
     },
     getPriceSalesRelaListV2(val) {
-      getPriceSalesRelaListV2({
+      return getPriceSalesRelaListV2({
         pageNum: 1,
         pageSize: -1,
         params: [
@@ -1128,6 +1129,8 @@ export default {
         ]
       }).then(res => {
         this.priceList = res.data.records
+        this.priceList2 = this.quChong(res.data.records, 'priceTypeId')
+        return Promise.resolve()
       })
     },
     handlePriceType(e) {
@@ -1136,6 +1139,59 @@ export default {
       if (e.saleTypeCode) {
         this.getPriceSalesRelaListV2(e.saleTypeCode)
       }
+    },
+    quChong(arr, id) {
+      var result = []
+      const obj = {}
+      for (let i = 0; i < arr.length; i++) {
+        if (!obj[arr[i][id]]) {
+          result.push(arr[i])
+          obj[arr[i][id]] = true
+        }
+      }
+      return result
+    },
+    handleWallet(row) {
+      if (row.saleTypeCode) {
+        this.getPriceSalesRelaListV2(row.saleTypeCode).then(res => {
+          this.NoRebateWalletList2 = []
+          this.rebateList2 = []
+          const rebateListId = []
+          const NoRebateWalletListId = []
+          this.priceList.forEach(k => {
+            if (k.priceTypeName === row.priceType) {
+              rebateListId.push(k.walletId2)
+              NoRebateWalletListId.push(k.walletId)
+              k.walletId && this.NoRebateWalletList2.push(
+                {
+                  id: k.walletId,
+                  name: k.walletName
+                }
+              )
+              k.walletId2 && this.rebateList2.push({
+                walletRebateId: k.walletId2,
+                name: k.walletName2
+              })
+            }
+          })
+          if (row.walletIds && row.walletIds.length) {
+            row.walletIds.forEach(k => {
+              if (!~NoRebateWalletListId.indexOf(k)) {
+                const item = this.NoRebateWalletList.find(e => e.id === k)
+                this.NoRebateWalletList2.push(item)
+              }
+            })
+          }
+          if (row.rebateWalletIds && row.rebateWalletIds.length) {
+            row.rebateWalletIds.forEach(k => {
+              if (!~rebateListId.indexOf(k)) {
+                const item = this.rebateList.find(e => e.walletRebateId === k)
+                this.rebateList2.push(item)
+              }
+            })
+          }
+        })
+      }
     }
   },
   components: {

+ 10 - 12
src/views/sales_policy/components/details.vue

@@ -497,7 +497,7 @@
                   :ex-params="exParams"
                 />
                 <!-- <el-button
-                  v-if="detail.type !== 'PROVISION' && list.length"
+                  v-if="detail.type !== 'PROVISION'"
                   type="primary"
                   size="mini"
                   @click="()=>{
@@ -505,7 +505,7 @@
                     handelBatchData()
                   }"
                 >批量修改</el-button> -->
-                <template v-if="detail.type !== 'LIMIT'">
+                <template>
                   <el-button
                     type="primary"
                     size="mini"
@@ -1608,16 +1608,14 @@ export default {
           return k.id
         })
         .join(',')
-      if (type) {
-        if (this.limitQty <= 0) {
-          this.$errorMsg('购买量上限不能小于0或不能为空')
-          return
-        }
-        params = {
-          customerIds,
-          ids,
-          limitQty: this.limitQty
-        }
+      if (this.limitQty <= 0) {
+        this.$errorMsg('购买量上限不能小于0或不能为空')
+        return
+      }
+      params = {
+        customerIds,
+        ids,
+        limitQty: this.limitQty
       }
       updateLimitBatchupdate(params).then(res => {
         this.handleDialogVisible()

+ 80 - 45
src/views/sales_policy/components/editPolicy.vue

@@ -272,7 +272,7 @@
                     @focus="handlePriceType(scope.row)"
                   >
                     <el-option
-                      v-for="item in priceList"
+                      v-for="item in priceList2"
                       :key="item.priceTypeId"
                       :label="item.priceTypeName"
                       :value="item.priceTypeId"
@@ -308,7 +308,7 @@
                   </template>
                   <template v-else>
                     <el-select
-                      v-if="!priceList.length"
+                      v-if="!priceList2.length"
                       v-model="scope.row.rebateWalletIds"
                       size="mini"
                       multiple
@@ -353,7 +353,7 @@
                   </template>
                   <template v-else>
                     <el-select
-                      v-if="!priceList.length"
+                      v-if="!priceList2.length"
                       v-model="scope.row.walletIds"
                       size="mini"
                       multiple
@@ -672,7 +672,8 @@ export default {
       region: 0,
       fullscreenLoading: false,
       srcList: [],
-      priceList: []
+      priceList: [],
+      priceList2: []
     }
   },
   computed: {
@@ -692,49 +693,28 @@ export default {
     },
     handleEdit(row) {
       row.fang = !row.fang
-      if (row.saleTypeCode) {
-        getPriceSalesRelaListV2({
-          pageNum: 1,
-          pageSize: -1,
-          params: [
-            {
-              'param': 'b.sale_code',
-              'compare': 'like',
-              'value': row.saleTypeCode
-            }
-          ]
-        }).then(res => {
-          this.priceList = res.data.records
-          const item = this.priceList.find(k => k.priceTypeName === row.priceType)
-          if (item) {
-            this.NoRebateWalletList2 = [{
-              id: item.walletId,
-              name: item.walletName
-            }]
-            this.rebateList2 = [{
-              walletRebateId: item.walletId2,
-              name: item.walletName2
-            }]
-          }
-        })
-      }
-
-      this.$nextTick(() => {
-        this.$refs.plTable.doLayout()
-      })
+      !row.fang && this.handleWallet(row)
     },
     setText(e, index, row, name) {
       if (e) {
         if (name === 'priceType') {
           const item = this.priceList.find(k => k.priceTypeId === e)
-          this.NoRebateWalletList2 = [{
-            id: item.walletId,
-            name: item.walletName
-          }]
-          this.rebateList2 = [{
-            walletRebateId: item.walletId2,
-            name: item.walletName2
-          }]
+          this.NoRebateWalletList2 = []
+          this.rebateList2 = []
+          this.priceList.forEach(k => {
+            if (k.priceTypeId === e) {
+              this.NoRebateWalletList2.push(
+                {
+                  id: k.walletId,
+                  name: k.walletName
+                }
+              )
+              this.rebateList2.push({
+                walletRebateId: k.walletId2,
+                name: k.walletName2
+              })
+            }
+          })
           this.dataList[index][name] = item.priceTypeName
           this.$set(row, 'walletIds', [])
           if (item.walletId) {
@@ -1152,12 +1132,13 @@ export default {
           materialNumber: '',
           policyId: this.searchForm.code,
           price: '',
+          fang: false,
           remark: '',
           saleTypeCode: '',
           saleTypeId: '',
           saleTypeName: '',
           specification: '',
-          walletIds: [this.NoRebateWalletList[0].id],
+          walletIds: [],
           walletRelaList: [],
           rebateWalletIds: []
         })
@@ -1231,7 +1212,7 @@ export default {
       this.$emit('upDataIsFlag')
     },
     getPriceSalesRelaListV2(val) {
-      getPriceSalesRelaListV2({
+      return getPriceSalesRelaListV2({
         pageNum: 1,
         pageSize: -1,
         params: [
@@ -1243,6 +1224,8 @@ export default {
         ]
       }).then(res => {
         this.priceList = res.data.records
+        this.priceList2 = this.quChong(res.data.records)
+        return Promise.resolve()
       })
     },
     handlePriceType(e) {
@@ -1250,8 +1233,60 @@ export default {
       if (e.saleTypeCode) {
         this.getPriceSalesRelaListV2(e.saleTypeCode)
       }
+    },
+    quChong(arr) {
+      var result = []
+      const obj = {}
+      for (let i = 0; i < arr.length; i++) {
+        if (!obj[arr[i].priceTypeId]) {
+          result.push(arr[i])
+          obj[arr[i].priceTypeId] = true
+        }
+      }
+      return result
+    },
+    handleWallet(row) {
+      if (row.saleTypeCode) {
+        this.getPriceSalesRelaListV2(row.saleTypeCode).then(res => {
+          this.NoRebateWalletList2 = []
+          this.rebateList2 = []
+          const rebateListId = []
+          const NoRebateWalletListId = []
+          this.priceList.length && this.priceList.forEach(k => {
+            if (k.priceTypeName === row.priceType) {
+              rebateListId.push(k.walletId2)
+              NoRebateWalletListId.push(k.walletId)
+              k.walletId && this.NoRebateWalletList2.push(
+                {
+                  id: k.walletId,
+                  name: k.walletName
+                }
+              )
+              k.walletId2 && this.rebateList2.push({
+                walletRebateId: k.walletId2,
+                name: k.walletName2
+              })
+            }
+          })
+          if (row.walletIds && row.walletIds.length) {
+            row.walletIds.forEach(k => {
+              if (!~NoRebateWalletListId.indexOf(k)) {
+                const item = this.NoRebateWalletList.find(e => e.id === k)
+                this.NoRebateWalletList2.push(item)
+              }
+            })
+          }
+          if (row.rebateWalletIds && row.rebateWalletIds.length) {
+            row.rebateWalletIds.forEach(k => {
+              if (!~rebateListId.indexOf(k)) {
+                const item = this.rebateList.find(e => e.walletRebateId === k)
+                this.rebateList2.push(item)
+              }
+            })
+          }
+        })
+      }
     }
-
   },
   components: {
     // Transfer,