userDetail.js 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  1. // student/pages/userDetail/userDetail.js
  2. import {
  3. createStoreBindings
  4. } from "mobx-miniprogram-bindings"
  5. import {
  6. store
  7. } from "../../../store/index"
  8. import {
  9. address
  10. } from "../../util/city"
  11. import Dialog from '@vant/weapp/dialog/dialog';
  12. Page({
  13. /**
  14. * 页面的初始数据
  15. */
  16. data: {
  17. wH: 0,
  18. // 距顶
  19. topH: 0,
  20. // 手机号
  21. phoneNumber: '',
  22. newPhoneNumber: "",
  23. initUserInfo: {},
  24. // 表单数据
  25. // 姓名
  26. name: '',
  27. // 年龄
  28. age: "",
  29. // 性别
  30. gender: "0",
  31. // 省
  32. province: "",
  33. // 城市
  34. city: "",
  35. // 区县
  36. area: "",
  37. // 学校名称
  38. originalSchool: "",
  39. // 所在年级
  40. grade: "",
  41. // 兴趣爱好
  42. remark: "",
  43. // 错误信息
  44. nameRule: "",
  45. ageRule: '',
  46. genderRule: '',
  47. cityRule: '',
  48. originalSchoolRule: '',
  49. gradeRule: '',
  50. remarkRule: '',
  51. // 性别
  52. columns: ["男", "女"],
  53. // 选择性别面板
  54. showGender: false,
  55. // 初始性别
  56. initGender: "0",
  57. address,
  58. // 变更地址
  59. initCity: "",
  60. showCity: false,
  61. cascaderValue: '',
  62. // 自定义地址
  63. fieldNames: {
  64. text: "name"
  65. }
  66. },
  67. // 选择性别面板
  68. onShowGender() {
  69. this.setData({
  70. showGender: !this.data.showGender
  71. })
  72. if (this.data.showGender) {
  73. this.setData({
  74. initGender: this.data.gender
  75. })
  76. }
  77. },
  78. // 性别变化
  79. onGenderChange(e) {
  80. this.setData({
  81. gender: e.detail
  82. });
  83. },
  84. // 性别确认
  85. onGender() {
  86. this.setData({
  87. showGender: false
  88. })
  89. },
  90. // 关闭,恢复初始值
  91. colseGender() {
  92. this.setData({
  93. showGender: false,
  94. gender: this.data.initGender
  95. })
  96. },
  97. // 关闭选择地址
  98. onCloseCity() {
  99. this.setData({
  100. showCity: false,
  101. });
  102. },
  103. // 打开选择地址
  104. onClickCity() {
  105. this.setData({
  106. showCity: true,
  107. });
  108. },
  109. // 保存地址
  110. onFinishCity(e) {
  111. const {
  112. selectedOptions,
  113. value
  114. } = e.detail;
  115. // console.log(selectedOptions)
  116. const initCity = selectedOptions
  117. .map((option) => option.text || option.name)
  118. .join('/');
  119. this.setData({
  120. province: selectedOptions[0].name,
  121. city: selectedOptions[1].name,
  122. area: selectedOptions[2].name,
  123. initCity,
  124. showCity: false,
  125. })
  126. // console.log(initCity)
  127. },
  128. nameChange(e) {
  129. if (this.data.name == "") {
  130. this.setData({
  131. nameRule: "学生姓名不能为空"
  132. })
  133. }
  134. },
  135. // 离开当前页
  136. goBack() {
  137. // console.log(111)
  138. // Dialog.confirm({
  139. // title: '保存信息',
  140. // message: '请确认本次修改以提交,点击确认返回上级页面',
  141. // })
  142. // .then(() => {
  143. // on confirm
  144. wx.switchTab({
  145. url: '/pages/my/my',
  146. })
  147. // })
  148. // .catch(() => {
  149. // // on cancel
  150. // });
  151. },
  152. submitForm() {
  153. let {
  154. nameRule,
  155. ageRule,
  156. age
  157. } = this.data
  158. let ageRex = /^1\d{10}$/
  159. if (!ageRex.test(age)) {
  160. this.setData({
  161. ageRule: "请输入正确年龄"
  162. })
  163. }
  164. if (!nameRule || !ageRule) {
  165. console.log("错误")
  166. }
  167. // 年龄
  168. },
  169. // onGenderClick(event) {
  170. // const {
  171. // name
  172. // } = event.currentTarget.dataset;
  173. // this.setData({
  174. // gender: name,
  175. // });
  176. // },
  177. // 初始化学生信息
  178. initStudentData() {
  179. let {
  180. age,
  181. area,
  182. city,
  183. province,
  184. name,
  185. phoneNumber,
  186. originalSchool,
  187. gender,
  188. classId
  189. } = this.data.initUserInfo
  190. let initCity = ""
  191. if (province !== '') {
  192. initCity += province
  193. initCity += '/'
  194. }
  195. if (city !== '') {
  196. initCity += city
  197. initCity += '/'
  198. }
  199. if (area !== '') {
  200. initCity += area
  201. }
  202. this.setData({
  203. age,
  204. area,
  205. city,
  206. province,
  207. name,
  208. phoneNumber,
  209. originalSchool,
  210. gender,
  211. classId,
  212. initCity
  213. })
  214. },
  215. /**
  216. * 生命周期函数--监听页面加载
  217. */
  218. onLoad(options) {
  219. // this.storeBindings = createStoreBindings(this, {
  220. // store,
  221. // fields: ["userInfo"],
  222. // actions: {
  223. // }
  224. // })
  225. let user = wx.getStorageSync('userInfo')
  226. this.setData({
  227. initUserInfo: user
  228. })
  229. let {
  230. windowHeight,
  231. statusBarHeight
  232. } = wx.getSystemInfoSync()
  233. this.setData({
  234. wH: windowHeight - 46 - statusBarHeight,
  235. topH: statusBarHeight,
  236. })
  237. this.initStudentData()
  238. },
  239. /**
  240. * 生命周期函数--监听页面初次渲染完成
  241. */
  242. onReady() {
  243. },
  244. /**
  245. * 生命周期函数--监听页面显示
  246. */
  247. onShow() {
  248. // 处理手机号
  249. // 转字符
  250. let numPhone = this.data.phoneNumber.substr(0, 4) + "****" +
  251. this.data.phoneNumber.substr(7, 12)
  252. console.log(numPhone)
  253. this.setData({
  254. newPhoneNumber: numPhone
  255. })
  256. },
  257. /**
  258. * 生命周期函数--监听页面隐藏
  259. */
  260. onHide() {
  261. },
  262. /**
  263. * 生命周期函数--监听页面卸载
  264. */
  265. onUnload() {
  266. },
  267. /**
  268. * 页面相关事件处理函数--监听用户下拉动作
  269. */
  270. onPullDownRefresh() {
  271. },
  272. /**
  273. * 页面上拉触底事件的处理函数
  274. */
  275. onReachBottom() {
  276. },
  277. /**
  278. * 用户点击右上角分享
  279. */
  280. onShareAppMessage() {
  281. }
  282. })