API.nvue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433
  1. <template>
  2. <view class="uni-container">
  3. <template v-if="showSetTabBarPage">
  4. <set-tab-bar @unmount="leaveSetTabBarPage"></set-tab-bar>
  5. </template>
  6. <template v-else>
  7. <view class="uni-header-logo">
  8. <image class="uni-header-image" src="/static/apiIndex.png"></image>
  9. </view>
  10. <view class="uni-hello-text">
  11. <text class="hello-text">以下将演示uni-app接口能力,详细文档见:</text>
  12. <u-link class="hello-link" :href="'https://uniapp.dcloud.io/api/'" :text="'https://uniapp.dcloud.io/api/'"
  13. :inWhiteList="true"></u-link>
  14. </view>
  15. <view class="uni-panel" v-for="(item, index) in list" :key="item.id">
  16. <view class="uni-panel-h" :class="item.open ? 'uni-panel-h-on' : ''" @click="triggerCollapse(index)">
  17. <text class="uni-panel-text">{{item.name}}</text>
  18. <text class="uni-panel-icon uni-icon" :class="item.open ? 'uni-panel-icon-on' : ''">{{item.pages ? '&#xe581;' : '&#xe470;'}}</text>
  19. </view>
  20. <view class="uni-panel-c" v-if="item.open">
  21. <view class="uni-navigate-item" v-for="(item2,key) in item.pages" :key="key" :url="item.url" @click="goDetailPage(item2.url)">
  22. <text class="uni-navigate-text">{{item2.name ? item2.name : item2}}</text>
  23. <text class="uni-navigate-icon uni-icon">&#xe470;</text>
  24. </view>
  25. </view>
  26. </view>
  27. </template>
  28. </view>
  29. </template>
  30. <script>
  31. import setTabBar from '@/components/api-set-tabbar.nvue';
  32. export default {
  33. components: {
  34. setTabBar
  35. },
  36. data() {
  37. // 暂时这么写,后面看怎么优化。
  38. let mediaPages = [{
  39. name: '图片',
  40. url: 'image'
  41. },
  42. {
  43. name: '音频',
  44. url: 'inner-audio'
  45. },
  46. // #ifdef APP-PLUS || MP-WEIXIN || MP-BAIDU || MP-QQ
  47. {
  48. name: '录音',
  49. url: 'voice'
  50. },
  51. {
  52. name: '背景音频',
  53. url: 'background-audio'
  54. },
  55. // #endif
  56. // #ifndef MP-ALIPAY
  57. {
  58. name: '视频',
  59. url: 'video'
  60. },
  61. // #endif
  62. // #ifndef H5
  63. {
  64. name: '文件',
  65. url: 'file'
  66. },
  67. // #endif
  68. // #ifndef H5 || MP-ALIPAY
  69. {
  70. name: '保存媒体到本地',
  71. url: 'save-media'
  72. }
  73. // #endif
  74. ];
  75. const list = [{
  76. id: 'page',
  77. name: '界面',
  78. open: false,
  79. pages: [{
  80. name: '设置导航条',
  81. url: 'set-navigation-bar-title'
  82. },
  83. //#ifdef APP-PLUS
  84. {
  85. name: '原生子窗体',
  86. url: 'subnvue'
  87. },
  88. //#endif
  89. {
  90. name: '页面跳转',
  91. url: 'navigator'
  92. },
  93. //#ifndef MP-TOUTIAO
  94. {
  95. name: '设置TabBar',
  96. url: 'set-tabbar'
  97. },
  98. //#endif
  99. {
  100. name: '下拉刷新',
  101. url: 'pull-down-refresh'
  102. },
  103. {
  104. name: '创建动画',
  105. url: 'animation'
  106. },
  107. // #ifndef QUICKAPP-WEBVIEW-UNION
  108. {
  109. name: '创建绘画',
  110. url: 'canvas'
  111. },
  112. // #endif
  113. {
  114. name: '节点信息',
  115. url: 'get-node-info'
  116. },
  117. {
  118. name: '节点布局交互状态',
  119. url: 'intersection-observer'
  120. },
  121. {
  122. name: '显示操作菜单',
  123. url: 'action-sheet'
  124. },
  125. {
  126. name: '显示模态弹窗',
  127. url: 'modal'
  128. },
  129. {
  130. name: '显示加载提示框',
  131. url: 'show-loading'
  132. },
  133. {
  134. name: '显示消息提示框',
  135. url: 'toast'
  136. }
  137. ]
  138. },
  139. {
  140. id: 'device',
  141. name: '设备',
  142. open: false,
  143. pages: [{
  144. name: '获取手机网络状态',
  145. url: 'get-network-type'
  146. },
  147. {
  148. name: '获取手机系统信息',
  149. url: 'get-system-info'
  150. },
  151. {
  152. name: '打电话',
  153. url: 'make-phone-call'
  154. },
  155. //#ifndef H5
  156. {
  157. name: '震动',
  158. url: 'vibrate'
  159. },
  160. {
  161. name: '添加手机联系人',
  162. url: 'add-phone-contact'
  163. },
  164. {
  165. name: '扫码',
  166. url: 'scan-code'
  167. },
  168. {
  169. name: '剪贴板',
  170. url: 'clipboard'
  171. },
  172. //#endif
  173. // #ifndef H5 || MP-ALIPAY
  174. {
  175. name: '屏幕亮度',
  176. url: 'brightness'
  177. },
  178. // #endif
  179. // #ifdef APP-PLUS || MP-WEIXIN || MP-QQ
  180. {
  181. name: '蓝牙',
  182. url: 'bluetooth'
  183. },
  184. {
  185. name: '生物认证',
  186. url: 'soter'
  187. },
  188. // #endif
  189. // #ifdef APP-PLUS || MP-WEIXIN
  190. {
  191. name: 'iBeacon',
  192. url: 'ibeacon'
  193. },
  194. // #endif
  195. {
  196. name: '监听加速度传感器',
  197. url: 'on-accelerometer-change'
  198. },
  199. {
  200. name: '监听罗盘数据',
  201. url: 'on-compass-change'
  202. },
  203. //#ifdef APP-PLUS
  204. {
  205. name: '监听距离传感器',
  206. url: '/platforms/app-plus/proximity/proximity'
  207. },
  208. {
  209. name: '监听方向传感器',
  210. url: '/platforms/app-plus/orientation/orientation'
  211. }
  212. //#endif
  213. ]
  214. },
  215. {
  216. id: 'network',
  217. name: '网络',
  218. open: false,
  219. pages: [{
  220. name: '发起一个请求',
  221. url: 'request'
  222. },
  223. {
  224. name: '上传文件',
  225. url: 'upload-file'
  226. },
  227. {
  228. name: '下载文件',
  229. url: 'download-file'
  230. }
  231. ]
  232. },
  233. {
  234. id: 'websocket',
  235. name: 'websocket',
  236. open: false,
  237. pages: [
  238. // #ifndef MP-ALIPAY
  239. {
  240. name: 'socketTask',
  241. url: 'websocket-socketTask'
  242. },
  243. // #endif
  244. {
  245. name: '全局websocket',
  246. url: 'websocket-global'
  247. }
  248. ]
  249. },
  250. {
  251. id: 'media',
  252. name: '媒体',
  253. open: false,
  254. pages: mediaPages
  255. },
  256. {
  257. id: 'location',
  258. name: '位置',
  259. open: false,
  260. pages: [{
  261. name: '获取当前位置',
  262. url: 'get-location'
  263. },
  264. {
  265. name: '使用地图查看位置',
  266. url: 'open-location'
  267. },
  268. // #ifndef MP-TOUTIAO
  269. {
  270. name: '使用地图选择位置',
  271. url: 'choose-location'
  272. }
  273. // #endif
  274. // #ifndef MP-QQ || MP-TOUTIAO
  275. ,
  276. {
  277. name: '地图控制',
  278. url: 'map'
  279. }
  280. // #endif
  281. // #ifdef APP-PLUS
  282. ,
  283. {
  284. name: '地图搜索',
  285. url: 'map-search'
  286. }
  287. // #endif
  288. ]
  289. },
  290. {
  291. id: 'storage',
  292. name: '数据',
  293. open: false,
  294. pages: [{
  295. name: '数据存储(key-value)',
  296. url: 'storage'
  297. },
  298. // #ifdef APP-PLUS
  299. {
  300. name: 'SQLite',
  301. url: 'sqlite'
  302. }
  303. // #endif
  304. ]
  305. },
  306. // #ifdef APP-PLUS || MP-WEIXIN
  307. {
  308. url: 'rewarded-video-ad',
  309. name: '激励视频广告',
  310. open: false
  311. },
  312. // #endif
  313. // #ifndef H5 || QUICKAPP-WEBVIEW
  314. {
  315. id: 'login',
  316. name: '登录',
  317. open: false,
  318. pages: [{
  319. name: '登录',
  320. url: 'login'
  321. },
  322. {
  323. name: '获取用户信息',
  324. url: 'get-user-info'
  325. }
  326. ]
  327. },
  328. // #endif
  329. // #ifndef H5 || QUICKAPP-WEBVIEW-UNION
  330. {
  331. id: 'share',
  332. name: '分享',
  333. open: false,
  334. pages: [{
  335. name: '分享',
  336. url: 'share'
  337. }]
  338. },
  339. // #endif
  340. // #ifdef APP-PLUS || MP-WEIXIN
  341. {
  342. id: 'payment',
  343. name: '支付',
  344. open: false,
  345. pages: [{
  346. name: '发起支付',
  347. url: 'request-payment'
  348. }]
  349. },
  350. // #endif
  351. // #ifdef APP-PLUS
  352. {
  353. id: 'speech',
  354. name: '语音',
  355. open: false,
  356. pages: [{
  357. name: '语音识别',
  358. url: '/platforms/app-plus/speech/speech'
  359. }]
  360. },
  361. {
  362. id: 'push',
  363. name: '推送',
  364. open: false,
  365. pages: [{
  366. name: '推送',
  367. url: '/platforms/app-plus/push/push'
  368. }]
  369. }
  370. //#endif
  371. ];
  372. return {
  373. showSetTabBarPage: false,
  374. list: list
  375. };
  376. },
  377. onShareAppMessage() {
  378. return {
  379. title: '欢迎体验uni-app',
  380. path: '/pages/tabBar/API/API'
  381. };
  382. },
  383. onNavigationBarButtonTap(e) {
  384. uni.navigateTo({
  385. url: '/pages/about/about'
  386. });
  387. },
  388. onLoad() {
  389. },
  390. onReady() {
  391. },
  392. onShow() {
  393. this.navigateFlag = false;
  394. this.leaveSetTabBarPage();
  395. },
  396. onHide() {
  397. this.leaveSetTabBarPage();
  398. },
  399. methods: {
  400. triggerCollapse(e) {
  401. if (!this.list[e].pages) {
  402. this.goDetailPage(this.list[e].url);
  403. return;
  404. }
  405. for (var i = 0; i < this.list.length; ++i) {
  406. if (e === i) {
  407. this.list[i].open = !this.list[e].open;
  408. } else {
  409. this.list[i].open = false;
  410. }
  411. }
  412. },
  413. goDetailPage(e) {
  414. if (e === 'set-tabbar') {
  415. this.showSetTabBarPage = true;
  416. return;
  417. }
  418. let url = ~e.indexOf('platform') ? e : '/pages/API/' + e + '/' + e;
  419. uni.navigateTo({
  420. url: url
  421. });
  422. },
  423. leaveSetTabBarPage() {
  424. this.showSetTabBarPage = false;
  425. }
  426. }
  427. };
  428. </script>
  429. <style>
  430. @import '../../../common/uni-nvue.css';
  431. </style>