页面交互:

========1001============

一、聚合支付:

(1)打开支付弹窗的时候js传了一个参数过来:j

(2)生成支付二维码:

接口:/order/pay/qrcode

参数:id, 值上面的【j.preorder_id】取用

res= {

    code_img_url:  二维码地址

}

(3)二维码(聚合支付)支付检查:

接口:/order/payinfo/read

参数:id, 值上面的【j.preorder_id】取用


这个检查本身我之前是设计到js完成的,不过后面发现破坏了封装的完整度且更复杂,所以适当的让原生配合达到高封装的目的。

res = {

    pay_info:{

        need_pay:这个订单用户是否真的用其他手机扫了二维码支付过了

    }

}


(a)检查支付后,如果网络请求错误失败或者need_pay==101,隐藏二维码再显示支付方式列表,让用户再选择app支付。

    (b) need_pay !=101 支付成功,回调js,action=guanerweimaAction














========0930============

openWeb:  打开网页,这个协议之前就有的。

json:{    

    title: 网页标题, 可放到顶部导航条标题处

    url: 网页地址

}


一、过滤:

顶部菜单点击action=barAction,   data=101到104


二、专区:

顶部菜单点击action=menuAction,  data=index


倒计时准确来说是三种:

ui:{

    countdown:{ 

        // is_show==102 无任何活动信息或早就过期,直接不显示。

        【is_show】: 是否展示倒计时区域101展示  102全部隐藏


       【is_begin】: 当is_show=101的时候,有三种情况,  如下,

        desc: 描述文字,其实就是is_begin=101为距开始,is_begin=102为距结束,is_begin=103为已结束

    }

}



is_begin=101,距离活动开始还有多久,此时有倒计时。其中距开始为desc,你也可以自己写死,也可以用desc。(下图中顶部图里面有个大字后面会去掉,因为图不能自动适配)


is_begin=102,距离活动结束还有多久,此时有倒计时。其中距开始为desc,你也可以自己写死,也可以用desc。


s_begin=103,为已结束,此时没有倒计时。已结束文字你也可以自己写死,也可以用desc。






========0929============

一、搜索页面:

确定action=sureAction

清空action=clearAction

点标签action=tagclick, data={title: "标签名"}


二、收藏

删除的key是goods

refreshList 有page哦,我封装在父类的。


三、添加需求

图片数组什么时候给js,是 submitAction时作为参数传给js吗?

不是。

我们用输入框来做个类比,在js对应页面有一个p = {},空对象,他主要用来【实时收集】页面产生的数据。

当你在输入框输入zybtest,此时通过vmodel已经传输到了js里面的p对象了。输入p = {name:zybtest},此时已经完成了数据的收集。

同样的VM9Imgs,当用户点+号,选了3张图片后在VM9Imgs内部立马上传,VM9Imgs在post后得到了三个图片对象。也需要立即通过vmodel告诉js里面的p对象了。此时p = {name:zybtest,images:[1,2,3]}, 有三个图片对象。

此时用户点VM9Imgs三张图片上的叉叉,删除一张,VM9Imgs立即通过vmodel告诉js里面的p对象两个最新的对象(js不删除,你给我什么我就保存什么)。

最后你点submitAction的时候,数据js全部早就【收集】好了。此时不需要传任何参数。











========0928============

我的优惠券:我的页面优惠券数字处的action=youhuiquanAction

ui={

    list:{

        url 列表地址

        params  参数,这是个数组,size=3

    }

}









========0927============

一、积分抽奖:

ui={

    prize:{ //奖品信息

        image:{url: ""}, //图片    

        title:标题

        points: //需要拼接下,需要积分:+points

        number:需要拼接,剩余数量:+number

    },


    addr_str:  一会点击选取地址后显示选中的地址

}

点击选地址事件:xuandizhi



二、切换账号:这个页面是VMList

ui = {

    list: [

        {

            image:{url:""}  头像

            name: 名字

            organization_name:机构名称

        }

    ]

}


选中行切换账号,默认的itemclick

删除事件:deleteAction


下方点添加账号是原生的事件,弹出输入框的vmodel为:

用户名:name

密码:pwd

点取消按钮:原生自己关闭弹窗,太简单了js不干涉

点确定按钮action = saveAction,这里成功有回调,回调时关闭弹窗。





========0926-3============

以下是几个相对繁琐但不复杂的页面:

一、分类

描述:分类左侧一个VMList,右侧一个VMList,右侧列表有两种情况(之前分类我给了两种情况的页面)

(1)热门类商品,商品列表样式,数据由js控制。

(2)两级分类列表。数据由js控制。

ui={

    cates: [  //左侧

        {

            title: 分类名字

            sel: 是否选中, 101选中  其他为不选中

            is_hot: 是否热门商品,101是热门有一个火标记,否则没有

        }    

],

is_top_ranking: 是否是商品列表模式,101是商品列表模式 102为二级分类模式

goods:[], //is_top_ranking=101取用的商品数据列表,数据和商品列表一样

areas: [ //二级分类模式  ,is_top_ranking=102取用

       {

            title: 分类标题

            sub:[

                    {

                            title: //分类子item 的标题

                            image: {url: ""} //分类子item 的图片

                    }

                ]

        }

] , 

}


页面点击事件:

因为左侧是VMList,所以左侧点击事件会触发默认的itemclick。


二、秒杀专区:

ui = {

    top:{ //顶部导航条部分

            title: 标题

            title_image:{url: }  //顶部背景图

    },

    menu: { // 顶部切换列表

       arr: [], //里面放的都是标题文字字符串

        init_index: 默认选中的索引值

    }, 


    list:{ 下面列表,列表是单列表,不是swiper,点击菜单只是更改列表参数

        url: //地址

        params: //地址

    },


    countdown:{  //倒计时局部UI(有两个UI,一种是倒计时,另外一种是无倒计时的描述文字)

            is_show:是否显示这个倒计时局部UI,101显示,102不显示整个隐藏            

            is_begin:倒计时状态,101距离开始倒计时 102距离结束倒计时  103已结束

    }

}


三、搜索:

vmodel: kw顶部输入框


ui:{

    kw:  输入框需要显示的文字

    hots:[], 热门搜索,字符串数组

    histories: [], 历史搜索,字符串数组

}



四、过滤筛选:这可能是最后一个压轴页面:

ui:{

    kw:顶部输入框的值

    title:  顶部标题,动态的

    list:{url: "", params:{}}, //列表地址,参数

    bar:{ //筛选工具条状态

        zhonghe:  101选中 102未选中

        xiaoliang:  101选中 102未选中

        jiage: 0无箭头 101向上箭头 102向下箭头

        shaixuan: 101选中 102未选中

    },

    weburl: //侧边栏网页地址

    webstatus://侧边栏网页显示状态 101显示(加个从右到左的动画最好了) 102不显示

}


页面事件:

action=refreshList, 刷新列表

action=filterAction, 筛选事件,直接转发给原生的js方法









========0926-2============

一、我的订单: 订单页面地址都一样,只有参数不一样

顶部菜单依次为:全部、待付款、待发货、待收货、退款退货、已完成、已取消

ui:{

    init_index:默认选中的顶部的索引值

    url: //公共的地址

    params:[],  //参数数组

}

action:{

    refreshCurrentList: //刷新当前选中的列表

}

列表点击事件:

取消订单:quxiao

立即支付:pay

查看详情:xiangqing

确认收货:shouhuo

再次购买:zaicigoumai

查看物流:wuliu

我要售后:shouhou


二、售后订单: 订单页面地址都一样,只有参数不一样

顶部菜单依次为:处理中、已完成、已关闭

ui:{

init_index:默认选中的顶部的索引值

url: //公共的地址

    params:[],  //参数数组

}


三、发现:

ui:{

    tuijian:{url:, params: } //推荐的地址和参数

    jilu:{url:, params: } //记录的地址和参数

    goumai:{url:, params: } //购买的地址和参数

}

在页面onShow的时候,把三个列表都刷新一下,因为可能有切换登录的情况,js不参与这个简单的操作了










========0926-1============

一、地址列表: 

ui={

    list:{ url: ""} //列表地址

}

//列表item

item: {

        name:""  //名字

        phone: "", //手机

        address_str: "", //用户自定义输入地址

        detail: "", //  address_str + detail 拼接成完整的地址

        is_default: "" //101默认地址, 102不是默认地址

}


二、新建地址:

vmodel: 

名字 name  

手机 phone(数字类键盘)

选地址事件:addrAction

详细地址:detail

是否默认地址:is_default

这里有个封装,本身这里是可以不用封装的,不过从长远来看,开关也属于表单类,可以复用。

快速封装VMSwitch,点击switch的时候,valueChange事件里面调用所属页面的js方法传递,类似VMTextField。

保存按钮事件:saveAction


ui: 地址可编辑,所以这个页面的表单需要填充值,其实和上面是一样的

ui={

 addr:{

    name:"",  //名字

    phone: "", //手机

    detail:"", //城市

    address_str:"", //用户自定义输入地址

    is_default: "" //101默认地址, 102不是默认地址    

 }

}



三、采购需求列表:

1. ui={

    list: {url: "'} , //列表

}

item={

    title:"" //标题

    manufacturer:厂商

    price:价格

    number:数量

    time_str:有效期(列表不需要显示。直接显示,不需要格式化)

    note:备注(列表不需要显示。直接显示,不需要格式化)

    reply_status:回复状态101已回复 102未回复

    reply:回复内容文字(列表最多显示三行)

    image_arr:[

            {url: ""},{url: ""},....

        ]   图片数组(列表不需要显示)

}

2. 采购需求点击可以查看详情和上面一样。

3. 新建采购(没有编辑功能):vid字段和上面还是一样的,不同的有

ui={

    date_str: 显示选了时间后,js格式化后的值

}

选取有效期:timeAction

提交事件:submitAction



四、我的收藏:

ui={

    list:{url: ""}

}

因为这个页面有列表单选、全选、删除。如果是我最开始的设计,这个页面会诸多限制和操作。不过现在js的宗旨就是不干涉原生实现,只操作逻辑,所以整个单选多选是原生实现的。

原生在各种骚操作之后,点击删除按钮的时候,告诉js当前选中了哪些行即可。

删除action=deleteAction,  数据=[ {id: 1},  ... ]

页面action = refreshList, 只有这个方法,主要用来刷新列表(记得刷新列表的,下面的全选正常来说应该不选中)



五、购物车:购物车较复杂,且和收藏页面较像。

购物车是非常重要的页面。他不是下拉类列表是VMList,数据是js高度控制的.

ui = {

    list:[] //数据数组,字段和商品列表item一样

    bar:{

        total: 下面的总价

        choose_all:  是否全选中了,101选中  102未选中

    }

}

注意:这里因为购物车相对复杂,js控制了数据,包括当前item是否被选中也是js控制的,item.sel=101表示被选中,其他为不选中。


事件:

页面右上角有编辑,完成切换(对应页面悬浮条要切换UI),是原生自己内部完成。

js需要知道的(不需要给数据,js非常清楚选中了哪些):

全选:action=quanxuanAction

结算:action=jiesuanAction

删除:action=deleteAction


item:

item相对购物车多了这些内容:

(1)左侧有选中与否的按钮

(2)右侧有修改数量的+-号(中间不是输入框也是按钮,点击js会自动弹出chooseNum协议)

(3)每行下面有两排文字,买赠(买赠:mz_str)+换购(换购:hg_str)文字,如果没有就隐藏。

事件:点击左侧的选中与否的事件:chooseItem(直接调用cellAction)

点+号:jiaAction

点-号:jianAction

点中间数量:xiugaiAction

















========0924============

一、我的发票:

ui={

    list: {url: }  //无参数

}

action:{

    action: "refresh", //refresh表示刷新当前列表,当前页面只有这一个action,可不判断

    params: {}, //新的刷新参数 ,列表需要记录   

}

默认列表的item有封装的点击事件:itemclick,会自动弹出到发票详情



二:发票详情

ui={

    data: {

           image: {url}  //发票图

    }

}

右上角有个下载按钮事件:downloadAction






========0923============

一. 资料:资料只有头像,联系人,电话号码编辑,其他下面是显示。

头像上面有个透明按钮,点击事件: chooseImg

名称vmodel:cname

电话vmodel:phone

底部提交按钮事件:saveAction

ui={

    user:{

        image: {url: ""}, //头像

        name: //名字,会员账号

        cname: //联系人

        phone: //手机

        membership_type: //会员类型

        organization_name://单位名称

        quanxian: 经营权限(字多可换行)

        organization_address://经营地址

}

}



二、资质证件:

这个页面目前是7个格子,建议做成gridview:

7个格子上有透明按钮:action=imgAction data=0-6

ui = {

    certs:[ //数组7个成员,这里列一个

            {

                url: //图片地址

                title: //标题(可能会换行)

                date: //有效期(加个前缀,有效期:)

            }


    ]

}


三、我的专属客服:

电话号码按钮事件:callAction

ui = {

    kefu:{

        name:     //业务员

        phone://手机

        wechat: //微信

        qq: //qq

    }

}


四:第一个列表:财务流水

ui = {

    liushui: {url: ""}, //列表接口地址,无参数

}

item和之前是一样的。

注:关于列表的注意点

(1)列表需要封装一个cellAction的方法,供里面的按钮直接快速调用所在activity的js方法

(2)封装的列表点击默认调用cellAction("itemclick") 

比如后面的订单列表item点击了里面的取消订单按钮:cellAction("quxiao") 

点击购买:cellAction("buyAction") ,就很简单。



五、系统设置:

退出登录事件:logoutAction

ui ={

    // is_bind_wechat=="101"?"已绑定":"未绑定"

    //未绑定#0063D1,已绑定#666666

    is_bind_wechat: "101", //这里是状态,因为涉及颜色变化,所以这里返回了状态

}





========0922============


完善页面:

注: 这两个字段需要判断下我给了你这个key你才操作哦,可能我这次只给你城市。下次只给你类别。

ui = {

    city_str: "",  //城市字符串

    membership_type_text: "", //注册类别字符串

}


我的页面:


事件:

(1)下方的九宫格按钮,action=menuAction, 用data区分,data从左到右上到下依次为0-10,共11个按钮

(2)订单:dingdanAction,data=0-4

   (3) 积分:jifenAction

 (4)切换账号:qiehuanAction




ui = {

user:{

    image:{ url: ""}, //用户头像

    name: "", //用户名

    organization_name: "", //公司名

    money: "", //账户余额

    points: "", //积分


    order101_num, order102_num, order103_num,order105_num, return_num: "", //红点数量,如果为空或0,需要隐藏红点

}


}














====================





修改密码:

原密码:pwd0

新密码:pwd1

确认密码:pwd2

确定事件:quedingAction



忘记密码:

用户名:name

手机:phone   (注意键盘类型为数字键盘)

验证码:vcode (注意键盘类型为数字键盘)      获取验证码事件:codeAction

新密码: pwd

找回密码事件:zhaohuiAction



绑定账号页面:

用户名:name

密码: pwd(注意键盘类型为数字键盘)

绑定账号:bangdingAction

因为页面数据原因暂时不可到达,先按逻辑操作等待验证





注册第二步完善:

姓名:lxr

单位名称:organization_name

选择城市事件:xuanchengshi (没选的时候字是灰色,选了字是深色,我的设计是上面盖一个透明按钮,下面是个输入框)

选择单位类型事件:xuanleibie

推荐人:inviter

立即注册事件:zhuceAction


注册页面:

用户名:uname

手机号:phone(注意键盘类型为数字键盘)

验证码:vcode (注意键盘类型为数字键盘)  获取验证码事件:codeAction

密码:pwd

下一步:xiayibuAction

已有账号,直接登录事件:yiyouAction

注册协议事件: xieyiAction  先忽略,因为这里涉及H5页面







一、登录页面

1. 输入框:

用户名:name

密码:pwd


2.点击事件:

立即登录:dengluAction,点击后触发网络post请求。

我要注册:zhuceAction,点击后自动push到注册页面

忘记密码:wangjiAction,点击后自动push到忘记密码页面

底部微信登录:wxLoginAction。点击后触发第三方登录协议

你可能感兴趣的:(页面交互:)