index.js 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. // pages/index/index.js
  2. import { wxSetSessionKey } from "../../utils/wxUtils";
  3. import { postApi } from "../../apis/api";
  4. Page({
  5. /**
  6. * 页面的初始数据
  7. */
  8. data: {
  9. loginStatus: false,
  10. regModalVisible: false,
  11. bindShipVisible: false,
  12. userInfo: {},
  13. shipInfo: {},
  14. shipName: "", // 新增:船舶名称
  15. shipMmsi: "", // 新增:船舶MMSI
  16. },
  17. async login() {
  18. if (!wx.getStorageSync("openId")) {
  19. wx.showToast({
  20. title: "正在初始化登录信息...",
  21. icon: "none",
  22. duration: 500,
  23. });
  24. wxSetSessionKey();
  25. return;
  26. }
  27. wx.showLoading({
  28. title: "正在登录...",
  29. mask: true,
  30. });
  31. let { data } = await postApi("/login/openid", {
  32. openId: wx.getStorageSync("openId"),
  33. });
  34. await new Promise((resolve) => {
  35. setTimeout(() => {
  36. resolve();
  37. }, 500);
  38. });
  39. wx.hideLoading();
  40. if (data.status == 0) {
  41. let obj = {
  42. ...data.result.userInfo,
  43. ...data.result.shipInfo,
  44. };
  45. Object.keys(obj).forEach(function (key) {
  46. wx.setStorageSync(key, obj[key]);
  47. });
  48. wx.setStorageSync(
  49. "accessToken",
  50. data?.result?.tokenInfo?.tokenValue || ""
  51. );
  52. wx.switchTab({
  53. url: "/pages/takePhoto/takePhoto",
  54. });
  55. } else {
  56. if (data?.result?.userInfo?.userId) {
  57. wx.setStorageSync(
  58. "accessToken",
  59. data?.result?.tokenInfo?.tokenValue || ""
  60. );
  61. wx.showModal({
  62. title: "提示",
  63. content: "您已注册但尚未绑定船舶,去绑定?",
  64. confirmText: "去绑定",
  65. cancelText: "取消",
  66. success: (res) => {
  67. // 使用箭头函数修正this指向
  68. if (res.confirm) {
  69. this.setData({
  70. bindShipVisible: true,
  71. });
  72. }
  73. },
  74. });
  75. } else {
  76. this.setData({
  77. regModalVisible: true,
  78. });
  79. }
  80. }
  81. },
  82. async init() {
  83. let { data } = await postApi("/login/openid", {
  84. openId: wx.getStorageSync("openId"),
  85. });
  86. },
  87. hideRegModal() {
  88. this.setData({
  89. regModalVisible: false,
  90. });
  91. },
  92. async goToRegister(e) {
  93. try {
  94. if (e.detail.errMsg == "getPhoneNumber:ok") {
  95. wx.showLoading({
  96. title: "正在登录...",
  97. mask: true,
  98. });
  99. let { data } = await postApi("/wx/getPhoneNumber", {
  100. code: e.detail.code,
  101. });
  102. console.log("data1", data);
  103. if (data.status === 0) {
  104. // let { phoneNumber: phone } = data.result;
  105. let phone = "15136162222";
  106. let { data } = await postApi("/login", {
  107. phone,
  108. openId: wx.getStorageSync("openId"),
  109. });
  110. console.log("data2", data);
  111. await new Promise((resolve) => {
  112. setTimeout(() => {
  113. wx.hideLoading();
  114. resolve();
  115. }, 1500);
  116. });
  117. if (data.status === 0) {
  118. console.log(data, "data2");
  119. wx.setStorageSync("phone", phone);
  120. wx.setStorageSync(
  121. "accessToken",
  122. data?.result?.tokenInfo?.tokenValue || ""
  123. );
  124. } else {
  125. console.log(data, "data23");
  126. wx.setStorageSync(
  127. "accessToken",
  128. data?.result?.tokenInfo?.tokenValue || ""
  129. );
  130. if (data?.result?.userInfo?.userId) {
  131. console.log(data, "data24");
  132. wx.showModal({
  133. title: "提示",
  134. content: "您已注册但尚未绑定船舶,去绑定?",
  135. confirmText: "去绑定",
  136. cancelText: "取消",
  137. success: (res) => {
  138. // 使用箭头函数修正this指向
  139. if (res.confirm) {
  140. this.setData({
  141. bindShipVisible: true,
  142. regModalVisible: false, // 关闭注册弹窗
  143. });
  144. }
  145. },
  146. });
  147. } else {
  148. console.log(data, "data25");
  149. wx.showToast({
  150. title: data.msg,
  151. icon: "none",
  152. duration: 5000,
  153. });
  154. }
  155. this.setData({
  156. regModalVisible: false,
  157. });
  158. }
  159. } else {
  160. wx.hideLoading();
  161. wx.showToast({
  162. title: "获取手机号失败",
  163. duration: 5000,
  164. });
  165. }
  166. } else {
  167. wx.showToast({
  168. title: "请授权以登录",
  169. icon: "error",
  170. });
  171. }
  172. } catch (error) {
  173. wx.showToast({
  174. title: "系统错误",
  175. icon: "none",
  176. duration: 5000,
  177. });
  178. console.error("Error:", error);
  179. }
  180. },
  181. onLoad: function (options) {},
  182. onShow() {
  183. let v = wx.getAccountInfoSync();
  184. if (v.miniProgram.envVersion != "release") {
  185. wx.showToast({
  186. title: `当前环境:${
  187. v.miniProgram.envVersion == "develop" ? "开发版" : "体验版"
  188. }`,
  189. icon: "none",
  190. duration: 1000,
  191. });
  192. }
  193. },
  194. /**
  195. * 用户点击右上角分享
  196. */
  197. onShareAppMessage: function () {},
  198. // 隐藏绑定船舶弹窗
  199. async hideBindShipModal() {
  200. this.setData({
  201. bindShipVisible: false,
  202. shipName: "", // 清空输入
  203. shipMmsi: "", // 清空输入
  204. });
  205. },
  206. // 确认绑定船舶
  207. async confirmBindShip() {
  208. const { shipName, shipMmsi } = this.data;
  209. if (!shipName) {
  210. wx.showToast({
  211. title: "请输入船舶名称",
  212. icon: "none",
  213. });
  214. return;
  215. }
  216. if (!shipMmsi) {
  217. wx.showToast({
  218. title: "请输入船舶MMSI",
  219. icon: "none",
  220. });
  221. return;
  222. }
  223. wx.showLoading({
  224. title: "正在绑定...",
  225. mask: true,
  226. });
  227. let { data } = await postApi("/register", {
  228. shipName,
  229. shipMmsi,
  230. });
  231. await new Promise((resolve) => {
  232. setTimeout(() => {
  233. resolve();
  234. }, 1500);
  235. });
  236. wx.hideLoading();
  237. if (data.status === 0) {
  238. let obj = {
  239. ...data.result.userInfo,
  240. ...data.result.shipInfo,
  241. };
  242. Object.keys(obj).forEach(function (key) {
  243. wx.setStorageSync(key, obj[key]);
  244. });
  245. wx.setStorageSync(
  246. "accessToken",
  247. data?.result?.tokenInfo?.tokenValue || ""
  248. );
  249. wx.showToast({
  250. title: "绑定成功",
  251. icon: "success",
  252. duration: 1500,
  253. });
  254. await new Promise((resolve) => {
  255. setTimeout(() => {
  256. resolve();
  257. }, 1500);
  258. });
  259. wx.switchTab({
  260. url: "/pages/takePhoto/takePhoto",
  261. });
  262. } else {
  263. wx.showToast({
  264. title: data.msg,
  265. icon: "none",
  266. duration: 5000,
  267. });
  268. }
  269. },
  270. goToExp() {
  271. wx.switchTab({
  272. url: "/pages/takePhoto/takePhoto",
  273. });
  274. },
  275. });