first commit
This commit is contained in:
commit
dc5fba137c
453 files changed
+85995
No files matched your search
@@ -0,0 +1,6 @@
|
||||
export default[{value:11e4,label:"北京",pid:1e5,children:[{value:110100,label:"北京市",pid:11e4,children:[{value:110101,label:"东城区",pid:110100},{value:110102,label:"西城区",pid:110100},{value:110105,label:"朝阳区",pid:110100},{value:110106,label:"丰台区",pid:110100},{value:110107,label:"石景山区",pid:110100},{value:110108,label:"海淀区",pid:110100},{value:110109,label:"门头沟区",pid:110100},{value:110111,label:"房山区",pid:110100},{value:110112,label:"通州区",pid:110100},{value:110113,label:"顺义区",pid:110100},{value:110114,label:"昌平区",pid:110100},{value:110115,label:"大兴区",pid:110100},{value:110116,label:"怀柔区",pid:110100},{value:110117,label:"平谷区",pid:110100},{value:110118,label:"密云区",pid:110100},{value:110119,label:"延庆区",pid:110100},{value:110120,label:"中关村科技园区",pid:110100}]}]},{value:12e4,label:"天津",pid:1e5,children:[{value:120100,label:"天津市",pid:12e4,children:[{value:120101,label:"和平区",pid:120100},{value:120102,label:"河东区",pid:120100},{value:120103,label:"河西区",pid:120100},{value:120104,label:"南开区",pid:120100},{value:120105,label:"河北区",pid:120100},{value:120106,label:"红桥区",pid:120100},{value:120110,label:"东丽区",pid:120100},{value:120111,label:"西青区",pid:120100},{value:120112,label:"津南区",pid:120100},{value:120113,label:"北辰区",pid:120100},{value:120114,label:"武清区",pid:120100},{value:120115,label:"宝坻区",pid:120100},{value:120116,label:"滨海新区",pid:120100},{value:120117,label:"宁河区",pid:120100},{value:120118,label:"静海区",pid:120100},{value:120119,label:"蓟州区",pid:120100},{value:120120,label:"滨海高新区",pid:120100}]}]},{value:13e4,label:"河北省",pid:1e5,children:[{value:130100,label:"石家庄市",pid:13e4,children:[{value:130102,label:"长安区",pid:130100},{value:130104,label:"桥西区",pid:130100},{value:130105,label:"新华区",pid:130100},{value:130107,label:"井陉矿区",pid:130100},{value:130108,label:"裕华区",pid:130100},{value:130109,label:"藁城区",pid:130100},{value:130110,label:"鹿泉区",pid:130100},{value:130111,label:"栾城区",pid:130100},{value:130121,label:"井陉县",pid:130100},{value:130123,label:"正定县",pid:130100},{value:130125,label:"行唐县",pid:130100},{value:130126,label:"灵寿县",pid:130100},{value:130127,label:"高邑县",pid:130100},{value:130128,label:"深泽县",pid:130100},{value:130129,label:"赞皇县",pid:130100},{value:130130,label:"无极县",pid:130100},{value:130131,label:"平山县",pid:130100},{value:130132,label:"元氏县",pid:130100},{value:130133,label:"赵县",pid:130100},{value:130181,label:"辛集市",pid:130100},{value:130183,label:"晋州市",pid:130100},{value:130184,label:"新乐市",pid:130100},{value:130185,label:"高新区",pid:130100},{value:130186,label:"经济开发区",pid:130100},{value:130187,label:"循环化工园区",pid:130100}]},{value:130200,label:"唐山市",pid:13e4,children:[{value:130202,label:"路南区",pid:130200},{value:130203,label:"路北区",pid:130200},{value:130204,label:"古冶区",pid:130200},{value:130205,label:"开平区",pid:130200},{value:130207,label:"丰南区",pid:130200},{value:130208,label:"丰润区",pid:130200},{value:130209,label:"曹妃甸区",pid:130200},{value:130224,label:"滦南县",pid:130200},{value:130225,label:"乐亭县",pid:130200},{value:130227,label:"迁西县",pid:130200},{value:130229,label:"玉田县",pid:130200},{value:130281,label:"遵化市",pid:130200},{value:130283,label:"迁安市",pid:130200},{value:130284,label:"滦州市",pid:130200},{value:130291,label:"高新区",pid:130200},{value:130292,label:"芦台开发区",pid:130200},{value:130293,label:"海港经济开发区",pid:130200},{value:130294,label:"汉沽管理区",pid:130200}]},{value:130300,label:"秦皇岛市",pid:13e4,children:[{value:130302,label:"海港区",pid:130300},{value:130303,label:"山海关区",pid:130300},{value:130304,label:"北戴河区",pid:130300},{value:130306,label:"抚宁区",pid:130300},{value:130321,label:"青龙满族自治县",pid:130300},{value:130322,label:"昌黎县",pid:130300},{value:130324,label:"卢龙县",pid:130300},{value:130371,label:"经济技术开发区",pid:130300},{value:130372,label:"北戴河新区",pid:130300}]},{value:130400,label:"邯郸市",pid:13e4,children:[{value:130402,label:"邯山区",pid:130400},{value:130403,label:"丛台区",pid:130400},{value:130404,label:"复兴区",pid:130400},{value:130406,label:"峰峰矿区",pid:130400},{value:130407,label:"肥乡区",pid:130400},{value:130408,label:"永年区",pid:130400},{value:130423,label:"临漳县",pid:130400},{value:130424,label:"成安县",pid:130400},{value:130425,label:"大名县",pid:130400},{value:130426,label:"涉县",pid:130400},{value:130427,label:"磁县",pid:130400},{value:130430,label:"邱县",pid:130400},{value:130431,label:"鸡泽县",pid:130400},{value:130432,label:"广平县",pid:130400},{value:130433,label:"Line truncated
|
||||
pid:231e3},{value:231085,label:"穆棱市",pid:231e3},{value:231086,label:"东宁市",pid:231e3}]},{value:231100,label:"黑河市",pid:23e4,children:[{value:231102,label:"爱辉区",pid:231100},{value:231121,label:"嫩江县",pid:231100},{value:231123,label:"逊克县",pid:231100},{value:231124,label:"孙吴县",pid:231100},{value:231181,label:"北安市",pid:231100},{value:231182,label:"五大连池市",pid:231100}]},{value:231200,label:"绥化市",pid:23e4,children:[{value:231202,label:"北林区",pid:231200},{value:231221,label:"望奎县",pid:231200},{value:231222,label:"兰西县",pid:231200},{value:231223,label:"青冈县",pid:231200},{value:231224,label:"庆安县",pid:231200},{value:231225,label:"明水县",pid:231200},{value:231226,label:"绥棱县",pid:231200},{value:231281,label:"安达市",pid:231200},{value:231282,label:"肇东市",pid:231200},{value:231283,label:"海伦市",pid:231200}]},{value:232700,label:"大兴安岭地区",pid:23e4,children:[{value:232701,label:"漠河市",pid:232700},{value:232721,label:"呼玛县",pid:232700},{value:232722,label:"塔河县",pid:232700},{value:232761,label:"加格达奇区",pid:232700},{value:232762,label:"松岭区",pid:232700},{value:232763,label:"新林区",pid:232700},{value:232764,label:"呼中区",pid:232700}]}]},{value:31e4,label:"上海",pid:1e5,children:[{value:310100,label:"上海市",pid:31e4,children:[{value:310101,label:"黄浦区",pid:310100},{value:310104,label:"徐汇区",pid:310100},{value:310105,label:"长宁区",pid:310100},{value:310106,label:"静安区",pid:310100},{value:310107,label:"普陀区",pid:310100},{value:310109,label:"虹口区",pid:310100},{value:310110,label:"杨浦区",pid:310100},{value:310112,label:"闵行区",pid:310100},{value:310113,label:"宝山区",pid:310100},{value:310114,label:"嘉定区",pid:310100},{value:310115,label:"浦东新区",pid:310100},{value:310116,label:"金山区",pid:310100},{value:310117,label:"松江区",pid:310100},{value:310118,label:"青浦区",pid:310100},{value:310120,label:"奉贤区",pid:310100},{value:310151,label:"崇明区",pid:310100},{value:310231,label:"张江高新区",pid:310100},{value:310232,label:"紫竹高新区",pid:310100},{value:310233,label:"漕河泾开发区",pid:310100}]}]},{value:32e4,label:"江苏省",pid:1e5,children:[{value:320100,label:"南京市",pid:32e4,children:[{value:320102,label:"玄武区",pid:320100},{value:320104,label:"秦淮区",pid:320100},{value:320105,label:"建邺区",pid:320100},{value:320106,label:"鼓楼区",pid:320100},{value:320111,label:"浦口区",pid:320100},{value:320113,label:"栖霞区",pid:320100},{value:320114,label:"雨花台区",pid:320100},{value:320115,label:"江宁区",pid:320100},{value:320116,label:"六合区",pid:320100},{value:320117,label:"溧水区",pid:320100},{value:320118,label:"高淳区",pid:320100},{value:320119,label:"江北新区",pid:320100},{value:320120,label:"高新区",pid:320100}]},{value:320200,label:"无锡市",pid:32e4,children:[{value:320205,label:"锡山区",pid:320200},{value:320206,label:"惠山区",pid:320200},{value:320211,label:"滨湖区",pid:320200},{value:320213,label:"梁溪区",pid:320200},{value:320214,label:"新吴区",pid:320200},{value:320281,label:"江阴市",pid:320200},{value:320282,label:"宜兴市",pid:320200}]},{value:320300,label:"徐州市",pid:32e4,children:[{value:320302,label:"鼓楼区",pid:320300},{value:320303,label:"云龙区",pid:320300},{value:320305,label:"贾汪区",pid:320300},{value:320311,label:"泉山区",pid:320300},{value:320312,label:"铜山区",pid:320300},{value:320321,label:"丰县",pid:320300},{value:320322,label:"沛县",pid:320300},{value:320324,label:"睢宁县",pid:320300},{value:320381,label:"新沂市",pid:320300},{value:320382,label:"邳州市",pid:320300},{value:320383,label:"经济技术开发区",pid:320300},{value:320384,label:"高新区",pid:320300},{value:320385,label:"软件园",pid:320300}]},{value:320400,label:"常州市",pid:32e4,children:[{value:320402,label:"天宁区",pid:320400},{value:320404,label:"钟楼区",pid:320400},{value:320411,label:"新北区",pid:320400},{value:320412,label:"武进区",pid:320400},{value:320413,label:"金坛区",pid:320400},{value:320481,label:"溧阳市",pid:320400},{value:320482,label:"高新区",pid:320400}]},{value:320500,label:"苏州市",pid:32e4,children:[{value:320505,label:"虎丘区",pid:320500},{value:320506,label:"吴中区",pid:320500},{value:320507,label:"相城区",pid:320500},{value:320508,label:"姑苏区",pid:320500},{value:320509,label:"吴江区",pid:320500},{value:320581,label:"常熟市",pid:320500},{value:320582,label:"张家港市",pid:320500},{value:320583,label:"昆山市",pid:320500},{value:320585,label:"太仓市",pid:320500},{value:320586,label:"苏州新区",pid:320500},{value:320587,label:"工业园区",pid:320500},{value:320588,label:"高新区",pid:320500}]},{value:320600,label:"南通市",pid:32e4,children:[{value:320602,label:"崇川区",pid:320600},{value:320611,label:"港闸Line truncated
|
||||
value:371724,label:"巨野县",pid:371700},{value:371725,label:"郓城县",pid:371700},{value:371726,label:"鄄城县",pid:371700},{value:371728,label:"东明县",pid:371700},{value:371772,label:"高新开发区",pid:371700}]}]},{value:41e4,label:"河南省",pid:1e5,children:[{value:410100,label:"郑州市",pid:41e4,children:[{value:410102,label:"中原区",pid:410100},{value:410103,label:"二七区",pid:410100},{value:410104,label:"管城回族区",pid:410100},{value:410105,label:"金水区",pid:410100},{value:410106,label:"上街区",pid:410100},{value:410108,label:"惠济区",pid:410100},{value:410122,label:"中牟县",pid:410100},{value:410181,label:"巩义市",pid:410100},{value:410182,label:"荥阳市",pid:410100},{value:410183,label:"新密市",pid:410100},{value:410184,label:"新郑市",pid:410100},{value:410185,label:"登封市",pid:410100},{value:410186,label:"郑东新区",pid:410100},{value:410187,label:"郑汴新区",pid:410100},{value:410188,label:"高新开发区",pid:410100},{value:410189,label:"经济开发区",pid:410100},{value:410190,label:"航空港区",pid:410100}]},{value:410200,label:"开封市",pid:41e4,children:[{value:410202,label:"龙亭区",pid:410200},{value:410203,label:"顺河回族区",pid:410200},{value:410204,label:"鼓楼区",pid:410200},{value:410205,label:"禹王台区",pid:410200},{value:410212,label:"祥符区",pid:410200},{value:410221,label:"杞县",pid:410200},{value:410222,label:"通许县",pid:410200},{value:410223,label:"尉氏县",pid:410200},{value:410225,label:"兰考县",pid:410200},{value:410226,label:"经济技术开发区",pid:410200}]},{value:410300,label:"洛阳市",pid:41e4,children:[{value:410302,label:"老城区",pid:410300},{value:410303,label:"西工区",pid:410300},{value:410304,label:"瀍河回族区",pid:410300},{value:410305,label:"涧西区",pid:410300},{value:410306,label:"吉利区",pid:410300},{value:410311,label:"洛龙区",pid:410300},{value:410322,label:"孟津县",pid:410300},{value:410323,label:"新安县",pid:410300},{value:410324,label:"栾川县",pid:410300},{value:410325,label:"嵩县",pid:410300},{value:410326,label:"汝阳县",pid:410300},{value:410327,label:"宜阳县",pid:410300},{value:410328,label:"洛宁县",pid:410300},{value:410329,label:"伊川县",pid:410300},{value:410381,label:"偃师市",pid:410300},{value:410382,label:"洛阳新区",pid:410300},{value:410383,label:"高新区",pid:410300}]},{value:410400,label:"平顶山市",pid:41e4,children:[{value:410402,label:"新华区",pid:410400},{value:410403,label:"卫东区",pid:410400},{value:410404,label:"石龙区",pid:410400},{value:410411,label:"湛河区",pid:410400},{value:410421,label:"宝丰县",pid:410400},{value:410422,label:"叶县",pid:410400},{value:410423,label:"鲁山县",pid:410400},{value:410425,label:"郏县",pid:410400},{value:410481,label:"舞钢市",pid:410400},{value:410482,label:"汝州市",pid:410400},{value:410483,label:"高新区",pid:410400},{value:410484,label:"新城区",pid:410400}]},{value:410500,label:"安阳市",pid:41e4,children:[{value:410502,label:"文峰区",pid:410500},{value:410503,label:"北关区",pid:410500},{value:410505,label:"殷都区",pid:410500},{value:410506,label:"龙安区",pid:410500},{value:410522,label:"安阳县",pid:410500},{value:410523,label:"汤阴县",pid:410500},{value:410526,label:"滑县",pid:410500},{value:410527,label:"内黄县",pid:410500},{value:410581,label:"林州市",pid:410500},{value:410582,label:"安阳新区",pid:410500}]},{value:410600,label:"鹤壁市",pid:41e4,children:[{value:410602,label:"鹤山区",pid:410600},{value:410603,label:"山城区",pid:410600},{value:410611,label:"淇滨区",pid:410600},{value:410621,label:"浚县",pid:410600},{value:410622,label:"淇县",pid:410600}]},{value:410700,label:"新乡市",pid:41e4,children:[{value:410702,label:"红旗区",pid:410700},{value:410703,label:"卫滨区",pid:410700},{value:410704,label:"凤泉区",pid:410700},{value:410711,label:"牧野区",pid:410700},{value:410721,label:"新乡县",pid:410700},{value:410724,label:"获嘉县",pid:410700},{value:410725,label:"原阳县",pid:410700},{value:410726,label:"延津县",pid:410700},{value:410727,label:"封丘县",pid:410700},{value:410728,label:"长垣县",pid:410700},{value:410781,label:"卫辉市",pid:410700},{value:410782,label:"辉县市",pid:410700}]},{value:410800,label:"焦作市",pid:41e4,children:[{value:410802,label:"解放区",pid:410800},{value:410803,label:"中站区",pid:410800},{value:410804,label:"马村区",pid:410800},{value:410811,label:"山阳区",pid:410800},{value:410821,label:"修武县",pid:410800},{value:410822,label:"博爱县",pid:410800},{value:410823,label:"武陟县",pid:410800},{value:410825,label:"温县",pid:410800},{value:410882,label:"沁阳市",pid:410800},{value:410883,label:"孟州市",pid:410800}]},{value:410900,label:"濮阳市",pid:41e4,children:[{value:410902,label:"华龙区",pid:410900},{value:410922,label:"清丰县",pid:410900},{value:410923,label:"南乐Line truncated
|
||||
pid:450400},{value:450422,label:"藤县",pid:450400},{value:450423,label:"蒙山县",pid:450400},{value:450481,label:"岑溪市",pid:450400}]},{value:450500,label:"北海市",pid:45e4,children:[{value:450502,label:"海城区",pid:450500},{value:450503,label:"银海区",pid:450500},{value:450512,label:"铁山港区",pid:450500},{value:450521,label:"合浦县",pid:450500}]},{value:450600,label:"防城港市",pid:45e4,children:[{value:450602,label:"港口区",pid:450600},{value:450603,label:"防城区",pid:450600},{value:450621,label:"上思县",pid:450600},{value:450681,label:"东兴市",pid:450600}]},{value:450700,label:"钦州市",pid:45e4,children:[{value:450702,label:"钦南区",pid:450700},{value:450703,label:"钦北区",pid:450700},{value:450721,label:"灵山县",pid:450700},{value:450722,label:"浦北县",pid:450700}]},{value:450800,label:"贵港市",pid:45e4,children:[{value:450802,label:"港北区",pid:450800},{value:450803,label:"港南区",pid:450800},{value:450804,label:"覃塘区",pid:450800},{value:450821,label:"平南县",pid:450800},{value:450881,label:"桂平市",pid:450800}]},{value:450900,label:"玉林市",pid:45e4,children:[{value:450902,label:"玉州区",pid:450900},{value:450903,label:"福绵区",pid:450900},{value:450921,label:"容县",pid:450900},{value:450922,label:"陆川县",pid:450900},{value:450923,label:"博白县",pid:450900},{value:450924,label:"兴业县",pid:450900},{value:450981,label:"北流市",pid:450900},{value:450982,label:"玉东新区",pid:450900},{value:450983,label:"高新区",pid:450900}]},{value:451e3,label:"百色市",pid:45e4,children:[{value:451002,label:"右江区",pid:451e3},{value:451021,label:"田阳县",pid:451e3},{value:451022,label:"田东县",pid:451e3},{value:451023,label:"平果县",pid:451e3},{value:451024,label:"德保县",pid:451e3},{value:451026,label:"那坡县",pid:451e3},{value:451027,label:"凌云县",pid:451e3},{value:451028,label:"乐业县",pid:451e3},{value:451029,label:"田林县",pid:451e3},{value:451030,label:"西林县",pid:451e3},{value:451031,label:"隆林各族自治县",pid:451e3},{value:451081,label:"靖西市",pid:451e3}]},{value:451100,label:"贺州市",pid:45e4,children:[{value:451102,label:"八步区",pid:451100},{value:451103,label:"平桂区",pid:451100},{value:451121,label:"昭平县",pid:451100},{value:451122,label:"钟山县",pid:451100},{value:451123,label:"富川瑶族自治县",pid:451100}]},{value:451200,label:"河池市",pid:45e4,children:[{value:451202,label:"金城江区",pid:451200},{value:451203,label:"宜州区",pid:451200},{value:451221,label:"南丹县",pid:451200},{value:451222,label:"天峨县",pid:451200},{value:451223,label:"凤山县",pid:451200},{value:451224,label:"东兰县",pid:451200},{value:451225,label:"罗城仫佬族自治县",pid:451200},{value:451226,label:"环江毛南族自治县",pid:451200},{value:451227,label:"巴马瑶族自治县",pid:451200},{value:451228,label:"都安瑶族自治县",pid:451200},{value:451229,label:"大化瑶族自治县",pid:451200}]},{value:451300,label:"来宾市",pid:45e4,children:[{value:451302,label:"兴宾区",pid:451300},{value:451321,label:"忻城县",pid:451300},{value:451322,label:"象州县",pid:451300},{value:451323,label:"武宣县",pid:451300},{value:451324,label:"金秀瑶族自治县",pid:451300},{value:451381,label:"合山市",pid:451300}]},{value:451400,label:"崇左市",pid:45e4,children:[{value:451402,label:"江州区",pid:451400},{value:451421,label:"扶绥县",pid:451400},{value:451422,label:"宁明县",pid:451400},{value:451423,label:"龙州县",pid:451400},{value:451424,label:"大新县",pid:451400},{value:451425,label:"天等县",pid:451400},{value:451481,label:"凭祥市",pid:451400}]}]},{value:46e4,label:"海南省",pid:1e5,children:[{value:460100,label:"海口市",pid:46e4,children:[{value:460105,label:"秀英区",pid:460100},{value:460106,label:"龙华区",pid:460100},{value:460107,label:"琼山区",pid:460100},{value:460108,label:"美兰区",pid:460100},{value:460109,label:"江东新区",pid:460100}]},{value:460200,label:"三亚市",pid:46e4,children:[{value:460202,label:"海棠区",pid:460200},{value:460203,label:"吉阳区",pid:460200},{value:460204,label:"天涯区",pid:460200},{value:460205,label:"崖州区",pid:460200}]},{value:460300,label:"三沙市",pid:46e4,children:[{value:460321,label:"西沙群岛",pid:460300},{value:460322,label:"南沙群岛",pid:460300},{value:460323,label:"中沙群岛",pid:460300}]},{value:460400,label:"儋州市",pid:46e4,children:[{value:460401,label:"洋浦经济开发区",pid:460400},{value:460402,label:"那大镇",pid:460400},{value:460403,label:"南丰镇",pid:460400},{value:460404,label:"雅星镇",pid:460400},{value:460405,label:"和庆镇",pid:460400},{value:460406,label:"大成镇",pid:460400},{value:460407,label:"新州镇",pid:460400},{value:460408,label:"光村镇",pid:460400},{value:460409,label:"东成镇",pid:460400},{value:460410,label:"中和镇",pid:460400},{value:460411,label:"峨蔓Line truncated
|
||||
pid:532300},{value:532329,label:"武定县",pid:532300},{value:532331,label:"禄丰县",pid:532300}]},{value:532500,label:"红河哈尼族彝族自治州",pid:53e4,children:[{value:532501,label:"个旧市",pid:532500},{value:532502,label:"开远市",pid:532500},{value:532503,label:"蒙自市",pid:532500},{value:532504,label:"弥勒市",pid:532500},{value:532523,label:"屏边苗族自治县",pid:532500},{value:532524,label:"建水县",pid:532500},{value:532525,label:"石屏县",pid:532500},{value:532527,label:"泸西县",pid:532500},{value:532528,label:"元阳县",pid:532500},{value:532529,label:"红河县",pid:532500},{value:532530,label:"金平苗族瑶族傣族自治县",pid:532500},{value:532531,label:"绿春县",pid:532500},{value:532532,label:"河口瑶族自治县",pid:532500}]},{value:532600,label:"文山壮族苗族自治州",pid:53e4,children:[{value:532601,label:"文山市",pid:532600},{value:532622,label:"砚山县",pid:532600},{value:532623,label:"西畴县",pid:532600},{value:532624,label:"麻栗坡县",pid:532600},{value:532625,label:"马关县",pid:532600},{value:532626,label:"丘北县",pid:532600},{value:532627,label:"广南县",pid:532600},{value:532628,label:"富宁县",pid:532600}]},{value:532800,label:"西双版纳傣族自治州",pid:53e4,children:[{value:532801,label:"景洪市",pid:532800},{value:532822,label:"勐海县",pid:532800},{value:532823,label:"勐腊县",pid:532800}]},{value:532900,label:"大理白族自治州",pid:53e4,children:[{value:532901,label:"大理市",pid:532900},{value:532922,label:"漾濞彝族自治县",pid:532900},{value:532923,label:"祥云县",pid:532900},{value:532924,label:"宾川县",pid:532900},{value:532925,label:"弥渡县",pid:532900},{value:532926,label:"南涧彝族自治县",pid:532900},{value:532927,label:"巍山彝族回族自治县",pid:532900},{value:532928,label:"永平县",pid:532900},{value:532929,label:"云龙县",pid:532900},{value:532930,label:"洱源县",pid:532900},{value:532931,label:"剑川县",pid:532900},{value:532932,label:"鹤庆县",pid:532900}]},{value:533100,label:"德宏傣族景颇族自治州",pid:53e4,children:[{value:533102,label:"瑞丽市",pid:533100},{value:533103,label:"芒市",pid:533100},{value:533122,label:"梁河县",pid:533100},{value:533123,label:"盈江县",pid:533100},{value:533124,label:"陇川县",pid:533100}]},{value:533300,label:"怒江傈僳族自治州",pid:53e4,children:[{value:533301,label:"泸水市",pid:533300},{value:533323,label:"福贡县",pid:533300},{value:533324,label:"贡山独龙族怒族自治县",pid:533300},{value:533325,label:"兰坪白族普米族自治县",pid:533300}]},{value:533400,label:"迪庆藏族自治州",pid:53e4,children:[{value:533401,label:"香格里拉市",pid:533400},{value:533422,label:"德钦县",pid:533400},{value:533423,label:"维西傈僳族自治县",pid:533400}]}]},{value:54e4,label:"西藏自治区",pid:1e5,children:[{value:540100,label:"拉萨市",pid:54e4,children:[{value:540102,label:"城关区",pid:540100},{value:540103,label:"堆龙德庆区",pid:540100},{value:540104,label:"达孜区",pid:540100},{value:540121,label:"林周县",pid:540100},{value:540122,label:"当雄县",pid:540100},{value:540123,label:"尼木县",pid:540100},{value:540124,label:"曲水县",pid:540100},{value:540127,label:"墨竹工卡县",pid:540100},{value:540171,label:"格尔木藏青工业园区",pid:540100},{value:540173,label:"西藏文化旅游创意园区",pid:540100},{value:540174,label:"达孜工业园区",pid:540100}]},{value:540200,label:"日喀则市",pid:54e4,children:[{value:540202,label:"桑珠孜区",pid:540200},{value:540221,label:"南木林县",pid:540200},{value:540222,label:"江孜县",pid:540200},{value:540223,label:"定日县",pid:540200},{value:540224,label:"萨迦县",pid:540200},{value:540225,label:"拉孜县",pid:540200},{value:540226,label:"昂仁县",pid:540200},{value:540227,label:"谢通门县",pid:540200},{value:540228,label:"白朗县",pid:540200},{value:540229,label:"仁布县",pid:540200},{value:540230,label:"康马县",pid:540200},{value:540231,label:"定结县",pid:540200},{value:540232,label:"仲巴县",pid:540200},{value:540233,label:"亚东县",pid:540200},{value:540234,label:"吉隆县",pid:540200},{value:540235,label:"聂拉木县",pid:540200},{value:540236,label:"萨嘎县",pid:540200},{value:540237,label:"岗巴县",pid:540200}]},{value:540300,label:"昌都市",pid:54e4,children:[{value:540302,label:"卡若区",pid:540300},{value:540321,label:"江达县",pid:540300},{value:540322,label:"贡觉县",pid:540300},{value:540323,label:"类乌齐县",pid:540300},{value:540324,label:"丁青县",pid:540300},{value:540325,label:"察雅县",pid:540300},{value:540326,label:"八宿县",pid:540300},{value:540327,label:"左贡县",pid:540300},{value:540328,label:"芒康县",pid:540300},{value:540329,label:"洛隆县",pid:540300},{value:540330,label:"边坝县",pid:540300}]},{value:540400,label:"林芝市",pid:54e4,children:[{value:540402,label:"巴宜区",pid:5404Line truncated
|
||||
},{value:712302,label:"中坜市",pid:712300},{value:712303,label:"平镇市",pid:712300},{value:712304,label:"八德市",pid:712300},{value:712305,label:"杨梅市",pid:712300},{value:712306,label:"芦竹市",pid:712300},{value:712321,label:"大溪镇",pid:712300},{value:712324,label:"大园乡",pid:712300},{value:712325,label:"龟山乡",pid:712300},{value:712327,label:"龙潭乡",pid:712300},{value:712329,label:"新屋乡",pid:712300},{value:712330,label:"观音乡",pid:712300},{value:712331,label:"复兴乡",pid:712300}]},{value:712400,label:"新竹县",pid:71e4,children:[{value:712401,label:"竹北市",pid:712400},{value:712421,label:"竹东镇",pid:712400},{value:712422,label:"新埔镇",pid:712400},{value:712423,label:"关西镇",pid:712400},{value:712424,label:"湖口乡",pid:712400},{value:712425,label:"新丰乡",pid:712400},{value:712426,label:"芎林乡",pid:712400},{value:712427,label:"横山乡",pid:712400},{value:712428,label:"北埔乡",pid:712400},{value:712429,label:"宝山乡",pid:712400},{value:712430,label:"峨眉乡",pid:712400},{value:712431,label:"尖石乡",pid:712400},{value:712432,label:"五峰乡",pid:712400}]},{value:712500,label:"苗栗县",pid:71e4,children:[{value:712501,label:"苗栗市",pid:712500},{value:712521,label:"苑里镇",pid:712500},{value:712522,label:"通霄镇",pid:712500},{value:712523,label:"竹南镇",pid:712500},{value:712524,label:"头份市",pid:712500},{value:712525,label:"后龙镇",pid:712500},{value:712526,label:"卓兰镇",pid:712500},{value:712527,label:"大湖乡",pid:712500},{value:712528,label:"公馆乡",pid:712500},{value:712529,label:"铜锣乡",pid:712500},{value:712530,label:"南庄乡",pid:712500},{value:712531,label:"头屋乡",pid:712500},{value:712532,label:"三义乡",pid:712500},{value:712533,label:"西湖乡",pid:712500},{value:712534,label:"造桥乡",pid:712500},{value:712535,label:"三湾乡",pid:712500},{value:712536,label:"狮潭乡",pid:712500},{value:712537,label:"泰安乡",pid:712500}]},{value:712700,label:"彰化县",pid:71e4,children:[{value:712701,label:"彰化市",pid:712700},{value:712721,label:"鹿港镇",pid:712700},{value:712722,label:"和美镇",pid:712700},{value:712723,label:"线西乡",pid:712700},{value:712724,label:"伸港乡",pid:712700},{value:712725,label:"福兴乡",pid:712700},{value:712726,label:"秀水乡",pid:712700},{value:712727,label:"花坛乡",pid:712700},{value:712728,label:"芬园乡",pid:712700},{value:712729,label:"员林市",pid:712700},{value:712730,label:"溪湖镇",pid:712700},{value:712731,label:"田中镇",pid:712700},{value:712732,label:"大村乡",pid:712700},{value:712733,label:"埔盐乡",pid:712700},{value:712734,label:"埔心乡",pid:712700},{value:712735,label:"永靖乡",pid:712700},{value:712736,label:"社头乡",pid:712700},{value:712737,label:"二水乡",pid:712700},{value:712738,label:"北斗镇",pid:712700},{value:712739,label:"二林镇",pid:712700},{value:712740,label:"田尾乡",pid:712700},{value:712741,label:"埤头乡",pid:712700},{value:712742,label:"芳苑乡",pid:712700},{value:712743,label:"大城乡",pid:712700},{value:712744,label:"竹塘乡",pid:712700},{value:712745,label:"溪州乡",pid:712700}]},{value:712800,label:"南投县",pid:71e4,children:[{value:712801,label:"南投市",pid:712800},{value:712821,label:"埔里镇",pid:712800},{value:712822,label:"草屯镇",pid:712800},{value:712823,label:"竹山镇",pid:712800},{value:712824,label:"集集镇",pid:712800},{value:712825,label:"名间乡",pid:712800},{value:712826,label:"鹿谷乡",pid:712800},{value:712827,label:"中寮乡",pid:712800},{value:712828,label:"鱼池乡",pid:712800},{value:712829,label:"国姓乡",pid:712800},{value:712830,label:"水里乡",pid:712800},{value:712831,label:"信义乡",pid:712800},{value:712832,label:"仁爱乡",pid:712800}]},{value:712900,label:"云林县",pid:71e4,children:[{value:712901,label:"斗六市",pid:712900},{value:712921,label:"斗南镇",pid:712900},{value:712922,label:"虎尾镇",pid:712900},{value:712923,label:"西螺镇",pid:712900},{value:712924,label:"土库镇",pid:712900},{value:712925,label:"北港镇",pid:712900},{value:712926,label:"古坑乡",pid:712900},{value:712927,label:"大埤乡",pid:712900},{value:712928,label:"莿桐乡",pid:712900},{value:712929,label:"林内乡",pid:712900},{value:712930,label:"二仑乡",pid:712900},{value:712931,label:"仑背乡",pid:712900},{value:712932,label:"麦寮乡",pid:712900},{value:712933,label:"东势乡",pid:712900},{value:712934,label:"褒忠乡",pid:712900},{value:712935,label:"台西乡",pid:712900},{value:712936,label:"元长乡",pid:712900},{value:712937,label:"四湖乡",pid:712900},{value:712938,label:"口湖乡",pid:712900},{value:712939,label:"水林乡",pid:712900}]},{value:713e3,label:"嘉义县",pid:71e4,children:[{value:713001,label:"太保市",pid:713e3},{value:713002,label:"朴子市",pid:713e3},{value:713023,label:"布袋镇",pid:713e3},{value:713024,label:"大林镇",pid:713e3},{value:713025,label:Line truncated
|
||||
@@ -0,0 +1,41 @@
|
||||
const Cache = {
|
||||
//设置缓存(expire为缓存时效)
|
||||
set(key, value, expire) {
|
||||
|
||||
let data = {
|
||||
expire: expire ? (this.time() + expire) : "",
|
||||
value
|
||||
}
|
||||
|
||||
if (typeof data === 'object')
|
||||
data = JSON.stringify(data);
|
||||
try {
|
||||
uni.setStorageSync(key, data)
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
get(key) {
|
||||
try {
|
||||
let data = uni.getStorageSync(key)
|
||||
const {value, expire} = JSON.parse(data)
|
||||
if(expire && expire < this.time()) {
|
||||
uni.removeStorageSync(key)
|
||||
return false;
|
||||
}else {
|
||||
return value
|
||||
}
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
//获取当前时间
|
||||
time() {
|
||||
return Math.round(new Date() / 1000);
|
||||
},
|
||||
remove(key) {
|
||||
if(key) uni.removeStorageSync(key)
|
||||
}
|
||||
}
|
||||
|
||||
export default Cache;
|
||||
+104
@@ -0,0 +1,104 @@
|
||||
import {
|
||||
silentLogin
|
||||
} from '@/api/app';
|
||||
import {
|
||||
isWeixinClient,
|
||||
currentPage,
|
||||
trottle,
|
||||
tabbarList
|
||||
} from './tools'
|
||||
import store from '@/store'
|
||||
import Cache from './cache'
|
||||
import {
|
||||
BACK_URL
|
||||
} from '@/config/cachekey'
|
||||
import wechath5 from './wechath5'
|
||||
import {
|
||||
inputInviteCode
|
||||
} from '@/api/user'
|
||||
|
||||
|
||||
// 获取登录凭证(code)
|
||||
|
||||
export function getWxCode() {
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.login({
|
||||
success(res) {
|
||||
resolve(res.code);
|
||||
},
|
||||
|
||||
fail(res) {
|
||||
reject(res);
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
}
|
||||
//小程序获取用户信息
|
||||
export function getUserProfile() {
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.getUserProfile({
|
||||
desc: '获取用户信息,完善用户资料 ',
|
||||
success: (res) => {
|
||||
resolve(res);
|
||||
},
|
||||
fail(res) {}
|
||||
|
||||
})
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
export const wxMnpLogin = trottle(_wxMnpLogin, 1000)
|
||||
//小程序静默授权
|
||||
async function _wxMnpLogin() {
|
||||
|
||||
const code = await getWxCode()
|
||||
const {code:loginCode, data: loginData} = await silentLogin({
|
||||
code
|
||||
})
|
||||
const {
|
||||
options,
|
||||
onLoad,
|
||||
onShow,
|
||||
route
|
||||
} = currentPage()
|
||||
if(loginCode != 1) return
|
||||
if (loginData.token && !loginData.is_new_user) {
|
||||
store.commit('LOGIN', loginData)
|
||||
onLoad && onLoad(options)
|
||||
onShow && onShow()
|
||||
const inviteCode = Cache.get("INVITE_CODE")
|
||||
if (inviteCode) {
|
||||
Cache.remove("INVITE_CODE")
|
||||
inputInviteCode({
|
||||
code: inviteCode
|
||||
})
|
||||
}
|
||||
} else {
|
||||
const loginRoute = '/pages/login/login'
|
||||
if (!tabbarList.includes(route)) {
|
||||
if(loginRoute.includes(route)) return
|
||||
uni.navigateTo({
|
||||
url: loginRoute
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export const toLogin = trottle(_toLogin, 1000)
|
||||
// 去登录
|
||||
function _toLogin() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/login/login'
|
||||
});
|
||||
//#ifdef H5
|
||||
const pathLogin = 'pages/login/login'
|
||||
let path = currentPage().route
|
||||
if (path != pathLogin) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
}
|
||||
// #endif
|
||||
}
|
||||
+110
@@ -0,0 +1,110 @@
|
||||
// +----------------------------------------------------------------------
|
||||
// | likeshop开源商城系统
|
||||
// +----------------------------------------------------------------------
|
||||
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
|
||||
// | gitee下载:https://gitee.com/likeshop_gitee
|
||||
// | github下载:https://github.com/likeshop-github
|
||||
// | 访问官网:https://www.likeshop.cn
|
||||
// | 访问社区:https://home.likeshop.cn
|
||||
// | 访问手册:http://doc.likeshop.cn
|
||||
// | 微信公众号:likeshop技术社区
|
||||
// | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用,未经许可不能去除前后端官方版权标识
|
||||
// | likeshop系列产品收费版本务必购买商业授权,购买去版权授权后,方可去除前后端官方版权标识
|
||||
// | 禁止对系统程序代码以任何目的,任何形式的再发布
|
||||
// | likeshop团队版权所有并拥有最终解释权
|
||||
// +----------------------------------------------------------------------
|
||||
// | author: likeshop.cn.team
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
import wechath5 from './wechath5'
|
||||
import {
|
||||
currentPage,
|
||||
isWeixinClient
|
||||
} from './tools'
|
||||
export function wxpay(opt) {
|
||||
//#ifdef H5
|
||||
if(isWeixinClient()) {
|
||||
return wechath5.wxPay(opt)
|
||||
}else {
|
||||
console.log(opt)
|
||||
location.href=opt
|
||||
}
|
||||
// #endif
|
||||
//#ifndef H5
|
||||
return new Promise((resolve, reject) => {
|
||||
// #ifdef MP-WEIXIN
|
||||
const params = {
|
||||
timeStamp: opt.timeStamp,
|
||||
// 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
|
||||
nonceStr: opt.nonceStr,
|
||||
// 支付签名随机串,不长于 32 位
|
||||
package: opt.package,
|
||||
// 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
|
||||
signType: opt.signType,
|
||||
// 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
|
||||
paySign: opt.paySign,
|
||||
}
|
||||
// #endif
|
||||
// #ifdef APP-PLUS
|
||||
const params = {
|
||||
orderInfo: opt
|
||||
}
|
||||
// #endif
|
||||
console.log(params)
|
||||
uni.requestPayment({
|
||||
provider: 'wxpay',
|
||||
...params,
|
||||
success: res => {
|
||||
resolve('success');
|
||||
},
|
||||
cancel: res => {
|
||||
resolve('fail');
|
||||
},
|
||||
fail: res => {
|
||||
resolve('fail');
|
||||
}
|
||||
});
|
||||
});
|
||||
// #endif
|
||||
}
|
||||
|
||||
export function alipay(opt) {
|
||||
|
||||
//#ifdef H5
|
||||
const div = document.createElement('div')
|
||||
console.log(opt)
|
||||
/* 此处form就是后台返回接收到的数据 */
|
||||
div.innerHTML = opt
|
||||
document.body.appendChild(div)
|
||||
document.forms[0].submit()
|
||||
return
|
||||
// #endif
|
||||
// #ifdef APP-PLUS
|
||||
return new Promise((resolve, reject) => {
|
||||
const params = {
|
||||
orderInfo: opt
|
||||
}
|
||||
console.log(params)
|
||||
uni.requestPayment({
|
||||
provider: 'alipay',
|
||||
...params,
|
||||
success: res => {
|
||||
resolve('success');
|
||||
},
|
||||
cancel: res => {
|
||||
console.log(res)
|
||||
resolve('fail');
|
||||
},
|
||||
fail: res => {
|
||||
console.log(res)
|
||||
resolve('fail');
|
||||
}
|
||||
});
|
||||
})
|
||||
// #endif
|
||||
|
||||
}
|
||||
@@ -0,0 +1,348 @@
|
||||
/**
|
||||
* 本模块封装了Android、iOS的应用权限判断、打开应用权限设置界面、以及位置系统服务是否开启
|
||||
*/
|
||||
|
||||
var isIos
|
||||
// #ifdef APP-PLUS
|
||||
isIos = (plus.os.name == "iOS")
|
||||
// #endif
|
||||
|
||||
// 判断推送权限是否开启
|
||||
function judgeIosPermissionPush() {
|
||||
var result = 0;
|
||||
var UIApplication = plus.ios.import("UIApplication");
|
||||
var app = UIApplication.sharedApplication();
|
||||
var enabledTypes = 0;
|
||||
if (app.currentUserNotificationSettings) {
|
||||
var settings = app.currentUserNotificationSettings();
|
||||
enabledTypes = settings.plusGetAttribute("types");
|
||||
if (enabledTypes == 0) {
|
||||
console.log("推送权限没有开启");
|
||||
} else {
|
||||
result = 1;
|
||||
console.log("已经开启推送功能!")
|
||||
}
|
||||
plus.ios.deleteObject(settings);
|
||||
} else {
|
||||
enabledTypes = app.enabledRemoteNotificationTypes();
|
||||
if (enabledTypes == 0) {
|
||||
console.log("推送权限没有开启!");
|
||||
} else {
|
||||
result = 1;
|
||||
console.log("已经开启推送功能!")
|
||||
}
|
||||
console.log("enabledTypes2:" + enabledTypes);
|
||||
}
|
||||
plus.ios.deleteObject(app);
|
||||
plus.ios.deleteObject(UIApplication);
|
||||
return result;
|
||||
}
|
||||
|
||||
// 判断定位权限是否开启
|
||||
function judgeIosPermissionLocation() {
|
||||
var result = 0;
|
||||
var cllocationManger = plus.ios.import("CLLocationManager");
|
||||
var status = cllocationManger.authorizationStatus();
|
||||
result = (status != 2) ? 1 : 0;
|
||||
console.log("定位权限开启:" + result);
|
||||
// 以下代码判断了手机设备的定位是否关闭,推荐另行使用方法 checkSystemEnableLocation
|
||||
/* var enable = cllocationManger.locationServicesEnabled();
|
||||
var status = cllocationManger.authorizationStatus();
|
||||
console.log("enable:" + enable);
|
||||
console.log("status:" + status);
|
||||
if (enable && status != 2) {
|
||||
result = true;
|
||||
console.log("手机定位服务已开启且已授予定位权限");
|
||||
} else {
|
||||
console.log("手机系统的定位没有打开或未给予定位权限");
|
||||
} */
|
||||
plus.ios.deleteObject(cllocationManger);
|
||||
return {
|
||||
result: result,
|
||||
permissionName: "定位"
|
||||
};
|
||||
}
|
||||
|
||||
// 判断麦克风权限是否开启
|
||||
function judgeIosPermissionRecord() {
|
||||
var result = 0;
|
||||
var avaudiosession = plus.ios.import("AVAudioSession");
|
||||
var avaudio = avaudiosession.sharedInstance();
|
||||
var permissionStatus = avaudio.recordPermission();
|
||||
console.log("permissionStatus:" + permissionStatus);
|
||||
if (permissionStatus == 1684369017 || permissionStatus == 1970168948) {
|
||||
console.log("麦克风权限没有开启");
|
||||
} else {
|
||||
result = 1;
|
||||
console.log("麦克风权限已经开启");
|
||||
}
|
||||
plus.ios.deleteObject(avaudiosession);
|
||||
return {
|
||||
result: result,
|
||||
permissionName: "麦克风"
|
||||
};
|
||||
}
|
||||
|
||||
// 判断相机权限是否开启
|
||||
function judgeIosPermissionCamera() {
|
||||
var result = 0;
|
||||
var AVCaptureDevice = plus.ios.import("AVCaptureDevice");
|
||||
var authStatus = AVCaptureDevice.authorizationStatusForMediaType('vide');
|
||||
console.log("authStatus:" + authStatus);
|
||||
if (authStatus == 3) {
|
||||
result = 1;
|
||||
console.log("相机权限已经开启");
|
||||
} else {
|
||||
console.log("相机权限没有开启");
|
||||
}
|
||||
plus.ios.deleteObject(AVCaptureDevice);
|
||||
return {
|
||||
result: result,
|
||||
permissionName: "相机"
|
||||
};
|
||||
}
|
||||
|
||||
// 判断相册权限是否开启
|
||||
function judgeIosPermissionPhotoLibrary() {
|
||||
var result = 0;
|
||||
var PHPhotoLibrary = plus.ios.import("PHPhotoLibrary");
|
||||
var authStatus = PHPhotoLibrary.authorizationStatus();
|
||||
console.log("authStatus:" + authStatus);
|
||||
if (authStatus == 3) {
|
||||
result = 1;
|
||||
console.log("相册权限已经开启");
|
||||
} else {
|
||||
console.log("相册权限没有开启");
|
||||
}
|
||||
plus.ios.deleteObject(PHPhotoLibrary);
|
||||
return {
|
||||
result: result,
|
||||
permissionName: "相册"
|
||||
};
|
||||
}
|
||||
|
||||
// 判断通讯录权限是否开启
|
||||
function judgeIosPermissionContact() {
|
||||
var result = 0;
|
||||
var CNContactStore = plus.ios.import("CNContactStore");
|
||||
var cnAuthStatus = CNContactStore.authorizationStatusForEntityType(0);
|
||||
if (cnAuthStatus == 3) {
|
||||
result = 1;
|
||||
console.log("通讯录权限已经开启");
|
||||
} else {
|
||||
console.log("通讯录权限没有开启");
|
||||
}
|
||||
plus.ios.deleteObject(CNContactStore);
|
||||
return {
|
||||
result: result,
|
||||
permissionName: "通讯录"
|
||||
};
|
||||
}
|
||||
|
||||
// 判断日历权限是否开启
|
||||
function judgeIosPermissionCalendar() {
|
||||
var result = 0;
|
||||
var EKEventStore = plus.ios.import("EKEventStore");
|
||||
var ekAuthStatus = EKEventStore.authorizationStatusForEntityType(0);
|
||||
if (ekAuthStatus == 3) {
|
||||
result = 1;
|
||||
console.log("日历权限已经开启");
|
||||
} else {
|
||||
console.log("日历权限没有开启");
|
||||
}
|
||||
plus.ios.deleteObject(EKEventStore);
|
||||
return {
|
||||
result: result,
|
||||
permissionName: "日历"
|
||||
};
|
||||
}
|
||||
|
||||
// 判断备忘录权限是否开启
|
||||
function judgeIosPermissionMemo() {
|
||||
var result = 0;
|
||||
var EKEventStore = plus.ios.import("EKEventStore");
|
||||
var ekAuthStatus = EKEventStore.authorizationStatusForEntityType(1);
|
||||
if (ekAuthStatus == 3) {
|
||||
result = 1;
|
||||
console.log("备忘录权限已经开启");
|
||||
} else {
|
||||
console.log("备忘录权限没有开启");
|
||||
}
|
||||
plus.ios.deleteObject(EKEventStore);
|
||||
return {
|
||||
result: result,
|
||||
permissionName: "备忘录"
|
||||
};
|
||||
}
|
||||
|
||||
// Android权限查询
|
||||
function requestAndroidPermission(permissionID, permissionName) {
|
||||
return new Promise((resolve, reject) => {
|
||||
plus.android.requestPermissions(
|
||||
[permissionID], // 理论上支持多个权限同时查询,但实际上本函数封装只处理了一个权限的情况。有需要的可自行扩展封装
|
||||
function (resultObj) {
|
||||
var result = 0;
|
||||
for (var i = 0; i < resultObj.granted.length; i++) {
|
||||
var grantedPermission = resultObj.granted[i];
|
||||
console.log('已获取的权限:' + grantedPermission);
|
||||
result = 1
|
||||
}
|
||||
for (var i = 0; i < resultObj.deniedPresent.length; i++) {
|
||||
var deniedPresentPermission = resultObj.deniedPresent[i];
|
||||
console.log('拒绝本次申请的权限:' + deniedPresentPermission);
|
||||
result = 0
|
||||
}
|
||||
for (var i = 0; i < resultObj.deniedAlways.length; i++) {
|
||||
var deniedAlwaysPermission = resultObj.deniedAlways[i];
|
||||
console.log('永久拒绝申请的权限:' + deniedAlwaysPermission);
|
||||
result = -1
|
||||
}
|
||||
resolve({
|
||||
result: result,
|
||||
permissionName: permissionName
|
||||
});
|
||||
// 若所需权限被拒绝,则打开APP设置界面,可以在APP设置界面打开相应权限
|
||||
// if (result != 1) {
|
||||
// gotoAppPermissionSetting()
|
||||
// }
|
||||
},
|
||||
function (error) {
|
||||
console.log('申请权限错误:' + error.code + " = " + error.message);
|
||||
resolve({
|
||||
code: error.code,
|
||||
message: error.message
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
// 使用一个方法,根据参数判断权限
|
||||
function judgePermission(permissionID, callback) {
|
||||
function handle(res) {
|
||||
callback && callback(res.result);
|
||||
if (res.result === -1 || res.result === 0) {
|
||||
uni.showModal({
|
||||
title: "提示",
|
||||
content: "您未授权" + res.permissionName + "权限,是否去应用设置里授权?",
|
||||
confirmText: "确认",
|
||||
cancelText: "取消",
|
||||
success: (data) => {
|
||||
if (data.confirm) {
|
||||
gotoAppPermissionSetting();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
if (permissionID == "location") { // 位置
|
||||
if (isIos) {
|
||||
handle(judgeIosPermissionLocation());
|
||||
} else {
|
||||
requestAndroidPermission("android.permission.ACCESS_FINE_LOCATION", "位置").then(handle);
|
||||
}
|
||||
} else if (permissionID == "camera") { // 摄像头
|
||||
if (isIos) {
|
||||
handle(judgeIosPermissionCamera());
|
||||
} else {
|
||||
requestAndroidPermission("android.permission.CAMERA", "摄像头").then(handle);
|
||||
}
|
||||
} else if (permissionID == "photoLibrary") { // 相册
|
||||
if (isIos) {
|
||||
handle(judgeIosPermissionPhotoLibrary());
|
||||
} else {
|
||||
requestAndroidPermission("android.permission.READ_EXTERNAL_STORAGE", "相册读取").then(handle);
|
||||
}
|
||||
} else if (permissionID == "record") { // 麦克风
|
||||
if (isIos) {
|
||||
handle(judgeIosPermissionRecord());
|
||||
} else {
|
||||
requestAndroidPermission("android.permission.RECORD_AUDIO", "麦克风").then(handle);
|
||||
}
|
||||
} else if (permissionID == "push") { // 推送
|
||||
if (isIos) {
|
||||
handle(judgeIosPermissionPush());
|
||||
} else {
|
||||
handle(1);
|
||||
}
|
||||
} else if (permissionID == "contact") { // 通讯录
|
||||
if (isIos) {
|
||||
handle(judgeIosPermissionContact());
|
||||
} else {
|
||||
requestAndroidPermission("android.permission.READ_CONTACTS", "通讯录读取").then(handle);
|
||||
}
|
||||
} else if (permissionID == "calendar") { // 日历
|
||||
if (isIos) {
|
||||
handle(judgeIosPermissionCalendar());
|
||||
} else {
|
||||
requestAndroidPermission("android.permission.READ_CALENDAR", "日历读取").then(handle);
|
||||
}
|
||||
} else if (permissionID == "memo") { // 备忘录
|
||||
if (isIos) {
|
||||
handle(judgeIosPermissionMemo());
|
||||
} else {
|
||||
handle(1);
|
||||
}
|
||||
} else if (permissionID == "call_phone") { // 拨打电话
|
||||
if (isIos) {
|
||||
handle(1);
|
||||
} else {
|
||||
requestAndroidPermission("android.permission.CALL_PHONE", "拨打电话").then(handle);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 跳转到**应用**的权限页面
|
||||
function gotoAppPermissionSetting() {
|
||||
if (isIos) {
|
||||
var UIApplication = plus.ios.import("UIApplication");
|
||||
var application2 = UIApplication.sharedApplication();
|
||||
var NSURL2 = plus.ios.import("NSURL");
|
||||
// var setting2 = NSURL2.URLWithString("prefs:root=LOCATION_SERVICES");
|
||||
var setting2 = NSURL2.URLWithString("app-settings:");
|
||||
application2.openURL(setting2);
|
||||
|
||||
plus.ios.deleteObject(setting2);
|
||||
plus.ios.deleteObject(NSURL2);
|
||||
plus.ios.deleteObject(application2);
|
||||
} else {
|
||||
// console.log(plus.device.vendor);
|
||||
var Intent = plus.android.importClass("android.content.Intent");
|
||||
var Settings = plus.android.importClass("android.provider.Settings");
|
||||
var Uri = plus.android.importClass("android.net.Uri");
|
||||
var mainActivity = plus.android.runtimeMainActivity();
|
||||
var intent = new Intent();
|
||||
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
|
||||
var uri = Uri.fromParts("package", mainActivity.getPackageName(), null);
|
||||
intent.setData(uri);
|
||||
mainActivity.startActivity(intent);
|
||||
}
|
||||
}
|
||||
|
||||
// 检查系统的设备服务是否开启
|
||||
// var checkSystemEnableLocation = async function () {
|
||||
function checkSystemEnableLocation() {
|
||||
if (isIos) {
|
||||
var result = false;
|
||||
var cllocationManger = plus.ios.import("CLLocationManager");
|
||||
var result = cllocationManger.locationServicesEnabled();
|
||||
console.log("系统定位开启:" + result);
|
||||
plus.ios.deleteObject(cllocationManger);
|
||||
return result;
|
||||
} else {
|
||||
var context = plus.android.importClass("android.content.Context");
|
||||
var locationManager = plus.android.importClass("android.location.LocationManager");
|
||||
var main = plus.android.runtimeMainActivity();
|
||||
var mainSvr = main.getSystemService(context.LOCATION_SERVICE);
|
||||
var result = mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER);
|
||||
console.log("系统定位开启:" + result);
|
||||
return result
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
judgePermission: judgePermission,
|
||||
requestAndroidPermission: requestAndroidPermission,
|
||||
checkSystemEnableLocation: checkSystemEnableLocation,
|
||||
gotoAppPermissionSetting: gotoAppPermissionSetting
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
import axios from "../js_sdk/xtshadow-axios/axios.min";
|
||||
import store from "../store";
|
||||
import { paramsToStr, currentPage, tabbarList, acountList } from "./tools";
|
||||
import Cache from "./cache";
|
||||
import { TOKEN, BACK_URL } from "../config/cachekey";
|
||||
import { baseURL } from "../config/app";
|
||||
import { getWxCode, toLogin, wxMnpLogin } from "./login";
|
||||
|
||||
let index = 0;
|
||||
|
||||
function checkParams(params) {
|
||||
if (typeof params != "object") return params;
|
||||
for (let key in params) {
|
||||
const value = params[key];
|
||||
if (value === null || value === undefined || value === "") {
|
||||
delete params[key];
|
||||
}
|
||||
}
|
||||
return params;
|
||||
}
|
||||
|
||||
const service = axios.create({
|
||||
baseURL: `${baseURL}/api/`,
|
||||
timeout: 10000,
|
||||
header: {
|
||||
"content-type": "application/json",
|
||||
},
|
||||
});
|
||||
|
||||
// request拦截器
|
||||
service.interceptors.request.use(
|
||||
(config) => {
|
||||
config.data = checkParams(config.data);
|
||||
config.params = checkParams(config.params);
|
||||
if (config.method == "GET") {
|
||||
config.url += paramsToStr(config.params);
|
||||
}
|
||||
config.header.token = config.header.token || Cache.get(TOKEN);
|
||||
return config;
|
||||
},
|
||||
(error) => {
|
||||
// Do something with request error
|
||||
console.log(error); // for debug
|
||||
Promise.reject(error);
|
||||
}
|
||||
);
|
||||
|
||||
// response 拦截器
|
||||
service.interceptors.response.use(
|
||||
async (response) => {
|
||||
if (response.data) {
|
||||
const { code, show, msg } = response.data;
|
||||
const { route, options } = currentPage();
|
||||
if (code == 0 && show && msg) {
|
||||
uni.showToast({
|
||||
title: msg,
|
||||
icon: "none",
|
||||
});
|
||||
} else if (code == -1) {
|
||||
store.commit("LOGOUT");
|
||||
//#ifdef MP-WEIXIN
|
||||
wxMnpLogin();
|
||||
// #endif
|
||||
//#ifdef H5 || APP-PLUS
|
||||
if (route && !tabbarList.includes(route)) {
|
||||
toLogin();
|
||||
}
|
||||
// #endif
|
||||
//#ifdef H5
|
||||
if (!acountList.includes(route)) {
|
||||
Cache.set(BACK_URL, `/${route}${paramsToStr(options)}`);
|
||||
}
|
||||
// #endif
|
||||
}
|
||||
}
|
||||
|
||||
return Promise.resolve(response.data);
|
||||
},
|
||||
(error) => {
|
||||
// tryHideFullScreenLoading()
|
||||
console.log(error);
|
||||
console.log("err" + error); // for debug
|
||||
return Promise.reject(error);
|
||||
}
|
||||
);
|
||||
|
||||
export default service;
|
||||
+405
@@ -0,0 +1,405 @@
|
||||
import { loadingType } from "./type";
|
||||
import { baseURL } from "@/config/app.js";
|
||||
|
||||
import store from "@/store";
|
||||
|
||||
//所在环境
|
||||
let client = null;
|
||||
// #ifdef MP-WEIXIN
|
||||
client = 1;
|
||||
// #endif
|
||||
|
||||
// #ifdef H5
|
||||
client = isWeixinClient() ? 2 : 6;
|
||||
// #endif
|
||||
|
||||
// #ifdef APP-PLUS
|
||||
client = 3;
|
||||
uni.getSystemInfo({
|
||||
success: (res) => {
|
||||
client = res.platform == "ios" ? 3 : 4;
|
||||
},
|
||||
fail: (res) => {
|
||||
client = 3;
|
||||
},
|
||||
});
|
||||
// #endif
|
||||
export { client };
|
||||
|
||||
//节流
|
||||
export const trottle = (func, time = 1000, context) => {
|
||||
let previous = new Date(0).getTime();
|
||||
return function (...args) {
|
||||
let now = new Date().getTime();
|
||||
if (now - previous > time) {
|
||||
func.apply(context, args);
|
||||
previous = now;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
//判断是否为微信环境
|
||||
export function isWeixinClient() {
|
||||
var ua = navigator.userAgent.toLowerCase();
|
||||
if (ua.match(/MicroMessenger/i) == "micromessenger") {
|
||||
//这是微信环境
|
||||
return true;
|
||||
} else {
|
||||
//这是非微信环境
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//判断是否为安卓环境
|
||||
export function isAndroid() {
|
||||
let u = navigator.userAgent;
|
||||
return u.indexOf("Android") > -1 || u.indexOf("Adr") > -1;
|
||||
}
|
||||
|
||||
//获取url后的参数 以对象返回
|
||||
export function strToParams(str) {
|
||||
var newparams = {};
|
||||
for (let item of str.split("&")) {
|
||||
newparams[item.split("=")[0]] = item.split("=")[1];
|
||||
}
|
||||
return newparams;
|
||||
}
|
||||
|
||||
//重写encodeURL函数
|
||||
export function urlencode(str) {
|
||||
str = (str + "").toString();
|
||||
return encodeURIComponent(str)
|
||||
.replace(/!/g, "%21")
|
||||
.replace(/'/g, "%27")
|
||||
.replace(/\(/g, "%28")
|
||||
.replace(/\)/g, "%29")
|
||||
.replace(/\*/g, "%2A")
|
||||
.replace(/%20/g, "+");
|
||||
}
|
||||
|
||||
//一维数组截取为二维数组
|
||||
|
||||
export function arraySlice(data, array = [], optNum = 10) {
|
||||
data = JSON.parse(JSON.stringify(data));
|
||||
if (data.length <= optNum) {
|
||||
data.length > 0 && array.push(data);
|
||||
return array;
|
||||
}
|
||||
array.push(data.splice(0, optNum));
|
||||
return arraySlice(data, array, optNum);
|
||||
}
|
||||
|
||||
//对象参数转为以?&拼接的字符
|
||||
export function paramsToStr(params) {
|
||||
let p = "";
|
||||
if (typeof params == "object") {
|
||||
p = "?";
|
||||
for (let props in params) {
|
||||
p += `${props}=${params[props]}&`;
|
||||
}
|
||||
p = p.slice(0, -1);
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
//分页加载
|
||||
export async function loadingFun(fun, page, dataList = [], status, params) {
|
||||
// 拷贝对象
|
||||
dataList = Object.assign([], dataList);
|
||||
if (status == loadingType.FINISHED) return false;
|
||||
const { code, data } = await fun({
|
||||
page_no: page,
|
||||
...params,
|
||||
});
|
||||
uni.stopPullDownRefresh();
|
||||
if (code == 1) {
|
||||
if (page == 1) dataList = [];
|
||||
let { list, more } = data;
|
||||
dataList.push(...list);
|
||||
page = ++page;
|
||||
if (!more) {
|
||||
status = loadingType.FINISHED;
|
||||
}
|
||||
if (dataList.length <= 0) {
|
||||
status = loadingType.EMPTY;
|
||||
}
|
||||
} else {
|
||||
status = loadingType.ERROR;
|
||||
}
|
||||
return {
|
||||
page,
|
||||
dataList,
|
||||
status,
|
||||
};
|
||||
}
|
||||
|
||||
// 获取wxml元素
|
||||
|
||||
export function getRect(selector, all, context) {
|
||||
return new Promise(function (resolve) {
|
||||
let qurey = uni.createSelectorQuery();
|
||||
|
||||
if (context) {
|
||||
qurey = uni.createSelectorQuery().in(context);
|
||||
}
|
||||
|
||||
qurey[all ? "selectAll" : "select"](selector)
|
||||
.boundingClientRect(function (rect) {
|
||||
if (all && Array.isArray(rect) && rect.length) {
|
||||
resolve(rect);
|
||||
}
|
||||
if (!all && rect) {
|
||||
resolve(rect);
|
||||
}
|
||||
})
|
||||
.exec();
|
||||
});
|
||||
}
|
||||
|
||||
// 轻提示
|
||||
export function toast(info = {}, navigateOpt) {
|
||||
let title = info.title || "";
|
||||
let icon = info.icon || "none";
|
||||
let endtime = info.endtime || 2000;
|
||||
if (title)
|
||||
uni.showToast({
|
||||
title: title,
|
||||
icon: icon,
|
||||
duration: endtime,
|
||||
});
|
||||
if (navigateOpt != undefined) {
|
||||
if (typeof navigateOpt == "object") {
|
||||
let tab = navigateOpt.tab || 1,
|
||||
url = navigateOpt.url || "";
|
||||
switch (tab) {
|
||||
case 1:
|
||||
//跳转至 table
|
||||
setTimeout(function () {
|
||||
uni.switchTab({
|
||||
url: url,
|
||||
});
|
||||
}, endtime);
|
||||
break;
|
||||
case 2:
|
||||
//跳转至非table页面
|
||||
setTimeout(function () {
|
||||
uni.navigateTo({
|
||||
url: url,
|
||||
});
|
||||
}, endtime);
|
||||
break;
|
||||
case 3:
|
||||
//返回上页面
|
||||
setTimeout(function () {
|
||||
uni.navigateBack({
|
||||
delta: parseInt(url),
|
||||
});
|
||||
}, endtime);
|
||||
break;
|
||||
case 4:
|
||||
//关闭当前所有页面跳转至非table页面
|
||||
setTimeout(function () {
|
||||
uni.reLaunch({
|
||||
url: url,
|
||||
});
|
||||
}, endtime);
|
||||
break;
|
||||
case 5:
|
||||
//关闭当前页面跳转至非table页面
|
||||
setTimeout(function () {
|
||||
uni.redirectTo({
|
||||
url: url,
|
||||
});
|
||||
}, endtime);
|
||||
break;
|
||||
}
|
||||
} else if (typeof navigateOpt == "function") {
|
||||
setTimeout(function () {
|
||||
navigateOpt && navigateOpt();
|
||||
}, endtime);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//菜单跳转
|
||||
export function menuJump(item) {
|
||||
const { is_tab, link, link_type } = item;
|
||||
switch (link_type) {
|
||||
case 1:
|
||||
// 本地跳转
|
||||
if (is_tab) {
|
||||
uni.switchTab({
|
||||
url: link,
|
||||
});
|
||||
return;
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: link,
|
||||
});
|
||||
break;
|
||||
|
||||
case 2:
|
||||
// webview
|
||||
uni.navigateTo({
|
||||
url: "/pages/webview/webview?url=" + link,
|
||||
});
|
||||
break;
|
||||
|
||||
case 3: // tabbar
|
||||
}
|
||||
}
|
||||
|
||||
export function uploadFile(path) {
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.uploadFile({
|
||||
url: `${baseURL}/api/file/formimage`,
|
||||
filePath: path,
|
||||
name: "file",
|
||||
header: {
|
||||
token: store.getters.token,
|
||||
},
|
||||
fileType: "image",
|
||||
cloudPath: "",
|
||||
success: (res) => {
|
||||
console.log("uploadFile res ==> ", res);
|
||||
let data = JSON.parse(res.data);
|
||||
if (data.code == 1) {
|
||||
resolve(data.data);
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
console.log(err);
|
||||
reject();
|
||||
},
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
//当前页面
|
||||
|
||||
export function currentPage() {
|
||||
let pages = getCurrentPages();
|
||||
let currentPage = pages[pages.length - 1];
|
||||
return currentPage || {};
|
||||
}
|
||||
|
||||
// H5复制方法
|
||||
export function copy(str) {
|
||||
// #ifdef H5
|
||||
let aux = document.createElement("input");
|
||||
aux.setAttribute("value", str);
|
||||
document.body.appendChild(aux);
|
||||
aux.select();
|
||||
document.execCommand("copy");
|
||||
document.body.removeChild(aux);
|
||||
uni.showToast({
|
||||
title: "复制成功",
|
||||
});
|
||||
// #endif
|
||||
|
||||
// #ifndef H5
|
||||
uni.setClipboardData({
|
||||
data: str.toString(),
|
||||
});
|
||||
// #endif
|
||||
}
|
||||
|
||||
export function setTabbar() {
|
||||
const config = store.getters.appConfig;
|
||||
uni.setTabBarStyle({
|
||||
color: config.navigation_setting.ust_color,
|
||||
selectedColor: config.navigation_setting.st_color,
|
||||
});
|
||||
// #ifdef APP-PLUS
|
||||
config.navigation_menu.forEach((item, index) => {
|
||||
uni.downloadFile({
|
||||
url: item.un_selected_icon,
|
||||
success: (res) => {
|
||||
uni.setTabBarItem({
|
||||
index,
|
||||
iconPath: res.tempFilePath,
|
||||
});
|
||||
},
|
||||
});
|
||||
uni.downloadFile({
|
||||
url: item.un_selected_icon,
|
||||
success: (res) => {
|
||||
uni.setTabBarItem({
|
||||
index,
|
||||
iconPath: res.tempFilePath,
|
||||
});
|
||||
},
|
||||
});
|
||||
uni.downloadFile({
|
||||
url: item.selected_icon,
|
||||
success: (res) => {
|
||||
uni.setTabBarItem({
|
||||
index,
|
||||
selectedIconPath: res.tempFilePath,
|
||||
});
|
||||
},
|
||||
});
|
||||
});
|
||||
// #endif
|
||||
// #ifndef APP-PLUS
|
||||
config.navigation_menu.forEach((item, index) => {
|
||||
uni.setTabBarItem({
|
||||
index,
|
||||
text: item.name,
|
||||
iconPath: item.un_selected_icon,
|
||||
selectedIconPath: item.selected_icon,
|
||||
fail(res) {
|
||||
console.log(res);
|
||||
},
|
||||
success(res) {
|
||||
// console.log(res)
|
||||
},
|
||||
});
|
||||
});
|
||||
// #endif
|
||||
// #ifndef MP
|
||||
|
||||
uni.showTabBar();
|
||||
// #endif
|
||||
}
|
||||
|
||||
// tabbar页面路径
|
||||
export const tabbarList = [
|
||||
"pages/shop_cart/shop_cart",
|
||||
"pages/user/user",
|
||||
"pages/index/index",
|
||||
"pages/sort/sort",
|
||||
];
|
||||
// 登录注册相关
|
||||
export const acountList = [
|
||||
"pages/login/login",
|
||||
"pages/forget_pwd/forget_pwd",
|
||||
"pages/register/register",
|
||||
];
|
||||
|
||||
/**
|
||||
* @description 获取当前微信小程序基础库版本号
|
||||
*/
|
||||
export function getBaseLibraryVersion() {
|
||||
const { SDKVersion } = wx.getSystemInfoSync();
|
||||
return SDKVersion;
|
||||
}
|
||||
/**
|
||||
* @description 用于比较当前微信基础库版本与目标基础库版本
|
||||
* 示例用法:比较小程序基础库版本是否大于等于 2.12.0 compareWeChatVersion("2.12.0")
|
||||
* return 1 =>当前版本大于目标版本 return -1 =>当前版本小于目标版本 return 0 =>当前版本等于目标版本
|
||||
* @param {string} targetVersion 目标微信版本号
|
||||
*
|
||||
*/
|
||||
export function compareWeChatVersion(targetVersion) {
|
||||
const currentVersion = getBaseLibraryVersion();
|
||||
if (currentVersion === targetVersion) {
|
||||
return 0; // 当前版本与目标版本相同
|
||||
} else if (currentVersion > targetVersion) {
|
||||
return 1; // 当前版本大于目标版本
|
||||
} else {
|
||||
return -1; // 当前版本小于目标版本
|
||||
}
|
||||
}
|
||||
+114
@@ -0,0 +1,114 @@
|
||||
|
||||
//分页状态
|
||||
export const loadingType = {
|
||||
LOADING: 'loading',
|
||||
FINISHED: 'finished',
|
||||
ERROR: 'error',
|
||||
EMPTY: 'empty'
|
||||
};
|
||||
|
||||
// 收藏状态
|
||||
export const CollectType = {
|
||||
COLLECTION: 1,
|
||||
CANCEL_COLLECTION: 0
|
||||
}
|
||||
|
||||
//支付方式
|
||||
export const payWay = {
|
||||
WECHAT: 1,
|
||||
ALIPAY: 2,
|
||||
BALANCE:3
|
||||
}
|
||||
|
||||
export const orderType = {
|
||||
ALL: 'all',
|
||||
//全部
|
||||
PAY: 'pay',
|
||||
//待付款
|
||||
DELIVERY: 'delivery',
|
||||
//待收货
|
||||
FINISH: 'finish',
|
||||
//待收货
|
||||
CLOSE: 'close' //待收货
|
||||
|
||||
};
|
||||
// 售后状态
|
||||
export const AfterSaleType = {
|
||||
// 售后申请
|
||||
NORMAL: 'normal',
|
||||
// 处理中
|
||||
HANDLING: 'apply',
|
||||
// 已处理
|
||||
FINISH: 'finish'
|
||||
}
|
||||
|
||||
// 售后退款操作
|
||||
export const refundOptType = {
|
||||
// 仅退款
|
||||
ONLY_REFUND: 0,
|
||||
// 退货退款
|
||||
REFUNDS: 1
|
||||
}
|
||||
|
||||
// 短信发送
|
||||
export const SMSType = {
|
||||
// 注册
|
||||
REGISTER: 'ZCYZ',
|
||||
// 找回密码
|
||||
FINDPWD: 'ZHMM',
|
||||
// 登陆
|
||||
LOGIN: 'YZMDL',
|
||||
// 更换手机号
|
||||
CHANGE_MOBILE: 'BGSJHM',
|
||||
// 绑定手机号
|
||||
BIND: 'BDSJHM'
|
||||
}
|
||||
|
||||
// 分销订单状态
|
||||
export const userOrderPromoteOrder = {
|
||||
ALL: 0,
|
||||
WAIT_RETURN: 1,
|
||||
HANDLED: 2,
|
||||
INVALED: 3
|
||||
}
|
||||
|
||||
// 排序类型
|
||||
export const SortType = {
|
||||
NONE: '',
|
||||
ASC: 'asc',
|
||||
DESC: 'desc'
|
||||
}
|
||||
|
||||
// 粉丝类型
|
||||
export const FansType = {
|
||||
ALL: 'all',
|
||||
FIRST: 'first',
|
||||
SECOND: 'second'
|
||||
}
|
||||
|
||||
|
||||
export const groupType = {
|
||||
ALL: -1,
|
||||
PROGESS: 0,
|
||||
SUCCESS: 1,
|
||||
FAIL: 2
|
||||
};
|
||||
|
||||
export const bargainType = {
|
||||
ALL: -1,
|
||||
BARGINNING: 0,
|
||||
SUCCESS: 1,
|
||||
FAIL: 2
|
||||
}
|
||||
|
||||
export const withdrawType = {
|
||||
// 账户余额
|
||||
ACCOUNT: 1,
|
||||
// 微信零钱
|
||||
WECHAT: 2,
|
||||
// 微信收款码
|
||||
PAY_WECHAT: 3,
|
||||
// 支付宝收款码
|
||||
PAY_ALIPAY: 4,
|
||||
BANK: 5
|
||||
}
|
||||
@@ -0,0 +1,159 @@
|
||||
// #ifdef H5
|
||||
import weixin from "@/js_sdk/jweixin-module";
|
||||
import {
|
||||
isAndroid
|
||||
} from "./tools"
|
||||
import {
|
||||
getJsconfig,
|
||||
getCodeUrl,
|
||||
wechatLogin
|
||||
} from '@/api/app'
|
||||
import store from '../store'
|
||||
import Cache from './cache'
|
||||
import {inputInviteCode} from "@/api/user"
|
||||
class Wechath5 {
|
||||
|
||||
//获取微信配置url
|
||||
signLink() {
|
||||
if (typeof window.entryUrl === 'undefined' || window.entryUrl === '') {
|
||||
window.entryUrl = location.href.split('#')[0]
|
||||
}
|
||||
return isAndroid() ? location.href.split('#')[0] : window.entryUrl;
|
||||
}
|
||||
//微信sdk配置
|
||||
config() {
|
||||
return new Promise((resolve) => {
|
||||
getJsconfig().then(res => {
|
||||
if (res.code == 1) {
|
||||
let config = res.data.config
|
||||
weixin.config({
|
||||
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
|
||||
appId: config.appId, // 必填,公众号的唯一标识
|
||||
timestamp: config.timestamp, // 必填,生成签名的时间戳
|
||||
nonceStr: config.nonceStr, // 必填,生成签名的随机串
|
||||
signature: config.signature, // 必填,签名
|
||||
jsApiList: config.jsApiList // 必填,需要使用的JS接口列表
|
||||
});
|
||||
resolve()
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
//获取微信登录url
|
||||
getWxUrl() {
|
||||
getCodeUrl().then(res => {
|
||||
if (res.code == 1) {
|
||||
location.href = res.data.url
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
//微信授权
|
||||
authLogin(code) {
|
||||
return new Promise((resolve, reject) => {
|
||||
wechatLogin({
|
||||
code
|
||||
})
|
||||
.then(res => {
|
||||
if(res.code == 1) {
|
||||
store.commit("LOGIN", {
|
||||
token: res.data.token
|
||||
});
|
||||
resolve(res.data);
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
//微信分享
|
||||
share(option) {
|
||||
weixin.ready(() => {
|
||||
const {
|
||||
shareTitle,
|
||||
shareLink,
|
||||
shareImage,
|
||||
shareDesc
|
||||
} = option
|
||||
weixin.updateTimelineShareData({
|
||||
title: shareTitle, // 分享标题
|
||||
link: shareLink, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
|
||||
imgUrl: shareImage, // 分享图标
|
||||
success: function(res) {
|
||||
// 设置成功
|
||||
}
|
||||
});
|
||||
// 发送给好友
|
||||
weixin.updateAppMessageShareData({
|
||||
title: shareTitle, // 分享标题
|
||||
link: shareLink, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
|
||||
imgUrl: shareImage, // 分享图标
|
||||
desc: shareDesc,
|
||||
success: function(res) {
|
||||
// 设置成功
|
||||
}
|
||||
});
|
||||
// 发送到tx微博
|
||||
weixin.onMenuShareWeibo({
|
||||
title: shareTitle, // 分享标题
|
||||
link: shareLink, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
|
||||
imgUrl: shareImage, // 分享图标
|
||||
desc: shareDesc,
|
||||
success: function(res) {
|
||||
// 设置成功
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
wxPay(opt) {
|
||||
return new Promise((reslove, reject) => {
|
||||
weixin.ready(() => {
|
||||
weixin.chooseWXPay({
|
||||
timestamp: opt.timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
|
||||
nonceStr: opt.nonceStr, // 支付签名随机串,不长于 32 位
|
||||
package: opt.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
|
||||
signType: opt.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
|
||||
paySign: opt.paySign, // 支付签名
|
||||
success: (res) => {
|
||||
reslove('success')
|
||||
},
|
||||
cancel: (res) => {
|
||||
reslove('fail')
|
||||
},
|
||||
fail: (res) => {
|
||||
reslove('fail')
|
||||
},
|
||||
});
|
||||
});
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
getWxAddress() {
|
||||
return new Promise((reslove, reject) => {
|
||||
weixin.ready(() => {
|
||||
weixin.openAddress({
|
||||
success: (res) => {
|
||||
reslove(res)
|
||||
},
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
scanQRCode() {
|
||||
return new Promise((reslove, reject) => {
|
||||
weixin.ready(() => {
|
||||
weixin.scanQRCode({
|
||||
needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
|
||||
scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有
|
||||
success: function(res) {
|
||||
reslove(res.resultStr)
|
||||
}
|
||||
});
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
export default new Wechath5()
|
||||
// #endif
|
||||
Reference in new issue
Block a user