├── pages
├── find
│ ├── find.json
│ ├── play
│ │ ├── play.json
│ │ ├── play.wxml
│ │ ├── play.wxss
│ │ └── play.js
│ ├── find.wxml
│ ├── find.wxss
│ └── find.js
├── user
│ ├── user.json
│ ├── login
│ │ ├── login.json
│ │ ├── login.wxss
│ │ ├── login.wxml
│ │ └── login.js
│ ├── register
│ │ ├── register.json
│ │ ├── register.wxss
│ │ ├── register.wxml
│ │ └── register.js
│ ├── user.wxml
│ ├── user.wxss
│ └── user.js
├── device
│ ├── device.json
│ ├── gps
│ │ ├── gps.json
│ │ ├── gps.wxss
│ │ ├── gps.wxml
│ │ └── gps.js
│ ├── hum
│ │ ├── hum.json
│ │ ├── hum.wxml
│ │ ├── hum.wxss
│ │ └── hum.js
│ ├── pm
│ │ ├── pm.json
│ │ ├── pm.wxml
│ │ ├── pm.wxss
│ │ └── pm.js
│ ├── temper
│ │ ├── temper.json
│ │ ├── temper.wxss
│ │ ├── temper.wxml
│ │ └── temper.js
│ ├── bluetooth
│ │ ├── set
│ │ │ ├── set.json
│ │ │ ├── set.wxss
│ │ │ ├── set.wxml
│ │ │ └── set.js
│ │ ├── bluetooth.json
│ │ ├── control
│ │ │ ├── control.json
│ │ │ ├── img
│ │ │ │ ├── 1.png
│ │ │ │ ├── 10.png
│ │ │ │ ├── 11.png
│ │ │ │ ├── 12.png
│ │ │ │ ├── 2.png
│ │ │ │ ├── 3.png
│ │ │ │ ├── 4.png
│ │ │ │ ├── 5.png
│ │ │ │ ├── 6.png
│ │ │ │ ├── 7.png
│ │ │ │ ├── 8.png
│ │ │ │ ├── 9.png
│ │ │ │ ├── down.png
│ │ │ │ └── white.png
│ │ │ ├── control.wxss
│ │ │ ├── control.wxml
│ │ │ └── control.js
│ │ ├── img
│ │ │ ├── 1.png
│ │ │ ├── 2.png
│ │ │ ├── 3.png
│ │ │ └── 4.png
│ │ ├── bluetooth.wxml
│ │ ├── bluetooth.wxss
│ │ └── bluetooth.js
│ ├── webview
│ │ ├── webview.json
│ │ ├── webview.wxss
│ │ ├── webview.wxml
│ │ └── webview.js
│ ├── switch
│ │ ├── switch.json
│ │ ├── img
│ │ │ ├── 1.png
│ │ │ ├── 2.png
│ │ │ ├── 3.png
│ │ │ └── 5.png
│ │ ├── cell.wxml
│ │ ├── switch.wxss
│ │ ├── switch.wxml
│ │ └── switch.js
│ ├── scan-code
│ │ ├── scan-code.json
│ │ ├── scan-code.wxml
│ │ ├── scan-code.wxss
│ │ └── scan-code.js
│ ├── img
│ │ ├── switch.png
│ │ ├── pmsensor.png
│ │ ├── scancode.png
│ │ ├── webview.png
│ │ ├── bluetooth.png
│ │ ├── gpssensor.png
│ │ ├── humsensor.png
│ │ └── tempsensor.png
│ ├── device.wxml
│ ├── device.js
│ └── device.wxss
├── index
│ ├── in
│ │ ├── in.json
│ │ ├── in.wxss
│ │ ├── in.wxml
│ │ └── in.js
│ ├── index.json
│ ├── news
│ │ ├── news.json
│ │ ├── news.wxml
│ │ ├── news.wxss
│ │ └── news.js
│ ├── img
│ │ └── ari.png
│ ├── index.wxml
│ ├── index.wxss
│ └── index.js
├── logs
│ ├── logs.json
│ ├── logs.wxss
│ ├── logs.wxml
│ └── logs.js
└── common
│ ├── head.wxml
│ ├── foot.wxml
│ └── lib
│ └── weui.wxss
├── img
├── find.png
├── home.png
├── map.png
├── user.png
├── device.png
├── findH.png
├── homeH.png
├── userH.png
├── deviceH.png
├── findlogo.png
└── devicelogo.png
├── 资料
├── API.docx
└── 数据结构.docx
├── wxParse
├── emojis
│ ├── 00.gif
│ ├── 01.gif
│ ├── 02.gif
│ ├── 03.gif
│ ├── 04.gif
│ ├── 05.gif
│ ├── 06.gif
│ ├── 07.gif
│ ├── 08.gif
│ ├── 09.gif
│ ├── 10.gif
│ ├── 100.gif
│ ├── 101.gif
│ ├── 102.gif
│ ├── 103.gif
│ ├── 104.gif
│ ├── 105.gif
│ ├── 106.gif
│ ├── 107.gif
│ ├── 108.gif
│ ├── 109.gif
│ ├── 11.gif
│ ├── 110.gif
│ ├── 111.gif
│ ├── 112.gif
│ ├── 113.gif
│ ├── 114.gif
│ ├── 115.gif
│ ├── 116.gif
│ ├── 117.gif
│ ├── 118.gif
│ ├── 119.gif
│ ├── 12.gif
│ ├── 120.gif
│ ├── 121.gif
│ ├── 122.gif
│ ├── 123.gif
│ ├── 124.gif
│ ├── 125.gif
│ ├── 126.gif
│ ├── 127.gif
│ ├── 128.gif
│ ├── 129.gif
│ ├── 13.gif
│ ├── 130.gif
│ ├── 131.gif
│ ├── 132.gif
│ ├── 133.gif
│ ├── 134.gif
│ ├── 14.gif
│ ├── 15.gif
│ ├── 16.gif
│ ├── 17.gif
│ ├── 18.gif
│ ├── 19.gif
│ ├── 20.gif
│ ├── 21.gif
│ ├── 22.gif
│ ├── 23.gif
│ ├── 24.gif
│ ├── 25.gif
│ ├── 26.gif
│ ├── 27.gif
│ ├── 28.gif
│ ├── 29.gif
│ ├── 30.gif
│ ├── 31.gif
│ ├── 32.gif
│ ├── 33.gif
│ ├── 34.gif
│ ├── 35.gif
│ ├── 36.gif
│ ├── 37.gif
│ ├── 38.gif
│ ├── 39.gif
│ ├── 40.gif
│ ├── 41.gif
│ ├── 42.gif
│ ├── 43.gif
│ ├── 44.gif
│ ├── 45.gif
│ ├── 46.gif
│ ├── 47.gif
│ ├── 48.gif
│ ├── 49.gif
│ ├── 50.gif
│ ├── 51.gif
│ ├── 52.gif
│ ├── 53.gif
│ ├── 54.gif
│ ├── 55.gif
│ ├── 56.gif
│ ├── 57.gif
│ ├── 58.gif
│ ├── 59.gif
│ ├── 60.gif
│ ├── 61.gif
│ ├── 62.gif
│ ├── 63.gif
│ ├── 64.gif
│ ├── 65.gif
│ ├── 66.gif
│ ├── 67.gif
│ ├── 68.gif
│ ├── 69.gif
│ ├── 70.gif
│ ├── 71.gif
│ ├── 72.gif
│ ├── 73.gif
│ ├── 74.gif
│ ├── 75.gif
│ ├── 76.gif
│ ├── 77.gif
│ ├── 78.gif
│ ├── 79.gif
│ ├── 80.gif
│ ├── 81.gif
│ ├── 82.gif
│ ├── 83.gif
│ ├── 84.gif
│ ├── 85.gif
│ ├── 86.gif
│ ├── 87.gif
│ ├── 88.gif
│ ├── 89.gif
│ ├── 90.gif
│ ├── 91.gif
│ ├── 92.gif
│ ├── 93.gif
│ ├── 94.gif
│ ├── 95.gif
│ ├── 96.gif
│ ├── 97.gif
│ ├── 98.gif
│ └── 99.gif
├── wxParse.wxss
├── wxParse.js
├── htmlparser.js
├── wxDiscode.js
├── html2json.js
└── wxParse.wxml
├── app.wxss
├── utils
├── util.js
└── myfunction.js
├── project.config.json
├── app.js
├── README.md
└── app.json
/pages/find/find.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/pages/user/user.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/pages/device/device.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/pages/device/gps/gps.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/pages/device/hum/hum.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/pages/device/pm/pm.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/pages/find/play/play.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/pages/index/in/in.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/pages/index/index.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/pages/index/news/news.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/pages/device/temper/temper.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/pages/user/login/login.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/pages/device/bluetooth/set/set.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/pages/device/webview/webview.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/pages/user/register/register.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/pages/device/bluetooth/bluetooth.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/pages/device/bluetooth/control/control.json:
--------------------------------------------------------------------------------
1 | {
2 | }
--------------------------------------------------------------------------------
/pages/index/in/in.wxss:
--------------------------------------------------------------------------------
1 | /* pages/index/in/in.wxss */
--------------------------------------------------------------------------------
/pages/device/webview/webview.wxss:
--------------------------------------------------------------------------------
1 | /* pages/device/webview/webview.wxss */
--------------------------------------------------------------------------------
/pages/logs/logs.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "查看启动日志"
3 | }
--------------------------------------------------------------------------------
/img/find.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/img/find.png
--------------------------------------------------------------------------------
/img/home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/img/home.png
--------------------------------------------------------------------------------
/img/map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/img/map.png
--------------------------------------------------------------------------------
/img/user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/img/user.png
--------------------------------------------------------------------------------
/资料/API.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/资料/API.docx
--------------------------------------------------------------------------------
/资料/数据结构.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/资料/数据结构.docx
--------------------------------------------------------------------------------
/img/device.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/img/device.png
--------------------------------------------------------------------------------
/img/findH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/img/findH.png
--------------------------------------------------------------------------------
/img/homeH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/img/homeH.png
--------------------------------------------------------------------------------
/img/userH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/img/userH.png
--------------------------------------------------------------------------------
/pages/device/switch/switch.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "全部开关"
3 | }
--------------------------------------------------------------------------------
/img/deviceH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/img/deviceH.png
--------------------------------------------------------------------------------
/img/findlogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/img/findlogo.png
--------------------------------------------------------------------------------
/pages/device/scan-code/scan-code.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "扫码"
3 | }
4 |
--------------------------------------------------------------------------------
/img/devicelogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/img/devicelogo.png
--------------------------------------------------------------------------------
/pages/index/in/in.wxml:
--------------------------------------------------------------------------------
1 |
2 | pages/index/in/in.wxml
3 |
--------------------------------------------------------------------------------
/wxParse/emojis/00.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/00.gif
--------------------------------------------------------------------------------
/wxParse/emojis/01.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/01.gif
--------------------------------------------------------------------------------
/wxParse/emojis/02.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/02.gif
--------------------------------------------------------------------------------
/wxParse/emojis/03.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/03.gif
--------------------------------------------------------------------------------
/wxParse/emojis/04.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/04.gif
--------------------------------------------------------------------------------
/wxParse/emojis/05.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/05.gif
--------------------------------------------------------------------------------
/wxParse/emojis/06.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/06.gif
--------------------------------------------------------------------------------
/wxParse/emojis/07.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/07.gif
--------------------------------------------------------------------------------
/wxParse/emojis/08.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/08.gif
--------------------------------------------------------------------------------
/wxParse/emojis/09.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/09.gif
--------------------------------------------------------------------------------
/wxParse/emojis/10.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/10.gif
--------------------------------------------------------------------------------
/wxParse/emojis/100.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/100.gif
--------------------------------------------------------------------------------
/wxParse/emojis/101.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/101.gif
--------------------------------------------------------------------------------
/wxParse/emojis/102.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/102.gif
--------------------------------------------------------------------------------
/wxParse/emojis/103.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/103.gif
--------------------------------------------------------------------------------
/wxParse/emojis/104.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/104.gif
--------------------------------------------------------------------------------
/wxParse/emojis/105.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/105.gif
--------------------------------------------------------------------------------
/wxParse/emojis/106.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/106.gif
--------------------------------------------------------------------------------
/wxParse/emojis/107.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/107.gif
--------------------------------------------------------------------------------
/wxParse/emojis/108.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/108.gif
--------------------------------------------------------------------------------
/wxParse/emojis/109.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/109.gif
--------------------------------------------------------------------------------
/wxParse/emojis/11.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/11.gif
--------------------------------------------------------------------------------
/wxParse/emojis/110.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/110.gif
--------------------------------------------------------------------------------
/wxParse/emojis/111.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/111.gif
--------------------------------------------------------------------------------
/wxParse/emojis/112.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/112.gif
--------------------------------------------------------------------------------
/wxParse/emojis/113.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/113.gif
--------------------------------------------------------------------------------
/wxParse/emojis/114.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/114.gif
--------------------------------------------------------------------------------
/wxParse/emojis/115.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/115.gif
--------------------------------------------------------------------------------
/wxParse/emojis/116.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/116.gif
--------------------------------------------------------------------------------
/wxParse/emojis/117.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/117.gif
--------------------------------------------------------------------------------
/wxParse/emojis/118.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/118.gif
--------------------------------------------------------------------------------
/wxParse/emojis/119.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/119.gif
--------------------------------------------------------------------------------
/wxParse/emojis/12.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/12.gif
--------------------------------------------------------------------------------
/wxParse/emojis/120.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/120.gif
--------------------------------------------------------------------------------
/wxParse/emojis/121.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/121.gif
--------------------------------------------------------------------------------
/wxParse/emojis/122.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/122.gif
--------------------------------------------------------------------------------
/wxParse/emojis/123.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/123.gif
--------------------------------------------------------------------------------
/wxParse/emojis/124.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/124.gif
--------------------------------------------------------------------------------
/wxParse/emojis/125.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/125.gif
--------------------------------------------------------------------------------
/wxParse/emojis/126.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/126.gif
--------------------------------------------------------------------------------
/wxParse/emojis/127.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/127.gif
--------------------------------------------------------------------------------
/wxParse/emojis/128.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/128.gif
--------------------------------------------------------------------------------
/wxParse/emojis/129.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/129.gif
--------------------------------------------------------------------------------
/wxParse/emojis/13.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/13.gif
--------------------------------------------------------------------------------
/wxParse/emojis/130.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/130.gif
--------------------------------------------------------------------------------
/wxParse/emojis/131.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/131.gif
--------------------------------------------------------------------------------
/wxParse/emojis/132.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/132.gif
--------------------------------------------------------------------------------
/wxParse/emojis/133.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/133.gif
--------------------------------------------------------------------------------
/wxParse/emojis/134.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/134.gif
--------------------------------------------------------------------------------
/wxParse/emojis/14.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/14.gif
--------------------------------------------------------------------------------
/wxParse/emojis/15.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/15.gif
--------------------------------------------------------------------------------
/wxParse/emojis/16.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/16.gif
--------------------------------------------------------------------------------
/wxParse/emojis/17.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/17.gif
--------------------------------------------------------------------------------
/wxParse/emojis/18.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/18.gif
--------------------------------------------------------------------------------
/wxParse/emojis/19.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/19.gif
--------------------------------------------------------------------------------
/wxParse/emojis/20.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/20.gif
--------------------------------------------------------------------------------
/wxParse/emojis/21.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/21.gif
--------------------------------------------------------------------------------
/wxParse/emojis/22.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/22.gif
--------------------------------------------------------------------------------
/wxParse/emojis/23.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/23.gif
--------------------------------------------------------------------------------
/wxParse/emojis/24.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/24.gif
--------------------------------------------------------------------------------
/wxParse/emojis/25.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/25.gif
--------------------------------------------------------------------------------
/wxParse/emojis/26.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/26.gif
--------------------------------------------------------------------------------
/wxParse/emojis/27.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/27.gif
--------------------------------------------------------------------------------
/wxParse/emojis/28.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/28.gif
--------------------------------------------------------------------------------
/wxParse/emojis/29.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/29.gif
--------------------------------------------------------------------------------
/wxParse/emojis/30.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/30.gif
--------------------------------------------------------------------------------
/wxParse/emojis/31.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/31.gif
--------------------------------------------------------------------------------
/wxParse/emojis/32.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/32.gif
--------------------------------------------------------------------------------
/wxParse/emojis/33.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/33.gif
--------------------------------------------------------------------------------
/wxParse/emojis/34.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/34.gif
--------------------------------------------------------------------------------
/wxParse/emojis/35.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/35.gif
--------------------------------------------------------------------------------
/wxParse/emojis/36.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/36.gif
--------------------------------------------------------------------------------
/wxParse/emojis/37.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/37.gif
--------------------------------------------------------------------------------
/wxParse/emojis/38.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/38.gif
--------------------------------------------------------------------------------
/wxParse/emojis/39.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/39.gif
--------------------------------------------------------------------------------
/wxParse/emojis/40.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/40.gif
--------------------------------------------------------------------------------
/wxParse/emojis/41.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/41.gif
--------------------------------------------------------------------------------
/wxParse/emojis/42.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/42.gif
--------------------------------------------------------------------------------
/wxParse/emojis/43.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/43.gif
--------------------------------------------------------------------------------
/wxParse/emojis/44.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/44.gif
--------------------------------------------------------------------------------
/wxParse/emojis/45.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/45.gif
--------------------------------------------------------------------------------
/wxParse/emojis/46.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/46.gif
--------------------------------------------------------------------------------
/wxParse/emojis/47.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/47.gif
--------------------------------------------------------------------------------
/wxParse/emojis/48.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/48.gif
--------------------------------------------------------------------------------
/wxParse/emojis/49.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/49.gif
--------------------------------------------------------------------------------
/wxParse/emojis/50.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/50.gif
--------------------------------------------------------------------------------
/wxParse/emojis/51.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/51.gif
--------------------------------------------------------------------------------
/wxParse/emojis/52.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/52.gif
--------------------------------------------------------------------------------
/wxParse/emojis/53.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/53.gif
--------------------------------------------------------------------------------
/wxParse/emojis/54.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/54.gif
--------------------------------------------------------------------------------
/wxParse/emojis/55.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/55.gif
--------------------------------------------------------------------------------
/wxParse/emojis/56.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/56.gif
--------------------------------------------------------------------------------
/wxParse/emojis/57.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/57.gif
--------------------------------------------------------------------------------
/wxParse/emojis/58.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/58.gif
--------------------------------------------------------------------------------
/wxParse/emojis/59.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/59.gif
--------------------------------------------------------------------------------
/wxParse/emojis/60.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/60.gif
--------------------------------------------------------------------------------
/wxParse/emojis/61.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/61.gif
--------------------------------------------------------------------------------
/wxParse/emojis/62.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/62.gif
--------------------------------------------------------------------------------
/wxParse/emojis/63.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/63.gif
--------------------------------------------------------------------------------
/wxParse/emojis/64.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/64.gif
--------------------------------------------------------------------------------
/wxParse/emojis/65.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/65.gif
--------------------------------------------------------------------------------
/wxParse/emojis/66.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/66.gif
--------------------------------------------------------------------------------
/wxParse/emojis/67.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/67.gif
--------------------------------------------------------------------------------
/wxParse/emojis/68.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/68.gif
--------------------------------------------------------------------------------
/wxParse/emojis/69.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/69.gif
--------------------------------------------------------------------------------
/wxParse/emojis/70.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/70.gif
--------------------------------------------------------------------------------
/wxParse/emojis/71.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/71.gif
--------------------------------------------------------------------------------
/wxParse/emojis/72.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/72.gif
--------------------------------------------------------------------------------
/wxParse/emojis/73.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/73.gif
--------------------------------------------------------------------------------
/wxParse/emojis/74.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/74.gif
--------------------------------------------------------------------------------
/wxParse/emojis/75.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/75.gif
--------------------------------------------------------------------------------
/wxParse/emojis/76.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/76.gif
--------------------------------------------------------------------------------
/wxParse/emojis/77.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/77.gif
--------------------------------------------------------------------------------
/wxParse/emojis/78.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/78.gif
--------------------------------------------------------------------------------
/wxParse/emojis/79.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/79.gif
--------------------------------------------------------------------------------
/wxParse/emojis/80.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/80.gif
--------------------------------------------------------------------------------
/wxParse/emojis/81.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/81.gif
--------------------------------------------------------------------------------
/wxParse/emojis/82.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/82.gif
--------------------------------------------------------------------------------
/wxParse/emojis/83.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/83.gif
--------------------------------------------------------------------------------
/wxParse/emojis/84.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/84.gif
--------------------------------------------------------------------------------
/wxParse/emojis/85.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/85.gif
--------------------------------------------------------------------------------
/wxParse/emojis/86.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/86.gif
--------------------------------------------------------------------------------
/wxParse/emojis/87.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/87.gif
--------------------------------------------------------------------------------
/wxParse/emojis/88.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/88.gif
--------------------------------------------------------------------------------
/wxParse/emojis/89.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/89.gif
--------------------------------------------------------------------------------
/wxParse/emojis/90.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/90.gif
--------------------------------------------------------------------------------
/wxParse/emojis/91.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/91.gif
--------------------------------------------------------------------------------
/wxParse/emojis/92.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/92.gif
--------------------------------------------------------------------------------
/wxParse/emojis/93.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/93.gif
--------------------------------------------------------------------------------
/wxParse/emojis/94.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/94.gif
--------------------------------------------------------------------------------
/wxParse/emojis/95.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/95.gif
--------------------------------------------------------------------------------
/wxParse/emojis/96.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/96.gif
--------------------------------------------------------------------------------
/wxParse/emojis/97.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/97.gif
--------------------------------------------------------------------------------
/wxParse/emojis/98.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/98.gif
--------------------------------------------------------------------------------
/wxParse/emojis/99.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/wxParse/emojis/99.gif
--------------------------------------------------------------------------------
/pages/index/img/ari.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/index/img/ari.png
--------------------------------------------------------------------------------
/pages/device/img/switch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/img/switch.png
--------------------------------------------------------------------------------
/pages/device/img/pmsensor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/img/pmsensor.png
--------------------------------------------------------------------------------
/pages/device/img/scancode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/img/scancode.png
--------------------------------------------------------------------------------
/pages/device/img/webview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/img/webview.png
--------------------------------------------------------------------------------
/pages/device/switch/img/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/switch/img/1.png
--------------------------------------------------------------------------------
/pages/device/switch/img/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/switch/img/2.png
--------------------------------------------------------------------------------
/pages/device/switch/img/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/switch/img/3.png
--------------------------------------------------------------------------------
/pages/device/switch/img/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/switch/img/5.png
--------------------------------------------------------------------------------
/pages/device/bluetooth/img/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/bluetooth/img/1.png
--------------------------------------------------------------------------------
/pages/device/bluetooth/img/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/bluetooth/img/2.png
--------------------------------------------------------------------------------
/pages/device/bluetooth/img/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/bluetooth/img/3.png
--------------------------------------------------------------------------------
/pages/device/bluetooth/img/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/bluetooth/img/4.png
--------------------------------------------------------------------------------
/pages/device/img/bluetooth.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/img/bluetooth.png
--------------------------------------------------------------------------------
/pages/device/img/gpssensor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/img/gpssensor.png
--------------------------------------------------------------------------------
/pages/device/img/humsensor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/img/humsensor.png
--------------------------------------------------------------------------------
/pages/device/img/tempsensor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/img/tempsensor.png
--------------------------------------------------------------------------------
/pages/find/play/play.wxml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/pages/index/news/news.wxml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/pages/device/bluetooth/control/img/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/bluetooth/control/img/1.png
--------------------------------------------------------------------------------
/pages/device/bluetooth/control/img/10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/bluetooth/control/img/10.png
--------------------------------------------------------------------------------
/pages/device/bluetooth/control/img/11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/bluetooth/control/img/11.png
--------------------------------------------------------------------------------
/pages/device/bluetooth/control/img/12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/bluetooth/control/img/12.png
--------------------------------------------------------------------------------
/pages/device/bluetooth/control/img/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/bluetooth/control/img/2.png
--------------------------------------------------------------------------------
/pages/device/bluetooth/control/img/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/bluetooth/control/img/3.png
--------------------------------------------------------------------------------
/pages/device/bluetooth/control/img/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/bluetooth/control/img/4.png
--------------------------------------------------------------------------------
/pages/device/bluetooth/control/img/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/bluetooth/control/img/5.png
--------------------------------------------------------------------------------
/pages/device/bluetooth/control/img/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/bluetooth/control/img/6.png
--------------------------------------------------------------------------------
/pages/device/bluetooth/control/img/7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/bluetooth/control/img/7.png
--------------------------------------------------------------------------------
/pages/device/bluetooth/control/img/8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/bluetooth/control/img/8.png
--------------------------------------------------------------------------------
/pages/device/bluetooth/control/img/9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/bluetooth/control/img/9.png
--------------------------------------------------------------------------------
/pages/device/bluetooth/control/img/down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/bluetooth/control/img/down.png
--------------------------------------------------------------------------------
/pages/device/bluetooth/control/img/white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunyiminglove/wxin/HEAD/pages/device/bluetooth/control/img/white.png
--------------------------------------------------------------------------------
/pages/logs/logs.wxss:
--------------------------------------------------------------------------------
1 | .log-list {
2 | display: flex;
3 | flex-direction: column;
4 | padding: 40rpx;
5 | }
6 | .log-item {
7 | margin: 10rpx;
8 | }
9 |
--------------------------------------------------------------------------------
/pages/device/webview/webview.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/pages/logs/logs.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{index + 1}}. {{log}}
5 |
6 |
7 |
--------------------------------------------------------------------------------
/pages/user/register/register.wxss:
--------------------------------------------------------------------------------
1 | /* pages/user/register/register.wxss */
2 | @import "../user.wxss";
3 | .btn {
4 | background-color: orange;
5 | margin-left: 35px;
6 | margin-right: 35px;
7 | margin-bottom: 20px;
8 | }
9 |
--------------------------------------------------------------------------------
/pages/user/login/login.wxss:
--------------------------------------------------------------------------------
1 | /* pages/user/login/login.wxss */
2 | @import "../user.wxss";
3 |
4 | .btn {
5 | background-color: orange;
6 | margin-left: 35px;
7 | margin-right: 35px;
8 | margin-bottom: 20px;
9 | }
10 |
--------------------------------------------------------------------------------
/pages/common/head.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{title}}
4 |
5 | {{desc}}
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app.wxss:
--------------------------------------------------------------------------------
1 | /**app.wxss**/
2 | @import "/wxParse/wxParse.wxss";
3 | .container {
4 | height: 100%;
5 | display: flex;
6 | flex-direction: column;
7 | align-items: center;
8 | justify-content: space-between;
9 | padding: 200rpx 0;
10 | box-sizing: border-box;
11 | }
12 |
--------------------------------------------------------------------------------
/pages/device/pm/pm.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{item.name}}
4 |
5 |
6 | 浏览:{{item.heat}}
7 |
8 |
9 | {{item.data}}
10 |
11 |
--------------------------------------------------------------------------------
/pages/common/foot.wxml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
--------------------------------------------------------------------------------
/pages/device/hum/hum.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{item.name}}
4 |
5 |
6 | 浏览:{{item.heat}}
7 |
8 |
9 | {{item.data}}
10 |
11 |
--------------------------------------------------------------------------------
/pages/logs/logs.js:
--------------------------------------------------------------------------------
1 | //logs.js
2 | var util = require('../../utils/util.js')
3 | Page({
4 | data: {
5 | logs: []
6 | },
7 | onLoad: function () {
8 | this.setData({
9 | logs: (wx.getStorageSync('logs') || []).map(function (log) {
10 | return util.formatTime(new Date(log))
11 | })
12 | })
13 | }
14 | })
15 |
--------------------------------------------------------------------------------
/pages/device/switch/cell.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | {{name}}
8 |
9 |
10 |
--------------------------------------------------------------------------------
/pages/device/gps/gps.wxss:
--------------------------------------------------------------------------------
1 | .gps-container {
2 | padding-left: 30px;
3 | }
4 |
5 | .gps-map {
6 | padding-bottom: 5px;
7 | }
8 |
9 | .gps_name {
10 | text-indent: 2em;
11 | line-height: 1.2em;
12 | padding-bottom: 5px;
13 | }
14 |
15 | .gps-heat {
16 | font-size: 12px;
17 | color: gray;
18 | line-height: 1.2em;
19 | padding-bottom: 5px;
20 | }
21 |
--------------------------------------------------------------------------------
/pages/device/pm/pm.wxss:
--------------------------------------------------------------------------------
1 | .pm_container {
2 | padding-left: 30px;
3 | }
4 |
5 | .pm_text {
6 | padding-bottom: 5px;
7 | }
8 |
9 | .pm_name {
10 | text-indent: 2em;
11 | line-height: 1.2em;
12 | padding-bottom: 5px;
13 | }
14 |
15 | .pm_heat {
16 | font-size: 12px;
17 | color: gray;
18 | line-height: 1.2em;
19 | padding-bottom: 5px;
20 | }
--------------------------------------------------------------------------------
/pages/device/hum/hum.wxss:
--------------------------------------------------------------------------------
1 | .hum_container {
2 | padding-left: 30px;
3 | }
4 |
5 | .hum_text {
6 | padding-bottom: 5px;
7 | }
8 |
9 | .hum_name {
10 | text-indent: 2em;
11 | line-height: 1.2em;
12 | padding-bottom: 5px;
13 | }
14 |
15 | .hum_heat {
16 | font-size: 12px;
17 | color: gray;
18 | line-height: 1.2em;
19 | padding-bottom: 5px;
20 | }
--------------------------------------------------------------------------------
/pages/user/login/login.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 登录
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/pages/device/gps/gps.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{item.name}}
4 |
5 |
6 | 浏览:{{item.heat}}
7 |
8 |
10 |
--------------------------------------------------------------------------------
/pages/device/temper/temper.wxss:
--------------------------------------------------------------------------------
1 | .temper_container {
2 | padding-left: 30px;
3 | }
4 |
5 | .temper_text {
6 | padding-bottom: 5px;
7 | }
8 |
9 | .temper_name {
10 | text-indent: 2em;
11 | line-height: 1.2em;
12 | padding-bottom: 5px;
13 | }
14 |
15 | .temper_heat {
16 | font-size: 12px;
17 | color: gray;
18 | line-height: 1.2em;
19 | padding-bottom: 5px;
20 | }
21 |
--------------------------------------------------------------------------------
/pages/device/temper/temper.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{item.name}}
4 |
5 |
6 | 浏览:{{item.heat}}
7 |
8 |
9 | {{item.data}}
10 |
11 |
12 |
--------------------------------------------------------------------------------
/pages/device/scan-code/scan-code.wxml:
--------------------------------------------------------------------------------
1 |
2 | 已共享:{{count}}
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/pages/index/news/news.wxss:
--------------------------------------------------------------------------------
1 | .news-content {
2 | padding-left: 28px;
3 | padding-right: 28px;
4 | }
5 |
6 | .news-text {
7 | /*padding-top: 15px;*/
8 | text-indent: 2em;
9 | line-height: 1.7em;
10 | }
11 |
12 | .news-time {
13 | font-size: 12px;
14 | color: gray;
15 | line-height: 1.6em;
16 | }
17 |
18 | .news-title {
19 | font-size: 26px;
20 | font-weight: bold;
21 | margin-bottom: 0.7em;
22 | padding-top: 20px;
23 | }
24 |
--------------------------------------------------------------------------------
/pages/user/register/register.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 注册
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/utils/util.js:
--------------------------------------------------------------------------------
1 | function formatTime(date) {
2 | var year = date.getFullYear()
3 | var month = date.getMonth() + 1
4 | var day = date.getDate()
5 |
6 | var hour = date.getHours()
7 | var minute = date.getMinutes()
8 | var second = date.getSeconds()
9 |
10 |
11 | return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
12 | }
13 |
14 | function formatNumber(n) {
15 | n = n.toString()
16 | return n[1] ? n : '0' + n
17 | }
18 |
19 | module.exports = {
20 | formatTime: formatTime
21 | }
22 |
--------------------------------------------------------------------------------
/utils/myfunction.js:
--------------------------------------------------------------------------------
1 | //向服务器发送get请求
2 | //url 请求地址及参数
3 | //Callback 回调函数
4 | function request(url, success,error,data='') {
5 | console.log('url:', url)
6 | wx.request({
7 | url: url,
8 | data:data,
9 | method: 'GET',
10 | header: {
11 | 'content-type': 'application/json'
12 | },
13 | success: function (res) {
14 | console.log('request函数success:', res)
15 | success(res);
16 | },
17 | fail:function (res) {
18 | console.log('request函数fail:', res)
19 | error(res);
20 | }
21 | })
22 | }
23 |
24 | module.exports = {
25 | request: request
26 | }
--------------------------------------------------------------------------------
/pages/find/play/play.wxss:
--------------------------------------------------------------------------------
1 | .play-body {
2 | padding: 15px;
3 | }
4 |
5 | .play-title {
6 | font-size: 26px;
7 | font-weight: bold;
8 | margin-bottom: 0.7em;
9 | }
10 |
11 | .play-text {
12 | text-indent: 2em; /*首行缩进两个字符*/
13 | font-size: 15px;
14 | line-height: 1.6em;
15 | }
16 |
17 | .play-pic {
18 | text-align: center;
19 | width: 100%;
20 | }
21 |
22 | .play-video {
23 | text-align: center;
24 | width: 100%;
25 | }
26 |
27 | .play-time {
28 | font-size: 12px;
29 | color: gray;
30 | line-height: 1.6em;
31 | }
32 |
33 | .play-midea {
34 | text-align: center;
35 | }
36 |
--------------------------------------------------------------------------------
/pages/find/play/play.js:
--------------------------------------------------------------------------------
1 | var id
2 | Page({
3 | data: {
4 | id
5 | },
6 | onShareAppMessage: function () {
7 | return {
8 | title: 'www.geek-iot.com',
9 | path: 'pages/find/play/play?id=' + id
10 | }
11 | }
12 | ,
13 | //下拉刷新
14 | onPullDownRefresh: function (options) {
15 | wx.stopPullDownRefresh()
16 | console.log('play load options:', options)
17 | this.setData({
18 | id: options.id
19 | })
20 | },
21 | onLoad: function (options) {
22 | console.log('play load options:', options)
23 | this.setData({
24 | id: options.id
25 | })
26 | }
27 | })
--------------------------------------------------------------------------------
/pages/index/news/news.js:
--------------------------------------------------------------------------------
1 | var id
2 | Page({
3 | data: {
4 | id
5 | },
6 | onShareAppMessage: function () {
7 | return {
8 | title: 'www.geek-iot.com',
9 | path: 'pages/index/news/news?id=' + id
10 | }
11 | }
12 | ,
13 | //下拉刷新
14 | onPullDownRefresh: function (options) {
15 | wx.stopPullDownRefresh()
16 | console.log('news load options:', options)
17 | this.setData({
18 | id: options.id
19 | })
20 | },
21 | onLoad: function (options) {
22 | console.log('news load options:', options)
23 | this.setData({
24 | id: options.id
25 | })
26 | }
27 | })
28 |
--------------------------------------------------------------------------------
/project.config.json:
--------------------------------------------------------------------------------
1 | {
2 | "description": "项目配置文件。",
3 | "setting": {
4 | "urlCheck": true,
5 | "es6": true,
6 | "postcss": true,
7 | "minified": true,
8 | "newFeature": true
9 | },
10 | "compileType": "miniprogram",
11 | "libVersion": "1.6.4",
12 | "appid": "wx51dc296dee8fc4ab",
13 | "projectname": "wxin",
14 | "condition": {
15 | "search": {
16 | "current": -1,
17 | "list": []
18 | },
19 | "conversation": {
20 | "current": -1,
21 | "list": []
22 | },
23 | "plugin": {
24 | "current": -1,
25 | "list": []
26 | },
27 | "game": {
28 | "list": []
29 | },
30 | "miniprogram": {
31 | "current": -1,
32 | "list": []
33 | }
34 | }
35 | }
--------------------------------------------------------------------------------
/pages/device/switch/switch.wxss:
--------------------------------------------------------------------------------
1 | .pages-container {
2 | height: 100%;
3 | display: flex;
4 | flex-direction: column;
5 | box-sizing: border-box;
6 | padding-top: 10rpx;
7 | padding-bottom: 10rpx;
8 | /*padding-left: 15px;*/
9 | }
10 |
11 | .pages-title-bg {
12 | width: 100%;
13 | }
14 |
15 | .pages-row {
16 | width: 100%;
17 | display: flex;
18 | flex-direction: row;
19 | justify-content: space-around;
20 | }
21 |
22 | .pages-item {
23 | position: relative;
24 | padding: 10rpx;
25 | width: 33%;
26 | background-color: #fff;
27 | /*border: #ddd solid 1px; */
28 | text-align: center;
29 | }
30 |
31 | .pages-icon {
32 | width: 150rpx;
33 | height: 150rpx;
34 | }
35 |
36 | .pages-text {
37 | font-weight: bolder;
38 | }
39 |
--------------------------------------------------------------------------------
/pages/device/scan-code/scan-code.wxss:
--------------------------------------------------------------------------------
1 | .contain{
2 | margin-top: 10px;
3 | margin-left: 20px;
4 | margin-right: 20px;
5 | text-align: center;
6 | }
7 |
8 | .input{
9 | border: 1px solid gray;
10 | margin-bottom: 10px;
11 | padding: 5px;
12 | border-radius: 5px;
13 | width: 96%;
14 | font-size: 22px;
15 | text-align: left;
16 | height: 45px;
17 | }
18 | .input2{
19 | border: 1px solid gray;
20 | margin-bottom: 10px;
21 | padding: 5px;
22 | border-radius: 5px;
23 | width: 96%;
24 | font-size: 45px;
25 | text-align: center;
26 | height: 60px;
27 | }
28 | .btn{
29 | margin-bottom: 20px;
30 | padding: 5px;
31 | width: 100%;
32 | /*margin: 10px;*/
33 | }
34 | .text{
35 | margin-bottom: 15px;
36 | }
--------------------------------------------------------------------------------
/pages/device/bluetooth/set/set.wxss:
--------------------------------------------------------------------------------
1 | /* pages/device/bluetooth/set/set.wxss */
2 | .input {
3 | float: left;
4 | border: 1px solid gray;
5 | padding: 2%;
6 | border-radius: 5px;
7 | /* margin-left: center; */
8 | margin-top: 15px;
9 | /*设置宽度为百分比时,不能用width,会出现显示不全*/
10 | max-width: 19%;
11 | font-size: 100%;
12 | background-color: lavenderblush;
13 | color: black;
14 | }
15 |
16 | .pages-row {
17 | /* width: 100%; */
18 | display: flex;
19 | flex-direction: row;
20 | justify-content: space-around;
21 | }
22 |
23 | .title_background-color {
24 | background-color: lightgray;
25 | }
26 |
27 | .contain {
28 | margin-left: 3%;
29 | margin-right: 3%;
30 | text-align: center;
31 | margin-top: 5%;
32 | margin-bottom: 5%;
33 | }
34 |
--------------------------------------------------------------------------------
/pages/device/device.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 全部设备
6 |
7 |
8 |
9 |
10 |
11 |
12 | {{item.name}}
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/pages/device/bluetooth/bluetooth.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 附近的低功耗蓝牙设备
5 |
6 | 控制页面
7 |
8 |
9 |
10 |
11 |
12 |
13 | {{item.name}}
14 | DeviceId:{{item.deviceId}}
15 | RSSI:{{item.RSSI}}
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/pages/find/find.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | {{item.title}}
16 | {{item.hits}}
17 | {{item.dates}}
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/pages/index/in/in.js:
--------------------------------------------------------------------------------
1 | // pages/index/in/in.js
2 | Page({
3 |
4 | /**
5 | * 页面的初始数据
6 | */
7 | data: {
8 |
9 | },
10 |
11 | /**
12 | * 生命周期函数--监听页面加载
13 | */
14 | onLoad: function (options) {
15 |
16 | },
17 |
18 | /**
19 | * 生命周期函数--监听页面初次渲染完成
20 | */
21 | onReady: function () {
22 |
23 | },
24 |
25 | /**
26 | * 生命周期函数--监听页面显示
27 | */
28 | onShow: function () {
29 |
30 | },
31 |
32 | /**
33 | * 生命周期函数--监听页面隐藏
34 | */
35 | onHide: function () {
36 |
37 | },
38 |
39 | /**
40 | * 生命周期函数--监听页面卸载
41 | */
42 | onUnload: function () {
43 |
44 | },
45 |
46 | /**
47 | * 页面相关事件处理函数--监听用户下拉动作
48 | */
49 | onPullDownRefresh: function () {
50 |
51 | },
52 |
53 | /**
54 | * 页面上拉触底事件的处理函数
55 | */
56 | onReachBottom: function () {
57 |
58 | },
59 |
60 | /**
61 | * 用户点击右上角分享
62 | */
63 | onShareAppMessage: function () {
64 |
65 | }
66 | })
--------------------------------------------------------------------------------
/pages/device/webview/webview.js:
--------------------------------------------------------------------------------
1 | // pages/device/webview/webview.js
2 | Page({
3 |
4 | /**
5 | * 页面的初始数据
6 | */
7 | data: {
8 |
9 | },
10 |
11 | /**
12 | * 生命周期函数--监听页面加载
13 | */
14 | onLoad: function (options) {
15 |
16 | },
17 |
18 | /**
19 | * 生命周期函数--监听页面初次渲染完成
20 | */
21 | onReady: function () {
22 |
23 | },
24 |
25 | /**
26 | * 生命周期函数--监听页面显示
27 | */
28 | onShow: function () {
29 |
30 | },
31 |
32 | /**
33 | * 生命周期函数--监听页面隐藏
34 | */
35 | onHide: function () {
36 |
37 | },
38 |
39 | /**
40 | * 生命周期函数--监听页面卸载
41 | */
42 | onUnload: function () {
43 |
44 | },
45 |
46 | /**
47 | * 页面相关事件处理函数--监听用户下拉动作
48 | */
49 | onPullDownRefresh: function () {
50 |
51 | },
52 |
53 | /**
54 | * 页面上拉触底事件的处理函数
55 | */
56 | onReachBottom: function () {
57 |
58 | },
59 |
60 | /**
61 | * 用户点击右上角分享
62 | */
63 | onShareAppMessage: function () {
64 |
65 | }
66 | })
--------------------------------------------------------------------------------
/pages/device/switch/switch.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/pages/device/bluetooth/set/set.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 设置遥控器{{select}}
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app.js:
--------------------------------------------------------------------------------
1 | App({
2 | onLaunch: function () {
3 | //调用API从本地缓存中获取数据
4 | var logs = wx.getStorageSync('logs') || []
5 | logs.unshift(Date.now())
6 | wx.setStorageSync('logs', logs)
7 | // alert("启动了")
8 | },
9 | onShow: function () {
10 | // 当小程序启动,或从后台进入前台显示,会触发 onShow
11 | // alert("启动了")
12 | },
13 | onHide: function () {
14 | // 当小程序从前台进入后台,会触发 onHide
15 |
16 | },
17 | getUserInfo: function (cb) {
18 | var that = this
19 | if (this.globalData.userInfo) {
20 | typeof cb == "function" && cb(this.globalData.userInfo)
21 | } else {
22 | //调用登录接口
23 | wx.login({
24 | success: function () {
25 | wx.getUserInfo({
26 | success: function (res) {
27 | that.globalData.userInfo = res.userInfo
28 | typeof cb == "function" && cb(that.globalData.userInfo)
29 | }
30 | })
31 | }
32 | })
33 | }
34 | },
35 | //全局公共变量
36 | globalData: {
37 | userinfo: null,
38 | loginCode: null,
39 | openid: null,//
40 | user:null//用户登陆信息
41 | },
42 | api_host:'https://geek-iot.com/api/'//服务器api
43 | })
44 |
--------------------------------------------------------------------------------
/pages/find/find.wxss:
--------------------------------------------------------------------------------
1 | /* pages/device/device.wxss */
2 | @import "../common/lib/weui.wxss";
3 |
4 | .find-title {
5 | text-align: center;
6 | font-size: 25px;
7 | font-weight: bold;
8 | margin: 0.6rem;
9 | }
10 |
11 | .find-pic {
12 | /*text-align: center;*/
13 | width: 80px;
14 | height: 60px;
15 | background-color: #eee;
16 | }
17 |
18 | .find-time {
19 | font-size: 13px;
20 | color: darkgray;
21 | position: relative;
22 | margin-top: 5px;
23 | }
24 |
25 | .list-info {
26 | padding-left: 12px;
27 | display: flex list-item;
28 | /*align-items: center;*/
29 | }
30 |
31 | .list-bd {
32 | padding: 10px 15px;
33 | position: relative;
34 | display: -webkit-box;
35 | display: -webkit-flex;
36 | display: flex;
37 | /*-webkit-box-align: center;*//*-webkit-align-items: center;
38 | align-items: center;*/
39 | }
40 |
41 | /*横线*/
42 |
43 | .list-bd:before {
44 | content: " ";
45 | position: absolute;
46 | left: 10px;
47 | top: 0;
48 | right: 10px;
49 | height: 1px;
50 | border-top: 1rpx solid #d9d9d9;
51 | color: #d9d9d9;
52 | }
53 |
54 | .find-text {
55 | padding: 15px;
56 | text-indent: 2em;
57 | line-height: 1.7em;
58 | }
--------------------------------------------------------------------------------
/pages/index/index.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | {{item.title}}
31 | {{item.dates}}
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # wxin
2 | 极客物联网微信小程序
3 | 2017.12.18
4 | V5.3.3
5 | 1.首页链接跳转改为webview
6 | 2.发现页面跳转改为webview
7 |
8 | 2017.11.12
9 | V5.3.2
10 | 1.增加webview入口
11 | 2.修复已知bug
12 |
13 | 2017.11.9
14 | V5.0.3
15 | 1.解决部分android手机开关控制异常(url的问号后面多了个空格)
16 |
17 | 2017.11.8
18 | 1.修复用户也下拉刷新后退出登陆bug
19 |
20 | 2017.11.6
21 | 1.修复无法注册bug
22 |
23 | 2017.8.27
24 | 1.更新描述信息API
25 | 2.取消find界面列表的缩略图
26 |
27 | 2017.8.21
28 | 1.删除开关页面的亮度调节部分
29 |
30 | 2017.8.15
31 | 1.蓝牙遥控配置数据保存到服务器
32 | 2.没有登陆客户保存配置到本地
33 | 3.优化js代码
34 | 4.更新遥控默认图标
35 | 5.增加遥控面板预览入口
36 | 6.修复隐藏按键异常bug
37 |
38 | 2017.8.14
39 | 1.增加链接全局变量api_host
40 | 2.修改遥控快速点击可能发送失败问题
41 | 3.蓝牙断开后自动重连
42 |
43 | 2017.8.6
44 | 第一次上传微信小程序到代码仓库
45 |
46 | 2017.5.5
47 | 1.更新用户界面布局
48 | 2.在用户界面增加设备操作提示信息显示开关
49 |
50 | 2017.4.15
51 | 1.更新设备显示形式,基本框架实现
52 |
53 | v2.0.4
54 | 1.修复了下拉刷新不及时弹回bug
55 | v2.0.3
56 | 2017.3.10
57 | 1.优化了发现内容及展现形式
58 | 2.增加了首页,消息列表
59 | 3.优化了设备列表展现形式
60 | 4.曾加设备列表内容
61 |
62 | 2017.3.2
63 | 1.优化部分功能
64 | 2.修复已知bug
65 | 3.增加温度、湿度、gps等传感器
66 | 4.增加发现中的内容!
67 |
68 | 2017.3.1
69 | 1.发现酷玩浏览功能实现
70 |
71 |
72 | 2017.2.22
73 | 1.实现我的设备内容全部显示
74 | 2.个人中心信息显示完备,可以登录退出
75 |
76 | 微信小程序开发进
77 | 2017.2.17
78 | 1.解决下拉刷新 (模拟器ok,手机不行)问题
79 | 2.改设备分类显示,列表内容控制正常,提升体验
80 |
81 |
82 | 2017.2.16
83 | 1.下拉刷新 (模拟器ok,手机不行)
84 | 2.增加tab,(我的设备,发现酷玩,个人中心)
85 | 3.更改开关类设备发送指令为服务器客户设置的指令
86 | 4.分别显示各个设备的响应消息
--------------------------------------------------------------------------------
/pages/device/pm/pm.js:
--------------------------------------------------------------------------------
1 | var app = getApp();
2 | var myfunction = require('../../../utils/myfunction');
3 | Page({
4 | data:{
5 | list:[]
6 | },
7 | onShareAppMessage: function () {
8 | return {
9 | title: 'www.geek-iot.com',
10 | path: 'pages/device/pm/pm'
11 | }
12 | }
13 | ,
14 | //下拉刷新
15 | onPullDownRefresh: function () {
16 | var that = this
17 | wx.stopPullDownRefresh()
18 | load(that);
19 | },
20 |
21 | onLoad: function () {
22 | var that = this
23 | load(that);
24 | }
25 | })
26 |
27 |
28 | //加载数据
29 | function load(that) {
30 | if (app.user == null) {
31 | //更新数据
32 | wx.showModal({
33 | title: '极客物联网',
34 | content: '登陆后才能查看,请您先登录!',
35 | success: function (res) {
36 | if (res.confirm) {
37 | // 确定,跳转到登陆
38 | wx.redirectTo({ url: '../../user/login/login' })
39 | } else if (res.cancel) {
40 | // 取消,返回
41 | wx.navigateBack({})
42 | }
43 | }
44 | })
45 | }
46 | else {
47 | myfunction.request(app.api_host+'wxin/device.php?device=sensor&type=getlist&sensor=pm2.5&userid=' + app.user.userid + '&password=' + app.user.password, function (res) {
48 | var list = res.data.list;
49 |
50 | console.log('temperature', list)
51 | that.setData({
52 | list: list
53 | });
54 |
55 | });
56 | }
57 | }
58 |
59 |
--------------------------------------------------------------------------------
/pages/device/hum/hum.js:
--------------------------------------------------------------------------------
1 | var app = getApp();
2 | var myfunction = require('../../../utils/myfunction');
3 | Page({
4 | data:{
5 | list:[]
6 | },
7 | onShareAppMessage: function () {
8 | return {
9 | title: 'www.geek-iot.com',
10 | path: 'pages/device/hum/hum'
11 | }
12 | }
13 | ,
14 | //下拉刷新
15 | onPullDownRefresh: function () {
16 | var that = this
17 | wx.stopPullDownRefresh()
18 | load(that);
19 | },
20 |
21 | onLoad: function () {
22 | var that = this
23 | load(that);
24 | }
25 | })
26 |
27 |
28 | //加载数据
29 | function load(that) {
30 | if (app.user == null) {
31 | //更新数据
32 | wx.showModal({
33 | title: '极客物联网',
34 | content: '登陆后才能查看,请您先登录!',
35 | success: function (res) {
36 | if (res.confirm) {
37 | // 确定,跳转到登陆
38 | wx.redirectTo({ url: '../../user/login/login' })
39 | } else if (res.cancel) {
40 | // 取消,返回
41 | wx.navigateBack({})
42 | }
43 | }
44 | })
45 | }
46 | else {
47 | myfunction.request(app.api_host + 'wxin/device.php?device=sensor&type=getlist&sensor=humidity&userid=' + app.user.userid + '&password=' + app.user.password, function (res) {
48 | var list = res.data.list;
49 |
50 | console.log('temperature', list)
51 | that.setData({
52 | list: list
53 | });
54 |
55 | });
56 | }
57 | }
58 |
59 |
--------------------------------------------------------------------------------
/pages/device/temper/temper.js:
--------------------------------------------------------------------------------
1 | var app = getApp();
2 | var myfunction = require('../../../utils/myfunction');
3 | Page({
4 | data:{
5 | list:[]
6 | },
7 | onShareAppMessage: function () {
8 | return {
9 | title: 'www.geek-iot.com',
10 | path: 'pages/device/switch/switch'
11 | }
12 | }
13 | ,
14 | //下拉刷新
15 | onPullDownRefresh: function () {
16 | var that = this
17 | wx.stopPullDownRefresh()
18 | load(that);
19 | },
20 |
21 | onLoad: function () {
22 | var that = this
23 | load(that);
24 | }
25 | })
26 |
27 |
28 | //加载数据
29 | function load(that) {
30 | if (app.user == null) {
31 | //更新数据
32 | wx.showModal({
33 | title: '极客物联网',
34 | content: '登陆后才能查看,请您先登录!',
35 | success: function (res) {
36 | if (res.confirm) {
37 | // 确定,跳转到登陆
38 | wx.redirectTo({ url: '../../user/login/login' })
39 | } else if (res.cancel) {
40 | // 取消,返回
41 | wx.navigateBack({})
42 | }
43 | }
44 | })
45 | }
46 | else {
47 | myfunction.request(app.api_host + 'wxin/device.php?device=sensor&type=getlist&sensor=temperature&userid=' + app.user.userid + '&password=' + app.user.password, function (res) {
48 | var list = res.data.list;
49 |
50 | console.log('temperature', list)
51 | that.setData({
52 | list: list
53 | });
54 |
55 | });
56 | }
57 | }
58 |
59 |
--------------------------------------------------------------------------------
/pages/index/index.wxss:
--------------------------------------------------------------------------------
1 | /**index.wxss**/
2 | .ddd {
3 | background-color: blue;
4 | height: 50%;
5 | /* padding-left: 28px;
6 | padding-right: 28px; */
7 | }
8 | .index-content {
9 | padding-left: 28px;
10 | padding-right: 28px;
11 | }
12 |
13 | .index-swiper {
14 | text-align: center;
15 | padding-top: 15px;
16 | padding-bottom: 15px;
17 | }
18 |
19 | .index-text {
20 | /*padding-top: 15px;*/
21 | text-indent: 2em;
22 | line-height: 1.7em;
23 | }
24 |
25 | .index-news {
26 | padding-top: 15px;
27 | text-indent: 2em;
28 | }
29 |
30 |
31 | .list-bd {
32 | /*padding: 10px 15px;*/
33 | padding-top: 8px;
34 | padding-bottom: 8px;
35 | position: relative;
36 | display: -webkit-box;
37 | display: -webkit-flex;
38 | display: flex;
39 | align-items: center;
40 | /*-webkit-box-align: center;*//*-webkit-align-items: center;
41 | align-items: center;*/
42 | }
43 |
44 | /*横线*/
45 |
46 | .list-bd:before {
47 | content: " ";
48 | position: absolute;
49 | left: 0px;
50 | top: 0;
51 | right: 10px;
52 | height: 1px;
53 | border-top: 1rpx dashed #d9d9d9;
54 | color: #d9d9d9;
55 | }
56 | .list-info {
57 | /*padding-left: 12px;*/
58 | display: flex list-item;
59 | /*align-items: center;*/
60 | }
61 |
62 | .index-pic {
63 | /*text-align: center;*/
64 | width: 25px;
65 | height: 25px;
66 | padding-right: 5px;
67 | }
68 |
69 | .index-time {
70 | font-size: 13px;
71 | padding-top: 5px;
72 | color: gray;
73 | position: relative;
74 | }
75 |
76 | /*page{
77 | background-color: lightgray;
78 | }*/
--------------------------------------------------------------------------------
/pages/device/bluetooth/bluetooth.wxss:
--------------------------------------------------------------------------------
1 | /* pages/device/bluetooth/bluetooth.wxss */
2 |
3 | .index {
4 | /*padding-left: 10px;
5 | padding-right: 10px;*/
6 | margin-left: 10px;
7 | margin-right: 10px;
8 | }
9 |
10 | .boxshadow {
11 | -webkit-box-shadow: 3px 3px 3px rgba(100, 100, 80, 0.8);
12 | -moz-box-shadow: 3px 3px 3px rgba(100, 100, 80, 0.8);
13 | box-shadow: 3px 3px 3px rgba(100, 100, 80, 0.8);
14 | }
15 |
16 | .head {
17 | padding-top: 15px;
18 | padding-bottom: 15px;
19 | margin-bottom: 10px;
20 | margin-top: 20px;
21 | text-align: center;
22 | /*margin-bottom: 20px;*/
23 | background-color: orange;
24 | margin-left: 10px;
25 | margin-right: 10px;
26 | }
27 |
28 | .mode {
29 | padding-left: 10px;
30 | padding-top: 10px;
31 | padding-bottom: 10px;
32 | margin-bottom: 10px;
33 | margin-top: 10px;
34 | background-color: #e8e8e8;
35 | margin-left: 10px;
36 | margin-right: 10px;
37 | position: relative;
38 | display: -webkit-box;
39 | display: -webkit-flex;
40 | display: flex;
41 | align-items: center;
42 | }
43 |
44 | .listview {
45 | position: relative;
46 | display: -webkit-box;
47 | display: -webkit-flex;
48 | display: flex;
49 | align-items: center;
50 | }
51 |
52 | .text {
53 | padding-top: 3px;
54 | line-height: 1.2em;
55 | font-size: 13px;
56 | padding-right: 80px;
57 | }
58 |
59 | .rssi {
60 | padding-top: 2px;
61 | float: right;
62 | display: flex list-item;
63 | }
64 |
65 | .rssi_img {
66 | float: right;
67 | height: 40px;
68 | width: 40px;
69 | margin-right: 10px;
70 | }
71 |
--------------------------------------------------------------------------------
/pages/user/user.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 登录&注册
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | {{user.nickname}}
19 |
20 |
21 |
22 | 用户ID:{{user.userid}}
23 |
24 |
25 | 手机号:{{user.phonenumber}}
26 |
27 |
28 | Email:{{user.email}}
29 |
30 |
31 | Address:{{user.address}}
32 |
33 |
34 | QQ:{{user.qq}}
35 |
36 |
37 |
38 | 版本:V5.3.2
39 |
40 |
41 | 退出登陆
42 |
43 |
44 |
--------------------------------------------------------------------------------
/pages/user/user.wxss:
--------------------------------------------------------------------------------
1 | @import "../common/lib/weui.wxss";
2 | @import "../device/device.wxss";
3 |
4 | .user-index {
5 | padding-left: 20px;
6 | padding-right: 20px;
7 | padding-top: 30px;
8 | }
9 |
10 | .login {
11 | padding-left: 40px;
12 | padding-right: 40px;
13 | padding-bottom: 30px;
14 | }
15 |
16 | .input {
17 | border: 1px solid gray;
18 | margin-bottom: 20px;
19 | padding: 5px;
20 | border-radius: 5px;
21 | }
22 |
23 | .text {
24 | padding-left: 40px;
25 | padding-right: 40px;
26 | padding-bottom: 20px;
27 | line-height: 30px;
28 | }
29 |
30 | .butt {
31 | padding-left: 40px;
32 | padding-right: 40px;
33 | }
34 |
35 | .tip {
36 | padding-left: 40px;
37 | padding-right: 40px;
38 | padding-bottom: 20px;
39 | padding-top: 30px;
40 | line-height: 30px;
41 | text-indent: 2em;
42 | }
43 |
44 | .headimag {
45 | width: 50px;
46 | height: 50px;
47 | border-radius: 5px;
48 | margin-right: 10px;
49 | }
50 |
51 | .ask {
52 | margin-top: 100px;
53 | margin-bottom: 10px;
54 | }
55 |
56 | .btn {
57 | background-color: orange;
58 | margin-left: 25px;
59 | margin-right: 25px;
60 | margin-bottom: 20px;
61 | }
62 |
63 | .input {
64 | margin-left: 35px;
65 | margin-right: 35px;
66 | margin-bottom: 20px;
67 | background-color: lightgray;
68 | }
69 |
70 | .title{
71 | font-size: 25px;
72 | text-align: center;
73 | margin: 40px;
74 | }
75 |
76 | .logout{
77 | margin-top: 10px;
78 | margin-bottom: 10px;
79 | text-align: center;
80 | }
81 |
82 | .info{
83 | margin-top: 10px;
84 | margin-bottom: 10px;
85 | margin-left: 10px;
86 | }
--------------------------------------------------------------------------------
/pages/user/login/login.js:
--------------------------------------------------------------------------------
1 | // pages/user/login/login.js
2 | var myfunction = require('../../../utils/myfunction');
3 | var inputusername
4 | var inputpassword
5 | var app = getApp()
6 | Page({
7 |
8 | /**
9 | * 页面的初始数据
10 | */
11 | data: {
12 |
13 | },
14 |
15 | /**
16 | * 生命周期函数--监听页面加载
17 | */
18 | onLoad: function (options) {
19 |
20 | },
21 | //下拉刷新
22 | onPullDownRefresh: function () {
23 | wx.stopPullDownRefresh()
24 | },
25 | // 登录按钮事件
26 | bindload: function (e) {
27 | console.log('登陆按钮按下')
28 | var that = this
29 | myfunction.request(app.api_host+'user/login.php?email=' + inputusername + '&password=' + inputpassword, function (res) {
30 | console.log(res)
31 | if (res.data.resault == 'success') {
32 | console.log(res.data)
33 | //保存用户数据到本地
34 | try {
35 | //保存从服务器获取的用户数据
36 | wx.setStorageSync('user', res.data)
37 | app.user = res.data
38 | console.log('已保存', app.user)
39 | //切换到用户信息界面
40 | wx.switchTab({
41 | url: '../user'
42 | })
43 | } catch (e) {
44 | console.log('保存失败')
45 | }
46 |
47 | }
48 | else {
49 | wx.showToast({
50 | title: res.data.msg,
51 | icon: 'fail',
52 | duration: 2000
53 | })
54 | }
55 | })
56 | }
57 | ,
58 | bindKeyusername: function (e) {
59 | inputusername = e.detail.value
60 | // console.log('inputusername', inputusername)
61 | }
62 | , bindKeypassword: function (e) {
63 | inputpassword = e.detail.value
64 | // console.log('inputpassword', inputpassword)
65 | }
66 | })
--------------------------------------------------------------------------------
/pages/device/device.js:
--------------------------------------------------------------------------------
1 | Page({
2 | data: {
3 | list: [
4 | {
5 | id: 'switch',
6 | name: '开关',
7 | url: 'switch/switch',
8 | devicelist: {}
9 | }, {
10 | id: 'tempsensor',
11 | name: '温度',
12 | devicelist: {},
13 | url: 'temper/temper'
14 | }, {
15 | id: 'humsensor',
16 | name: '湿度',
17 | url: 'hum/hum',
18 | devicelist: {}
19 | }, {
20 | id: 'pmsensor',
21 | name: 'PM2.5',
22 | url: 'pm/pm',
23 | devicelist: {}
24 | }, {
25 | id: 'gpssensor',
26 | name: 'GPS',
27 | url: 'gps/gps',
28 | devicelist: {}
29 | }
30 | , {
31 | id: 'bluetooth',
32 | name: '蓝牙',
33 | url: 'bluetooth/bluetooth',
34 | devicelist: {}
35 | }
36 | , {
37 | id: 'scancode',
38 | name: '二维码',
39 | url: 'scan-code/scan-code',
40 | devicelist: {}
41 | }
42 | , {
43 | id: 'webview',
44 | name: '测试页面',
45 | url: 'webview/webview',
46 | devicelist: {}
47 | }
48 | ]
49 | },
50 | //点击进入相应界面
51 | kindToggle: function (e) {
52 | var id = e.currentTarget.id, list = this.data.list;
53 | for (var i = 0, len = list.length; i < len; ++i) {
54 | if (list[i].id == id) {
55 | wx.navigateTo({
56 | url: list[i].url
57 | })
58 | }
59 | }
60 | }
61 | ,
62 | onShareAppMessage: function () {
63 | return {
64 | title: 'www.smtvoice.com',
65 | path: 'pages/device/device'
66 | }
67 | }
68 | ,
69 | //下拉刷新
70 | onPullDownRefresh: function () {
71 | wx.stopPullDownRefresh()
72 | },
73 | onLoad: function () {
74 | }
75 | })
--------------------------------------------------------------------------------
/pages/find/find.js:
--------------------------------------------------------------------------------
1 | var WxParse = require('../../wxParse/wxParse.js');
2 | var app = getApp()
3 | var list
4 | var id
5 | Page({
6 | data: {
7 | list: null,
8 | id: null
9 | },
10 | //事件处理函数
11 | bindViewTap: function (e) {
12 | // app.num=e.currentTarget.id
13 | id = e.currentTarget.id
14 | console.log('num:', app.num)
15 | console.log('e:', e)
16 | wx.navigateTo({
17 | url: 'play/play?id=' + id
18 | })
19 | },
20 | onShareAppMessage: function () {
21 | return {
22 | title: 'www.smtvoice.com',
23 | path: 'pages/find/find'
24 | }
25 | }
26 | ,
27 | //下拉刷新
28 | onPullDownRefresh: function () {
29 | wx.stopPullDownRefresh()
30 | load(this)
31 | },
32 | onLoad: function () {
33 | load(this)
34 | }
35 | })
36 |
37 | function load(that) {
38 | var that = that
39 | request(app.api_host+'wxin/get.blog.list.php?type=find', function (res) {
40 | list = res.data.list
41 | console.log('diy:', list)
42 | //更新数据
43 | that.setData({
44 | list: list
45 | })
46 | })
47 | //加载描述
48 | request(app.api_host+'wxin/info.php?type=get&name=wxin_find_des', function (res) {
49 | console.log('describe:', res)
50 | // console.log(JSON.stringify(res.data, ' ', ' '));
51 | WxParse.wxParse('describe', 'html', res.data.list[0].content_html, that, 5);
52 | })
53 | }
54 |
55 | //向服务器发送get请求
56 | //url 请求地址及参数
57 | //Callback 回调函数
58 | function request(url, Callback) {
59 | console.log('url:', url)
60 | wx.request({
61 | url: url,
62 | method: 'GET',
63 | header: {
64 | 'content-type': 'application/json'
65 | },
66 | success: function (res) {
67 | console.log('request函数success:', res)
68 | Callback(res);
69 | }
70 | })
71 | }
--------------------------------------------------------------------------------
/pages/device/bluetooth/control/control.wxss:
--------------------------------------------------------------------------------
1 | /* pages/device/bluetooth/control/control.wxss */
2 | @import "../../switch/switch.wxss";
3 |
4 | .input {
5 | border: 1px solid gray;
6 | padding: 15px;
7 | border-radius: 5px;
8 | margin-left: 20px;
9 | margin-top: 15px;
10 | margin-right: 20px;
11 | width: auto;
12 | }
13 |
14 | .index {
15 | padding-left: 20px;
16 | padding-right: 20px;
17 | padding-top: 15px;
18 | }
19 |
20 | .button {
21 | margin-bottom: 20px;
22 | margin-right: 20px;
23 | display: flex;
24 | width: auto;
25 | flex-direction: column;
26 | align-content: right;
27 | align-self: right;
28 | }
29 |
30 | ._text {
31 | margin-left: 20px;
32 | margin-top: 25px;
33 | margin-bottom: 10px;
34 | }
35 |
36 | ._switch {
37 | float: right;
38 | margin-right: 20px;
39 | }
40 |
41 | ._switch2 {
42 | float: right;
43 | margin-right: 20px;
44 | }
45 |
46 | .message {
47 | text-align: center;
48 | font-size: 25px;
49 | }
50 |
51 | /* .connect {
52 | margin-top: 30px;
53 | margin-left: 20px;
54 | padding-top: 8px;
55 | padding-bottom: 8px;
56 | position: relative;
57 | display: -webkit-box;
58 | display: -webkit-flex;
59 | display: flex;
60 | align-items: center;
61 | }
62 |
63 | .floatr{
64 | float: right;
65 | } */
66 |
67 | .container {
68 | margin-left: 5%;
69 | margin-right:2%;
70 | display: flex;
71 | flex-direction: row;
72 | justify-content: space-between;
73 | align-items: center;
74 | padding-top: 1%;
75 | padding-bottom: 1%;
76 | }
77 | .line{
78 | content: " ";
79 | /*position: absolute;*/
80 | left: 0px;
81 | top: 0;
82 | right: 10px;
83 | height: 1px;
84 | border-top: 1rpx dashed #d9d9d9;
85 | color: #d9d9d9;
86 | }
87 | .left {
88 | font-family: "黑体";
89 | color:black;
90 | font-size: 40rpx;
91 | }
92 |
93 | .right {
94 | font-family: "楷体";
95 | color: #ff0000;
96 | font-size: 80rpx;
97 | }
--------------------------------------------------------------------------------
/pages/common/lib/weui.wxss:
--------------------------------------------------------------------------------
1 |
2 | .weui-cells__tips {
3 | margin-top: .3em;
4 | color: #999999;
5 | padding-left: 15px;
6 | padding-right: 15px;
7 | font-size: 14px;
8 | }
9 | .weui-cell {
10 | padding: 10px 15px;
11 | position: relative;
12 | display: -webkit-box;
13 | display: -webkit-flex;
14 | display: flex;
15 | -webkit-box-align: center;
16 | -webkit-align-items: center;
17 | align-items: center;
18 | }
19 | /*横线*/
20 | .weui-cell:before {
21 | content: " ";
22 | position: absolute;
23 | left: 10px;
24 | top: 0;
25 | right: 10px;
26 | height: 1px;
27 | border-top: 1rpx solid #D9D9D9;
28 | color: #D9D9D9;
29 | }
30 | .weui-cell:first-child:before {
31 | display: none;
32 | }
33 | .weui-cell_active {
34 | background-color: #ECECEC;
35 | }
36 | .weui-cell_primary {
37 | -webkit-box-align: start;
38 | -webkit-align-items: flex-start;
39 | align-items: flex-start;
40 | }
41 | .weui-cell__bd {
42 | -webkit-box-flex: 1;
43 | -webkit-flex: 1;
44 | flex: 1;
45 | }
46 | .weui-cell__ft {
47 | text-align: right;
48 | color: #999999;
49 | }
50 | .weui-cell_access {
51 | color: inherit;
52 | }
53 |
54 | .weui-cell_link {
55 | color: #586C94;
56 | font-size: 14px;
57 | }
58 | .weui-cell_link:active {
59 | background-color: #ECECEC;
60 | }
61 | .weui-cell_link:first-child:before {
62 | display: block;
63 | }
64 | .weui-icon-radio {
65 | margin-left: 3.2px;
66 | margin-right: 3.2px;
67 | }
68 | .weui-cell_switch {
69 | padding-top: 6px;
70 | padding-bottom: 6px;
71 | }
72 |
73 | .index-hd {
74 | padding: 50rpx;
75 | text-align: center;
76 | }
77 | .index-bd {
78 | padding: 0 30rpx 40rpx;
79 | }
80 | .index-ft {
81 | padding-bottom: 20rpx;
82 | text-align: center;
83 | }
84 | .index-logo {
85 | width: 86rpx;
86 | height: 86rpx;
87 | }
88 | .index-desc {
89 | margin-top: 20rpx;
90 | color: #888888;
91 | font-size: 28rpx;
92 | }
--------------------------------------------------------------------------------
/app.json:
--------------------------------------------------------------------------------
1 | {
2 | "pages": [
3 | "pages/index/index",
4 | "pages/index/in/in",
5 | "pages/device/device",
6 | "pages/logs/logs",
7 | "pages/find/find",
8 | "pages/user/user",
9 | "pages/user/login/login",
10 | "pages/user/register/register",
11 | "pages/index/news/news",
12 | "pages/find/play/play",
13 | "pages/device/temper/temper",
14 | "pages/device/switch/switch",
15 | "pages/device/pm/pm",
16 | "pages/device/hum/hum",
17 | "pages/device/gps/gps",
18 | "pages/device/bluetooth/bluetooth",
19 | "pages/device/bluetooth/control/control",
20 | "pages/device/bluetooth/set/set",
21 | "pages/device/scan-code/scan-code",
22 | "pages/device/webview/webview"
23 | ],
24 | "window": {
25 | "disableScroll": true,
26 | "enablePullDownRefresh": false,
27 | "navigationBarTextStyle": "black",
28 | "navigationBarTitleText": "极客物联网",
29 | "navigationBarBackgroundColor": "#F8F8F8",
30 | "backgroundColor": "#F8F8F8"
31 | },
32 | "tabBar": {
33 | "color": "#7A7E83",
34 | "selectedColor": "#3cc51f",
35 | "borderStyle": "black",
36 | "backgroundColor": "#ffffff",
37 | "list": [
38 | {
39 | "pagePath": "pages/index/index",
40 | "iconPath": "img/home.png",
41 | "selectedIconPath": "img/homeH.png",
42 | "text": "首页"
43 | },
44 | {
45 | "pagePath": "pages/device/device",
46 | "iconPath": "img/device.png",
47 | "selectedIconPath": "img/deviceH.png",
48 | "text": "设备"
49 | },
50 | {
51 | "pagePath": "pages/find/find",
52 | "iconPath": "img/find.png",
53 | "selectedIconPath": "img/findH.png",
54 | "text": "发现"
55 | },
56 | {
57 | "pagePath": "pages/user/user",
58 | "iconPath": "img/user.png",
59 | "selectedIconPath": "img/userH.png",
60 | "text": "我的"
61 | }
62 | ]
63 | },
64 | "networkTimeout": {
65 | "request": 15000,
66 | "connectSocket": 10000,
67 | "uploadFile": 10000,
68 | "downloadFile": 10000
69 | }
70 | }
--------------------------------------------------------------------------------
/pages/device/gps/gps.js:
--------------------------------------------------------------------------------
1 | var app = getApp()
2 | var myfunction = require('../../../utils/myfunction');
3 | Page({
4 | data: {
5 | list: []
6 | },
7 |
8 | onShareAppMessage: function () {
9 | return {
10 | title: 'www.geek-iot.com',
11 | path: 'pages/device/device'
12 | }
13 | }
14 | ,
15 | //下拉刷新
16 | onPullDownRefresh: function () {
17 | var that = this
18 | wx.stopPullDownRefresh()
19 | load(that);
20 | },
21 |
22 | onLoad: function () {
23 | var that = this
24 | load(that);
25 | }
26 | })
27 |
28 |
29 | //加载数据
30 | function load(that) {
31 | if (app.user == null) {
32 | //更新数据
33 | wx.showModal({
34 | title: '极客物联网',
35 | content: '登陆后才能查看,请您先登录!',
36 | success: function (res) {
37 | if (res.confirm) {
38 | // 确定,跳转到登陆
39 | wx.redirectTo({ url: '../../user/login/login' })
40 | } else if (res.cancel) {
41 | // 取消,返回
42 | wx.navigateBack({})
43 | }
44 | }
45 | })
46 | }
47 | else {
48 | myfunction.request(app.api_host + 'wxin/device.php?device=sensor&type=getlist&sensor=gps&userid=' + app.user.userid + '&password=' + app.user.password, function (res) {
49 | var jsonArray = [];
50 | for (var i = 0; i < res.data.num; i++) {
51 | var str = res.data.list[i].data
52 | var list = str.split(",")//以(,)号分割字符串
53 | var json = new Object();
54 | json.latitude = list[0];
55 | json.longitude = list[1];
56 |
57 | var jrr = [];
58 | jrr.push(json);
59 | var json1 = new Object();
60 | json1.markers = jrr;
61 | json1.latitude = list[0];
62 | json1.longitude = list[1];
63 | json1.name = res.data.list[i].name;
64 | json1.pic = res.data.list[i].pic;
65 | json1.heat = res.data.list[i].heat;
66 | json1.id = res.data.list[i].id;
67 | jsonArray.push(json1);
68 | }
69 | console.log('jsonArray', jsonArray)
70 | that.setData({
71 | list: jsonArray
72 | });
73 |
74 | });
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/pages/device/bluetooth/control/control.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | {{name}}
9 |
10 |
11 |
12 |
13 |
14 |
15 | (遥控{{select}}){{message}}
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 | 发送回车
34 |
35 |
36 |
37 |
38 |
42 |
43 |
44 |
45 | {{name}}({{connect}})
46 |
47 |
48 |
49 |
50 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/pages/user/user.js:
--------------------------------------------------------------------------------
1 | var app = getApp()
2 | var inputusername
3 | var inputpassword
4 | var myfunction = require('../../utils/myfunction');
5 | Page({
6 | data: {
7 | dis: false,
8 | user:''
9 | },
10 | //下拉刷新
11 | onPullDownRefresh: function () {
12 | var that = this
13 | wx.stopPullDownRefresh()
14 | load(that)
15 | },
16 |
17 | onLoad: function () {
18 | var that = this
19 | if (app.user != null) {
20 | console.log('onLoad')
21 | that.setData({
22 | dis: false,
23 | user:app.user
24 | })
25 | }
26 | else {
27 | that.setData({
28 | dis: true,
29 | })
30 | }
31 | }
32 | ,
33 | /**
34 | * 生命周期函数--监听页面显示
35 | */
36 | onShow: function () {
37 | var that = this
38 | if (app.user != null) {
39 | console.log('onLoad')
40 |
41 | that.setData({
42 | dis: false,
43 | user: app.user
44 | })
45 | }
46 | else {
47 | that.setData({
48 | dis: true,
49 | })
50 | }
51 | },
52 |
53 | bindlogin: function (res) {
54 | console.log('登录', res)
55 | wx.navigateTo({
56 | url: 'login/login',
57 | success: function (res) {
58 | }
59 | })
60 | }
61 | ,
62 | bindregister: function (res) {
63 | console.log('注册', res)
64 | wx.navigateTo({
65 | url: 'register/register',
66 | success: function (res) {
67 | }
68 | })
69 | }
70 | ,
71 | // 退出按钮按下
72 | bindlogout: function (e) {
73 | console.log('退出按钮按下')
74 | var that = this
75 | that.setData({
76 | dis: true
77 | })
78 |
79 | //删除用户数据到本地
80 | try {
81 | //清除用户登录凭证
82 | wx.setStorageSync('user', null)
83 | app.user=null
84 | } catch (e) {
85 | }
86 |
87 | }
88 |
89 | })
90 |
91 | function load(that) {
92 | //获取本地用户数据
93 | wx.getStorage({
94 | key: 'user',
95 | success: function (res) {
96 | app.user = res.data
97 | console.log('本地数据app.user:', app.user)
98 | }
99 | })
100 | if (app.user)//登陆过
101 | {
102 | myfunction.request(app.api_host+'/user/login.php?email=' + app.user.email + '&password=' + app.user.password, function (res) {
103 | console.log(res)
104 | if (res.data.resault == 'success') {
105 | console.log(res.data)
106 | that.setData({
107 | dis: false,
108 | user: res.data
109 | })
110 |
111 | //保存用户数据到本地
112 | try {
113 | //保存从服务器获取的用户数据
114 | wx.setStorageSync('user', res.data)
115 | app.user = res.data
116 | } catch (e) {
117 | }
118 | }
119 | else {
120 | wx.showToast({
121 | title: res.data.msg,
122 | icon: 'fail',
123 | duration: 2000
124 | })
125 | that.setData({
126 | dis: true,
127 | user: res.data
128 | })
129 | }
130 | })
131 | }
132 | else {
133 | that.setData({
134 | dis: true,
135 | })
136 | }
137 |
138 | }
139 |
--------------------------------------------------------------------------------
/pages/index/index.js:
--------------------------------------------------------------------------------
1 | var WxParse = require('../../wxParse/wxParse.js');
2 | var app = getApp()
3 | Page({
4 | data: {
5 | imgUrls: [],
6 | indicatorDots: true,
7 | autoplay: true,
8 | interval: 3000,
9 | duration: 1500,
10 | news: null
11 | },
12 | //事件处理函数
13 | bindViewTap: function (e) {
14 | app.num = e.currentTarget.id
15 | var id = e.currentTarget.id
16 | // console.log('num:', app.num)
17 | // console.log('e:', e)
18 | wx.navigateTo({
19 | url: 'news/news?id=' + id
20 | })
21 | },
22 | onShareAppMessage: function () {
23 | return {
24 | title: 'www.smtvoice.com',
25 | path: 'pages/index/index'
26 | }
27 | }
28 | ,
29 | onShow: function () {
30 | // 在页面展示之后先获取一次数据
31 | console.log('页面展示')
32 | },
33 | //下拉刷新
34 | // onPullDownRefresh: function () {
35 | // // wx.stopPullDownRefresh()
36 | // // var that = this
37 | // // load(that)
38 | // },
39 | onLoad: function () {
40 | var that = this
41 | load(that)
42 | }
43 | })
44 |
45 | function load(that) {
46 | var that = that;
47 | var imgUrls = [];
48 | //加载轮播图
49 | request(app.api_host+'wxin/info.php?type=get&name=wxin_swiper', function (res) {
50 | console.log('swiper:', res)
51 | for (var i = 0; i < res.data.num; i++) {
52 | imgUrls = imgUrls.concat(res.data.list[i].content_md)
53 | }
54 | console.log('imgUrls:', imgUrls);
55 |
56 | //更新数据
57 | that.setData({
58 | imgUrls: imgUrls
59 | })
60 | })
61 | //加载描述
62 | request(app.api_host +'wxin/info.php?type=get&name=wxin_home_des', function (res) {
63 | console.log('describe:', res)
64 | // console.log(JSON.stringify(res.data, ' ', ' '));
65 | WxParse.wxParse('describe', 'html', res.data.list[0].content_html, that, 5);
66 | })
67 |
68 | //加载新闻列表
69 | request(app.api_host +'wxin/get.blog.list.php?type=news', function (res) {
70 | var news = res.data.list
71 | console.log('news:', news)
72 | // console.log(JSON.stringify(res.data, ' ', ' '));
73 | //更新数据
74 | that.setData({
75 | news: news
76 | })
77 | })
78 |
79 | //获取本地用户数据
80 | wx.getStorage({
81 | key: 'user',
82 | success: function (res) {
83 | app.user = res.data
84 | console.log('本地数据app.user:', app.user)
85 | }
86 | })
87 |
88 | //获取用户信息
89 | wx.getUserInfo({
90 | success: function (res) {
91 | console.log('用户信息:', res)
92 | var userInfo = res.userInfo
93 | var nickName = userInfo.nickName
94 | var avatarUrl = userInfo.avatarUrl
95 | var gender = userInfo.gender //性别 0:未知、1:男、2:女
96 | var province = userInfo.province
97 | var city = userInfo.city
98 | var country = userInfo.country
99 |
100 | app.userinfo = res.userInfo
101 | }
102 | })
103 | }
104 |
105 | //向服务器发送get请求
106 | //url 请求地址及参数
107 | //Callback 回调函数
108 | function request(url, Callback) {
109 | console.log('url:', url)
110 | wx.request({
111 | url: url,
112 | method: 'GET',
113 | header: {
114 | 'content-type': 'application/json'
115 | },
116 | success: function (res) {
117 | console.log('request函数success:', res)
118 | Callback(res);
119 | },
120 | fail: function (res) {
121 | console.log(res)
122 | }
123 | })
124 | }
125 |
--------------------------------------------------------------------------------
/pages/device/scan-code/scan-code.js:
--------------------------------------------------------------------------------
1 | var myfunction = require('../../../utils/myfunction');
2 | var note
3 | var resault = null
4 | var app = getApp();
5 | Page({
6 | data: {
7 | resault: '',
8 | note: '',
9 | count: ''
10 | },
11 | onShareAppMessage: function () {
12 | return {
13 | title: '极客物联网',
14 | path: 'pages/device/scan-code/scan-code'
15 | }
16 | }
17 | ,
18 | onLoad: function (options) {
19 | var that = this
20 | console.log('userinfo:',app.userinfo)
21 | //在服务器获取响应结果
22 | myfunction.request(app.api_host+'wxin/scancode.php?type=getnum', function (res) {
23 | console.log(res)
24 | if (res.data.status == 'ok') {
25 | that.setData({
26 | count: res.data.count
27 | })
28 | }
29 | else {
30 |
31 | }
32 | })
33 | },
34 | onPullDownRefresh: function () {
35 | var that = this
36 | wx.stopPullDownRefresh()
37 | //在服务器获取响应结果
38 | myfunction.request(app.api_host+'wxin/cancode.php?type=getnum', function (res) {
39 | console.log(res)
40 | if (res.data.status == 'ok') {
41 | that.setData({
42 | count: res.data.count
43 | })
44 | }
45 | else {
46 |
47 | }
48 | })
49 | },
50 | scanCode: function () {
51 | var that = this
52 | wx.scanCode({
53 | success: function (res) {
54 | console.log(res)
55 | resault = res.result
56 | that.setData({
57 | resault: resault
58 | })
59 | //在服务器获取响应结果
60 | myfunction.request(app.api_host+'wxin/scancode.php?type=get&text=' + resault, function (res) {
61 | console.log(res)
62 | if (res.data.status == 'ok') {
63 | note = res.data.note
64 | that.setData({
65 | note: res.data.note
66 |
67 | })
68 | }
69 | else {
70 | that.setData({
71 | note: ''
72 | })
73 | wx.showModal({
74 | title: '扫码结果',
75 | content: '不存在,您可以填写备注信息然后共享!',
76 | success: function (res) {
77 | if (res.confirm) {
78 | console.log('用户点击确定')
79 | } else if (res.cancel) {
80 | console.log('用户点击取消')
81 | }
82 | }
83 | })
84 | }
85 | })
86 | },
87 | fail: function (res) {
88 | }
89 | })
90 | },
91 | bindKeyusername: function (e) {
92 | note = e.detail.value
93 | console.log('备注:', note)
94 | }
95 | ,
96 | btnsave: function (res) {
97 | if (resault != null) {
98 | //保存到服务器
99 | myfunction.request(app.api_host+'wxin/scancode.php?type=set&text=' + resault + '¬e=' + note + '&nick=' + app.userinfo.nickName, function (res) {
100 |
101 | console.log(res)
102 | if (res.data.status == 'ok') {
103 | wx.showToast({
104 | title: '共享成功!',
105 | icon: 'success',
106 | duration: 1000
107 | })
108 | }
109 | else {
110 | wx.showToast({
111 | title: res.data.error,
112 | icon: 'success',
113 | duration: 1000
114 | })
115 | }
116 | })
117 | }
118 | else {
119 | wx.showToast({
120 | title: '请先扫码!',
121 | icon: 'success',
122 | duration: 1000
123 | })
124 | }
125 | }
126 | })
127 |
--------------------------------------------------------------------------------
/pages/user/register/register.js:
--------------------------------------------------------------------------------
1 | // pages/user/register/register.js
2 | var myfunction = require('../../../utils/myfunction');
3 | var app = getApp()
4 | var inputnickname = ''
5 | var inputpassword = ''
6 | var inputconfirm = ''
7 | var inputemail = ''
8 | Page({
9 |
10 | /**
11 | * 页面的初始数据
12 | */
13 | data: {
14 |
15 | },
16 |
17 | /**
18 | * 生命周期函数--监听页面加载
19 | */
20 | onLoad: function (options) {
21 |
22 | },
23 |
24 | /**
25 | * 生命周期函数--监听页面初次渲染完成
26 | */
27 | onReady: function () {
28 |
29 | },
30 |
31 | /**
32 | * 生命周期函数--监听页面显示
33 | */
34 | onShow: function () {
35 |
36 | },
37 |
38 | /**
39 | * 生命周期函数--监听页面隐藏
40 | */
41 | onHide: function () {
42 |
43 | },
44 |
45 | /**
46 | * 生命周期函数--监听页面卸载
47 | */
48 | onUnload: function () {
49 |
50 | },
51 |
52 | /**
53 | * 页面相关事件处理函数--监听用户下拉动作
54 | */
55 | onPullDownRefresh: function () {
56 |
57 | },
58 |
59 | /**
60 | * 页面上拉触底事件的处理函数
61 | */
62 | onReachBottom: function () {
63 |
64 | },
65 |
66 | /**
67 | * 用户点击右上角分享
68 | */
69 | onShareAppMessage: function () {
70 |
71 | }
72 | ,
73 | bindKeynickname: function (e) {
74 | // console.log('昵称', e)
75 | inputnickname = e.detail.value
76 | }
77 | ,
78 | bindKeypassword: function (e) {
79 | // console.log('密码', e)
80 | inputpassword = e.detail.value
81 | }
82 | ,
83 | bindKeyconfirm: function (e) {
84 | // console.log('确认密码', e)
85 | inputconfirm = e.detail.value
86 | }
87 |
88 | ,
89 | bindKeyemail: function (e) {
90 | // console.log('注册邮箱', e)
91 | inputemail = e.detail.value
92 | }
93 |
94 | ,
95 | bindregister: function (res) {
96 | console.log('注册', res)
97 | var that = this
98 | if (inputconfirm != inputpassword) {
99 | wx.showModal({
100 | title: '提示:',
101 | content: '两次密码输入不一致,请改正后再试!',
102 | success: function (res) {
103 | if (res.confirm) {
104 | console.log('用户点击确定')
105 |
106 | } else if (res.cancel) {
107 | console.log('用户点击取消')
108 | }
109 | }
110 | })
111 | }
112 | else {
113 | var str = app.api_host + 'user/register.php?nickname=' + inputnickname + '&password=' + inputpassword + '&email=' + inputemail
114 | console.log(str)
115 | myfunction.request(str, function (res) {
116 | console.log(res)
117 | if (res.data.resault == 'success') {
118 | console.log(res.data)
119 | wx.showModal({
120 | title: '注册成功',
121 | content: '请到邮箱激活账号后再登录!',
122 | success: function (res) {
123 | if (res.confirm) {
124 | console.log('用户点击确定')
125 | wx.switchTab({
126 | url: '../user'
127 | })
128 | } else if (res.cancel) {
129 | console.log('用户点击取消')
130 | wx.switchTab({
131 | url: '../user'
132 | })
133 | }
134 | }
135 | })
136 | }
137 | else {
138 | wx.showModal({
139 | title: '注册失败',
140 | content: res.data.msg,
141 | success: function (res) {
142 | if (res.confirm) {
143 | console.log('用户点击确定')
144 | } else if (res.cancel) {
145 | console.log('用户点击取消')
146 | }
147 | }
148 | })
149 | }
150 | })
151 | }
152 |
153 | }
154 | })
--------------------------------------------------------------------------------
/pages/device/bluetooth/bluetooth.js:
--------------------------------------------------------------------------------
1 | var app = getApp()
2 | var list
3 | var updataInter //计时器handle变量
4 | var SearchCycle = 1000 //蓝牙搜索周期
5 | Page({
6 | /**
7 | * 页面的初始数据
8 | */
9 | data: {
10 | list: null,
11 | imgurl: null
12 | },
13 | onShareAppMessage: function () {
14 | return {
15 | title: '极客物联网',
16 | path: 'pages/device/bluetooth/ bluetooth'
17 | }
18 | }
19 | ,
20 | /**
21 | * 生命周期函数--监听页面加载
22 | */
23 | onLoad: function (options) {
24 | var that = this
25 | if(!app.user) {
26 | //不是是登陆状态
27 | console.log('不是是登陆状态')
28 | wx.showModal({
29 | title: '温馨提示:',
30 | content: '注册登陆后可与服务器同步配置!',
31 | success: function(res) {
32 | if (res.confirm) {
33 | console.log('用户点击确定')
34 | // 确定,跳转到登陆
35 | wx.redirectTo({ url: '../../user/login/login' })
36 | } else if (res.cancel) {
37 | console.log('用户点击取消')
38 | }
39 | }
40 | })
41 | }
42 | setTimeout(function () {
43 | wx.openBluetoothAdapter({
44 | success: function (res) {
45 | console.log('openBluetoothAdapter', res)
46 | //开始搜索蓝牙设备
47 | wx.startBluetoothDevicesDiscovery({
48 | services: [],
49 | success: function (res) {
50 | console.log('startBluetoothDevicesDiscovery', res)
51 | }
52 | })
53 | }
54 | })
55 | }, 1000)
56 |
57 | }
58 | ,
59 | /**
60 | * 生命周期函数--监听页面卸载
61 | */
62 | onUnload: function () {
63 | console.log('关闭定时器')
64 | //关闭计时器
65 | clearInterval(updataInter)
66 | },
67 | onShow: function () {
68 | //开始搜索蓝牙设备
69 | wx.startBluetoothDevicesDiscovery({
70 | services: [],
71 | success: function (res) {
72 | console.log('startBluetoothDevicesDiscovery', res)
73 | }
74 | })
75 | console.log('dakai')
76 | var that = this
77 | setTimeout(function () {
78 | //启动定时器,开始搜索蓝牙设备
79 | updataInter = setInterval(function () { serch(that) }, SearchCycle)
80 | }, 1000)
81 | },
82 | onHide: function () {
83 | wx.stopBluetoothDevicesDiscovery({
84 | success: function(res) {
85 | console.log(res)
86 | },
87 | })
88 | console.log('关闭定时器')
89 | //关闭计时器
90 | clearInterval(updataInter)
91 | },
92 | //下拉刷新
93 | onPullDownRefresh: function () {
94 | wx.stopPullDownRefresh()
95 | },
96 |
97 | //点击事件处理
98 | selectDevice: function (res) {
99 | console.log(res)
100 | wx.navigateTo({
101 | url: 'control/control?deviceId=' + list[res.currentTarget.id].deviceId + '&name=' + list[res.currentTarget.id].name,
102 | success: function (res) {
103 | console.log('关闭定时器')
104 | //关闭计时器
105 | clearInterval(updataInter) },
106 | fail: function (res) { },
107 | complete: function (res) { },
108 | })
109 | },
110 | })
111 |
112 | function serch(that) {
113 | wx.getBluetoothDevices({
114 | success: function (res) {
115 | console.log('搜到的蓝牙设备', res)
116 | list = res.devices
117 | var i;
118 | var arr = new Array()
119 | for (i = 0; i < list.length; i++) {
120 | if (list[i].RSSI > -50) {
121 | arr[i] = "img/4.png"
122 | }
123 | else
124 | if (list[i].RSSI > -65) {
125 | arr[i] = "img/3.png"
126 | }
127 | else
128 | if (list[i].RSSI > -80) {
129 | arr[i] = "img/2.png"
130 | }
131 | else {
132 | arr[i] = "img/1.png"
133 | }
134 | }
135 | console.log(arr)
136 | that.setData({
137 | list: list,
138 | imgurl: arr
139 | })
140 | }
141 | })
142 | }
--------------------------------------------------------------------------------
/pages/device/device.wxss:
--------------------------------------------------------------------------------
1 | /* pages/device/device.wxss */
2 | @import "../common/lib/weui.wxss";
3 | .container {
4 | height: 100%;
5 | display: flex;
6 | flex-direction: column;
7 | align-items: center;
8 | justify-content: space-between;
9 | padding:10px 20px;
10 | padding-bottom: 50px;
11 | box-sizing: border-box;
12 | }
13 | .userinfo-avatar {
14 | width: 128rpx;
15 | height: 128rpx;
16 | margin: 20rpx;
17 | border-radius: 50%;
18 | }
19 |
20 | .device-list {
21 | /*height: 100%;*/
22 | padding-left: 40px;
23 | padding-top: 20px;
24 | display: flex;
25 | flex-direction: row;
26 | align-content: right;
27 | align-self: right;
28 | }
29 |
30 |
31 | .index-hd {
32 | padding: 10px;
33 | text-align: center;
34 | }
35 | .index-bd {
36 | padding-left: 30rpx;
37 | padding-right: 30rpx;
38 | }
39 | .index-ft {
40 | padding-bottom: 20rpx;
41 | text-align: center;
42 | }
43 | .index-logo {
44 | width: 86rpx;
45 | height: 86rpx;
46 | }
47 | .index-desc {
48 | margin-top: 10px;
49 | color: black;
50 | font-size: 20px;
51 | }
52 |
53 |
54 |
55 | .navigator-box {
56 | opacity: 0;
57 | position: relative;
58 | background-color: #FFFFFF;
59 | line-height: 1.41176471;
60 | font-size: 34rpx;
61 |
62 | transform: translateY(-50%);
63 | transition: .3s;
64 | }
65 | .navigator-box-show {
66 | opacity: 1;
67 | transform: translateY(0);
68 | }
69 | .navigator {
70 | padding: 20rpx 30rpx;
71 | position: relative;
72 | display: flex;
73 | align-items: center;
74 | }
75 | .navigator:before {
76 | content: " ";
77 | position: absolute;
78 | left: 30rpx;
79 | top: 0;
80 | right: 30rpx;
81 | height: 1px;
82 | border-top: 1rpx solid #D8D8D8;
83 | color: #D8D8D8;
84 | }
85 | .navigator:first-child:before {
86 | display: none;
87 | }
88 | .navigator-text {
89 | flex: 1;
90 | }
91 | .navigator-arrow {
92 | padding-right: 26rpx;
93 | position: relative;
94 | }
95 | .navigator-arrow:after {
96 | content: " ";
97 | display: inline-block;
98 | height: 18rpx;
99 | width: 18rpx;
100 | border-width: 2rpx 2rpx 0 0;
101 | border-color: #888888;
102 | border-style: solid;
103 | transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0);
104 | position: absolute;
105 | top: 50%;
106 | margin-top: -8rpx;
107 | right: 28rpx;
108 | }
109 |
110 | .boxshadow {
111 | -webkit-box-shadow: 3px 3px 3px rgba(100, 100, 80, 0.8);
112 | -moz-box-shadow: 3px 3px 3px rgba(100, 100, 80, 0.8);
113 | box-shadow: 3px 3px 3px rgba(100, 100, 80, 0.8);
114 | }
115 |
116 | .kind-list-item {
117 | margin: 20rpx 0;
118 | background-color:orange;
119 | border-radius: 4rpx;
120 | overflow: hidden;
121 |
122 | -webkit-box-shadow: 3px 3px 3px rgba(100, 100, 80, 0.8);
123 | -moz-box-shadow: 3px 3px 3px rgba(100, 100, 80, 0.8);
124 | box-shadow: 3px 3px 3px rgba(100, 100, 80, 0.8);
125 | }
126 | .kind-list-item:first-child {
127 | margin-top: 0;
128 |
129 | }
130 | .kind-list-text{
131 | flex: 1;
132 | }
133 | .kind-list-img {
134 | width: 60rpx;
135 | height: 60rpx;
136 | }
137 | .kind-list-item-hd {
138 | padding: 30rpx;
139 | display: flex;
140 | align-items: center;
141 |
142 | transition: opacity .3s;
143 | }
144 | .kind-list-item-hd-show {
145 | opacity: .2;
146 | }
147 | .kind-list-item-bd {
148 | height: 0;
149 | overflow: hidden;
150 | }
151 | .kind-list-item-bd-show {
152 | height: auto;
153 | }
154 |
155 | .gps{
156 | padding-left: 50rpx;
157 | padding-right: 50rpx;
158 | }
159 |
160 | .text{
161 | margin-top: 15px;
162 | margin-bottom: 8px;
163 | }
164 |
165 | .text1{
166 | padding-left: 10rpx;
167 | padding-top: 10px;
168 | }
169 |
170 | /*page{
171 | background-color: red;
172 | }*/
--------------------------------------------------------------------------------
/pages/device/switch/switch.js:
--------------------------------------------------------------------------------
1 |
2 | //switch.js
3 | //获取应用实例
4 | var app = getApp()
5 | var PageItems
6 | var len
7 |
8 | var red = 100
9 | var green = 100
10 | var blue = 100
11 | var myfunction = require('../../../utils/myfunction');
12 | Page({
13 | data: {
14 | pageItems: [],
15 | },
16 | //事件处理函数
17 | onLoad: function () {
18 | var that = this
19 | load(that)
20 | },
21 |
22 | onShareAppMessage: function () {
23 | return {
24 | title: 'www.geek-iot.com',
25 | path: 'pages/device/switch/switch'
26 | }
27 | }
28 | ,
29 | //下拉刷新
30 | onPullDownRefresh: function () {
31 | var that = this
32 | wx.stopPullDownRefresh()
33 | load(that);
34 | },
35 |
36 | onShow: function () {
37 | //在页面展示之后先获取一次数据
38 | console.log('页面展示')
39 | },
40 |
41 | //点击事件
42 | kindToggle: function (e) {
43 | var that = this
44 | if (e.currentTarget.id) {
45 | console.log('点击事件', e.currentTarget.id)
46 | var cmd = ""
47 | if (PageItems[e.currentTarget.id - 1].icon == 'img/1.png') {
48 | // PageItems[e.currentTarget.id - 1].icon = 'img/3.png'
49 | cmd = PageItems[e.currentTarget.id - 1].closecmd
50 | }
51 | else {
52 | // PageItems[e.currentTarget.id - 1].icon = 'img/1.png'
53 | cmd = PageItems[e.currentTarget.id - 1].opencmd
54 | }
55 | console.log('显示通信中');
56 | wx.showToast({
57 | title: '通信中...',
58 | icon: 'loading',
59 | duration: 5000
60 | })
61 | var url = app.api_host + 'wxin/device.php?device=switch&type=set&id=' + PageItems[e.currentTarget.id - 1].id + '&userid=' + app.user.userid + '&password=' + app.user.password + '&cmd=' + cmd;
62 | console.log(url);
63 | myfunction.request(url, function (res) {
64 | console.log("控制开关后返回:", res);
65 | wx.showToast({
66 | title: res.data.return,
67 | icon: 'warn',
68 | duration: 1000
69 | })
70 | // wx.hideToast()
71 | console.log('res.data.return:',res.data.return);
72 | if (res.data.resault == 'success') {
73 | if (PageItems[e.currentTarget.id - 1].icon == 'img/1.png') {
74 | PageItems[e.currentTarget.id - 1].icon = 'img/3.png'
75 | }
76 | else {
77 | PageItems[e.currentTarget.id - 1].icon = 'img/1.png'
78 | }
79 | }
80 | updata(that)
81 | });
82 | }
83 | },
84 |
85 | //红色值变化
86 | sliderChange: function (e) {
87 | var that = this
88 | if (e.target.id == "c1")
89 | red = e.detail.value;
90 | else
91 | if (e.target.id == "c2")
92 | green = e.detail.value;
93 | else
94 | if (e.target.id == "c3")
95 | blue = e.detail.value;
96 | console.log(e)
97 | var color = ((red << 16) | (green << 8) | blue)
98 | this.setData({
99 | color: color
100 | });
101 | console.log(app.api_host +'wxin/device.php? device=switch&type=set&id=8&userid=' + app.user.userid + '&password=' + app.user.password + '&cmd=' + color)
102 | myfunction.request(app.api_host + 'wxin/device.php? device=switch&type=set&id=8&userid=' + app.user.userid + '&password=' + app.user.password + '&cmd=' + color, function (res) {
103 | console.log("控制开关后返回:", res);
104 | });
105 | }
106 | })
107 |
108 | function load(that) {
109 | if (app.user == null) {
110 | //更新数据
111 | wx.showModal({
112 | title: '极客物联网',
113 | content: '登陆后才能查看,请您先登录!',
114 | success: function (res) {
115 | if (res.confirm) {
116 | // 确定,跳转到登陆
117 | wx.redirectTo({ url: '../../user/login/login' })
118 | } else if (res.cancel) {
119 | // 取消,返回
120 | wx.navigateBack({})
121 | }
122 | }
123 | })
124 | }
125 | else {
126 | myfunction.request(app.api_host + 'wxin/device.php?device=switch&type=getlist&userid=' + app.user.userid + '&password=' + app.user.password, function (res) {
127 | PageItems = res.data.list;
128 | console.log('PageItems', PageItems)
129 | len = res.data.num; //重组PageItems
130 | len = Math.floor((len + 2) / 3) * 3; //转化为3的倍数,floor函数是去掉小数点后面的数据直接取整
131 | console.log("len:", len);
132 | updata(that)
133 | });
134 | }
135 | }
136 |
137 | function updata(that) {
138 | var pageItems = [];
139 | var row = [];
140 | //三个一组进行重新分割
141 | for (var i = 0; i < len; i++) {
142 | if ((i + 1) % 3 == 0) {
143 | row.push(PageItems[i]);
144 | pageItems.push(row);
145 | row = [];
146 | continue;
147 | } else {
148 | row.push(PageItems[i]);
149 | }
150 | }
151 | that.setData({
152 | pageItems: pageItems
153 | });
154 | }
155 |
--------------------------------------------------------------------------------
/wxParse/wxParse.wxss:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * author: Di (微信小程序开发工程师)
4 | * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)
5 | * 垂直微信小程序开发交流社区
6 | *
7 | * github地址: https://github.com/icindy/wxParse
8 | *
9 | * for: 微信小程序富文本解析
10 | * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184
11 | */
12 |
13 | .wxParse{
14 | margin: 0 5px;
15 | font-family: Helvetica,sans-serif;
16 | font-size: 28rpx;
17 | color: #666;
18 | line-height: 1.8;
19 | }
20 | view{
21 | word-break:break-all; overflow:auto;
22 | }
23 | .wxParse-inline{
24 | display: inline;
25 | margin: 0;
26 | padding: 0;
27 | }
28 | /*//标题 */
29 | .wxParse-div{margin: 0;padding: 0;}
30 | .wxParse-h1{ font-size:2em; margin: .67em 0 }
31 | .wxParse-h2{ font-size:1.5em; margin: .75em 0 }
32 | .wxParse-h3{ font-size:1.17em; margin: .83em 0 }
33 | .wxParse-h4{ margin: 1.12em 0}
34 | .wxParse-h5 { font-size:.83em; margin: 1.5em 0 }
35 | .wxParse-h6{ font-size:.75em; margin: 1.67em 0 }
36 |
37 | .wxParse-h1 {
38 | font-size: 18px;
39 | font-weight: 400;
40 | margin-bottom: .9em;
41 | }
42 | .wxParse-h2 {
43 | font-size: 16px;
44 | font-weight: 400;
45 | margin-bottom: .34em;
46 | }
47 | .wxParse-h3 {
48 | font-weight: 400;
49 | font-size: 15px;
50 | margin-bottom: .34em;
51 | }
52 | .wxParse-h4 {
53 | font-weight: 400;
54 | font-size: 14px;
55 | margin-bottom: .24em;
56 | }
57 | .wxParse-h5 {
58 | font-weight: 400;
59 | font-size: 13px;
60 | margin-bottom: .14em;
61 | }
62 | .wxParse-h6 {
63 | font-weight: 400;
64 | font-size: 12px;
65 | margin-bottom: .04em;
66 | }
67 |
68 | .wxParse-h1, .wxParse-h2, .wxParse-h3, .wxParse-h4, .wxParse-h5, .wxParse-h6, .wxParse-b, .wxParse-strong { font-weight: bolder }
69 |
70 | .wxParse-i,.wxParse-cite,.wxParse-em,.wxParse-var,.wxParse-address{font-style:italic}
71 | .wxParse-pre,.wxParse-tt,.wxParse-code,.wxParse-kbd,.wxParse-samp{font-family:monospace}
72 | .wxParse-pre{white-space:pre}
73 | .wxParse-big{font-size:1.17em}
74 | .wxParse-small,.wxParse-sub,.wxParse-sup{font-size:.83em}
75 | .wxParse-sub{vertical-align:sub}
76 | .wxParse-sup{vertical-align:super}
77 | .wxParse-s,.wxParse-strike,.wxParse-del{text-decoration:line-through}
78 | /*wxparse-自定义个性化的css样式*/
79 | /*增加video的css样式*/
80 | .wxParse-strong,.wxParse-s{display: inline}
81 | .wxParse-a{
82 | color: deepskyblue;
83 | word-break:break-all;
84 | overflow:auto;
85 | }
86 |
87 | .wxParse-video{
88 | text-align: center;
89 | margin: 10px 0;
90 | }
91 |
92 | .wxParse-video-video{
93 | width:100%;
94 | }
95 |
96 | .wxParse-img{
97 | /*background-color: #efefef;*/
98 | overflow: hidden;
99 | }
100 |
101 | .wxParse-blockquote {
102 | margin: 0;
103 | padding:10px 0 10px 5px;
104 | font-family:Courier, Calibri,"宋体";
105 | background:#f5f5f5;
106 | border-left: 3px solid #dbdbdb;
107 | }
108 |
109 | .wxParse-code,.wxParse-wxxxcode-style{
110 | display: inline;
111 | background:#f5f5f5;
112 | }
113 | .wxParse-ul{
114 | margin: 20rpx 10rpx;
115 | }
116 |
117 | .wxParse-li,.wxParse-li-inner{
118 | display: flex;
119 | align-items: baseline;
120 | margin: 10rpx 0;
121 | }
122 | .wxParse-li-text{
123 |
124 | align-items: center;
125 | line-height: 20px;
126 | }
127 |
128 | .wxParse-li-circle{
129 | display: inline-flex;
130 | width: 5px;
131 | height: 5px;
132 | background-color: #333;
133 | margin-right: 5px;
134 | }
135 |
136 | .wxParse-li-square{
137 | display: inline-flex;
138 | width: 10rpx;
139 | height: 10rpx;
140 | background-color: #333;
141 | margin-right: 5px;
142 | }
143 | .wxParse-li-ring{
144 | display: inline-flex;
145 | width: 10rpx;
146 | height: 10rpx;
147 | border: 2rpx solid #333;
148 | border-radius: 50%;
149 | background-color: #fff;
150 | margin-right: 5px;
151 | }
152 |
153 | /*.wxParse-table{
154 | width: 100%;
155 | height: 400px;
156 | }
157 | .wxParse-thead,.wxParse-tfoot,.wxParse-tr{
158 | display: flex;
159 | flex-direction: row;
160 | }
161 | .wxParse-th,.wxParse-td{
162 | display: flex;
163 | width: 580px;
164 | overflow: auto;
165 | }*/
166 |
167 | .wxParse-u {
168 | text-decoration: underline;
169 | }
170 | .wxParse-hide{
171 | display: none;
172 | }
173 | .WxEmojiView{
174 | align-items: center;
175 | }
176 | .wxEmoji{
177 | width: 16px;
178 | height:16px;
179 | }
180 | .wxParse-tr{
181 | display: flex;
182 | border-right:1px solid #e0e0e0;
183 | border-bottom:1px solid #e0e0e0;
184 | border-top:1px solid #e0e0e0;
185 | }
186 | .wxParse-th,
187 | .wxParse-td{
188 | flex:1;
189 | padding:5px;
190 | font-size:28rpx;
191 | border-left:1px solid #e0e0e0;
192 | word-break: break-all;
193 | }
194 | .wxParse-td:last{
195 | border-top:1px solid #e0e0e0;
196 | }
197 | .wxParse-th{
198 | background:#f0f0f0;
199 | border-top:1px solid #e0e0e0;
200 | }
201 | .wxParse-del{
202 | display: inline;
203 | }
204 | .wxParse-figure {
205 | overflow: hidden;
206 | }
207 |
--------------------------------------------------------------------------------
/wxParse/wxParse.js:
--------------------------------------------------------------------------------
1 | /**
2 | * author: Di (微信小程序开发工程师)
3 | * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)
4 | * 垂直微信小程序开发交流社区
5 | *
6 | * github地址: https://github.com/icindy/wxParse
7 | *
8 | * for: 微信小程序富文本解析
9 | * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184
10 | */
11 |
12 | /**
13 | * utils函数引入
14 | **/
15 | import showdown from './showdown.js';
16 | import HtmlToJson from './html2json.js';
17 | /**
18 | * 配置及公有属性
19 | **/
20 | var realWindowWidth = 0;
21 | var realWindowHeight = 0;
22 | wx.getSystemInfo({
23 | success: function (res) {
24 | realWindowWidth = res.windowWidth
25 | realWindowHeight = res.windowHeight
26 | }
27 | })
28 | /**
29 | * 主函数入口区
30 | **/
31 | function wxParse(bindName = 'wxParseData', type='html', data='
数据不能为空
', target,imagePadding) {
32 | var that = target;
33 | var transData = {};//存放转化后的数据
34 | if (type == 'html') {
35 | transData = HtmlToJson.html2json(data, bindName);
36 | // console.log(JSON.stringify(transData, ' ', ' '));
37 | } else if (type == 'md' || type == 'markdown') {
38 | var converter = new showdown.Converter();
39 | var html = converter.makeHtml(data);
40 | transData = HtmlToJson.html2json(html, bindName);
41 | console.log(JSON.stringify(transData, ' ', ' '));
42 | }
43 | transData.view = {};
44 | transData.view.imagePadding = 0;
45 | if(typeof(imagePadding) != 'undefined'){
46 | transData.view.imagePadding = imagePadding
47 | }
48 | var bindData = {};
49 | bindData[bindName] = transData;
50 | that.setData(bindData)
51 | that.wxParseImgLoad = wxParseImgLoad;
52 | that.wxParseImgTap = wxParseImgTap;
53 | }
54 | // 图片点击事件
55 | function wxParseImgTap(e) {
56 | var that = this;
57 | var nowImgUrl = e.target.dataset.src;
58 | var tagFrom = e.target.dataset.from;
59 | if (typeof (tagFrom) != 'undefined' && tagFrom.length > 0) {
60 | wx.previewImage({
61 | current: nowImgUrl, // 当前显示图片的http链接
62 | urls: that.data[tagFrom].imageUrls // 需要预览的图片http链接列表
63 | })
64 | }
65 | }
66 |
67 | /**
68 | * 图片视觉宽高计算函数区
69 | **/
70 | function wxParseImgLoad(e) {
71 | var that = this;
72 | var tagFrom = e.target.dataset.from;
73 | var idx = e.target.dataset.idx;
74 | if (typeof (tagFrom) != 'undefined' && tagFrom.length > 0) {
75 | calMoreImageInfo(e, idx, that, tagFrom)
76 | }
77 | }
78 | // 假循环获取计算图片视觉最佳宽高
79 | function calMoreImageInfo(e, idx, that, bindName) {
80 | var temData = that.data[bindName];
81 | if (!temData || temData.images.length == 0) {
82 | return;
83 | }
84 | var temImages = temData.images;
85 | //因为无法获取view宽度 需要自定义padding进行计算,稍后处理
86 | var recal = wxAutoImageCal(e.detail.width, e.detail.height,that,bindName);
87 | // temImages[idx].width = recal.imageWidth;
88 | // temImages[idx].height = recal.imageheight;
89 | // temData.images = temImages;
90 | // var bindData = {};
91 | // bindData[bindName] = temData;
92 | // that.setData(bindData);
93 | var index = temImages[idx].index
94 | var key = `${bindName}`
95 | for (var i of index.split('.')) key+=`.nodes[${i}]`
96 | var keyW = key + '.width'
97 | var keyH = key + '.height'
98 | that.setData({
99 | [keyW]: recal.imageWidth,
100 | [keyH]: recal.imageheight,
101 | })
102 | }
103 |
104 | // 计算视觉优先的图片宽高
105 | function wxAutoImageCal(originalWidth, originalHeight,that,bindName) {
106 | //获取图片的原始长宽
107 | var windowWidth = 0, windowHeight = 0;
108 | var autoWidth = 0, autoHeight = 0;
109 | var results = {};
110 | var padding = that.data[bindName].view.imagePadding;
111 | windowWidth = realWindowWidth-2*padding;
112 | windowHeight = realWindowHeight;
113 | //判断按照那种方式进行缩放
114 | // console.log("windowWidth" + windowWidth);
115 | if (originalWidth > windowWidth) {//在图片width大于手机屏幕width时候
116 | autoWidth = windowWidth;
117 | // console.log("autoWidth" + autoWidth);
118 | autoHeight = (autoWidth * originalHeight) / originalWidth;
119 | // console.log("autoHeight" + autoHeight);
120 | results.imageWidth = autoWidth;
121 | results.imageheight = autoHeight;
122 | } else {//否则展示原来的数据
123 | results.imageWidth = originalWidth;
124 | results.imageheight = originalHeight;
125 | }
126 | return results;
127 | }
128 |
129 | function wxParseTemArray(temArrayName,bindNameReg,total,that){
130 | var array = [];
131 | var temData = that.data;
132 | var obj = null;
133 | for(var i = 0; i < total; i++){
134 | var simArr = temData[bindNameReg+i].nodes;
135 | array.push(simArr);
136 | }
137 |
138 | temArrayName = temArrayName || 'wxParseTemArray';
139 | obj = JSON.parse('{"'+ temArrayName +'":""}');
140 | obj[temArrayName] = array;
141 | that.setData(obj);
142 | }
143 |
144 | /**
145 | * 配置emojis
146 | *
147 | */
148 |
149 | function emojisInit(reg='',baseSrc="/wxParse/emojis/",emojis){
150 | HtmlToJson.emojisInit(reg,baseSrc,emojis);
151 | }
152 |
153 | module.exports = {
154 | wxParse: wxParse,
155 | wxParseTemArray:wxParseTemArray,
156 | emojisInit:emojisInit
157 | }
158 |
159 |
160 |
--------------------------------------------------------------------------------
/pages/device/bluetooth/set/set.js:
--------------------------------------------------------------------------------
1 | var app = getApp()
2 | var myfunction = require('../../../../utils/myfunction');
3 | var select
4 | Page({
5 |
6 | /**
7 | * 页面的初始数据
8 | */
9 | data: {
10 | item:
11 | [
12 | {
13 | wid: 1,
14 | name: '左上',
15 | icon: 'img/1.png',
16 | up: 'TZ',
17 | down: 'ZS',
18 | show: true
19 | },
20 | {
21 | wid: 2,
22 | name: '前进',
23 | icon: 'img/2.png',
24 | up: 'TZ',
25 | down: 'QJ',
26 | show: true
27 | },
28 | {
29 | wid: 3,
30 | name: '右上',
31 | icon: 'img/3.png',
32 | up: 'TZ',
33 | down: 'YS',
34 | show: true
35 | },
36 | {
37 | wid: 4,
38 | name: '左移',
39 | icon: 'img/4.png',
40 | up: 'TZ',
41 | down: 'ZY',
42 | show: true
43 | },
44 | {
45 | wid: 5,
46 | name: '停止',
47 | icon: 'img/5.png',
48 | up: 'TZ',
49 | down: 'TZ',
50 | show: true
51 | },
52 | {
53 | wid: 6,
54 | name: '右移',
55 | icon: 'img/6.png',
56 | up: 'TZ',
57 | down: 'YY',
58 | show: true
59 | },
60 | {
61 | wid: 7,
62 | name: '左下',
63 | icon: 'img/7.png',
64 | up: 'TZ',
65 | down: 'ZX',
66 | show: true
67 | },
68 | {
69 | wid: 8,
70 | name: '后退',
71 | icon: 'img/8.png',
72 | up: 'TZ',
73 | down: 'HT',
74 | show: true
75 | },
76 | {
77 | wid: 9,
78 | name: '右下',
79 | icon: 'img/9.png',
80 | up: 'TZ',
81 | down: 'YX',
82 | show: true
83 | }
84 | ,
85 | {
86 | wid: 10,
87 | name: '左转',
88 | icon: 'img/10.png',
89 | up: 'TZ',
90 | down: 'ZZ',
91 | show: true
92 | },
93 | {
94 | wid: 11,
95 | name: '演示',
96 | icon: 'img/11.png',
97 | up: 'TZ',
98 | down: 'YS',
99 | show: true
100 | },
101 | {
102 | wid: 12,
103 | name: '右转',
104 | icon: 'img/12.png',
105 | up: 'TZ',
106 | down: 'YZ',
107 | show: true
108 | }
109 | ]
110 | ,
111 | select: null
112 | },
113 |
114 | /**
115 | * 生命周期函数--监听页面加载
116 | */
117 | onLoad: function (options) {
118 | var that = this
119 | //读取选择的遥控器
120 | wx.getStorage({
121 | key: 'selectbluetooth',
122 | success: function (res) {
123 | var cmd = res.data
124 | console.log('本地选择数据:', cmd)
125 | select = cmd
126 | that.setData({ select: select })
127 | //读取内存中的遥控器配置
128 | readconfig(that, select)
129 | },
130 | fail: function () {
131 | console.log('没有选择数据')
132 | select = 1//没有数据默认为1
133 | that.setData({ select: select })
134 | //保存数据,用户选择的遥控器
135 | wx.setStorageSync('selectbluetooth', select)
136 | //读取内存中的遥控器配置
137 | readconfig(that, select)
138 | }
139 | })
140 | },
141 | // 页面卸载
142 | onUnload: function () {
143 | console.log('onUnload')
144 | if(app.user) {
145 | // 保存数据到服务器
146 | myfunction.request(app.api_host+'wxin/bluetooth.php?type=set&num='+select+'&userid=' + app.user.userid,
147 | function (res) {//success
148 | console.log('success:',res)
149 | wx.showToast({
150 | title: '已上传到服务器!',
151 | icon: 'success',
152 | duration: 1000
153 | })
154 | },
155 | function (res) {//fail
156 | console.log('fail:',res)
157 | },{"str":JSON.stringify(this.data.item)});
158 | }
159 | },
160 | //下拉刷新
161 | onPullDownRefresh: function () {
162 | wx.stopPullDownRefresh()
163 | },
164 |
165 | /**
166 | * 页面相关事件处理函数--监听用户下拉动作
167 | */
168 | btn_select: function () {
169 | var that = this
170 | wx.stopPullDownRefresh()
171 | wx.showActionSheet({
172 | itemList: ['遥控一', '遥控二', '遥控三'],
173 | success: function (res) {
174 | console.log(res)
175 | if (res.tapIndex != null) {
176 | var index = res.tapIndex + 1
177 | that.setData({ select: index })
178 | console.log(index)
179 | //保存数据,用户选择的遥控器
180 | wx.setStorageSync('selectbluetooth', index)
181 | //读取内存中的遥控器配置
182 | readconfig(that, select)
183 | }
184 | else {
185 | that.setData({ select: that.data.select })
186 | }
187 | }
188 | })
189 | },
190 |
191 | bindname: function (e) {
192 | console.log('name', e)
193 | var id = e.currentTarget.id
194 | var value = e.detail.value
195 | this.data.item[id - 1].name = value
196 | //保存数据
197 | wx.setStorageSync('selectbluetoothconfig' + this.data.select, this.data.item)
198 | },
199 | bindup: function (e) {
200 |
201 | var id = e.currentTarget.id
202 | var value = e.detail.value
203 | this.data.item[id - 1].up = value
204 | //保存数据
205 | wx.setStorageSync('selectbluetoothconfig' + this.data.select, this.data.item)
206 | console.log('up', this.data.item)
207 | },
208 | binddown: function (e) {
209 | console.log('down', e)
210 | var id = e.currentTarget.id
211 | var value = e.detail.value
212 | this.data.item[id - 1].down = value
213 | //保存数据
214 | wx.setStorageSync('selectbluetoothconfig' + this.data.select, this.data.item)
215 | }
216 |
217 | })
218 |
219 | //读取配置文件
220 | function readconfig(that, select) {
221 | wx.getStorage({
222 | key: 'selectbluetoothconfig' + select,
223 | success: function (res) {
224 | var cmd = res.data
225 | console.log('本地配置数据:', cmd)
226 | that.setData({
227 | item: cmd
228 | })
229 | },
230 | fail: function () {
231 | console.log('无配置数据')
232 | //没有数据保存默认
233 | wx.setStorageSync('selectbluetoothconfig' + select, that.data.item)
234 | }
235 | })
236 | }
--------------------------------------------------------------------------------
/wxParse/htmlparser.js:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | * htmlParser改造自: https://github.com/blowsie/Pure-JavaScript-HTML5-Parser
4 | *
5 | * author: Di (微信小程序开发工程师)
6 | * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)
7 | * 垂直微信小程序开发交流社区
8 | *
9 | * github地址: https://github.com/icindy/wxParse
10 | *
11 | * for: 微信小程序富文本解析
12 | * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184
13 | */
14 | // Regular Expressions for parsing tags and attributes
15 | var startTag = /^<([-A-Za-z0-9_]+)((?:\s+[a-zA-Z_:][-a-zA-Z0-9_:.]*(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/,
16 | endTag = /^<\/([-A-Za-z0-9_]+)[^>]*>/,
17 | attr = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g;
18 |
19 | // Empty Elements - HTML 5
20 | var empty = makeMap("area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr");
21 |
22 | // Block Elements - HTML 5
23 | var block = makeMap("a,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");
24 |
25 | // Inline Elements - HTML 5
26 | var inline = makeMap("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");
27 |
28 | // Elements that you can, intentionally, leave open
29 | // (and which close themselves)
30 | var closeSelf = makeMap("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr");
31 |
32 | // Attributes that have their values filled in disabled="disabled"
33 | var fillAttrs = makeMap("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected");
34 |
35 | // Special Elements (can contain anything)
36 | var special = makeMap("wxxxcode-style,script,style,view,scroll-view,block");
37 |
38 | function HTMLParser(html, handler) {
39 | var index, chars, match, stack = [], last = html;
40 | stack.last = function () {
41 | return this[this.length - 1];
42 | };
43 |
44 | while (html) {
45 | chars = true;
46 |
47 | // Make sure we're not in a script or style element
48 | if (!stack.last() || !special[stack.last()]) {
49 |
50 | // Comment
51 | if (html.indexOf("");
53 |
54 | if (index >= 0) {
55 | if (handler.comment)
56 | handler.comment(html.substring(4, index));
57 | html = html.substring(index + 3);
58 | chars = false;
59 | }
60 |
61 | // end tag
62 | } else if (html.indexOf("") == 0) {
63 | match = html.match(endTag);
64 |
65 | if (match) {
66 | html = html.substring(match[0].length);
67 | match[0].replace(endTag, parseEndTag);
68 | chars = false;
69 | }
70 |
71 | // start tag
72 | } else if (html.indexOf("<") == 0) {
73 | match = html.match(startTag);
74 |
75 | if (match) {
76 | html = html.substring(match[0].length);
77 | match[0].replace(startTag, parseStartTag);
78 | chars = false;
79 | }
80 | }
81 |
82 | if (chars) {
83 | index = html.indexOf("<");
84 | var text = ''
85 | while (index === 0) {
86 | text += "<";
87 | html = html.substring(1);
88 | index = html.indexOf("<");
89 | }
90 | text += index < 0 ? html : html.substring(0, index);
91 | html = index < 0 ? "" : html.substring(index);
92 |
93 | if (handler.chars)
94 | handler.chars(text);
95 | }
96 |
97 | } else {
98 |
99 | html = html.replace(new RegExp("([\\s\\S]*?)<\/" + stack.last() + "[^>]*>"), function (all, text) {
100 | text = text.replace(/|/g, "$1$2");
101 | if (handler.chars)
102 | handler.chars(text);
103 |
104 | return "";
105 | });
106 |
107 |
108 | parseEndTag("", stack.last());
109 | }
110 |
111 | if (html == last)
112 | throw "Parse Error: " + html;
113 | last = html;
114 | }
115 |
116 | // Clean up any remaining tags
117 | parseEndTag();
118 |
119 | function parseStartTag(tag, tagName, rest, unary) {
120 | tagName = tagName.toLowerCase();
121 |
122 | if (block[tagName]) {
123 | while (stack.last() && inline[stack.last()]) {
124 | parseEndTag("", stack.last());
125 | }
126 | }
127 |
128 | if (closeSelf[tagName] && stack.last() == tagName) {
129 | parseEndTag("", tagName);
130 | }
131 |
132 | unary = empty[tagName] || !!unary;
133 |
134 | if (!unary)
135 | stack.push(tagName);
136 |
137 | if (handler.start) {
138 | var attrs = [];
139 |
140 | rest.replace(attr, function (match, name) {
141 | var value = arguments[2] ? arguments[2] :
142 | arguments[3] ? arguments[3] :
143 | arguments[4] ? arguments[4] :
144 | fillAttrs[name] ? name : "";
145 |
146 | attrs.push({
147 | name: name,
148 | value: value,
149 | escaped: value.replace(/(^|[^\\])"/g, '$1\\\"') //"
150 | });
151 | });
152 |
153 | if (handler.start) {
154 | handler.start(tagName, attrs, unary);
155 | }
156 |
157 | }
158 | }
159 |
160 | function parseEndTag(tag, tagName) {
161 | // If no tag name is provided, clean shop
162 | if (!tagName)
163 | var pos = 0;
164 |
165 | // Find the closest opened tag of the same type
166 | else {
167 | tagName = tagName.toLowerCase();
168 | for (var pos = stack.length - 1; pos >= 0; pos--)
169 | if (stack[pos] == tagName)
170 | break;
171 | }
172 | if (pos >= 0) {
173 | // Close all the open elements, up the stack
174 | for (var i = stack.length - 1; i >= pos; i--)
175 | if (handler.end)
176 | handler.end(stack[i]);
177 |
178 | // Remove the open elements from the stack
179 | stack.length = pos;
180 | }
181 | }
182 | };
183 |
184 |
185 | function makeMap(str) {
186 | var obj = {}, items = str.split(",");
187 | for (var i = 0; i < items.length; i++)
188 | obj[items[i]] = true;
189 | return obj;
190 | }
191 |
192 | module.exports = HTMLParser;
193 |
--------------------------------------------------------------------------------
/wxParse/wxDiscode.js:
--------------------------------------------------------------------------------
1 | // HTML 支持的数学符号
2 | function strNumDiscode(str){
3 | str = str.replace(/∀/g, '∀');
4 | str = str.replace(/∂/g, '∂');
5 | str = str.replace(/&exists;/g, '∃');
6 | str = str.replace(/∅/g, '∅');
7 | str = str.replace(/∇/g, '∇');
8 | str = str.replace(/∈/g, '∈');
9 | str = str.replace(/∉/g, '∉');
10 | str = str.replace(/∋/g, '∋');
11 | str = str.replace(/∏/g, '∏');
12 | str = str.replace(/∑/g, '∑');
13 | str = str.replace(/−/g, '−');
14 | str = str.replace(/∗/g, '∗');
15 | str = str.replace(/√/g, '√');
16 | str = str.replace(/∝/g, '∝');
17 | str = str.replace(/∞/g, '∞');
18 | str = str.replace(/∠/g, '∠');
19 | str = str.replace(/∧/g, '∧');
20 | str = str.replace(/∨/g, '∨');
21 | str = str.replace(/∩/g, '∩');
22 | str = str.replace(/∩/g, '∪');
23 | str = str.replace(/∫/g, '∫');
24 | str = str.replace(/∴/g, '∴');
25 | str = str.replace(/∼/g, '∼');
26 | str = str.replace(/≅/g, '≅');
27 | str = str.replace(/≈/g, '≈');
28 | str = str.replace(/≠/g, '≠');
29 | str = str.replace(/≤/g, '≤');
30 | str = str.replace(/≥/g, '≥');
31 | str = str.replace(/⊂/g, '⊂');
32 | str = str.replace(/⊃/g, '⊃');
33 | str = str.replace(/⊄/g, '⊄');
34 | str = str.replace(/⊆/g, '⊆');
35 | str = str.replace(/⊇/g, '⊇');
36 | str = str.replace(/⊕/g, '⊕');
37 | str = str.replace(/⊗/g, '⊗');
38 | str = str.replace(/⊥/g, '⊥');
39 | str = str.replace(/⋅/g, '⋅');
40 | return str;
41 | }
42 |
43 | //HTML 支持的希腊字母
44 | function strGreeceDiscode(str){
45 | str = str.replace(/Α/g, 'Α');
46 | str = str.replace(/Β/g, 'Β');
47 | str = str.replace(/Γ/g, 'Γ');
48 | str = str.replace(/Δ/g, 'Δ');
49 | str = str.replace(/Ε/g, 'Ε');
50 | str = str.replace(/Ζ/g, 'Ζ');
51 | str = str.replace(/Η/g, 'Η');
52 | str = str.replace(/Θ/g, 'Θ');
53 | str = str.replace(/Ι/g, 'Ι');
54 | str = str.replace(/Κ/g, 'Κ');
55 | str = str.replace(/Λ/g, 'Λ');
56 | str = str.replace(/Μ/g, 'Μ');
57 | str = str.replace(/Ν/g, 'Ν');
58 | str = str.replace(/Ξ/g, 'Ν');
59 | str = str.replace(/Ο/g, 'Ο');
60 | str = str.replace(/Π/g, 'Π');
61 | str = str.replace(/Ρ/g, 'Ρ');
62 | str = str.replace(/Σ/g, 'Σ');
63 | str = str.replace(/Τ/g, 'Τ');
64 | str = str.replace(/Υ/g, 'Υ');
65 | str = str.replace(/Φ/g, 'Φ');
66 | str = str.replace(/Χ/g, 'Χ');
67 | str = str.replace(/Ψ/g, 'Ψ');
68 | str = str.replace(/Ω/g, 'Ω');
69 |
70 | str = str.replace(/α/g, 'α');
71 | str = str.replace(/β/g, 'β');
72 | str = str.replace(/γ/g, 'γ');
73 | str = str.replace(/δ/g, 'δ');
74 | str = str.replace(/ε/g, 'ε');
75 | str = str.replace(/ζ/g, 'ζ');
76 | str = str.replace(/η/g, 'η');
77 | str = str.replace(/θ/g, 'θ');
78 | str = str.replace(/ι/g, 'ι');
79 | str = str.replace(/κ/g, 'κ');
80 | str = str.replace(/λ/g, 'λ');
81 | str = str.replace(/μ/g, 'μ');
82 | str = str.replace(/ν/g, 'ν');
83 | str = str.replace(/ξ/g, 'ξ');
84 | str = str.replace(/ο/g, 'ο');
85 | str = str.replace(/π/g, 'π');
86 | str = str.replace(/ρ/g, 'ρ');
87 | str = str.replace(/ς/g, 'ς');
88 | str = str.replace(/σ/g, 'σ');
89 | str = str.replace(/τ/g, 'τ');
90 | str = str.replace(/υ/g, 'υ');
91 | str = str.replace(/φ/g, 'φ');
92 | str = str.replace(/χ/g, 'χ');
93 | str = str.replace(/ψ/g, 'ψ');
94 | str = str.replace(/ω/g, 'ω');
95 | str = str.replace(/ϑ/g, 'ϑ');
96 | str = str.replace(/ϒ/g, 'ϒ');
97 | str = str.replace(/ϖ/g, 'ϖ');
98 | str = str.replace(/·/g, '·');
99 | return str;
100 | }
101 |
102 | //
103 |
104 | function strcharacterDiscode(str){
105 | // 加入常用解析
106 | str = str.replace(/ /g, ' ');
107 | str = str.replace(/"/g, "'");
108 | str = str.replace(/&/g, '&');
109 | // str = str.replace(/</g, '‹');
110 | // str = str.replace(/>/g, '›');
111 |
112 | str = str.replace(/</g, '<');
113 | str = str.replace(/>/g, '>');
114 | str = str.replace(/•/g, '•');
115 |
116 | return str;
117 | }
118 |
119 | // HTML 支持的其他实体
120 | function strOtherDiscode(str){
121 | str = str.replace(/Œ/g, 'Œ');
122 | str = str.replace(/œ/g, 'œ');
123 | str = str.replace(/Š/g, 'Š');
124 | str = str.replace(/š/g, 'š');
125 | str = str.replace(/Ÿ/g, 'Ÿ');
126 | str = str.replace(/ƒ/g, 'ƒ');
127 | str = str.replace(/ˆ/g, 'ˆ');
128 | str = str.replace(/˜/g, '˜');
129 | str = str.replace(/ /g, '');
130 | str = str.replace(/ /g, '');
131 | str = str.replace(/ /g, '');
132 | str = str.replace(//g, '');
133 | str = str.replace(//g, '');
134 | str = str.replace(//g, '');
135 | str = str.replace(//g, '');
136 | str = str.replace(/–/g, '–');
137 | str = str.replace(/—/g, '—');
138 | str = str.replace(/‘/g, '‘');
139 | str = str.replace(/’/g, '’');
140 | str = str.replace(/‚/g, '‚');
141 | str = str.replace(/“/g, '“');
142 | str = str.replace(/”/g, '”');
143 | str = str.replace(/„/g, '„');
144 | str = str.replace(/†/g, '†');
145 | str = str.replace(/‡/g, '‡');
146 | str = str.replace(/•/g, '•');
147 | str = str.replace(/…/g, '…');
148 | str = str.replace(/‰/g, '‰');
149 | str = str.replace(/′/g, '′');
150 | str = str.replace(/″/g, '″');
151 | str = str.replace(/‹/g, '‹');
152 | str = str.replace(/›/g, '›');
153 | str = str.replace(/‾/g, '‾');
154 | str = str.replace(/€/g, '€');
155 | str = str.replace(/™/g, '™');
156 |
157 | str = str.replace(/←/g, '←');
158 | str = str.replace(/↑/g, '↑');
159 | str = str.replace(/→/g, '→');
160 | str = str.replace(/↓/g, '↓');
161 | str = str.replace(/↔/g, '↔');
162 | str = str.replace(/↵/g, '↵');
163 | str = str.replace(/⌈/g, '⌈');
164 | str = str.replace(/⌉/g, '⌉');
165 |
166 | str = str.replace(/⌊/g, '⌊');
167 | str = str.replace(/⌋/g, '⌋');
168 | str = str.replace(/◊/g, '◊');
169 | str = str.replace(/♠/g, '♠');
170 | str = str.replace(/♣/g, '♣');
171 | str = str.replace(/♥/g, '♥');
172 |
173 | str = str.replace(/♦/g, '♦');
174 | str = str.replace(/'/g, '\'');
175 | return str;
176 | }
177 |
178 | function strMoreDiscode(str){
179 | str = str.replace(/\r\n/g,"");
180 | str = str.replace(/\n/g,"");
181 |
182 | str = str.replace(/code/g,"wxxxcode-style");
183 | return str;
184 | }
185 |
186 | function strDiscode(str){
187 | str = strNumDiscode(str);
188 | str = strGreeceDiscode(str);
189 | str = strcharacterDiscode(str);
190 | str = strOtherDiscode(str);
191 | str = strMoreDiscode(str);
192 | return str;
193 | }
194 | function urlToHttpUrl(url,rep){
195 |
196 | var patt1 = new RegExp("^//");
197 | var result = patt1.test(url);
198 | if(result){
199 | url = rep+":"+url;
200 | }
201 | return url;
202 | }
203 |
204 | module.exports = {
205 | strDiscode:strDiscode,
206 | urlToHttpUrl:urlToHttpUrl
207 | }
--------------------------------------------------------------------------------
/wxParse/html2json.js:
--------------------------------------------------------------------------------
1 | /**
2 | * html2Json 改造来自: https://github.com/Jxck/html2json
3 | *
4 | *
5 | * author: Di (微信小程序开发工程师)
6 | * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)
7 | * 垂直微信小程序开发交流社区
8 | *
9 | * github地址: https://github.com/icindy/wxParse
10 | *
11 | * for: 微信小程序富文本解析
12 | * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184
13 | */
14 |
15 | var __placeImgeUrlHttps = "https";
16 | var __emojisReg = '';
17 | var __emojisBaseSrc = '';
18 | var __emojis = {};
19 | var wxDiscode = require('./wxDiscode.js');
20 | var HTMLParser = require('./htmlparser.js');
21 | // Empty Elements - HTML 5
22 | var empty = makeMap("area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr");
23 | // Block Elements - HTML 5
24 | var block = makeMap("br,a,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");
25 |
26 | // Inline Elements - HTML 5
27 | var inline = makeMap("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");
28 |
29 | // Elements that you can, intentionally, leave open
30 | // (and which close themselves)
31 | var closeSelf = makeMap("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr");
32 |
33 | // Attributes that have their values filled in disabled="disabled"
34 | var fillAttrs = makeMap("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected");
35 |
36 | // Special Elements (can contain anything)
37 | var special = makeMap("wxxxcode-style,script,style,view,scroll-view,block");
38 | function makeMap(str) {
39 | var obj = {}, items = str.split(",");
40 | for (var i = 0; i < items.length; i++)
41 | obj[items[i]] = true;
42 | return obj;
43 | }
44 |
45 | function q(v) {
46 | return '"' + v + '"';
47 | }
48 |
49 | function removeDOCTYPE(html) {
50 | return html
51 | .replace(/<\?xml.*\?>\n/, '')
52 | .replace(/<.*!doctype.*\>\n/, '')
53 | .replace(/<.*!DOCTYPE.*\>\n/, '');
54 | }
55 |
56 | function trimHtml(html) {
57 | return html
58 | .replace(/\r?\n+/g, '')
59 | .replace(//ig, '')
60 | .replace(/\/\*.*?\*\//ig, '')
61 | .replace(/[ ]+
189 | // add to parents
190 | var parent = bufArray[0] || results;
191 | if (parent.nodes === undefined) {
192 | parent.nodes = [];
193 | }
194 | parent.nodes.push(node);
195 | } else {
196 | bufArray.unshift(node);
197 | }
198 | },
199 | end: function (tag) {
200 | //debug(tag);
201 | // merge into parent tag
202 | var node = bufArray.shift();
203 | if (node.tag !== tag) console.error('invalid state: mismatch end tag');
204 |
205 | //当有缓存source资源时于于video补上src资源
206 | if(node.tag === 'video' && results.source){
207 | node.attr.src = results.source;
208 | delete results.source;
209 | }
210 |
211 | if (bufArray.length === 0) {
212 | results.nodes.push(node);
213 | } else {
214 | var parent = bufArray[0];
215 | if (parent.nodes === undefined) {
216 | parent.nodes = [];
217 | }
218 | parent.nodes.push(node);
219 | }
220 | },
221 | chars: function (text) {
222 | //debug(text);
223 | var node = {
224 | node: 'text',
225 | text: text,
226 | textArray:transEmojiStr(text)
227 | };
228 |
229 | if (bufArray.length === 0) {
230 | node.index = index.toString()
231 | index += 1
232 | results.nodes.push(node);
233 | } else {
234 | var parent = bufArray[0];
235 | if (parent.nodes === undefined) {
236 | parent.nodes = [];
237 | }
238 | node.index = parent.index + '.' + parent.nodes.length
239 | parent.nodes.push(node);
240 | }
241 | },
242 | comment: function (text) {
243 | //debug(text);
244 | // var node = {
245 | // node: 'comment',
246 | // text: text,
247 | // };
248 | // var parent = bufArray[0];
249 | // if (parent.nodes === undefined) {
250 | // parent.nodes = [];
251 | // }
252 | // parent.nodes.push(node);
253 | },
254 | });
255 | return results;
256 | };
257 |
258 | function transEmojiStr(str){
259 | // var eReg = new RegExp("["+__reg+' '+"]");
260 | // str = str.replace(/\[([^\[\]]+)\]/g,':$1:')
261 |
262 | var emojiObjs = [];
263 | //如果正则表达式为空
264 | if(__emojisReg.length == 0 || !__emojis){
265 | var emojiObj = {}
266 | emojiObj.node = "text";
267 | emojiObj.text = str;
268 | array = [emojiObj];
269 | return array;
270 | }
271 | //这个地方需要调整
272 | str = str.replace(/\[([^\[\]]+)\]/g,':$1:')
273 | var eReg = new RegExp("[:]");
274 | var array = str.split(eReg);
275 | for(var i = 0; i < array.length; i++){
276 | var ele = array[i];
277 | var emojiObj = {};
278 | if(__emojis[ele]){
279 | emojiObj.node = "element";
280 | emojiObj.tag = "emoji";
281 | emojiObj.text = __emojis[ele];
282 | emojiObj.baseSrc= __emojisBaseSrc;
283 | }else{
284 | emojiObj.node = "text";
285 | emojiObj.text = ele;
286 | }
287 | emojiObjs.push(emojiObj);
288 | }
289 |
290 | return emojiObjs;
291 | }
292 |
293 | function emojisInit(reg='',baseSrc="/wxParse/emojis/",emojis){
294 | __emojisReg = reg;
295 | __emojisBaseSrc=baseSrc;
296 | __emojis=emojis;
297 | }
298 |
299 | module.exports = {
300 | html2json: html2json,
301 | emojisInit:emojisInit
302 | };
303 |
304 |
--------------------------------------------------------------------------------
/pages/device/bluetooth/control/control.js:
--------------------------------------------------------------------------------
1 | var app = getApp()
2 | var myfunction = require('../../../../utils/myfunction');
3 | var name
4 | var sendbusy = false //蓝牙发送忙状态
5 | var deviceId
6 | var serviceId
7 | var characteristicId
8 | var sendtext
9 | var platform
10 | var switch_enter='true'
11 | var connetTimer //计时器变量
12 | var SearchCycle = 1000 //蓝牙搜索周期
13 | var select//读取选择的遥控器
14 | var flag_onload=false //表示onload了已经执行,不需要再执行onshow
15 | var PageItems =
16 | [
17 | {
18 | wid: 1,
19 | name: '左上',
20 | icon: 'img/1.png',
21 | up: 'TZ',
22 | down: 'ZS',
23 | show: true
24 | },
25 | {
26 | wid: 2,
27 | name: '前进',
28 | icon: 'img/2.png',
29 | up: 'TZ',
30 | down: 'QJ',
31 | show: true
32 | },
33 | {
34 | wid: 3,
35 | name: '右上',
36 | icon: 'img/3.png',
37 | up: 'TZ',
38 | down: 'YS',
39 | show: true
40 | },
41 | {
42 | wid: 4,
43 | name: '左移',
44 | icon: 'img/4.png',
45 | up: 'TZ',
46 | down: 'ZY',
47 | show: true
48 | },
49 | {
50 | wid: 5,
51 | name: '停止',
52 | icon: 'img/5.png',
53 | up: 'TZ',
54 | down: 'TZ',
55 | show: true
56 | },
57 | {
58 | wid: 6,
59 | name: '右移',
60 | icon: 'img/6.png',
61 | up: 'TZ',
62 | down: 'YY',
63 | show: true
64 | },
65 | {
66 | wid: 7,
67 | name: '左下',
68 | icon: 'img/7.png',
69 | up: 'TZ',
70 | down: 'ZX',
71 | show: true
72 | },
73 | {
74 | wid: 8,
75 | name: '后退',
76 | icon: 'img/8.png',
77 | up: 'TZ',
78 | down: 'HT',
79 | show: true
80 | },
81 | {
82 | wid: 9,
83 | name: '右下',
84 | icon: 'img/9.png',
85 | up: 'TZ',
86 | down: 'YX',
87 | show: true
88 | }
89 | ,
90 | {
91 | wid: 10,
92 | name: '左转',
93 | icon: 'img/10.png',
94 | up: 'TZ',
95 | down: 'ZZ',
96 | show: true
97 | },
98 | {
99 | wid: 11,
100 | name: '演示',
101 | icon: 'img/11.png',
102 | up: 'TZ',
103 | down: 'YS',
104 | show: true
105 | },
106 | {
107 | wid: 12,
108 | name: '右转',
109 | icon: 'img/12.png',
110 | up: 'TZ',
111 | down: 'YZ',
112 | show: true
113 | }
114 | ]
115 | Page({
116 | /**
117 | * 页面的初始数据
118 | */
119 | data: {
120 | name: '无设备',
121 | deviceId: null,
122 | serviceId: null,
123 | characteristicId: null,
124 | connect: "连接中...",
125 | pageItems: null,
126 | display: false,
127 | message: '',
128 | select: null
129 | },
130 | /**
131 | * 生命周期函数--监听页面显示
132 | */
133 | onShow: function () {
134 | var that = this
135 | console.log("onShow");
136 | // 避免重复执行
137 | if (!flag_onload) {
138 | //读取选择的遥控器
139 | getSelectIndex(that);
140 | }
141 | flag_onload = false;
142 | },
143 |
144 | btn_select: function () {
145 | var that = this
146 | wx.stopPullDownRefresh()
147 | wx.showActionSheet({
148 | itemList: ['遥控一', '遥控二', '遥控三', '设置'],
149 | success: function (res) {
150 | console.log('success:', res)
151 | //取消操作
152 | if (res.cancel == true) {
153 | //读取选择的遥控器
154 | getSelectIndex(that);
155 | }
156 | else
157 | if (res.tapIndex == 3) {
158 | wx.navigateTo({
159 | url: '../set/set'
160 | })
161 | }
162 | else {
163 | var index = res.tapIndex + 1
164 | //保存数据,用户选择的遥控器
165 | wx.setStorageSync('selectbluetooth', index)
166 |
167 | updata(that, index)
168 | }
169 | },
170 | fail: function (res) {
171 | console.log('fail:', res.errMsg)
172 | }
173 | })
174 | },
175 | /**
176 | * 生命周期函数--监听页面加载
177 | */
178 | onLoad: function (options) {
179 | var that = this
180 | flag_onload = true;
181 | console.log("onLoad");
182 | wx.onBLEConnectionStateChange(function (res) {
183 | // 该方法回调中可以用于处理连接意外断开等异常情况
184 | console.log(`device ${res.deviceId} state has changed, connected: ${res.connected}`)
185 | if (res.connected == false) {
186 | that.setData({ connect: '已断开' })
187 | //启动定时重新连接
188 | setTimeout(function () {
189 | //启动定时器,开始重新连接蓝牙
190 | connetTimer = setInterval(function () { ReapConnect(that) }, SearchCycle)
191 | }, 1000)
192 | }
193 | else {
194 | that.setData({ connect: '已连接' })
195 | //关闭计时器
196 | clearInterval(connetTimer)
197 | }
198 | })
199 | wx.onBLECharacteristicValueChange(function (res) {
200 | console.log("characteristic", res)
201 | console.log(`characteristic ${res.characteristicId} has changed, now is ${res.value}`)
202 | })
203 | //读取选择的遥控器
204 |
205 | getSelectIndex(that);
206 | name = options.name
207 | deviceId = options.deviceId
208 | this.setData({
209 | name: name,
210 | deviceId: deviceId
211 | })
212 |
213 | // 获取系统信息
214 | wx.getSystemInfo({
215 | success: function (res) {
216 | console.log(res.model)
217 | console.log(res.pixelRatio)
218 | console.log(res.windowWidth)
219 | console.log(res.windowHeight)
220 | console.log(res.language)
221 | console.log(res.version)
222 | console.log(res.platform)
223 | platform = res.platform
224 |
225 | // 连接蓝牙
226 | ReapConnect(that)
227 | }
228 | })
229 | },
230 | btn_send: function (res) {
231 | console.log(sendtext)
232 | senddata(sendtext + "\r\n", deviceId, serviceId, characteristicId)
233 | },
234 | onPullDownRefresh: function () {
235 | var that = this
236 | wx.stopPullDownRefresh()
237 | //读取选择的遥控器
238 | getSelectIndex(that);
239 | },
240 | /**
241 | * 用户点击右上角分享
242 | */
243 | onShareAppMessage: function () {
244 | return {
245 | title: 'www.smtvoice.com',
246 | path: 'pages/device/bluetooth/control/control'
247 | }
248 | },
249 | switch_enterChange: function (e) {
250 | console.log('switch_enter 发生 change 事件,携带值为', e.detail.value)
251 | switch_enter = e.detail.value
252 | },
253 |
254 | //按下事件
255 | kindToggle: function (e) {
256 | var that = this
257 | touch_send(that,'down',e)
258 | },
259 | //抬起事件
260 | kindtocchend: function (e) {
261 | var that = this
262 | touch_send(that,'up',e)
263 | },
264 |
265 | switch2Change:function (e) {
266 | this.setData({
267 | display: e.detail.value
268 | })
269 |
270 | },
271 | /**
272 | * 生命周期函数--监听页面卸载
273 | */
274 | onUnload: function () {
275 | wx.closeBLEConnection({
276 | deviceId: deviceId,
277 | success: function (res) {
278 | console.log('断开连接', res)
279 | }
280 | })
281 | },
282 |
283 | bindKeyusername: function (e) {
284 | sendtext = e.detail.value
285 | // console.log('inputusername', inputusername)
286 | }
287 | })
288 |
289 | function senddata(str, deviceId, serviceId, characteristicId) {
290 | sendbusy = true
291 | console.log('sendbusy:',sendbusy)
292 | var dataview = new DataView(str2ab(str));
293 | var ints = new Uint8Array(dataview.byteLength);
294 | for (var i = 0; i < ints.length; i++) {
295 | ints[i] = dataview.getUint8(i);
296 | }
297 | wx.writeBLECharacteristicValue({
298 | deviceId: deviceId,
299 | serviceId: serviceId,
300 | characteristicId: characteristicId,
301 | // 这里的value是ArrayBuffer类型
302 | value: ints.buffer,
303 | success: function (res) {
304 | console.log('writeBLECharacteristicValue success', res.errMsg)
305 | console.log('发送:', str)
306 | sendbusy = false
307 | },
308 | fail:function(res) {
309 | sendbusy = false
310 | console.log('发送失败')
311 | }
312 |
313 | })
314 | }
315 |
316 | // ArrayBuffer转为字符串,参数为ArrayBuffer对象
317 | function ab2str(buf) {
318 | return String.fromCharCode.apply(null, new Uint8Array(buf));
319 | }
320 |
321 | // 字符串转为ArrayBuffer对象,参数为字符串
322 | function str2ab(str) {
323 | var buf = new ArrayBuffer(str.length);
324 | var bufView = new Uint8Array(buf);
325 | for (var i = 0, strLen = str.length; i < strLen; i++) {
326 | bufView[i] = str.charCodeAt(i);
327 | }
328 | return buf;
329 | }
330 |
331 | function updata(that, select) {
332 | that.setData({ select: select })
333 | if (app.user) {
334 | // 获取服务器数据
335 | myfunction.request(app.api_host+'wxin/bluetooth.php?type=get&num='+select+'&userid=' + app.user.userid,
336 | function (res) {//success
337 | var jsonArray =JSON.parse(res.data.item[0]);
338 | console.log('jsonArray', jsonArray);
339 | PageItems = jsonArray;
340 | UpdataViewlist(that);
341 | //保存到本地
342 | wx.setStorageSync('selectbluetoothconfig' + select, PageItems)
343 | },
344 | function (res) {//fail
345 | //读取本地配置
346 | wx.getStorage({
347 | key: 'selectbluetoothconfig' + select,
348 | success: function (res) {
349 | PageItems = res.data
350 | console.log('本地配置数据:', PageItems)
351 | UpdataViewlist(that)
352 | },
353 | fail: function () {
354 | console.log('无配置数据')
355 | console.log(PageItems)
356 | UpdataViewlist(that)
357 | }
358 | })
359 | });
360 | }
361 | else
362 | {
363 | //读取本地配置
364 | wx.getStorage({
365 | key: 'selectbluetoothconfig' + select,
366 | success: function (res) {
367 | PageItems = res.data
368 | console.log('本地配置数据:', PageItems)
369 | UpdataViewlist(that)
370 | },
371 | fail: function () {
372 | console.log('无配置数据')
373 | console.log(PageItems)
374 | UpdataViewlist(that)
375 | }
376 | })
377 | }
378 |
379 |
380 | }
381 |
382 | function getSelectIndex(that) {
383 | //读取选择的遥控器
384 | wx.getStorage({
385 | key: 'selectbluetooth',
386 | success: function (res) {
387 | var cmd = res.data
388 | console.log('选择的遥控器:', cmd)
389 | select = cmd
390 | updata(that, select)
391 | },
392 | fail: function () {
393 | console.log('无选择遥控器数据!')
394 | select = 1//没有数据默认为1
395 | //保存数据,用户选择的遥控器
396 | wx.setStorageSync('selectbluetooth', select)
397 | updata(that, select)
398 | }
399 | })
400 | }
401 |
402 | function UpdataViewlist(that,down=false,id=0) {
403 | var pageItems = [];
404 | var row = [];
405 | var len = PageItems.length;//
406 | var temp_pic =PageItems[id].icon //图片临时变量
407 | len = Math.floor((len + 2) / 3) * 3;
408 | // 如果是按下按键,则更改相应图片
409 | if (down) {
410 | PageItems[id].icon = 'img/down.png';
411 | }
412 | for (var i = 0; i < len; i++) {
413 | //需要隐藏的按键
414 | if (PageItems[i].show == false || PageItems[i].show == 'false') {
415 | PageItems[i].icon = "img/white.png"
416 | }
417 | if ((i + 1) % 3 == 0) {
418 | row.push(PageItems[i]);
419 | pageItems.push(row);
420 | row = [];
421 | continue;
422 | }
423 | else {
424 | row.push(PageItems[i]);
425 | }
426 | }
427 |
428 | that.setData({
429 | pageItems: pageItems
430 | })
431 |
432 | //恢复图片
433 | PageItems[id].icon = temp_pic
434 | }
435 |
436 | function ReapConnect(that) {
437 | wx.createBLEConnection({
438 | deviceId: deviceId,
439 | success: function (res) {
440 | console.log('连接蓝牙', res)
441 | //蓝牙连接成功
442 | wx.getBLEDeviceServices({
443 | deviceId: deviceId,
444 | success: function (res) {
445 | //设备服务获取成功
446 | console.log('device services:', res)
447 | if (platform == 'ios') {
448 | serviceId = res.services[1].uuid
449 | console.log('iso')
450 | }else {
451 | serviceId = res.services[0].uuid
452 | console.log('android')
453 | }
454 | that.setData({ serviceId: serviceId })
455 | setTimeout(function () {
456 | wx.getBLEDeviceCharacteristics({
457 | deviceId: deviceId,
458 | serviceId: serviceId,
459 | success: function (res) {
460 | that.setData({
461 | connect: "已连接"
462 | })
463 | console.log('device getBLEDeviceCharacteristics:', res)
464 | characteristicId = res.characteristics["0"].uuid
465 | that.setData({ characteristicId: characteristicId })
466 | wx.notifyBLECharacteristicValueChange({
467 | state: true, // 启用 notify 功能
468 | // 这里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中获取
469 | deviceId: deviceId,
470 | // 这里的 serviceId 需要在上面的 getBLEDeviceServices 接口中获取
471 | serviceId: serviceId,
472 | // 这里的 characteristicId 需要在上面的 getBLEDeviceCharacteristics 接口中获取
473 | characteristicId: characteristicId,
474 | success: function (res) {
475 | console.log('notifyBLECharacteristicValueChange success', res.errMsg)
476 | }
477 | })
478 |
479 | wx.onBLECharacteristicValueChange(function (res) {
480 | console.log("characteristic", res)
481 | console.log(`characteristic ${res.characteristicId} has changed, now is ${res.value}`)
482 | })
483 | },
484 | fail: function (res) {
485 | console.log('失败', res)
486 | if (connetTimer) {
487 | that.setData({connect: "努力重连中!"})
488 | }
489 | else{
490 | that.setData({connect: "连接失败!"})
491 | }
492 | }
493 | })
494 | }, 1000)
495 | }
496 | })
497 | },
498 | fail: function (res) {
499 | console.log('蓝牙连接失败', res)
500 | if (connetTimer){
501 | that.setData({connect: "努力重连中!"})
502 | }
503 | else{
504 | that.setData({connect: "连接失败!"})
505 | }
506 | }
507 | })
508 | }
509 |
510 | //按键发送数据
511 | function touch_send(that,active,e) {
512 | var str
513 | if (active=='down') {
514 | console.log('按下', e.currentTarget)
515 | str = PageItems[e.currentTarget.id - 1].down
516 | //更新界面
517 | UpdataViewlist(that,true,e.currentTarget.id - 1)
518 | }
519 | else
520 | {
521 | console.log('抬起:', e.currentTarget)
522 | str = PageItems[e.currentTarget.id - 1].up
523 | //更新界面
524 | UpdataViewlist(that)
525 | }
526 |
527 | if (PageItems[e.currentTarget.id - 1].show == true || PageItems[e.currentTarget.id - 1].show == 'true') {//判断是否需要发送
528 | if (switch_enter) {//判断是否需要发送回车
529 | str = str + "\r\n";
530 | }
531 | if (sendbusy) {//忙状态等待发送数据
532 | var timer
533 | setTimeout(function() {
534 | timer = setInterval(function () {
535 | console.log('尝试重发')
536 | if (!sendbusy) {
537 | senddata(str, deviceId, serviceId, characteristicId)
538 | //关闭计时器
539 | clearInterval(timer)
540 | }
541 | }, 100)
542 | }, 200)
543 | }
544 | else
545 | {
546 | senddata(str, deviceId, serviceId, characteristicId)
547 | }
548 | that.setData({
549 | message: str,
550 | })
551 | //震动
552 | wx.vibrateShort()
553 | }
554 | }
--------------------------------------------------------------------------------
/wxParse/wxParse.wxml:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
23 |
24 |
25 |
26 |
27 |
28 | {{item.text}}
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 | \n
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
281 |
282 |
283 |
284 |
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |
327 |
328 |
329 |
330 |
331 |
332 |
333 |
334 |
335 |
336 |
337 |
338 |
339 |
340 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
349 |
350 |
351 |
352 |
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
367 |
368 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 |
391 |
392 |
393 |
394 |
395 |
396 |
397 |
398 |
399 |
400 |
401 |
402 |
403 |
404 |
405 |
406 |
407 |
408 |
409 |
410 |
411 |
412 |
413 |
414 |
415 |
416 |
417 |
418 |
419 |
420 |
421 |
422 |
423 |
424 |
425 |
426 |
427 |
428 |
429 |
430 |
431 |
432 |
433 |
434 |
435 |
436 |
437 |
438 |
439 |
440 |
441 |
442 |
443 |
444 |
449 |
450 |
451 |
452 |
453 |
454 |
455 |
456 |
457 |
458 |
459 |
460 |
461 |
462 |
463 |
464 |
465 |
466 |
467 |
468 |
469 |
470 |
471 |
472 |
473 |
474 |
475 |
476 |
477 |
478 |
479 |
480 |
481 |
482 |
483 |
484 |
485 |
486 |
487 |
488 |
489 |
490 |
491 |
492 |
493 |
494 |
495 |
496 |
497 |
498 |
499 |
500 |
501 |
502 |
503 |
504 |
505 |
506 |
507 |
508 |
509 |
510 |
511 |
512 |
513 |
514 |
515 |
516 |
517 |
518 |
519 |
520 |
525 |
526 |
527 |
528 |
529 |
530 |
531 |
532 |
533 |
534 |
535 |
536 |
537 |
538 |
539 |
540 |
541 |
542 |
543 |
544 |
545 |
546 |
547 |
548 |
549 |
550 |
551 |
552 |
553 |
554 |
555 |
556 |
557 |
558 |
559 |
560 |
561 |
562 |
563 |
564 |
565 |
566 |
567 |
568 |
569 |
570 |
571 |
572 |
573 |
574 |
575 |
576 |
577 |
578 |
579 |
580 |
581 |
582 |
583 |
584 |
585 |
586 |
587 |
588 |
589 |
590 |
591 |
592 |
593 |
594 |
595 |
600 |
601 |
602 |
603 |
604 |
605 |
606 |
607 |
608 |
609 |
610 |
611 |
612 |
613 |
614 |
615 |
616 |
617 |
618 |
619 |
620 |
621 |
622 |
623 |
624 |
625 |
626 |
627 |
628 |
629 |
630 |
631 |
632 |
633 |
634 |
635 |
636 |
637 |
638 |
639 |
640 |
641 |
642 |
643 |
644 |
645 |
646 |
647 |
648 |
649 |
650 |
651 |
652 |
653 |
654 |
655 |
656 |
657 |
658 |
659 |
660 |
661 |
662 |
663 |
664 |
665 |
666 |
667 |
668 |
669 |
670 |
671 |
676 |
677 |
678 |
679 |
680 |
681 |
682 |
683 |
684 |
685 |
686 |
687 |
688 |
689 |
690 |
691 |
692 |
693 |
694 |
695 |
696 |
697 |
698 |
699 |
700 |
701 |
702 |
703 |
704 |
705 |
706 |
707 |
708 |
709 |
710 |
711 |
712 |
713 |
714 |
715 |
716 |
717 |
718 |
719 |
720 |
721 |
722 |
723 |
724 |
725 |
726 |
727 |
728 |
729 |
730 |
731 |
732 |
733 |
734 |
735 |
736 |
737 |
738 |
739 |
740 |
741 |
742 |
743 |
744 |
745 |
746 |
747 |
752 |
753 |
754 |
755 |
756 |
757 |
758 |
759 |
760 |
761 |
762 |
763 |
764 |
765 |
766 |
767 |
768 |
769 |
770 |
771 |
772 |
773 |
774 |
775 |
776 |
777 |
778 |
779 |
780 |
781 |
782 |
783 |
784 |
785 |
786 |
787 |
788 |
789 |
790 |
791 |
792 |
793 |
794 |
795 |
796 |
797 |
798 |
799 |
800 |
801 |
802 |
803 |
804 |
805 |
806 |
807 |
808 |
809 |
810 |
811 |
812 |
813 |
814 |
815 |
816 |
817 |
818 |
819 |
820 |
821 |
822 |
823 |
828 |
829 |
830 |
831 |
832 |
833 |
834 |
835 |
836 |
837 |
838 |
839 |
840 |
841 |
842 |
843 |
844 |
845 |
846 |
847 |
848 |
849 |
850 |
851 |
852 |
853 |
854 |
855 |
856 |
857 |
858 |
859 |
860 |
861 |
862 |
863 |
864 |
865 |
866 |
867 |
868 |
869 |
870 |
871 |
872 |
873 |
874 |
875 |
876 |
877 |
878 |
879 |
880 |
881 |
882 |
883 |
884 |
885 |
886 |
887 |
888 |
889 |
890 |
891 |
892 |
893 |
894 |
895 |
896 |
897 |
898 |
899 |
904 |
905 |
906 |
907 |
908 |
909 |
910 |
911 |
912 |
913 |
914 |
915 |
916 |
917 |
918 |
919 |
920 |
921 |
922 |
923 |
924 |
925 |
926 |
927 |
928 |
929 |
930 |
931 |
932 |
933 |
934 |
935 |
936 |
937 |
938 |
939 |
940 |
941 |
942 |
943 |
944 |
945 |
946 |
947 |
948 |
949 |
950 |
951 |
952 |
953 |
954 |
955 |
956 |
957 |
958 |
959 |
960 |
961 |
962 |
963 |
964 |
965 |
966 |
967 |
--------------------------------------------------------------------------------