zhaoxiaohai пре 3 година
родитељ
комит
1c4e30f1aa

+ 131 - 0
packageA/opponent/add.js

@@ -0,0 +1,131 @@
+const _Http = getApp().globalData.http;
+
+Page({
+    data: {
+        showAll: false,
+        form: [{
+            label: "企业名称",
+            error: false,
+            errMsg: "",
+            type: "textarea",
+            value: "",
+            placeholder: "企业全称",
+            valueName: "enterprisename",
+            checking: "base",
+            required: true
+        }, {
+            label: "品牌名称",
+            error: false,
+            errMsg: "",
+            type: "textarea",
+            value: "",
+            placeholder: "品牌名称",
+            valueName: "brandname",
+            checking: "base",
+            required: false
+        }, {
+            label: "优势信息",
+            error: false,
+            errMsg: "",
+            type: "textarea",
+            value: "",
+            placeholder: "优势信息",
+            valueName: "advantage",
+            checking: "base",
+            required: false
+        }, {
+            label: "劣势信息",
+            error: false,
+            errMsg: "",
+            type: "textarea",
+            value: "",
+            placeholder: "劣势信息",
+            valueName: "inferiority",
+            checking: "base",
+            required: false
+        }, {
+            label: "备注",
+            error: false,
+            errMsg: "",
+            type: "textarea",
+            value: "",
+            placeholder: "",
+            valueName: "remarks",
+            checking: "base",
+            required: false
+        }],
+        content: {
+            "sa_competitorid": 0,
+            "sys_enterpriseid": 0,
+        },
+        disabled: true
+    },
+    onLoad(options) {
+        if (options.data) {
+            let data = JSON.parse(options.data);
+            console.log(data)
+            this.se
+            this.setData({
+                disabled: false,
+                form: this.data.form.map(v => {
+                    if (v.valueName != 'region') {
+                        v.value = data[v.valueName];
+                    } else {
+                        v.value = data.province ? [data.province, data.city, data.county] : []
+                    }
+                    return v
+                }),
+                "content.sa_competitorid": data.sa_competitorid,
+                "content.sys_enterpriseid": data.sys_enterpriseid,
+            })
+        }
+    },
+    /* 表单必填项是否完成 */
+    onConfirm({
+        detail
+    }) {
+        this.setData({
+            disabled: detail
+        })
+    },
+    // 是否显示全部
+    onChange({
+        detail
+    }) {
+        this.setData({
+            showAll: detail
+        })
+    },
+    submit() {
+        let content = {
+            ...this.data.content,
+            ...this.selectComponent("#Form").submit()
+        };
+        _Http.basic({
+            "id": 20221018164102,
+            content
+        }).then(res => {
+            console.log("新建对手", res)
+            if (res.msg != '成功') return wx.showToast({
+                title: res.data,
+                icon: "none"
+            })
+            wx.showToast({
+                title: '保存成功',
+                icon: "none"
+            })
+            setTimeout(() => {
+                let pages = getCurrentPages(),
+                    page = pages[pages.length - 2];
+                if (page.__route__ == 'packageA/opponent/index') {
+                    wx.navigateBack();
+                    page.getList(true);
+                } else if (page.__route__ == 'packageA/opponent/detail') {
+                    wx.navigateBack();
+                    page.getDetail();
+                }
+            }, 300)
+
+        })
+    },
+})

+ 4 - 0
packageA/opponent/add.json

@@ -0,0 +1,4 @@
+{
+    "usingComponents": {},
+    "navigationBarTitleText": "设置对手"
+}

+ 23 - 0
packageA/opponent/add.scss

@@ -0,0 +1,23 @@
+.new-footer {
+    display: flex;
+    align-items: center;
+    justify-content: flex-end;
+    position: fixed;
+    width: 100vw;
+    height: 130rpx;
+    background: #FFFFFF;
+    box-shadow: 0px -4rpx 16rpx 2rpx rgba(150, 157, 165, 0.16);
+    bottom: 0;
+
+    .new-submit {
+        width: 156rpx;
+        height: 90rpx;
+        background: #3874F6;
+        border-radius: 8rpx;
+        font-size: 28rpx;
+        font-family: PingFang SC-Bold, PingFang SC;
+        font-weight: bold;
+        color: #FFFFFF;
+        margin-right: 30rpx;
+    }
+}

+ 6 - 0
packageA/opponent/add.wxml

@@ -0,0 +1,6 @@
+<Yl_Headline title='基本信息' type='switch' switchLabel='仅显示必填信息' switch='{{showAll}}' bind:callBack='onChange' />
+<Yl_field id='Form' form='{{form}}' showAll='{{!showAll}}' bind:onConfirm='onConfirm' />
+<view style="height: 100rpx;" />
+<view class="new-footer">
+    <van-button custom-class='new-submit' disabled='{{disabled}}' bindclick='submit'>提交</van-button>
+</view>

+ 197 - 0
packageA/opponent/detail.js

@@ -0,0 +1,197 @@
+const _Http = getApp().globalData.http;
+Page({
+    data: {
+        tabsActive: 1, //tabs 选中项
+        sa_competitorid: 0,
+        detail: {}, //详情数据
+        briefs: [], //简介列表
+        tabsList: [{
+            label: "详细信息",
+            num: 132
+        }, {
+            label: "项目商机",
+            num: 132
+        }, {
+            label: "跟进动态",
+            num: 132
+        }, {
+            label: "操作记录",
+            num: 132
+        }, {
+            label: "附件",
+            num: 132
+        }],
+        list1: [], //基本信息
+        list2: [], //系统信息
+        tabbarList: [{
+            icon: "icon-genjin",
+            label: "跟进"
+        }, {
+            icon: "icon-bianji",
+            label: "编辑"
+        }, {
+            icon: "icon-shanchu",
+            label: "作废"
+        }]
+    },
+    onLoad(options) {
+        this.setData({
+            sa_competitorid: options.id
+        })
+        this.getDetail();
+    },
+    //详情按钮回调
+    tabbarOnClick({
+        detail
+    }) {
+        let data = this.data.detail;
+        switch (detail.label) {
+            case "跟进":
+                wx.navigateTo({
+                    url: `/packageA/setclient/modules/trace/add/index?ownertable=sa_competitor&ownerid=${data.sa_competitorid}`,
+                })
+                break;
+            case "编辑":
+                wx.navigateTo({
+                    url: `/packageA/opponent/add?data=${JSON.stringify(data)}`,
+                })
+                break;
+            case "作废":
+
+                wx.navigateTo({
+                    url: `/packageA/setclient/delete?item=${JSON.stringify({
+                        "sa_competitorids": [this.data.detail.sa_competitorid],
+                        datastatus: 1, //(0:正常;1:作废;2:锁定)
+                    })}&id=20221018164202`,
+                })
+                break;
+            default:
+                console.log(detail)
+                break;
+        }
+    },
+    /* 获取详情 */
+    getDetail() {
+        /* 基本信息 */
+        _Http.basic({
+            "id": 20221019105802,
+            "content": {
+                nochace: true,
+                sa_competitorid: this.data.sa_competitorid
+            },
+        }).then(res => {
+            console.log("竞争对手详情", res)
+            if (res.msg != '成功') return wx.showToast({
+                title: res.data,
+                icon: "none"
+            })
+            /* 摘要信息 */
+            let briefs = [{
+                label: "品牌",
+                value: res.data.brandname
+            }, {
+                label: "优势信息",
+                value: res.data.advantage
+            }, {
+                label: "劣势信息",
+                value: res.data.inferiority
+            }];
+            /* 基本信息 */
+            let list1 = [{
+                label: "名称",
+                value: res.data.enterprisename
+            }, {
+                label: "品牌",
+                value: res.data.brandname
+            }, {
+                label: "优势信息",
+                value: res.data.advantage
+            }, {
+                label: "劣势信息",
+                value: res.data.inferiority
+            }, {
+                label: "备注信息",
+                value: res.data.remarks
+            }];
+            /* 系统信息 */
+            let list2 = [{
+                label: "创建人",
+                value: res.data.createby
+            }, {
+                label: "创建时间",
+                value: res.data.createdate
+            }, {
+                label: "最近跟进人",
+                value: res.data.followby
+            }, {
+                label: "最近跟进时间",
+                value: res.data.followdate
+            }];
+            this.setData({
+                detail: res.data,
+                briefs,
+                list1,
+                list2
+            });
+            //获取标签
+            this.getTags();
+            this.partialRenewal();
+        });
+    },
+    //tabs 切换
+    tabsChange({
+        detail
+    }) {
+        this.setData({
+            tabsActive: detail
+        });
+        this.partialRenewal();
+    },
+    //局部数据更新 tabs
+    partialRenewal(init = false) {
+        const id = this.data.detail.sys_enterpriseid;
+        let model = '';
+        let name = this.data.tabsList[this.data.tabsActive].label;
+        switch (name) {
+            case "项目商机":
+                model = "#Project"
+                break;
+            case "跟进动态":
+                model = "#Trace"
+                break;
+            case "操作记录":
+                model = "#Record"
+                break;
+            case "附件":
+                model = "#Files"
+                break;
+        };
+        if (model) {
+            // 确定好模块ID total = null 是第一次加载 加载数据
+            // init是新增或修改需要清数据
+            let Component = this.selectComponent(model);
+            const {
+                total,
+                pageNumber,
+                pageTotal
+            } = Component.data.content;
+            if (total == null || init) {
+                console.log(1)
+                Component.getList(id, init);
+            } else if (pageNumber <= pageTotal) {
+                console.log(2)
+                Component.getList(id, false);
+            } else {
+                //用来判断 在搜索页面修改,与tabs选项不一致 但是切换到该选项 重置数据
+            }
+        }
+    },
+    //更新标签
+    getTags() {
+        this.selectComponent("#Tags").getTags();
+    },
+    onReachBottom() {
+        this.partialRenewal();
+    },
+    onShareAppMessage() {}
+})

+ 10 - 0
packageA/opponent/detail.json

@@ -0,0 +1,10 @@
+{
+    "usingComponents": {
+        "Preview": "../setclient/modules/preview/index",
+        "Trace": "../setclient/modules/trace/index",
+        "Record": "/packageA/public/record/index",
+        "Files": "/packageA/public/files/index",
+        "Project": "./modules/project/index"
+    },
+    "navigationBarTitleText": "竞争对手"
+}

+ 1 - 0
packageA/opponent/detail.scss

@@ -0,0 +1 @@
+@import "./modules/list/index";

+ 35 - 0
packageA/opponent/detail.wxml

@@ -0,0 +1,35 @@
+<!-- 头部 样式使用list样式 -->
+<view class="setclient-list-item" url="#">
+    <view class="con">
+        <view class="portrait {{detail.enterprisename <=2?'min-portrait':''}}">{{handle.getName(detail.enterprisename)}}</view>
+        <view class="mian">
+            <view class="label line-1">{{detail.enterprisename}}</view>
+            <view class="tag-box">
+                <Yl-tags id="Tags" add ownertable='sa_competitor' ownerid='{{detail.sa_competitorid}}' />
+            </view>
+        </view>
+        <view class="extend">
+            <Info />
+        </view>
+    </view>
+</view>
+<!-- 简介 -->
+<Yl_Detail list="{{briefs}}" />
+<view style="height: 20rpx;" />
+<!-- 功能 -->
+<Yl_FunTabs list='{{tabsList}}' active='{{tabsActive}}' bind:onChenge="tabsChange">
+    <Preview slot='详细信息' list1='{{list1}}' list2='{{list2}}' />
+    <Project slot='项目商机' id='Project' />
+    <Trace slot='跟进动态' id='Trace' ownertable='sa_competitor' ownerid='{{detail.sa_competitorid}}' />
+    <Record slot='操作记录' id="Record" ownertable='sa_competitor' ownerid='{{detail.sa_competitorid}}' />
+    <Files slot='附件' id="Files" ownertable='sa_competitor' ownerid='{{detail.sa_competitorid}}' />
+    <view style="height: 140rpx;" />
+</Yl_FunTabs>
+<!-- 底部 -->
+<Yl_Tabbar list='{{tabbarList}}' bind:callback="tabbarOnClick" />
+<!-- 处理四字 -->
+<wxs module="handle">
+    module.exports.getName = function (name) {
+        return name.substring(0, 4)
+    };
+</wxs>

+ 192 - 0
packageA/opponent/index.js

@@ -0,0 +1,192 @@
+const _Http = getApp().globalData.http,
+    getHeight = require("../../utils/getRheRemainingHeight");
+Page({
+
+    /**
+     * 页面的初始数据
+     */
+    data: {
+        navList: [{
+            label: "排序",
+            icon: "icon-shengxu",
+            color: "",
+            width: "",
+            id: "sort"
+        }, {
+            label: "筛选",
+            icon: "icon-shaixuan",
+            color: "",
+            width: "",
+            id: "2"
+        }],
+        content: {
+            "nocache": true,
+            "pageNumber": 1,
+            "pageTotal": 1,
+            "pageSize": 20,
+            "isExport": 0,
+            "where": {
+                "startdate": "",
+                "enddate": "",
+            },
+            "sort": []
+        },
+        filter: {
+            show: false,
+            type: ['普通报价', '项目报价'], //状态项
+            typeActive: "",
+            status: ['新建', '提交', '审核'], //状态项
+            statusActive: "",
+            startdate: "",
+            enddate: ""
+        }
+    },
+    onLoad(options) {
+        this.getList();
+    },
+    /* 获取列表 */
+    getList(init = false, data) {
+        if (init.detail != undefined) init = init.detail;
+        let content = this.data.content;
+        if (init) content.pageNumber = 1;
+        if (content.pageNumber > content.pageTotal) return;
+        if (data) {
+            content.where.startdate = data.startdate;
+            content.where.enddate = data.enddate;
+        }
+        _Http.basic({
+            "id": 20221018164302,
+            content
+        }).then(res => {
+            console.log("竞争对手列表", res)
+            this.selectComponent('#ListBox').RefreshToComplete();
+            if (res.msg != '成功') return wx.showToast({
+                title: res.data,
+                icon: "none"
+            })
+            this.setData({
+                'content.pageNumber': res.pageNumber + 1,
+                'content.pageTotal': res.pageTotal,
+                'content.total': res.total,
+                'content.sort': res.sort,
+                list: res.pageNumber == 1 ? res.data : this.data.list.concat(res.data)
+            });
+            this.setListHeight();
+            this.getTags();
+        })
+    },
+    /* 处理搜索 */
+    onSearch({
+        detail
+    }) {
+        this.setData({
+            "content.where.condition": detail
+        });
+        this.getList(true);
+    },
+    /* 获取列表标签 */
+    getTags() {
+        let list = this.data.list,
+            ownerids = list.map(v => v.sa_competitorid);
+        _Http.basic({
+            "id": 20221018102001,
+            "content": {
+                nocache: true,
+                "ownertable": "sa_competitor",
+                ownerids
+            }
+        }).then(res => {
+            console.log("标签", res)
+            for (let key in res.data) {
+                let index = list.findIndex(v => v.sa_competitorid == key);
+                list[index].tags = res.data[key]
+            };
+            this.setData({
+                list
+            })
+        })
+    },
+    onReady() {
+        this.setListHeight();
+    },
+    setListHeight() {
+        getHeight.getHeight('.total', this).then(res => {
+            if (this.data.listHeight != res)
+                this.setData({
+                    listHeight: res
+                })
+        });
+    },
+    /* 顶部条件导航回调 */
+    navClick({
+        detail
+    }) {
+        switch (detail.id) {
+            case '1':
+                this.setData({
+                    classShow: true
+                })
+                break;
+            case '2':
+                this.setData({
+                    'filter.show': true
+                })
+                break;
+        }
+    },
+    /* 筛选状态选择 */
+    selectStatus(e) {
+        const {
+            item
+        } = e.currentTarget.dataset;
+        this.setData({
+            "filter.statusActive": this.data.filter.statusActive == item ? "" : item
+        })
+    },
+    /* 筛选状态选择 */
+    typeStatus(e) {
+        const {
+            item
+        } = e.currentTarget.dataset;
+        this.setData({
+            "filter.typeActive": this.data.filter.typeActive == item ? "" : item
+        })
+    },
+    /* 处理筛选 */
+    handleFilter({
+        detail
+    }) {
+        const data = this.data.filter;
+        if (data.typeActive) data.typeActive = data.typeActive == '普通报价' ? 0 : 1;
+        switch (detail) {
+            case 'confirm':
+                this.setData({
+                    'filter.show': false
+                });
+                this.getList(true, data);
+                break;
+            case 'reset':
+                this.setData({
+                    'filter.statusActive': "",
+                    'filter.typeActive': "",
+                    'filter.startdate': "",
+                    'filter.enddate': "",
+                });
+                this.getList(true, this.data.filter)
+                break;
+            case 'close':
+                this.setData({
+                    'filter.show': false
+                });
+                break;
+        }
+    },
+    addOpponent() {
+        wx.navigateTo({
+            url: './add'
+        })
+    },
+    onShareAppMessage() {
+
+    }
+})

+ 6 - 0
packageA/opponent/index.json

@@ -0,0 +1,6 @@
+{
+    "usingComponents": {
+        "List": "./modules/list/index"
+    },
+    "navigationBarTitleText": "竞争对手"
+}

+ 16 - 0
packageA/opponent/index.scss

@@ -0,0 +1,16 @@
+@import "../../components/Yl_filtrate/groud.scss";
+
+page {
+    height: 100vh;
+    overflow: hidden;
+}
+
+.total {
+    height: 64rpx;
+    line-height: 64rpx;
+    font-size: 24rpx;
+    font-family: PingFang SC-Regular, PingFang SC;
+    color: #666666;
+    background: #F4F5F7;
+    padding-left: 30rpx;
+}

+ 27 - 0
packageA/opponent/index.wxml

@@ -0,0 +1,27 @@
+<Yl_nav search list='{{navList}}' sort='{{content.sort}}' bind:onClick='navClick' bindonSearch="onSearch" />
+<!-- 显示类型 -->
+<view class="total">共{{content.total}}个</view>
+<My_listBox id='ListBox' height="{{listHeight}}" bind:getlist='getList'>
+    <List list='{{list}}' />
+    <view style="height: 80rpx;" />
+</My_listBox>
+<!-- 筛选条件 -->
+<Yl_filtrate show="{{filter.show}}" bind:handle="handleFilter">
+    <view class="groud">
+        <view class="label">
+            时间范围
+        </view>
+        <view class="content time">
+            <picker mode="date" bindchange='changeDate' data-name="startdate">
+                <view class="tbox">{{filter.startdate||'开始时间'}}</view>
+            </picker>
+            <view class="partition">-</view>
+            <picker mode="date" bindchange='changeDate' data-name="enddate">
+                <view class="tbox">{{filter.enddate||"结束时间"}}</view>
+            </picker>
+        </view>
+    </view>
+</Yl_filtrate>
+
+<!-- 浮动按钮 -->
+<Yl_FloatingButton bindtap="addOpponent" />

+ 8 - 0
packageA/opponent/modules/list/index.js

@@ -0,0 +1,8 @@
+Component({
+    properties: {
+        list: Array
+    },
+    options: {
+        addGlobalClass: true
+    }
+})

+ 4 - 0
packageA/opponent/modules/list/index.json

@@ -0,0 +1,4 @@
+{
+    "component": true,
+    "usingComponents": {}
+}

+ 89 - 0
packageA/opponent/modules/list/index.scss

@@ -0,0 +1,89 @@
+.setclient-list-item {
+    width: 100vw;
+    background-color: #fff;
+    box-sizing: border-box;
+
+    .con {
+        padding-left: 30rpx;
+        display: flex;
+        width: 100%;
+        min-height: 136rpx;
+        border-bottom: 1px solid #EFEFEF;
+        box-sizing: border-box;
+        padding-top: 20rpx;
+
+        .portrait {
+            width: 96rpx;
+            height: 96rpx;
+            background: #E7EEFF;
+            border-radius: 16rpx;
+            font-size: 24rpx;
+            font-family: PingFang SC-Regular, PingFang SC;
+            color: #3874F6;
+            padding: 16rpx 24rpx;
+            box-sizing: border-box;
+            margin-right: 20rpx;
+            flex-shrink: 0;
+        }
+
+        .min-portrait {
+            display: flex;
+            align-items: center;
+            padding: 0 !important;
+            justify-content: center;
+        }
+
+        .mian {
+            flex: 1;
+            width: 0;
+            padding-right: 20rpx;
+            box-sizing: border-box;
+
+            .label {
+                font-size: 28rpx;
+                font-family: PingFang SC-Bold, PingFang SC;
+                font-weight: bold;
+                color: #333333;
+                height: 40rpx;
+                line-height: 40rpx;
+            }
+
+            .tag-box {
+                margin-top: 10rpx;
+
+                .tag {
+                    height: 40rpx;
+                    font-size: 20rpx;
+                    font-family: PingFang SC-Regular, PingFang SC;
+                    padding: 0 12rpx;
+                    margin-right: 8rpx;
+                }
+            }
+        }
+
+        .icon {
+            display: flex;
+            height: 136rpx;
+            align-items: center;
+            margin-top: -20rpx;
+            color: #CFCFCF;
+            width: 28rpx;
+            margin-right: 30rpx;
+            flex-shrink: 0;
+        }
+
+        .extend {
+            display: flex;
+            height: 116rpx;
+            width: 48rpx;
+            margin-right: 30rpx;
+            flex-shrink: 0;
+        }
+    }
+}
+
+.line-1 {
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow: ellipsis;
+}

+ 25 - 0
packageA/opponent/modules/list/index.wxml

@@ -0,0 +1,25 @@
+<view class="setclient-list-item" wx:for="{{list}}" wx:key="item.sys_enterpriseid">
+    <navigator url="/packageA/opponent/detail?id={{item.sa_competitorid}}" class="con">
+        <view class="portrait {{item.enterprisename <=2?'min-portrait':''}}">
+            {{handle.getName(item.enterprisename)}}
+        </view>
+        <view class="mian">
+            <view class="label line-1">{{item.enterprisename}}</view>
+            <view class="tag-box">
+                <van-tag custom-class='tag' wx:if="{{item.type}}" wx:for-item='tag' color='#E7EEFF' text-color='#3874F6' round>{{item.type}}</van-tag>
+                <van-tag custom-class='tag' wx:for="{{item.tags.systemtag}}" wx:for-item='tag' color='#E7EEFF' text-color='#3874F6' round>{{tag}}</van-tag>
+                <van-tag custom-class='tag' wx:for="{{item.tags.datatag}}" wx:for-item='tag' color='#FFEFD9' text-color='#FA8C16' round>{{tag}}</van-tag>
+            </view>
+        </view>
+        <view class="icon">
+            <van-icon name="arrow" />
+        </view>
+    </navigator>
+</view>
+
+<My_empty wx:if="{{!list.length}}" />
+<wxs module="handle">
+    module.exports.getName = function (name) {
+        return name.substring(0, 4)
+    };
+</wxs>

+ 42 - 0
packageA/opponent/modules/project/index.js

@@ -0,0 +1,42 @@
+const _Http = getApp().globalData.http;
+Component({
+    properties: {},
+    data: {
+        list: [],
+        sa_competitorid: "",
+        "content": {
+            "nocache": true,
+            "pageNumber": 1,
+            "pageTotal": 1,
+            "total": null,
+            "where": {
+                "condition": ""
+            }
+        }
+    },
+    methods: {
+        getList(id, init) {
+            let content = this.data.content;
+            content.sa_competitorid = id;
+            if (init) content.pageNumber = 1
+            _Http.basic({
+                "id": "20221019170002",
+                content
+            }).then(res => {
+                console.log("关联项目商机", res)
+                if (res.msg != '成功') return wx.showToast({
+                    title: res.data,
+                    icon: "none"
+                })
+                this.setData({
+                    list: res.pageNumber == 1 ? res.data : this.data.list.concat(res.data),
+                    "content.pageNumber": res.pageNumber + 1,
+                    "content.pageSize": res.pageSize,
+                    "content.pageTotal": res.pageTotal,
+                    "content.total": res.total,
+                    sa_competitorid: id
+                });
+            })
+        },
+    }
+})

+ 6 - 0
packageA/opponent/modules/project/index.json

@@ -0,0 +1,6 @@
+{
+    "component": true,
+    "usingComponents": {
+        "List": "/packageA/project/modules/list/index"
+    }
+}

+ 1 - 0
packageA/opponent/modules/project/index.scss

@@ -0,0 +1 @@
+@import "../../../setclient//modules/address/head.scss";

+ 14 - 0
packageA/opponent/modules/project/index.wxml

@@ -0,0 +1,14 @@
+<view class="head">
+    <view class="count">
+        总共{{content.total}}个
+    </view>
+    <view class="expand">
+        <!-- <navigator url="#" class="but" bindtap="toSearch">
+            <van-icon name="search" />
+        </navigator>
+        <navigator url="#" class="but" bindtap="addOffers">
+            <van-icon name="plus" />
+        </navigator> -->
+    </view>
+</view>
+<List list='{{list}}' />