linkShare.vue 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. <template>
  2. <view class="content">
  3. <view class="meauList">
  4. <view class="menu-item">
  5. <view class="meanLeft">
  6. <text>分享人号码</text>
  7. </view>
  8. <view class="meanRight">
  9. <text>{{ phone }}</text></view
  10. >
  11. </view>
  12. <view class="menu-item">
  13. <view class="meanLeft">
  14. <text>设备名称</text>
  15. </view>
  16. <view class="meanRight">
  17. <text>{{ devInfo.devName }}</text></view
  18. >
  19. </view>
  20. <view class="menu-item">
  21. <view class="meanLeft">
  22. <text>设备序列号</text>
  23. </view>
  24. <view class="meanRight">
  25. <text>{{ devInfo.clientId }}</text></view
  26. >
  27. </view>
  28. <view class="menu-item">
  29. <view class="meanLeft">
  30. <text>设备Id</text>
  31. </view>
  32. <view class="meanRight">
  33. <text>{{ devInfo.devId }}</text></view
  34. >
  35. </view>
  36. <view class="funChoice">
  37. <view class="funItem" @click="smChange()">
  38. <label class="simple-radio"
  39. ><radio
  40. :value="messageFlag"
  41. color="#7c5345"
  42. :checked="messageFlag == true"
  43. class="hide-original"
  44. />
  45. <text>短信权限</text></label
  46. >
  47. </view>
  48. <view class="funItem">
  49. <label class="simple-radio" @click="snChange()"
  50. ><radio
  51. :value="serviceNumberFlag"
  52. color="#7c5345"
  53. :checked="serviceNumberFlag == true"
  54. class="hide-original"
  55. />
  56. <text>服务号通知</text></label
  57. >
  58. </view>
  59. <view class="funItem">
  60. <label class="simple-radio" @click="vfChange()"
  61. ><radio
  62. :value="voipFlag"
  63. color="#7c5345"
  64. :checked="voipFlag == true"
  65. class="hide-original"
  66. />
  67. <text>语音通话</text></label
  68. ></view
  69. >
  70. </view>
  71. </view>
  72. <button class="btn1" open-type="share" v-if="shareFlag">
  73. 确认分享
  74. </button>
  75. <button class="btn1" v-else @click="unShare()">暂不可分享</button>
  76. </view>
  77. </template>
  78. <script>
  79. export default {
  80. data() {
  81. return {
  82. devInfo: "",
  83. phone: uni.getStorageSync("phone"),
  84. messageFlag: true,
  85. serviceNumberFlag: true,
  86. voipFlag: true,
  87. shareFlag: false,
  88. shareId: "",
  89. };
  90. },
  91. methods: {
  92. smChange() {
  93. this.messageFlag = !this.messageFlag;
  94. this.shareUserLink("权限修改成功");
  95. },
  96. snChange() {
  97. this.serviceNumberFlag = !this.serviceNumberFlag;
  98. this.shareUserLink("权限修改成功");
  99. },
  100. vfChange() {
  101. this.voipFlag = !this.voipFlag;
  102. this.shareUserLink("权限修改成功");
  103. },
  104. onShareAppMessage() {
  105. return {
  106. title: "好友向您分享了一台设备",
  107. path:
  108. "/pagesA/sharePages/sharePages?phone=" +
  109. this.phone +
  110. "&devInfo=" +
  111. JSON.stringify(this.devInfo) +
  112. "&shareId=" +
  113. shareId,
  114. };
  115. },
  116. shareUserLink(itemTitle) {
  117. let shareParam = {
  118. devId: this.devInfo.devId,
  119. sharerUserId: uni.getStorageSync("userId"),
  120. sharerPhone: uni.getStorageSync("phone"),
  121. sharedUserId: "",
  122. sharedPhone: "",
  123. messageFlag: this.messageFlag == true ? 0 : 1,
  124. serviceNumberFlag: this.serviceNumberFlag == true ? 0 : 1,
  125. voipFlag: this.voipFlag == true ? 0 : 1,
  126. };
  127. this.$http
  128. .post("wap/share/shareByUrl", shareParam, {
  129. header: {
  130. "Content-Type": "application/json;charset=UTF-8",
  131. },
  132. })
  133. .then((res) => {
  134. if (res.data.code == 200) {
  135. uni.showToast({
  136. title: itemTitle,
  137. icon: "none",
  138. duration: 1500,
  139. });
  140. this.shareFlag = true;
  141. this.shareId = res.data.data.shareId;
  142. } else {
  143. this.shareFlag = false;
  144. uni.showToast({
  145. title: res.data.message,
  146. icon: "none",
  147. duration: 1500,
  148. });
  149. }
  150. });
  151. },
  152. unShare() {
  153. uni.showToast({
  154. title: "当前用户暂不可分享",
  155. icon: "none",
  156. duration: 1500,
  157. });
  158. },
  159. },
  160. onLoad(options) {
  161. this.devInfo = JSON.parse(options.devInfo);
  162. },
  163. onShow() {
  164. setTimeout(() => {
  165. this.shareUserLink("分享链接创建成功");
  166. }, 500);
  167. },
  168. };
  169. </script>
  170. <style lang="less" scoped>
  171. .content {
  172. height: 100vh;
  173. background: linear-gradient(180deg, #faede2 0%, #f4f4f4 100%);
  174. box-sizing: border-box;
  175. padding-top: 20rpx;
  176. box-sizing: border-box;
  177. .meauList {
  178. width: 710rpx;
  179. margin: 18rpx auto;
  180. background: #fff;
  181. border-radius: 16rpx;
  182. box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08);
  183. overflow: hidden;
  184. transition: all 0.3s ease;
  185. .menu-item {
  186. display: flex;
  187. align-items: center;
  188. justify-content: space-between;
  189. margin: 0 32rpx;
  190. padding: 32rpx 0;
  191. border-bottom: 1rpx solid #f0f0f0;
  192. &:last-of-type {
  193. border-bottom: none;
  194. }
  195. .meanLeft {
  196. flex: 1;
  197. color: #666;
  198. font-size: 28rpx;
  199. font-weight: 400;
  200. }
  201. .meanRight {
  202. flex: 1;
  203. text-align: right;
  204. color: #333;
  205. font-size: 28rpx;
  206. font-weight: 500;
  207. padding-left: 20rpx;
  208. }
  209. }
  210. .menu-bottom {
  211. display: flex;
  212. padding: 24rpx 32rpx;
  213. border-top: 1rpx solid #f0f0f0;
  214. .meanLeft,
  215. .meanRight {
  216. flex: 1;
  217. height: 80rpx;
  218. display: flex;
  219. align-items: center;
  220. justify-content: center;
  221. border-radius: 8rpx;
  222. font-size: 30rpx;
  223. font-weight: 500;
  224. transition: all 0.2s;
  225. &:active {
  226. opacity: 0.8;
  227. }
  228. }
  229. }
  230. }
  231. .funChoice {
  232. padding-left: 30rpx;
  233. padding-top: 20rpx;
  234. .funItem {
  235. .simple-radio {
  236. display: flex;
  237. align-items: center;
  238. padding: 20rpx 0;
  239. }
  240. }
  241. }
  242. .btn1 {
  243. display: flex;
  244. align-items: center;
  245. justify-content: center;
  246. width: 710rpx;
  247. height: 94rpx;
  248. margin-top: 60rpx;
  249. background: linear-gradient(105.95deg, #a27867 0%, #74483d 100%);
  250. border-radius: 28rpx;
  251. box-shadow: 0rpx 4.69rpx 18.75rpx rgba(72, 41, 29, 0.15),
  252. 0rpx 9.38rpx 9.38rpx rgba(154, 132, 89, 0.2),
  253. 0rpx -4.69rpx 28.13rpx 4.69rpx #a16647 inset;
  254. font-family: MiSans;
  255. font-weight: 500;
  256. color: #ffffff;
  257. font-size: 32rpx;
  258. }
  259. }
  260. </style>