index.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <template>
  2. <view>
  3. <view v-if="showLogin">
  4. <login :ocode="ocode" :appkey="appkey" scope="snsapi_userinfo" :visible="visible" @success="loginSuccess" @fail="loginFail" @cancel="loginCancel" />
  5. </view>
  6. </view>
  7. </template>
  8. <script>
  9. export default {
  10. data() {
  11. return {
  12. // 获取用户信息
  13. ocode: '1015730314',
  14. // 商户appkey
  15. appkey: 'EE28EE2C93296F4E',
  16. // 是否授权可见
  17. visible: false,
  18. // 是否启动授权
  19. showLogin: false,
  20. // 获取用户信息
  21. appid: 'wxd6f090391d410534',
  22. // 用户路由
  23. userListInfo: {
  24. routes: ['报修', '我的报修'],
  25. btns: []
  26. },
  27. // 师傅路由
  28. workerListInfo: {
  29. routes: ['首页', '工单管理', '待处理池'],
  30. btns: ['协作', '接单', '转单', '报价', '维修完成']
  31. },
  32. // 后勤路由
  33. logisticsListInfo: {
  34. routes: ['首页', '工单管理', '待处理池', '通讯录'],
  35. btns: ['表格编辑', '延时', '派单', '审核', '分段器按钮', '图表']
  36. },
  37. // 管理者路由
  38. adminListInfo: {
  39. routes: ['首页', '工单管理', '待处理池', '通讯录'],
  40. btns: ['首页分段器', '表格编辑', '工单管理分段器', '延时', '派单', '审核', '接单', '报价', '维修完成', '图表', '协作', '转单']
  41. }
  42. }
  43. },
  44. mounted() {
  45. this.hasUserInfo()
  46. },
  47. methods: {
  48. // 检查用户是否已经授权
  49. hasUserInfo() {
  50. const repairsUserInfo = uni.getStorageSync('repairsUserInfo')
  51. const openId = uni.getStorageSync('openId')
  52. const college = uni.getStorageSync('college')
  53. // console.log(repairsUserInfo)
  54. // console.log(openId)
  55. // console.log(college)
  56. if (repairsUserInfo && openId && college) {
  57. uni.setStorageSync('currentIndexRepairs', 0)
  58. uni.reLaunch({
  59. url: '/pagesRepairs/box/box'
  60. })
  61. } else {
  62. // console.log('重新授权')
  63. this.showLogin = true
  64. this.visible = true
  65. }
  66. },
  67. // 授权成功回调
  68. loginSuccess(res) {
  69. // console.log('成功')
  70. // console.log(res)
  71. let wxcode = res.detail.wxcode
  72. // console.log(wxcode)
  73. // 获取wxcode后请求登录
  74. this.login(wxcode)
  75. },
  76. // 用户登陆获取个人信息
  77. async login(wxcode) {
  78. const res = await this.$myRequest_repairs({
  79. url: '/login/Openid',
  80. header: {},
  81. data: {
  82. wxcode
  83. }
  84. })
  85. // console.log(res)
  86. if (res.code === '200') {
  87. uni.setStorageSync('repairsUserInfo', res.data)
  88. uni.setStorageSync('college', res.data.college)
  89. uni.setStorageSync('currentIndexRepairs', 0)
  90. this.getOpenId()
  91. }
  92. },
  93. // 获取用户openId
  94. getOpenId() {
  95. // 获取code
  96. uni.login({
  97. //使用微信登录
  98. provider: 'weixin',
  99. success: async (res) => {
  100. const result = await this.$myRequest_repairs({
  101. url: '/login/XOpenid',
  102. data: {
  103. code: res.code,
  104. userId: uni.getStorageSync('repairsUserInfo').userId
  105. }
  106. })
  107. // console.log(result)
  108. if (result.code === '200') {
  109. uni.setStorageSync('openId', result.data.openId)
  110. uni.reLaunch({
  111. url: '/pagesRepairs/box/box'
  112. })
  113. }
  114. }
  115. })
  116. },
  117. // 授权失败回调
  118. loginFail() {
  119. // console.log("授权失败");
  120. uni.showModal({
  121. title: '提示',
  122. content: '授权:请先领取校园卡、并激活!',
  123. confirmText: '领取',
  124. success: (res) => {
  125. if (res.confirm) {
  126. uni.reLaunch({
  127. url: '/pages/qr_code/qr_code'
  128. })
  129. } else if (res.cancel) {
  130. uni.reLaunch({
  131. url: '/pagesClockIn/404/404'
  132. })
  133. }
  134. }
  135. })
  136. },
  137. // 授权取消回调
  138. loginCancel() {
  139. // console.log("取消");
  140. uni.showModal({
  141. title: '提示',
  142. content: '请先授权,否则无法使用该功能',
  143. confirmText: '授权',
  144. success: (res) => {
  145. if (res.confirm) {
  146. uni.reLaunch({
  147. url: '/pagesRepairs/index/index'
  148. })
  149. } else if (res.cancel) {
  150. uni.reLaunch({
  151. url: '/pagesClockIn/404/404'
  152. })
  153. }
  154. }
  155. })
  156. }
  157. }
  158. }
  159. </script>
  160. <style lang="scss"></style>