API.nvue 15 KB

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