commit a23dedfbf07bf52f1258e76a295a321f87852f4f Author: 18631081161 <2088094923@qq.com> Date: Sun Jul 7 16:19:19 2024 +0800 小程序 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9f30196 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +.vscode/ +.hbuilderx/ +.history/ +.idea/ +node_modules/ +unpackage/dist/ +unpackage/cache/ \ No newline at end of file diff --git a/App.vue b/App.vue new file mode 100644 index 0000000..27b579f --- /dev/null +++ b/App.vue @@ -0,0 +1,146 @@ + + + diff --git a/assets/font/YouSheBiaoTiHei.ttf b/assets/font/YouSheBiaoTiHei.ttf new file mode 100644 index 0000000..3729151 Binary files /dev/null and b/assets/font/YouSheBiaoTiHei.ttf differ diff --git a/assets/font/zihun147hao-xingyuanhei.TTF b/assets/font/zihun147hao-xingyuanhei.TTF new file mode 100644 index 0000000..68b8043 Binary files /dev/null and b/assets/font/zihun147hao-xingyuanhei.TTF differ diff --git a/assets/font/zihun152hao-jijiachaojihei.TTF b/assets/font/zihun152hao-jijiachaojihei.TTF new file mode 100644 index 0000000..1cff169 Binary files /dev/null and b/assets/font/zihun152hao-jijiachaojihei.TTF differ diff --git a/assets/img/1_bd_my.png b/assets/img/1_bd_my.png new file mode 100644 index 0000000..f5c9eca Binary files /dev/null and b/assets/img/1_bd_my.png differ diff --git a/assets/img/1_coin.png b/assets/img/1_coin.png new file mode 100644 index 0000000..f8a728c Binary files /dev/null and b/assets/img/1_coin.png differ diff --git a/assets/img/1_coin_act.png b/assets/img/1_coin_act.png new file mode 100644 index 0000000..259b440 Binary files /dev/null and b/assets/img/1_coin_act.png differ diff --git a/assets/img/1_flmh.png b/assets/img/1_flmh.png new file mode 100644 index 0000000..16ff34d Binary files /dev/null and b/assets/img/1_flmh.png differ diff --git a/assets/img/1_group_bg.png b/assets/img/1_group_bg.png new file mode 100644 index 0000000..5f097da Binary files /dev/null and b/assets/img/1_group_bg.png differ diff --git a/assets/img/1_invite_bg.png b/assets/img/1_invite_bg.png new file mode 100644 index 0000000..08486ff Binary files /dev/null and b/assets/img/1_invite_bg.png differ diff --git a/assets/img/1_invite_card.png b/assets/img/1_invite_card.png new file mode 100644 index 0000000..e593f18 Binary files /dev/null and b/assets/img/1_invite_card.png differ diff --git a/assets/img/1_jqyfl.png b/assets/img/1_jqyfl.png new file mode 100644 index 0000000..cae6dae Binary files /dev/null and b/assets/img/1_jqyfl.png differ diff --git a/assets/img/1_jqyhl.png b/assets/img/1_jqyhl.png new file mode 100644 index 0000000..ca2e688 Binary files /dev/null and b/assets/img/1_jqyhl.png differ diff --git a/assets/img/1_lb.png b/assets/img/1_lb.png new file mode 100644 index 0000000..af5ebc5 Binary files /dev/null and b/assets/img/1_lb.png differ diff --git a/assets/img/1_qdrw.png b/assets/img/1_qdrw.png new file mode 100644 index 0000000..be86a4c Binary files /dev/null and b/assets/img/1_qdrw.png differ diff --git a/assets/img/1_rank_tai.png b/assets/img/1_rank_tai.png new file mode 100644 index 0000000..1c943e3 Binary files /dev/null and b/assets/img/1_rank_tai.png differ diff --git a/assets/img/1_sign_act_bg.png b/assets/img/1_sign_act_bg.png new file mode 100644 index 0000000..a60b4aa Binary files /dev/null and b/assets/img/1_sign_act_bg.png differ diff --git a/assets/img/1_sign_bg.png b/assets/img/1_sign_bg.png new file mode 100644 index 0000000..17b8829 Binary files /dev/null and b/assets/img/1_sign_bg.png differ diff --git a/assets/img/1_sign_box.png b/assets/img/1_sign_box.png new file mode 100644 index 0000000..a9ec444 Binary files /dev/null and b/assets/img/1_sign_box.png differ diff --git a/assets/img/1_yqcs.png b/assets/img/1_yqcs.png new file mode 100644 index 0000000..55024e7 Binary files /dev/null and b/assets/img/1_yqcs.png differ diff --git a/assets/img/1_yqflmh.png b/assets/img/1_yqflmh.png new file mode 100644 index 0000000..9034e72 Binary files /dev/null and b/assets/img/1_yqflmh.png differ diff --git a/assets/img/1_yqhy.png b/assets/img/1_yqhy.png new file mode 100644 index 0000000..e72021c Binary files /dev/null and b/assets/img/1_yqhy.png differ diff --git a/assets/img/1_yqhylhl.png b/assets/img/1_yqhylhl.png new file mode 100644 index 0000000..2da614e Binary files /dev/null and b/assets/img/1_yqhylhl.png differ diff --git a/assets/img/2_card_bg.png b/assets/img/2_card_bg.png new file mode 100644 index 0000000..b3c1037 Binary files /dev/null and b/assets/img/2_card_bg.png differ diff --git a/assets/img/2_card_icon.png b/assets/img/2_card_icon.png new file mode 100644 index 0000000..ff53050 Binary files /dev/null and b/assets/img/2_card_icon.png differ diff --git a/assets/img/2_coupon_bg.png b/assets/img/2_coupon_bg.png new file mode 100644 index 0000000..f3c0c2a Binary files /dev/null and b/assets/img/2_coupon_bg.png differ diff --git a/assets/img/2_coupon_item.png b/assets/img/2_coupon_item.png new file mode 100644 index 0000000..bc08991 Binary files /dev/null and b/assets/img/2_coupon_item.png differ diff --git a/assets/img/2_coupon_pop.png b/assets/img/2_coupon_pop.png new file mode 100644 index 0000000..28cc5e5 Binary files /dev/null and b/assets/img/2_coupon_pop.png differ diff --git a/assets/img/2_detail_bg.png b/assets/img/2_detail_bg.png new file mode 100644 index 0000000..a60203a Binary files /dev/null and b/assets/img/2_detail_bg.png differ diff --git a/assets/img/2_djk.png b/assets/img/2_djk.png new file mode 100644 index 0000000..33aa051 Binary files /dev/null and b/assets/img/2_djk.png differ diff --git a/assets/img/2_fjjl.png b/assets/img/2_fjjl.png new file mode 100644 index 0000000..7b3d5bb Binary files /dev/null and b/assets/img/2_fjjl.png differ diff --git a/assets/img/2_gj_border.png b/assets/img/2_gj_border.png new file mode 100644 index 0000000..f77d4c8 Binary files /dev/null and b/assets/img/2_gj_border.png differ diff --git a/assets/img/2_gsjl.png b/assets/img/2_gsjl.png new file mode 100644 index 0000000..e0cb6fe Binary files /dev/null and b/assets/img/2_gsjl.png differ diff --git a/assets/img/2_jrflq.png b/assets/img/2_jrflq.png new file mode 100644 index 0000000..1cc01f7 Binary files /dev/null and b/assets/img/2_jrflq.png differ diff --git a/assets/img/2_jsphb.png b/assets/img/2_jsphb.png new file mode 100644 index 0000000..0e28a9c Binary files /dev/null and b/assets/img/2_jsphb.png differ diff --git a/assets/img/2_mine_bg.png b/assets/img/2_mine_bg.png new file mode 100644 index 0000000..317767d Binary files /dev/null and b/assets/img/2_mine_bg.png differ diff --git a/assets/img/2_money_card_bg.png b/assets/img/2_money_card_bg.png new file mode 100644 index 0000000..4fc7c40 Binary files /dev/null and b/assets/img/2_money_card_bg.png differ diff --git a/assets/img/2_pt_border.png b/assets/img/2_pt_border.png new file mode 100644 index 0000000..d41fe23 Binary files /dev/null and b/assets/img/2_pt_border.png differ diff --git a/assets/img/2_qy_card.png b/assets/img/2_qy_card.png new file mode 100644 index 0000000..502c410 Binary files /dev/null and b/assets/img/2_qy_card.png differ diff --git a/assets/img/2_qy_gjjl.png b/assets/img/2_qy_gjjl.png new file mode 100644 index 0000000..13ae473 Binary files /dev/null and b/assets/img/2_qy_gjjl.png differ diff --git a/assets/img/2_qy_list_bg.png b/assets/img/2_qy_list_bg.png new file mode 100644 index 0000000..817d392 Binary files /dev/null and b/assets/img/2_qy_list_bg.png differ diff --git a/assets/img/2_qy_ptjl.png b/assets/img/2_qy_ptjl.png new file mode 100644 index 0000000..f27649a Binary files /dev/null and b/assets/img/2_qy_ptjl.png differ diff --git a/assets/img/2_tab_bg.png b/assets/img/2_tab_bg.png new file mode 100644 index 0000000..afb4a3b Binary files /dev/null and b/assets/img/2_tab_bg.png differ diff --git a/assets/img/2_title_bg.png b/assets/img/2_title_bg.png new file mode 100644 index 0000000..1d512d4 Binary files /dev/null and b/assets/img/2_title_bg.png differ diff --git a/assets/img/2_type_bordder.png b/assets/img/2_type_bordder.png new file mode 100644 index 0000000..b744cac Binary files /dev/null and b/assets/img/2_type_bordder.png differ diff --git a/assets/img/2_vip_card.png b/assets/img/2_vip_card.png new file mode 100644 index 0000000..11e85bd Binary files /dev/null and b/assets/img/2_vip_card.png differ diff --git a/assets/img/2_vip_icon.png b/assets/img/2_vip_icon.png new file mode 100644 index 0000000..9b9b0ba Binary files /dev/null and b/assets/img/2_vip_icon.png differ diff --git a/assets/img/2_wdsc.png b/assets/img/2_wdsc.png new file mode 100644 index 0000000..93fa3fb Binary files /dev/null and b/assets/img/2_wdsc.png differ diff --git a/assets/img/2_xfjl.png b/assets/img/2_xfjl.png new file mode 100644 index 0000000..9033f23 Binary files /dev/null and b/assets/img/2_xfjl.png differ diff --git a/assets/img/2_xrzx.png b/assets/img/2_xrzx.png new file mode 100644 index 0000000..ebee070 Binary files /dev/null and b/assets/img/2_xrzx.png differ diff --git a/assets/img/2_yhq.png b/assets/img/2_yhq.png new file mode 100644 index 0000000..fadde35 Binary files /dev/null and b/assets/img/2_yhq.png differ diff --git a/assets/img/2_yhxy.png b/assets/img/2_yhxy.png new file mode 100644 index 0000000..0676fb3 Binary files /dev/null and b/assets/img/2_yhxy.png differ diff --git a/assets/img/2_yqhy.png b/assets/img/2_yqhy.png new file mode 100644 index 0000000..3c742d4 Binary files /dev/null and b/assets/img/2_yqhy.png differ diff --git a/assets/img/3_1fa.png b/assets/img/3_1fa.png new file mode 100644 index 0000000..0b69c25 Binary files /dev/null and b/assets/img/3_1fa.png differ diff --git a/assets/img/3_3fa.png b/assets/img/3_3fa.png new file mode 100644 index 0000000..139d648 Binary files /dev/null and b/assets/img/3_3fa.png differ diff --git a/assets/img/3_5fa.png b/assets/img/3_5fa.png new file mode 100644 index 0000000..a52df49 Binary files /dev/null and b/assets/img/3_5fa.png differ diff --git a/assets/img/3_ang_border.png b/assets/img/3_ang_border.png new file mode 100644 index 0000000..8b81e85 Binary files /dev/null and b/assets/img/3_ang_border.png differ diff --git a/assets/img/3_btns_bg.png b/assets/img/3_btns_bg.png new file mode 100644 index 0000000..b6f1992 Binary files /dev/null and b/assets/img/3_btns_bg.png differ diff --git a/assets/img/3_buy_notice.png b/assets/img/3_buy_notice.png new file mode 100644 index 0000000..cd923a3 Binary files /dev/null and b/assets/img/3_buy_notice.png differ diff --git a/assets/img/3_change_box.png b/assets/img/3_change_box.png new file mode 100644 index 0000000..ed83216 Binary files /dev/null and b/assets/img/3_change_box.png differ diff --git a/assets/img/3_cs.png b/assets/img/3_cs.png new file mode 100644 index 0000000..9cf9a48 Binary files /dev/null and b/assets/img/3_cs.png differ diff --git a/assets/img/3_detail_pop.png b/assets/img/3_detail_pop.png new file mode 100644 index 0000000..041b303 Binary files /dev/null and b/assets/img/3_detail_pop.png differ diff --git a/assets/img/3_detail_title.png b/assets/img/3_detail_title.png new file mode 100644 index 0000000..403c62b Binary files /dev/null and b/assets/img/3_detail_title.png differ diff --git a/assets/img/3_gj_bg.png b/assets/img/3_gj_bg.png new file mode 100644 index 0000000..a6bf2a6 Binary files /dev/null and b/assets/img/3_gj_bg.png differ diff --git a/assets/img/3_gj_icon.png b/assets/img/3_gj_icon.png new file mode 100644 index 0000000..e4ce04b Binary files /dev/null and b/assets/img/3_gj_icon.png differ diff --git a/assets/img/3_hd_bg.png b/assets/img/3_hd_bg.png new file mode 100644 index 0000000..65503f1 Binary files /dev/null and b/assets/img/3_hd_bg.png differ diff --git a/assets/img/3_hd_bg1.png b/assets/img/3_hd_bg1.png new file mode 100644 index 0000000..b853f10 Binary files /dev/null and b/assets/img/3_hd_bg1.png differ diff --git a/assets/img/3_hj.png b/assets/img/3_hj.png new file mode 100644 index 0000000..8e374ad Binary files /dev/null and b/assets/img/3_hj.png differ diff --git a/assets/img/3_inf_10fa.png b/assets/img/3_inf_10fa.png new file mode 100644 index 0000000..73f4f9d Binary files /dev/null and b/assets/img/3_inf_10fa.png differ diff --git a/assets/img/3_inf_1fa.png b/assets/img/3_inf_1fa.png new file mode 100644 index 0000000..61b6a45 Binary files /dev/null and b/assets/img/3_inf_1fa.png differ diff --git a/assets/img/3_inf_3fa.png b/assets/img/3_inf_3fa.png new file mode 100644 index 0000000..5bcf70b Binary files /dev/null and b/assets/img/3_inf_3fa.png differ diff --git a/assets/img/3_inf_50fa.png b/assets/img/3_inf_50fa.png new file mode 100644 index 0000000..b835cc7 Binary files /dev/null and b/assets/img/3_inf_50fa.png differ diff --git a/assets/img/3_inf_5fa.png b/assets/img/3_inf_5fa.png new file mode 100644 index 0000000..272768f Binary files /dev/null and b/assets/img/3_inf_5fa.png differ diff --git a/assets/img/3_inf_bb.png b/assets/img/3_inf_bb.png new file mode 100644 index 0000000..fdca3a6 Binary files /dev/null and b/assets/img/3_inf_bb.png differ diff --git a/assets/img/3_inf_bg.png b/assets/img/3_inf_bg.png new file mode 100644 index 0000000..d9f3874 Binary files /dev/null and b/assets/img/3_inf_bg.png differ diff --git a/assets/img/3_inf_boss_box.png b/assets/img/3_inf_boss_box.png new file mode 100644 index 0000000..dc698ef Binary files /dev/null and b/assets/img/3_inf_boss_box.png differ diff --git a/assets/img/3_inf_boss_lzjl.png b/assets/img/3_inf_boss_lzjl.png new file mode 100644 index 0000000..b5b15b1 Binary files /dev/null and b/assets/img/3_inf_boss_lzjl.png differ diff --git a/assets/img/3_inf_boss_pop.png b/assets/img/3_inf_boss_pop.png new file mode 100644 index 0000000..c174937 Binary files /dev/null and b/assets/img/3_inf_boss_pop.png differ diff --git a/assets/img/3_inf_boss_wfgz.png b/assets/img/3_inf_boss_wfgz.png new file mode 100644 index 0000000..393de36 Binary files /dev/null and b/assets/img/3_inf_boss_wfgz.png differ diff --git a/assets/img/3_inf_cc.png b/assets/img/3_inf_cc.png new file mode 100644 index 0000000..2f60d16 Binary files /dev/null and b/assets/img/3_inf_cc.png differ diff --git a/assets/img/3_inf_class.png b/assets/img/3_inf_class.png new file mode 100644 index 0000000..1e6dfb8 Binary files /dev/null and b/assets/img/3_inf_class.png differ diff --git a/assets/img/3_inf_lzjl.png b/assets/img/3_inf_lzjl.png new file mode 100644 index 0000000..b8993f0 Binary files /dev/null and b/assets/img/3_inf_lzjl.png differ diff --git a/assets/img/3_inf_lzlp.png b/assets/img/3_inf_lzlp.png new file mode 100644 index 0000000..fa11086 Binary files /dev/null and b/assets/img/3_inf_lzlp.png differ diff --git a/assets/img/3_inf_lzwf.png b/assets/img/3_inf_lzwf.png new file mode 100644 index 0000000..d7eb204 Binary files /dev/null and b/assets/img/3_inf_lzwf.png differ diff --git a/assets/img/3_inf_wf.png b/assets/img/3_inf_wf.png new file mode 100644 index 0000000..b1dba5e Binary files /dev/null and b/assets/img/3_inf_wf.png differ diff --git a/assets/img/3_jfs.png b/assets/img/3_jfs.png new file mode 100644 index 0000000..05cc10e Binary files /dev/null and b/assets/img/3_jfs.png differ diff --git a/assets/img/3_lj.png b/assets/img/3_lj.png new file mode 100644 index 0000000..fb862f1 Binary files /dev/null and b/assets/img/3_lj.png differ diff --git a/assets/img/3_lj_dqmb.png b/assets/img/3_lj_dqmb.png new file mode 100644 index 0000000..4f365dd Binary files /dev/null and b/assets/img/3_lj_dqmb.png differ diff --git a/assets/img/3_lj_jia.png b/assets/img/3_lj_jia.png new file mode 100644 index 0000000..8dff324 Binary files /dev/null and b/assets/img/3_lj_jia.png differ diff --git a/assets/img/3_lj_jian.png b/assets/img/3_lj_jian.png new file mode 100644 index 0000000..696f93d Binary files /dev/null and b/assets/img/3_lj_jian.png differ diff --git a/assets/img/3_lj_max.png b/assets/img/3_lj_max.png new file mode 100644 index 0000000..374b513 Binary files /dev/null and b/assets/img/3_lj_max.png differ diff --git a/assets/img/3_lj_times.png b/assets/img/3_lj_times.png new file mode 100644 index 0000000..35a0a7d Binary files /dev/null and b/assets/img/3_lj_times.png differ diff --git a/assets/img/3_mix_bg.png b/assets/img/3_mix_bg.png new file mode 100644 index 0000000..2fe4779 Binary files /dev/null and b/assets/img/3_mix_bg.png differ diff --git a/assets/img/3_oh.png b/assets/img/3_oh.png new file mode 100644 index 0000000..435736c Binary files /dev/null and b/assets/img/3_oh.png differ diff --git a/assets/img/3_pt.png b/assets/img/3_pt.png new file mode 100644 index 0000000..ecec544 Binary files /dev/null and b/assets/img/3_pt.png differ diff --git a/assets/img/3_pt_bg.png b/assets/img/3_pt_bg.png new file mode 100644 index 0000000..0fc1d03 Binary files /dev/null and b/assets/img/3_pt_bg.png differ diff --git a/assets/img/3_pt_icon.png b/assets/img/3_pt_icon.png new file mode 100644 index 0000000..d5583a3 Binary files /dev/null and b/assets/img/3_pt_icon.png differ diff --git a/assets/img/3_qy_bg.png b/assets/img/3_qy_bg.png new file mode 100644 index 0000000..a97f2ea Binary files /dev/null and b/assets/img/3_qy_bg.png differ diff --git a/assets/img/3_qy_card.png b/assets/img/3_qy_card.png new file mode 100644 index 0000000..cef330a Binary files /dev/null and b/assets/img/3_qy_card.png differ diff --git a/assets/img/3_suc_pop.png b/assets/img/3_suc_pop.png new file mode 100644 index 0000000..952f7d3 Binary files /dev/null and b/assets/img/3_suc_pop.png differ diff --git a/assets/img/3_sxz.png b/assets/img/3_sxz.png new file mode 100644 index 0000000..490a6e4 Binary files /dev/null and b/assets/img/3_sxz.png differ diff --git a/assets/img/3_tj_bg.png b/assets/img/3_tj_bg.png new file mode 100644 index 0000000..805764b Binary files /dev/null and b/assets/img/3_tj_bg.png differ diff --git a/assets/img/3_tj_icon.png b/assets/img/3_tj_icon.png new file mode 100644 index 0000000..5bb96da Binary files /dev/null and b/assets/img/3_tj_icon.png differ diff --git a/assets/img/3_yc.png b/assets/img/3_yc.png new file mode 100644 index 0000000..affddad Binary files /dev/null and b/assets/img/3_yc.png differ diff --git a/assets/img/3_yf_btnl.png b/assets/img/3_yf_btnl.png new file mode 100644 index 0000000..4ed546a Binary files /dev/null and b/assets/img/3_yf_btnl.png differ diff --git a/assets/img/3_yf_btnr.png b/assets/img/3_yf_btnr.png new file mode 100644 index 0000000..8581a58 Binary files /dev/null and b/assets/img/3_yf_btnr.png differ diff --git a/assets/img/3_yf_card.png b/assets/img/3_yf_card.png new file mode 100644 index 0000000..fb73fd6 Binary files /dev/null and b/assets/img/3_yf_card.png differ diff --git a/assets/img/3_zj_bg.png b/assets/img/3_zj_bg.png new file mode 100644 index 0000000..7ed811e Binary files /dev/null and b/assets/img/3_zj_bg.png differ diff --git a/assets/img/3_zj_icon.png b/assets/img/3_zj_icon.png new file mode 100644 index 0000000..47d5e0d Binary files /dev/null and b/assets/img/3_zj_icon.png differ diff --git a/assets/img/4_box.png b/assets/img/4_box.png new file mode 100644 index 0000000..8708a82 Binary files /dev/null and b/assets/img/4_box.png differ diff --git a/assets/img/4_fz.png b/assets/img/4_fz.png new file mode 100644 index 0000000..41fbab0 Binary files /dev/null and b/assets/img/4_fz.png differ diff --git a/assets/img/4_qy_prize1.png b/assets/img/4_qy_prize1.png new file mode 100644 index 0000000..965a729 Binary files /dev/null and b/assets/img/4_qy_prize1.png differ diff --git a/assets/img/4_qy_prize2.png b/assets/img/4_qy_prize2.png new file mode 100644 index 0000000..31cc5cb Binary files /dev/null and b/assets/img/4_qy_prize2.png differ diff --git a/assets/img/4_rank_1.png b/assets/img/4_rank_1.png new file mode 100644 index 0000000..4a312ab Binary files /dev/null and b/assets/img/4_rank_1.png differ diff --git a/assets/img/4_rank_2.png b/assets/img/4_rank_2.png new file mode 100644 index 0000000..59624b4 Binary files /dev/null and b/assets/img/4_rank_2.png differ diff --git a/assets/img/4_rank_3.png b/assets/img/4_rank_3.png new file mode 100644 index 0000000..5c519f8 Binary files /dev/null and b/assets/img/4_rank_3.png differ diff --git a/assets/img/4_sm.png b/assets/img/4_sm.png new file mode 100644 index 0000000..3ad4de6 Binary files /dev/null and b/assets/img/4_sm.png differ diff --git a/assets/img/4_ytj.png b/assets/img/4_ytj.png new file mode 100644 index 0000000..2898e6c Binary files /dev/null and b/assets/img/4_ytj.png differ diff --git a/assets/img/address.png b/assets/img/address.png new file mode 100644 index 0000000..99d6991 Binary files /dev/null and b/assets/img/address.png differ diff --git a/assets/img/all.png b/assets/img/all.png new file mode 100644 index 0000000..08dbc23 Binary files /dev/null and b/assets/img/all.png differ diff --git a/assets/img/all_act.png b/assets/img/all_act.png new file mode 100644 index 0000000..ae6ab04 Binary files /dev/null and b/assets/img/all_act.png differ diff --git a/assets/img/animation.png b/assets/img/animation.png new file mode 100644 index 0000000..b0c71a7 Binary files /dev/null and b/assets/img/animation.png differ diff --git a/assets/img/bag.png b/assets/img/bag.png new file mode 100644 index 0000000..a32869e Binary files /dev/null and b/assets/img/bag.png differ diff --git a/assets/img/bd.png b/assets/img/bd.png new file mode 100644 index 0000000..244acac Binary files /dev/null and b/assets/img/bd.png differ diff --git a/assets/img/bottom.png b/assets/img/bottom.png new file mode 100644 index 0000000..801416d Binary files /dev/null and b/assets/img/bottom.png differ diff --git a/assets/img/bottom_act.png b/assets/img/bottom_act.png new file mode 100644 index 0000000..323c256 Binary files /dev/null and b/assets/img/bottom_act.png differ diff --git a/assets/img/box.png b/assets/img/box.png new file mode 100644 index 0000000..fad207a Binary files /dev/null and b/assets/img/box.png differ diff --git a/assets/img/btn_bg.png b/assets/img/btn_bg.png new file mode 100644 index 0000000..0836340 Binary files /dev/null and b/assets/img/btn_bg.png differ diff --git a/assets/img/btn_bg1.png b/assets/img/btn_bg1.png new file mode 100644 index 0000000..314a543 Binary files /dev/null and b/assets/img/btn_bg1.png differ diff --git a/assets/img/camera.png b/assets/img/camera.png new file mode 100644 index 0000000..0e03ce2 Binary files /dev/null and b/assets/img/camera.png differ diff --git a/assets/img/check.png b/assets/img/check.png new file mode 100644 index 0000000..1d5fe93 Binary files /dev/null and b/assets/img/check.png differ diff --git a/assets/img/check1.png b/assets/img/check1.png new file mode 100644 index 0000000..0800359 Binary files /dev/null and b/assets/img/check1.png differ diff --git a/assets/img/check1_act.png b/assets/img/check1_act.png new file mode 100644 index 0000000..9bbaf0b Binary files /dev/null and b/assets/img/check1_act.png differ diff --git a/assets/img/check_act.png b/assets/img/check_act.png new file mode 100644 index 0000000..045ecdb Binary files /dev/null and b/assets/img/check_act.png differ diff --git a/assets/img/close.png b/assets/img/close.png new file mode 100644 index 0000000..89a1eee Binary files /dev/null and b/assets/img/close.png differ diff --git a/assets/img/close1.png b/assets/img/close1.png new file mode 100644 index 0000000..f2bd99f Binary files /dev/null and b/assets/img/close1.png differ diff --git a/assets/img/close2.png b/assets/img/close2.png new file mode 100644 index 0000000..c5166e1 Binary files /dev/null and b/assets/img/close2.png differ diff --git a/assets/img/coin1.png b/assets/img/coin1.png new file mode 100644 index 0000000..07e05c1 Binary files /dev/null and b/assets/img/coin1.png differ diff --git a/assets/img/collect.png b/assets/img/collect.png new file mode 100644 index 0000000..24f54be Binary files /dev/null and b/assets/img/collect.png differ diff --git a/assets/img/g_bg.png b/assets/img/g_bg.png new file mode 100644 index 0000000..40e9460 Binary files /dev/null and b/assets/img/g_bg.png differ diff --git a/assets/img/info.png b/assets/img/info.png new file mode 100644 index 0000000..23636af Binary files /dev/null and b/assets/img/info.png differ diff --git a/assets/img/jia.png b/assets/img/jia.png new file mode 100644 index 0000000..fcb36d0 Binary files /dev/null and b/assets/img/jia.png differ diff --git a/assets/img/jian.png b/assets/img/jian.png new file mode 100644 index 0000000..dc7ab05 Binary files /dev/null and b/assets/img/jian.png differ diff --git a/assets/img/left.png b/assets/img/left.png new file mode 100644 index 0000000..02ca908 Binary files /dev/null and b/assets/img/left.png differ diff --git a/assets/img/logo.png b/assets/img/logo.png new file mode 100644 index 0000000..f4a728f Binary files /dev/null and b/assets/img/logo.png differ diff --git a/assets/img/new.png b/assets/img/new.png new file mode 100644 index 0000000..2139dcc Binary files /dev/null and b/assets/img/new.png differ diff --git a/assets/img/pay_type1.png b/assets/img/pay_type1.png new file mode 100644 index 0000000..df55c9b Binary files /dev/null and b/assets/img/pay_type1.png differ diff --git a/assets/img/pay_type2.png b/assets/img/pay_type2.png new file mode 100644 index 0000000..d44494d Binary files /dev/null and b/assets/img/pay_type2.png differ diff --git a/assets/img/prize.png b/assets/img/prize.png new file mode 100644 index 0000000..c11da86 Binary files /dev/null and b/assets/img/prize.png differ diff --git a/assets/img/question.png b/assets/img/question.png new file mode 100644 index 0000000..d6403cc Binary files /dev/null and b/assets/img/question.png differ diff --git a/assets/img/refresh.png b/assets/img/refresh.png new file mode 100644 index 0000000..e8e18e8 Binary files /dev/null and b/assets/img/refresh.png differ diff --git a/assets/img/right.png b/assets/img/right.png new file mode 100644 index 0000000..49dfc5d Binary files /dev/null and b/assets/img/right.png differ diff --git a/assets/img/right1.png b/assets/img/right1.png new file mode 100644 index 0000000..246d7ef Binary files /dev/null and b/assets/img/right1.png differ diff --git a/assets/img/right2.png b/assets/img/right2.png new file mode 100644 index 0000000..88749d0 Binary files /dev/null and b/assets/img/right2.png differ diff --git a/assets/img/right3.png b/assets/img/right3.png new file mode 100644 index 0000000..6554e94 Binary files /dev/null and b/assets/img/right3.png differ diff --git a/assets/img/rule_pop_bg.png b/assets/img/rule_pop_bg.png new file mode 100644 index 0000000..6322713 Binary files /dev/null and b/assets/img/rule_pop_bg.png differ diff --git a/assets/img/search.png b/assets/img/search.png new file mode 100644 index 0000000..910cf19 Binary files /dev/null and b/assets/img/search.png differ diff --git a/assets/img/share.png b/assets/img/share.png new file mode 100644 index 0000000..ad1cdb0 Binary files /dev/null and b/assets/img/share.png differ diff --git a/assets/img/share1.png b/assets/img/share1.png new file mode 100644 index 0000000..2414683 Binary files /dev/null and b/assets/img/share1.png differ diff --git a/assets/img/sold_out.png b/assets/img/sold_out.png new file mode 100644 index 0000000..a1cc273 Binary files /dev/null and b/assets/img/sold_out.png differ diff --git a/assets/img/tab.png b/assets/img/tab.png new file mode 100644 index 0000000..d06b91e Binary files /dev/null and b/assets/img/tab.png differ diff --git a/assets/img/tab1.png b/assets/img/tab1.png new file mode 100644 index 0000000..73f9ca7 Binary files /dev/null and b/assets/img/tab1.png differ diff --git a/assets/img/tab1_act.png b/assets/img/tab1_act.png new file mode 100644 index 0000000..7f42e42 Binary files /dev/null and b/assets/img/tab1_act.png differ diff --git a/assets/img/tab2.png b/assets/img/tab2.png new file mode 100644 index 0000000..8666f64 Binary files /dev/null and b/assets/img/tab2.png differ diff --git a/assets/img/tab2_act.png b/assets/img/tab2_act.png new file mode 100644 index 0000000..afb4a3b Binary files /dev/null and b/assets/img/tab2_act.png differ diff --git a/assets/img/tab_act.png b/assets/img/tab_act.png new file mode 100644 index 0000000..fb66d33 Binary files /dev/null and b/assets/img/tab_act.png differ diff --git a/assets/img/tab_bg.png b/assets/img/tab_bg.png new file mode 100644 index 0000000..8cfb0a5 Binary files /dev/null and b/assets/img/tab_bg.png differ diff --git a/assets/img/tag_bg.png b/assets/img/tag_bg.png new file mode 100644 index 0000000..20b777d Binary files /dev/null and b/assets/img/tag_bg.png differ diff --git a/assets/img1/1_scwz.png b/assets/img1/1_scwz.png new file mode 100644 index 0000000..e5355e8 Binary files /dev/null and b/assets/img1/1_scwz.png differ diff --git a/assets/img1/1_scwz1.png b/assets/img1/1_scwz1.png new file mode 100644 index 0000000..e2e3b07 Binary files /dev/null and b/assets/img1/1_scwz1.png differ diff --git a/assets/mp3/open.mp3 b/assets/mp3/open.mp3 new file mode 100644 index 0000000..ab775cf Binary files /dev/null and b/assets/mp3/open.mp3 differ diff --git a/common/animate.css b/common/animate.css new file mode 100644 index 0000000..3e5a14a --- /dev/null +++ b/common/animate.css @@ -0,0 +1,1723 @@ +@charset "UTF-8"; + +/*! + * animate.css -http://daneden.me/animate + * Version - 3.5.2 + * Licensed under the MIT license - http://opensource.org/licenses/MIT + * + * Copyright (c) 2017 Daniel Eden + */ + +.animated { + animation-duration: 1s; + animation-fill-mode: both; +} + +.animated.infinite { + animation-iteration-count: infinite; +} + +.animated.hinge { + animation-duration: 2s; +} + +.animated.flipOutX, +.animated.flipOutY, +.animated.bounceIn, +.animated.bounceOut { + animation-duration: .75s; +} +.rota{ + animation: rota 4s infinite linear; +} +@keyframes rota { + 0% { + transform: rotate(0deg) + } + 100% { + transform: rotate(360deg) + } +} +@keyframes boxr { + from { + width: 100rpx; + height: 100rpx; + opacity: 1; + } + + 20% { + left: 420rpx; + top: 470rpx; + } + + 100% { + top: -160rpx; + left: 510rpx; + width: 160rpx; + height: 160rpx; + opacity: 0.8; + } +} + +.boxr { + animation: boxr 10s; +} + +@keyframes boxx { + from { + width: 100rpx; + height: 100rpx; + opacity: 1; + } + + 20% { + top: 470rpx; + } + + 100% { + top: -160rpx; + left: 300rpx; + width: 160rpx; + height: 160rpx; + opacity: 0.8; + } +} + +.boxx { + animation: boxx 10s; +} + +@keyframes boxl { + from { + width: 100rpx; + height: 100rpx; + opacity: 1; + } + + 20% { + left: 210rpx; + top: 470rpx; + } + + 100% { + top: -160rpx; + left: 80rpx; + width: 160rpx; + height: 160rpx; + opacity: 0.8; + } +} + +.boxl { + animation: boxl 10s; +} + + +@keyframes bounce { + + from, + 20%, + 53%, + 80%, + to { + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + transform: translate3d(0, 0, 0); + } + + 40%, + 43% { + animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + transform: translate3d(0, -30px, 0); + } + + 70% { + animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + transform: translate3d(0, -15px, 0); + } + + 90% { + transform: translate3d(0, -4px, 0); + } +} + +.bounce { + animation-name: bounce; + transform-origin: center bottom; +} + +@keyframes flash { + + from, + 50%, + to { + opacity: 1; + } + + 25%, + 75% { + opacity: 0; + } +} + +.flash { + animation-name: flash; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@keyframes pulse { + from { + transform: scale3d(1, 1, 1); + } + + 50% { + transform: scale3d(1.05, 1.05, 1.05); + } + + to { + transform: scale3d(1, 1, 1); + } +} + +.pulse { + animation-name: pulse; +} + +@keyframes rubberBand { + from { + transform: scale3d(1, 1, 1); + } + + 30% { + transform: scale3d(1.25, 0.75, 1); + } + + 40% { + transform: scale3d(0.75, 1.25, 1); + } + + 50% { + transform: scale3d(1.15, 0.85, 1); + } + + 65% { + transform: scale3d(.95, 1.05, 1); + } + + 75% { + transform: scale3d(1.05, .95, 1); + } + + to { + transform: scale3d(1, 1, 1); + } +} + +.rubberBand { + animation-name: rubberBand; +} + +@keyframes shake { + + from, + to { + transform: translate3d(0, 0, 0); + } + + 10%, + 30%, + 50%, + 70%, + 90% { + transform: translate3d(-10px, 0, 0); + } + + 20%, + 40%, + 60%, + 80% { + transform: translate3d(10px, 0, 0); + } +} + +.shake { + animation-name: shake; +} + +@keyframes headShake { + 0% { + transform: translateX(0); + } + + 6.5% { + transform: translateX(-6px) rotateY(-9deg); + } + + 18.5% { + transform: translateX(5px) rotateY(7deg); + } + + 31.5% { + transform: translateX(-3px) rotateY(-5deg); + } + + 43.5% { + transform: translateX(2px) rotateY(3deg); + } + + 50% { + transform: translateX(0); + } +} + +.headShake { + animation-timing-function: ease-in-out; + animation-name: headShake; +} + +@keyframes swing { + 20% { + transform: rotate3d(0, 0, 1, 15deg); + } + + 40% { + transform: rotate3d(0, 0, 1, -10deg); + } + + 60% { + transform: rotate3d(0, 0, 1, 5deg); + } + + 80% { + transform: rotate3d(0, 0, 1, -5deg); + } + + to { + transform: rotate3d(0, 0, 1, 0deg); + } +} + +.swing { + transform-origin: top center; + animation-name: swing; +} + +@keyframes tada { + from { + transform: scale3d(1, 1, 1); + } + + 10%, + 20% { + transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); + } + + 30%, + 50%, + 70%, + 90% { + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + } + + 40%, + 60%, + 80% { + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + } + + to { + transform: scale3d(1, 1, 1); + } +} + +.tada { + animation-name: tada; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@keyframes wobble { + from { + transform: none; + } + + 15% { + transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + } + + 30% { + transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + } + + 45% { + transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + } + + 60% { + transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + } + + 75% { + transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + } + + to { + transform: none; + } +} + +.wobble { + animation-name: wobble; +} + +@keyframes jello { + + from, + 11.1%, + to { + transform: none; + } + + 22.2% { + transform: skewX(-12.5deg) skewY(-12.5deg); + } + + 33.3% { + transform: skewX(6.25deg) skewY(6.25deg); + } + + 44.4% { + transform: skewX(-3.125deg) skewY(-3.125deg); + } + + 55.5% { + transform: skewX(1.5625deg) skewY(1.5625deg); + } + + 66.6% { + transform: skewX(-0.78125deg) skewY(-0.78125deg); + } + + 77.7% { + transform: skewX(0.390625deg) skewY(0.390625deg); + } + + 88.8% { + transform: skewX(-0.1953125deg) skewY(-0.1953125deg); + } +} + +.jello { + animation-name: jello; + transform-origin: center; +} + +@keyframes bounceIn { + + from, + 20%, + 40%, + 60%, + 80%, + to { + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + transform: scale3d(.3, .3, .3); + } + + 20% { + transform: scale3d(1.1, 1.1, 1.1); + } + + 40% { + transform: scale3d(.9, .9, .9); + } + + 60% { + opacity: 1; + transform: scale3d(1.03, 1.03, 1.03); + } + + 80% { + transform: scale3d(.97, .97, .97); + } + + to { + opacity: 1; + transform: scale3d(1, 1, 1); + } +} + +.bounceIn { + animation-name: bounceIn; +} + +@keyframes bounceInDown { + + from, + 60%, + 75%, + 90%, + to { + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + transform: translate3d(0, -3000px, 0); + } + + 60% { + opacity: 1; + transform: translate3d(0, 25px, 0); + } + + 75% { + transform: translate3d(0, -10px, 0); + } + + 90% { + transform: translate3d(0, 5px, 0); + } + + to { + transform: none; + } +} + +.bounceInDown { + animation-name: bounceInDown; +} + +@keyframes bounceInLeft { + + from, + 60%, + 75%, + 90%, + to { + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + transform: translate3d(-3000px, 0, 0); + } + + 60% { + opacity: 1; + transform: translate3d(25px, 0, 0); + } + + 75% { + transform: translate3d(-10px, 0, 0); + } + + 90% { + transform: translate3d(5px, 0, 0); + } + + to { + transform: none; + } +} + +.bounceInLeft { + animation-name: bounceInLeft; +} + +@keyframes bounceInRight { + + from, + 60%, + 75%, + 90%, + to { + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + from { + opacity: 0; + transform: translate3d(3000px, 0, 0); + } + + 60% { + opacity: 1; + transform: translate3d(-25px, 0, 0); + } + + 75% { + transform: translate3d(10px, 0, 0); + } + + 90% { + transform: translate3d(-5px, 0, 0); + } + + to { + transform: none; + } +} + +.bounceInRight { + animation-name: bounceInRight; +} + +@keyframes bounceInUp { + + from, + 60%, + 75%, + 90%, + to { + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + from { + opacity: 0; + transform: translate3d(0, 3000px, 0); + } + + 60% { + opacity: 1; + transform: translate3d(0, -20px, 0); + } + + 75% { + transform: translate3d(0, 10px, 0); + } + + 90% { + transform: translate3d(0, -5px, 0); + } + + to { + transform: translate3d(0, 0, 0); + } +} + +.bounceInUp { + animation-name: bounceInUp; +} + +@keyframes bounceOut { + 20% { + transform: scale3d(.9, .9, .9); + } + + 50%, + 55% { + opacity: 1; + transform: scale3d(1.1, 1.1, 1.1); + } + + to { + opacity: 0; + transform: scale3d(.3, .3, .3); + } +} + +.bounceOut { + animation-name: bounceOut; +} + +@keyframes bounceOutDown { + 20% { + transform: translate3d(0, 10px, 0); + } + + 40%, + 45% { + opacity: 1; + transform: translate3d(0, -20px, 0); + } + + to { + opacity: 0; + transform: translate3d(0, 2000px, 0); + } +} + +.bounceOutDown { + animation-name: bounceOutDown; +} + +@keyframes bounceOutLeft { + 20% { + opacity: 1; + transform: translate3d(20px, 0, 0); + } + + to { + opacity: 0; + transform: translate3d(-2000px, 0, 0); + } +} + +.bounceOutLeft { + animation-name: bounceOutLeft; +} + +@keyframes bounceOutRight { + 20% { + opacity: 1; + transform: translate3d(-20px, 0, 0); + } + + to { + opacity: 0; + transform: translate3d(2000px, 0, 0); + } +} + +.bounceOutRight { + animation-name: bounceOutRight; +} + +@keyframes bounceOutUp { + 20% { + transform: translate3d(0, -10px, 0); + } + + 40%, + 45% { + opacity: 1; + transform: translate3d(0, 20px, 0); + } + + to { + opacity: 0; + transform: translate3d(0, -2000px, 0); + } +} + +.bounceOutUp { + animation-name: bounceOutUp; +} + +@keyframes fadeIn { + from { + opacity: 0; + } + + to { + opacity: 1; + } +} + +.fadeIn { + animation-name: fadeIn; +} + +@keyframes fadeInDown { + from { + opacity: 0; + transform: translate3d(0, -100%, 0); + } + + to { + opacity: 1; + transform: none; + } +} + +.fadeInDown { + animation-name: fadeInDown; +} + +@keyframes fadeInDownBig { + from { + opacity: 0; + transform: translate3d(0, -2000px, 0); + } + + to { + opacity: 1; + transform: none; + } +} + +.fadeInDownBig { + animation-name: fadeInDownBig; +} + +@keyframes fadeInLeft { + from { + opacity: 0; + transform: translate3d(-100%, 0, 0); + } + + to { + opacity: 1; + transform: none; + } +} + +.fadeInLeft { + animation-name: fadeInLeft; +} + +@keyframes fadeInLeftBig { + from { + opacity: 0; + transform: translate3d(-2000px, 0, 0); + } + + to { + opacity: 1; + transform: none; + } +} + +.fadeInLeftBig { + animation-name: fadeInLeftBig; +} + +@keyframes fadeInRight { + from { + opacity: 0; + transform: translate3d(100%, 0, 0); + } + + to { + opacity: 1; + transform: none; + } +} + +.fadeInRight { + animation-name: fadeInRight; +} + +@keyframes fadeInRightBig { + from { + opacity: 0; + transform: translate3d(2000px, 0, 0); + } + + to { + opacity: 1; + transform: none; + } +} + +.fadeInRightBig { + animation-name: fadeInRightBig; +} + +@keyframes fadeInUp { + from { + opacity: 0; + transform: translate3d(0, 100%, 0); + } + + to { + opacity: 1; + transform: none; + } +} + +.fadeInUp { + animation-name: fadeInUp; +} + +@keyframes fadeInUpBig { + from { + opacity: 0; + transform: translate3d(0, 2000px, 0); + } + + to { + opacity: 1; + transform: none; + } +} + +.fadeInUpBig { + animation-name: fadeInUpBig; +} + +@keyframes fadeOut { + from { + opacity: 1; + } + + to { + opacity: 0; + } +} + +.fadeOut { + animation-name: fadeOut; +} + +@keyframes fadeOutDown { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(0, 100%, 0); + } +} + +.fadeOutDown { + animation-name: fadeOutDown; +} + +@keyframes fadeOutDownBig { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(0, 2000px, 0); + } +} + +.fadeOutDownBig { + animation-name: fadeOutDownBig; +} + +@keyframes fadeOutLeft { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(-100%, 0, 0); + } +} + +.fadeOutLeft { + animation-name: fadeOutLeft; +} + +@keyframes fadeOutLeftBig { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(-2000px, 0, 0); + } +} + +.fadeOutLeftBig { + animation-name: fadeOutLeftBig; +} + +@keyframes fadeOutRight { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(100%, 0, 0); + } +} + +.fadeOutRight { + animation-name: fadeOutRight; +} + +@keyframes fadeOutRightBig { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(2000px, 0, 0); + } +} + +.fadeOutRightBig { + animation-name: fadeOutRightBig; +} + +@keyframes fadeOutUp { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(0, -100%, 0); + } +} + +.fadeOutUp { + animation-name: fadeOutUp; +} + +@keyframes fadeOutUpBig { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(0, -2000px, 0); + } +} + +.fadeOutUpBig { + animation-name: fadeOutUpBig; +} + +@keyframes flip { + from { + transform: perspective(400px) rotate3d(0, 1, 0, -360deg); + animation-timing-function: ease-out; + } + + 40% { + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); + animation-timing-function: ease-out; + } + + 50% { + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); + animation-timing-function: ease-in; + } + + 80% { + transform: perspective(400px) scale3d(.95, .95, .95); + animation-timing-function: ease-in; + } + + to { + transform: perspective(400px); + animation-timing-function: ease-in; + } +} + +.animated.flip { + -webkit-backface-visibility: visible; + backface-visibility: visible; + animation-name: flip; +} + +@keyframes flipInX { + from { + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + animation-timing-function: ease-in; + opacity: 0; + } + + 40% { + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + animation-timing-function: ease-in; + } + + 60% { + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; + } + + 80% { + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + } + + to { + transform: perspective(400px); + } +} + +.flipInX { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + animation-name: flipInX; +} + +@keyframes flipInY { + from { + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + animation-timing-function: ease-in; + opacity: 0; + } + + 40% { + transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + animation-timing-function: ease-in; + } + + 60% { + transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + opacity: 1; + } + + 80% { + transform: perspective(400px) rotate3d(0, 1, 0, -5deg); + } + + to { + transform: perspective(400px); + } +} + +.flipInY { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + animation-name: flipInY; +} + +@keyframes flipOutX { + from { + transform: perspective(400px); + } + + 30% { + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + opacity: 1; + } + + to { + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } +} + +.flipOutX { + animation-name: flipOutX; + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; +} + +@keyframes flipOutY { + from { + transform: perspective(400px); + } + + 30% { + transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + opacity: 1; + } + + to { + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + opacity: 0; + } +} + +.flipOutY { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + animation-name: flipOutY; +} + +@keyframes lightSpeedIn { + from { + transform: translate3d(100%, 0, 0) skewX(-30deg); + opacity: 0; + } + + 60% { + transform: skewX(20deg); + opacity: 1; + } + + 80% { + transform: skewX(-5deg); + opacity: 1; + } + + to { + transform: none; + opacity: 1; + } +} + +.lightSpeedIn { + animation-name: lightSpeedIn; + animation-timing-function: ease-out; +} + +@keyframes lightSpeedOut { + from { + opacity: 1; + } + + to { + transform: translate3d(100%, 0, 0) skewX(30deg); + opacity: 0; + } +} + +.lightSpeedOut { + animation-name: lightSpeedOut; + animation-timing-function: ease-in; +} + +@keyframes rotateIn { + from { + transform-origin: center; + transform: rotate3d(0, 0, 1, -200deg); + opacity: 0; + } + + to { + transform-origin: center; + transform: none; + opacity: 1; + } +} + +.rotateIn { + animation-name: rotateIn; +} + +@keyframes rotateInDownLeft { + from { + transform-origin: left bottom; + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } + + to { + transform-origin: left bottom; + transform: none; + opacity: 1; + } +} + +.rotateInDownLeft { + animation-name: rotateInDownLeft; +} + +@keyframes rotateInDownRight { + from { + transform-origin: right bottom; + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } + + to { + transform-origin: right bottom; + transform: none; + opacity: 1; + } +} + +.rotateInDownRight { + animation-name: rotateInDownRight; +} + +@keyframes rotateInUpLeft { + from { + transform-origin: left bottom; + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } + + to { + transform-origin: left bottom; + transform: none; + opacity: 1; + } +} + +.rotateInUpLeft { + animation-name: rotateInUpLeft; +} + +@keyframes rotateInUpRight { + from { + transform-origin: right bottom; + transform: rotate3d(0, 0, 1, -90deg); + opacity: 0; + } + + to { + transform-origin: right bottom; + transform: none; + opacity: 1; + } +} + +.rotateInUpRight { + animation-name: rotateInUpRight; +} + +@keyframes rotateOut { + from { + transform-origin: center; + opacity: 1; + } + + to { + transform-origin: center; + transform: rotate3d(0, 0, 1, 200deg); + opacity: 0; + } +} + +.rotateOut { + animation-name: rotateOut; +} + +@keyframes rotateOutDownLeft { + from { + transform-origin: left bottom; + opacity: 1; + } + + to { + transform-origin: left bottom; + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } +} + +.rotateOutDownLeft { + animation-name: rotateOutDownLeft; +} + +@keyframes rotateOutDownRight { + from { + transform-origin: right bottom; + opacity: 1; + } + + to { + transform-origin: right bottom; + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } +} + +.rotateOutDownRight { + animation-name: rotateOutDownRight; +} + +@keyframes rotateOutUpLeft { + from { + transform-origin: left bottom; + opacity: 1; + } + + to { + transform-origin: left bottom; + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } +} + +.rotateOutUpLeft { + animation-name: rotateOutUpLeft; +} + +@keyframes rotateOutUpRight { + from { + transform-origin: right bottom; + opacity: 1; + } + + to { + transform-origin: right bottom; + transform: rotate3d(0, 0, 1, 90deg); + opacity: 0; + } +} + +.rotateOutUpRight { + animation-name: rotateOutUpRight; +} + +@keyframes hinge { + 0% { + transform-origin: top left; + animation-timing-function: ease-in-out; + } + + 20%, + 60% { + transform: rotate3d(0, 0, 1, 80deg); + transform-origin: top left; + animation-timing-function: ease-in-out; + } + + 40%, + 80% { + transform: rotate3d(0, 0, 1, 60deg); + transform-origin: top left; + animation-timing-function: ease-in-out; + opacity: 1; + } + + to { + transform: translate3d(0, 700px, 0); + opacity: 0; + } +} + +.hinge { + animation-name: hinge; +} + +@keyframes jackInTheBox { + from { + opacity: 0; + transform: scale(0.1) rotate(30deg); + transform-origin: center bottom; + } + + 50% { + transform: rotate(-10deg); + } + + 70% { + transform: rotate(3deg); + } + + to { + opacity: 1; + transform: scale(1); + } +} + +.jackInTheBox { + animation-name: jackInTheBox; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@keyframes rollIn { + from { + opacity: 0; + transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); + } + + to { + opacity: 1; + transform: none; + } +} + +.rollIn { + animation-name: rollIn; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@keyframes rollOut { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); + } +} + +.rollOut { + animation-name: rollOut; +} + +@keyframes zoomIn { + from { + opacity: 0; + transform: scale3d(.3, .3, .3); + } + + 50% { + opacity: 1; + } +} + +.zoomIn { + animation-name: zoomIn; +} + +@keyframes zoomInDown { + from { + opacity: 0; + transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +.zoomInDown { + animation-name: zoomInDown; +} + +@keyframes zoomInLeft { + from { + opacity: 0; + transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +.zoomInLeft { + animation-name: zoomInLeft; +} + +@keyframes zoomInRight { + from { + opacity: 0; + transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +.zoomInRight { + animation-name: zoomInRight; +} + +@keyframes zoomInUp { + from { + opacity: 0; + transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +.zoomInUp { + animation-name: zoomInUp; +} + +@keyframes zoomOut { + from { + opacity: 1; + } + + 50% { + opacity: 0; + transform: scale3d(.3, .3, .3); + } + + to { + opacity: 0; + } +} + +.zoomOut { + animation-name: zoomOut; +} + +@keyframes zoomOutDown { + 40% { + opacity: 1; + transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + to { + opacity: 0; + transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); + transform-origin: center bottom; + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +.zoomOutDown { + animation-name: zoomOutDown; +} + +@keyframes zoomOutLeft { + 40% { + opacity: 1; + transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); + } + + to { + opacity: 0; + transform: scale(.1) translate3d(-2000px, 0, 0); + transform-origin: left center; + } +} + +.zoomOutLeft { + animation-name: zoomOutLeft; +} + +@keyframes zoomOutRight { + 40% { + opacity: 1; + transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); + } + + to { + opacity: 0; + transform: scale(.1) translate3d(2000px, 0, 0); + transform-origin: right center; + } +} + +.zoomOutRight { + animation-name: zoomOutRight; +} + +@keyframes zoomOutUp { + 40% { + opacity: 1; + transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + to { + opacity: 0; + transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); + transform-origin: center bottom; + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +.zoomOutUp { + animation-name: zoomOutUp; +} + +@keyframes slideInDown { + from { + transform: translate3d(0, -100%, 0); + visibility: visible; + } + + to { + transform: translate3d(0, 0, 0); + } +} + +.slideInDown { + animation-name: slideInDown; +} + +@keyframes slideInLeft { + from { + transform: translate3d(-100%, 0, 0); + visibility: visible; + } + + to { + transform: translate3d(0, 0, 0); + } +} + +.slideInLeft { + animation-name: slideInLeft; +} + +@keyframes slideInRight { + from { + transform: translate3d(100%, 0, 0); + visibility: visible; + } + + to { + transform: translate3d(0, 0, 0); + } +} + +.slideInRight { + animation-name: slideInRight; +} + +@keyframes slideInUp { + from { + transform: translate3d(0, 100%, 0); + visibility: visible; + } + + to { + transform: translate3d(0, 0, 0); + } +} + +.slideInUp { + animation-name: slideInUp; +} + +@keyframes slideOutDown { + from { + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + transform: translate3d(0, 100%, 0); + } +} + +.slideOutDown { + animation-name: slideOutDown; +} + +@keyframes slideOutLeft { + from { + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + transform: translate3d(-100%, 0, 0); + } +} + +.slideOutLeft { + animation-name: slideOutLeft; +} + +@keyframes slideOutRight { + from { + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + transform: translate3d(100%, 0, 0); + } +} + +.slideOutRight { + animation-name: slideOutRight; +} + +@keyframes slideOutUp { + from { + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + transform: translate3d(0, -100%, 0); + } +} + +.slideOutUp { + animation-name: slideOutUp; +} diff --git a/common/animation.vue b/common/animation.vue new file mode 100644 index 0000000..8a6551a --- /dev/null +++ b/common/animation.vue @@ -0,0 +1,335 @@ + + + + + diff --git a/common/common.css b/common/common.css new file mode 100644 index 0000000..513d239 --- /dev/null +++ b/common/common.css @@ -0,0 +1,212 @@ +.relative { + position: relative; +} + +.filter { + filter: grayscale(100%); +} + +.flex { + display: flex; +} + +.flex-1 { + flex: 1 !important; +} + +.flex-2 { + flex: 2 !important; +} + +.align-center { + display: flex; + align-items: center !important; +} + +.align-end { + display: flex; + align-items: flex-end; +} + +.align-baseline { + display: flex; + align-items: baseline; +} + +.row { + flex-direction: row !important; +} + +.column { + display: flex; + flex-direction: column !important; +} + +.center { + display: flex; + align-items: center !important; + justify-content: center !important; +} + +.justify-center { + display: flex; + justify-content: center !important; +} + +.justify-between { + display: flex; + justify-content: space-between !important; +} + +.justify-evenly { + display: flex; + justify-content: space-evenly !important; +} + +.justify-around { + display: flex; + justify-content: space-around !important; +} + +.justify-end { + display: flex; + justify-content: flex-end !important; +} + +.hidden { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.hidden-two { + -webkit-line-clamp: 2; + display: -webkit-box; + -webkit-box-orient: vertical; + overflow: hidden; + text-overflow: ellipsis; + white-space: normal; +} + +.ml10 { + margin-left: 10rpx; +} + +.mb42 { + margin-bottom: 42rpx; +} + +.mb20 { + margin-bottom: 20rpx; +} + +.mb30 { + margin-bottom: 30rpx; +} + +.ml30 { + margin-left: 30rpx; +} + +.ml40 { + margin-left: 40rpx; +} + +.ml50 { + margin-right: 100rpx; +} + +.ml20 { + margin-left: 20rpx; +} + +.pl20 { + padding-left: 20rpx; +} + +.pd30 { + padding: 30rpx; +} + +.pd20 { + padding: 20rpx; +} + +.pd24 { + padding: 24rpx; +} + +.pt24 { + padding-top: 24rpx; +} + +.pt20 { + padding-top: 20rpx; +} + +.mt10 { + margin-top: 10rpx; +} + +.mt20 { + margin-top: 20rpx; +} + +.mt22 { + margin-top: 22rpx; +} + +.mt30 { + margin-top: 30rpx; +} + +.mr30 { + margin-right: 30rpx; +} + +.mr20 { + margin-right: 20rpx; +} + +.mr10 { + margin-right: 10rpx; +} + +.img100 { + width: 100%; + height: 100%; +} + +.bgfff { + background-color: #FFFFFF; +} + +.bgf5 { + background-color: #F5F5F5; +} + +.brt20 { + border-top: 20rpx solid #F5F5F5; +} + +.br10 { + border-radius: 10rpx; +} + +.br20 { + border-radius: 20rpx !important; +} + + +.minHeight100 { + min-height: 100vh; +} + +.shopMask { + padding: 10rpx; + background: rgba(0, 0, 0, 0.3); +} + +.riziBgImg { + background: linear-gradient(to bottom, #f2f6f5, #107097) +} \ No newline at end of file diff --git a/common/common.js b/common/common.js new file mode 100644 index 0000000..7bf154e --- /dev/null +++ b/common/common.js @@ -0,0 +1,390 @@ +/* + * @Date: 2023-11-13 15:46:51 + * @LastEditTime: 2024-01-17 17:20:50 + * @Description: content + */ +import Vue from 'vue' + +// 防止处理多次点击 +function noMultipleClicks(methods, info) { + // methods是点击后需要执行的函数, info是函数需要传的参数 + let that = this + if (that.noClick) { + // 第一次点击 + that.noClick = false + if ((info && info !== '') || info == 0) { + // info是执行函数需要传的参数 + methods(info) + } else { + methods() + } + setTimeout(() => { + that.noClick = true + }, 2000) + } else { + // 这里是重复点击的判断 + } +} +//导出 +export default { + data: { + loading: false, + timer: null + }, + + noMultipleClicks, // 禁止多次点击 + + /* 获取日期 */ + getDateTime() { + const date = new Date() + + const year = date.getFullYear().toString() + const monty = (date.getMonth() + 1).toString() + const day = date.getDate().toString() + + return `${year}-${monty}-${day}` + }, + + detailPageTitle(obj) { + if (!obj) { + return '' + } + + const types = { + 1: '一番赏', + 2: '无限赏', + 3: '擂台赏', + 4: '抽卡机', + 5: '积分赏', + 6: '全局赏', + 7: '福利盲盒', + 8: '领主赏', + 9: '连击赏' + } + + const target = types[obj.type] + return target + }, + + navTo(item) { + /* 领券中心 */ + if (item.ttype == 1) { + this.to({ + url: '/package/index/coupon-center', + query: { + coupon_id: item.coupon_id + } + }) + } + + if (item.goods_id > 0) { + if (item.ttype == 2) { + /* 一番赏 */ + this.to({ + url: '/pages/shouye/detail', + query: { + goods_id: item.goods_id + } + }) + } + + /* 无限赏 */ + if (item.ttype == 3) { + this.to({ + url: '/pages/shouye/detail_wuxian', + query: { + goods_id: item.goods_id + } + }) + } + + /* 连击赏 */ + if (item.ttype == 4) { + this.to({ + url: '/package/index/lian-ji', + query: { + goods_id: item.goods_id + } + }) + } + } + }, + + /** + * @description: 微信支付(小程序) + * @param {*} + * @return {*} + */ + wxMpPay({ provider = 'weixin', data }) { + console.log('wxdata', data) + return new Promise((resolve, reject) => { + uni.requestPayment({ + provider, + ...data, + success: res => { + // console.log(res) + }, + fail: err => { + // console.log('common.wxMpPay-error', err) + }, + complete: res => { + console.log('complete (res)', res) + if (res.errMsg == 'requestPayment:fail cancel') { + this.toast({ + title: '取消支付', + icon: 'none', + duration: 500, + success: () => { + /* 取消订单 */ + } + }) + + resolve('cancel') + } + if (res.errMsg == 'requestPayment:ok') { + this.toast({ + title: '支付成功', + icon: 'success', + duration: 500, + success: () => { + resolve('success') + } + }) + } + } + }) + }) + }, + + /** + * @description: 规避连点 + * @param {*} + * @return {*} + */ + noDouble(fun, data, loading = false) { + /** + * $common.noDouble(fun,data) + * fun 需要规避连点的方法 + * data 该方法需要用到的参数 + * loading 接口加载中状态 + * 传入方法不要写括号 + */ + + /* 如果接口加载中,终止任何操作 */ + if (loading) { + setTimeout(() => { + uni.showToast({ + title: '请勿重复点击', + icon: 'none', + mask: false + }) + }, 100) + return + } + + /* 如果定时器未结束 */ + if (this.data.timer) { + setTimeout(() => { + uni.showToast({ + title: '请勿重复点击', + icon: 'none', + mask: false + }) + }, 100) + + /* 清除之前的定时器 */ + clearTimeout(this.data.timer) + /* 重新设置定时器 */ + this.data.timer = setTimeout(() => { + this.data.timer = null + }, 200) + return + } + + console.log(data && data) + + /* 设置第一次点击的定时器 */ + this.data.timer = setTimeout(() => { + this.data.timer = null + }, 200) + + /* 如果有回调,使用回调并传入参数 */ + fun && fun(data && data) + }, + + /** + * @description: tost提示 + * @return {*} + */ + toast(opt) { + let title = opt.title || '' + let icon = opt.icon || 'none' + let mask = opt.mask || false + let duration = opt.duration || 1500 + let position = opt.position || 'center' + + setTimeout(() => { + uni.showToast({ + title, + icon, + mask, + duration, + position, + success: () => { + if (opt.success) { + setTimeout(() => { + opt.success() + }, duration) + } + } + }) + }, 100) + }, + + /** + * @description: 获取规则 + * @param {*} type + * @return {*} + */ + getRule(id = '', loading = false) { + return new Promise((resolve, reject) => { + Vue.prototype.req({ + url: 'danye', + Loading: !loading, + data: { + type: id + }, + success: res => { + if (res.status == 1) { + if (res.data) { + res.data = res.data.replace( + /\ `${key}=${value}`) + .join('&') + return `?${str}` + }, + + /** + * @description: 跳转页面 + * @param {*} type 跳转类型 1 navigate,2 redirect,3 switch,4 relaunch + * @param {*} url + * @param {*} query + * @return {*} + */ + to({ type = 1, url, query = {}, success, fail, complete }) { + if (!url) { + this.toast({ + title: '暂未开放' + }) + return + } + + if (Object.keys(query).length > 0) { + url += this.qs(query) + } + + const opt = { + url, + success, + fail, + complete + } + + const dic = { + 1: uni.navigateTo, + 2: uni.redirectTo, + 3: uni.switchTab, + 4: uni.reLaunch + } + + const action = dic[type] + + action(opt) + }, + + /** + * @description: 返回上一页 + * @param {*} e + * @return {*} + */ + back(e) { + /* 判断传入的是否是数字 */ + let pages = getCurrentPages() + console.log('pgaes', pages) + if (pages.length >= 2) { + if (typeof e === 'number' && !isNaN(e)) { + /* 如果要跳转的长度小于页面栈数量 */ + if (e < pages.length) { + uni.navigateBack({ delta: e }) + /* 否则回首页 */ + } else { + uni.switchTab({ url: '/pages/shouye/index' }) + } + /* 默认返回上一级 */ + } else { + uni.navigateBack({ delta: 1 }) + } + } else { + uni.switchTab({ url: '/pages/shouye/index' }) + } + }, + + /** + * @description: 提取富文本文字 + * @param {*} val + * @return {*} + */ + filterText(val) { + if (val) { + var replaceLbael = val.replace(/<[^>]+>/g,'') + return replaceLbael.replace(/ /ig,'') + } else { + return '' + } + }, + // 返回上一页 + $navBack(num = 1, time = 0) { + // 页面返回 + setTimeout(() => { + uni.navigateBack({ + delta: num, + fail: () => { + uni.reLaunch({ + url: '/pages/shouye/index' + }) + } + }) + }, time * 1000) + }, +} diff --git a/common/gotopage.js b/common/gotopage.js new file mode 100644 index 0000000..c72eddb --- /dev/null +++ b/common/gotopage.js @@ -0,0 +1,53 @@ +// import config from '../config.js' +/*导航菜单白名单*/ +const tabBarLinks = [ + '/pages/index/index', + '/pages/product/category', + '/pages/cart/cart', + '/pages/user/index/index' +]; + +/*分享页面白名单*/ +const shareLinks = [ + '/pages/plus/assemble/fight-group-detail/fight-group-detail', + '/pages/plus/bargain/haggle/haggle', + '/pages/user/invite/invite', + '/pages/product/detail/detail', + '/pages/plus/seckill/detail/detail', + '/pages/plus/assemble/detail/detail', + '/pages/plus/bargain/detail/detail', + '/pages/plus/points/detail/detail' +] + +/* + * 跳转页面 + */ +export const gotopage = (url, type) => { + if (!url || url.length == 0) { + return false; + } + + + // tabBar页面 + if (type == 'switch') { + uni.reLaunch({ + url: url + }); + } else { + + if(type == 'redirect'){ + uni.redirectTo({ + url: url + }); + } + if(type == 'reLaunch'){ + uni.reLaunch({ + url: url + }); + } + // 普通页面 + uni.navigateTo({ + url: url + }); + } +} diff --git a/components/.DS_Store b/components/.DS_Store new file mode 100644 index 0000000..451cac9 Binary files /dev/null and b/components/.DS_Store differ diff --git a/components/buy-notice/buy-notice.vue b/components/buy-notice/buy-notice.vue new file mode 100644 index 0000000..adff602 --- /dev/null +++ b/components/buy-notice/buy-notice.vue @@ -0,0 +1,154 @@ + + + + + + diff --git a/components/child-scroll/child-scroll.vue b/components/child-scroll/child-scroll.vue new file mode 100644 index 0000000..92e456d --- /dev/null +++ b/components/child-scroll/child-scroll.vue @@ -0,0 +1,54 @@ + + + + diff --git a/components/cmd-progress/cmd-progress.vue b/components/cmd-progress/cmd-progress.vue new file mode 100644 index 0000000..0cdca12 --- /dev/null +++ b/components/cmd-progress/cmd-progress.vue @@ -0,0 +1,575 @@ + + + + + diff --git a/components/gaoyia-parse/components/wxParseAudio.vue b/components/gaoyia-parse/components/wxParseAudio.vue new file mode 100644 index 0000000..b277717 --- /dev/null +++ b/components/gaoyia-parse/components/wxParseAudio.vue @@ -0,0 +1,28 @@ + + + diff --git a/components/gaoyia-parse/components/wxParseImg.vue b/components/gaoyia-parse/components/wxParseImg.vue new file mode 100644 index 0000000..de9978b --- /dev/null +++ b/components/gaoyia-parse/components/wxParseImg.vue @@ -0,0 +1,94 @@ + + + diff --git a/components/gaoyia-parse/components/wxParseTable.vue b/components/gaoyia-parse/components/wxParseTable.vue new file mode 100644 index 0000000..e1e25bf --- /dev/null +++ b/components/gaoyia-parse/components/wxParseTable.vue @@ -0,0 +1,55 @@ + + + \ No newline at end of file diff --git a/components/gaoyia-parse/components/wxParseTemplate0.vue b/components/gaoyia-parse/components/wxParseTemplate0.vue new file mode 100644 index 0000000..01bf8e1 --- /dev/null +++ b/components/gaoyia-parse/components/wxParseTemplate0.vue @@ -0,0 +1,98 @@ + + + diff --git a/components/gaoyia-parse/components/wxParseTemplate1.vue b/components/gaoyia-parse/components/wxParseTemplate1.vue new file mode 100644 index 0000000..7054e35 --- /dev/null +++ b/components/gaoyia-parse/components/wxParseTemplate1.vue @@ -0,0 +1,88 @@ + + + diff --git a/components/gaoyia-parse/components/wxParseTemplate10.vue b/components/gaoyia-parse/components/wxParseTemplate10.vue new file mode 100644 index 0000000..11c252c --- /dev/null +++ b/components/gaoyia-parse/components/wxParseTemplate10.vue @@ -0,0 +1,88 @@ + + + diff --git a/components/gaoyia-parse/components/wxParseTemplate11.vue b/components/gaoyia-parse/components/wxParseTemplate11.vue new file mode 100644 index 0000000..0d04e53 --- /dev/null +++ b/components/gaoyia-parse/components/wxParseTemplate11.vue @@ -0,0 +1,86 @@ + + + diff --git a/components/gaoyia-parse/components/wxParseTemplate2.vue b/components/gaoyia-parse/components/wxParseTemplate2.vue new file mode 100644 index 0000000..f06782a --- /dev/null +++ b/components/gaoyia-parse/components/wxParseTemplate2.vue @@ -0,0 +1,88 @@ + + + diff --git a/components/gaoyia-parse/components/wxParseTemplate3.vue b/components/gaoyia-parse/components/wxParseTemplate3.vue new file mode 100644 index 0000000..b0943f8 --- /dev/null +++ b/components/gaoyia-parse/components/wxParseTemplate3.vue @@ -0,0 +1,88 @@ + + + diff --git a/components/gaoyia-parse/components/wxParseTemplate4.vue b/components/gaoyia-parse/components/wxParseTemplate4.vue new file mode 100644 index 0000000..8a43756 --- /dev/null +++ b/components/gaoyia-parse/components/wxParseTemplate4.vue @@ -0,0 +1,88 @@ + + + diff --git a/components/gaoyia-parse/components/wxParseTemplate5.vue b/components/gaoyia-parse/components/wxParseTemplate5.vue new file mode 100644 index 0000000..0c0993e --- /dev/null +++ b/components/gaoyia-parse/components/wxParseTemplate5.vue @@ -0,0 +1,88 @@ + + + diff --git a/components/gaoyia-parse/components/wxParseTemplate6.vue b/components/gaoyia-parse/components/wxParseTemplate6.vue new file mode 100644 index 0000000..0dca28a --- /dev/null +++ b/components/gaoyia-parse/components/wxParseTemplate6.vue @@ -0,0 +1,88 @@ + + + diff --git a/components/gaoyia-parse/components/wxParseTemplate7.vue b/components/gaoyia-parse/components/wxParseTemplate7.vue new file mode 100644 index 0000000..b62acaf --- /dev/null +++ b/components/gaoyia-parse/components/wxParseTemplate7.vue @@ -0,0 +1,88 @@ + + + diff --git a/components/gaoyia-parse/components/wxParseTemplate8.vue b/components/gaoyia-parse/components/wxParseTemplate8.vue new file mode 100644 index 0000000..f6fa037 --- /dev/null +++ b/components/gaoyia-parse/components/wxParseTemplate8.vue @@ -0,0 +1,88 @@ + + + diff --git a/components/gaoyia-parse/components/wxParseTemplate9.vue b/components/gaoyia-parse/components/wxParseTemplate9.vue new file mode 100644 index 0000000..47ac81a --- /dev/null +++ b/components/gaoyia-parse/components/wxParseTemplate9.vue @@ -0,0 +1,88 @@ + + + diff --git a/components/gaoyia-parse/components/wxParseVideo.vue b/components/gaoyia-parse/components/wxParseVideo.vue new file mode 100644 index 0000000..7d05285 --- /dev/null +++ b/components/gaoyia-parse/components/wxParseVideo.vue @@ -0,0 +1,15 @@ + + + diff --git a/components/gaoyia-parse/libs/html2json.js b/components/gaoyia-parse/libs/html2json.js new file mode 100644 index 0000000..0927382 --- /dev/null +++ b/components/gaoyia-parse/libs/html2json.js @@ -0,0 +1,261 @@ +/** + * html2Json 改造来自: https://github.com/Jxck/html2json + * + * + * author: Di (微信小程序开发工程师) + * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com) + * 垂直微信小程序开发交流社区 + * + * github地址: https://github.com/icindy/wxParse + * + * for: 微信小程序富文本解析 + * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184 + */ + +import wxDiscode from './wxDiscode'; +import HTMLParser from './htmlparser'; + +function makeMap(str) { + const obj = {}; + const items = str.split(','); + for (let i = 0; i < items.length; i += 1) obj[items[i]] = true; + return obj; +} + +// Block Elements - HTML 5 +const block = makeMap('br,code,address,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,ins,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video'); + +// Inline Elements - HTML 5 +const inline = makeMap('a,abbr,acronym,applet,b,basefont,bdo,big,button,cite,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var'); + +// Elements that you can, intentionally, leave open +// (and which close themselves) +const closeSelf = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr'); + +function removeDOCTYPE(html) { + const isDocument = /([^]*)<\/body>/.test(html); + return isDocument ? RegExp.$1 : html; +} + +function trimHtml(html) { + return html + .replace(//gi, '') + .replace(/\/\*.*?\*\//gi, '') + .replace(/[ ]+/gi, '') + .replace(//gi, ''); +} + +function getScreenInfo() { + const screen = {}; + wx.getSystemInfo({ + success: (res) => { + screen.width = res.windowWidth; + screen.height = res.windowHeight; + }, + }); + return screen; +} + +function html2json(html, customHandler, imageProp, host) { + // 处理字符串 + html = removeDOCTYPE(html); + html = trimHtml(html); + html = wxDiscode.strDiscode(html); + // 生成node节点 + const bufArray = []; + const results = { + nodes: [], + imageUrls: [], + }; + + const screen = getScreenInfo(); + function Node(tag) { + this.node = 'element'; + this.tag = tag; + + this.$screen = screen; + } + + HTMLParser(html, { + start(tag, attrs, unary) { + // node for this element + const node = new Node(tag); + + if (bufArray.length !== 0) { + const parent = bufArray[0]; + if (parent.nodes === undefined) { + parent.nodes = []; + } + } + + if (block[tag]) { + node.tagType = 'block'; + } else if (inline[tag]) { + node.tagType = 'inline'; + } else if (closeSelf[tag]) { + node.tagType = 'closeSelf'; + } + + node.attr = attrs.reduce((pre, attr) => { + const { name } = attr; + let { value } = attr; + if (name === 'class') { + node.classStr = value; + } + // has multi attibutes + // make it array of attribute + if (name === 'style') { + node.styleStr = value; + } + if (value.match(/ /)) { + value = value.split(' '); + } + + // if attr already exists + // merge it + if (pre[name]) { + if (Array.isArray(pre[name])) { + // already array, push to last + pre[name].push(value); + } else { + // single value, make it array + pre[name] = [pre[name], value]; + } + } else { + // not exist, put it + pre[name] = value; + } + + return pre; + }, {}); + + // 优化样式相关属性 + if (node.classStr) { + node.classStr += ` ${node.tag}`; + } else { + node.classStr = node.tag; + } + if (node.tagType === 'inline') { + node.classStr += ' inline'; + } + + // 对img添加额外数据 + if (node.tag === 'img') { + let imgUrl = node.attr.src; + imgUrl = wxDiscode.urlToHttpUrl(imgUrl, imageProp.domain); + Object.assign(node.attr, imageProp, { + src: imgUrl || '', + }); + if (imgUrl) { + results.imageUrls.push(imgUrl); + } + } + + // 处理a标签属性 + if (node.tag === 'a') { + node.attr.href = node.attr.href || ''; + } + + // 处理font标签样式属性 + if (node.tag === 'font') { + const fontSize = [ + 'x-small', + 'small', + 'medium', + 'large', + 'x-large', + 'xx-large', + '-webkit-xxx-large', + ]; + const styleAttrs = { + color: 'color', + face: 'font-family', + size: 'font-size', + }; + if (!node.styleStr) node.styleStr = ''; + Object.keys(styleAttrs).forEach((key) => { + if (node.attr[key]) { + const value = key === 'size' ? fontSize[node.attr[key] - 1] : node.attr[key]; + node.styleStr += `${styleAttrs[key]}: ${value};`; + } + }); + } + + // 临时记录source资源 + if (node.tag === 'source') { + results.source = node.attr.src; + } + + if (customHandler.start) { + customHandler.start(node, results); + } + + if (unary) { + // if this tag doesn't have end tag + // like + // add to parents + const parent = bufArray[0] || results; + if (parent.nodes === undefined) { + parent.nodes = []; + } + parent.nodes.push(node); + } else { + bufArray.unshift(node); + } + }, + end(tag) { + // merge into parent tag + const node = bufArray.shift(); + if (node.tag !== tag) { + console.error('invalid state: mismatch end tag'); + } + + // 当有缓存source资源时于于video补上src资源 + if (node.tag === 'video' && results.source) { + node.attr.src = results.source; + delete results.source; + } + + if (customHandler.end) { + customHandler.end(node, results); + } + + if (bufArray.length === 0) { + results.nodes.push(node); + } else { + const parent = bufArray[0]; + if (!parent.nodes) { + parent.nodes = []; + } + parent.nodes.push(node); + } + }, + chars(text) { + if (!text.trim()) return; + + const node = { + node: 'text', + text, + }; + + if (customHandler.chars) { + customHandler.chars(node, results); + } + + if (bufArray.length === 0) { + results.nodes.push(node); + } else { + const parent = bufArray[0]; + if (parent.nodes === undefined) { + parent.nodes = []; + } + parent.nodes.push(node); + } + }, + }); + + return results; +} + +export default html2json; diff --git a/components/gaoyia-parse/libs/htmlparser.js b/components/gaoyia-parse/libs/htmlparser.js new file mode 100644 index 0000000..2939da3 --- /dev/null +++ b/components/gaoyia-parse/libs/htmlparser.js @@ -0,0 +1,156 @@ +/** + * + * htmlParser改造自: https://github.com/blowsie/Pure-JavaScript-HTML5-Parser + * + * author: Di (微信小程序开发工程师) + * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com) + * 垂直微信小程序开发交流社区 + * + * github地址: https://github.com/icindy/wxParse + * + * for: 微信小程序富文本解析 + * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184 + */ +// Regular Expressions for parsing tags and attributes + +const startTag = /^<([-A-Za-z0-9_]+)((?:\s+[a-zA-Z0-9_:][-a-zA-Z0-9_:.]*(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/; +const endTag = /^<\/([-A-Za-z0-9_]+)[^>]*>/; +const attr = /([a-zA-Z0-9_:][-a-zA-Z0-9_:.]*)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g; + +function makeMap(str) { + const obj = {}; + const items = str.split(','); + for (let i = 0; i < items.length; i += 1) obj[items[i]] = true; + return obj; +} + +// Empty Elements - HTML 5 +const empty = makeMap('area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr'); + +// Block Elements - HTML 5 +const block = makeMap('address,code,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,ins,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video'); + +// Inline Elements - HTML 5 +const inline = makeMap('a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var'); + +// Elements that you can, intentionally, leave open +// (and which close themselves) +const closeSelf = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr'); + +// Attributes that have their values filled in disabled="disabled" +const fillAttrs = makeMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected'); + +function HTMLParser(html, handler) { + let index; + let chars; + let match; + let last = html; + const stack = []; + + stack.last = () => stack[stack.length - 1]; + + function parseEndTag(tag, tagName) { + // If no tag name is provided, clean shop + let pos; + if (!tagName) { + pos = 0; + } else { + // Find the closest opened tag of the same type + tagName = tagName.toLowerCase(); + for (pos = stack.length - 1; pos >= 0; pos -= 1) { + if (stack[pos] === tagName) break; + } + } + if (pos >= 0) { + // Close all the open elements, up the stack + for (let i = stack.length - 1; i >= pos; i -= 1) { + if (handler.end) handler.end(stack[i]); + } + + // Remove the open elements from the stack + stack.length = pos; + } + } + + function parseStartTag(tag, tagName, rest, unary) { + tagName = tagName.toLowerCase(); + + if (block[tagName]) { + while (stack.last() && inline[stack.last()]) { + parseEndTag('', stack.last()); + } + } + + if (closeSelf[tagName] && stack.last() === tagName) { + parseEndTag('', tagName); + } + + unary = empty[tagName] || !!unary; + + if (!unary) stack.push(tagName); + + if (handler.start) { + const attrs = []; + + rest.replace(attr, function genAttr(matches, name) { + const value = arguments[2] || arguments[3] || arguments[4] || (fillAttrs[name] ? name : ''); + + attrs.push({ + name, + value, + escaped: value.replace(/(^|[^\\])"/g, '$1\\"'), // " + }); + }); + + if (handler.start) { + handler.start(tagName, attrs, unary); + } + } + } + + while (html) { + chars = true; + + if (html.indexOf(' '); +// str = str.replace(/ | | /g, ' '); +// str = str.replace(/"|"|"/g, "\""); +// str = str.replace(/'|'|'/g, "'"); +// str = str.replace(/´|´|´/g, "´"); +// str = str.replace(/×|×|×/g, "×"); +// str = str.replace(/÷|÷|÷/g, "÷"); +// str = str.replace(/&|&|&/g, '&'); +// str = str.replace(/<|<|</g, '<'); +// str = str.replace(/>|>|>/g, '>'); + + + + +str = str.replace(/ | | /g, " "); +str = str.replace(/ | | /g, ''); +str = str.replace(/ | /g, ' '); +str = str.replace(/ | | /g, ''); +str = str.replace(/"|"|"/g, "\""); +str = str.replace(/"|'|'/g, "'"); +str = str.replace(/´|´|´/g, "´"); +str = str.replace(/×|×|×/g, "×"); +str = str.replace(/÷|÷|÷/g, "÷"); +str = str.replace(/&|&|&/g, '&'); +str = str.replace(/<|<|</g, '<'); +str = str.replace(/>|>|>/g, '>'); +return str; +} + +// HTML 支持的其他实体 +function strOtherDiscode(str) { +str = str.replace(/Œ|Œ|Œ/g, 'Œ'); +str = str.replace(/œ|œ|œ/g, 'œ'); +str = str.replace(/Š|Š|Š/g, 'Š'); +str = str.replace(/š|š|š/g, 'š'); +str = str.replace(/Ÿ|Ÿ|Ÿ/g, 'Ÿ'); +str = str.replace(/ƒ|ƒ|ƒ/g, 'ƒ'); +str = str.replace(/ˆ|ˆ|ˆ/g, 'ˆ'); +str = str.replace(/˜|˜|˜/g, '˜'); +str = str.replace(/ |$#8201;| /g, ''); +str = str.replace(/‌|‌|‌/g, ''); +str = str.replace(/‍|$#8205;|‍/g, ''); +str = str.replace(/‎|$#8206;|‎/g, ''); +str = str.replace(/‏|‏|‏/g, ''); +str = str.replace(/–|–|–/g, '–'); +str = str.replace(/—|—|—/g, '—'); +str = str.replace(/‘|‘|‘/g, '‘'); +str = str.replace(/’|’|’/g, '’'); +str = str.replace(/‚|‚|‚/g, '‚'); +str = str.replace(/“|“|“/g, '“'); +str = str.replace(/”|”|”/g, '”'); +str = str.replace(/„|„|„/g, '„'); +str = str.replace(/†|†|†/g, '†'); +str = str.replace(/‡|‡|‡/g, '‡'); +str = str.replace(/•|•|•/g, '•'); +str = str.replace(/…|…|…/g, '…'); +str = str.replace(/‰|‰|‰/g, '‰'); +str = str.replace(/′|′|′/g, '′'); +str = str.replace(/″|″|″/g, '″'); +str = str.replace(/‹|‹|‹/g, '‹'); +str = str.replace(/›|›|›/g, '›'); +str = str.replace(/‾|‾|‾/g, '‾'); +str = str.replace(/€|€|€/g, '€'); +str = str.replace(/™|™|™/g, '™'); +str = str.replace(/←|←|←/g, '←'); +str = str.replace(/↑|↑|↑/g, '↑'); +str = str.replace(/→|→|→/g, '→'); +str = str.replace(/↓|↓|↓/g, '↓'); +str = str.replace(/↔|↔|↔/g, '↔'); +str = str.replace(/↵|↵|↵/g, '↵'); +str = str.replace(/⌈|⌈|⌈/g, '⌈'); +str = str.replace(/⌉|⌉|⌉/g, '⌉'); +str = str.replace(/⌊|⌊|⌊/g, '⌊'); +str = str.replace(/⌋|⌋|⌋/g, '⌋'); +str = str.replace(/◊|◊|◊/g, '◊'); +str = str.replace(/♠|♠|♠/g, '♠'); +str = str.replace(/♣|♣|♣/g, '♣'); +str = str.replace(/♥|♥|♥/g, '♥'); +str = str.replace(/♦|♦|♦/g, '♦'); +return str; +} + +function strDiscode(str) { + str = strNumDiscode(str); + str = strGreeceDiscode(str); + str = strcharacterDiscode(str); + str = strOtherDiscode(str); + return str; +} + +function urlToHttpUrl(url, domain) { + if (/^\/\//.test(url)) { + return `https:${url}`; + } else if (/^\//.test(url)) { + return `https://${domain}${url}`; + } + return url; +} + +export default { + strDiscode, + urlToHttpUrl, +}; diff --git a/components/gaoyia-parse/parse.css b/components/gaoyia-parse/parse.css new file mode 100644 index 0000000..524a675 --- /dev/null +++ b/components/gaoyia-parse/parse.css @@ -0,0 +1,258 @@ +/** + * author: Di (微信小程序开发工程师) + * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com) + * 垂直微信小程序开发交流社区 + * + * github地址: https://github.com/icindy/wxParse + * + * for: 微信小程序富文本解析 + * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184 + */ +/** + * 请在全局下引入该文件,@import '/static/wxParse.css'; + */ +.wxParse { + user-select:none; + width: 100%; + font-family: Helvetica, "PingFangSC", 'Microsoft Yahei', '微软雅黑', Arial, sans-serif; + color: #333; + line-height: 1.5; + font-size: 1em; + text-align:justify;/* //左右两端对齐 */ +} +.wxParse view ,.wxParse uni-view{ + word-break: break-word; +} +.wxParse .p { + padding-bottom: 0.5em; + clear: both; + /* letter-spacing: 0;//字间距 */ +} +.wxParse .inline { + display: inline; + margin: 0; + padding: 0; +} + +.wxParse .div { + margin: 0; + padding: 0; + display: block; +} + +.wxParse .h1{ + font-size: 2em; + line-height: 1.2em; + margin: 0.67em 0; +} +.wxParse .h2{ + font-size: 1.5em; + margin: 0.83em 0; +} +.wxParse .h3{ + font-size: 1.17em; + margin: 1em 0; +} +.wxParse .h4{ + margin: 1.33em 0; +} +.wxParse .h5{ + font-size: 0.83em; + margin: 1.67em 0; +} +.wxParse .h6{ + font-size: 0.83em; + margin: 1.67em 0; +} + +.wxParse .h1, +.wxParse .h2, +.wxParse .h3, +.wxParse .h4, +.wxParse .h5, +.wxParse .h6, +.wxParse .b, +.wxParse .strong{ + font-weight: bolder; +} + +.wxParse .i, +.wxParse .cite, +.wxParse .em, +.wxParse .var, +.wxParse .address { + font-style: italic; +} +.wxParse .spaceshow{ + white-space: pre; +} +.wxParse .pre, +.wxParse .tt, +.wxParse .code, +.wxParse .kbd, +.wxParse .samp { + font-family: monospace; +} +.wxParse .pre { + overflow: auto; + background: #f5f5f5; + padding: 16upx; + white-space: pre; + margin: 1em 0upx; + font-size: 24upx; +} +.wxParse .code { + overflow: auto; + padding: 16upx; + white-space: pre; + margin: 1em 0upx; + background: #f5f5f5; + font-size: 24upx; +} + +.wxParse .big { + font-size: 1.17em; +} + +.wxParse .small, +.wxParse .sub, +.wxParse .sup { + font-size: 0.83em; +} + +.wxParse .sub { + vertical-align: sub; +} +.wxParse .sup { + vertical-align: super; +} + +.wxParse .s, +.wxParse .strike, +.wxParse .del { + text-decoration: line-through; +} + +.wxParse .strong, +.wxParse .text, +.wxParse .span, +.wxParse .s { + display: inline; +} + +.wxParse .a { + color: deepskyblue; +} + +.wxParse .video { + text-align: center; + margin: 22upx 0; +} + +.wxParse .video-video { + width: 100%; +} +.wxParse .uni-image{ + max-width: 100%; +} +.wxParse .img { + display: block; + max-width: 100%; + margin-bottom: 0em;/* //与p标签底部padding同时修改 */ + overflow: hidden; +} + +.wxParse .blockquote { + margin: 10upx 0; + padding: 22upx 0 22upx 22upx; + font-family: Courier, Calibri, "宋体"; + background: #f5f5f5; + border-left: 6upx solid #dbdbdb; +} +.wxParse .blockquote .p { + margin: 0; +} +.wxParse .ul, .wxParse .ol { + display: block; + margin: 1em 0; + padding-left: 2em; +} +.wxParse .ol { + list-style-type: disc; +} +.wxParse .ol { + list-style-type: decimal; +} +.wxParse .ol>weixin-parse-template,.wxParse .ul>weixin-parse-template { + display: list-item; + align-items: baseline; + text-align: match-parent; +} + +.wxParse .ol>.li,.wxParse .ul>.li { + display: list-item; + align-items: baseline; + text-align: match-parent; +} +.wxParse .ul .ul, .wxParse .ol .ul { + list-style-type: circle; +} +.wxParse .ol .ol .ul, .wxParse .ol .ul .ul, .wxParse .ul .ol .ul, .wxParse .ul .ul .ul { + list-style-type: square; +} + +.wxParse .u { + text-decoration: underline; +} +.wxParse .hide { + display: none; +} +.wxParse .del { + display: inline; +} +.wxParse .figure { + overflow: hidden; +} +.wxParse .tablebox{ + overflow: auto; + background-color: #f5f5f5; + background: #f5f5f5; + font-size: 13px; + padding: 8px; +} +.wxParse .table .table,.wxParse .table{ + border-collapse:collapse; + box-sizing: border-box; + /* 内边框 */ + /* width: 100%; */ + overflow: auto; + white-space: pre; +} +.wxParse .tbody{ + border-collapse:collapse; + box-sizing: border-box; + /* 内边框 */ + border: 1px solid #dadada; +} +.wxParse .table .thead, .wxParse .table .tfoot, .wxParse .table .th{ + border-collapse:collapse; + box-sizing: border-box; + background: #ececec; + font-weight: 40; +} +.wxParse .table .tr { + border-collapse:collapse; + box-sizing: border-box; + /* border: 2px solid #F0AD4E; */ + overflow:auto; +} +.wxParse .table .th, +.wxParse .table .td{ + border-collapse:collapse; + box-sizing: border-box; + border: 2upx solid #dadada; + overflow:auto; +} +.wxParse .audio, .wxParse .uni-audio-default{ + display: block; +} \ No newline at end of file diff --git a/components/gaoyia-parse/parse.vue b/components/gaoyia-parse/parse.vue new file mode 100644 index 0000000..f255166 --- /dev/null +++ b/components/gaoyia-parse/parse.vue @@ -0,0 +1,228 @@ + + + + + diff --git a/components/gbro-marquee/marquee.vue b/components/gbro-marquee/marquee.vue new file mode 100644 index 0000000..55b650e --- /dev/null +++ b/components/gbro-marquee/marquee.vue @@ -0,0 +1,510 @@ + + + + + diff --git a/components/lff-barrage/lff-barrage.vue b/components/lff-barrage/lff-barrage.vue new file mode 100644 index 0000000..99e6640 --- /dev/null +++ b/components/lff-barrage/lff-barrage.vue @@ -0,0 +1,286 @@ + + + + diff --git a/components/lff-barrage/markdown.md b/components/lff-barrage/markdown.md new file mode 100644 index 0000000..e709651 --- /dev/null +++ b/components/lff-barrage/markdown.md @@ -0,0 +1,15 @@ +#如何使用 +###js +```javascript +import lffBarrage from '@/components/lff-barrage/lff-barrage.vue' +components:{lffBarrage}, +methods:{ + colrdo(){ //插入一条弹幕 + this.$refs.lffBarrage.add({item:'你好呀小伙子'}); + } +} +``` +###HTML +```html + +``` \ No newline at end of file diff --git a/components/mpvue-citypicker/city-data/area.js b/components/mpvue-citypicker/city-data/area.js new file mode 100644 index 0000000..3f6bc67 --- /dev/null +++ b/components/mpvue-citypicker/city-data/area.js @@ -0,0 +1,10465 @@ +/* eslint-disable */ +var areaData = [ + [ + [{ + "label": "东城区", + "value": 3 + }, { + "label": "西城区", + "value": 4 + }, { + "label": "朝阳区", + "value": 5 + }, { + "label": "丰台区", + "value": 6 + }, { + "label": "石景山区", + "value": 7 + }, { + "label": "海淀区", + "value": 8 + }, { + "label": "门头沟区", + "value": 9 + }, { + "label": "房山区", + "value": 10 + }, { + "label": "通州区", + "value": 11 + }, { + "label": "顺义区", + "value": 12 + }, { + "label": "昌平区", + "value": 13 + }, { + "label": "大兴区", + "value": 14 + }, { + "label": "怀柔区", + "value": 15 + }, { + "label": "平谷区", + "value": 16 + }, { + "label": "密云县", + "value": 17 + }, { + "label": "延庆县", + "value": 18 + }] + ], + [ + [{ + "label": "和平区", + "value": 21 + }, { + "label": "河东区", + "value": 22 + }, { + "label": "河西区", + "value": 23 + }, { + "label": "南开区", + "value": 24 + }, { + "label": "河北区", + "value": 25 + }, { + "label": "红桥区", + "value": 26 + }, { + "label": "东丽区", + "value": 27 + }, { + "label": "西青区", + "value": 28 + }, { + "label": "津南区", + "value": 29 + }, { + "label": "北辰区", + "value": 30 + }, { + "label": "武清区", + "value": 31 + }, { + "label": "宝坻区", + "value": 32 + }, { + "label": "滨海新区", + "value": 33 + }, { + "label": "宁河县", + "value": 34 + }, { + "label": "静海县", + "value": 35 + }, { + "label": "蓟县", + "value": 36 + }] + ], + [ + [{ + "label": "长安区", + "value": 39 + }, { + "label": "桥西区", + "value": 40 + }, { + "label": "新华区", + "value": 41 + }, { + "label": "井陉矿区", + "value": 42 + }, { + "label": "裕华区", + "value": 43 + }, { + "label": "藁城区", + "value": 44 + }, { + "label": "鹿泉区", + "value": 45 + }, { + "label": "栾城区", + "value": 46 + }, { + "label": "井陉县", + "value": 47 + }, { + "label": "正定县", + "value": 48 + }, { + "label": "行唐县", + "value": 49 + }, { + "label": "灵寿县", + "value": 50 + }, { + "label": "高邑县", + "value": 51 + }, { + "label": "深泽县", + "value": 52 + }, { + "label": "赞皇县", + "value": 53 + }, { + "label": "无极县", + "value": 54 + }, { + "label": "平山县", + "value": 55 + }, { + "label": "元氏县", + "value": 56 + }, { + "label": "赵县", + "value": 57 + }, { + "label": "辛集市", + "value": 58 + }, { + "label": "晋州市", + "value": 59 + }, { + "label": "新乐市", + "value": 60 + }], + [{ + "label": "路南区", + "value": 62 + }, { + "label": "路北区", + "value": 63 + }, { + "label": "古冶区", + "value": 64 + }, { + "label": "开平区", + "value": 65 + }, { + "label": "丰南区", + "value": 66 + }, { + "label": "丰润区", + "value": 67 + }, { + "label": "曹妃甸区", + "value": 68 + }, { + "label": "滦县", + "value": 69 + }, { + "label": "滦南县", + "value": 70 + }, { + "label": "乐亭县", + "value": 71 + }, { + "label": "迁西县", + "value": 72 + }, { + "label": "玉田县", + "value": 73 + }, { + "label": "遵化市", + "value": 74 + }, { + "label": "迁安市", + "value": 75 + }], + [{ + "label": "海港区", + "value": 77 + }, { + "label": "山海关区", + "value": 78 + }, { + "label": "北戴河区", + "value": 79 + }, { + "label": "青龙满族自治县", + "value": 80 + }, { + "label": "昌黎县", + "value": 81 + }, { + "label": "抚宁县", + "value": 82 + }, { + "label": "卢龙县", + "value": 83 + }], + [{ + "label": "邯山区", + "value": 85 + }, { + "label": "丛台区", + "value": 86 + }, { + "label": "复兴区", + "value": 87 + }, { + "label": "峰峰矿区", + "value": 88 + }, { + "label": "邯郸县", + "value": 89 + }, { + "label": "临漳县", + "value": 90 + }, { + "label": "成安县", + "value": 91 + }, { + "label": "大名县", + "value": 92 + }, { + "label": "涉县", + "value": 93 + }, { + "label": "磁县", + "value": 94 + }, { + "label": "肥乡县", + "value": 95 + }, { + "label": "永年县", + "value": 96 + }, { + "label": "邱县", + "value": 97 + }, { + "label": "鸡泽县", + "value": 98 + }, { + "label": "广平县", + "value": 99 + }, { + "label": "馆陶县", + "value": 100 + }, { + "label": "魏县", + "value": 101 + }, { + "label": "曲周县", + "value": 102 + }, { + "label": "武安市", + "value": 103 + }], + [{ + "label": "桥东区", + "value": 105 + }, { + "label": "桥西区", + "value": 106 + }, { + "label": "邢台县", + "value": 107 + }, { + "label": "临城县", + "value": 108 + }, { + "label": "内丘县", + "value": 109 + }, { + "label": "柏乡县", + "value": 110 + }, { + "label": "隆尧县", + "value": 111 + }, { + "label": "任县", + "value": 112 + }, { + "label": "南和县", + "value": 113 + }, { + "label": "宁晋县", + "value": 114 + }, { + "label": "巨鹿县", + "value": 115 + }, { + "label": "新河县", + "value": 116 + }, { + "label": "广宗县", + "value": 117 + }, { + "label": "平乡县", + "value": 118 + }, { + "label": "威县", + "value": 119 + }, { + "label": "清河县", + "value": 120 + }, { + "label": "临西县", + "value": 121 + }, { + "label": "南宫市", + "value": 122 + }, { + "label": "沙河市", + "value": 123 + }], + [{ + "label": "新市区", + "value": 125 + }, { + "label": "北市区", + "value": 126 + }, { + "label": "南市区", + "value": 127 + }, { + "label": "满城县", + "value": 128 + }, { + "label": "清苑县", + "value": 129 + }, { + "label": "涞水县", + "value": 130 + }, { + "label": "阜平县", + "value": 131 + }, { + "label": "徐水县", + "value": 132 + }, { + "label": "定兴县", + "value": 133 + }, { + "label": "唐县", + "value": 134 + }, { + "label": "高阳县", + "value": 135 + }, { + "label": "容城县", + "value": 136 + }, { + "label": "涞源县", + "value": 137 + }, { + "label": "望都县", + "value": 138 + }, { + "label": "安新县", + "value": 139 + }, { + "label": "易县", + "value": 140 + }, { + "label": "曲阳县", + "value": 141 + }, { + "label": "蠡县", + "value": 142 + }, { + "label": "顺平县", + "value": 143 + }, { + "label": "博野县", + "value": 144 + }, { + "label": "雄县", + "value": 145 + }, { + "label": "涿州市", + "value": 146 + }, { + "label": "定州市", + "value": 147 + }, { + "label": "安国市", + "value": 148 + }, { + "label": "高碑店市", + "value": 149 + }], + [{ + "label": "桥东区", + "value": 151 + }, { + "label": "桥西区", + "value": 152 + }, { + "label": "宣化区", + "value": 153 + }, { + "label": "下花园区", + "value": 154 + }, { + "label": "宣化县", + "value": 155 + }, { + "label": "张北县", + "value": 156 + }, { + "label": "康保县", + "value": 157 + }, { + "label": "沽源县", + "value": 158 + }, { + "label": "尚义县", + "value": 159 + }, { + "label": "蔚县", + "value": 160 + }, { + "label": "阳原县", + "value": 161 + }, { + "label": "怀安县", + "value": 162 + }, { + "label": "万全县", + "value": 163 + }, { + "label": "怀来县", + "value": 164 + }, { + "label": "涿鹿县", + "value": 165 + }, { + "label": "赤城县", + "value": 166 + }, { + "label": "崇礼县", + "value": 167 + }], + [{ + "label": "双桥区", + "value": 169 + }, { + "label": "双滦区", + "value": 170 + }, { + "label": "鹰手营子矿区", + "value": 171 + }, { + "label": "承德县", + "value": 172 + }, { + "label": "兴隆县", + "value": 173 + }, { + "label": "平泉县", + "value": 174 + }, { + "label": "滦平县", + "value": 175 + }, { + "label": "隆化县", + "value": 176 + }, { + "label": "丰宁满族自治县", + "value": 177 + }, { + "label": "宽城满族自治县", + "value": 178 + }, { + "label": "围场满族蒙古族自治县", + "value": 179 + }], + [{ + "label": "新华区", + "value": 181 + }, { + "label": "运河区", + "value": 182 + }, { + "label": "沧县", + "value": 183 + }, { + "label": "青县", + "value": 184 + }, { + "label": "东光县", + "value": 185 + }, { + "label": "海兴县", + "value": 186 + }, { + "label": "盐山县", + "value": 187 + }, { + "label": "肃宁县", + "value": 188 + }, { + "label": "南皮县", + "value": 189 + }, { + "label": "吴桥县", + "value": 190 + }, { + "label": "献县", + "value": 191 + }, { + "label": "孟村回族自治县", + "value": 192 + }, { + "label": "泊头市", + "value": 193 + }, { + "label": "任丘市", + "value": 194 + }, { + "label": "黄骅市", + "value": 195 + }, { + "label": "河间市", + "value": 196 + }], + [{ + "label": "安次区", + "value": 198 + }, { + "label": "广阳区", + "value": 199 + }, { + "label": "固安县", + "value": 200 + }, { + "label": "永清县", + "value": 201 + }, { + "label": "香河县", + "value": 202 + }, { + "label": "大城县", + "value": 203 + }, { + "label": "文安县", + "value": 204 + }, { + "label": "大厂回族自治县", + "value": 205 + }, { + "label": "霸州市", + "value": 206 + }, { + "label": "三河市", + "value": 207 + }], + [{ + "label": "桃城区", + "value": 209 + }, { + "label": "枣强县", + "value": 210 + }, { + "label": "武邑县", + "value": 211 + }, { + "label": "武强县", + "value": 212 + }, { + "label": "饶阳县", + "value": 213 + }, { + "label": "安平县", + "value": 214 + }, { + "label": "故城县", + "value": 215 + }, { + "label": "景县", + "value": 216 + }, { + "label": "阜城县", + "value": 217 + }, { + "label": "冀州市", + "value": 218 + }, { + "label": "深州市", + "value": 219 + }] + ], + [ + [{ + "label": "小店区", + "value": 222 + }, { + "label": "迎泽区", + "value": 223 + }, { + "label": "杏花岭区", + "value": 224 + }, { + "label": "尖草坪区", + "value": 225 + }, { + "label": "万柏林区", + "value": 226 + }, { + "label": "晋源区", + "value": 227 + }, { + "label": "清徐县", + "value": 228 + }, { + "label": "阳曲县", + "value": 229 + }, { + "label": "娄烦县", + "value": 230 + }, { + "label": "古交市", + "value": 231 + }], + [{ + "label": "城区", + "value": 233 + }, { + "label": "矿区", + "value": 234 + }, { + "label": "南郊区", + "value": 235 + }, { + "label": "新荣区", + "value": 236 + }, { + "label": "阳高县", + "value": 237 + }, { + "label": "天镇县", + "value": 238 + }, { + "label": "广灵县", + "value": 239 + }, { + "label": "灵丘县", + "value": 240 + }, { + "label": "浑源县", + "value": 241 + }, { + "label": "左云县", + "value": 242 + }, { + "label": "大同县", + "value": 243 + }], + [{ + "label": "城区", + "value": 245 + }, { + "label": "矿区", + "value": 246 + }, { + "label": "郊区", + "value": 247 + }, { + "label": "平定县", + "value": 248 + }, { + "label": "盂县", + "value": 249 + }], + [{ + "label": "城区", + "value": 251 + }, { + "label": "郊区", + "value": 252 + }, { + "label": "长治县", + "value": 253 + }, { + "label": "襄垣县", + "value": 254 + }, { + "label": "屯留县", + "value": 255 + }, { + "label": "平顺县", + "value": 256 + }, { + "label": "黎城县", + "value": 257 + }, { + "label": "壶关县", + "value": 258 + }, { + "label": "长子县", + "value": 259 + }, { + "label": "武乡县", + "value": 260 + }, { + "label": "沁县", + "value": 261 + }, { + "label": "沁源县", + "value": 262 + }, { + "label": "潞城市", + "value": 263 + }], + [{ + "label": "城区", + "value": 265 + }, { + "label": "沁水县", + "value": 266 + }, { + "label": "阳城县", + "value": 267 + }, { + "label": "陵川县", + "value": 268 + }, { + "label": "泽州县", + "value": 269 + }, { + "label": "高平市", + "value": 270 + }], + [{ + "label": "朔城区", + "value": 272 + }, { + "label": "平鲁区", + "value": 273 + }, { + "label": "山阴县", + "value": 274 + }, { + "label": "应县", + "value": 275 + }, { + "label": "右玉县", + "value": 276 + }, { + "label": "怀仁县", + "value": 277 + }], + [{ + "label": "榆次区", + "value": 279 + }, { + "label": "榆社县", + "value": 280 + }, { + "label": "左权县", + "value": 281 + }, { + "label": "和顺县", + "value": 282 + }, { + "label": "昔阳县", + "value": 283 + }, { + "label": "寿阳县", + "value": 284 + }, { + "label": "太谷县", + "value": 285 + }, { + "label": "祁县", + "value": 286 + }, { + "label": "平遥县", + "value": 287 + }, { + "label": "灵石县", + "value": 288 + }, { + "label": "介休市", + "value": 289 + }], + [{ + "label": "盐湖区", + "value": 291 + }, { + "label": "临猗县", + "value": 292 + }, { + "label": "万荣县", + "value": 293 + }, { + "label": "闻喜县", + "value": 294 + }, { + "label": "稷山县", + "value": 295 + }, { + "label": "新绛县", + "value": 296 + }, { + "label": "绛县", + "value": 297 + }, { + "label": "垣曲县", + "value": 298 + }, { + "label": "夏县", + "value": 299 + }, { + "label": "平陆县", + "value": 300 + }, { + "label": "芮城县", + "value": 301 + }, { + "label": "永济市", + "value": 302 + }, { + "label": "河津市", + "value": 303 + }], + [{ + "label": "忻府区", + "value": 305 + }, { + "label": "定襄县", + "value": 306 + }, { + "label": "五台县", + "value": 307 + }, { + "label": "代县", + "value": 308 + }, { + "label": "繁峙县", + "value": 309 + }, { + "label": "宁武县", + "value": 310 + }, { + "label": "静乐县", + "value": 311 + }, { + "label": "神池县", + "value": 312 + }, { + "label": "五寨县", + "value": 313 + }, { + "label": "岢岚县", + "value": 314 + }, { + "label": "河曲县", + "value": 315 + }, { + "label": "保德县", + "value": 316 + }, { + "label": "偏关县", + "value": 317 + }, { + "label": "原平市", + "value": 318 + }], + [{ + "label": "尧都区", + "value": 320 + }, { + "label": "曲沃县", + "value": 321 + }, { + "label": "翼城县", + "value": 322 + }, { + "label": "襄汾县", + "value": 323 + }, { + "label": "洪洞县", + "value": 324 + }, { + "label": "古县", + "value": 325 + }, { + "label": "安泽县", + "value": 326 + }, { + "label": "浮山县", + "value": 327 + }, { + "label": "吉县", + "value": 328 + }, { + "label": "乡宁县", + "value": 329 + }, { + "label": "大宁县", + "value": 330 + }, { + "label": "隰县", + "value": 331 + }, { + "label": "永和县", + "value": 332 + }, { + "label": "蒲县", + "value": 333 + }, { + "label": "汾西县", + "value": 334 + }, { + "label": "侯马市", + "value": 335 + }, { + "label": "霍州市", + "value": 336 + }], + [{ + "label": "离石区", + "value": 338 + }, { + "label": "文水县", + "value": 339 + }, { + "label": "交城县", + "value": 340 + }, { + "label": "兴县", + "value": 341 + }, { + "label": "临县", + "value": 342 + }, { + "label": "柳林县", + "value": 343 + }, { + "label": "石楼县", + "value": 344 + }, { + "label": "岚县", + "value": 345 + }, { + "label": "方山县", + "value": 346 + }, { + "label": "中阳县", + "value": 347 + }, { + "label": "交口县", + "value": 348 + }, { + "label": "孝义市", + "value": 349 + }, { + "label": "汾阳市", + "value": 350 + }] + ], + [ + [{ + "label": "新城区", + "value": 353 + }, { + "label": "回民区", + "value": 354 + }, { + "label": "玉泉区", + "value": 355 + }, { + "label": "赛罕区", + "value": 356 + }, { + "label": "土默特左旗", + "value": 357 + }, { + "label": "托克托县", + "value": 358 + }, { + "label": "和林格尔县", + "value": 359 + }, { + "label": "清水河县", + "value": 360 + }, { + "label": "武川县", + "value": 361 + }], + [{ + "label": "东河区", + "value": 363 + }, { + "label": "昆都仑区", + "value": 364 + }, { + "label": "青山区", + "value": 365 + }, { + "label": "石拐区", + "value": 366 + }, { + "label": "白云鄂博矿区", + "value": 367 + }, { + "label": "九原区", + "value": 368 + }, { + "label": "土默特右旗", + "value": 369 + }, { + "label": "固阳县", + "value": 370 + }, { + "label": "达尔罕茂明安联合旗", + "value": 371 + }], + [{ + "label": "海勃湾区", + "value": 373 + }, { + "label": "海南区", + "value": 374 + }, { + "label": "乌达区", + "value": 375 + }], + [{ + "label": "红山区", + "value": 377 + }, { + "label": "元宝山区", + "value": 378 + }, { + "label": "松山区", + "value": 379 + }, { + "label": "阿鲁科尔沁旗", + "value": 380 + }, { + "label": "巴林左旗", + "value": 381 + }, { + "label": "巴林右旗", + "value": 382 + }, { + "label": "林西县", + "value": 383 + }, { + "label": "克什克腾旗", + "value": 384 + }, { + "label": "翁牛特旗", + "value": 385 + }, { + "label": "喀喇沁旗", + "value": 386 + }, { + "label": "宁城县", + "value": 387 + }, { + "label": "敖汉旗", + "value": 388 + }], + [{ + "label": "科尔沁区", + "value": 390 + }, { + "label": "科尔沁左翼中旗", + "value": 391 + }, { + "label": "科尔沁左翼后旗", + "value": 392 + }, { + "label": "开鲁县", + "value": 393 + }, { + "label": "库伦旗", + "value": 394 + }, { + "label": "奈曼旗", + "value": 395 + }, { + "label": "扎鲁特旗", + "value": 396 + }, { + "label": "霍林郭勒市", + "value": 397 + }], + [{ + "label": "东胜区", + "value": 399 + }, { + "label": "达拉特旗", + "value": 400 + }, { + "label": "准格尔旗", + "value": 401 + }, { + "label": "鄂托克前旗", + "value": 402 + }, { + "label": "鄂托克旗", + "value": 403 + }, { + "label": "杭锦旗", + "value": 404 + }, { + "label": "乌审旗", + "value": 405 + }, { + "label": "伊金霍洛旗", + "value": 406 + }], + [{ + "label": "海拉尔区", + "value": 408 + }, { + "label": "扎赉诺尔区", + "value": 409 + }, { + "label": "阿荣旗", + "value": 410 + }, { + "label": "莫力达瓦达斡尔族自治旗", + "value": 411 + }, { + "label": "鄂伦春自治旗", + "value": 412 + }, { + "label": "鄂温克族自治旗", + "value": 413 + }, { + "label": "陈巴尔虎旗", + "value": 414 + }, { + "label": "新巴尔虎左旗", + "value": 415 + }, { + "label": "新巴尔虎右旗", + "value": 416 + }, { + "label": "满洲里市", + "value": 417 + }, { + "label": "牙克石市", + "value": 418 + }, { + "label": "扎兰屯市", + "value": 419 + }, { + "label": "额尔古纳市", + "value": 420 + }, { + "label": "根河市", + "value": 421 + }], + [{ + "label": "临河区", + "value": 423 + }, { + "label": "五原县", + "value": 424 + }, { + "label": "磴口县", + "value": 425 + }, { + "label": "乌拉特前旗", + "value": 426 + }, { + "label": "乌拉特中旗", + "value": 427 + }, { + "label": "乌拉特后旗", + "value": 428 + }, { + "label": "杭锦后旗", + "value": 429 + }], + [{ + "label": "集宁区", + "value": 431 + }, { + "label": "卓资县", + "value": 432 + }, { + "label": "化德县", + "value": 433 + }, { + "label": "商都县", + "value": 434 + }, { + "label": "兴和县", + "value": 435 + }, { + "label": "凉城县", + "value": 436 + }, { + "label": "察哈尔右翼前旗", + "value": 437 + }, { + "label": "察哈尔右翼中旗", + "value": 438 + }, { + "label": "察哈尔右翼后旗", + "value": 439 + }, { + "label": "四子王旗", + "value": 440 + }, { + "label": "丰镇市", + "value": 441 + }], + [{ + "label": "乌兰浩特市", + "value": 443 + }, { + "label": "阿尔山市", + "value": 444 + }, { + "label": "科尔沁右翼前旗", + "value": 445 + }, { + "label": "科尔沁右翼中旗", + "value": 446 + }, { + "label": "扎赉特旗", + "value": 447 + }, { + "label": "突泉县", + "value": 448 + }], + [{ + "label": "二连浩特市", + "value": 450 + }, { + "label": "锡林浩特市", + "value": 451 + }, { + "label": "阿巴嘎旗", + "value": 452 + }, { + "label": "苏尼特左旗", + "value": 453 + }, { + "label": "苏尼特右旗", + "value": 454 + }, { + "label": "东乌珠穆沁旗", + "value": 455 + }, { + "label": "西乌珠穆沁旗", + "value": 456 + }, { + "label": "太仆寺旗", + "value": 457 + }, { + "label": "镶黄旗", + "value": 458 + }, { + "label": "正镶白旗", + "value": 459 + }, { + "label": "正蓝旗", + "value": 460 + }, { + "label": "多伦县", + "value": 461 + }], + [{ + "label": "阿拉善左旗", + "value": 463 + }, { + "label": "阿拉善右旗", + "value": 464 + }, { + "label": "额济纳旗", + "value": 465 + }] + ], + [ + [{ + "label": "和平区", + "value": 468 + }, { + "label": "沈河区", + "value": 469 + }, { + "label": "大东区", + "value": 470 + }, { + "label": "皇姑区", + "value": 471 + }, { + "label": "铁西区", + "value": 472 + }, { + "label": "苏家屯区", + "value": 473 + }, { + "label": "浑南区", + "value": 474 + }, { + "label": "沈北新区", + "value": 475 + }, { + "label": "于洪区", + "value": 476 + }, { + "label": "辽中县", + "value": 477 + }, { + "label": "康平县", + "value": 478 + }, { + "label": "法库县", + "value": 479 + }, { + "label": "新民市", + "value": 480 + }], + [{ + "label": "中山区", + "value": 482 + }, { + "label": "西岗区", + "value": 483 + }, { + "label": "沙河口区", + "value": 484 + }, { + "label": "甘井子区", + "value": 485 + }, { + "label": "旅顺口区", + "value": 486 + }, { + "label": "金州区", + "value": 487 + }, { + "label": "长海县", + "value": 488 + }, { + "label": "瓦房店市", + "value": 489 + }, { + "label": "普兰店市", + "value": 490 + }, { + "label": "庄河市", + "value": 491 + }], + [{ + "label": "铁东区", + "value": 493 + }, { + "label": "铁西区", + "value": 494 + }, { + "label": "立山区", + "value": 495 + }, { + "label": "千山区", + "value": 496 + }, { + "label": "台安县", + "value": 497 + }, { + "label": "岫岩满族自治县", + "value": 498 + }, { + "label": "海城市", + "value": 499 + }], + [{ + "label": "新抚区", + "value": 501 + }, { + "label": "东洲区", + "value": 502 + }, { + "label": "望花区", + "value": 503 + }, { + "label": "顺城区", + "value": 504 + }, { + "label": "抚顺县", + "value": 505 + }, { + "label": "新宾满族自治县", + "value": 506 + }, { + "label": "清原满族自治县", + "value": 507 + }], + [{ + "label": "平山区", + "value": 509 + }, { + "label": "溪湖区", + "value": 510 + }, { + "label": "明山区", + "value": 511 + }, { + "label": "南芬区", + "value": 512 + }, { + "label": "本溪满族自治县", + "value": 513 + }, { + "label": "桓仁满族自治县", + "value": 514 + }], + [{ + "label": "元宝区", + "value": 516 + }, { + "label": "振兴区", + "value": 517 + }, { + "label": "振安区", + "value": 518 + }, { + "label": "宽甸满族自治县", + "value": 519 + }, { + "label": "东港市", + "value": 520 + }, { + "label": "凤城市", + "value": 521 + }], + [{ + "label": "古塔区", + "value": 523 + }, { + "label": "凌河区", + "value": 524 + }, { + "label": "太和区", + "value": 525 + }, { + "label": "黑山县", + "value": 526 + }, { + "label": "义县", + "value": 527 + }, { + "label": "凌海市", + "value": 528 + }, { + "label": "北镇市", + "value": 529 + }], + [{ + "label": "站前区", + "value": 531 + }, { + "label": "西市区", + "value": 532 + }, { + "label": "鲅鱼圈区", + "value": 533 + }, { + "label": "老边区", + "value": 534 + }, { + "label": "盖州市", + "value": 535 + }, { + "label": "大石桥市", + "value": 536 + }], + [{ + "label": "海州区", + "value": 538 + }, { + "label": "新邱区", + "value": 539 + }, { + "label": "太平区", + "value": 540 + }, { + "label": "清河门区", + "value": 541 + }, { + "label": "细河区", + "value": 542 + }, { + "label": "阜新蒙古族自治县", + "value": 543 + }, { + "label": "彰武县", + "value": 544 + }], + [{ + "label": "白塔区", + "value": 546 + }, { + "label": "文圣区", + "value": 547 + }, { + "label": "宏伟区", + "value": 548 + }, { + "label": "弓长岭区", + "value": 549 + }, { + "label": "太子河区", + "value": 550 + }, { + "label": "辽阳县", + "value": 551 + }, { + "label": "灯塔市", + "value": 552 + }], + [{ + "label": "双台子区", + "value": 554 + }, { + "label": "兴隆台区", + "value": 555 + }, { + "label": "大洼县", + "value": 556 + }, { + "label": "盘山县", + "value": 557 + }], + [{ + "label": "银州区", + "value": 559 + }, { + "label": "清河区", + "value": 560 + }, { + "label": "铁岭县", + "value": 561 + }, { + "label": "西丰县", + "value": 562 + }, { + "label": "昌图县", + "value": 563 + }, { + "label": "调兵山市", + "value": 564 + }, { + "label": "开原市", + "value": 565 + }], + [{ + "label": "双塔区", + "value": 567 + }, { + "label": "龙城区", + "value": 568 + }, { + "label": "朝阳县", + "value": 569 + }, { + "label": "建平县", + "value": 570 + }, { + "label": "喀喇沁左翼蒙古族自治县", + "value": 571 + }, { + "label": "北票市", + "value": 572 + }, { + "label": "凌源市", + "value": 573 + }], + [{ + "label": "连山区", + "value": 575 + }, { + "label": "龙港区", + "value": 576 + }, { + "label": "南票区", + "value": 577 + }, { + "label": "绥中县", + "value": 578 + }, { + "label": "建昌县", + "value": 579 + }, { + "label": "兴城市", + "value": 580 + }], + [{ + "label": "金州新区", + "value": 582 + }, { + "label": "普湾新区", + "value": 583 + }, { + "label": "保税区", + "value": 584 + }] + ], + [ + [{ + "label": "南关区", + "value": 587 + }, { + "label": "宽城区", + "value": 588 + }, { + "label": "朝阳区", + "value": 589 + }, { + "label": "二道区", + "value": 590 + }, { + "label": "绿园区", + "value": 591 + }, { + "label": "双阳区", + "value": 592 + }, { + "label": "九台区", + "value": 593 + }, { + "label": "农安县", + "value": 594 + }, { + "label": "榆树市", + "value": 595 + }, { + "label": "德惠市", + "value": 596 + }], + [{ + "label": "昌邑区", + "value": 598 + }, { + "label": "龙潭区", + "value": 599 + }, { + "label": "船营区", + "value": 600 + }, { + "label": "丰满区", + "value": 601 + }, { + "label": "永吉县", + "value": 602 + }, { + "label": "蛟河市", + "value": 603 + }, { + "label": "桦甸市", + "value": 604 + }, { + "label": "舒兰市", + "value": 605 + }, { + "label": "磐石市", + "value": 606 + }], + [{ + "label": "铁西区", + "value": 608 + }, { + "label": "铁东区", + "value": 609 + }, { + "label": "梨树县", + "value": 610 + }, { + "label": "伊通满族自治县", + "value": 611 + }, { + "label": "公主岭市", + "value": 612 + }, { + "label": "双辽市", + "value": 613 + }], + [{ + "label": "龙山区", + "value": 615 + }, { + "label": "西安区", + "value": 616 + }, { + "label": "东丰县", + "value": 617 + }, { + "label": "东辽县", + "value": 618 + }], + [{ + "label": "东昌区", + "value": 620 + }, { + "label": "二道江区", + "value": 621 + }, { + "label": "通化县", + "value": 622 + }, { + "label": "辉南县", + "value": 623 + }, { + "label": "柳河县", + "value": 624 + }, { + "label": "梅河口市", + "value": 625 + }, { + "label": "集安市", + "value": 626 + }], + [{ + "label": "浑江区", + "value": 628 + }, { + "label": "江源区", + "value": 629 + }, { + "label": "抚松县", + "value": 630 + }, { + "label": "靖宇县", + "value": 631 + }, { + "label": "长白朝鲜族自治县", + "value": 632 + }, { + "label": "临江市", + "value": 633 + }], + [{ + "label": "宁江区", + "value": 635 + }, { + "label": "前郭尔罗斯蒙古族自治县", + "value": 636 + }, { + "label": "长岭县", + "value": 637 + }, { + "label": "乾安县", + "value": 638 + }, { + "label": "扶余市", + "value": 639 + }], + [{ + "label": "洮北区", + "value": 641 + }, { + "label": "镇赉县", + "value": 642 + }, { + "label": "通榆县", + "value": 643 + }, { + "label": "洮南市", + "value": 644 + }, { + "label": "大安市", + "value": 645 + }], + [{ + "label": "延吉市", + "value": 647 + }, { + "label": "图们市", + "value": 648 + }, { + "label": "敦化市", + "value": 649 + }, { + "label": "珲春市", + "value": 650 + }, { + "label": "龙井市", + "value": 651 + }, { + "label": "和龙市", + "value": 652 + }, { + "label": "汪清县", + "value": 653 + }, { + "label": "安图县", + "value": 654 + }] + ], + [ + [{ + "label": "道里区", + "value": 657 + }, { + "label": "南岗区", + "value": 658 + }, { + "label": "道外区", + "value": 659 + }, { + "label": "平房区", + "value": 660 + }, { + "label": "松北区", + "value": 661 + }, { + "label": "香坊区", + "value": 662 + }, { + "label": "呼兰区", + "value": 663 + }, { + "label": "阿城区", + "value": 664 + }, { + "label": "双城区", + "value": 665 + }, { + "label": "依兰县", + "value": 666 + }, { + "label": "方正县", + "value": 667 + }, { + "label": "宾县", + "value": 668 + }, { + "label": "巴彦县", + "value": 669 + }, { + "label": "木兰县", + "value": 670 + }, { + "label": "通河县", + "value": 671 + }, { + "label": "延寿县", + "value": 672 + }, { + "label": "尚志市", + "value": 673 + }, { + "label": "五常市", + "value": 674 + }], + [{ + "label": "龙沙区", + "value": 676 + }, { + "label": "建华区", + "value": 677 + }, { + "label": "铁锋区", + "value": 678 + }, { + "label": "昂昂溪区", + "value": 679 + }, { + "label": "富拉尔基区", + "value": 680 + }, { + "label": "碾子山区", + "value": 681 + }, { + "label": "梅里斯达斡尔族区", + "value": 682 + }, { + "label": "龙江县", + "value": 683 + }, { + "label": "依安县", + "value": 684 + }, { + "label": "泰来县", + "value": 685 + }, { + "label": "甘南县", + "value": 686 + }, { + "label": "富裕县", + "value": 687 + }, { + "label": "克山县", + "value": 688 + }, { + "label": "克东县", + "value": 689 + }, { + "label": "拜泉县", + "value": 690 + }, { + "label": "讷河市", + "value": 691 + }], + [{ + "label": "鸡冠区", + "value": 693 + }, { + "label": "恒山区", + "value": 694 + }, { + "label": "滴道区", + "value": 695 + }, { + "label": "梨树区", + "value": 696 + }, { + "label": "城子河区", + "value": 697 + }, { + "label": "麻山区", + "value": 698 + }, { + "label": "鸡东县", + "value": 699 + }, { + "label": "虎林市", + "value": 700 + }, { + "label": "密山市", + "value": 701 + }], + [{ + "label": "向阳区", + "value": 703 + }, { + "label": "工农区", + "value": 704 + }, { + "label": "南山区", + "value": 705 + }, { + "label": "兴安区", + "value": 706 + }, { + "label": "东山区", + "value": 707 + }, { + "label": "兴山区", + "value": 708 + }, { + "label": "萝北县", + "value": 709 + }, { + "label": "绥滨县", + "value": 710 + }], + [{ + "label": "尖山区", + "value": 712 + }, { + "label": "岭东区", + "value": 713 + }, { + "label": "四方台区", + "value": 714 + }, { + "label": "宝山区", + "value": 715 + }, { + "label": "集贤县", + "value": 716 + }, { + "label": "友谊县", + "value": 717 + }, { + "label": "宝清县", + "value": 718 + }, { + "label": "饶河县", + "value": 719 + }], + [{ + "label": "萨尔图区", + "value": 721 + }, { + "label": "龙凤区", + "value": 722 + }, { + "label": "让胡路区", + "value": 723 + }, { + "label": "红岗区", + "value": 724 + }, { + "label": "大同区", + "value": 725 + }, { + "label": "肇州县", + "value": 726 + }, { + "label": "肇源县", + "value": 727 + }, { + "label": "林甸县", + "value": 728 + }, { + "label": "杜尔伯特蒙古族自治县", + "value": 729 + }], + [{ + "label": "伊春区", + "value": 731 + }, { + "label": "南岔区", + "value": 732 + }, { + "label": "友好区", + "value": 733 + }, { + "label": "西林区", + "value": 734 + }, { + "label": "翠峦区", + "value": 735 + }, { + "label": "新青区", + "value": 736 + }, { + "label": "美溪区", + "value": 737 + }, { + "label": "金山屯区", + "value": 738 + }, { + "label": "五营区", + "value": 739 + }, { + "label": "乌马河区", + "value": 740 + }, { + "label": "汤旺河区", + "value": 741 + }, { + "label": "带岭区", + "value": 742 + }, { + "label": "乌伊岭区", + "value": 743 + }, { + "label": "红星区", + "value": 744 + }, { + "label": "上甘岭区", + "value": 745 + }, { + "label": "嘉荫县", + "value": 746 + }, { + "label": "铁力市", + "value": 747 + }], + [{ + "label": "向阳区", + "value": 749 + }, { + "label": "前进区", + "value": 750 + }, { + "label": "东风区", + "value": 751 + }, { + "label": "郊区", + "value": 752 + }, { + "label": "桦南县", + "value": 753 + }, { + "label": "桦川县", + "value": 754 + }, { + "label": "汤原县", + "value": 755 + }, { + "label": "抚远县", + "value": 756 + }, { + "label": "同江市", + "value": 757 + }, { + "label": "富锦市", + "value": 758 + }], + [{ + "label": "新兴区", + "value": 760 + }, { + "label": "桃山区", + "value": 761 + }, { + "label": "茄子河区", + "value": 762 + }, { + "label": "勃利县", + "value": 763 + }], + [{ + "label": "东安区", + "value": 765 + }, { + "label": "阳明区", + "value": 766 + }, { + "label": "爱民区", + "value": 767 + }, { + "label": "西安区", + "value": 768 + }, { + "label": "东宁县", + "value": 769 + }, { + "label": "林口县", + "value": 770 + }, { + "label": "绥芬河市", + "value": 771 + }, { + "label": "海林市", + "value": 772 + }, { + "label": "宁安市", + "value": 773 + }, { + "label": "穆棱市", + "value": 774 + }], + [{ + "label": "爱辉区", + "value": 776 + }, { + "label": "嫩江县", + "value": 777 + }, { + "label": "逊克县", + "value": 778 + }, { + "label": "孙吴县", + "value": 779 + }, { + "label": "北安市", + "value": 780 + }, { + "label": "五大连池市", + "value": 781 + }], + [{ + "label": "北林区", + "value": 783 + }, { + "label": "望奎县", + "value": 784 + }, { + "label": "兰西县", + "value": 785 + }, { + "label": "青冈县", + "value": 786 + }, { + "label": "庆安县", + "value": 787 + }, { + "label": "明水县", + "value": 788 + }, { + "label": "绥棱县", + "value": 789 + }, { + "label": "安达市", + "value": 790 + }, { + "label": "肇东市", + "value": 791 + }, { + "label": "海伦市", + "value": 792 + }], + [{ + "label": "加格达奇区", + "value": 794 + }, { + "label": "新林区", + "value": 795 + }, { + "label": "松岭区", + "value": 796 + }, { + "label": "呼中区", + "value": 797 + }, { + "label": "呼玛县", + "value": 798 + }, { + "label": "塔河县", + "value": 799 + }, { + "label": "漠河县", + "value": 800 + }] + ], + [ + [{ + "label": "黄浦区", + "value": 803 + }, { + "label": "徐汇区", + "value": 804 + }, { + "label": "长宁区", + "value": 805 + }, { + "label": "静安区", + "value": 806 + }, { + "label": "普陀区", + "value": 807 + }, { + "label": "闸北区", + "value": 808 + }, { + "label": "虹口区", + "value": 809 + }, { + "label": "杨浦区", + "value": 810 + }, { + "label": "闵行区", + "value": 811 + }, { + "label": "宝山区", + "value": 812 + }, { + "label": "嘉定区", + "value": 813 + }, { + "label": "浦东新区", + "value": 814 + }, { + "label": "金山区", + "value": 815 + }, { + "label": "松江区", + "value": 816 + }, { + "label": "青浦区", + "value": 817 + }, { + "label": "奉贤区", + "value": 818 + }, { + "label": "崇明县", + "value": 819 + }] + ], + [ + [{ + "label": "玄武区", + "value": 822 + }, { + "label": "秦淮区", + "value": 823 + }, { + "label": "建邺区", + "value": 824 + }, { + "label": "鼓楼区", + "value": 825 + }, { + "label": "浦口区", + "value": 826 + }, { + "label": "栖霞区", + "value": 827 + }, { + "label": "雨花台区", + "value": 828 + }, { + "label": "江宁区", + "value": 829 + }, { + "label": "六合区", + "value": 830 + }, { + "label": "溧水区", + "value": 831 + }, { + "label": "高淳区", + "value": 832 + }], + [{ + "label": "梁溪区", + "value": 834 + }, { + "label": "新吴区", + "value": 835 + }, { + "label": "锡山区", + "value": 837 + }, { + "label": "惠山区", + "value": 838 + }, { + "label": "滨湖区", + "value": 839 + }, { + "label": "江阴市", + "value": 840 + }, { + "label": "宜兴市", + "value": 841 + }], + [{ + "label": "鼓楼区", + "value": 843 + }, { + "label": "云龙区", + "value": 844 + }, { + "label": "贾汪区", + "value": 845 + }, { + "label": "泉山区", + "value": 846 + }, { + "label": "铜山区", + "value": 847 + }, { + "label": "丰县", + "value": 848 + }, { + "label": "沛县", + "value": 849 + }, { + "label": "睢宁县", + "value": 850 + }, { + "label": "新沂市", + "value": 851 + }, { + "label": "邳州市", + "value": 852 + }], + [{ + "label": "天宁区", + "value": 854 + }, { + "label": "钟楼区", + "value": 855 + }, { + "label": "戚墅堰区", + "value": 856 + }, { + "label": "新北区", + "value": 857 + }, { + "label": "武进区", + "value": 858 + }, { + "label": "溧阳市", + "value": 859 + }, { + "label": "金坛市", + "value": 860 + }], + [{ + "label": "虎丘区", + "value": 862 + }, { + "label": "吴中区", + "value": 863 + }, { + "label": "相城区", + "value": 864 + }, { + "label": "姑苏区", + "value": 865 + }, { + "label": "吴江区", + "value": 866 + }, { + "label": "常熟市", + "value": 867 + }, { + "label": "张家港市", + "value": 868 + }, { + "label": "昆山市", + "value": 869 + }, { + "label": "太仓市", + "value": 870 + }], + [{ + "label": "崇川区", + "value": 872 + }, { + "label": "港闸区", + "value": 873 + }, { + "label": "通州区", + "value": 874 + }, { + "label": "海安县", + "value": 875 + }, { + "label": "如东县", + "value": 876 + }, { + "label": "启东市", + "value": 877 + }, { + "label": "如皋市", + "value": 878 + }, { + "label": "海门市", + "value": 879 + }], + [{ + "label": "连云区", + "value": 881 + }, { + "label": "海州区", + "value": 882 + }, { + "label": "赣榆区", + "value": 883 + }, { + "label": "东海县", + "value": 884 + }, { + "label": "灌云县", + "value": 885 + }, { + "label": "灌南县", + "value": 886 + }], + [{ + "label": "清河区", + "value": 888 + }, { + "label": "淮安区", + "value": 889 + }, { + "label": "淮阴区", + "value": 890 + }, { + "label": "清浦区", + "value": 891 + }, { + "label": "涟水县", + "value": 892 + }, { + "label": "洪泽县", + "value": 893 + }, { + "label": "盱眙县", + "value": 894 + }, { + "label": "金湖县", + "value": 895 + }], + [{ + "label": "亭湖区", + "value": 897 + }, { + "label": "盐都区", + "value": 898 + }, { + "label": "响水县", + "value": 899 + }, { + "label": "滨海县", + "value": 900 + }, { + "label": "阜宁县", + "value": 901 + }, { + "label": "射阳县", + "value": 902 + }, { + "label": "建湖县", + "value": 903 + }, { + "label": "东台市", + "value": 904 + }, { + "label": "大丰市", + "value": 905 + }], + [{ + "label": "广陵区", + "value": 907 + }, { + "label": "邗江区", + "value": 908 + }, { + "label": "江都区", + "value": 909 + }, { + "label": "宝应县", + "value": 910 + }, { + "label": "仪征市", + "value": 911 + }, { + "label": "高邮市", + "value": 912 + }], + [{ + "label": "京口区", + "value": 914 + }, { + "label": "润州区", + "value": 915 + }, { + "label": "丹徒区", + "value": 916 + }, { + "label": "丹阳市", + "value": 917 + }, { + "label": "扬中市", + "value": 918 + }, { + "label": "句容市", + "value": 919 + }], + [{ + "label": "海陵区", + "value": 921 + }, { + "label": "高港区", + "value": 922 + }, { + "label": "姜堰区", + "value": 923 + }, { + "label": "兴化市", + "value": 924 + }, { + "label": "靖江市", + "value": 925 + }, { + "label": "泰兴市", + "value": 926 + }], + [{ + "label": "宿城区", + "value": 928 + }, { + "label": "宿豫区", + "value": 929 + }, { + "label": "沭阳县", + "value": 930 + }, { + "label": "泗阳县", + "value": 931 + }, { + "label": "泗洪县", + "value": 932 + }] + ], + [ + [{ + "label": "上城区", + "value": 935 + }, { + "label": "下城区", + "value": 936 + }, { + "label": "江干区", + "value": 937 + }, { + "label": "拱墅区", + "value": 938 + }, { + "label": "西湖区", + "value": 939 + }, { + "label": "滨江区", + "value": 940 + }, { + "label": "萧山区", + "value": 941 + }, { + "label": "余杭区", + "value": 942 + }, { + "label": "桐庐县", + "value": 943 + }, { + "label": "淳安县", + "value": 944 + }, { + "label": "建德市", + "value": 945 + }, { + "label": "富阳区", + "value": 946 + }, { + "label": "临安市", + "value": 947 + }], + [{ + "label": "海曙区", + "value": 949 + }, { + "label": "江东区", + "value": 950 + }, { + "label": "江北区", + "value": 951 + }, { + "label": "北仑区", + "value": 952 + }, { + "label": "镇海区", + "value": 953 + }, { + "label": "鄞州区", + "value": 954 + }, { + "label": "象山县", + "value": 955 + }, { + "label": "宁海县", + "value": 956 + }, { + "label": "余姚市", + "value": 957 + }, { + "label": "慈溪市", + "value": 958 + }, { + "label": "奉化市", + "value": 959 + }], + [{ + "label": "鹿城区", + "value": 961 + }, { + "label": "龙湾区", + "value": 962 + }, { + "label": "瓯海区", + "value": 963 + }, { + "label": "洞头县", + "value": 964 + }, { + "label": "永嘉县", + "value": 965 + }, { + "label": "平阳县", + "value": 966 + }, { + "label": "苍南县", + "value": 967 + }, { + "label": "文成县", + "value": 968 + }, { + "label": "泰顺县", + "value": 969 + }, { + "label": "瑞安市", + "value": 970 + }, { + "label": "乐清市", + "value": 971 + }], + [{ + "label": "南湖区", + "value": 973 + }, { + "label": "秀洲区", + "value": 974 + }, { + "label": "嘉善县", + "value": 975 + }, { + "label": "海盐县", + "value": 976 + }, { + "label": "海宁市", + "value": 977 + }, { + "label": "平湖市", + "value": 978 + }, { + "label": "桐乡市", + "value": 979 + }], + [{ + "label": "吴兴区", + "value": 981 + }, { + "label": "南浔区", + "value": 982 + }, { + "label": "德清县", + "value": 983 + }, { + "label": "长兴县", + "value": 984 + }, { + "label": "安吉县", + "value": 985 + }], + [{ + "label": "越城区", + "value": 987 + }, { + "label": "柯桥区", + "value": 988 + }, { + "label": "上虞区", + "value": 989 + }, { + "label": "新昌县", + "value": 990 + }, { + "label": "诸暨市", + "value": 991 + }, { + "label": "嵊州市", + "value": 992 + }], + [{ + "label": "婺城区", + "value": 994 + }, { + "label": "金东区", + "value": 995 + }, { + "label": "武义县", + "value": 996 + }, { + "label": "浦江县", + "value": 997 + }, { + "label": "磐安县", + "value": 998 + }, { + "label": "兰溪市", + "value": 999 + }, { + "label": "义乌市", + "value": 1000 + }, { + "label": "东阳市", + "value": 1001 + }, { + "label": "永康市", + "value": 1002 + }], + [{ + "label": "柯城区", + "value": 1004 + }, { + "label": "衢江区", + "value": 1005 + }, { + "label": "常山县", + "value": 1006 + }, { + "label": "开化县", + "value": 1007 + }, { + "label": "龙游县", + "value": 1008 + }, { + "label": "江山市", + "value": 1009 + }], + [{ + "label": "定海区", + "value": 1011 + }, { + "label": "普陀区", + "value": 1012 + }, { + "label": "岱山县", + "value": 1013 + }, { + "label": "嵊泗县", + "value": 1014 + }], + [{ + "label": "椒江区", + "value": 1016 + }, { + "label": "黄岩区", + "value": 1017 + }, { + "label": "路桥区", + "value": 1018 + }, { + "label": "玉环县", + "value": 1019 + }, { + "label": "三门县", + "value": 1020 + }, { + "label": "天台县", + "value": 1021 + }, { + "label": "仙居县", + "value": 1022 + }, { + "label": "温岭市", + "value": 1023 + }, { + "label": "临海市", + "value": 1024 + }], + [{ + "label": "莲都区", + "value": 1026 + }, { + "label": "青田县", + "value": 1027 + }, { + "label": "缙云县", + "value": 1028 + }, { + "label": "遂昌县", + "value": 1029 + }, { + "label": "松阳县", + "value": 1030 + }, { + "label": "云和县", + "value": 1031 + }, { + "label": "庆元县", + "value": 1032 + }, { + "label": "景宁畲族自治县", + "value": 1033 + }, { + "label": "龙泉市", + "value": 1034 + }], + [{ + "label": "金塘岛", + "value": 1036 + }, { + "label": "六横岛", + "value": 1037 + }, { + "label": "衢山岛", + "value": 1038 + }, { + "label": "舟山本岛西北部", + "value": 1039 + }, { + "label": "岱山岛西南部", + "value": 1040 + }, { + "label": "泗礁岛", + "value": 1041 + }, { + "label": "朱家尖岛", + "value": 1042 + }, { + "label": "洋山岛", + "value": 1043 + }, { + "label": "长涂岛", + "value": 1044 + }, { + "label": "虾峙岛", + "value": 1045 + }] + ], + [ + [{ + "label": "瑶海区", + "value": 1048 + }, { + "label": "庐阳区", + "value": 1049 + }, { + "label": "蜀山区", + "value": 1050 + }, { + "label": "包河区", + "value": 1051 + }, { + "label": "长丰县", + "value": 1052 + }, { + "label": "肥东县", + "value": 1053 + }, { + "label": "肥西县", + "value": 1054 + }, { + "label": "庐江县", + "value": 1055 + }, { + "label": "巢湖市", + "value": 1056 + }], + [{ + "label": "镜湖区", + "value": 1058 + }, { + "label": "弋江区", + "value": 1059 + }, { + "label": "鸠江区", + "value": 1060 + }, { + "label": "三山区", + "value": 1061 + }, { + "label": "芜湖县", + "value": 1062 + }, { + "label": "繁昌县", + "value": 1063 + }, { + "label": "南陵县", + "value": 1064 + }, { + "label": "无为县", + "value": 1065 + }], + [{ + "label": "龙子湖区", + "value": 1067 + }, { + "label": "蚌山区", + "value": 1068 + }, { + "label": "禹会区", + "value": 1069 + }, { + "label": "淮上区", + "value": 1070 + }, { + "label": "怀远县", + "value": 1071 + }, { + "label": "五河县", + "value": 1072 + }, { + "label": "固镇县", + "value": 1073 + }], + [{ + "label": "大通区", + "value": 1075 + }, { + "label": "田家庵区", + "value": 1076 + }, { + "label": "谢家集区", + "value": 1077 + }, { + "label": "八公山区", + "value": 1078 + }, { + "label": "潘集区", + "value": 1079 + }, { + "label": "凤台县", + "value": 1080 + }], + [{ + "label": "花山区", + "value": 1082 + }, { + "label": "雨山区", + "value": 1083 + }, { + "label": "博望区", + "value": 1084 + }, { + "label": "当涂县", + "value": 1085 + }, { + "label": "含山县", + "value": 1086 + }, { + "label": "和县", + "value": 1087 + }], + [{ + "label": "杜集区", + "value": 1089 + }, { + "label": "相山区", + "value": 1090 + }, { + "label": "烈山区", + "value": 1091 + }, { + "label": "濉溪县", + "value": 1092 + }], + [{ + "label": "铜官山区", + "value": 1094 + }, { + "label": "狮子山区", + "value": 1095 + }, { + "label": "郊区", + "value": 1096 + }, { + "label": "铜陵县", + "value": 1097 + }], + [{ + "label": "迎江区", + "value": 1099 + }, { + "label": "大观区", + "value": 1100 + }, { + "label": "宜秀区", + "value": 1101 + }, { + "label": "怀宁县", + "value": 1102 + }, { + "label": "枞阳县", + "value": 1103 + }, { + "label": "潜山县", + "value": 1104 + }, { + "label": "太湖县", + "value": 1105 + }, { + "label": "宿松县", + "value": 1106 + }, { + "label": "望江县", + "value": 1107 + }, { + "label": "岳西县", + "value": 1108 + }, { + "label": "桐城市", + "value": 1109 + }], + [{ + "label": "屯溪区", + "value": 1111 + }, { + "label": "黄山区", + "value": 1112 + }, { + "label": "徽州区", + "value": 1113 + }, { + "label": "歙县", + "value": 1114 + }, { + "label": "休宁县", + "value": 1115 + }, { + "label": "黟县", + "value": 1116 + }, { + "label": "祁门县", + "value": 1117 + }], + [{ + "label": "琅琊区", + "value": 1119 + }, { + "label": "南谯区", + "value": 1120 + }, { + "label": "来安县", + "value": 1121 + }, { + "label": "全椒县", + "value": 1122 + }, { + "label": "定远县", + "value": 1123 + }, { + "label": "凤阳县", + "value": 1124 + }, { + "label": "天长市", + "value": 1125 + }, { + "label": "明光市", + "value": 1126 + }], + [{ + "label": "颍州区", + "value": 1128 + }, { + "label": "颍东区", + "value": 1129 + }, { + "label": "颍泉区", + "value": 1130 + }, { + "label": "临泉县", + "value": 1131 + }, { + "label": "太和县", + "value": 1132 + }, { + "label": "阜南县", + "value": 1133 + }, { + "label": "颍上县", + "value": 1134 + }, { + "label": "界首市", + "value": 1135 + }], + [{ + "label": "埇桥区", + "value": 1137 + }, { + "label": "砀山县", + "value": 1138 + }, { + "label": "萧县", + "value": 1139 + }, { + "label": "灵璧县", + "value": 1140 + }, { + "label": "泗县", + "value": 1141 + }], + [{ + "label": "金安区", + "value": 1143 + }, { + "label": "裕安区", + "value": 1144 + }, { + "label": "寿县", + "value": 1145 + }, { + "label": "霍邱县", + "value": 1146 + }, { + "label": "舒城县", + "value": 1147 + }, { + "label": "金寨县", + "value": 1148 + }, { + "label": "霍山县", + "value": 1149 + }], + [{ + "label": "谯城区", + "value": 1151 + }, { + "label": "涡阳县", + "value": 1152 + }, { + "label": "蒙城县", + "value": 1153 + }, { + "label": "利辛县", + "value": 1154 + }], + [{ + "label": "贵池区", + "value": 1156 + }, { + "label": "东至县", + "value": 1157 + }, { + "label": "石台县", + "value": 1158 + }, { + "label": "青阳县", + "value": 1159 + }], + [{ + "label": "宣州区", + "value": 1161 + }, { + "label": "郎溪县", + "value": 1162 + }, { + "label": "广德县", + "value": 1163 + }, { + "label": "泾县", + "value": 1164 + }, { + "label": "绩溪县", + "value": 1165 + }, { + "label": "旌德县", + "value": 1166 + }, { + "label": "宁国市", + "value": 1167 + }] + ], + [ + [{ + "label": "鼓楼区", + "value": 1170 + }, { + "label": "台江区", + "value": 1171 + }, { + "label": "仓山区", + "value": 1172 + }, { + "label": "马尾区", + "value": 1173 + }, { + "label": "晋安区", + "value": 1174 + }, { + "label": "闽侯县", + "value": 1175 + }, { + "label": "连江县", + "value": 1176 + }, { + "label": "罗源县", + "value": 1177 + }, { + "label": "闽清县", + "value": 1178 + }, { + "label": "永泰县", + "value": 1179 + }, { + "label": "平潭县", + "value": 1180 + }, { + "label": "福清市", + "value": 1181 + }, { + "label": "长乐市", + "value": 1182 + }], + [{ + "label": "思明区", + "value": 1184 + }, { + "label": "海沧区", + "value": 1185 + }, { + "label": "湖里区", + "value": 1186 + }, { + "label": "集美区", + "value": 1187 + }, { + "label": "同安区", + "value": 1188 + }, { + "label": "翔安区", + "value": 1189 + }], + [{ + "label": "城厢区", + "value": 1191 + }, { + "label": "涵江区", + "value": 1192 + }, { + "label": "荔城区", + "value": 1193 + }, { + "label": "秀屿区", + "value": 1194 + }, { + "label": "仙游县", + "value": 1195 + }], + [{ + "label": "梅列区", + "value": 1197 + }, { + "label": "三元区", + "value": 1198 + }, { + "label": "明溪县", + "value": 1199 + }, { + "label": "清流县", + "value": 1200 + }, { + "label": "宁化县", + "value": 1201 + }, { + "label": "大田县", + "value": 1202 + }, { + "label": "尤溪县", + "value": 1203 + }, { + "label": "沙县", + "value": 1204 + }, { + "label": "将乐县", + "value": 1205 + }, { + "label": "泰宁县", + "value": 1206 + }, { + "label": "建宁县", + "value": 1207 + }, { + "label": "永安市", + "value": 1208 + }], + [{ + "label": "鲤城区", + "value": 1210 + }, { + "label": "丰泽区", + "value": 1211 + }, { + "label": "洛江区", + "value": 1212 + }, { + "label": "泉港区", + "value": 1213 + }, { + "label": "惠安县", + "value": 1214 + }, { + "label": "安溪县", + "value": 1215 + }, { + "label": "永春县", + "value": 1216 + }, { + "label": "德化县", + "value": 1217 + }, { + "label": "金门县", + "value": 1218 + }, { + "label": "石狮市", + "value": 1219 + }, { + "label": "晋江市", + "value": 1220 + }, { + "label": "南安市", + "value": 1221 + }], + [{ + "label": "芗城区", + "value": 1223 + }, { + "label": "龙文区", + "value": 1224 + }, { + "label": "云霄县", + "value": 1225 + }, { + "label": "漳浦县", + "value": 1226 + }, { + "label": "诏安县", + "value": 1227 + }, { + "label": "长泰县", + "value": 1228 + }, { + "label": "东山县", + "value": 1229 + }, { + "label": "南靖县", + "value": 1230 + }, { + "label": "平和县", + "value": 1231 + }, { + "label": "华安县", + "value": 1232 + }, { + "label": "龙海市", + "value": 1233 + }], + [{ + "label": "延平区", + "value": 1235 + }, { + "label": "建阳区", + "value": 1236 + }, { + "label": "顺昌县", + "value": 1237 + }, { + "label": "浦城县", + "value": 1238 + }, { + "label": "光泽县", + "value": 1239 + }, { + "label": "松溪县", + "value": 1240 + }, { + "label": "政和县", + "value": 1241 + }, { + "label": "邵武市", + "value": 1242 + }, { + "label": "武夷山市", + "value": 1243 + }, { + "label": "建瓯市", + "value": 1244 + }], + [{ + "label": "新罗区", + "value": 1246 + }, { + "label": "长汀县", + "value": 1247 + }, { + "label": "永定区", + "value": 1248 + }, { + "label": "上杭县", + "value": 1249 + }, { + "label": "武平县", + "value": 1250 + }, { + "label": "连城县", + "value": 1251 + }, { + "label": "漳平市", + "value": 1252 + }], + [{ + "label": "蕉城区", + "value": 1254 + }, { + "label": "霞浦县", + "value": 1255 + }, { + "label": "古田县", + "value": 1256 + }, { + "label": "屏南县", + "value": 1257 + }, { + "label": "寿宁县", + "value": 1258 + }, { + "label": "周宁县", + "value": 1259 + }, { + "label": "柘荣县", + "value": 1260 + }, { + "label": "福安市", + "value": 1261 + }, { + "label": "福鼎市", + "value": 1262 + }] + ], + [ + [{ + "label": "东湖区", + "value": 1265 + }, { + "label": "西湖区", + "value": 1266 + }, { + "label": "青云谱区", + "value": 1267 + }, { + "label": "湾里区", + "value": 1268 + }, { + "label": "青山湖区", + "value": 1269 + }, { + "label": "南昌县", + "value": 1270 + }, { + "label": "新建县", + "value": 1271 + }, { + "label": "安义县", + "value": 1272 + }, { + "label": "进贤县", + "value": 1273 + }], + [{ + "label": "昌江区", + "value": 1275 + }, { + "label": "珠山区", + "value": 1276 + }, { + "label": "浮梁县", + "value": 1277 + }, { + "label": "乐平市", + "value": 1278 + }], + [{ + "label": "安源区", + "value": 1280 + }, { + "label": "湘东区", + "value": 1281 + }, { + "label": "莲花县", + "value": 1282 + }, { + "label": "上栗县", + "value": 1283 + }, { + "label": "芦溪县", + "value": 1284 + }], + [{ + "label": "庐山区", + "value": 1286 + }, { + "label": "浔阳区", + "value": 1287 + }, { + "label": "九江县", + "value": 1288 + }, { + "label": "武宁县", + "value": 1289 + }, { + "label": "修水县", + "value": 1290 + }, { + "label": "永修县", + "value": 1291 + }, { + "label": "德安县", + "value": 1292 + }, { + "label": "星子县", + "value": 1293 + }, { + "label": "都昌县", + "value": 1294 + }, { + "label": "湖口县", + "value": 1295 + }, { + "label": "彭泽县", + "value": 1296 + }, { + "label": "瑞昌市", + "value": 1297 + }, { + "label": "共青城市", + "value": 1298 + }], + [{ + "label": "渝水区", + "value": 1300 + }, { + "label": "分宜县", + "value": 1301 + }], + [{ + "label": "月湖区", + "value": 1303 + }, { + "label": "余江县", + "value": 1304 + }, { + "label": "贵溪市", + "value": 1305 + }], + [{ + "label": "章贡区", + "value": 1307 + }, { + "label": "南康区", + "value": 1308 + }, { + "label": "赣县", + "value": 1309 + }, { + "label": "信丰县", + "value": 1310 + }, { + "label": "大余县", + "value": 1311 + }, { + "label": "上犹县", + "value": 1312 + }, { + "label": "崇义县", + "value": 1313 + }, { + "label": "安远县", + "value": 1314 + }, { + "label": "龙南县", + "value": 1315 + }, { + "label": "定南县", + "value": 1316 + }, { + "label": "全南县", + "value": 1317 + }, { + "label": "宁都县", + "value": 1318 + }, { + "label": "于都县", + "value": 1319 + }, { + "label": "兴国县", + "value": 1320 + }, { + "label": "会昌县", + "value": 1321 + }, { + "label": "寻乌县", + "value": 1322 + }, { + "label": "石城县", + "value": 1323 + }, { + "label": "瑞金市", + "value": 1324 + }], + [{ + "label": "吉州区", + "value": 1326 + }, { + "label": "青原区", + "value": 1327 + }, { + "label": "吉安县", + "value": 1328 + }, { + "label": "吉水县", + "value": 1329 + }, { + "label": "峡江县", + "value": 1330 + }, { + "label": "新干县", + "value": 1331 + }, { + "label": "永丰县", + "value": 1332 + }, { + "label": "泰和县", + "value": 1333 + }, { + "label": "遂川县", + "value": 1334 + }, { + "label": "万安县", + "value": 1335 + }, { + "label": "安福县", + "value": 1336 + }, { + "label": "永新县", + "value": 1337 + }, { + "label": "井冈山市", + "value": 1338 + }], + [{ + "label": "袁州区", + "value": 1340 + }, { + "label": "奉新县", + "value": 1341 + }, { + "label": "万载县", + "value": 1342 + }, { + "label": "上高县", + "value": 1343 + }, { + "label": "宜丰县", + "value": 1344 + }, { + "label": "靖安县", + "value": 1345 + }, { + "label": "铜鼓县", + "value": 1346 + }, { + "label": "丰城市", + "value": 1347 + }, { + "label": "樟树市", + "value": 1348 + }, { + "label": "高安市", + "value": 1349 + }], + [{ + "label": "临川区", + "value": 1351 + }, { + "label": "南城县", + "value": 1352 + }, { + "label": "黎川县", + "value": 1353 + }, { + "label": "南丰县", + "value": 1354 + }, { + "label": "崇仁县", + "value": 1355 + }, { + "label": "乐安县", + "value": 1356 + }, { + "label": "宜黄县", + "value": 1357 + }, { + "label": "金溪县", + "value": 1358 + }, { + "label": "资溪县", + "value": 1359 + }, { + "label": "东乡县", + "value": 1360 + }, { + "label": "广昌县", + "value": 1361 + }], + [{ + "label": "信州区", + "value": 1363 + }, { + "label": "上饶县", + "value": 1364 + }, { + "label": "广丰县", + "value": 1365 + }, { + "label": "玉山县", + "value": 1366 + }, { + "label": "铅山县", + "value": 1367 + }, { + "label": "横峰县", + "value": 1368 + }, { + "label": "弋阳县", + "value": 1369 + }, { + "label": "余干县", + "value": 1370 + }, { + "label": "鄱阳县", + "value": 1371 + }, { + "label": "万年县", + "value": 1372 + }, { + "label": "婺源县", + "value": 1373 + }, { + "label": "德兴市", + "value": 1374 + }] + ], + [ + [{ + "label": "历下区", + "value": 1377 + }, { + "label": "市中区", + "value": 1378 + }, { + "label": "槐荫区", + "value": 1379 + }, { + "label": "天桥区", + "value": 1380 + }, { + "label": "历城区", + "value": 1381 + }, { + "label": "长清区", + "value": 1382 + }, { + "label": "平阴县", + "value": 1383 + }, { + "label": "济阳县", + "value": 1384 + }, { + "label": "商河县", + "value": 1385 + }, { + "label": "章丘市", + "value": 1386 + }], + [{ + "label": "市南区", + "value": 1388 + }, { + "label": "市北区", + "value": 1389 + }, { + "label": "黄岛区", + "value": 1390 + }, { + "label": "崂山区", + "value": 1391 + }, { + "label": "李沧区", + "value": 1392 + }, { + "label": "城阳区", + "value": 1393 + }, { + "label": "胶州市", + "value": 1394 + }, { + "label": "即墨市", + "value": 1395 + }, { + "label": "平度市", + "value": 1396 + }, { + "label": "莱西市", + "value": 1397 + }, { + "label": "西海岸新区", + "value": 1398 + }], + [{ + "label": "淄川区", + "value": 1400 + }, { + "label": "张店区", + "value": 1401 + }, { + "label": "博山区", + "value": 1402 + }, { + "label": "临淄区", + "value": 1403 + }, { + "label": "周村区", + "value": 1404 + }, { + "label": "桓台县", + "value": 1405 + }, { + "label": "高青县", + "value": 1406 + }, { + "label": "沂源县", + "value": 1407 + }], + [{ + "label": "市中区", + "value": 1409 + }, { + "label": "薛城区", + "value": 1410 + }, { + "label": "峄城区", + "value": 1411 + }, { + "label": "台儿庄区", + "value": 1412 + }, { + "label": "山亭区", + "value": 1413 + }, { + "label": "滕州市", + "value": 1414 + }], + [{ + "label": "东营区", + "value": 1416 + }, { + "label": "河口区", + "value": 1417 + }, { + "label": "垦利县", + "value": 1418 + }, { + "label": "利津县", + "value": 1419 + }, { + "label": "广饶县", + "value": 1420 + }], + [{ + "label": "芝罘区", + "value": 1422 + }, { + "label": "福山区", + "value": 1423 + }, { + "label": "牟平区", + "value": 1424 + }, { + "label": "莱山区", + "value": 1425 + }, { + "label": "长岛县", + "value": 1426 + }, { + "label": "龙口市", + "value": 1427 + }, { + "label": "莱阳市", + "value": 1428 + }, { + "label": "莱州市", + "value": 1429 + }, { + "label": "蓬莱市", + "value": 1430 + }, { + "label": "招远市", + "value": 1431 + }, { + "label": "栖霞市", + "value": 1432 + }, { + "label": "海阳市", + "value": 1433 + }], + [{ + "label": "潍城区", + "value": 1435 + }, { + "label": "寒亭区", + "value": 1436 + }, { + "label": "坊子区", + "value": 1437 + }, { + "label": "奎文区", + "value": 1438 + }, { + "label": "临朐县", + "value": 1439 + }, { + "label": "昌乐县", + "value": 1440 + }, { + "label": "青州市", + "value": 1441 + }, { + "label": "诸城市", + "value": 1442 + }, { + "label": "寿光市", + "value": 1443 + }, { + "label": "安丘市", + "value": 1444 + }, { + "label": "高密市", + "value": 1445 + }, { + "label": "昌邑市", + "value": 1446 + }], + [{ + "label": "任城区", + "value": 1448 + }, { + "label": "兖州区", + "value": 1449 + }, { + "label": "微山县", + "value": 1450 + }, { + "label": "鱼台县", + "value": 1451 + }, { + "label": "金乡县", + "value": 1452 + }, { + "label": "嘉祥县", + "value": 1453 + }, { + "label": "汶上县", + "value": 1454 + }, { + "label": "泗水县", + "value": 1455 + }, { + "label": "梁山县", + "value": 1456 + }, { + "label": "曲阜市", + "value": 1457 + }, { + "label": "邹城市", + "value": 1458 + }], + [{ + "label": "泰山区", + "value": 1460 + }, { + "label": "岱岳区", + "value": 1461 + }, { + "label": "宁阳县", + "value": 1462 + }, { + "label": "东平县", + "value": 1463 + }, { + "label": "新泰市", + "value": 1464 + }, { + "label": "肥城市", + "value": 1465 + }], + [{ + "label": "环翠区", + "value": 1467 + }, { + "label": "文登区", + "value": 1468 + }, { + "label": "荣成市", + "value": 1469 + }, { + "label": "乳山市", + "value": 1470 + }], + [{ + "label": "东港区", + "value": 1472 + }, { + "label": "岚山区", + "value": 1473 + }, { + "label": "五莲县", + "value": 1474 + }, { + "label": "莒县", + "value": 1475 + }], + [{ + "label": "莱城区", + "value": 1477 + }, { + "label": "钢城区", + "value": 1478 + }], + [{ + "label": "兰山区", + "value": 1480 + }, { + "label": "罗庄区", + "value": 1481 + }, { + "label": "河东区", + "value": 1482 + }, { + "label": "沂南县", + "value": 1483 + }, { + "label": "郯城县", + "value": 1484 + }, { + "label": "沂水县", + "value": 1485 + }, { + "label": "兰陵县", + "value": 1486 + }, { + "label": "费县", + "value": 1487 + }, { + "label": "平邑县", + "value": 1488 + }, { + "label": "莒南县", + "value": 1489 + }, { + "label": "蒙阴县", + "value": 1490 + }, { + "label": "临沭县", + "value": 1491 + }], + [{ + "label": "德城区", + "value": 1493 + }, { + "label": "陵城区", + "value": 1494 + }, { + "label": "宁津县", + "value": 1495 + }, { + "label": "庆云县", + "value": 1496 + }, { + "label": "临邑县", + "value": 1497 + }, { + "label": "齐河县", + "value": 1498 + }, { + "label": "平原县", + "value": 1499 + }, { + "label": "夏津县", + "value": 1500 + }, { + "label": "武城县", + "value": 1501 + }, { + "label": "乐陵市", + "value": 1502 + }, { + "label": "禹城市", + "value": 1503 + }], + [{ + "label": "东昌府区", + "value": 1505 + }, { + "label": "阳谷县", + "value": 1506 + }, { + "label": "莘县", + "value": 1507 + }, { + "label": "茌平县", + "value": 1508 + }, { + "label": "东阿县", + "value": 1509 + }, { + "label": "冠县", + "value": 1510 + }, { + "label": "高唐县", + "value": 1511 + }, { + "label": "临清市", + "value": 1512 + }], + [{ + "label": "滨城区", + "value": 1514 + }, { + "label": "沾化区", + "value": 1515 + }, { + "label": "惠民县", + "value": 1516 + }, { + "label": "阳信县", + "value": 1517 + }, { + "label": "无棣县", + "value": 1518 + }, { + "label": "博兴县", + "value": 1519 + }, { + "label": "邹平县", + "value": 1520 + }, { + "label": "北海新区", + "value": 1521 + }], + [{ + "label": "牡丹区", + "value": 1523 + }, { + "label": "曹县", + "value": 1524 + }, { + "label": "单县", + "value": 1525 + }, { + "label": "成武县", + "value": 1526 + }, { + "label": "巨野县", + "value": 1527 + }, { + "label": "郓城县", + "value": 1528 + }, { + "label": "鄄城县", + "value": 1529 + }, { + "label": "定陶县", + "value": 1530 + }, { + "label": "东明县", + "value": 1531 + }] + ], + [ + [{ + "label": "中原区", + "value": 1534 + }, { + "label": "二七区", + "value": 1535 + }, { + "label": "管城回族区", + "value": 1536 + }, { + "label": "金水区", + "value": 1537 + }, { + "label": "上街区", + "value": 1538 + }, { + "label": "惠济区", + "value": 1539 + }, { + "label": "中牟县", + "value": 1540 + }, { + "label": "巩义市", + "value": 1541 + }, { + "label": "荥阳市", + "value": 1542 + }, { + "label": "新密市", + "value": 1543 + }, { + "label": "新郑市", + "value": 1544 + }, { + "label": "登封市", + "value": 1545 + }], + [{ + "label": "龙亭区", + "value": 1547 + }, { + "label": "顺河回族区", + "value": 1548 + }, { + "label": "鼓楼区", + "value": 1549 + }, { + "label": "禹王台区", + "value": 1550 + }, { + "label": "祥符区", + "value": 1551 + }, { + "label": "杞县", + "value": 1552 + }, { + "label": "通许县", + "value": 1553 + }, { + "label": "尉氏县", + "value": 1554 + }, { + "label": "兰考县", + "value": 1555 + }], + [{ + "label": "老城区", + "value": 1557 + }, { + "label": "西工区", + "value": 1558 + }, { + "label": "瀍河回族区", + "value": 1559 + }, { + "label": "涧西区", + "value": 1560 + }, { + "label": "吉利区", + "value": 1561 + }, { + "label": "洛龙区", + "value": 1562 + }, { + "label": "孟津县", + "value": 1563 + }, { + "label": "新安县", + "value": 1564 + }, { + "label": "栾川县", + "value": 1565 + }, { + "label": "嵩县", + "value": 1566 + }, { + "label": "汝阳县", + "value": 1567 + }, { + "label": "宜阳县", + "value": 1568 + }, { + "label": "洛宁县", + "value": 1569 + }, { + "label": "伊川县", + "value": 1570 + }, { + "label": "偃师市", + "value": 1571 + }], + [{ + "label": "新华区", + "value": 1573 + }, { + "label": "卫东区", + "value": 1574 + }, { + "label": "石龙区", + "value": 1575 + }, { + "label": "湛河区", + "value": 1576 + }, { + "label": "宝丰县", + "value": 1577 + }, { + "label": "叶县", + "value": 1578 + }, { + "label": "鲁山县", + "value": 1579 + }, { + "label": "郏县", + "value": 1580 + }, { + "label": "舞钢市", + "value": 1581 + }, { + "label": "汝州市", + "value": 1582 + }], + [{ + "label": "文峰区", + "value": 1584 + }, { + "label": "北关区", + "value": 1585 + }, { + "label": "殷都区", + "value": 1586 + }, { + "label": "龙安区", + "value": 1587 + }, { + "label": "安阳县", + "value": 1588 + }, { + "label": "汤阴县", + "value": 1589 + }, { + "label": "滑县", + "value": 1590 + }, { + "label": "内黄县", + "value": 1591 + }, { + "label": "林州市", + "value": 1592 + }], + [{ + "label": "鹤山区", + "value": 1594 + }, { + "label": "山城区", + "value": 1595 + }, { + "label": "淇滨区", + "value": 1596 + }, { + "label": "浚县", + "value": 1597 + }, { + "label": "淇县", + "value": 1598 + }], + [{ + "label": "红旗区", + "value": 1600 + }, { + "label": "卫滨区", + "value": 1601 + }, { + "label": "凤泉区", + "value": 1602 + }, { + "label": "牧野区", + "value": 1603 + }, { + "label": "新乡县", + "value": 1604 + }, { + "label": "获嘉县", + "value": 1605 + }, { + "label": "原阳县", + "value": 1606 + }, { + "label": "延津县", + "value": 1607 + }, { + "label": "封丘县", + "value": 1608 + }, { + "label": "长垣县", + "value": 1609 + }, { + "label": "卫辉市", + "value": 1610 + }, { + "label": "辉县市", + "value": 1611 + }], + [{ + "label": "解放区", + "value": 1613 + }, { + "label": "中站区", + "value": 1614 + }, { + "label": "马村区", + "value": 1615 + }, { + "label": "山阳区", + "value": 1616 + }, { + "label": "修武县", + "value": 1617 + }, { + "label": "博爱县", + "value": 1618 + }, { + "label": "武陟县", + "value": 1619 + }, { + "label": "温县", + "value": 1620 + }, { + "label": "沁阳市", + "value": 1621 + }, { + "label": "孟州市", + "value": 1622 + }], + [{ + "label": "华龙区", + "value": 1624 + }, { + "label": "清丰县", + "value": 1625 + }, { + "label": "南乐县", + "value": 1626 + }, { + "label": "范县", + "value": 1627 + }, { + "label": "台前县", + "value": 1628 + }, { + "label": "濮阳县", + "value": 1629 + }], + [{ + "label": "魏都区", + "value": 1631 + }, { + "label": "许昌县", + "value": 1632 + }, { + "label": "鄢陵县", + "value": 1633 + }, { + "label": "襄城县", + "value": 1634 + }, { + "label": "禹州市", + "value": 1635 + }, { + "label": "长葛市", + "value": 1636 + }], + [{ + "label": "源汇区", + "value": 1638 + }, { + "label": "郾城区", + "value": 1639 + }, { + "label": "召陵区", + "value": 1640 + }, { + "label": "舞阳县", + "value": 1641 + }, { + "label": "临颍县", + "value": 1642 + }], + [{ + "label": "湖滨区", + "value": 1644 + }, { + "label": "渑池县", + "value": 1645 + }, { + "label": "陕县", + "value": 1646 + }, { + "label": "卢氏县", + "value": 1647 + }, { + "label": "义马市", + "value": 1648 + }, { + "label": "灵宝市", + "value": 1649 + }], + [{ + "label": "宛城区", + "value": 1651 + }, { + "label": "卧龙区", + "value": 1652 + }, { + "label": "南召县", + "value": 1653 + }, { + "label": "方城县", + "value": 1654 + }, { + "label": "西峡县", + "value": 1655 + }, { + "label": "镇平县", + "value": 1656 + }, { + "label": "内乡县", + "value": 1657 + }, { + "label": "淅川县", + "value": 1658 + }, { + "label": "社旗县", + "value": 1659 + }, { + "label": "唐河县", + "value": 1660 + }, { + "label": "新野县", + "value": 1661 + }, { + "label": "桐柏县", + "value": 1662 + }, { + "label": "邓州市", + "value": 1663 + }], + [{ + "label": "梁园区", + "value": 1665 + }, { + "label": "睢阳区", + "value": 1666 + }, { + "label": "民权县", + "value": 1667 + }, { + "label": "睢县", + "value": 1668 + }, { + "label": "宁陵县", + "value": 1669 + }, { + "label": "柘城县", + "value": 1670 + }, { + "label": "虞城县", + "value": 1671 + }, { + "label": "夏邑县", + "value": 1672 + }, { + "label": "永城市", + "value": 1673 + }], + [{ + "label": "浉河区", + "value": 1675 + }, { + "label": "平桥区", + "value": 1676 + }, { + "label": "罗山县", + "value": 1677 + }, { + "label": "光山县", + "value": 1678 + }, { + "label": "新县", + "value": 1679 + }, { + "label": "商城县", + "value": 1680 + }, { + "label": "固始县", + "value": 1681 + }, { + "label": "潢川县", + "value": 1682 + }, { + "label": "淮滨县", + "value": 1683 + }, { + "label": "息县", + "value": 1684 + }], + [{ + "label": "川汇区", + "value": 1686 + }, { + "label": "扶沟县", + "value": 1687 + }, { + "label": "西华县", + "value": 1688 + }, { + "label": "商水县", + "value": 1689 + }, { + "label": "沈丘县", + "value": 1690 + }, { + "label": "郸城县", + "value": 1691 + }, { + "label": "淮阳县", + "value": 1692 + }, { + "label": "太康县", + "value": 1693 + }, { + "label": "鹿邑县", + "value": 1694 + }, { + "label": "项城市", + "value": 1695 + }], + [{ + "label": "驿城区", + "value": 1697 + }, { + "label": "西平县", + "value": 1698 + }, { + "label": "上蔡县", + "value": 1699 + }, { + "label": "平舆县", + "value": 1700 + }, { + "label": "正阳县", + "value": 1701 + }, { + "label": "确山县", + "value": 1702 + }, { + "label": "泌阳县", + "value": 1703 + }, { + "label": "汝南县", + "value": 1704 + }, { + "label": "遂平县", + "value": 1705 + }, { + "label": "新蔡县", + "value": 1706 + }], + [{ + "label": "济源市", + "value": 1708 + }] + ], + [ + [{ + "label": "江岸区", + "value": 1711 + }, { + "label": "江汉区", + "value": 1712 + }, { + "label": "硚口区", + "value": 1713 + }, { + "label": "汉阳区", + "value": 1714 + }, { + "label": "武昌区", + "value": 1715 + }, { + "label": "青山区", + "value": 1716 + }, { + "label": "洪山区", + "value": 1717 + }, { + "label": "东西湖区", + "value": 1718 + }, { + "label": "汉南区", + "value": 1719 + }, { + "label": "蔡甸区", + "value": 1720 + }, { + "label": "江夏区", + "value": 1721 + }, { + "label": "黄陂区", + "value": 1722 + }, { + "label": "新洲区", + "value": 1723 + }], + [{ + "label": "黄石港区", + "value": 1725 + }, { + "label": "西塞山区", + "value": 1726 + }, { + "label": "下陆区", + "value": 1727 + }, { + "label": "铁山区", + "value": 1728 + }, { + "label": "阳新县", + "value": 1729 + }, { + "label": "大冶市", + "value": 1730 + }], + [{ + "label": "茅箭区", + "value": 1732 + }, { + "label": "张湾区", + "value": 1733 + }, { + "label": "郧阳区", + "value": 1734 + }, { + "label": "郧西县", + "value": 1735 + }, { + "label": "竹山县", + "value": 1736 + }, { + "label": "竹溪县", + "value": 1737 + }, { + "label": "房县", + "value": 1738 + }, { + "label": "丹江口市", + "value": 1739 + }], + [{ + "label": "西陵区", + "value": 1741 + }, { + "label": "伍家岗区", + "value": 1742 + }, { + "label": "点军区", + "value": 1743 + }, { + "label": "猇亭区", + "value": 1744 + }, { + "label": "夷陵区", + "value": 1745 + }, { + "label": "远安县", + "value": 1746 + }, { + "label": "兴山县", + "value": 1747 + }, { + "label": "秭归县", + "value": 1748 + }, { + "label": "长阳土家族自治县", + "value": 1749 + }, { + "label": "五峰土家族自治县", + "value": 1750 + }, { + "label": "宜都市", + "value": 1751 + }, { + "label": "当阳市", + "value": 1752 + }, { + "label": "枝江市", + "value": 1753 + }], + [{ + "label": "襄城区", + "value": 1755 + }, { + "label": "樊城区", + "value": 1756 + }, { + "label": "襄州区", + "value": 1757 + }, { + "label": "南漳县", + "value": 1758 + }, { + "label": "谷城县", + "value": 1759 + }, { + "label": "保康县", + "value": 1760 + }, { + "label": "老河口市", + "value": 1761 + }, { + "label": "枣阳市", + "value": 1762 + }, { + "label": "宜城市", + "value": 1763 + }], + [{ + "label": "梁子湖区", + "value": 1765 + }, { + "label": "华容区", + "value": 1766 + }, { + "label": "鄂城区", + "value": 1767 + }], + [{ + "label": "东宝区", + "value": 1769 + }, { + "label": "掇刀区", + "value": 1770 + }, { + "label": "京山县", + "value": 1771 + }, { + "label": "沙洋县", + "value": 1772 + }, { + "label": "钟祥市", + "value": 1773 + }], + [{ + "label": "孝南区", + "value": 1775 + }, { + "label": "孝昌县", + "value": 1776 + }, { + "label": "大悟县", + "value": 1777 + }, { + "label": "云梦县", + "value": 1778 + }, { + "label": "应城市", + "value": 1779 + }, { + "label": "安陆市", + "value": 1780 + }, { + "label": "汉川市", + "value": 1781 + }], + [{ + "label": "沙市区", + "value": 1783 + }, { + "label": "荆州区", + "value": 1784 + }, { + "label": "公安县", + "value": 1785 + }, { + "label": "监利县", + "value": 1786 + }, { + "label": "江陵县", + "value": 1787 + }, { + "label": "石首市", + "value": 1788 + }, { + "label": "洪湖市", + "value": 1789 + }, { + "label": "松滋市", + "value": 1790 + }], + [{ + "label": "黄州区", + "value": 1792 + }, { + "label": "团风县", + "value": 1793 + }, { + "label": "红安县", + "value": 1794 + }, { + "label": "罗田县", + "value": 1795 + }, { + "label": "英山县", + "value": 1796 + }, { + "label": "浠水县", + "value": 1797 + }, { + "label": "蕲春县", + "value": 1798 + }, { + "label": "黄梅县", + "value": 1799 + }, { + "label": "麻城市", + "value": 1800 + }, { + "label": "武穴市", + "value": 1801 + }], + [{ + "label": "咸安区", + "value": 1803 + }, { + "label": "嘉鱼县", + "value": 1804 + }, { + "label": "通城县", + "value": 1805 + }, { + "label": "崇阳县", + "value": 1806 + }, { + "label": "通山县", + "value": 1807 + }, { + "label": "赤壁市", + "value": 1808 + }], + [{ + "label": "曾都区", + "value": 1810 + }, { + "label": "随县", + "value": 1811 + }, { + "label": "广水市", + "value": 1812 + }], + [{ + "label": "恩施市", + "value": 1814 + }, { + "label": "利川市", + "value": 1815 + }, { + "label": "建始县", + "value": 1816 + }, { + "label": "巴东县", + "value": 1817 + }, { + "label": "宣恩县", + "value": 1818 + }, { + "label": "咸丰县", + "value": 1819 + }, { + "label": "来凤县", + "value": 1820 + }, { + "label": "鹤峰县", + "value": 1821 + }], + [{ + "label": "仙桃市", + "value": 1823 + }, { + "label": "潜江市", + "value": 1824 + }, { + "label": "天门市", + "value": 1825 + }, { + "label": "神农架林区", + "value": 1826 + }] + ], + [ + [{ + "label": "芙蓉区", + "value": 1829 + }, { + "label": "天心区", + "value": 1830 + }, { + "label": "岳麓区", + "value": 1831 + }, { + "label": "开福区", + "value": 1832 + }, { + "label": "雨花区", + "value": 1833 + }, { + "label": "望城区", + "value": 1834 + }, { + "label": "长沙县", + "value": 1835 + }, { + "label": "宁乡县", + "value": 1836 + }, { + "label": "浏阳市", + "value": 1837 + }], + [{ + "label": "荷塘区", + "value": 1839 + }, { + "label": "芦淞区", + "value": 1840 + }, { + "label": "石峰区", + "value": 1841 + }, { + "label": "天元区", + "value": 1842 + }, { + "label": "株洲县", + "value": 1843 + }, { + "label": "攸县", + "value": 1844 + }, { + "label": "茶陵县", + "value": 1845 + }, { + "label": "炎陵县", + "value": 1846 + }, { + "label": "醴陵市", + "value": 1847 + }], + [{ + "label": "雨湖区", + "value": 1849 + }, { + "label": "岳塘区", + "value": 1850 + }, { + "label": "湘潭县", + "value": 1851 + }, { + "label": "湘乡市", + "value": 1852 + }, { + "label": "韶山市", + "value": 1853 + }], + [{ + "label": "珠晖区", + "value": 1855 + }, { + "label": "雁峰区", + "value": 1856 + }, { + "label": "石鼓区", + "value": 1857 + }, { + "label": "蒸湘区", + "value": 1858 + }, { + "label": "南岳区", + "value": 1859 + }, { + "label": "衡阳县", + "value": 1860 + }, { + "label": "衡南县", + "value": 1861 + }, { + "label": "衡山县", + "value": 1862 + }, { + "label": "衡东县", + "value": 1863 + }, { + "label": "祁东县", + "value": 1864 + }, { + "label": "耒阳市", + "value": 1865 + }, { + "label": "常宁市", + "value": 1866 + }], + [{ + "label": "双清区", + "value": 1868 + }, { + "label": "大祥区", + "value": 1869 + }, { + "label": "北塔区", + "value": 1870 + }, { + "label": "邵东县", + "value": 1871 + }, { + "label": "新邵县", + "value": 1872 + }, { + "label": "邵阳县", + "value": 1873 + }, { + "label": "隆回县", + "value": 1874 + }, { + "label": "洞口县", + "value": 1875 + }, { + "label": "绥宁县", + "value": 1876 + }, { + "label": "新宁县", + "value": 1877 + }, { + "label": "城步苗族自治县", + "value": 1878 + }, { + "label": "武冈市", + "value": 1879 + }], + [{ + "label": "岳阳楼区", + "value": 1881 + }, { + "label": "云溪区", + "value": 1882 + }, { + "label": "君山区", + "value": 1883 + }, { + "label": "岳阳县", + "value": 1884 + }, { + "label": "华容县", + "value": 1885 + }, { + "label": "湘阴县", + "value": 1886 + }, { + "label": "平江县", + "value": 1887 + }, { + "label": "汨罗市", + "value": 1888 + }, { + "label": "临湘市", + "value": 1889 + }], + [{ + "label": "武陵区", + "value": 1891 + }, { + "label": "鼎城区", + "value": 1892 + }, { + "label": "安乡县", + "value": 1893 + }, { + "label": "汉寿县", + "value": 1894 + }, { + "label": "澧县", + "value": 1895 + }, { + "label": "临澧县", + "value": 1896 + }, { + "label": "桃源县", + "value": 1897 + }, { + "label": "石门县", + "value": 1898 + }, { + "label": "津市市", + "value": 1899 + }], + [{ + "label": "永定区", + "value": 1901 + }, { + "label": "武陵源区", + "value": 1902 + }, { + "label": "慈利县", + "value": 1903 + }, { + "label": "桑植县", + "value": 1904 + }], + [{ + "label": "资阳区", + "value": 1906 + }, { + "label": "赫山区", + "value": 1907 + }, { + "label": "南县", + "value": 1908 + }, { + "label": "桃江县", + "value": 1909 + }, { + "label": "安化县", + "value": 1910 + }, { + "label": "沅江市", + "value": 1911 + }], + [{ + "label": "北湖区", + "value": 1913 + }, { + "label": "苏仙区", + "value": 1914 + }, { + "label": "桂阳县", + "value": 1915 + }, { + "label": "宜章县", + "value": 1916 + }, { + "label": "永兴县", + "value": 1917 + }, { + "label": "嘉禾县", + "value": 1918 + }, { + "label": "临武县", + "value": 1919 + }, { + "label": "汝城县", + "value": 1920 + }, { + "label": "桂东县", + "value": 1921 + }, { + "label": "安仁县", + "value": 1922 + }, { + "label": "资兴市", + "value": 1923 + }], + [{ + "label": "零陵区", + "value": 1925 + }, { + "label": "冷水滩区", + "value": 1926 + }, { + "label": "祁阳县", + "value": 1927 + }, { + "label": "东安县", + "value": 1928 + }, { + "label": "双牌县", + "value": 1929 + }, { + "label": "道县", + "value": 1930 + }, { + "label": "江永县", + "value": 1931 + }, { + "label": "宁远县", + "value": 1932 + }, { + "label": "蓝山县", + "value": 1933 + }, { + "label": "新田县", + "value": 1934 + }, { + "label": "江华瑶族自治县", + "value": 1935 + }], + [{ + "label": "鹤城区", + "value": 1937 + }, { + "label": "中方县", + "value": 1938 + }, { + "label": "沅陵县", + "value": 1939 + }, { + "label": "辰溪县", + "value": 1940 + }, { + "label": "溆浦县", + "value": 1941 + }, { + "label": "会同县", + "value": 1942 + }, { + "label": "麻阳苗族自治县", + "value": 1943 + }, { + "label": "新晃侗族自治县", + "value": 1944 + }, { + "label": "芷江侗族自治县", + "value": 1945 + }, { + "label": "靖州苗族侗族自治县", + "value": 1946 + }, { + "label": "通道侗族自治县", + "value": 1947 + }, { + "label": "洪江市", + "value": 1948 + }], + [{ + "label": "娄星区", + "value": 1950 + }, { + "label": "双峰县", + "value": 1951 + }, { + "label": "新化县", + "value": 1952 + }, { + "label": "冷水江市", + "value": 1953 + }, { + "label": "涟源市", + "value": 1954 + }], + [{ + "label": "吉首市", + "value": 1956 + }, { + "label": "泸溪县", + "value": 1957 + }, { + "label": "凤凰县", + "value": 1958 + }, { + "label": "花垣县", + "value": 1959 + }, { + "label": "保靖县", + "value": 1960 + }, { + "label": "古丈县", + "value": 1961 + }, { + "label": "永顺县", + "value": 1962 + }, { + "label": "龙山县", + "value": 1963 + }] + ], + [ + [{ + "label": "荔湾区", + "value": 1966 + }, { + "label": "越秀区", + "value": 1967 + }, { + "label": "海珠区", + "value": 1968 + }, { + "label": "天河区", + "value": 1969 + }, { + "label": "白云区", + "value": 1970 + }, { + "label": "黄埔区", + "value": 1971 + }, { + "label": "番禺区", + "value": 1972 + }, { + "label": "花都区", + "value": 1973 + }, { + "label": "南沙区", + "value": 1974 + }, { + "label": "从化区", + "value": 1975 + }, { + "label": "增城区", + "value": 1976 + }], + [{ + "label": "武江区", + "value": 1978 + }, { + "label": "浈江区", + "value": 1979 + }, { + "label": "曲江区", + "value": 1980 + }, { + "label": "始兴县", + "value": 1981 + }, { + "label": "仁化县", + "value": 1982 + }, { + "label": "翁源县", + "value": 1983 + }, { + "label": "乳源瑶族自治县", + "value": 1984 + }, { + "label": "新丰县", + "value": 1985 + }, { + "label": "乐昌市", + "value": 1986 + }, { + "label": "南雄市", + "value": 1987 + }], + [{ + "label": "罗湖区", + "value": 1989 + }, { + "label": "福田区", + "value": 1990 + }, { + "label": "南山区", + "value": 1991 + }, { + "label": "宝安区", + "value": 1992 + }, { + "label": "龙岗区", + "value": 1993 + }, { + "label": "盐田区", + "value": 1994 + }, { + "label": "光明新区", + "value": 1995 + }, { + "label": "坪山新区", + "value": 1996 + }, { + "label": "大鹏新区", + "value": 1997 + }, { + "label": "龙华新区", + "value": 1998 + }], + [{ + "label": "香洲区", + "value": 2000 + }, { + "label": "斗门区", + "value": 2001 + }, { + "label": "金湾区", + "value": 2002 + }], + [{ + "label": "龙湖区", + "value": 2004 + }, { + "label": "金平区", + "value": 2005 + }, { + "label": "濠江区", + "value": 2006 + }, { + "label": "潮阳区", + "value": 2007 + }, { + "label": "潮南区", + "value": 2008 + }, { + "label": "澄海区", + "value": 2009 + }, { + "label": "南澳县", + "value": 2010 + }], + [{ + "label": "禅城区", + "value": 2012 + }, { + "label": "南海区", + "value": 2013 + }, { + "label": "顺德区", + "value": 2014 + }, { + "label": "三水区", + "value": 2015 + }, { + "label": "高明区", + "value": 2016 + }], + [{ + "label": "蓬江区", + "value": 2018 + }, { + "label": "江海区", + "value": 2019 + }, { + "label": "新会区", + "value": 2020 + }, { + "label": "台山市", + "value": 2021 + }, { + "label": "开平市", + "value": 2022 + }, { + "label": "鹤山市", + "value": 2023 + }, { + "label": "恩平市", + "value": 2024 + }], + [{ + "label": "赤坎区", + "value": 2026 + }, { + "label": "霞山区", + "value": 2027 + }, { + "label": "坡头区", + "value": 2028 + }, { + "label": "麻章区", + "value": 2029 + }, { + "label": "遂溪县", + "value": 2030 + }, { + "label": "徐闻县", + "value": 2031 + }, { + "label": "廉江市", + "value": 2032 + }, { + "label": "雷州市", + "value": 2033 + }, { + "label": "吴川市", + "value": 2034 + }], + [{ + "label": "茂南区", + "value": 2036 + }, { + "label": "电白区", + "value": 2037 + }, { + "label": "高州市", + "value": 2038 + }, { + "label": "化州市", + "value": 2039 + }, { + "label": "信宜市", + "value": 2040 + }], + [{ + "label": "端州区", + "value": 2042 + }, { + "label": "鼎湖区", + "value": 2043 + }, { + "label": "广宁县", + "value": 2044 + }, { + "label": "怀集县", + "value": 2045 + }, { + "label": "封开县", + "value": 2046 + }, { + "label": "德庆县", + "value": 2047 + }, { + "label": "高要市", + "value": 2048 + }, { + "label": "四会市", + "value": 2049 + }], + [{ + "label": "惠城区", + "value": 2051 + }, { + "label": "惠阳区", + "value": 2052 + }, { + "label": "博罗县", + "value": 2053 + }, { + "label": "惠东县", + "value": 2054 + }, { + "label": "龙门县", + "value": 2055 + }], + [{ + "label": "梅江区", + "value": 2057 + }, { + "label": "梅县区", + "value": 2058 + }, { + "label": "大埔县", + "value": 2059 + }, { + "label": "丰顺县", + "value": 2060 + }, { + "label": "五华县", + "value": 2061 + }, { + "label": "平远县", + "value": 2062 + }, { + "label": "蕉岭县", + "value": 2063 + }, { + "label": "兴宁市", + "value": 2064 + }], + [{ + "label": "城区", + "value": 2066 + }, { + "label": "海丰县", + "value": 2067 + }, { + "label": "陆河县", + "value": 2068 + }, { + "label": "陆丰市", + "value": 2069 + }], + [{ + "label": "源城区", + "value": 2071 + }, { + "label": "紫金县", + "value": 2072 + }, { + "label": "龙川县", + "value": 2073 + }, { + "label": "连平县", + "value": 2074 + }, { + "label": "和平县", + "value": 2075 + }, { + "label": "东源县", + "value": 2076 + }], + [{ + "label": "江城区", + "value": 2078 + }, { + "label": "阳东区", + "value": 2079 + }, { + "label": "阳西县", + "value": 2080 + }, { + "label": "阳春市", + "value": 2081 + }], + [{ + "label": "清城区", + "value": 2083 + }, { + "label": "清新区", + "value": 2084 + }, { + "label": "佛冈县", + "value": 2085 + }, { + "label": "阳山县", + "value": 2086 + }, { + "label": "连山壮族瑶族自治县", + "value": 2087 + }, { + "label": "连南瑶族自治县", + "value": 2088 + }, { + "label": "英德市", + "value": 2089 + }, { + "label": "连州市", + "value": 2090 + }], + [{ + "label": "莞城区", + "value": 2092 + }, { + "label": "南城区", + "value": 2093 + }, { + "label": "万江区", + "value": 2094 + }, { + "label": "石碣镇", + "value": 2095 + }, { + "label": "石龙镇", + "value": 2096 + }, { + "label": "茶山镇", + "value": 2097 + }, { + "label": "石排镇", + "value": 2098 + }, { + "label": "企石镇", + "value": 2099 + }, { + "label": "横沥镇", + "value": 2100 + }, { + "label": "桥头镇", + "value": 2101 + }, { + "label": "谢岗镇", + "value": 2102 + }, { + "label": "东坑镇", + "value": 2103 + }, { + "label": "常平镇", + "value": 2104 + }, { + "label": "寮步镇", + "value": 2105 + }, { + "label": "大朗镇", + "value": 2106 + }, { + "label": "麻涌镇", + "value": 2107 + }, { + "label": "中堂镇", + "value": 2108 + }, { + "label": "高埗镇", + "value": 2109 + }, { + "label": "樟木头镇", + "value": 2110 + }, { + "label": "大岭山镇", + "value": 2111 + }, { + "label": "望牛墩镇", + "value": 2112 + }, { + "label": "黄江镇", + "value": 2113 + }, { + "label": "洪梅镇", + "value": 2114 + }, { + "label": "清溪镇", + "value": 2115 + }, { + "label": "沙田镇", + "value": 2116 + }, { + "label": "道滘镇", + "value": 2117 + }, { + "label": "塘厦镇", + "value": 2118 + }, { + "label": "虎门镇", + "value": 2119 + }, { + "label": "厚街镇", + "value": 2120 + }, { + "label": "凤岗镇", + "value": 2121 + }, { + "label": "长安镇", + "value": 2122 + }], + [{ + "label": "石岐区", + "value": 2124 + }, { + "label": "南区", + "value": 2125 + }, { + "label": "五桂山区", + "value": 2126 + }, { + "label": "火炬开发区", + "value": 2127 + }, { + "label": "黄圃镇", + "value": 2128 + }, { + "label": "南头镇", + "value": 2129 + }, { + "label": "东凤镇", + "value": 2130 + }, { + "label": "阜沙镇", + "value": 2131 + }, { + "label": "小榄镇", + "value": 2132 + }, { + "label": "东升镇", + "value": 2133 + }, { + "label": "古镇镇", + "value": 2134 + }, { + "label": "横栏镇", + "value": 2135 + }, { + "label": "三角镇", + "value": 2136 + }, { + "label": "民众镇", + "value": 2137 + }, { + "label": "南朗镇", + "value": 2138 + }, { + "label": "港口镇", + "value": 2139 + }, { + "label": "大涌镇", + "value": 2140 + }, { + "label": "沙溪镇", + "value": 2141 + }, { + "label": "三乡镇", + "value": 2142 + }, { + "label": "板芙镇", + "value": 2143 + }, { + "label": "神湾镇", + "value": 2144 + }, { + "label": "坦洲镇", + "value": 2145 + }], + [{ + "label": "湘桥区", + "value": 2147 + }, { + "label": "潮安区", + "value": 2148 + }, { + "label": "饶平县", + "value": 2149 + }], + [{ + "label": "榕城区", + "value": 2151 + }, { + "label": "揭东区", + "value": 2152 + }, { + "label": "揭西县", + "value": 2153 + }, { + "label": "惠来县", + "value": 2154 + }, { + "label": "普宁市", + "value": 2155 + }], + [{ + "label": "云城区", + "value": 2157 + }, { + "label": "云安区", + "value": 2158 + }, { + "label": "新兴县", + "value": 2159 + }, { + "label": "郁南县", + "value": 2160 + }, { + "label": "罗定市", + "value": 2161 + }] + ], + [ + [{ + "label": "兴宁区", + "value": 2164 + }, { + "label": "青秀区", + "value": 2165 + }, { + "label": "江南区", + "value": 2166 + }, { + "label": "西乡塘区", + "value": 2167 + }, { + "label": "良庆区", + "value": 2168 + }, { + "label": "邕宁区", + "value": 2169 + }, { + "label": "武鸣县", + "value": 2170 + }, { + "label": "隆安县", + "value": 2171 + }, { + "label": "马山县", + "value": 2172 + }, { + "label": "上林县", + "value": 2173 + }, { + "label": "宾阳县", + "value": 2174 + }, { + "label": "横县", + "value": 2175 + }, { + "label": "埌东新区", + "value": 2176 + }], + [{ + "label": "城中区", + "value": 2178 + }, { + "label": "鱼峰区", + "value": 2179 + }, { + "label": "柳南区", + "value": 2180 + }, { + "label": "柳北区", + "value": 2181 + }, { + "label": "柳江县", + "value": 2182 + }, { + "label": "柳城县", + "value": 2183 + }, { + "label": "鹿寨县", + "value": 2184 + }, { + "label": "融安县", + "value": 2185 + }, { + "label": "融水苗族自治县", + "value": 2186 + }, { + "label": "三江侗族自治县", + "value": 2187 + }, { + "label": "柳东新区", + "value": 2188 + }], + [{ + "label": "秀峰区", + "value": 2190 + }, { + "label": "叠彩区", + "value": 2191 + }, { + "label": "象山区", + "value": 2192 + }, { + "label": "七星区", + "value": 2193 + }, { + "label": "雁山区", + "value": 2194 + }, { + "label": "临桂区", + "value": 2195 + }, { + "label": "阳朔县", + "value": 2196 + }, { + "label": "灵川县", + "value": 2197 + }, { + "label": "全州县", + "value": 2198 + }, { + "label": "兴安县", + "value": 2199 + }, { + "label": "永福县", + "value": 2200 + }, { + "label": "灌阳县", + "value": 2201 + }, { + "label": "龙胜各族自治县", + "value": 2202 + }, { + "label": "资源县", + "value": 2203 + }, { + "label": "平乐县", + "value": 2204 + }, { + "label": "荔浦县", + "value": 2205 + }, { + "label": "恭城瑶族自治县", + "value": 2206 + }], + [{ + "label": "万秀区", + "value": 2208 + }, { + "label": "长洲区", + "value": 2209 + }, { + "label": "龙圩区", + "value": 2210 + }, { + "label": "苍梧县", + "value": 2211 + }, { + "label": "藤县", + "value": 2212 + }, { + "label": "蒙山县", + "value": 2213 + }, { + "label": "岑溪市", + "value": 2214 + }], + [{ + "label": "海城区", + "value": 2216 + }, { + "label": "银海区", + "value": 2217 + }, { + "label": "铁山港区", + "value": 2218 + }, { + "label": "合浦县", + "value": 2219 + }], + [{ + "label": "港口区", + "value": 2221 + }, { + "label": "防城区", + "value": 2222 + }, { + "label": "上思县", + "value": 2223 + }, { + "label": "东兴市", + "value": 2224 + }], + [{ + "label": "钦南区", + "value": 2226 + }, { + "label": "钦北区", + "value": 2227 + }, { + "label": "灵山县", + "value": 2228 + }, { + "label": "浦北县", + "value": 2229 + }], + [{ + "label": "港北区", + "value": 2231 + }, { + "label": "港南区", + "value": 2232 + }, { + "label": "覃塘区", + "value": 2233 + }, { + "label": "平南县", + "value": 2234 + }, { + "label": "桂平市", + "value": 2235 + }], + [{ + "label": "玉州区", + "value": 2237 + }, { + "label": "福绵区", + "value": 2238 + }, { + "label": "玉东新区", + "value": 2239 + }, { + "label": "容县", + "value": 2240 + }, { + "label": "陆川县", + "value": 2241 + }, { + "label": "博白县", + "value": 2242 + }, { + "label": "兴业县", + "value": 2243 + }, { + "label": "北流市", + "value": 2244 + }], + [{ + "label": "右江区", + "value": 2246 + }, { + "label": "田阳县", + "value": 2247 + }, { + "label": "田东县", + "value": 2248 + }, { + "label": "平果县", + "value": 2249 + }, { + "label": "德保县", + "value": 2250 + }, { + "label": "靖西县", + "value": 2251 + }, { + "label": "那坡县", + "value": 2252 + }, { + "label": "凌云县", + "value": 2253 + }, { + "label": "乐业县", + "value": 2254 + }, { + "label": "田林县", + "value": 2255 + }, { + "label": "西林县", + "value": 2256 + }, { + "label": "隆林各族自治县", + "value": 2257 + }], + [{ + "label": "八步区", + "value": 2259 + }, { + "label": "昭平县", + "value": 2260 + }, { + "label": "钟山县", + "value": 2261 + }, { + "label": "富川瑶族自治县", + "value": 2262 + }, { + "label": "平桂管理区", + "value": 2263 + }], + [{ + "label": "金城江区", + "value": 2265 + }, { + "label": "南丹县", + "value": 2266 + }, { + "label": "天峨县", + "value": 2267 + }, { + "label": "凤山县", + "value": 2268 + }, { + "label": "东兰县", + "value": 2269 + }, { + "label": "罗城仫佬族自治县", + "value": 2270 + }, { + "label": "环江毛南族自治县", + "value": 2271 + }, { + "label": "巴马瑶族自治县", + "value": 2272 + }, { + "label": "都安瑶族自治县", + "value": 2273 + }, { + "label": "大化瑶族自治县", + "value": 2274 + }, { + "label": "宜州市", + "value": 2275 + }], + [{ + "label": "兴宾区", + "value": 2277 + }, { + "label": "忻城县", + "value": 2278 + }, { + "label": "象州县", + "value": 2279 + }, { + "label": "武宣县", + "value": 2280 + }, { + "label": "金秀瑶族自治县", + "value": 2281 + }, { + "label": "合山市", + "value": 2282 + }], + [{ + "label": "江州区", + "value": 2284 + }, { + "label": "扶绥县", + "value": 2285 + }, { + "label": "宁明县", + "value": 2286 + }, { + "label": "龙州县", + "value": 2287 + }, { + "label": "大新县", + "value": 2288 + }, { + "label": "天等县", + "value": 2289 + }, { + "label": "凭祥市", + "value": 2290 + }] + ], + [ + [{ + "label": "秀英区", + "value": 2293 + }, { + "label": "龙华区", + "value": 2294 + }, { + "label": "琼山区", + "value": 2295 + }, { + "label": "美兰区", + "value": 2296 + }], + [{ + "label": "海棠区", + "value": 2298 + }, { + "label": "吉阳区", + "value": 2299 + }, { + "label": "天涯区", + "value": 2300 + }, { + "label": "崖州区", + "value": 2301 + }], + [{ + "label": "西沙群岛", + "value": 2303 + }, { + "label": "南沙群岛", + "value": 2304 + }, { + "label": "中沙群岛", + "value": 2305 + }], + [{ + "label": "五指山市", + "value": 2307 + }, { + "label": "琼海市", + "value": 2308 + }, { + "label": "儋州市", + "value": 2309 + }, { + "label": "文昌市", + "value": 2310 + }, { + "label": "万宁市", + "value": 2311 + }, { + "label": "东方市", + "value": 2312 + }, { + "label": "定安县", + "value": 2313 + }, { + "label": "屯昌县", + "value": 2314 + }, { + "label": "澄迈县", + "value": 2315 + }, { + "label": "临高县", + "value": 2316 + }, { + "label": "白沙黎族自治县", + "value": 2317 + }, { + "label": "昌江黎族自治县", + "value": 2318 + }, { + "label": "乐东黎族自治县", + "value": 2319 + }, { + "label": "陵水黎族自治县", + "value": 2320 + }, { + "label": "保亭黎族苗族自治县", + "value": 2321 + }, { + "label": "琼中黎族苗族自治县", + "value": 2322 + }] + ], + [ + [{ + "label": "万州区", + "value": 2325 + }, { + "label": "涪陵区", + "value": 2326 + }, { + "label": "渝中区", + "value": 2327 + }, { + "label": "大渡口区", + "value": 2328 + }, { + "label": "江北区", + "value": 2329 + }, { + "label": "沙坪坝区", + "value": 2330 + }, { + "label": "九龙坡区", + "value": 2331 + }, { + "label": "南岸区", + "value": 2332 + }, { + "label": "北碚区", + "value": 2333 + }, { + "label": "綦江区", + "value": 2334 + }, { + "label": "大足区", + "value": 2335 + }, { + "label": "渝北区", + "value": 2336 + }, { + "label": "巴南区", + "value": 2337 + }, { + "label": "黔江区", + "value": 2338 + }, { + "label": "长寿区", + "value": 2339 + }, { + "label": "江津区", + "value": 2340 + }, { + "label": "合川区", + "value": 2341 + }, { + "label": "永川区", + "value": 2342 + }, { + "label": "南川区", + "value": 2343 + }, { + "label": "璧山区", + "value": 2344 + }, { + "label": "铜梁区", + "value": 2345 + }, { + "label": "潼南县", + "value": 2346 + }, { + "label": "荣昌县", + "value": 2347 + }, { + "label": "梁平县", + "value": 2348 + }, { + "label": "城口县", + "value": 2349 + }, { + "label": "丰都县", + "value": 2350 + }, { + "label": "垫江县", + "value": 2351 + }, { + "label": "武隆县", + "value": 2352 + }, { + "label": "忠县", + "value": 2353 + }, { + "label": "开县", + "value": 2354 + }, { + "label": "云阳县", + "value": 2355 + }, { + "label": "奉节县", + "value": 2356 + }, { + "label": "巫山县", + "value": 2357 + }, { + "label": "巫溪县", + "value": 2358 + }, { + "label": "石柱土家族自治县", + "value": 2359 + }, { + "label": "秀山土家族苗族自治县", + "value": 2360 + }, { + "label": "酉阳土家族苗族自治县", + "value": 2361 + }, { + "label": "彭水苗族土家族自治县", + "value": 2362 + }], + [{ + "label": "北部新区", + "value": 2364 + }, { + "label": "保税港区", + "value": 2365 + }, { + "label": "工业园区", + "value": 2366 + }] + ], + [ + [{ + "label": "锦江区", + "value": 2369 + }, { + "label": "青羊区", + "value": 2370 + }, { + "label": "金牛区", + "value": 2371 + }, { + "label": "武侯区", + "value": 2372 + }, { + "label": "成华区", + "value": 2373 + }, { + "label": "龙泉驿区", + "value": 2374 + }, { + "label": "青白江区", + "value": 2375 + }, { + "label": "新都区", + "value": 2376 + }, { + "label": "温江区", + "value": 2377 + }, { + "label": "金堂县", + "value": 2378 + }, { + "label": "双流县", + "value": 2379 + }, { + "label": "郫县", + "value": 2380 + }, { + "label": "大邑县", + "value": 2381 + }, { + "label": "蒲江县", + "value": 2382 + }, { + "label": "新津县", + "value": 2383 + }, { + "label": "都江堰市", + "value": 2384 + }, { + "label": "彭州市", + "value": 2385 + }, { + "label": "邛崃市", + "value": 2386 + }, { + "label": "崇州市", + "value": 2387 + }], + [{ + "label": "自流井区", + "value": 2389 + }, { + "label": "贡井区", + "value": 2390 + }, { + "label": "大安区", + "value": 2391 + }, { + "label": "沿滩区", + "value": 2392 + }, { + "label": "荣县", + "value": 2393 + }, { + "label": "富顺县", + "value": 2394 + }], + [{ + "label": "东区", + "value": 2396 + }, { + "label": "西区", + "value": 2397 + }, { + "label": "仁和区", + "value": 2398 + }, { + "label": "米易县", + "value": 2399 + }, { + "label": "盐边县", + "value": 2400 + }], + [{ + "label": "江阳区", + "value": 2402 + }, { + "label": "纳溪区", + "value": 2403 + }, { + "label": "龙马潭区", + "value": 2404 + }, { + "label": "泸县", + "value": 2405 + }, { + "label": "合江县", + "value": 2406 + }, { + "label": "叙永县", + "value": 2407 + }, { + "label": "古蔺县", + "value": 2408 + }], + [{ + "label": "旌阳区", + "value": 2410 + }, { + "label": "中江县", + "value": 2411 + }, { + "label": "罗江县", + "value": 2412 + }, { + "label": "广汉市", + "value": 2413 + }, { + "label": "什邡市", + "value": 2414 + }, { + "label": "绵竹市", + "value": 2415 + }], + [{ + "label": "涪城区", + "value": 2417 + }, { + "label": "游仙区", + "value": 2418 + }, { + "label": "三台县", + "value": 2419 + }, { + "label": "盐亭县", + "value": 2420 + }, { + "label": "安县", + "value": 2421 + }, { + "label": "梓潼县", + "value": 2422 + }, { + "label": "北川羌族自治县", + "value": 2423 + }, { + "label": "平武县", + "value": 2424 + }, { + "label": "江油市", + "value": 2425 + }], + [{ + "label": "利州区", + "value": 2427 + }, { + "label": "昭化区", + "value": 2428 + }, { + "label": "朝天区", + "value": 2429 + }, { + "label": "旺苍县", + "value": 2430 + }, { + "label": "青川县", + "value": 2431 + }, { + "label": "剑阁县", + "value": 2432 + }, { + "label": "苍溪县", + "value": 2433 + }], + [{ + "label": "船山区", + "value": 2435 + }, { + "label": "安居区", + "value": 2436 + }, { + "label": "蓬溪县", + "value": 2437 + }, { + "label": "射洪县", + "value": 2438 + }, { + "label": "大英县", + "value": 2439 + }], + [{ + "label": "市中区", + "value": 2441 + }, { + "label": "东兴区", + "value": 2442 + }, { + "label": "威远县", + "value": 2443 + }, { + "label": "资中县", + "value": 2444 + }, { + "label": "隆昌县", + "value": 2445 + }], + [{ + "label": "市中区", + "value": 2447 + }, { + "label": "沙湾区", + "value": 2448 + }, { + "label": "五通桥区", + "value": 2449 + }, { + "label": "金口河区", + "value": 2450 + }, { + "label": "犍为县", + "value": 2451 + }, { + "label": "井研县", + "value": 2452 + }, { + "label": "夹江县", + "value": 2453 + }, { + "label": "沐川县", + "value": 2454 + }, { + "label": "峨边彝族自治县", + "value": 2455 + }, { + "label": "马边彝族自治县", + "value": 2456 + }, { + "label": "峨眉山市", + "value": 2457 + }], + [{ + "label": "顺庆区", + "value": 2459 + }, { + "label": "高坪区", + "value": 2460 + }, { + "label": "嘉陵区", + "value": 2461 + }, { + "label": "南部县", + "value": 2462 + }, { + "label": "营山县", + "value": 2463 + }, { + "label": "蓬安县", + "value": 2464 + }, { + "label": "仪陇县", + "value": 2465 + }, { + "label": "西充县", + "value": 2466 + }, { + "label": "阆中市", + "value": 2467 + }], + [{ + "label": "东坡区", + "value": 2469 + }, { + "label": "彭山区", + "value": 2470 + }, { + "label": "仁寿县", + "value": 2471 + }, { + "label": "洪雅县", + "value": 2472 + }, { + "label": "丹棱县", + "value": 2473 + }, { + "label": "青神县", + "value": 2474 + }], + [{ + "label": "翠屏区", + "value": 2476 + }, { + "label": "南溪区", + "value": 2477 + }, { + "label": "宜宾县", + "value": 2478 + }, { + "label": "江安县", + "value": 2479 + }, { + "label": "长宁县", + "value": 2480 + }, { + "label": "高县", + "value": 2481 + }, { + "label": "珙县", + "value": 2482 + }, { + "label": "筠连县", + "value": 2483 + }, { + "label": "兴文县", + "value": 2484 + }, { + "label": "屏山县", + "value": 2485 + }], + [{ + "label": "广安区", + "value": 2487 + }, { + "label": "前锋区", + "value": 2488 + }, { + "label": "岳池县", + "value": 2489 + }, { + "label": "武胜县", + "value": 2490 + }, { + "label": "邻水县", + "value": 2491 + }, { + "label": "华蓥市", + "value": 2492 + }], + [{ + "label": "通川区", + "value": 2494 + }, { + "label": "达川区", + "value": 2495 + }, { + "label": "宣汉县", + "value": 2496 + }, { + "label": "开江县", + "value": 2497 + }, { + "label": "大竹县", + "value": 2498 + }, { + "label": "渠县", + "value": 2499 + }, { + "label": "万源市", + "value": 2500 + }], + [{ + "label": "雨城区", + "value": 2502 + }, { + "label": "名山区", + "value": 2503 + }, { + "label": "荥经县", + "value": 2504 + }, { + "label": "汉源县", + "value": 2505 + }, { + "label": "石棉县", + "value": 2506 + }, { + "label": "天全县", + "value": 2507 + }, { + "label": "芦山县", + "value": 2508 + }, { + "label": "宝兴县", + "value": 2509 + }], + [{ + "label": "巴州区", + "value": 2511 + }, { + "label": "恩阳区", + "value": 2512 + }, { + "label": "通江县", + "value": 2513 + }, { + "label": "南江县", + "value": 2514 + }, { + "label": "平昌县", + "value": 2515 + }], + [{ + "label": "雁江区", + "value": 2517 + }, { + "label": "安岳县", + "value": 2518 + }, { + "label": "乐至县", + "value": 2519 + }, { + "label": "简阳市", + "value": 2520 + }], + [{ + "label": "汶川县", + "value": 2522 + }, { + "label": "理县", + "value": 2523 + }, { + "label": "茂县", + "value": 2524 + }, { + "label": "松潘县", + "value": 2525 + }, { + "label": "九寨沟县", + "value": 2526 + }, { + "label": "金川县", + "value": 2527 + }, { + "label": "小金县", + "value": 2528 + }, { + "label": "黑水县", + "value": 2529 + }, { + "label": "马尔康县", + "value": 2530 + }, { + "label": "壤塘县", + "value": 2531 + }, { + "label": "阿坝县", + "value": 2532 + }, { + "label": "若尔盖县", + "value": 2533 + }, { + "label": "红原县", + "value": 2534 + }], + [{ + "label": "康定县", + "value": 2536 + }, { + "label": "泸定县", + "value": 2537 + }, { + "label": "丹巴县", + "value": 2538 + }, { + "label": "九龙县", + "value": 2539 + }, { + "label": "雅江县", + "value": 2540 + }, { + "label": "道孚县", + "value": 2541 + }, { + "label": "炉霍县", + "value": 2542 + }, { + "label": "甘孜县", + "value": 2543 + }, { + "label": "新龙县", + "value": 2544 + }, { + "label": "德格县", + "value": 2545 + }, { + "label": "白玉县", + "value": 2546 + }, { + "label": "石渠县", + "value": 2547 + }, { + "label": "色达县", + "value": 2548 + }, { + "label": "理塘县", + "value": 2549 + }, { + "label": "巴塘县", + "value": 2550 + }, { + "label": "乡城县", + "value": 2551 + }, { + "label": "稻城县", + "value": 2552 + }, { + "label": "得荣县", + "value": 2553 + }], + [{ + "label": "西昌市", + "value": 2555 + }, { + "label": "木里藏族自治县", + "value": 2556 + }, { + "label": "盐源县", + "value": 2557 + }, { + "label": "德昌县", + "value": 2558 + }, { + "label": "会理县", + "value": 2559 + }, { + "label": "会东县", + "value": 2560 + }, { + "label": "宁南县", + "value": 2561 + }, { + "label": "普格县", + "value": 2562 + }, { + "label": "布拖县", + "value": 2563 + }, { + "label": "金阳县", + "value": 2564 + }, { + "label": "昭觉县", + "value": 2565 + }, { + "label": "喜德县", + "value": 2566 + }, { + "label": "冕宁县", + "value": 2567 + }, { + "label": "越西县", + "value": 2568 + }, { + "label": "甘洛县", + "value": 2569 + }, { + "label": "美姑县", + "value": 2570 + }, { + "label": "雷波县", + "value": 2571 + }] + ], + [ + [{ + "label": "南明区", + "value": 2574 + }, { + "label": "云岩区", + "value": 2575 + }, { + "label": "花溪区", + "value": 2576 + }, { + "label": "乌当区", + "value": 2577 + }, { + "label": "白云区", + "value": 2578 + }, { + "label": "观山湖区", + "value": 2579 + }, { + "label": "开阳县", + "value": 2580 + }, { + "label": "息烽县", + "value": 2581 + }, { + "label": "修文县", + "value": 2582 + }, { + "label": "清镇市", + "value": 2583 + }], + [{ + "label": "钟山区", + "value": 2585 + }, { + "label": "六枝特区", + "value": 2586 + }, { + "label": "水城县", + "value": 2587 + }, { + "label": "盘县", + "value": 2588 + }], + [{ + "label": "红花岗区", + "value": 2590 + }, { + "label": "汇川区", + "value": 2591 + }, { + "label": "遵义县", + "value": 2592 + }, { + "label": "桐梓县", + "value": 2593 + }, { + "label": "绥阳县", + "value": 2594 + }, { + "label": "正安县", + "value": 2595 + }, { + "label": "道真仡佬族苗族自治县", + "value": 2596 + }, { + "label": "务川仡佬族苗族自治县", + "value": 2597 + }, { + "label": "凤冈县", + "value": 2598 + }, { + "label": "湄潭县", + "value": 2599 + }, { + "label": "余庆县", + "value": 2600 + }, { + "label": "习水县", + "value": 2601 + }, { + "label": "赤水市", + "value": 2602 + }, { + "label": "仁怀市", + "value": 2603 + }], + [{ + "label": "西秀区", + "value": 2605 + }, { + "label": "平坝区", + "value": 2606 + }, { + "label": "普定县", + "value": 2607 + }, { + "label": "镇宁布依族苗族自治县", + "value": 2608 + }, { + "label": "关岭布依族苗族自治县", + "value": 2609 + }, { + "label": "紫云苗族布依族自治县", + "value": 2610 + }], + [{ + "label": "七星关区", + "value": 2612 + }, { + "label": "大方县", + "value": 2613 + }, { + "label": "黔西县", + "value": 2614 + }, { + "label": "金沙县", + "value": 2615 + }, { + "label": "织金县", + "value": 2616 + }, { + "label": "纳雍县", + "value": 2617 + }, { + "label": "威宁彝族回族苗族自治县", + "value": 2618 + }, { + "label": "赫章县", + "value": 2619 + }], + [{ + "label": "碧江区", + "value": 2621 + }, { + "label": "万山区", + "value": 2622 + }, { + "label": "江口县", + "value": 2623 + }, { + "label": "玉屏侗族自治县", + "value": 2624 + }, { + "label": "石阡县", + "value": 2625 + }, { + "label": "思南县", + "value": 2626 + }, { + "label": "印江土家族苗族自治县", + "value": 2627 + }, { + "label": "德江县", + "value": 2628 + }, { + "label": "沿河土家族自治县", + "value": 2629 + }, { + "label": "松桃苗族自治县", + "value": 2630 + }], + [{ + "label": "兴义市 ", + "value": 2632 + }, { + "label": "兴仁县", + "value": 2633 + }, { + "label": "普安县", + "value": 2634 + }, { + "label": "晴隆县", + "value": 2635 + }, { + "label": "贞丰县", + "value": 2636 + }, { + "label": "望谟县", + "value": 2637 + }, { + "label": "册亨县", + "value": 2638 + }, { + "label": "安龙县", + "value": 2639 + }], + [{ + "label": "凯里市", + "value": 2641 + }, { + "label": "黄平县", + "value": 2642 + }, { + "label": "施秉县", + "value": 2643 + }, { + "label": "三穗县", + "value": 2644 + }, { + "label": "镇远县", + "value": 2645 + }, { + "label": "岑巩县", + "value": 2646 + }, { + "label": "天柱县", + "value": 2647 + }, { + "label": "锦屏县", + "value": 2648 + }, { + "label": "剑河县", + "value": 2649 + }, { + "label": "台江县", + "value": 2650 + }, { + "label": "黎平县", + "value": 2651 + }, { + "label": "榕江县", + "value": 2652 + }, { + "label": "从江县", + "value": 2653 + }, { + "label": "雷山县", + "value": 2654 + }, { + "label": "麻江县", + "value": 2655 + }, { + "label": "丹寨县", + "value": 2656 + }], + [{ + "label": "都匀市", + "value": 2658 + }, { + "label": "福泉市", + "value": 2659 + }, { + "label": "荔波县", + "value": 2660 + }, { + "label": "贵定县", + "value": 2661 + }, { + "label": "瓮安县", + "value": 2662 + }, { + "label": "独山县", + "value": 2663 + }, { + "label": "平塘县", + "value": 2664 + }, { + "label": "罗甸县", + "value": 2665 + }, { + "label": "长顺县", + "value": 2666 + }, { + "label": "龙里县", + "value": 2667 + }, { + "label": "惠水县", + "value": 2668 + }, { + "label": "三都水族自治县", + "value": 2669 + }] + ], + [ + [{ + "label": "五华区", + "value": 2672 + }, { + "label": "盘龙区", + "value": 2673 + }, { + "label": "官渡区", + "value": 2674 + }, { + "label": "西山区", + "value": 2675 + }, { + "label": "东川区", + "value": 2676 + }, { + "label": "呈贡区", + "value": 2677 + }, { + "label": "晋宁县", + "value": 2678 + }, { + "label": "富民县", + "value": 2679 + }, { + "label": "宜良县", + "value": 2680 + }, { + "label": "石林彝族自治县", + "value": 2681 + }, { + "label": "嵩明县", + "value": 2682 + }, { + "label": "禄劝彝族苗族自治县", + "value": 2683 + }, { + "label": "寻甸回族彝族自治县 ", + "value": 2684 + }, { + "label": "安宁市", + "value": 2685 + }], + [{ + "label": "麒麟区", + "value": 2687 + }, { + "label": "马龙县", + "value": 2688 + }, { + "label": "陆良县", + "value": 2689 + }, { + "label": "师宗县", + "value": 2690 + }, { + "label": "罗平县", + "value": 2691 + }, { + "label": "富源县", + "value": 2692 + }, { + "label": "会泽县", + "value": 2693 + }, { + "label": "沾益县", + "value": 2694 + }, { + "label": "宣威市", + "value": 2695 + }], + [{ + "label": "红塔区", + "value": 2697 + }, { + "label": "江川县", + "value": 2698 + }, { + "label": "澄江县", + "value": 2699 + }, { + "label": "通海县", + "value": 2700 + }, { + "label": "华宁县", + "value": 2701 + }, { + "label": "易门县", + "value": 2702 + }, { + "label": "峨山彝族自治县", + "value": 2703 + }, { + "label": "新平彝族傣族自治县", + "value": 2704 + }, { + "label": "元江哈尼族彝族傣族自治县", + "value": 2705 + }], + [{ + "label": "隆阳区", + "value": 2707 + }, { + "label": "施甸县", + "value": 2708 + }, { + "label": "腾冲县", + "value": 2709 + }, { + "label": "龙陵县", + "value": 2710 + }, { + "label": "昌宁县", + "value": 2711 + }], + [{ + "label": "昭阳区", + "value": 2713 + }, { + "label": "鲁甸县", + "value": 2714 + }, { + "label": "巧家县", + "value": 2715 + }, { + "label": "盐津县", + "value": 2716 + }, { + "label": "大关县", + "value": 2717 + }, { + "label": "永善县", + "value": 2718 + }, { + "label": "绥江县", + "value": 2719 + }, { + "label": "镇雄县", + "value": 2720 + }, { + "label": "彝良县", + "value": 2721 + }, { + "label": "威信县", + "value": 2722 + }, { + "label": "水富县", + "value": 2723 + }], + [{ + "label": "古城区", + "value": 2725 + }, { + "label": "玉龙纳西族自治县", + "value": 2726 + }, { + "label": "永胜县", + "value": 2727 + }, { + "label": "华坪县", + "value": 2728 + }, { + "label": "宁蒗彝族自治县", + "value": 2729 + }], + [{ + "label": "思茅区", + "value": 2731 + }, { + "label": "宁洱哈尼族彝族自治县", + "value": 2732 + }, { + "label": "墨江哈尼族自治县", + "value": 2733 + }, { + "label": "景东彝族自治县", + "value": 2734 + }, { + "label": "景谷傣族彝族自治县", + "value": 2735 + }, { + "label": "镇沅彝族哈尼族拉祜族自治县", + "value": 2736 + }, { + "label": "江城哈尼族彝族自治县", + "value": 2737 + }, { + "label": "孟连傣族拉祜族佤族自治县", + "value": 2738 + }, { + "label": "澜沧拉祜族自治县", + "value": 2739 + }, { + "label": "西盟佤族自治县", + "value": 2740 + }], + [{ + "label": "临翔区", + "value": 2742 + }, { + "label": "凤庆县", + "value": 2743 + }, { + "label": "云县", + "value": 2744 + }, { + "label": "永德县", + "value": 2745 + }, { + "label": "镇康县", + "value": 2746 + }, { + "label": "双江拉祜族佤族布朗族傣族自治县", + "value": 2747 + }, { + "label": "耿马傣族佤族自治县", + "value": 2748 + }, { + "label": "沧源佤族自治县", + "value": 2749 + }], + [{ + "label": "楚雄市", + "value": 2751 + }, { + "label": "双柏县", + "value": 2752 + }, { + "label": "牟定县", + "value": 2753 + }, { + "label": "南华县", + "value": 2754 + }, { + "label": "姚安县", + "value": 2755 + }, { + "label": "大姚县", + "value": 2756 + }, { + "label": "永仁县", + "value": 2757 + }, { + "label": "元谋县", + "value": 2758 + }, { + "label": "武定县", + "value": 2759 + }, { + "label": "禄丰县", + "value": 2760 + }], + [{ + "label": "个旧市", + "value": 2762 + }, { + "label": "开远市", + "value": 2763 + }, { + "label": "蒙自市", + "value": 2764 + }, { + "label": "弥勒市", + "value": 2765 + }, { + "label": "屏边苗族自治县", + "value": 2766 + }, { + "label": "建水县", + "value": 2767 + }, { + "label": "石屏县", + "value": 2768 + }, { + "label": "泸西县", + "value": 2769 + }, { + "label": "元阳县", + "value": 2770 + }, { + "label": "红河县", + "value": 2771 + }, { + "label": "金平苗族瑶族傣族自治县", + "value": 2772 + }, { + "label": "绿春县", + "value": 2773 + }, { + "label": "河口瑶族自治县", + "value": 2774 + }], + [{ + "label": "文山市", + "value": 2776 + }, { + "label": "砚山县", + "value": 2777 + }, { + "label": "西畴县", + "value": 2778 + }, { + "label": "麻栗坡县", + "value": 2779 + }, { + "label": "马关县", + "value": 2780 + }, { + "label": "丘北县", + "value": 2781 + }, { + "label": "广南县", + "value": 2782 + }, { + "label": "富宁县", + "value": 2783 + }], + [{ + "label": "景洪市", + "value": 2785 + }, { + "label": "勐海县", + "value": 2786 + }, { + "label": "勐腊县", + "value": 2787 + }], + [{ + "label": "大理市", + "value": 2789 + }, { + "label": "漾濞彝族自治县", + "value": 2790 + }, { + "label": "祥云县", + "value": 2791 + }, { + "label": "宾川县", + "value": 2792 + }, { + "label": "弥渡县", + "value": 2793 + }, { + "label": "南涧彝族自治县", + "value": 2794 + }, { + "label": "巍山彝族回族自治县", + "value": 2795 + }, { + "label": "永平县", + "value": 2796 + }, { + "label": "云龙县", + "value": 2797 + }, { + "label": "洱源县", + "value": 2798 + }, { + "label": "剑川县", + "value": 2799 + }, { + "label": "鹤庆县", + "value": 2800 + }], + [{ + "label": "瑞丽市", + "value": 2802 + }, { + "label": "芒市", + "value": 2803 + }, { + "label": "梁河县", + "value": 2804 + }, { + "label": "盈江县", + "value": 2805 + }, { + "label": "陇川县", + "value": 2806 + }], + [{ + "label": "泸水县", + "value": 2808 + }, { + "label": "福贡县", + "value": 2809 + }, { + "label": "贡山独龙族怒族自治县", + "value": 2810 + }, { + "label": "兰坪白族普米族自治县", + "value": 2811 + }], + [{ + "label": "香格里拉市", + "value": 2813 + }, { + "label": "德钦县", + "value": 2814 + }, { + "label": "维西傈僳族自治县", + "value": 2815 + }] + ], + [ + [{ + "label": "城关区", + "value": 2818 + }, { + "label": "林周县", + "value": 2819 + }, { + "label": "当雄县", + "value": 2820 + }, { + "label": "尼木县", + "value": 2821 + }, { + "label": "曲水县", + "value": 2822 + }, { + "label": "堆龙德庆县", + "value": 2823 + }, { + "label": "达孜县", + "value": 2824 + }, { + "label": "墨竹工卡县", + "value": 2825 + }], + [{ + "label": "桑珠孜区", + "value": 2827 + }, { + "label": "南木林县", + "value": 2828 + }, { + "label": "江孜县", + "value": 2829 + }, { + "label": "定日县", + "value": 2830 + }, { + "label": "萨迦县", + "value": 2831 + }, { + "label": "拉孜县", + "value": 2832 + }, { + "label": "昂仁县", + "value": 2833 + }, { + "label": "谢通门县", + "value": 2834 + }, { + "label": "白朗县", + "value": 2835 + }, { + "label": "仁布县", + "value": 2836 + }, { + "label": "康马县", + "value": 2837 + }, { + "label": "定结县", + "value": 2838 + }, { + "label": "仲巴县", + "value": 2839 + }, { + "label": "亚东县", + "value": 2840 + }, { + "label": "吉隆县", + "value": 2841 + }, { + "label": "聂拉木县", + "value": 2842 + }, { + "label": "萨嘎县", + "value": 2843 + }, { + "label": "岗巴县", + "value": 2844 + }], + [{ + "label": "卡若区", + "value": 2846 + }, { + "label": "江达县", + "value": 2847 + }, { + "label": "贡觉县", + "value": 2848 + }, { + "label": "类乌齐县", + "value": 2849 + }, { + "label": "丁青县", + "value": 2850 + }, { + "label": "察雅县", + "value": 2851 + }, { + "label": "八宿县", + "value": 2852 + }, { + "label": "左贡县", + "value": 2853 + }, { + "label": "芒康县", + "value": 2854 + }, { + "label": "洛隆县", + "value": 2855 + }, { + "label": "边坝县", + "value": 2856 + }], + [{ + "label": "乃东县", + "value": 2858 + }, { + "label": "扎囊县", + "value": 2859 + }, { + "label": "贡嘎县", + "value": 2860 + }, { + "label": "桑日县", + "value": 2861 + }, { + "label": "琼结县", + "value": 2862 + }, { + "label": "曲松县", + "value": 2863 + }, { + "label": "措美县", + "value": 2864 + }, { + "label": "洛扎县", + "value": 2865 + }, { + "label": "加查县", + "value": 2866 + }, { + "label": "隆子县", + "value": 2867 + }, { + "label": "错那县", + "value": 2868 + }, { + "label": "浪卡子县", + "value": 2869 + }], + [{ + "label": "那曲县", + "value": 2871 + }, { + "label": "嘉黎县", + "value": 2872 + }, { + "label": "比如县", + "value": 2873 + }, { + "label": "聂荣县", + "value": 2874 + }, { + "label": "安多县", + "value": 2875 + }, { + "label": "申扎县", + "value": 2876 + }, { + "label": "索县", + "value": 2877 + }, { + "label": "班戈县", + "value": 2878 + }, { + "label": "巴青县", + "value": 2879 + }, { + "label": "尼玛县", + "value": 2880 + }, { + "label": "双湖县", + "value": 2881 + }], + [{ + "label": "普兰县", + "value": 2883 + }, { + "label": "札达县", + "value": 2884 + }, { + "label": "噶尔县", + "value": 2885 + }, { + "label": "日土县", + "value": 2886 + }, { + "label": "革吉县", + "value": 2887 + }, { + "label": "改则县", + "value": 2888 + }, { + "label": "措勤县", + "value": 2889 + }], + [{ + "label": "林芝县", + "value": 2891 + }, { + "label": "工布江达县", + "value": 2892 + }, { + "label": "米林县", + "value": 2893 + }, { + "label": "墨脱县", + "value": 2894 + }, { + "label": "波密县", + "value": 2895 + }, { + "label": "察隅县", + "value": 2896 + }, { + "label": "朗县", + "value": 2897 + }] + ], + [ + [{ + "label": "新城区", + "value": 2900 + }, { + "label": "碑林区", + "value": 2901 + }, { + "label": "莲湖区", + "value": 2902 + }, { + "label": "灞桥区", + "value": 2903 + }, { + "label": "未央区", + "value": 2904 + }, { + "label": "雁塔区", + "value": 2905 + }, { + "label": "阎良区", + "value": 2906 + }, { + "label": "临潼区", + "value": 2907 + }, { + "label": "长安区", + "value": 2908 + }, { + "label": "蓝田县", + "value": 2909 + }, { + "label": "周至县", + "value": 2910 + }, { + "label": "户县", + "value": 2911 + }, { + "label": "高陵区", + "value": 2912 + }], + [{ + "label": "王益区", + "value": 2914 + }, { + "label": "印台区", + "value": 2915 + }, { + "label": "耀州区", + "value": 2916 + }, { + "label": "宜君县", + "value": 2917 + }], + [{ + "label": "渭滨区", + "value": 2919 + }, { + "label": "金台区", + "value": 2920 + }, { + "label": "陈仓区", + "value": 2921 + }, { + "label": "凤翔县", + "value": 2922 + }, { + "label": "岐山县", + "value": 2923 + }, { + "label": "扶风县", + "value": 2924 + }, { + "label": "眉县", + "value": 2925 + }, { + "label": "陇县", + "value": 2926 + }, { + "label": "千阳县", + "value": 2927 + }, { + "label": "麟游县", + "value": 2928 + }, { + "label": "凤县", + "value": 2929 + }, { + "label": "太白县", + "value": 2930 + }], + [{ + "label": "秦都区", + "value": 2932 + }, { + "label": "杨陵区", + "value": 2933 + }, { + "label": "渭城区", + "value": 2934 + }, { + "label": "三原县", + "value": 2935 + }, { + "label": "泾阳县", + "value": 2936 + }, { + "label": "乾县", + "value": 2937 + }, { + "label": "礼泉县", + "value": 2938 + }, { + "label": "永寿县", + "value": 2939 + }, { + "label": "彬县", + "value": 2940 + }, { + "label": "长武县", + "value": 2941 + }, { + "label": "旬邑县", + "value": 2942 + }, { + "label": "淳化县", + "value": 2943 + }, { + "label": "武功县", + "value": 2944 + }, { + "label": "兴平市", + "value": 2945 + }], + [{ + "label": "临渭区", + "value": 2947 + }, { + "label": "华县", + "value": 2948 + }, { + "label": "潼关县", + "value": 2949 + }, { + "label": "大荔县", + "value": 2950 + }, { + "label": "合阳县", + "value": 2951 + }, { + "label": "澄城县", + "value": 2952 + }, { + "label": "蒲城县", + "value": 2953 + }, { + "label": "白水县", + "value": 2954 + }, { + "label": "富平县", + "value": 2955 + }, { + "label": "韩城市", + "value": 2956 + }, { + "label": "华阴市", + "value": 2957 + }], + [{ + "label": "宝塔区", + "value": 2959 + }, { + "label": "延长县", + "value": 2960 + }, { + "label": "延川县", + "value": 2961 + }, { + "label": "子长县", + "value": 2962 + }, { + "label": "安塞县", + "value": 2963 + }, { + "label": "志丹县", + "value": 2964 + }, { + "label": "吴起县", + "value": 2965 + }, { + "label": "甘泉县", + "value": 2966 + }, { + "label": "富县", + "value": 2967 + }, { + "label": "洛川县", + "value": 2968 + }, { + "label": "宜川县", + "value": 2969 + }, { + "label": "黄龙县", + "value": 2970 + }, { + "label": "黄陵县", + "value": 2971 + }], + [{ + "label": "汉台区", + "value": 2973 + }, { + "label": "南郑县", + "value": 2974 + }, { + "label": "城固县", + "value": 2975 + }, { + "label": "洋县", + "value": 2976 + }, { + "label": "西乡县", + "value": 2977 + }, { + "label": "勉县", + "value": 2978 + }, { + "label": "宁强县", + "value": 2979 + }, { + "label": "略阳县", + "value": 2980 + }, { + "label": "镇巴县", + "value": 2981 + }, { + "label": "留坝县", + "value": 2982 + }, { + "label": "佛坪县", + "value": 2983 + }], + [{ + "label": "榆阳区", + "value": 2985 + }, { + "label": "神木县", + "value": 2986 + }, { + "label": "府谷县", + "value": 2987 + }, { + "label": "横山县", + "value": 2988 + }, { + "label": "靖边县", + "value": 2989 + }, { + "label": "定边县", + "value": 2990 + }, { + "label": "绥德县", + "value": 2991 + }, { + "label": "米脂县", + "value": 2992 + }, { + "label": "佳县", + "value": 2993 + }, { + "label": "吴堡县", + "value": 2994 + }, { + "label": "清涧县", + "value": 2995 + }, { + "label": "子洲县", + "value": 2996 + }], + [{ + "label": "汉滨区", + "value": 2998 + }, { + "label": "汉阴县", + "value": 2999 + }, { + "label": "石泉县", + "value": 3000 + }, { + "label": "宁陕县", + "value": 3001 + }, { + "label": "紫阳县", + "value": 3002 + }, { + "label": "岚皋县", + "value": 3003 + }, { + "label": "平利县", + "value": 3004 + }, { + "label": "镇坪县", + "value": 3005 + }, { + "label": "旬阳县", + "value": 3006 + }, { + "label": "白河县", + "value": 3007 + }], + [{ + "label": "商州区", + "value": 3009 + }, { + "label": "洛南县", + "value": 3010 + }, { + "label": "丹凤县", + "value": 3011 + }, { + "label": "商南县", + "value": 3012 + }, { + "label": "山阳县", + "value": 3013 + }, { + "label": "镇安县", + "value": 3014 + }, { + "label": "柞水县", + "value": 3015 + }], + [{ + "label": "空港新城", + "value": 3017 + }, { + "label": "沣东新城", + "value": 3018 + }, { + "label": "秦汉新城", + "value": 3019 + }, { + "label": "沣西新城", + "value": 3020 + }, { + "label": "泾河新城", + "value": 3021 + }] + ], + [ + [{ + "label": "城关区", + "value": 3024 + }, { + "label": "七里河区", + "value": 3025 + }, { + "label": "西固区", + "value": 3026 + }, { + "label": "安宁区", + "value": 3027 + }, { + "label": "红古区", + "value": 3028 + }, { + "label": "永登县", + "value": 3029 + }, { + "label": "皋兰县", + "value": 3030 + }, { + "label": "榆中县", + "value": 3031 + }], + [{ + "label": "雄关区", + "value": 3033 + }, { + "label": "长城区", + "value": 3034 + }, { + "label": "镜铁区", + "value": 3035 + }], + [{ + "label": "金川区", + "value": 3037 + }, { + "label": "永昌县", + "value": 3038 + }], + [{ + "label": "白银区", + "value": 3040 + }, { + "label": "平川区", + "value": 3041 + }, { + "label": "靖远县", + "value": 3042 + }, { + "label": "会宁县", + "value": 3043 + }, { + "label": "景泰县", + "value": 3044 + }], + [{ + "label": "秦州区", + "value": 3046 + }, { + "label": "麦积区", + "value": 3047 + }, { + "label": "清水县", + "value": 3048 + }, { + "label": "秦安县", + "value": 3049 + }, { + "label": "甘谷县", + "value": 3050 + }, { + "label": "武山县", + "value": 3051 + }, { + "label": "张家川回族自治县", + "value": 3052 + }], + [{ + "label": "凉州区", + "value": 3054 + }, { + "label": "民勤县", + "value": 3055 + }, { + "label": "古浪县", + "value": 3056 + }, { + "label": "天祝藏族自治县", + "value": 3057 + }], + [{ + "label": "甘州区", + "value": 3059 + }, { + "label": "肃南裕固族自治县", + "value": 3060 + }, { + "label": "民乐县", + "value": 3061 + }, { + "label": "临泽县", + "value": 3062 + }, { + "label": "高台县", + "value": 3063 + }, { + "label": "山丹县", + "value": 3064 + }], + [{ + "label": "崆峒区", + "value": 3066 + }, { + "label": "泾川县", + "value": 3067 + }, { + "label": "灵台县", + "value": 3068 + }, { + "label": "崇信县", + "value": 3069 + }, { + "label": "华亭县", + "value": 3070 + }, { + "label": "庄浪县", + "value": 3071 + }, { + "label": "静宁县", + "value": 3072 + }], + [{ + "label": "肃州区", + "value": 3074 + }, { + "label": "金塔县", + "value": 3075 + }, { + "label": "瓜州县", + "value": 3076 + }, { + "label": "肃北蒙古族自治县", + "value": 3077 + }, { + "label": "阿克塞哈萨克族自治县", + "value": 3078 + }, { + "label": "玉门市", + "value": 3079 + }, { + "label": "敦煌市", + "value": 3080 + }], + [{ + "label": "西峰区", + "value": 3082 + }, { + "label": "庆城县", + "value": 3083 + }, { + "label": "环县", + "value": 3084 + }, { + "label": "华池县", + "value": 3085 + }, { + "label": "合水县", + "value": 3086 + }, { + "label": "正宁县", + "value": 3087 + }, { + "label": "宁县", + "value": 3088 + }, { + "label": "镇原县", + "value": 3089 + }], + [{ + "label": "安定区", + "value": 3091 + }, { + "label": "通渭县", + "value": 3092 + }, { + "label": "陇西县", + "value": 3093 + }, { + "label": "渭源县", + "value": 3094 + }, { + "label": "临洮县", + "value": 3095 + }, { + "label": "漳县", + "value": 3096 + }, { + "label": "岷县", + "value": 3097 + }], + [{ + "label": "武都区", + "value": 3099 + }, { + "label": "成县", + "value": 3100 + }, { + "label": "文县", + "value": 3101 + }, { + "label": "宕昌县", + "value": 3102 + }, { + "label": "康县", + "value": 3103 + }, { + "label": "西和县", + "value": 3104 + }, { + "label": "礼县", + "value": 3105 + }, { + "label": "徽县", + "value": 3106 + }, { + "label": "两当县", + "value": 3107 + }], + [{ + "label": "临夏市", + "value": 3109 + }, { + "label": "临夏县", + "value": 3110 + }, { + "label": "康乐县", + "value": 3111 + }, { + "label": "永靖县", + "value": 3112 + }, { + "label": "广河县", + "value": 3113 + }, { + "label": "和政县", + "value": 3114 + }, { + "label": "东乡族自治县", + "value": 3115 + }, { + "label": "积石山保安族东乡族撒拉族自治县", + "value": 3116 + }], + [{ + "label": "合作市", + "value": 3118 + }, { + "label": "临潭县", + "value": 3119 + }, { + "label": "卓尼县", + "value": 3120 + }, { + "label": "舟曲县", + "value": 3121 + }, { + "label": "迭部县", + "value": 3122 + }, { + "label": "玛曲县", + "value": 3123 + }, { + "label": "碌曲县", + "value": 3124 + }, { + "label": "夏河县", + "value": 3125 + }] + ], + [ + [{ + "label": "城东区", + "value": 3128 + }, { + "label": "城中区", + "value": 3129 + }, { + "label": "城西区", + "value": 3130 + }, { + "label": "城北区", + "value": 3131 + }, { + "label": "大通回族土族自治县", + "value": 3132 + }, { + "label": "湟中县", + "value": 3133 + }, { + "label": "湟源县", + "value": 3134 + }], + [{ + "label": "乐都区", + "value": 3136 + }, { + "label": "平安县", + "value": 3137 + }, { + "label": "民和回族土族自治县", + "value": 3138 + }, { + "label": "互助土族自治县", + "value": 3139 + }, { + "label": "化隆回族自治县", + "value": 3140 + }, { + "label": "循化撒拉族自治县", + "value": 3141 + }], + [{ + "label": "门源回族自治县", + "value": 3143 + }, { + "label": "祁连县", + "value": 3144 + }, { + "label": "海晏县", + "value": 3145 + }, { + "label": "刚察县", + "value": 3146 + }], + [{ + "label": "同仁县", + "value": 3148 + }, { + "label": "尖扎县", + "value": 3149 + }, { + "label": "泽库县", + "value": 3150 + }, { + "label": "河南蒙古族自治县", + "value": 3151 + }], + [{ + "label": "共和县", + "value": 3153 + }, { + "label": "同德县", + "value": 3154 + }, { + "label": "贵德县", + "value": 3155 + }, { + "label": "兴海县", + "value": 3156 + }, { + "label": "贵南县", + "value": 3157 + }], + [{ + "label": "玛沁县", + "value": 3159 + }, { + "label": "班玛县", + "value": 3160 + }, { + "label": "甘德县", + "value": 3161 + }, { + "label": "达日县", + "value": 3162 + }, { + "label": "久治县", + "value": 3163 + }, { + "label": "玛多县", + "value": 3164 + }], + [{ + "label": "玉树市", + "value": 3166 + }, { + "label": "杂多县", + "value": 3167 + }, { + "label": "称多县", + "value": 3168 + }, { + "label": "治多县", + "value": 3169 + }, { + "label": "囊谦县", + "value": 3170 + }, { + "label": "曲麻莱县", + "value": 3171 + }], + [{ + "label": "格尔木市", + "value": 3173 + }, { + "label": "德令哈市", + "value": 3174 + }, { + "label": "乌兰县", + "value": 3175 + }, { + "label": "都兰县", + "value": 3176 + }, { + "label": "天峻县", + "value": 3177 + }] + ], + [ + [{ + "label": "兴庆区", + "value": 3180 + }, { + "label": "西夏区", + "value": 3181 + }, { + "label": "金凤区", + "value": 3182 + }, { + "label": "永宁县", + "value": 3183 + }, { + "label": "贺兰县", + "value": 3184 + }, { + "label": "灵武市", + "value": 3185 + }], + [{ + "label": "大武口区", + "value": 3187 + }, { + "label": "惠农区", + "value": 3188 + }, { + "label": "平罗县", + "value": 3189 + }], + [{ + "label": "利通区", + "value": 3191 + }, { + "label": "红寺堡区", + "value": 3192 + }, { + "label": "盐池县", + "value": 3193 + }, { + "label": "同心县", + "value": 3194 + }, { + "label": "青铜峡市", + "value": 3195 + }], + [{ + "label": "原州区", + "value": 3197 + }, { + "label": "西吉县", + "value": 3198 + }, { + "label": "隆德县", + "value": 3199 + }, { + "label": "泾源县", + "value": 3200 + }, { + "label": "彭阳县", + "value": 3201 + }], + [{ + "label": "沙坡头区", + "value": 3203 + }, { + "label": "中宁县", + "value": 3204 + }, { + "label": "海原县", + "value": 3205 + }] + ], + [ + [{ + "label": "天山区", + "value": 3208 + }, { + "label": "沙依巴克区", + "value": 3209 + }, { + "label": "新市区", + "value": 3210 + }, { + "label": "水磨沟区", + "value": 3211 + }, { + "label": "头屯河区", + "value": 3212 + }, { + "label": "达坂城区", + "value": 3213 + }, { + "label": "米东区", + "value": 3214 + }, { + "label": "乌鲁木齐县", + "value": 3215 + }], + [{ + "label": "独山子区", + "value": 3217 + }, { + "label": "克拉玛依区", + "value": 3218 + }, { + "label": "白碱滩区", + "value": 3219 + }, { + "label": "乌尔禾区", + "value": 3220 + }], + [{ + "label": "吐鲁番市", + "value": 3222 + }, { + "label": "鄯善县", + "value": 3223 + }, { + "label": "托克逊县", + "value": 3224 + }], + [{ + "label": "哈密市", + "value": 3226 + }, { + "label": "巴里坤哈萨克自治县", + "value": 3227 + }, { + "label": "伊吾县", + "value": 3228 + }], + [{ + "label": "昌吉市", + "value": 3230 + }, { + "label": "阜康市", + "value": 3231 + }, { + "label": "呼图壁县", + "value": 3232 + }, { + "label": "玛纳斯县", + "value": 3233 + }, { + "label": "奇台县", + "value": 3234 + }, { + "label": "吉木萨尔县", + "value": 3235 + }, { + "label": "木垒哈萨克自治县", + "value": 3236 + }], + [{ + "label": "博乐市", + "value": 3238 + }, { + "label": "阿拉山口市", + "value": 3239 + }, { + "label": "精河县", + "value": 3240 + }, { + "label": "温泉县", + "value": 3241 + }], + [{ + "label": "库尔勒市", + "value": 3243 + }, { + "label": "轮台县", + "value": 3244 + }, { + "label": "尉犁县", + "value": 3245 + }, { + "label": "若羌县", + "value": 3246 + }, { + "label": "且末县", + "value": 3247 + }, { + "label": "焉耆回族自治县", + "value": 3248 + }, { + "label": "和静县", + "value": 3249 + }, { + "label": "和硕县", + "value": 3250 + }, { + "label": "博湖县", + "value": 3251 + }], + [{ + "label": "阿克苏市", + "value": 3253 + }, { + "label": "温宿县", + "value": 3254 + }, { + "label": "库车县", + "value": 3255 + }, { + "label": "沙雅县", + "value": 3256 + }, { + "label": "新和县", + "value": 3257 + }, { + "label": "拜城县", + "value": 3258 + }, { + "label": "乌什县", + "value": 3259 + }, { + "label": "阿瓦提县", + "value": 3260 + }, { + "label": "柯坪县", + "value": 3261 + }], + [{ + "label": "阿图什市", + "value": 3263 + }, { + "label": "阿克陶县", + "value": 3264 + }, { + "label": "阿合奇县", + "value": 3265 + }, { + "label": "乌恰县", + "value": 3266 + }], + [{ + "label": "喀什市", + "value": 3268 + }, { + "label": "疏附县", + "value": 3269 + }, { + "label": "疏勒县", + "value": 3270 + }, { + "label": "英吉沙县", + "value": 3271 + }, { + "label": "泽普县", + "value": 3272 + }, { + "label": "莎车县", + "value": 3273 + }, { + "label": "叶城县", + "value": 3274 + }, { + "label": "麦盖提县", + "value": 3275 + }, { + "label": "岳普湖县", + "value": 3276 + }, { + "label": "伽师县", + "value": 3277 + }, { + "label": "巴楚县", + "value": 3278 + }, { + "label": "塔什库尔干塔吉克自治县", + "value": 3279 + }], + [{ + "label": "和田市", + "value": 3281 + }, { + "label": "和田县", + "value": 3282 + }, { + "label": "墨玉县", + "value": 3283 + }, { + "label": "皮山县", + "value": 3284 + }, { + "label": "洛浦县", + "value": 3285 + }, { + "label": "策勒县", + "value": 3286 + }, { + "label": "于田县", + "value": 3287 + }, { + "label": "民丰县", + "value": 3288 + }], + [{ + "label": "伊宁市", + "value": 3290 + }, { + "label": "奎屯市", + "value": 3291 + }, { + "label": "霍尔果斯市", + "value": 3292 + }, { + "label": "伊宁县", + "value": 3293 + }, { + "label": "察布查尔锡伯自治县", + "value": 3294 + }, { + "label": "霍城县", + "value": 3295 + }, { + "label": "巩留县", + "value": 3296 + }, { + "label": "新源县", + "value": 3297 + }, { + "label": "昭苏县", + "value": 3298 + }, { + "label": "特克斯县", + "value": 3299 + }, { + "label": "尼勒克县", + "value": 3300 + }], + [{ + "label": "塔城市", + "value": 3302 + }, { + "label": "乌苏市", + "value": 3303 + }, { + "label": "额敏县", + "value": 3304 + }, { + "label": "沙湾县", + "value": 3305 + }, { + "label": "托里县", + "value": 3306 + }, { + "label": "裕民县", + "value": 3307 + }, { + "label": "和布克赛尔蒙古自治县", + "value": 3308 + }], + [{ + "label": "阿勒泰市", + "value": 3310 + }, { + "label": "布尔津县", + "value": 3311 + }, { + "label": "富蕴县", + "value": 3312 + }, { + "label": "福海县", + "value": 3313 + }, { + "label": "哈巴河县", + "value": 3314 + }, { + "label": "青河县", + "value": 3315 + }, { + "label": "吉木乃县", + "value": 3316 + }], + [{ + "label": "石河子市", + "value": 3318 + }, { + "label": "阿拉尔市", + "value": 3319 + }, { + "label": "图木舒克市", + "value": 3320 + }, { + "label": "五家渠市", + "value": 3321 + }, { + "label": "北屯市", + "value": 3322 + }, { + "label": "铁门关市", + "value": 3323 + }, { + "label": "双河市", + "value": 3324 + }] + ], + [ + [{ + "label": "松山区", + "value": 3327 + }, { + "label": "信义区", + "value": 3328 + }, { + "label": "大安区", + "value": 3329 + }, { + "label": "中山区", + "value": 3330 + }, { + "label": "中正区", + "value": 3331 + }, { + "label": "大同区", + "value": 3332 + }, { + "label": "万华区", + "value": 3333 + }, { + "label": "文山区", + "value": 3334 + }, { + "label": "南港区", + "value": 3335 + }, { + "label": "内湖区", + "value": 3336 + }, { + "label": "士林区", + "value": 3337 + }, { + "label": "北投区", + "value": 3338 + }], + [{ + "label": "盐埕区", + "value": 3340 + }, { + "label": "鼓山区", + "value": 3341 + }, { + "label": "左营区", + "value": 3342 + }, { + "label": "楠梓区", + "value": 3343 + }, { + "label": "三民区", + "value": 3344 + }, { + "label": "新兴区", + "value": 3345 + }, { + "label": "前金区", + "value": 3346 + }, { + "label": "苓雅区", + "value": 3347 + }, { + "label": "前镇区", + "value": 3348 + }, { + "label": "旗津区", + "value": 3349 + }, { + "label": "小港区", + "value": 3350 + }, { + "label": "凤山区", + "value": 3351 + }, { + "label": "林园区", + "value": 3352 + }, { + "label": "大寮区", + "value": 3353 + }, { + "label": "大树区", + "value": 3354 + }, { + "label": "大社区", + "value": 3355 + }, { + "label": "仁武区", + "value": 3356 + }, { + "label": "鸟松区", + "value": 3357 + }, { + "label": "冈山区", + "value": 3358 + }, { + "label": "桥头区", + "value": 3359 + }, { + "label": "燕巢区", + "value": 3360 + }, { + "label": "田寮区", + "value": 3361 + }, { + "label": "阿莲区", + "value": 3362 + }, { + "label": "路竹区", + "value": 3363 + }, { + "label": "湖内区", + "value": 3364 + }, { + "label": "茄萣区", + "value": 3365 + }, { + "label": "永安区", + "value": 3366 + }, { + "label": "弥陀区", + "value": 3367 + }, { + "label": "梓官区", + "value": 3368 + }, { + "label": "旗山区", + "value": 3369 + }, { + "label": "美浓区", + "value": 3370 + }, { + "label": "六龟区", + "value": 3371 + }, { + "label": "甲仙区", + "value": 3372 + }, { + "label": "杉林区", + "value": 3373 + }, { + "label": "内门区", + "value": 3374 + }, { + "label": "茂林区", + "value": 3375 + }, { + "label": "桃源区", + "value": 3376 + }, { + "label": "那玛夏区", + "value": 3377 + }], + [{ + "label": "中正区", + "value": 3379 + }, { + "label": "七堵区", + "value": 3380 + }, { + "label": "暖暖区", + "value": 3381 + }, { + "label": "仁爱区", + "value": 3382 + }, { + "label": "中山区", + "value": 3383 + }, { + "label": "安乐区", + "value": 3384 + }, { + "label": "信义区", + "value": 3385 + }], + [{ + "label": "中区", + "value": 3387 + }, { + "label": "东区", + "value": 3388 + }, { + "label": "南区", + "value": 3389 + }, { + "label": "西区", + "value": 3390 + }, { + "label": "北区", + "value": 3391 + }, { + "label": "西屯区", + "value": 3392 + }, { + "label": "南屯区", + "value": 3393 + }, { + "label": "北屯区", + "value": 3394 + }, { + "label": "丰原区", + "value": 3395 + }, { + "label": "东势区", + "value": 3396 + }, { + "label": "大甲区", + "value": 3397 + }, { + "label": "清水区", + "value": 3398 + }, { + "label": "沙鹿区", + "value": 3399 + }, { + "label": "梧栖区", + "value": 3400 + }, { + "label": "后里区", + "value": 3401 + }, { + "label": "神冈区", + "value": 3402 + }, { + "label": "潭子区", + "value": 3403 + }, { + "label": "大雅区", + "value": 3404 + }, { + "label": "新社区", + "value": 3405 + }, { + "label": "石冈区", + "value": 3406 + }, { + "label": "外埔区", + "value": 3407 + }, { + "label": "大安区", + "value": 3408 + }, { + "label": "乌日区", + "value": 3409 + }, { + "label": "大肚区", + "value": 3410 + }, { + "label": "龙井区", + "value": 3411 + }, { + "label": "雾峰区", + "value": 3412 + }, { + "label": "太平区", + "value": 3413 + }, { + "label": "大里区", + "value": 3414 + }, { + "label": "和平区", + "value": 3415 + }], + [{ + "label": "东区", + "value": 3417 + }, { + "label": "南区", + "value": 3418 + }, { + "label": "北区", + "value": 3419 + }, { + "label": "安南区", + "value": 3420 + }, { + "label": "安平区", + "value": 3421 + }, { + "label": "中西区", + "value": 3422 + }, { + "label": "新营区", + "value": 3423 + }, { + "label": "盐水区", + "value": 3424 + }, { + "label": "白河区", + "value": 3425 + }, { + "label": "柳营区", + "value": 3426 + }, { + "label": "后壁区", + "value": 3427 + }, { + "label": "东山区", + "value": 3428 + }, { + "label": "麻豆区", + "value": 3429 + }, { + "label": "下营区", + "value": 3430 + }, { + "label": "六甲区", + "value": 3431 + }, { + "label": "官田区", + "value": 3432 + }, { + "label": "大内区", + "value": 3433 + }, { + "label": "佳里区", + "value": 3434 + }, { + "label": "学甲区", + "value": 3435 + }, { + "label": "西港区", + "value": 3436 + }, { + "label": "七股区", + "value": 3437 + }, { + "label": "将军区", + "value": 3438 + }, { + "label": "北门区", + "value": 3439 + }, { + "label": "新化区", + "value": 3440 + }, { + "label": "善化区", + "value": 3441 + }, { + "label": "新市区", + "value": 3442 + }, { + "label": "安定区", + "value": 3443 + }, { + "label": "山上区", + "value": 3444 + }, { + "label": "玉井区", + "value": 3445 + }, { + "label": "楠西区", + "value": 3446 + }, { + "label": "南化区", + "value": 3447 + }, { + "label": "左镇区", + "value": 3448 + }, { + "label": "仁德区", + "value": 3449 + }, { + "label": "归仁区", + "value": 3450 + }, { + "label": "关庙区", + "value": 3451 + }, { + "label": "龙崎区", + "value": 3452 + }, { + "label": "永康区", + "value": 3453 + }], + [{ + "label": "东区", + "value": 3455 + }, { + "label": "北区", + "value": 3456 + }, { + "label": "香山区", + "value": 3457 + }], + [{ + "label": "东区", + "value": 3459 + }, { + "label": "西区", + "value": 3460 + }], + [{ + "label": "板桥区", + "value": 3462 + }, { + "label": "三重区", + "value": 3463 + }, { + "label": "中和区", + "value": 3464 + }, { + "label": "永和区", + "value": 3465 + }, { + "label": "新庄区", + "value": 3466 + }, { + "label": "新店区", + "value": 3467 + }, { + "label": "树林区", + "value": 3468 + }, { + "label": "莺歌区", + "value": 3469 + }, { + "label": "三峡区", + "value": 3470 + }, { + "label": "淡水区", + "value": 3471 + }, { + "label": "汐止区", + "value": 3472 + }, { + "label": "瑞芳区", + "value": 3473 + }, { + "label": "土城区", + "value": 3474 + }, { + "label": "芦洲区", + "value": 3475 + }, { + "label": "五股区", + "value": 3476 + }, { + "label": "泰山区", + "value": 3477 + }, { + "label": "林口区", + "value": 3478 + }, { + "label": "深坑区", + "value": 3479 + }, { + "label": "石碇区", + "value": 3480 + }, { + "label": "坪林区", + "value": 3481 + }, { + "label": "三芝区", + "value": 3482 + }, { + "label": "石门区", + "value": 3483 + }, { + "label": "八里区", + "value": 3484 + }, { + "label": "平溪区", + "value": 3485 + }, { + "label": "双溪区", + "value": 3486 + }, { + "label": "贡寮区", + "value": 3487 + }, { + "label": "金山区", + "value": 3488 + }, { + "label": "万里区", + "value": 3489 + }, { + "label": "乌来区", + "value": 3490 + }], + [{ + "label": "宜兰市", + "value": 3492 + }, { + "label": "罗东镇", + "value": 3493 + }, { + "label": "苏澳镇", + "value": 3494 + }, { + "label": "头城镇", + "value": 3495 + }, { + "label": "礁溪乡", + "value": 3496 + }, { + "label": "壮围乡", + "value": 3497 + }, { + "label": "员山乡", + "value": 3498 + }, { + "label": "冬山乡", + "value": 3499 + }, { + "label": "五结乡", + "value": 3500 + }, { + "label": "三星乡", + "value": 3501 + }, { + "label": "大同乡", + "value": 3502 + }, { + "label": "南澳乡", + "value": 3503 + }], + [{ + "label": "桃园市", + "value": 3505 + }, { + "label": "中坜市", + "value": 3506 + }, { + "label": "平镇市", + "value": 3507 + }, { + "label": "八德市", + "value": 3508 + }, { + "label": "杨梅市", + "value": 3509 + }, { + "label": "芦竹市", + "value": 3510 + }, { + "label": "大溪镇", + "value": 3511 + }, { + "label": "大园乡", + "value": 3512 + }, { + "label": "龟山乡", + "value": 3513 + }, { + "label": "龙潭乡", + "value": 3514 + }, { + "label": "新屋乡", + "value": 3515 + }, { + "label": "观音乡", + "value": 3516 + }, { + "label": "复兴乡", + "value": 3517 + }], + [{ + "label": "竹北市", + "value": 3519 + }, { + "label": "竹东镇", + "value": 3520 + }, { + "label": "新埔镇", + "value": 3521 + }, { + "label": "关西镇", + "value": 3522 + }, { + "label": "湖口乡", + "value": 3523 + }, { + "label": "新丰乡", + "value": 3524 + }, { + "label": "芎林乡", + "value": 3525 + }, { + "label": "横山乡", + "value": 3526 + }, { + "label": "北埔乡", + "value": 3527 + }, { + "label": "宝山乡", + "value": 3528 + }, { + "label": "峨眉乡", + "value": 3529 + }, { + "label": "尖石乡", + "value": 3530 + }, { + "label": "五峰乡", + "value": 3531 + }], + [{ + "label": "苗栗市", + "value": 3533 + }, { + "label": "苑里镇", + "value": 3534 + }, { + "label": "通霄镇", + "value": 3535 + }, { + "label": "竹南镇", + "value": 3536 + }, { + "label": "头份镇", + "value": 3537 + }, { + "label": "后龙镇", + "value": 3538 + }, { + "label": "卓兰镇", + "value": 3539 + }, { + "label": "大湖乡", + "value": 3540 + }, { + "label": "公馆乡", + "value": 3541 + }, { + "label": "铜锣乡", + "value": 3542 + }, { + "label": "南庄乡", + "value": 3543 + }, { + "label": "头屋乡", + "value": 3544 + }, { + "label": "三义乡", + "value": 3545 + }, { + "label": "西湖乡", + "value": 3546 + }, { + "label": "造桥乡", + "value": 3547 + }, { + "label": "三湾乡", + "value": 3548 + }, { + "label": "狮潭乡", + "value": 3549 + }, { + "label": "泰安乡", + "value": 3550 + }], + [{ + "label": "彰化市", + "value": 3552 + }, { + "label": "鹿港镇", + "value": 3553 + }, { + "label": "和美镇", + "value": 3554 + }, { + "label": "线西乡", + "value": 3555 + }, { + "label": "伸港乡", + "value": 3556 + }, { + "label": "福兴乡", + "value": 3557 + }, { + "label": "秀水乡", + "value": 3558 + }, { + "label": "花坛乡", + "value": 3559 + }, { + "label": "芬园乡", + "value": 3560 + }, { + "label": "员林镇", + "value": 3561 + }, { + "label": "溪湖镇", + "value": 3562 + }, { + "label": "田中镇", + "value": 3563 + }, { + "label": "大村乡", + "value": 3564 + }, { + "label": "埔盐乡", + "value": 3565 + }, { + "label": "埔心乡", + "value": 3566 + }, { + "label": "永靖乡", + "value": 3567 + }, { + "label": "社头乡", + "value": 3568 + }, { + "label": "二水乡", + "value": 3569 + }, { + "label": "北斗镇", + "value": 3570 + }, { + "label": "二林镇", + "value": 3571 + }, { + "label": "田尾乡", + "value": 3572 + }, { + "label": "埤头乡", + "value": 3573 + }, { + "label": "芳苑乡", + "value": 3574 + }, { + "label": "大城乡", + "value": 3575 + }, { + "label": "竹塘乡", + "value": 3576 + }, { + "label": "溪州乡", + "value": 3577 + }], + [{ + "label": "南投市", + "value": 3579 + }, { + "label": "埔里镇", + "value": 3580 + }, { + "label": "草屯镇", + "value": 3581 + }, { + "label": "竹山镇", + "value": 3582 + }, { + "label": "集集镇", + "value": 3583 + }, { + "label": "名间乡", + "value": 3584 + }, { + "label": "鹿谷乡", + "value": 3585 + }, { + "label": "中寮乡", + "value": 3586 + }, { + "label": "鱼池乡", + "value": 3587 + }, { + "label": "国姓乡", + "value": 3588 + }, { + "label": "水里乡", + "value": 3589 + }, { + "label": "信义乡", + "value": 3590 + }, { + "label": "仁爱乡", + "value": 3591 + }], + [{ + "label": "斗六市", + "value": 3593 + }, { + "label": "斗南镇", + "value": 3594 + }, { + "label": "虎尾镇", + "value": 3595 + }, { + "label": "西螺镇", + "value": 3596 + }, { + "label": "土库镇", + "value": 3597 + }, { + "label": "北港镇", + "value": 3598 + }, { + "label": "古坑乡", + "value": 3599 + }, { + "label": "大埤乡", + "value": 3600 + }, { + "label": "莿桐乡", + "value": 3601 + }, { + "label": "林内乡", + "value": 3602 + }, { + "label": "二仑乡", + "value": 3603 + }, { + "label": "仑背乡", + "value": 3604 + }, { + "label": "麦寮乡", + "value": 3605 + }, { + "label": "东势乡", + "value": 3606 + }, { + "label": "褒忠乡", + "value": 3607 + }, { + "label": "台西乡", + "value": 3608 + }, { + "label": "元长乡", + "value": 3609 + }, { + "label": "四湖乡", + "value": 3610 + }, { + "label": "口湖乡", + "value": 3611 + }, { + "label": "水林乡", + "value": 3612 + }], + [{ + "label": "太保市", + "value": 3614 + }, { + "label": "朴子市", + "value": 3615 + }, { + "label": "布袋镇", + "value": 3616 + }, { + "label": "大林镇", + "value": 3617 + }, { + "label": "民雄乡", + "value": 3618 + }, { + "label": "溪口乡", + "value": 3619 + }, { + "label": "新港乡", + "value": 3620 + }, { + "label": "六脚乡", + "value": 3621 + }, { + "label": "东石乡", + "value": 3622 + }, { + "label": "义竹乡", + "value": 3623 + }, { + "label": "鹿草乡", + "value": 3624 + }, { + "label": "水上乡", + "value": 3625 + }, { + "label": "中埔乡", + "value": 3626 + }, { + "label": "竹崎乡", + "value": 3627 + }, { + "label": "梅山乡", + "value": 3628 + }, { + "label": "番路乡", + "value": 3629 + }, { + "label": "大埔乡", + "value": 3630 + }, { + "label": "阿里山乡", + "value": 3631 + }], + [{ + "label": "屏东市", + "value": 3633 + }, { + "label": "潮州镇", + "value": 3634 + }, { + "label": "东港镇", + "value": 3635 + }, { + "label": "恒春镇", + "value": 3636 + }, { + "label": "万丹乡", + "value": 3637 + }, { + "label": "长治乡", + "value": 3638 + }, { + "label": "麟洛乡", + "value": 3639 + }, { + "label": "九如乡", + "value": 3640 + }, { + "label": "里港乡", + "value": 3641 + }, { + "label": "盐埔乡", + "value": 3642 + }, { + "label": "高树乡", + "value": 3643 + }, { + "label": "万峦乡", + "value": 3644 + }, { + "label": "内埔乡", + "value": 3645 + }, { + "label": "竹田乡", + "value": 3646 + }, { + "label": "新埤乡", + "value": 3647 + }, { + "label": "枋寮乡", + "value": 3648 + }, { + "label": "新园乡", + "value": 3649 + }, { + "label": "崁顶乡", + "value": 3650 + }, { + "label": "林边乡", + "value": 3651 + }, { + "label": "南州乡", + "value": 3652 + }, { + "label": "佳冬乡", + "value": 3653 + }, { + "label": "琉球乡", + "value": 3654 + }, { + "label": "车城乡", + "value": 3655 + }, { + "label": "满州乡", + "value": 3656 + }, { + "label": "枋山乡", + "value": 3657 + }, { + "label": "三地门乡", + "value": 3658 + }, { + "label": "雾台乡", + "value": 3659 + }, { + "label": "玛家乡", + "value": 3660 + }, { + "label": "泰武乡", + "value": 3661 + }, { + "label": "来义乡", + "value": 3662 + }, { + "label": "春日乡", + "value": 3663 + }, { + "label": "狮子乡", + "value": 3664 + }, { + "label": "牡丹乡", + "value": 3665 + }], + [{ + "label": "台东市", + "value": 3667 + }, { + "label": "成功镇", + "value": 3668 + }, { + "label": "关山镇", + "value": 3669 + }, { + "label": "卑南乡", + "value": 3670 + }, { + "label": "鹿野乡", + "value": 3671 + }, { + "label": "池上乡", + "value": 3672 + }, { + "label": "东河乡", + "value": 3673 + }, { + "label": "长滨乡", + "value": 3674 + }, { + "label": "太麻里乡", + "value": 3675 + }, { + "label": "大武乡", + "value": 3676 + }, { + "label": "绿岛乡", + "value": 3677 + }, { + "label": "海端乡", + "value": 3678 + }, { + "label": "延平乡", + "value": 3679 + }, { + "label": "金峰乡", + "value": 3680 + }, { + "label": "达仁乡", + "value": 3681 + }, { + "label": "兰屿乡", + "value": 3682 + }], + [{ + "label": "花莲市", + "value": 3684 + }, { + "label": "凤林镇", + "value": 3685 + }, { + "label": "玉里镇", + "value": 3686 + }, { + "label": "新城乡", + "value": 3687 + }, { + "label": "吉安乡", + "value": 3688 + }, { + "label": "寿丰乡", + "value": 3689 + }, { + "label": "光复乡", + "value": 3690 + }, { + "label": "丰滨乡", + "value": 3691 + }, { + "label": "瑞穗乡", + "value": 3692 + }, { + "label": "富里乡", + "value": 3693 + }, { + "label": "秀林乡", + "value": 3694 + }, { + "label": "万荣乡", + "value": 3695 + }, { + "label": "卓溪乡", + "value": 3696 + }], + [{ + "label": "马公市", + "value": 3698 + }, { + "label": "湖西乡", + "value": 3699 + }, { + "label": "白沙乡", + "value": 3700 + }, { + "label": "西屿乡", + "value": 3701 + }, { + "label": "望安乡", + "value": 3702 + }, { + "label": "七美乡", + "value": 3703 + }], + [{ + "label": "金城镇", + "value": 3705 + }, { + "label": "金湖镇", + "value": 3706 + }, { + "label": "金沙镇", + "value": 3707 + }, { + "label": "金宁乡", + "value": 3708 + }, { + "label": "烈屿乡", + "value": 3709 + }, { + "label": "乌丘乡", + "value": 3710 + }], + [{ + "label": "南竿乡", + "value": 3712 + }, { + "label": "北竿乡", + "value": 3713 + }, { + "label": "莒光乡", + "value": 3714 + }, { + "label": "东引乡", + "value": 3715 + }] + ], + [ + [{ + "label": "中西区", + "value": 3718 + }, { + "label": "湾仔区", + "value": 3719 + }, { + "label": "东区", + "value": 3720 + }, { + "label": "南区", + "value": 3721 + }], + [{ + "label": "油尖旺区", + "value": 3723 + }, { + "label": "深水埗区", + "value": 3724 + }, { + "label": "九龙城区", + "value": 3725 + }, { + "label": "黄大仙区", + "value": 3726 + }, { + "label": "观塘区", + "value": 3727 + }], + [{ + "label": "荃湾区", + "value": 3729 + }, { + "label": "屯门区", + "value": 3730 + }, { + "label": "元朗区", + "value": 3731 + }, { + "label": "北区", + "value": 3732 + }, { + "label": "大埔区", + "value": 3733 + }, { + "label": "西贡区", + "value": 3734 + }, { + "label": "沙田区", + "value": 3735 + }, { + "label": "葵青区", + "value": 3736 + }, { + "label": "离岛区", + "value": 3737 + }] + ], + [ + [{ + "label": "花地玛堂区", + "value": 3740 + }, { + "label": "圣安多尼堂区", + "value": 3741 + }, { + "label": "大堂区", + "value": 3742 + }, { + "label": "望德堂区", + "value": 3743 + }, { + "label": "风顺堂区", + "value": 3744 + }], + [{ + "label": "嘉模堂区", + "value": 3746 + }], + [{ + "label": "圣方济各堂区", + "value": 3748 + }] + ] +] +export default areaData; diff --git a/components/mpvue-citypicker/city-data/city.js b/components/mpvue-citypicker/city-data/city.js new file mode 100644 index 0000000..884e01f --- /dev/null +++ b/components/mpvue-citypicker/city-data/city.js @@ -0,0 +1,1157 @@ +/* eslint-disable */ +var cityData = [ + [{ + "label": "北京市", + "value": 2 + }], + [{ + "label": "天津市", + "value": 20 + }], + [{ + "label": "石家庄市", + "value": 38 + }, { + "label": "唐山市", + "value": 61 + }, { + "label": "秦皇岛市", + "value": 76 + }, { + "label": "邯郸市", + "value": 84 + }, { + "label": "邢台市", + "value": 104 + }, { + "label": "保定市", + "value": 124 + }, { + "label": "张家口市", + "value": 150 + }, { + "label": "承德市", + "value": 168 + }, { + "label": "沧州市", + "value": 180 + }, { + "label": "廊坊市", + "value": 197 + }, { + "label": "衡水市", + "value": 208 + }], + [{ + "label": "太原市", + "value": 221 + }, { + "label": "大同市", + "value": 232 + }, { + "label": "阳泉市", + "value": 244 + }, { + "label": "长治市", + "value": 250 + }, { + "label": "晋城市", + "value": 264 + }, { + "label": "朔州市", + "value": 271 + }, { + "label": "晋中市", + "value": 278 + }, { + "label": "运城市", + "value": 290 + }, { + "label": "忻州市", + "value": 304 + }, { + "label": "临汾市", + "value": 319 + }, { + "label": "吕梁市", + "value": 337 + }], + [{ + "label": "呼和浩特市", + "value": 352 + }, { + "label": "包头市", + "value": 362 + }, { + "label": "乌海市", + "value": 372 + }, { + "label": "赤峰市", + "value": 376 + }, { + "label": "通辽市", + "value": 389 + }, { + "label": "鄂尔多斯市", + "value": 398 + }, { + "label": "呼伦贝尔市", + "value": 407 + }, { + "label": "巴彦淖尔市", + "value": 422 + }, { + "label": "乌兰察布市", + "value": 430 + }, { + "label": "兴安盟", + "value": 442 + }, { + "label": "锡林郭勒盟", + "value": 449 + }, { + "label": "阿拉善盟", + "value": 462 + }], + [{ + "label": "沈阳市", + "value": 467 + }, { + "label": "大连市", + "value": 481 + }, { + "label": "鞍山市", + "value": 492 + }, { + "label": "抚顺市", + "value": 500 + }, { + "label": "本溪市", + "value": 508 + }, { + "label": "丹东市", + "value": 515 + }, { + "label": "锦州市", + "value": 522 + }, { + "label": "营口市", + "value": 530 + }, { + "label": "阜新市", + "value": 537 + }, { + "label": "辽阳市", + "value": 545 + }, { + "label": "盘锦市", + "value": 553 + }, { + "label": "铁岭市", + "value": 558 + }, { + "label": "朝阳市", + "value": 566 + }, { + "label": "葫芦岛市", + "value": 574 + }, { + "label": "金普新区", + "value": 581 + }], + [{ + "label": "长春市", + "value": 586 + }, { + "label": "吉林市", + "value": 597 + }, { + "label": "四平市", + "value": 607 + }, { + "label": "辽源市", + "value": 614 + }, { + "label": "通化市", + "value": 619 + }, { + "label": "白山市", + "value": 627 + }, { + "label": "松原市", + "value": 634 + }, { + "label": "白城市", + "value": 640 + }, { + "label": "延边朝鲜族自治州", + "value": 646 + }], + [{ + "label": "哈尔滨市", + "value": 656 + }, { + "label": "齐齐哈尔市", + "value": 675 + }, { + "label": "鸡西市", + "value": 692 + }, { + "label": "鹤岗市", + "value": 702 + }, { + "label": "双鸭山市", + "value": 711 + }, { + "label": "大庆市", + "value": 720 + }, { + "label": "伊春市", + "value": 730 + }, { + "label": "佳木斯市", + "value": 748 + }, { + "label": "七台河市", + "value": 759 + }, { + "label": "牡丹江市", + "value": 764 + }, { + "label": "黑河市", + "value": 775 + }, { + "label": "绥化市", + "value": 782 + }, { + "label": "大兴安岭地区", + "value": 793 + }], + [{ + "label": "上海市", + "value": 802 + }], + [{ + "label": "南京市", + "value": 821 + }, { + "label": "无锡市", + "value": 833 + }, { + "label": "徐州市", + "value": 842 + }, { + "label": "常州市", + "value": 853 + }, { + "label": "苏州市", + "value": 861 + }, { + "label": "南通市", + "value": 871 + }, { + "label": "连云港市", + "value": 880 + }, { + "label": "淮安市", + "value": 887 + }, { + "label": "盐城市", + "value": 896 + }, { + "label": "扬州市", + "value": 906 + }, { + "label": "镇江市", + "value": 913 + }, { + "label": "泰州市", + "value": 920 + }, { + "label": "宿迁市", + "value": 927 + }], + [{ + "label": "杭州市", + "value": 934 + }, { + "label": "宁波市", + "value": 948 + }, { + "label": "温州市", + "value": 960 + }, { + "label": "嘉兴市", + "value": 972 + }, { + "label": "湖州市", + "value": 980 + }, { + "label": "绍兴市", + "value": 986 + }, { + "label": "金华市", + "value": 993 + }, { + "label": "衢州市", + "value": 1003 + }, { + "label": "舟山市", + "value": 1010 + }, { + "label": "台州市", + "value": 1015 + }, { + "label": "丽水市", + "value": 1025 + }, { + "label": "舟山群岛新区", + "value": 1035 + }], + [{ + "label": "合肥市", + "value": 1047 + }, { + "label": "芜湖市", + "value": 1057 + }, { + "label": "蚌埠市", + "value": 1066 + }, { + "label": "淮南市", + "value": 1074 + }, { + "label": "马鞍山市", + "value": 1081 + }, { + "label": "淮北市", + "value": 1088 + }, { + "label": "铜陵市", + "value": 1093 + }, { + "label": "安庆市", + "value": 1098 + }, { + "label": "黄山市", + "value": 1110 + }, { + "label": "滁州市", + "value": 1118 + }, { + "label": "阜阳市", + "value": 1127 + }, { + "label": "宿州市", + "value": 1136 + }, { + "label": "六安市", + "value": 1142 + }, { + "label": "亳州市", + "value": 1150 + }, { + "label": "池州市", + "value": 1155 + }, { + "label": "宣城市", + "value": 1160 + }], + [{ + "label": "福州市", + "value": 1169 + }, { + "label": "厦门市", + "value": 1183 + }, { + "label": "莆田市", + "value": 1190 + }, { + "label": "三明市", + "value": 1196 + }, { + "label": "泉州市", + "value": 1209 + }, { + "label": "漳州市", + "value": 1222 + }, { + "label": "南平市", + "value": 1234 + }, { + "label": "龙岩市", + "value": 1245 + }, { + "label": "宁德市", + "value": 1253 + }], + [{ + "label": "南昌市", + "value": 1264 + }, { + "label": "景德镇市", + "value": 1274 + }, { + "label": "萍乡市", + "value": 1279 + }, { + "label": "九江市", + "value": 1285 + }, { + "label": "新余市", + "value": 1299 + }, { + "label": "鹰潭市", + "value": 1302 + }, { + "label": "赣州市", + "value": 1306 + }, { + "label": "吉安市", + "value": 1325 + }, { + "label": "宜春市", + "value": 1339 + }, { + "label": "抚州市", + "value": 1350 + }, { + "label": "上饶市", + "value": 1362 + }], + [{ + "label": "济南市", + "value": 1376 + }, { + "label": "青岛市", + "value": 1387 + }, { + "label": "淄博市", + "value": 1399 + }, { + "label": "枣庄市", + "value": 1408 + }, { + "label": "东营市", + "value": 1415 + }, { + "label": "烟台市", + "value": 1421 + }, { + "label": "潍坊市", + "value": 1434 + }, { + "label": "济宁市", + "value": 1447 + }, { + "label": "泰安市", + "value": 1459 + }, { + "label": "威海市", + "value": 1466 + }, { + "label": "日照市", + "value": 1471 + }, { + "label": "莱芜市", + "value": 1476 + }, { + "label": "临沂市", + "value": 1479 + }, { + "label": "德州市", + "value": 1492 + }, { + "label": "聊城市", + "value": 1504 + }, { + "label": "滨州市", + "value": 1513 + }, { + "label": "菏泽市", + "value": 1522 + }], + [{ + "label": "郑州市", + "value": 1533 + }, { + "label": "开封市", + "value": 1546 + }, { + "label": "洛阳市", + "value": 1556 + }, { + "label": "平顶山市", + "value": 1572 + }, { + "label": "安阳市", + "value": 1583 + }, { + "label": "鹤壁市", + "value": 1593 + }, { + "label": "新乡市", + "value": 1599 + }, { + "label": "焦作市", + "value": 1612 + }, { + "label": "濮阳市", + "value": 1623 + }, { + "label": "许昌市", + "value": 1630 + }, { + "label": "漯河市", + "value": 1637 + }, { + "label": "三门峡市", + "value": 1643 + }, { + "label": "南阳市", + "value": 1650 + }, { + "label": "商丘市", + "value": 1664 + }, { + "label": "信阳市", + "value": 1674 + }, { + "label": "周口市", + "value": 1685 + }, { + "label": "驻马店市", + "value": 1696 + }, { + "label": "直辖县级", + "value": 1707 + }], + [{ + "label": "武汉市", + "value": 1710 + }, { + "label": "黄石市", + "value": 1724 + }, { + "label": "十堰市", + "value": 1731 + }, { + "label": "宜昌市", + "value": 1740 + }, { + "label": "襄阳市", + "value": 1754 + }, { + "label": "鄂州市", + "value": 1764 + }, { + "label": "荆门市", + "value": 1768 + }, { + "label": "孝感市", + "value": 1774 + }, { + "label": "荆州市", + "value": 1782 + }, { + "label": "黄冈市", + "value": 1791 + }, { + "label": "咸宁市", + "value": 1802 + }, { + "label": "随州市", + "value": 1809 + }, { + "label": "恩施土家族苗族自治州", + "value": 1813 + }, { + "label": "直辖县级", + "value": 1822 + }], + [{ + "label": "长沙市", + "value": 1828 + }, { + "label": "株洲市", + "value": 1838 + }, { + "label": "湘潭市", + "value": 1848 + }, { + "label": "衡阳市", + "value": 1854 + }, { + "label": "邵阳市", + "value": 1867 + }, { + "label": "岳阳市", + "value": 1880 + }, { + "label": "常德市", + "value": 1890 + }, { + "label": "张家界市", + "value": 1900 + }, { + "label": "益阳市", + "value": 1905 + }, { + "label": "郴州市", + "value": 1912 + }, { + "label": "永州市", + "value": 1924 + }, { + "label": "怀化市", + "value": 1936 + }, { + "label": "娄底市", + "value": 1949 + }, { + "label": "湘西土家族苗族自治州", + "value": 1955 + }], + [{ + "label": "广州市", + "value": 1965 + }, { + "label": "韶关市", + "value": 1977 + }, { + "label": "深圳市", + "value": 1988 + }, { + "label": "珠海市", + "value": 1999 + }, { + "label": "汕头市", + "value": 2003 + }, { + "label": "佛山市", + "value": 2011 + }, { + "label": "江门市", + "value": 2017 + }, { + "label": "湛江市", + "value": 2025 + }, { + "label": "茂名市", + "value": 2035 + }, { + "label": "肇庆市", + "value": 2041 + }, { + "label": "惠州市", + "value": 2050 + }, { + "label": "梅州市", + "value": 2056 + }, { + "label": "汕尾市", + "value": 2065 + }, { + "label": "河源市", + "value": 2070 + }, { + "label": "阳江市", + "value": 2077 + }, { + "label": "清远市", + "value": 2082 + }, { + "label": "东莞市", + "value": 2091 + }, { + "label": "中山市", + "value": 2123 + }, { + "label": "潮州市", + "value": 2146 + }, { + "label": "揭阳市", + "value": 2150 + }, { + "label": "云浮市", + "value": 2156 + }], + [{ + "label": "南宁市", + "value": 2163 + }, { + "label": "柳州市", + "value": 2177 + }, { + "label": "桂林市", + "value": 2189 + }, { + "label": "梧州市", + "value": 2207 + }, { + "label": "北海市", + "value": 2215 + }, { + "label": "防城港市", + "value": 2220 + }, { + "label": "钦州市", + "value": 2225 + }, { + "label": "贵港市", + "value": 2230 + }, { + "label": "玉林市", + "value": 2236 + }, { + "label": "百色市", + "value": 2245 + }, { + "label": "贺州市", + "value": 2258 + }, { + "label": "河池市", + "value": 2264 + }, { + "label": "来宾市", + "value": 2276 + }, { + "label": "崇左市", + "value": 2283 + }], + [{ + "label": "海口市", + "value": 2292 + }, { + "label": "三亚市", + "value": 2297 + }, { + "label": "三沙市", + "value": 2302 + }, { + "label": "直辖县级", + "value": 2306 + }], + [{ + "label": "重庆市", + "value": 2324 + }, { + "label": "两江新区", + "value": 2363 + }], + [{ + "label": "成都市", + "value": 2368 + }, { + "label": "自贡市", + "value": 2388 + }, { + "label": "攀枝花市", + "value": 2395 + }, { + "label": "泸州市", + "value": 2401 + }, { + "label": "德阳市", + "value": 2409 + }, { + "label": "绵阳市", + "value": 2416 + }, { + "label": "广元市", + "value": 2426 + }, { + "label": "遂宁市", + "value": 2434 + }, { + "label": "内江市", + "value": 2440 + }, { + "label": "乐山市", + "value": 2446 + }, { + "label": "南充市", + "value": 2458 + }, { + "label": "眉山市", + "value": 2468 + }, { + "label": "宜宾市", + "value": 2475 + }, { + "label": "广安市", + "value": 2486 + }, { + "label": "达州市", + "value": 2493 + }, { + "label": "雅安市", + "value": 2501 + }, { + "label": "巴中市", + "value": 2510 + }, { + "label": "资阳市", + "value": 2516 + }, { + "label": "阿坝藏族羌族自治州", + "value": 2521 + }, { + "label": "甘孜藏族自治州", + "value": 2535 + }, { + "label": "凉山彝族自治州", + "value": 2554 + }], + [{ + "label": "贵阳市", + "value": 2573 + }, { + "label": "六盘水市", + "value": 2584 + }, { + "label": "遵义市", + "value": 2589 + }, { + "label": "安顺市", + "value": 2604 + }, { + "label": "毕节市", + "value": 2611 + }, { + "label": "铜仁市", + "value": 2620 + }, { + "label": "黔西南布依族苗族自治州", + "value": 2631 + }, { + "label": "黔东南苗族侗族自治州", + "value": 2640 + }, { + "label": "黔南布依族苗族自治州", + "value": 2657 + }], + [{ + "label": "昆明市", + "value": 2671 + }, { + "label": "曲靖市", + "value": 2686 + }, { + "label": "玉溪市", + "value": 2696 + }, { + "label": "保山市", + "value": 2706 + }, { + "label": "昭通市", + "value": 2712 + }, { + "label": "丽江市", + "value": 2724 + }, { + "label": "普洱市", + "value": 2730 + }, { + "label": "临沧市", + "value": 2741 + }, { + "label": "楚雄彝族自治州", + "value": 2750 + }, { + "label": "红河哈尼族彝族自治州", + "value": 2761 + }, { + "label": "文山壮族苗族自治州", + "value": 2775 + }, { + "label": "西双版纳傣族自治州", + "value": 2784 + }, { + "label": "大理白族自治州", + "value": 2788 + }, { + "label": "德宏傣族景颇族自治州", + "value": 2801 + }, { + "label": "怒江傈僳族自治州", + "value": 2807 + }, { + "label": "迪庆藏族自治州", + "value": 2812 + }], + [{ + "label": "拉萨市", + "value": 2817 + }, { + "label": "日喀则市", + "value": 2826 + }, { + "label": "昌都市", + "value": 2845 + }, { + "label": "山南地区", + "value": 2857 + }, { + "label": "那曲地区", + "value": 2870 + }, { + "label": "阿里地区", + "value": 2882 + }, { + "label": "林芝地区", + "value": 2890 + }], + [{ + "label": "西安市", + "value": 2899 + }, { + "label": "铜川市", + "value": 2913 + }, { + "label": "宝鸡市", + "value": 2918 + }, { + "label": "咸阳市", + "value": 2931 + }, { + "label": "渭南市", + "value": 2946 + }, { + "label": "延安市", + "value": 2958 + }, { + "label": "汉中市", + "value": 2972 + }, { + "label": "榆林市", + "value": 2984 + }, { + "label": "安康市", + "value": 2997 + }, { + "label": "商洛市", + "value": 3008 + }, { + "label": "西咸新区", + "value": 3016 + }], + [{ + "label": "兰州市", + "value": 3023 + }, { + "label": "嘉峪关市", + "value": 3032 + }, { + "label": "金昌市", + "value": 3036 + }, { + "label": "白银市", + "value": 3039 + }, { + "label": "天水市", + "value": 3045 + }, { + "label": "武威市", + "value": 3053 + }, { + "label": "张掖市", + "value": 3058 + }, { + "label": "平凉市", + "value": 3065 + }, { + "label": "酒泉市", + "value": 3073 + }, { + "label": "庆阳市", + "value": 3081 + }, { + "label": "定西市", + "value": 3090 + }, { + "label": "陇南市", + "value": 3098 + }, { + "label": "临夏回族自治州", + "value": 3108 + }, { + "label": "甘南藏族自治州", + "value": 3117 + }], + [{ + "label": "西宁市", + "value": 3127 + }, { + "label": "海东市", + "value": 3135 + }, { + "label": "海北藏族自治州", + "value": 3142 + }, { + "label": "黄南藏族自治州", + "value": 3147 + }, { + "label": "海南藏族自治州", + "value": 3152 + }, { + "label": "果洛藏族自治州", + "value": 3158 + }, { + "label": "玉树藏族自治州", + "value": 3165 + }, { + "label": "海西蒙古族藏族自治州", + "value": 3172 + }], + [{ + "label": "银川市", + "value": 3179 + }, { + "label": "石嘴山市", + "value": 3186 + }, { + "label": "吴忠市", + "value": 3190 + }, { + "label": "固原市", + "value": 3196 + }, { + "label": "中卫市", + "value": 3202 + }], + [{ + "label": "乌鲁木齐市", + "value": 3207 + }, { + "label": "克拉玛依市", + "value": 3216 + }, { + "label": "吐鲁番地区", + "value": 3221 + }, { + "label": "哈密地区", + "value": 3225 + }, { + "label": "昌吉回族自治州", + "value": 3229 + }, { + "label": "博尔塔拉蒙古自治州", + "value": 3237 + }, { + "label": "巴音郭楞蒙古自治州", + "value": 3242 + }, { + "label": "阿克苏地区", + "value": 3252 + }, { + "label": "克孜勒苏柯尔克孜自治州", + "value": 3262 + }, { + "label": "喀什地区", + "value": 3267 + }, { + "label": "和田地区", + "value": 3280 + }, { + "label": "伊犁哈萨克自治州", + "value": 3289 + }, { + "label": "塔城地区", + "value": 3301 + }, { + "label": "阿勒泰地区", + "value": 3309 + }, { + "label": "直辖县级", + "value": 3317 + }], + [{ + "label": "台北市", + "value": 3326 + }, { + "label": "高雄市", + "value": 3339 + }, { + "label": "基隆市", + "value": 3378 + }, { + "label": "台中市", + "value": 3386 + }, { + "label": "台南市", + "value": 3416 + }, { + "label": "新竹市", + "value": 3454 + }, { + "label": "嘉义市", + "value": 3458 + }, { + "label": "新北市", + "value": 3461 + }, { + "label": "宜兰县", + "value": 3491 + }, { + "label": "桃园县", + "value": 3504 + }, { + "label": "新竹县", + "value": 3518 + }, { + "label": "苗栗县", + "value": 3532 + }, { + "label": "彰化县", + "value": 3551 + }, { + "label": "南投县", + "value": 3578 + }, { + "label": "云林县", + "value": 3592 + }, { + "label": "嘉义县", + "value": 3613 + }, { + "label": "屏东县", + "value": 3632 + }, { + "label": "台东县", + "value": 3666 + }, { + "label": "花莲县", + "value": 3683 + }, { + "label": "澎湖县", + "value": 3697 + }, { + "label": "金门县", + "value": 3704 + }, { + "label": "连江县", + "value": 3711 + }], + [{ + "label": "香港岛", + "value": 3717 + }, { + "label": "九龙", + "value": 3722 + }, { + "label": "新界", + "value": 3728 + }], + [{ + "label": "澳门半岛", + "value": 3739 + }, { + "label": "氹仔岛", + "value": 3745 + }, { + "label": "路环岛", + "value": 3747 + }] +] +export default cityData; diff --git a/components/mpvue-citypicker/city-data/province.js b/components/mpvue-citypicker/city-data/province.js new file mode 100644 index 0000000..20004ff --- /dev/null +++ b/components/mpvue-citypicker/city-data/province.js @@ -0,0 +1,105 @@ +/* eslint-disable */ +var provinceData = [{ + "label": "北京市", + "value": 1 +}, { + "label": "天津市", + "value": 19 +}, { + "label": "河北省", + "value": 37 +}, { + "label": "山西省", + "value": 220 +}, { + "label": "内蒙古自治区", + "value": 351 +}, { + "label": "辽宁省", + "value": 466 +}, { + "label": "吉林省", + "value": 585 +}, { + "label": "黑龙江省", + "value": 655 +}, { + "label": "上海市", + "value": 801 +}, { + "label": "江苏省", + "value": 820 +}, { + "label": "浙江省", + "value": 933 +}, { + "label": "安徽省", + "value": 1046 +}, { + "label": "福建省", + "value": 1168 +}, { + "label": "江西省", + "value": 1263 +}, { + "label": "山东省", + "value": 1375 +}, { + "label": "河南省", + "value": 1532 +}, { + "label": "湖北省", + "value": 1709 +}, { + "label": "湖南省", + "value": 1827 +}, { + "label": "广东省", + "value": 1964 +}, { + "label": "广西壮族自治区", + "value": 2162 +}, { + "label": "海南省", + "value": 2291 +}, { + "label": "重庆市", + "value": 2323 +}, { + "label": "四川省", + "value": 2367 +}, { + "label": "贵州省", + "value": 2572 +}, { + "label": "云南省", + "value": 2670 +}, { + "label": "西藏自治区", + "value": 2816 +}, { + "label": "陕西省", + "value": 2898 +}, { + "label": "甘肃省", + "value": 3022 +}, { + "label": "青海省", + "value": 3126 +}, { + "label": "宁夏回族自治区", + "value": 3178 +}, { + "label": "新疆维吾尔自治区", + "value": 3206 +}, { + "label": "台湾省", + "value": 3325 +}, { + "label": "香港特别行政区", + "value": 3716 +}, { + "label": "澳门特别行政区", + "value": 3738 +}] +export default provinceData; diff --git a/components/mpvue-citypicker/mpvueCityPicker.vue b/components/mpvue-citypicker/mpvueCityPicker.vue new file mode 100644 index 0000000..f9eccf4 --- /dev/null +++ b/components/mpvue-citypicker/mpvueCityPicker.vue @@ -0,0 +1,214 @@ + + + + + diff --git a/components/mpvue-picker/mpvuePicker.vue b/components/mpvue-picker/mpvuePicker.vue new file mode 100644 index 0000000..dbd2009 --- /dev/null +++ b/components/mpvue-picker/mpvuePicker.vue @@ -0,0 +1,463 @@ + + + + + diff --git a/components/priv-pop/priv-pop.vue b/components/priv-pop/priv-pop.vue new file mode 100644 index 0000000..bca11f7 --- /dev/null +++ b/components/priv-pop/priv-pop.vue @@ -0,0 +1,126 @@ + + + + + + diff --git a/components/rule-pop/rule-pop.vue b/components/rule-pop/rule-pop.vue new file mode 100644 index 0000000..e8794de --- /dev/null +++ b/components/rule-pop/rule-pop.vue @@ -0,0 +1,158 @@ + + + + + + diff --git a/components/tab-bar/tab-bar.vue b/components/tab-bar/tab-bar.vue new file mode 100644 index 0000000..5ec1452 --- /dev/null +++ b/components/tab-bar/tab-bar.vue @@ -0,0 +1,193 @@ + + + + + + diff --git a/components/xw-CountDown/index.vue b/components/xw-CountDown/index.vue new file mode 100644 index 0000000..c5ed6a1 --- /dev/null +++ b/components/xw-CountDown/index.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/components/xw-CountDown2/index - 副本.vue b/components/xw-CountDown2/index - 副本.vue new file mode 100644 index 0000000..0f5c9ed --- /dev/null +++ b/components/xw-CountDown2/index - 副本.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/components/xw-CountDown2/index.vue b/components/xw-CountDown2/index.vue new file mode 100644 index 0000000..1a01d2e --- /dev/null +++ b/components/xw-CountDown2/index.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/custom-tab-bar/index.js b/custom-tab-bar/index.js new file mode 100644 index 0000000..85bcfa2 --- /dev/null +++ b/custom-tab-bar/index.js @@ -0,0 +1,44 @@ +Component({ + data: { + selected: 0, + color: "#999999", + selectedColor: "#FFFFFF", + list: [ + { + "pagePath": "/pages/shouye/index", + "iconPath": "/static/tabbar/m1.png", + "selectedIconPath": "/static/tabbar/s1.png", + "text": "" + }, + { + "pagePath": "/pages/infinite/index", + "iconPath": "/static/tabbar/m2.png", + "selectedIconPath": "/static/tabbar/s2.png", + "text": "" + }, + { + "pagePath": "/pages/sangdai/sangdai", + "iconPath": "/static/tabbar/m3.png", + "selectedIconPath": "/static/tabbar/s3.png", + "text": "" + }, + { + "pagePath": "/pages/user/index", + "iconPath": "/static/tabbar/m4.png", + "selectedIconPath": "/static/tabbar/s4.png", + "text": "" + } + ] + }, + attached() {}, + methods: { + switchTab(e) { + const data = e.currentTarget.dataset + const url = data.path + wx.switchTab({ url }) + this.setData({ + selected: data.index + }) + } + } +}) \ No newline at end of file diff --git a/custom-tab-bar/index.json b/custom-tab-bar/index.json new file mode 100644 index 0000000..32640e0 --- /dev/null +++ b/custom-tab-bar/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} \ No newline at end of file diff --git a/custom-tab-bar/index.wxml b/custom-tab-bar/index.wxml new file mode 100644 index 0000000..1b65755 --- /dev/null +++ b/custom-tab-bar/index.wxml @@ -0,0 +1,9 @@ + + + + + + {{item.text}} + + diff --git a/custom-tab-bar/index.wxss b/custom-tab-bar/index.wxss new file mode 100644 index 0000000..9338ffc --- /dev/null +++ b/custom-tab-bar/index.wxss @@ -0,0 +1,41 @@ +.tab-bar { + position: fixed; + bottom: 0; + left: 0; + right: 0; + box-sizing: content-box; + height: 44px; + background: #000; + display: flex; + padding-top: 10px; + padding-bottom: env(safe-area-inset-bottom); +} + +.tab-bar-border { + background-color: #404241; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 1px; + transform: scaleY(0.5); +} + +.tab-bar-item { + flex: 1; + text-align: center; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + position: relative; +} + +.tab-bar-item image { + width: 160rpx; + height: 96rpx; +} + +.tab-bar-item view { + font-size: 10px; +} \ No newline at end of file diff --git a/main.js b/main.js new file mode 100644 index 0000000..cccbc3c --- /dev/null +++ b/main.js @@ -0,0 +1,184 @@ +import Vue from 'vue' +import App from './App' +import Mixin from '@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js' +// import uView from "uview-ui" + +import { gotopage } from '@/common/gotopage.js' +// 配置公共方法 +Vue.prototype.gotoPage = gotopage + +// Vue.use(uView); +// 配置公共方法 +import common from '@/common/common.js' +Vue.prototype.$noMultipleClicks = common.noMultipleClicks +Vue.prototype.$c = common + +Vue.prototype.req = function (param, backpage, backtype) { + uni.getNetworkType({ + success: function (res) { + if (res.networkType == 'none') { + uni.showToast({ + title: '网络连接异常,请检查网络', + icon: 'none' + }) + return + } + } + }) + var _self = this, + url = param.url, + method = 'POST', + header = {}, + data = param.data || {}, + Loading = param.Loading || false + + var token = uni.getStorageSync('token') + // 我 + // var token = 'bf3dd927642ea5a7a9ad90f1e1d1faab4d61cd33'; + // 客户 + // var token = '801abe6ec37a36b3ff37ded44be13c7bf06b629e'; + + //拼接完整请求地址 + var requestUrl = this.siteBaseUrl + url + if (method) { + method = method.toUpperCase() //小写改为大写 + // console.log(token,11) + if (method == 'POST') { + header = { + 'content-type': 'application/x-www-form-urlencoded', + token: token, + adid: uni.getStorageSync('_ad_id'), + clickid: uni.getStorageSync('_click_id') + } + + // if (uni.getStorageSync('_ad_id')) { + // header.adid = uni.getStorageSync('_ad_id') + // } + // if (uni.getStorageSync('_click_id')) { + // header.clickid = uni.getStorageSync('_click_id') + // } + } else { + header = { + 'content-type': 'application/json' + } + } + } else { + method = 'GET' + header = { + 'content-type': 'application/json' + } + } + //用户交互:加载圈 + // console.log(!Loading) + if (!Loading) { + uni.showLoading({ + title: '加载中...' + }) + } + //网络请求 + + uni.request({ + url: requestUrl, + method: method, + header: header, + data: data, + success: res => { + // if (requestUrl.indexOf('coupon_ling') != -1) { + // uni.showModal({ + // title: '提示', + // content: JSON.stringify(res), + // showCancel: true, + // success: ({ confirm, cancel }) => {} + // }) + // } + + // console.log(res.data) + if (res.data.status == 1) { + //返回结果码code判断:1成功,-1错误 + // uni.showToast({ + // title: res.data.msg, + // icon: 'none', + // }) + } else if (res.data.status == 2222) { + } else if (res.data.status == -9) { + let pages = getCurrentPages() + console.log(pages[pages.length - 1].route) + // uni.setStorageSync('page', pages[pages.length - 1].route) + setTimeout(() => { + uni.showToast({ + title: res.data.msg, + icon: 'none', + success() { + setTimeout(() => { + uni.navigateTo({ + url: '/pages/user/bangding' + }) + }, 1500) + } + }) + }, 100) + } else if (res.data.status == 0) { + setTimeout(function () { + uni.showToast({ + title: res.data.msg, + icon: 'none' + }) + }, 100) + } else if (res.data.status < 0) { + var pages = getCurrentPages() + for (var a = 0; a < pages.length; a++) { + console.log(pages[a].route) + if (pages[a].route == 'pages/user/index') { + uni.setStorageSync('lgurl', pages[a].route) + uni.setStorageSync('lgurldata', JSON.stringify(pages[a].options)) + } + } + setTimeout(() => { + uni.showToast({ + title: '请先登录', + icon: 'none' + }) + }, 100) + uni.redirectTo({ + url: '/pages/user/login' + }) + } else { + return + } + typeof param.success == 'function' && param.success(res.data) + }, + fail: e => { + console.log('网络请求fail:' + JSON.stringify(e)) + typeof param.fail == 'function' && param.fail(e.data) + }, + complete: () => { + uni.hideLoading() + typeof param.complete == 'function' && param.complete() + return + } + }) +} + +// 测试 +// const baseUrl = '' +const baseUrl = 'http://101.43.1.207' + +// 正式 +// const baseUrl = 'https://xinglanmh.shequtuangou.vip' +Vue.prototype.siteBaseUrl = baseUrl + '/api/' + +Vue.prototype.$z_img2 = baseUrl + '/zcq/' +Vue.prototype.$img = url => baseUrl + '/static/web' + url +// Vue.prototype.$img1 = url => baseUrl + '/static/web' + url +Vue.prototype.$img1 = url => baseUrl+'/static/web/static/'+ url + +Vue.prototype.$sys = () => uni.getSystemInfoSync() + +Vue.config.productionTip = false +Vue.mixin(Mixin) +App.mpType = 'app' + +const app = new Vue({ + ...App +}) +app.$mount() diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..dd14e09 --- /dev/null +++ b/manifest.json @@ -0,0 +1,191 @@ +{ + "name" : "枫岚云赏", + "appid" : "__UNI__B7E0990", + "description" : "", + "versionName" : "1.0.1", + "versionCode" : 101, + "transformPx" : false, + /* 5+App特有相关 */ + "app-plus" : { + "usingComponents" : true, + "nvueStyleCompiler" : "uni-app", + "compilerVersion" : 3, + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : true, + "autoclose" : true, + "delay" : 0 + }, + /* 模块配置 */ + "modules" : { + "Payment" : {}, + "Share" : {}, + "OAuth" : {}, + "Push" : {}, + "Fingerprint" : {} + }, + /* 应用发布信息 */ + "distribute" : { + /* android打包配置 */ + "android" : { + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + /* ios打包配置 */ + "ios" : {}, + /* SDK配置 */ + "sdkConfigs" : { + "ad" : {}, + "oauth" : { + "weixin" : { + "appid" : "wx2c73767b33de26fb", + "appsecret" : "57b0a56910bc0a1625ddf3210585de1a", + "UniversalLinks" : "https://help.wechat.com/tq/" + }, + "apple" : {} + }, + "payment" : { + "weixin" : { + "__platform__" : [ "ios", "android" ], + "appid" : "wx2c73767b33de26fb", + "UniversalLinks" : "https://help.wechat.com/tq/" + } + }, + "share" : { + "weixin" : { + "appid" : "wx2c73767b33de26fb", + "UniversalLinks" : "https://help.wechat.com/tq/" + } + }, + "push" : { + "unipush" : {} + } + }, + "icons" : { + "android" : { + "hdpi" : "", + "xhdpi" : "", + "xxhdpi" : "", + "xxxhdpi" : "" + }, + "ios" : { + "appstore" : "", + "ipad" : { + "app" : "", + "app@2x" : "", + "notification" : "", + "notification@2x" : "", + "proapp@2x" : "", + "settings" : "", + "settings@2x" : "", + "spotlight" : "", + "spotlight@2x" : "" + }, + "iphone" : { + "app@2x" : "", + "app@3x" : "", + "notification@2x" : "", + "notification@3x" : "", + "settings@2x" : "", + "settings@3x" : "", + "spotlight@2x" : "", + "spotlight@3x" : "" + } + } + }, + "splashscreen" : { + "androidStyle" : "common", + "android" : { + "hdpi" : "C:/Users/Administrator/Desktop/imgs/dealer_bg.png", + "xhdpi" : "C:/Users/Administrator/Desktop/imgs/dealer_bg.png", + "xxhdpi" : "C:/Users/Administrator/Desktop/imgs/dealer_bg.png" + } + } + }, + "uniStatistics" : { + "enable" : true + } + }, + /* 快应用特有相关 */ + "quickapp" : {}, + /* 小程序特有相关 */ + "mp-weixin" : { + "appid" : "wx82c787f79c22f012", + "setting" : { + "urlCheck" : false, + "es6" : false, + "postcss" : true, + "minified" : true + }, + "usingComponents" : true, + "uniStatistics" : { + "enable" : false + }, + "requiredPrivateInfos" : [ + "getLocation", + "onLocationChange", + "startLocationUpdateBackground", + "chooseAddress" + ] + }, + "mp-alipay" : { + "usingComponents" : true, + "uniStatistics" : { + "enable" : false + } + }, + "mp-baidu" : { + "usingComponents" : true, + "uniStatistics" : { + "enable" : false + } + }, + "mp-toutiao" : { + "usingComponents" : true, + "uniStatistics" : { + "enable" : false + } + }, + "uniStatistics" : { + "enable" : false + }, + "h5" : { + "router" : { + "mode" : "history" + }, + "uniStatistics" : { + "enable" : false + }, + "devServer" : { + "https" : false + } + }, + "vueVersion" : "2", + "mp-kuaishou" : { + "uniStatistics" : { + "enable" : false + } + }, + "mp-qq" : { + "uniStatistics" : { + "enable" : false + } + } +} diff --git a/package/index/coupon-center.vue b/package/index/coupon-center.vue new file mode 100644 index 0000000..f30d92c --- /dev/null +++ b/package/index/coupon-center.vue @@ -0,0 +1,213 @@ + + + + + + diff --git a/package/index/leitai.vue b/package/index/leitai.vue new file mode 100644 index 0000000..8c3edfd --- /dev/null +++ b/package/index/leitai.vue @@ -0,0 +1,1816 @@ + + + + + + \ No newline at end of file diff --git a/package/index/lian-ji.vue b/package/index/lian-ji.vue new file mode 100644 index 0000000..9be2e5b --- /dev/null +++ b/package/index/lian-ji.vue @@ -0,0 +1,1996 @@ + + + + + + \ No newline at end of file diff --git a/package/index/sign.vue b/package/index/sign.vue new file mode 100644 index 0000000..362baf3 --- /dev/null +++ b/package/index/sign.vue @@ -0,0 +1,308 @@ + + + + + + \ No newline at end of file diff --git a/package/mine/collect.vue b/package/mine/collect.vue new file mode 100644 index 0000000..1486a18 --- /dev/null +++ b/package/mine/collect.vue @@ -0,0 +1,342 @@ + + + + + + \ No newline at end of file diff --git a/package/mine/coupon-detail.vue b/package/mine/coupon-detail.vue new file mode 100644 index 0000000..a6639e8 --- /dev/null +++ b/package/mine/coupon-detail.vue @@ -0,0 +1,540 @@ + + + + + + \ No newline at end of file diff --git a/package/mine/equity.vue b/package/mine/equity.vue new file mode 100644 index 0000000..f68a9bb --- /dev/null +++ b/package/mine/equity.vue @@ -0,0 +1,868 @@ + + + + + + \ No newline at end of file diff --git a/package/mine/qy-rule.vue b/package/mine/qy-rule.vue new file mode 100644 index 0000000..3dc4897 --- /dev/null +++ b/package/mine/qy-rule.vue @@ -0,0 +1,124 @@ + + + + + + diff --git a/package/mine/skill-card.vue b/package/mine/skill-card.vue new file mode 100644 index 0000000..25e4ed7 --- /dev/null +++ b/package/mine/skill-card.vue @@ -0,0 +1,146 @@ + + + + + + diff --git a/package/mine/ti-qu.vue b/package/mine/ti-qu.vue new file mode 100644 index 0000000..4c72a63 --- /dev/null +++ b/package/mine/ti-qu.vue @@ -0,0 +1,622 @@ + + + + + + diff --git a/pages.json b/pages.json new file mode 100644 index 0000000..4acc253 --- /dev/null +++ b/pages.json @@ -0,0 +1,523 @@ +{ + "easycom": { + "^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue" + }, + "pages": [{ + "path": "pages/shouye/index", + "style": { + "navigationStyle": "custom", + "navigationBarTextStyle": "white" + } + }, + { + "path": "pages/shouye/detail", + "style": { + "navigationStyle": "custom", + "navigationBarTextStyle": "white" + } + }, + { + "path": "pages/shouye/detail_wuxian", + "style": { + "navigationStyle": "custom", + "navigationBarBackgroundColor": "#222222", + "navigationBarTextStyle": "white" + } + }, + { + "path": "pages/shouye/rili", + "style": { + "navigationBarTitleText": "预售日历", + "navigationBarBackgroundColor": "#161616", + "navigationBarTextStyle": "white" + } + }, + { + "path": "pages/shouye/bangdan", + "style": { + "navigationStyle": "custom", + "navigationBarBackgroundColor": "#161616", + "navigationBarTextStyle": "white" + } + }, + { + "path": "pages/shouye/wxl", + "style": { + "navigationBarTitleText": "无限令", + "navigationBarBackgroundColor": "#222222", + "navigationBarTextStyle": "white" + } + }, + { + "path": "pages/shouye/huanxiang", + "style": { + "navigationBarTitleText": "换箱", + "navigationBarBackgroundColor": "#222222", + "navigationBarTextStyle": "white", + "navigationStyle": "custom" + } + }, + { + "path": "pages/user/login", + "style": { + "navigationBarTitleText": "枫岚云赏", + "navigationBarBackgroundColor": "#222222", + "navigationBarTextStyle": "white" + } + }, + { + "path": "pages/user/bangding", + "style": { + "navigationBarTitleText": "枫岚云赏", + "navigationBarBackgroundColor": "#222222", + "navigationBarTextStyle": "white" + } + }, + { + "path": "pages/user/index", + "style": { + "navigationStyle": "custom", + "navigationBarTextStyle": "white" + } + }, + { + "path": "pages/user/yetx", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "星钻明细", + "navigationBarTextStyle": "white" + } + }, + { + "path": "pages/user/xfjl", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "消费记录", + "navigationBarTextStyle": "white" + } + }, + { + "path": "pages/user/hsjl", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "打包记录", + "navigationBarTextStyle": "white" + } + }, + { + "path": "pages/user/fhjl", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "发货记录", + "navigationBarTextStyle": "white" + } + }, + { + "path": "pages/user/order", + "style": { + "navigationBarBackgroundColor": "#222222", + "navigationBarTitleText": "订单详情", + "navigationBarTextStyle": "white", + "navigationStyle": "custom" + } + }, + { + "path": "pages/user/bi_jl", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "星钻记录", + "navigationBarTextStyle": "white" + } + }, + { + "path": "pages/user/jf_jl", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "积分记录", + "navigationBarTextStyle": "white" + } + }, + { + "path": "pages/user/sy_jl", + "style": { + "navigationBarBackgroundColor": "#222222", + "navigationBarTitleText": "奖励明细", + "navigationBarTextStyle": "white", + "navigationStyle": "custom" + } + }, + + { + "path": "pages/user/vip", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "会员中心", + "navigationBarTextStyle": "white" + } + }, + + { + "path": "pages/guize/guize", + "style": { + "navigationBarBackgroundColor": "#222222", + "navigationBarTitleText": "", + "navigationBarTextStyle": "white" + } + }, + { + "path": "pages/user/my_coupon", + "style": { + "navigationBarTitleText": "欧气券", + "navigationBarBackgroundColor": "#222222", + "navigationBarTextStyle": "white", + "navigationStyle": "custom" + } + }, + { + "path": "pages/user/wuliu_detail", + "style": { + "navigationBarTitleText": "查看物流", + "navigationBarBackgroundColor": "#222222", + "navigationBarTextStyle": "white", + "navigationStyle": "custom" + } + }, + { + "path": "pages/user/myCa", + "style": { + "navigationBarTitleText": "我的卡册", + "navigationBarBackgroundColor": "#222222", + "navigationBarTextStyle": "white" + } + }, + { + "path": "pages/user/myCaDetail", + "style": { + "navigationStyle": "custom", + "navigationBarBackgroundColor": "#222222", + "navigationBarTextStyle": "white" + } + }, + { + "path": "pages/sangdai/hegui", + "style": { + "navigationBarTextStyle": "white", + "navigationStyle": "custom", + "disableSwipeBack": true + } + }, + { + "path": "pages/sangdai/sangdai", + "style": { + "navigationBarBackgroundColor": "#222222", + "navigationStyle": "custom", + "disableSwipeBack": true + } + }, + { + "path": "pages/sangdai/caceDetail", + "style": { + "navigationBarBackgroundColor": "#222222", + "navigationStyle": "custom", + "disableSwipeBack": true + } + }, + { + "path": "pages/user/tui-guang", + "style": { + "navigationBarTitleText": "邀请好友", + "navigationStyle": "custom", + "navigationBarTextStyle": "white" + } + }, + + { + "path": "pages/user/change", + "style": { + "navigationStyle": "custom", + "navigationBarBackgroundColor": "#222222", + "navigationBarTextStyle": "white" + } + }, + { + "path": "pages/DrawCard/index", + "style": { + "navigationBarTextStyle": "white", + "navigationStyle": "custom" + } + }, + { + "path": "pages/DrawCard/cardDetail", + "style": { + "navigationBarTextStyle": "white", + "navigationStyle": "custom" + } + }, + { + "path": "pages/DrawCard/tujian", + "style": { + "navigationBarBackgroundColor": "#222222", + "navigationBarTitleText": "图鉴", + "navigationBarTextStyle": "white" + } + }, + { + "path": "pages/chouka/ka", + "style": { + "navigationBarTextStyle": "white", + "navigationStyle": "custom" + } + }, + { + "path": "pages/chouka/kace", + "style": { + "navigationBarBackgroundColor": "#222222", + "navigationBarTitleText": "卡册", + "navigationBarTextStyle": "white" + } + }, + { + "path": "pages/chouka/detail", + "style": { + "navigationBarTextStyle": "white", + "navigationStyle": "custom" + } + }, + { + "path": "pages/jiaoliu/jiaoliu", + "style": { + "navigationBarTextStyle": "white", + "navigationStyle": "custom" + } + }, + { + "path": "pages/zizhi/index", + "style": { + "navigationBarTextStyle": "white", + "navigationBarTitleText": "自制赏", + "navigationBarBackgroundColor": "#222222" + } + }, + { + "path": "pages/zizhi/detail", + "style": { + "navigationBarTextStyle": "white", + "navigationBarTitleText": "龙珠手办店", + "navigationBarBackgroundColor": "#222222" + } + }, + { + "path": "pages/infinite/index", + "style": { + "navigationBarTextStyle": "white", + "navigationStyle": "custom", + "navigationBarBackgroundColor": "#222222" + } + }, + { + "path": "pages/infinite/UnlimitedOrder", + "style": { + "navigationBarTextStyle": "white", + "navigationBarTitleText": "魔晶令", + "navigationBarBackgroundColor": "#222222", + "navigationStyle": "custom" + } + }, + // { + // "path": "pages/shop/index", + // "style": { + // "navigationStyle": "custom", + // "transparentTitle": "none" + // } + // }, + // { + // "path": "pages/shop/list", + // "style": { + // "navigationBarTitleText": "", + // "navigationBarBackgroundColor": "#000000", + // "navigationBarTextStyle": "white" + // } + // }, + // { + // "path": "pages/shop/detail", + // "style": { + // "navigationBarTitleText": "商品详请", + // "navigationBarBackgroundColor": "#000000", + // "navigationBarTextStyle": "white" + // } + // }, + // { + // "path": "pages/shop/shop_order", + // "style": { + // "navigationBarTitleText": "我的订单", + // "navigationBarBackgroundColor": "#000000", + // "navigationBarTextStyle": "white" + // } + // }, + // { + // "path": "pages/shop/order_detail", + // "style": { + // "navigationBarTitleText": "订单详情", + // "navigationBarBackgroundColor": "#000000", + // "navigationBarTextStyle": "white" + // } + // }, + // { + // "path": "pages/shop/wuliu_detail", + // "style": { + // "navigationBarTitleText": "物流详情", + // "navigationBarBackgroundColor": "#000000", + // "navigationBarTextStyle": "white" + // } + // }, + { + "path": "pages/mall/index", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": false, + "navigationStyle": "custom" + } + }, + + { + "path": "pages/fuli/fuli", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": false, + "navigationStyle": "custom" + } + }, + { + "path": "pages/fuli/fuli-detail", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": false, + "navigationStyle": "custom" + } + }, + { + "path": "pages/user/coupon", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": false, + "navigationStyle": "custom" + } + } + ], + "subPackages": [{ + "root": "package/index", + "pages": [{ + "path": "sign", + "style": { + "navigationStyle": "custom" + } + }, + { + "path": "lian-ji", + "style": { + "navigationStyle": "custom" + } + }, + { + "path": "coupon-center", + "style": { + "navigationStyle": "custom" + } + }, + { + "path": "leitai", + "style": { + "navigationBarTitleText": "擂台赏", + "navigationStyle": "custom" + } + } + ] + }, + { + "root": "package/mine", + "pages": [{ + "path": "collect", + "style": { + "navigationStyle": "custom" + } + }, + { + "path": "skill-card", + "style": { + "navigationStyle": "custom" + } + }, + { + "path": "equity", + "style": { + "navigationStyle": "custom" + } + }, + { + "path": "qy-rule", + "style": { + "navigationStyle": "custom" + } + }, + { + "path": "coupon-detail", + "style": { + "navigationStyle": "custom" + } + }, + { + "path": "ti-qu", + "style": { + "navigationStyle": "custom" + } + } + ] + } + ], + "globalStyle": { + "navigationBarTextStyle": "white", + "navigationBarTitleText": "枫岚云赏", + "navigationBarBackgroundColor": "#222222", + "backgroundColor": "#000000" + }, + "usingComponents": {}, + "tabBar": { + "custom": true, + "color": "#CCCCCC", + "selectedColor": "#FFFFFF", + "borderStyle": "black", + "backgroundColor": "#111111", + "iconWidth": "80px", + "list": [{ + "pagePath": "pages/shouye/index", + "iconPath": "static/tabbar/m1.png", + "selectedIconPath": "static/tabbar/s1.png" + // "text": "抽赏" + }, + { + "pagePath": "pages/infinite/index", + "iconPath": "static/tabbar/m2.png", + "selectedIconPath": "static/tabbar/s2.png" + // "text": "积分赏" + }, + { + "pagePath": "pages/mall/index", + "iconPath": "static/tabbar/m5.png", + "selectedIconPath": "static/tabbar/s5.png" + // "text": "商城" + }, + { + "pagePath": "pages/sangdai/sangdai", + "iconPath": "static/tabbar/m3.png", + "selectedIconPath": "static/tabbar/s3.png" + // "text": "盒柜" + }, + { + "pagePath": "pages/user/index", + "iconPath": "static/tabbar/m4.png", + "selectedIconPath": "static/tabbar/s4.png" + // "text": "我的" + } + ] + } +} \ No newline at end of file diff --git a/pages/DrawCard/cardDetail.vue b/pages/DrawCard/cardDetail.vue new file mode 100644 index 0000000..86d525c --- /dev/null +++ b/pages/DrawCard/cardDetail.vue @@ -0,0 +1,963 @@ + + + + + diff --git a/pages/DrawCard/index.vue b/pages/DrawCard/index.vue new file mode 100644 index 0000000..99c7c2c --- /dev/null +++ b/pages/DrawCard/index.vue @@ -0,0 +1,348 @@ + + + + + \ No newline at end of file diff --git a/pages/DrawCard/tujian.vue b/pages/DrawCard/tujian.vue new file mode 100644 index 0000000..05cf25c --- /dev/null +++ b/pages/DrawCard/tujian.vue @@ -0,0 +1,159 @@ + + + + + \ No newline at end of file diff --git a/pages/chouka/detail.vue b/pages/chouka/detail.vue new file mode 100644 index 0000000..93bcec3 --- /dev/null +++ b/pages/chouka/detail.vue @@ -0,0 +1,1205 @@ + + + + + diff --git a/pages/chouka/index.vue b/pages/chouka/index.vue new file mode 100644 index 0000000..04972c6 --- /dev/null +++ b/pages/chouka/index.vue @@ -0,0 +1,419 @@ + + + + + diff --git a/pages/chouka/ka.vue b/pages/chouka/ka.vue new file mode 100644 index 0000000..2acb7e6 --- /dev/null +++ b/pages/chouka/ka.vue @@ -0,0 +1,1133 @@ + + + + + diff --git a/pages/chouka/kace.vue b/pages/chouka/kace.vue new file mode 100644 index 0000000..d750597 --- /dev/null +++ b/pages/chouka/kace.vue @@ -0,0 +1,213 @@ + + + + + diff --git a/pages/fuli/fuli-detail.vue b/pages/fuli/fuli-detail.vue new file mode 100644 index 0000000..286a970 --- /dev/null +++ b/pages/fuli/fuli-detail.vue @@ -0,0 +1,2583 @@ + + + + diff --git a/pages/fuli/fuli.vue b/pages/fuli/fuli.vue new file mode 100644 index 0000000..e5e3182 --- /dev/null +++ b/pages/fuli/fuli.vue @@ -0,0 +1,408 @@ + + + + + + diff --git a/pages/guize/guize.vue b/pages/guize/guize.vue new file mode 100644 index 0000000..c6854b5 --- /dev/null +++ b/pages/guize/guize.vue @@ -0,0 +1,125 @@ + + + + + + diff --git a/pages/infinite/UnlimitedOrder.vue b/pages/infinite/UnlimitedOrder.vue new file mode 100644 index 0000000..e3d3e74 --- /dev/null +++ b/pages/infinite/UnlimitedOrder.vue @@ -0,0 +1,446 @@ + + + + + diff --git a/pages/infinite/index.vue b/pages/infinite/index.vue new file mode 100644 index 0000000..386ef78 --- /dev/null +++ b/pages/infinite/index.vue @@ -0,0 +1,445 @@ + + + + + \ No newline at end of file diff --git a/pages/jiaoliu/jiaoliu.vue b/pages/jiaoliu/jiaoliu.vue new file mode 100644 index 0000000..282af74 --- /dev/null +++ b/pages/jiaoliu/jiaoliu.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/pages/mall/index.vue b/pages/mall/index.vue new file mode 100644 index 0000000..05d739f --- /dev/null +++ b/pages/mall/index.vue @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/pages/sangdai/caceDetail.vue b/pages/sangdai/caceDetail.vue new file mode 100644 index 0000000..caff9e7 --- /dev/null +++ b/pages/sangdai/caceDetail.vue @@ -0,0 +1,741 @@ + + + + + diff --git a/pages/sangdai/hegui.vue b/pages/sangdai/hegui.vue new file mode 100644 index 0000000..61e7a95 --- /dev/null +++ b/pages/sangdai/hegui.vue @@ -0,0 +1,17 @@ + + + + + diff --git a/pages/sangdai/sangdai copy.vue b/pages/sangdai/sangdai copy.vue new file mode 100644 index 0000000..a18fff5 --- /dev/null +++ b/pages/sangdai/sangdai copy.vue @@ -0,0 +1,2023 @@ + + + + + diff --git a/pages/sangdai/sangdai.vue b/pages/sangdai/sangdai.vue new file mode 100644 index 0000000..6f9cc3f --- /dev/null +++ b/pages/sangdai/sangdai.vue @@ -0,0 +1,1794 @@ + + + + + \ No newline at end of file diff --git a/pages/shop/detail.vue b/pages/shop/detail.vue new file mode 100644 index 0000000..f824220 --- /dev/null +++ b/pages/shop/detail.vue @@ -0,0 +1,746 @@ + + + + + diff --git a/pages/user/my_coupon copy.vue b/pages/user/my_coupon copy.vue new file mode 100644 index 0000000..cc05083 --- /dev/null +++ b/pages/user/my_coupon copy.vue @@ -0,0 +1,475 @@ + + + + + diff --git a/pages/user/my_coupon.vue b/pages/user/my_coupon.vue new file mode 100644 index 0000000..6913c93 --- /dev/null +++ b/pages/user/my_coupon.vue @@ -0,0 +1,683 @@ + + + + + \ No newline at end of file diff --git a/pages/user/order.vue b/pages/user/order.vue new file mode 100644 index 0000000..fe5f88f --- /dev/null +++ b/pages/user/order.vue @@ -0,0 +1,332 @@ + + + + + \ No newline at end of file diff --git a/pages/user/sy_jl.vue b/pages/user/sy_jl.vue new file mode 100644 index 0000000..ad9ad0c --- /dev/null +++ b/pages/user/sy_jl.vue @@ -0,0 +1,223 @@ + + + + + \ No newline at end of file diff --git a/pages/user/tui-guang-old.vue b/pages/user/tui-guang-old.vue new file mode 100644 index 0000000..8dc2720 --- /dev/null +++ b/pages/user/tui-guang-old.vue @@ -0,0 +1,539 @@ + + + + + diff --git a/pages/user/tui-guang.vue b/pages/user/tui-guang.vue new file mode 100644 index 0000000..29f78a0 --- /dev/null +++ b/pages/user/tui-guang.vue @@ -0,0 +1,513 @@ + + + + + \ No newline at end of file diff --git a/pages/user/vip.vue b/pages/user/vip.vue new file mode 100644 index 0000000..7510ec0 --- /dev/null +++ b/pages/user/vip.vue @@ -0,0 +1,394 @@ + + + + + \ No newline at end of file diff --git a/pages/user/wuliu_detail.vue b/pages/user/wuliu_detail.vue new file mode 100644 index 0000000..fb34114 --- /dev/null +++ b/pages/user/wuliu_detail.vue @@ -0,0 +1,261 @@ + + + + + diff --git a/pages/user/xfjl.vue b/pages/user/xfjl.vue new file mode 100644 index 0000000..44bcc25 --- /dev/null +++ b/pages/user/xfjl.vue @@ -0,0 +1,221 @@ + + + + + diff --git a/pages/user/yetx.vue b/pages/user/yetx.vue new file mode 100644 index 0000000..2846c66 --- /dev/null +++ b/pages/user/yetx.vue @@ -0,0 +1,306 @@ + + + + + diff --git a/pages/zizhi/detail.vue b/pages/zizhi/detail.vue new file mode 100644 index 0000000..42f81ac --- /dev/null +++ b/pages/zizhi/detail.vue @@ -0,0 +1,315 @@ + + + + + diff --git a/pages/zizhi/index.vue b/pages/zizhi/index.vue new file mode 100644 index 0000000..ea55367 --- /dev/null +++ b/pages/zizhi/index.vue @@ -0,0 +1,238 @@ + + + + + diff --git a/static/common/cardIcon.png b/static/common/cardIcon.png new file mode 100644 index 0000000..ee79a01 Binary files /dev/null and b/static/common/cardIcon.png differ diff --git a/static/common/kong.png b/static/common/kong.png new file mode 100644 index 0000000..d917fb7 Binary files /dev/null and b/static/common/kong.png differ diff --git a/static/common/signImg.png b/static/common/signImg.png new file mode 100644 index 0000000..67370e9 Binary files /dev/null and b/static/common/signImg.png differ diff --git a/static/tabbar/m1.png b/static/tabbar/m1.png new file mode 100644 index 0000000..7722006 Binary files /dev/null and b/static/tabbar/m1.png differ diff --git a/static/tabbar/m2.png b/static/tabbar/m2.png new file mode 100644 index 0000000..ba3323d Binary files /dev/null and b/static/tabbar/m2.png differ diff --git a/static/tabbar/m3.png b/static/tabbar/m3.png new file mode 100644 index 0000000..3aa3969 Binary files /dev/null and b/static/tabbar/m3.png differ diff --git a/static/tabbar/m4.png b/static/tabbar/m4.png new file mode 100644 index 0000000..3cff563 Binary files /dev/null and b/static/tabbar/m4.png differ diff --git a/static/tabbar/m5.png b/static/tabbar/m5.png new file mode 100644 index 0000000..07d93f4 Binary files /dev/null and b/static/tabbar/m5.png differ diff --git a/static/tabbar/s1.png b/static/tabbar/s1.png new file mode 100644 index 0000000..d391051 Binary files /dev/null and b/static/tabbar/s1.png differ diff --git a/static/tabbar/s2.png b/static/tabbar/s2.png new file mode 100644 index 0000000..b70b2f1 Binary files /dev/null and b/static/tabbar/s2.png differ diff --git a/static/tabbar/s3.png b/static/tabbar/s3.png new file mode 100644 index 0000000..7efb93f Binary files /dev/null and b/static/tabbar/s3.png differ diff --git a/static/tabbar/s4.png b/static/tabbar/s4.png new file mode 100644 index 0000000..54c4745 Binary files /dev/null and b/static/tabbar/s4.png differ diff --git a/static/tabbar/s5.png b/static/tabbar/s5.png new file mode 100644 index 0000000..bb25da2 Binary files /dev/null and b/static/tabbar/s5.png differ diff --git a/style/common.scss b/style/common.scss new file mode 100644 index 0000000..dee4c17 --- /dev/null +++ b/style/common.scss @@ -0,0 +1,29 @@ +@import '@/style/mixin.scss'; +view, +page, +text, +button, +image, +textarea, +scroll-view,input { + box-sizing: border-box; +} +image { + display: block; +} +button { + margin: 0; + padding: 0; + background-color: #FFFF; +} +button::after { + border: none; +} +// 主题背景色 +.themeBgColor { + background-color: $themeColor; +} +// 主题字体色 +.themeFontColor { + color: $themeColor !important; +} \ No newline at end of file diff --git a/style/input.scss b/style/input.scss new file mode 100644 index 0000000..caea9fb --- /dev/null +++ b/style/input.scss @@ -0,0 +1,317 @@ +.input_form_box { + .input_title { + font-size: 32upx; + color: #333333; + padding: 30upx; + &.required::before { + content: '*'; + font-size: 30upx; + color: #f73333; + } + } + + .input_box { + display: flex; + flex-wrap: wrap; + align-items: center; + padding: 0 30upx; + background-color: #fff; + &.line { + border-top: 1upx solid #f7f7f7; + } + &.btm_line { + border-bottom: 1upx solid #f7f7f7; + } + .name { + font-size: 30upx; + color: #666666; + min-width: 120upx; + flex-shrink: 0; + padding: 30upx 0; + + &.required::before { + content: '*'; + font-size: 30upx; + color: #f73333; + } + } + .prompt { + width: 100%; + padding-bottom: 20upx; + font-size: 28upx; + color: #999999; + transform: translateY(-10upx); + } + + picker { + flex: 1; + } + } + .input_info { + padding: 30upx 0; + display: flex; + flex: 1; + align-items: center; + > text { + font-size: 24upx; + color: #555555; + margin-left: 10upx; + flex-shrink: 0; + } + input { + width: 100%; + text-align: right; + font-size: 30upx; + } + button { + flex-shrink: 0; + min-width: 146upx; + padding: 0 30upx; + height: 60upx; + line-height: 60upx; + background-color: $themeColor; + border-radius: 8upx; + font-size: 24upx; + color: #ffffff; + margin-left: 20upx; + } + } + .switch { + flex: 1; + display: flex; + justify-content: flex-end; + align-items: center; + + &::after { + content: ""; + @include bis('https://qn.kemean.cn/upload/201908/05/5f85ccc4de404cafb30b15dedef41e8b', 100% 100%); + width: 108upx; + height: 58upx; + } + + &.active::after { + background-image: url('https://qn.kemean.cn/upload/201908/05/eef318fa5c9f4692a1bd6ef6edd9be10'); + } + } + .radio_box { + padding: 30upx 0; + flex: 1; + display: flex; + justify-content: flex-end; + + view { + display: flex; + align-items: center; + font-size: 28upx; + color: #333333; + margin-left: 90upx; + + &:first-child { + margin-left: 0; + } + + &::before { + content: ''; + width: 38upx; + height: 38upx; + margin-right: 15upx; + border: 2upx solid #eee; + border-radius: 50%; + box-sizing: border-box; + } + + &.active::before { + border: 12upx solid $themeColor; + } + } + } + + .select_info { + padding: 30upx 0; + flex: 1; + display: flex; + justify-content: flex-end; + align-items: center; + + .value { + font-size: 30upx; + color: #333; + text-align: right; + } + + .select { + font-size: 30upx; + color: #999999; + } + + .head_img { + width: 100upx; + height: 100upx; + border-radius: 10upx; + } + + &::after { + content: ''; + @include bis('http://qn.kemean.cn/upload/201907/23/me_lise_more.png', 100% 100%); + width: 15upx; + height: 26upx; + margin-left: 20upx; + flex-shrink: 0; + } + } + + .upload_info { + width: 100%; + display: flex; + flex-wrap: wrap; + padding-bottom: 10upx; + + .upload_img { + width: 200upx; + height: 200upx; + background-color: #ffffff; + border-radius: 4upx; + margin-right: 16upx; + margin-bottom: 16upx; + overflow: hidden; + position: relative; + + &:nth-child(3n) { + margin-right: 0; + } + + image { + width: 100%; + height: 100%; + } + + .delete { + position: absolute; + top: 0upx; + right: 0upx; + width: 44upx; + height: 44upx; + background-image: url('https://qn.kemean.cn/upload/201908/05/df40b98b77fc4c42a5e0327c62975e29'); + background-position: center center; + background-repeat: no-repeat; + background-size: 100% 100%; + } + + &.upload { + border: 1upx dashed #b2b2b2; + background-image: url('https://qn.kemean.cn/upload/201908/05/d68df2873cd04f18a70104e340a14884'); + background-position: center center; + background-repeat: no-repeat; + background-size: 60% 60%; + } + } + } + .textarea_info { + width: 100%; + padding-bottom: 30upx; + font-size: 28upx; + color: #333; + + textarea { + width: 100%; + height: 154upx; + font-size: 30upx; + line-height: 150%; + } + } +} + +.protocol { + margin-top: 20upx; + display: flex; + justify-content: center; + align-items: center; + font-size: 28upx; + color: #666; + + text { + color: $themeColor; + } + view { + @include theme('unselected_img', './'); + background-repeat: no-repeat; + background-position: center center; + background-size: cover; + width: 34upx; + height: 34upx; + margin-right: 10upx; + &.active { + @include theme('radio_img', './'); + } + } +} + +.form_but { + margin-top: 80upx; + padding: 30upx; + display: flex; + justify-content: center; + button { + flex: 1; + height: 88upx; + background-color: #f0f0f0; + border-radius: 8upx; + line-height: 88upx; + font-size: 34upx; + color: #cccccc; + + &.active { + @include theme("btn_bg"); + color: #ffffff; + } + + &::after { + border: none; + } + } +} +// -----------------------导航条------------------------------- +.cell_list { + background-color: #fff; + padding: 30upx; + display: flex; + justify-content: space-between; + align-items: center; + border-bottom: 1upx solid #f5f5f5; + &:active { + background-color: #f5f5f5; + } + &.interval { + margin-bottom: 20upx; + border-bottom: 0; + } + .cell_left { + font-size: 28upx; + color: #333333; + display: flex; + align-items: center; + image { + width: 30upx; + height: 30upx; + margin-right: 20upx; + } + } + .cell_right { + font-size: 28upx; + color: #333333; + display: flex; + align-items: center; + &.arrow::after { + content: ''; + @include bis('./static/icon/me_lise_more.png', 100% 100%); + width: 12upx; + height: 22upx; + margin-left: 20upx; + } + image { + width: 36upx; + height: 36upx; + margin-left: 20upx; + } + } +} \ No newline at end of file diff --git a/style/mixin.scss b/style/mixin.scss new file mode 100644 index 0000000..af1fb0a --- /dev/null +++ b/style/mixin.scss @@ -0,0 +1,49 @@ +@charset "utf-8"; +//主题色 +$themeColor: #ea552d; + +@mixin theme($type,$path:''){ + @if $type == "btn_bg" { + background-image: linear-gradient(90deg, #ea552d 0%, #f19837 100%); + } @else if $type == "unselected_img" { + background-image: url($path + "static/icon/ic_gender_unselected.png"); + } @else if $type == "check_img" { + background-image: url($path + "static/icon/ic_agreed.png"); + } @else if $type == "radio_img" { + background-image: url($path + "static/icon/ic_gender_selected.png"); + } +} +// 背景图片地址和大小 +@mixin bis($url, $size: cover) { + background-image: url($url); + background-repeat: no-repeat; + background-position: center center; + background-size: $size; +} + +// 头像 +@mixin ic($width, $height) { + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; + flex-shrink: 0; + width: $width; + height: $height; +} + +// 单行省略号 +@mixin toe() { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap +} + +// 多行省略号 +@mixin bov($num:2) { + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: $num; + -webkit-box-orient: vertical; +} diff --git a/style/table.scss b/style/table.scss new file mode 100644 index 0000000..f0bb5ca --- /dev/null +++ b/style/table.scss @@ -0,0 +1,54 @@ +.table_box { + background-color: #FFFFFF; + .table_title { + padding: 0rpx 20rpx; + font-size: 30rpx; + height: 60rpx; + line-height: 60rpx; + color: #FFF; + text-align: center; + font-weight: bold; + background-color: rgba($color: $themeColor, $alpha: 1); + } + .table_head { + display: flex; + align-content: center; + background-color: rgba($color: $themeColor, $alpha: 0.35); + text { + padding: 15rpx 20rpx; + display: flex; + align-items: center; + justify-content: center; + flex: 1; + flex-shrink: 0; + font-size: 28rpx; + color: #333; + font-weight: bold; + border-right: 2rpx solid rgba($color: $themeColor, $alpha: 0.2); + &:last-child { + border-right: 0; + flex: 2; + } + } + } + .table_content { + display: flex; + align-content: center; + border-top: 2rpx solid rgba($color: $themeColor, $alpha: 0.2); + background-color: rgba($color: $themeColor, $alpha: 0.2); + text { + padding: 15rpx 20rpx; + display: flex; + align-items: center; + justify-content: center; + flex: 1; + font-size: 28rpx; + color: #999; + border-right: 2rpx solid rgba($color: $themeColor, $alpha: 0.3); + &:last-child { + border-right: 0; + flex: 2; + } + } + } +} \ No newline at end of file diff --git a/uni.scss b/uni.scss new file mode 100644 index 0000000..7e4fce6 --- /dev/null +++ b/uni.scss @@ -0,0 +1,78 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ + +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ + // @import 'uview-ui/theme.scss'; +/* 颜色变量 */ + +$imgurl:'https://xinglanmh.shequtuangou.vip/static/web/static/'; + +/* 行为相关颜色 */ +$uni-color-primary: #007aff; +$uni-color-success: #4cd964; +$uni-color-warning: #f0ad4e; +$uni-color-error: #dd524d; + +/* 文字基本颜色 */ +$uni-text-color:#333;//基本色 +$uni-text-color-inverse:#fff;//反色 +$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息 +$uni-text-color-placeholder: #808080; +$uni-text-color-disable:#c0c0c0; + +/* 背景颜色 */ +$uni-bg-color:#ffffff; +$uni-bg-color-grey:#f8f8f8; +$uni-bg-color-hover:#f1f1f1;//点击状态颜色 +$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色 + +/* 边框颜色 */ +$uni-border-color:#c8c7cc; + +/* 尺寸变量 */ + +/* 文字尺寸 */ +$uni-font-size-sm:24rpx; +$uni-font-size-base:28rpx; +$uni-font-size-lg:32rpx; + +/* 图片尺寸 */ +$uni-img-size-sm:40rpx; +$uni-img-size-base:52rpx; +$uni-img-size-lg:80rpx; + +/* Border Radius */ +$uni-border-radius-sm: 4rpx; +$uni-border-radius-base: 6rpx; +$uni-border-radius-lg: 12rpx; +$uni-border-radius-circle: 50%; + +/* 水平间距 */ +$uni-spacing-row-sm: 10px; +$uni-spacing-row-base: 20rpx; +$uni-spacing-row-lg: 30rpx; + +/* 垂直间距 */ +$uni-spacing-col-sm: 8rpx; +$uni-spacing-col-base: 16rpx; +$uni-spacing-col-lg: 24rpx; + +/* 透明度 */ +$uni-opacity-disabled: 0.3; // 组件禁用态的透明度 + +/* 文章场景相关 */ +$uni-color-title: #2C405A; // 文章标题颜色 +$uni-font-size-title:40rpx; +$uni-color-subtitle: #555555; // 二级标题颜色 +$uni-font-size-subtitle:36rpx; +$uni-color-paragraph: #3F536E; // 文章段落颜色 +$uni-font-size-paragraph:30rpx; \ No newline at end of file diff --git a/uni_modules/mescroll-uni/changelog.md b/uni_modules/mescroll-uni/changelog.md new file mode 100644 index 0000000..dd6dd72 --- /dev/null +++ b/uni_modules/mescroll-uni/changelog.md @@ -0,0 +1,8 @@ +## 1.3.8(2023-03-27) +1. 新增useMescroll的hook, 支持vue3 script setup的写法 +2. 新增vue3 script setup的示例 ( 根据vue2的示例,全部重写了一遍 ) +3. mescroll-body 和 mescroll-uni 无需再写 ref="mescrollRef" +4. 解决mescroll-uni在页面渲染之后,无法动态设置height的问题 +5. 解决renderjs在h5返回有时候无法正常滑动的问题 +6. 修复小程序编辑器提示 Cannot read property 'nv_optDown' of undefined 的错误 +-by 小瑾同学 diff --git a/uni_modules/mescroll-uni/components/mescroll-body/mescroll-body.css b/uni_modules/mescroll-uni/components/mescroll-body/mescroll-body.css new file mode 100644 index 0000000..1107710 --- /dev/null +++ b/uni_modules/mescroll-uni/components/mescroll-body/mescroll-body.css @@ -0,0 +1,19 @@ +.mescroll-body { + position: relative; /* 下拉刷新区域相对自身定位 */ + height: auto; /* 不可固定高度,否则overflow:hidden导致无法滑动; 同时使设置的最小高生效,实现列表不满屏仍可下拉*/ + overflow: hidden; /* 当有元素写在mescroll-body标签前面时,可遮住下拉刷新区域 */ + box-sizing: border-box; /* 避免设置padding出现双滚动条的问题 */ +} + +/* 使sticky生效: 父元素不能overflow:hidden或者overflow:auto属性 */ +.mescroll-body.mescorll-sticky{ + overflow: unset !important +} + +/* 适配 iPhoneX */ +@supports (bottom: constant(safe-area-inset-bottom)) or (bottom: env(safe-area-inset-bottom)) { + .mescroll-safearea { + padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom); + } +} \ No newline at end of file diff --git a/uni_modules/mescroll-uni/components/mescroll-body/mescroll-body.vue b/uni_modules/mescroll-uni/components/mescroll-body/mescroll-body.vue new file mode 100644 index 0000000..76d7728 --- /dev/null +++ b/uni_modules/mescroll-uni/components/mescroll-body/mescroll-body.vue @@ -0,0 +1,400 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/uni_modules/mescroll-uni/components/mescroll-empty/mescroll-empty.vue b/uni_modules/mescroll-uni/components/mescroll-empty/mescroll-empty.vue new file mode 100644 index 0000000..89dedd3 --- /dev/null +++ b/uni_modules/mescroll-uni/components/mescroll-empty/mescroll-empty.vue @@ -0,0 +1,123 @@ + + + + + + diff --git a/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-down.css b/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-down.css new file mode 100644 index 0000000..72bf106 --- /dev/null +++ b/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-down.css @@ -0,0 +1,55 @@ +/* 下拉刷新区域 */ +.mescroll-downwarp { + position: absolute; + top: -100%; + left: 0; + width: 100%; + height: 100%; + text-align: center; +} + +/* 下拉刷新--内容区,定位于区域底部 */ +.mescroll-downwarp .downwarp-content { + position: absolute; + left: 0; + bottom: 0; + width: 100%; + min-height: 60rpx; + padding: 20rpx 0; + text-align: center; +} + +/* 下拉刷新--提示文本 */ +.mescroll-downwarp .downwarp-tip { + display: inline-block; + font-size: 28rpx; + vertical-align: middle; + margin-left: 16rpx; + /* color: gray; 已在style设置color,此处删去*/ +} + +/* 下拉刷新--旋转进度条 */ +.mescroll-downwarp .downwarp-progress { + display: inline-block; + width: 32rpx; + height: 32rpx; + border-radius: 50%; + border: 2rpx solid gray; + border-bottom-color: transparent !important; /*已在style设置border-color,此处需加 !important*/ + vertical-align: middle; +} + +/* 旋转动画 */ +.mescroll-downwarp .mescroll-rotate { + animation: mescrollDownRotate 0.6s linear infinite; +} + +@keyframes mescrollDownRotate { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +} \ No newline at end of file diff --git a/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-down.vue b/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-down.vue new file mode 100644 index 0000000..9fd1567 --- /dev/null +++ b/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-down.vue @@ -0,0 +1,47 @@ + + + + + + diff --git a/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-top.vue b/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-top.vue new file mode 100644 index 0000000..a92de69 --- /dev/null +++ b/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-top.vue @@ -0,0 +1,109 @@ + + + + + + diff --git a/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-up.css b/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-up.css new file mode 100644 index 0000000..cbf48cd --- /dev/null +++ b/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-up.css @@ -0,0 +1,47 @@ +/* 上拉加载区域 */ +.mescroll-upwarp { + box-sizing: border-box; + min-height: 110rpx; + padding: 30rpx 0; + text-align: center; + clear: both; +} + +/*提示文本 */ +.mescroll-upwarp .upwarp-tip, +.mescroll-upwarp .upwarp-nodata { + display: inline-block; + font-size: 28rpx; + vertical-align: middle; + /* color: gray; 已在style设置color,此处删去*/ +} + +.mescroll-upwarp .upwarp-tip { + margin-left: 16rpx; +} + +/*旋转进度条 */ +.mescroll-upwarp .upwarp-progress { + display: inline-block; + width: 32rpx; + height: 32rpx; + border-radius: 50%; + border: 2rpx solid gray; + border-bottom-color: transparent !important; /*已在style设置border-color,此处需加 !important*/ + vertical-align: middle; +} + +/* 旋转动画 */ +.mescroll-upwarp .mescroll-rotate { + animation: mescrollUpRotate 0.6s linear infinite; +} + +@keyframes mescrollUpRotate { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +} \ No newline at end of file diff --git a/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-up.vue b/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-up.vue new file mode 100644 index 0000000..11c2e1f --- /dev/null +++ b/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-up.vue @@ -0,0 +1,39 @@ + + + + + + diff --git a/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-i18n.js b/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-i18n.js new file mode 100644 index 0000000..2b6a50f --- /dev/null +++ b/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-i18n.js @@ -0,0 +1,15 @@ +// 国际化工具类 +const mescrollI18n = { + // 默认语言 + def: "zh", + // 获取当前语言类型 + getType(){ + return uni.getStorageSync("mescroll-i18n") || this.def + }, + // 设置当前语言类型 + setType(type){ + uni.setStorageSync("mescroll-i18n", type) + } +} + +export default mescrollI18n diff --git a/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js b/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js new file mode 100644 index 0000000..10f68c0 --- /dev/null +++ b/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js @@ -0,0 +1,46 @@ +// mescroll-body 和 mescroll-uni 通用 +const MescrollMixin = { + data() { + return { + mescroll: null //mescroll实例对象 + } + }, + // 注册系统自带的下拉刷新 (配置down.native为true时生效, 还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例) + onPullDownRefresh(){ + this.mescroll && this.mescroll.onPullDownRefresh(); + }, + // 注册列表滚动事件,用于判定在顶部可下拉刷新,在指定位置可显示隐藏回到顶部按钮 (此方法为页面生命周期,无法在子组件中触发, 仅在mescroll-body生效) + onPageScroll(e) { + this.mescroll && this.mescroll.onPageScroll(e); + }, + // 注册滚动到底部的事件,用于上拉加载 (此方法为页面生命周期,无法在子组件中触发, 仅在mescroll-body生效) + onReachBottom() { + this.mescroll && this.mescroll.onReachBottom(); + }, + methods: { + // mescroll组件初始化的回调,可获取到mescroll对象 + mescrollInit(mescroll) { + this.mescroll = mescroll; + }, + // 下拉刷新的回调 (mixin默认resetUpScroll) + downCallback() { + if(this.mescroll.optUp.use){ + this.mescroll.resetUpScroll() + }else{ + setTimeout(()=>{ + this.mescroll.endSuccess(); + }, 500) + } + }, + // 上拉加载的回调 + upCallback() { + // mixin默认延时500自动结束加载 + setTimeout(()=>{ + this.mescroll.endErr(); + }, 500) + } + } + +} + +export default MescrollMixin; diff --git a/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni-option.js b/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni-option.js new file mode 100644 index 0000000..55d331e --- /dev/null +++ b/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni-option.js @@ -0,0 +1,64 @@ +// 全局配置 +// mescroll-body 和 mescroll-uni 通用 +const GlobalOption = { + down: { + // 其他down的配置参数也可以写,这里只展示了常用的配置: + offset: 80, // 在列表顶部,下拉大于80px,松手即可触发下拉刷新的回调 + native: false // 是否使用系统自带的下拉刷新; 默认false; 仅在mescroll-body生效 (值为true时,还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例) + }, + up: { + // 其他up的配置参数也可以写,这里只展示了常用的配置: + offset: 150, // 距底部多远时,触发upCallback,仅mescroll-uni生效 ( mescroll-body配置的是pages.json的 onReachBottomDistance ) + toTop: { + // 回到顶部按钮,需配置src才显示 + src: "https://www.mescroll.com/img/mescroll-totop.png", // 图片路径 (建议放入static目录, 如 /static/img/mescroll-totop.png ) + offset: 1000, // 列表滚动多少距离才显示回到顶部按钮,默认1000px + right: 20, // 到右边的距离, 默认20 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx) + bottom: 120, // 到底部的距离, 默认120 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx) + width: 72 // 回到顶部图标的宽度, 默认72 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx) + }, + empty: { + use: true, // 是否显示空布局 + icon: "https://www.mescroll.com/img/mescroll-empty.png" // 图标路径 (建议放入static目录, 如 /static/img/mescroll-empty.png ) + } + }, + // 国际化配置 + i18n: { + // 中文 + zh: { + down: { + textInOffset: '下拉刷新', // 下拉的距离在offset范围内的提示文本 + textOutOffset: '释放更新', // 下拉的距离大于offset范围的提示文本 + textLoading: '加载中 ...', // 加载中的提示文本 + textSuccess: '加载成功', // 加载成功的文本 + textErr: '加载失败', // 加载失败的文本 + }, + up: { + textLoading: '加载中 ...', // 加载中的提示文本 + textNoMore: '-- END --', // 没有更多数据的提示文本 + empty: { + tip: '~ 空空如也 ~' // 空提示 + } + } + }, + // 英文 + en: { + down: { + textInOffset: 'drop down refresh', + textOutOffset: 'release updates', + textLoading: 'loading ...', + textSuccess: 'loaded successfully', + textErr: 'loading failed' + }, + up: { + textLoading: 'loading ...', + textNoMore: '-- END --', + empty: { + tip: '~ absolutely empty ~' + } + } + } + } +} + +export default GlobalOption diff --git a/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni.css b/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni.css new file mode 100644 index 0000000..39438cd --- /dev/null +++ b/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni.css @@ -0,0 +1,36 @@ +.mescroll-uni-warp{ + height: 100%; +} + +.mescroll-uni-content{ + height: 100%; +} + +.mescroll-uni { + position: relative; + width: 100%; + height: 100%; + min-height: 200rpx; + overflow-y: auto; + box-sizing: border-box; /* 避免设置padding出现双滚动条的问题 */ +} + +/* 定位的方式固定高度 */ +.mescroll-uni-fixed{ + z-index: 1; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + width: auto; /* 使right生效 */ + height: auto; /* 使bottom生效 */ +} + +/* 适配 iPhoneX */ +@supports (bottom: constant(safe-area-inset-bottom)) or (bottom: env(safe-area-inset-bottom)) { + .mescroll-safearea { + padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom); + } +} diff --git a/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni.js b/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni.js new file mode 100644 index 0000000..3bfdac1 --- /dev/null +++ b/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni.js @@ -0,0 +1,799 @@ +/* mescroll + * version 1.3.7 + * 2021-04-12 wenju + * https://www.mescroll.com + */ + +export default function MeScroll(options, isScrollBody) { + let me = this; + me.version = '1.3.7'; // mescroll版本号 + me.options = options || {}; // 配置 + me.isScrollBody = isScrollBody || false; // 滚动区域是否为原生页面滚动; 默认为scroll-view + + me.isDownScrolling = false; // 是否在执行下拉刷新的回调 + me.isUpScrolling = false; // 是否在执行上拉加载的回调 + let hasDownCallback = me.options.down && me.options.down.callback; // 是否配置了down的callback + + // 初始化下拉刷新 + me.initDownScroll(); + // 初始化上拉加载,则初始化 + me.initUpScroll(); + + // 自动加载 + setTimeout(function() { // 待主线程执行完毕再执行,避免new MeScroll未初始化,在回调获取不到mescroll的实例 + // 自动触发下拉刷新 (只有配置了down的callback才自动触发下拉刷新) + if ((me.optDown.use || me.optDown.native) && me.optDown.auto && hasDownCallback) { + if (me.optDown.autoShowLoading) { + me.triggerDownScroll(); // 显示下拉进度,执行下拉回调 + } else { + me.optDown.callback && me.optDown.callback(me); // 不显示下拉进度,直接执行下拉回调 + } + } + // 自动触发上拉加载 + if(!me.isUpAutoLoad){ // 部分小程序(头条小程序)emit是异步, 会导致isUpAutoLoad判断有误, 先延时确保先执行down的callback,再执行up的callback + setTimeout(function(){ + me.optUp.use && me.optUp.auto && !me.isUpAutoLoad && me.triggerUpScroll(); + },100) + } + }, 30); // 需让me.optDown.inited和me.optUp.inited先执行 +} + +/* 配置参数:下拉刷新 */ +MeScroll.prototype.extendDownScroll = function(optDown) { + // 下拉刷新的配置 + MeScroll.extend(optDown, { + use: true, // 是否启用下拉刷新; 默认true + auto: true, // 是否在初始化完毕之后自动执行下拉刷新的回调; 默认true + native: false, // 是否使用系统自带的下拉刷新; 默认false; 仅mescroll-body生效 (值为true时,还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例) + autoShowLoading: false, // 如果设置auto=true(在初始化完毕之后自动执行下拉刷新的回调),那么是否显示下拉刷新的进度; 默认false + isLock: false, // 是否锁定下拉刷新,默认false; + offset: 80, // 在列表顶部,下拉大于80px,松手即可触发下拉刷新的回调 + startTop: 100, // scroll-view快速滚动到顶部时,此时的scroll-top可能大于0, 此值用于控制最大的误差 + inOffsetRate: 1, // 在列表顶部,下拉的距离小于offset时,改变下拉区域高度比例;值小于1且越接近0,高度变化越小,表现为越往下越难拉 + outOffsetRate: 0.2, // 在列表顶部,下拉的距离大于offset时,改变下拉区域高度比例;值小于1且越接近0,高度变化越小,表现为越往下越难拉 + bottomOffset: 20, // 当手指touchmove位置在距离body底部20px范围内的时候结束上拉刷新,避免Webview嵌套导致touchend事件不执行 + minAngle: 45, // 向下滑动最少偏移的角度,取值区间 [0,90];默认45度,即向下滑动的角度大于45度则触发下拉;而小于45度,将不触发下拉,避免与左右滑动的轮播等组件冲突; + textInOffset: '下拉刷新', // 下拉的距离在offset范围内的提示文本 + textOutOffset: '释放更新', // 下拉的距离大于offset范围的提示文本 + textLoading: '加载中 ...', // 加载中的提示文本 + textSuccess: '加载成功', // 加载成功的文本 + textErr: '加载失败', // 加载失败的文本 + beforeEndDelay: 0, // 延时结束的时长 (显示加载成功/失败的时长, android小程序设置此项结束下拉会卡顿, 配置后请注意测试) + bgColor: "transparent", // 背景颜色 (建议在pages.json中再设置一下backgroundColorTop) + textColor: "gray", // 文本颜色 (当bgColor配置了颜色,而textColor未配置时,则textColor会默认为白色) + inited: null, // 下拉刷新初始化完毕的回调 + inOffset: null, // 下拉的距离进入offset范围内那一刻的回调 + outOffset: null, // 下拉的距离大于offset那一刻的回调 + onMoving: null, // 下拉过程中的回调,滑动过程一直在执行; rate下拉区域当前高度与指定距离的比值(inOffset: rate<1; outOffset: rate>=1); downHight当前下拉区域的高度 + beforeLoading: null, // 准备触发下拉刷新的回调: 如果return true,将不触发showLoading和callback回调; 常用来完全自定义下拉刷新, 参考案例【淘宝 v6.8.0】 + showLoading: null, // 显示下拉刷新进度的回调 + afterLoading: null, // 显示下拉刷新进度的回调之后,马上要执行的代码 (如: 在wxs中使用) + beforeEndDownScroll: null, // 准备结束下拉的回调. 返回结束下拉的延时执行时间,默认0ms; 常用于结束下拉之前再显示另外一小段动画,才去隐藏下拉刷新的场景, 参考案例【dotJump】 + endDownScroll: null, // 结束下拉刷新的回调 + afterEndDownScroll: null, // 结束下拉刷新的回调,马上要执行的代码 (如: 在wxs中使用) + callback: function(mescroll) { + // 下拉刷新的回调;默认重置上拉加载列表为第一页 + mescroll.resetUpScroll(); + } + }) +} + +/* 配置参数:上拉加载 */ +MeScroll.prototype.extendUpScroll = function(optUp) { + // 上拉加载的配置 + MeScroll.extend(optUp, { + use: true, // 是否启用上拉加载; 默认true + auto: true, // 是否在初始化完毕之后自动执行上拉加载的回调; 默认true + isLock: false, // 是否锁定上拉加载,默认false; + isBoth: true, // 上拉加载时,如果滑动到列表顶部是否可以同时触发下拉刷新;默认true,两者可同时触发; + callback: null, // 上拉加载的回调;function(page,mescroll){ } + page: { + num: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始 + size: 10, // 每页数据的数量 + time: null // 加载第一页数据服务器返回的时间; 防止用户翻页时,后台新增了数据从而导致下一页数据重复; + }, + noMoreSize: 5, // 如果列表已无数据,可设置列表的总数量要大于等于5条才显示无更多数据;避免列表数据过少(比如只有一条数据),显示无更多数据会不好看 + offset: 150, // 距底部多远时,触发upCallback,仅mescroll-uni生效 ( mescroll-body配置的是pages.json的 onReachBottomDistance ) + textLoading: '加载中 ...', // 加载中的提示文本 + textNoMore: '-- END --', // 没有更多数据的提示文本 + bgColor: "transparent", // 背景颜色 (建议在pages.json中再设置一下backgroundColorBottom) + textColor: "gray", // 文本颜色 (当bgColor配置了颜色,而textColor未配置时,则textColor会默认为白色) + inited: null, // 初始化完毕的回调 + showLoading: null, // 显示加载中的回调 + showNoMore: null, // 显示无更多数据的回调 + hideUpScroll: null, // 隐藏上拉加载的回调 + errDistance: 60, // endErr的时候需往上滑动一段距离,使其往下滑动时再次触发onReachBottom,仅mescroll-body生效 + toTop: { + // 回到顶部按钮,需配置src才显示 + src: null, // 图片路径,默认null (绝对路径或网络图) + offset: 1000, // 列表滚动多少距离才显示回到顶部按钮,默认1000 + duration: 300, // 回到顶部的动画时长,默认300ms (当值为0或300则使用系统自带回到顶部,更流畅; 其他值则通过step模拟,部分机型可能不够流畅,所以非特殊情况不建议修改此项) + btnClick: null, // 点击按钮的回调 + onShow: null, // 是否显示的回调 + zIndex: 9990, // fixed定位z-index值 + left: null, // 到左边的距离, 默认null. 此项有值时,right不生效. (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx) + right: 20, // 到右边的距离, 默认20 (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx) + bottom: 120, // 到底部的距离, 默认120 (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx) + safearea: false, // bottom的偏移量是否加上底部安全区的距离, 默认false, 需要适配iPhoneX时使用 (具体的界面如果不配置此项,则取本vue的safearea值) + width: 72, // 回到顶部图标的宽度, 默认72 (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx) + radius: "50%" // 圆角, 默认"50%" (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx) + }, + empty: { + use: true, // 是否显示空布局 + icon: null, // 图标路径 + tip: '~ 暂无相关数据 ~', // 提示 + btnText: '', // 按钮 + btnClick: null, // 点击按钮的回调 + onShow: null, // 是否显示的回调 + fixed: false, // 是否使用fixed定位,默认false; 配置fixed为true,以下的top和zIndex才生效 (transform会使fixed失效,最终会降级为absolute) + top: "100rpx", // fixed定位的top值 (完整的单位值,如 "10%"; "100rpx") + zIndex: 99 // fixed定位z-index值 + }, + onScroll: false // 是否监听滚动事件 + }) +} + +/* 配置参数 */ +MeScroll.extend = function(userOption, defaultOption) { + if (!userOption) return defaultOption; + for (let key in defaultOption) { + if (userOption[key] == null) { + let def = defaultOption[key]; + if (def != null && typeof def === 'object') { + userOption[key] = MeScroll.extend({}, def); // 深度匹配 + } else { + userOption[key] = def; + } + } else if (typeof userOption[key] === 'object') { + MeScroll.extend(userOption[key], defaultOption[key]); // 深度匹配 + } + } + return userOption; +} + +/* 简单判断是否配置了颜色 (非透明,非白色) */ +MeScroll.prototype.hasColor = function(color) { + if(!color) return false; + let c = color.toLowerCase(); + return c != "#fff" && c != "#ffffff" && c != "transparent" && c != "white" +} + +/* -------初始化下拉刷新------- */ +MeScroll.prototype.initDownScroll = function() { + let me = this; + // 配置参数 + me.optDown = me.options.down || {}; + if(!me.optDown.textColor && me.hasColor(me.optDown.bgColor)) me.optDown.textColor = "#fff"; // 当bgColor有值且textColor未设置,则textColor默认白色 + me.extendDownScroll(me.optDown); + + // 如果是mescroll-body且配置了native,则禁止自定义的下拉刷新 + if(me.isScrollBody && me.optDown.native){ + me.optDown.use = false + }else{ + me.optDown.native = false // 仅mescroll-body支持,mescroll-uni不支持 + } + + me.downHight = 0; // 下拉区域的高度 + + // 在页面中加入下拉布局 + if (me.optDown.use && me.optDown.inited) { + // 初始化完毕的回调 + setTimeout(function() { // 待主线程执行完毕再执行,避免new MeScroll未初始化,在回调获取不到mescroll的实例 + me.optDown.inited(me); + }, 0) + } +} + +/* 列表touchstart事件 */ +MeScroll.prototype.touchstartEvent = function(e) { + if (!this.optDown.use) return; + + this.startPoint = this.getPoint(e); // 记录起点 + this.startTop = this.getScrollTop(); // 记录此时的滚动条位置 + this.startAngle = 0; // 初始角度 + this.lastPoint = this.startPoint; // 重置上次move的点 + this.maxTouchmoveY = this.getBodyHeight() - this.optDown.bottomOffset; // 手指触摸的最大范围(写在touchstart避免body获取高度为0的情况) + this.inTouchend = false; // 标记不是touchend +} + +/* 列表touchmove事件 */ +MeScroll.prototype.touchmoveEvent = function(e) { + if (!this.optDown.use) return; + let me = this; + + let scrollTop = me.getScrollTop(); // 当前滚动条的距离 + let curPoint = me.getPoint(e); // 当前点 + + let moveY = curPoint.y - me.startPoint.y; // 和起点比,移动的距离,大于0向下拉,小于0向上拉 + + // 向下拉 && 在顶部 + // mescroll-body,直接判定在顶部即可 + // scroll-view在滚动时不会触发touchmove,当触顶/底/左/右时,才会触发touchmove + // scroll-view滚动到顶部时,scrollTop不一定为0,也有可能大于0; 在iOS的APP中scrollTop可能为负数,不一定和startTop相等 + if (moveY > 0 && ( + (me.isScrollBody && scrollTop <= 0) + || + (!me.isScrollBody && (scrollTop <= 0 || (scrollTop <= me.optDown.startTop && scrollTop === me.startTop)) ) + )) { + // 可下拉的条件 + if (!me.inTouchend && !me.isDownScrolling && !me.optDown.isLock && (!me.isUpScrolling || (me.isUpScrolling && + me.optUp.isBoth))) { + + // 下拉的初始角度是否在配置的范围内 + if(!me.startAngle) me.startAngle = me.getAngle(me.lastPoint, curPoint); // 两点之间的角度,区间 [0,90] + if (me.startAngle < me.optDown.minAngle) return; // 如果小于配置的角度,则不往下执行下拉刷新 + + // 如果手指的位置超过配置的距离,则提前结束下拉,避免Webview嵌套导致touchend无法触发 + if (me.maxTouchmoveY > 0 && curPoint.y >= me.maxTouchmoveY) { + me.inTouchend = true; // 标记执行touchend + me.touchendEvent(); // 提前触发touchend + return; + } + + me.preventDefault(e); // 阻止默认事件 + + let diff = curPoint.y - me.lastPoint.y; // 和上次比,移动的距离 (大于0向下,小于0向上) + + // 下拉距离 < 指定距离 + if (me.downHight < me.optDown.offset) { + if (me.movetype !== 1) { + me.movetype = 1; // 加入标记,保证只执行一次 + me.isDownEndSuccess = null; // 重置是否加载成功的状态 (wxs执行的是wxs.wxs) + me.optDown.inOffset && me.optDown.inOffset(me); // 进入指定距离范围内那一刻的回调,只执行一次 + me.isMoveDown = true; // 标记下拉区域高度改变,在touchend重置回来 + } + me.downHight += diff * me.optDown.inOffsetRate; // 越往下,高度变化越小 + + // 指定距离 <= 下拉距离 + } else { + if (me.movetype !== 2) { + me.movetype = 2; // 加入标记,保证只执行一次 + me.optDown.outOffset && me.optDown.outOffset(me); // 下拉超过指定距离那一刻的回调,只执行一次 + me.isMoveDown = true; // 标记下拉区域高度改变,在touchend重置回来 + } + if (diff > 0) { // 向下拉 + me.downHight += diff * me.optDown.outOffsetRate; // 越往下,高度变化越小 + } else { // 向上收 + me.downHight += diff; // 向上收回高度,则向上滑多少收多少高度 + } + } + + me.downHight = Math.round(me.downHight) // 取整 + let rate = me.downHight / me.optDown.offset; // 下拉区域当前高度与指定距离的比值 + me.optDown.onMoving && me.optDown.onMoving(me, rate, me.downHight); // 下拉过程中的回调,一直在执行 + } + } + + me.lastPoint = curPoint; // 记录本次移动的点 +} + +/* 列表touchend事件 */ +MeScroll.prototype.touchendEvent = function(e) { + if (!this.optDown.use) return; + // 如果下拉区域高度已改变,则需重置回来 + if (this.isMoveDown) { + if (this.downHight >= this.optDown.offset) { + // 符合触发刷新的条件 + this.triggerDownScroll(); + } else { + // 不符合的话 则重置 + this.downHight = 0; + this.endDownScrollCall(this); + } + this.movetype = 0; + this.isMoveDown = false; + } else if (!this.isScrollBody && this.getScrollTop() === this.startTop) { // scroll-view到顶/左/右/底的滑动事件 + let isScrollUp = this.getPoint(e).y - this.startPoint.y < 0; // 和起点比,移动的距离,大于0向下拉,小于0向上拉 + // 上滑 + if (isScrollUp) { + // 需检查滑动的角度 + let angle = this.getAngle(this.getPoint(e), this.startPoint); // 两点之间的角度,区间 [0,90] + if (angle > 80) { + // 检查并触发上拉 + this.triggerUpScroll(true); + } + } + } +} + +/* 根据点击滑动事件获取第一个手指的坐标 */ +MeScroll.prototype.getPoint = function(e) { + if (!e) { + return { + x: 0, + y: 0 + } + } + if (e.touches && e.touches[0]) { + return { + x: e.touches[0].pageX, + y: e.touches[0].pageY + } + } else if (e.changedTouches && e.changedTouches[0]) { + return { + x: e.changedTouches[0].pageX, + y: e.changedTouches[0].pageY + } + } else { + return { + x: e.clientX, + y: e.clientY + } + } +} + +/* 计算两点之间的角度: 区间 [0,90]*/ +MeScroll.prototype.getAngle = function(p1, p2) { + let x = Math.abs(p1.x - p2.x); + let y = Math.abs(p1.y - p2.y); + let z = Math.sqrt(x * x + y * y); + let angle = 0; + if (z !== 0) { + angle = Math.asin(y / z) / Math.PI * 180; + } + return angle +} + +/* 触发下拉刷新 */ +MeScroll.prototype.triggerDownScroll = function() { + if (this.optDown.beforeLoading && this.optDown.beforeLoading(this)) { + //return true则处于完全自定义状态 + } else { + this.showDownScroll(); // 下拉刷新中... + !this.optDown.native && this.optDown.callback && this.optDown.callback(this); // 执行回调,联网加载数据 + } +} + +/* 显示下拉进度布局 */ +MeScroll.prototype.showDownScroll = function() { + this.isDownScrolling = true; // 标记下拉中 + if (this.optDown.native) { + uni.startPullDownRefresh(); // 系统自带的下拉刷新 + this.showDownLoadingCall(0); // 仍触发showLoading,因为上拉加载用到 + } else{ + this.downHight = this.optDown.offset; // 更新下拉区域高度 + this.showDownLoadingCall(this.downHight); // 下拉刷新中... + } +} + +MeScroll.prototype.showDownLoadingCall = function(downHight) { + this.optDown.showLoading && this.optDown.showLoading(this, downHight); // 下拉刷新中... + this.optDown.afterLoading && this.optDown.afterLoading(this, downHight); // 下拉刷新中...触发之后马上要执行的代码 +} + +/* 显示系统自带的下拉刷新时需要处理的业务 */ +MeScroll.prototype.onPullDownRefresh = function() { + this.isDownScrolling = true; // 标记下拉中 + this.showDownLoadingCall(0); // 仍触发showLoading,因为上拉加载用到 + this.optDown.callback && this.optDown.callback(this); // 执行回调,联网加载数据 +} + +/* 结束下拉刷新 */ +MeScroll.prototype.endDownScroll = function() { + if (this.optDown.native) { // 结束原生下拉刷新 + this.isDownScrolling = false; + this.endDownScrollCall(this); + uni.stopPullDownRefresh(); + return + } + let me = this; + // 结束下拉刷新的方法 + let endScroll = function() { + me.downHight = 0; + me.isDownScrolling = false; + me.endDownScrollCall(me); + if(!me.isScrollBody){ + me.setScrollHeight(0) // scroll-view重置滚动区域,使数据不满屏时仍可检查触发翻页 + me.scrollTo(0,0) // scroll-view需重置滚动条到顶部,避免startTop大于0时,对下拉刷新的影响 + } + } + // 结束下拉刷新时的回调 + let delay = 0; + if (me.optDown.beforeEndDownScroll) { + delay = me.optDown.beforeEndDownScroll(me); // 结束下拉刷新的延时,单位ms + if(me.isDownEndSuccess == null) delay = 0; // 没有执行加载中,则不延时 + } + if (typeof delay === 'number' && delay > 0) { + setTimeout(endScroll, delay); + } else { + endScroll(); + } +} + +MeScroll.prototype.endDownScrollCall = function() { + this.optDown.endDownScroll && this.optDown.endDownScroll(this); + this.optDown.afterEndDownScroll && this.optDown.afterEndDownScroll(this); +} + +/* 锁定下拉刷新:isLock=ture,null锁定;isLock=false解锁 */ +MeScroll.prototype.lockDownScroll = function(isLock) { + if (isLock == null) isLock = true; + this.optDown.isLock = isLock; +} + +/* 锁定上拉加载:isLock=ture,null锁定;isLock=false解锁 */ +MeScroll.prototype.lockUpScroll = function(isLock) { + if (isLock == null) isLock = true; + this.optUp.isLock = isLock; +} + +/* -------初始化上拉加载------- */ +MeScroll.prototype.initUpScroll = function() { + let me = this; + // 配置参数 + me.optUp = me.options.up || {use: false} + if(!me.optUp.textColor && me.hasColor(me.optUp.bgColor)) me.optUp.textColor = "#fff"; // 当bgColor有值且textColor未设置,则textColor默认白色 + me.extendUpScroll(me.optUp); + + if (me.optUp.use === false) return; // 配置不使用上拉加载时,则不初始化上拉布局 + me.optUp.hasNext = true; // 如果使用上拉,则默认有下一页 + me.startNum = me.optUp.page.num + 1; // 记录page开始的页码 + + // 初始化完毕的回调 + if (me.optUp.inited) { + setTimeout(function() { // 待主线程执行完毕再执行,避免new MeScroll未初始化,在回调获取不到mescroll的实例 + me.optUp.inited(me); + }, 0) + } +} + +/*滚动到底部的事件 (仅mescroll-body生效)*/ +MeScroll.prototype.onReachBottom = function() { + if (this.isScrollBody && !this.isUpScrolling) { // 只能支持下拉刷新的时候同时可以触发上拉加载,否则滚动到底部就需要上滑一点才能触发onReachBottom + if (!this.optUp.isLock && this.optUp.hasNext) { + this.triggerUpScroll(); + } + } +} + +/*列表滚动事件 (仅mescroll-body生效)*/ +MeScroll.prototype.onPageScroll = function(e) { + if (!this.isScrollBody) return; + + // 更新滚动条的位置 (主要用于判断下拉刷新时,滚动条是否在顶部) + this.setScrollTop(e.scrollTop); + + // 顶部按钮的显示隐藏 + if (e.scrollTop >= this.optUp.toTop.offset) { + this.showTopBtn(); + } else { + this.hideTopBtn(); + } +} + +/*列表滚动事件*/ +MeScroll.prototype.scroll = function(e, onScroll) { + // 更新滚动条的位置 + this.setScrollTop(e.scrollTop); + // 更新滚动内容高度 + this.setScrollHeight(e.scrollHeight); + + // 向上滑还是向下滑动 + if (this.preScrollY == null) this.preScrollY = 0; + this.isScrollUp = e.scrollTop - this.preScrollY > 0; + this.preScrollY = e.scrollTop; + + // 上滑 && 检查并触发上拉 + this.isScrollUp && this.triggerUpScroll(true); + + // 顶部按钮的显示隐藏 + if (e.scrollTop >= this.optUp.toTop.offset) { + this.showTopBtn(); + } else { + this.hideTopBtn(); + } + + // 滑动监听 + this.optUp.onScroll && onScroll && onScroll() +} + +/* 触发上拉加载 */ +MeScroll.prototype.triggerUpScroll = function(isCheck) { + if (!this.isUpScrolling && this.optUp.use && this.optUp.callback) { + // 是否校验在底部; 默认不校验 + if (isCheck === true) { + let canUp = false; + // 还有下一页 && 没有锁定 && 不在下拉中 + if (this.optUp.hasNext && !this.optUp.isLock && !this.isDownScrolling) { + if (this.getScrollBottom() <= this.optUp.offset) { // 到底部 + canUp = true; // 标记可上拉 + } + } + if (canUp === false) return; + } + this.showUpScroll(); // 上拉加载中... + this.optUp.page.num++; // 预先加一页,如果失败则减回 + this.isUpAutoLoad = true; // 标记上拉已经自动执行过,避免初始化时多次触发上拉回调 + this.num = this.optUp.page.num; // 把最新的页数赋值在mescroll上,避免对page的影响 + this.size = this.optUp.page.size; // 把最新的页码赋值在mescroll上,避免对page的影响 + this.time = this.optUp.page.time; // 把最新的页码赋值在mescroll上,避免对page的影响 + this.optUp.callback(this); // 执行回调,联网加载数据 + } +} + +/* 显示上拉加载中 */ +MeScroll.prototype.showUpScroll = function() { + this.isUpScrolling = true; // 标记上拉加载中 + this.optUp.showLoading && this.optUp.showLoading(this); // 回调 +} + +/* 显示上拉无更多数据 */ +MeScroll.prototype.showNoMore = function() { + this.optUp.hasNext = false; // 标记无更多数据 + this.optUp.showNoMore && this.optUp.showNoMore(this); // 回调 +} + +/* 隐藏上拉区域**/ +MeScroll.prototype.hideUpScroll = function() { + this.optUp.hideUpScroll && this.optUp.hideUpScroll(this); // 回调 +} + +/* 结束上拉加载 */ +MeScroll.prototype.endUpScroll = function(isShowNoMore) { + if (isShowNoMore != null) { // isShowNoMore=null,不处理下拉状态,下拉刷新的时候调用 + if (isShowNoMore) { + this.showNoMore(); // isShowNoMore=true,显示无更多数据 + } else { + this.hideUpScroll(); // isShowNoMore=false,隐藏上拉加载 + } + } + this.isUpScrolling = false; // 标记结束上拉加载 +} + +/* 重置上拉加载列表为第一页 + *isShowLoading 是否显示进度布局; + * 1.默认null,不传参,则显示上拉加载的进度布局 + * 2.传参true, 则显示下拉刷新的进度布局 + * 3.传参false,则不显示上拉和下拉的进度 (常用于静默更新列表数据) + */ +MeScroll.prototype.resetUpScroll = function(isShowLoading) { + if (this.optUp && this.optUp.use) { + let page = this.optUp.page; + this.prePageNum = page.num; // 缓存重置前的页码,加载失败可退回 + this.prePageTime = page.time; // 缓存重置前的时间,加载失败可退回 + page.num = this.startNum; // 重置为第一页 + page.time = null; // 重置时间为空 + if (!this.isDownScrolling && isShowLoading !== false) { // 如果不是下拉刷新触发的resetUpScroll并且不配置列表静默更新,则显示进度; + if (isShowLoading == null) { + this.removeEmpty(); // 移除空布局 + this.showUpScroll(); // 不传参,默认显示上拉加载的进度布局 + } else { + this.showDownScroll(); // 传true,显示下拉刷新的进度布局,不清空列表 + } + } + this.isUpAutoLoad = true; // 标记上拉已经自动执行过,避免初始化时多次触发上拉回调 + this.num = page.num; // 把最新的页数赋值在mescroll上,避免对page的影响 + this.size = page.size; // 把最新的页码赋值在mescroll上,避免对page的影响 + this.time = page.time; // 把最新的页码赋值在mescroll上,避免对page的影响 + this.optUp.callback && this.optUp.callback(this); // 执行上拉回调 + } +} + +/* 设置page.num的值 */ +MeScroll.prototype.setPageNum = function(num) { + this.optUp.page.num = num - 1; +} + +/* 设置page.size的值 */ +MeScroll.prototype.setPageSize = function(size) { + this.optUp.page.size = size; +} + +/* 联网回调成功,结束下拉刷新和上拉加载 + * dataSize: 当前页的数据量(必传) + * totalPage: 总页数(必传) + * systime: 服务器时间 (可空) + */ +MeScroll.prototype.endByPage = function(dataSize, totalPage, systime) { + let hasNext; + if (this.optUp.use && totalPage != null) hasNext = this.optUp.page.num < totalPage; // 是否还有下一页 + this.endSuccess(dataSize, hasNext, systime); +} + +/* 联网回调成功,结束下拉刷新和上拉加载 + * dataSize: 当前页的数据量(必传) + * totalSize: 列表所有数据总数量(必传) + * systime: 服务器时间 (可空) + */ +MeScroll.prototype.endBySize = function(dataSize, totalSize, systime) { + let hasNext; + if (this.optUp.use && totalSize != null) { + let loadSize = (this.optUp.page.num - 1) * this.optUp.page.size + dataSize; // 已加载的数据总数 + hasNext = loadSize < totalSize; // 是否还有下一页 + } + this.endSuccess(dataSize, hasNext, systime); +} + +/* 联网回调成功,结束下拉刷新和上拉加载 + * dataSize: 当前页的数据个数(不是所有页的数据总和),用于上拉加载判断是否还有下一页.如果不传,则会判断还有下一页 + * hasNext: 是否还有下一页,布尔类型;用来解决这个小问题:比如列表共有20条数据,每页加载10条,共2页.如果只根据dataSize判断,则需翻到第三页才会知道无更多数据,如果传了hasNext,则翻到第二页即可显示无更多数据. + * systime: 服务器时间(可空);用来解决这个小问题:当准备翻下一页时,数据库新增了几条记录,此时翻下一页,前面的几条数据会和上一页的重复;这里传入了systime,那么upCallback的page.time就会有值,把page.time传给服务器,让后台过滤新加入的那几条记录 + */ +MeScroll.prototype.endSuccess = function(dataSize, hasNext, systime) { + let me = this; + // 结束下拉刷新 + if (me.isDownScrolling) { + me.isDownEndSuccess = true + me.endDownScroll(); + } + + // 结束上拉加载 + if (me.optUp.use) { + let isShowNoMore; // 是否已无更多数据 + if (dataSize != null) { + let pageNum = me.optUp.page.num; // 当前页码 + let pageSize = me.optUp.page.size; // 每页长度 + // 如果是第一页 + if (pageNum === 1) { + if (systime) me.optUp.page.time = systime; // 设置加载列表数据第一页的时间 + } + if (dataSize < pageSize || hasNext === false) { + // 返回的数据不满一页时,则说明已无更多数据 + me.optUp.hasNext = false; + if (dataSize === 0 && pageNum === 1) { + // 如果第一页无任何数据且配置了空布局 + isShowNoMore = false; + me.showEmpty(); + } else { + // 总列表数少于配置的数量,则不显示无更多数据 + let allDataSize = (pageNum - 1) * pageSize + dataSize; + if (allDataSize < me.optUp.noMoreSize) { + isShowNoMore = false; + } else { + isShowNoMore = true; + } + me.removeEmpty(); // 移除空布局 + } + } else { + // 还有下一页 + isShowNoMore = false; + me.optUp.hasNext = true; + me.removeEmpty(); // 移除空布局 + } + } + + // 隐藏上拉 + me.endUpScroll(isShowNoMore); + } +} + +/* 回调失败,结束下拉刷新和上拉加载 */ +MeScroll.prototype.endErr = function(errDistance) { + // 结束下拉,回调失败重置回原来的页码和时间 + if (this.isDownScrolling) { + this.isDownEndSuccess = false + let page = this.optUp.page; + if (page && this.prePageNum) { + page.num = this.prePageNum; + page.time = this.prePageTime; + } + this.endDownScroll(); + } + // 结束上拉,回调失败重置回原来的页码 + if (this.isUpScrolling) { + this.optUp.page.num--; + this.endUpScroll(false); + // 如果是mescroll-body,则需往回滚一定距离 + if(this.isScrollBody && errDistance !== 0){ // 不处理0 + if(!errDistance) errDistance = this.optUp.errDistance; // 不传,则取默认 + this.scrollTo(this.getScrollTop() - errDistance, 0) // 往上回滚的距离 + } + } +} + +/* 显示空布局 */ +MeScroll.prototype.showEmpty = function() { + this.optUp.empty.use && this.optUp.empty.onShow && this.optUp.empty.onShow(true) +} + +/* 移除空布局 */ +MeScroll.prototype.removeEmpty = function() { + this.optUp.empty.use && this.optUp.empty.onShow && this.optUp.empty.onShow(false) +} + +/* 显示回到顶部的按钮 */ +MeScroll.prototype.showTopBtn = function() { + if (!this.topBtnShow) { + this.topBtnShow = true; + this.optUp.toTop.onShow && this.optUp.toTop.onShow(true); + } +} + +/* 隐藏回到顶部的按钮 */ +MeScroll.prototype.hideTopBtn = function() { + if (this.topBtnShow) { + this.topBtnShow = false; + this.optUp.toTop.onShow && this.optUp.toTop.onShow(false); + } +} + +/* 获取滚动条的位置 */ +MeScroll.prototype.getScrollTop = function() { + return this.scrollTop || 0 +} + +/* 记录滚动条的位置 */ +MeScroll.prototype.setScrollTop = function(y) { + this.scrollTop = y; +} + +/* 滚动到指定位置 */ +MeScroll.prototype.scrollTo = function(y, t) { + this.myScrollTo && this.myScrollTo(y, t) // scrollview需自定义回到顶部方法 +} + +/* 自定义scrollTo */ +MeScroll.prototype.resetScrollTo = function(myScrollTo) { + this.myScrollTo = myScrollTo +} + +/* 滚动条到底部的距离 */ +MeScroll.prototype.getScrollBottom = function() { + return this.getScrollHeight() - this.getClientHeight() - this.getScrollTop() +} + +/* 计步器 + star: 开始值 + end: 结束值 + callback(step,timer): 回调step值,计步器timer,可自行通过window.clearInterval(timer)结束计步器; + t: 计步时长,传0则直接回调end值;不传则默认300ms + rate: 周期;不传则默认30ms计步一次 + * */ +MeScroll.prototype.getStep = function(star, end, callback, t, rate) { + let diff = end - star; // 差值 + if (t === 0 || diff === 0) { + callback && callback(end); + return; + } + t = t || 300; // 时长 300ms + rate = rate || 30; // 周期 30ms + let count = t / rate; // 次数 + let step = diff / count; // 步长 + let i = 0; // 计数 + let timer = setInterval(function() { + if (i < count - 1) { + star += step; + callback && callback(star, timer); + i++; + } else { + callback && callback(end, timer); // 最后一次直接设置end,避免计算误差 + clearInterval(timer); + } + }, rate); +} + +/* 滚动容器的高度 */ +MeScroll.prototype.getClientHeight = function(isReal) { + let h = this.clientHeight || 0 + if (h === 0 && isReal !== true) { // 未获取到容器的高度,可临时取body的高度 (可能会有误差) + h = this.getBodyHeight() + } + return h +} +MeScroll.prototype.setClientHeight = function(h) { + this.clientHeight = h; +} + +/* 滚动内容的高度 */ +MeScroll.prototype.getScrollHeight = function() { + return this.scrollHeight || 0; +} +MeScroll.prototype.setScrollHeight = function(h) { + this.scrollHeight = h; +} + +/* body的高度 */ +MeScroll.prototype.getBodyHeight = function() { + return this.bodyHeight || 0; +} +MeScroll.prototype.setBodyHeight = function(h) { + this.bodyHeight = h; +} + +/* 阻止浏览器默认滚动事件 */ +MeScroll.prototype.preventDefault = function(e) { + // 小程序不支持e.preventDefault, 已在wxs中禁止 + // app的bounce只能通过配置pages.json的style.app-plus.bounce为"none"来禁止, 或使用renderjs禁止 + // cancelable:是否可以被禁用; defaultPrevented:是否已经被禁用 + if (e && e.cancelable && !e.defaultPrevented) e.preventDefault() +} \ No newline at end of file diff --git a/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni.vue b/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni.vue new file mode 100644 index 0000000..cb5d026 --- /dev/null +++ b/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni.vue @@ -0,0 +1,480 @@ + + + + + + + + + + + + + + + diff --git a/uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-comp.js b/uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-comp.js new file mode 100644 index 0000000..abe7cd7 --- /dev/null +++ b/uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-comp.js @@ -0,0 +1,47 @@ +/** + * mescroll-body写在子组件时,需通过mescroll的mixins补充子组件缺少的生命周期 + */ +const MescrollCompMixin = { + // 因为子组件无onPageScroll和onReachBottom的页面生命周期,需在页面传递进到子组件 (一级) + onPageScroll(e) { + this.handlePageScroll(e) + }, + onReachBottom() { + this.handleReachBottom() + }, + // 当down的native: true时, 还需传递此方法进到子组件 + onPullDownRefresh(){ + this.handlePullDownRefresh() + }, + data() { + return { + mescroll: { // mescroll-body写在子子子...组件的情况 (多级) + onPageScroll: e=>{ + this.handlePageScroll(e) + }, + onReachBottom: ()=>{ + this.handleReachBottom() + }, + onPullDownRefresh: ()=>{ + this.handlePullDownRefresh() + } + } + } + }, + methods:{ + handlePageScroll(e){ + let item = this.$refs["mescrollItem"]; + if(item && item.mescroll) item.mescroll.onPageScroll(e); + }, + handleReachBottom(){ + let item = this.$refs["mescrollItem"]; + if(item && item.mescroll) item.mescroll.onReachBottom(); + }, + handlePullDownRefresh(){ + let item = this.$refs["mescrollItem"]; + if(item && item.mescroll) item.mescroll.onPullDownRefresh(); + } + } +} + +export default MescrollCompMixin; diff --git a/uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-more-item.js b/uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-more-item.js new file mode 100644 index 0000000..96ca9bf --- /dev/null +++ b/uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-more-item.js @@ -0,0 +1,57 @@ +/** + * mescroll-more-item的mixins, 仅在多个 mescroll-body 写在子组件时使用 (参考 mescroll-more 案例) + */ +const MescrollMoreItemMixin = { + // 支付宝小程序不支持props的mixin,需写在具体的页面中 + // #ifndef MP-ALIPAY || MP-DINGTALK + props:{ + i: Number, // 每个tab页的专属下标 + index: { // 当前tab的下标 + type: Number, + default(){ + return 0 + } + } + }, + // #endif + data() { + return { + downOption:{ + auto:false // 不自动加载 + }, + upOption:{ + auto:false // 不自动加载 + }, + isInit: false // 当前tab是否已初始化 + } + }, + watch:{ + // 监听下标的变化 + index(val){ + if (this.i === val && !this.isInit) this.mescrollTrigger() + } + }, + methods: { + // mescroll组件初始化的回调,可获取到mescroll对象 (覆盖mescroll-mixins.js的mescrollInit, 为了标记isInit) + mescrollInit(mescroll) { + this.mescroll = mescroll; + // 自动加载当前tab的数据 + if(this.i === this.index){ + this.mescrollTrigger() + } + }, + // 主动触发加载 + mescrollTrigger(){ + this.isInit = true; // 标记为true + if (this.mescroll) { + if (this.mescroll.optDown.use) { + this.mescroll.triggerDownScroll(); + } else{ + this.mescroll.triggerUpScroll(); + } + } + } + } +} + +export default MescrollMoreItemMixin; diff --git a/uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-more.js b/uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-more.js new file mode 100644 index 0000000..16b47d8 --- /dev/null +++ b/uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-more.js @@ -0,0 +1,77 @@ +/** + * mescroll-body写在子组件时, 需通过mescroll的mixins补充子组件缺少的生命周期 + */ +const MescrollMoreMixin = { + data() { + return { + tabIndex: 0, // 当前tab下标 + mescroll: { // mescroll-body写在子子子...组件的情况 (多级) + onPageScroll: e=>{ + this.handlePageScroll(e) + }, + onReachBottom: ()=>{ + this.handleReachBottom() + }, + onPullDownRefresh: ()=>{ + this.handlePullDownRefresh() + } + } + } + }, + // 因为子组件无onPageScroll和onReachBottom的页面生命周期,需在页面传递进到子组件 + onPageScroll(e) { + this.handlePageScroll(e) + }, + onReachBottom() { + this.handleReachBottom() + }, + // 当down的native: true时, 还需传递此方法进到子组件 + onPullDownRefresh(){ + this.handlePullDownRefresh() + }, + methods:{ + handlePageScroll(e){ + let mescroll = this.getMescroll(this.tabIndex); + mescroll && mescroll.onPageScroll(e); + }, + handleReachBottom(){ + let mescroll = this.getMescroll(this.tabIndex); + mescroll && mescroll.onReachBottom(); + }, + handlePullDownRefresh(){ + let mescroll = this.getMescroll(this.tabIndex); + mescroll && mescroll.onPullDownRefresh(); + }, + // 根据下标获取对应子组件的mescroll + getMescroll(i){ + if(!this.mescrollItems) this.mescrollItems = []; + if(!this.mescrollItems[i]) { + // v-for中的refs + let vForItem = this.$refs["mescrollItem"]; + if(vForItem){ + this.mescrollItems[i] = vForItem[i] + }else{ + // 普通的refs,不可重复 + this.mescrollItems[i] = this.$refs["mescrollItem"+i]; + } + } + let item = this.mescrollItems[i] + return item ? item.mescroll : null + }, + // 切换tab,恢复滚动条位置 + tabChange(i){ + let mescroll = this.getMescroll(i); + if(mescroll){ + // 恢复上次滚动条的位置 + let y = mescroll.getScrollTop() + mescroll.scrollTo(y, 0) + // 再次恢复上次滚动条的位置, 确保元素已渲染 + setTimeout(()=>{ + mescroll.scrollTo(y, 0) + },30) + } + } + } +} + +export default MescrollMoreMixin; diff --git a/uni_modules/mescroll-uni/components/mescroll-uni/wxs/mixins.js b/uni_modules/mescroll-uni/components/mescroll-uni/wxs/mixins.js new file mode 100644 index 0000000..34ffa3c --- /dev/null +++ b/uni_modules/mescroll-uni/components/mescroll-uni/wxs/mixins.js @@ -0,0 +1,109 @@ +// 定义在wxs (含renderjs) 逻辑层的数据和方法, 与视图层相互通信 +const WxsMixin = { + data() { + return { + // 传入wxs视图层的数据 (响应式) + wxsProp: { + optDown:{}, // 下拉刷新的配置 + scrollTop:0, // 滚动条的距离 + bodyHeight:0, // body的高度 + isDownScrolling:false, // 是否正在下拉刷新中 + isUpScrolling:false, // 是否正在上拉加载中 + isScrollBody:true, // 是否为mescroll-body滚动 + isUpBoth:true, // 上拉加载时,是否同时可以下拉刷新 + t: 0 // 数据更新的标记 (只有数据更新了,才会触发wxs的Observer) + }, + + // 标记调用wxs视图层的方法 + callProp: { + callType: '', // 方法名 + t: 0 // 数据更新的标记 (只有数据更新了,才会触发wxs的Observer) + }, + + // 不用wxs的平台使用此处的wxsBiz对象,抹平wxs的写法 (微信小程序和APP使用的wxsBiz对象是./wxs/wxs.wxs) + // #ifndef MP-WEIXIN || MP-QQ || APP-PLUS || H5 + wxsBiz: { + //注册列表touchstart事件,用于下拉刷新 + touchstartEvent: e=> { + this.mescroll.touchstartEvent(e); + }, + //注册列表touchmove事件,用于下拉刷新 + touchmoveEvent: e=> { + this.mescroll.touchmoveEvent(e); + }, + //注册列表touchend事件,用于下拉刷新 + touchendEvent: e=> { + this.mescroll.touchendEvent(e); + }, + propObserver(){}, // 抹平wxs的写法 + callObserver(){} // 抹平wxs的写法 + }, + // #endif + + // 不用renderjs的平台使用此处的renderBiz对象,抹平renderjs的写法 (app 和 h5 使用的renderBiz对象是./wxs/renderjs.js) + // #ifndef APP-PLUS || H5 + renderBiz: { + propObserver(){} // 抹平renderjs的写法 + } + // #endif + } + }, + methods: { + // wxs视图层调用逻辑层的回调 + wxsCall(msg){ + if(msg.type === 'setWxsProp'){ + // 更新wxsProp数据 (值改变才触发更新) + this.wxsProp = { + optDown: this.mescroll.optDown, + scrollTop: this.mescroll.getScrollTop(), + bodyHeight: this.mescroll.getBodyHeight(), + isDownScrolling: this.mescroll.isDownScrolling, + isUpScrolling: this.mescroll.isUpScrolling, + isUpBoth: this.mescroll.optUp.isBoth, + isScrollBody:this.mescroll.isScrollBody, + t: Date.now() + } + }else if(msg.type === 'setLoadType'){ + // 设置inOffset,outOffset的状态 + this.downLoadType = msg.downLoadType + // 状态挂载到mescroll对象, 以便在其他组件中使用, 比如中 + this.$set(this.mescroll, 'downLoadType', this.downLoadType) + // 重置是否加载成功的状态 + this.$set(this.mescroll, 'isDownEndSuccess', null) + }else if(msg.type === 'triggerDownScroll'){ + // 主动触发下拉刷新 + this.mescroll.triggerDownScroll(); + }else if(msg.type === 'endDownScroll'){ + // 结束下拉刷新 + this.mescroll.endDownScroll(); + }else if(msg.type === 'triggerUpScroll'){ + // 主动触发上拉加载 + this.mescroll.triggerUpScroll(true); + } + } + }, + mounted() { + // #ifdef MP-WEIXIN || MP-QQ || APP-PLUS || H5 + // 配置主动触发wxs显示加载进度的回调 + this.mescroll.optDown.afterLoading = ()=>{ + this.callProp = {callType: "showLoading", t: Date.now()} // 触发wxs的方法 (值改变才触发更新) + } + // 配置主动触发wxs隐藏加载进度的回调 + this.mescroll.optDown.afterEndDownScroll = ()=>{ + this.callProp = {callType: "endDownScroll", t: Date.now()} // 触发wxs的方法 (值改变才触发更新) + let delay = 300 + (this.mescroll.optDown.beforeEndDelay || 0) + setTimeout(()=>{ + if(this.downLoadType === 4 || this.downLoadType === 0){ + this.callProp = {callType: "clearTransform", t: Date.now()} // 触发wxs的方法 (值改变才触发更新) + } + // 状态挂载到mescroll对象, 以便在其他组件中使用, 比如中 + this.$set(this.mescroll, 'downLoadType', this.downLoadType) + }, delay) + } + // 初始化wxs的数据 + this.wxsCall({type: 'setWxsProp'}) + // #endif + } +} + +export default WxsMixin; diff --git a/uni_modules/mescroll-uni/components/mescroll-uni/wxs/renderjs.js b/uni_modules/mescroll-uni/components/mescroll-uni/wxs/renderjs.js new file mode 100644 index 0000000..6cd1301 --- /dev/null +++ b/uni_modules/mescroll-uni/components/mescroll-uni/wxs/renderjs.js @@ -0,0 +1,92 @@ +// 使用renderjs直接操作window对象,实现动态控制app和h5的bounce +// bounce: iOS橡皮筋,Android半月弧,h5浏览器下拉背景等效果 (下拉刷新时禁止) +// https://uniapp.dcloud.io/frame?id=renderjs + +// 与wxs的me实例一致 +var me = {} + +// 初始化window对象的touch事件 (仅初始化一次) +if(window && !window.$mescrollRenderInit){ + window.$mescrollRenderInit = true + + + window.addEventListener('touchstart', function(e){ + if (me.disabled()) return; + me.startPoint = me.getPoint(e); // 记录起点 + }, {passive: true}) + + + window.addEventListener('touchmove', function(e){ + if (me.disabled()) return; + if (me.getScrollTop() > 0) return; // 需在顶部下拉,才禁止bounce + + var curPoint = me.getPoint(e); // 当前点 + var moveY = curPoint.y - me.startPoint.y; // 和起点比,移动的距离,大于0向下拉,小于0向上拉 + // 向下拉 + if (moveY > 0) { + // 可下拉的条件 + if (!me.isDownScrolling && !me.optDown.isLock && (!me.isUpScrolling || (me.isUpScrolling && me.isUpBoth))) { + + // 只有touch在mescroll的view上面,才禁止bounce + var el = e.target; + var isMescrollTouch = false; + while (el && el.tagName && el.tagName !== 'UNI-PAGE-BODY' && el.tagName != "BODY") { + var cls = el.classList; + if (cls && cls.contains('mescroll-render-touch')) { + isMescrollTouch = true + break; + } + el = el.parentNode; // 继续检查其父元素 + } + // 禁止bounce (不会对swiper和iOS侧滑返回造成影响) + if (isMescrollTouch && e.cancelable && !e.defaultPrevented) e.preventDefault(); + } + } + }, {passive: false}) +} + +/* 获取滚动条的位置 */ +me.getScrollTop = function() { + return me.scrollTop || document.documentElement.scrollTop || document.body.scrollTop || 0 +} + +/* 是否禁用下拉刷新 */ +me.disabled = function(){ + return !me.optDown || !me.optDown.use || me.optDown.native +} + +/* 根据点击滑动事件获取第一个手指的坐标 */ +me.getPoint = function(e) { + if (!e) { + return {x: 0,y: 0} + } + if (e.touches && e.touches[0]) { + return {x: e.touches[0].pageX,y: e.touches[0].pageY} + } else if (e.changedTouches && e.changedTouches[0]) { + return {x: e.changedTouches[0].pageX,y: e.changedTouches[0].pageY} + } else { + return {x: e.clientX,y: e.clientY} + } +} + +/** + * 监听逻辑层数据的变化 (实时更新数据) + */ +function propObserver(wxsProp) { + me.optDown = wxsProp.optDown + me.scrollTop = wxsProp.scrollTop + me.isDownScrolling = wxsProp.isDownScrolling + me.isUpScrolling = wxsProp.isUpScrolling + me.isUpBoth = wxsProp.isUpBoth +} + +/* 导出模块 */ +const renderBiz = { + data() { + return { + propObserver: propObserver, + } + } +} + +export default renderBiz; \ No newline at end of file diff --git a/uni_modules/mescroll-uni/components/mescroll-uni/wxs/wxs.wxs b/uni_modules/mescroll-uni/components/mescroll-uni/wxs/wxs.wxs new file mode 100644 index 0000000..4af4201 --- /dev/null +++ b/uni_modules/mescroll-uni/components/mescroll-uni/wxs/wxs.wxs @@ -0,0 +1,269 @@ +// 使用wxs处理交互动画, 提高性能, 同时避免小程序bounce对下拉刷新的影响 +// https://uniapp.dcloud.io/frame?id=wxs +// https://developers.weixin.qq.com/miniprogram/dev/framework/view/interactive-animation.html + +// 模拟mescroll实例, 与mescroll.js的写法尽量保持一致 +var me = {} + +// ------ 自定义下拉刷新动画 start ------ + +/* 下拉过程中的回调,滑动过程一直在执行 (rate<1为inOffset; rate>1为outOffset) */ +me.onMoving = function (ins, rate, downHight){ + ins.requestAnimationFrame(function () { + ins.selectComponent('.mescroll-wxs-content').setStyle({ + 'will-change': 'transform', // 可解决下拉过程中, image和swiper脱离文档流的问题 + 'transform': 'translateY(' + downHight + 'px)', + 'transition': '' + }) + // 环形进度条 + var progress = ins.selectComponent('.mescroll-wxs-progress') + progress && progress.setStyle({transform: 'rotate(' + 360 * rate + 'deg)'}) + }) +} + +/* 显示下拉刷新进度 */ +me.showLoading = function (ins){ + me.downHight = me.optDown.offset + ins.requestAnimationFrame(function () { + ins.selectComponent('.mescroll-wxs-content').setStyle({ + 'will-change': 'auto', + 'transform': 'translateY(' + me.downHight + 'px)', + 'transition': 'transform 300ms' + }) + }) +} + +/* 结束下拉 */ +me.endDownScroll = function (ins){ + me.downHight = 0; + me.isDownScrolling = false; + ins.requestAnimationFrame(function () { + ins.selectComponent('.mescroll-wxs-content').setStyle({ + 'will-change': 'auto', + 'transform': 'translateY(0)', // 不可以写空串,否则scroll-view渲染不完整 (延时350ms会调clearTransform置空) + 'transition': 'transform 300ms' + }) + }) +} + +/* 结束下拉动画执行完毕后, 清除transform和transition, 避免对列表内容样式造成影响, 如: h5的list-msg示例下拉进度条漏出来等 */ +me.clearTransform = function (ins){ + ins.requestAnimationFrame(function () { + ins.selectComponent('.mescroll-wxs-content').setStyle({ + 'will-change': '', + 'transform': '', + 'transition': '' + }) + }) +} + +// ------ 自定义下拉刷新动画 end ------ + +/** + * 监听逻辑层数据的变化 (实时更新数据) + */ +function propObserver(wxsProp) { + if(!wxsProp) return + me.optDown = wxsProp.optDown + me.scrollTop = wxsProp.scrollTop + me.bodyHeight = wxsProp.bodyHeight + me.isDownScrolling = wxsProp.isDownScrolling + me.isUpScrolling = wxsProp.isUpScrolling + me.isUpBoth = wxsProp.isUpBoth + me.isScrollBody = wxsProp.isScrollBody + me.startTop = wxsProp.scrollTop // 及时更新touchstart触发的startTop, 避免scroll-view快速惯性滚动到顶部取值不准确 +} + +/** + * 监听逻辑层数据的变化 (调用wxs的方法) + */ +function callObserver(callProp, oldValue, ins) { + if (me.disabled()) return; + if(callProp.callType){ + // 逻辑层(App Service)的style已失效,需在视图层(Webview)设置style + if(callProp.callType === 'showLoading'){ + me.showLoading(ins) + }else if(callProp.callType === 'endDownScroll'){ + me.endDownScroll(ins) + }else if(callProp.callType === 'clearTransform'){ + me.clearTransform(ins) + } + } +} + +/** + * touch事件 + */ +function touchstartEvent(e, ins) { + me.downHight = 0; // 下拉的距离 + me.startPoint = me.getPoint(e); // 记录起点 + me.startTop = me.getScrollTop(); // 记录此时的滚动条位置 + me.startAngle = 0; // 初始角度 + me.lastPoint = me.startPoint; // 重置上次move的点 + me.maxTouchmoveY = me.getBodyHeight() - me.optDown.bottomOffset; // 手指触摸的最大范围(写在touchstart避免body获取高度为0的情况) + me.inTouchend = false; // 标记不是touchend + + me.callMethod(ins, {type: 'setWxsProp'}) // 同步更新wxsProp的数据 (小程序是异步的,可能touchmove先执行,才到propObserver; h5和app是同步) +} + +function touchmoveEvent(e, ins) { + var isPrevent = true // false表示不往上冒泡,相当于调用了同时调用了stopPropagation和preventDefault (对小程序生效, h5和app无效) + + if (me.disabled()) return isPrevent; + + var scrollTop = me.getScrollTop(); // 当前滚动条的距离 + var curPoint = me.getPoint(e); // 当前点 + + var moveY = curPoint.y - me.startPoint.y; // 和起点比,移动的距离,大于0向下拉,小于0向上拉 + + // 向下拉 && 在顶部 + // mescroll-body,直接判定在顶部即可 + // scroll-view在滚动时不会触发touchmove,当触顶/底/左/右时,才会触发touchmove + // scroll-view滚动到顶部时,scrollTop不一定为0,也有可能大于0; 在iOS的APP中scrollTop可能为负数,不一定和startTop相等 + if (moveY > 0 && ( + (me.isScrollBody && scrollTop <= 0) + || + (!me.isScrollBody && (scrollTop <= 0 || (scrollTop <= me.optDown.startTop && scrollTop === me.startTop)) ) + )) { + // 可下拉的条件 + if (!me.inTouchend && !me.isDownScrolling && !me.optDown.isLock && (!me.isUpScrolling || (me.isUpScrolling && + me.isUpBoth))) { + + // 下拉的角度是否在配置的范围内 + if(!me.startAngle) me.startAngle = me.getAngle(me.lastPoint, curPoint); // 两点之间的角度,区间 [0,90] + if (me.startAngle < me.optDown.minAngle) return isPrevent; // 如果小于配置的角度,则不往下执行下拉刷新 + + // 如果手指的位置超过配置的距离,则提前结束下拉,避免Webview嵌套导致touchend无法触发 + if (me.maxTouchmoveY > 0 && curPoint.y >= me.maxTouchmoveY) { + me.inTouchend = true; // 标记执行touchend + touchendEvent(e, ins); // 提前触发touchend + return isPrevent; + } + + isPrevent = false // 小程序是return false + + var diff = curPoint.y - me.lastPoint.y; // 和上次比,移动的距离 (大于0向下,小于0向上) + + // 下拉距离 < 指定距离 + if (me.downHight < me.optDown.offset) { + if (me.movetype !== 1) { + me.movetype = 1; // 加入标记,保证只执行一次 + // me.optDown.inOffset && me.optDown.inOffset(me); // 进入指定距离范围内那一刻的回调,只执行一次 + me.callMethod(ins, {type: 'setLoadType', downLoadType: 1}) + me.isMoveDown = true; // 标记下拉区域高度改变,在touchend重置回来 + } + me.downHight += diff * me.optDown.inOffsetRate; // 越往下,高度变化越小 + + // 指定距离 <= 下拉距离 + } else { + if (me.movetype !== 2) { + me.movetype = 2; // 加入标记,保证只执行一次 + // me.optDown.outOffset && me.optDown.outOffset(me); // 下拉超过指定距离那一刻的回调,只执行一次 + me.callMethod(ins, {type: 'setLoadType', downLoadType: 2}) + me.isMoveDown = true; // 标记下拉区域高度改变,在touchend重置回来 + } + if (diff > 0) { // 向下拉 + me.downHight += diff * me.optDown.outOffsetRate; // 越往下,高度变化越小 + } else { // 向上收 + me.downHight += diff; // 向上收回高度,则向上滑多少收多少高度 + } + } + + me.downHight = Math.round(me.downHight) // 取整 + var rate = me.downHight / me.optDown.offset; // 下拉区域当前高度与指定距离的比值 + // me.optDown.onMoving && me.optDown.onMoving(me, rate, me.downHight); // 下拉过程中的回调,一直在执行 + me.onMoving(ins, rate, me.downHight) + } + } + + me.lastPoint = curPoint; // 记录本次移动的点 + + return isPrevent // false表示不往上冒泡,相当于调用了同时调用了stopPropagation和preventDefault (对小程序生效, h5和app无效) +} + +function touchendEvent(e, ins) { + // 如果下拉区域高度已改变,则需重置回来 + if (me.isMoveDown) { + if (me.downHight >= me.optDown.offset) { + // 符合触发刷新的条件 + me.downHight = me.optDown.offset; // 更新下拉区域高度 + // me.triggerDownScroll(); + me.callMethod(ins, {type: 'triggerDownScroll'}) + } else { + // 不符合的话 则重置 + me.downHight = 0; + // me.optDown.endDownScroll && me.optDown.endDownScroll(me); + me.callMethod(ins, {type: 'endDownScroll'}) + } + me.movetype = 0; + me.isMoveDown = false; + } else if (!me.isScrollBody && me.getScrollTop() === me.startTop) { // scroll-view到顶/左/右/底的滑动事件 + var isScrollUp = me.getPoint(e).y - me.startPoint.y < 0; // 和起点比,移动的距离,大于0向下拉,小于0向上拉 + // 上滑 + if (isScrollUp) { + // 需检查滑动的角度 + var angle = me.getAngle(me.getPoint(e), me.startPoint); // 两点之间的角度,区间 [0,90] + if (angle > 80) { + // 检查并触发上拉 + // me.triggerUpScroll(true); + me.callMethod(ins, {type: 'triggerUpScroll'}) + } + } + } + me.callMethod(ins, {type: 'setWxsProp'}) // 同步更新wxsProp的数据 (小程序是异步的,可能touchmove先执行,才到propObserver; h5和app是同步) +} + +/* 是否禁用下拉刷新 */ +me.disabled = function(){ + return !me.optDown || !me.optDown.use || me.optDown.native +} + +/* 根据点击滑动事件获取第一个手指的坐标 */ +me.getPoint = function(e) { + if (!e) { + return {x: 0,y: 0} + } + if (e.touches && e.touches[0]) { + return {x: e.touches[0].pageX,y: e.touches[0].pageY} + } else if (e.changedTouches && e.changedTouches[0]) { + return {x: e.changedTouches[0].pageX,y: e.changedTouches[0].pageY} + } else { + return {x: e.clientX,y: e.clientY} + } +} + +/* 计算两点之间的角度: 区间 [0,90]*/ +me.getAngle = function (p1, p2) { + var x = Math.abs(p1.x - p2.x); + var y = Math.abs(p1.y - p2.y); + var z = Math.sqrt(x * x + y * y); + var angle = 0; + if (z !== 0) { + angle = Math.asin(y / z) / Math.PI * 180; + } + return angle +} + +/* 获取滚动条的位置 */ +me.getScrollTop = function() { + return me.scrollTop || 0 +} + +/* 获取body的高度 */ +me.getBodyHeight = function() { + return me.bodyHeight || 0; +} + +/* 调用逻辑层的方法 */ +me.callMethod = function(ins, param) { + if(ins) ins.callMethod('wxsCall', param) +} + +/* 导出模块 */ +module.exports = { + propObserver: propObserver, + callObserver: callObserver, + touchstartEvent: touchstartEvent, + touchmoveEvent: touchmoveEvent, + touchendEvent: touchendEvent +} \ No newline at end of file diff --git a/uni_modules/mescroll-uni/hooks/useMescroll.js b/uni_modules/mescroll-uni/hooks/useMescroll.js new file mode 100644 index 0000000..ef91cd1 --- /dev/null +++ b/uni_modules/mescroll-uni/hooks/useMescroll.js @@ -0,0 +1,66 @@ +// 小程序无法在hook中使用页面级别生命周期,需单独传入: https://ask.dcloud.net.cn/question/161173 +// import { onPageScroll, onReachBottom, onPullDownRefresh} from '@dcloudio/uni-app'; + +/** + * 初始化mescroll, 相当于vue2的mescroll-mixins.js文件 (mescroll-body 和 mescroll-uni 通用) + * mescroll-body需传入onPageScroll, onReachBottom + * mescroll-uni无需传onPageScroll, onReachBottom + * 当down.native为true时,需传入onPullDownRefresh + */ +function useMescroll(onPageScroll, onReachBottom, onPullDownRefresh){ + // mescroll实例对象 + let mescroll = null; + + // mescroll组件初始化的回调,可获取到mescroll对象 + const mescrollInit = (e)=> { + mescroll = e; + } + + // 获取mescroll对象, mescrollInit执行之后会有值, 生命周期created中会有值 + const getMescroll = ()=>{ + return mescroll + } + + // 下拉刷新的回调 (mixin默认resetUpScroll) + const downCallback = ()=> { + if(mescroll.optUp.use){ + mescroll.resetUpScroll() + }else{ + setTimeout(()=>{ + mescroll.endSuccess(); + }, 500) + } + } + + // 上拉加载的回调 + const upCallback = ()=> { + // mixin默认延时500自动结束加载 + setTimeout(()=>{ + mescroll.endErr(); + }, 500) + } + + // 注册系统自带的下拉刷新 (配置down.native为true时生效, 还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例) + onPullDownRefresh && onPullDownRefresh(() => { + mescroll && mescroll.onPullDownRefresh(); + }) + + // 注册列表滚动事件,用于判定在顶部可下拉刷新,在指定位置可显示隐藏回到顶部按钮 (此方法为页面生命周期,无法在子组件中触发, 仅在mescroll-body生效) + onPageScroll && onPageScroll(e=>{ + mescroll && mescroll.onPageScroll(e); + }) + + // 注册滚动到底部的事件,用于上拉加载 (此方法为页面生命周期,无法在子组件中触发, 仅在mescroll-body生效) + onReachBottom && onReachBottom(()=>{ + mescroll && mescroll.onReachBottom(); + }) + + return { + getMescroll, + mescrollInit, + downCallback, + upCallback + } +} + +export default useMescroll \ No newline at end of file diff --git a/uni_modules/mescroll-uni/hooks/useMescrollComp.js b/uni_modules/mescroll-uni/hooks/useMescrollComp.js new file mode 100644 index 0000000..3b83847 --- /dev/null +++ b/uni_modules/mescroll-uni/hooks/useMescrollComp.js @@ -0,0 +1,56 @@ +import { ref } from 'vue'; + +// 小程序无法在hook中使用页面级别生命周期,需单独传入: https://ask.dcloud.net.cn/question/161173 +// import { onPageScroll, onReachBottom, onPullDownRefresh} from '@dcloudio/uni-app'; + +/** + * mescroll-body写在子组件时,需通过useMescrollComp补充子组件缺少的生命周期, 相当于vue2的mescroll-comp.js文件 + * 必须传入onPageScroll, onReachBottom + * 当down.native为true时,需传入onPullDownRefresh + */ +function useMescrollComp(onPageScroll, onReachBottom, onPullDownRefresh){ + // 因为子组件无onPageScroll和onReachBottom的页面生命周期,需在页面传递进到子组件 + onPageScroll(e=>{ + handlePageScroll(e) + }) + + onReachBottom(()=>{ + handleReachBottom() + }) + + // 当down的native: true时, 还需传递此方法进到子组件 + onPullDownRefresh && onPullDownRefresh(()=>{ + handlePullDownRefresh() + }) + + const mescrollItem = ref(null) + + const handlePageScroll = (e)=>{ + const mescroll = getMescroll() + mescroll && mescroll.onPageScroll(e); + } + + const handleReachBottom = ()=>{ + const mescroll = getMescroll() + mescroll && mescroll.onReachBottom(); + } + + const handlePullDownRefresh = ()=>{ + const mescroll = getMescroll() + mescroll && mescroll.onPullDownRefresh(); + } + + const getMescroll = ()=>{ + if(mescrollItem.value && mescrollItem.value.getMescroll){ + return mescrollItem.value.getMescroll() + } + return null + } + + return { + mescrollItem, + getMescroll + } +} + +export default useMescrollComp \ No newline at end of file diff --git a/uni_modules/mescroll-uni/hooks/useMescrollMore.js b/uni_modules/mescroll-uni/hooks/useMescrollMore.js new file mode 100644 index 0000000..f9a3cd0 --- /dev/null +++ b/uni_modules/mescroll-uni/hooks/useMescrollMore.js @@ -0,0 +1,69 @@ +import { ref } from 'vue'; + +// 小程序无法在hook中使用页面级别生命周期,需单独传入: https://ask.dcloud.net.cn/question/161173 +// import { onPageScroll, onReachBottom, onPullDownRefresh} from '@dcloudio/uni-app'; + +/** mescroll-more示例写在子组件时,需通过useMescrollMore补充子组件缺少的生命周期, 相当于vue2的mescroll-more.js文件 */ +function useMescrollMore(mescrollItems, onPageScroll, onReachBottom, onPullDownRefresh){ + // 当前tab下标 + const tabIndex = ref(0) + + // 因为子组件无onPageScroll和onReachBottom的页面生命周期,需在页面传递进到子组件 + onPageScroll && onPageScroll(e=>{ + handlePageScroll(e) + }) + + onReachBottom && onReachBottom(()=>{ + handleReachBottom() + }) + + // 当down的native: true时, 还需传递此方法进到子组件 + onPullDownRefresh && onPullDownRefresh(()=>{ + handlePullDownRefresh() + }) + + const handlePageScroll = (e)=>{ + let mescroll = getMescroll(tabIndex.value); + mescroll && mescroll.onPageScroll(e); + } + const handleReachBottom = ()=>{ + let mescroll = getMescroll(tabIndex.value); + mescroll && mescroll.onReachBottom(); + } + + const handlePullDownRefresh = ()=>{ + let mescroll = getMescroll(tabIndex.value); + mescroll && mescroll.onPullDownRefresh(); + } + + // 根据下标获取对应子组件的mescroll + const getMescroll = (i)=>{ + if (mescrollItems && mescrollItems[i]) { + return mescrollItems[i].value.getMescroll() + } else{ + return null + } + } + + // 切换tab,恢复滚动条位置 + const scrollToLastY = ()=>{ + let mescroll = getMescroll(tabIndex.value); + if(mescroll){ + // 恢复上次滚动条的位置 + let y = mescroll.getScrollTop() + mescroll.scrollTo(y, 0) + // 再次恢复上次滚动条的位置, 确保元素已渲染 + setTimeout(()=>{ + mescroll.scrollTo(y, 0) + },20) + } + } + + return { + tabIndex, + getMescroll, + scrollToLastY + } +} + +export default useMescrollMore \ No newline at end of file diff --git a/uni_modules/mescroll-uni/package.json b/uni_modules/mescroll-uni/package.json new file mode 100644 index 0000000..ef37663 --- /dev/null +++ b/uni_modules/mescroll-uni/package.json @@ -0,0 +1,76 @@ +{ + "id": "mescroll-uni", + "displayName": "高性能下拉刷新上拉加载组件 支持vue3 setup", + "version": "1.3.8", + "description": "wxs+renderjs实现, 支持原生页面和局部区域滚动, 支持vue3 script setup的写法", + "keywords": [ + "下拉刷新", + "上拉加载", + "翻页分页", + "wxs", + "setup" +], + "repository": "https://github.com/mescroll/mescroll", +"engines": { + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/mescroll-uni", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/mescroll-uni/readme.md b/uni_modules/mescroll-uni/readme.md new file mode 100644 index 0000000..4bce178 --- /dev/null +++ b/uni_modules/mescroll-uni/readme.md @@ -0,0 +1,45 @@ +## mescroll --【wxs+renderjs实现】高性能的下拉刷新上拉加载组件 +1. mescroll的uni版本 是专门用在uni-app的下拉刷新和上拉加载的组件 + +2. mescroll的uni版本 继承了mescroll.js的实用功能: 自动处理分页, 自动控制无数据, 空布局提示, 回到顶部按钮 .. + +3. mescroll的uni版本 丰富的案例, 自由灵活的api, 超详细的注释, 可让您快速自定义真正属于自己的下拉上拉组件 + +
+ + +## 最新文档(1.3.8版本): https://www.mescroll.com/uni.html +2023-03-26 by 小瑾同学 (文档可能会有缓存,建议打开时刷新一下) + + +## 1.3.5版本已调整为[uni_modules](https://uniapp.dcloud.io/uni_modules) +uni_modules版本的mescroll-body 和 mescroll-empty 支持 [easycom规范](https://uniapp.dcloud.io/collocation/pages?id=easycom) +所以 main.js 无需再为mescroll-body注册全局组件 +所以个别页面要单独使用 mescroll-empty , 也无需手动注册 +#### 1.3.5以前的用户升级为uni_modules版本: +``` +1. 删除原来的 @/components/mescroll-uni 组件 +2. 删除 main.js 注册的 mescroll 组件 +3. 从插件市场导入最新mescroll组件 (1.3.5+uni_modules版本) +4. 全局搜索 '@/components/mescroll-uni/' 替换为 '@/uni_modules/mescroll-uni/components/mescroll-uni/' +5. mescroll-empty遵循easycom规范, 若某些页面单独使用 'mescroll-empty.vue', 可删除手动导入的代码 +``` + +## 近期已更新优化的内容: +1. 新增vue3 script setup的示例 +2. 新增`入门极简`示例, 国际化`mescroll-i18n.vue`示例, 轮播吸顶菜单`mescroll-swiper-sticky.vue`示例 +3. 新增 "局部区域滚动" 的案例: mescroll-body-part.vue 和 mescroll-uni-part.vue +4. 新增 me-video 视频组件, 解决APP端视频下拉悬浮错位的问题, 参考 mescroll-options.vue 示例 +5. 新增 me-tabs 组件,tabs支持水平滑动; 优化mescroll-more和mescroll-swiper的案例, 顶部tab支持水平滑动 +6. 吸顶悬浮提供了原生sticky和监听滚动条实现的示例: sticky.vue 和 sticky-scroll.vue (推荐使用sticky样式实现) +7. mescroll.scrollTo(y)的y支持css选择器, 包括跨自定义组件的后代选择器, 支持滚动到子组件的view (参考 mescroll-options.vue) +8. topbar 顶部是否预留状态栏的高度, 默认false; 还可支持设置状态栏背景: 如 '#ffff00', 'url(xxx) 0 0/100% 100%', 'linear-gradient(xx)' +9. down.bgColor 和 up.bgColor 加载区域的背景,不仅支持色值, 而且还是支持背景图和渐变: 如 'url(xxx) 0 0/100% 100%', 'linear-gradient(xx)' +10. topbar,bgColor支持一行代码定义background: [https://www.runoob.com/cssref/css3-pr-background.html](https://www.runoob.com/cssref/css3-pr-background.html) +
+
+查看更多 ... + +
+ +#### mescroll不支持nvue,也暂无支持的计划哈,so sorry~ \ No newline at end of file diff --git a/uni_modules/uni-icons/changelog.md b/uni_modules/uni-icons/changelog.md new file mode 100644 index 0000000..6449885 --- /dev/null +++ b/uni_modules/uni-icons/changelog.md @@ -0,0 +1,22 @@ +## 1.3.5(2022-01-24) +- 优化 size 属性可以传入不带单位的字符串数值 +## 1.3.4(2022-01-24) +- 优化 size 支持其他单位 +## 1.3.3(2022-01-17) +- 修复 nvue 有些图标不显示的bug,兼容老版本图标 +## 1.3.2(2021-12-01) +- 优化 示例可复制图标名称 +## 1.3.1(2021-11-23) +- 优化 兼容旧组件 type 值 +## 1.3.0(2021-11-19) +- 新增 更多图标 +- 优化 自定义图标使用方式 +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-icons](https://uniapp.dcloud.io/component/uniui/uni-icons) +## 1.1.7(2021-11-08) +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.5(2021-05-12) +- 新增 组件示例地址 +## 1.1.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-icons/components/uni-icons/icons.js b/uni_modules/uni-icons/components/uni-icons/icons.js new file mode 100644 index 0000000..7889936 --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/icons.js @@ -0,0 +1,1169 @@ +export default { + "id": "2852637", + "name": "uniui图标库", + "font_family": "uniicons", + "css_prefix_text": "uniui-", + "description": "", + "glyphs": [ + { + "icon_id": "25027049", + "name": "yanse", + "font_class": "color", + "unicode": "e6cf", + "unicode_decimal": 59087 + }, + { + "icon_id": "25027048", + "name": "wallet", + "font_class": "wallet", + "unicode": "e6b1", + "unicode_decimal": 59057 + }, + { + "icon_id": "25015720", + "name": "settings-filled", + "font_class": "settings-filled", + "unicode": "e6ce", + "unicode_decimal": 59086 + }, + { + "icon_id": "25015434", + "name": "shimingrenzheng-filled", + "font_class": "auth-filled", + "unicode": "e6cc", + "unicode_decimal": 59084 + }, + { + "icon_id": "24934246", + "name": "shop-filled", + "font_class": "shop-filled", + "unicode": "e6cd", + "unicode_decimal": 59085 + }, + { + "icon_id": "24934159", + "name": "staff-filled-01", + "font_class": "staff-filled", + "unicode": "e6cb", + "unicode_decimal": 59083 + }, + { + "icon_id": "24932461", + "name": "VIP-filled", + "font_class": "vip-filled", + "unicode": "e6c6", + "unicode_decimal": 59078 + }, + { + "icon_id": "24932462", + "name": "plus_circle_fill", + "font_class": "plus-filled", + "unicode": "e6c7", + "unicode_decimal": 59079 + }, + { + "icon_id": "24932463", + "name": "folder_add-filled", + "font_class": "folder-add-filled", + "unicode": "e6c8", + "unicode_decimal": 59080 + }, + { + "icon_id": "24932464", + "name": "yanse-filled", + "font_class": "color-filled", + "unicode": "e6c9", + "unicode_decimal": 59081 + }, + { + "icon_id": "24932465", + "name": "tune-filled", + "font_class": "tune-filled", + "unicode": "e6ca", + "unicode_decimal": 59082 + }, + { + "icon_id": "24932455", + "name": "a-rilidaka-filled", + "font_class": "calendar-filled", + "unicode": "e6c0", + "unicode_decimal": 59072 + }, + { + "icon_id": "24932456", + "name": "notification-filled", + "font_class": "notification-filled", + "unicode": "e6c1", + "unicode_decimal": 59073 + }, + { + "icon_id": "24932457", + "name": "wallet-filled", + "font_class": "wallet-filled", + "unicode": "e6c2", + "unicode_decimal": 59074 + }, + { + "icon_id": "24932458", + "name": "paihangbang-filled", + "font_class": "medal-filled", + "unicode": "e6c3", + "unicode_decimal": 59075 + }, + { + "icon_id": "24932459", + "name": "gift-filled", + "font_class": "gift-filled", + "unicode": "e6c4", + "unicode_decimal": 59076 + }, + { + "icon_id": "24932460", + "name": "fire-filled", + "font_class": "fire-filled", + "unicode": "e6c5", + "unicode_decimal": 59077 + }, + { + "icon_id": "24928001", + "name": "refreshempty", + "font_class": "refreshempty", + "unicode": "e6bf", + "unicode_decimal": 59071 + }, + { + "icon_id": "24926853", + "name": "location-ellipse", + "font_class": "location-filled", + "unicode": "e6af", + "unicode_decimal": 59055 + }, + { + "icon_id": "24926735", + "name": "person-filled", + "font_class": "person-filled", + "unicode": "e69d", + "unicode_decimal": 59037 + }, + { + "icon_id": "24926703", + "name": "personadd-filled", + "font_class": "personadd-filled", + "unicode": "e698", + "unicode_decimal": 59032 + }, + { + "icon_id": "24923351", + "name": "back", + "font_class": "back", + "unicode": "e6b9", + "unicode_decimal": 59065 + }, + { + "icon_id": "24923352", + "name": "forward", + "font_class": "forward", + "unicode": "e6ba", + "unicode_decimal": 59066 + }, + { + "icon_id": "24923353", + "name": "arrowthinright", + "font_class": "arrow-right", + "unicode": "e6bb", + "unicode_decimal": 59067 + }, + { + "icon_id": "24923353", + "name": "arrowthinright", + "font_class": "arrowthinright", + "unicode": "e6bb", + "unicode_decimal": 59067 + }, + { + "icon_id": "24923354", + "name": "arrowthinleft", + "font_class": "arrow-left", + "unicode": "e6bc", + "unicode_decimal": 59068 + }, + { + "icon_id": "24923354", + "name": "arrowthinleft", + "font_class": "arrowthinleft", + "unicode": "e6bc", + "unicode_decimal": 59068 + }, + { + "icon_id": "24923355", + "name": "arrowthinup", + "font_class": "arrow-up", + "unicode": "e6bd", + "unicode_decimal": 59069 + }, + { + "icon_id": "24923355", + "name": "arrowthinup", + "font_class": "arrowthinup", + "unicode": "e6bd", + "unicode_decimal": 59069 + }, + { + "icon_id": "24923356", + "name": "arrowthindown", + "font_class": "arrow-down", + "unicode": "e6be", + "unicode_decimal": 59070 + },{ + "icon_id": "24923356", + "name": "arrowthindown", + "font_class": "arrowthindown", + "unicode": "e6be", + "unicode_decimal": 59070 + }, + { + "icon_id": "24923349", + "name": "arrowdown", + "font_class": "bottom", + "unicode": "e6b8", + "unicode_decimal": 59064 + },{ + "icon_id": "24923349", + "name": "arrowdown", + "font_class": "arrowdown", + "unicode": "e6b8", + "unicode_decimal": 59064 + }, + { + "icon_id": "24923346", + "name": "arrowright", + "font_class": "right", + "unicode": "e6b5", + "unicode_decimal": 59061 + }, + { + "icon_id": "24923346", + "name": "arrowright", + "font_class": "arrowright", + "unicode": "e6b5", + "unicode_decimal": 59061 + }, + { + "icon_id": "24923347", + "name": "arrowup", + "font_class": "top", + "unicode": "e6b6", + "unicode_decimal": 59062 + }, + { + "icon_id": "24923347", + "name": "arrowup", + "font_class": "arrowup", + "unicode": "e6b6", + "unicode_decimal": 59062 + }, + { + "icon_id": "24923348", + "name": "arrowleft", + "font_class": "left", + "unicode": "e6b7", + "unicode_decimal": 59063 + }, + { + "icon_id": "24923348", + "name": "arrowleft", + "font_class": "arrowleft", + "unicode": "e6b7", + "unicode_decimal": 59063 + }, + { + "icon_id": "24923334", + "name": "eye", + "font_class": "eye", + "unicode": "e651", + "unicode_decimal": 58961 + }, + { + "icon_id": "24923335", + "name": "eye-filled", + "font_class": "eye-filled", + "unicode": "e66a", + "unicode_decimal": 58986 + }, + { + "icon_id": "24923336", + "name": "eye-slash", + "font_class": "eye-slash", + "unicode": "e6b3", + "unicode_decimal": 59059 + }, + { + "icon_id": "24923337", + "name": "eye-slash-filled", + "font_class": "eye-slash-filled", + "unicode": "e6b4", + "unicode_decimal": 59060 + }, + { + "icon_id": "24923305", + "name": "info-filled", + "font_class": "info-filled", + "unicode": "e649", + "unicode_decimal": 58953 + }, + { + "icon_id": "24923299", + "name": "reload-01", + "font_class": "reload", + "unicode": "e6b2", + "unicode_decimal": 59058 + }, + { + "icon_id": "24923195", + "name": "mic_slash_fill", + "font_class": "micoff-filled", + "unicode": "e6b0", + "unicode_decimal": 59056 + }, + { + "icon_id": "24923165", + "name": "map-pin-ellipse", + "font_class": "map-pin-ellipse", + "unicode": "e6ac", + "unicode_decimal": 59052 + }, + { + "icon_id": "24923166", + "name": "map-pin", + "font_class": "map-pin", + "unicode": "e6ad", + "unicode_decimal": 59053 + }, + { + "icon_id": "24923167", + "name": "location", + "font_class": "location", + "unicode": "e6ae", + "unicode_decimal": 59054 + }, + { + "icon_id": "24923064", + "name": "starhalf", + "font_class": "starhalf", + "unicode": "e683", + "unicode_decimal": 59011 + }, + { + "icon_id": "24923065", + "name": "star", + "font_class": "star", + "unicode": "e688", + "unicode_decimal": 59016 + }, + { + "icon_id": "24923066", + "name": "star-filled", + "font_class": "star-filled", + "unicode": "e68f", + "unicode_decimal": 59023 + }, + { + "icon_id": "24899646", + "name": "a-rilidaka", + "font_class": "calendar", + "unicode": "e6a0", + "unicode_decimal": 59040 + }, + { + "icon_id": "24899647", + "name": "fire", + "font_class": "fire", + "unicode": "e6a1", + "unicode_decimal": 59041 + }, + { + "icon_id": "24899648", + "name": "paihangbang", + "font_class": "medal", + "unicode": "e6a2", + "unicode_decimal": 59042 + }, + { + "icon_id": "24899649", + "name": "font", + "font_class": "font", + "unicode": "e6a3", + "unicode_decimal": 59043 + }, + { + "icon_id": "24899650", + "name": "gift", + "font_class": "gift", + "unicode": "e6a4", + "unicode_decimal": 59044 + }, + { + "icon_id": "24899651", + "name": "link", + "font_class": "link", + "unicode": "e6a5", + "unicode_decimal": 59045 + }, + { + "icon_id": "24899652", + "name": "notification", + "font_class": "notification", + "unicode": "e6a6", + "unicode_decimal": 59046 + }, + { + "icon_id": "24899653", + "name": "staff", + "font_class": "staff", + "unicode": "e6a7", + "unicode_decimal": 59047 + }, + { + "icon_id": "24899654", + "name": "VIP", + "font_class": "vip", + "unicode": "e6a8", + "unicode_decimal": 59048 + }, + { + "icon_id": "24899655", + "name": "folder_add", + "font_class": "folder-add", + "unicode": "e6a9", + "unicode_decimal": 59049 + }, + { + "icon_id": "24899656", + "name": "tune", + "font_class": "tune", + "unicode": "e6aa", + "unicode_decimal": 59050 + }, + { + "icon_id": "24899657", + "name": "shimingrenzheng", + "font_class": "auth", + "unicode": "e6ab", + "unicode_decimal": 59051 + }, + { + "icon_id": "24899565", + "name": "person", + "font_class": "person", + "unicode": "e699", + "unicode_decimal": 59033 + }, + { + "icon_id": "24899566", + "name": "email-filled", + "font_class": "email-filled", + "unicode": "e69a", + "unicode_decimal": 59034 + }, + { + "icon_id": "24899567", + "name": "phone-filled", + "font_class": "phone-filled", + "unicode": "e69b", + "unicode_decimal": 59035 + }, + { + "icon_id": "24899568", + "name": "phone", + "font_class": "phone", + "unicode": "e69c", + "unicode_decimal": 59036 + }, + { + "icon_id": "24899570", + "name": "email", + "font_class": "email", + "unicode": "e69e", + "unicode_decimal": 59038 + }, + { + "icon_id": "24899571", + "name": "personadd", + "font_class": "personadd", + "unicode": "e69f", + "unicode_decimal": 59039 + }, + { + "icon_id": "24899558", + "name": "chatboxes-filled", + "font_class": "chatboxes-filled", + "unicode": "e692", + "unicode_decimal": 59026 + }, + { + "icon_id": "24899559", + "name": "contact", + "font_class": "contact", + "unicode": "e693", + "unicode_decimal": 59027 + }, + { + "icon_id": "24899560", + "name": "chatbubble-filled", + "font_class": "chatbubble-filled", + "unicode": "e694", + "unicode_decimal": 59028 + }, + { + "icon_id": "24899561", + "name": "contact-filled", + "font_class": "contact-filled", + "unicode": "e695", + "unicode_decimal": 59029 + }, + { + "icon_id": "24899562", + "name": "chatboxes", + "font_class": "chatboxes", + "unicode": "e696", + "unicode_decimal": 59030 + }, + { + "icon_id": "24899563", + "name": "chatbubble", + "font_class": "chatbubble", + "unicode": "e697", + "unicode_decimal": 59031 + }, + { + "icon_id": "24881290", + "name": "upload-filled", + "font_class": "upload-filled", + "unicode": "e68e", + "unicode_decimal": 59022 + }, + { + "icon_id": "24881292", + "name": "upload", + "font_class": "upload", + "unicode": "e690", + "unicode_decimal": 59024 + }, + { + "icon_id": "24881293", + "name": "weixin", + "font_class": "weixin", + "unicode": "e691", + "unicode_decimal": 59025 + }, + { + "icon_id": "24881274", + "name": "compose", + "font_class": "compose", + "unicode": "e67f", + "unicode_decimal": 59007 + }, + { + "icon_id": "24881275", + "name": "qq", + "font_class": "qq", + "unicode": "e680", + "unicode_decimal": 59008 + }, + { + "icon_id": "24881276", + "name": "download-filled", + "font_class": "download-filled", + "unicode": "e681", + "unicode_decimal": 59009 + }, + { + "icon_id": "24881277", + "name": "pengyouquan", + "font_class": "pyq", + "unicode": "e682", + "unicode_decimal": 59010 + }, + { + "icon_id": "24881279", + "name": "sound", + "font_class": "sound", + "unicode": "e684", + "unicode_decimal": 59012 + }, + { + "icon_id": "24881280", + "name": "trash-filled", + "font_class": "trash-filled", + "unicode": "e685", + "unicode_decimal": 59013 + }, + { + "icon_id": "24881281", + "name": "sound-filled", + "font_class": "sound-filled", + "unicode": "e686", + "unicode_decimal": 59014 + }, + { + "icon_id": "24881282", + "name": "trash", + "font_class": "trash", + "unicode": "e687", + "unicode_decimal": 59015 + }, + { + "icon_id": "24881284", + "name": "videocam-filled", + "font_class": "videocam-filled", + "unicode": "e689", + "unicode_decimal": 59017 + }, + { + "icon_id": "24881285", + "name": "spinner-cycle", + "font_class": "spinner-cycle", + "unicode": "e68a", + "unicode_decimal": 59018 + }, + { + "icon_id": "24881286", + "name": "weibo", + "font_class": "weibo", + "unicode": "e68b", + "unicode_decimal": 59019 + }, + { + "icon_id": "24881288", + "name": "videocam", + "font_class": "videocam", + "unicode": "e68c", + "unicode_decimal": 59020 + }, + { + "icon_id": "24881289", + "name": "download", + "font_class": "download", + "unicode": "e68d", + "unicode_decimal": 59021 + }, + { + "icon_id": "24879601", + "name": "help", + "font_class": "help", + "unicode": "e679", + "unicode_decimal": 59001 + }, + { + "icon_id": "24879602", + "name": "navigate-filled", + "font_class": "navigate-filled", + "unicode": "e67a", + "unicode_decimal": 59002 + }, + { + "icon_id": "24879603", + "name": "plusempty", + "font_class": "plusempty", + "unicode": "e67b", + "unicode_decimal": 59003 + }, + { + "icon_id": "24879604", + "name": "smallcircle", + "font_class": "smallcircle", + "unicode": "e67c", + "unicode_decimal": 59004 + }, + { + "icon_id": "24879605", + "name": "minus-filled", + "font_class": "minus-filled", + "unicode": "e67d", + "unicode_decimal": 59005 + }, + { + "icon_id": "24879606", + "name": "micoff", + "font_class": "micoff", + "unicode": "e67e", + "unicode_decimal": 59006 + }, + { + "icon_id": "24879588", + "name": "closeempty", + "font_class": "closeempty", + "unicode": "e66c", + "unicode_decimal": 58988 + }, + { + "icon_id": "24879589", + "name": "clear", + "font_class": "clear", + "unicode": "e66d", + "unicode_decimal": 58989 + }, + { + "icon_id": "24879590", + "name": "navigate", + "font_class": "navigate", + "unicode": "e66e", + "unicode_decimal": 58990 + }, + { + "icon_id": "24879591", + "name": "minus", + "font_class": "minus", + "unicode": "e66f", + "unicode_decimal": 58991 + }, + { + "icon_id": "24879592", + "name": "image", + "font_class": "image", + "unicode": "e670", + "unicode_decimal": 58992 + }, + { + "icon_id": "24879593", + "name": "mic", + "font_class": "mic", + "unicode": "e671", + "unicode_decimal": 58993 + }, + { + "icon_id": "24879594", + "name": "paperplane", + "font_class": "paperplane", + "unicode": "e672", + "unicode_decimal": 58994 + }, + { + "icon_id": "24879595", + "name": "close", + "font_class": "close", + "unicode": "e673", + "unicode_decimal": 58995 + }, + { + "icon_id": "24879596", + "name": "help-filled", + "font_class": "help-filled", + "unicode": "e674", + "unicode_decimal": 58996 + }, + { + "icon_id": "24879597", + "name": "plus-filled", + "font_class": "paperplane-filled", + "unicode": "e675", + "unicode_decimal": 58997 + }, + { + "icon_id": "24879598", + "name": "plus", + "font_class": "plus", + "unicode": "e676", + "unicode_decimal": 58998 + }, + { + "icon_id": "24879599", + "name": "mic-filled", + "font_class": "mic-filled", + "unicode": "e677", + "unicode_decimal": 58999 + }, + { + "icon_id": "24879600", + "name": "image-filled", + "font_class": "image-filled", + "unicode": "e678", + "unicode_decimal": 59000 + }, + { + "icon_id": "24855900", + "name": "locked-filled", + "font_class": "locked-filled", + "unicode": "e668", + "unicode_decimal": 58984 + }, + { + "icon_id": "24855901", + "name": "info", + "font_class": "info", + "unicode": "e669", + "unicode_decimal": 58985 + }, + { + "icon_id": "24855903", + "name": "locked", + "font_class": "locked", + "unicode": "e66b", + "unicode_decimal": 58987 + }, + { + "icon_id": "24855884", + "name": "camera-filled", + "font_class": "camera-filled", + "unicode": "e658", + "unicode_decimal": 58968 + }, + { + "icon_id": "24855885", + "name": "chat-filled", + "font_class": "chat-filled", + "unicode": "e659", + "unicode_decimal": 58969 + }, + { + "icon_id": "24855886", + "name": "camera", + "font_class": "camera", + "unicode": "e65a", + "unicode_decimal": 58970 + }, + { + "icon_id": "24855887", + "name": "circle", + "font_class": "circle", + "unicode": "e65b", + "unicode_decimal": 58971 + }, + { + "icon_id": "24855888", + "name": "checkmarkempty", + "font_class": "checkmarkempty", + "unicode": "e65c", + "unicode_decimal": 58972 + }, + { + "icon_id": "24855889", + "name": "chat", + "font_class": "chat", + "unicode": "e65d", + "unicode_decimal": 58973 + }, + { + "icon_id": "24855890", + "name": "circle-filled", + "font_class": "circle-filled", + "unicode": "e65e", + "unicode_decimal": 58974 + }, + { + "icon_id": "24855891", + "name": "flag", + "font_class": "flag", + "unicode": "e65f", + "unicode_decimal": 58975 + }, + { + "icon_id": "24855892", + "name": "flag-filled", + "font_class": "flag-filled", + "unicode": "e660", + "unicode_decimal": 58976 + }, + { + "icon_id": "24855893", + "name": "gear-filled", + "font_class": "gear-filled", + "unicode": "e661", + "unicode_decimal": 58977 + }, + { + "icon_id": "24855894", + "name": "home", + "font_class": "home", + "unicode": "e662", + "unicode_decimal": 58978 + }, + { + "icon_id": "24855895", + "name": "home-filled", + "font_class": "home-filled", + "unicode": "e663", + "unicode_decimal": 58979 + }, + { + "icon_id": "24855896", + "name": "gear", + "font_class": "gear", + "unicode": "e664", + "unicode_decimal": 58980 + }, + { + "icon_id": "24855897", + "name": "smallcircle-filled", + "font_class": "smallcircle-filled", + "unicode": "e665", + "unicode_decimal": 58981 + }, + { + "icon_id": "24855898", + "name": "map-filled", + "font_class": "map-filled", + "unicode": "e666", + "unicode_decimal": 58982 + }, + { + "icon_id": "24855899", + "name": "map", + "font_class": "map", + "unicode": "e667", + "unicode_decimal": 58983 + }, + { + "icon_id": "24855825", + "name": "refresh-filled", + "font_class": "refresh-filled", + "unicode": "e656", + "unicode_decimal": 58966 + }, + { + "icon_id": "24855826", + "name": "refresh", + "font_class": "refresh", + "unicode": "e657", + "unicode_decimal": 58967 + }, + { + "icon_id": "24855808", + "name": "cloud-upload", + "font_class": "cloud-upload", + "unicode": "e645", + "unicode_decimal": 58949 + }, + { + "icon_id": "24855809", + "name": "cloud-download-filled", + "font_class": "cloud-download-filled", + "unicode": "e646", + "unicode_decimal": 58950 + }, + { + "icon_id": "24855810", + "name": "cloud-download", + "font_class": "cloud-download", + "unicode": "e647", + "unicode_decimal": 58951 + }, + { + "icon_id": "24855811", + "name": "cloud-upload-filled", + "font_class": "cloud-upload-filled", + "unicode": "e648", + "unicode_decimal": 58952 + }, + { + "icon_id": "24855813", + "name": "redo", + "font_class": "redo", + "unicode": "e64a", + "unicode_decimal": 58954 + }, + { + "icon_id": "24855814", + "name": "images-filled", + "font_class": "images-filled", + "unicode": "e64b", + "unicode_decimal": 58955 + }, + { + "icon_id": "24855815", + "name": "undo-filled", + "font_class": "undo-filled", + "unicode": "e64c", + "unicode_decimal": 58956 + }, + { + "icon_id": "24855816", + "name": "more", + "font_class": "more", + "unicode": "e64d", + "unicode_decimal": 58957 + }, + { + "icon_id": "24855817", + "name": "more-filled", + "font_class": "more-filled", + "unicode": "e64e", + "unicode_decimal": 58958 + }, + { + "icon_id": "24855818", + "name": "undo", + "font_class": "undo", + "unicode": "e64f", + "unicode_decimal": 58959 + }, + { + "icon_id": "24855819", + "name": "images", + "font_class": "images", + "unicode": "e650", + "unicode_decimal": 58960 + }, + { + "icon_id": "24855821", + "name": "paperclip", + "font_class": "paperclip", + "unicode": "e652", + "unicode_decimal": 58962 + }, + { + "icon_id": "24855822", + "name": "settings", + "font_class": "settings", + "unicode": "e653", + "unicode_decimal": 58963 + }, + { + "icon_id": "24855823", + "name": "search", + "font_class": "search", + "unicode": "e654", + "unicode_decimal": 58964 + }, + { + "icon_id": "24855824", + "name": "redo-filled", + "font_class": "redo-filled", + "unicode": "e655", + "unicode_decimal": 58965 + }, + { + "icon_id": "24841702", + "name": "list", + "font_class": "list", + "unicode": "e644", + "unicode_decimal": 58948 + }, + { + "icon_id": "24841489", + "name": "mail-open-filled", + "font_class": "mail-open-filled", + "unicode": "e63a", + "unicode_decimal": 58938 + }, + { + "icon_id": "24841491", + "name": "hand-thumbsdown-filled", + "font_class": "hand-down-filled", + "unicode": "e63c", + "unicode_decimal": 58940 + }, + { + "icon_id": "24841492", + "name": "hand-thumbsdown", + "font_class": "hand-down", + "unicode": "e63d", + "unicode_decimal": 58941 + }, + { + "icon_id": "24841493", + "name": "hand-thumbsup-filled", + "font_class": "hand-up-filled", + "unicode": "e63e", + "unicode_decimal": 58942 + }, + { + "icon_id": "24841494", + "name": "hand-thumbsup", + "font_class": "hand-up", + "unicode": "e63f", + "unicode_decimal": 58943 + }, + { + "icon_id": "24841496", + "name": "heart-filled", + "font_class": "heart-filled", + "unicode": "e641", + "unicode_decimal": 58945 + }, + { + "icon_id": "24841498", + "name": "mail-open", + "font_class": "mail-open", + "unicode": "e643", + "unicode_decimal": 58947 + }, + { + "icon_id": "24841488", + "name": "heart", + "font_class": "heart", + "unicode": "e639", + "unicode_decimal": 58937 + }, + { + "icon_id": "24839963", + "name": "loop", + "font_class": "loop", + "unicode": "e633", + "unicode_decimal": 58931 + }, + { + "icon_id": "24839866", + "name": "pulldown", + "font_class": "pulldown", + "unicode": "e632", + "unicode_decimal": 58930 + }, + { + "icon_id": "24813798", + "name": "scan", + "font_class": "scan", + "unicode": "e62a", + "unicode_decimal": 58922 + }, + { + "icon_id": "24813786", + "name": "bars", + "font_class": "bars", + "unicode": "e627", + "unicode_decimal": 58919 + }, + { + "icon_id": "24813788", + "name": "cart-filled", + "font_class": "cart-filled", + "unicode": "e629", + "unicode_decimal": 58921 + }, + { + "icon_id": "24813790", + "name": "checkbox", + "font_class": "checkbox", + "unicode": "e62b", + "unicode_decimal": 58923 + }, + { + "icon_id": "24813791", + "name": "checkbox-filled", + "font_class": "checkbox-filled", + "unicode": "e62c", + "unicode_decimal": 58924 + }, + { + "icon_id": "24813794", + "name": "shop", + "font_class": "shop", + "unicode": "e62f", + "unicode_decimal": 58927 + }, + { + "icon_id": "24813795", + "name": "headphones", + "font_class": "headphones", + "unicode": "e630", + "unicode_decimal": 58928 + }, + { + "icon_id": "24813796", + "name": "cart", + "font_class": "cart", + "unicode": "e631", + "unicode_decimal": 58929 + } + ] +} diff --git a/uni_modules/uni-icons/components/uni-icons/uni-icons.vue b/uni_modules/uni-icons/components/uni-icons/uni-icons.vue new file mode 100644 index 0000000..86e7444 --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/uni-icons.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/uni_modules/uni-icons/components/uni-icons/uni.ttf b/uni_modules/uni-icons/components/uni-icons/uni.ttf new file mode 100644 index 0000000..60a1968 Binary files /dev/null and b/uni_modules/uni-icons/components/uni-icons/uni.ttf differ diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons.css b/uni_modules/uni-icons/components/uni-icons/uniicons.css new file mode 100644 index 0000000..2f56eab --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/uniicons.css @@ -0,0 +1,663 @@ +.uniui-color:before { + content: "\e6cf"; +} + +.uniui-wallet:before { + content: "\e6b1"; +} + +.uniui-settings-filled:before { + content: "\e6ce"; +} + +.uniui-auth-filled:before { + content: "\e6cc"; +} + +.uniui-shop-filled:before { + content: "\e6cd"; +} + +.uniui-staff-filled:before { + content: "\e6cb"; +} + +.uniui-vip-filled:before { + content: "\e6c6"; +} + +.uniui-plus-filled:before { + content: "\e6c7"; +} + +.uniui-folder-add-filled:before { + content: "\e6c8"; +} + +.uniui-color-filled:before { + content: "\e6c9"; +} + +.uniui-tune-filled:before { + content: "\e6ca"; +} + +.uniui-calendar-filled:before { + content: "\e6c0"; +} + +.uniui-notification-filled:before { + content: "\e6c1"; +} + +.uniui-wallet-filled:before { + content: "\e6c2"; +} + +.uniui-medal-filled:before { + content: "\e6c3"; +} + +.uniui-gift-filled:before { + content: "\e6c4"; +} + +.uniui-fire-filled:before { + content: "\e6c5"; +} + +.uniui-refreshempty:before { + content: "\e6bf"; +} + +.uniui-location-filled:before { + content: "\e6af"; +} + +.uniui-person-filled:before { + content: "\e69d"; +} + +.uniui-personadd-filled:before { + content: "\e698"; +} + +.uniui-back:before { + content: "\e6b9"; +} + +.uniui-forward:before { + content: "\e6ba"; +} + +.uniui-arrow-right:before { + content: "\e6bb"; +} + +.uniui-arrowthinright:before { + content: "\e6bb"; +} + +.uniui-arrow-left:before { + content: "\e6bc"; +} + +.uniui-arrowthinleft:before { + content: "\e6bc"; +} + +.uniui-arrow-up:before { + content: "\e6bd"; +} + +.uniui-arrowthinup:before { + content: "\e6bd"; +} + +.uniui-arrow-down:before { + content: "\e6be"; +} + +.uniui-arrowthindown:before { + content: "\e6be"; +} + +.uniui-bottom:before { + content: "\e6b8"; +} + +.uniui-arrowdown:before { + content: "\e6b8"; +} + +.uniui-right:before { + content: "\e6b5"; +} + +.uniui-arrowright:before { + content: "\e6b5"; +} + +.uniui-top:before { + content: "\e6b6"; +} + +.uniui-arrowup:before { + content: "\e6b6"; +} + +.uniui-left:before { + content: "\e6b7"; +} + +.uniui-arrowleft:before { + content: "\e6b7"; +} + +.uniui-eye:before { + content: "\e651"; +} + +.uniui-eye-filled:before { + content: "\e66a"; +} + +.uniui-eye-slash:before { + content: "\e6b3"; +} + +.uniui-eye-slash-filled:before { + content: "\e6b4"; +} + +.uniui-info-filled:before { + content: "\e649"; +} + +.uniui-reload:before { + content: "\e6b2"; +} + +.uniui-micoff-filled:before { + content: "\e6b0"; +} + +.uniui-map-pin-ellipse:before { + content: "\e6ac"; +} + +.uniui-map-pin:before { + content: "\e6ad"; +} + +.uniui-location:before { + content: "\e6ae"; +} + +.uniui-starhalf:before { + content: "\e683"; +} + +.uniui-star:before { + content: "\e688"; +} + +.uniui-star-filled:before { + content: "\e68f"; +} + +.uniui-calendar:before { + content: "\e6a0"; +} + +.uniui-fire:before { + content: "\e6a1"; +} + +.uniui-medal:before { + content: "\e6a2"; +} + +.uniui-font:before { + content: "\e6a3"; +} + +.uniui-gift:before { + content: "\e6a4"; +} + +.uniui-link:before { + content: "\e6a5"; +} + +.uniui-notification:before { + content: "\e6a6"; +} + +.uniui-staff:before { + content: "\e6a7"; +} + +.uniui-vip:before { + content: "\e6a8"; +} + +.uniui-folder-add:before { + content: "\e6a9"; +} + +.uniui-tune:before { + content: "\e6aa"; +} + +.uniui-auth:before { + content: "\e6ab"; +} + +.uniui-person:before { + content: "\e699"; +} + +.uniui-email-filled:before { + content: "\e69a"; +} + +.uniui-phone-filled:before { + content: "\e69b"; +} + +.uniui-phone:before { + content: "\e69c"; +} + +.uniui-email:before { + content: "\e69e"; +} + +.uniui-personadd:before { + content: "\e69f"; +} + +.uniui-chatboxes-filled:before { + content: "\e692"; +} + +.uniui-contact:before { + content: "\e693"; +} + +.uniui-chatbubble-filled:before { + content: "\e694"; +} + +.uniui-contact-filled:before { + content: "\e695"; +} + +.uniui-chatboxes:before { + content: "\e696"; +} + +.uniui-chatbubble:before { + content: "\e697"; +} + +.uniui-upload-filled:before { + content: "\e68e"; +} + +.uniui-upload:before { + content: "\e690"; +} + +.uniui-weixin:before { + content: "\e691"; +} + +.uniui-compose:before { + content: "\e67f"; +} + +.uniui-qq:before { + content: "\e680"; +} + +.uniui-download-filled:before { + content: "\e681"; +} + +.uniui-pyq:before { + content: "\e682"; +} + +.uniui-sound:before { + content: "\e684"; +} + +.uniui-trash-filled:before { + content: "\e685"; +} + +.uniui-sound-filled:before { + content: "\e686"; +} + +.uniui-trash:before { + content: "\e687"; +} + +.uniui-videocam-filled:before { + content: "\e689"; +} + +.uniui-spinner-cycle:before { + content: "\e68a"; +} + +.uniui-weibo:before { + content: "\e68b"; +} + +.uniui-videocam:before { + content: "\e68c"; +} + +.uniui-download:before { + content: "\e68d"; +} + +.uniui-help:before { + content: "\e679"; +} + +.uniui-navigate-filled:before { + content: "\e67a"; +} + +.uniui-plusempty:before { + content: "\e67b"; +} + +.uniui-smallcircle:before { + content: "\e67c"; +} + +.uniui-minus-filled:before { + content: "\e67d"; +} + +.uniui-micoff:before { + content: "\e67e"; +} + +.uniui-closeempty:before { + content: "\e66c"; +} + +.uniui-clear:before { + content: "\e66d"; +} + +.uniui-navigate:before { + content: "\e66e"; +} + +.uniui-minus:before { + content: "\e66f"; +} + +.uniui-image:before { + content: "\e670"; +} + +.uniui-mic:before { + content: "\e671"; +} + +.uniui-paperplane:before { + content: "\e672"; +} + +.uniui-close:before { + content: "\e673"; +} + +.uniui-help-filled:before { + content: "\e674"; +} + +.uniui-paperplane-filled:before { + content: "\e675"; +} + +.uniui-plus:before { + content: "\e676"; +} + +.uniui-mic-filled:before { + content: "\e677"; +} + +.uniui-image-filled:before { + content: "\e678"; +} + +.uniui-locked-filled:before { + content: "\e668"; +} + +.uniui-info:before { + content: "\e669"; +} + +.uniui-locked:before { + content: "\e66b"; +} + +.uniui-camera-filled:before { + content: "\e658"; +} + +.uniui-chat-filled:before { + content: "\e659"; +} + +.uniui-camera:before { + content: "\e65a"; +} + +.uniui-circle:before { + content: "\e65b"; +} + +.uniui-checkmarkempty:before { + content: "\e65c"; +} + +.uniui-chat:before { + content: "\e65d"; +} + +.uniui-circle-filled:before { + content: "\e65e"; +} + +.uniui-flag:before { + content: "\e65f"; +} + +.uniui-flag-filled:before { + content: "\e660"; +} + +.uniui-gear-filled:before { + content: "\e661"; +} + +.uniui-home:before { + content: "\e662"; +} + +.uniui-home-filled:before { + content: "\e663"; +} + +.uniui-gear:before { + content: "\e664"; +} + +.uniui-smallcircle-filled:before { + content: "\e665"; +} + +.uniui-map-filled:before { + content: "\e666"; +} + +.uniui-map:before { + content: "\e667"; +} + +.uniui-refresh-filled:before { + content: "\e656"; +} + +.uniui-refresh:before { + content: "\e657"; +} + +.uniui-cloud-upload:before { + content: "\e645"; +} + +.uniui-cloud-download-filled:before { + content: "\e646"; +} + +.uniui-cloud-download:before { + content: "\e647"; +} + +.uniui-cloud-upload-filled:before { + content: "\e648"; +} + +.uniui-redo:before { + content: "\e64a"; +} + +.uniui-images-filled:before { + content: "\e64b"; +} + +.uniui-undo-filled:before { + content: "\e64c"; +} + +.uniui-more:before { + content: "\e64d"; +} + +.uniui-more-filled:before { + content: "\e64e"; +} + +.uniui-undo:before { + content: "\e64f"; +} + +.uniui-images:before { + content: "\e650"; +} + +.uniui-paperclip:before { + content: "\e652"; +} + +.uniui-settings:before { + content: "\e653"; +} + +.uniui-search:before { + content: "\e654"; +} + +.uniui-redo-filled:before { + content: "\e655"; +} + +.uniui-list:before { + content: "\e644"; +} + +.uniui-mail-open-filled:before { + content: "\e63a"; +} + +.uniui-hand-down-filled:before { + content: "\e63c"; +} + +.uniui-hand-down:before { + content: "\e63d"; +} + +.uniui-hand-up-filled:before { + content: "\e63e"; +} + +.uniui-hand-up:before { + content: "\e63f"; +} + +.uniui-heart-filled:before { + content: "\e641"; +} + +.uniui-mail-open:before { + content: "\e643"; +} + +.uniui-heart:before { + content: "\e639"; +} + +.uniui-loop:before { + content: "\e633"; +} + +.uniui-pulldown:before { + content: "\e632"; +} + +.uniui-scan:before { + content: "\e62a"; +} + +.uniui-bars:before { + content: "\e627"; +} + +.uniui-cart-filled:before { + content: "\e629"; +} + +.uniui-checkbox:before { + content: "\e62b"; +} + +.uniui-checkbox-filled:before { + content: "\e62c"; +} + +.uniui-shop:before { + content: "\e62f"; +} + +.uniui-headphones:before { + content: "\e630"; +} + +.uniui-cart:before { + content: "\e631"; +} diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons.ttf b/uni_modules/uni-icons/components/uni-icons/uniicons.ttf new file mode 100644 index 0000000..835f33b Binary files /dev/null and b/uni_modules/uni-icons/components/uni-icons/uniicons.ttf differ diff --git a/uni_modules/uni-icons/package.json b/uni_modules/uni-icons/package.json new file mode 100644 index 0000000..d1c4e77 --- /dev/null +++ b/uni_modules/uni-icons/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-icons", + "displayName": "uni-icons 图标", + "version": "1.3.5", + "description": "图标组件,用于展示移动端常见的图标,可自定义颜色、大小。", + "keywords": [ + "uni-ui", + "uniui", + "icon", + "图标" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.2.14" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-icons/readme.md b/uni_modules/uni-icons/readme.md new file mode 100644 index 0000000..86234ba --- /dev/null +++ b/uni_modules/uni-icons/readme.md @@ -0,0 +1,8 @@ +## Icons 图标 +> **组件名:uni-icons** +> 代码块: `uIcons` + +用于展示 icons 图标 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-icons) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-nav-bar/changelog.md b/uni_modules/uni-nav-bar/changelog.md new file mode 100644 index 0000000..0f9a2f1 --- /dev/null +++ b/uni_modules/uni-nav-bar/changelog.md @@ -0,0 +1,51 @@ +## 1.3.11(2023-03-29) +- 修复 自定义状态栏高度闪动BUG +## 1.3.10(2023-03-29) +- 修复 暗黑模式下边线颜色错误的bug +## 1.3.9(2022-10-13) +- 修复 条件编译错误的bug +## 1.3.8(2022-10-12) +- 修复 nvue 环境 fixed 为 true 的情况下,无法置顶的 bug +## 1.3.7(2022-08-11) +- 修复 nvue 环境下 fixed 为 true 的情况下,无法置顶的 bug +## 1.3.6(2022-06-30) +- 修复 组件示例中插槽用法无法显示内容的bug +## 1.3.5(2022-05-24) +- 新增 stat 属性 ,可开启统计title 上报 ,仅使用了title 属性且项目开启了uni统计生效 +## 1.3.4(2022-01-24) +- 更新 组件示例 +## 1.3.3(2022-01-24) +- 新增 left-width/right-width属性 ,可修改左右两侧的宽度 +## 1.3.2(2022-01-18) +- 修复 在vue下,标题不垂直居中的bug +## 1.3.1(2022-01-18) +- 修复 height 属性类型错误 +## 1.3.0(2022-01-18) +- 新增 height 属性,可修改组件高度 +- 新增 dark 属性可可开启暗黑模式 +- 优化 标题字数过多显示省略号 +- 优化 插槽,插入内容可完全覆盖 +## 1.2.1(2022-01-10) +- 修复 color 属性不生效的bug +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-nav-bar](https://uniapp.dcloud.io/component/uniui/uni-nav-bar) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.11(2021-05-12) +- 新增 组件示例地址 +## 1.0.10(2021-04-30) +- 修复 在nvue下fixed为true,宽度不能撑满的Bug +## 1.0.9(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.8(2021-04-14) +- uni-ui 修复 uni-nav-bar 当 fixed 属性为 true 时铺不满屏幕的 bug + +## 1.0.7(2021-02-25) +- 修复 easycom 下,找不到 uni-status-bar 的bug + +## 1.0.6(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue new file mode 100644 index 0000000..c890860 --- /dev/null +++ b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue @@ -0,0 +1,357 @@ + + + + + diff --git a/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue new file mode 100644 index 0000000..4ac73ae --- /dev/null +++ b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/uni_modules/uni-nav-bar/package.json b/uni_modules/uni-nav-bar/package.json new file mode 100644 index 0000000..240ae95 --- /dev/null +++ b/uni_modules/uni-nav-bar/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-nav-bar", + "displayName": "uni-nav-bar 自定义导航栏", + "version": "1.3.11", + "description": "自定义导航栏组件,主要用于头部导航。", + "keywords": [ + "uni-ui", + "导航", + "导航栏", + "自定义导航栏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-nav-bar/readme.md b/uni_modules/uni-nav-bar/readme.md new file mode 100644 index 0000000..3934b32 --- /dev/null +++ b/uni_modules/uni-nav-bar/readme.md @@ -0,0 +1,15 @@ + + +## NavBar 导航栏 +> **组件名:uni-nav-bar** +> 代码块: `uNavBar` + +导航栏组件,主要用于头部导航。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-nav-bar) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + + + diff --git a/uni_modules/uni-notice-bar/changelog.md b/uni_modules/uni-notice-bar/changelog.md new file mode 100644 index 0000000..348245e --- /dev/null +++ b/uni_modules/uni-notice-bar/changelog.md @@ -0,0 +1,11 @@ +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.9(2021-05-12) +- 新增 组件示例地址 +## 1.0.8(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.7(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.6(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue b/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue new file mode 100644 index 0000000..42797ea --- /dev/null +++ b/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue @@ -0,0 +1,487 @@ + + + + + diff --git a/uni_modules/uni-notice-bar/package.json b/uni_modules/uni-notice-bar/package.json new file mode 100644 index 0000000..6b2e26e --- /dev/null +++ b/uni_modules/uni-notice-bar/package.json @@ -0,0 +1,85 @@ +{ + "id": "uni-notice-bar", + "displayName": "uni-notice-bar 通告栏", + "version": "1.1.0", + "description": "NoticeBar 通告栏组件,常用于展示公告信息,可设为滚动公告", + "keywords": [ + "uni-ui", + "uniui", + "通告栏", + "公告", + "跑马灯" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} diff --git a/uni_modules/uni-notice-bar/readme.md b/uni_modules/uni-notice-bar/readme.md new file mode 100644 index 0000000..f65c578 --- /dev/null +++ b/uni_modules/uni-notice-bar/readme.md @@ -0,0 +1,71 @@ + + +## NoticeBar 通告栏 +> **组件名:uni-notice-bar** +> 代码块: `uNoticeBar` + + +通告栏组件 。 + +### 安装方式 + +本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。 + +如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55) + +### 基本用法 + +在 ``template`` 中使用组件 + +```html + + + + + + + + + + + + + + + +``` + +> **注意** +> 如果需要异步获取内容后展示需要使用`v-if`进行控制,`` + + +## NoticeBar API + +### NoticeBar Props + +|属性名 |类型 |默认值 |说明 | +|:-: |:-: |:-: |:-: | +|speed |Number |100 |文字滚动的速度,默认100px/秒 | +|text |String |- |显示文字 | +|background-color |String |#fffbe8|背景颜色 | +|color |String |#de8c17|文字颜色 | +|moreColor |String |#999999|查看更多文字的颜色 | +|moreText |String |- |设置“查看更多”的文本 | +|single |Boolean|false |是否单行 | +|scrollable |Boolean|false |是否滚动,为true时,NoticeBar为单行 | +|showIcon |Boolean|false |是否显示左侧喇叭图标 | +|showClose |Boolean|false |是否显示左侧关闭按钮 | +|showGetMore |Boolean|false |是否显示右侧查看更多图标,为true时,NoticeBar为单行| + +### NoticeBar Events + +|事件名称 |说明 |返回值 | +|:-: |:-: |:-: | +|@click |点击 NoticeBar 触发事件 |- | +|@close |关闭 NoticeBar 触发事件 |- | +|@getmore |点击”查看更多“时触发事件 |- | + + +## 组件示例 + +点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/notice-bar/notice-bar](https://hellouniapp.dcloud.net.cn/pages/extUI/notice-bar/notice-bar) \ No newline at end of file diff --git a/uni_modules/uni-number-box/changelog.md b/uni_modules/uni-number-box/changelog.md new file mode 100644 index 0000000..5925c32 --- /dev/null +++ b/uni_modules/uni-number-box/changelog.md @@ -0,0 +1,25 @@ +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-number-box](https://uniapp.dcloud.io/component/uniui/uni-number-box) +## 1.1.2(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.1.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-04-20) +- 修复 uni-number-box 浮点数运算不精确的 bug +- 修复 uni-number-box change 事件触发不正确的 bug +- 新增 uni-number-box v-model 双向绑定 +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 + +## 1.0.7(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持 v-model +- 新增 支持 focus、blur 事件 +- 新增 支持 PC 端 diff --git a/uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue b/uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue new file mode 100644 index 0000000..2046442 --- /dev/null +++ b/uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue @@ -0,0 +1,237 @@ + + + diff --git a/uni_modules/uni-number-box/package.json b/uni_modules/uni-number-box/package.json new file mode 100644 index 0000000..ad82336 --- /dev/null +++ b/uni_modules/uni-number-box/package.json @@ -0,0 +1,85 @@ +{ + "id": "uni-number-box", + "displayName": "uni-number-box 数字输入框", + "version": "1.2.1", + "description": "NumberBox 带加减按钮的数字输入框组件,用户可以控制每次点击增加的数值,支持小数。", + "keywords": [ + "uni-ui", + "uniui", + "数字输入框" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-number-box/readme.md b/uni_modules/uni-number-box/readme.md new file mode 100644 index 0000000..affc56f --- /dev/null +++ b/uni_modules/uni-number-box/readme.md @@ -0,0 +1,13 @@ + + +## NumberBox 数字输入框 +> **组件名:uni-number-box** +> 代码块: `uNumberBox` + + +带加减按钮的数字输入框。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-number-box) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-popup/changelog.md b/uni_modules/uni-popup/changelog.md new file mode 100644 index 0000000..a9e2d66 --- /dev/null +++ b/uni_modules/uni-popup/changelog.md @@ -0,0 +1,60 @@ +## 1.7.9(2022-04-02) +- 修复 弹出层内部无法滚动的bug +## 1.7.8(2022-03-28) +- 修复 小程序中高度错误的bug +## 1.7.7(2022-03-17) +- 修复 快速调用open出现问题的Bug +## 1.7.6(2022-02-14) +- 修复 safeArea 属性不能设置为false的bug +## 1.7.5(2022-01-19) +- 修复 isMaskClick 失效的bug +## 1.7.4(2022-01-19) +- 新增 cancelText \ confirmText 属性 ,可自定义文本 +- 新增 maskBackgroundColor 属性 ,可以修改蒙版颜色 +- 优化 maskClick属性 更新为 isMaskClick ,解决微信小程序警告的问题 +## 1.7.3(2022-01-13) +- 修复 设置 safeArea 属性不生效的bug +## 1.7.2(2021-11-26) +- 优化 组件示例 +## 1.7.1(2021-11-26) +- 修复 vuedoc 文字错误 +## 1.7.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-popup](https://uniapp.dcloud.io/component/uniui/uni-popup) +## 1.6.2(2021-08-24) +- 新增 支持国际化 +## 1.6.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.6.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.5.0(2021-06-23) +- 新增 mask-click 遮罩层点击事件 +## 1.4.5(2021-06-22) +- 修复 nvue 平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +## 1.4.4(2021-06-18) +- 修复 H5平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +## 1.4.3(2021-06-08) +- 修复 错误的 watch 字段 +- 修复 safeArea 属性不生效的问题 +- 修复 点击内容,再点击遮罩无法关闭的Bug +## 1.4.2(2021-05-12) +- 新增 组件示例地址 +## 1.4.1(2021-04-29) +- 修复 组件内放置 input 、textarea 组件,无法聚焦的问题 +## 1.4.0 (2021-04-29) +- 新增 type 属性的 left\right 值,支持左右弹出 +- 新增 open(String:type) 方法参数 ,可以省略 type 属性 ,直接传入类型打开指定弹窗 +- 新增 backgroundColor 属性,可定义主窗口背景色,默认不显示背景色 +- 新增 safeArea 属性,是否适配底部安全区 +- 修复 App\h5\微信小程序底部安全区占位不对的Bug +- 修复 App 端弹出等待的Bug +- 优化 提升低配设备性能,优化动画卡顿问题 +- 优化 更简单的组件自定义方式 +## 1.2.9(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.2.8(2021-02-05) +- 调整为uni_modules目录规范 +## 1.2.7(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持 PC 端 +- 新增 uni-popup-message 、uni-popup-dialog扩展组件支持 PC 端 diff --git a/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js b/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js new file mode 100644 index 0000000..6ef26a2 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + this.$once('hook:beforeDestroy', () => { + document.removeEventListener('keyup', listener) + }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue b/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue new file mode 100644 index 0000000..a5d0f2a --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue @@ -0,0 +1,271 @@ + + + + + diff --git a/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue b/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue new file mode 100644 index 0000000..91370a8 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue @@ -0,0 +1,143 @@ + + + + diff --git a/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue b/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue new file mode 100644 index 0000000..5be7624 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue @@ -0,0 +1,187 @@ + + + + diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/en.json b/uni_modules/uni-popup/components/uni-popup/i18n/en.json new file mode 100644 index 0000000..7f1bd06 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/en.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "cancel", + "uni-popup.ok": "ok", + "uni-popup.placeholder": "pleace enter", + "uni-popup.title": "Hint", + "uni-popup.shareTitle": "Share to" +} diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/index.js b/uni_modules/uni-popup/components/uni-popup/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json new file mode 100644 index 0000000..5e3003c --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "取消", + "uni-popup.ok": "确定", + "uni-popup.placeholder": "请输入", + "uni-popup.title": "提示", + "uni-popup.shareTitle": "分享到" +} diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json new file mode 100644 index 0000000..13e39eb --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "取消", + "uni-popup.ok": "確定", + "uni-popup.placeholder": "請輸入", + "uni-popup.title": "提示", + "uni-popup.shareTitle": "分享到" +} diff --git a/uni_modules/uni-popup/components/uni-popup/keypress.js b/uni_modules/uni-popup/components/uni-popup/keypress.js new file mode 100644 index 0000000..62dda46 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + // this.$once('hook:beforeDestroy', () => { + // document.removeEventListener('keyup', listener) + // }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-popup/components/uni-popup/popup.js b/uni_modules/uni-popup/components/uni-popup/popup.js new file mode 100644 index 0000000..c4e5781 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/popup.js @@ -0,0 +1,26 @@ + +export default { + data() { + return { + + } + }, + created(){ + this.popup = this.getParent() + }, + methods:{ + /** + * 获取父元素实例 + */ + getParent(name = 'uniPopup') { + let parent = this.$parent; + let parentName = parent.$options.name; + while (parentName !== name) { + parent = parent.$parent; + if (!parent) return false + parentName = parent.$options.name; + } + return parent; + }, + } +} diff --git a/uni_modules/uni-popup/components/uni-popup/uni-popup.vue b/uni_modules/uni-popup/components/uni-popup/uni-popup.vue new file mode 100644 index 0000000..79ed69c --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/uni-popup.vue @@ -0,0 +1,474 @@ + + + + diff --git a/uni_modules/uni-popup/package.json b/uni_modules/uni-popup/package.json new file mode 100644 index 0000000..069e9ce --- /dev/null +++ b/uni_modules/uni-popup/package.json @@ -0,0 +1,90 @@ +{ + "id": "uni-popup", + "displayName": "uni-popup 弹出层", + "version": "1.7.9", + "description": " Popup 组件,提供常用的弹层", + "keywords": [ + "uni-ui", + "弹出层", + "弹窗", + "popup", + "弹框" + ], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-transition" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-popup/readme.md b/uni_modules/uni-popup/readme.md new file mode 100644 index 0000000..fdad4b3 --- /dev/null +++ b/uni_modules/uni-popup/readme.md @@ -0,0 +1,17 @@ + + +## Popup 弹出层 +> **组件名:uni-popup** +> 代码块: `uPopup` +> 关联组件:`uni-transition` + + +弹出层组件,在应用中弹出一个消息提示窗口、提示框等 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-popup) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + + + diff --git a/uni_modules/uni-scss/changelog.md b/uni_modules/uni-scss/changelog.md new file mode 100644 index 0000000..b863bb0 --- /dev/null +++ b/uni_modules/uni-scss/changelog.md @@ -0,0 +1,8 @@ +## 1.0.3(2022-01-21) +- 优化 组件示例 +## 1.0.2(2021-11-22) +- 修复 / 符号在 vue 不同版本兼容问题引起的报错问题 +## 1.0.1(2021-11-22) +- 修复 vue3中scss语法兼容问题 +## 1.0.0(2021-11-18) +- init diff --git a/uni_modules/uni-scss/index.scss b/uni_modules/uni-scss/index.scss new file mode 100644 index 0000000..1744a5f --- /dev/null +++ b/uni_modules/uni-scss/index.scss @@ -0,0 +1 @@ +@import './styles/index.scss'; diff --git a/uni_modules/uni-scss/package.json b/uni_modules/uni-scss/package.json new file mode 100644 index 0000000..7cc0ccb --- /dev/null +++ b/uni_modules/uni-scss/package.json @@ -0,0 +1,82 @@ +{ + "id": "uni-scss", + "displayName": "uni-scss 辅助样式", + "version": "1.0.3", + "description": "uni-sass是uni-ui提供的一套全局样式 ,通过一些简单的类名和sass变量,实现简单的页面布局操作,比如颜色、边距、圆角等。", + "keywords": [ + "uni-scss", + "uni-ui", + "辅助样式" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "category": [ + "JS SDK", + "通用 SDK" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "n", + "联盟": "n" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-scss/readme.md b/uni_modules/uni-scss/readme.md new file mode 100644 index 0000000..b7d1c25 --- /dev/null +++ b/uni_modules/uni-scss/readme.md @@ -0,0 +1,4 @@ +`uni-sass` 是 `uni-ui`提供的一套全局样式 ,通过一些简单的类名和`sass`变量,实现简单的页面布局操作,比如颜色、边距、圆角等。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-sass) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/index.scss b/uni_modules/uni-scss/styles/index.scss new file mode 100644 index 0000000..ffac4fe --- /dev/null +++ b/uni_modules/uni-scss/styles/index.scss @@ -0,0 +1,7 @@ +@import './setting/_variables.scss'; +@import './setting/_border.scss'; +@import './setting/_color.scss'; +@import './setting/_space.scss'; +@import './setting/_radius.scss'; +@import './setting/_text.scss'; +@import './setting/_styles.scss'; diff --git a/uni_modules/uni-scss/styles/setting/_border.scss b/uni_modules/uni-scss/styles/setting/_border.scss new file mode 100644 index 0000000..12a11c3 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_border.scss @@ -0,0 +1,3 @@ +.uni-border { + border: 1px $uni-border-1 solid; +} \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/setting/_color.scss b/uni_modules/uni-scss/styles/setting/_color.scss new file mode 100644 index 0000000..1ededd9 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_color.scss @@ -0,0 +1,66 @@ + +// TODO 暂时不需要 class ,需要用户使用变量实现 ,如果使用类名其实并不推荐 +// @mixin get-styles($k,$c) { +// @if $k == size or $k == weight{ +// font-#{$k}:#{$c} +// }@else{ +// #{$k}:#{$c} +// } +// } +$uni-ui-color:( + // 主色 + primary: $uni-primary, + primary-disable: $uni-primary-disable, + primary-light: $uni-primary-light, + // 辅助色 + success: $uni-success, + success-disable: $uni-success-disable, + success-light: $uni-success-light, + warning: $uni-warning, + warning-disable: $uni-warning-disable, + warning-light: $uni-warning-light, + error: $uni-error, + error-disable: $uni-error-disable, + error-light: $uni-error-light, + info: $uni-info, + info-disable: $uni-info-disable, + info-light: $uni-info-light, + // 中性色 + main-color: $uni-main-color, + base-color: $uni-base-color, + secondary-color: $uni-secondary-color, + extra-color: $uni-extra-color, + // 背景色 + bg-color: $uni-bg-color, + // 边框颜色 + border-1: $uni-border-1, + border-2: $uni-border-2, + border-3: $uni-border-3, + border-4: $uni-border-4, + // 黑色 + black:$uni-black, + // 白色 + white:$uni-white, + // 透明 + transparent:$uni-transparent +) !default; +@each $key, $child in $uni-ui-color { + .uni-#{"" + $key} { + color: $child; + } + .uni-#{"" + $key}-bg { + background-color: $child; + } +} +.uni-shadow-sm { + box-shadow: $uni-shadow-sm; +} +.uni-shadow-base { + box-shadow: $uni-shadow-base; +} +.uni-shadow-lg { + box-shadow: $uni-shadow-lg; +} +.uni-mask { + background-color:$uni-mask; +} diff --git a/uni_modules/uni-scss/styles/setting/_radius.scss b/uni_modules/uni-scss/styles/setting/_radius.scss new file mode 100644 index 0000000..9a0428b --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_radius.scss @@ -0,0 +1,55 @@ +@mixin radius($r,$d:null ,$important: false){ + $radius-value:map-get($uni-radius, $r) if($important, !important, null); + // Key exists within the $uni-radius variable + @if (map-has-key($uni-radius, $r) and $d){ + @if $d == t { + border-top-left-radius:$radius-value; + border-top-right-radius:$radius-value; + }@else if $d == r { + border-top-right-radius:$radius-value; + border-bottom-right-radius:$radius-value; + }@else if $d == b { + border-bottom-left-radius:$radius-value; + border-bottom-right-radius:$radius-value; + }@else if $d == l { + border-top-left-radius:$radius-value; + border-bottom-left-radius:$radius-value; + }@else if $d == tl { + border-top-left-radius:$radius-value; + }@else if $d == tr { + border-top-right-radius:$radius-value; + }@else if $d == br { + border-bottom-right-radius:$radius-value; + }@else if $d == bl { + border-bottom-left-radius:$radius-value; + } + }@else{ + border-radius:$radius-value; + } +} + +@each $key, $child in $uni-radius { + @if($key){ + .uni-radius-#{"" + $key} { + @include radius($key) + } + }@else{ + .uni-radius { + @include radius($key) + } + } +} + +@each $direction in t, r, b, l,tl, tr, br, bl { + @each $key, $child in $uni-radius { + @if($key){ + .uni-radius-#{"" + $direction}-#{"" + $key} { + @include radius($key,$direction,false) + } + }@else{ + .uni-radius-#{$direction} { + @include radius($key,$direction,false) + } + } + } +} diff --git a/uni_modules/uni-scss/styles/setting/_space.scss b/uni_modules/uni-scss/styles/setting/_space.scss new file mode 100644 index 0000000..3c89528 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_space.scss @@ -0,0 +1,56 @@ + +@mixin fn($space,$direction,$size,$n) { + @if $n { + #{$space}-#{$direction}: #{$size*$uni-space-root}px + } @else { + #{$space}-#{$direction}: #{-$size*$uni-space-root}px + } +} +@mixin get-styles($direction,$i,$space,$n){ + @if $direction == t { + @include fn($space, top,$i,$n); + } + @if $direction == r { + @include fn($space, right,$i,$n); + } + @if $direction == b { + @include fn($space, bottom,$i,$n); + } + @if $direction == l { + @include fn($space, left,$i,$n); + } + @if $direction == x { + @include fn($space, left,$i,$n); + @include fn($space, right,$i,$n); + } + @if $direction == y { + @include fn($space, top,$i,$n); + @include fn($space, bottom,$i,$n); + } + @if $direction == a { + @if $n { + #{$space}:#{$i*$uni-space-root}px; + } @else { + #{$space}:#{-$i*$uni-space-root}px; + } + } +} + +@each $orientation in m,p { + $space: margin; + @if $orientation == m { + $space: margin; + } @else { + $space: padding; + } + @for $i from 0 through 16 { + @each $direction in t, r, b, l, x, y, a { + .uni-#{$orientation}#{$direction}-#{$i} { + @include get-styles($direction,$i,$space,true); + } + .uni-#{$orientation}#{$direction}-n#{$i} { + @include get-styles($direction,$i,$space,false); + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/setting/_styles.scss b/uni_modules/uni-scss/styles/setting/_styles.scss new file mode 100644 index 0000000..689afec --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_styles.scss @@ -0,0 +1,167 @@ +/* #ifndef APP-NVUE */ + +$-color-white:#fff; +$-color-black:#000; +@mixin base-style($color) { + color: #fff; + background-color: $color; + border-color: mix($-color-black, $color, 8%); + &:not([hover-class]):active { + background: mix($-color-black, $color, 10%); + border-color: mix($-color-black, $color, 20%); + color: $-color-white; + outline: none; + } +} +@mixin is-color($color) { + @include base-style($color); + &[loading] { + @include base-style($color); + &::before { + margin-right:5px; + } + } + &[disabled] { + &, + &[loading], + &:not([hover-class]):active { + color: $-color-white; + border-color: mix(darken($color,10%), $-color-white); + background-color: mix($color, $-color-white); + } + } + +} +@mixin base-plain-style($color) { + color:$color; + background-color: mix($-color-white, $color, 90%); + border-color: mix($-color-white, $color, 70%); + &:not([hover-class]):active { + background: mix($-color-white, $color, 80%); + color: $color; + outline: none; + border-color: mix($-color-white, $color, 50%); + } +} +@mixin is-plain($color){ + &[plain] { + @include base-plain-style($color); + &[loading] { + @include base-plain-style($color); + &::before { + margin-right:5px; + } + } + &[disabled] { + &, + &:active { + color: mix($-color-white, $color, 40%); + background-color: mix($-color-white, $color, 90%); + border-color: mix($-color-white, $color, 80%); + } + } + } +} + + +.uni-btn { + margin: 5px; + color: #393939; + border:1px solid #ccc; + font-size: 16px; + font-weight: 200; + background-color: #F9F9F9; + // TODO 暂时处理边框隐藏一边的问题 + overflow: visible; + &::after{ + border: none; + } + + &:not([type]),&[type=default] { + color: #999; + &[loading] { + background: none; + &::before { + margin-right:5px; + } + } + + + + &[disabled]{ + color: mix($-color-white, #999, 60%); + &, + &[loading], + &:active { + color: mix($-color-white, #999, 60%); + background-color: mix($-color-white,$-color-black , 98%); + border-color: mix($-color-white, #999, 85%); + } + } + + &[plain] { + color: #999; + background: none; + border-color: $uni-border-1; + &:not([hover-class]):active { + background: none; + color: mix($-color-white, $-color-black, 80%); + border-color: mix($-color-white, $-color-black, 90%); + outline: none; + } + &[disabled]{ + &, + &[loading], + &:active { + background: none; + color: mix($-color-white, #999, 60%); + border-color: mix($-color-white, #999, 85%); + } + } + } + } + + &:not([hover-class]):active { + color: mix($-color-white, $-color-black, 50%); + } + + &[size=mini] { + font-size: 16px; + font-weight: 200; + border-radius: 8px; + } + + + + &.uni-btn-small { + font-size: 14px; + } + &.uni-btn-mini { + font-size: 12px; + } + + &.uni-btn-radius { + border-radius: 999px; + } + &[type=primary] { + @include is-color($uni-primary); + @include is-plain($uni-primary) + } + &[type=success] { + @include is-color($uni-success); + @include is-plain($uni-success) + } + &[type=error] { + @include is-color($uni-error); + @include is-plain($uni-error) + } + &[type=warning] { + @include is-color($uni-warning); + @include is-plain($uni-warning) + } + &[type=info] { + @include is-color($uni-info); + @include is-plain($uni-info) + } +} +/* #endif */ diff --git a/uni_modules/uni-scss/styles/setting/_text.scss b/uni_modules/uni-scss/styles/setting/_text.scss new file mode 100644 index 0000000..a34d08f --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_text.scss @@ -0,0 +1,24 @@ +@mixin get-styles($k,$c) { + @if $k == size or $k == weight{ + font-#{$k}:#{$c} + }@else{ + #{$k}:#{$c} + } +} + +@each $key, $child in $uni-headings { + /* #ifndef APP-NVUE */ + .uni-#{$key} { + @each $k, $c in $child { + @include get-styles($k,$c) + } + } + /* #endif */ + /* #ifdef APP-NVUE */ + .container .uni-#{$key} { + @each $k, $c in $child { + @include get-styles($k,$c) + } + } + /* #endif */ +} diff --git a/uni_modules/uni-scss/styles/setting/_variables.scss b/uni_modules/uni-scss/styles/setting/_variables.scss new file mode 100644 index 0000000..557d3d7 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_variables.scss @@ -0,0 +1,146 @@ +// @use "sass:math"; +@import '../tools/functions.scss'; +// 间距基础倍数 +$uni-space-root: 2 !default; +// 边框半径默认值 +$uni-radius-root:5px !default; +$uni-radius: () !default; +// 边框半径断点 +$uni-radius: map-deep-merge( + ( + 0: 0, + // TODO 当前版本暂时不支持 sm 属性 + // 'sm': math.div($uni-radius-root, 2), + null: $uni-radius-root, + 'lg': $uni-radius-root * 2, + 'xl': $uni-radius-root * 6, + 'pill': 9999px, + 'circle': 50% + ), + $uni-radius +); +// 字体家族 +$body-font-family: 'Roboto', sans-serif !default; +// 文本 +$heading-font-family: $body-font-family !default; +$uni-headings: () !default; +$letterSpacing: -0.01562em; +$uni-headings: map-deep-merge( + ( + 'h1': ( + size: 32px, + weight: 300, + line-height: 50px, + // letter-spacing:-0.01562em + ), + 'h2': ( + size: 28px, + weight: 300, + line-height: 40px, + // letter-spacing: -0.00833em + ), + 'h3': ( + size: 24px, + weight: 400, + line-height: 32px, + // letter-spacing: normal + ), + 'h4': ( + size: 20px, + weight: 400, + line-height: 30px, + // letter-spacing: 0.00735em + ), + 'h5': ( + size: 16px, + weight: 400, + line-height: 24px, + // letter-spacing: normal + ), + 'h6': ( + size: 14px, + weight: 500, + line-height: 18px, + // letter-spacing: 0.0125em + ), + 'subtitle': ( + size: 12px, + weight: 400, + line-height: 20px, + // letter-spacing: 0.00937em + ), + 'body': ( + font-size: 14px, + font-weight: 400, + line-height: 22px, + // letter-spacing: 0.03125em + ), + 'caption': ( + 'size': 12px, + 'weight': 400, + 'line-height': 20px, + // 'letter-spacing': 0.03333em, + // 'text-transform': false + ) + ), + $uni-headings +); + + + +// 主色 +$uni-primary: #2979ff !default; +$uni-primary-disable:lighten($uni-primary,20%) !default; +$uni-primary-light: lighten($uni-primary,25%) !default; + +// 辅助色 +// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 +$uni-success: #18bc37 !default; +$uni-success-disable:lighten($uni-success,20%) !default; +$uni-success-light: lighten($uni-success,25%) !default; + +$uni-warning: #f3a73f !default; +$uni-warning-disable:lighten($uni-warning,20%) !default; +$uni-warning-light: lighten($uni-warning,25%) !default; + +$uni-error: #e43d33 !default; +$uni-error-disable:lighten($uni-error,20%) !default; +$uni-error-light: lighten($uni-error,25%) !default; + +$uni-info: #8f939c !default; +$uni-info-disable:lighten($uni-info,20%) !default; +$uni-info-light: lighten($uni-info,25%) !default; + +// 中性色 +// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 +$uni-main-color: #3a3a3a !default; // 主要文字 +$uni-base-color: #6a6a6a !default; // 常规文字 +$uni-secondary-color: #909399 !default; // 次要文字 +$uni-extra-color: #c7c7c7 !default; // 辅助说明 + +// 边框颜色 +$uni-border-1: #F0F0F0 !default; +$uni-border-2: #EDEDED !default; +$uni-border-3: #DCDCDC !default; +$uni-border-4: #B9B9B9 !default; + +// 常规色 +$uni-black: #000000 !default; +$uni-white: #ffffff !default; +$uni-transparent: rgba($color: #000000, $alpha: 0) !default; + +// 背景色 +$uni-bg-color: #f7f7f7 !default; + +/* 水平间距 */ +$uni-spacing-sm: 8px !default; +$uni-spacing-base: 15px !default; +$uni-spacing-lg: 30px !default; + +// 阴影 +$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5) !default; +$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2) !default; +$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5) !default; + +// 蒙版 +$uni-mask: rgba($color: #000000, $alpha: 0.4) !default; diff --git a/uni_modules/uni-scss/styles/tools/functions.scss b/uni_modules/uni-scss/styles/tools/functions.scss new file mode 100644 index 0000000..ac6f63e --- /dev/null +++ b/uni_modules/uni-scss/styles/tools/functions.scss @@ -0,0 +1,19 @@ +// 合并 map +@function map-deep-merge($parent-map, $child-map){ + $result: $parent-map; + @each $key, $child in $child-map { + $parent-has-key: map-has-key($result, $key); + $parent-value: map-get($result, $key); + $parent-type: type-of($parent-value); + $child-type: type-of($child); + $parent-is-map: $parent-type == map; + $child-is-map: $child-type == map; + + @if (not $parent-has-key) or ($parent-type != $child-type) or (not ($parent-is-map and $child-is-map)){ + $result: map-merge($result, ( $key: $child )); + }@else { + $result: map-merge($result, ( $key: map-deep-merge($parent-value, $child) )); + } + } + @return $result; +}; diff --git a/uni_modules/uni-scss/theme.scss b/uni_modules/uni-scss/theme.scss new file mode 100644 index 0000000..80ee62f --- /dev/null +++ b/uni_modules/uni-scss/theme.scss @@ -0,0 +1,31 @@ +// 间距基础倍数 +$uni-space-root: 2; +// 边框半径默认值 +$uni-radius-root:5px; +// 主色 +$uni-primary: #2979ff; +// 辅助色 +$uni-success: #4cd964; +// 警告色 +$uni-warning: #f0ad4e; +// 错误色 +$uni-error: #dd524d; +// 描述色 +$uni-info: #909399; +// 中性色 +$uni-main-color: #303133; +$uni-base-color: #606266; +$uni-secondary-color: #909399; +$uni-extra-color: #C0C4CC; +// 背景色 +$uni-bg-color: #f5f5f5; +// 边框颜色 +$uni-border-1: #DCDFE6; +$uni-border-2: #E4E7ED; +$uni-border-3: #EBEEF5; +$uni-border-4: #F2F6FC; + +// 常规色 +$uni-black: #000000; +$uni-white: #ffffff; +$uni-transparent: rgba($color: #000000, $alpha: 0); diff --git a/uni_modules/uni-scss/variables.scss b/uni_modules/uni-scss/variables.scss new file mode 100644 index 0000000..1c062d4 --- /dev/null +++ b/uni_modules/uni-scss/variables.scss @@ -0,0 +1,62 @@ +@import './styles/setting/_variables.scss'; +// 间距基础倍数 +$uni-space-root: 2; +// 边框半径默认值 +$uni-radius-root:5px; + +// 主色 +$uni-primary: #2979ff; +$uni-primary-disable:mix(#fff,$uni-primary,50%); +$uni-primary-light: mix(#fff,$uni-primary,80%); + +// 辅助色 +// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 +$uni-success: #18bc37; +$uni-success-disable:mix(#fff,$uni-success,50%); +$uni-success-light: mix(#fff,$uni-success,80%); + +$uni-warning: #f3a73f; +$uni-warning-disable:mix(#fff,$uni-warning,50%); +$uni-warning-light: mix(#fff,$uni-warning,80%); + +$uni-error: #e43d33; +$uni-error-disable:mix(#fff,$uni-error,50%); +$uni-error-light: mix(#fff,$uni-error,80%); + +$uni-info: #8f939c; +$uni-info-disable:mix(#fff,$uni-info,50%); +$uni-info-light: mix(#fff,$uni-info,80%); + +// 中性色 +// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 +$uni-main-color: #3a3a3a; // 主要文字 +$uni-base-color: #6a6a6a; // 常规文字 +$uni-secondary-color: #909399; // 次要文字 +$uni-extra-color: #c7c7c7; // 辅助说明 + +// 边框颜色 +$uni-border-1: #F0F0F0; +$uni-border-2: #EDEDED; +$uni-border-3: #DCDCDC; +$uni-border-4: #B9B9B9; + +// 常规色 +$uni-black: #000000; +$uni-white: #ffffff; +$uni-transparent: rgba($color: #000000, $alpha: 0); + +// 背景色 +$uni-bg-color: #f7f7f7; + +/* 水平间距 */ +$uni-spacing-sm: 8px; +$uni-spacing-base: 15px; +$uni-spacing-lg: 30px; + +// 阴影 +$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5); +$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2); +$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5); + +// 蒙版 +$uni-mask: rgba($color: #000000, $alpha: 0.4); diff --git a/uni_modules/uni-transition/changelog.md b/uni_modules/uni-transition/changelog.md new file mode 100644 index 0000000..b1a824b --- /dev/null +++ b/uni_modules/uni-transition/changelog.md @@ -0,0 +1,20 @@ +## 1.3.1(2021-11-23) +- 修复 init 方法初始化问题 +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-transition](https://uniapp.dcloud.io/component/uniui/uni-transition) +## 1.2.1(2021-09-27) +- 修复 init 方法不生效的 Bug +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.1(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的 Bug +## 1.1.0(2021-04-22) +- 新增 通过方法自定义动画 +- 新增 custom-class 非 NVUE 平台支持自定义 class 定制样式 +- 优化 动画触发逻辑,使动画更流畅 +- 优化 支持单独的动画类型 +- 优化 文档示例 +## 1.0.2(2021-02-05) +- 调整为 uni_modules 目录规范 diff --git a/uni_modules/uni-transition/components/uni-transition/createAnimation.js b/uni_modules/uni-transition/components/uni-transition/createAnimation.js new file mode 100644 index 0000000..5f54365 --- /dev/null +++ b/uni_modules/uni-transition/components/uni-transition/createAnimation.js @@ -0,0 +1,128 @@ +// const defaultOption = { +// duration: 300, +// timingFunction: 'linear', +// delay: 0, +// transformOrigin: '50% 50% 0' +// } +// #ifdef APP-NVUE +const nvueAnimation = uni.requireNativePlugin('animation') +// #endif +class MPAnimation { + constructor(options, _this) { + this.options = options + this.animation = uni.createAnimation(options) + this.currentStepAnimates = {} + this.next = 0 + this.$ = _this + + } + + _nvuePushAnimates(type, args) { + let aniObj = this.currentStepAnimates[this.next] + let styles = {} + if (!aniObj) { + styles = { + styles: {}, + config: {} + } + } else { + styles = aniObj + } + if (animateTypes1.includes(type)) { + if (!styles.styles.transform) { + styles.styles.transform = '' + } + let unit = '' + if(type === 'rotate'){ + unit = 'deg' + } + styles.styles.transform += `${type}(${args+unit}) ` + } else { + styles.styles[type] = `${args}` + } + this.currentStepAnimates[this.next] = styles + } + _animateRun(styles = {}, config = {}) { + let ref = this.$.$refs['ani'].ref + if (!ref) return + return new Promise((resolve, reject) => { + nvueAnimation.transition(ref, { + styles, + ...config + }, res => { + resolve() + }) + }) + } + + _nvueNextAnimate(animates, step = 0, fn) { + let obj = animates[step] + if (obj) { + let { + styles, + config + } = obj + this._animateRun(styles, config).then(() => { + step += 1 + this._nvueNextAnimate(animates, step, fn) + }) + } else { + this.currentStepAnimates = {} + typeof fn === 'function' && fn() + this.isEnd = true + } + } + + step(config = {}) { + // #ifndef APP-NVUE + this.animation.step(config) + // #endif + // #ifdef APP-NVUE + this.currentStepAnimates[this.next].config = Object.assign({}, this.options, config) + this.currentStepAnimates[this.next].styles.transformOrigin = this.currentStepAnimates[this.next].config.transformOrigin + this.next++ + // #endif + return this + } + + run(fn) { + // #ifndef APP-NVUE + this.$.animationData = this.animation.export() + this.$.timer = setTimeout(() => { + typeof fn === 'function' && fn() + }, this.$.durationTime) + // #endif + // #ifdef APP-NVUE + this.isEnd = false + let ref = this.$.$refs['ani'] && this.$.$refs['ani'].ref + if(!ref) return + this._nvueNextAnimate(this.currentStepAnimates, 0, fn) + this.next = 0 + // #endif + } +} + + +const animateTypes1 = ['matrix', 'matrix3d', 'rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scale3d', + 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'translate', 'translate3d', 'translateX', 'translateY', + 'translateZ' +] +const animateTypes2 = ['opacity', 'backgroundColor'] +const animateTypes3 = ['width', 'height', 'left', 'right', 'top', 'bottom'] +animateTypes1.concat(animateTypes2, animateTypes3).forEach(type => { + MPAnimation.prototype[type] = function(...args) { + // #ifndef APP-NVUE + this.animation[type](...args) + // #endif + // #ifdef APP-NVUE + this._nvuePushAnimates(type, args) + // #endif + return this + } +}) + +export function createAnimation(option, _this) { + if(!_this) return + clearTimeout(_this.timer) + return new MPAnimation(option, _this) +} diff --git a/uni_modules/uni-transition/components/uni-transition/uni-transition.vue b/uni_modules/uni-transition/components/uni-transition/uni-transition.vue new file mode 100644 index 0000000..0d739bd --- /dev/null +++ b/uni_modules/uni-transition/components/uni-transition/uni-transition.vue @@ -0,0 +1,277 @@ + + + + + diff --git a/uni_modules/uni-transition/package.json b/uni_modules/uni-transition/package.json new file mode 100644 index 0000000..d15fdf0 --- /dev/null +++ b/uni_modules/uni-transition/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-transition", + "displayName": "uni-transition 过渡动画", + "version": "1.3.1", + "description": "元素的简单过渡动画", + "keywords": [ + "uni-ui", + "uniui", + "动画", + "过渡", + "过渡动画" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-transition/readme.md b/uni_modules/uni-transition/readme.md new file mode 100644 index 0000000..2f8a77e --- /dev/null +++ b/uni_modules/uni-transition/readme.md @@ -0,0 +1,11 @@ + + +## Transition 过渡动画 +> **组件名:uni-transition** +> 代码块: `uTransition` + + +元素过渡动画 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-transition) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/v-tabs/changelog.md b/uni_modules/v-tabs/changelog.md new file mode 100644 index 0000000..4fd462a --- /dev/null +++ b/uni_modules/v-tabs/changelog.md @@ -0,0 +1,125 @@ +## 2.1.1(2022-09-16) +1. 将插件更新为`uni_modules`方式 +## 2.1.0(2022-08-12) + +1. 增加`disable`参数,控制是否可以点击,只能应用在数组对象中,见[disabled 的用法](#112-当tabs使用的数组对象的方式特定参数需要注意一下) + +```js +export default { + data() { + return { + tabs: [{ id: 1, name: '' }] + } + } +} +``` + +## 2.0.10(2022-01-27) + +1. 更新属性line-animation设置为false可以不要动画,这是好多朋友问到,特此加上 + +## 2.0.9(2020-10-12) + +1. 修复 v-tabs 第一次可能出现第一个标签显示不完整的情况 +2. 修改了 pages/tabs/order 示例文件 + +## 2.0.8(2020-09-21) + +1. 修复添加 fixed 属性后,滚动条无效 +2. 修复选项很少的情况下,下划线计算计算错误 +3. 新增 paddingItem 属性,设置选项左右边距(上下边距需要设置 height 属性,或者设置 padding 属性) + +## 2.0.7(2020-09-17) + +1. 紧急修复 bug,横向滑动不了的情况 + +## 2.0.6(2020-09-16) + +1. 新增 fixed 属性,是否固定在顶部,示例地址:pages/tabs/tabs-static +2. 优化之前的页面结构 + +## 2.0.5(2020-09-09) + +1. 修复 width 错误,dom 加载的时候没有及时获取到 data 属性导致的 。 + +## 2.0.4(2020-08-29) + +1. 优化异步改变 tabs 后,下划线不初始化问题 +2. github 地址上有图 2 的源码,需要的自行下载,页面路径:pages/tabs/order.vue + +## 2.0.3(2020-08-20) + +1. 优化 节点查询 和 选中渲染 +2. 优化支付宝中 createSelectorQuery() 的影响 + +**特别说明:** + +> 支付宝中平铺方法和其他方法不能在一个页面中出现,不然有一个显示错误(具体什么原因没查到,有好心的人发现了,望告知一下,感谢 + +## 2.0.2(2020-08-19) + +1. 优化 change 事件触发机制 + +## 2.0.1(2020-08-16) + +1. 修改默认高度为 70rpx +2. 新增属性 bgColor,可设置背景颜色,默认 #fff +3. 新增整个 tab 的 padding 属性,默认 0 + +## 2.0.0(2020-08-13) + +1. 全新的 v-tabs 2.0 +2. 支持 H5 小程序 APP +3. 属性高度可配置 + +## 1.3.2(2020-07-21) + +1. 新增 auto 的配置,是否平铺 tab +2. 修复文档上的错误示例(感谢 lushgwe@163.com 的反馈) + +## 1.3.0(2020-07-05) + +1. 新增 padding 的可配置 +2. 修复 v-model 双向绑定问题 +3. 修复初始化下划线没定位的为题 + +## 1.2.0(2020-06-19) + +1. 添加注释 +2. 修复 bug + +## 1.1.8(2020-06-11) + +1. 添加 change 事件 +2. 修复插件内容问题 +3. 修复下划线不居中问题 + +## 1.1.6(2020-06-11) + +1. 添加 change 事件 +2. 修复插件内容问题 + +## 1.1.4(2020-06-11) + +1. 添加 change 事件 +2. 修复插件内容问题 + +## 1.1.2(2020-06-11) + +1. 添加 change 事件 + +## 1.1.1(2020-06-09) + +1. 修复小程序端选中的下划线不显示问题 +2. 新增 tab 高度设置 +3. lineHeight 修改为只支持 String 方式 + +## 1.1.0(2020-06-09) + +1. 修复小程序端选中的下划线不显示问题 +2. 新增 tab 高度设置 +3. lineHeight 修改为只支持 String 方式 + +## 1.0.0(2020-06-04) + +1. 更新插件1.0.0 \ No newline at end of file diff --git a/uni_modules/v-tabs/components/v-tabs/v-tabs.vue b/uni_modules/v-tabs/components/v-tabs/v-tabs.vue new file mode 100644 index 0000000..a8dcc53 --- /dev/null +++ b/uni_modules/v-tabs/components/v-tabs/v-tabs.vue @@ -0,0 +1,353 @@ + + + + + diff --git a/uni_modules/v-tabs/package.json b/uni_modules/v-tabs/package.json new file mode 100644 index 0000000..3302c23 --- /dev/null +++ b/uni_modules/v-tabs/package.json @@ -0,0 +1,83 @@ +{ + "id": "v-tabs", + "displayName": "自定义 tab 选项卡 2", + "version": "2.1.1", + "description": "自定义 tab ,支持多种样式,支持 h5 小程序 app", + "keywords": [ + "v-tabs", + "tab", + "选项卡" +], + "repository": "https://github.com/xfjpeter/uni-plugins", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "type": "component-vue", + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "1207791534" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "n" + }, + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "n", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "钉钉": "y", + "快手": "y", + "飞书": "y", + "京东": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/v-tabs/readme.md b/uni_modules/v-tabs/readme.md new file mode 100644 index 0000000..3ece61f --- /dev/null +++ b/uni_modules/v-tabs/readme.md @@ -0,0 +1,240 @@ +## 插件说明 + +> 这是 `v-tabs` 插件的升级版本,参数上有很大变动,支持 `H5` `小程序` `手机端`,如果是在之前的插件上升级的话,请注意参数的变更,触发的事件没有变更。 + +## 使用说明 + +### 1、最基本用法 + +- 视图文件 + +```html + +``` + +- 脚本文件 + +```js +export default { + data() { + return { + current: 0, + tabs: ['军事', '国内', '新闻新闻', '军事', '国内', '新闻', '军事', '国内', '新闻'] + } + }, + methods: { + changeTab(index) { + console.log('当前选中的项:' + index) + } + } +} +``` + +### 2、平铺整个屏幕 + +- 视图文件 + +```html + +``` + +- 脚本文件 + +```js +export default { + data() { + return { + activeTab: 0 + } + } +} +``` + +### 3、胶囊用法 + +- 视图文件 + +```html + +``` + +- 脚本文件 + +```js +data() { + return { + current: 2, + tabs: [ + '军事', + '国内', + '新闻新闻', + '军事', + '国内', + '新闻', + '军事', + '国内', + '新闻', + ], + }, + methods: { + changeTab(index) { + console.log('当前选中索引:' + index) + } + } +} +``` + +## 文档说明 + +### 1、属性说明 + +| 参数 | 类型 | 默认值 | 说明 | +| :---------------: | :-----: | :-------: | :-----------------------------------------------------------------------: | +| tabs | Array | [] | 控制 tab 的列表 | +| value | Number | 0 | 必传(双向绑定的值) | +| color | String | '#333' | 默认文字颜色 | +| activeColor | String | '#2979ff' | 选中文字的颜色 | +| fontSize | String | '28rpx' | 默认文字大小(rpx 或 px)(弃用) | +| bold | Boolean | true | 是否加粗选中项 | +| scroll | Boolean | true | 是否显示滚动条,平铺设置 false | +| height | String | '70rpx' | tab 高度(rpx 或 px) | +| lineHeight | String | '10rpx' | 滑块高度(rpx 或 px) | +| lineColor | String | '#2979ff' | 滑块的颜色 | +| lineScale | Number | 0.5 | 滑块宽度缩放值 | +| lineRadius | String | '10rpx' | 滑块圆角宽度(rpx 或 px) | +| pills | Boolean | false | 是否开启胶囊 | +| pillsColor | String | '#2979ff' | 胶囊背景颜色(rpx 或 px) | +| pillsBorderRadius | String | '10rpx' | 胶囊圆角宽度(rpx 或 px) | +| field | String | '' | 如果 tabs 子项是对象,输入需要展示的键名 | +| bgColor | String | '#fff' | 背景色,支持 linear-gradient 渐变 | +| padding | String | '0' | 整个 tab padding 属性 | +| fixed | Boolean | false | 是否固定在顶部 | +| paddingItem | String | '0 22rpx' | 选项的边距(设置上下不生效,需要设置高度) | +| lineAnimation | Boolean | true | 是否需要 line 和 pills 的动画,在隐藏页面后默认移动到第一个的时候比较实用 | + +### 1.1 `tabs`参数展开说明 + +#### 1.1.1 当`tabs`仅仅是单纯的数组时候,没有什么特别的地方 + +```js +export default { + data() { + return { + tabs: ['全部', '待付款', '待消费', '已完成', '已评价', '已过期', '已退款'] + } + } +} +``` + +#### 1.1.2 当`tabs`使用的数组对象的方式,特定参数需要注意一下 + +- `disabled` 参数,可以控制按钮是否可以点击 + +```js +export default { + data() { + return { + tabs: [ + { id: 1, name: '待付款', disabled: false }, + { id: 2, name: '待收货', disabled: false }, + { id: 3, name: '待评价', disabled: false }, + { id: 4, name: '退款/售后', disabled: true }, + { id: 5, name: '我的订单', disabled: false } + ] + } + } +} +``` + +### 2、事件说明 + +| 名称 | 参数 | 说明 | +| :----: | :---: | :--------------------------------: | +| change | index | 改变选中项触发, index 选中项的下标 | + +## 更新日志 + +### 2.1.1(2022-09-16) + +1. 将插件更新为`uni_modules`方式 + +### 2022-08-12 + +1. 增加`disable`参数,控制是否可以点击,只能应用在数组对象中,见[disabled 的用法](#112-当tabs使用的数组对象的方式特定参数需要注意一下) + +```js +export default { + data() { + return { + tabs: [{ id: 1, name: '' }] + } + } +} +``` + +### 2022-01-27 + +1. 更新属性`line-animation`设置为`false`可以不要动画,这是好多朋友问到,特此加上 + +### 2020-09-24 + +1. 修复 `v-tabs` 第一次可能出现第一个标签显示不完整的情况 +2. 修改了 `pages/tabs/order` 示例文件 + +### 2020-09-21 + +1. 修复添加 `fixed` 属性后,滚动条无效 +2. 修复选项很少的情况下,下划线计算计算错误 +3. 新增 `paddingItem` 属性,设置选项左右边距(上下边距需要设置 `height` 属性,或者设置 `padding` 属性) + +**写在最后:** +欢迎各位老铁反馈 bug ,本人后端 PHP 一枚,只是应为感兴趣前端,自己琢磨,自己搞。如果你在使用的过程中有什么不合理,需要优化的,都可以在下面评论(或加我 QQ: 1207791534),本人看见后回复、修正,感谢。 + +### 2020-09-17 + +1. 紧急修复 bug,横向滑动不了的情况 + +### 2020-09-16 + +1. 新增 `fixed` 属性,是否固定在顶部,示例地址:`pages/tabs/tabs-static` +2. 优化之前的页面结构 + +**注意:** + +1. 使用 `padding` 属性的时候,尽量不要左右边距,会导致下划线位置不对 +2. 如果不绑定 `v-model` 会导致 `change` 事件改变的时候,下划线不跟随问题 + +### 2020-09-09 + +1. 修复 `width` 错误,dom 加载的时候没有及时获取到 `data` 属性导致的。 + +### 2020-08-29 + +1. 优化异步改变 `tabs` 后,下划线不初始化问题 +2. `github` 地址上有图 2 的源码,需要的自行下载,页面路径:`pages/tabs/order` + +### 2020-08-20 + +1. 优化 `节点查询` 和 `选中渲染` +2. 优化支付宝中 `createSelectorQuery()` 的影响 + +### 2020-08-19 + +1. 优化 `change` 事件触发机制 + +### 2020-08-16 + +1. 修改默认高度为 `70rpx` +2. 新增属性 `bgColor`,可设置背景颜色,默认 `#fff` +3. 新增整个 `tab` 的 `padding` 属性,默认 `0` + +### 2020-08-13 + +1. 全新的 `v-tabs 2.0` +2. 支持 `H5` `小程序` `APP` +3. 属性高度可配置 + +## 预览 + +![v-tabs 2.0.1.gif](https://tva1.sinaimg.cn/large/007S8ZIlgy1ghsv40mj76g30ai0i2tsd.gif) +![v-tabs 2.0.2.gif](https://img-cdn-aliyun.dcloud.net.cn/stream/plugin_screens/42f3a920-a674-11ea-8a24-ffee00625e2e_1.png?v=1597912963)