소스 검색

feat: 置换单列表

zh 2 년 전
부모
커밋
a96940262f
1개의 변경된 파일237개의 추가작업 그리고 15개의 파일을 삭제
  1. 237 15
      src/views/supply/displace/displace_list.vue

+ 237 - 15
src/views/supply/displace/displace_list.vue

@@ -62,11 +62,22 @@
     <div class="main-title">
       <div class="title">可置换产品信息</div>
       <div>
+        <el-radio-group v-model="isEquivalent" :disabled="orderList.length">
+          <el-radio
+            v-for="item in [
+              { label: '同价置换', value: 0 },
+              { label: '非同价置换', value: 1 }
+            ]"
+            :key="item.value"
+            :label="item.value"
+            >{{ item.label }}</el-radio
+          >
+        </el-radio-group>
         <el-button size="mini" type="primary" @click="openKeGoodsDialog">选择机型</el-button>
       </div>
     </div>
     <div class="table">
-      <el-table :data="keGoodsList" border fit highlight-current-row stripe>
+      <el-table v-show="isEquivalent === 0" :data="keGoodsList" border fit highlight-current-row stripe>
         <el-table-column
           align="left"
           label="物料编码"
@@ -108,6 +119,100 @@
           </template>
         </el-table-column>
       </el-table>
+      <el-table v-show="isEquivalent === 1" :data="keGoodsList" border fit highlight-current-row stripe>
+        <el-table-column align="left" label="销售类型" prop="saleTypeCode" min-width="160" show-overflow-tooltip>
+          <template slot-scope="scope">
+            <el-select
+              v-model="scope.row.saleTypeCode"
+              placeholder="请选择"
+              size="mini"
+              clearable
+              filterable
+              @change="handleChange($event, scope.row)"
+            >
+              <el-option v-for="item in saleList" :key="item.saleCode" :label="item.saleName" :value="item.saleCode">
+              </el-option>
+            </el-select>
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="left"
+          label="物料编码"
+          prop="number"
+          min-width="160"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="left"
+          label="产品编码"
+          prop="oldNumber"
+          min-width="160"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="left"
+          label="产品名称"
+          prop="name"
+          min-width="160"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="left"
+          label="规格型号"
+          prop="specification"
+          min-width="350"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column align="left" label="置换单价" prop="price" min-width="160" show-overflow-tooltip>
+          <template slot-scope="scope">
+            <el-input
+              type="number"
+              v-model.number="scope.row.price"
+              placeholder="请输入"
+              size="mini"
+              clearable
+              @change=""
+            ></el-input>
+          </template>
+        </el-table-column>
+        <el-table-column align="left" label="格力折扣" prop="discAmount" min-width="160" show-overflow-tooltip>
+          <template slot-scope="scope">
+            <el-input
+              type="number"
+              v-model.number="scope.row.discAmount"
+              placeholder="请输入"
+              size="mini"
+              clearable
+              @change=""
+            ></el-input>
+          </template>
+        </el-table-column>
+        <el-table-column align="left" label="返利类型" prop="walletRebateId" min-width="160" show-overflow-tooltip>
+          <template slot-scope="scope">
+            <el-select
+              v-model="scope.row.walletRebateId"
+              placeholder="请选择"
+              size="mini"
+              clearable
+              filterable
+              @change="handleChangeRebate($event, scope.row)"
+            >
+              <el-option
+                v-for="item in rebateSaletypelist"
+                :key="item.walletRebateId"
+                :label="item.name"
+                :value="item.walletRebateId"
+              >
+              </el-option>
+            </el-select>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="操作" min-width="100" fixed="right">
+          <template slot-scope="scope">
+            <el-button type="text" @click="deleteKeGoodsList(scope.$index)">删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
     </div>
 
     <div class="main-title">
@@ -200,7 +305,7 @@
           <el-table-column
             align="left"
             label="销售类型"
-            prop="saleTypeName"
+            prop="ke_saleTypeName"
             min-width="160"
             show-overflow-tooltip
           ></el-table-column>
@@ -221,7 +326,7 @@
           <el-table-column
             align="right"
             label="单价"
-            prop="price"
+            prop="ke_price"
             min-width="100"
             show-overflow-tooltip
           ></el-table-column>
@@ -233,7 +338,7 @@
           <el-table-column
             align="left"
             label="返利类型"
-            prop="rebateWalletName"
+            prop="ke_rebateWalletName"
             min-width="100"
             show-overflow-tooltip
           ></el-table-column>
@@ -251,7 +356,7 @@
           <el-table-column
             align="right"
             label="格力折扣"
-            prop="discAmount"
+            prop="ke_discAmount"
             min-width="100"
             show-overflow-tooltip
           ></el-table-column>
@@ -591,7 +696,26 @@
               <el-input v-model="orderDialog_screenForm.customerNumber" placeholder="请输入经销商编号"></el-input>
             </el-form-item>
           </el-col>
-          <el-col :xs="12" :sm="6" :lg="6" class="tr">
+          <el-col :xs="12" :sm="6" :lg="6">
+            <el-form-item prop="priceType" label="价格类型">
+              <el-select
+                v-model="orderDialog_screenForm.priceType"
+                placeholder="请选择价格类型"
+                size="mini"
+                clearable
+                filterable
+              >
+                <el-option
+                  v-for="item in priceTypeLilst"
+                  :key="item.priceTypeId"
+                  :label="item.priceTypeName"
+                  :value="item.priceTypeName"
+                >
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="24" :lg="24" class="tr">
             <el-form-item label="">
               <el-button @click="resetOrderDialogScreenForm">清空</el-button>
               <el-button type="primary" @click="submitOrderDialogScreenForm">搜索</el-button>
@@ -726,6 +850,13 @@
           ></el-table-column>
           <el-table-column
             align="left"
+            label="价格类型"
+            prop="priceType"
+            min-width="250"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="left"
             label="可被置换数量"
             prop="refundableQty"
             min-width="100"
@@ -756,8 +887,10 @@
 </template>
 
 <script>
+import { getTypeList } from '@/api/common.js'
+import { getProductPriceListV2 } from '@/api/priceType.js'
+import { getWalletRebateSaletypelist } from '@/api/policy_list'
 import { getGoodsList, getOrderList, addDisplace } from '@/api/supply/displace'
-
 export default {
   data() {
     return {
@@ -797,7 +930,8 @@ export default {
       orderDialog_screenForm: {
         id: '',
         customerName: '',
-        customerNumber: ''
+        customerNumber: '',
+        priceType: ''
       },
       orderDialog_list: [],
       orderDialog_selection: [],
@@ -809,11 +943,37 @@ export default {
         { label: '基础产品价格表', value: '1' },
         { label: '家用产品价格表', value: '2' },
         { label: '商用产品价格表', value: '3' }
-      ]
+      ],
+      isEquivalent: 0,
+      saleList: [],
+      rebateSaletypelist: [],
+      priceTypeLilst: []
     }
   },
-
-  created() {},
+  watch: {
+    keGoodsList: {
+      deep: true,
+      handler: function (val, oal) {
+        if (this.orderList.length && this.type === 2) {
+          this.orderList.forEach(item => {
+            item.ke_materialName = val[0].name
+            item.ke_specification = val[0].specification
+            item.ke_refundableQty = ''
+            item.ke_saleTypeName = val[0].saleTypeName
+            item.ke_saleTypeCode = val[0].saleTypeCode
+            item.ke_saleTypeId = val[0].saleTypeId
+            item.ke_price = val[0].price
+            item.ke_rebateWalletName = val[0].rebateWalletName
+            item.ke_walletRebateId = val[0].walletRebateId
+            item.ke_discAmount = val[0].discAmount
+          })
+        }
+      }
+    }
+  },
+  created() {
+    this.getTypeList()
+  },
 
   methods: {
     // 切换置换类型
@@ -829,7 +989,49 @@ export default {
         return true // 不禁用
       }
     },
-
+    handleChange(e, row) {
+      if (e) {
+        const item = this.saleList.find(k => e == k.saleCode)
+        if (Object.keys(item).length) {
+          this.$set(row, 'saleTypeName', item.saleName)
+          this.$set(row, 'saleTypeCode', item.saleCode)
+          this.$set(row, 'saleTypeId', item.id)
+        }
+        this.getWalletRebateSaletypelist(e)
+      } else {
+        this.$set(row, 'saleTypeName', '')
+        this.$set(row, 'saleTypeCode', '')
+        this.$set(row, 'saleTypeId', '')
+      }
+    },
+    handleChangeRebate(e, row) {
+      if (e) {
+        const item = this.rebateSaletypelist.find(k => e == k.walletRebateId)
+        if (Object.keys(item).length) {
+          this.$set(row, 'rebateWalletName', item.name)
+          this.$set(row, 'walletRebateId', item.walletRebateId)
+        }
+      } else {
+        this.$set(row, 'rebateWalletName', '')
+        this.$set(row, 'walletRebateId', '')
+      }
+    },
+    getTypeList() {
+      getTypeList({ pageNum: 1, pageSize: -1 }).then(res => {
+        this.saleList = res.data.records
+      })
+      return this.saleList
+    },
+    getWalletRebateSaletypelist(saleTypeCode) {
+      getWalletRebateSaletypelist({ pageNum: 1, pageSize: -1, saleTypeCode, status: 1 }).then(res => {
+        this.rebateSaletypelist = res.data.records
+      })
+    },
+    getProductPriceListV2() {
+      getProductPriceListV2({ pageNum: 1, pageSize: -1 }).then(res => {
+        this.priceTypeLilst = res.data.records
+      })
+    },
     // 获取列表 - 被置换产品
     getBeiGoodsList() {
       getGoodsList({
@@ -1018,6 +1220,13 @@ export default {
       }
       // 批量置换(单选)
       else {
+        this.$set(item, 'saleTypeName', '')
+        this.$set(item, 'saleTypeCode', '')
+        this.$set(item, 'saleTypeId', '')
+        this.$set(item, 'price', 0)
+        this.$set(item, 'discAmount', 0)
+        this.$set(item, 'rebateWalletName', '')
+        this.$set(item, 'walletRebateId', '')
         this.keGoodsList = [item]
       }
       this.closeKeGoodsDialog()
@@ -1069,6 +1278,7 @@ export default {
       }
       this.orderDialog_show = true
       this.getOrderList()
+      this.getProductPriceListV2()
     },
 
     // 关闭弹窗 - 被置换订单
@@ -1114,6 +1324,13 @@ export default {
           item.ke_materialName = this.keGoodsList[0].name
           item.ke_specification = this.keGoodsList[0].specification
           item.ke_refundableQty = ''
+          item.ke_saleTypeName = this.keGoodsList[0].saleTypeName
+          item.ke_saleTypeCode = this.keGoodsList[0].saleTypeCode
+          item.ke_saleTypeId = this.keGoodsList[0].saleTypeId
+          item.ke_price = this.keGoodsList[0].price
+          item.ke_rebateWalletName = this.keGoodsList[0].rebateWalletName
+          item.ke_walletRebateId = this.keGoodsList[0].walletRebateId
+          item.ke_discAmount = this.keGoodsList[0].discAmount
         })
         this.orderList = this.orderList.concat(orderList)
       }
@@ -1144,6 +1361,10 @@ export default {
 
       let params = {
         type: this.type,
+        newDiscAmount: this.keGoodsList[0].discAmount,
+        newPrice: this.keGoodsList[0].price,
+        saleTypeId: this.keGoodsList[0].saleTypeId,
+        walletId2: this.keGoodsList[0].walletRebateId,
         newMaterialIds: this.keGoodsList.map(item => {
           return item.id
         }),
@@ -1155,6 +1376,7 @@ export default {
           }
         })
       }
+      console.log(params, 999)
       addDisplace(params).then(res => {
         this.$successMsg('提交成功')
         this.resetForm()
@@ -1184,9 +1406,9 @@ export default {
     padding-left: 10px;
     font-weight: 600;
   }
+}
 
-  .el-radio-group {
-    margin-left: 30px;
-  }
+.el-radio-group {
+  margin: 0 30px;
 }
 </style>