TuiPlus
TuiPlus
  • 发布:2020-08-31 18:58
  • 更新:2020-08-31 18:58
  • 阅读:722

【报Bug】升级版本到2.88之后 编译到微信小程序 V-IF 中不能使用带参数的计算属性

分类:HBuilderX

产品分类: HbuilderX

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: windows10

HBuilderX版本号: 2.8.8

示例代码:

<template>
<view class="content unifont">
<view class="navbar">
<view v-for="(item, index) in navList" :key="index" class="nav-item" :class="{current: tabCurrentIndex === index}"
@click="tabClick(index)">
{{item.text}}
</view>
</view>
<view class="uni-list"></view>
<swiper :current="tabCurrentIndex" class="swiper-box" duration="300" @change="changeTab">
<swiper-item class="tab-content" v-for="(tabItem,tabIndex) in navList" :key="tabIndex">
<!-- <scroll-view class="list-scroll-content" scroll-y @scrolltolower="loadData"> -->
<scroll-view class="list-scroll-content" scroll-y>
<!-- 空白页 -->
<!-- <empty v-if="tabItem.orderList.length === 0"></empty> -->

                <!-- 订单号 -->  
                <view style="height: 1upx;"></view>  
                <view v-for="(oritem, orid) in tabItem.order" :key="orid" class="orderitems">  

                    <!-- <view class="">订单号{{or._id}}</view> -->  
                    <!-- 订单列表 -->  
                    <view v-for="(sh, k) in oritem.shoplist" :key="k" class="shopsty">  
                        <view class="item">  
                            <view class="item-left">  
                                <image :src="sh.shop_logo" mode="aspectFill" lazy-load></image>  
                                <view class="shopname">{{sh.shop_name}}</view>  
                                <view class="yticon icon-you"></view>  
                            </view>  
                            <view class="item-right">已评价</view>  
                        </view>  
                        <!-- 订单商品列表 -->  
                        <view v-if="oritem._id==item._id && item.ru_id==sh.ru_id " v-for="(item,index) in tabItem.orderList" :key="index"  
                         class="order-item">  

                            <view class="item-good">  
                                <image :src="item.image" mode="aspectFill" lazy-load></image>  
                                <view class="good">  
                                    <view class="good-name">{{item.title}}</view>  
                                    <view class="good-attr">{{item.attr_val}}</view>  
                                </view>  
                                <view class="good-price">  
                                    <!--    <view class="price">¥{{floatjs.subtract(floatjs.multiply(item.price,item.number),item.cou_price)}}</view> -->  
                                    <view class="price">¥{{goodprice("789")}}</view>  <!-- 这里这句加上就报错 -->  
                                    <view class="num">x{{item.number}}</view>  
                                </view>  
                            </view>  
                        </view>  
                    </view>  

                    <view class="tongji">共{{oritem.count}}件商品 合计:{{oritem.surplus}}(含运费{{oritem.shipping_price}}元)</view>  
                    <view class="uni-list"></view>  
                    <view class="good-bot">  
                        <view class="but"><button type="default" size="mini">再次购买</button></view>  
                        <view class="but"><button type="warn" size="mini" @click="deleteOrder(oritem._id)">删除订单</button></view>  
                    </view>  
                </view>  
                <view style="height: 1upx;"></view>  
                <!--        <uni-load-more :status="tabItem.loadingType"></uni-load-more> -->  
            </scroll-view>  
        </swiper-item>  
    </swiper>  
    <!--    <mix-loading v-if="isview" :mask="true"></mix-loading> -->  
</view>  

</template>

<script>
// import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
// import empty from "@/components/empty";
export default {
components: {
// uniLoadMore,
// empty
},
data() {
return {
isview: false,
uInfo: uni.getStorageSync('userInfo'),
tabCurrentIndex: 0,
//0等确认1待付款3无效5完成
navList: [{
state: -1,
text: '全部',
loadingType: 'more',
order: [],
orderList: []
},
{
state: 0,
text: '待付款',
order: [],
loadingType: 'more',
orderList: []
},
{
state: 1,
text: '待发货',
order: [],
loadingType: 'more',

                    orderList: []  
                },  
                {  
                    state: 2,  
                    text: '待收货',  
                    order: [],  
                    loadingType: 'more',  

                    orderList: []  
                },  
                {  
                    state: 3,  
                    text: '待评价',  
                    order: [],  
                    loadingType: 'more',  

                    orderList: []  
                },  
                {  
                    state: 4,  
                    text: '售后',  
                    order: [],  
                    loadingType: 'more',  
                    orderList: []  
                }  
            ],  
        };  
    },  

    async onLoad(options) {  
        this.isview = true;  
        await this.loadData();  
        this.isview = false;  
    },  

    methods: {  
        //获取订单列表  
        async loadData() {  
            if (this.uInfo) {  
                let userid = this.uInfo._id;  
                let formData = {  
                    tabname: "ny_order",  
                    page: 1,  
                    everpagenumber: 10,  
                    orderby: "nieyunaddtime",  
                    desc: "desc",  
                    data: {  
                        user_id: userid,  
                        isdel: false  
                    }  
                }  
                let rst = await this.request.paging_query(formData);  
                let arr = rst[1].data;  

                let navo = this.navList[0];  
                arr.forEach((item) => {  
                    let order_status = item.order_status + 1;  
                    let navitem = this.navList[order_status]  
                    let garr = item.goods;  
                    let ordercount = 0  
                    garr.forEach((e) => {  
                        e._id = item._id;  
                        ordercount += e.number;  
                    })  
                    navitem.orderList = navitem.orderList.concat(garr);  
                    navo.orderList = navo.orderList.concat(garr);  
                    // 共{{oritem.count}}件商品合计:{{oritem.goods_amount}} 优惠:{{oritem.coupons}}元 合计:{{or.surplus}}(含运费{{or.shipping_price}}元)</view>  
                    let obj = {  
                        _id: item._id,  
                        shoplist: item.shoplist,  
                        count: ordercount,  
                        goods_amount: item.prices,  
                        coupons: item.cou_price,  
                        surplus: item.actprice,  
                        shipping_price: item.postprice,  
                    }  
                    navitem.order.push(obj);  
                    navo.order.push(obj);  
                })  

            } else {  

            }  

        },  
        //子店铺处理  
        sonshop(item) {  
            item.order.forEach((k) => {  
                let son = [];  
                item.orderList.forEach((s) => {  
                    if (s.order_sn == k.order_sn) {  
                        let obj = {};  
                        this.$set(obj, 'ru_id', s.ru_id);  
                        this.$set(obj, 'shop_logo', s.shop_logo);  
                        this.$set(obj, 'shop_name', s.shop_name);  
                        let y = son.findIndex((e) => (e.ru_id == s.ru_id));  
                        if (y == -1) {  
                            son.push(obj);  
                        }  
                    }  
                })  
                this.$set(k, 'shoplist', son);  
            })  
        },  

        //swiper 切换  
        changeTab(e) {  
            this.tabCurrentIndex = e.target.current;  
        },  
        //顶部tab点击  
        tabClick(index) {  
            this.tabCurrentIndex = index;  
        },  
        //删除订单  
        deleteOrder(id) {  
            uni.showModal({  
                content: '订单删除后无法恢复,客官您再想想哦~',  
                success: async (res) => {  
                    if (res.confirm) {  
                        let rst = await this.$api.updateunicloud({  
                            tabname: "ny_order",  
                            id: id,  
                            data: {  
                                isdel: true  
                            }  
                        })  
                        console.log(rst.affectedDocs);  
                        if (rst.affectedDocs == 1) {  
                            this.navList.forEach((o) => {  
                                o.order.forEach((t, a) => {  
                                    if (t._id == id) {  
                                        this.$delete(o.order, a);  
                                    }  
                                })  
                                o.orderList.forEach((s, i) => {  
                                    if (s._id == id) {  
                                        this.$delete(o.orderList, i);  
                                    }  
                                })  
                            })  
                        }  
                    } else if (res.cancel) {  

                    }  
                }  
            });  
        },  
        //取消订单  
        cancelOrder(item) {  
            this.isview = true;  
            setTimeout(() => {  
                let {  
                    stateTip,  
                    stateTipColor  
                } = this.orderStateExp(9);  
                item = Object.assign(item, {  
                    state: 9,  
                    stateTip,  
                    stateTipColor  
                })  

                //取消订单后删除待付款中该项  
                let list = this.navList[1].orderList;  
                let index = list.findIndex(val => val.id === item.id);  
                index !== -1 && list.splice(index, 1);  
                this.isview = false;  
            }, 600)  
        },  

        //订单状态文字和颜色  
        orderStateExp(state) {  
            let stateTip = '',  
                stateTipColor = '#fa436a';  
            switch (+state) {  
                case 1:  
                    stateTip = '待付款';  
                    break;  
                case 2:  
                    stateTip = '待发货';  
                    break;  
                case 9:  
                    stateTip = '订单已关闭';  
                    stateTipColor = '#909399';  
                    break;  

                    //更多自定义  
            }  
            return {  
                stateTip,  
                stateTipColor  
            };  
        }  
    },  
    computed: {  
        goodprice(iem) {  
            return (item) => {  
                return item;  
            }  
        }  
    }  
}  

</script>

<style lang="scss">

</style>

操作步骤:

1

预期结果:

1

实际结果:

1

bug描述:

升级版本到2.88这后 编译到微信小程序 V-IF 中不能使用带参数的计算属性 2.75版中使用则没有问题 <view class="price">¥{{goodprice("789")}}</view> <!-- 这里这句加上就报错 --> 请问一下是什么问题呀。(v-if="oritem._id==item._id && item.ru_id==sh.ru_id") 调用带参数的函数方法也不行。

2020-08-31 18:58 负责人:无 分享
已邀请:

该问题目前已经被锁定, 无法添加新回复