provider.uvue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <template>
  2. <!-- #ifdef APP -->
  3. <scroll-view class="page-scroll-view">
  4. <!-- #endif -->
  5. <view class="page">
  6. <page-head :title="title"></page-head>
  7. <view class="service-item" v-for="(item, index) in serviceList" :key="index">
  8. <text class="service-name">{{item.name}}:</text>
  9. <view class="provider-list">
  10. <text class="provider-item" v-for="(item2, index2) in item.provider" :key="index2">
  11. {{item2}}
  12. {{item.providerObj.length > 0 ? ':' + JSON.stringify(item.providerObj[index2]) : '' }}
  13. </text>
  14. </view>
  15. </view>
  16. <button class="btn-get-provider" type="primary" @click="getProvider">getProviderSync</button>
  17. </view>
  18. <!-- #ifdef APP -->
  19. </scroll-view>
  20. <!-- #endif -->
  21. </template>
  22. <script>
  23. type ProviderItem = {
  24. service : string,
  25. name : string,
  26. provider : string[],
  27. providerObj : UniProvider[]
  28. }
  29. export default {
  30. data() {
  31. return {
  32. title: 'provider',
  33. flag: false,
  34. serviceList: [
  35. { service: "payment", name: "支付", provider: [], providerObj: [] },
  36. { service: "location", name: "定位", provider: [], providerObj: [] },
  37. // #ifdef APP-HARMONY
  38. { service: "oauth", name: "登录", provider: [], providerObj: [] }
  39. // #endif
  40. ] as ProviderItem[],
  41. //自动化测试使用
  42. providerIds: [] as string[],
  43. providerObjects: [] as string[],
  44. }
  45. },
  46. methods: {
  47. getProvider() {
  48. this.providerObjects = []
  49. this.serviceList.forEach((item : ProviderItem) => {
  50. var provider = uni.getProviderSync({
  51. service: item.service,
  52. } as GetProviderSyncOptions)
  53. provider.providerIds.forEach((value) => {
  54. this.providerIds.push(value)
  55. })
  56. this.updateProvider(item.service, provider.providerIds, provider.providerObjects);
  57. })
  58. },
  59. updateProvider(service : string, provider : string[] | null, uniProvider : UniProvider[]) {
  60. //这里需要从新从serviceList 获取item,不能直接用forEach 里面的item,目前存在bug,后续会解决这个问题
  61. const item : ProviderItem | null = this.serviceList.find((item : ProviderItem) : boolean => {
  62. return item.service == service
  63. });
  64. if (item != null && provider != null) {
  65. item.provider = provider
  66. item.providerObj = uniProvider
  67. item.providerObj.forEach((obj) => {
  68. this.providerObjects.push(obj.description)
  69. })
  70. }
  71. }
  72. }
  73. }
  74. </script>
  75. <style>
  76. .page {
  77. padding: 15px;
  78. }
  79. .service-item {
  80. margin-top: 10px;
  81. }
  82. .service-name {
  83. font-weight: bold;
  84. }
  85. .provider-list {
  86. margin-left: 32px;
  87. }
  88. .provider-item {
  89. line-height: 1.5;
  90. }
  91. .btn-get-provider {
  92. margin-top: 30px;
  93. }
  94. </style>