Explorar o código

合同产品清单

zhaoxiaohai %!s(int64=3) %!d(string=hai) anos
pai
achega
6de6eebcb7

+ 29 - 13
packageA/contract/modules/product/index.js

@@ -41,13 +41,15 @@ Component({
                     icon: "none"
                     icon: "none"
                 })
                 })
                 res.data = res.data.map(value => {
                 res.data = res.data.map(value => {
-                    if (value.attinfos.length == 0) return value;
-                    value.attinfos = file.fileList(value.attinfos)
-                    let image = value.attinfos.find(v => v.fileType == "image");
-                    value.cover = image ? image.cover : "";
+                    if (value.attinfos.length != 0) {
+                        value.attinfos = file.fileList(value.attinfos)
+                        let image = value.attinfos.find(v => v.fileType == "image");
+                        value.cover = image ? image.cover : "";
+                    }
                     value.className = value.itemclass.length == 0 ? "暂无类目" : value.itemclass.map(v => v.itemclassname);
                     value.className = value.itemclass.length == 0 ? "暂无类目" : value.itemclass.map(v => v.itemclassname);
                     value.brandName = value.brand.length == 0 ? "暂无品牌" : value.brand.map(v => v.brandname);
                     value.brandName = value.brand.length == 0 ? "暂无品牌" : value.brand.map(v => v.brandname);
-                    value.discountrate = value.discountrate * 100;
+                    value.discountrate = (value.discountrate * 100).toFixed(2);
+                    value.price = (value.price - 0).toFixed(2);
                     return value;
                     return value;
                 })
                 })
                 this.setData({
                 this.setData({
@@ -90,7 +92,6 @@ Component({
                     }
                     }
                 }
                 }
             };
             };
-            console.log("添加产品", params)
             wx.navigateTo({
             wx.navigateTo({
                 url: '/packageA/select/product/select?params=' + JSON.stringify(params)
                 url: '/packageA/select/product/select?params=' + JSON.stringify(params)
             })
             })
@@ -153,12 +154,8 @@ Component({
         changeQueue({
         changeQueue({
             detail
             detail
         }) {
         }) {
-            let i = queue.findIndex(v => v.itemid == detail.itemid);
-            if (i == -1) {
-                queue.push(detail)
-            } else {
-                queue[i] = detail;
-            };
+            let i = queue.findIndex(v => v.sa_contract_itemsid == detail.sa_contract_itemsid);
+            i == -1 ? queue.push(detail) : queue[i] = detail;
             clearTimeout(downCounter)
             clearTimeout(downCounter)
             downCounter = setTimeout(() => {
             downCounter = setTimeout(() => {
                 this.changeItem(queue)
                 this.changeItem(queue)
@@ -175,7 +172,26 @@ Component({
                 }
                 }
             }, false).then(res => {
             }, false).then(res => {
                 console.log("合同批量修改产品清单", res)
                 console.log("合同批量修改产品清单", res)
-                // if (res.msg != '成功') console
+                queue = [];
+                let list = this.data.list;
+                if (res.msg != '成功') {
+                    wx.showToast({
+                        title: res.msg,
+                        icon: "none"
+                    })
+                    this.setData({
+                        list
+                    })
+                    return;
+                }
+                items.forEach(v => {
+                    v.discountrate = (v.discountrate * 100).toFixed(2);
+                    let i = list.findIndex(value => v.sa_contract_itemsid == value.sa_contract_itemsid);
+                    if (i != -1) this.data.list[i] = {
+                        ...list[i],
+                        ...v
+                    }
+                });
             })
             })
         }
         }
     }
     }

+ 35 - 6
packageA/contract/modules/product/list/index.js

@@ -9,27 +9,56 @@ Component({
         addGlobalClass: true
         addGlobalClass: true
     },
     },
     methods: {
     methods: {
-        /* 步进器回调 */
-        onStepper(e) {
+        onBlur(e) {
             let {
             let {
                 index,
                 index,
                 name
                 name
-            } = e.currentTarget.dataset, {
-                    detail
-                } = e,
+            } = e.currentTarget.dataset,
+                detail = name == 'qty' ? e.detail.value - 0 : (e.detail.value - 0).toFixed(2),
                 item = this.data.list[index];
                 item = this.data.list[index];
-            item[name] = detail;
             switch (name) {
             switch (name) {
                 case "qty":
                 case "qty":
+                    // item[name] = detail;
+                    if (detail < item.orderminqty) {
+                        item.qty = item.orderminqty == 0 ? 1 : item.orderminqty;
+                    } else {
+                        item.qty = detail
+                        if (item.orderaddqty != 0) {
+                            let remainder = (detail - item.orderminqty) % item.orderaddqty;
+                            if (remainder != 0) {
+                                wx.showToast({
+                                    title: '数量不符合条件,已自动调整',
+                                    icon: "none"
+                                })
+                                item.qty = detail - remainder + item.orderaddqty;
+                            }
+                        };
+                    }
                     //改变数量 现数量*现价
                     //改变数量 现数量*现价
                     item.amount = (item.price * item.qty).toFixed(2);
                     item.amount = (item.price * item.qty).toFixed(2);
                     break;
                     break;
                 case "discountrate":
                 case "discountrate":
+                    if (detail >= 100) {
+                        item.discountrate = 100
+                    } else if (detail <= 0) {
+                        item.discountrate = 1
+                    } else {
+                        item.discountrate = detail;
+                    }
                     //改变折扣 重新计算现价和总价
                     //改变折扣 重新计算现价和总价
                     item.price = (item.marketprice * (item.discountrate / 100) - 0).toFixed(2);
                     item.price = (item.marketprice * (item.discountrate / 100) - 0).toFixed(2);
                     item.amount = (item.price * item.qty).toFixed(2);
                     item.amount = (item.price * item.qty).toFixed(2);
+                    console.log(item.price)
                     break;
                     break;
                 case "price":
                 case "price":
+                    if (detail >= item.marketprice) {
+                        item.price = item.marketprice
+                    } else if (detail <= 0) {
+                        item.discountrate = 1;
+                        item.price = (item.marketprice * (item.discountrate / 100) - 0).toFixed(2);
+                    } else {
+                        item.price = detail;
+                    }
                     //改变现价 重新计算总价和折扣
                     //改变现价 重新计算总价和折扣
                     item.amount = (item.price * item.qty).toFixed(2);
                     item.amount = (item.price * item.qty).toFixed(2);
                     item.discountrate = this.getPercent(item.price, item.marketprice).toFixed(2);
                     item.discountrate = this.getPercent(item.price, item.marketprice).toFixed(2);

+ 13 - 0
packageA/contract/modules/product/list/index.scss

@@ -93,6 +93,18 @@
                 }
                 }
             }
             }
 
 
+            .input {
+                height: 58rpx;
+                background: #FFFFFF;
+                border-radius: 8rpx;
+                border: 1rpx solid #CCCCCC;
+                font-size: 28rpx;
+                font-family: PingFang SC-Regular, PingFang SC;
+                color: #333333;
+                line-height: 44px;
+                text-align: center;
+            }
+
             .money {
             .money {
                 flex: 1;
                 flex: 1;
                 display: flex;
                 display: flex;
@@ -100,6 +112,7 @@
                 font-family: PingFang SC-Medium, PingFang SC;
                 font-family: PingFang SC-Medium, PingFang SC;
                 color: #666666;
                 color: #666666;
                 justify-content: flex-end;
                 justify-content: flex-end;
+                margin-right: 20rpx;
 
 
                 text {
                 text {
                     font-size: 28rpx;
                     font-size: 28rpx;

+ 5 - 4
packageA/contract/modules/product/list/index.wxml

@@ -24,6 +24,7 @@
                 </view>
                 </view>
                 <view class="subfield">
                 <view class="subfield">
                     <text class="line-1" style="margin-right: 6rpx;">牌价:{{item.marketprice||' --'}}</text>
                     <text class="line-1" style="margin-right: 6rpx;">牌价:{{item.marketprice||' --'}}</text>
+                    <text class="line-1" style="margin-right: 6rpx;">起订量:{{item.orderminqty||'1'}} 增量:{{item.orderaddqty||'1'}}</text>
                 </view>
                 </view>
             </view>
             </view>
             <view class="delete" data-item="{{item}}" catchtap="deleteProduct">
             <view class="delete" data-item="{{item}}" catchtap="deleteProduct">
@@ -33,19 +34,19 @@
     </navigator>
     </navigator>
     <view class="bot">
     <view class="bot">
         <view class="row">
         <view class="row">
-            <view style="margin-right: 10rpx;">
+            <view style="margin-right: 40rpx;">
                 <view class="label">数量({{item.unitname}}):</view>
                 <view class="label">数量({{item.unitname}}):</view>
-                <van-stepper value="{{ item.qty }}" disabled="{{disabled}}" min='1' input-width="90rpx" button-size="48rpx" data-name="qty" data-index="{{index}}" bind:change="onStepper" />
+                <input class="input" style="width: 180rpx;" type="digit" disabled="{{disabled}}" value="{{item.qty}}" data-name="qty" data-index="{{index}}" bindblur="onBlur" />
             </view>
             </view>
             <view>
             <view>
                 <view class="label">折扣(%):</view>
                 <view class="label">折扣(%):</view>
-                <van-stepper value="{{item.discountrate}}" disabled="{{disabled}}" min='0' max='100' input-width="90rpx" button-size="48rpx" data-name="discountrate" data-index="{{index}}" bind:change="onStepper" />
+                <input class="input" style="width: 170rpx;" type="digit" disabled="{{disabled}}" value="{{item.discountrate}}" data-name="discountrate" data-index="{{index}}" bindblur="onBlur" />
             </view>
             </view>
         </view>
         </view>
         <view class="row">
         <view class="row">
             <view>
             <view>
                 <view class="label">单价(元):</view>
                 <view class="label">单价(元):</view>
-                <van-stepper value="{{ item.price }}" min='0' disabled="{{disabled}}" max='{{item.marketprice}}' input-width="130rpx" button-size="48rpx" data-name="price" data-index="{{index}}" bind:change="onStepper" />
+                <input class="input" style="width: 180rpx;" type="digit" disabled="{{disabled}}" value="{{item.price}}" data-name="price" data-index="{{index}}" bindblur="onBlur" />
             </view>
             </view>
             <view class="money">
             <view class="money">
                 金额:<text>¥{{item.amount}}</text>
                 金额:<text>¥{{item.amount}}</text>